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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0xf8
mov eax, dword [ebp + 0x10]
movsd xmm6, qword [ebp + 0x20]
push esi
mov esi, dword [ebp + 0xc]
mov edx, dword [eax + 4]
push edi
mov edi, dword [eax]
mov eax, dword [ebp + 8]
add eax, 0xfffffff9
mov dword [esp + 8], 0
lea ecx, [edx*8]
mov dword [esp + 0x10], edi
cmp ecx, 0x7d00
mov dword [esp + 0x18], edx
mov ecx, dword [esp + 8]
cmovbe ecx, eax
mov dword [esp + 0x1c], 0
mov eax, dword [ebp + 8]
add eax, 0xfffffffd
mov dword [esp + 8], ecx
mov dword [esp + 0x70], eax
mov eax, dword [ebp + 8]
dec eax
mov dword [esp + 0x74], eax
test ecx, ecx
jle 0x10037e31
mov esi, dword [ebp + 0x18]
lea eax, [edx*8]
mov dword [esp + 0x64], eax
xorps xmm0, xmm0
lea eax, [edx + edx*2]
mov ecx, dword [ebp + 0x1c]
mov dword [esp + 0x2c], eax
lea eax, [edx + edx*4]
mov dword [esp + 0x84], eax
lea eax, [edx*8]
sub eax, edx
shl ecx, 6
mov dword [esp + 0x44], eax
mov eax, edx
shl eax, 6
mov dword [esp + 0x8c], eax
mov eax, dword [ebp + 0x18]
mov dword [esp + 0x40], eax
mov eax, dword [ebp + 0x1c]
shl eax, 3
sub eax, dword [ebp + 0x1c]
mov dword [esp + 0x88], 0
mov dword [esp + 0x7c], ecx
lea eax, [esi + eax*8]
mov dword [esp + 0x14], eax
mov eax, dword [ebp + 0x1c]
lea eax, [eax + eax*2]
shl eax, 4
add eax, esi
mov dword [esp + 0x20], eax
mov eax, dword [ebp + 0x1c]
lea eax, [eax + eax*4]
lea eax, [esi + eax*8]
mov dword [esp + 0x24], eax
mov eax, dword [ebp + 0x1c]
shl eax, 5
mov dword [esp + 0x78], eax
add eax, esi
mov dword [esp + 0x28], eax
mov eax, dword [ebp + 0x1c]
lea eax, [eax + eax*2]
lea eax, [esi + eax*8]
mov dword [esp + 0x5c], eax
mov eax, dword [ebp + 0x1c]
shl eax, 4
add eax, esi
mov dword [esp + 0x58], eax
mov eax, dword [ebp + 0x1c]
lea eax, [esi + eax*8]
mov dword [esp + 0x60], eax
lea eax, [edi + edx*8]
mov dword [esp + 0xa0], eax
mov eax, edx
shl eax, 4
add eax, edi
mov dword [esp + 0x94], eax
lea eax, [edx + edx*2]
lea eax, [edi + eax*8]
mov dword [esp + 0x98], eax
mov eax, edx
shl eax, 5
add eax, edi
mov dword [esp + 0x9c], eax
lea eax, [edx + edx*4]
lea eax, [edi + eax*8]
mov dword [esp + 0xa4], eax
lea eax, [edx + edx*2]
shl eax, 4
add eax, edi
mov dword [esp + 0xac], eax
lea eax, [edx*8]
sub eax, edx
lea eax, [edi + eax*8]
mov dword [esp + 0xa8], eax
mov eax, dword [esp + 8]
dec eax
shr eax, 3
inc eax
mov dword [esp + 0x3c], eax
shl eax, 3
mov dword [esp + 0x1c], eax
mov esi, dword [ebp + 0xc]
mov eax, dword [esp + 0x8c]
mov dword [esp + 8], edx
mov dword [esp + 0x80], edi
nop
xor edx, edx
movaps xmmword [esp + 0xb0], xmm0
movaps xmmword [esp + 0xc0], xmm0
xorps xmm1, xmm1
movaps xmmword [esp + 0xd0], xmm1
xorps xmm2, xmm2
mov dword [esp + 0xc], edx
xorps xmm3, xmm3
xorps xmm4, xmm4
xorps xmm5, xmm5
xorps xmm7, xmm7
cmp esi, 2
jl 0x10037a98
mov eax, dword [ebp + 0x14]
mov dword [esp + 0x54], 2
mov ecx, dword [eax]
mov edi, ecx
mov eax, dword [esp + 0xa8]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0xac]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0xa4]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x9c]
mov dword [esp + 0x90], eax
mov eax, dword [esp + 0x98]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x94]
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0xa0]
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0x80]
nop
movups xmm1, xmmword [edi]
mov ecx, dword [esp + 0x6c]
movups xmm0, xmmword [eax]
mov esi, dword [esp + 0x34]
add eax, 0x10
mov edx, dword [esp + 0x90]
mulpd xmm0, xmm1
add dword [esp + 0x54], 2
add dword [esp + 0x34], 0x10
add dword [esp + 0x90], 0x10
addpd xmm2, xmm0
movups xmm0, xmmword [ecx]
add ecx, 0x10
mov dword [esp + 0x6c], ecx
mulpd xmm0, xmm1
mov ecx, dword [esp + 0x7c]
addpd xmm3, xmm0
movups xmm0, xmmword [esi]
mov esi, dword [esp + 0x38]
mulpd xmm0, xmm1
addpd xmm4, xmm0
movups xmm0, xmmword [esi]
add esi, 0x10
mov dword [esp + 0x38], esi
mulpd xmm0, xmm1
mov esi, dword [ebp + 0xc]
addpd xmm5, xmm0
movups xmm0, xmmword [edx]
mov edx, dword [esp + 0x48]
add dword [esp + 0x48], 0x10
mulpd xmm0, xmm1
addpd xmm7, xmm0
movups xmm0, xmmword [edx]
mov edx, dword [esp + 0x4c]
add dword [esp + 0x4c], 0x10
mulpd xmm0, xmm1
addpd xmm0, xmmword [esp + 0xd0]
movaps xmmword [esp + 0xd0], xmm0
movups xmm0, xmmword [edx]
mov edx, dword [esp + 0x50]
add dword [esp + 0x50], 0x10
mulpd xmm0, xmm1
movups xmm1, xmmword [edi]
add edi, 0x10
addpd xmm0, xmmword [esp + 0xb0]
movaps xmmword [esp + 0xb0], xmm0
movups xmm0, xmmword [edx]
mov edx, dword [esp + 0xc]
add edx, 2
mulpd xmm0, xmm1
mov dword [esp + 0xc], edx
addpd xmm0, xmmword [esp + 0xc0]
movaps xmmword [esp + 0xc0], xmm0
cmp dword [esp + 0x54], esi
jle 0x10037990
movaps xmm1, xmmword [esp + 0xd0]
mov edi, dword [esp + 0x10]
mov eax, dword [esp + 0x8c]
movaps xmm0, xmm2
unpckhpd xmm0, xmm2
addsd xmm2, xmm0
movaps xmm0, xmm3
unpckhpd xmm0, xmm3
addsd xmm3, xmm0
movaps xmm0, xmm4
unpckhpd xmm0, xmm4
addsd xmm4, xmm0
movaps xmm0, xmm5
unpckhpd xmm0, xmm5
addsd xmm5, xmm0
movaps xmm0, xmm7
unpckhpd xmm0, xmm7
addsd xmm7, xmm0
movaps xmm0, xmm1
unpckhpd xmm0, xmm1
movaps xmmword [esp + 0xd0], xmm4
addsd xmm1, xmm0
movaps xmm4, xmmword [esp + 0xb0]
movaps xmm0, xmmword [esp + 0xb0]
unpckhpd xmm0, xmm4
addsd xmm4, xmm0
movaps xmmword [esp + 0xb0], xmm4
movaps xmm4, xmmword [esp + 0xc0]
movaps xmm0, xmm4
unpckhpd xmm0, xmm4
addsd xmm4, xmm0
movaps xmmword [esp + 0xc0], xmm4
movaps xmm4, xmmword [esp + 0xd0]
cmp edx, esi
jge 0x10037d17
mov eax, dword [ebp + 0x14]
movaps xmm0, xmm3
mov esi, dword [esp + 0x10]
movaps xmm3, xmm2
unpcklpd xmm3, xmm0
movaps xmm0, xmm5
unpcklpd xmm4, xmm0
movaps xmm5, xmm7
mov eax, dword [eax]
movaps xmm0, xmm1
movsd xmm7, qword [esp + 0xb0]
unpcklpd xmm5, xmm0
movsd xmm0, qword [esp + 0xc0]
lea ecx, [eax + edx*8]
unpcklpd xmm7, xmm0
mov eax, dword [esp + 0x18]
add eax, dword [esp + 0x84]
add eax, edx
lea edx, [edi + eax*8]
mov eax, dword [esp + 0x44]
add eax, dword [esp + 0xc]
mov dword [esp + 0x30], edx
lea edi, [edi + eax*8]
mov eax, dword [esp + 0x18]
add eax, dword [esp + 0x2c]
add eax, dword [esp + 0xc]
lea eax, [esi + eax*8]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0xc]
add eax, dword [esp + 0x84]
lea eax, [esi + eax*8]
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x18]
add eax, dword [esp + 8]
add eax, dword [esp + 0xc]
lea eax, [esi + eax*8]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0xc]
add eax, dword [esp + 0x2c]
lea eax, [esi + eax*8]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0xc]
add eax, dword [esp + 0x88]
lea eax, [esi + eax*8]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0xc]
add eax, dword [esp + 8]
lea eax, [esi + eax*8]
mov esi, dword [ebp + 0xc]
mov dword [esp + 0x34], esi
mov esi, dword [esp + 0xc]
sub dword [esp + 0x34], esi
mov esi, dword [esp + 0x68]
mov dword [esp + 0x54], eax
jmp 0x10037c14
mov eax, dword [esp + 0x54]
movsd xmm0, qword [eax]
mov eax, dword [esp + 0x50]
movsd xmm2, qword [ecx]
add ecx, 8
unpcklpd xmm2, xmm2
add dword [esp + 0x54], 8
movsd xmm1, qword [eax]
mov eax, dword [esp + 0x4c]
unpcklpd xmm1, xmm0
mulpd xmm1, xmm2
add dword [esp + 0x50], 8
add dword [esp + 0x4c], 8
movsd xmm0, qword [eax]
mov eax, dword [esp + 0x48]
addpd xmm3, xmm1
add dword [esp + 0x48], 8
movsd xmm1, qword [eax]
mov eax, dword [esp + 0x38]
unpcklpd xmm1, xmm0
movsd xmm0, qword [esi]
add esi, 8
mulpd xmm1, xmm2
addpd xmm4, xmm1
movsd xmm1, qword [eax]
add eax, 8
unpcklpd xmm1, xmm0
movsd xmm0, qword [edi]
add edi, 8
mulpd xmm1, xmm2
mov dword [esp + 0x38], eax
addpd xmm5, xmm1
movsd xmm1, qword [edx]
add edx, 8
sub dword [esp + 0x34], 1
unpcklpd xmm1, xmm0
mulpd xmm1, xmm2
addpd xmm7, xmm1
jne 0x10037c10
mov esi, dword [ebp + 0xc]
movaps xmm0, xmm7
mov edi, dword [esp + 0x10]
movaps xmm2, xmm3
mov ecx, dword [esp + 0x7c]
mov eax, dword [esp + 0x8c]
movsd qword [esp + 0xd0], xmm4
movsd qword [esp + 0xf0], xmm5
unpckhpd xmm4, xmm4
unpckhpd xmm5, xmm5
unpckhpd xmm7, xmm7
movaps xmm1, xmm5
movsd qword [esp + 0xe0], xmm4
movaps xmm4, xmmword [esp + 0xd0]
movaps xmm5, xmmword [esp + 0xe0]
movsd qword [esp + 0xc0], xmm7
movaps xmm7, xmmword [esp + 0xf0]
unpckhpd xmm3, xmm3
jmp 0x10037d1f
movaps xmm0, xmmword [esp + 0xb0]
mov edx, dword [esp + 0x40]
mulsd xmm2, xmm6
add dword [esp + 0xa8], eax
mulsd xmm3, xmm6
add dword [esp + 0xac], eax
mulsd xmm4, xmm6
add dword [esp + 0xa4], eax
addsd xmm2, qword [edx]
mulsd xmm5, xmm6
add dword [esp + 0x9c], eax
mulsd xmm7, xmm6
add dword [esp + 0x98], eax
movsd qword [edx], xmm2
mov edx, dword [esp + 0x60]
mulsd xmm1, xmm6
add dword [esp + 0x94], eax
mulsd xmm0, xmm6
add dword [esp + 0xa0], eax
addsd xmm3, qword [edx]
add dword [esp + 0x80], eax
add dword [esp + 0x40], ecx
add dword [esp + 0x60], ecx
movsd qword [edx], xmm3
mov edx, dword [esp + 0x58]
add dword [esp + 0x58], ecx
addsd xmm4, qword [edx]
movsd qword [edx], xmm4
mov edx, dword [esp + 0x5c]
add dword [esp + 0x5c], ecx
addsd xmm5, qword [edx]
movsd qword [edx], xmm5
mov edx, dword [esp + 0x28]
add dword [esp + 0x28], ecx
addsd xmm7, qword [edx]
movsd qword [edx], xmm7
mov edx, dword [esp + 0x24]
add dword [esp + 0x24], ecx
addsd xmm1, qword [edx]
movsd qword [edx], xmm1
mov edx, dword [esp + 0x20]
add dword [esp + 0x20], ecx
addsd xmm0, qword [edx]
movsd qword [edx], xmm0
movaps xmm0, xmmword [esp + 0xc0]
mov edx, dword [esp + 0x14]
add dword [esp + 0x14], ecx
mulsd xmm0, xmm6
addsd xmm0, qword [edx]
movsd qword [edx], xmm0
xorps xmm0, xmm0
mov edx, dword [esp + 0x64]
add dword [esp + 0x88], edx
add dword [esp + 0x44], edx
add dword [esp + 0x84], edx
add dword [esp + 0x2c], edx
add dword [esp + 8], edx
sub dword [esp + 0x3c], 1
jne 0x100378f0
mov edx, dword [esp + 0x18]
jmp 0x10037e3b
mov eax, dword [ebp + 0x1c]
shl eax, 5
mov dword [esp + 0x78], eax
mov ecx, dword [esp + 0x1c]
cmp ecx, dword [esp + 0x70]
jge 0x10038119
mov eax, edx
mov edi, dword [ebp + 0x18]
imul eax, ecx
mov dword [esp + 0xc], eax
lea eax, [edx*4]
lea edx, [ecx + 2]
mov dword [esp + 0x7c], eax
mov eax, dword [esp + 0x18]
mov ecx, edx
imul ecx, eax
imul edx, dword [ebp + 0x1c]
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x1c]
add ecx, 3
mov esi, ecx
imul ecx, dword [ebp + 0x1c]
imul esi, eax
shl eax, 5
mov dword [esp + 0x80], eax
mov dword [esp + 8], esi
mov esi, dword [esp + 0x1c]
mov eax, esi
imul eax, dword [ebp + 0x1c]
lea eax, [edi + eax*8]
mov edi, dword [esp + 0x10]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0xc]
lea eax, [edi + eax*8]
mov dword [esp + 0x60], eax
mov eax, dword [ebp + 0x18]
lea eax, [eax + ecx*8]
mov dword [esp + 0x6c], eax
lea ecx, [esi*8 + 8]
mov eax, dword [ebp + 0x18]
lea eax, [eax + edx*8]
mov edx, dword [esp + 0x70]
mov dword [esp + 0x44], eax
sub edx, esi
mov eax, ecx
dec edx
imul ecx, dword [esp + 0x18]
imul eax, dword [ebp + 0x1c]
shr edx, 2
add ecx, edi
add eax, dword [ebp + 0x18]
inc edx
mov dword [esp + 0x58], ecx
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x40], eax
lea esi, [esi + edx*4]
mov dword [esp + 0x70], edx
mov dword [esp + 0x1c], esi
mov esi, dword [ebp + 0xc]
lea ecx, [edi + ecx*8]
mov dword [esp + 0x5c], ecx
mov ecx, dword [esp + 8]
lea ecx, [edi + ecx*8]
mov dword [esp + 0x28], ecx
jmp 0x10037f1a
mov edi, dword [esp + 0x10]
xor ecx, ecx
xorps xmm2, xmm2
xorps xmm3, xmm3
xorps xmm4, xmm4
xorps xmm5, xmm5
cmp esi, 2
jl 0x10037fba
mov edi, dword [esp + 0x28]
lea eax, [ecx + 2]
mov edx, dword [ebp + 0x14]
mov dword [esp + 0x24], edi
mov edi, dword [esp + 0x5c]
mov dword [esp + 0x20], edi
mov edi, dword [esp + 0x58]
mov edx, dword [edx]
mov dword [esp + 0x14], edi
mov edi, dword [esp + 0x60]
movups xmm1, xmmword [edx]
mov esi, dword [esp + 0x14]
add eax, 2
movups xmm0, xmmword [edi]
add dword [esp + 0x14], 0x10
add ecx, 2
add edx, 0x10
add edi, 0x10
mulpd xmm0, xmm1
addpd xmm2, xmm0
movups xmm0, xmmword [esi]
mov esi, dword [esp + 0x20]
add dword [esp + 0x20], 0x10
mulpd xmm0, xmm1
addpd xmm3, xmm0
movups xmm0, xmmword [esi]
mov esi, dword [esp + 0x24]
add dword [esp + 0x24], 0x10
mulpd xmm0, xmm1
addpd xmm4, xmm0
movups xmm0, xmmword [esi]
mov esi, dword [ebp + 0xc]
mulpd xmm0, xmm1
addpd xmm5, xmm0
cmp eax, esi
jle 0x10037f55
mov edi, dword [esp + 0x10]
mov eax, dword [esp + 0x40]
movaps xmm0, xmm2
unpckhpd xmm0, xmm2
addsd xmm2, xmm0
movaps xmm0, xmm3
unpckhpd xmm0, xmm3
addsd xmm3, xmm0
movaps xmm0, xmm4
unpckhpd xmm0, xmm4
addsd xmm4, xmm0
movaps xmm0, xmm5
unpckhpd xmm0, xmm5
addsd xmm5, xmm0
cmp ecx, esi
jge 0x1003808d
mov eax, dword [ebp + 0x14]
mov esi, dword [esp + 0x10]
mov eax, dword [eax]
lea edx, [eax + ecx*8]
mov eax, dword [esp + 8]
add eax, ecx
lea edi, [edi + eax*8]
mov eax, dword [esp + 0x2c]
add eax, ecx
lea eax, [esi + eax*8]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0xc]
add eax, dword [esp + 0x18]
add eax, ecx
lea eax, [esi + eax*8]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0xc]
add eax, ecx
lea eax, [esi + eax*8]
mov esi, dword [ebp + 0xc]
sub esi, ecx
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x64]
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x3c], esi
mov esi, dword [esp + 0x68]
movsd xmm1, qword [edx]
add edx, 8
movaps xmm0, xmm1
mulsd xmm0, qword [esi]
add esi, 8
addsd xmm2, xmm0
movaps xmm0, xmm1
mulsd xmm0, qword [ecx]
add ecx, 8
addsd xmm3, xmm0
movaps xmm0, xmm1
mulsd xmm0, qword [eax]
add eax, 8
mulsd xmm1, qword [edi]
add edi, 8
sub dword [esp + 0x3c], 1
addsd xmm4, xmm0
addsd xmm5, xmm1
jne 0x10038043
mov esi, dword [ebp + 0xc]
mov eax, dword [esp + 0x40]
mov edx, dword [esp + 0x38]
mov ecx, dword [esp + 0x44]
mov edi, dword [esp + 0x6c]
mulsd xmm2, xmm6
mulsd xmm3, xmm6
mulsd xmm4, xmm6
addsd xmm2, qword [edx]
mulsd xmm5, xmm6
movsd qword [edx], xmm2
addsd xmm3, qword [eax]
movsd qword [eax], xmm3
addsd xmm4, qword [ecx]
movsd qword [ecx], xmm4
addsd xmm5, qword [edi]
mov ecx, dword [esp + 0x7c]
add dword [esp + 0xc], ecx
mov ecx, dword [esp + 0x80]
add dword [esp + 0x28], ecx
add dword [esp + 0x5c], ecx
add dword [esp + 0x58], ecx
add dword [esp + 0x60], ecx
mov ecx, dword [esp + 0x7c]
add dword [esp + 8], ecx
add dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x78]
add edx, ecx
add dword [esp + 0x44], ecx
add eax, ecx
movsd qword [edi], xmm5
add edi, ecx
sub dword [esp + 0x70], 1
mov dword [esp + 0x38], edx
mov dword [esp + 0x40], eax
mov dword [esp + 0x6c], edi
jne 0x10037f16
mov edi, dword [esp + 0x1c]
cmp edi, dword [esp + 0x74]
jge 0x100382dd
mov eax, dword [esp + 0x18]
mov edx, eax
mov esi, dword [ebp + 0x1c]
imul edx, edi
lea ecx, [eax + eax]
shl eax, 4
mov dword [esp + 0x30], eax
mov eax, edi
mov edi, dword [esp + 0x10]
imul eax, esi
mov dword [esp + 0x64], ecx
mov ecx, esi
shl ecx, 4
mov dword [esp + 0x68], ecx
mov ecx, dword [ebp + 0x18]
mov dword [esp + 8], edx
lea eax, [ecx + eax*8]
mov dword [esp + 0x3c], eax
lea eax, [edi + edx*8]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x1c]
lea ecx, [eax*8 + 8]
mov eax, ecx
imul ecx, dword [esp + 0x18]
imul eax, esi
mov esi, dword [esp + 0x74]
add ecx, edi
add eax, dword [ebp + 0x18]
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x1c]
sub esi, ecx
dec esi
mov dword [esp + 0x28], eax
shr esi, 1
inc esi
mov dword [esp + 0x74], esi
lea ecx, [ecx + esi*2]
mov esi, dword [ebp + 0xc]
mov dword [esp + 0x1c], ecx
jmp 0x100381b4
mov edi, dword [esp + 0x10]
xor ecx, ecx
xorps xmm2, xmm2
xorps xmm3, xmm3
cmp esi, 2
jl 0x10038218
mov edx, dword [ebp + 0x14]
lea eax, [ecx + 2]
mov edi, dword [esp + 0x20]
mov dword [esp + 0x78], edi
mov edi, dword [esp + 0x24]
mov edx, dword [edx]
movups xmm1, xmmword [edx]
mov esi, dword [esp + 0x78]
add eax, 2
movups xmm0, xmmword [edi]
add ecx, 2
add edx, 0x10
add edi, 0x10
mulpd xmm0, xmm1
addpd xmm2, xmm0
movups xmm0, xmmword [esi]
add esi, 0x10
mov dword [esp + 0x78], esi
mov esi, dword [ebp + 0xc]
mulpd xmm0, xmm1
addpd xmm3, xmm0
cmp eax, esi
jle 0x100381d5
mov edi, dword [esp + 0x10]
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 8]
movaps xmm0, xmm2
unpckhpd xmm0, xmm2
addsd xmm2, xmm0
movaps xmm0, xmm3
unpckhpd xmm0, xmm3
addsd xmm3, xmm0
cmp ecx, esi
jge 0x1003828e
mov eax, dword [ebp + 0x14]
mov esi, dword [esp + 8]
mov eax, dword [eax]
lea edx, [eax + ecx*8]
lea eax, [ecx + esi]
add eax, dword [esp + 0x18]
lea edi, [edi + eax*8]
lea eax, [ecx + esi]
mov esi, dword [esp + 0x10]
lea eax, [esi + eax*8]
mov esi, dword [ebp + 0xc]
mov dword [esp + 0x14], esi
sub dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x14]
movsd xmm1, qword [edx]
add edx, 8
movaps xmm0, xmm1
mulsd xmm1, qword [edi]
add edi, 8
mulsd xmm0, qword [eax]
add eax, 8
addsd xmm3, xmm1
addsd xmm2, xmm0
sub ecx, 1
jne 0x10038261
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 8]
mov ecx, dword [esp + 0x3c]
mov edi, dword [esp + 0x30]
add edx, dword [esp + 0x64]
add dword [esp + 0x20], edi
add dword [esp + 0x24], edi
mulsd xmm2, xmm6
mov dword [esp + 8], edx
mulsd xmm3, xmm6
addsd xmm2, qword [ecx]
movsd qword [ecx], xmm2
addsd xmm3, qword [eax]
add ecx, dword [esp + 0x68]
mov dword [esp + 0x3c], ecx
movsd qword [eax], xmm3
add eax, dword [esp + 0x68]
sub dword [esp + 0x74], 1
mov dword [esp + 0x28], eax
jne 0x100381b0
mov edi, dword [esp + 0x1c]
cmp edi, dword [ebp + 8]
jge 0x10038469
mov eax, dword [esp + 0x18]
mov ecx, eax
mov edx, dword [ebp + 0x18]
imul ecx, edi
imul edi, dword [ebp + 0x1c]
shl eax, 3
mov dword [esp + 0x30], eax
mov dword [esp + 0xc], ecx
lea eax, [edx + edi*8]
mov edi, dword [esp + 0x10]
mov dword [esp + 8], eax
lea edx, [edi + ecx*8]
mov dword [esp + 0x14], edx
mov edx, dword [ebp + 8]
sub edx, dword [esp + 0x1c]
mov dword [ebp + 8], edx
nop dword [eax]
xor edx, edx
xorps xmm2, xmm2
cmp esi, 2
jl 0x10038360
mov ecx, dword [ebp + 0x14]
lea eax, [edx + 2]
mov edi, dword [ecx]
mov ecx, dword [esp + 0x14]
movups xmm1, xmmword [ecx]
add eax, 2
add edx, 2
movups xmm0, xmmword [edi]
add ecx, 0x10
add edi, 0x10
mulpd xmm1, xmm0
addpd xmm2, xmm1
cmp eax, esi
jle 0x10038336
mov edi, dword [esp + 0x10]
mov ecx, dword [esp + 0xc]
mov eax, dword [esp + 8]
movaps xmm0, xmm2
unpckhpd xmm0, xmm2
addsd xmm2, xmm0
cmp edx, esi
jge 0x1003842f
mov eax, dword [ebp + 0x14]
mov ecx, dword [eax]
mov eax, esi
sub eax, edx
mov dword [esp + 0x64], ecx
cmp eax, 4
jl 0x100383f9
mov eax, dword [esp + 0xc]
lea ecx, [ecx + edx*8]
add edi, 0x10
add eax, edx
add ecx, 0x10
lea eax, [edi + eax*8]
mov edi, esi
sub edi, edx
sub edi, 4
shr edi, 2
inc edi
lea edx, [edx + edi*4]
nop word [eax + eax]
movsd xmm1, qword [eax - 0x10]
mulsd xmm1, qword [ecx - 0x10]
movsd xmm0, qword [eax - 8]
mulsd xmm0, qword [ecx - 8]
addsd xmm2, xmm1
addsd xmm2, xmm0
movsd xmm0, qword [eax]
mulsd xmm0, qword [ecx]
addsd xmm2, xmm0
movsd xmm0, qword [eax + 8]
mulsd xmm0, qword [ecx + 8]
add eax, 0x20
add ecx, 0x20
addsd xmm2, xmm0
sub edi, 1
jne 0x100383b0
cmp edx, esi
jge 0x10038427
mov ecx, dword [esp + 0x64]
mov eax, dword [esp + 0xc]
lea ecx, [ecx + edx*8]
mov edi, dword [esp + 0x10]
add eax, edx
lea eax, [edi + eax*8]
mov edi, esi
sub edi, edx
nop dword [eax]
movsd xmm0, qword [eax]
add eax, 8
mulsd xmm0, qword [ecx]
add ecx, 8
addsd xmm2, xmm0
sub edi, 1
jne 0x10038410
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0xc]
mov edi, dword [ebp + 0x1c]
mov edx, dword [esp + 0x30]
add dword [esp + 0x14], edx
add ecx, dword [esp + 0x18]
mulsd xmm2, xmm6
lea edx, [edi*8]
mov edi, dword [esp + 0x10]
mov dword [esp + 0xc], ecx
addsd xmm2, qword [eax]
movsd qword [eax], xmm2
add eax, edx
sub dword [ebp + 8], 1
mov dword [esp + 8], eax
jne 0x10038320
pop edi
pop esi
mov esp, ebp
pop ebp
ret