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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x218
mov eax, dword [0x45c040]
xor eax, esp
mov dword [esp + 0x214], eax
movzx ecx, word [ebp + 8]
mov eax, dword [ebp + 0x14]
mov dword [esp + 0x1c], ecx
movsx ecx, cx
mov dword [esp + 0x28], eax
imul eax, ecx, 0xdd4
push esi
mov esi, dword [ebp + 0xc]
push edi
mov edi, dword [ebp + 0x10]
mov dword [esp + 0x14], 0
mov dword [esp + 0x58], esi
mov dword [esp + 0x3c], edi
movzx edx, word [eax + edi + 6]
mov dword [esp + 0x10], ecx
mov dword [esp + 0x40], eax
mov dword [esp + 0x44], edx
cmp word [esp + 0x14], dx
jg 0x401fb9
lea eax, [edx + 1]
xor edi, edi
movzx esi, ax
xorps xmm0, xmm0
mov dword [esp + 0x1c], esi
mov ecx, 0x51a520
mov edx, esi
nop dword [eax + eax]
mov eax, dword [ecx]
lea ecx, [ecx + 4]
movsd qword [edi + eax], xmm0
sub edx, 1
jne 0x401f90
add edi, 8
sub dword [esp + 0x1c], 1
jne 0x401f81
mov esi, dword [esp + 0x58]
mov ecx, dword [esp + 0x10]
mov edi, dword [esp + 0x3c]
mov eax, dword [esp + 0x40]
movzx eax, word [eax + edi]
mov edx, 1
mov dword [esp + 0x1c], 0
mov dword [esp + 0x14], edx
mov dword [esp + 0x28], edx
cmp dx, ax
jg 0x40276a
imul ecx, ecx, 0x6ea
mov dword [esp + 0x6c], ecx
push 0x467220
movsx eax, dx
add eax, ecx
push esi
push 0x45e9c0
push 0x45edc0
movzx edi, word [edi + eax*2 + 0xc]
push edi
mov dword [esp + 0x24], edi
call fcn.00404000
movsx edi, di
add esp, 0x14
shl edi, 9
mov dword [esp + 0x68], edi
movss xmm0, dword [edi + esi + 0x64]
subss xmm0, dword [edi + esi + 0x5c]
movzx eax, word [edi + esi + 0x1d6]
mov dword [esp + 0x38], eax
cvtps2pd xmm2, xmm0
movss xmm0, dword [edi + esi + 0x68]
subss xmm0, dword [edi + esi + 0x60]
movsd qword [esp + 0x70], xmm2
cvtps2pd xmm1, xmm0
movaps xmm0, xmm1
movsd qword [esp + 0x78], xmm1
mulsd xmm0, xmm1
movaps xmm1, xmm2
mulsd xmm1, xmm2
addsd xmm0, xmm1
xorps xmm1, xmm1
ucomisd xmm1, xmm0
ja 0x40206d
sqrtsd xmm0, xmm0
jmp 0x402072
call fcn.0042bd60
movsd xmm1, qword [esp + 0x78]
divsd xmm1, xmm0
mov edx, dword [esp + 0x38]
movsd qword [esp + 0x78], xmm1
movsd xmm1, qword [esp + 0x70]
divsd xmm1, xmm0
movsd qword [esp + 0x70], xmm1
cmp word [esp + 0x28], dx
jg 0x4026cc
lea ecx, [esi + 0x17c]
movzx edx, dx
add ecx, edi
mov dword [esp + 0x34], 0x467473
lea eax, [esi + 0x2c]
mov dword [esp + 0x60], ecx
add eax, edi
mov dword [esp + 0x64], edx
mov dword [esp + 0x5c], eax
cmp byte [edi + esi + 0x1d2], 0
movzx edx, word [eax]
movss xmm2, dword [ecx - 0xfc]
movsx eax, dx
cvtps2pd xmm2, xmm2
movd xmm0, eax
cvtdq2pd xmm0, xmm0
divsd xmm2, xmm0
movsd qword [esp + 0x88], xmm2
jne 0x402101
movss xmm0, dword [edi + esi + 0x78]
mulss xmm0, dword [ecx]
jmp 0x40210e
movss xmm0, dword [ecx - 0xa8]
mulss xmm0, dword [ecx - 0x54]
cvtps2pd xmm1, xmm0
movss xmm0, dword [edi + esi + 0x1e0]
cvtps2pd xmm0, xmm0
mulsd xmm1, xmm0
movsd qword [esp + 0x80], xmm1
cmp word [esp + 0x28], dx
jg 0x4026a3
mov eax, dword [esp + 0x34]
mov esi, eax
mov dword [esp + 0x50], esi
mov dword [esp + 0x54], edx
lea ecx, [eax - 0xb]
mov dword [esp + 0x20], ecx
nop word [eax + eax]
movzx eax, word [esi - 7]
movzx edi, word [esi - 0x33]
mov dword [esp + 0x2c], eax
lea eax, [esp + 0x90]
push eax
sub esp, 0x10
movsd qword [esp + 8], xmm2
movsd qword [esp], xmm1
call fcn.00403e80
mov cl, byte [esi - 0x2c]
add esp, 0x14
test cl, cl
jne 0x402185
cmp byte [esi], cl
je 0x4021b7
movsd xmm0, qword [esp + 0x70]
lea eax, [esp + 0x90]
push eax
movzx eax, byte [esi]
push eax
push ecx
sub esp, 0x10
movsd qword [esp + 8], xmm0
movsd xmm0, qword [esp + 0x94]
movsd qword [esp], xmm0
call fcn.00401cf0
add esp, 0x1c
movsx eax, di
movsd xmm0, qword [esp + 0xd0]
lea ecx, [eax*8]
sub ecx, eax
mov eax, dword [esp + 0x30]
movzx edx, word [eax + ecx*8 + 0xe]
movzx esi, word [eax + ecx*8 + 0x10]
movzx edi, word [eax + ecx*8 + 0x12]
mov eax, dword [esp + 0x2c]
cwde
mov dword [esp + 0xc], edx
mov edx, dword [esp + 0x30]
lea ecx, [eax*8]
sub ecx, eax
mov eax, dword [esp + 0x30]
movzx eax, word [eax + ecx*8 + 0xe]
mov dword [esp + 0x48], eax
movzx eax, word [edx + ecx*8 + 0x10]
mov dword [esp + 0x4c], eax
movzx eax, word [edx + ecx*8 + 0x12]
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0xc]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x48]
mov word [ecx - 0x2e], dx
mov word [ecx - 0x2a], di
mov word [ecx - 0x2c], si
mov word [ecx - 2], ax
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x4c]
movsx edx, dx
mov dword [esp + 0x18], edx
mov word [eax], cx
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x2c]
movsx edi, di
mov dword [esp + 0xc], edi
mov word [ecx + 2], ax
mov eax, dword [edx*4 + 0x51a520]
mov ecx, dword [esp + 0x4c]
addsd xmm0, qword [eax + edx*8]
movsd qword [eax + edx*8], xmm0
movsd xmm0, qword [esp + 0xd8]
movsx edx, si
mov esi, dword [esp + 0x18]
mov dword [esp + 8], edx
mov eax, dword [esi*4 + 0x51a520]
addsd xmm0, qword [eax + edx*8]
movsd qword [eax + edx*8], xmm0
mov eax, dword [esi*4 + 0x51a520]
movsd xmm0, qword [esp + 0xe0]
movsx edx, cx
addsd xmm0, qword [eax + edi*8]
movsd qword [eax + edi*8], xmm0
mov edi, dword [esp + 0x18]
mov eax, dword [esp + 0x48]
movsd xmm0, qword [esp + 0xe8]
movsx esi, ax
mov eax, dword [edi*4 + 0x51a520]
addsd xmm0, qword [eax + esi*8]
movsd qword [eax + esi*8], xmm0
mov eax, dword [edi*4 + 0x51a520]
movsd xmm0, qword [esp + 0xf0]
addsd xmm0, qword [eax + edx*8]
movsd qword [eax + edx*8], xmm0
mov eax, dword [esp + 0x2c]
movsd xmm0, qword [esp + 0xf8]
movsx ecx, ax
mov eax, dword [edi*4 + 0x51a520]
addsd xmm0, qword [eax + ecx*8]
movsd qword [eax + ecx*8], xmm0
mov eax, dword [esp + 8]
movsd xmm0, qword [esp + 0x108]
mov eax, dword [eax*4 + 0x51a520]
addsd xmm0, qword [eax + edi*8]
movsd qword [eax + edi*8], xmm0
mov eax, dword [esp + 8]
mov edi, dword [esp + 8]
movsd xmm0, qword [esp + 0x110]
mov eax, dword [eax*4 + 0x51a520]
addsd xmm0, qword [eax + edi*8]
movsd qword [eax + edi*8], xmm0
mov eax, edi
mov edi, dword [esp + 0xc]
movsd xmm0, qword [esp + 0x118]
mov eax, dword [eax*4 + 0x51a520]
addsd xmm0, qword [eax + edi*8]
movsd qword [eax + edi*8], xmm0
mov eax, dword [esp + 8]
movsd xmm0, qword [esp + 0x120]
mov eax, dword [eax*4 + 0x51a520]
addsd xmm0, qword [eax + esi*8]
movsd qword [eax + esi*8], xmm0
mov eax, dword [esp + 8]
movsd xmm0, qword [esp + 0x128]
mov eax, dword [eax*4 + 0x51a520]
addsd xmm0, qword [eax + edx*8]
movsd qword [eax + edx*8], xmm0
mov eax, dword [esp + 8]
movsd xmm0, qword [esp + 0x130]
mov eax, dword [eax*4 + 0x51a520]
addsd xmm0, qword [eax + ecx*8]
movsd qword [eax + ecx*8], xmm0
mov eax, dword [edi*4 + 0x51a520]
mov edi, dword [esp + 0x18]
movsd xmm0, qword [esp + 0x140]
addsd xmm0, qword [eax + edi*8]
movsd qword [eax + edi*8], xmm0
mov edi, dword [esp + 0xc]
movsd xmm0, qword [esp + 0x148]
mov eax, dword [edi*4 + 0x51a520]
mov edi, dword [esp + 8]
addsd xmm0, qword [eax + edi*8]
movsd qword [eax + edi*8], xmm0
mov edi, dword [esp + 0xc]
movsd xmm0, qword [esp + 0x150]
mov eax, dword [edi*4 + 0x51a520]
addsd xmm0, qword [eax + edi*8]
movsd qword [eax + edi*8], xmm0
mov eax, dword [edi*4 + 0x51a520]
movsd xmm0, qword [esp + 0x158]
addsd xmm0, qword [eax + esi*8]
movsd qword [eax + esi*8], xmm0
mov eax, dword [edi*4 + 0x51a520]
movsd xmm0, qword [esp + 0x160]
addsd xmm0, qword [eax + edx*8]
movsd qword [eax + edx*8], xmm0
mov eax, dword [edi*4 + 0x51a520]
movsd xmm0, qword [esp + 0x168]
mov edi, dword [esp + 0x18]
addsd xmm0, qword [eax + ecx*8]
movsd qword [eax + ecx*8], xmm0
mov eax, dword [esi*4 + 0x51a520]
movsd xmm0, qword [esp + 0x178]
addsd xmm0, qword [eax + edi*8]
movsd qword [eax + edi*8], xmm0
mov eax, dword [esi*4 + 0x51a520]
mov edi, dword [esp + 8]
movsd xmm0, qword [esp + 0x180]
addsd xmm0, qword [eax + edi*8]
movsd qword [eax + edi*8], xmm0
mov eax, dword [esi*4 + 0x51a520]
mov edi, dword [esp + 0xc]
movsd xmm0, qword [esp + 0x188]
addsd xmm0, qword [eax + edi*8]
movsd qword [eax + edi*8], xmm0
mov eax, dword [esi*4 + 0x51a520]
movsd xmm0, qword [esp + 0x190]
mov edi, dword [esp + 0x18]
addsd xmm0, qword [eax + esi*8]
movsd qword [eax + esi*8], xmm0
mov eax, dword [esi*4 + 0x51a520]
movsd xmm0, qword [esp + 0x198]
addsd xmm0, qword [eax + edx*8]
movsd qword [eax + edx*8], xmm0
mov eax, dword [esi*4 + 0x51a520]
movsd xmm0, qword [esp + 0x1a0]
addsd xmm0, qword [eax + ecx*8]
movsd qword [eax + ecx*8], xmm0
mov eax, dword [edx*4 + 0x51a520]
movsd xmm0, qword [esp + 0x1b0]
addsd xmm0, qword [eax + edi*8]
movsd qword [eax + edi*8], xmm0
mov eax, dword [edx*4 + 0x51a520]
mov edi, dword [esp + 8]
movsd xmm0, qword [esp + 0x1b8]
add dword [esp + 0x20], 0x2c
movsd xmm1, qword [esp + 0x80]
addsd xmm0, qword [eax + edi*8]
movsd xmm2, qword [esp + 0x88]
movsd qword [eax + edi*8], xmm0
mov eax, dword [edx*4 + 0x51a520]
mov edi, dword [esp + 0xc]
movsd xmm0, qword [esp + 0x1c0]
addsd xmm0, qword [eax + edi*8]
movsd qword [eax + edi*8], xmm0
mov eax, dword [edx*4 + 0x51a520]
movsd xmm0, qword [esp + 0x1c8]
mov edi, dword [esp + 0x18]
addsd xmm0, qword [eax + esi*8]
movsd qword [eax + esi*8], xmm0
mov eax, dword [edx*4 + 0x51a520]
movsd xmm0, qword [esp + 0x1d0]
addsd xmm0, qword [eax + edx*8]
movsd qword [eax + edx*8], xmm0
mov eax, dword [edx*4 + 0x51a520]
movsd xmm0, qword [esp + 0x1d8]
addsd xmm0, qword [eax + ecx*8]
movsd qword [eax + ecx*8], xmm0
mov eax, dword [ecx*4 + 0x51a520]
movsd xmm0, qword [esp + 0x1e8]
addsd xmm0, qword [eax + edi*8]
movsd qword [eax + edi*8], xmm0
mov eax, dword [ecx*4 + 0x51a520]
mov edi, dword [esp + 8]
movsd xmm0, qword [esp + 0x1f0]
addsd xmm0, qword [eax + edi*8]
movsd qword [eax + edi*8], xmm0
mov eax, dword [ecx*4 + 0x51a520]
mov edi, dword [esp + 0xc]
movsd xmm0, qword [esp + 0x1f8]
addsd xmm0, qword [eax + edi*8]
movsd qword [eax + edi*8], xmm0
mov eax, dword [ecx*4 + 0x51a520]
movsd xmm0, qword [esp + 0x200]
addsd xmm0, qword [eax + esi*8]
movsd qword [eax + esi*8], xmm0
mov eax, dword [ecx*4 + 0x51a520]
movsd xmm0, qword [esp + 0x208]
mov esi, dword [esp + 0x50]
add esi, 0x2c
sub dword [esp + 0x54], 1
addsd xmm0, qword [eax + edx*8]
mov dword [esp + 0x50], esi
movsd qword [eax + edx*8], xmm0
mov eax, dword [ecx*4 + 0x51a520]
movsd xmm0, qword [esp + 0x210]
addsd xmm0, qword [eax + ecx*8]
movsd qword [eax + ecx*8], xmm0
jne 0x402150
mov ecx, dword [esp + 0x60]
mov esi, dword [esp + 0x58]
mov edi, dword [esp + 0x68]
mov eax, dword [esp + 0x5c]
add ecx, 4
add dword [esp + 0x34], 0x1e4
add eax, 2
sub dword [esp + 0x64], 1
mov dword [esp + 0x5c], eax
mov dword [esp + 0x60], ecx
jne 0x4020c5
mov edx, dword [esp + 0x38]
cmp byte [0x469ca8], 0
mov edi, dword [esp + 0x10]
jne 0x40272f
lea eax, [esp + 0x1c]
push eax
push esi
push dword [ebp + 0x18]
push 0x467220
push 0x51a520
push edx
push edi
call section..text
add esp, 0x1c
cmp byte [0x469ca8], 0
jne 0x40272f
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x40]
cmp word [ecx + eax], 1
jne 0x40272f
cmp word [esp + 0x1c], 2
jge 0x40272f
mov eax, dword [esp + 0x38]
push 0x467220
push esi
push 0x51a520
push eax
push edi
call fcn.00401a30
add esp, 0x14
push 0x467220
push esi
push 0x45e9c0
push 0x45edc0
push edi
call fcn.00404130
mov edi, dword [esp + 0x50]
add esp, 0x14
mov eax, dword [esp + 0x40]
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x6c]
inc edx
mov dword [esp + 0x14], edx
movzx eax, word [eax + edi]
cmp dx, ax
jle 0x401fe5
cmp byte [0x469ca8], 0
jne 0x402797
cmp ax, 1
jle 0x402797
cmp word [esp + 0x1c], 3
jge 0x402797
push esi
mov esi, dword [esp + 0x28]
push 0x51a520
push edi
push esi
call fcn.00401950
add esp, 0x10
jmp 0x40279b
mov esi, dword [esp + 0x24]
push 0x45edc0
movsx eax, si
push eax
push 0x4522ec
push 0x45e9c0
push str._s_s_i_s
push 0x45ebc0
call fcn.004045b0
push 0x45229c
push 0x45ebc0
call fcn.00410c78
mov dword [0x4f04c0], eax
add esp, 0x20
mov eax, dword [esp + 0x44]
cmp word [esp + 0x28], ax
jg 0x402853
movzx eax, ax
mov edi, 8
mov dword [esp + 0x44], eax
mov dword [esp + 0x10], eax
nop
mov esi, 0x51a524
mov dword [esp + 0x14], eax
nop dword [eax]
mov eax, dword [esi]
movsd xmm1, qword [0x452588]
movsd xmm0, qword [eax + edi]
andps xmm0, xmmword [0x4525c0]
comisd xmm1, xmm0
jbe 0x402824
xorps xmm0, xmm0
movsd qword [eax + edi], xmm0
push dword [0x4f04c0]
mov eax, dword [esi]
push 1
add eax, edi
push 8
push eax
call fcn.0041142b
add esp, 0x10
add esi, 4
sub dword [esp + 0x14], 1
jne 0x402800
mov eax, dword [esp + 0x44]
add edi, 8
sub dword [esp + 0x10], 1
jne 0x4027f0
push dword [0x4f04c0]
call fcn.0041098a
mov ecx, dword [esp + 0x220]
add esp, 4
pop edi
pop esi
xor ecx, esp
call fcn.004051b5
mov esp, ebp
pop ebp
ret