Function at 0x4963e0
Capabilities:
Access peb ldr_data
Check os version
Create thread
Encode data using xor
Extract resource via kernel32 functions
Generate random numbers using a mersenne twister
Get common file path
Initialize winsock library

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4f71fb
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0x294
mov eax, dword [0x51e080]
xor eax, ebp
mov dword [ebp - 0x14], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
mov dword [ebp - 0x290], edi
push 0xd8
mov dword [edi], vtable.perfect_dark.0
mov dword [edi + 0x244], 0
mov dword [edi + 0x248], 0
mov dword [edi + 0x240], 0
call fcn.004d3886
mov dword [ebp - 0x28c], eax
push ecx
push edi
mov ecx, eax
mov dword [ebp - 4], 0
call fcn.00418a90
mov esi, eax
mov dword [ebp - 4], 0xffffffff
push 0x415930
push 0x415950
mov ecx, esi
mov dword [edi + 0x470], esi
call fcn.00403f10
push 0x4159c0
push 0x4159e0
mov ecx, esi
call fcn.00403f10
push 0x415a50
push 0x415a80
mov ecx, esi
call fcn.00403f10
push 0x415af0
push 0x415b10
mov ecx, esi
call fcn.00403f10
push 0x415b80
push 0x415bb0
mov ecx, esi
call fcn.00403f10
push 0x415da0
push 0x415dd0
mov ecx, esi
call fcn.00403f10
push 0x415d00
push 0x415d30
mov ecx, esi
call fcn.00403f10
push 0x415c30
push 0x415c60
mov ecx, esi
call fcn.00403f10
push 0x30
call fcn.004d3886
mov edi, eax
add esp, 4
mov dword [ebp - 0x28c], edi
lea esi, [edi + 4]
mov dword [edi], vtable.chamber_of_guf.0
push esi
call dword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
push esi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
push 0x100
mov dword [edi + 0x1c], 0x40
mov dword [edi + 0x20], 0x3f
call fcn.004d9a7e
add esp, 4
mov dword [edi + 0x28], eax
push 0x100
push 0
push eax
call fcn.004d6ed0
add esp, 0xc
mov dword [edi + 0x24], 0
push esi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, dword [ebp - 0x290]
mov ecx, edi
push 0x430860
mov dword [edi], vtable.pd_chamber_of_guf.0
mov dword [edi + 0x2c], eax
push 0x430870
mov dword [eax + 0x474], edi
call fcn.00405060
push 0x4308e0
push 0x430910
mov ecx, edi
call fcn.00405060
push 0x430970
push 0x4309a0
mov ecx, edi
call fcn.00405060
push 0x430c00
push 0x430c20
mov ecx, edi
call fcn.00405060
push 0x430a10
push 0x430a30
mov ecx, edi
call fcn.00405060
push 1
call dword [sym.imp.WINMM.dll_timeBeginPeriod]
mov edi, dword [ebp - 0x290]
lea eax, [edi + 0xc]
push eax
push 0x202
call dword [sym.imp.WS2_32.dll_WSAStartup]
xor edx, edx
mov dword [edi + 0x24c], 0
push ecx
lea ecx, [edx + 6]
call fcn.00495740
add esp, 4
test al, al
je 0x496618
mov dword [edi + 0x24c], 2
jmp 0x496637
mov edx, 1
push ecx
lea ecx, [edx + 4]
call fcn.00495740
add esp, 4
test al, al
je 0x496637
mov dword [edi + 0x24c], 1
push str.TzSpecificLocalTimeToSystemTime
push str.Kernel32.dll
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
push 0x208
mov dword [edi + 0x25c], eax
mov dword [edi + 8], 0
mov dword [edi + 0x408], 0
mov dword [edi + 0x250], 0
mov dword [edi + 0x258], 0
mov dword [edi + 0x254], 1
mov dword [edi + 0x45c], 0
mov dword [edi + 0x460], 0
mov dword [edi + 0x464], 0
call fcn.004d9a7e
add esp, 4
mov dword [edi + 0x444], eax
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
mov edx, dword [edi + 0x444]
mov ecx, edx
lea esi, [ecx + 2]
nop dword [eax + eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4966d0
sub ecx, esi
sar ecx, 1
mov dword [edi + 0x450], ecx
cmp word [edx + ecx*2 - 2], 0x5c
je 0x496712
lea eax, [ecx + 1]
mov ecx, 0x5c
mov dword [edi + 0x450], eax
mov word [edx + eax*2 - 2], cx
xor edx, edx
mov ecx, dword [edi + 0x450]
mov eax, dword [edi + 0x444]
mov word [eax + ecx*2], dx
push 0xa8
lea eax, [edi + 0x260]
mov dword [edi + 0x448], 0
push 0
push eax
mov dword [edi + 0x44c], 0
call fcn.004d6ed0
add esp, 0xc
lea esi, [edi + 0x330]
xorps xmm0, xmm0
movups xmmword [edi + 0x308], xmm0
movups xmmword [edi + 0x318], xmm0
push esi
movq qword [edi + 0x328], xmm0
call dword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
push esi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
xorps xmm0, xmm0
xorps xmm1, xmm1
movsd qword [edi + 0x348], xmm1
movsd qword [edi + 0x360], xmm1
movups xmmword [edi + 0x350], xmm1
push esi
movups xmmword [edi + 0x368], xmm0
movups xmmword [edi + 0x378], xmm0
movups xmmword [edi + 0x388], xmm0
movups xmmword [edi + 0x398], xmm0
movq qword [edi + 0x3a8], xmm0
movsd qword [edi + 0x3b0], xmm1
movups xmmword [edi + 0x3b8], xmm0
movups xmmword [edi + 0x3c8], xmm0
movq qword [edi + 0x3d8], xmm0
movups xmmword [edi + 0x3e0], xmm0
movups xmmword [edi + 0x3f0], xmm0
mov dword [edi + 0x400], 0xffffffff
mov dword [edi + 0x404], 0
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
lea esi, [edi + 0x19c]
mov dword [edi + 0x40c], 0
push esi
mov dword [edi + 0x410], 0
mov dword [edi + 0x414], 0
mov dword [edi + 0x418], 0
mov dword [edi + 0x41c], 0
mov dword [edi + 0x420], 0
mov dword [edi + 0x468], 0xffffffff
call dword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
push esi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
push 0x88
lea eax, [edi + 0x1b8]
push 0
push eax
call fcn.004d6ed0
add esp, 0xc
push esi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
push 0x2000
call fcn.004d3886
add esp, 4
mov dword [ebp - 0x28c], eax
mov ecx, eax
call fcn.004b1100
push 0x5028
mov dword [edi + 0x480], eax
call fcn.004d3886
mov esi, eax
add esp, 4
mov ecx, esi
mov dword [ebp - 0x28c], esi
call fcn.004bb630
push 0x278
mov dword [edi + 0x484], esi
call fcn.004d3886
mov esi, eax
add esp, 4
mov dword [ebp - 0x28c], esi
lea eax, [esi + 4]
mov dword [ebp - 4], 1
push eax
call dword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
push 0x24
call fcn.004d3886
add esp, 4
mov dword [ebp - 0x298], eax
mov ecx, eax
mov byte [ebp - 4], 2
call fcn.004b0330
mov dword [esi + 0x274], eax
mov ecx, esi
mov dword [esi], 0
mov dword [ebp - 4], 0xffffffff
push dword [edi + 0x484]
mov dword [edi + 0x488], esi
push dword [edi + 0x480]
call fcn.004b0850
mov eax, dword [edi + 0x488]
push 4
mov dword [0x5223f4], eax
call fcn.004d3886
mov dword [ebp - 0x28c], eax
add esp, 4
cmp dword [0x5223f4], 0
mov dword [eax], 0
mov dword [edi + 0x48c], eax
je 0x49694d
mov dword [eax], 1
push 8
call fcn.004d3886
mov esi, eax
add esp, 4
mov dword [ebp - 0x28c], esi
mov dword [ebp - 4], 3
push 0x2000
mov dword [esi], 0
call fcn.004d3886
add esp, 4
mov dword [ebp - 0x28c], eax
mov ecx, eax
call fcn.004b1100
mov dword [ebp - 4], 0xffffffff
cmp dword [0x5223f4], 0
mov dword [esi + 4], eax
mov dword [edi + 0x490], esi
je 0x4969a5
mov dword [esi], 1
push 8
call fcn.004d3886
add esp, 4
mov dword [ebp - 0x28c], eax
push fcn.004d9a63
push fcn.004d9a7e
mov ecx, eax
mov dword [ebp - 4], 4
call fcn.004ce770
mov dword [ebp - 4], 0xffffffff
push 0x804
mov dword [edi + 0x494], eax
call fcn.004d3886
mov dword [ebp - 0x294], eax
add esp, 4
mov edx, 1
xor esi, esi
mov dword [eax], vtable.butcher8.0
lea edi, [eax + 0x404]
mov dword [eax + 4], 0xff
mov dword [eax + 0x800], 0
mov dword [eax + edx*4 + 4], esi
lea edi, [edi + 4]
mov dword [edi - 4], edx
inc esi
add edx, edx
mov eax, edx
mov ecx, edx
xor edx, 0x11d
cmp eax, 0xff
mov eax, dword [ebp - 0x294]
cmovbe edx, ecx
cmp esi, 0xff
jb 0x496a11
mov edi, dword [ebp - 0x290]
mov dword [edi + 0x498], eax
mov eax, dword [edi + 0x470]
mov dword [ebp - 0x294], eax
mov eax, dword [edi + 0x488]
mov dword [ebp - 0x298], eax
test eax, eax
je 0x496a9f
lea esi, [eax + 4]
push esi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov ecx, dword [ebp - 0x298]
lea eax, [ebp - 0x34]
push 0x20
push eax
call fcn.004b0e10
push esi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov ecx, dword [ebp - 0x294]
lea eax, [ebp - 0x34]
push 8
push eax
mov ecx, dword [ecx + 0xa4]
call fcn.004b0480
push str.INFO_LINE
push 0x66
push 0
mov dword [edi + 0x4f8], 0
call dword [sym.imp.KERNEL32.dll_FindResourceW]
mov esi, eax
test esi, esi
je 0x496df8
push esi
push 0
call dword [sym.imp.KERNEL32.dll_SizeofResource]
push esi
push 0
call dword [sym.imp.KERNEL32.dll_LoadResource]
test eax, eax
je 0x496df8
push eax
call dword [sym.imp.KERNEL32.dll_LockResource]
mov esi, eax
mov dword [ebp - 0x298], esi
test esi, esi
je 0x496df8
push 0x9c4
call fcn.004d3886
add esp, 4
mov edi, eax
mov dword [ebp - 0x28c], edi
mov ecx, edi
push 4
push esi
mov dword [edi + 0x9c0], 0x271
call fcn.004b42f0
mov ecx, edi
call fcn.00409ee0
lea esi, [ebp - 0x54]
mov dword [ebp - 0x294], 4
mov eax, dword [edi + 0x9c0]
cmp eax, 0x270
jl 0x496bfa
cmp eax, 0x271
jne 0x496b54
push 0x1571
mov ecx, edi
call fcn.004b4290
xor edx, edx
nop word [eax + eax]
mov ecx, dword [edi + edx*4 + 4]
xor ecx, dword [edi + edx*4]
and ecx, 0x7fffffff
xor ecx, dword [edi + edx*4]
mov eax, ecx
shr ecx, 1
and eax, 1
xor ecx, dword [eax*4 + 0x503e54]
xor ecx, dword [edi + edx*4 + 0x634]
mov dword [edi + edx*4], ecx
inc edx
cmp edx, 0xe3
jl 0x496b60
mov ecx, dword [edi + edx*4 + 4]
xor ecx, dword [edi + edx*4]
and ecx, 0x7fffffff
xor ecx, dword [edi + edx*4]
mov eax, ecx
shr ecx, 1
and eax, 1
xor ecx, dword [eax*4 + 0x503e54]
xor ecx, dword [edi + edx*4 - 0x38c]
mov dword [edi + edx*4], ecx
inc edx
cmp edx, 0x26f
jl 0x496b91
mov eax, dword [edi + 0x9bc]
mov ecx, dword [edi]
xor ecx, eax
and ecx, 0x7fffffff
xor ecx, eax
mov eax, ecx
shr ecx, 1
and eax, 1
xor ecx, dword [eax*4 + 0x503e54]
xor ecx, dword [edi + 0x630]
xor eax, eax
mov dword [edi + 0x9bc], ecx
mov dword [edi + 0x9c0], 0
mov ecx, dword [edi + eax*4]
inc eax
mov dword [edi + 0x9c0], eax
mov eax, ecx
shr eax, 0xb
xor ecx, eax
mov eax, ecx
and eax, 0xff3a58ad
shl eax, 7
xor ecx, eax
mov eax, ecx
and eax, 0xffffdf8c
shl eax, 0xf
xor ecx, eax
mov eax, ecx
shr eax, 0x12
xor eax, ecx
mov dword [esi], eax
add esi, 4
sub dword [ebp - 0x294], 1
jne 0x496b30
mov ecx, edi
call fcn.00409ee0
mov ecx, edi
call fcn.00409ee0
mov ecx, dword [ebp - 0x298]
mov ecx, dword [ecx]
xor ecx, eax
mov dword [ebp - 0x44], ecx
mov ecx, edi
call fcn.00409ee0
mov ecx, edi
mov esi, eax
call fcn.00409ee0
xor eax, esi
mov ecx, edi
mov dword [ebp - 0x40], eax
call fcn.00409ee0
mov esi, dword [ebp - 0x298]
mov ecx, dword [esi + 8]
xor ecx, eax
mov dword [ebp - 0x3c], ecx
mov eax, dword [esi + 0xc]
xor eax, dword [esi + 4]
xor eax, 0xe15fe12b
mov dword [ebp - 0x38], eax
lea eax, [ebp - 0x44]
push eax
push 0x10
lea eax, [ebp - 0x288]
push eax
mov eax, dword [ebp - 0x290]
mov ecx, dword [eax + 0x484]
call fcn.004b48f0
push 0x9c4
push edi
call fcn.004d38b6
push 0x100
call fcn.004d9a7e
mov edi, dword [ebp - 0x290]
mov edx, eax
mov eax, dword [ebp - 0x54]
add esp, 0xc
mov dword [ebp - 0x98], eax
mov eax, dword [ebp - 0x50]
mov ecx, dword [edi + 0x484]
mov dword [ebp - 0x94], eax
mov eax, dword [ebp - 0x4c]
mov dword [ebp - 0x90], eax
mov eax, dword [ebp - 0x48]
mov dword [ebp - 0x294], edx
mov dword [ebp - 0x8c], eax
add esi, 0x10
je 0x496d64
test edx, edx
je 0x496d64
mov eax, dword [ebp - 0x88]
cmp eax, 0xa
je 0x496d1b
cmp eax, 0xc
je 0x496d1b
cmp eax, 0xe
jne 0x496d64
sub eax, 0xa
je 0x496d4e
sub eax, 2
je 0x496d3c
sub eax, 2
jne 0x496d64
push 0x10
push edx
push esi
lea eax, [ebp - 0x288]
push eax
call fcn.004b8ca0
jmp 0x496d5e
push 0x10
push edx
push esi
lea eax, [ebp - 0x288]
push eax
call fcn.004b9cb0
jmp 0x496d5e
push 0x10
push edx
push esi
lea eax, [ebp - 0x288]
push eax
call fcn.004baa70
mov edx, dword [ebp - 0x294]
lea esi, [edi + 0x4fc]
test esi, esi
je 0x496de5
test edx, edx
je 0x496de5
mov dword [esi], 0x400
call fcn.004bfef0
mov edx, 0x10001
mov dword [esi + 8], eax
mov ecx, eax
call fcn.004c01b0
mov dword [esi + 4], 0x10001
call fcn.004bfef0
push 0x100
mov dword [esi + 0xc], eax
call fcn.004d9a7e
mov ecx, dword [esi + 0xc]
add esp, 4
mov edx, dword [ebp - 0x294]
mov dword [ecx], eax
mov ecx, 0x40
mov eax, dword [esi + 0xc]
mov dword [eax + 4], 0x40
mov eax, dword [esi + 0xc]
mov dword [eax + 8], 0x40
mov eax, dword [esi + 0xc]
mov dword [eax + 0xc], 0
mov edi, dword [esi + 0xc]
mov esi, edx
mov edi, dword [edi]
rep movsd dword es:[edi], dword [esi]
mov edi, dword [ebp - 0x290]
push edx
call fcn.004d9a63
add esp, 4
mov dword [edi + 0x4f8], 1
push 0x3c
call fcn.004d3886
mov dword [ebp - 0x28c], eax
add esp, 4
mov dword [eax], vtable.pd_visual.0
mov dword [eax + 8], 0
mov dword [eax + 0xc], 0
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 0
mov dword [eax + 0x18], 0
mov dword [eax + 4], edi
mov dword [eax + 0x1c], 0
mov dword [eax + 0x20], 0
mov dword [eax + 0x24], 0
mov dword [eax + 0x28], 0
mov dword [eax + 0x2c], 0
mov dword [eax + 0x30], 0xb4
mov dword [eax + 0x34], 0xffffffff
mov dword [eax + 0x38], 0xffffffff
push 0x10
mov dword [edi + 0x4f0], eax
call fcn.004d3886
mov edi, eax
add esp, 4
mov dword [ebp - 0x28c], edi
mov dword [ebp - 4], 5
lea esi, [edi + 8]
mov dword [edi], vtable.pd_keyword_stock.0
mov dword [ebp - 0x298], esi
push 0x18
mov dword [esi], 0
mov dword [esi + 4], 0
call fcn.004d3886
add esp, 4
mov dword [ebp - 4], 0xffffffff
mov dword [eax], eax
mov dword [eax + 4], eax
mov dword [eax + 8], eax
mov word [eax + 0xc], 0x101
mov dword [esi], eax
mov esi, dword [ebp - 0x290]
mov dword [edi + 4], esi
push 0x5c
mov dword [esi + 0x4d0], edi
call fcn.004d3886
mov edi, eax
add esp, 4
mov dword [ebp - 0x28c], edi
lea eax, [edi + 0x10]
mov dword [edi], vtable.pd_keyword_tree.0
push eax
mov dword [edi + 4], esi
call dword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
lea eax, [edi + 0x10]
push eax
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
push 0x5800
mov dword [edi + 0x28], 0
mov dword [edi + 0x2c], 0x100
mov dword [edi + 0x30], 1
call fcn.004d9a7e
add esp, 4
mov dword [edi + 0x34], eax
push 0x5800
push 0
push eax
call fcn.004d6ed0
mov eax, dword [edi + 0x34]
add esp, 0xc
mov dword [edi + 0x3c], eax
add eax, 0x58
mov dword [edi + 0x38], eax
mov eax, dword [edi + 0x2c]
dec eax
cmp eax, 1
jbe 0x496f76
mov edx, 0x58
lea esi, [edx - 0x57]
mov ecx, dword [edi + 0x34]
inc esi
lea eax, [ecx + 0x58]
add eax, edx
mov dword [edx + ecx + 0xc], eax
add edx, 0x58
mov eax, dword [edi + 0x2c]
dec eax
cmp esi, eax
jb 0x496f58
mov esi, dword [ebp - 0x290]
push 0x568
mov dword [edi + 0x40], 0
mov dword [edi + 0x44], 0
call fcn.004d9a7e
add esp, 4
mov dword [edi + 0x48], eax
push 0x290
call fcn.004d9a7e
add esp, 4
mov dword [edi + 0x4c], eax
push 0x290
call fcn.004d9a7e
add esp, 4
mov dword [edi + 0x50], eax
lea eax, [edi + 0x10]
mov dword [edi + 0x54], 0
mov dword [edi + 0x58], 0
push eax
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
push 0x30
mov dword [esi + 0x4d4], edi
call fcn.004d3886
add esp, 4
mov dword [ebp - 0x28c], eax
mov ecx, eax
push 0x52
push 0x51f4e0
push esi
call fcn.00472aa0
push 0x28
mov dword [esi + 0x4cc], eax
call fcn.004d3886
mov edi, eax
add esp, 4
mov dword [ebp - 0x28c], edi
mov dword [edi + 4], esi
lea esi, [edi + 8]
push esi
mov dword [edi], vtable.pd_settings.0
call dword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
push esi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
push 0x2000
mov dword [edi + 0x20], 0
call fcn.004d9a7e
add esp, 4
mov dword [edi + 0x24], eax
push esi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, dword [ebp - 0x290]
push 0x258
mov dword [eax + 0x47c], edi
call fcn.004d3886
add esp, 4
mov dword [ebp - 0x28c], eax
mov ecx, eax
call fcn.0047a710
mov edi, dword [ebp - 0x290]
push 0x58
mov dword [edi + 0x4c8], eax
call fcn.004d3886
add esp, 4
mov dword [ebp - 0x28c], eax
push edi
mov ecx, eax
mov dword [ebp - 4], 6
call fcn.004a7ff0
mov dword [ebp - 4], 0xffffffff
push 0xb8
mov dword [edi + 0x49c], eax
call fcn.004d3886
add esp, 4
mov dword [ebp - 0x28c], eax
mov ecx, eax
push edi
call fcn.004afd30
push 0x18
mov dword [edi + 0x4a0], eax
call fcn.004d3886
add esp, 4
mov esi, eax
mov dword [ebp - 0x28c], esi
push 0x1238
mov dword [esi], vtable.unity_subclass_support.0
mov dword [esi + 4], edi
mov eax, dword [edi + 0x49c]
mov dword [esi + 8], eax
mov eax, dword [edi + 0x480]
mov dword [esi + 0xc], eax
mov dword [esi + 0x10], 0x1238
call fcn.004d9a7e
add esp, 4
mov dword [esi + 0x14], eax
mov dword [edi + 0x4a4], esi
push 0x44
call fcn.004d3886
mov esi, eax
add esp, 4
mov dword [ebp - 0x28c], esi
mov dword [ebp - 4], 7
lea eax, [esi + 0x14]
push eax
mov dword [esi], 0
mov dword [esi + 4], 0
mov dword [esi + 0x10], 0
mov dword [esi + 8], 0
call dword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
push 0x9c4
mov dword [esi + 0x30], 0
mov dword [esi + 0x34], 0
mov dword [esi + 0x40], 0
call fcn.004d3886
mov dword [ebp - 0x298], eax
add esp, 4
mov dword [eax + 0x9c0], 0x271
mov dword [esi + 0x2c], eax
mov eax, 0
mov edx, 0
rdtsc
mov dword [ebp - 0x294], eax
mov dword [ebp - 0x298], edx
mov eax, dword [ebp - 0x298]
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x294]
mov dword [ebp - 0x20], eax
lea eax, [ebp - 0x2a0]
push eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov eax, dword [ebp - 0x29c]
mov edi, dword [ebp - 0x28c]
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x2a0]
mov dword [ebp - 0x18], eax
lea eax, [ebp - 0x24]
mov ecx, dword [edi + 0x2c]
push 4
push eax
call fcn.004b42f0
mov esi, dword [ebp - 0x290]
mov dword [ebp - 4], 0xffffffff
mov eax, dword [esi + 0x48c]
mov ecx, dword [esi + 0x488]
mov dword [esi + 0x4ac], edi
test eax, eax
je 0x497280
cmp dword [edi], 1
je 0x497280
push 0x280
mov dword [edi + 0xc], ecx
mov dword [edi + 0x10], eax
mov dword [edi + 0x30], 0x28
mov dword [edi + 0x34], 0
mov dword [edi + 0x38], 0x200
mov dword [edi + 0x3c], 0x10001
call fcn.004d9a7e
mov ecx, eax
add esp, 4
mov eax, dword [edi + 0x30]
shl eax, 4
mov dword [edi + 0x40], ecx
push eax
push 0
push ecx
call fcn.004d6ed0
add esp, 0xc
mov dword [edi + 8], 1
lea eax, [ebp - 0x28c]
push eax
push 0
push edi
push 0x409ff0
push 0
push 0
call fcn.004d9be5
add esp, 0x18
mov dword [edi + 4], eax
push 0xfffffffffffffffe
push eax
call dword [sym.imp.KERNEL32.dll_SetThreadPriority]
mov dword [edi], 1
push 0xa8
call fcn.004d3886
mov edi, eax
add esp, 4
mov dword [ebp - 0x28c], edi
mov dword [edi], esi
lea esi, [edi + 0x6c]
push esi
call dword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
push esi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
push 0x3000
mov dword [edi + 0x10], 0x100
mov dword [edi + 8], 0
mov dword [edi + 0xc], 0
mov dword [edi + 0x88], 0
mov dword [edi + 0x8c], 0
mov dword [edi + 0x14], 0
mov dword [edi + 0x90], 1
mov dword [edi + 0x18], 0
call fcn.004d9a7e
mov ecx, eax
add esp, 4
mov eax, dword [edi + 0x10]
mov dword [edi + 0x84], ecx
lea eax, [eax + eax*2]
shl eax, 4
push eax
push 0
push ecx
call fcn.004d6ed0
movsd xmm0, qword [0x513ba8]
add esp, 0xc
mov dword [edi + 0x1c], 0
mov dword [edi + 0x64], 0x147
mov dword [edi + 0x60], 0x186a0
call fcn.004f4420
xorps xmm0, xmmword [0x513d70]
movsd qword [ebp - 0x2a0], xmm0
movsd xmm0, qword [0x513b38]
call fcn.004f4420
movsd xmm1, qword [ebp - 0x2a0]
divsd xmm1, xmm0
movaps xmm0, xmm1
call fcn.004f3af0
xorps xmm0, xmm0
mov dword [edi + 0x68], eax
push esi
movups xmmword [edi + 0x20], xmm0
mov dword [edi + 0x98], 0
movups xmmword [edi + 0x30], xmm0
mov dword [edi + 0x9c], 0
movups xmmword [edi + 0x40], xmm0
mov dword [edi + 0xa0], 0
mov dword [edi + 0xa4], 0
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
lea esi, [edi + 0x50]
push esi
call dword [sym.imp.KERNEL32.dll_QueryPerformanceFrequency]
push 0
push 0xc8
push dword [esi + 4]
push dword [esi]
call fcn.004f3300
push 0
push 0x3e8
push edx
push eax
call fcn.004f35c0
mov esi, dword [ebp - 0x290]
mov dword [edi + 0x58], eax
mov dword [edi + 0x5c], edx
push 0x128
mov dword [esi + 0x4b4], edi
call fcn.004d3886
add esp, 4
mov dword [ebp - 0x28c], eax
mov dword [ebp - 4], 8
push dword [esi + 0x444]
push esi
mov ecx, eax
call fcn.004a0610
mov edi, eax
mov dword [ebp - 4], 0xffffffff
mov eax, dword [esi + 0x488]
mov ecx, dword [esi + 0x484]
mov edx, dword [esi + 0x480]
mov dword [esi + 0x4b0], edi
cmp dword [edi + 4], 1
mov dword [ebp - 0x28c], eax
je 0x49748e
test edx, edx
je 0x49748e
test ecx, ecx
je 0x49748e
lea esi, [eax + 4]
mov dword [edi + 0x24], ecx
push esi
mov dword [edi + 0x20], edx
mov dword [edi + 0x28], eax
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov ecx, dword [ebp - 0x28c]
lea eax, [ebp - 0x34]
push 0x20
push eax
call fcn.004b0e10
push esi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov ecx, dword [edi + 0x48]
lea eax, [ebp - 0x34]
push 8
push eax
call fcn.004b42f0
mov esi, dword [ebp - 0x290]
mov dword [edi + 0xac], 1
mov dword [edi + 4], 1
push 0xc4
call fcn.004d3886
mov edi, eax
add esp, 4
mov dword [ebp - 0x28c], edi
push 0x200
mov dword [edi], vtable.pd_sign.0
mov dword [edi + 4], esi
mov dword [edi + 0xc], 1
call fcn.004d9a7e
add esp, 4
mov dword [edi + 0x10], eax
push 0x22
call fcn.004d9a7e
add esp, 4
mov dword [edi + 0x14], eax
push 0xa2
call fcn.004d9a7e
add esp, 4
mov dword [edi + 0x18], eax
push 0x28
call fcn.004d9a7e
add esp, 4
mov dword [edi + 0x1c], eax
push 0x14
call fcn.004d9a7e
add esp, 4
mov dword [edi + 0x20], eax
lea esi, [edi + 0x28]
push esi
call dword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
push esi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
push 0x80
lea eax, [edi + 0x40]
push 0
push eax
call fcn.004d6ed0
add esp, 0xc
mov dword [edi + 0xc0], 0xffffffff
push esi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
push 0x28
call fcn.004d9a7e
mov esi, dword [ebp - 0x290]
add esp, 4
mov dword [edi + 0x24], eax
mov dword [eax], 0x19cbad1c
mov dword [eax + 4], 0xcad51b15
mov dword [eax + 8], 0x14b3270d
mov dword [eax + 0xc], 0xfb46566a
mov dword [eax + 0x10], 0xbd3588f1
mov dword [eax + 0x14], 0xf6094f8c
mov dword [eax + 0x18], 0x940cc6dc
mov dword [eax + 0x1c], 0x838557e5
mov dword [eax + 0x20], 0x414a284
mov dword [eax + 0x24], 0xa15c1ce3
push 0x164
mov dword [esi + 0x4ec], edi
call fcn.004d3886
add esp, 4
mov dword [ebp - 0x28c], eax
push esi
mov ecx, eax
mov dword [ebp - 4], 9
call fcn.004265c0
mov dword [ebp - 4], 0xffffffff
push 0x48
mov dword [esi + 0x4d8], eax
call fcn.004d3886
mov edi, eax
add esp, 4
mov dword [ebp - 0x28c], edi
mov dword [ebp - 4], 0xa
mov dword [edi + 4], esi
lea esi, [edi + 0xc]
mov dword [edi], vtable.pd_neuro_net.0
mov dword [edi + 8], 0
push esi
call dword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
push esi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov dword [edi + 0x24], 0x1000
mov esi, 1
add esi, esi
cmp esi, 0x1000
jb 0x497602
lea eax, [esi - 1]
mov dword [edi + 0x2c], 0
shl esi, 2
push esi
mov dword [edi + 0x28], eax
call fcn.004d9a7e
add esp, 4
mov dword [edi + 0x34], eax
push esi
push 0
push eax
call fcn.004d6ed0
mov eax, dword [edi + 0x24]
add esp, 0xc
lea eax, [eax + eax*8]
shl eax, 2
push eax
call fcn.004d9a7e
mov ecx, eax
add esp, 4
mov eax, dword [edi + 0x24]
mov dword [edi + 0x30], ecx
lea eax, [eax + eax*8]
shl eax, 2
push eax
push 0
push ecx
call fcn.004d6ed0
mov esi, dword [edi + 0x24]
add esp, 0xc
mov eax, dword [edi + 0x30]
mov dword [edi + 0x38], eax
sub esi, 1
je 0x497684
xor edx, edx
mov ecx, dword [edi + 0x30]
lea eax, [ecx + 0x24]
add eax, edx
mov dword [ecx + edx + 4], eax
add edx, 0x24
sub esi, 1
jne 0x497670
push 0x9c4
mov dword [edi + 0x3c], 0
mov dword [edi + 0x40], 0
call fcn.004d3886
mov dword [ebp - 0x298], eax
add esp, 4
mov dword [eax + 0x9c0], 0x271
mov dword [edi + 0x44], eax
mov eax, dword [edi + 4]
mov esi, dword [eax + 0x488]
lea edi, [esi + 4]
push edi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
push 0x20
lea eax, [ebp - 0x74]
mov ecx, esi
push eax
call fcn.004b0e10
push edi
mov edi, dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
call edi
mov esi, dword [ebp - 0x28c]
lea eax, [ebp - 0x74]
push 8
push eax
mov ecx, dword [esi + 0x44]
call fcn.004b42f0
lea eax, [esi + 0xc]
push eax
call edi
mov edi, dword [ebp - 0x290]
mov dword [ebp - 4], 0xffffffff
push 0x6c
mov dword [edi + 0x4dc], esi
call fcn.004d3886
add esp, 4
mov dword [ebp - 0x28c], eax
push edi
mov ecx, eax
mov dword [ebp - 4], 0xb
call fcn.0046fb70
mov dword [ebp - 4], 0xffffffff
push 0x28
mov dword [edi + 0x4e0], eax
call fcn.004d3886
mov esi, eax
add esp, 4
mov dword [ebp - 0x28c], esi
mov dword [ebp - 4], 0xc
push 0xb8
mov dword [esi], vtable.pd_unity_control.0
mov dword [esi + 8], edi
mov dword [esi + 0xc], 0
mov dword [esi + 0x10], 0
mov dword [esi + 0x14], 0
call fcn.004d3886
add esp, 4
mov dword [ebp - 0x28c], eax
mov ecx, eax
push dword [esi + 8]
call fcn.004afd30
push 0x10000
mov dword [esi + 0x18], eax
call fcn.004d9a7e
add esp, 4
mov dword [esi + 0x1c], eax
push 0x8000
call fcn.004d9a7e
add esp, 4
mov dword [esi + 0x20], eax
push 0x2000
call fcn.004d9a7e
add esp, 4
mov dword [esi + 0x24], eax
mov dword [ebp - 4], 0xffffffff
mov dword [edi + 0x4e4], esi
push 0x20
call fcn.004d3886
add esp, 4
mov esi, eax
mov dword [ebp - 0x28c], esi
mov dword [ebp - 4], 0xd
push 0xb8
mov dword [esi], vtable.immune_system.0
mov dword [esi + 0xc], edi
mov dword [esi + 0x10], 0
mov dword [esi + 0x14], 0
mov dword [esi + 0x18], 0
mov dword [esi + 8], 0
call fcn.004d3886
add esp, 4
mov dword [ebp - 0x28c], eax
mov ecx, eax
push dword [esi + 0xc]
call fcn.004afd30
mov dword [esi + 0x1c], eax
mov dword [ebp - 4], 0xffffffff
push 0x110
mov dword [edi + 0x4e8], esi
call fcn.004d3886
mov edi, eax
add esp, 4
mov eax, dword [ebp - 0x290]
mov dword [ebp - 0x28c], edi
lea esi, [edi + 8]
mov dword [edi], vtable.pd_transfer_limit.0
push esi
mov dword [edi + 0x108], eax
mov dword [edi + 0x10c], 0
call dword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
push esi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
push 0xb8
lea eax, [edi + 0x20]
push 0
push eax
call fcn.004d6ed0
add esp, 0xc
lea eax, [edi + 0xd8]
push 0x30
push 0
push eax
call fcn.004d6ed0
add esp, 0xc
push esi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, dword [ebp - 0x290]
push 0x40
mov dword [eax + 0x4f4], edi
call fcn.004d3886
mov edi, eax
add esp, 4
mov dword [ebp - 0x28c], edi
lea esi, [edi + 4]
mov dword [ebp - 4], 0xe
push esi
mov dword [edi], vtable.pd_tor.0
call dword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
push esi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov eax, dword [ebp - 0x290]
mov dword [edi + 0x38], eax
push 0x24
mov eax, dword [eax + 0x4d8]
mov dword [edi + 0x3c], eax
call fcn.004d3886
add esp, 4
mov dword [ebp - 0x298], eax
mov ecx, eax
mov byte [ebp - 4], 0xf
call fcn.004b0330
mov dword [edi + 0x1c], eax
mov eax, dword [edi + 0x38]
mov esi, dword [eax + 0x488]
lea edi, [esi + 4]
push edi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
push 0x10
lea eax, [ebp - 0x24]
mov ecx, esi
push eax
call fcn.004b0e10
push edi
mov edi, dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
call edi
mov esi, dword [ebp - 0x28c]
lea eax, [ebp - 0x24]
push 4
push eax
mov ecx, dword [esi + 0x1c]
call fcn.004b0480
lea eax, [esi + 4]
mov dword [esi + 0x34], 0
push eax
mov dword [esi + 0x20], 0
mov dword [esi + 0x24], 0
mov dword [esi + 0x28], 0
mov dword [esi + 0x2c], 0
mov dword [esi + 0x30], 0
call edi
mov edi, dword [ebp - 0x290]
mov dword [ebp - 4], 0xffffffff
push 0x68
mov dword [ebp - 0x7c], 0x77fc87de
mov dword [edi + 0x46c], esi
mov dword [ebp - 0x78], 0
mov dword [ebp - 0x68], 0xcf49cf4b
mov dword [ebp - 0x64], 0x100
call fcn.004d3886
add esp, 4
mov dword [ebp - 0x28c], eax
lea ecx, [ebp - 0x7c]
push ecx
push ecx
push dword [edi + 0x4d8]
mov ecx, eax
call fcn.00408f40
push 0x24
mov dword [edi + 0x4a8], eax
mov dword [edi + 0x4c4], 0
call fcn.004d3886
mov dword [ebp - 0x28c], eax
add esp, 4
mov dword [eax + 8], edi
mov dword [eax], 0
mov dword [eax + 4], 0
mov dword [eax + 0xc], 0
mov dword [eax + 0x10], 0xffffffff
mov dword [eax + 0x14], 0xffffffff
mov dword [eax + 0x18], 0xffffffff
mov dword [eax + 0x1c], 0xffffffff
mov dword [eax + 0x20], 0
push 0x8c
mov dword [edi + 0x4b8], eax
call fcn.004d3886
add esp, 4
mov dword [ebp - 0x28c], eax
push edi
mov ecx, eax
mov dword [ebp - 4], 0x10
call fcn.004781a0
mov dword [ebp - 4], 0xffffffff
push 0x90
mov dword [edi + 0x4bc], eax
call fcn.004d3886
add esp, 4
mov dword [ebp - 0x28c], eax
mov dword [ebp - 4], 0x11
mov ecx, eax
push dword [edi + 0x4bc]
call fcn.004773c0
mov dword [edi + 0x4c0], eax
mov eax, edi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.004d3878
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret 8