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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
push esi
push edi
push ebx
sub esp, 0xe4
mov eax, dword [ebp + 0x1c]
pxor xmm6, xmm6
mov ecx, dword [ebp + 0x20]
mov esi, dword [ebp + 0xc]
mov edx, dword [eax]
mov eax, dword [ecx]
mov dword [esp + 0x38], eax
movsd xmm2, qword [esi]
movaps xmm5, xmm2
lea eax, [esi + eax*8]
movsd xmm7, qword [eax]
movaps xmm3, xmm2
mulsd xmm5, xmm7
movaps xmm4, xmm2
mov ebx, dword [ebp + 0x10]
subsd xmm6, xmm5
mulsd xmm7, xmm6
pxor xmm5, xmm5
movsd xmm1, qword [eax + 8]
mulsd xmm3, xmm1
addsd xmm7, qword [ebx]
movsd qword [ebx], xmm7
movaps xmm7, xmm1
mulsd xmm7, xmm6
subsd xmm5, xmm3
mov edi, dword [ebp + 0x2c]
pxor xmm3, xmm3
mulsd xmm1, xmm5
addsd xmm7, qword [ebx + 8]
mov edi, dword [edi]
movsd qword [ebx + 8], xmm7
movsd xmm0, qword [eax + 0x10]
mulsd xmm4, xmm0
addsd xmm1, qword [ebx + edi*8]
movsd qword [ebx + edi*8], xmm1
movaps xmm1, xmm0
mulsd xmm1, xmm6
subsd xmm3, xmm4
movaps xmm7, xmm0
movaps xmm4, xmm2
mulsd xmm7, xmm5
addsd xmm1, qword [ebx + 0x10]
mulsd xmm4, qword [eax + 0x18]
movsd qword [esp + 0x70], xmm3
movsd qword [ebx + 0x10], xmm1
pxor xmm3, xmm3
movsd xmm1, qword [esp + 0x70]
subsd xmm3, xmm4
mulsd xmm0, xmm1
addsd xmm7, qword [ebx + edi*8 + 8]
mov dword [esp + 0x98], edx
lea edx, [edi + edi - 3]
movsd qword [ebx + edi*8 + 8], xmm7
movaps xmm4, xmm2
mulsd xmm4, qword [eax + 0x20]
lea ecx, [edi + edx - 3]
addsd xmm0, qword [ebx + edx*8 + 0x10]
mulsd xmm2, qword [eax + 0x28]
movsd xmm7, qword [eax + 0x18]
lea esi, [edi + ecx - 4]
movsd qword [ebx + edx*8 + 0x10], xmm0
movaps xmm0, xmm7
mulsd xmm0, xmm6
movsd qword [esp + 0x30], xmm3
pxor xmm3, xmm3
addsd xmm0, qword [ebx + 0x18]
subsd xmm3, xmm4
pxor xmm4, xmm4
movsd qword [ebx + 0x18], xmm0
movaps xmm0, xmm7
mulsd xmm0, xmm1
subsd xmm4, xmm2
movaps xmm2, xmm7
mulsd xmm2, xmm5
movsd qword [esp + 0x28], xmm3
movsd qword [esp + 0x20], xmm4
addsd xmm2, qword [ebx + edi*8 + 0x10]
movsd qword [ebx + edi*8 + 0x10], xmm2
movsd xmm2, qword [esp + 0x30]
mulsd xmm7, xmm2
addsd xmm0, qword [ebx + edx*8 + 0x18]
movsd qword [ebx + edx*8 + 0x18], xmm0
movsd xmm0, qword [eax + 0x20]
addsd xmm7, qword [ebx + ecx*8 + 0x18]
movsd qword [ebx + ecx*8 + 0x18], xmm7
movaps xmm7, xmm0
mulsd xmm7, xmm6
addsd xmm7, qword [ebx + 0x20]
movsd qword [ebx + 0x20], xmm7
movaps xmm7, xmm0
mulsd xmm7, xmm5
addsd xmm7, qword [ebx + edi*8 + 0x18]
movsd qword [ebx + edi*8 + 0x18], xmm7
movaps xmm7, xmm0
mulsd xmm7, xmm1
addsd xmm7, qword [ebx + edx*8 + 0x20]
movsd qword [ebx + edx*8 + 0x20], xmm7
movaps xmm7, xmm0
mulsd xmm7, xmm2
mulsd xmm0, xmm3
addsd xmm7, qword [ebx + ecx*8 + 0x20]
movsd qword [ebx + ecx*8 + 0x20], xmm7
movsd xmm7, qword [eax + 0x28]
addsd xmm0, qword [ebx + esi*8 + 0x20]
movsd qword [ebx + esi*8 + 0x20], xmm0
movaps xmm0, xmm7
mulsd xmm0, xmm6
addsd xmm0, qword [ebx + 0x28]
movsd qword [ebx + 0x28], xmm0
movaps xmm0, xmm7
mulsd xmm0, xmm5
addsd xmm0, qword [ebx + edi*8 + 0x20]
movsd qword [ebx + edi*8 + 0x20], xmm0
movaps xmm0, xmm7
mulsd xmm0, xmm1
addsd xmm0, qword [ebx + edx*8 + 0x28]
movsd qword [ebx + edx*8 + 0x28], xmm0
movaps xmm0, xmm7
mulsd xmm0, xmm2
movaps xmm2, xmm7
mulsd xmm2, xmm3
mulsd xmm7, xmm4
addsd xmm0, qword [ebx + ecx*8 + 0x28]
movsd qword [ebx + ecx*8 + 0x28], xmm0
mov edx, dword [ebp + 0x24]
addsd xmm2, qword [ebx + esi*8 + 0x28]
movsd qword [ebx + esi*8 + 0x28], xmm2
add esi, edi
mov ecx, dword [edx]
addsd xmm7, qword [ebx + esi*8]
movsd qword [ebx + esi*8], xmm7
mov esi, dword [esp + 0x98]
inc esi
cmp esi, ecx
jg 0x51f8e0
mov ebx, dword [ebp + 0x10]
movaps xmm4, xmm6
movsd xmm0, qword [esp + 0x30]
movaps xmm3, xmm5
movsd xmm7, qword [esp + 0x20]
movaps xmm2, xmm1
unpcklpd xmm0, xmm0
lea edx, [ebx + edi*8]
mov dword [esp + 0xd0], edx
mov edx, edi
shl edx, 4
add edx, ebx
mov dword [esp + 0xd8], edx
lea edx, [edi + edi*2]
mov dword [esp + 0x8c], edx
lea edx, [ebx + edx*8]
mov dword [esp + 0xcc], edx
mov edx, edi
shl edx, 5
add edx, ebx
mov dword [esp + 0xd4], edx
lea edx, [edi + edi*4]
unpcklpd xmm4, xmm4
lea ebx, [ebx + edx*8]
unpcklpd xmm3, xmm3
unpcklpd xmm2, xmm2
movaps xmmword [esp + 0x10], xmm0
unpcklpd xmm7, xmm7
mov dword [esp + 0x90], 6
movsd xmm0, qword [esp + 0x28]
movaps xmmword [esp], xmm7
mov dword [esp + 0xc8], ebx
movaps xmmword [esp + 0x40], xmm2
movaps xmmword [esp + 0x50], xmm3
movaps xmmword [esp + 0x60], xmm4
movsd qword [esp + 0x78], xmm5
movsd qword [esp + 0x80], xmm6
unpcklpd xmm0, xmm0
mov dword [esp + 0x3c], edx
mov dword [esp + 0x94], ecx
mov dword [esp + 0x98], esi
mov dword [esp + 0x88], edi
mov dword [esp + 0x9c], eax
movaps xmm4, xmmword [esp]
movaps xmm3, xmmword [esp + 0x10]
movsd xmm2, qword [esp + 0x20]
movsd xmm6, qword [esp + 0x28]
movsd xmm5, qword [esp + 0x30]
mov ebx, dword [esp + 0x90]
mov eax, dword [ebp + 8]
mov esi, dword [esp + 0x98]
mov ecx, dword [ebp + 0x18]
mov edx, dword [eax + esi*8 - 8]
mov edi, dword [eax + esi*8 - 4]
mov esi, dword [ebp + 0x14]
mov ecx, dword [ecx + edx*4 - 4]
sub ecx, ebx
lea eax, [edi + edx]
mov eax, dword [esi + eax*4]
sub eax, dword [esi + edx*4 - 4]
lea edx, [ebx + 1]
add eax, ebx
mov dword [esp + 0x24], edi
cmp eax, ebx
mov dword [esp + 0x20], eax
jle 0x51f8b9
mov eax, dword [ebp + 0x10]
neg edx
add edx, dword [esp + 0x20]
lea esi, [ecx + ebx + 1]
inc edx
lea edi, [eax + esi*8 + 8]
and edi, 0xf
je 0x51ec25
test edi, 7
jne 0x51f8ef
mov edi, 1
lea eax, [edi + 8]
cmp edx, eax
jl 0x51f8ef
mov eax, edx
sub eax, edi
and eax, 7
neg eax
add eax, edx
mov dword [esp + 0xdc], eax
lea esi, [ebx*8 + 8]
mov eax, dword [esp + 0x9c]
add eax, esi
mov dword [esp + 0xb8], eax
mov eax, dword [ebp + 0x10]
lea eax, [eax + ecx*8]
add esi, eax
mov eax, dword [esp + 0xdc]
test edi, edi
jbe 0x51ecc5
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], ecx
mov dword [esp + 0x90], ebx
movsd qword [esp + 0x70], xmm1
movsd xmm7, qword [esp + 0x80]
mov ecx, dword [esp + 0x10]
mov ebx, dword [esp + 0xb8]
movsd xmm1, qword [ebx + ecx*8 - 8]
mulsd xmm1, xmm7
addsd xmm1, qword [esi + ecx*8 - 8]
movsd qword [esi + ecx*8 - 8], xmm1
inc ecx
cmp ecx, edi
jb 0x51ec99
movsd xmm1, qword [esp + 0x70]
mov ecx, dword [esp + 0xc]
mov ebx, dword [esp + 0x90]
mov dword [esp + 0xdc], eax
mov eax, dword [esp + 0x38]
mov dword [esp], esi
mov esi, dword [ebp + 0xc]
lea eax, [eax + ebx + 1]
add eax, edi
lea esi, [esi + eax*8 + 8]
mov eax, dword [esp + 0xdc]
test esi, 0xf
mov esi, dword [esp]
jne 0x51ed67
movsd qword [esp + 0x70], xmm1
mov dword [esp + 0x90], ebx
movaps xmm1, xmmword [esp + 0x60]
mov ebx, dword [esp + 0xb8]
movaps xmm7, xmmword [ebx + edi*8 - 8]
mulpd xmm7, xmm1
addpd xmm7, xmmword [esi + edi*8 - 8]
movaps xmmword [esi + edi*8 - 8], xmm7
movaps xmm7, xmmword [ebx + edi*8 + 8]
mulpd xmm7, xmm1
addpd xmm7, xmmword [esi + edi*8 + 8]
movaps xmmword [esi + edi*8 + 8], xmm7
movaps xmm7, xmmword [ebx + edi*8 + 0x18]
mulpd xmm7, xmm1
addpd xmm7, xmmword [esi + edi*8 + 0x18]
movaps xmmword [esi + edi*8 + 0x18], xmm7
movaps xmm7, xmmword [ebx + edi*8 + 0x28]
mulpd xmm7, xmm1
addpd xmm7, xmmword [esi + edi*8 + 0x28]
movaps xmmword [esi + edi*8 + 0x28], xmm7
add edi, 8
cmp edi, eax
jb 0x51ed0b
jmp 0x51edf2
movsd qword [esp + 0x70], xmm1
mov dword [esp + 0x90], ebx
movaps xmm1, xmmword [esp + 0x60]
mov ebx, dword [esp + 0xb8]
movsd xmm7, qword [ebx + edi*8 - 8]
movhpd xmm7, qword [ebx + edi*8]
mulpd xmm7, xmm1
addpd xmm7, xmmword [esi + edi*8 - 8]
movaps xmmword [esi + edi*8 - 8], xmm7
movsd xmm7, qword [ebx + edi*8 + 8]
movhpd xmm7, qword [ebx + edi*8 + 0x10]
mulpd xmm7, xmm1
addpd xmm7, xmmword [esi + edi*8 + 8]
movaps xmmword [esi + edi*8 + 8], xmm7
movsd xmm7, qword [ebx + edi*8 + 0x18]
movhpd xmm7, qword [ebx + edi*8 + 0x20]
mulpd xmm7, xmm1
addpd xmm7, xmmword [esi + edi*8 + 0x18]
movaps xmmword [esi + edi*8 + 0x18], xmm7
movsd xmm7, qword [ebx + edi*8 + 0x28]
movhpd xmm7, qword [ebx + edi*8 + 0x30]
mulpd xmm7, xmm1
addpd xmm7, xmmword [esi + edi*8 + 0x28]
movaps xmmword [esi + edi*8 + 0x28], xmm7
add edi, 8
cmp edi, eax
jb 0x51ed80
movsd xmm1, qword [esp + 0x70]
mov ebx, dword [esp + 0x90]
cmp eax, edx
jae 0x51ee53
mov edi, dword [esp + 0x9c]
lea esi, [ebx*8 + 8]
movsd xmm7, qword [esp + 0x80]
movsd qword [esp + 0x70], xmm1
add edi, esi
mov dword [esp + 0x14], edi
mov edi, dword [ebp + 0x10]
lea edi, [edi + ecx*8]
add esi, edi
mov edi, dword [esp + 0x14]
movsd xmm1, qword [edi + eax*8 - 8]
mulsd xmm1, xmm7
addsd xmm1, qword [esi + eax*8 - 8]
movsd qword [esi + eax*8 - 8], xmm1
inc eax
cmp eax, edx
jb 0x51ee32
movsd xmm1, qword [esp + 0x70]
mov eax, dword [esp + 0x88]
mov edi, dword [ebp + 0x10]
lea esi, [eax + ecx]
lea eax, [esi + ebx + 1]
lea esi, [edi + eax*8]
and esi, 0xf
je 0x51ee7d
test esi, 7
jne 0x51f8f6
mov esi, 1
lea eax, [esi + 8]
cmp edx, eax
jl 0x51f8f6
mov eax, edx
sub eax, esi
and eax, 7
neg eax
add eax, edx
mov dword [esp + 0x28], eax
mov edi, dword [esp + 0x9c]
lea eax, [ebx*8 + 8]
add edi, eax
mov dword [esp + 0xac], edi
lea eax, [eax + ecx*8]
add eax, dword [esp + 0xd0]
test esi, esi
jbe 0x51ef03
mov dword [esp + 0x18], 0
mov dword [esp + 0x90], ebx
movsd qword [esp + 0x70], xmm1
movsd xmm7, qword [esp + 0x78]
mov ebx, dword [esp + 0x18]
movsd xmm1, qword [edi + ebx*8 - 8]
mulsd xmm1, xmm7
addsd xmm1, qword [eax + ebx*8 - 0x10]
movsd qword [eax + ebx*8 - 0x10], xmm1
inc ebx
cmp ebx, esi
jb 0x51eedb
movsd xmm1, qword [esp + 0x70]
mov ebx, dword [esp + 0x90]
mov edi, dword [esp + 0x38]
mov dword [esp + 4], eax
mov eax, dword [ebp + 0xc]
lea edi, [edi + ebx + 1]
add edi, esi
lea eax, [eax + edi*8 + 8]
test al, 0xf
mov eax, dword [esp + 4]
jne 0x51ef97
movsd qword [esp + 0x70], xmm1
mov dword [esp + 0x90], ebx
movaps xmm1, xmmword [esp + 0x50]
mov ebx, dword [esp + 0x28]
mov edi, dword [esp + 0xac]
movaps xmm7, xmmword [edi + esi*8 - 8]
mulpd xmm7, xmm1
addpd xmm7, xmmword [eax + esi*8 - 0x10]
movaps xmmword [eax + esi*8 - 0x10], xmm7
movaps xmm7, xmmword [edi + esi*8 + 8]
mulpd xmm7, xmm1
addpd xmm7, xmmword [eax + esi*8]
movaps xmmword [eax + esi*8], xmm7
movaps xmm7, xmmword [edi + esi*8 + 0x18]
mulpd xmm7, xmm1
addpd xmm7, xmmword [eax + esi*8 + 0x10]
movaps xmmword [eax + esi*8 + 0x10], xmm7
movaps xmm7, xmmword [edi + esi*8 + 0x28]
mulpd xmm7, xmm1
addpd xmm7, xmmword [eax + esi*8 + 0x20]
movaps xmmword [eax + esi*8 + 0x20], xmm7
add esi, 8
cmp esi, ebx
jb 0x51ef3d
jmp 0x51f024
movsd qword [esp + 0x70], xmm1
mov dword [esp + 0x90], ebx
movaps xmm1, xmmword [esp + 0x50]
mov ebx, dword [esp + 0x28]
mov edi, dword [esp + 0xac]
movsd xmm7, qword [edi + esi*8 - 8]
movhpd xmm7, qword [edi + esi*8]
mulpd xmm7, xmm1
addpd xmm7, xmmword [eax + esi*8 - 0x10]
movaps xmmword [eax + esi*8 - 0x10], xmm7
movsd xmm7, qword [edi + esi*8 + 8]
movhpd xmm7, qword [edi + esi*8 + 0x10]
mulpd xmm7, xmm1
addpd xmm7, xmmword [eax + esi*8]
movaps xmmword [eax + esi*8], xmm7
movsd xmm7, qword [edi + esi*8 + 0x18]
movhpd xmm7, qword [edi + esi*8 + 0x20]
mulpd xmm7, xmm1
addpd xmm7, xmmword [eax + esi*8 + 0x10]
movaps xmmword [eax + esi*8 + 0x10], xmm7
movsd xmm7, qword [edi + esi*8 + 0x28]
movhpd xmm7, qword [edi + esi*8 + 0x30]
mulpd xmm7, xmm1
addpd xmm7, xmmword [eax + esi*8 + 0x20]
movaps xmmword [eax + esi*8 + 0x20], xmm7
add esi, 8
cmp esi, ebx
jb 0x51efb4
mov dword [esp + 0x28], ebx
movsd xmm1, qword [esp + 0x70]
mov ebx, dword [esp + 0x90]
cmp edx, dword [esp + 0x28]
jbe 0x51f086
mov eax, dword [esp + 0x9c]
lea esi, [ebx*8 + 8]
movsd xmm7, qword [esp + 0x78]
mov edi, dword [esp + 0x28]
movsd qword [esp + 0x70], xmm1
add eax, esi
lea esi, [esi + ecx*8]
add esi, dword [esp + 0xd0]
movsd xmm1, qword [eax + edi*8 - 8]
mulsd xmm1, xmm7
addsd xmm1, qword [esi + edi*8 - 0x10]
movsd qword [esi + edi*8 - 0x10], xmm1
inc edi
cmp edi, edx
jb 0x51f065
movsd xmm1, qword [esp + 0x70]
mov eax, dword [esp + 0x88]
mov edi, dword [ebp + 0x10]
lea esi, [ecx + eax*2]
lea eax, [esi + ebx + 1]
lea esi, [edi + eax*8]
and esi, 0xf
je 0x51f0b0
test esi, 7
jne 0x51f903
mov esi, 1
lea eax, [esi + 8]
cmp edx, eax
jl 0x51f903
mov eax, edx
sub eax, esi
and eax, 7
neg eax
add eax, edx
mov dword [esp + 0x2c], eax
mov edi, dword [esp + 0x9c]
lea eax, [ebx*8 + 8]
add edi, eax
mov dword [esp + 0xa8], edi
lea eax, [eax + ecx*8]
add eax, dword [esp + 0xd8]
mov dword [esp + 0xbc], eax
test esi, esi
jbe 0x51f128
mov dword [esp + 0x90], ebx
xor eax, eax
mov ebx, dword [esp + 0xbc]
movsd xmm7, qword [edi + eax*8 - 8]
mulsd xmm7, xmm1
addsd xmm7, qword [ebx + eax*8 - 0x20]
movsd qword [ebx + eax*8 - 0x20], xmm7
inc eax
cmp eax, esi
jb 0x51f106
mov ebx, dword [esp + 0x90]
mov eax, dword [esp + 0x38]
mov edi, dword [ebp + 0xc]
lea eax, [eax + ebx + 1]
add eax, esi
lea edi, [edi + eax*8 + 8]
test edi, 0xf
jne 0x51f1c3
movsd qword [esp + 0x70], xmm1
mov dword [esp + 0x90], ebx
movaps xmm1, xmmword [esp + 0x40]
mov eax, dword [esp + 0x2c]
mov ebx, dword [esp + 0xbc]
mov edi, dword [esp + 0xa8]
movaps xmm7, xmmword [edi + esi*8 - 8]
mulpd xmm7, xmm1
addpd xmm7, xmmword [ebx + esi*8 - 0x20]
movaps xmmword [ebx + esi*8 - 0x20], xmm7
movaps xmm7, xmmword [edi + esi*8 + 8]
mulpd xmm7, xmm1
addpd xmm7, xmmword [ebx + esi*8 - 0x10]
movaps xmmword [ebx + esi*8 - 0x10], xmm7
movaps xmm7, xmmword [edi + esi*8 + 0x18]
mulpd xmm7, xmm1
addpd xmm7, xmmword [ebx + esi*8]
movaps xmmword [ebx + esi*8], xmm7
movaps xmm7, xmmword [edi + esi*8 + 0x28]
mulpd xmm7, xmm1
addpd xmm7, xmmword [ebx + esi*8 + 0x10]
movaps xmmword [ebx + esi*8 + 0x10], xmm7
add esi, 8
cmp esi, eax
jb 0x51f169
jmp 0x51f257
movsd qword [esp + 0x70], xmm1
mov dword [esp + 0x90], ebx
movaps xmm1, xmmword [esp + 0x40]
mov eax, dword [esp + 0x2c]
mov ebx, dword [esp + 0xbc]
mov edi, dword [esp + 0xa8]
movsd xmm7, qword [edi + esi*8 - 8]
movhpd xmm7, qword [edi + esi*8]
mulpd xmm7, xmm1
addpd xmm7, xmmword [ebx + esi*8 - 0x20]
movaps xmmword [ebx + esi*8 - 0x20], xmm7
movsd xmm7, qword [edi + esi*8 + 8]
movhpd xmm7, qword [edi + esi*8 + 0x10]
mulpd xmm7, xmm1
addpd xmm7, xmmword [ebx + esi*8 - 0x10]
movaps xmmword [ebx + esi*8 - 0x10], xmm7
movsd xmm7, qword [edi + esi*8 + 0x18]
movhpd xmm7, qword [edi + esi*8 + 0x20]
mulpd xmm7, xmm1
addpd xmm7, xmmword [ebx + esi*8]
movaps xmmword [ebx + esi*8], xmm7
movsd xmm7, qword [edi + esi*8 + 0x28]
movhpd xmm7, qword [edi + esi*8 + 0x30]
mulpd xmm7, xmm1
addpd xmm7, xmmword [ebx + esi*8 + 0x10]
movaps xmmword [ebx + esi*8 + 0x10], xmm7
add esi, 8
cmp esi, eax
jb 0x51f1e7
mov dword [esp + 0x2c], eax
movsd xmm1, qword [esp + 0x70]
mov ebx, dword [esp + 0x90]
cmp edx, dword [esp + 0x2c]
jbe 0x51f2a7
mov eax, dword [esp + 0x9c]
lea esi, [ebx*8 + 8]
mov edi, dword [esp + 0x2c]
add eax, esi
lea esi, [esi + ecx*8]
add esi, dword [esp + 0xd8]
movsd xmm7, qword [eax + edi*8 - 8]
mulsd xmm7, xmm1
addsd xmm7, qword [esi + edi*8 - 0x20]
movsd qword [esi + edi*8 - 0x20], xmm7
inc edi
cmp edi, edx
jb 0x51f28c
mov eax, dword [esp + 0x8c]
mov edi, dword [ebp + 0x10]
lea esi, [ecx + eax]
lea eax, [esi + ebx + 1]
lea esi, [edi + eax*8 + 8]
and esi, 0xf
je 0x51f2d2
test esi, 7
jne 0x51f910
mov esi, 1
lea eax, [esi + 8]
cmp edx, eax
jl 0x51f910
mov eax, edx
sub eax, esi
and eax, 7
neg eax
add eax, edx
mov dword [esp + 0x30], eax
mov edi, dword [esp + 0x9c]
lea eax, [ebx*8 + 8]
add edi, eax
mov dword [esp + 0xa4], edi
lea eax, [eax + ecx*8]
add eax, dword [esp + 0xcc]
mov dword [esp + 0xc4], eax
test esi, esi
jbe 0x51f34a
mov dword [esp + 0x90], ebx
xor eax, eax
mov ebx, dword [esp + 0xc4]
movsd xmm7, qword [edi + eax*8 - 8]
mulsd xmm7, xmm5
addsd xmm7, qword [ebx + eax*8 - 0x38]
movsd qword [ebx + eax*8 - 0x38], xmm7
inc eax
cmp eax, esi
jb 0x51f328
mov ebx, dword [esp + 0x90]
mov eax, dword [esp + 0x38]
mov edi, dword [ebp + 0xc]
lea eax, [eax + ebx + 1]
add eax, esi
lea edi, [edi + eax*8 + 8]
test edi, 0xf
jne 0x51f3d8
mov dword [esp + 0x90], ebx
mov eax, dword [esp + 0x30]
mov ebx, dword [esp + 0xc4]
mov edi, dword [esp + 0xa4]
movaps xmm7, xmmword [edi + esi*8 - 8]
mulpd xmm7, xmm3
addpd xmm7, xmmword [ebx + esi*8 - 0x38]
movaps xmmword [ebx + esi*8 - 0x38], xmm7
movaps xmm7, xmmword [edi + esi*8 + 8]
mulpd xmm7, xmm3
addpd xmm7, xmmword [ebx + esi*8 - 0x28]
movaps xmmword [ebx + esi*8 - 0x28], xmm7
movaps xmm7, xmmword [edi + esi*8 + 0x18]
mulpd xmm7, xmm3
addpd xmm7, xmmword [ebx + esi*8 - 0x18]
movaps xmmword [ebx + esi*8 - 0x18], xmm7
movaps xmm7, xmmword [edi + esi*8 + 0x28]
mulpd xmm7, xmm3
addpd xmm7, xmmword [ebx + esi*8 - 8]
movaps xmmword [ebx + esi*8 - 8], xmm7
add esi, 8
cmp esi, eax
jb 0x51f37c
jmp 0x51f463
mov dword [esp + 0x90], ebx
mov eax, dword [esp + 0x30]
mov ebx, dword [esp + 0xc4]
mov edi, dword [esp + 0xa4]
movsd xmm7, qword [edi + esi*8 - 8]
movhpd xmm7, qword [edi + esi*8]
mulpd xmm7, xmm3
addpd xmm7, xmmword [ebx + esi*8 - 0x38]
movaps xmmword [ebx + esi*8 - 0x38], xmm7
movsd xmm7, qword [edi + esi*8 + 8]
movhpd xmm7, qword [edi + esi*8 + 0x10]
mulpd xmm7, xmm3
addpd xmm7, xmmword [ebx + esi*8 - 0x28]
movaps xmmword [ebx + esi*8 - 0x28], xmm7
movsd xmm7, qword [edi + esi*8 + 0x18]
movhpd xmm7, qword [edi + esi*8 + 0x20]
mulpd xmm7, xmm3
addpd xmm7, xmmword [ebx + esi*8 - 0x18]
movaps xmmword [ebx + esi*8 - 0x18], xmm7
movsd xmm7, qword [edi + esi*8 + 0x28]
movhpd xmm7, qword [edi + esi*8 + 0x30]
mulpd xmm7, xmm3
addpd xmm7, xmmword [ebx + esi*8 - 8]
movaps xmmword [ebx + esi*8 - 8], xmm7
add esi, 8
cmp esi, eax
jb 0x51f3f1
mov dword [esp + 0x30], eax
mov ebx, dword [esp + 0x90]
cmp edx, dword [esp + 0x30]
jbe 0x51f4ad
mov eax, dword [esp + 0x9c]
lea esi, [ebx*8 + 8]
mov edi, dword [esp + 0x30]
add eax, esi
lea esi, [esi + ecx*8]
add esi, dword [esp + 0xcc]
movsd xmm7, qword [eax + edi*8 - 8]
mulsd xmm7, xmm5
addsd xmm7, qword [esi + edi*8 - 0x38]
movsd qword [esi + edi*8 - 0x38], xmm7
inc edi
cmp edi, edx
jb 0x51f492
mov eax, dword [esp + 0x88]
mov edi, dword [ebp + 0x10]
lea esi, [ecx + eax*4]
lea eax, [esi + ebx + 1]
lea esi, [edi + eax*8 + 8]
and esi, 0xf
je 0x51f4d8
test esi, 7
jne 0x51f91d
mov esi, 1
lea eax, [esi + 8]
cmp edx, eax
jl 0x51f91d
mov eax, edx
sub eax, esi
and eax, 7
neg eax
add eax, edx
mov dword [esp + 0x34], eax
mov edi, dword [esp + 0x9c]
lea eax, [ebx*8 + 8]
add edi, eax
mov dword [esp + 0xb4], edi
lea eax, [eax + ecx*8]
add eax, dword [esp + 0xd4]
test esi, esi
jbe 0x51f54c
mov dword [esp + 0x1c], 0
mov dword [esp + 0x90], ebx
mov ebx, dword [esp + 0x1c]
movsd xmm7, qword [edi + ebx*8 - 8]
mulsd xmm7, xmm6
addsd xmm7, qword [eax + ebx*8 - 0x58]
movsd qword [eax + ebx*8 - 0x58], xmm7
inc ebx
cmp ebx, esi
jb 0x51f52a
mov ebx, dword [esp + 0x90]
mov edi, dword [esp + 0x38]
mov dword [esp + 8], eax
mov eax, dword [ebp + 0xc]
lea edi, [edi + ebx + 1]
add edi, esi
lea eax, [eax + edi*8 + 8]
test al, 0xf
mov eax, dword [esp + 8]
jne 0x51f5d7
mov dword [esp + 0x90], ebx
mov ebx, dword [esp + 0x34]
mov edi, dword [esp + 0xb4]
movaps xmm7, xmmword [edi + esi*8 - 8]
mulpd xmm7, xmm0
addpd xmm7, xmmword [eax + esi*8 - 0x58]
movaps xmmword [eax + esi*8 - 0x58], xmm7
movaps xmm7, xmmword [edi + esi*8 + 8]
mulpd xmm7, xmm0
addpd xmm7, xmmword [eax + esi*8 - 0x48]
movaps xmmword [eax + esi*8 - 0x48], xmm7
movaps xmm7, xmmword [edi + esi*8 + 0x18]
mulpd xmm7, xmm0
addpd xmm7, xmmword [eax + esi*8 - 0x38]
movaps xmmword [eax + esi*8 - 0x38], xmm7
movaps xmm7, xmmword [edi + esi*8 + 0x28]
mulpd xmm7, xmm0
addpd xmm7, xmmword [eax + esi*8 - 0x28]
movaps xmmword [eax + esi*8 - 0x28], xmm7
add esi, 8
cmp esi, ebx
jb 0x51f57b
jmp 0x51f65b
mov dword [esp + 0x90], ebx
mov ebx, dword [esp + 0x34]
mov edi, dword [esp + 0xb4]
movsd xmm7, qword [edi + esi*8 - 8]
movhpd xmm7, qword [edi + esi*8]
mulpd xmm7, xmm0
addpd xmm7, xmmword [eax + esi*8 - 0x58]
movaps xmmword [eax + esi*8 - 0x58], xmm7
movsd xmm7, qword [edi + esi*8 + 8]
movhpd xmm7, qword [edi + esi*8 + 0x10]
mulpd xmm7, xmm0
addpd xmm7, xmmword [eax + esi*8 - 0x48]
movaps xmmword [eax + esi*8 - 0x48], xmm7
movsd xmm7, qword [edi + esi*8 + 0x18]
movhpd xmm7, qword [edi + esi*8 + 0x20]
mulpd xmm7, xmm0
addpd xmm7, xmmword [eax + esi*8 - 0x38]
movaps xmmword [eax + esi*8 - 0x38], xmm7
movsd xmm7, qword [edi + esi*8 + 0x28]
movhpd xmm7, qword [edi + esi*8 + 0x30]
mulpd xmm7, xmm0
addpd xmm7, xmmword [eax + esi*8 - 0x28]
movaps xmmword [eax + esi*8 - 0x28], xmm7
add esi, 8
cmp esi, ebx
jb 0x51f5e9
mov dword [esp + 0x34], ebx
mov ebx, dword [esp + 0x90]
cmp edx, dword [esp + 0x34]
jbe 0x51f6a5
mov eax, dword [esp + 0x9c]
lea esi, [ebx*8 + 8]
mov edi, dword [esp + 0x34]
add eax, esi
lea esi, [esi + ecx*8]
add esi, dword [esp + 0xd4]
movsd xmm7, qword [eax + edi*8 - 8]
mulsd xmm7, xmm6
addsd xmm7, qword [esi + edi*8 - 0x58]
movsd qword [esi + edi*8 - 0x58], xmm7
inc edi
cmp edi, edx
jb 0x51f68a
mov eax, dword [esp + 0x3c]
mov edi, dword [ebp + 0x10]
lea esi, [ecx + eax]
lea eax, [esi + ebx + 1]
lea esi, [edi + eax*8]
and esi, 0xf
je 0x51f6cc
test esi, 7
jne 0x51f92a
mov esi, 1
lea eax, [esi + 8]
cmp edx, eax
jl 0x51f92a
mov eax, edx
sub eax, esi
and eax, 7
neg eax
add eax, edx
mov dword [esp + 0xa0], eax
mov edi, dword [esp + 0x9c]
lea eax, [ebx*8 + 8]
add edi, eax
mov dword [esp + 0xb0], edi
lea eax, [eax + ecx*8]
add eax, dword [esp + 0xc8]
mov dword [esp + 0xc0], eax
test esi, esi
jbe 0x51f747
mov dword [esp + 0x90], ebx
xor eax, eax
mov ebx, dword [esp + 0xc0]
movsd xmm7, qword [edi + eax*8 - 8]
mulsd xmm7, xmm2
addsd xmm7, qword [ebx + eax*8 - 0x80]
movsd qword [ebx + eax*8 - 0x80], xmm7
inc eax
cmp eax, esi
jb 0x51f725
mov ebx, dword [esp + 0x90]
mov eax, dword [esp + 0x38]
mov edi, dword [ebp + 0xc]
lea eax, [eax + ebx + 1]
add eax, esi
lea edi, [edi + eax*8 + 8]
test edi, 0xf
jne 0x51f7d8
mov dword [esp + 0x90], ebx
mov eax, dword [esp + 0xa0]
mov ebx, dword [esp + 0xc0]
mov edi, dword [esp + 0xb0]
movaps xmm7, xmmword [edi + esi*8 - 8]
mulpd xmm7, xmm4
addpd xmm7, xmmword [ebx + esi*8 - 0x80]
movaps xmmword [ebx + esi*8 - 0x80], xmm7
movaps xmm7, xmmword [edi + esi*8 + 8]
mulpd xmm7, xmm4
addpd xmm7, xmmword [ebx + esi*8 - 0x70]
movaps xmmword [ebx + esi*8 - 0x70], xmm7
movaps xmm7, xmmword [edi + esi*8 + 0x18]
mulpd xmm7, xmm4
addpd xmm7, xmmword [ebx + esi*8 - 0x60]
movaps xmmword [ebx + esi*8 - 0x60], xmm7
movaps xmm7, xmmword [edi + esi*8 + 0x28]
mulpd xmm7, xmm4
addpd xmm7, xmmword [ebx + esi*8 - 0x50]
movaps xmmword [ebx + esi*8 - 0x50], xmm7
add esi, 8
cmp esi, eax
jb 0x51f77c
jmp 0x51f866
mov dword [esp + 0x90], ebx
mov eax, dword [esp + 0xa0]
mov ebx, dword [esp + 0xc0]
mov edi, dword [esp + 0xb0]
movsd xmm7, qword [edi + esi*8 - 8]
movhpd xmm7, qword [edi + esi*8]
mulpd xmm7, xmm4
addpd xmm7, xmmword [ebx + esi*8 - 0x80]
movaps xmmword [ebx + esi*8 - 0x80], xmm7
movsd xmm7, qword [edi + esi*8 + 8]
movhpd xmm7, qword [edi + esi*8 + 0x10]
mulpd xmm7, xmm4
addpd xmm7, xmmword [ebx + esi*8 - 0x70]
movaps xmmword [ebx + esi*8 - 0x70], xmm7
movsd xmm7, qword [edi + esi*8 + 0x18]
movhpd xmm7, qword [edi + esi*8 + 0x20]
mulpd xmm7, xmm4
addpd xmm7, xmmword [ebx + esi*8 - 0x60]
movaps xmmword [ebx + esi*8 - 0x60], xmm7
movsd xmm7, qword [edi + esi*8 + 0x28]
movhpd xmm7, qword [edi + esi*8 + 0x30]
mulpd xmm7, xmm4
addpd xmm7, xmmword [ebx + esi*8 - 0x50]
movaps xmmword [ebx + esi*8 - 0x50], xmm7
add esi, 8
cmp esi, eax
jb 0x51f7f4
mov dword [esp + 0xa0], eax
mov ebx, dword [esp + 0x90]
cmp edx, dword [esp + 0xa0]
jbe 0x51f8b9
lea eax, [ebx*8 + 8]
mov ebx, dword [esp + 0x9c]
add ebx, eax
lea eax, [eax + ecx*8]
mov ecx, dword [esp + 0xa0]
add eax, dword [esp + 0xc8]
movsd xmm7, qword [ebx + ecx*8 - 8]
mulsd xmm7, xmm2
addsd xmm7, qword [eax + ecx*8 - 0x80]
movsd qword [eax + ecx*8 - 0x80], xmm7
inc ecx
cmp ecx, edx
jb 0x51f89e
mov eax, dword [esp + 0x24]
mov ebx, dword [esp + 0x98]
lea edx, [ebx + eax + 1]
mov ebx, dword [esp + 0x20]
mov dword [esp + 0x98], edx
cmp edx, dword [esp + 0x94]
jle 0x51ebc0
add esp, 0xe4
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0x28
xor eax, eax
jmp 0x51edff
mov dword [esp + 0x28], 0
jmp 0x51f035
mov dword [esp + 0x2c], 0
jmp 0x51f268
mov dword [esp + 0x30], 0
jmp 0x51f46e
mov dword [esp + 0x34], 0
jmp 0x51f666
mov dword [esp + 0xa0], 0
jmp 0x51f874