Function at 0x404400
Capabilities:
Print debug messages

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x408b80
mov eax, dword fs:[0]
push eax
sub esp, 8
push esi
push edi
mov eax, dword [0x40e00c]
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 edi, dword [ebp + 0x28]
xor eax, eax
mov esi, dword [ebp + 0x38]
mov edx, dword [ebp + 0x18]
mov dword [ebp + 0x28], 0
mov word [edi], ax
mov eax, dword [ebp + 0x30]
mov byte [eax], 0
mov eax, dword [ebp + 0x1c]
mov ecx, dword [eax]
mov dword [esi + 8], ecx
mov eax, dword [eax + 4]
mov dword [esi + 0xc], eax
cmp edx, 3
ja case.default.0x40445b
jmp dword [edx*4 + 0x40466c]
call fcn.00403320
jmp 0x4044bc
call fcn.00403340
jmp 0x4044bc
test ecx, ecx
js 0x4044ac
mov edx, dword [ebp - 0x10]
mov ecx, dword [ebp - 0x14]
push 0x8007029c
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push dword [ebp + 8]
call fcn.00405e20
add esp, 0x14
mov dword [esi + 8], 0x8007029c
mov ecx, 0x8007029c
call fcn.00403560
mov dword [esi + 0xc], eax
mov ecx, 0x8007029c
call fcn.00403360
jmp 0x4044bc
push ecx
call fcn.00403380
add esp, 4
mov dword [ebp + 0x28], eax
mov eax, dword [ebp + 0x18]
mov dword [esi], eax
mov eax, dword [ebp + 0x1c]
mov dword [esi + 4], 0
cmp byte [eax + 8], 0
je 0x4044db
mov dword [esi + 4], 8
mov eax, 1
lock xadd dword [0x40fae8], eax
inc eax
mov dword [esi + 0x10], eax
mov eax, dword [ebp + 0x20]
test eax, eax
je 0x4044f9
cmp word [eax], 0
jne 0x4044fb
xor eax, eax
mov dword [esi + 0x14], eax
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov dword [esi + 0x18], eax
xorps xmm0, xmm0
mov eax, dword [ebp + 8]
mov dword [esi + 0x24], eax
mov eax, dword [ebp - 0x10]
mov dword [esi + 0x28], eax
mov eax, dword [ebp + 0x28]
mov dword [esi + 0x2c], 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
mov eax, dword [0x40fb64]
mov dword [esi + 0x30], 0
movups xmmword [esi + 0x34], xmm0
movq qword [esi + 0x44], xmm0
test eax, eax
je 0x404551
call eax
jmp 0x404553
xor eax, eax
mov dword [esi + 0x4c], eax
mov eax, dword [0x40fb24]
test eax, eax
je 0x404562
push esi
call eax
mov eax, dword [0x40fb40]
test eax, eax
je 0x404576
push 0x400
push dword [ebp + 0x30]
push esi
call eax
mov eax, dword [0x40fb38]
test eax, eax
je 0x404582
push esi
call eax
mov eax, dword [0x40fb50]
test eax, eax
je 0x404594
test byte [esi + 4], 2
jne 0x404594
push esi
call eax
cmp dword [esi + 8], 0
jl 0x4045b8
cmp dword [ebp + 0x18], 3
jne 0x404665
mov ecx, 0x8000ffff
mov dword [esi + 8], 0x8000ffff
call fcn.00403560
mov dword [esi + 0xc], eax
cmp byte [0x40fb18], 0
jne 0x4045e1
mov eax, dword [0x40fb10]
test eax, eax
je 0x4045d1
call eax
movzx eax, al
jmp 0x4045dd
call dword [sym.imp.KERNEL32.dll_IsDebuggerPresent]
neg eax
sbb eax, eax
neg eax
test eax, eax
je 0x4045e7
test byte [esi + 4], 2
je 0x404602
mov eax, dword [0x40fb1c]
test eax, eax
je 0x40463a
cmp byte [0x40fb2c], 0
jne 0x40463a
push 0
push 0
push esi
call eax
jmp 0x40463a
mov eax, dword [0x40fb1c]
test eax, eax
je 0x40461d
cmp byte [0x40fb2c], 0
jne 0x40461d
push 0x800
push edi
push esi
call eax
cmp word [edi], 0
jne 0x404633
push esi
mov edx, 0x800
mov ecx, edi
call fcn.00402fc0
add esp, 4
push edi
call dword [sym.imp.KERNEL32.dll_OutputDebugStringW]
test byte [esi + 4], 4
jne 0x404649
cmp byte [0x40fb20], 0
je 0x404654
mov eax, dword [0x40fb48]
test eax, eax
je 0x404654
call eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov esp, ebp
pop ebp
ret
call fcn.00404910
nop
bound eax, qword [eax + eax*2]
imul eax, dword [eax + eax*2], case.0x40445b.2
mov bl, 68
inc eax
add ah, cl
int3