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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0xb4
xorps xmm0, xmm0
push ebx
push esi
mov esi, ecx
lea ecx, [esi + 0x110]
mov dword [esi + 0x174], ecx
mov ecx, dword [ebp + 8]
push edi
lea eax, [esi + 0xf0]
xor edi, edi
mov dword [esi + 0x170], eax
lea edx, [esi + 0x130]
lea eax, [esi + 0x150]
push ecx
mov ecx, esi
mov dword [esp + 0x44], edi
movss dword [esp + 0x38], xmm0
mov dword [esp + 0x40], edi
mov dword [esi + 0x178], edx
mov dword [esi + 0x17c], eax
mov dword [esi + 0x180], 4
mov dword [esi + 0x184], edi
mov dword [esi + 0x18c], edi
call fcn.00521350
xorps xmm1, xmm1
mov eax, dword [ebp + 0xc]
movss dword [esi + 0xa0], xmm1
mov dword [esi + 0xc4], edi
movq xmm0, qword [eax]
movq qword [esi + 0x90], xmm0
movq xmm0, qword [eax + 8]
movq qword [esi + 0x98], xmm0
movss xmm3, dword [esi + 0x94]
movss xmm2, dword [esi + 0x98]
movss xmm0, dword [esi + 0x90]
movaps xmm4, xmm3
mulss xmm4, xmm3
mulss xmm0, xmm0
addss xmm0, xmm4
movaps xmm3, xmm2
mulss xmm3, xmm2
addss xmm0, xmm3
movss dword [esp + 0x14], xmm0
comiss xmm0, xmm1
movss xmm0, dword [0x5652f8]
movss dword [esp + 0x2c], xmm1
lea edx, [esp + 0x20]
jbe 0x521713
movaps xmm2, xmm0
subss xmm2, dword [esi + 0x90]
movss dword [esp + 0x20], xmm2
movaps xmm2, xmm0
subss xmm2, dword [esi + 0x94]
subss xmm0, dword [esi + 0x98]
movss dword [esp + 0x24], xmm2
movss dword [esp + 0x28], xmm0
jmp 0x52172d
movss xmm0, dword [0x5652d0]
movss dword [esp + 0x20], xmm0
movss dword [esp + 0x24], xmm1
movss dword [esp + 0x28], xmm1
mov eax, edi
movss dword [esi + eax*4 + 0xb4], xmm1
dec dword [esi + 0x180]
mov eax, dword [esi + 0x180]
mov eax, dword [esi + eax*4 + 0x170]
mov ecx, dword [esi + 0xc4]
mov dword [esi + ecx*4 + 0xa4], eax
mov eax, dword [esi + 0xc4]
mov ecx, dword [esi + eax*4 + 0xa4]
push ecx
inc eax
push edx
mov ecx, esi
mov dword [esi + 0xc4], eax
call fcn.00520770
mov eax, dword [esi + 0xa4]
movss xmm0, dword [0x5652d0]
movss dword [esi + 0xb4], xmm0
movq xmm0, qword [eax + 0x10]
xorps xmm4, xmm4
movq qword [esi + 0x90], xmm0
movq xmm0, qword [eax + 0x18]
movq qword [esi + 0x98], xmm0
movss xmm0, dword [esp + 0x14]
movss dword [esp + 0x1c], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [esp + 0xa0], xmm0
movq xmm0, qword [eax + 0x18]
movq qword [esp + 0xa8], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [esp + 0x90], xmm0
movq xmm0, qword [eax + 0x18]
movq qword [esp + 0x98], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [esp + 0x80], xmm0
movq xmm0, qword [eax + 0x18]
movq qword [esp + 0x88], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [esp + 0x70], xmm0
movq xmm0, qword [eax + 0x18]
movq qword [esp + 0x78], xmm0
mov edi, edi
movss xmm2, dword [esi + 0x90]
movss xmm1, dword [esi + 0x94]
movss xmm0, dword [esi + 0x98]
mov ecx, dword [esi + 0x184]
movaps xmm3, xmm2
mulss xmm3, xmm2
movaps xmm2, xmm1
mulss xmm2, xmm1
mov eax, 1
sub eax, ecx
movaps xmm1, xmm0
mulss xmm1, xmm0
addss xmm3, xmm2
addss xmm3, xmm1
movss xmm1, dword [0x567dcc]
sqrtss xmm0, xmm3
comiss xmm1, xmm0
lea ecx, [ecx + ecx*8]
lea edx, [eax + eax*8]
mov dword [esp + 0x18], eax
lea ebx, [esi + ecx*4 + 0xa4]
lea edi, [esi + edx*4 + 0xa4]
movss dword [esp + 0x54], xmm0
ja 0x521f7c
mov eax, dword [ebx + 0x20]
movss xmm1, dword [0x5652f8]
movaps xmm0, xmm1
subss xmm0, dword [esi + 0x94]
movaps xmm2, xmm1
subss xmm2, dword [esi + 0x90]
subss xmm1, dword [esi + 0x98]
movss dword [ebx + eax*4 + 0x10], xmm4
dec dword [esi + 0x180]
mov eax, dword [esi + 0x180]
mov edx, dword [esi + eax*4 + 0x170]
mov ecx, dword [ebx + 0x20]
movaps xmm5, xmm0
mulss xmm5, xmm0
movaps xmm3, xmm1
mulss xmm3, xmm1
addss xmm3, xmm5
mov dword [ebx + ecx*4], edx
mov ecx, dword [ebx + 0x20]
mov eax, dword [ebx + ecx*4]
movaps xmm5, xmm2
mulss xmm5, xmm2
addss xmm3, xmm5
sqrtss xmm5, xmm3
movss xmm3, dword [0x5652d0]
divss xmm3, xmm5
mulss xmm0, xmm3
inc ecx
movaps xmm5, xmm3
mov dword [ebx + 0x20], ecx
mulss xmm5, xmm2
movss dword [esp + 0x64], xmm0
movss dword [esp + 0x60], xmm5
movq xmm0, qword [esp + 0x60]
movq qword [eax], xmm0
mulss xmm1, xmm3
movss dword [esp + 0x68], xmm1
movss dword [esp + 0x6c], xmm4
movq xmm0, qword [esp + 0x68]
push eax
mov dword [esp + 0x18], eax
movq qword [eax + 8], xmm0
lea eax, [esp + 0xb4]
push eax
mov ecx, esi
call fcn.005206b0
movq xmm0, qword [eax]
mov ecx, dword [esp + 0x14]
movq qword [ecx + 0x10], xmm0
movq xmm0, qword [eax + 8]
movq qword [ecx + 0x18], xmm0
mov eax, dword [ebx + 0x20]
mov eax, dword [ebx + eax*4 - 4]
movss xmm3, dword [eax + 0x10]
movss xmm4, dword [eax + 0x14]
movss xmm5, dword [eax + 0x18]
add eax, 0x10
xor ecx, ecx
lea edx, [esp + 0x78]
lea ebx, [ebx]
movaps xmm2, xmm5
subss xmm2, dword [edx]
movaps xmm6, xmm2
mulss xmm6, xmm2
movaps xmm1, xmm4
subss xmm1, dword [edx - 4]
movaps xmm2, xmm1
mulss xmm2, xmm1
movaps xmm0, xmm3
subss xmm0, dword [edx - 8]
addss xmm6, xmm2
movss xmm2, dword [0x567dcc]
movaps xmm1, xmm0
mulss xmm1, xmm0
addss xmm6, xmm1
comiss xmm2, xmm6
ja 0x521f88
inc ecx
add edx, 0x10
cmp ecx, 4
jb 0x5219a0
mov ecx, dword [esp + 0x3c]
movq xmm0, qword [eax]
movss xmm1, dword [esi + 0x94]
mulss xmm3, dword [esi + 0x90]
inc ecx
and ecx, 3
mov dword [esp + 0x3c], ecx
shl ecx, 4
movq qword [esp + ecx + 0x70], xmm0
movq xmm0, qword [eax + 8]
lea ecx, [esp + ecx + 0x70]
movq qword [ecx + 8], xmm0
movss xmm0, dword [esi + 0x98]
mulss xmm0, xmm5
mulss xmm1, xmm4
addss xmm0, xmm1
movss xmm1, dword [esp + 0x54]
addss xmm0, xmm3
divss xmm0, xmm1
comiss xmm0, dword [esp + 0x34]
movss dword [esp + 0x58], xmm0
lea eax, [esp + 0x58]
ja 0x521a5c
lea eax, [esp + 0x34]
movss xmm0, dword [eax]
xorps xmm4, xmm4
movaps xmm3, xmm1
subss xmm3, xmm0
mulss xmm1, xmm2
subss xmm3, xmm1
comiss xmm4, xmm3
movss dword [esp + 0x34], xmm0
jae 0x521f8b
mov eax, dword [ebx + 0x20]
sub eax, 2
mov dword [esp + 0x10], 0
je 0x521af2
sub eax, 1
je 0x521aca
sub eax, 1
jne 0x521b18
mov ecx, dword [ebx + 0xc]
lea edx, [esp + 0x10]
push edx
mov edx, dword [ebx + 8]
lea eax, [esp + 0x48]
push eax
mov eax, dword [ebx + 4]
add ecx, 0x10
push ecx
mov ecx, dword [ebx]
add edx, 0x10
push edx
add eax, 0x10
push eax
add ecx, 0x10
push ecx
call fcn.00520f50
add esp, 0x18
jmp 0x521b11
mov ecx, dword [ebx + 8]
lea edx, [esp + 0x10]
push edx
mov edx, dword [ebx + 4]
lea eax, [esp + 0x48]
push eax
mov eax, dword [ebx]
add ecx, 0x10
push ecx
add edx, 0x10
push edx
add eax, 0x10
push eax
call fcn.00520aa0
add esp, 0x14
jmp 0x521b11
mov eax, dword [ebx + 4]
lea ecx, [esp + 0x10]
push ecx
mov ecx, dword [ebx]
lea edx, [esp + 0x48]
push edx
add eax, 0x10
push eax
add ecx, 0x10
push ecx
call fcn.00520930
add esp, 0x10
xorps xmm4, xmm4
fstp dword [esp + 0x1c]
movss xmm0, dword [esp + 0x1c]
comiss xmm0, xmm4
jb 0x521f8b
mov edx, dword [esp + 0x18]
xor ecx, ecx
mov dword [edi + 0x20], ecx
movss dword [esp + 0x20], xmm4
movss dword [esp + 0x24], xmm4
movq xmm0, qword [esp + 0x20]
movq qword [esi + 0x90], xmm0
movss dword [esp + 0x28], xmm4
movss dword [esp + 0x2c], xmm4
movq xmm0, qword [esp + 0x28]
mov dword [esi + 0x184], edx
movq qword [esi + 0x98], xmm0
mov eax, dword [ebx + 0x20]
cmp eax, 4
mov edx, 1
mov dword [esp + 0x18], ecx
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], edx
jl 0x521e6a
mov ecx, ebx
neg ecx
lea edx, [esp + ecx + 0x44]
lea ecx, [esp + ecx + 0x48]
lea eax, [ebx + 8]
mov dword [esp + 0x5c], edx
mov dword [esp + 0x38], ecx
mov edx, dword [esp + 0x10]
test dword [esp + 0xc], edx
je 0x521c2f
mov ecx, dword [edi + 0x20]
mov edx, dword [eax - 8]
mov dword [edi + ecx*4], edx
mov ecx, dword [edi + 0x20]
mov edx, dword [esp + 0x18]
fld dword [esp + edx*4 + 0x44]
movss xmm0, dword [esp + edx*4 + 0x44]
fstp dword [edi + ecx*4 + 0x10]
inc dword [edi + 0x20]
mov ecx, dword [eax - 8]
movss xmm2, dword [ecx + 0x14]
movss xmm3, dword [ecx + 0x18]
lea edx, [esp + edx*4 + 0x44]
movaps xmm1, xmm0
mulss xmm1, dword [ecx + 0x10]
add ecx, 0x10
mulss xmm2, xmm0
mulss xmm3, xmm0
movss xmm0, dword [esi + 0x90]
addss xmm0, xmm1
movss dword [esi + 0x90], xmm0
movss xmm0, dword [esi + 0x94]
addss xmm0, xmm2
movss dword [esi + 0x94], xmm0
movss xmm0, dword [esi + 0x98]
addss xmm0, xmm3
movss dword [esi + 0x98], xmm0
jmp 0x521c45
mov edx, dword [esi + 0x180]
mov ecx, dword [eax - 8]
mov dword [esi + edx*4 + 0x170], ecx
inc dword [esi + 0x180]
mov ecx, dword [esp + 0xc]
mov edx, dword [esp + 0x10]
rol ecx, 1
mov dword [esp + 0xc], ecx
test edx, ecx
je 0x521cde
mov ecx, dword [edi + 0x20]
mov edx, dword [eax - 4]
mov dword [edi + ecx*4], edx
mov ecx, dword [edi + 0x20]
mov edx, dword [esp + 0x18]
fld dword [esp + edx*4 + 0x48]
movss xmm0, dword [esp + edx*4 + 0x48]
fstp dword [edi + ecx*4 + 0x10]
inc dword [edi + 0x20]
mov ecx, dword [eax - 4]
movss xmm2, dword [ecx + 0x14]
movss xmm3, dword [ecx + 0x18]
lea edx, [esp + edx*4 + 0x48]
movaps xmm1, xmm0
mulss xmm1, dword [ecx + 0x10]
add ecx, 0x10
mulss xmm2, xmm0
mulss xmm3, xmm0
movss xmm0, dword [esi + 0x90]
addss xmm0, xmm1
movss dword [esi + 0x90], xmm0
movss xmm0, dword [esi + 0x94]
addss xmm0, xmm2
movss dword [esi + 0x94], xmm0
movss xmm0, dword [esi + 0x98]
addss xmm0, xmm3
movss dword [esi + 0x98], xmm0
jmp 0x521cf4
mov edx, dword [esi + 0x180]
mov ecx, dword [eax - 4]
mov dword [esi + edx*4 + 0x170], ecx
inc dword [esi + 0x180]
mov ecx, dword [esp + 0xc]
mov edx, dword [esp + 0x10]
rol ecx, 1
mov dword [esp + 0xc], ecx
test edx, ecx
je 0x521d81
mov ecx, dword [edi + 0x20]
mov edx, dword [eax]
mov dword [edi + ecx*4], edx
mov ecx, dword [edi + 0x20]
mov edx, dword [esp + 0x5c]
fld dword [edx + eax]
movss xmm0, dword [edx + eax]
fstp dword [edi + ecx*4 + 0x10]
inc dword [edi + 0x20]
mov ecx, dword [eax]
movss xmm2, dword [ecx + 0x14]
movss xmm3, dword [ecx + 0x18]
movaps xmm1, xmm0
mulss xmm1, dword [ecx + 0x10]
add ecx, 0x10
mulss xmm2, xmm0
mulss xmm3, xmm0
movss xmm0, dword [esi + 0x90]
addss xmm0, xmm1
movss dword [esi + 0x90], xmm0
movss xmm0, dword [esi + 0x94]
addss xmm0, xmm2
movss dword [esi + 0x94], xmm0
movss xmm0, dword [esi + 0x98]
addss xmm0, xmm3
movss dword [esi + 0x98], xmm0
jmp 0x521d96
mov edx, dword [esi + 0x180]
mov ecx, dword [eax]
mov dword [esi + edx*4 + 0x170], ecx
inc dword [esi + 0x180]
mov ecx, dword [esp + 0xc]
mov edx, dword [esp + 0x10]
rol ecx, 1
mov dword [esp + 0xc], ecx
test edx, ecx
je 0x521e25
mov ecx, dword [edi + 0x20]
mov edx, dword [eax + 4]
mov dword [edi + ecx*4], edx
mov ecx, dword [edi + 0x20]
mov edx, dword [esp + 0x38]
fld dword [edx + eax]
movss xmm0, dword [edx + eax]
fstp dword [edi + ecx*4 + 0x10]
inc dword [edi + 0x20]
mov ecx, dword [eax + 4]
movss xmm2, dword [ecx + 0x14]
movss xmm3, dword [ecx + 0x18]
movaps xmm1, xmm0
mulss xmm1, dword [ecx + 0x10]
add ecx, 0x10
mulss xmm2, xmm0
mulss xmm3, xmm0
movss xmm0, dword [esi + 0x90]
addss xmm0, xmm1
movss dword [esi + 0x90], xmm0
movss xmm0, dword [esi + 0x94]
addss xmm0, xmm2
movss dword [esi + 0x94], xmm0
movss xmm0, dword [esi + 0x98]
addss xmm0, xmm3
movss dword [esi + 0x98], xmm0
jmp 0x521e3b
mov edx, dword [esi + 0x180]
mov ecx, dword [eax + 4]
mov dword [esi + edx*4 + 0x170], ecx
inc dword [esi + 0x180]
mov ecx, dword [esp + 0xc]
mov edx, dword [esp + 0x14]
rol ecx, 1
mov dword [esp + 0xc], ecx
mov ecx, dword [esp + 0x18]
add ecx, 4
add edx, 0xfffffffd
add eax, 0x10
mov dword [esp + 0x18], ecx
cmp ecx, edx
jb 0x521b9e
mov edx, dword [esp + 0xc]
mov eax, dword [esp + 0x14]
cmp ecx, eax
jae 0x521f3e
lea eax, [esp + 0x44]
sub ebx, eax
mov dword [esp + 0x38], ebx
lea esp, [esp]
mov eax, dword [esp + 0x10]
test eax, edx
lea eax, [ebx + ecx*4]
je 0x521f12
mov edx, dword [edi + 0x20]
fld dword [esp + ecx*4 + 0x44]
mov ebx, dword [esp + eax + 0x44]
movss xmm0, dword [esp + ecx*4 + 0x44]
lea eax, [esp + eax + 0x44]
mov dword [edi + edx*4], ebx
mov edx, dword [edi + 0x20]
mov ebx, dword [esp + 0x38]
fstp dword [edi + edx*4 + 0x10]
inc dword [edi + 0x20]
mov eax, dword [eax]
movss xmm2, dword [eax + 0x14]
movss xmm3, dword [eax + 0x18]
movaps xmm1, xmm0
mulss xmm1, dword [eax + 0x10]
add eax, 0x10
mulss xmm2, xmm0
mulss xmm3, xmm0
movss xmm0, dword [esi + 0x90]
addss xmm0, xmm1
movss dword [esi + 0x90], xmm0
movss xmm0, dword [esi + 0x94]
addss xmm0, xmm2
movss dword [esi + 0x94], xmm0
movss xmm0, dword [esi + 0x98]
addss xmm0, xmm3
movss dword [esi + 0x98], xmm0
jmp 0x521f29
mov edx, dword [esi + 0x180]
mov eax, dword [esp + eax + 0x44]
mov dword [esi + edx*4 + 0x170], eax
inc dword [esi + 0x180]
mov edx, dword [esp + 0xc]
rol edx, 1
inc ecx
mov dword [esp + 0xc], edx
cmp ecx, dword [esp + 0x14]
jb 0x521e80
cmp dword [esp + 0x10], 0xf
jne 0x521f4f
mov dword [esi + 0x18c], 1
mov eax, dword [esp + 0x40]
inc eax
mov dword [esp + 0x40], eax
cmp eax, 0x80
jae 0x521f67
mov eax, dword [esi + 0x18c]
jmp 0x521f6c
mov eax, 2
mov dword [esi + 0x18c], eax
test eax, eax
je 0x521820
jmp 0x521fbb
mov dword [esi + 0x18c], 1
jmp 0x521fbb
xorps xmm4, xmm4
mov eax, dword [esi + 0x184]
lea ecx, [eax + eax*8]
dec dword [esi + ecx*4 + 0xc4]
mov edx, dword [esi + 0x180]
lea eax, [esi + ecx*4 + 0xa4]
mov ecx, dword [eax + 0x20]
mov eax, dword [eax + ecx*4]
mov dword [esi + edx*4 + 0x170], eax
inc dword [esi + 0x180]
mov eax, dword [esi + 0x184]
lea ecx, [eax + eax*8]
mov eax, dword [esi + 0x18c]
lea edx, [esi + ecx*4 + 0xa4]
mov ecx, eax
sub ecx, 0
mov dword [esi + 0x188], edx
je 0x521ff4
sub ecx, 1
jne 0x522035
movss dword [esi + 0xa0], xmm4
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
movss xmm2, dword [esi + 0x90]
movss xmm1, dword [esi + 0x94]
movss xmm0, dword [esi + 0x98]
movaps xmm3, xmm2
mulss xmm3, xmm2
movaps xmm2, xmm1
mulss xmm2, xmm1
movaps xmm1, xmm0
mulss xmm1, xmm0
addss xmm3, xmm2
addss xmm3, xmm1
sqrtss xmm0, xmm3
movss dword [esi + 0xa0], xmm0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8