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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
push esi
push edi
push ebx
sub esp, 0xf4
mov eax, dword [ebp + 0x18]
mov ebx, dword [ebp + 8]
mov esi, dword [eax]
test esi, esi
jle 0x402cdc
mov eax, 0x2aaaaaab
mov ecx, esi
imul esi
sar edx, 1
sar ecx, 0x1f
sub edx, ecx
lea edi, [edx*8]
shl edx, 2
add edx, edi
neg edx
add edx, esi
mov dword [esp + 0xb4], edx
test edx, edx
jle 0x403a59
mov edx, dword [ebp + 0x14]
mov eax, dword [ebp + 0x10]
mov edx, dword [edx]
lea ecx, [edx + edx*4]
lea edi, [eax + ecx*8]
mov dword [esp + 0x10], edi
and edi, 0xf
je 0x4028c4
test edi, 7
jne 0x402e13
push 1
pop edi
lea eax, [edi + 2]
cmp eax, dword [esp + 0xb4]
jg 0x402e13
mov ecx, dword [esp + 0xb4]
mov eax, ecx
sub eax, edi
and eax, 1
pxor xmm7, xmm7
neg eax
movaps xmm1, xmm7
add eax, ecx
movaps xmm6, xmm1
mov dword [esp + 8], eax
movaps xmm0, xmm6
mov eax, dword [ebp + 0x10]
movaps xmm3, xmm0
movaps xmm2, xmm3
lea ecx, [eax + edx*8]
mov dword [esp + 0x14], ecx
mov ecx, edx
shl ecx, 4
add ecx, eax
mov dword [esp + 0x18], ecx
lea ecx, [edx + edx*2]
lea ecx, [eax + ecx*8]
mov dword [esp + 0x1c], ecx
mov ecx, edx
shl ecx, 5
add ecx, eax
mov eax, dword [esp + 8]
test edi, edi
jbe 0x4029bc
mov dword [esp + 4], 0
mov dword [esp + 0xc], edx
mov dword [esp + 8], eax
mov dword [esp], esi
mov edx, dword [esp + 4]
mov eax, dword [ebp + 0x10]
movsd xmm4, qword [ebx + edx*8]
movsd xmm5, qword [eax + edx*8]
mulsd xmm5, xmm4
mov esi, dword [esp + 0x14]
addsd xmm7, xmm5
movsd xmm5, qword [esi + edx*8]
mulsd xmm5, xmm4
mov esi, dword [esp + 0x18]
addsd xmm1, xmm5
movsd xmm5, qword [esi + edx*8 + 8]
mulsd xmm5, xmm4
mov esi, dword [esp + 0x1c]
addsd xmm6, xmm5
movsd xmm5, qword [esi + edx*8 + 0x18]
mulsd xmm5, xmm4
mov esi, dword [esp + 0x10]
addsd xmm0, xmm5
movsd xmm5, qword [ecx + edx*8 + 0x30]
mulsd xmm5, xmm4
mulsd xmm4, qword [esi + edx*8 + 0x50]
addsd xmm3, xmm5
addsd xmm2, xmm4
inc edx
cmp edx, edi
jb 0x402949
mov edx, dword [esp + 0xc]
mov eax, dword [esp + 8]
mov esi, dword [esp]
mov dword [esp + 0xc], edx
pxor xmm4, xmm4
pxor xmm5, xmm5
movsd xmm4, xmm1
movsd xmm5, xmm7
pxor xmm1, xmm1
movsd xmm1, xmm6
pxor xmm6, xmm6
movsd xmm6, xmm0
pxor xmm0, xmm0
movsd xmm0, xmm3
pxor xmm3, xmm3
mov dword [esp + 8], eax
movsd xmm3, xmm2
mov dword [esp], esi
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x18]
mov esi, dword [ebp + 0x10]
movsd xmm2, qword [ebx + edi*8]
movhpd xmm2, qword [ebx + edi*8 + 8]
movsd xmm7, qword [esi + edi*8]
movhpd xmm7, qword [esi + edi*8 + 8]
mulpd xmm7, xmm2
mov esi, dword [esp + 0x14]
addpd xmm5, xmm7
movsd xmm7, qword [esi + edi*8]
movhpd xmm7, qword [esi + edi*8 + 8]
mulpd xmm7, xmm2
addpd xmm4, xmm7
movsd xmm7, qword [eax + edi*8 + 8]
movhpd xmm7, qword [eax + edi*8 + 0x10]
mulpd xmm7, xmm2
addpd xmm1, xmm7
movsd xmm7, qword [edx + edi*8 + 0x18]
movhpd xmm7, qword [edx + edi*8 + 0x20]
mulpd xmm7, xmm2
mov esi, dword [esp + 0x10]
addpd xmm6, xmm7
movsd xmm7, qword [ecx + edi*8 + 0x30]
movhpd xmm7, qword [ecx + edi*8 + 0x38]
mulpd xmm7, xmm2
mulpd xmm2, xmmword [esi + edi*8 + 0x50]
addpd xmm0, xmm7
addpd xmm3, xmm2
add edi, 2
cmp edi, dword [esp + 8]
jb 0x4029ff
movaps xmm7, xmm0
movaps xmm2, xmm3
unpckhpd xmm7, xmm0
unpckhpd xmm2, xmm3
addsd xmm0, xmm7
addsd xmm3, xmm2
movaps xmm2, xmm6
movsd qword [esp + 0xb8], xmm0
movaps xmm0, xmm1
unpckhpd xmm0, xmm1
unpckhpd xmm2, xmm6
addsd xmm1, xmm0
addsd xmm6, xmm2
movaps xmm0, xmm4
unpckhpd xmm0, xmm4
mov edx, dword [esp + 0xc]
addsd xmm4, xmm0
movaps xmm0, xmm5
unpckhpd xmm0, xmm5
mov eax, dword [esp + 8]
addsd xmm5, xmm0
mov esi, dword [esp]
movsd qword [esp + 0xe0], xmm3
movsd qword [esp + 0xc0], xmm6
movsd qword [esp + 0xd8], xmm1
movsd qword [esp + 0xc8], xmm4
movsd qword [esp + 0xd0], xmm5
cmp eax, dword [esp + 0xb4]
jae 0x402c2a
mov ecx, dword [ebp + 0x10]
mov dword [esp], esi
movsd xmm6, qword [esp + 0xd0]
movsd xmm0, qword [esp + 0xc8]
lea edi, [ecx + edx*8]
mov dword [esp + 4], edi
mov edi, edx
shl edi, 4
add edi, ecx
mov dword [esp + 8], edi
lea edi, [edx + edx*2]
shl edx, 5
lea edi, [ecx + edi*8]
add edx, ecx
mov dword [esp + 0xc], edx
mov ecx, dword [esp + 8]
movsd xmm2, qword [esp + 0xd8]
movsd xmm3, qword [esp + 0xc0]
movsd xmm4, qword [esp + 0xb8]
movsd xmm1, qword [esp + 0xe0]
mov edx, dword [esp + 4]
mov ebx, dword [esp + 0x10]
mov esi, dword [ebp + 8]
movsd xmm5, qword [esi + eax*8]
mov esi, dword [ebp + 0x10]
movsd xmm7, qword [esi + eax*8]
mulsd xmm7, xmm5
mov esi, dword [esp + 0xc]
addsd xmm6, xmm7
movsd xmm7, qword [edx + eax*8]
mulsd xmm7, xmm5
addsd xmm0, xmm7
movsd xmm7, qword [ecx + eax*8 + 8]
mulsd xmm7, xmm5
addsd xmm2, xmm7
movsd xmm7, qword [edi + eax*8 + 0x18]
mulsd xmm7, xmm5
addsd xmm3, xmm7
movsd xmm7, qword [esi + eax*8 + 0x30]
mulsd xmm7, xmm5
mulsd xmm5, qword [ebx + eax*8 + 0x50]
addsd xmm4, xmm7
addsd xmm1, xmm5
inc eax
cmp eax, dword [esp + 0xb4]
jb 0x402b87
movsd qword [esp + 0xd0], xmm6
movsd qword [esp + 0xc8], xmm0
movsd qword [esp + 0xd8], xmm2
movsd qword [esp + 0xc0], xmm3
movsd qword [esp + 0xb8], xmm4
movsd qword [esp + 0xe0], xmm1
mov esi, dword [esp]
mov ebx, dword [ebp + 8]
mov edi, dword [esp + 0xb4]
mov eax, esi
cdq
mov ecx, edx
lea edi, [edi + 1]
mov eax, edi
cdq
mov eax, esi
sub eax, edi
push 0
sbb ecx, edx
add eax, 0xc
push 0xc
adc ecx, 0
push ecx
push eax
call fcn.0058d700
cmp esi, edi
jge 0x402e54
mov eax, dword [ebp + 0x1c]
mov edx, dword [eax]
movsd xmm0, qword [ebx + edx*8 - 8]
movsd xmm1, qword [ebx + edx*8]
movsd xmm2, qword [ebx + edx*8 + 8]
movsd xmm3, qword [ebx + edx*8 + 0x10]
movsd xmm4, qword [ebx + edx*8 + 0x18]
movsd xmm5, qword [ebx + edx*8 + 0x20]
subsd xmm0, qword [esp + 0xd0]
subsd xmm1, qword [esp + 0xc8]
subsd xmm2, qword [esp + 0xd8]
subsd xmm3, qword [esp + 0xc0]
subsd xmm4, qword [esp + 0xb8]
subsd xmm5, qword [esp + 0xe0]
movsd qword [ebx + edx*8 - 8], xmm0
movsd qword [ebx + edx*8], xmm1
movsd qword [ebx + edx*8 + 8], xmm2
movsd qword [ebx + edx*8 + 0x10], xmm3
movsd qword [ebx + edx*8 + 0x18], xmm4
movsd qword [ebx + edx*8 + 0x20], xmm5
mov eax, dword [ebp + 0x20]
cmp dword [eax], 1
je 0x402e04
mov edi, dword [ebp + 0x1c]
mov esi, dword [ebp + 0x14]
mov eax, dword [ebp + 0x10]
mov edx, dword [edi]
mov ecx, dword [esi]
movsd xmm4, qword [ebx + edx*8 - 8]
movaps xmm5, xmm4
lea esi, [ecx + edx]
mulsd xmm5, qword [eax + esi*8 - 8]
lea esi, [ecx + ecx*2]
add esi, edx
lea edi, [edx + ecx*2]
movsd xmm3, qword [ebx + edx*8]
movsd xmm1, qword [ebx + edx*8 + 0x10]
subsd xmm3, xmm5
movsd xmm0, qword [eax + esi*8 + 0x10]
mulsd xmm0, xmm4
movsd xmm5, qword [eax + esi*8 + 0x18]
subsd xmm1, xmm0
mulsd xmm5, xmm3
movsd xmm6, qword [eax + edi*8]
subsd xmm1, xmm5
mulsd xmm6, xmm4
movsd xmm7, qword [eax + edi*8 + 8]
lea edi, [edx + ecx*4]
movsd xmm2, qword [ebx + edx*8 + 8]
lea ecx, [ecx + ecx*4]
mulsd xmm7, xmm3
subsd xmm2, xmm6
movsd xmm5, qword [eax + edi*8 + 0x28]
subsd xmm2, xmm7
mulsd xmm5, xmm4
movsd xmm7, qword [eax + edi*8 + 0x30]
add ecx, edx
movsd xmm0, qword [ebx + edx*8 + 0x18]
movsd xmm6, qword [eax + esi*8 + 0x20]
subsd xmm0, xmm5
mulsd xmm7, xmm3
mulsd xmm6, xmm2
mulsd xmm4, qword [eax + ecx*8 + 0x48]
subsd xmm0, xmm7
subsd xmm1, xmm6
movsd xmm5, qword [eax + edi*8 + 0x38]
mulsd xmm5, xmm2
movsd qword [ebx + edx*8], xmm3
subsd xmm0, xmm5
mulsd xmm3, qword [eax + ecx*8 + 0x50]
movsd xmm5, qword [ebx + edx*8 + 0x20]
movsd xmm6, qword [eax + edi*8 + 0x40]
subsd xmm5, xmm4
mulsd xmm6, xmm1
subsd xmm5, xmm3
subsd xmm0, xmm6
movsd qword [ebx + edx*8 + 8], xmm2
mulsd xmm2, qword [eax + ecx*8 + 0x58]
movsd qword [ebx + edx*8 + 0x10], xmm1
subsd xmm5, xmm2
mulsd xmm1, qword [eax + ecx*8 + 0x60]
movsd qword [ebx + edx*8 + 0x18], xmm0
subsd xmm5, xmm1
mulsd xmm0, qword [eax + ecx*8 + 0x68]
subsd xmm5, xmm0
movsd qword [ebx + edx*8 + 0x20], xmm5
add esp, 0xf4
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0x1c
xor eax, eax
pxor xmm0, xmm0
movsd qword [esp + 0xd0], xmm0
movsd qword [esp + 0xc8], xmm0
movsd qword [esp + 0xd8], xmm0
movsd qword [esp + 0xc0], xmm0
movsd qword [esp + 0xb8], xmm0
movsd qword [esp + 0xe0], xmm0
jmp 0x402b11
mov edx, dword [ebp + 0x14]
mov edi, dword [esp + 0xb4]
mov dword [esp + 0xa4], 0
mov esi, dword [edx]
mov edx, dword [ebp + 0x10]
lea ecx, [edi*8 + 8]
mov dword [esp + 0xa0], ecx
mov dword [esp + 0xa8], esi
movsd xmm5, qword [esp + 0xd0]
add ecx, edx
mov edx, esi
lea edi, [ecx + esi*8]
shl edx, 4
mov dword [esp + 0x94], edi
mov dword [esp + 0xac], ecx
mov dword [esp + 0xc], edx
movsd xmm2, qword [esp + 0xc8]
lea edi, [ecx + edx]
mov dword [esp + 0x8c], edi
lea edi, [esi + esi*2]
mov dword [esp + 0x9c], edi
lea edi, [ecx + edi*8]
mov dword [esp + 0x84], edi
mov edi, esi
shl edi, 5
lea esi, [esi + esi*4]
mov dword [esp + 4], edi
mov dword [esp + 0x98], esi
movsd xmm4, qword [esp + 0xd8]
movsd xmm3, qword [esp + 0xc0]
add edi, ecx
movsd xmm0, qword [esp + 0xb8]
lea ecx, [ecx + esi*8]
mov dword [esp + 0x90], ecx
movsd xmm1, qword [esp + 0xe0]
mov ecx, dword [esp + 0xa4]
mov dword [esp + 0x88], edi
mov esi, dword [esp + 0xac]
lea edx, [ecx + ecx*2]
shl edx, 5
lea edi, [edx + esi + 8]
and edi, 0xf
mov dword [esp + 0x24], edi
je 0x402f84
test byte [esp + 0x24], 7
jne 0x403881
mov edi, dword [esp + 0xa0]
mov esi, dword [ebp + 0x10]
mov dword [esp + 0xa4], ecx
mov dword [esp + 0x24], 1
lea ecx, [ebx + edi]
movsd xmm6, qword [ecx + edx - 8]
add esi, edi
mulsd xmm6, qword [esi + edx - 8]
mov dword [esp + 0x3c], ecx
addsd xmm5, xmm6
mov dword [esp + 0x34], esi
mov ecx, dword [esp + 0xa4]
jmp 0x402f9b
mov esi, dword [esp + 0xa0]
lea edi, [ebx + esi]
mov dword [esp + 0x3c], edi
mov edi, dword [ebp + 0x10]
add esi, edi
mov dword [esp + 0x34], esi
mov esi, dword [esp + 0x24]
mov edi, esi
pxor xmm6, xmm6
neg edi
movaps xmm7, xmm6
and edi, 3
movsd xmm7, xmm5
neg edi
add edi, 0xc
mov dword [esp + 0x58], edi
mov edi, dword [esp + 0xb4]
mov dword [esp + 0xb0], edx
lea edx, [ecx*8]
lea edx, [edx + ecx*4]
lea esi, [esi + edi + 1]
add edx, esi
lea edx, [ebx + edx*8 + 8]
test dl, 0xf
mov edx, dword [esp + 0xb0]
je 0x403037
add dword [esp + 0x3c], edx
add dword [esp + 0x34], edx
mov dword [esp], eax
mov eax, dword [esp + 0x58]
mov ebx, dword [esp + 0x34]
mov esi, dword [esp + 0x3c]
mov edi, dword [esp + 0x24]
movsd xmm5, qword [esi + edi*8 - 8]
movhpd xmm5, qword [esi + edi*8]
mulpd xmm5, xmmword [ebx + edi*8 - 8]
addpd xmm7, xmm5
movsd xmm5, qword [esi + edi*8 + 8]
movhpd xmm5, qword [esi + edi*8 + 0x10]
mulpd xmm5, xmmword [ebx + edi*8 + 8]
add edi, 4
addpd xmm6, xmm5
cmp edi, eax
jb 0x403003
jmp 0x403077
add dword [esp + 0x3c], edx
add dword [esp + 0x34], edx
mov dword [esp], eax
mov eax, dword [esp + 0x58]
mov ebx, dword [esp + 0x34]
mov esi, dword [esp + 0x3c]
mov edi, dword [esp + 0x24]
movaps xmm5, xmmword [esi + edi*8 - 8]
mulpd xmm5, xmmword [ebx + edi*8 - 8]
addpd xmm7, xmm5
movaps xmm5, xmmword [esi + edi*8 + 8]
mulpd xmm5, xmmword [ebx + edi*8 + 8]
add edi, 4
addpd xmm6, xmm5
cmp edi, eax
jb 0x403052
mov dword [esp + 0x58], eax
mov eax, dword [esp]
mov ebx, dword [ebp + 8]
addpd xmm7, xmm6
movaps xmm5, xmm7
unpckhpd xmm5, xmm7
addsd xmm7, xmm5
movaps xmm5, xmm7
cmp dword [esp + 0x58], 0xc
jb 0x403a16
mov esi, dword [esp + 0x94]
lea edi, [edx + esi + 8]
and edi, 0xf
mov dword [esp + 0x2c], edi
je 0x403106
test byte [esp + 0x2c], 7
jne 0x40388c
mov edi, dword [esp + 0xa0]
mov esi, dword [ebp + 0x10]
mov dword [esp + 0xa4], ecx
mov dword [esp + 0x2c], 1
lea ecx, [ebx + edi]
movsd xmm6, qword [ecx + edx - 8]
add esi, edi
mov edi, dword [esp + 0xa8]
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0xa4]
lea esi, [esi + edi*8]
mov dword [esp + 0x38], esi
mulsd xmm6, qword [esi + edx - 8]
addsd xmm2, xmm6
jmp 0x403127
mov esi, dword [esp + 0xa0]
lea edi, [ebx + esi]
mov dword [esp + 0x10], edi
mov edi, dword [ebp + 0x10]
add esi, edi
mov edi, dword [esp + 0xa8]
lea esi, [esi + edi*8]
mov dword [esp + 0x38], esi
mov esi, dword [esp + 0x2c]
mov edi, esi
pxor xmm6, xmm6
neg edi
movaps xmm7, xmm6
and edi, 3
movsd xmm7, xmm2
neg edi
add edi, 0xc
mov dword [esp + 0x64], edi
mov edi, dword [esp + 0xb4]
mov dword [esp + 0xb0], edx
lea edx, [ecx*8]
lea edx, [edx + ecx*4]
lea esi, [esi + edi + 1]
add edx, esi
lea edx, [ebx + edx*8 + 8]
test dl, 0xf
mov edx, dword [esp + 0xb0]
je 0x4031c3
add dword [esp + 0x10], edx
add dword [esp + 0x38], edx
mov dword [esp], eax
mov eax, dword [esp + 0x64]
mov ebx, dword [esp + 0x38]
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0x2c]
movsd xmm2, qword [esi + edi*8 - 8]
movhpd xmm2, qword [esi + edi*8]
mulpd xmm2, xmmword [ebx + edi*8 - 8]
addpd xmm7, xmm2
movsd xmm2, qword [esi + edi*8 + 8]
movhpd xmm2, qword [esi + edi*8 + 0x10]
mulpd xmm2, xmmword [ebx + edi*8 + 8]
add edi, 4
addpd xmm6, xmm2
cmp edi, eax
jb 0x40318f
jmp 0x403203
add dword [esp + 0x10], edx
add dword [esp + 0x38], edx
mov dword [esp], eax
mov eax, dword [esp + 0x64]
mov ebx, dword [esp + 0x38]
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0x2c]
movaps xmm2, xmmword [esi + edi*8 - 8]
mulpd xmm2, xmmword [ebx + edi*8 - 8]
addpd xmm7, xmm2
movaps xmm2, xmmword [esi + edi*8 + 8]
mulpd xmm2, xmmword [ebx + edi*8 + 8]
add edi, 4
addpd xmm6, xmm2
cmp edi, eax
jb 0x4031de
mov dword [esp + 0x64], eax
mov eax, dword [esp]
mov ebx, dword [ebp + 8]
addpd xmm7, xmm6
movaps xmm2, xmm7
unpckhpd xmm2, xmm7
addsd xmm7, xmm2
movaps xmm2, xmm7
cmp dword [esp + 0x64], 0xc
jb 0x4039cf
mov esi, dword [esp + 0x8c]
lea edi, [edx + esi]
and edi, 0xf
mov dword [esp + 0x28], edi
je 0x40328a
test byte [esp + 0x28], 7
jne 0x403897
mov edi, dword [esp + 0xa0]
mov esi, dword [ebp + 0x10]
mov dword [esp + 0xa4], ecx
mov dword [esp + 0x28], 1
lea ecx, [ebx + edi]
movsd xmm6, qword [ecx + edx - 8]
add esi, edi
add esi, dword [esp + 0xc]
mov dword [esp + 0x48], ecx
mov dword [esp + 0x54], esi
mulsd xmm6, qword [esi + edx]
mov ecx, dword [esp + 0xa4]
addsd xmm4, xmm6
jmp 0x4032a5
mov esi, dword [esp + 0xa0]
lea edi, [ebx + esi]
mov dword [esp + 0x48], edi
mov edi, dword [ebp + 0x10]
add esi, edi
add esi, dword [esp + 0xc]
mov dword [esp + 0x54], esi
mov esi, dword [esp + 0x28]
mov edi, esi
pxor xmm6, xmm6
neg edi
movaps xmm7, xmm6
and edi, 3
movsd xmm7, xmm4
neg edi
add edi, 0xc
mov dword [esp + 0x50], edi
mov edi, dword [esp + 0xb4]
mov dword [esp + 0xb0], edx
lea edx, [ecx*8]
lea edx, [edx + ecx*4]
lea esi, [esi + edi + 1]
add edx, esi
lea edx, [ebx + edx*8 + 8]
test dl, 0xf
mov edx, dword [esp + 0xb0]
je 0x403340
add dword [esp + 0x48], edx
add dword [esp + 0x54], edx
mov dword [esp], eax
mov eax, dword [esp + 0x50]
mov ebx, dword [esp + 0x54]
mov esi, dword [esp + 0x48]
mov edi, dword [esp + 0x28]
movsd xmm4, qword [esi + edi*8 - 8]
movhpd xmm4, qword [esi + edi*8]
mulpd xmm4, xmmword [ebx + edi*8]
addpd xmm7, xmm4
movsd xmm4, qword [esi + edi*8 + 8]
movhpd xmm4, qword [esi + edi*8 + 0x10]
mulpd xmm4, xmmword [ebx + edi*8 + 0x10]
add edi, 4
addpd xmm6, xmm4
cmp edi, eax
jb 0x40330d
jmp 0x40337f
add dword [esp + 0x48], edx
add dword [esp + 0x54], edx
mov dword [esp], eax
mov eax, dword [esp + 0x50]
mov ebx, dword [esp + 0x54]
mov esi, dword [esp + 0x48]
mov edi, dword [esp + 0x28]
movaps xmm4, xmmword [esi + edi*8 - 8]
mulpd xmm4, xmmword [ebx + edi*8]
addpd xmm7, xmm4
movaps xmm4, xmmword [esi + edi*8 + 8]
mulpd xmm4, xmmword [ebx + edi*8 + 0x10]
add edi, 4
addpd xmm6, xmm4
cmp edi, eax
jb 0x40335b
mov dword [esp + 0x50], eax
mov eax, dword [esp]
mov ebx, dword [ebp + 8]
addpd xmm7, xmm6
movaps xmm4, xmm7
unpckhpd xmm4, xmm7
addsd xmm7, xmm4
movaps xmm4, xmm7
cmp dword [esp + 0x50], 0xc
jb 0x40398f
mov esi, dword [esp + 0x84]
lea edi, [edx + esi]
and edi, 0xf
mov dword [esp + 0x20], edi
je 0x40340d
test byte [esp + 0x20], 7
jne 0x4038a2
mov edi, dword [esp + 0xa0]
mov esi, dword [ebp + 0x10]
mov dword [esp + 0xa4], ecx
mov dword [esp + 0x20], 1
lea ecx, [ebx + edi]
movsd xmm6, qword [ecx + edx - 8]
add esi, edi
mov edi, dword [esp + 0x9c]
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0xa4]
lea esi, [esi + edi*8]
mov dword [esp + 0x40], esi
mulsd xmm6, qword [esi + edx + 0x10]
addsd xmm3, xmm6
jmp 0x40342e
mov esi, dword [esp + 0xa0]
lea edi, [ebx + esi]
mov dword [esp + 0x14], edi
mov edi, dword [ebp + 0x10]
add esi, edi
mov edi, dword [esp + 0x9c]
lea esi, [esi + edi*8]
mov dword [esp + 0x40], esi
mov esi, dword [esp + 0x20]
mov edi, esi
pxor xmm6, xmm6
neg edi
movaps xmm7, xmm6
and edi, 3
movsd xmm7, xmm3
neg edi
add edi, 0xc
mov dword [esp + 0x60], edi
mov edi, dword [esp + 0xb4]
mov dword [esp + 0xb0], edx
lea edx, [ecx*8]
lea edx, [edx + ecx*4]
lea esi, [esi + edi + 1]
add edx, esi
lea edx, [ebx + edx*8 + 8]
test dl, 0xf
mov edx, dword [esp + 0xb0]
je 0x4034ca
add dword [esp + 0x14], edx
add dword [esp + 0x40], edx
mov dword [esp], eax
mov eax, dword [esp + 0x60]
mov ebx, dword [esp + 0x40]
mov esi, dword [esp + 0x14]
mov edi, dword [esp + 0x20]
movsd xmm3, qword [esi + edi*8 - 8]
movhpd xmm3, qword [esi + edi*8]
mulpd xmm3, xmmword [ebx + edi*8 + 0x10]
addpd xmm7, xmm3
movsd xmm3, qword [esi + edi*8 + 8]
movhpd xmm3, qword [esi + edi*8 + 0x10]
mulpd xmm3, xmmword [ebx + edi*8 + 0x20]
add edi, 4
addpd xmm6, xmm3
cmp edi, eax
jb 0x403496
jmp 0x40350a
add dword [esp + 0x14], edx
add dword [esp + 0x40], edx
mov dword [esp], eax
mov eax, dword [esp + 0x60]
mov ebx, dword [esp + 0x40]
mov esi, dword [esp + 0x14]
mov edi, dword [esp + 0x20]
movaps xmm3, xmmword [esi + edi*8 - 8]
mulpd xmm3, xmmword [ebx + edi*8 + 0x10]
addpd xmm7, xmm3
movaps xmm3, xmmword [esi + edi*8 + 8]
mulpd xmm3, xmmword [ebx + edi*8 + 0x20]
add edi, 4
addpd xmm6, xmm3
cmp edi, eax
jb 0x4034e5
mov dword [esp + 0x60], eax
mov eax, dword [esp]
mov ebx, dword [ebp + 8]
addpd xmm7, xmm6
movaps xmm3, xmm7
unpckhpd xmm3, xmm7
addsd xmm7, xmm3
movaps xmm3, xmm7
cmp dword [esp + 0x60], 0xc
jb 0x403948
mov esi, dword [esp + 0x88]
lea edi, [edx + esi + 8]
and edi, 0xf
mov dword [esp + 0x1c], edi
je 0x403593
test byte [esp + 0x1c], 7
jne 0x4038ad
mov edi, dword [esp + 0xa0]
mov esi, dword [ebp + 0x10]
mov dword [esp + 0xa4], ecx
mov dword [esp + 0x1c], 1
lea ecx, [ebx + edi]
movsd xmm6, qword [ecx + edx - 8]
add esi, edi
add esi, dword [esp + 4]
mov dword [esp + 0x44], ecx
mov dword [esp + 0x68], esi
mulsd xmm6, qword [esi + edx + 0x28]
mov ecx, dword [esp + 0xa4]
addsd xmm0, xmm6
jmp 0x4035ae
mov esi, dword [esp + 0xa0]
lea edi, [ebx + esi]
mov dword [esp + 0x44], edi
mov edi, dword [ebp + 0x10]
add esi, edi
add esi, dword [esp + 4]
mov dword [esp + 0x68], esi
mov esi, dword [esp + 0x1c]
mov edi, esi
pxor xmm6, xmm6
neg edi
movaps xmm7, xmm6
and edi, 3
movsd xmm7, xmm0
neg edi
add edi, 0xc
mov dword [esp + 0x5c], edi
mov edi, dword [esp + 0xb4]
mov dword [esp + 0xb0], edx
lea edx, [ecx*8]
lea edx, [edx + ecx*4]
lea esi, [esi + edi + 1]
add edx, esi
lea edx, [ebx + edx*8 + 8]
test dl, 0xf
mov edx, dword [esp + 0xb0]
je 0x40364a
add dword [esp + 0x44], edx
add dword [esp + 0x68], edx
mov dword [esp], eax
mov eax, dword [esp + 0x5c]
mov ebx, dword [esp + 0x68]
mov esi, dword [esp + 0x44]
mov edi, dword [esp + 0x1c]
movsd xmm0, qword [esi + edi*8 - 8]
movhpd xmm0, qword [esi + edi*8]
mulpd xmm0, xmmword [ebx + edi*8 + 0x28]
addpd xmm7, xmm0
movsd xmm0, qword [esi + edi*8 + 8]
movhpd xmm0, qword [esi + edi*8 + 0x10]
mulpd xmm0, xmmword [ebx + edi*8 + 0x38]
add edi, 4
addpd xmm6, xmm0
cmp edi, eax
jb 0x403616
jmp 0x40368a
add dword [esp + 0x44], edx
add dword [esp + 0x68], edx
mov dword [esp], eax
mov eax, dword [esp + 0x5c]
mov ebx, dword [esp + 0x68]
mov esi, dword [esp + 0x44]
mov edi, dword [esp + 0x1c]
movaps xmm0, xmmword [esi + edi*8 - 8]
mulpd xmm0, xmmword [ebx + edi*8 + 0x28]
addpd xmm7, xmm0
movaps xmm0, xmmword [esi + edi*8 + 8]
mulpd xmm0, xmmword [ebx + edi*8 + 0x38]
add edi, 4
addpd xmm6, xmm0
cmp edi, eax
jb 0x403665
mov dword [esp + 0x5c], eax
mov eax, dword [esp]
mov ebx, dword [ebp + 8]
addpd xmm7, xmm6
movaps xmm0, xmm7
unpckhpd xmm0, xmm7
addsd xmm7, xmm0
movaps xmm0, xmm7
cmp dword [esp + 0x5c], 0xc
jb 0x403907
mov esi, dword [esp + 0x90]
lea edi, [edx + esi + 8]
and edi, 0xf
mov dword [esp + 0x18], edi
je 0x403719
test byte [esp + 0x18], 7
jne 0x4038b8
mov edi, dword [esp + 0xa0]
mov esi, dword [ebp + 0x10]
mov dword [esp + 0xa4], ecx
mov dword [esp + 0x18], 1
lea ecx, [ebx + edi]
movsd xmm6, qword [ecx + edx - 8]
add esi, edi
mov edi, dword [esp + 0x98]
mov dword [esp + 8], ecx
mov ecx, dword [esp + 0xa4]
lea esi, [esi + edi*8]
mov dword [esp + 0x30], esi
mulsd xmm6, qword [esi + edx + 0x48]
addsd xmm1, xmm6
jmp 0x40373a
mov esi, dword [esp + 0xa0]
lea edi, [ebx + esi]
mov dword [esp + 8], edi
mov edi, dword [ebp + 0x10]
add esi, edi
mov edi, dword [esp + 0x98]
lea esi, [esi + edi*8]
mov dword [esp + 0x30], esi
mov esi, dword [esp + 0x18]
mov edi, esi
pxor xmm6, xmm6
neg edi
movaps xmm7, xmm6
and edi, 3
movsd xmm7, xmm1
neg edi
add edi, 0xc
mov dword [esp + 0x4c], edi
mov edi, dword [esp + 0xb4]
mov dword [esp + 0xb0], edx
lea edx, [ecx*8]
lea edx, [edx + ecx*4]
lea esi, [esi + edi + 1]
add edx, esi
lea edx, [ebx + edx*8 + 8]
test dl, 0xf
mov edx, dword [esp + 0xb0]
je 0x4037d6
add dword [esp + 8], edx
add dword [esp + 0x30], edx
mov dword [esp], eax
mov eax, dword [esp + 0x4c]
mov ebx, dword [esp + 0x30]
mov esi, dword [esp + 8]
mov edi, dword [esp + 0x18]
movsd xmm1, qword [esi + edi*8 - 8]
movhpd xmm1, qword [esi + edi*8]
mulpd xmm1, xmmword [ebx + edi*8 + 0x48]
addpd xmm7, xmm1
movsd xmm1, qword [esi + edi*8 + 8]
movhpd xmm1, qword [esi + edi*8 + 0x10]
mulpd xmm1, xmmword [ebx + edi*8 + 0x58]
add edi, 4
addpd xmm6, xmm1
cmp edi, eax
jb 0x4037a2
jmp 0x403816
add dword [esp + 8], edx
add dword [esp + 0x30], edx
mov dword [esp], eax
mov eax, dword [esp + 0x4c]
mov ebx, dword [esp + 0x30]
mov esi, dword [esp + 8]
mov edi, dword [esp + 0x18]
movaps xmm1, xmmword [esi + edi*8 - 8]
mulpd xmm1, xmmword [ebx + edi*8 + 0x48]
addpd xmm7, xmm1
movaps xmm1, xmmword [esi + edi*8 + 8]
mulpd xmm1, xmmword [ebx + edi*8 + 0x58]
add edi, 4
addpd xmm6, xmm1
cmp edi, eax
jb 0x4037f1
mov dword [esp + 0x4c], eax
mov eax, dword [esp]
mov ebx, dword [ebp + 8]
addpd xmm7, xmm6
movaps xmm1, xmm7
unpckhpd xmm1, xmm7
addsd xmm7, xmm1
movaps xmm1, xmm7
cmp dword [esp + 0x4c], 0xc
jb 0x4038c3
inc ecx
cmp ecx, eax
jb 0x402f20
movsd qword [esp + 0xd0], xmm5
movsd qword [esp + 0xc8], xmm2
movsd qword [esp + 0xd8], xmm4
movsd qword [esp + 0xc0], xmm3
movsd qword [esp + 0xb8], xmm0
movsd qword [esp + 0xe0], xmm1
jmp 0x402c5b
xor esi, esi
mov dword [esp + 0x58], esi
jmp 0x403093
xor esi, esi
mov dword [esp + 0x64], esi
jmp 0x40321f
xor esi, esi
mov dword [esp + 0x50], esi
jmp 0x40339b
xor esi, esi
mov dword [esp + 0x60], esi
jmp 0x403526
xor esi, esi
mov dword [esp + 0x5c], esi
jmp 0x4036a6
xor esi, esi
mov dword [esp + 0x4c], esi
jmp 0x403832
mov esi, dword [esp + 0xa0]
lea edi, [ebx + esi]
add edi, edx
mov dword [esp + 0x78], edi
mov edi, dword [ebp + 0x10]
add esi, edi
mov edi, dword [esp + 0x98]
lea esi, [esi + edi*8]
mov edi, dword [esp + 0x4c]
add edx, esi
mov esi, dword [esp + 0x78]
movsd xmm6, qword [esi + edi*8 - 8]
mulsd xmm6, qword [edx + edi*8 + 0x48]
inc edi
cmp edi, 0xc
addsd xmm1, xmm6
jb 0x4038ec
jmp 0x40383d
mov esi, dword [esp + 0xa0]
lea edi, [ebx + esi]
add edi, edx
mov dword [esp + 0x7c], edi
mov edi, dword [ebp + 0x10]
mov ebx, dword [esp + 0x7c]
add esi, edi
mov edi, dword [esp + 0x5c]
add esi, dword [esp + 4]
add esi, edx
movsd xmm6, qword [ebx + edi*8 - 8]
mulsd xmm6, qword [esi + edi*8 + 0x28]
inc edi
cmp edi, 0xc
addsd xmm0, xmm6
jb 0x40392a
mov ebx, dword [ebp + 8]
jmp 0x4036b1
mov esi, dword [esp + 0xa0]
lea edi, [ebx + esi]
add edi, edx
mov dword [esp + 0x6c], edi
mov edi, dword [ebp + 0x10]
mov ebx, dword [esp + 0x6c]
add esi, edi
mov edi, dword [esp + 0x9c]
lea esi, [esi + edi*8]
mov edi, dword [esp + 0x60]
add esi, edx
movsd xmm6, qword [ebx + edi*8 - 8]
mulsd xmm6, qword [esi + edi*8 + 0x10]
inc edi
cmp edi, 0xc
addsd xmm3, xmm6
jb 0x403971
mov ebx, dword [ebp + 8]
jmp 0x403531
mov esi, dword [esp + 0xa0]
lea edi, [ebx + esi]
add edi, edx
mov dword [esp + 0x74], edi
mov edi, dword [ebp + 0x10]
mov ebx, dword [esp + 0x74]
add esi, edi
mov edi, dword [esp + 0x50]
add esi, dword [esp + 0xc]
add esi, edx
movsd xmm6, qword [ebx + edi*8 - 8]
mulsd xmm6, qword [esi + edi*8]
inc edi
cmp edi, 0xc
addsd xmm4, xmm6
jb 0x4039b2
mov ebx, dword [ebp + 8]
jmp 0x4033a6
mov esi, dword [esp + 0xa0]
lea edi, [ebx + esi]
add edi, edx
mov dword [esp + 0x70], edi
mov edi, dword [ebp + 0x10]
mov ebx, dword [esp + 0x70]
add esi, edi
mov edi, dword [esp + 0xa8]
lea esi, [esi + edi*8]
mov edi, dword [esp + 0x64]
add esi, edx
movsd xmm6, qword [ebx + edi*8 - 8]
mulsd xmm6, qword [esi + edi*8 - 8]
inc edi
cmp edi, 0xc
addsd xmm2, xmm6
jb 0x4039f8
mov ebx, dword [ebp + 8]
jmp 0x40322a
mov esi, dword [esp + 0xa0]
lea edi, [ebx + esi]
add edi, edx
mov dword [esp + 0x80], edi
mov edi, dword [ebp + 0x10]
mov ebx, dword [esp + 0x80]
add esi, edi
mov edi, dword [esp + 0x58]
add esi, edx
movsd xmm6, qword [ebx + edi*8 - 8]
mulsd xmm6, qword [esi + edi*8 - 8]
inc edi
cmp edi, 0xc
addsd xmm5, xmm6
jb 0x403a3b
mov ebx, dword [ebp + 8]
jmp 0x40309e
pxor xmm0, xmm0
movsd qword [esp + 0xe0], xmm0
movsd qword [esp + 0xd0], xmm0
movsd qword [esp + 0xc8], xmm0
movsd qword [esp + 0xd8], xmm0
movsd qword [esp + 0xc0], xmm0
movsd qword [esp + 0xb8], xmm0
jmp 0x402c2a