// File: /workspace/github_c_makefile_star2_O2/dapogon[P]cellcoal/src/eigen.c
// Function: realeig
int realeig(int job,double mat[],int n,int low, int hi, double valr[],
      double vali[], double vr[],double vi[])
{
   complex v;
   double p=0,q=0,r=0,s=0,t,w,x,y,z=0,ra,sa,norm,eps;
   int niter,en,i,j,k,l,m;
   double precision  = pow((double)BASE,(double)(1-DIGITS));

   eps = precision;
   for (i=0; i<n; i++) {
      valr[i]=0.0;
      vali[i]=0.0;
   }
      /* store isolated roots and calculate norm */
   for (norm = 0,i = 0; i < n; i++) {
      for (j = max(0,i-1); j < n; j++) {
         norm += fabs(mat[pos(i,j,n)]);
      }
      if (i < low || i > hi) valr[i] = mat[pos(i,i,n)];
   }
   t = 0;
   en = hi;

   while (en >= low) {
      niter = 0;
      for (;;) {

       /* look for single small subdiagonal element */

         for (l = en; l > low; l--) {
            s = fabs(mat[pos(l-1,l-1,n)]) + fabs(mat[pos(l,l,n)]);
            if (s == 0) s = norm;
            if (fabs(mat[pos(l,l-1,n)]) <= eps * s) break;
         }

         /* form shift */

         x = mat[pos(en,en,n)];

         if (l == en) {             /* one root found */
            valr[en] = x + t;
            if (job) mat[pos(en,en,n)] = x + t;
            en--;
            break;
         }

         y = mat[pos(en-1,en-1,n)];
         w = mat[pos(en,en-1,n)] * mat[pos(en-1,en,n)];

         if (l == en - 1) {                /* two roots found */
            p = (y - x) / 2;
            q = p * p + w;
            z = sqrt(fabs(q));
            x += t;
            if (job) {
               mat[pos(en,en,n)] = x;
               mat[pos(en-1,en-1,n)] = y + t;
            }
            if (q < 0) {                /* complex pair */
               valr[en-1] = x+p;
               vali[en-1] = z;
               valr[en] = x+p;
               vali[en] = -z;
            }
            else {                      /* real pair */
               z = (p < 0) ? p - z : p + z;
               valr[en-1] = x + z;
               valr[en] = (z == 0) ? x + z : x - w / z;
               if (job) {
                  x = mat[pos(en,en-1,n)];
                  s = fabs(x) + fabs(z);
                  p = x / s;
                  q = z / s;
                  r = sqrt(p*p+q*q);
                  p /= r;
                  q /= r;
                  for (j = en - 1; j < n; j++) {
                     z = mat[pos(en-1,j,n)];
                     mat[pos(en-1,j,n)] = q * z + p *
                     mat[pos(en,j,n)];
                     mat[pos(en,j,n)] = q * mat[pos(en,j,n)] - p*z;
                  }
                  for (i = 0; i <= en; i++) {
                     z = mat[pos(i,en-1,n)];
                     mat[pos(i,en-1,n)] = q * z + p * mat[pos(i,en,n)];
                     mat[pos(i,en,n)] = q * mat[pos(i,en,n)] - p*z;
                  }
                  for (i = low; i <= hi; i++) {
                     z = vr[pos(i,en-1,n)];
                     vr[pos(i,en-1,n)] = q*z + p*vr[pos(i,en,n)];
                     vr[pos(i,en,n)] = q*vr[pos(i,en,n)] - p*z;
                  }
               }
            }
            en -= 2;
            break;
         }
         if (niter == MAXITER) return(-1);
         if (niter != 0 && niter % 10 == 0) {
            t += x;
            for (i = low; i <= en; i++) mat[pos(i,i,n)] -= x;
            s = fabs(mat[pos(en,en-1,n)]) + fabs(mat[pos(en-1,en-2,n)]);
            x = y = 0.75 * s;
            w = -0.4375 * s * s;
         }
         niter++;
           /* look for two consecutive small subdiagonal elements */
         for (m = en - 2; m >= l; m--) {
            z = mat[pos(m,m,n)];
            r = x - z;
            s = y - z;
            p = (r * s - w) / mat[pos(m+1,m,n)] + mat[pos(m,m+1,n)];
            q = mat[pos(m+1,m+1,n)] - z - r - s;
            r = mat[pos(m+2,m+1,n)];
            s = fabs(p) + fabs(q) + fabs(r);
            p /= s;
            q /= s;
            r /= s;
            if (m == l || fabs(mat[pos(m,m-1,n)]) * (fabs(q)+fabs(r)) <=
                eps * (fabs(mat[pos(m-1,m-1,n)]) + fabs(z) +
                fabs(mat[pos(m+1,m+1,n)])) * fabs(p)) break;
         }
         for (i = m + 2; i <= en; i++) mat[pos(i,i-2,n)] = 0;
         for (i = m + 3; i <= en; i++) mat[pos(i,i-3,n)] = 0;
             /* double QR step involving rows l to en and columns m to en */
         for (k = m; k < en; k++) {
            if (k != m) {
               p = mat[pos(k,k-1,n)];
               q = mat[pos(k+1,k-1,n)];
               r = (k == en - 1) ? 0 : mat[pos(k+2,k-1,n)];
               if ((x = fabs(p) + fabs(q) + fabs(r)) == 0) continue;
               p /= x;
               q /= x;
               r /= x;
            }
            s = sqrt(p*p+q*q+r*r);
            if (p < 0) s = -s;
            if (k != m) {
               mat[pos(k,k-1,n)] = -s * x;
            }
            else if (l != m) {
               mat[pos(k,k-1,n)] = -mat[pos(k,k-1,n)];
            }
            p += s;
            x = p / s;
            y = q / s;
            z = r / s;
            q /= p;
            r /= p;
                /* row modification */
            for (j = k; j <= (!job ? en : n-1); j++){
               p = mat[pos(k,j,n)] + q * mat[pos(k+1,j,n)];
               if (k != en - 1) {
                  p += r * mat[pos(k+2,j,n)];
                  mat[pos(k+2,j,n)] -= p * z;
               }
               mat[pos(k+1,j,n)] -= p * y;
               mat[pos(k,j,n)] -= p * x;
            }
            j = min(en,k+3);
              /* column modification */
            for (i = (!job ? l : 0); i <= j; i++) {
               p = x * mat[pos(i,k,n)] + y * mat[pos(i,k+1,n)];
               if (k != en - 1) {
                  p += z * mat[pos(i,k+2,n)];
                  mat[pos(i,k+2,n)] -= p*r;
               }
               mat[pos(i,k+1,n)] -= p*q;
               mat[pos(i,k,n)] -= p;
            }
            if (job) {             /* accumulate transformations */
               for (i = low; i <= hi; i++) {
                  p = x * vr[pos(i,k,n)] + y * vr[pos(i,k+1,n)];
                  if (k != en - 1) {
                     p += z * vr[pos(i,k+2,n)];
                     vr[pos(i,k+2,n)] -= p*r;
                  }
                  vr[pos(i,k+1,n)] -= p*q;
                  vr[pos(i,k,n)] -= p;
               }
            }
         }
      }
   }

   if (!job) return(0);
   if (norm != 0) {
       /* back substitute to find vectors of upper triangular form */
      for (en = n-1; en >= 0; en--) {
         p = valr[en];
         if ((q = vali[en]) < 0) {            /* complex vector */
            m = en - 1;
            if (fabs(mat[pos(en,en-1,n)]) > fabs(mat[pos(en-1,en,n)])) {
               mat[pos(en-1,en-1,n)] = q / mat[pos(en,en-1,n)];
               mat[pos(en-1,en,n)] = (p - mat[pos(en,en,n)]) /
                     mat[pos(en,en-1,n)];
            }
            else {
               v = cdiv(compl(0.0,-mat[pos(en-1,en,n)]),
                    compl(mat[pos(en-1,en-1,n)]-p,q));
               mat[pos(en-1,en-1,n)] = v.re;
               mat[pos(en-1,en,n)] = v.im;
            }
            mat[pos(en,en-1,n)] = 0;
            mat[pos(en,en,n)] = 1;
            for (i = en - 2; i >= 0; i--) {
               w = mat[pos(i,i,n)] - p;
               ra = 0;
               sa = mat[pos(i,en,n)];
               for (j = m; j < en; j++) {
                  ra += mat[pos(i,j,n)] * mat[pos(j,en-1,n)];
                  sa += mat[pos(i,j,n)] * mat[pos(j,en,n)];
               }
               if (vali[i] < 0) {
                  z = w;
                  r = ra;
                  s = sa;
               }
               else {
                  m = i;
                  if (vali[i] == 0) {
                     v = cdiv(compl(-ra,-sa),compl(w,q));
                     mat[pos(i,en-1,n)] = v.re;
                     mat[pos(i,en,n)] = v.im;
                  }
                  else {                      /* solve complex equations */
                     x = mat[pos(i,i+1,n)];
                     y = mat[pos(i+1,i,n)];
                     v.re = (valr[i]- p)*(valr[i]-p) + vali[i]*vali[i] - q*q;
                     v.im = (valr[i] - p)*2*q;
                     if ((fabs(v.re) + fabs(v.im)) == 0) {
                        v.re = eps * norm * (fabs(w) +
                                fabs(q) + fabs(x) + fabs(y) + fabs(z));
                     }
                     v = cdiv(compl(x*r-z*ra+q*sa,x*s-z*sa-q*ra),v);
                     mat[pos(i,en-1,n)] = v.re;
                     mat[pos(i,en,n)] = v.im;
                     if (fabs(x) > fabs(z) + fabs(q)) {
                        mat[pos(i+1,en-1,n)] =
                             (-ra - w * mat[pos(i,en-1,n)] +
                             q * mat[pos(i,en,n)]) / x;
                        mat[pos(i+1,en,n)] = (-sa - w * mat[pos(i,en,n)] -
                             q * mat[pos(i,en-1,n)]) / x;
                     }
                     else {
                        v = cdiv(compl(-r-y*mat[pos(i,en-1,n)],
                             -s-y*mat[pos(i,en,n)]),compl(z,q));
                        mat[pos(i+1,en-1,n)] = v.re;
                        mat[pos(i+1,en,n)] = v.im;
                     }
                  }
               }
            }
         }
         else if (q == 0) {                             /* real vector */
            m = en;
            mat[pos(en,en,n)] = 1;
            for (i = en - 1; i >= 0; i--) {
               w = mat[pos(i,i,n)] - p;
               r = mat[pos(i,en,n)];
               for (j = m; j < en; j++) {
                  r += mat[pos(i,j,n)] * mat[pos(j,en,n)];
               }
               if (vali[i] < 0) {
                  z = w;
                  s = r;
               }
               else {
                  m = i;
                  if (vali[i] == 0) {
                     if ((t = w) == 0) t = eps * norm;
                     mat[pos(i,en,n)] = -r / t;
                  }
                  else {            /* solve real equations */
                     x = mat[pos(i,i+1,n)];
                     y = mat[pos(i+1,i,n)];
                     q = (valr[i] - p) * (valr[i] - p) + vali[i]*vali[i];
                     t = (x * s - z * r) / q;
                     mat[pos(i,en,n)] = t;
                     if (fabs(x) <= fabs(z)) {
                        mat[pos(i+1,en,n)] = (-s - y * t) / z;
                     }
                     else {
                        mat[pos(i+1,en,n)] = (-r - w * t) / x;
                     }
                  }
               }
            }
         }
      }
             /* vectors of isolated roots */
      for (i = 0; i < n; i++) {
         if (i < low || i > hi) {
            for (j = i; j < n; j++) {
               vr[pos(i,j,n)] = mat[pos(i,j,n)];
            }
         }
      }
       /* multiply by transformation matrix */

      for (j = n-1; j >= low; j--) {
         m = min(j,hi);
         for (i = low; i <= hi; i++) {
            for (z = 0,k = low; k <= m; k++) {
               z += vr[pos(i,k,n)] * mat[pos(k,j,n)];
            }
            vr[pos(i,j,n)] = z;
         }
      }
   }
    /* rearrange complex eigenvectors */
   for (j = 0; j < n; j++) {
      if (vali[j] != 0) {
         for (i = 0; i < n; i++) {
            vi[pos(i,j,n)] = vr[pos(i,j+1,n)];
            vr[pos(i,j+1,n)] = vr[pos(i,j,n)];
            vi[pos(i,j+1,n)] = -vi[pos(i,j,n)];
         }
         j++;
      }
   }
   return(0);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x218, %rsp            # imm = 0x218
movl %ecx, 0x1c(%rsp)
movq %rsi, %r14
movl %edi, 0x50(%rsp)
xorl %eax, %eax
testl %edx, %edx
movl $0x0, %r11d
movq %rdx, 0x20(%rsp)
cmovgl %edx, %r11d
cmpq %rax, %r11
je 0x17831
andq $0x0, (%r9,%rax,8)
movq 0x250(%rsp), %rcx
andq $0x0, (%rcx,%rax,8)
incq %rax
jmp 0x17815
movq %r9, 0x30(%rsp)
movq 0x20(%rsp), %rcx
leal 0x1(%rcx), %eax
movl %eax, 0xc(%rsp)
movslq %ecx, %rax
movslq 0x1c(%rsp), %r10
movslq %r8d, %rbx
movq %rax, 0x10(%rsp)
leaq (,%rax,8), %rbp
xorpd %xmm2, %xmm2
xorl %eax, %eax
pushq $0x1
popq %rcx
movq %r14, %rdx
cmpq %r11, %rax
je 0x178c8
cmpl $0x2, %eax
movl %ecx, %esi
cmovgel %eax, %esi
decq %rsi
cmpq 0x10(%rsp), %rsi
jge 0x17893
movsd (%rdx,%rsi,8), %xmm0
andpd 0xf5d6(%rip), %xmm0     # 0x26e60
addsd %xmm0, %xmm2
incq %rsi
jmp 0x17876
cmpq %r10, %rax
setge %sil
cmpq %rbx, %rax
setle %dil
testb %dil, %sil
jne 0x178c0
movl 0xc(%rsp), %esi
imull %eax, %esi
movslq %esi, %rsi
movsd (%r14,%rsi,8), %xmm0
movq 0x30(%rsp), %rsi
movsd %xmm0, (%rsi,%rax,8)
incq %rax
addq %rbp, %rdx
jmp 0x17866
movq %r11, 0x28(%rsp)
movq 0x20(%rsp), %rdx
leal -0x1(%rdx), %eax
movl %eax, 0x7c(%rsp)
leaq -0x8(%r14), %rax
movq %rax, 0xb0(%rsp)
movq 0x10(%rsp), %rax
leaq 0x8(,%rax,8), %rcx
movq %rcx, 0x68(%rsp)
movq %rbp, %r11
xorq $-0x8, %r11
movl %edx, %r15d
notl %r15d
movl 0x1c(%rsp), %ecx
imull 0xc(%rsp), %ecx
movl %ecx, 0x108(%rsp)
movq %rax, %rcx
notq %rcx
movq %rcx, 0x148(%rsp)
leaq 0x1(%rax), %rcx
movq %rcx, 0x1d8(%rsp)
leaq -0x10(%r14), %rcx
movq %rcx, 0x1f8(%rsp)
leaq -0x18(%r14), %rcx
movq %rcx, 0x1f0(%rsp)
leaq 0x10(%r14), %rcx
movq %rcx, 0x1e8(%rsp)
movq %r10, %rcx
imulq %rax, %rcx
movq 0x258(%rsp), %rax
leaq (%rax,%rcx,8), %rdx
addq $0x10, %rdx
movq %rdx, 0x48(%rsp)
movq %rcx, 0x1c0(%rsp)
leaq (%rax,%rcx,8), %rax
movq %rax, 0x1c8(%rsp)
xorpd %xmm13, %xmm13
xorpd %xmm0, %xmm0
movsd 0xf4b5(%rip), %xmm1     # 0x26e48
movapd 0x76b4(%rip), %xmm15    # 0x1f050
xorpd %xmm14, %xmm14
xorpd %xmm3, %xmm3
movsd %xmm3, 0x98(%rsp)
xorpd %xmm6, %xmm6
movl %r8d, 0x100(%rsp)
movl %r8d, %r13d
movq %r10, 0xf0(%rsp)
movq %rbx, 0xf8(%rsp)
movq %r11, 0x200(%rsp)
movl %r15d, 0x70(%rsp)
cmpl 0x1c(%rsp), %r13d
jl 0x186f0
movl %r13d, %esi
movq 0x20(%rsp), %rcx
imull %ecx, %esi
leal (%rsi,%r13), %eax
leal -0x1(%r13), %r8d
movl %r8d, %edi
imull %ecx, %edi
leal (%rdi,%r13), %ecx
leal -0x2(%r13), %edx
cmpl $0x0, 0x50(%rsp)
cltq
movq %rax, 0x110(%rsp)
leal -0x1(%rdi,%r13), %eax
cltq
movq %rax, 0x150(%rsp)
movq %rsi, 0x1d0(%rsp)
leal -0x1(%rsi,%r13), %eax
movl %r8d, %esi
cltq
movq %rax, 0x120(%rsp)
movslq %ecx, %rax
movq %rax, 0x180(%rsp)
movq %rdi, 0x130(%rsp)
leal -0x2(%r13,%rdi), %eax
cltq
movq %rax, 0x1e0(%rsp)
movl 0x7c(%rsp), %eax
cmovel %r13d, %eax
movslq %r13d, %r9
movl %edx, 0x104(%rsp)
movslq %edx, %rdi
cltq
movq %rax, 0xb8(%rsp)
movq 0x68(%rsp), %rax
imulq %r9, %rax
addq %r14, %rax
movq %rax, 0x1b0(%rsp)
movl 0xc(%rsp), %edx
movl %edx, %eax
imull %r8d, %eax
movl %eax, 0x1a0(%rsp)
leaq 0x1(%rdi), %rax
movq 0x10(%rsp), %rcx
imulq %rcx, %rax
addq %rdi, %rax
movq %rax, 0xe0(%rsp)
movq 0x1d8(%rsp), %rax
imulq %rdi, %rax
movq %rax, 0x210(%rsp)
leaq 0x2(%rdi), %rax
imulq %rcx, %rax
movq %rdi, 0xa0(%rsp)
addq %rdi, %rax
incq %rax
movq %rax, 0x208(%rsp)
leal -0x3(%r13), %eax
imull %edx, %eax
movl %eax, 0x10c(%rsp)
movslq %r8d, %rcx
leal 0x1(%r13), %eax
movl %eax, 0x190(%rsp)
movl $0x0, 0x38(%rsp)
movq %r13, 0xc0(%rsp)
movl %r8d, 0xa8(%rsp)
movl 0x1a0(%rsp), %eax
movq 0x1b0(%rsp), %rdx
movl 0x190(%rsp), %edi
movq %r9, %r8
cmpq %r10, %r8
jle 0x17ba7
decq %r8
cltq
movsd (%r14,%rax,8), %xmm7
movapd 0xf30c(%rip), %xmm10    # 0x26e60
andpd %xmm10, %xmm7
movsd -0x8(%rdx), %xmm8
movsd (%rdx), %xmm9
andpd %xmm10, %xmm9
addsd %xmm7, %xmm9
movapd %xmm9, %xmm3
cmpeqsd %xmm0, %xmm3
movapd %xmm3, %xmm7
andnpd %xmm9, %xmm7
andpd %xmm2, %xmm3
orpd %xmm7, %xmm3
andpd %xmm10, %xmm8
movapd %xmm3, %xmm7
mulsd %xmm1, %xmm7
decl %edi
addq %r11, %rdx
addl %r15d, %eax
ucomisd %xmm8, %xmm7
jb 0x17b3b
jmp 0x17bab
movl 0x1c(%rsp), %edi
movq 0x110(%rsp), %rax
movsd (%r14,%rax,8), %xmm7
cmpl %r13d, %edi
je 0x183cf
movq 0x150(%rsp), %rax
movsd (%r14,%rax,8), %xmm9
movq 0x120(%rsp), %rax
movsd (%r14,%rax,8), %xmm8
movq 0x180(%rsp), %rax
mulsd (%r14,%rax,8), %xmm8
cmpl %esi, %edi
je 0x18407
movl 0x38(%rsp), %r8d
testl %r8d, %r8d
je 0x17c31
cmpl $0x1e, %r8d
movq 0x148(%rsp), %rbx
je 0x186db
movl %r8d, %eax
xorl %edx, %edx
pushq $0xa
popq %rsi
divl %esi
testl %edx, %edx
je 0x17c4c
movapd %xmm13, %xmm5
movapd %xmm3, %xmm4
movapd %xmm14, %xmm3
jmp 0x17cf8
movapd %xmm13, %xmm5
movapd %xmm3, %xmm4
movapd %xmm14, %xmm3
movq 0x148(%rsp), %rbx
jmp 0x17cf8
movsd 0x98(%rsp), %xmm3
addsd %xmm7, %xmm3
movsd %xmm3, 0x98(%rsp)
movl 0x108(%rsp), %eax
movq %r10, %rdx
movl 0xc(%rsp), %esi
cmpq %r9, %rdx
jg 0x17c8f
cltq
movsd (%r14,%rax,8), %xmm8
subsd %xmm7, %xmm8
movsd %xmm8, (%r14,%rax,8)
incq %rdx
addl %esi, %eax
jmp 0x17c70
movapd %xmm13, %xmm5
movapd %xmm14, %xmm3
movq 0x120(%rsp), %rax
movsd (%r14,%rax,8), %xmm7
movapd 0xf1b0(%rip), %xmm8     # 0x26e60
andpd %xmm8, %xmm7
movq 0x1e0(%rsp), %rax
movsd (%r14,%rax,8), %xmm10
andpd %xmm8, %xmm10
addsd %xmm7, %xmm10
movapd %xmm10, %xmm9
mulsd 0xf175(%rip), %xmm9     # 0x26e50
movapd %xmm10, %xmm8
mulsd 0xf16f(%rip), %xmm8     # 0x26e58
movapd %xmm10, %xmm4
mulsd %xmm10, %xmm8
movapd %xmm9, %xmm7
incl %r8d
movl %r8d, 0x38(%rsp)
xorpd %xmm15, %xmm8
movslq %edi, %rdx
movl 0x10c(%rsp), %eax
movl %eax, %r8d
movq 0x208(%rsp), %r10
movq 0x130(%rsp), %rax
movl %eax, %r11d
movq 0x210(%rsp), %r15
movq 0xe0(%rsp), %r13
movq 0xa0(%rsp), %rax
movl %eax, %r12d
cmpq %rdx, %rax
jl 0x17e9d
movslq %r11d, %rsi
shlq $0x3, %rsi
movsd (%r14,%r15,8), %xmm14
movapd %xmm7, %xmm6
subsd %xmm14, %xmm6
movapd %xmm9, %xmm11
subsd %xmm14, %xmm11
addq %r14, %rsi
movsd 0x8(%rsi,%rax,8), %xmm10
movapd %xmm10, %xmm4
subsd %xmm14, %xmm4
subsd %xmm6, %xmm4
mulsd %xmm11, %xmm6
addsd %xmm8, %xmm6
divsd (%r14,%r13,8), %xmm6
addsd 0x8(%r14,%r15,8), %xmm6
subsd %xmm11, %xmm4
movapd %xmm6, %xmm11
movapd 0xf0b5(%rip), %xmm13    # 0x26e60
andpd %xmm13, %xmm11
movapd %xmm4, %xmm12
andpd %xmm13, %xmm12
addsd %xmm11, %xmm12
movsd (%r14,%r10,8), %xmm11
unpcklpd %xmm11, %xmm4           # xmm4 = xmm4[0],xmm11[0]
movapd %xmm11, %xmm3
andpd %xmm13, %xmm3
movapd %xmm4, %xmm13
addsd %xmm12, %xmm3
divsd %xmm3, %xmm6
movapd %xmm3, %xmm11
unpcklpd %xmm3, %xmm11           # xmm11 = xmm11[0],xmm3[0]
divpd %xmm11, %xmm13
cmpq %rax, %rdx
je 0x17ead
movapd %xmm3, %xmm4
decq %rax
movapd %xmm13, %xmm5
movapd %xmm13, %xmm11
movapd 0xf04c(%rip), %xmm12    # 0x26e60
movapd %xmm14, %xmm13
movapd %xmm12, %xmm14
andpd %xmm12, %xmm11
pshufd $0xee, %xmm11, %xmm12   # xmm12 = xmm11[2,3,2,3]
addpd %xmm11, %xmm12
movslq %r8d, %r8
movsd (%r14,%r8,8), %xmm11
andpd %xmm14, %xmm11
movapd %xmm13, %xmm3
andpd %xmm14, %xmm13
addsd %xmm11, %xmm13
andpd %xmm14, %xmm10
addsd %xmm13, %xmm10
mulsd %xmm1, %xmm10
unpcklpd %xmm10, %xmm12          # xmm12 = xmm12[0],xmm10[0]
movsd -0x8(%r14,%r15,8), %xmm10
unpcklpd %xmm6, %xmm10           # xmm10 = xmm10[0],xmm6[0]
andpd %xmm14, %xmm10
mulpd %xmm12, %xmm10
movapd %xmm10, %xmm11
unpckhpd %xmm10, %xmm11          # xmm11 = xmm11[1],xmm10[1]
addq %rbx, %r13
addq %rbx, %r15
subl 0x20(%rsp), %r11d
addq %rbx, %r10
addl 0x70(%rsp), %r8d
ucomisd %xmm10, %xmm11
jb 0x17d3d
movapd %xmm3, %xmm14
movapd %xmm4, %xmm3
movapd %xmm5, %xmm13
jmp 0x17eb0
movl %edi, %r12d
leal 0x2(%r12), %eax
cltq
movq 0x68(%rsp), %rsi
movq %rsi, %rdx
imulq %rax, %rdx
addq 0x1f8(%rsp), %rdx
cmpq %r9, %rax
jg 0x17edc
andq $0x0, (%rdx)
incq %rax
addq %rsi, %rdx
jmp 0x17ecb
leal 0x3(%r12), %eax
cltq
movq %rsi, %rdx
imulq %rax, %rdx
addq 0x1f0(%rsp), %rdx
cmpq %r9, %rax
jg 0x17f03
andq $0x0, (%rdx)
incq %rax
addq %rsi, %rdx
jmp 0x17ef2
movapd %xmm3, %xmm4
cmpl $0x0, 0x50(%rsp)
movl $0x0, %eax
cmovel %edi, %eax
movq %r12, 0x170(%rsp)
movslq %r12d, %r11
movslq %eax, %rdx
movq %r11, %rax
imulq 0x10(%rsp), %rax
movq %rax, 0x160(%rsp)
movq 0xb0(%rsp), %rax
leaq (%rax,%r11,8), %rax
movq %rax, 0xe8(%rsp)
movq %rbp, %rax
movq %rdx, 0x40(%rsp)
imulq %rdx, %rax
addq 0x1e8(%rsp), %rax
movq %rax, 0x80(%rsp)
movq %r11, %rdx
movq 0x80(%rsp), %rax
leaq (%rax,%rdx,8), %r10
movq 0x48(%rsp), %rax
leaq (%rax,%rdx,8), %rbx
movq %r14, %r8
movq %rdx, %rax
movapd %xmm4, %xmm3
cmpq %r9, %rax
jge 0x1839e
movq %rax, %r12
movq %r8, %rsi
movq %r10, %r13
movq %rbx, %r15
cmpq %r11, %rax
je 0x18050
xorpd %xmm7, %xmm7
cmpq %rcx, %r12
je 0x17fc2
leaq 0x2(%r12), %rax
imulq 0x10(%rsp), %rax
leaq (%r14,%rax,8), %rax
movsd -0x8(%rax,%r12,8), %xmm7
movq %r12, %rax
movq 0x10(%rsp), %r10
imulq %r10, %rax
leaq (%r14,%rax,8), %rax
movsd -0x8(%rax,%r12,8), %xmm6
leaq 0x1(%r12), %rax
movq %rax, %r8
imulq %r10, %r8
leaq (%r14,%r8,8), %r8
movsd -0x8(%r8,%r12,8), %xmm13
movapd %xmm6, %xmm8
movapd 0xee62(%rip), %xmm10    # 0x26e60
andpd %xmm10, %xmm8
movapd %xmm13, %xmm9
andpd %xmm10, %xmm9
addsd %xmm8, %xmm9
unpcklpd %xmm7, %xmm13           # xmm13 = xmm13[0],xmm7[0]
andpd %xmm10, %xmm7
addsd %xmm9, %xmm7
movq 0x68(%rsp), %r8
addq %rsi, %r8
leaq 0x8(%r13), %r10
leaq 0x8(%r15), %rbx
ucomisd %xmm0, %xmm7
jne 0x1803d
jnp 0x17f85
divsd %xmm7, %xmm6
movapd %xmm7, %xmm8
unpcklpd %xmm7, %xmm8            # xmm8 = xmm8[0],xmm7[0]
divpd %xmm8, %xmm13
movapd %xmm13, %xmm8
mulsd %xmm13, %xmm8
movapd %xmm6, %xmm9
mulsd %xmm6, %xmm9
addsd %xmm8, %xmm9
movapd %xmm13, %xmm14
unpckhpd %xmm13, %xmm14          # xmm14 = xmm14[1],xmm13[1]
movapd %xmm14, %xmm8
mulsd %xmm14, %xmm8
addsd %xmm9, %xmm8
sqrtsd %xmm8, %xmm4
movapd %xmm6, %xmm8
cmpltsd %xmm0, %xmm8
movapd %xmm8, %xmm9
andnpd %xmm4, %xmm9
xorpd %xmm15, %xmm4
andpd %xmm8, %xmm4
orpd %xmm9, %xmm4
cmpq %r11, %r12
jne 0x180dc
cmpl 0x170(%rsp), %edi
je 0x18106
movq 0x160(%rsp), %rax
movq 0xe8(%rsp), %r8
movsd (%r8,%rax,8), %xmm7
xorpd %xmm15, %xmm7
movlpd %xmm7, (%r8,%rax,8)
jmp 0x18106
movapd %xmm4, %xmm8
xorpd %xmm15, %xmm8
mulsd %xmm8, %xmm7
movq %r12, %rax
imulq 0x10(%rsp), %rax
movq 0xb0(%rsp), %r8
leaq (%r8,%r12,8), %r8
movsd %xmm7, (%r8,%rax,8)
addsd %xmm4, %xmm6
movapd %xmm6, %xmm7
divsd %xmm4, %xmm7
movapd %xmm13, %xmm8
divsd %xmm4, %xmm8
divsd %xmm4, %xmm14
movapd %xmm6, %xmm9
unpcklpd %xmm6, %xmm9            # xmm9 = xmm9[0],xmm6[0]
divpd %xmm9, %xmm13
leaq 0x1(%r12), %rax
movq %rax, 0xd0(%rsp)
movapd %xmm13, %xmm9
unpckhpd %xmm13, %xmm9           # xmm9 = xmm9[1],xmm13[1]
leaq 0x2(%rdx), %rax
imulq %rbp, %rax
leaq (%rax,%rdx,8), %rax
leaq 0x1(%rdx), %r8
imulq %rbp, %r8
leaq (%r8,%rdx,8), %rbx
imulq 0x68(%rsp), %rdx
movq %r12, %r10
movq 0xb8(%rsp), %r8
cmpq %r8, %r10
jg 0x1820b
movsd (%rsi,%rbx), %xmm11
movapd %xmm13, %xmm6
mulsd %xmm11, %xmm6
addsd (%rsi,%rdx), %xmm6
cmpq %rcx, %r12
jne 0x1819f
movapd %xmm6, %xmm10
xorpd %xmm15, %xmm10
jmp 0x181d9
movsd (%rsi,%rax), %xmm11
movapd %xmm9, %xmm10
mulsd %xmm11, %xmm10
addsd %xmm10, %xmm6
movapd %xmm6, %xmm10
xorpd %xmm15, %xmm10
movapd %xmm6, %xmm12
mulsd %xmm14, %xmm12
subsd %xmm12, %xmm11
movsd %xmm11, (%rsi,%rax)
movsd (%rsi,%rbx), %xmm11
movapd %xmm10, %xmm12
mulsd %xmm8, %xmm12
addsd %xmm11, %xmm12
movsd %xmm12, (%rsi,%rbx)
mulsd %xmm7, %xmm10
addsd (%rsi,%rdx), %xmm10
movsd %xmm10, (%rsi,%rdx)
incq %r10
addq $0x8, %rsi
jmp 0x18170
leal 0x3(%r12), %eax
movq 0xc0(%rsp), %rdx
cmpl %eax, %edx
cmovll %edx, %eax
cltq
movq 0x40(%rsp), %rdx
movq 0xf8(%rsp), %rsi
movapd %xmm14, %xmm3
movapd %xmm13, %xmm5
movq 0xd0(%rsp), %r8
cmpq %rax, %rdx
jg 0x182e0
movsd -0x10(%r13), %xmm10
movsd -0x8(%r13), %xmm11
movapd %xmm8, %xmm12
mulsd %xmm11, %xmm12
movapd %xmm7, %xmm6
mulsd %xmm10, %xmm6
addsd %xmm12, %xmm6
cmpq %rcx, %r12
jne 0x1827c
movapd %xmm6, %xmm12
xorpd %xmm15, %xmm12
jmp 0x182ba
movsd (%r13), %xmm13
movapd %xmm14, %xmm12
mulsd %xmm13, %xmm12
addsd %xmm12, %xmm6
movapd %xmm6, %xmm12
xorpd %xmm15, %xmm12
movapd %xmm6, %xmm14
mulsd %xmm9, %xmm14
subsd %xmm14, %xmm13
movapd %xmm3, %xmm14
movsd %xmm13, (%r13)
movapd %xmm5, %xmm13
mulsd %xmm13, %xmm12
addsd %xmm11, %xmm12
movsd %xmm12, -0x8(%r13)
subsd %xmm6, %xmm10
movsd %xmm10, -0x10(%r13)
incq %rdx
addq %rbp, %r13
jmp 0x1823e
movq %r8, %rdx
cmpl $0x0, 0x50(%rsp)
je 0x17f66
movq 0xf0(%rsp), %rax
cmpq %rsi, %rax
jg 0x18396
movsd -0x10(%r15), %xmm10
movsd -0x8(%r15), %xmm11
movapd %xmm8, %xmm12
mulsd %xmm11, %xmm12
movapd %xmm7, %xmm6
mulsd %xmm10, %xmm6
addsd %xmm12, %xmm6
cmpq %rcx, %r12
jne 0x18334
movapd %xmm6, %xmm12
xorpd %xmm15, %xmm12
jmp 0x18370
movsd (%r15), %xmm13
movapd %xmm14, %xmm12
mulsd %xmm13, %xmm12
addsd %xmm12, %xmm6
movapd %xmm6, %xmm12
xorpd %xmm15, %xmm12
movapd %xmm6, %xmm14
mulsd %xmm9, %xmm14
subsd %xmm14, %xmm13
movapd %xmm3, %xmm14
movsd %xmm13, (%r15)
movapd %xmm5, %xmm13
mulsd %xmm13, %xmm12
addsd %xmm11, %xmm12
movsd %xmm12, -0x8(%r15)
subsd %xmm6, %xmm10
movsd %xmm10, -0x10(%r15)
incq %rax
addq %rbp, %r15
jmp 0x182f6
movq %r8, %rdx
jmp 0x17f66
movq 0xf0(%rsp), %r10
movq 0xf8(%rsp), %rbx
movq 0x200(%rsp), %r11
movl 0x70(%rsp), %r15d
movq 0xc0(%rsp), %r13
movl 0xa8(%rsp), %esi
jmp 0x17b22
addsd 0x98(%rsp), %xmm7
movq 0x30(%rsp), %rax
movsd %xmm7, (%rax,%r9,8)
movl %esi, %r13d
cmpl $0x0, 0x50(%rsp)
je 0x179da
movq 0x110(%rsp), %rax
movsd %xmm7, (%r14,%rax,8)
movl %esi, %r13d
jmp 0x179da
movapd %xmm9, %xmm6
subsd %xmm7, %xmm6
mulsd 0x6cb0(%rip), %xmm6     # 0x1f0c8
movsd 0x98(%rsp), %xmm4
addsd %xmm4, %xmm7
cmpl $0x0, 0x50(%rsp)
je 0x1844d
movq 0x110(%rsp), %rax
movsd %xmm7, (%r14,%rax,8)
addsd %xmm4, %xmm9
movq 0x150(%rsp), %rax
movsd %xmm9, (%r14,%rax,8)
movapd %xmm6, %xmm9
mulsd %xmm6, %xmm9
addsd %xmm8, %xmm9
movapd %xmm9, %xmm10
andpd 0xe9f6(%rip), %xmm10    # 0x26e60
sqrtsd %xmm10, %xmm14
ucomisd %xmm9, %xmm0
movl 0x104(%rsp), %edi
jbe 0x184bf
addsd %xmm6, %xmm7
movslq %esi, %rax
movq 0x30(%rsp), %rdx
movsd %xmm7, (%rdx,%rax,8)
movq 0x250(%rsp), %rcx
movsd %xmm14, (%rcx,%rax,8)
movsd %xmm7, (%rdx,%r9,8)
movapd %xmm14, %xmm7
xorpd %xmm15, %xmm7
movlpd %xmm7, (%rcx,%r9,8)
movsd %xmm9, %xmm13           # xmm13 = xmm9[0],xmm13[1]
movl %edi, %r13d
jmp 0x179da
movapd %xmm14, %xmm10
xorpd %xmm15, %xmm10
movapd %xmm6, %xmm11
cmpltsd %xmm0, %xmm11
andpd %xmm11, %xmm10
andnpd %xmm14, %xmm11
orpd %xmm10, %xmm11
movapd %xmm11, %xmm14
addsd %xmm6, %xmm14
movapd %xmm7, %xmm10
addsd %xmm14, %xmm10
movq 0x30(%rsp), %rax
movsd %xmm10, (%rax,%rcx,8)
divsd %xmm14, %xmm8
subsd %xmm8, %xmm7
movapd %xmm14, %xmm8
cmpeqsd %xmm0, %xmm8
andpd %xmm8, %xmm10
andnpd %xmm7, %xmm8
orpd %xmm10, %xmm8
movlpd %xmm8, (%rax,%r9,8)
movsd %xmm9, %xmm13           # xmm13 = xmm9[0],xmm13[1]
movl %edi, %r13d
cmpl $0x0, 0x50(%rsp)
je 0x179da
movq 0x120(%rsp), %rax
movsd (%r14,%rax,8), %xmm6
movapd %xmm6, %xmm7
movapd 0xe906(%rip), %xmm8     # 0x26e60
andpd %xmm8, %xmm7
movapd %xmm14, %xmm3
andpd %xmm8, %xmm3
addsd %xmm7, %xmm3
divsd %xmm3, %xmm6
movapd %xmm14, %xmm7
divsd %xmm3, %xmm7
movapd %xmm7, %xmm8
mulsd %xmm7, %xmm8
movapd %xmm6, %xmm9
mulsd %xmm6, %xmm9
addsd %xmm8, %xmm9
sqrtsd %xmm9, %xmm9
divsd %xmm9, %xmm6
divsd %xmm9, %xmm7
movapd %xmm6, %xmm8
xorpd %xmm15, %xmm8
movslq 0x1d0(%rsp), %rdx
movslq 0x130(%rsp), %rax
leaq (%r14,%rax,8), %rax
leaq (%r14,%rdx,8), %rdx
movq %rcx, %rsi
cmpq 0x10(%rsp), %rsi
jge 0x18619
movsd (%rax,%rsi,8), %xmm14
movsd (%rdx,%rsi,8), %xmm10
mulsd %xmm6, %xmm10
movapd %xmm7, %xmm11
mulsd %xmm14, %xmm11
addsd %xmm10, %xmm11
movsd %xmm11, (%rax,%rsi,8)
movapd %xmm14, %xmm10
mulsd %xmm8, %xmm10
movsd (%rdx,%rsi,8), %xmm11
mulsd %xmm7, %xmm11
addsd %xmm10, %xmm11
movsd %xmm11, (%rdx,%rsi,8)
incq %rsi
jmp 0x185c7
movq %r14, %rax
xorl %edx, %edx
cmpq %r9, %rdx
jg 0x18670
movsd (%rax,%rcx,8), %xmm14
movsd (%rax,%r9,8), %xmm10
movapd %xmm6, %xmm11
mulsd %xmm10, %xmm11
movapd %xmm7, %xmm12
mulsd %xmm14, %xmm12
addsd %xmm11, %xmm12
movsd %xmm12, (%rax,%rcx,8)
movapd %xmm14, %xmm11
mulsd %xmm8, %xmm11
mulsd %xmm7, %xmm10
addsd %xmm11, %xmm10
movsd %xmm10, (%rax,%r9,8)
incq %rdx
addq %rbp, %rax
jmp 0x1861e
movapd %xmm7, %xmm13
unpcklpd %xmm9, %xmm13           # xmm13 = xmm13[0],xmm9[0]
movq 0x1c8(%rsp), %rax
movq %r10, %rdx
cmpq %rbx, %rdx
jg 0x184b7
movsd (%rax,%rcx,8), %xmm14
movsd (%rax,%r9,8), %xmm9
movapd %xmm6, %xmm10
mulsd %xmm9, %xmm10
movapd %xmm7, %xmm11
mulsd %xmm14, %xmm11
addsd %xmm10, %xmm11
movsd %xmm11, (%rax,%rcx,8)
movapd %xmm14, %xmm10
mulsd %xmm8, %xmm10
mulsd %xmm7, %xmm9
addsd %xmm10, %xmm9
movsd %xmm9, (%rax,%r9,8)
incq %rdx
addq %rbp, %rax
jmp 0x18685
pushq $-0x1
popq %rax
addq $0x218, %rsp            # imm = 0x218
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
cmpl $0x0, 0x50(%rsp)
je 0x1914b
xorpd %xmm8, %xmm8
ucomisd %xmm8, %xmm2
movq 0x28(%rsp), %r9
jne 0x18712
jnp 0x190ce
mulsd 0xe72e(%rip), %xmm2     # 0x26e48
movapd %xmm2, 0x130(%rsp)
movslq 0x7c(%rsp), %r13
movq 0x20(%rsp), %rax
addl $-0x3, %eax
movl %eax, 0xa0(%rsp)
unpckhpd %xmm13, %xmm13          # xmm13 = xmm13[1,1]
movq %rbp, %rax
negq %rax
movq %rax, 0x70(%rsp)
leaq (%r14,%r13,8), %rax
movq %rax, 0xa8(%rsp)
leaq (%r14,%r13,8), %rdi
addq $-0x8, %rdi
movq %r13, %r15
movl 0xc(%rsp), %esi
movq %r13, 0xe0(%rsp)
testq %r15, %r15
js 0x18fcd
movq 0x30(%rsp), %rax
movsd (%rax,%r15,8), %xmm9
movq 0x250(%rsp), %rax
movsd (%rax,%r15,8), %xmm5
ucomisd %xmm5, %xmm8
movq %rdi, 0x40(%rsp)
jbe 0x1882c
movapd %xmm3, 0x80(%rsp)
leaq -0x1(%r15), %r11
movq %r15, %rbx
movq 0x10(%rsp), %rcx
imulq %rcx, %rbx
leaq (%r14,%rbx,8), %rdx
movsd -0x8(%rdx,%r15,8), %xmm0
movapd %xmm0, %xmm2
movapd 0xe694(%rip), %xmm4     # 0x26e60
andpd %xmm4, %xmm2
movq %r11, %rax
imulq %rcx, %rax
leaq (%r14,%rax,8), %r12
movsd (%r12,%r15,8), %xmm1
movapd %xmm1, %xmm3
andpd %xmm4, %xmm3
ucomisd %xmm3, %xmm2
movsd %xmm9, 0x38(%rsp)
movapd %xmm5, 0xc0(%rsp)
jbe 0x18a25
movapd %xmm5, %xmm1
divsd %xmm0, %xmm1
movsd %xmm1, -0x8(%r12,%r15,8)
addq %r15, %rbx
movapd %xmm9, %xmm1
subsd (%r14,%rbx,8), %xmm1
divsd -0x8(%rdx,%r15,8), %xmm1
jmp 0x18aab
ucomisd %xmm8, %xmm5
jne 0x18fb1
jp 0x18fb1
movl %esi, %eax
imull %r15d, %eax
cltq
movabsq $0x3ff0000000000000, %rcx # imm = 0x3FF0000000000000
movq %rcx, (%r14,%rax,8)
leaq (%r14,%r15,8), %rax
movq %r15, %rcx
movapd %xmm13, %xmm1
movslq %ecx, %rdi
leaq -0x1(%rcx), %r8
imulq %rbp, %r8
addq %r14, %r8
movq %rbp, %r9
imulq %rdi, %r9
addq 0xa8(%rsp), %r9
movapd %xmm14, %xmm0
movapd %xmm3, %xmm13
movapd %xmm13, %xmm3
movapd %xmm0, %xmm14
testq %rcx, %rcx
jle 0x18a0d
movq %rcx, %rdx
decq %rcx
movq %rcx, %rsi
imulq 0x10(%rsp), %rsi
movl %ecx, %r10d
imull 0x20(%rsp), %r10d
movslq %r10d, %r10
leaq (%r14,%rcx,8), %r11
movsd (%r11,%r10,8), %xmm0
movsd (%rax,%rsi,8), %xmm13
movq %r9, %r11
movq %rdi, %rbx
cmpq %r15, %rbx
jge 0x188e7
movsd (%r8,%rbx,8), %xmm1
mulsd (%r11), %xmm1
addsd %xmm1, %xmm13
incq %rbx
addq %rbp, %r11
jmp 0x188ca
movapd %xmm3, %xmm6
subsd %xmm9, %xmm0
movq 0x250(%rsp), %r11
movsd (%r11,%rcx,8), %xmm3
addq 0x70(%rsp), %r8
ucomisd %xmm3, %xmm8
movapd %xmm13, %xmm1
ja 0x18886
ucomisd %xmm8, %xmm3
jne 0x18957
jp 0x18957
movapd %xmm0, %xmm1
cmpeqsd %xmm8, %xmm1
movapd %xmm1, %xmm2
andpd 0x130(%rsp), %xmm2
andnpd %xmm0, %xmm1
orpd %xmm2, %xmm1
movapd %xmm13, %xmm0
xorpd %xmm15, %xmm0
divsd %xmm1, %xmm0
movsd %xmm0, (%rax,%rsi,8)
movapd %xmm6, %xmm3
jmp 0x1885a
leaq (%r14,%rdx,8), %rdi
movsd (%rdi,%r10,8), %xmm1
imulq 0x10(%rsp), %rdx
leaq (%r14,%rdx,8), %rdi
movsd (%rdi,%rcx,8), %xmm2
movq 0x30(%rsp), %rdi
movsd (%rdi,%rcx,8), %xmm4
subsd %xmm9, %xmm4
mulsd %xmm3, %xmm3
mulsd %xmm4, %xmm4
addsd %xmm3, %xmm4
movapd %xmm13, %xmm5
mulsd %xmm14, %xmm5
movapd %xmm1, %xmm3
movapd %xmm6, %xmm7
mulsd %xmm6, %xmm3
subsd %xmm5, %xmm3
divsd %xmm4, %xmm3
movsd %xmm3, (%rax,%rsi,8)
movapd %xmm1, %xmm4
movapd 0xe4a6(%rip), %xmm6     # 0x26e60
andpd %xmm6, %xmm4
movapd %xmm14, %xmm5
andpd %xmm6, %xmm5
ucomisd %xmm4, %xmm5
jae 0x189ed
xorpd %xmm15, %xmm0
mulsd %xmm3, %xmm0
subsd %xmm13, %xmm0
divsd %xmm1, %xmm0
movsd %xmm0, (%rax,%rdx,8)
movapd %xmm7, %xmm3
jmp 0x1885a
xorpd %xmm15, %xmm2
mulsd %xmm3, %xmm2
subsd %xmm7, %xmm2
divsd %xmm14, %xmm2
movsd %xmm2, (%rax,%rdx,8)
movapd %xmm7, %xmm3
jmp 0x1885a
movapd %xmm1, %xmm13
movq 0x28(%rsp), %r9
movl 0xc(%rsp), %esi
movq 0x40(%rsp), %rdi
jmp 0x18fb1
xorpd %xmm15, %xmm1
movsd -0x8(%r12,%r15,8), %xmm2
subsd %xmm9, %xmm2
xorpd %xmm0, %xmm0
movapd %xmm5, %xmm3
movapd %xmm14, 0xd0(%rsp)
movapd %xmm13, 0x50(%rsp)
movq %r11, %r13
movq %rdx, 0x48(%rsp)
callq 0x19312
movq 0x48(%rsp), %rdx
movq %r13, %r11
movapd 0xc0(%rsp), %xmm5
movsd 0x38(%rsp), %xmm9
movq 0x40(%rsp), %rdi
xorpd %xmm8, %xmm8
movapd 0x50(%rsp), %xmm13
movapd 0xd0(%rsp), %xmm14
movl 0xc(%rsp), %esi
movapd 0x65b4(%rip), %xmm15    # 0x1f050
movq 0x28(%rsp), %r9
movsd %xmm0, -0x8(%r12,%r15,8)
addq %r15, %rbx
movapd 0x80(%rsp), %xmm3
movslq 0xa0(%rsp), %r8
movq %rbp, %r13
imulq %r8, %r13
movsd %xmm1, (%r12,%r15,8)
andq $0x0, -0x8(%rdx,%r15,8)
addq %r14, %r13
movabsq $0x3ff0000000000000, %rax # imm = 0x3FF0000000000000
movq %rax, (%r14,%rbx,8)
movapd %xmm5, %xmm0
xorpd %xmm15, %xmm0
movapd %xmm0, 0x110(%rsp)
movapd %xmm5, %xmm0
andpd 0xe362(%rip), %xmm0     # 0x26e60
leaq (%r14,%r15,8), %r12
leaq (%r14,%r11,8), %rax
movq %rax, 0x48(%rsp)
movapd %xmm0, 0x120(%rsp)
movq %r12, 0xe8(%rsp)
testq %r8, %r8
js 0x18fa9
movq %r8, %r10
imulq 0x10(%rsp), %r10
leaq (%r14,%r10,8), %rax
movsd (%rax,%r8,8), %xmm10
xorpd %xmm11, %xmm11
movhpd (%r12,%r10,8), %xmm11   # xmm11 = xmm11[0],mem[0]
movslq %r11d, %rcx
movq %rbp, %rdx
imulq %rcx, %rdx
addq %rdi, %rdx
cmpq %r15, %rcx
jge 0x18b75
movupd (%rdx), %xmm0
movsd (%r13,%rcx,8), %xmm1
unpcklpd %xmm1, %xmm1            # xmm1 = xmm1[0,0]
mulpd %xmm0, %xmm1
addpd %xmm1, %xmm11
incq %rcx
addq %rbp, %rdx
jmp 0x18b50
subsd %xmm9, %xmm10
movq 0x250(%rsp), %rcx
movsd (%rcx,%r8,8), %xmm0
ucomisd %xmm0, %xmm8
movapd %xmm11, %xmm12
unpckhpd %xmm11, %xmm12          # xmm12 = xmm12[1],xmm11[1]
jbe 0x18bad
movapd %xmm10, %xmm14
movapd %xmm12, %xmm3
movapd %xmm11, %xmm13
jmp 0x18f9c
movapd %xmm3, 0x80(%rsp)
ucomisd %xmm8, %xmm0
movapd %xmm14, 0xd0(%rsp)
movapd %xmm13, 0x50(%rsp)
jne 0x18c71
jp 0x18c71
movapd 0x6470(%rip), %xmm0     # 0x1f050
xorpd %xmm0, %xmm11
xorpd %xmm0, %xmm12
movapd %xmm11, %xmm0
movapd %xmm12, %xmm1
movapd %xmm10, %xmm2
movapd %xmm5, %xmm3
movq %r8, %r12
movq %r10, %rbx
callq 0x19312
movq %r12, %r8
movq 0xe8(%rsp), %r12
movapd 0xc0(%rsp), %xmm5
movsd 0x38(%rsp), %xmm9
movq 0x40(%rsp), %rdi
xorpd %xmm8, %xmm8
movapd 0x50(%rsp), %xmm13
movapd 0xd0(%rsp), %xmm14
movl 0xc(%rsp), %esi
movapd 0x6405(%rip), %xmm15    # 0x1f050
movq 0x28(%rsp), %r9
movq 0x48(%rsp), %rax
movsd %xmm0, (%rax,%rbx,8)
movsd %xmm1, (%r12,%rbx,8)
movl %r8d, %r11d
movapd 0x80(%rsp), %xmm3
jmp 0x18f9c
leaq 0x1(%r8), %rbx
movsd 0x8(%rax,%r8,8), %xmm15
imulq 0x10(%rsp), %rbx
leaq (%r14,%rbx,8), %rax
movsd (%rax,%r8,8), %xmm7
movq 0x30(%rsp), %rax
movsd (%rax,%r8,8), %xmm3
subsd %xmm9, %xmm3
mulsd %xmm0, %xmm0
movapd %xmm3, %xmm1
mulsd %xmm3, %xmm1
addsd %xmm0, %xmm1
movapd 0x110(%rsp), %xmm6
movapd %xmm6, %xmm2
mulsd %xmm5, %xmm2
addsd %xmm1, %xmm2
addsd %xmm3, %xmm3
mulsd %xmm5, %xmm3
movapd %xmm2, %xmm0
movapd 0xe18b(%rip), %xmm4     # 0x26e60
andpd %xmm4, %xmm0
movapd %xmm3, %xmm1
andpd %xmm4, %xmm1
addsd %xmm0, %xmm1
ucomisd %xmm8, %xmm1
movq %r8, 0xb8(%rsp)
movq %r10, 0xb0(%rsp)
movapd %xmm10, 0x1b0(%rsp)
movapd %xmm7, 0x190(%rsp)
jne 0x18d65
jp 0x18d65
andpd %xmm4, %xmm10
movapd 0x120(%rsp), %xmm8
addsd %xmm8, %xmm10
movapd %xmm15, %xmm1
andpd %xmm4, %xmm1
movapd %xmm1, 0x170(%rsp)
addsd %xmm10, %xmm1
andpd %xmm4, %xmm7
addsd %xmm1, %xmm7
movapd %xmm14, %xmm2
andpd %xmm4, %xmm2
movapd %xmm2, 0x160(%rsp)
addsd %xmm7, %xmm2
mulsd 0x130(%rsp), %xmm2
jmp 0x18d89
movapd %xmm15, %xmm0
andpd %xmm4, %xmm0
movapd %xmm0, 0x170(%rsp)
movapd %xmm14, %xmm0
andpd %xmm4, %xmm0
movapd %xmm0, 0x160(%rsp)
movapd %xmm11, %xmm0
mulsd %xmm14, %xmm0
movapd %xmm15, %xmm1
mulsd %xmm13, %xmm1
subsd %xmm0, %xmm1
movapd %xmm5, %xmm0
mulsd %xmm12, %xmm0
addsd %xmm1, %xmm0
movapd %xmm12, %xmm1
mulsd %xmm14, %xmm1
movapd %xmm15, 0x1a0(%rsp)
movapd %xmm15, %xmm4
mulsd 0x80(%rsp), %xmm4
subsd %xmm1, %xmm4
movapd %xmm6, %xmm1
mulsd %xmm11, %xmm1
addsd %xmm4, %xmm1
movapd %xmm11, 0x180(%rsp)
movapd %xmm12, 0x150(%rsp)
callq 0x19312
movq 0x48(%rsp), %rax
movq 0xb0(%rsp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movsd %xmm1, (%r12,%rcx,8)
movapd 0x160(%rsp), %xmm3
addsd 0x120(%rsp), %xmm3
movapd 0x170(%rsp), %xmm2
ucomisd %xmm3, %xmm2
jbe 0x18ef5
movapd 0x6210(%rip), %xmm15    # 0x1f050
movapd 0x1b0(%rsp), %xmm3
xorpd %xmm15, %xmm3
movapd %xmm3, %xmm2
mulsd %xmm0, %xmm2
subsd 0x180(%rsp), %xmm2
movapd 0xc0(%rsp), %xmm5
mulsd %xmm5, %xmm1
addsd %xmm2, %xmm1
movapd 0x1a0(%rsp), %xmm2
divsd %xmm2, %xmm1
movsd %xmm1, (%rax,%rbx,8)
movsd (%r12,%rcx,8), %xmm0
mulsd %xmm3, %xmm0
subsd 0x150(%rsp), %xmm0
movsd (%rax,%rcx,8), %xmm1
mulsd 0x110(%rsp), %xmm1
addsd %xmm0, %xmm1
divsd %xmm2, %xmm1
movsd %xmm1, (%r12,%rbx,8)
movq 0xb8(%rsp), %r8
movl %r8d, %r11d
movq 0x28(%rsp), %r9
movl 0xc(%rsp), %esi
movapd 0xd0(%rsp), %xmm14
movapd 0x80(%rsp), %xmm3
movapd 0x50(%rsp), %xmm13
xorpd %xmm8, %xmm8
movq 0x40(%rsp), %rdi
movsd 0x38(%rsp), %xmm9
jmp 0x18f9c
movapd 0x6153(%rip), %xmm3     # 0x1f050
movapd 0x190(%rsp), %xmm2
xorpd %xmm3, %xmm2
mulsd %xmm2, %xmm0
subsd 0x50(%rsp), %xmm0
mulsd %xmm1, %xmm2
subsd 0x80(%rsp), %xmm2
movapd %xmm2, %xmm1
movapd 0xd0(%rsp), %xmm2
movaps 0xc0(%rsp), %xmm3
callq 0x19312
movapd 0x610c(%rip), %xmm15    # 0x1f050
movq 0x48(%rsp), %rax
movsd %xmm0, (%rax,%rbx,8)
movsd %xmm1, (%r12,%rbx,8)
movq 0xb8(%rsp), %r8
movl %r8d, %r11d
movq 0x28(%rsp), %r9
movl 0xc(%rsp), %esi
movapd 0xd0(%rsp), %xmm14
movapd 0x80(%rsp), %xmm3
movapd 0x50(%rsp), %xmm13
xorpd %xmm8, %xmm8
movq 0x40(%rsp), %rdi
movsd 0x38(%rsp), %xmm9
movapd 0xc0(%rsp), %xmm5
decq %r8
addq 0x70(%rsp), %r13
jmp 0x18b1c
movq 0xe0(%rsp), %r13
decq %r15
decl 0xa0(%rsp)
addq $-0x8, 0xa8(%rsp)
addq $-0x8, %rdi
jmp 0x1876a
movl 0x20(%rsp), %eax
xorl %ecx, %ecx
movq 0x258(%rsp), %rdx
movq %r14, %rsi
movq 0xf0(%rsp), %r11
movq 0xf8(%rsp), %rbx
cmpq %r9, %rcx
je 0x1902f
cmpq %r11, %rcx
setge %dil
cmpq %rbx, %rcx
setle %r8b
testb %r8b, %dil
jne 0x1901c
xorl %edi, %edi
cmpq %rdi, %rax
je 0x1901c
movsd (%rsi,%rdi,8), %xmm0
movsd %xmm0, (%rdx,%rdi,8)
incq %rdi
jmp 0x19008
incq %rcx
decq %rax
movq 0x68(%rsp), %rdi
addq %rdi, %rsi
addq %rdi, %rdx
jmp 0x18fee
movq 0x68(%rsp), %r15
imulq %r11, %r15
addq 0x258(%rsp), %r15
leaq (,%r13,8), %rax
movq 0x1c0(%rsp), %rcx
leaq (%rax,%rcx,8), %rax
addq %rax, %r14
cmpq %r11, %r13
jl 0x190ce
movl 0x100(%rsp), %eax
cmpl %eax, %r13d
cmovll %r13d, %eax
cltq
movq 0x258(%rsp), %rcx
leaq (%rcx,%r13,8), %rcx
movq %r15, %rdx
movq %r11, %rsi
cmpq %rbx, %rsi
jg 0x190c5
movq %rsi, %rdi
imulq 0x10(%rsp), %rdi
xorpd %xmm0, %xmm0
movq %r14, %r8
movq %rdx, %r9
movq %r11, %r10
cmpq %rax, %r10
jg 0x190b8
movsd (%r9), %xmm1
mulsd (%r8), %xmm1
addsd %xmm1, %xmm0
incq %r10
addq $0x8, %r9
addq %rbp, %r8
jmp 0x19099
movsd %xmm0, (%rcx,%rdi,8)
incq %rsi
addq %rbp, %rdx
jmp 0x1907e
decq %r13
addq $-0x8, %r14
jmp 0x19057
xorl %eax, %eax
xorl %ecx, %ecx
movq 0x260(%rsp), %r9
cmpl 0x20(%rsp), %ecx
jge 0x186de
movslq %ecx, %rsi
movq 0x250(%rsp), %rdx
movsd (%rdx,%rsi,8), %xmm0
ucomisd %xmm8, %xmm0
jne 0x190fd
jnp 0x19147
incl %ecx
leaq (%r9,%rsi,8), %rdx
movq 0x258(%rsp), %rdi
leaq (%rdi,%rsi,8), %rsi
xorl %edi, %edi
movq 0x28(%rsp), %r8
subq $0x1, %r8
jb 0x19147
movsd 0x8(%rsi,%rdi), %xmm0
movsd %xmm0, (%rdx,%rdi)
movsd (%rsi,%rdi), %xmm0
movsd %xmm0, 0x8(%rsi,%rdi)
movsd (%rdx,%rdi), %xmm0
xorpd %xmm15, %xmm0
movlpd %xmm0, 0x8(%rdx,%rdi)
addq %rbp, %rdi
jmp 0x19116
incl %ecx
jmp 0x190da
xorl %eax, %eax
jmp 0x186de