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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0xe0
mov ebx, dword [ebp + 0x20]
mov ecx, dword [ebp + 0xc]
mov dword [esp + 0x14], ecx
and ecx, 0xf
mov edi, 0x10
sub edi, ecx
shr edi, 2
xor eax, eax
cmp edi, 4
mov dword [esp + 0x1c], 0
cmove edi, eax
mov eax, dword [ebp + 0x14]
mov edx, dword [ebp + 0x10]
mov ecx, dword [ebp + 8]
mov edx, dword [edx]
test edi, edi
je 0x10021bf9
movss xmm1, dword [ecx]
movss xmm2, dword [ecx + 4]
movd xmm0, edx
movq qword [esp + 0xd0], xmm0
fild qword [esp + 0xd0]
fnstcw word [esp + 0x2c]
movzx ecx, word [esp + 0x2c]
or ecx, 0x300
mov word [esp + 0x3a], cx
fldcw word [esp + 0x3a]
fadd dword [0x10036f20]
fldcw word [esp + 0x2c]
subss xmm2, xmm1
fstp dword [esp + 0x84]
movss xmm3, dword [esp + 0x84]
mulss xmm3, dword [0x10036f28]
pxor xmm0, xmm0
addss xmm3, xmm0
mulss xmm3, xmm2
addss xmm3, xmm1
mov ecx, dword [ebp + 0xc]
movss dword [ecx], xmm3
mov esi, eax
mov ebx, edx
mov edx, dword [ebp + 0x10]
mov dword [esp + 0x18], edi
mov edi, dword [edx]
add edi, eax
mov eax, dword [edx + 4]
mov ecx, dword [ebp + 0x18]
adc eax, ecx
add ebx, esi
mov dword [esp + 0xc], ebx
adc ecx, 0
mov ebx, dword [ebp + 8]
lea ecx, [ebx + ecx*4]
mov dword [esp + 4], ecx
mov ecx, dword [esp + 4]
mov dword [esp + 8], edi
mov dword [edx], edi
mov edi, dword [esp + 0x18]
mov dword [esp + 0x10], eax
mov dword [edx + 4], eax
cmp edi, 1
jne 0x10021c10
add dword [esp + 0x14], 4
jmp 0x10021d80
mov dword [esp + 4], ecx
mov ecx, dword [ebp + 0x10]
mov ecx, dword [ecx + 4]
mov dword [esp + 0x10], ecx
mov dword [esp + 8], edx
jmp 0x10021d8a
movss xmm1, dword [ecx]
movss xmm2, dword [ecx + 4]
mov ebx, dword [esp + 0xc]
movd xmm3, ebx
movq qword [esp + 0xc8], xmm3
fild qword [esp + 0xc8]
fnstcw word [esp + 0x2a]
movzx ecx, word [esp + 0x2a]
or ecx, 0x300
mov word [esp + 0x38], cx
fldcw word [esp + 0x38]
fadd dword [0x10036f20]
fldcw word [esp + 0x2a]
subss xmm2, xmm1
fstp dword [esp + 0x80]
movss xmm3, dword [esp + 0x80]
mulss xmm3, dword [0x10036f28]
addss xmm3, xmm0
mulss xmm3, xmm2
addss xmm3, xmm1
mov eax, dword [ebp + 0xc]
movss dword [eax + 4], xmm3
mov edi, dword [edx]
mov esi, dword [ebp + 0x14]
add edi, esi
mov eax, dword [edx + 4]
mov ecx, dword [ebp + 0x18]
adc eax, ecx
add ebx, esi
mov dword [esp + 0xc], ebx
adc ecx, 0
mov ebx, dword [esp + 4]
lea ebx, [ebx + ecx*4]
mov dword [esp + 4], ebx
mov ecx, dword [esp + 4]
mov dword [esp + 8], edi
mov dword [edx], edi
mov edi, dword [esp + 0x18]
mov dword [esp + 0x10], eax
mov dword [edx + 4], eax
cmp edi, 2
jne 0x10021cca
add dword [esp + 0x14], 8
jmp 0x10021d80
movss xmm1, dword [ecx]
movss xmm2, dword [ecx + 4]
mov ebx, dword [esp + 0xc]
movd xmm0, ebx
movq qword [esp + 0xc0], xmm0
fild qword [esp + 0xc0]
fnstcw word [esp + 0x28]
movzx ecx, word [esp + 0x28]
or ecx, 0x300
mov word [esp + 0x36], cx
fldcw word [esp + 0x36]
fadd dword [0x10036f20]
fldcw word [esp + 0x28]
subss xmm2, xmm1
fstp dword [esp + 0x7c]
movss xmm3, dword [esp + 0x7c]
mulss xmm3, dword [0x10036f28]
pxor xmm0, xmm0
addss xmm3, xmm0
mulss xmm3, xmm2
addss xmm3, xmm1
mov eax, dword [ebp + 0xc]
movss dword [eax + 8], xmm3
mov edi, dword [edx]
add edi, esi
mov eax, dword [edx + 4]
mov ecx, dword [ebp + 0x18]
adc eax, ecx
add ebx, esi
mov dword [esp + 0xc], ebx
adc ecx, 0
mov ebx, dword [esp + 4]
lea ebx, [ebx + ecx*4]
mov dword [esp + 4], ebx
mov ebx, dword [esp + 4]
mov dword [esp + 8], edi
mov dword [edx], edi
mov edi, dword [esp + 0x18]
mov dword [edx + 4], eax
cmp edi, 3
jne 0x1002210f
mov ecx, eax
mov dword [esp + 0x10], eax
add dword [esp + 0x14], 0xc
mov ebx, dword [ebp + 0x20]
mov eax, dword [ebp + 0x14]
mov edx, dword [esp + 0xc]
mov dword [esp + 0xc], edx
mov ecx, dword [ebp + 0x1c]
sub ecx, edi
mov edi, ecx
sbb ebx, 0
and ecx, 3
mov dword [esp + 0x44], ecx
and edi, 0xfffffffc
mov ecx, edi
or ecx, ebx
je 0x10021f6d
mov edx, dword [ebp + 0x18]
mov ecx, edx
mov esi, edx
shld ecx, eax, 2
mov dword [esp + 0x58], ecx
mov ecx, 3
mov dword [esp + 0x40], edi
mov edi, eax
mul ecx
mov dword [esp + 8], eax
lea ecx, [esi + esi*2]
add ecx, edx
mov edx, dword [esp + 0xc]
mov eax, edx
add eax, dword [esp + 8]
mov dword [esp + 0x54], eax
mov esi, dword [esp + 0x1c]
adc ecx, esi
mov dword [esp + 0x10], ecx
mov eax, dword [ebp + 0x18]
shld eax, edi, 1
mov dword [esp + 0x3c], ebx
lea ebx, [edi + edi]
mov ecx, edx
add ecx, ebx
mov dword [esp + 0x50], ecx
adc eax, esi
mov dword [esp + 0x18], eax
mov ecx, edx
add ecx, edi
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x1c], esi
mov ecx, esi
adc ecx, dword [ebp + 0x18]
add edx, 0x80000000
movd xmm2, edx
movd xmm3, dword [esp + 8]
movd xmm4, ebx
movd xmm0, edi
mov ebx, edi
pshufd xmm1, xmm0, 0
pslld xmm1, 2
mov eax, dword [esp + 4]
mov edx, dword [esp + 0x10]
lea edi, [eax + edx*4]
mov edx, dword [esp + 0x18]
lea esi, [eax + edx*4]
mov dword [esp + 4], eax
lea eax, [eax + ecx*4]
pshufd xmm2, xmm2, 0
punpckldq xmm4, xmm3
shufps xmm0, xmm4, 0x41
paddd xmm0, xmm2
movaps xmm2, xmmword [0x10036f30]
movaps xmm3, xmmword [0x10036f40]
lea ecx, [ebx*4]
mov dword [esp + 0x48], ecx
mov edx, 4
nop word cs:[eax + eax]
mov dword [esp + 0x5c], edx
mov dword [esp + 8], eax
mov ebx, dword [esp + 4]
movsd xmm4, qword [ebx]
movhps xmm4, qword [eax]
mov dword [esp + 0x18], esi
movsd xmm5, qword [esi]
mov dword [esp + 0x10], edi
movhps xmm5, qword [edi]
movaps xmm6, xmm4
shufps xmm6, xmm5, 0x88
shufps xmm4, xmm5, 0xdd
subps xmm4, xmm6
cvtdq2ps xmm5, xmm0
mulps xmm5, xmm2
addps xmm5, xmm3
mulps xmm5, xmm4
addps xmm5, xmm6
mov edx, dword [esp + 0x14]
movaps xmmword [edx], xmm5
mov eax, dword [esp + 0x48]
add dword [esp + 0xc], eax
mov edi, dword [esp + 0x58]
mov ecx, dword [esp + 0x1c]
adc ecx, edi
add dword [esp + 0x4c], eax
mov esi, edi
adc esi, 0
add dword [esp + 0x50], eax
mov edx, edi
adc edx, 0
add dword [esp + 0x54], eax
lea ebx, [ebx + ecx*4]
mov eax, dword [esp + 8]
mov dword [esp + 4], ebx
adc edi, 0
lea eax, [eax + esi*4]
mov esi, dword [esp + 0x18]
lea esi, [esi + edx*4]
mov dword [esp + 0x1c], 0
add dword [esp + 0x14], 0x10
mov ebx, dword [esp + 0x5c]
cmp ebx, dword [esp + 0x40]
mov edx, 0
sbb edx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x10]
lea edi, [ecx + edi*4]
paddd xmm0, xmm1
lea edx, [ebx + 4]
jb 0x10021e90
mov dword [esp + 0x1c], 0
mov ecx, dword [ebp + 0x10]
mov eax, dword [ecx]
mov dword [esp + 8], eax
mov eax, dword [ecx + 4]
mov dword [esp + 0x10], eax
mov esi, dword [ebp + 0x18]
mov ebx, dword [esp + 0x3c]
mov edi, dword [esp + 0x40]
jmp 0x10021f73
mov esi, dword [ebp + 0x18]
mov ecx, dword [ebp + 0x10]
mov eax, edi
mul dword [ebp + 0x14]
imul edi, esi
add edi, edx
mov edx, dword [ebp + 0x14]
imul ebx, edx
add ebx, edi
add eax, dword [esp + 8]
adc ebx, dword [esp + 0x10]
mov dword [ecx], eax
mov dword [ecx + 4], ebx
mov edi, dword [esp + 0x44]
test edi, edi
mov esi, dword [esp + 0xc]
mov edx, dword [esp + 0x1c]
mov ebx, dword [esp + 4]
je 0x10022107
movss xmm0, dword [ebx]
movss xmm1, dword [ebx + 4]
movd xmm2, esi
movd xmm3, edx
punpckldq xmm2, xmm3
movq qword [esp + 0x98], xmm2
fild qword [esp + 0x98]
fnstcw word [esp + 0x20]
movzx eax, word [esp + 0x20]
or eax, 0x300
mov word [esp + 0x2e], ax
mov eax, edx
shr eax, 0x1f
fldcw word [esp + 0x2e]
fadd dword [eax*4 + 0x10036f20]
mov eax, ecx
subss xmm1, xmm0
fldcw word [esp + 0x20]
fstp dword [esp + 0x68]
movss xmm3, dword [esp + 0x68]
mulss xmm3, dword [0x10036f28]
pxor xmm2, xmm2
addss xmm3, xmm2
mulss xmm3, xmm1
addss xmm3, xmm0
mov ecx, dword [esp + 0x14]
movss dword [ecx], xmm3
mov ecx, dword [ebp + 0x14]
add dword [eax], ecx
mov ecx, dword [ebp + 0x18]
adc dword [eax + 4], ecx
cmp edi, 1
je 0x10022107
mov ecx, dword [ebp + 0x14]
add esi, ecx
mov ecx, dword [ebp + 0x18]
adc edx, ecx
mov dword [esp + 0xc], esi
movd xmm0, esi
movss xmm1, dword [ebx + edx*4]
movss xmm3, dword [ebx + edx*4 + 4]
movq qword [esp + 0x90], xmm0
fild qword [esp + 0x90]
fstp dword [esp + 0x64]
movss xmm0, dword [esp + 0x64]
mulss xmm0, dword [0x10036f28]
subss xmm3, xmm1
addss xmm0, xmm2
mulss xmm0, xmm3
addss xmm0, xmm1
mov esi, dword [esp + 0x14]
movss dword [esi + 4], xmm0
mov esi, ecx
mov ecx, dword [ebp + 0x14]
add dword [eax], ecx
adc dword [eax + 4], esi
cmp edi, 2
je 0x10022107
lea eax, [ebx + edx*4]
mov edx, dword [ebp + 0x14]
mov edi, dword [esp + 0xc]
add edi, edx
mov ecx, esi
adc ecx, 0
movss xmm0, dword [eax + ecx*4]
movss xmm1, dword [eax + ecx*4 + 4]
movd xmm2, edi
subss xmm1, xmm0
movq qword [esp + 0x88], xmm2
fild qword [esp + 0x88]
fstp dword [esp + 0x60]
movss xmm2, dword [esp + 0x60]
mulss xmm2, dword [0x10036f28]
xorps xmm3, xmm3
addss xmm3, xmm2
mulss xmm3, xmm1
addss xmm3, xmm0
mov eax, dword [esp + 0x14]
movss dword [eax + 8], xmm3
mov eax, dword [ebp + 0x10]
add dword [eax], edx
adc dword [eax + 4], esi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
movss xmm2, dword [ebx]
movss xmm3, dword [ebx + 4]
mov eax, dword [esp + 0xc]
movd xmm1, eax
movq qword [esp + 0xb8], xmm1
fild qword [esp + 0xb8]
fnstcw word [esp + 0x26]
movzx ecx, word [esp + 0x26]
or ecx, 0x300
mov word [esp + 0x34], cx
fldcw word [esp + 0x34]
fadd dword [0x10036f20]
fldcw word [esp + 0x26]
subss xmm3, xmm2
fstp dword [esp + 0x74]
movss xmm1, dword [0x10036f28]
movss xmm4, dword [esp + 0x74]
mulss xmm4, xmm1
addss xmm4, xmm0
mulss xmm4, xmm3
addss xmm4, xmm2
mov esi, dword [ebp + 0xc]
movss dword [esi + 0xc], xmm4
mov edi, dword [ebp + 0x10]
mov edx, dword [ebp + 0x14]
add dword [edi], edx
mov ecx, dword [ebp + 0x18]
adc dword [edi + 4], ecx
add eax, edx
mov edi, eax
mov edx, ecx
adc edx, 0
movd xmm2, eax
lea eax, [ebx + edx*4]
mov dword [esp + 8], eax
movss xmm3, dword [ebx + edx*4]
movss xmm4, dword [ebx + edx*4 + 4]
subss xmm4, xmm3
movq qword [esp + 0xb0], xmm2
fild qword [esp + 0xb0]
fstp dword [esp + 0x78]
mulss xmm1, dword [esp + 0x78]
addss xmm1, xmm0
mulss xmm1, xmm4
addss xmm1, xmm3
movss dword [esi + 0x10], xmm1
mov esi, edi
mov edx, dword [ebp + 0x10]
mov edi, dword [edx]
mov eax, dword [ebp + 0x14]
add edi, eax
mov ebx, dword [edx + 4]
adc ebx, ecx
add esi, eax
adc ecx, 0
mov eax, dword [esp + 8]
lea ecx, [eax + ecx*4]
mov eax, edi
mov edi, dword [esp + 0x18]
mov dword [edx], eax
mov dword [esp + 0x10], ebx
mov dword [edx + 4], ebx
cmp edi, 5
mov dword [esp + 4], ecx
jne 0x10022224
mov dword [esp + 8], eax
add dword [esp + 0x14], 0x14
mov eax, dword [ebp + 0x14]
mov edx, esi
jmp 0x10022385
movss xmm1, dword [ecx]
movss xmm2, dword [ecx + 4]
movd xmm0, esi
movq qword [esp + 0xa8], xmm0
fild qword [esp + 0xa8]
fnstcw word [esp + 0x24]
movzx ecx, word [esp + 0x24]
or ecx, 0x300
mov word [esp + 0x32], cx
fldcw word [esp + 0x32]
fadd dword [0x10036f20]
fldcw word [esp + 0x24]
subss xmm2, xmm1
fstp dword [esp + 0x70]
movss xmm3, dword [esp + 0x70]
mulss xmm3, dword [0x10036f28]
pxor xmm0, xmm0
addss xmm3, xmm0
mulss xmm3, xmm2
addss xmm3, xmm1
mov eax, dword [ebp + 0xc]
movss dword [eax + 0x14], xmm3
mov eax, dword [ebp + 0x10]
mov edi, dword [eax]
mov edx, dword [ebp + 0x14]
add edi, edx
mov ebx, dword [eax + 4]
mov ecx, dword [ebp + 0x18]
adc ebx, ecx
add esi, edx
adc ecx, 0
mov edx, dword [esp + 4]
lea edx, [edx + ecx*4]
mov ecx, ebx
mov dword [esp + 4], edx
mov ebx, dword [esp + 4]
mov dword [esp + 8], edi
mov dword [eax], edi
mov edi, dword [esp + 0x18]
mov dword [eax + 4], ecx
cmp edi, 6
mov eax, dword [ebp + 0x14]
mov edx, esi
jne 0x100222de
mov dword [esp + 0x10], ecx
add dword [esp + 0x14], 0x18
jmp 0x10022385
movss xmm1, dword [ebx]
movss xmm2, dword [ebx + 4]
movd xmm3, edx
movq qword [esp + 0xa0], xmm3
fild qword [esp + 0xa0]
fnstcw word [esp + 0x22]
mov esi, ebx
movzx ecx, word [esp + 0x22]
or ecx, 0x300
mov word [esp + 0x30], cx
fldcw word [esp + 0x30]
fadd dword [0x10036f20]
fldcw word [esp + 0x22]
subss xmm2, xmm1
fstp dword [esp + 0x6c]
movss xmm3, dword [esp + 0x6c]
mulss xmm3, dword [0x10036f28]
addss xmm3, xmm0
mulss xmm3, xmm2
addss xmm3, xmm1
mov eax, dword [ebp + 0xc]
movss dword [eax + 0x18], xmm3
add eax, 0x1c
mov dword [esp + 0x14], eax
mov ebx, edx
mov edx, dword [ebp + 0x10]
mov edi, dword [edx]
add edi, dword [ebp + 0x14]
mov eax, dword [edx + 4]
mov ecx, dword [ebp + 0x18]
adc eax, ecx
add ebx, dword [ebp + 0x14]
adc ecx, 0
lea esi, [esi + ecx*4]
mov dword [esp + 4], esi
mov dword [esp + 8], edi
mov dword [edx], edi
mov edi, dword [esp + 0x18]
mov dword [esp + 0x10], eax
mov dword [edx + 4], eax
mov edx, ebx
mov eax, dword [ebp + 0x14]
mov ebx, dword [ebp + 0x20]
jmp 0x10021d8a