Function at 0x40bc12
Capabilities:
Print debug messages

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x43cb54
mov eax, dword fs:[0]
push eax
push ecx
push ecx
push ebx
push esi
push edi
mov eax, dword [0x452040]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], edx
mov dword [ebp - 0x14], ecx
mov ebx, dword [ebp + 0x28]
xor eax, eax
mov esi, dword [ebp + 0x3c]
mov word [ebx], ax
mov eax, dword [ebp + 0x30]
mov byte [eax], 0
mov eax, dword [ebp + 0x1c]
mov edi, dword [eax]
mov dword [esi + 8], edi
mov eax, dword [eax + 4]
mov dword [esi + 0xc], eax
xor eax, eax
mov dword [ebp + 0x28], eax
mov eax, dword [ebp + 0x18]
sub eax, 0
je 0x40bcc3
sub eax, 1
je 0x40bcb8
sub eax, 1
je 0x40bc83
sub eax, 1
jne 0x40bccc
push edi
call fcn.0040b41d
pop ecx
jmp 0x40bcbf
test edi, edi
js 0x40bcaf
push ecx
mov edi, 0x8007029c
push edi
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push dword [ebp + 8]
call fcn.0040ccfc
add esp, 0x18
mov dword [esi + 8], edi
mov ecx, edi
call fcn.0040b575
mov dword [esi + 0xc], eax
mov ecx, edi
call fcn.0040b40a
jmp 0x40bcbf
mov ecx, edi
call fcn.0040b3f7
mov edi, eax
jmp 0x40bccf
mov ecx, edi
call fcn.0040b3e4
jmp 0x40bcbf
mov edi, dword [ebp + 0x28]
mov eax, dword [ebp + 0x18]
mov edx, dword [ebp + 0x1c]
mov ecx, dword [ebp + 0x38]
mov dword [esi], eax
xor eax, eax
inc eax
mov dword [esi + 4], ecx
cmp dword [edx + 8], eax
jne 0x40bceb
or ecx, 8
mov dword [esi + 4], ecx
lock xadd dword [0x458844], eax
inc eax
mov dword [esi + 0x10], eax
mov eax, dword [ebp + 0x20]
test eax, eax
je 0x40bd05
xor ecx, ecx
cmp word [eax], cx
jne 0x40bd07
xor eax, eax
mov dword [esi + 0x14], eax
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov dword [esi + 0x18], eax
xor ecx, ecx
mov eax, dword [ebp + 8]
mov dword [esi + 0x24], eax
mov eax, dword [ebp - 0x10]
mov dword [esi + 0x28], eax
mov eax, dword [ebp + 0x10]
mov dword [esi + 0x1c], eax
mov eax, dword [ebp + 0xc]
mov dword [esi + 0x20], eax
mov eax, dword [ebp + 0x14]
mov dword [esi + 0x50], eax
mov eax, dword [ebp - 0x14]
mov dword [esi + 0x54], eax
xor eax, eax
mov dword [esi + 0x2c], edi
lea edi, [esi + 0x40]
mov dword [esi + 0x30], ecx
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
xor eax, eax
lea edi, [esi + 0x34]
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
mov eax, dword [0x458838]
test eax, eax
je 0x40bd5c
call eax
jmp 0x40bd5e
mov eax, ecx
mov dword [esi + 0x4c], eax
mov eax, dword [0x4587fc]
test eax, eax
je 0x40bd6d
push esi
call eax
mov eax, dword [0x458814]
test eax, eax
je 0x40bd81
push 0x400
push dword [ebp + 0x30]
push esi
call eax
mov eax, dword [0x458810]
test eax, eax
je 0x40bd8d
push esi
call eax
mov eax, dword [0x458824]
test eax, eax
je 0x40bd9f
test byte [esi + 4], 2
jne 0x40bd9f
push esi
call eax
xor eax, eax
cmp dword [esi + 8], eax
jl 0x40bdc0
cmp dword [ebp + 0x18], 3
jne 0x40be69
mov ecx, 0x8000ffff
mov dword [esi + 8], ecx
call fcn.0040b575
mov dword [esi + 0xc], eax
cmp byte [0x4587f0], 0
jne 0x40bde9
mov eax, dword [0x4587e8]
test eax, eax
je 0x40bdd9
call eax
movzx eax, al
jmp 0x40bde5
call dword [sym.imp.KERNEL32.dll_IsDebuggerPresent]
neg eax
sbb eax, eax
neg eax
test eax, eax
je 0x40bdef
test byte [esi + 4], 2
je 0x40be0a
mov eax, dword [0x4587f4]
test eax, eax
je 0x40be3f
cmp byte [0x458804], 0
jne 0x40be3f
xor ecx, ecx
push ecx
push ecx
push esi
call eax
jmp 0x40be3f
mov eax, dword [0x4587f4]
mov edi, 0x800
test eax, eax
je 0x40be26
cmp byte [0x458804], 0
jne 0x40be26
push edi
push ebx
push esi
call eax
xor eax, eax
cmp word [ebx], ax
jne 0x40be38
push esi
mov edx, edi
mov ecx, ebx
call fcn.0040b03f
pop ecx
push ebx
call dword [sym.imp.KERNEL32.dll_OutputDebugStringW]
test byte [esi + 4], 4
jne 0x40be4e
cmp byte [0x4587f8], 0
je 0x40be59
mov eax, dword [0x45881c]
test eax, eax
je 0x40be59
call eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
leave
ret
call fcn.0040c07c
int3