Function at 0x40373f
Capabilities:
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x5a4
mov eax, dword [0x43c580]
xor eax, esp
mov dword [esp + 0x5a0], eax
mov eax, dword [esp + 0x5ac]
push ebx
push edi
mov edi, ecx
mov dword [esp + 0x10], eax
mov ecx, dword [esp + 0x5b0]
xor ebx, ebx
cmp dword [edi + 0x14], ebx
je 0x40377a
mov eax, 0x40000
jmp 0x403d81
cmp byte [edi + 0x2c], bl
je 0x403789
mov eax, 0x50000
jmp 0x403d81
push esi
mov esi, dword [esp + 0x5c0]
mov dword [esp + 0x10], ebx
cmp dword [edi], ebx
je 0x4037a6
cmp esi, 4
je 0x4037a6
mov dword [esp + 0x10], 0xc
push ecx
lea eax, [esp + 0x3a8]
push 0x104
push eax
call fcn.004180ba
add esp, 0xc
cmp word [esp + 0x3a4], bx
jne 0x4037d0
mov eax, 0x10000
jmp 0x403d80
push ebp
push 0x2f
lea eax, [esp + 0x3ac]
pop ebp
cmp word [eax], 0x5c
jne 0x4037e4
mov word [eax], bp
add eax, 2
cmp word [eax], bx
jne 0x4037db
cmp esi, 4
sete bl
mov byte [esp + 0x13], bl
test bl, bl
je 0x403816
lea eax, [esp + 0x3a8]
push eax
call fcn.00418136
pop ecx
cmp word [esp + eax*2 + 0x3a6], bp
je 0x403816
mov bh, 1
jmp 0x403818
xor bh, bh
push 8
pop eax
mov ebp, eax
test bl, bl
jne 0x403833
lea eax, [esp + 0x3a8]
push eax
call fcn.00405fc3
pop ecx
test al, al
je 0x403835
xor ebp, ebp
cmp esi, 2
jne 0x403847
push dword [esp + 0x18]
mov ecx, edi
call fcn.0040f692
jmp 0x403889
cmp esi, 1
jne 0x403860
push dword [esp + 0x5c0]
mov ecx, edi
push dword [esp + 0x1c]
call fcn.0040f711
jmp 0x403889
cmp esi, 3
jne 0x403879
push dword [esp + 0x5c0]
mov ecx, edi
push dword [esp + 0x1c]
call fcn.0040f82f
jmp 0x403889
cmp esi, 4
jne 0x403d7a
mov ecx, edi
call fcn.0040f5e7
test eax, eax
jne 0x403d7f
and dword [esp + 0x378], eax
mov esi, 0x104
push 0x431a15
lea eax, [esp + 0x58]
push esi
push eax
call fcn.004176c0
add esp, 0xc
lea eax, [esp + 0x164]
xor ecx, ecx
push ecx
push ecx
push esi
push eax
push 0xffffffffffffffff
lea eax, [esp + 0x3bc]
push eax
push ecx
push 0xfde9
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
lea eax, [esp + 0x164]
push eax
call fcn.00417880
mov dword [esp + 0x38], eax
pop ecx
test bh, bh
je 0x403903
push 0x4329f8
lea eax, [esp + 0x168]
push esi
push eax
call fcn.00417818
add esp, 0xc
inc dword [esp + 0x34]
push 0x431a15
lea eax, [esp + 0x26c]
push esi
push eax
call fcn.004176c0
add esp, 0xc
mov dword [esp + 0x36c], 1
xor eax, eax
xor edx, edx
mov word [esp + 0x46], ax
mov eax, 0xb17
mov word [esp + 0x1c], ax
push 0x14
pop eax
mov word [esp + 0x1e], ax
mov eax, dword [edi + 0x68]
push 8
mov dword [esp + 0x28], eax
pop eax
push 9
mov dword [esp + 0x164], edx
mov dword [esp + 0x44], edx
mov dword [esp + 0x378], edx
mov dword [esp + 0x2c], edx
mov word [esp + 0x24], ax
pop esi
cmp dword [edi], edx
je 0x403976
test bl, bl
jne 0x403976
mov eax, esi
mov word [esp + 0x20], ax
mov word [esp + 0x48], ax
mov word [esp + 0x22], bp
test ebp, ebp
jne 0x403995
mov eax, dword [edi + 0x70]
test eax, eax
js 0x403995
add eax, dword [esp + 0x14]
mov dword [esp + 0x2c], eax
jmp 0x403999
mov dword [esp + 0x2c], edx
mov eax, dword [edi + 0x70]
mov dword [esp + 0x30], eax
xor eax, eax
mov word [esp + 0x44], ax
mov eax, dword [edi + 0x4c]
mov dword [esp + 0x4c], eax
mov eax, dword [edi + 0x10]
add eax, dword [edi + 0x18]
mov ebx, dword [edi + 0x58]
mov ecx, ebx
mov edx, dword [edi + 0x5c]
mov dword [esp + 0x50], eax
lea eax, [esp + 0x37c]
mov dword [esp + 0x158], eax
lea eax, [esp + 0x39c]
mov dword [esp + 0x15c], eax
mov al, byte [edi + 0x58]
mov byte [esp + 0x381], al
mov eax, edx
shrd ecx, eax, 8
push esi
sar eax, 8
mov byte [esp + 0x386], cl
mov eax, edx
mov ecx, ebx
mov dword [esp + 0x3c], 0x11
shrd ecx, eax, 0x10
shrd ebx, edx, 0x18
sar eax, 0x10
mov al, byte [edi + 0x50]
mov byte [esp + 0x389], al
mov byte [esp + 0x387], cl
sar edx, 0x18
mov edx, dword [edi + 0x54]
mov eax, edx
mov byte [esp + 0x388], bl
mov ebx, dword [edi + 0x50]
mov ecx, ebx
shrd ecx, eax, 8
mov dword [esp + 0x40], esi
sar eax, 8
mov byte [esp + 0x38a], cl
mov eax, edx
mov ecx, ebx
mov dword [esp + 0x380], 0xd5455
shrd ecx, eax, 0x10
shrd ebx, edx, 0x18
sar eax, 0x10
mov al, byte [edi + 0x60]
mov byte [esp + 0x38d], al
sar edx, 0x18
mov edx, dword [edi + 0x64]
mov eax, edx
mov byte [esp + 0x38b], cl
mov byte [esp + 0x38c], bl
mov ebx, dword [edi + 0x60]
mov ecx, ebx
shrd ecx, eax, 8
mov byte [esp + 0x384], 7
sar eax, 8
mov byte [esp + 0x38e], cl
mov eax, edx
mov ecx, ebx
shrd ecx, eax, 0x10
shrd ebx, edx, 0x18
sar eax, 0x10
lea eax, [esp + 0x380]
sar edx, 0x18
push eax
lea eax, [esp + 0x3a4]
mov byte [esp + 0x393], cl
push eax
mov byte [esp + 0x398], bl
call fcn.00416f60
mov eax, dword [esp + 0x168]
push edi
push 0x411dd1
mov byte [eax + 2], 5
lea eax, [esp + 0x30]
push eax
call fcn.00410573
add esp, 0x18
test eax, eax
je 0x403afd
mov ecx, edi
call fcn.0040eab6
jmp 0x403cfc
mov eax, dword [esp + 0x34]
add eax, 0x1e
add eax, dword [esp + 0x38]
add dword [edi + 0x18], eax
cmp dword [edi + 0x14], 0
je 0x403b20
mov ecx, edi
call fcn.0040eab6
mov eax, dword [edi + 0x14]
jmp 0x403d7f
lea ebx, [edi + 0x30]
mov dword [edi + 0x34], 0x23456789
mov dword [ebx], 0x12345678
mov dword [edi + 0x38], 0x34567890
mov esi, dword [edi]
test esi, esi
je 0x403b4f
mov al, byte [esi]
test al, al
je 0x403b4f
push eax
push ebx
call fcn.0041208f
pop ecx
pop ecx
inc esi
jne 0x403b3d
cmp byte [0x43d988], 0
jne 0x403b6f
call dword [sym.imp.USER32.dll_GetDesktopWindow]
mov esi, eax
call dword [sym.imp.KERNEL32.dll_GetTickCount]
xor esi, eax
push esi
call fcn.0041548e
pop ecx
xor esi, esi
call fcn.0041546d
sar eax, 7
mov byte [esp + esi + 0x390], al
inc esi
cmp esi, 0xc
jl 0x403b71
mov eax, dword [esp + 0x24]
shr eax, 8
xor esi, esi
mov byte [esp + 0x39b], al
movzx eax, byte [esp + esi + 0x390]
push eax
push ebx
call fcn.00412410
mov byte [esp + esi + 0x398], al
inc esi
pop ecx
pop ecx
cmp esi, 0xc
jl 0x403b96
cmp dword [edi], 0
mov bl, byte [esp + 0x13]
je 0x403bd6
test bl, bl
jne 0x403bd6
push 0xc
lea eax, [esp + 0x394]
mov ecx, edi
push eax
call fcn.00412140
add dword [edi + 0x18], 0xc
xor esi, esi
cmp dword [edi], esi
je 0x403be5
test bl, bl
jne 0x403be5
xor eax, eax
inc eax
jmp 0x403be7
xor eax, eax
mov byte [edi + 0x2d], al
test bl, bl
jne 0x403c12
push 8
pop eax
cmp ebp, eax
jne 0x403c03
lea eax, [esp + 0x1c]
mov ecx, edi
push eax
call fcn.0040eaf9
jmp 0x403c0e
test ebp, ebp
jne 0x403c18
mov ecx, edi
call fcn.0040f10d
mov esi, eax
jmp 0x403c18
and dword [edi + 0x90], esi
mov ecx, edi
mov byte [edi + 0x2d], 0
call fcn.0040eab6
mov ecx, dword [edi + 0x90]
add dword [edi + 0x18], ecx
mov eax, dword [edi + 0x14]
test eax, eax
jne 0x403d7f
test esi, esi
jne 0x403cfc
add ecx, dword [esp + 0x14]
cmp dword [esp + 0x2c], ecx
mov eax, dword [edi + 0x78]
sete dl
mov dword [esp + 0x28], eax
cmp byte [edi + 0x1c], 0
mov eax, dword [edi + 0x70]
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x30], eax
je 0x403ccc
cmp dword [edi], esi
je 0x403c6a
test bl, bl
je 0x403ccc
mov ax, word [esp + 0x20]
mov word [esp + 0x22], bp
test al, 1
jne 0x403c85
mov ecx, 0xfff7
and ax, cx
mov word [esp + 0x20], ax
mov word [esp + 0x48], ax
mov ecx, edi
mov eax, dword [esp + 0x50]
sub eax, dword [edi + 0x10]
push eax
call fcn.0040f8fe
test al, al
je 0x403cc2
push edi
lea eax, [esp + 0x20]
push 0x411dd1
push eax
call fcn.00410573
add esp, 0xc
test eax, eax
jne 0x403cfc
push dword [edi + 0x18]
mov ecx, edi
call fcn.0040f8fe
test al, al
jne 0x403d11
mov eax, 0x2000000
jmp 0x403d7f
cmp word [esp + 0x22], bp
jne 0x403cdb
test ebp, ebp
jne 0x403ce5
test dl, dl
jne 0x403ce5
mov eax, 0x4000000
jmp 0x403d7f
push edi
lea eax, [esp + 0x20]
push 0x411dd1
push eax
call fcn.0041044d
add esp, 0xc
test eax, eax
je 0x403d03
mov eax, 0x400
jmp 0x403d7f
mov ax, word [esp + 0x48]
add dword [edi + 0x18], 0x10
mov word [esp + 0x20], ax
mov eax, dword [edi + 0x14]
test eax, eax
jne 0x403d7f
push dword [esp + 0x3c]
call fcn.00413102
push dword [esp + 0x40]
mov esi, eax
push dword [esp + 0x164]
push esi
call fcn.00416f60
mov ebx, 0x360
mov dword [esp + 0x16c], esi
push ebx
call fcn.00413c29
mov esi, eax
lea eax, [esp + 0x30]
push ebx
push eax
push esi
call fcn.00416f60
mov ecx, dword [edi + 0x44]
add esp, 0x20
test ecx, ecx
jne 0x403d65
mov dword [edi + 0x44], esi
jmp 0x403d76
mov ecx, dword [eax]
lea eax, [ecx + 0x35c]
cmp dword [eax], 0
jne 0x403d63
mov dword [ecx + 0x35c], esi
xor eax, eax
jmp 0x403d7f
mov eax, 0x10000
pop ebp
pop esi
mov ecx, dword [esp + 0x5a8]
pop edi
pop ebx
xor ecx, esp
call fcn.004189a5
add esp, 0x5a4
ret 0x10