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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
push esi
push edi
push ebx
sub esp, 0xc4
mov eax, dword [ebp + 0x18]
mov ecx, dword [ebp + 8]
mov edx, dword [eax]
test edx, edx
mov dword [esp + 0xc0], edx
jle 0x4085fc
mov eax, 0x2aaaaaab
mov ebx, edx
mov esi, ebx
imul ebx
sar edx, 1
sar esi, 0x1f
sub edx, esi
mov eax, dword [ebp + 0xc]
lea edi, [edx*8]
shl edx, 2
add edx, edi
neg edx
add edx, ebx
mov ebx, dword [eax]
test edx, edx
mov dword [esp + 0x64], ebx
jle 0x4089d8
mov esi, ebx
mov eax, dword [ebp + 0x14]
lea edi, [ecx + esi*8]
mov dword [esp + 0x50], edi
and edi, 0xf
mov ebx, dword [eax]
mov dword [esp + 0x40], ebx
mov dword [esp + 4], edi
je 0x407297
test byte [esp + 4], 7
jne 0x408704
mov dword [esp + 4], 1
mov eax, dword [esp + 4]
lea ebx, [eax + 4]
cmp edx, ebx
jl 0x4089bd
mov edi, edx
mov esi, eax
sub edi, esi
and edi, 3
neg edi
mov eax, dword [esp + 0x40]
add edi, edx
mov dword [esp], edi
mov edi, eax
shl edi, 4
mov ebx, dword [ebp + 0x10]
test esi, esi
mov dword [esp + 0x4c], edi
mov esi, edi
lea edi, [ebx + edi]
mov dword [esp + 8], edi
lea eax, [ebx + eax*8]
mov dword [esp + 0xc], eax
mov ebx, dword [esp]
jbe 0x4089b1
mov dword [esp + 0x4c], esi
xor eax, eax
pxor xmm2, xmm2
mov dword [esp], ebx
movaps xmm0, xmm2
mov ecx, dword [esp + 0xc]
mov ebx, edi
mov esi, dword [esp + 4]
mov edi, dword [esp + 0x50]
movsd xmm4, qword [edi + eax*8]
movsd xmm1, qword [ebx + eax*8 + 8]
movsd xmm3, qword [ecx + eax*8]
inc eax
mulsd xmm1, xmm4
cmp eax, esi
mulsd xmm4, xmm3
addsd xmm0, xmm1
addsd xmm2, xmm4
jb 0x4072ff
mov dword [esp + 4], esi
mov esi, dword [esp + 0x4c]
mov ebx, dword [esp]
mov ecx, dword [ebp + 8]
mov eax, dword [esp + 4]
mov edi, dword [esp + 0x40]
pxor xmm1, xmm1
pxor xmm3, xmm3
movsd xmm1, xmm0
movsd xmm3, xmm2
add edi, eax
mov eax, dword [ebp + 0x10]
lea eax, [eax + edi*8]
test al, 0xf
je 0x4073cf
mov dword [esp + 0x4c], esi
mov eax, dword [esp + 0xc]
pxor xmm0, xmm0
mov ecx, dword [esp + 8]
mov esi, dword [esp + 4]
mov edi, dword [esp + 0x50]
movsd xmm2, qword [ecx + esi*8 + 8]
movhpd xmm2, qword [ecx + esi*8 + 0x10]
movaps xmm5, xmmword [edi + esi*8]
mulpd xmm2, xmm5
movsd xmm4, qword [eax + esi*8]
movhpd xmm4, qword [eax + esi*8 + 8]
mulpd xmm5, xmm4
addpd xmm1, xmm2
addpd xmm3, xmm5
movsd xmm7, qword [eax + esi*8 + 0x10]
movsd xmm6, qword [ecx + esi*8 + 0x18]
movhpd xmm6, qword [ecx + esi*8 + 0x20]
movaps xmm2, xmmword [edi + esi*8 + 0x10]
movhpd xmm7, qword [eax + esi*8 + 0x18]
add esi, 4
mulpd xmm6, xmm2
mulpd xmm2, xmm7
addpd xmm0, xmm6
addpd xmm3, xmm2
cmp esi, ebx
jb 0x40736e
jmp 0x407438
mov dword [esp + 0x4c], esi
mov eax, dword [esp + 0xc]
pxor xmm0, xmm0
mov ecx, dword [esp + 8]
mov esi, dword [esp + 4]
mov edi, dword [esp + 0x50]
movsd xmm2, qword [ecx + esi*8 + 8]
movhpd xmm2, qword [ecx + esi*8 + 0x10]
movaps xmm5, xmmword [edi + esi*8]
mulpd xmm2, xmm5
movaps xmm4, xmmword [eax + esi*8]
mulpd xmm5, xmm4
addpd xmm1, xmm2
addpd xmm3, xmm5
movsd xmm6, qword [ecx + esi*8 + 0x18]
movhpd xmm6, qword [ecx + esi*8 + 0x20]
movaps xmm2, xmmword [edi + esi*8 + 0x10]
movaps xmm7, xmmword [eax + esi*8 + 0x10]
add esi, 4
mulpd xmm6, xmm2
mulpd xmm2, xmm7
addpd xmm0, xmm6
addpd xmm3, xmm2
cmp esi, ebx
jb 0x4073e7
mov esi, dword [esp + 0x4c]
mov ecx, dword [ebp + 8]
addpd xmm1, xmm0
movaps xmm0, xmm1
movaps xmm2, xmm3
unpckhpd xmm0, xmm1
unpckhpd xmm2, xmm3
addsd xmm1, xmm0
addsd xmm3, xmm2
movsd qword [esp + 0xb0], xmm1
cmp ebx, edx
jae 0x4074b7
mov eax, dword [ebp + 0x10]
movsd xmm4, qword [esp + 0xb0]
lea edi, [eax + esi]
mov dword [esp], edi
mov edi, dword [esp + 0x40]
mov ecx, dword [esp]
lea eax, [eax + edi*8]
mov edi, dword [esp + 0x50]
movsd xmm2, qword [edi + ebx*8]
movsd xmm0, qword [ecx + ebx*8 + 8]
movsd xmm1, qword [eax + ebx*8]
inc ebx
mulsd xmm0, xmm2
cmp ebx, edx
mulsd xmm2, xmm1
addsd xmm4, xmm0
addsd xmm3, xmm2
jb 0x407486
movsd qword [esp + 0xb0], xmm4
mov ecx, dword [ebp + 8]
mov eax, dword [esp + 0x64]
shl eax, 4
mov dword [esp + 0x44], eax
lea ebx, [ecx + eax + 8]
and ebx, 0xf
mov dword [esp + 8], ebx
je 0x4074e2
test byte [esp + 8], 7
jne 0x40871d
mov dword [esp + 8], 1
mov eax, dword [esp + 8]
lea ebx, [eax + 4]
cmp edx, ebx
jl 0x40871d
mov ebx, edx
sub ebx, eax
mov edi, dword [ebp + 0x10]
and ebx, 3
neg ebx
mov dword [esp + 0x54], edx
add ebx, edx
mov dword [esp], ebx
lea edx, [edi + esi]
mov dword [esp + 4], edx
test eax, eax
mov edx, dword [esp + 0x40]
mov eax, ebx
lea ebx, [edi + edx*8]
mov edi, dword [esp + 0x44]
mov dword [esp + 0x14], ebx
lea edx, [ecx + edi]
mov dword [esp + 0x10], edx
mov edx, dword [esp + 0x54]
jbe 0x4089a5
mov dword [esp + 0xc], 0
pxor xmm4, xmm4
mov dword [esp + 0x4c], esi
movaps xmm0, xmm4
mov dword [esp], eax
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
mov esi, dword [esp + 4]
mov edi, dword [esp + 8]
movsd xmm5, qword [ecx + eax*8 + 8]
movsd xmm1, qword [esi + eax*8 + 8]
movsd xmm2, qword [ebx + eax*8]
inc eax
mulsd xmm1, xmm5
cmp eax, edi
mulsd xmm5, xmm2
addsd xmm0, xmm1
addsd xmm4, xmm5
jb 0x407557
mov dword [esp + 8], edi
mov esi, dword [esp + 0x4c]
mov eax, dword [esp]
mov ecx, dword [ebp + 8]
mov dword [esp + 0x54], edx
mov edi, dword [esp + 8]
pxor xmm1, xmm1
mov edx, dword [esp + 0x40]
pxor xmm2, xmm2
movsd xmm1, xmm0
movsd xmm2, xmm4
lea ebx, [edx + edi]
mov edx, dword [ebp + 0x10]
lea edi, [edx + ebx*8]
mov edx, dword [esp + 0x54]
test edi, 0xf
je 0x407636
mov dword [esp + 0x4c], esi
mov ecx, dword [esp + 0x10]
pxor xmm0, xmm0
mov ebx, dword [esp + 0x14]
mov esi, dword [esp + 4]
mov edi, dword [esp + 8]
movsd xmm4, qword [esi + edi*8 + 8]
movhpd xmm4, qword [esi + edi*8 + 0x10]
movaps xmm6, xmmword [ecx + edi*8 + 8]
mulpd xmm4, xmm6
movsd xmm5, qword [ebx + edi*8]
movhpd xmm5, qword [ebx + edi*8 + 8]
mulpd xmm6, xmm5
addpd xmm1, xmm4
addpd xmm2, xmm6
movsd xmm4, qword [ebx + edi*8 + 0x10]
movsd xmm7, qword [esi + edi*8 + 0x18]
movhpd xmm7, qword [esi + edi*8 + 0x20]
movaps xmm5, xmmword [ecx + edi*8 + 0x18]
movhpd xmm4, qword [ebx + edi*8 + 0x18]
add edi, 4
mulpd xmm7, xmm5
mulpd xmm5, xmm4
addpd xmm0, xmm7
addpd xmm2, xmm5
cmp edi, eax
jb 0x4075d4
jmp 0x4076a0
mov dword [esp + 0x4c], esi
mov ecx, dword [esp + 0x10]
pxor xmm0, xmm0
mov ebx, dword [esp + 0x14]
mov esi, dword [esp + 4]
mov edi, dword [esp + 8]
movsd xmm4, qword [esi + edi*8 + 8]
movhpd xmm4, qword [esi + edi*8 + 0x10]
movaps xmm6, xmmword [ecx + edi*8 + 8]
mulpd xmm4, xmm6
movsd xmm7, qword [esi + edi*8 + 0x18]
movhpd xmm7, qword [esi + edi*8 + 0x20]
addpd xmm1, xmm4
movaps xmm4, xmmword [ecx + edi*8 + 0x18]
mulpd xmm7, xmm4
movaps xmm5, xmmword [ebx + edi*8]
mulpd xmm6, xmm5
addpd xmm0, xmm7
addpd xmm2, xmm6
movaps xmm7, xmmword [ebx + edi*8 + 0x10]
add edi, 4
mulpd xmm4, xmm7
addpd xmm2, xmm4
cmp edi, eax
jb 0x40764e
mov esi, dword [esp + 0x4c]
mov ecx, dword [ebp + 8]
addpd xmm1, xmm0
movaps xmm0, xmm1
movaps xmm4, xmm2
unpckhpd xmm0, xmm1
unpckhpd xmm4, xmm2
addsd xmm1, xmm0
addsd xmm2, xmm4
movsd qword [esp + 0xb8], xmm1
cmp eax, edx
jae 0x407735
mov ebx, dword [ebp + 0x10]
mov edi, dword [esp + 0x40]
mov dword [esp + 0x54], edx
movsd xmm5, qword [esp + 0xb8]
lea edx, [ebx + esi]
mov dword [esp + 4], edx
lea edx, [ebx + edi*8]
mov ebx, dword [esp + 0x44]
mov dword [esp], edx
mov edx, dword [esp + 0x54]
lea edi, [ecx + ebx]
mov ecx, edi
mov ebx, dword [esp]
mov edi, dword [esp + 4]
movsd xmm4, qword [ecx + eax*8 + 8]
movsd xmm0, qword [edi + eax*8 + 8]
movsd xmm1, qword [ebx + eax*8]
inc eax
mulsd xmm0, xmm4
cmp eax, edx
mulsd xmm4, xmm1
addsd xmm5, xmm0
addsd xmm2, xmm4
jb 0x407703
movsd qword [esp + 0xb8], xmm5
mov ecx, dword [ebp + 8]
mov eax, dword [ebp + 0x10]
lea ebx, [eax + esi + 8]
and ebx, 0xf
mov dword [esp + 0x5c], ebx
je 0x407758
test byte [esp + 0x5c], 7
jne 0x408731
mov dword [esp + 0x5c], 1
mov eax, dword [esp + 0x5c]
lea ebx, [eax + 2]
cmp edx, ebx
jl 0x408731
mov ebx, edx
sub ebx, eax
mov edi, dword [ebp + 0x10]
and ebx, 1
neg ebx
mov dword [esp + 0x54], edx
add ebx, edx
mov dword [esp + 0x58], ebx
lea edx, [edi + esi]
mov dword [esp + 0x68], edx
test eax, eax
mov edx, dword [esp + 0x40]
mov eax, ebx
lea ebx, [edi + edx*8]
mov edi, dword [esp + 0x44]
mov dword [esp + 0x60], ebx
lea edx, [ecx + edi]
mov dword [esp + 0x48], edx
mov edx, dword [esp + 0x54]
jbe 0x408990
mov dword [esp], 0
pxor xmm0, xmm0
movaps xmm4, xmm0
movaps xmm5, xmm4
movaps xmm6, xmm5
mov dword [esp + 0x54], edx
movaps xmm1, xmm6
mov dword [esp + 0x4c], esi
mov dword [esp + 0x58], eax
movsd qword [esp + 0x30], xmm2
movsd qword [esp + 0x38], xmm3
mov ebx, dword [esp]
mov edx, dword [esp + 0x48]
mov esi, dword [esp + 0x68]
mov eax, dword [ebp + 0x10]
movsd xmm3, qword [ecx + ebx*8]
movsd xmm2, qword [eax + ebx*8]
movaps xmm7, xmm3
mulsd xmm7, xmm2
mov edi, dword [esp + 0x50]
addsd xmm0, xmm7
movsd xmm7, qword [edi + ebx*8]
mulsd xmm7, xmm2
mulsd xmm2, qword [edx + ebx*8 + 8]
addsd xmm4, xmm7
addsd xmm5, xmm2
mov edi, dword [esp + 0x60]
movsd xmm2, qword [edi + ebx*8]
mulsd xmm2, xmm3
mulsd xmm3, qword [esi + ebx*8 + 8]
addsd xmm6, xmm2
addsd xmm1, xmm3
inc ebx
cmp ebx, dword [esp + 0x5c]
jb 0x4077e5
movsd xmm2, qword [esp + 0x30]
movsd xmm3, qword [esp + 0x38]
mov edx, dword [esp + 0x54]
mov esi, dword [esp + 0x4c]
mov eax, dword [esp + 0x58]
movsd qword [esp + 0x38], xmm3
pxor xmm7, xmm7
movsd xmm7, xmm0
pxor xmm0, xmm0
movsd xmm0, xmm4
pxor xmm4, xmm4
movsd xmm4, xmm5
movaps xmmword [esp + 0x10], xmm0
movaps xmmword [esp + 0x20], xmm4
pxor xmm0, xmm0
movaps xmmword [esp], xmm7
pxor xmm4, xmm4
mov dword [esp + 0x54], edx
movsd xmm4, xmm6
mov dword [esp + 0x4c], esi
movsd xmm0, xmm1
mov dword [esp + 0x58], eax
movsd qword [esp + 0x30], xmm2
movaps xmm3, xmmword [esp + 0x20]
movaps xmm1, xmmword [esp + 0x10]
movaps xmm6, xmmword [esp]
mov edx, dword [esp + 0x48]
mov esi, dword [esp + 0x60]
mov ebx, dword [esp + 0x5c]
mov eax, dword [ebp + 0x10]
movsd xmm2, qword [ecx + ebx*8]
movhpd xmm2, qword [ecx + ebx*8 + 8]
movsd xmm5, qword [eax + ebx*8]
movaps xmm7, xmm2
movhpd xmm5, qword [eax + ebx*8 + 8]
mulpd xmm7, xmm5
mov edi, dword [esp + 0x50]
addpd xmm6, xmm7
movsd xmm7, qword [edi + ebx*8]
movhpd xmm7, qword [edi + ebx*8 + 8]
mulpd xmm7, xmm5
addpd xmm1, xmm7
movsd xmm7, qword [edx + ebx*8 + 8]
movhpd xmm7, qword [edx + ebx*8 + 0x10]
mulpd xmm5, xmm7
mov edi, dword [esp + 0x68]
addpd xmm3, xmm5
movsd xmm5, qword [esi + ebx*8]
movhpd xmm5, qword [esi + ebx*8 + 8]
mulpd xmm5, xmm2
mulpd xmm2, xmmword [edi + ebx*8 + 8]
addpd xmm4, xmm5
addpd xmm0, xmm2
add ebx, 2
cmp ebx, dword [esp + 0x58]
jb 0x4078ba
movaps xmm7, xmm4
movaps xmmword [esp + 0x10], xmm1
movaps xmmword [esp], xmm6
movaps xmm6, xmm0
unpckhpd xmm7, xmm4
movaps xmmword [esp + 0x20], xmm3
addsd xmm4, xmm7
unpckhpd xmm6, xmm0
movaps xmm7, xmmword [esp + 0x10]
addsd xmm0, xmm6
movaps xmm6, xmmword [esp + 0x20]
movaps xmm5, xmm7
unpckhpd xmm5, xmm7
movaps xmm1, xmm6
unpckhpd xmm1, xmm6
movsd xmm2, qword [esp + 0x30]
addsd xmm7, xmm5
addsd xmm6, xmm1
movaps xmm5, xmmword [esp]
movaps xmm1, xmm5
unpckhpd xmm1, xmm5
movsd xmm3, qword [esp + 0x38]
addsd xmm5, xmm1
mov edx, dword [esp + 0x54]
mov esi, dword [esp + 0x4c]
mov eax, dword [esp + 0x58]
cmp eax, edx
jae 0x407a30
mov ebx, dword [ebp + 0x10]
mov edi, dword [esp + 0x40]
add esi, ebx
add dword [esp + 0x44], ecx
mov dword [esp + 0x54], edx
mov dword [esp + 0x4c], esi
lea ebx, [ebx + edi*8]
movsd qword [esp + 0x30], xmm2
movsd qword [esp + 0x38], xmm3
mov esi, dword [esp + 0x44]
mov edx, dword [ebp + 0x10]
movsd xmm1, qword [ecx + eax*8]
movsd xmm2, qword [edx + eax*8]
movaps xmm3, xmm1
mulsd xmm3, xmm2
mov edi, dword [esp + 0x50]
addsd xmm5, xmm3
movsd xmm3, qword [edi + eax*8]
mulsd xmm3, xmm2
mulsd xmm2, qword [esi + eax*8 + 8]
addsd xmm7, xmm3
addsd xmm6, xmm2
mov edi, dword [esp + 0x4c]
movsd xmm2, qword [ebx + eax*8]
mulsd xmm2, xmm1
mulsd xmm1, qword [edi + eax*8 + 8]
addsd xmm4, xmm2
addsd xmm0, xmm1
inc eax
cmp eax, dword [esp + 0x54]
jb 0x4079ce
movsd xmm2, qword [esp + 0x30]
movsd xmm3, qword [esp + 0x38]
mov edx, dword [esp + 0x54]
inc edx
cmp edx, dword [esp + 0xc0]
jg 0x408559
mov eax, dword [ebp + 0x14]
mov ebx, dword [ebp + 0x10]
movsd qword [esp + 0x78], xmm4
mov esi, dword [eax]
lea eax, [ebx + esi*8]
shl esi, 4
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], esi
add ebx, esi
mov dword [esp + 8], ebx
mov ebx, dword [esp + 0xc0]
mov eax, dword [ebp + 0x10]
lea esi, [eax + edx*8 + 8]
and esi, 0xf
mov dword [esp + 0x60], esi
mov dword [esp + 0x50], esi
je 0x407a9c
test byte [esp + 0x60], 7
jne 0x408748
mov eax, dword [ebp + 0x10]
push 1
pop esi
movsd xmm1, qword [ecx + edx*8 - 8]
mulsd xmm1, qword [eax + edx*8 - 8]
addsd xmm5, xmm1
mov eax, esi
lea edi, [edx + esi]
neg eax
and eax, 3
pxor xmm4, xmm4
neg eax
movsd xmm4, xmm5
add eax, 0xc
mov dword [esp + 0x34], eax
lea eax, [ecx + edi*8 + 8]
test al, 0xf
je 0x407b04
mov edi, dword [ebp + 0x10]
lea eax, [ecx + edx*8]
mov ecx, dword [esp + 0x34]
pxor xmm1, xmm1
lea edi, [edi + edx*8]
movsd xmm5, qword [eax + esi*8 - 8]
movhpd xmm5, qword [eax + esi*8]
mulpd xmm5, xmmword [edi + esi*8 - 8]
addpd xmm4, xmm5
movsd xmm5, qword [eax + esi*8 + 8]
movhpd xmm5, qword [eax + esi*8 + 0x10]
mulpd xmm5, xmmword [edi + esi*8 + 8]
add esi, 4
addpd xmm1, xmm5
cmp esi, ecx
jb 0x407ad0
jmp 0x407b3a
mov edi, dword [ebp + 0x10]
lea eax, [ecx + edx*8]
mov ecx, dword [esp + 0x34]
pxor xmm1, xmm1
lea edi, [edi + edx*8]
movaps xmm5, xmmword [eax + esi*8 - 8]
mulpd xmm5, xmmword [edi + esi*8 - 8]
addpd xmm4, xmm5
movaps xmm5, xmmword [eax + esi*8 + 8]
mulpd xmm5, xmmword [edi + esi*8 + 8]
add esi, 4
addpd xmm1, xmm5
cmp esi, ecx
jb 0x407b15
mov dword [esp + 0x34], ecx
mov ecx, dword [ebp + 8]
addpd xmm4, xmm1
movaps xmm1, xmm4
unpckhpd xmm1, xmm4
addsd xmm4, xmm1
movaps xmm5, xmm4
cmp dword [esp + 0x34], 0xc
jb 0x408968
cmp dword [esp + 0x60], 0
je 0x407b98
test byte [esp + 0x60], 7
jne 0x408755
mov eax, dword [esp + 0x64]
mov edi, dword [ebp + 0x10]
mov dword [esp + 0x50], 1
lea esi, [ecx + eax*8]
mov dword [esp + 0x1c], esi
movsd xmm1, qword [esi + edx*8 - 8]
mulsd xmm1, qword [edi + edx*8 - 8]
addsd xmm7, xmm1
jmp 0x407ba3
mov eax, dword [esp + 0x64]
lea esi, [ecx + eax*8]
mov dword [esp + 0x1c], esi
mov edi, dword [esp + 0x50]
mov esi, eax
mov eax, edi
neg eax
pxor xmm4, xmm4
and eax, 3
movsd xmm4, xmm7
neg eax
add esi, edi
add esi, edx
add eax, 0xc
lea edi, [ecx + esi*8 + 8]
test edi, 0xf
je 0x407c18
mov edi, dword [ebp + 0x10]
mov esi, dword [esp + 0x1c]
pxor xmm1, xmm1
lea edi, [edi + edx*8]
mov ecx, edi
lea esi, [esi + edx*8]
mov edi, dword [esp + 0x50]
movsd xmm7, qword [esi + edi*8 - 8]
movhpd xmm7, qword [esi + edi*8]
mulpd xmm7, xmmword [ecx + edi*8 - 8]
addpd xmm4, xmm7
movsd xmm7, qword [esi + edi*8 + 8]
movhpd xmm7, qword [esi + edi*8 + 0x10]
mulpd xmm7, xmmword [ecx + edi*8 + 8]
add edi, 4
addpd xmm1, xmm7
cmp edi, eax
jb 0x407be4
jmp 0x407c54
mov edi, dword [ebp + 0x10]
mov esi, dword [esp + 0x1c]
pxor xmm1, xmm1
lea edi, [edi + edx*8]
mov ecx, edi
lea esi, [esi + edx*8]
mov edi, dword [esp + 0x50]
movaps xmm7, xmmword [esi + edi*8 - 8]
mulpd xmm7, xmmword [ecx + edi*8 - 8]
addpd xmm4, xmm7
movaps xmm7, xmmword [esi + edi*8 + 8]
mulpd xmm7, xmmword [ecx + edi*8 + 8]
add edi, 4
addpd xmm1, xmm7
cmp edi, eax
jb 0x407c2f
mov ecx, dword [ebp + 8]
addpd xmm4, xmm1
movaps xmm1, xmm4
unpckhpd xmm1, xmm4
addsd xmm4, xmm1
movaps xmm7, xmm4
cmp eax, 0xc
jb 0x40893d
cmp dword [esp + 0x60], 0
je 0x407ca9
test byte [esp + 0x60], 7
jne 0x40875c
mov esi, dword [esp + 0x64]
shl esi, 4
add esi, ecx
mov eax, dword [ebp + 0x10]
mov dword [esp + 0x60], 1
movsd xmm1, qword [esi + edx*8]
mulsd xmm1, qword [eax + edx*8 - 8]
addsd xmm6, xmm1
jmp 0x407cb2
mov esi, dword [esp + 0x64]
shl esi, 4
add esi, ecx
mov eax, dword [esp + 0x60]
mov edi, eax
pxor xmm4, xmm4
neg edi
movsd xmm4, xmm6
and edi, 3
neg edi
add edi, 0xc
mov dword [esp + 0x40], edi
mov edi, dword [esp + 0x64]
lea eax, [eax + edi*2]
add eax, edx
lea eax, [ecx + eax*8]
test al, 0xf
je 0x407d27
mov eax, dword [ebp + 0x10]
lea esi, [esi + edx*8]
mov ecx, dword [esp + 0x40]
pxor xmm1, xmm1
mov edi, dword [esp + 0x60]
lea eax, [eax + edx*8]
movsd xmm6, qword [esi + edi*8]
movhpd xmm6, qword [esi + edi*8 + 8]
mulpd xmm6, xmmword [eax + edi*8 - 8]
addpd xmm4, xmm6
movsd xmm6, qword [esi + edi*8 + 0x10]
movhpd xmm6, qword [esi + edi*8 + 0x18]
mulpd xmm6, xmmword [eax + edi*8 + 8]
add edi, 4
addpd xmm1, xmm6
cmp edi, ecx
jb 0x407cf3
jmp 0x407d60
mov eax, dword [ebp + 0x10]
lea esi, [esi + edx*8]
mov ecx, dword [esp + 0x40]
pxor xmm1, xmm1
mov edi, dword [esp + 0x60]
lea eax, [eax + edx*8]
movaps xmm6, xmmword [esi + edi*8]
mulpd xmm6, xmmword [eax + edi*8 - 8]
addpd xmm4, xmm6
movaps xmm6, xmmword [esi + edi*8 + 0x10]
mulpd xmm6, xmmword [eax + edi*8 + 8]
add edi, 4
addpd xmm1, xmm6
cmp edi, ecx
jb 0x407d3c
mov dword [esp + 0x40], ecx
mov ecx, dword [ebp + 8]
addpd xmm4, xmm1
movaps xmm1, xmm4
unpckhpd xmm1, xmm4
addsd xmm4, xmm1
movaps xmm6, xmm4
cmp dword [esp + 0x40], 0xc
jb 0x40890d
mov eax, dword [esp + 0x14]
lea eax, [eax + edx*8 + 8]
and eax, 0xf
mov esi, eax
mov dword [esp + 0x58], esi
je 0x407dc2
test al, 7
jne 0x408769
mov esi, dword [esp + 0x14]
movsd xmm1, qword [ecx + edx*8 - 8]
movsd xmm4, qword [esp + 0x78]
mulsd xmm1, qword [esi + edx*8 - 8]
push 1
pop esi
addsd xmm4, xmm1
movsd qword [esp + 0x78], xmm4
mov edi, esi
pxor xmm4, xmm4
neg edi
and edi, 3
neg edi
add edi, 0xc
mov dword [esp + 0x3c], edi
lea edi, [edx + esi]
movsd xmm1, qword [esp + 0x78]
lea edi, [ecx + edi*8 + 8]
movsd xmm4, xmm1
test edi, 0xf
je 0x407e43
movsd qword [esp + 0x68], xmm5
lea edi, [ecx + edx*8]
mov dword [esp], edi
pxor xmm1, xmm1
mov edi, dword [esp + 0x14]
mov ecx, dword [esp + 0x3c]
lea edi, [edi + edx*8]
mov ebx, edi
mov edi, dword [esp]
movsd xmm5, qword [edi + esi*8 - 8]
movhpd xmm5, qword [edi + esi*8]
mulpd xmm5, xmmword [ebx + esi*8 - 8]
addpd xmm4, xmm5
movsd xmm5, qword [edi + esi*8 + 8]
movhpd xmm5, qword [edi + esi*8 + 0x10]
mulpd xmm5, xmmword [ebx + esi*8 + 8]
add esi, 4
addpd xmm1, xmm5
cmp esi, ecx
jb 0x407e0f
jmp 0x407e8a
movsd qword [esp + 0x68], xmm5
lea edi, [ecx + edx*8]
mov dword [esp + 0x2c], edi
pxor xmm1, xmm1
mov edi, dword [esp + 0x14]
mov ecx, dword [esp + 0x3c]
lea edi, [edi + edx*8]
mov ebx, edi
mov edi, dword [esp + 0x2c]
movaps xmm5, xmmword [edi + esi*8 - 8]
mulpd xmm5, xmmword [ebx + esi*8 - 8]
addpd xmm4, xmm5
movaps xmm5, xmmword [edi + esi*8 + 8]
mulpd xmm5, xmmword [ebx + esi*8 + 8]
add esi, 4
addpd xmm1, xmm5
cmp esi, ecx
jb 0x407e65
mov dword [esp + 0x3c], ecx
movsd xmm5, qword [esp + 0x68]
mov ebx, dword [esp + 0xc0]
mov ecx, dword [ebp + 8]
addpd xmm4, xmm1
movaps xmm1, xmm4
unpckhpd xmm1, xmm4
addsd xmm4, xmm1
movsd qword [esp + 0x78], xmm4
cmp dword [esp + 0x3c], 0xc
jb 0x4088d3
test eax, eax
je 0x407ef3
test al, 7
jne 0x408776
mov esi, dword [esp + 0x64]
mov dword [esp + 0x58], 1
lea edi, [ecx + esi*8]
mov dword [esp + 0x18], edi
mov esi, dword [esp + 0x14]
movsd xmm1, qword [edi + edx*8 - 8]
mulsd xmm1, qword [esi + edx*8 - 8]
addsd xmm3, xmm1
jmp 0x407efe
mov esi, dword [esp + 0x64]
lea edi, [ecx + esi*8]
mov dword [esp + 0x18], edi
mov esi, dword [esp + 0x58]
mov edi, esi
pxor xmm4, xmm4
neg edi
movsd xmm4, xmm3
and edi, 3
neg edi
add edi, 0xc
mov dword [esp + 0x4c], edi
mov edi, dword [esp + 0x64]
add esi, edi
add esi, edx
lea esi, [ecx + esi*8 + 8]
test esi, 0xf
je 0x407f7e
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x4c]
pxor xmm1, xmm1
lea edi, [esi + edx*8]
mov esi, dword [esp + 0x14]
mov ebx, edi
mov edi, dword [esp + 0x58]
lea esi, [esi + edx*8]
movsd xmm3, qword [ebx + edi*8 - 8]
movhpd xmm3, qword [ebx + edi*8]
mulpd xmm3, xmmword [esi + edi*8 - 8]
addpd xmm4, xmm3
movsd xmm3, qword [ebx + edi*8 + 8]
movhpd xmm3, qword [ebx + edi*8 + 0x10]
mulpd xmm3, xmmword [esi + edi*8 + 8]
add edi, 4
addpd xmm1, xmm3
cmp edi, ecx
jb 0x407f4a
jmp 0x407fbf
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x4c]
pxor xmm1, xmm1
lea edi, [esi + edx*8]
mov esi, dword [esp + 0x14]
mov ebx, edi
mov edi, dword [esp + 0x58]
lea esi, [esi + edx*8]
movaps xmm3, xmmword [ebx + edi*8 - 8]
mulpd xmm3, xmmword [esi + edi*8 - 8]
addpd xmm4, xmm3
movaps xmm3, xmmword [ebx + edi*8 + 8]
mulpd xmm3, xmmword [esi + edi*8 + 8]
add edi, 4
addpd xmm1, xmm3
cmp edi, ecx
jb 0x407f9a
mov dword [esp + 0x4c], ecx
mov ebx, dword [esp + 0xc0]
mov ecx, dword [ebp + 8]
addpd xmm4, xmm1
movaps xmm1, xmm4
unpckhpd xmm1, xmm4
addsd xmm4, xmm1
movaps xmm3, xmm4
cmp dword [esp + 0x4c], 0xc
jb 0x4088a0
test eax, eax
je 0x408017
test al, 7
jne 0x408783
mov esi, dword [esp + 0x64]
shl esi, 4
add esi, ecx
mov eax, dword [esp + 0x14]
movsd xmm1, qword [esi + edx*8]
mulsd xmm1, qword [eax + edx*8 - 8]
push 1
pop eax
addsd xmm2, xmm1
jmp 0x408020
mov esi, dword [esp + 0x64]
shl esi, 4
add esi, ecx
mov edi, eax
neg edi
pxor xmm4, xmm4
and edi, 3
movsd xmm4, xmm2
neg edi
add edi, 0xc
mov dword [esp + 0x44], edi
mov edi, dword [esp + 0x64]
lea edi, [eax + edi*2]
add edi, edx
lea edi, [ecx + edi*8]
test edi, 0xf
je 0x408092
mov edi, dword [esp + 0x14]
lea esi, [esi + edx*8]
mov ecx, dword [esp + 0x44]
pxor xmm1, xmm1
lea edi, [edi + edx*8]
movsd xmm2, qword [esi + eax*8]
movhpd xmm2, qword [esi + eax*8 + 8]
mulpd xmm2, xmmword [edi + eax*8 - 8]
addpd xmm4, xmm2
movsd xmm2, qword [esi + eax*8 + 0x10]
movhpd xmm2, qword [esi + eax*8 + 0x18]
mulpd xmm2, xmmword [edi + eax*8 + 8]
add eax, 4
addpd xmm1, xmm2
cmp eax, ecx
jb 0x40805e
jmp 0x4080c8
mov ecx, dword [esp + 0x44]
lea edi, [esi + edx*8]
mov esi, dword [esp + 0x14]
pxor xmm1, xmm1
lea esi, [esi + edx*8]
movaps xmm2, xmmword [edi + eax*8]
mulpd xmm2, xmmword [esi + eax*8 - 8]
addpd xmm4, xmm2
movaps xmm2, xmmword [edi + eax*8 + 0x10]
mulpd xmm2, xmmword [esi + eax*8 + 8]
add eax, 4
addpd xmm1, xmm2
cmp eax, ecx
jb 0x4080a4
mov dword [esp + 0x44], ecx
mov ecx, dword [ebp + 8]
addpd xmm4, xmm1
movaps xmm1, xmm4
unpckhpd xmm1, xmm4
addsd xmm4, xmm1
movaps xmm2, xmm4
cmp dword [esp + 0x44], 0xc
jb 0x40886f
mov eax, dword [esp + 8]
lea esi, [eax + edx*8]
and esi, 0xf
mov dword [esp + 0x5c], esi
mov dword [esp + 0x54], esi
je 0x40812d
test byte [esp + 0x5c], 7
jne 0x408790
mov eax, dword [ebp + 0x10]
mov esi, dword [esp + 0x10]
movsd xmm1, qword [ecx + edx*8 - 8]
lea edi, [eax + esi]
mov dword [esp + 0x30], edi
push 1
pop esi
mulsd xmm1, qword [edi + edx*8]
addsd xmm0, xmm1
jmp 0x40813a
mov eax, dword [ebp + 0x10]
mov edi, dword [esp + 0x10]
add eax, edi
mov dword [esp + 0x30], eax
mov eax, esi
lea edi, [edx + esi]
neg eax
and eax, 3
pxor xmm1, xmm1
neg eax
movsd xmm1, xmm0
add eax, 0xc
mov dword [esp + 0x48], eax
lea eax, [ecx + edi*8 + 8]
test al, 0xf
je 0x4081aa
mov edi, dword [esp + 0x30]
lea eax, [ecx + edx*8]
mov dword [esp + 0xc], eax
mov ecx, dword [esp + 0x48]
pxor xmm0, xmm0
lea eax, [edi + edx*8]
mov edi, dword [esp + 0xc]
movsd xmm4, qword [edi + esi*8 - 8]
movhpd xmm4, qword [edi + esi*8]
mulpd xmm4, xmmword [eax + esi*8]
addpd xmm1, xmm4
movsd xmm4, qword [edi + esi*8 + 8]
movhpd xmm4, qword [edi + esi*8 + 0x10]
mulpd xmm4, xmmword [eax + esi*8 + 0x10]
add esi, 4
addpd xmm0, xmm4
cmp esi, ecx
jb 0x408177
jmp 0x4081e0
mov edi, dword [esp + 0x30]
lea eax, [ecx + edx*8]
mov ecx, dword [esp + 0x48]
pxor xmm0, xmm0
lea edi, [edi + edx*8]
movaps xmm4, xmmword [eax + esi*8 - 8]
mulpd xmm4, xmmword [edi + esi*8]
addpd xmm1, xmm4
movaps xmm4, xmmword [eax + esi*8 + 8]
mulpd xmm4, xmmword [edi + esi*8 + 0x10]
add esi, 4
addpd xmm0, xmm4
cmp esi, ecx
jb 0x4081bc
mov dword [esp + 0x48], ecx
mov ecx, dword [ebp + 8]
addpd xmm1, xmm0
movaps xmm0, xmm1
unpckhpd xmm0, xmm1
addsd xmm1, xmm0
movaps xmm0, xmm1
cmp dword [esp + 0x48], 0xc
jb 0x408842
cmp dword [esp + 0x5c], 0
je 0x408259
test byte [esp + 0x5c], 7
jne 0x40879d
mov esi, dword [esp + 0x64]
mov edi, dword [ebp + 0x10]
movsd xmm4, qword [esp + 0xb0]
mov dword [esp + 0x54], 1
lea eax, [ecx + esi*8]
mov esi, dword [esp + 0x10]
movsd xmm1, qword [eax + edx*8 - 8]
mov dword [esp + 0x28], eax
add edi, esi
mov dword [esp + 0x24], edi
mulsd xmm1, qword [edi + edx*8]
addsd xmm4, xmm1
movsd qword [esp + 0xb0], xmm4
jmp 0x408272
mov eax, dword [esp + 0x64]
mov edi, dword [ebp + 0x10]
lea esi, [ecx + eax*8]
mov dword [esp + 0x28], esi
mov eax, dword [esp + 0x10]
lea esi, [edi + eax]
mov dword [esp + 0x24], esi
mov edi, dword [esp + 0x54]
mov eax, dword [esp + 0x64]
mov esi, edi
neg esi
pxor xmm1, xmm1
and esi, 3
neg esi
add eax, edi
add eax, edx
add esi, 0xc
movsd xmm4, qword [esp + 0xb0]
movsd xmm1, xmm4
movaps xmmword [esp + 0xa0], xmm1
lea edi, [ecx + eax*8 + 8]
test edi, 0xf
je 0x408318
mov eax, dword [esp + 0x28]
pxor xmm1, xmm1
movaps xmmword [esp + 0x80], xmm1
movsd qword [esp + 0x68], xmm5
lea edi, [eax + edx*8]
mov eax, dword [esp + 0x24]
movaps xmm1, xmmword [esp + 0x80]
movaps xmm4, xmmword [esp + 0xa0]
lea eax, [eax + edx*8]
mov ecx, edi
mov edi, dword [esp + 0x54]
movsd xmm5, qword [ecx + edi*8 - 8]
movhpd xmm5, qword [ecx + edi*8]
mulpd xmm5, xmmword [eax + edi*8]
addpd xmm4, xmm5
movsd xmm5, qword [ecx + edi*8 + 8]
movhpd xmm5, qword [ecx + edi*8 + 0x10]
mulpd xmm5, xmmword [eax + edi*8 + 0x10]
add edi, 4
addpd xmm1, xmm5
cmp edi, esi
jb 0x4082e5
jmp 0x408372
mov eax, dword [esp + 0x28]
pxor xmm1, xmm1
movaps xmmword [esp + 0x80], xmm1
movsd qword [esp + 0x68], xmm5
lea edi, [eax + edx*8]
mov eax, dword [esp + 0x24]
movaps xmm1, xmmword [esp + 0x80]
movaps xmm4, xmmword [esp + 0xa0]
lea eax, [eax + edx*8]
mov ecx, edi
mov edi, dword [esp + 0x54]
movaps xmm5, xmmword [ecx + edi*8 - 8]
mulpd xmm5, xmmword [eax + edi*8]
addpd xmm4, xmm5
movaps xmm5, xmmword [ecx + edi*8 + 8]
mulpd xmm5, xmmword [eax + edi*8 + 0x10]
add edi, 4
addpd xmm1, xmm5
cmp edi, esi
jb 0x40834e
movaps xmmword [esp + 0x80], xmm1
movaps xmmword [esp + 0xa0], xmm4
movsd xmm5, qword [esp + 0x68]
mov ecx, dword [ebp + 8]
movaps xmm1, xmmword [esp + 0xa0]
addpd xmm1, xmmword [esp + 0x80]
movsd qword [esp + 0x70], xmm0
movaps xmm0, xmm1
unpckhpd xmm0, xmm1
addsd xmm1, xmm0
movsd xmm0, qword [esp + 0x70]
movsd qword [esp + 0xb0], xmm1
cmp esi, 0xc
jb 0x4087f8
cmp dword [esp + 0x5c], 0
je 0x408417
test byte [esp + 0x5c], 7
jne 0x4087a4
mov esi, dword [esp + 0x64]
shl esi, 4
add esi, ecx
mov edi, dword [esp + 0x10]
mov eax, dword [ebp + 0x10]
movsd xmm4, qword [esp + 0xb8]
movsd xmm1, qword [esi + edx*8]
mov dword [esp + 0x5c], 1
add eax, edi
mulsd xmm1, qword [eax + edx*8]
mov dword [esp + 0x20], eax
addsd xmm4, xmm1
movsd qword [esp + 0xb8], xmm4
jmp 0x40842d
mov eax, dword [ebp + 0x10]
mov edi, dword [esp + 0x10]
mov esi, dword [esp + 0x64]
shl esi, 4
add esi, ecx
add eax, edi
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x5c]
mov edi, eax
pxor xmm1, xmm1
neg edi
and edi, 3
neg edi
add edi, 0xc
mov dword [esp + 0x38], edi
mov edi, dword [esp + 0x64]
movsd xmm4, qword [esp + 0xb8]
movsd xmm1, xmm4
movaps xmmword [esp + 0x90], xmm1
lea eax, [eax + edi*2]
add eax, edx
lea eax, [ecx + eax*8]
test al, 0xf
je 0x4084c1
mov eax, dword [esp + 0x20]
lea esi, [esi + edx*8]
movaps xmm4, xmmword [esp + 0x90]
pxor xmm1, xmm1
mov ecx, dword [esp + 0x38]
mov edi, dword [esp + 0x5c]
lea eax, [eax + edx*8]
movsd qword [esp + 0x68], xmm5
movsd xmm5, qword [esi + edi*8]
movhpd xmm5, qword [esi + edi*8 + 8]
mulpd xmm5, xmmword [eax + edi*8]
addpd xmm4, xmm5
movsd xmm5, qword [esi + edi*8 + 0x10]
movhpd xmm5, qword [esi + edi*8 + 0x18]
mulpd xmm5, xmmword [eax + edi*8 + 0x10]
add edi, 4
addpd xmm1, xmm5
cmp edi, ecx
jb 0x40848e
jmp 0x408508
mov eax, dword [esp + 0x20]
lea esi, [esi + edx*8]
movaps xmm4, xmmword [esp + 0x90]
pxor xmm1, xmm1
mov ecx, dword [esp + 0x38]
mov edi, dword [esp + 0x5c]
lea eax, [eax + edx*8]
movsd qword [esp + 0x68], xmm5
movaps xmm5, xmmword [esi + edi*8]
mulpd xmm5, xmmword [eax + edi*8]
addpd xmm4, xmm5
movaps xmm5, xmmword [esi + edi*8 + 0x10]
mulpd xmm5, xmmword [eax + edi*8 + 0x10]
add edi, 4
addpd xmm1, xmm5
cmp edi, ecx
jb 0x4084e5
mov dword [esp + 0x38], ecx
movaps xmmword [esp + 0x90], xmm4
movsd xmm5, qword [esp + 0x68]
mov ecx, dword [ebp + 8]
movaps xmm4, xmmword [esp + 0x90]
addpd xmm4, xmm1
movaps xmm1, xmm4
unpckhpd xmm1, xmm4
addsd xmm4, xmm1
movsd qword [esp + 0xb8], xmm4
cmp dword [esp + 0x38], 0xc
jb 0x4087b1
add edx, 0xc
cmp edx, ebx
jle 0x407a67
movsd xmm4, qword [esp + 0x78]
mov eax, dword [ebp + 0x1c]
mov edx, dword [esp + 0x64]
mov ebx, dword [eax]
movsd xmm1, qword [ecx + ebx*8 - 8]
lea esi, [edx + ebx]
subsd xmm1, xmm5
movsd qword [ecx + ebx*8 - 8], xmm1
lea edi, [ebx + edx*2]
movsd xmm5, qword [ecx + esi*8 - 8]
subsd xmm5, xmm7
movsd qword [ecx + esi*8 - 8], xmm5
movsd xmm7, qword [ecx + edi*8]
subsd xmm7, xmm6
movsd qword [ecx + edi*8], xmm7
movsd xmm6, qword [ecx + ebx*8]
subsd xmm6, xmm4
movsd qword [ecx + ebx*8], xmm6
movsd xmm4, qword [ecx + esi*8]
subsd xmm4, xmm3
movsd qword [ecx + esi*8], xmm4
movsd xmm3, qword [ecx + edi*8 + 8]
subsd xmm3, xmm2
movsd qword [ecx + edi*8 + 8], xmm3
movsd xmm2, qword [ecx + ebx*8 + 8]
subsd xmm2, xmm0
movsd qword [ecx + ebx*8 + 8], xmm2
movsd xmm0, qword [ecx + esi*8 + 8]
subsd xmm0, qword [esp + 0xb0]
movsd qword [ecx + esi*8 + 8], xmm0
movsd xmm1, qword [ecx + edi*8 + 0x10]
subsd xmm1, qword [esp + 0xb8]
movsd qword [ecx + edi*8 + 0x10], xmm1
mov eax, dword [ebp + 0x20]
cmp dword [eax], 1
je 0x4086f5
mov ebx, dword [ebp + 0x14]
mov esi, dword [ebp + 0x1c]
mov eax, dword [ebp + 0xc]
mov edi, dword [ebx]
mov ebx, dword [esi]
mov esi, dword [ebp + 0x10]
mov eax, dword [eax]
movsd xmm2, qword [ecx + ebx*8 - 8]
lea edx, [edi + ebx]
movsd xmm6, qword [esi + edx*8 - 8]
lea edi, [ebx + edi*2]
mulsd xmm2, xmm6
lea edx, [ebx + eax]
movsd xmm3, qword [ecx + ebx*8]
lea eax, [ebx + eax*2]
movsd xmm0, qword [esi + edi*8]
subsd xmm3, xmm2
movsd qword [ecx + ebx*8], xmm3
movsd xmm4, qword [ecx + edx*8 - 8]
mulsd xmm4, xmm6
movsd xmm5, qword [ecx + edx*8]
subsd xmm5, xmm4
movsd qword [ecx + edx*8], xmm5
movsd xmm7, qword [ecx + eax*8]
mulsd xmm7, xmm6
movsd xmm1, qword [ecx + eax*8 + 8]
subsd xmm1, xmm7
movsd qword [ecx + eax*8 + 8], xmm1
movsd xmm2, qword [ecx + ebx*8 - 8]
mulsd xmm2, xmm0
movsd xmm4, qword [ecx + ebx*8 + 8]
movsd xmm3, qword [ecx + ebx*8]
subsd xmm4, xmm2
movsd xmm1, qword [esi + edi*8 + 8]
mulsd xmm3, xmm1
subsd xmm4, xmm3
movsd qword [ecx + ebx*8 + 8], xmm4
movsd xmm5, qword [ecx + edx*8 - 8]
mulsd xmm5, xmm0
movsd xmm2, qword [ecx + edx*8 + 8]
movsd xmm6, qword [ecx + edx*8]
subsd xmm2, xmm5
mulsd xmm6, xmm1
subsd xmm2, xmm6
movsd qword [ecx + edx*8 + 8], xmm2
movsd xmm3, qword [ecx + eax*8]
mulsd xmm3, xmm0
movsd xmm2, qword [ecx + eax*8 + 0x10]
movsd xmm0, qword [ecx + eax*8 + 8]
subsd xmm2, xmm3
mulsd xmm0, xmm1
subsd xmm2, xmm0
movsd qword [ecx + eax*8 + 0x10], xmm2
add esp, 0xc4
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0x1c
mov esi, ebx
xor ebx, ebx
pxor xmm3, xmm3
movsd qword [esp + 0xb0], xmm3
shl esi, 4
jmp 0x407462
xor eax, eax
pxor xmm2, xmm2
movsd qword [esp + 0xb8], xmm2
jmp 0x4076ca
xor eax, eax
pxor xmm5, xmm5
movaps xmm7, xmm5
movaps xmm6, xmm7
movaps xmm4, xmm6
movaps xmm0, xmm4
jmp 0x40799b
mov dword [esp + 0x34], 0
jmp 0x407b53
xor eax, eax
jmp 0x407c69
mov dword [esp + 0x40], 0
jmp 0x407d79
mov dword [esp + 0x3c], 0
jmp 0x407eb3
mov dword [esp + 0x4c], 0
jmp 0x407fdf
mov dword [esp + 0x44], 0
jmp 0x4080e1
mov dword [esp + 0x48], 0
jmp 0x4081f9
xor esi, esi
jmp 0x4083bc
mov dword [esp + 0x38], 0
jmp 0x40853d
mov eax, dword [esp + 0x64]
shl eax, 4
mov edi, dword [esp + 0x10]
add eax, ecx
mov esi, dword [ebp + 0x10]
movsd xmm4, qword [esp + 0xb8]
add esi, edi
mov edi, dword [esp + 0x38]
lea eax, [eax + edx*8]
lea esi, [esi + edx*8]
movsd xmm1, qword [eax + edi*8]
mulsd xmm1, qword [esi + edi*8]
inc edi
cmp edi, 0xc
addsd xmm4, xmm1
jb 0x4087d6
movsd qword [esp + 0xb8], xmm4
jmp 0x408548
mov eax, dword [esp + 0x64]
movsd xmm4, qword [esp + 0xb0]
lea edi, [ecx + eax*8]
lea eax, [edi + edx*8]
mov dword [esp + 4], eax
mov edi, dword [ebp + 0x10]
mov eax, dword [esp + 0x10]
add edi, eax
lea eax, [edi + edx*8]
mov edi, dword [esp + 4]
movsd xmm1, qword [edi + esi*8 - 8]
mulsd xmm1, qword [eax + esi*8]
inc esi
cmp esi, 0xc
addsd xmm4, xmm1
jb 0x40881f
movsd qword [esp + 0xb0], xmm4
jmp 0x4083c5
mov esi, dword [ebp + 0x10]
lea eax, [ecx + edx*8]
mov edi, dword [esp + 0x10]
add esi, edi
mov edi, dword [esp + 0x48]
lea esi, [esi + edx*8]
movsd xmm1, qword [eax + edi*8 - 8]
mulsd xmm1, qword [esi + edi*8]
inc edi
cmp edi, 0xc
addsd xmm0, xmm1
jb 0x408855
jmp 0x408204
mov eax, dword [esp + 0x64]
shl eax, 4
add eax, ecx
mov esi, dword [esp + 0x14]
mov edi, dword [esp + 0x44]
lea eax, [eax + edx*8]
lea esi, [esi + edx*8]
movsd xmm1, qword [eax + edi*8]
mulsd xmm1, qword [esi + edi*8 - 8]
inc edi
cmp edi, 0xc
addsd xmm2, xmm1
jb 0x408886
jmp 0x4080ec
mov edi, dword [esp + 0x64]
lea esi, [ecx + edi*8]
mov ecx, dword [esp + 0x4c]
lea edi, [esi + edx*8]
mov esi, dword [esp + 0x14]
lea esi, [esi + edx*8]
movsd xmm1, qword [edi + ecx*8 - 8]
mulsd xmm1, qword [esi + ecx*8 - 8]
inc ecx
cmp ecx, 0xc
addsd xmm3, xmm1
jb 0x4088b5
mov ecx, dword [ebp + 8]
jmp 0x407fea
mov edi, dword [esp + 0x14]
lea esi, [ecx + edx*8]
movsd xmm4, qword [esp + 0x78]
lea edi, [edi + edx*8]
mov ecx, edi
mov edi, dword [esp + 0x3c]
movsd xmm1, qword [esi + edi*8 - 8]
mulsd xmm1, qword [ecx + edi*8 - 8]
inc edi
cmp edi, 0xc
addsd xmm4, xmm1
jb 0x4088e9
movsd qword [esp + 0x78], xmm4
mov ecx, dword [ebp + 8]
jmp 0x407ebe
mov eax, dword [esp + 0x64]
shl eax, 4
add eax, ecx
mov esi, dword [ebp + 0x10]
mov edi, dword [esp + 0x40]
lea eax, [eax + edx*8]
lea esi, [esi + edx*8]
movsd xmm1, qword [eax + edi*8]
mulsd xmm1, qword [esi + edi*8 - 8]
inc edi
cmp edi, 0xc
addsd xmm6, xmm1
jb 0x408923
jmp 0x407d84
mov esi, dword [esp + 0x64]
lea edi, [ecx + esi*8]
lea esi, [edi + edx*8]
mov edi, dword [ebp + 0x10]
lea edi, [edi + edx*8]
movsd xmm1, qword [esi + eax*8 - 8]
mulsd xmm1, qword [edi + eax*8 - 8]
inc eax
cmp eax, 0xc
addsd xmm7, xmm1
jb 0x40894d
jmp 0x407c72
mov esi, dword [ebp + 0x10]
lea eax, [ecx + edx*8]
mov edi, dword [esp + 0x34]
lea esi, [esi + edx*8]
movsd xmm1, qword [eax + edi*8 - 8]
mulsd xmm1, qword [esi + edi*8 - 8]
inc edi
cmp edi, 0xc
addsd xmm5, xmm1
jb 0x408975
jmp 0x407b5e
pxor xmm1, xmm1
movaps xmm0, xmm1
movaps xmm4, xmm1
movaps xmm5, xmm1
movaps xmm6, xmm1
jmp 0x40784f
pxor xmm4, xmm4
movaps xmm0, xmm4
jmp 0x40758b
pxor xmm2, xmm2
movaps xmm0, xmm2
jmp 0x407332
mov esi, dword [esp + 0x40]
xor ebx, ebx
pxor xmm3, xmm3
movsd qword [esp + 0xb0], xmm3
shl esi, 4
jmp 0x407462
pxor xmm5, xmm5
movaps xmm7, xmm5
movaps xmm6, xmm7
movaps xmm4, xmm6
movaps xmm3, xmm4
movaps xmm2, xmm3
movaps xmm0, xmm2
movsd qword [esp + 0xb0], xmm0
movsd qword [esp + 0xb8], xmm0
jmp 0x407a30