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

Disassembly:
mov ecx, dword fs:[0x14]
mov ecx, dword [ecx]
cmp esp, dword [ecx + 8]
jbe 0x4159c3
sub esp, 0x74
mov eax, dword [0x691e6c]
test eax, eax
jge 0x4156e8
mov eax, 0x186a0
mov dword [esp + 0x40], eax
lea ecx, [0x694e78]
mov dword [esp], ecx
call fcn.004021a0
mov eax, dword [esp + 4]
mov dword [esp + 0x24], eax
mov ecx, dword [esp + 8]
mov dword [esp + 0x28], ecx
lea edx, [0x694e80]
mov dword [esp], edx
call fcn.004021a0
mov eax, dword [esp + 0x78]
test byte [eax], al
mov ecx, dword [esp + 4]
mov dword [esp + 0x18], ecx
mov edx, dword [esp + 8]
mov dword [esp + 0x1c], edx
mov ebx, dword [esp + 8]
mov dword [esp + 0x20], ebx
mov dword [esp], eax
call fcn.00402040
mov eax, dword [esp + 4]
mov dword [esp + 0x48], eax
mov ecx, dword [esp + 8]
mov dword [esp + 0x44], ecx
lea edx, [0x6938c8]
mov dword [esp], edx
call fcn.004021a0
mov eax, dword [esp + 8]
mov dword [esp + 0x38], eax
mov ecx, dword [esp + 4]
mov dword [esp + 0x34], ecx
mov edx, dword [esp + 8]
mov dword [esp + 0x3c], edx
mov ebx, dword [esp + 0x1c]
mov dword [esp + 4], ebx
mov ebx, dword [esp + 0x18]
mov dword [esp], ebx
call fcn.004542e0
movsd xmm0, qword [0x5aee1c]
mulsd xmm0, qword [esp + 8]
mov eax, dword [esp + 0x40]
add eax, 0x64
cvtsi2sd xmm1, eax
divsd xmm0, xmm1
movsd qword [esp], xmm0
call fcn.00454170
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x24]
cmp eax, ecx
setb dl
mov ebx, dword [esp + 0x38]
mov ebp, dword [esp + 0x28]
cmp ebx, ebp
setl bl
xchg esi, ebx
sete bl
xchg esi, ebx
and esi, edx
or ebx, esi
mov edx, dword [esp + 0xc]
mov esi, dword [esp + 8]
mov edi, dword [esp + 0xc]
test bl, bl
je 0x41598d
mov ecx, dword [esp + 0x3c]
mov dword [esp + 4], ecx
mov dword [esp], eax
call fcn.00454210
movsd xmm0, qword [0x5aedf4]
mulsd xmm0, qword [esp + 8]
movsd qword [esp], xmm0
call fcn.00454170
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0xc]
mov eax, dword [esp + 0x20]
mov ebx, dword [esp + 0x18]
mov ebp, dword [esp + 0x48]
sub ebx, ebp
mov ebp, dword [esp + 0x44]
sbb eax, ebp
test eax, eax
xchg ebp, ebx
setl bl
xchg ebp, ebx
xchg esi, ebx
sete bl
xchg esi, ebx
cmp ebx, 0x3e8
xchg edi, ebx
setb bl
xchg edi, ebx
and edi, esi
or edi, ebp
xchg edi, eax
test al, al
xchg edi, eax
je 0x41585a
xor eax, eax
mov ebx, 0x3e8
mov ebp, dword [esp + 0x24]
sub ecx, ebp
mov ebp, dword [esp + 0x28]
sbb edx, ebp
test edx, edx
xchg ebp, ebx
setl bl
xchg ebp, ebx
xchg esi, ebx
sete bl
xchg esi, ebx
test ecx, ecx
xchg edi, ebx
setbe bl
xchg edi, ebx
and edi, esi
or edi, ebp
xchg edi, eax
test al, al
xchg edi, eax
je 0x415982
xor ecx, ecx
mov edx, 1
mov dword [esp + 0x2c], edx
mov dword [esp + 0x10], ebx
mov dword [esp + 0x14], eax
mov dword [esp + 0x30], ecx
mov dword [esp + 4], eax
mov dword [esp], ebx
call fcn.00454210
movsd xmm0, qword [esp + 8]
movsd qword [esp + 0x6c], xmm0
mov eax, dword [esp + 0x30]
mov dword [esp + 4], eax
mov ecx, dword [esp + 0x2c]
mov dword [esp], ecx
call fcn.00454210
movsd xmm0, qword [esp + 0x6c]
divsd xmm0, qword [esp + 8]
movsd qword [esp + 0x5c], xmm0
mov eax, dword [esp + 0x30]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x2c]
mov dword [esp], eax
call fcn.00454210
movsd xmm0, qword [esp + 8]
movsd qword [esp + 0x6c], xmm0
mov eax, dword [esp + 0x14]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x10]
mov dword [esp], eax
call fcn.00454210
movsd xmm0, qword [esp + 0x6c]
divsd xmm0, qword [esp + 8]
movsd qword [esp + 0x64], xmm0
movsd xmm1, qword [esp + 0x5c]
movsd qword [esp + 0x54], xmm1
mov eax, dword [esp + 0x78]
lea ecx, [eax + 0x40]
mov edx, dword [esp + 0x54]
mov ebx, dword [esp + 0x58]
mov dword [esp], ecx
mov dword [esp + 8], ebx
mov dword [esp + 4], edx
call fcn.004021c0
movsd xmm0, qword [esp + 0x64]
movsd qword [esp + 0x4c], xmm0
mov eax, dword [esp + 0x78]
add eax, 0x48
mov ecx, dword [esp + 0x4c]
mov edx, dword [esp + 0x50]
mov dword [esp], eax
mov dword [esp + 8], edx
mov dword [esp + 4], ecx
call fcn.004021c0
add esp, 0x74
ret
mov ebp, ecx
mov ecx, edx
mov edx, ebp
jmp 0x415894
mov ebx, dword [esp + 0x48]
cmp esi, ebx
xchg ebp, ebx
setb bl
xchg ebp, ebx
mov ecx, dword [esp + 0x44]
cmp ecx, edx
sete dl
setg cl
and edx, ebp
or ecx, edx
test cl, cl
jne 0x4157e8
mov eax, edi
mov ebx, esi
mov edx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x34]
jmp 0x415820
call fcn.0045aee0
jmp fcn.004156c0