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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x724
mov eax, dword [0x4905d8]
xor eax, esp
mov dword [esp + 0x720], eax
mov eax, dword [ecx + 4]
push ebx
push esi
mov esi, dword [eax + 0x18]
push edi
add esi, 8
xor ebx, ebx
xor edi, edi
mov dword [esp + 0xc], ecx
add esi, 0xb4
mov eax, dword [esi + 8]
test eax, eax
je 0x4034d4
mov ecx, dword [esi + 0xc]
sub ecx, eax
mov eax, 0x57d990d1
imul ecx
sar edx, 7
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp edi, eax
jae 0x4034d4
push edi
mov ecx, esi
call fcn.00401ca0
mov edx, dword [esp + 0xc]
mov ecx, eax
mov eax, dword [edx + 8]
cdq
mov dword [esp + 0x5c], edx
mov edx, dword [ecx + 8]
cmp edx, eax
jne 0x4034cc
mov eax, dword [ecx + 0xc]
cmp eax, dword [esp + 0x5c]
jne 0x4034cc
lea eax, [ebx + 1]
push eax
lea ecx, [esp + 0x1fc]
push 0x475728
push ecx
mov dword [esp + 0x1c], eax
call dword [0x475368]
add esp, 0xc
push edi
mov ecx, esi
call fcn.00401ca0
mov edx, dword [eax + 0x15b]
or edx, dword [eax + 0x15f]
push edi
mov ecx, esi
je 0x4032b8
call fcn.00401ca0
movzx eax, word [eax + 0x167]
push eax
lea ecx, [esp + 0x414]
push 0x476938
push ecx
call dword [0x475368]
add esp, 0xc
push 0x4410
push 0x160
lea edx, [esp + 0xa0]
push edx
push 0
push edi
mov ecx, esi
call fcn.00401ca0
add eax, 0x25
push eax
call dword [0x4753b4]
push edi
mov ecx, esi
call fcn.00401ca0
mov ecx, eax
mov eax, dword [ecx + 0x15b]
mov edx, dword [ecx + 0x15f]
mov cl, 0xa
call fcn.004651f0
mov cl, 0xa
mov dword [esp + 0x40], eax
mov dword [esp + 0x44], edx
call fcn.004651f0
push edi
mov ecx, esi
mov dword [esp + 0x40], eax
call fcn.00401ca0
add eax, 0x15b
push edi
mov ecx, esi
mov dword [esp + 0x50], eax
call fcn.00401ca0
mov ecx, dword [esp + 0x4c]
mov edx, dword [ecx + 4]
cmp edx, dword [eax + 0x157]
jl 0x403214
jg 0x403197
mov ecx, dword [ecx]
cmp ecx, dword [eax + 0x153]
jbe 0x403214
push edi
mov ecx, esi
call fcn.00401ca0
mov edx, dword [eax + 0x153]
and edx, dword [eax + 0x157]
cmp edx, 0xffffffff
je 0x403214
push edi
mov ecx, esi
call fcn.00401ca0
mov ecx, eax
mov eax, dword [ecx + 0x153]
mov edx, dword [ecx + 0x157]
mov cl, 0xa
call fcn.004651f0
mov cl, 0xa
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], edx
call fcn.004651f0
test eax, eax
lea edx, [esp + 0x200]
jle 0x4031f9
push eax
push str.__dMB_
push edx
call dword [0x475368]
add esp, 0xc
jmp 0x40323c
mov eax, dword [esp + 0x54]
mov ecx, dword [esp + 0x50]
push eax
push ecx
push str.__I64dKB_
push edx
call dword [0x475368]
add esp, 0x10
jmp 0x40323c
mov eax, dword [0x47691c]
mov cx, word [0x476920]
mov dl, byte [0x476922]
mov dword [esp + 0x200], eax
mov word [esp + 0x204], cx
mov byte [esp + 0x206], dl
mov eax, dword [esp + 0x3c]
test eax, eax
jle 0x403265
lea ecx, [esp + 0x200]
push ecx
push eax
lea edx, [esp + 0x310]
push str._dMB_s
push edx
call dword [0x475368]
add esp, 0x10
jmp 0x40328d
mov ecx, dword [esp + 0x44]
mov edx, dword [esp + 0x40]
lea eax, [esp + 0x200]
push eax
push ecx
push edx
lea eax, [esp + 0x314]
push str._I64dKB_s
push eax
call dword [0x475368]
add esp, 0x14
push edi
mov ecx, esi
call fcn.00401ca0
movzx ecx, word [eax + 0x173]
push ecx
lea edx, [esp + 0x51c]
push 0x475728
push edx
call dword [0x475368]
add esp, 0xc
jmp 0x403353
call fcn.00401ca0
mov edx, dword [eax + 0x167]
mov ecx, dword [eax + 0x163]
add eax, 0x163
mov dword [esp + 0x64], edx
mov edx, dword [eax + 8]
mov eax, dword [eax + 0xc]
movzx edx, dx
push edx
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x68]
mov edx, eax
shr edx, 0x10
push edx
movzx eax, ax
push eax
mov edx, ecx
movsx eax, cx
shr edx, 0x10
push edx
push eax
lea ecx, [esp + 0x424]
push str._04d__02d__02d__02d:_02d
push ecx
call dword [0x475368]
add esp, 0x1c
push 0x104
lea edx, [esp + 0x624]
push edx
call dword [0x475120]
push 0x4000
push 0x160
lea eax, [esp + 0xa0]
push eax
push 0
lea ecx, [esp + 0x630]
push ecx
call dword [0x4753b4]
mov byte [esp + 0x308], 0
mov byte [esp + 0x518], 0
mov edx, dword [esp + 0x9c]
mov eax, dword [esp + 0x10]
mov dword [esp + 0x8c], edx
lea edx, [esp + 0x70]
push edx
mov dword [esp + 0x78], eax
mov eax, dword [esp + 0x10]
lea ecx, [esp + 0x1fc]
push 0
mov dword [esp + 0x8c], ecx
mov ecx, dword [eax]
push 0x1007
push ecx
mov dword [esp + 0x80], 7
mov dword [esp + 0x88], 0
mov dword [esp + 0xa0], ebx
call dword [0x4754d8]
push edi
mov ecx, esi
mov dword [esp + 0x20], 0
call fcn.00401ca0
add eax, 0x25
lea edx, [esp + 0x14]
push edx
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x10]
mov ecx, dword [eax]
push ebx
push 0x102e
push ecx
call dword [0x4754d8]
mov ecx, dword [esp + 0xc]
lea eax, [esp + 0x14]
push eax
lea edx, [esp + 0x30c]
push ebx
mov dword [esp + 0x30], edx
mov edx, dword [ecx]
push 0x102e
push edx
mov dword [esp + 0x2c], 1
call dword [0x4754d8]
push edi
mov ecx, esi
call fcn.00401ca0
movzx eax, byte [eax + 0x151]
add eax, 0xffffff9e
cmp eax, 0x12
ja case.0x403425.100
movzx eax, byte [eax + 0x403500]
jmp dword [eax*4 + 0x4034ec]
mov dword [esp + 0x28], 0x4768e4
jmp 0x403452
mov dword [esp + 0x28], 0x4768dc
jmp 0x403452
mov dword [esp + 0x28], 0x4768d0
jmp 0x403452
mov dword [esp + 0x28], 0x4768c4
mov edx, dword [esp + 0xc]
mov eax, dword [edx]
lea ecx, [esp + 0x14]
push ecx
push ebx
push 0x102e
push eax
mov dword [esp + 0x2c], 2
call dword [0x4754d8]
mov eax, dword [esp + 0xc]
lea edx, [esp + 0x14]
push edx
lea ecx, [esp + 0x414]
push ebx
mov dword [esp + 0x30], ecx
mov ecx, dword [eax]
push 0x102e
push ecx
mov dword [esp + 0x2c], 3
call dword [0x4754d8]
mov ecx, dword [esp + 0xc]
lea eax, [esp + 0x14]
push eax
lea edx, [esp + 0x51c]
push ebx
mov dword [esp + 0x30], edx
mov edx, dword [ecx]
push 0x102e
push edx
mov dword [esp + 0x2c], 4
call dword [0x4754d8]
mov ebx, dword [esp + 0x10]
add edi, 1
jmp 0x403054
mov ecx, dword [esp + 0x72c]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.00464f80
mov esp, ebp
pop ebp
ret