// File: /workspace/github_cpp_makefile_star2_O3/manikandan5[P]Image-Matching-Stitching-Warping/./CImg.h
// Function: cimg_library::CImg<double> const& cimg_library::CImg<double>::SVD<double>(cimg_library::CImg<double>&, cimg_library::CImg<double>&, cimg_library::CImg<double>&, bool, unsigned int, float) const
const CImg<T>& SVD(CImg<t>& U, CImg<t>& S, CImg<t>& V, const bool sorting=true,
                       const unsigned int max_iteration=40, const float lambda=0) const {
      if (is_empty()) { U.assign(); S.assign(); V.assign(); }
      else {
        U = *this;
        if (lambda!=0) {
          const unsigned int delta = cimg::min(U._width,U._height);
          for (unsigned int i = 0; i<delta; ++i) U(i,i) = (t)(U(i,i) + lambda);
        }
        if (S.size()<_width) S.assign(1,_width);
        if (V._width<_width || V._height<_height) V.assign(_width,_width);
        CImg<t> rv1(_width);
        t anorm = 0, c, f, g = 0, h, s, scale = 0;
        int l = 0, nm = 0;

        cimg_forX(U,i) {
          l = i+1; rv1[i] = scale*g; g = s = scale = 0;
          if (i<height()) {
            for (int k = i; k<height(); ++k) scale+= cimg::abs(U(i,k));
            if (scale) {
              for (int k = i; k<height(); ++k) { U(i,k)/=scale; s+= U(i,k)*U(i,k); }
              f = U(i,i); g = (t)((f>=0?-1:1)*std::sqrt(s)); h=f*g-s; U(i,i) = f-g;
              for (int j = l; j<width(); ++j) {
                s = 0;
                for (int k=i; k<height(); ++k) s+= U(i,k)*U(j,k);
                f = s/h;
                for (int k = i; k<height(); ++k) U(j,k)+= f*U(i,k);
              }
              for (int k = i; k<height(); ++k) U(i,k)*= scale;
            }
          }
          S[i]=scale*g;

          g = s = scale = 0;
          if (i<height() && i!=width()-1) {
            for (int k = l; k<width(); ++k) scale+=cimg::abs(U(k,i));
            if (scale) {
              for (int k = l; k<width(); ++k) { U(k,i)/= scale; s+= U(k,i)*U(k,i); }
              f = U(l,i); g = (t)((f>=0?-1:1)*std::sqrt(s)); h = f*g-s; U(l,i) = f-g;
              for (int k = l; k<width(); ++k) rv1[k]=U(k,i)/h;
              for (int j = l; j<height(); ++j) {
                s = 0;
                for (int k = l; k<width(); ++k) s+= U(k,j)*U(k,i);
                for (int k = l; k<width(); ++k) U(k,j)+= s*rv1[k];
              }
              for (int k = l; k<width(); ++k) U(k,i)*= scale;
            }
          }
          anorm = (t)cimg::max((float)anorm,(float)(cimg::abs(S[i])+cimg::abs(rv1[i])));
        }

        for (int i = width()-1; i>=0; --i) {
          if (i<width()-1) {
            if (g) {
              for (int j = l; j<width(); ++j) V(i,j) =(U(j,i)/U(l,i))/g;
              for (int j = l; j<width(); ++j) {
                s = 0;
                for (int k = l; k<width(); ++k) s+= U(k,i)*V(j,k);
                for (int k = l; k<width(); ++k) V(j,k)+= s*V(i,k);
              }
            }
            for (int j = l; j<width(); ++j) V(j,i) = V(i,j) = (t)0.0;
          }
          V(i,i) = (t)1.0; g = rv1[i]; l = i;
        }

        for (int i = cimg::min(width(),height())-1; i>=0; --i) {
          l = i+1; g = S[i];
          for (int j = l; j<width(); ++j) U(j,i) = 0;
          if (g) {
            g = 1/g;
            for (int j = l; j<width(); ++j) {
              s = 0; for (int k = l; k<height(); ++k) s+= U(i,k)*U(j,k);
              f = (s/U(i,i))*g;
              for (int k = i; k<height(); ++k) U(j,k)+= f*U(i,k);
            }
            for (int j = i; j<height(); ++j) U(i,j)*= g;
          } else for (int j = i; j<height(); ++j) U(i,j) = 0;
          ++U(i,i);
        }

        for (int k = width()-1; k>=0; --k) {
          for (unsigned int its = 0; its<max_iteration; ++its) {
            bool flag = true;
            for (l = k; l>=1; --l) {
              nm = l-1;
              if ((cimg::abs(rv1[l])+anorm)==anorm) { flag = false; break; }
              if ((cimg::abs(S[nm])+anorm)==anorm) break;
            }
            if (flag) {
              c = 0; s = 1;
              for (int i = l; i<=k; ++i) {
                f = s*rv1[i]; rv1[i] = c*rv1[i];
                if ((cimg::abs(f)+anorm)==anorm) break;
                g = S[i]; h = (t)cimg::_pythagore(f,g); S[i] = h; h = 1/h; c = g*h; s = -f*h;
                cimg_forY(U,j) { const t y = U(nm,j), z = U(i,j); U(nm,j) = y*c + z*s; U(i,j) = z*c - y*s; }
              }
            }

            const t z = S[k];
            if (l==k) { if (z<0) { S[k] = -z; cimg_forX(U,j) V(k,j) = -V(k,j); } break; }
            nm = k-1;
            t x = S[l], y = S[nm];
            g = rv1[nm]; h = rv1[k];
            f = ((y-z)*(y+z)+(g-h)*(g+h))/cimg::max((t)1e-25,2*h*y);
            g = (t)cimg::_pythagore(f,1.0);
            f = ((x-z)*(x+z)+h*((y/(f + (f>=0?g:-g)))-h))/cimg::max((t)1e-25,x);
            c = s = 1;
            for (int j = l; j<=nm; ++j) {
              const int i = j+1;
              g = rv1[i]; h = s*g; g = c*g;
              t y = S[i];
              t z = (t)cimg::_pythagore(f,h);
              rv1[j] = z; c = f/cimg::max((t)1e-25,z); s = h/cimg::max((t)1e-25,z);
              f = x*c+g*s; g = g*c-x*s; h = y*s; y*=c;
              cimg_forX(U,jj) { const t x = V(j,jj), z = V(i,jj); V(j,jj) = x*c + z*s; V(i,jj) = z*c - x*s; }
              z = (t)cimg::_pythagore(f,h); S[j] = z;
              if (z) { z = 1/cimg::max((t)1e-25,z); c = f*z; s = h*z; }
              f = c*g+s*y; x = c*y-s*g;
              cimg_forY(U,jj) { const t y = U(j,jj); z = U(i,jj); U(j,jj) = y*c + z*s; U(i,jj) = z*c - y*s; }
            }
            rv1[l] = 0; rv1[k]=f; S[k]=x;
          }
        }

        if (sorting) {
          CImg<intT> permutations;
          CImg<t> tmp(_width);
          S.sort(permutations,false);
          cimg_forY(U,k) {
            cimg_forY(permutations,y) tmp(y) = U(permutations(y),k);
            std::memcpy(U.data(0,k),tmp._data,sizeof(t)*_width);
          }
          cimg_forY(V,k) {
            cimg_forY(permutations,y) tmp(y) = V(permutations(y),k);
            std::memcpy(V.data(0,k),tmp._data,sizeof(t)*_width);
          }
        }
      }
      return *this;
    }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x108, %rsp            # imm = 0x108
movl %r9d, 0x7c(%rsp)
movl %r8d, %ebp
movq %rcx, %r12
movq %rdx, 0x20(%rsp)
movq %rsi, %rbx
movq %rdi, %r14
movq 0x18(%rdi), %rsi
testq %rsi, %rsi
sete %al
movl (%rdi), %edx
movl 0x4(%rdi), %ecx
testl %edx, %edx
sete %dil
orb %al, %dil
testl %ecx, %ecx
sete %al
movl 0x8(%r14), %r8d
testl %r8d, %r8d
sete %r10b
orb %al, %r10b
orb %dil, %r10b
movl 0xc(%r14), %r9d
testl %r9d, %r9d
sete %al
orb %r10b, %al
cmpb $0x1, %al
jne 0x65ad7
cmpb $0x0, 0x10(%rbx)
jne 0x65a62
movq 0x18(%rbx), %rdi
testq %rdi, %rdi
je 0x65a62
callq 0x4690
movq $0x0, 0x18(%rbx)
xorps %xmm0, %xmm0
movups %xmm0, (%rbx)
movb $0x0, 0x10(%rbx)
movq 0x20(%rsp), %rax
cmpb $0x0, 0x10(%rax)
jne 0x65a95
movq 0x18(%rax), %rdi
testq %rdi, %rdi
je 0x65a95
callq 0x4690
xorps %xmm0, %xmm0
movq 0x20(%rsp), %rax
movq $0x0, 0x18(%rax)
movups %xmm0, (%rax)
movb $0x0, 0x10(%rax)
cmpb $0x0, 0x10(%r12)
jne 0x65abb
movq 0x18(%r12), %rdi
testq %rdi, %rdi
je 0x65abb
callq 0x4690
movq $0x0, 0x18(%r12)
xorps %xmm0, %xmm0
movups %xmm0, (%r12)
movb $0x0, 0x10(%r12)
jmp 0x66f42
movq %rbx, %rdi
movss %xmm0, 0x40(%rsp)
callq 0xb880
xorps %xmm0, %xmm0
movss 0x40(%rsp), %xmm1
ucomiss %xmm0, %xmm1
movss 0x40(%rsp), %xmm0
jne 0x65afb
jnp 0x65b2e
movl (%rbx), %eax
movl 0x4(%rbx), %edx
cmpl %edx, %eax
cmovbl %eax, %edx
testl %edx, %edx
je 0x65b2e
movq 0x18(%rbx), %rcx
incl %eax
cvtss2sd %xmm0, %xmm0
movl %edx, %edx
xorl %esi, %esi
movl %esi, %edi
movsd (%rcx,%rdi,8), %xmm1
addsd %xmm0, %xmm1
movsd %xmm1, (%rcx,%rdi,8)
addl %eax, %esi
decq %rdx
jne 0x65b17
movq 0x20(%rsp), %rdi
movl (%rdi), %eax
movl 0x4(%rdi), %ecx
imulq %rax, %rcx
movl 0x8(%rdi), %eax
movl 0xc(%rdi), %esi
imulq %rax, %rsi
imulq %rcx, %rsi
movl (%r14), %edx
cmpq %rdx, %rsi
jae 0x65b6a
movl $0x1, %esi
movl $0x1, %ecx
movl $0x1, %r8d
callq 0xbbfc
movl (%r14), %edx
cmpl %edx, (%r12)
jb 0x65b7b
movl 0x4(%r12), %eax
cmpl 0x4(%r14), %eax
jae 0x65b93
movq %r12, %rdi
movl %edx, %esi
movl $0x1, %ecx
movl $0x1, %r8d
callq 0xbbfc
movl (%r14), %edx
movl %ebp, 0x8c(%rsp)
leaq 0xc0(%rsp), %rdi
movl %edx, %esi
movl $0x1, %edx
movl $0x1, %ecx
movl $0x1, %r8d
callq 0x8666
movq %rbx, 0x28(%rsp)
movl (%rbx), %eax
testl %eax, %eax
movq %r14, 0x70(%rsp)
movq %r12, 0x50(%rsp)
jle 0x661db
movq 0xd8(%rsp), %rdx
movl 0x4(%r14), %r13d
xorpd %xmm4, %xmm4
xorps %xmm8, %xmm8
movl $0x1, %ebx
movl $0x8, %r11d
movq $-0x1, %rdi
xorl %ebp, %ebp
movapd 0x84de(%rip), %xmm5     # 0x6e0e0
movapd 0x84b6(%rip), %xmm6     # 0x6e0c0
movapd 0x84ce(%rip), %xmm7     # 0x6e0e0
xorps %xmm1, %xmm1
xorpd %xmm9, %xmm9
movq 0x20(%rsp), %r10
movq %rbp, %r15
mulsd %xmm9, %xmm1
incq %rbp
movsd %xmm1, (%rdx,%r15,8)
movslq %r13d, %rdx
cmpq %rdx, %r15
jge 0x65cd9
movq %rdi, 0x18(%rsp)
movq %r11, 0x8(%rsp)
movq 0x28(%rsp), %rcx
movq 0x18(%rcx), %rsi
movl %r13d, %r8d
leal 0x1(%rax), %edi
movl %r15d, %r9d
imull %edi, %r9d
xorpd %xmm3, %xmm3
movq %r8, %r10
movl %r9d, %r11d
movsd (%rsi,%r11,8), %xmm0
andpd %xmm5, %xmm0
addsd %xmm0, %xmm3
addl %eax, %r9d
decq %r10
cmpq %r10, %r15
jne 0x65c63
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm3
movq 0x20(%rsp), %r10
jne 0x65c90
jnp 0x65ce6
movl %r15d, %ecx
imull %edi, %ecx
xorpd %xmm10, %xmm10
movl %ecx, %edx
movsd (%rsi,%rdx,8), %xmm0
divsd %xmm3, %xmm0
movsd %xmm0, (%rsi,%rdx,8)
mulsd %xmm0, %xmm0
addsd %xmm0, %xmm10
addl %eax, %ecx
decq %r8
cmpq %r8, %r15
jne 0x65c9b
imull %r15d, %edi
movsd (%rsi,%rdi,8), %xmm9
ucomisd %xmm4, %xmm10
jb 0x65cf0
xorps %xmm0, %xmm0
sqrtsd %xmm10, %xmm0
jmp 0x65d4a
xorpd %xmm3, %xmm3
xorpd %xmm1, %xmm1
jmp 0x65e96
movq 0x8(%rsp), %r11
jmp 0x65e71
movapd %xmm10, %xmm0
movaps %xmm8, 0x40(%rsp)
movsd %xmm3, 0x30(%rsp)
movsd %xmm9, 0x38(%rsp)
movsd %xmm10, 0x10(%rsp)
callq 0x4430
movsd 0x10(%rsp), %xmm10
movsd 0x38(%rsp), %xmm9
movsd 0x30(%rsp), %xmm3
movaps 0x40(%rsp), %xmm8
movapd 0x83aa(%rip), %xmm7     # 0x6e0e0
movapd 0x8382(%rip), %xmm6     # 0x6e0c0
movapd 0x839a(%rip), %xmm5     # 0x6e0e0
xorpd %xmm4, %xmm4
movapd %xmm0, %xmm2
xorpd %xmm6, %xmm2
xorpd %xmm1, %xmm1
cmplesd %xmm9, %xmm1
andpd %xmm1, %xmm2
andnpd %xmm0, %xmm1
orpd %xmm2, %xmm1
movapd %xmm9, %xmm0
subsd %xmm1, %xmm0
movq 0x28(%rsp), %rax
movq 0x18(%rax), %rsi
movl (%rax), %eax
leal 0x1(%rax), %edi
movl %edi, %ecx
imull %r15d, %ecx
movsd %xmm0, (%rsi,%rcx,8)
movslq (%r14), %r8
movl 0x4(%r14), %ecx
movq %rcx, 0x40(%rsp)
movslq %ecx, %rdx
cmpq %r8, %rbp
jge 0x65e32
mulsd %xmm1, %xmm9
subsd %xmm10, %xmm9
movl %r15d, %r9d
imull %edi, %r9d
movl $0x1, %r10d
movl %ebp, %r11d
cmpq %rdx, %r15
jge 0x65e27
xorpd %xmm0, %xmm0
movq 0x40(%rsp), %r14
movl %r9d, %r12d
movl %r12d, %r13d
movsd (%rsi,%r13,8), %xmm2
leal (%r10,%r12), %r13d
mulsd (%rsi,%r13,8), %xmm2
addsd %xmm2, %xmm0
addl %eax, %r12d
decq %r14
cmpq %r14, %r15
jne 0x65dcd
cmpq %rdx, %r15
jge 0x65e27
divsd %xmm9, %xmm0
movq 0x40(%rsp), %r14
movl %r9d, %r12d
movl %r12d, %r13d
leal (%r10,%r12), %ecx
movsd (%rsi,%r13,8), %xmm2
mulsd %xmm0, %xmm2
addsd (%rsi,%rcx,8), %xmm2
movsd %xmm2, (%rsi,%rcx,8)
addl %eax, %r12d
decq %r14
cmpq %r14, %r15
jne 0x65e01
incl %r11d
incl %r10d
cmpl %r8d, %r11d
jne 0x65dbc
cmpq %rdx, %r15
jge 0x65e78
imull %r15d, %edi
movq 0x40(%rsp), %r13
movq %r13, %r8
movq 0x70(%rsp), %r14
movq 0x50(%rsp), %r12
movq 0x20(%rsp), %r10
movq 0x8(%rsp), %r11
movl %edi, %ecx
movsd (%rsi,%rcx,8), %xmm0
mulsd %xmm3, %xmm0
movsd %xmm0, (%rsi,%rcx,8)
addl %eax, %edi
decq %r8
cmpq %r8, %r15
jne 0x65e57
movq 0x18(%rsp), %rdi
jmp 0x65e96
movq 0x70(%rsp), %r14
movq 0x50(%rsp), %r12
movq 0x20(%rsp), %r10
movq 0x8(%rsp), %r11
movq 0x18(%rsp), %rdi
movq 0x40(%rsp), %r13
mulsd %xmm1, %xmm3
movq 0x18(%r10), %rcx
movsd %xmm3, (%rcx,%r15,8)
xorpd %xmm9, %xmm9
cmpq %rdx, %r15
jge 0x65f7e
movslq (%r14), %rsi
leal -0x1(%rsi), %ecx
cmpq %rcx, %r15
je 0x65f7e
cmpq %rsi, %rbp
jge 0x65f7e
movq %rdi, 0x18(%rsp)
movq 0x28(%rsp), %rax
movq 0x18(%rax), %rdi
movl (%rax), %eax
movl %esi, %edx
movl %eax, %r8d
imull %r15d, %r8d
addl %ebx, %r8d
movq %rdx, %r9
movl %r8d, %ecx
movsd (%rdi,%rcx,8), %xmm0
andpd %xmm5, %xmm0
addsd %xmm0, %xmm9
incl %r8d
decq %r9
cmpq %r9, %rbx
jne 0x65ee9
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm9
movq 0x18(%rsp), %rdi
jne 0x65f17
jnp 0x65f82
movq 0x28(%rsp), %rcx
movq 0x18(%rcx), %rax
movl (%rcx), %ecx
xorpd %xmm3, %xmm3
cmpq %rsi, %rbp
jge 0x65f5b
imull %r15d, %ecx
addl %ebx, %ecx
movl %ecx, %esi
movsd (%rax,%rsi,8), %xmm0
divsd %xmm9, %xmm0
movsd %xmm0, (%rax,%rsi,8)
mulsd %xmm0, %xmm0
addsd %xmm0, %xmm3
incl %ecx
decq %rdx
cmpq %rdx, %rbx
jne 0x65f31
movq 0x28(%rsp), %rcx
movl (%rcx), %ecx
imull %r15d, %ecx
addl %ebp, %ecx
movsd (%rax,%rcx,8), %xmm10
ucomisd %xmm4, %xmm3
movq %r11, 0x8(%rsp)
jb 0x65fdf
xorps %xmm0, %xmm0
sqrtsd %xmm3, %xmm0
jmp 0x66038
xorpd %xmm1, %xmm1
movq 0x18(%r10), %rcx
movsd (%rcx,%r15,8), %xmm0
andpd %xmm7, %xmm0
movq 0xd8(%rsp), %rdx
movsd (%rdx,%r15,8), %xmm2
andpd %xmm7, %xmm2
addsd %xmm0, %xmm2
cvtsd2ss %xmm2, %xmm2
movaps %xmm2, %xmm0
cmpless %xmm8, %xmm0
movaps %xmm0, %xmm3
andnps %xmm2, %xmm3
andps %xmm8, %xmm0
orps %xmm3, %xmm0
movslq %eax, %rcx
incq %rbx
addq $0x8, %r11
decq %rdi
movaps %xmm0, %xmm8
cmpq %rcx, %rbp
jl 0x65c1f
jmp 0x661d5
movapd %xmm3, %xmm0
movaps %xmm8, 0x40(%rsp)
movsd %xmm9, 0x30(%rsp)
movsd %xmm3, 0x38(%rsp)
movsd %xmm10, 0x10(%rsp)
callq 0x4430
movsd 0x10(%rsp), %xmm10
movsd 0x38(%rsp), %xmm3
movsd 0x30(%rsp), %xmm9
movaps 0x40(%rsp), %xmm8
movapd 0x80bc(%rip), %xmm7     # 0x6e0e0
movapd 0x8094(%rip), %xmm6     # 0x6e0c0
movapd 0x80ac(%rip), %xmm5     # 0x6e0e0
xorpd %xmm4, %xmm4
movapd %xmm0, %xmm2
xorpd %xmm6, %xmm2
xorpd %xmm1, %xmm1
cmplesd %xmm10, %xmm1
andpd %xmm1, %xmm2
andnpd %xmm0, %xmm1
orpd %xmm2, %xmm1
movapd %xmm10, %xmm0
subsd %xmm1, %xmm0
movq 0x28(%rsp), %rax
movq 0x18(%rax), %rdx
movl (%rax), %eax
movl %eax, %ecx
imull %r15d, %ecx
addl %ebp, %ecx
movsd %xmm0, (%rdx,%rcx,8)
movslq (%r14), %rcx
movl %ecx, %r8d
movq %rcx, 0x40(%rsp)
cmpq %rcx, %rbp
jge 0x660bf
mulsd %xmm1, %xmm10
subsd %xmm3, %xmm10
movq 0xd8(%rsp), %rcx
movl %eax, %esi
imull %r15d, %esi
movq %rbx, %r9
leal (%rsi,%r9), %r10d
movsd (%rdx,%r10,8), %xmm0
divsd %xmm10, %xmm0
movsd %xmm0, (%rcx,%r9,8)
incq %r9
cmpq %r9, %r8
jne 0x660a2
movslq 0x4(%r14), %r13
cmpq %r13, %rbp
movq 0x40(%rsp), %r14
jge 0x66171
movl %eax, %ecx
imull %r15d, %ecx
addl %ebx, %ecx
movl %ecx, 0x30(%rsp)
leal 0x1(%rax), %r9d
imull %ebx, %r9d
movq 0xd8(%rsp), %r10
addq 0x8(%rsp), %r10
movq 0x18(%rsp), %rcx
leaq (%rcx,%r8), %r11
movl %ebp, %r12d
cmpq %r14, %rbp
jge 0x66166
movq %r13, %rdi
xorpd %xmm0, %xmm0
movq %r8, %rsi
movl %r9d, %r14d
movl 0x30(%rsp), %r13d
movl %r14d, %ecx
movsd (%rdx,%rcx,8), %xmm2
movl %r13d, %ecx
mulsd (%rdx,%rcx,8), %xmm2
addsd %xmm2, %xmm0
incl %r13d
incl %r14d
decq %rsi
cmpq %rsi, %rbx
jne 0x66115
movq 0x40(%rsp), %r14
cmpq %r14, %rbp
movq %rdi, %r13
jge 0x66166
xorl %esi, %esi
leal (%r9,%rsi), %ecx
movsd (%r10,%rsi,8), %xmm2
mulsd %xmm0, %xmm2
addsd (%rdx,%rcx,8), %xmm2
movsd %xmm2, (%rdx,%rcx,8)
incq %rsi
cmpq %rsi, %r11
jne 0x66146
incl %r12d
addq %rax, %r9
cmpl %r13d, %r12d
jne 0x660fe
cmpq %r14, %rbp
jge 0x661b7
movl %eax, %esi
imull %r15d, %esi
addl %ebx, %esi
movq 0x50(%rsp), %r12
movq 0x20(%rsp), %r10
movq 0x8(%rsp), %r11
movq 0x18(%rsp), %rdi
movl %esi, %ecx
movsd (%rdx,%rcx,8), %xmm0
mulsd %xmm9, %xmm0
movsd %xmm0, (%rdx,%rcx,8)
incl %esi
decq %r8
cmpq %r8, %rbx
jne 0x66192
movq 0x70(%rsp), %r14
jmp 0x65f82
movq 0x70(%rsp), %r14
movq 0x50(%rsp), %r12
movq 0x20(%rsp), %r10
movq 0x8(%rsp), %r11
movq 0x18(%rsp), %rdi
jmp 0x65f82
cvtss2sd %xmm0, %xmm0
jmp 0x661e3
xorps %xmm1, %xmm1
xorl %ebp, %ebp
xorps %xmm0, %xmm0
movslq (%r14), %rdx
movq %rdx, 0x10(%rsp)
testq %rdx, %rdx
jle 0x66402
movq 0x28(%rsp), %rcx
movq 0x18(%rcx), %rcx
movq %rcx, 0x80(%rsp)
movq 0x18(%r12), %rdx
movl (%r12), %esi
leal 0x1(%rsi), %r9d
movq 0xd8(%rsp), %r11
movq 0x10(%rsp), %rcx
leal -0x1(%rcx), %ebx
movl %eax, %r10d
imull %ebx, %r10d
movl %esi, %r15d
imull %ebx, %r15d
xorps %xmm2, %xmm2
movq %rcx, %r8
movl %r9d, 0x60(%rsp)
movq %r11, 0x58(%rsp)
leaq -0x1(%r8), %rcx
movq %rcx, 0x8(%rsp)
movq %r8, 0x30(%rsp)
cmpq 0x10(%rsp), %r8
jge 0x663cb
movl %r15d, 0x68(%rsp)
movl %ebx, 0x38(%rsp)
ucomisd %xmm2, %xmm1
movq 0x10(%rsp), %rcx
jne 0x66273
jnp 0x66378
cmpl %ecx, %ebp
jge 0x66378
movl %eax, %edi
imull 0x8(%rsp), %edi
addl %ebp, %edi
movl %ecx, %r9d
subl %ebp, %r9d
leal (%r10,%rbp), %r8d
movl %esi, %r14d
imull %ebp, %r14d
addl 0x38(%rsp), %r14d
movl %r9d, 0x40(%rsp)
movq 0x80(%rsp), %rbx
movl %r8d, %r11d
movsd (%rbx,%r11,8), %xmm3
divsd (%rbx,%rdi,8), %xmm3
divsd %xmm1, %xmm3
movl %r14d, %r11d
movsd %xmm3, (%rdx,%r11,8)
incl %r8d
addl %esi, %r14d
decl %r9d
jne 0x662a7
cmpl %ebp, %ecx
jle 0x66378
movq 0x28(%rsp), %rcx
movq 0x18(%rcx), %r14
movq 0x50(%rsp), %rcx
movq 0x18(%rcx), %rdi
movl (%rcx), %r8d
movq 0x10(%rsp), %rcx
leal 0x1(%r8), %r9d
imull %ebp, %r9d
movl %ebp, %r11d
imull %r8d, %r11d
addl 0x38(%rsp), %r11d
movl %r11d, 0x18(%rsp)
movl %ebp, %r15d
xorpd %xmm1, %xmm1
movl %r9d, %r13d
movl %ebp, %r11d
leal (%r10,%r11), %r12d
movsd (%r14,%r12,8), %xmm3
movl %r13d, %r12d
mulsd (%rdi,%r12,8), %xmm3
addsd %xmm3, %xmm1
incl %r11d
addl %r8d, %r13d
cmpl %r11d, %ecx
jne 0x66315
movl 0x18(%rsp), %r13d
movl %r9d, %r12d
movl 0x40(%rsp), %r11d
movl %r13d, %ebx
movl %r12d, %ecx
movsd (%rdi,%rbx,8), %xmm3
mulsd %xmm1, %xmm3
addsd (%rdi,%rcx,8), %xmm3
movsd %xmm3, (%rdi,%rcx,8)
addl %r8d, %r12d
addl %r8d, %r13d
decl %r11d
jne 0x66344
incl %r15d
incl %r9d
movq 0x10(%rsp), %rcx
cmpl %ecx, %r15d
jne 0x6630b
cmpl %ebp, %ecx
movq 0x70(%rsp), %r14
movq 0x50(%rsp), %r12
movl 0x60(%rsp), %r9d
movq 0x58(%rsp), %r11
movl 0x38(%rsp), %ebx
movl 0x68(%rsp), %r15d
movl $0x0, %r13d
jle 0x663cb
movq 0x10(%rsp), %rcx
movl %ecx, %edi
subl %ebp, %edi
movl %esi, %r8d
imull %ebp, %r8d
addl %ebx, %r8d
addl %r15d, %ebp
movl %r8d, %ecx
movq %r13, (%rdx,%rcx,8)
movl %ebp, %ecx
movq %r13, (%rdx,%rcx,8)
addl %esi, %r8d
incl %ebp
decl %edi
jne 0x663b5
movl %r9d, %ecx
movq 0x8(%rsp), %r8
imull %r8d, %ecx
movabsq $0x3ff0000000000000, %rdi # imm = 0x3FF0000000000000
movq %rdi, (%rdx,%rcx,8)
movsd (%r11,%r8,8), %xmm1
subl %eax, %r10d
decl %ebx
subl %esi, %r15d
movl %r8d, %ebp
cmpq $0x1, 0x30(%rsp)
jg 0x66240
movslq 0x4(%r14), %rcx
movq 0x10(%rsp), %rdx
cmpl %ecx, %edx
movl %ecx, %r14d
cmovll %edx, %r14d
testl %r14d, %r14d
movq 0x28(%rsp), %rdi
jle 0x66633
movq 0x20(%rsp), %rdx
movq 0x18(%rdx), %r13
movq 0x18(%rdi), %r8
leal 0x1(%rax), %ebp
movl %r14d, %ebx
leal -0x1(%r14), %r10d
movl %eax, %edx
imull %r10d, %edx
leal (%r14,%rdx), %r11d
movl %eax, %esi
notl %esi
movl %esi, 0x38(%rsp)
leal (%r14,%rdx), %esi
decl %esi
imull %ebp, %r14d
leal -0x1(%r14), %edx
movl %edx, 0x40(%rsp)
xorpd %xmm1, %xmm1
movsd 0x7ba7(%rip), %xmm2     # 0x6e010
movq %r13, 0x60(%rsp)
movl %ebp, 0x58(%rsp)
movq %rbx, %r15
leaq -0x1(%rbx), %rdx
movq %rdx, 0x8(%rsp)
movsd -0x8(%r13,%rbx,8), %xmm4
movl %r15d, %r9d
movl %r11d, 0x30(%rsp)
movq 0x10(%rsp), %rdx
cmpq %rdx, %rbx
jge 0x66596
movl %r11d, %ebx
movq $0x0, (%r8,%rbx,8)
incl %r11d
incl %r9d
cmpl %r9d, %edx
jg 0x6649b
ucomisd %xmm1, %xmm4
jne 0x664bd
jnp 0x665d6
movapd %xmm2, %xmm3
divsd %xmm4, %xmm3
cmpq 0x10(%rsp), %r15
jge 0x665a6
movq 0x18(%rdi), %r12
movl %ebp, %edx
imull 0x8(%rsp), %edx
movq %rdx, 0x18(%rsp)
movl 0x30(%rsp), %ebx
movq %r14, 0x68(%rsp)
movl %r14d, %r13d
movl %r15d, %r11d
xorpd %xmm4, %xmm4
cmpq %rcx, %r15
jge 0x66525
movl %r15d, %ebp
movl 0x40(%rsp), %r14d
movl %r13d, %r9d
movl %r14d, %edi
movsd (%r12,%rdi,8), %xmm5
movl %r9d, %edi
mulsd (%r12,%rdi,8), %xmm5
addsd %xmm5, %xmm4
addl %eax, %r9d
addl %eax, %r14d
incl %ebp
cmpl %ebp, %ecx
jg 0x66503
cmpq %rcx, %r15
jg 0x66569
movq 0x18(%rsp), %rdx
divsd (%r8,%rdx,8), %xmm4
mulsd %xmm3, %xmm4
movl %r10d, %r9d
movl %esi, %ebp
movl %ebx, %r14d
movl %ebp, %edi
movl %r14d, %edx
movsd (%r8,%rdi,8), %xmm5
mulsd %xmm4, %xmm5
addsd (%r8,%rdx,8), %xmm5
movsd %xmm5, (%r8,%rdx,8)
addl %eax, %r14d
addl %eax, %ebp
incl %r9d
cmpl %r9d, %ecx
jg 0x66541
incl %r11d
incl %r13d
incl %ebx
cmpl 0x10(%rsp), %r11d
jl 0x664ef
movq 0x50(%rsp), %r12
movq 0x28(%rsp), %rdi
movq 0x68(%rsp), %r14
movq 0x60(%rsp), %r13
movl 0x58(%rsp), %ebp
jmp 0x665a6
ucomisd %xmm1, %xmm4
jne 0x6659e
jnp 0x665d6
movapd %xmm2, %xmm3
divsd %xmm4, %xmm3
movq 0x8(%rsp), %rbx
movl %r10d, %r9d
movl %esi, %r11d
cmpq %rcx, %r15
jg 0x665fc
movl %r11d, %edx
movsd (%r8,%rdx,8), %xmm4
mulsd %xmm3, %xmm4
movsd %xmm4, (%r8,%rdx,8)
addl %eax, %r11d
incl %r9d
cmpl %r9d, %ecx
jg 0x665b6
jmp 0x665fc
movl %r10d, %r9d
movl %esi, %r11d
cmpq %rcx, %r15
movq 0x8(%rsp), %rbx
jg 0x665fc
movl %r11d, %edx
movq $0x0, (%r8,%rdx,8)
addl %eax, %r11d
incl %r9d
cmpl %r9d, %ecx
jg 0x665e6
movl %ebp, %edx
imull %ebx, %edx
movsd (%r8,%rdx,8), %xmm3
addsd %xmm2, %xmm3
movsd %xmm3, (%r8,%rdx,8)
movl 0x30(%rsp), %r11d
movl 0x38(%rsp), %edx
addl %edx, %r11d
addl %edx, %esi
decl %r10d
addl %edx, %r14d
addl %edx, 0x40(%rsp)
cmpq $0x1, %r15
jg 0x66472
cmpl $0x0, 0x10(%rsp)
movq 0x20(%rsp), %r8
jle 0x66d99
movq 0x18(%r8), %rcx
movq 0x10(%rsp), %rdx
leal -0x1(%rdx), %r10d
movl %eax, %esi
movq %rsi, 0x30(%rsp)
leaq (,%r10,8), %rsi
movq %rsi, 0xe0(%rsp)
leal -0x2(%rdx), %esi
movq %rsi, 0xb0(%rsp)
movq $0x0, 0xb8(%rsp)
movapd 0x7a5a(%rip), %xmm1     # 0x6e0e0
movsd 0x7982(%rip), %xmm3     # 0x6e010
movapd 0x7a2a(%rip), %xmm4     # 0x6e0c0
movapd 0x7a42(%rip), %xmm6     # 0x6e0e0
movl %r10d, 0x78(%rsp)
movq %rdx, %r11
xorl %ebp, %ebp
movq %r10, 0x58(%rsp)
movq %r11, %r14
decq %r11
cmpl $0x0, 0x7c(%rsp)
je 0x66d7e
movq 0xd8(%rsp), %r13
leaq -0x2(%r14), %rdx
movq %rdx, 0x18(%rsp)
movq 0x28(%rsp), %rdx
movl 0x4(%rdx), %edx
movq %rdx, 0x40(%rsp)
movq 0x18(%r12), %r9
movl (%r12), %r12d
movq 0xe0(%rsp), %rdx
leaq (%rdx,%r13), %r15
xorl %edx, %edx
movq %r11, 0x68(%rsp)
movq %r14, 0x8(%rsp)
movq %r15, 0x60(%rsp)
movl %edx, 0x38(%rsp)
movl %r11d, %edx
cmpq $0x2, %r14
jb 0x66783
movq 0x18(%r8), %rdx
movl %r14d, %esi
movq 0xb8(%rsp), %rbp
movsd (%r15,%rbp,8), %xmm7
andpd %xmm1, %xmm7
addsd %xmm0, %xmm7
ucomisd %xmm0, %xmm7
jne 0x66734
jnp 0x66762
leaq (%r10,%rbp), %rdi
decq %rdi
movl %edi, %edi
movsd (%rdx,%rdi,8), %xmm7
andpd %xmm1, %xmm7
addsd %xmm0, %xmm7
ucomisd %xmm0, %xmm7
jne 0x66752
jnp 0x66778
decq %rbp
decl %esi
cmpl $0x2, %esi
jge 0x6671e
xorl %edx, %edx
xorl %ebp, %ebp
jmp 0x66783
movq 0xb0(%rsp), %rdx
addl %ebp, %edx
addl %r10d, %ebp
movl %ebp, %edi
movl %edx, %ebp
jmp 0x668f7
leal (%r10,%rbp), %edx
addl 0xb0(%rsp), %ebp
movl %edx, %edi
movslq %edx, %rsi
cmpq %rsi, %r14
jle 0x668f7
movq 0x18(%r8), %r10
movq 0x28(%rsp), %rdx
movl 0x4(%rdx), %r11d
movq 0x18(%rdx), %r15
movl %edi, 0x80(%rsp)
movl %edi, %esi
xorps %xmm8, %xmm8
movapd %xmm3, %xmm7
movsd (%r13,%rsi,8), %xmm9
mulsd %xmm9, %xmm7
mulsd %xmm9, %xmm8
movsd %xmm8, (%r13,%rsi,8)
movapd %xmm7, %xmm9
andpd %xmm1, %xmm9
movapd %xmm0, %xmm8
addsd %xmm9, %xmm8
ucomisd %xmm0, %xmm8
jne 0x667ec
jnp 0x668dc
movsd (%r10,%rsi,8), %xmm8
movapd %xmm8, %xmm10
andpd %xmm1, %xmm10
ucomisd %xmm10, %xmm9
jbe 0x66822
divsd %xmm9, %xmm10
mulsd %xmm10, %xmm10
addsd %xmm3, %xmm10
xorps %xmm11, %xmm11
sqrtsd %xmm10, %xmm11
mulsd %xmm9, %xmm11
jmp 0x6684d
xorpd %xmm11, %xmm11
ucomisd %xmm11, %xmm8
jne 0x66830
jnp 0x6684d
divsd %xmm10, %xmm9
mulsd %xmm9, %xmm9
addsd %xmm3, %xmm9
xorps %xmm11, %xmm11
sqrtsd %xmm9, %xmm11
mulsd %xmm10, %xmm11
movsd %xmm11, (%r10,%rsi,8)
movapd %xmm3, %xmm9
divsd %xmm11, %xmm9
mulsd %xmm9, %xmm8
xorpd %xmm4, %xmm7
mulsd %xmm9, %xmm7
movq %r11, %rbx
movl %ebp, %edi
movl %esi, %r14d
testl %r11d, %r11d
jle 0x668c8
movl %edi, %r8d
movsd (%r15,%r8,8), %xmm9
movl %r14d, %edx
movsd (%r15,%rdx,8), %xmm10
movapd %xmm7, %xmm11
mulsd %xmm10, %xmm11
movapd %xmm7, %xmm12
mulsd %xmm9, %xmm12
mulsd %xmm8, %xmm9
addsd %xmm11, %xmm9
movsd %xmm9, (%r15,%r8,8)
mulsd %xmm8, %xmm10
subsd %xmm12, %xmm10
movsd %xmm10, (%r15,%rdx,8)
addl %eax, %r14d
addl %eax, %edi
decq %rbx
jne 0x66878
incq %rsi
movslq %esi, %rdi
movq 0x8(%rsp), %r14
cmpq %r14, %rdi
jl 0x667b3
movq 0x20(%rsp), %r8
movq 0x58(%rsp), %r10
movq 0x68(%rsp), %r11
movq 0x60(%rsp), %r15
movl 0x80(%rsp), %edi
movsd (%rcx,%r11,8), %xmm8
movl %edi, %ebx
cmpq %rbx, %r11
je 0x669a0
movsd -0x10(%rcx,%r14,8), %xmm11
movsd -0x10(%r13,%r14,8), %xmm10
movsd (%r13,%r11,8), %xmm9
movapd %xmm11, %xmm7
subsd %xmm8, %xmm7
movapd %xmm8, %xmm12
addsd %xmm11, %xmm12
mulsd %xmm7, %xmm12
movapd %xmm10, %xmm7
subsd %xmm9, %xmm7
addsd %xmm9, %xmm10
mulsd %xmm7, %xmm10
addsd %xmm12, %xmm10
movapd %xmm9, %xmm7
addsd %xmm9, %xmm7
mulsd %xmm11, %xmm7
movsd 0x7751(%rip), %xmm12    # 0x6e0b8
maxsd %xmm7, %xmm12
divsd %xmm12, %xmm10
movapd %xmm10, %xmm7
andpd %xmm1, %xmm7
ucomisd %xmm3, %xmm7
jbe 0x669e9
movapd %xmm3, %xmm12
divsd %xmm7, %xmm12
mulsd %xmm12, %xmm12
addsd %xmm3, %xmm12
sqrtsd %xmm12, %xmm12
mulsd %xmm7, %xmm12
jmp 0x66a00
xorps %xmm2, %xmm2
ucomisd %xmm8, %xmm2
jbe 0x66d7e
xorpd %xmm4, %xmm8
movlpd %xmm8, (%rcx,%r11,8)
testl %eax, %eax
jle 0x66d7e
movq 0x30(%rsp), %rdx
movl 0x78(%rsp), %esi
movl %esi, %edi
movsd (%r9,%rdi,8), %xmm7
xorpd %xmm4, %xmm7
movlpd %xmm7, (%r9,%rdi,8)
addl %r12d, %esi
decq %rdx
jne 0x669ca
jmp 0x66d69
movapd %xmm10, %xmm7
mulsd %xmm10, %xmm7
addsd %xmm3, %xmm7
xorps %xmm12, %xmm12
sqrtsd %xmm7, %xmm12
movsd (%rcx,%rbx,8), %xmm7
movapd %xmm7, %xmm13
subsd %xmm8, %xmm13
addsd %xmm7, %xmm8
mulsd %xmm13, %xmm8
xorpd %xmm13, %xmm13
cmplesd %xmm10, %xmm13
movapd %xmm13, %xmm14
andpd %xmm12, %xmm14
xorpd %xmm4, %xmm12
andnpd %xmm12, %xmm13
orpd %xmm14, %xmm13
addsd %xmm10, %xmm13
divsd %xmm13, %xmm11
subsd %xmm9, %xmm11
mulsd %xmm9, %xmm11
addsd %xmm8, %xmm11
movsd 0x7659(%rip), %xmm8     # 0x6e0b8
maxsd %xmm7, %xmm8
divsd %xmm8, %xmm11
movslq %ebx, %rdx
cmpq %rdx, 0x18(%rsp)
jge 0x66a7d
movapd %xmm7, %xmm10
jmp 0x66d3a
movq 0x50(%rsp), %rdx
movq 0x18(%rdx), %rbp
movl (%rdx), %edx
movq 0x28(%rsp), %rsi
movq 0x18(%rsi), %r15
movq %rbx, %r10
movapd %xmm3, %xmm8
movapd %xmm3, %xmm9
movsd 0x8(%r13,%r10,8), %xmm13
movapd %xmm9, %xmm2
mulsd %xmm13, %xmm2
movapd %xmm11, %xmm10
andpd %xmm6, %xmm10
movapd %xmm2, %xmm12
andpd %xmm6, %xmm12
ucomisd %xmm12, %xmm10
jbe 0x66ae9
divsd %xmm10, %xmm12
mulsd %xmm12, %xmm12
addsd %xmm3, %xmm12
xorps %xmm14, %xmm14
sqrtsd %xmm12, %xmm14
mulsd %xmm10, %xmm14
jmp 0x66b14
xorpd %xmm14, %xmm14
ucomisd %xmm14, %xmm2
jne 0x66af7
jnp 0x66b14
divsd %xmm12, %xmm10
mulsd %xmm10, %xmm10
addsd %xmm3, %xmm10
xorps %xmm14, %xmm14
sqrtsd %xmm10, %xmm14
mulsd %xmm12, %xmm14
movsd 0x8(%rcx,%r10,8), %xmm10
movsd %xmm14, (%r13,%r10,8)
movsd 0x758d(%rip), %xmm12    # 0x6e0b8
maxsd %xmm14, %xmm12
unpcklpd %xmm11, %xmm2           # xmm2 = xmm2[0],xmm11[0]
unpcklpd %xmm12, %xmm12          # xmm12 = xmm12[0,0]
divpd %xmm12, %xmm2
movapd %xmm2, %xmm11
unpckhpd %xmm2, %xmm11           # xmm11 = xmm11[1],xmm2[1]
testl %eax, %eax
jle 0x66ba7
movq 0x30(%rsp), %rsi
movl %r10d, %edi
movl %edi, %r8d
movsd (%rbp,%r8,8), %xmm5
leal 0x1(%rdi), %r11d
movsd (%rbp,%r11,8), %xmm12
movapd %xmm2, %xmm14
mulsd %xmm12, %xmm14
movapd %xmm2, %xmm15
mulsd %xmm5, %xmm15
mulsd %xmm11, %xmm5
addsd %xmm14, %xmm5
movsd %xmm5, (%rbp,%r8,8)
mulsd %xmm11, %xmm12
subsd %xmm15, %xmm12
movsd %xmm12, (%rbp,%r11,8)
addl %edx, %edi
decq %rsi
jne 0x66b55
mulsd %xmm13, %xmm8
movapd %xmm8, %xmm12
mulsd %xmm2, %xmm12
movapd %xmm7, %xmm13
mulsd %xmm11, %xmm13
addsd %xmm12, %xmm13
movapd %xmm10, %xmm14
mulsd %xmm2, %xmm14
movapd %xmm13, %xmm12
andpd %xmm6, %xmm12
movapd %xmm14, %xmm15
andpd %xmm6, %xmm15
ucomisd %xmm15, %xmm12
jbe 0x66bfb
divsd %xmm12, %xmm15
mulsd %xmm15, %xmm15
addsd %xmm3, %xmm15
jmp 0x66c35
ucomisd 0x742c(%rip), %xmm14    # 0x6e030
jne 0x66c17
jp 0x66c17
movq $0x0, (%rcx,%r10,8)
movapd %xmm2, %xmm9
jmp 0x66c7d
movapd %xmm15, %xmm5
divsd %xmm15, %xmm12
mulsd %xmm12, %xmm12
addsd %xmm3, %xmm12
movapd %xmm12, %xmm15
movapd %xmm5, %xmm12
sqrtsd %xmm15, %xmm15
mulsd %xmm12, %xmm15
movsd %xmm15, (%rcx,%r10,8)
ucomisd 0x73e2(%rip), %xmm15    # 0x6e030
movapd %xmm2, %xmm9
jne 0x66c57
jnp 0x66c7d
movsd 0x7459(%rip), %xmm5     # 0x6e0b8
maxsd %xmm15, %xmm5
movapd %xmm3, %xmm9
divsd %xmm5, %xmm9
unpcklpd %xmm13, %xmm14          # xmm14 = xmm14[0],xmm13[0]
unpcklpd %xmm9, %xmm9            # xmm9 = xmm9[0,0]
mulpd %xmm14, %xmm9
movapd %xmm9, %xmm13
unpckhpd %xmm9, %xmm13           # xmm13 = xmm13[1],xmm9[1]
cmpl $0x0, 0x40(%rsp)
jle 0x66ce4
movq 0x40(%rsp), %rsi
movl %r10d, %edi
movl %edi, %r8d
movsd (%r15,%r8,8), %xmm5
leal 0x1(%rdi), %r11d
movsd (%r15,%r11,8), %xmm14
movapd %xmm9, %xmm15
mulsd %xmm14, %xmm15
movapd %xmm9, %xmm12
mulsd %xmm5, %xmm12
mulsd %xmm13, %xmm5
addsd %xmm15, %xmm5
movsd %xmm5, (%r15,%r8,8)
mulsd %xmm13, %xmm14
subsd %xmm12, %xmm14
movsd %xmm14, (%r15,%r11,8)
addl %eax, %edi
decq %rsi
jne 0x66c96
movslq %r10d, %rsi
incq %r10
mulsd %xmm7, %xmm2
mulsd %xmm11, %xmm8
subsd %xmm2, %xmm8
mulsd %xmm11, %xmm10
movapd %xmm10, %xmm7
mulsd %xmm9, %xmm7
movapd %xmm13, %xmm11
mulsd %xmm8, %xmm11
addsd %xmm7, %xmm11
mulsd %xmm9, %xmm8
mulsd %xmm13, %xmm10
subsd %xmm8, %xmm10
movapd %xmm13, %xmm8
movapd %xmm10, %xmm7
cmpq 0x18(%rsp), %rsi
jl 0x66a9e
movq $0x0, (%r13,%rbx,8)
movq 0x68(%rsp), %r11
movsd %xmm11, (%r13,%r11,8)
movsd %xmm10, (%rcx,%r11,8)
movq 0x18(%rsp), %rbp
movq 0x20(%rsp), %r8
movq 0x58(%rsp), %r10
movq 0x60(%rsp), %r15
cmpq %rbx, %r11
movl 0x38(%rsp), %edx
je 0x66d7e
incl %edx
cmpl 0x7c(%rsp), %edx
jb 0x66702
decq 0xb8(%rsp)
decl 0x78(%rsp)
cmpq $0x1, %r14
movq 0x50(%rsp), %r12
jg 0x666ad
cmpb $0x0, 0x8c(%rsp)
movq 0x70(%rsp), %r14
je 0x66f26
movq $0x0, 0xa8(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x90(%rsp)
movb $0x0, 0xa0(%rsp)
leaq 0xe8(%rsp), %rdi
movq 0x10(%rsp), %rsi
movl $0x1, %edx
movl $0x1, %ecx
movl $0x1, %r8d
callq 0x8666
movq 0x28(%rsp), %r15
leaq 0x90(%rsp), %rsi
movq 0x20(%rsp), %rdi
xorl %edx, %edx
callq 0x6770a
cmpl $0x0, 0x4(%r15)
jle 0x66e78
xorl %ebx, %ebx
movslq 0x94(%rsp), %rdx
movq 0x18(%r15), %rax
movl (%r15), %ecx
movq 0x100(%rsp), %rsi
testq %rdx, %rdx
jle 0x66e58
movq 0xa8(%rsp), %rdi
movl %ebx, %r8d
imull %ecx, %r8d
xorl %r9d, %r9d
movl (%rdi,%r9,4), %r10d
addl %r8d, %r10d
movsd (%rax,%r10,8), %xmm0
movsd %xmm0, (%rsi,%r9,8)
incq %r9
cmpq %r9, %rdx
jne 0x66e3d
imulq %rbx, %rcx
leaq (%rax,%rcx,8), %rdi
movl (%r14), %edx
shlq $0x3, %rdx
callq 0x4440
incq %rbx
movslq 0x4(%r15), %rax
cmpq %rax, %rbx
jl 0x66e0f
cmpl $0x0, 0x4(%r12)
jle 0x66eee
xorl %ebx, %ebx
movslq 0x94(%rsp), %rcx
movq 0x18(%r12), %rax
movq 0x100(%rsp), %rsi
testq %rcx, %rcx
jle 0x66ec9
movq 0xa8(%rsp), %rdx
movl (%r12), %edi
imull %ebx, %edi
xorl %r8d, %r8d
movl (%rdx,%r8,4), %r9d
addl %edi, %r9d
movsd (%rax,%r9,8), %xmm0
movsd %xmm0, (%rsi,%r8,8)
incq %r8
cmpq %r8, %rcx
jne 0x66eae
movl (%r12), %ecx
imulq %rbx, %rcx
leaq (%rax,%rcx,8), %rdi
movl (%r14), %edx
shlq $0x3, %rdx
callq 0x4440
incq %rbx
movslq 0x4(%r12), %rax
cmpq %rax, %rbx
jl 0x66e82
cmpb $0x0, 0xf8(%rsp)
jne 0x66f0a
movq 0x100(%rsp), %rdi
testq %rdi, %rdi
je 0x66f0a
callq 0x4690
cmpb $0x0, 0xa0(%rsp)
jne 0x66f26
movq 0xa8(%rsp), %rdi
testq %rdi, %rdi
je 0x66f26
callq 0x4690
cmpb $0x0, 0xd0(%rsp)
jne 0x66f42
movq 0xd8(%rsp), %rdi
testq %rdi, %rdi
je 0x66f42
callq 0x4690
movq %r14, %rax
addq $0x108, %rsp            # imm = 0x108
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
cmpb $0x0, 0xf8(%rsp)
jne 0x66f7b
movq 0x100(%rsp), %rdi
testq %rdi, %rdi
je 0x66f7b
callq 0x4690
jmp 0x66f7b
movq %rax, %rbx
cmpb $0x0, 0xa0(%rsp)
jne 0x66f97
movq 0xa8(%rsp), %rdi
testq %rdi, %rdi
je 0x66f97
callq 0x4690
cmpb $0x0, 0xd0(%rsp)
jne 0x66fb3
movq 0xd8(%rsp), %rdi
testq %rdi, %rdi
je 0x66fb3
callq 0x4690
movq %rbx, %rdi
callq 0x4960
nop