Function at 0x403b60
Capabilities:
Parse pe header
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x174
mov eax, dword [0x4a99c8]
xor eax, esp
mov dword [esp + 0x170], eax
mov eax, dword [esp + 0x178]
xorps xmm0, xmm0
push ebx
mov ebx, dword [esp + 0x190]
push ebp
mov ebp, dword [esp + 0x190]
push esi
mov esi, dword [esp + 0x18c]
push edi
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x194]
push 0xf8
push 0
push ebp
movups xmmword [eax], xmm0
mov dword [esp + 0x34], ebp
mov dword [esp + 0x38], esi
mov dword [esp + 0x30], eax
mov dword [eax + 0x10], 0
call fcn.0041db20
push esi
call fcn.00403590
add esp, 0x10
cmp eax, 0x1a2b3c4d
je 0x403c1c
cmp eax, 0x4d3c2b1a
je 0x403c1c
push 0
push esi
call fcn.004037b0
push esi
call fcn.00403560
mov edi, eax
add esp, 0xc
cmp edi, 0xffffffff
je 0x403c1c
push esi
call fcn.00403560
add esp, 4
cmp eax, 0xffffffff
je 0x403c1c
cmp edi, 0x4d
jne 0x403c0c
cmp eax, 0x5a
je 0x403c38
push esi
mov edi, eax
call fcn.00403560
add esp, 4
cmp eax, 0xffffffff
jne 0x403c02
or eax, 0xffffffff
mov ecx, dword [esp + 0x180]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.0041c143
add esp, 0x174
ret
push esi
call fcn.00403630
lea edi, [eax - 2]
lea ecx, [edi + 0x3c]
mov dword [ebx + 0x5fffa8], edi
push ecx
push esi
call fcn.004037b0
push esi
call fcn.00403590
mov dword [esp + 0x28], eax
lea ecx, [eax + edi]
push ecx
push esi
call fcn.004037b0
push esi
call fcn.00403590
add esp, 0x1c
cmp eax, 0x4550
je 0x403c95
lea eax, [edi + 2]
push eax
push esi
call fcn.004037b0
push esi
call fcn.00403560
mov edi, eax
add esp, 0xc
cmp edi, 0xffffffff
jne 0x403bf4
jmp 0x403c1c
cmp dword [ebx + 0x5fffa8], 0
mov eax, dword [esp + 0x18]
mov dword [ebx + 0x5fffac], eax
jg 0x403c1c
mov edi, dword [esp + 0x24]
push 0x14
push edi
push esi
call fcn.00403770
add esp, 0xc
test eax, eax
js 0x403f8d
mov eax, dword [esp + 0x20]
cmp dword [eax + 0x7c], 0
je 0x403ce3
push edi
call fcn.004038d0
add esp, 4
test eax, eax
jne 0x403c1c
mov eax, dword [esp + 0x20]
cmp dword [eax + 0x80], 0
je 0x403cfd
push edi
call fcn.004038d0
add esp, 4
test eax, eax
je 0x403c1c
mov eax, dword [ebx + 4]
test eax, eax
je 0x403ead
push str.PEHeaders
push eax
call fcn.0041a180
mov eax, dword [ebx + 4]
add esp, 8
mov dword [esp + 0x10], eax
test eax, eax
je 0x403ead
push str.CoffHeader
push eax
call fcn.0041a220
movzx edx, word [edi]
add esp, 8
xor ecx, ecx
cmp edx, 0x200
ja 0x403d80
je 0x403d79
lea eax, [edx - 0x14c]
cmp eax, 0x87
ja case.0x403d56.333
movzx eax, byte [eax + 0x4042d0]
jmp dword [eax*4 + 0x4042bc]
mov ecx, str.MatsushitaA33
jmp case.0x403d56.333
mov ecx, str.ARM_LE
jmp case.0x403d56.333
mov ecx, str.ARM_Thumb_2_LE
jmp case.0x403d56.333
mov ecx, 0x440e9c
jmp case.0x403d56.333
mov ecx, str.Itanium
jmp case.0x403d56.333
cmp edx, 0xebc
je 0x403da6
cmp edx, 0x8664
je 0x403d9f
cmp edx, 0xaa64
jne case.0x403d56.333
mov ecx, str.ARM64_LE
jmp case.0x403d56.333
mov ecx, 0x440e64
jmp case.0x403d56.333
mov ecx, str.EFI_Byte_Code
test ecx, ecx
mov eax, ecx
cmove eax, edx
mov edx, 0x440eb0
push eax
mov eax, str.__20s_:_0x_x
push str.Machine
cmovne eax, edx
push eax
push dword [esp + 0x1c]
call fcn.0041a710
movzx eax, word [edi + 2]
push eax
push str.NumberOfSections
push str.__20s_:_0x_x
push dword [esp + 0x2c]
call fcn.0041a710
mov eax, dword [edi + 4]
mov dword [esp + 0x38], eax
lea eax, [esp + 0x38]
push eax
mov dword [esp + 0x40], 0
call fcn.00424988
push eax
push 0x440bbc
lea eax, [esp + 0xac]
push 0x100
push eax
call fcn.00401010
lea eax, [esp + 0xb4]
push 0xa
push eax
call fcn.0041dc80
add esp, 0x3c
test eax, eax
je 0x403e31
mov byte [eax], 0
lea eax, [esp + 0x80]
push eax
push str.TimeStamp
push 0x440eb0
push dword [esp + 0x1c]
call fcn.0041a710
push dword [edi + 8]
push str.PointerToSymbols
push str.__20s_:_0x_x
push dword [esp + 0x2c]
call fcn.0041a710
push dword [edi + 0xc]
push str.NumberOfSymbols
push str.__20s_:__d
push dword [esp + 0x3c]
call fcn.0041a710
movzx eax, word [edi + 0x10]
push eax
push str.SizeOfOptHdr
push str.__20s_:__d
push dword [esp + 0x4c]
call fcn.0041a710
movzx eax, word [edi + 0x12]
add esp, 0x40
push eax
push dword [esp + 0x14]
call fcn.004047d0
push dword [esp + 0x18]
call fcn.0041a5c0
add esp, 0xc
movzx eax, word [edi]
mov ecx, 0x8664
cmp ax, cx
je 0x403ec8
mov ecx, 0x14c
cmp ax, cx
jne 0x403f8d
push esi
call fcn.00403630
push esi
mov dword [esp + 0x1c], eax
call fcn.00403700
push dword [esp + 0x1c]
mov dword [esp + 0x24], eax
push esi
call fcn.004037b0
mov eax, dword [esp + 0x28]
add esp, 0x10
cmp eax, 0x10b
jne 0x403f97
push 0x1c
push ebp
push esi
call fcn.00403770
add esp, 0xc
test eax, eax
js 0x403f8d
push esi
call fcn.00403590
cdq
mov dword [ebp + 0x20], eax
lea eax, [ebp + 0x28]
push 0x28
push eax
push esi
mov dword [ebp + 0x24], edx
call fcn.00403770
add esp, 0x10
test eax, eax
js 0x403f8d
push esi
call fcn.00403590
cdq
push esi
mov dword [ebp + 0x50], eax
mov dword [ebp + 0x54], edx
call fcn.00403590
cdq
push esi
mov dword [ebp + 0x58], eax
mov dword [ebp + 0x5c], edx
call fcn.00403590
cdq
push esi
mov dword [ebp + 0x60], eax
mov dword [ebp + 0x64], edx
call fcn.00403590
cdq
mov dword [ebp + 0x60], eax
lea eax, [ebp + 0x70]
push 8
push eax
push esi
mov dword [ebp + 0x64], edx
call fcn.00403770
add esp, 0x1c
test eax, eax
js 0x403f8d
push 0x80
lea eax, [ebp + 0x78]
push eax
push esi
call fcn.00403770
add esp, 0xc
test eax, eax
jns 0x40405a
mov eax, 1
jmp 0x403c1f
cmp eax, 0x20b
jne 0x403f8d
push 0x18
push ebp
push esi
call fcn.00403770
add esp, 0xc
test eax, eax
js 0x403f8d
push esi
call fcn.00403640
mov dword [ebp + 0x20], eax
lea eax, [ebp + 0x28]
push 0x28
push eax
push esi
mov dword [ebp + 0x24], edx
call fcn.00403770
add esp, 0x10
test eax, eax
jns 0x403ff9
mov eax, dword [esp + 0x20]
cmp dword [eax + 0x78], 0
je 0x403f8d
push str.warning:_optional_header_could_not_be_read__n
push 1
call fcn.00420148
add esp, 4
push eax
call fcn.00401070
add esp, 8
mov eax, 1
jmp 0x403c1f
push esi
call fcn.00403640
push esi
mov dword [ebp + 0x50], eax
mov dword [ebp + 0x54], edx
call fcn.00403640
push esi
mov dword [ebp + 0x58], eax
mov dword [ebp + 0x5c], edx
call fcn.00403640
push esi
mov dword [ebp + 0x60], eax
mov dword [ebp + 0x64], edx
call fcn.00403640
mov dword [ebp + 0x60], eax
lea eax, [ebp + 0x70]
push 8
push eax
push esi
mov dword [ebp + 0x64], edx
call fcn.00403770
add esp, 0x1c
test eax, eax
js 0x403f8d
push 0x80
lea eax, [ebp + 0x78]
push eax
push esi
call fcn.00403770
add esp, 0xc
test eax, eax
js 0x403f8d
movzx eax, word [ebp + 0x4e]
mov ecx, eax
test al, 0x40
je 0x404072
mov dword [ebx + 0x6002bc], 1
movzx ecx, word [ebp + 0x4e]
movzx eax, cx
test ecx, 0x100
je 0x40408b
mov dword [ebx + 0x6002c0], 1
movzx eax, word [ebp + 0x4e]
test eax, 0x400
je 0x40409c
mov dword [ebx + 0x6002c4], 1
push ebp
push dword [ebx + 4]
call fcn.00404ab0
movzx eax, word [edi + 0x10]
add eax, dword [esp + 0x1c]
push eax
push esi
call fcn.004037b0
movzx eax, word [edi + 2]
lea ecx, [ebx + 8]
mov dword [esp + 0x24], ecx
lea eax, [eax + eax*4]
shl eax, 3
push eax
push ecx
push esi
call fcn.00403770
add esp, 0x1c
test eax, eax
js 0x403f8d
xor eax, eax
cmp ax, word [edi + 2]
jae 0x40414b
lea ecx, [ebx + 8]
xor ebp, ebp
lea edx, [ebx + 0x27ffe0]
mov dword [esp + 0x18], ecx
mov dword [esp + 0x10], edx
nop dword [eax]
nop word [eax + eax]
mov eax, dword [esp + 0x20]
push dword [eax + 4]
movsd xmm0, qword [eax + 0xe8]
sub esp, 8
movsd qword [esp], xmm0
push edx
push ecx
push dword [ebx + 0x5fffa8]
push esi
call fcn.004081d0
mov edx, dword [esp + 0x2c]
inc ebp
mov ecx, dword [esp + 0x34]
add edx, 0x38
movzx eax, word [edi + 2]
add ecx, 0x28
add esp, 0x1c
mov dword [esp + 0x10], edx
mov dword [esp + 0x18], ecx
cmp ebp, eax
jl 0x404100
mov ebp, dword [esp + 0x28]
mov eax, dword [ebx + 4]
test eax, eax
je 0x4042b4
push str.KeyAddresses
push eax
call fcn.0041a220
xor eax, eax
mov dword [esp + 0x18], 0
add esp, 8
cmp ax, word [edi + 2]
jae 0x404242
mov esi, dword [esp + 0x24]
lea edi, [ebx + 0x14]
nop
lea eax, [esp + 0x30]
push eax
lea eax, [edi - 0xc]
push eax
call fcn.00403b20
mov edx, dword [edi]
add esp, 8
mov ecx, edx
cmp dword [ebp + 0x10], edx
jb 0x4041c6
mov eax, dword [edi + 4]
add eax, edx
cmp dword [ebp + 0x10], eax
jae 0x4041c6
mov eax, dword [esp + 0x10]
inc eax
push eax
lea eax, [esp + 0x34]
push eax
push str.EntrySection
push str.__20s_:__s__section__d_
push dword [ebx + 4]
call fcn.0041a710
mov ecx, dword [edi]
add esp, 0x14
mov edx, dword [ebp + 0x80]
cmp edx, ecx
jb 0x4041f5
mov eax, dword [edi + 4]
add eax, ecx
cmp edx, eax
jae 0x4041f5
lea eax, [esp + 0x30]
push eax
push str.ImportSection
push 0x440eb0
push dword [ebx + 4]
call fcn.0041a710
mov ecx, dword [edi]
add esp, 0x10
mov edx, dword [ebp + 0x88]
cmp edx, ecx
jb 0x404222
mov eax, dword [edi + 4]
add eax, ecx
cmp edx, eax
jae 0x404222
lea eax, [esp + 0x30]
push eax
push str.ResourceSection
push 0x440eb0
push dword [ebx + 4]
call fcn.0041a710
add esp, 0x10
mov ecx, dword [esp + 0x10]
add edi, 0x28
movzx eax, word [esi + 2]
inc ecx
mov dword [esp + 0x10], ecx
cmp ecx, eax
jl 0x404180
mov esi, dword [esp + 0x2c]
mov edi, dword [esp + 0x24]
push dword [ebx + 4]
call fcn.0041a5c0
movzx eax, word [edi + 2]
push eax
push str.SectionDetails_Count_d
push dword [ebx + 4]
call fcn.0041a220
xor eax, eax
mov dword [esp + 0x28], 0
add esp, 0x10
cmp ax, word [edi + 2]
jae 0x4042a9
lea ebp, [ebx + 0x27ffe0]
push ebp
push dword [esp + 0x18]
push dword [ebx + 0x5fffa8]
push esi
push dword [esp + 0x30]
push dword [ebx + 4]
call fcn.00405110
mov ecx, dword [esp + 0x30]
add esp, 0x18
movzx eax, word [edi + 2]
inc ecx
add dword [esp + 0x14], 0x28
add ebp, 0x38
mov dword [esp + 0x18], ecx
cmp ecx, eax
jl 0x404275
push dword [ebx + 4]
call fcn.0041a5c0
add esp, 4
xor eax, eax
jmp 0x403c1f