// File: /workspace/github_c_makefile_star2_O3/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 $0x228, %rsp            # imm = 0x228
movq %r8, 0x20(%rsp)
movl %ecx, %ebp
movq %rsi, %r13
movl %edi, (%rsp)
movq 0x260(%rsp), %rsi
xorpd %xmm13, %xmm13
movl %edx, %r14d
xorpd %xmm2, %xmm2
testl %edx, %edx
movq %r9, 0x30(%rsp)
jle 0x1b563
xorl %eax, %eax
xorl %ecx, %ecx
movq %rax, (%r9,%rcx,8)
movq %rax, (%rsi,%rcx,8)
incq %rcx
cmpq %rcx, %r14
jne 0x1b4be
xorpd %xmm2, %xmm2
testl %edx, %edx
jle 0x1b563
leal 0x1(%rdx), %eax
movslq 0x20(%rsp), %rcx
movslq %ebp, %rbx
leaq -0x8(%r13), %rsi
leaq (,%r14,8), %rdi
leaq 0x1(%r14), %r8
xorl %r9d, %r9d
movapd 0xfa00(%rip), %xmm0     # 0x2af00
cmpl $0x2, %r9d
movl $0x1, %r10d
cmovgel %r9d, %r10d
cmpl %edx, %r10d
jg 0x1b529
movsd (%rsi,%r10,8), %xmm1
andpd %xmm0, %xmm1
addsd %xmm1, %xmm2
incq %r10
cmpq %r10, %r8
jne 0x1b513
cmpq %rbx, %r9
setge %r10b
cmpq %rcx, %r9
setle %r11b
testb %r11b, %r10b
movq 0x30(%rsp), %r11
jne 0x1b558
movl %eax, %r10d
imull %r9d, %r10d
movslq %r10d, %r10
movsd (%r13,%r10,8), %xmm1
movsd %xmm1, (%r11,%r9,8)
incq %r9
addq %rdi, %rsi
cmpq %r14, %r9
jne 0x1b500
movq 0x20(%rsp), %rax
xorpd %xmm8, %xmm8
xorpd %xmm12, %xmm12
subl %ebp, %eax
movq %rdx, 0x10(%rsp)
movq %r14, 0x18(%rsp)
movl %ebp, 0x4c(%rsp)
movq %r13, 0x8(%rsp)
jl 0x1c641
leal 0x1(%rdx), %r8d
leal -0x1(%rdx), %ecx
movl %ecx, 0x128(%rsp)
movslq %ebp, %r15
movslq %edx, %rcx
leaq -0x8(%r13), %rsi
movq %rsi, 0x150(%rsp)
leaq (,%rcx,8), %r11
leaq 0x8(,%rcx,8), %rsi
movq %rsi, 0x38(%rsp)
movq %r11, %rsi
xorq $-0x8, %rsi
movq %rsi, 0x90(%rsp)
movl %edx, %esi
notl %esi
movl %esi, 0xd0(%rsp)
movl %ebp, %esi
imull %r8d, %esi
movl %esi, 0x124(%rsp)
movl $0x1, %esi
subl %ebp, %esi
movl %esi, 0x120(%rsp)
movq %rcx, %rsi
shlq $0x4, %rsi
addq $0x10, %rsi
movq %rsi, 0x28(%rsp)
movl %eax, %esi
movq %r15, %rax
movq %rcx, 0x80(%rsp)
imulq %rcx, %rax
movq 0x268(%rsp), %rcx
leaq (%rcx,%rax,8), %rdi
addq $0x10, %rdi
movq %rdi, 0x200(%rsp)
incl %esi
movl %esi, 0x160(%rsp)
leaq (%rcx,%rax,8), %rax
movq %rax, 0x1d8(%rsp)
xorpd %xmm12, %xmm12
xorpd %xmm6, %xmm6
movapd 0xf8aa(%rip), %xmm1     # 0x2af00
movapd 0xf8a2(%rip), %xmm4     # 0x2af00
movapd 0x79da(%rip), %xmm5     # 0x23040
movdqa 0x79f2(%rip), %xmm0     # 0x23060
movdqa 0x79fa(%rip), %xmm7     # 0x23070
xorpd %xmm10, %xmm10
xorpd %xmm3, %xmm3
movsd %xmm3, 0xe8(%rsp)
xorpd %xmm13, %xmm13
leaq 0x8(%r13), %rax
movq %rax, 0x178(%rsp)
leaq 0x10(%r13), %rax
movq %rax, 0x1f8(%rsp)
movq 0x20(%rsp), %rax
movl %eax, %r9d
movapd %xmm2, 0xc0(%rsp)
movl %r8d, 0x48(%rsp)
movq %r15, 0x210(%rsp)
movl %r9d, %ebx
imull %edx, %ebx
leal (%rbx,%r9), %ecx
leal -0x1(%r9), %r14d
cmpl $0x0, (%rsp)
movl 0x128(%rsp), %eax
cmovel %r9d, %eax
movslq %ecx, %rcx
movq %rcx, 0x140(%rsp)
movslq %r9d, %r10
movl %r10d, %ecx
cmpl %ebp, %r9d
cmovlel %ebp, %ecx
movl %r14d, 0xf0(%rsp)
jle 0x1c290
movl %r14d, %r12d
imull %edx, %r12d
movl %ecx, %r8d
leal (%r12,%r10), %ecx
leal -0x2(%r10), %edi
leal (%r12,%r10), %esi
decl %esi
movslq %esi, %rsi
movq %rsi, 0x188(%rsp)
movq %rbx, 0xa8(%rsp)
leal -0x1(%rbx,%r10), %esi
movslq %esi, %rsi
movq %rsi, 0x68(%rsp)
movslq %ecx, %rcx
movq %rcx, 0x218(%rsp)
movq %r12, 0x170(%rsp)
leal -0x2(%r10,%r12), %ecx
movslq %ecx, %rcx
movq %rcx, 0x1e8(%rsp)
movslq %edi, %rbx
cltq
movq 0x38(%rsp), %rsi
movq %rsi, %rcx
imulq %r10, %rcx
addq 0x150(%rsp), %rcx
movq %rcx, 0x110(%rsp)
movl 0x48(%rsp), %r12d
movl %r12d, %ecx
imull %r14d, %ecx
movl %ecx, 0x13c(%rsp)
addl 0x120(%rsp), %r8d
movl %r8d, 0x12c(%rsp)
leaq (,%rbx,8), %rcx
addq %r13, %rcx
movq %rcx, 0xf8(%rsp)
movl %edx, %ecx
movl %edi, 0x100(%rsp)
imull %edi, %ecx
movl %ecx, 0x138(%rsp)
movq %rbx, %rcx
negq %rcx
movq %rcx, 0x208(%rsp)
leaq 0x2(%rbx), %rcx
imulq %r11, %rcx
leaq (%rcx,%rbx,8), %rcx
movq %rcx, 0x78(%rsp)
movq 0x178(%rsp), %rcx
leaq (%rcx,%rbx,8), %rcx
movq %rcx, 0x70(%rsp)
imulq %rsi, %rbx
movq %rbx, 0x180(%rsp)
leal -0x3(%r10), %ecx
movl %r12d, %esi
movl %ecx, 0x134(%rsp)
imull %ecx, %esi
movl %esi, 0x130(%rsp)
leal 0x1(%r10), %ecx
movl %ecx, 0x11c(%rsp)
movslq %r14d, %r14
leaq (,%r10,8), %rcx
movq %rcx, 0x1e0(%rsp)
leaq (%r13,%r10,8), %rcx
movq %rcx, 0x220(%rsp)
movl %r14d, %ecx
movq %rcx, 0x1f0(%rsp)
xorl %r12d, %r12d
movq %r9, 0x50(%rsp)
movq %r10, 0x40(%rsp)
movl 0x13c(%rsp), %ecx
movq 0x110(%rsp), %rbx
movq 0xa8(%rsp), %rsi
movq 0x220(%rsp), %rdi
movslq %esi, %r8
movslq %ecx, %r9
movsd (%r13,%r9,8), %xmm3
andpd %xmm1, %xmm3
movsd (%rdi,%r8,8), %xmm9
andpd %xmm1, %xmm9
addsd %xmm3, %xmm9
movapd %xmm9, %xmm8
cmpeqsd %xmm6, %xmm8
movapd %xmm8, %xmm3
andnpd %xmm9, %xmm3
andpd %xmm2, %xmm8
orpd %xmm3, %xmm8
movsd (%rbx), %xmm3
andpd %xmm1, %xmm3
movapd %xmm8, %xmm9
mulsd 0xf612(%rip), %xmm9     # 0x2aee8
ucomisd %xmm3, %xmm9
jae 0x1b8fd
decq %r10
addq $-0x8, %rdi
subl %edx, %esi
addq 0x90(%rsp), %rbx
addl 0xd0(%rsp), %ecx
cmpq %r15, %r10
jg 0x1b880
movl %ebp, %r10d
movq 0x140(%rsp), %rcx
movsd (%r13,%rcx,8), %xmm2
movq 0x50(%rsp), %r9
cmpl %r9d, %r10d
je 0x1c2e8
movq 0x188(%rsp), %rcx
movsd (%r13,%rcx,8), %xmm15
movq 0x68(%rsp), %rcx
movsd (%r13,%rcx,8), %xmm14
movq 0x218(%rsp), %rcx
mulsd (%r13,%rcx,8), %xmm14
cmpl 0xf0(%rsp), %r10d
je 0x1c2ef
testl %r12d, %r12d
movl %r12d, 0x1b0(%rsp)
je 0x1ba23
cmpl $0x1e, %r12d
movq 0x28(%rsp), %r15
movq 0x180(%rsp), %rbp
je 0x1c632
imull $0xcccccccd, %r12d, %ecx # imm = 0xCCCCCCCD
rorl %ecx
cmpl $0x19999999, %ecx       # imm = 0x19999999
ja 0x1ba30
movl 0x12c(%rsp), %ecx
movl 0x124(%rsp), %esi
movl 0x48(%rsp), %edi
movslq %esi, %rsi
movsd (%r13,%rsi,8), %xmm3
subsd %xmm2, %xmm3
movsd %xmm3, (%r13,%rsi,8)
addl %edi, %esi
decl %ecx
jne 0x1b9a1
movsd 0xe8(%rsp), %xmm3
addsd %xmm2, %xmm3
movsd %xmm3, 0xe8(%rsp)
movq 0x68(%rsp), %rcx
movsd (%r13,%rcx,8), %xmm3
andpd %xmm1, %xmm3
movq 0x1e8(%rsp), %rcx
movsd (%r13,%rcx,8), %xmm8
andpd %xmm1, %xmm8
addsd %xmm3, %xmm8
movapd %xmm8, %xmm15
mulsd 0xf4e7(%rip), %xmm15    # 0x2aef0
movapd %xmm8, %xmm14
mulsd 0xf4e1(%rip), %xmm14    # 0x2aef8
mulsd %xmm8, %xmm14
movapd %xmm15, %xmm2
jmp 0x1ba30
movq 0x28(%rsp), %r15
movq 0x180(%rsp), %rbp
movl 0x100(%rsp), %ecx
movl %ecx, %r8d
cmpl %r10d, %ecx
jl 0x1bc2f
xorpd %xmm5, %xmm14
movslq %r10d, %rcx
addq 0x208(%rsp), %rcx
movq %rcx, 0xb0(%rsp)
movl 0x130(%rsp), %ecx
movl %ecx, %esi
movq 0x178(%rsp), %rdi
movq 0x170(%rsp), %rcx
movl %ecx, %r9d
xorl %r8d, %r8d
movl 0x138(%rsp), %ebx
movq %r13, %r12
movslq %ebx, %rcx
movq 0xf8(%rsp), %r15
leaq (%r15,%rcx,8), %rcx
movslq %r9d, %r15
movq 0x70(%rsp), %r13
leaq (%r13,%r15,8), %r15
movsd (%rcx,%r8,8), %xmm6
movapd %xmm2, %xmm10
subsd %xmm6, %xmm10
movapd %xmm15, %xmm9
subsd %xmm6, %xmm9
movsd (%r15,%r8,8), %xmm3
movapd %xmm3, %xmm11
subsd %xmm6, %xmm11
subsd %xmm10, %xmm11
mulsd %xmm9, %xmm10
addsd %xmm14, %xmm10
divsd -0x8(%r15,%r8,8), %xmm10
addsd (%rdi,%rbp), %xmm10
subsd %xmm9, %xmm11
movapd %xmm10, %xmm9
andpd %xmm1, %xmm9
movapd %xmm11, %xmm12
andpd %xmm1, %xmm12
addsd %xmm9, %xmm12
movq 0x78(%rsp), %rcx
movsd (%rdi,%rcx), %xmm9
unpcklpd %xmm9, %xmm11           # xmm11 = xmm11[0],xmm9[0]
movapd %xmm9, %xmm8
andpd %xmm1, %xmm8
addsd %xmm12, %xmm8
movapd %xmm11, %xmm12
divsd %xmm8, %xmm10
movapd %xmm8, %xmm9
unpcklpd %xmm8, %xmm9            # xmm9 = xmm9[0],xmm8[0]
divpd %xmm9, %xmm12
cmpq %r8, 0xb0(%rsp)
je 0x1bc0e
movapd %xmm8, %xmm0
movapd %xmm12, %xmm9
andpd %xmm4, %xmm9
movapd %xmm12, %xmm8
pshufd $0xee, %xmm9, %xmm12    # xmm12 = xmm9[2,3,2,3]
addpd %xmm9, %xmm12
movslq %esi, %rsi
movq %r12, %r13
movsd (%r12,%rsi,8), %xmm9
andpd %xmm4, %xmm9
movapd %xmm6, %xmm11
andpd %xmm4, %xmm11
addsd %xmm9, %xmm11
andpd %xmm4, %xmm3
addsd %xmm11, %xmm3
mulsd 0xf34e(%rip), %xmm3     # 0x2aee8
unpcklpd %xmm3, %xmm12           # xmm12 = xmm12[0],xmm3[0]
movsd -0x10(%rdi,%rbp), %xmm3
unpcklpd %xmm10, %xmm3           # xmm3 = xmm3[0],xmm10[0]
andpd %xmm4, %xmm3
mulpd %xmm12, %xmm3
movapd %xmm3, %xmm9
unpckhpd %xmm3, %xmm9            # xmm9 = xmm9[1],xmm3[1]
subl %edx, %ebx
decq %r8
subl %edx, %r9d
addq 0x90(%rsp), %rdi
addl 0xd0(%rsp), %esi
ucomisd %xmm3, %xmm9
jb 0x1ba81
movapd %xmm6, %xmm13
addl 0x1f0(%rsp), %r8d
movapd %xmm8, %xmm12
movapd %xmm0, %xmm8
movq 0x28(%rsp), %r15
xorpd %xmm6, %xmm6
movdqa 0x7459(%rip), %xmm0     # 0x23060
movq 0x50(%rsp), %r9
jmp 0x1bc2f
movl %r10d, %r8d
movapd %xmm6, %xmm13
movq 0x28(%rsp), %r15
xorpd %xmm6, %xmm6
movdqa 0x7439(%rip), %xmm0     # 0x23060
movq 0x50(%rsp), %r9
movq %r12, %r13
leal 0x2(%r8), %ecx
movslq %r8d, %rbp
cmpl %r9d, %ecx
pcmpeqd %xmm15, %xmm15
jg 0x1bcff
movl 0x100(%rsp), %ecx
subl %ebp, %ecx
leaq 0x2(%rcx), %rdx
movabsq $0x1fffffffe, %rsi      # imm = 0x1FFFFFFFE
andq %rsi, %rdx
movq %rcx, %xmm3
pshufd $0x44, %xmm3, %xmm14    # xmm14 = xmm3[0,1,0,1]
leaq 0x2(%rbp), %rcx
imulq %r11, %rcx
leaq (,%rbp,8), %rsi
addq %r13, %rsi
leaq 0x3(%rbp), %rdi
imulq %r11, %rdi
xorl %r9d, %r9d
movq %r9, %xmm3
pshufd $0x44, %xmm3, %xmm3     # xmm3 = xmm3[0,1,0,1]
por %xmm0, %xmm3
movdqa %xmm14, %xmm9
pxor %xmm7, %xmm9
pxor %xmm7, %xmm3
movdqa %xmm3, %xmm11
pcmpgtd %xmm9, %xmm11
pcmpeqd %xmm9, %xmm3
pshufd $0xf5, %xmm3, %xmm9     # xmm9 = xmm3[1,1,3,3]
pand %xmm11, %xmm9
pshufd $0xf5, %xmm11, %xmm3    # xmm3 = xmm11[1,1,3,3]
por %xmm9, %xmm3
movd %xmm3, %ebx
notl %ebx
testb $0x1, %bl
je 0x1bcdb
movq $0x0, (%rsi,%rcx)
pxor %xmm15, %xmm3
pextrw $0x4, %xmm3, %ebx
testb $0x1, %bl
je 0x1bcf3
movq $0x0, 0x8(%rsi,%rdi)
addq $0x2, %r9
addq %r15, %rsi
cmpq %r9, %rdx
jne 0x1bc87
leal 0x3(%r8), %ecx
cmpl 0x50(%rsp), %ecx
jg 0x1bdcd
movslq %ecx, %rsi
movl 0x134(%rsp), %ecx
subl %r8d, %ecx
leaq 0x2(%rcx), %rdx
movabsq $0x1fffffffe, %rdi      # imm = 0x1FFFFFFFE
andq %rdi, %rdx
movq %rcx, %xmm3
pshufd $0x44, %xmm3, %xmm14    # xmm14 = xmm3[0,1,0,1]
movq 0x38(%rsp), %rcx
imulq %rsi, %rcx
leaq 0x1(%rsi), %rdi
imulq %r11, %rdi
leaq (%rdi,%rsi,8), %rsi
addq $-0x10, %rsi
movq %r13, %rdi
xorl %r9d, %r9d
movq %r9, %xmm3
pshufd $0x44, %xmm3, %xmm3     # xmm3 = xmm3[0,1,0,1]
por %xmm0, %xmm3
movdqa %xmm14, %xmm9
pxor %xmm7, %xmm9
pxor %xmm7, %xmm3
movdqa %xmm3, %xmm11
pcmpgtd %xmm9, %xmm11
pcmpeqd %xmm9, %xmm3
pshufd $0xf5, %xmm3, %xmm9     # xmm9 = xmm3[1,1,3,3]
pand %xmm11, %xmm9
pshufd $0xf5, %xmm11, %xmm3    # xmm3 = xmm11[1,1,3,3]
por %xmm9, %xmm3
movd %xmm3, %ebx
notl %ebx
testb $0x1, %bl
je 0x1bdaa
movq $0x0, -0x18(%rdi,%rcx)
pxor %xmm15, %xmm3
pextrw $0x4, %xmm3, %ebx
testb $0x1, %bl
je 0x1bdc1
movq $0x0, (%rdi,%rsi)
addq $0x2, %r9
addq %r15, %rdi
cmpq %r9, %rdx
jne 0x1bd55
cmpl 0x50(%rsp), %r8d
jge 0x1c253
cmpl $0x0, (%rsp)
movl $0x0, %ecx
cmovel %r10d, %ecx
movl %ecx, 0xb0(%rsp)
movslq %ecx, %r9
movq %rbp, %rcx
imulq 0x80(%rsp), %rcx
movq %rcx, 0x190(%rsp)
movq 0x150(%rsp), %rcx
leaq (%rcx,%rbp,8), %rcx
movq %rcx, 0x1c0(%rsp)
leaq 0x2(%rbp), %rcx
imulq %r11, %rcx
leaq (%rcx,%rbp,8), %rdx
addq %r13, %rdx
leaq 0x1(%rbp), %rcx
imulq %r11, %rcx
movq %r13, %rdi
leaq (%rcx,%rbp,8), %r13
addq %rdi, %r13
movq 0x38(%rsp), %rsi
imulq %rbp, %rsi
addq %rdi, %rsi
movq %r11, %rcx
imulq %r9, %rcx
decq %r9
movq %r9, 0x1a0(%rsp)
leaq (%rcx,%rbp,8), %r15
addq 0x1f8(%rsp), %r15
movq 0x200(%rsp), %rcx
leaq (%rcx,%rbp,8), %r9
movq %rbp, %rbx
cmpq %rbp, %rbx
je 0x1bf15
xorpd %xmm2, %xmm2
cmpq %r14, %rbx
je 0x1be9f
leaq 0x2(%rbx), %rcx
imulq 0x80(%rsp), %rcx
movq 0x8(%rsp), %rdi
leaq (%rdi,%rcx,8), %rcx
movsd -0x8(%rcx,%rbx,8), %xmm2
movq %rbx, %rcx
movq 0x80(%rsp), %r12
imulq %r12, %rcx
movq 0x8(%rsp), %rdi
leaq (%rdi,%rcx,8), %rcx
movsd -0x8(%rcx,%rbx,8), %xmm10
leaq 0x1(%rbx), %rcx
imulq %r12, %rcx
leaq (%rdi,%rcx,8), %rcx
movsd -0x8(%rcx,%rbx,8), %xmm12
movapd %xmm10, %xmm3
andpd %xmm1, %xmm3
movapd %xmm12, %xmm9
andpd %xmm1, %xmm9
addsd %xmm3, %xmm9
unpcklpd %xmm2, %xmm12           # xmm12 = xmm12[0],xmm2[0]
andpd %xmm1, %xmm2
addsd %xmm9, %xmm2
ucomisd %xmm6, %xmm2
jne 0x1bf03
jnp 0x1c22f
divsd %xmm2, %xmm10
movapd %xmm2, %xmm3
unpcklpd %xmm2, %xmm3            # xmm3 = xmm3[0],xmm2[0]
divpd %xmm3, %xmm12
movapd %xmm12, %xmm3
mulsd %xmm12, %xmm3
movapd %xmm10, %xmm9
mulsd %xmm10, %xmm9
addsd %xmm3, %xmm9
movapd %xmm12, %xmm13
unpckhpd %xmm12, %xmm13          # xmm13 = xmm13[1],xmm12[1]
movapd %xmm13, %xmm3
mulsd %xmm13, %xmm3
addsd %xmm9, %xmm3
xorps %xmm0, %xmm0
sqrtsd %xmm3, %xmm0
movapd %xmm10, %xmm3
cmpltsd %xmm6, %xmm3
movapd %xmm3, %xmm9
andnpd %xmm0, %xmm9
xorpd %xmm5, %xmm0
andpd %xmm3, %xmm0
orpd %xmm9, %xmm0
cmpq %rbp, %rbx
jne 0x1bf99
cmpl %r8d, %r10d
je 0x1bfc2
movq 0x190(%rsp), %rcx
movq 0x1c0(%rsp), %rdi
movsd (%rdi,%rcx,8), %xmm3
xorpd %xmm5, %xmm3
movlpd %xmm3, (%rdi,%rcx,8)
jmp 0x1bfc2
movapd %xmm0, %xmm3
xorpd %xmm5, %xmm3
mulsd %xmm3, %xmm2
movq %rbx, %rcx
imulq 0x80(%rsp), %rcx
movq 0x150(%rsp), %rdi
leaq (%rdi,%rbx,8), %rdi
movsd %xmm2, (%rdi,%rcx,8)
addsd %xmm0, %xmm10
movapd %xmm10, %xmm2
divsd %xmm0, %xmm2
movapd %xmm12, %xmm14
divsd %xmm0, %xmm14
divsd %xmm0, %xmm13
movapd %xmm10, %xmm3
unpcklpd %xmm10, %xmm3           # xmm3 = xmm3[0],xmm10[0]
divpd %xmm3, %xmm12
movapd %xmm12, %xmm15
unpckhpd %xmm12, %xmm15          # xmm15 = xmm15[1],xmm12[1]
cmpq %rax, %rbx
jg 0x1c0a5
movq $-0x1, %rdi
movsd 0x8(%r13,%rdi,8), %xmm9
movapd %xmm12, %xmm10
mulsd %xmm9, %xmm10
addsd 0x8(%rsi,%rdi,8), %xmm10
cmpq %r14, %rbx
jne 0x1c030
movapd %xmm10, %xmm3
xorpd %xmm5, %xmm3
jmp 0x1c06c
movsd 0x8(%rdx,%rdi,8), %xmm9
movapd %xmm15, %xmm3
mulsd %xmm9, %xmm3
addsd %xmm3, %xmm10
movapd %xmm10, %xmm3
xorpd %xmm5, %xmm3
movapd %xmm10, %xmm11
mulsd %xmm13, %xmm11
subsd %xmm11, %xmm9
movsd %xmm9, 0x8(%rdx,%rdi,8)
movsd 0x8(%r13,%rdi,8), %xmm9
movapd %xmm3, %xmm11
mulsd %xmm14, %xmm11
addsd %xmm9, %xmm11
movsd %xmm11, 0x8(%r13,%rdi,8)
mulsd %xmm2, %xmm3
addsd 0x8(%rsi,%rdi,8), %xmm3
movsd %xmm3, 0x8(%rsi,%rdi,8)
leaq (%rbx,%rdi), %rcx
incq %rcx
incq %rdi
cmpq %rax, %rcx
jl 0x1c008
movapd %xmm12, %xmm8
leal 0x3(%rbx), %ecx
movq 0x50(%rsp), %rdi
cmpl %ecx, %edi
cmovll %edi, %ecx
cmpl %ecx, 0xb0(%rsp)
movapd %xmm13, %xmm6
jg 0x1c174
movslq %ecx, %rdi
movq %r15, %r12
movq 0x1a0(%rsp), %rcx
movsd -0x10(%r12), %xmm3
movsd -0x8(%r12), %xmm9
movapd %xmm14, %xmm11
mulsd %xmm9, %xmm11
movapd %xmm2, %xmm10
mulsd %xmm3, %xmm10
addsd %xmm11, %xmm10
cmpq %r14, %rbx
jne 0x1c10f
movapd %xmm10, %xmm12
xorpd %xmm5, %xmm12
jmp 0x1c148
movsd (%r12), %xmm11
movapd %xmm13, %xmm12
mulsd %xmm11, %xmm12
addsd %xmm12, %xmm10
movapd %xmm10, %xmm12
xorpd %xmm5, %xmm12
movapd %xmm10, %xmm13
mulsd %xmm15, %xmm13
subsd %xmm13, %xmm11
movapd %xmm6, %xmm13
movsd %xmm11, (%r12)
mulsd %xmm8, %xmm12
addsd %xmm9, %xmm12
movsd %xmm12, -0x8(%r12)
subsd %xmm10, %xmm3
movsd %xmm3, -0x10(%r12)
incq %rcx
addq %r11, %r12
cmpq %rdi, %rcx
jl 0x1c0d7
cmpl $0x0, (%rsp)
je 0x1c219
movl 0x160(%rsp), %ecx
movq %r9, %rdi
movsd -0x10(%rdi), %xmm3
movsd -0x8(%rdi), %xmm9
movapd %xmm14, %xmm11
mulsd %xmm9, %xmm11
movapd %xmm2, %xmm10
mulsd %xmm3, %xmm10
addsd %xmm11, %xmm10
cmpq %r14, %rbx
jne 0x1c1bd
movapd %xmm10, %xmm12
xorpd %xmm5, %xmm12
jmp 0x1c1f4
movsd (%rdi), %xmm11
movapd %xmm13, %xmm12
mulsd %xmm11, %xmm12
addsd %xmm12, %xmm10
movapd %xmm10, %xmm12
xorpd %xmm5, %xmm12
movapd %xmm10, %xmm13
mulsd %xmm15, %xmm13
subsd %xmm13, %xmm11
movapd %xmm6, %xmm13
movsd %xmm11, (%rdi)
mulsd %xmm8, %xmm12
addsd %xmm9, %xmm12
movsd %xmm12, -0x8(%rdi)
subsd %xmm10, %xmm3
movsd %xmm3, -0x10(%rdi)
addq %r11, %rdi
decl %ecx
jne 0x1c188
movapd %xmm8, %xmm12
movapd %xmm0, %xmm8
xorpd %xmm6, %xmm6
movdqa 0x6e31(%rip), %xmm0     # 0x23060
incq %rbx
movq 0x38(%rsp), %rcx
addq %rcx, %rdx
addq %rcx, %r13
addq %rcx, %rsi
addq $0x8, %r15
addq $0x8, %r9
cmpq 0x40(%rsp), %rbx
jne 0x1be71
movl 0x1b0(%rsp), %r12d
incl %r12d
movl 0x4c(%rsp), %ebp
movq 0x50(%rsp), %r9
cmpl %ebp, %r9d
movq 0x10(%rsp), %rdx
movq 0x8(%rsp), %r13
movapd 0xc0(%rsp), %xmm2
movq 0x210(%rsp), %r15
movq 0x40(%rsp), %r10
jg 0x1b861
movq 0x140(%rsp), %rax
movsd (%r13,%rax,8), %xmm2
addsd 0xe8(%rsp), %xmm2
movq 0x30(%rsp), %rax
movsd %xmm2, (%rax,%r10,8)
cmpl $0x0, (%rsp)
movl 0xf0(%rsp), %eax
je 0x1c2cf
movq 0x140(%rsp), %rcx
movsd %xmm2, (%r13,%rcx,8)
movapd 0xc0(%rsp), %xmm2
movl %eax, %r9d
cmpl %ebp, %eax
jge 0x1b6c3
jmp 0x1c63c
movq 0x40(%rsp), %r10
jmp 0x1c29f
movapd %xmm15, %xmm10
subsd %xmm2, %xmm10
mulsd 0x6e16(%rip), %xmm10    # 0x23118
movsd 0xe8(%rsp), %xmm3
addsd %xmm3, %xmm2
cmpl $0x0, (%rsp)
movl 0x48(%rsp), %r8d
movq 0x40(%rsp), %rsi
je 0x1c342
movq 0x140(%rsp), %rax
movsd %xmm2, (%r13,%rax,8)
addsd %xmm3, %xmm15
movq 0x188(%rsp), %rax
movsd %xmm15, (%r13,%rax,8)
movapd %xmm10, %xmm3
mulsd %xmm10, %xmm3
addsd %xmm14, %xmm3
movapd %xmm3, %xmm9
andpd %xmm4, %xmm9
sqrtsd %xmm9, %xmm13
ucomisd %xmm3, %xmm6
jbe 0x1c3aa
addsd %xmm10, %xmm2
movq 0x30(%rsp), %rcx
movsd %xmm2, (%rcx,%r14,8)
movq 0x260(%rsp), %rax
movsd %xmm13, (%rax,%r14,8)
movsd %xmm2, (%rcx,%rsi,8)
movapd %xmm13, %xmm9
xorpd %xmm5, %xmm9
movlpd %xmm9, (%rax,%rsi,8)
movsd %xmm3, %xmm12           # xmm12 = xmm3[0],xmm12[1]
movl 0x100(%rsp), %eax
jmp 0x1c2cf
pxor %xmm0, %xmm0
movapd %xmm12, %xmm6
movapd %xmm13, %xmm9
xorpd %xmm5, %xmm9
movapd %xmm10, %xmm12
cmpltsd %xmm0, %xmm12
andpd %xmm12, %xmm9
andnpd %xmm13, %xmm12
orpd %xmm9, %xmm12
movapd %xmm12, %xmm13
addsd %xmm10, %xmm13
movapd %xmm2, %xmm9
addsd %xmm13, %xmm9
movq 0x30(%rsp), %rax
movsd %xmm9, (%rax,%r14,8)
divsd %xmm13, %xmm14
subsd %xmm14, %xmm2
movapd %xmm13, %xmm12
cmpeqsd %xmm0, %xmm12
andpd %xmm12, %xmm9
andnpd %xmm2, %xmm12
orpd %xmm9, %xmm12
movlpd %xmm12, (%rax,%rsi,8)
cmpl $0x0, (%rsp)
je 0x1c607
movq 0x68(%rsp), %rax
movsd (%r13,%rax,8), %xmm10
movapd %xmm10, %xmm3
andpd %xmm1, %xmm3
movapd %xmm13, %xmm8
andpd %xmm1, %xmm8
addsd %xmm3, %xmm8
divsd %xmm8, %xmm10
divsd %xmm8, %xmm13
movapd %xmm13, %xmm3
mulsd %xmm13, %xmm3
movapd %xmm10, %xmm9
mulsd %xmm10, %xmm9
addsd %xmm3, %xmm9
xorps %xmm6, %xmm6
sqrtsd %xmm9, %xmm6
divsd %xmm6, %xmm10
movapd %xmm13, %xmm14
divsd %xmm6, %xmm14
cmpl %edx, %r9d
movdqa 0x6bcd(%rip), %xmm0     # 0x23060
jg 0x1c512
movapd %xmm10, %xmm3
xorpd %xmm5, %xmm3
movslq 0x170(%rsp), %rcx
movslq 0xa8(%rsp), %rax
leaq (,%r14,8), %rsi
leaq (%rsi,%rax,8), %rax
addq %r13, %rax
leaq (%rsi,%rcx,8), %rcx
addq %r13, %rcx
movl %r8d, %edi
subl %r9d, %edi
xorl %esi, %esi
movsd (%rcx,%rsi,8), %xmm2
movsd (%rax,%rsi,8), %xmm12
mulsd %xmm10, %xmm12
movapd %xmm14, %xmm15
mulsd %xmm2, %xmm15
addsd %xmm12, %xmm15
movsd %xmm15, (%rcx,%rsi,8)
mulsd %xmm3, %xmm2
movsd (%rax,%rsi,8), %xmm12
mulsd %xmm14, %xmm12
addsd %xmm2, %xmm12
movsd %xmm12, (%rax,%rsi,8)
incq %rsi
cmpl %esi, %edi
jne 0x1c4cc
testl %r9d, %r9d
movq 0x1e0(%rsp), %rsi
js 0x1c579
movapd %xmm10, %xmm3
xorpd %xmm5, %xmm3
movl 0x11c(%rsp), %eax
movq %r13, %rcx
movsd (%rcx,%r14,8), %xmm2
movsd (%rcx,%rsi), %xmm12
movapd %xmm10, %xmm15
mulsd %xmm12, %xmm15
movapd %xmm14, %xmm9
mulsd %xmm2, %xmm9
addsd %xmm15, %xmm9
movsd %xmm9, (%rcx,%r14,8)
mulsd %xmm3, %xmm2
mulsd %xmm14, %xmm12
addsd %xmm2, %xmm12
movsd %xmm12, (%rcx,%rsi)
addq %r11, %rcx
decq %rax
jne 0x1c532
movapd %xmm10, %xmm3
xorpd %xmm5, %xmm3
movapd %xmm14, %xmm2
unpcklpd %xmm6, %xmm2            # xmm2 = xmm2[0],xmm6[0]
movapd %xmm2, %xmm6
movl 0x160(%rsp), %eax
movq 0x1d8(%rsp), %rcx
movsd (%rcx,%r14,8), %xmm13
movsd (%rcx,%rsi), %xmm9
movapd %xmm10, %xmm2
mulsd %xmm9, %xmm2
movapd %xmm14, %xmm12
mulsd %xmm13, %xmm12
addsd %xmm2, %xmm12
movsd %xmm12, (%rcx,%r14,8)
movapd %xmm13, %xmm2
mulsd %xmm3, %xmm2
mulsd %xmm14, %xmm9
addsd %xmm2, %xmm9
movsd %xmm9, (%rcx,%rsi)
addq %r11, %rcx
decl %eax
jne 0x1c59e
movl 0x100(%rsp), %eax
movapd 0xc0(%rsp), %xmm2
movapd %xmm6, %xmm12
xorpd %xmm6, %xmm6
jmp 0x1c2d8
movapd %xmm6, %xmm12
movsd %xmm3, %xmm12           # xmm12 = xmm3[0],xmm12[1]
movl 0x100(%rsp), %eax
movapd 0xc0(%rsp), %xmm2
xorpd %xmm6, %xmm6
movdqa 0x6a33(%rip), %xmm0     # 0x23060
jmp 0x1c2d8
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
jmp 0x1d15a
unpckhpd %xmm12, %xmm12          # xmm12 = xmm12[1,1]
xorl %eax, %eax
cmpl $0x0, (%rsp)
je 0x1d15a
xorpd %xmm0, %xmm0
ucomisd %xmm0, %xmm2
jne 0x1c65d
jnp 0x1d0b6
movq 0x10(%rsp), %rbx
testl %ebx, %ebx
movq 0x18(%rsp), %r15
jle 0x1cfd4
leal 0x1(%rbx), %eax
movl %eax, 0x110(%rsp)
mulsd 0xe867(%rip), %xmm2     # 0x2aee8
movapd %xmm2, 0xc0(%rsp)
leal -0x3(%rbx), %eax
movslq %eax, %rdx
leaq -0x2(%r15), %rax
imulq %r15, %rax
leaq (,%rax,8), %rsi
addq %r13, %rsi
movq %r13, %rcx
leaq (,%r15,8), %r13
movq %r13, %rbx
negq %rbx
leaq (%rcx,%r15,8), %rax
addq $-0x8, %rax
movq %rax, 0x38(%rsp)
movq %rdx, 0x68(%rsp)
movq %rdx, %rax
imulq %r15, %rax
leaq (%rcx,%rax,8), %rax
movq %rax, 0xa8(%rsp)
leaq (%rcx,%r15,8), %rax
addq $-0x10, %rax
movq %rax, 0xf8(%rsp)
xorpd %xmm6, %xmm6
movapd 0xe80b(%rip), %xmm7     # 0x2af00
movq %r15, %r12
movq 0x260(%rsp), %r11
movq %rbx, 0x40(%rsp)
movq %r12, %rdi
decq %r12
movq 0x30(%rsp), %rax
movsd -0x8(%rax,%rdi,8), %xmm9
movsd -0x8(%r11,%rdi,8), %xmm4
ucomisd %xmm4, %xmm6
movq %rsi, 0xf0(%rsp)
movq %rdi, 0x28(%rsp)
jbe 0x1c7cd
leaq -0x2(%rdi), %r8
leal -0x1(%r12), %eax
movq %r12, %rcx
imulq %r15, %rcx
movl %r12d, %edx
movq 0x10(%rsp), %rsi
imull %esi, %edx
movq 0x8(%rsp), %r14
leaq (%r14,%rcx,8), %rbx
movsd -0x10(%rbx,%rdi,8), %xmm0
movapd %xmm0, %xmm2
andpd %xmm7, %xmm2
movq %r8, %rcx
imulq %r15, %rcx
imull %esi, %eax
cltq
leaq (%r14,%r12,8), %rsi
movsd (%rsi,%rax,8), %xmm1
movapd %xmm1, %xmm3
andpd %xmm7, %xmm3
ucomisd %xmm3, %xmm2
leaq (%r14,%rcx,8), %rbp
movslq %edx, %r15
movsd %xmm9, 0x78(%rsp)
movapd %xmm4, 0x50(%rsp)
movq %rsi, (%rsp)
jbe 0x1c99c
movapd %xmm4, %xmm1
divsd %xmm0, %xmm1
movsd %xmm1, -0x10(%rbp,%rdi,8)
addq %r12, %r15
movapd %xmm9, %xmm1
subsd (%r14,%r15,8), %xmm1
divsd -0x10(%rbx,%rdi,8), %xmm1
jmp 0x1ca45
ucomisd %xmm6, %xmm4
jne 0x1cf34
jp 0x1cf34
movl 0x110(%rsp), %eax
imull %r12d, %eax
cltq
movq 0x8(%rsp), %rcx
movabsq $0x3ff0000000000000, %rdx # imm = 0x3FF0000000000000
movq %rdx, (%rcx,%rax,8)
cmpq $0x2, %rdi
jb 0x1cf67
movq 0x8(%rsp), %rax
leaq (%rax,%r12,8), %rax
movq %rsi, %rcx
movq %r12, %rdx
movl %r12d, %r8d
movq %rdx, %rsi
decq %rdx
movq %rdx, %rdi
imulq %r15, %rdi
movsd (%rax,%rdi,8), %xmm12
movslq %r8d, %r9
cmpq %r9, %r12
jle 0x1c85b
movq %r13, %r10
imulq %r9, %r10
addq 0x38(%rsp), %r10
movsd (%rcx,%r9,8), %xmm0
mulsd (%r10), %xmm0
addsd %xmm0, %xmm12
incq %r9
addq %r13, %r10
cmpq %r12, %r9
jl 0x1c840
movl %edx, %r9d
imull 0x10(%rsp), %r9d
movslq %r9d, %r9
movq 0x8(%rsp), %r10
leaq (%r10,%rsi,8), %r10
addq $-0x8, %r10
movsd (%r10,%r9,8), %xmm0
subsd %xmm9, %xmm0
movsd (%r11,%rdx,8), %xmm3
ucomisd %xmm3, %xmm6
jbe 0x1c89a
movapd %xmm0, %xmm13
movapd %xmm12, %xmm8
jmp 0x1c98a
ucomisd %xmm6, %xmm3
jne 0x1c8db
jp 0x1c8db
movapd %xmm0, %xmm1
cmpeqsd %xmm6, %xmm1
movapd %xmm1, %xmm2
andpd 0xc0(%rsp), %xmm2
andnpd %xmm0, %xmm1
orpd %xmm2, %xmm1
movapd %xmm12, %xmm0
xorpd 0x6773(%rip), %xmm0     # 0x23040
divsd %xmm1, %xmm0
movsd %xmm0, (%rax,%rdi,8)
jmp 0x1c987
movq 0x8(%rsp), %r9
leaq (%r9,%rdi,8), %r8
movsd (%r8,%rsi,8), %xmm1
movq %rsi, %r8
imulq %r15, %r8
leaq (%r9,%r8,8), %r9
movsd (%r9,%rdx,8), %xmm2
movq 0x30(%rsp), %r9
movsd (%r9,%rdx,8), %xmm4
subsd %xmm9, %xmm4
mulsd %xmm3, %xmm3
mulsd %xmm4, %xmm4
addsd %xmm3, %xmm4
movapd %xmm12, %xmm5
mulsd %xmm13, %xmm5
movapd %xmm1, %xmm3
mulsd %xmm8, %xmm3
subsd %xmm5, %xmm3
divsd %xmm4, %xmm3
movsd %xmm3, (%rax,%rdi,8)
movapd %xmm1, %xmm4
andpd %xmm7, %xmm4
movapd %xmm13, %xmm5
andpd %xmm7, %xmm5
ucomisd %xmm4, %xmm5
jae 0x1c96b
xorpd 0x66ea(%rip), %xmm0     # 0x23040
mulsd %xmm3, %xmm0
subsd %xmm12, %xmm0
divsd %xmm1, %xmm0
movsd %xmm0, (%rax,%r8,8)
jmp 0x1c987
xorpd 0x66cd(%rip), %xmm2     # 0x23040
mulsd %xmm3, %xmm2
subsd %xmm8, %xmm2
divsd %xmm13, %xmm2
movsd %xmm2, (%rax,%r8,8)
movl %edx, %r8d
addq %rbx, %rcx
cmpq $0x1, %rsi
jg 0x1c819
jmp 0x1cf34
xorpd 0x669c(%rip), %xmm1     # 0x23040
movsd -0x10(%rbp,%rdi,8), %xmm2
subsd %xmm9, %xmm2
xorpd %xmm0, %xmm0
movapd %xmm4, %xmm3
movapd %xmm13, 0x90(%rsp)
movapd %xmm12, 0xd0(%rsp)
movapd %xmm8, 0x80(%rsp)
movq %r8, 0xb0(%rsp)
movq %rax, 0x70(%rsp)
callq 0x1d366
movq 0x70(%rsp), %rax
movq 0xb0(%rsp), %r8
movq (%rsp), %rsi
movapd 0x50(%rsp), %xmm4
movsd 0x78(%rsp), %xmm9
movq 0x28(%rsp), %rdi
movapd 0xe4ee(%rip), %xmm7     # 0x2af00
xorpd %xmm6, %xmm6
movapd 0x80(%rsp), %xmm8
movapd 0xd0(%rsp), %xmm12
movapd 0x90(%rsp), %xmm13
movq 0x260(%rsp), %r11
movsd %xmm0, -0x10(%rbp,%rdi,8)
addq %r12, %r15
movsd %xmm1, (%rsi,%rax,8)
movq $0x0, -0x10(%rbx,%rdi,8)
movabsq $0x3ff0000000000000, %rax # imm = 0x3FF0000000000000
movq %rax, (%r14,%r15,8)
cmpq $0x3, %rdi
jb 0x1cf2a
movapd %xmm4, %xmm0
xorpd 0x65c9(%rip), %xmm0     # 0x23040
movapd %xmm0, 0x190(%rsp)
movapd %xmm4, %xmm0
andpd 0xe474(%rip), %xmm0     # 0x2af00
leaq (%r14,%r8,8), %rdx
movq 0xa8(%rsp), %r14
movq 0x68(%rsp), %rbp
movq 0x18(%rsp), %r15
movapd %xmm0, 0x1a0(%rsp)
movq %rbp, %rbx
imulq %r15, %rbx
movslq %r8d, %rax
xorpd %xmm11, %xmm11
movhpd (%rsi,%rbx,8), %xmm11   # xmm11 = xmm11[0],mem[0]
cmpq %rax, %r12
jle 0x1caf6
movq %r13, %rcx
imulq %rax, %rcx
addq 0xf8(%rsp), %rcx
movupd (%rcx), %xmm0
movsd (%r14,%rax,8), %xmm1
unpcklpd %xmm1, %xmm1            # xmm1 = xmm1[0,0]
mulpd %xmm0, %xmm1
addpd %xmm1, %xmm11
incq %rax
addq %r13, %rcx
cmpq %r12, %rax
jl 0x1cad4
movl %ebp, %eax
imull 0x10(%rsp), %eax
movslq %eax, %rcx
movq 0x8(%rsp), %rax
leaq (%rax,%rbp,8), %rax
movsd (%rax,%rcx,8), %xmm14
subsd %xmm9, %xmm14
movsd (%r11,%rbp,8), %xmm0
ucomisd %xmm0, %xmm6
movapd %xmm11, %xmm15
unpckhpd %xmm11, %xmm15          # xmm15 = xmm15[1],xmm11[1]
jbe 0x1cb3e
movapd %xmm14, %xmm13
movapd %xmm15, %xmm8
movapd %xmm11, %xmm12
jmp 0x1cf10
movq %rdx, %r15
ucomisd %xmm6, %xmm0
movapd %xmm13, 0x90(%rsp)
movapd %xmm12, 0xd0(%rsp)
movapd %xmm8, 0x80(%rsp)
jne 0x1cbf2
jp 0x1cbf2
movapd 0x64c9(%rip), %xmm0     # 0x23040
xorpd %xmm0, %xmm11
xorpd %xmm0, %xmm15
movapd %xmm11, %xmm0
movapd %xmm15, %xmm1
movapd %xmm14, %xmm2
movapd %xmm4, %xmm3
callq 0x1d366
movq (%rsp), %rsi
movapd 0x50(%rsp), %xmm4
movsd 0x78(%rsp), %xmm9
movapd 0xe34e(%rip), %xmm7     # 0x2af00
xorpd %xmm6, %xmm6
movapd 0x80(%rsp), %xmm8
movapd 0xd0(%rsp), %xmm12
movapd 0x90(%rsp), %xmm13
movq 0x260(%rsp), %r11
movq %r15, %rdx
movsd %xmm0, (%r15,%rbx,8)
movsd %xmm1, (%rsi,%rbx,8)
movl %ebp, %r8d
jmp 0x1cf0b
leal 0x1(%rbp), %ecx
movq 0x8(%rsp), %rdx
leaq (%rdx,%rbx,8), %rdx
movsd 0x8(%rdx,%rbp,8), %xmm1
movaps %xmm1, 0xb0(%rsp)
imull 0x10(%rsp), %ecx
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm10
movq 0x30(%rsp), %rax
movsd (%rax,%rbp,8), %xmm3
subsd %xmm9, %xmm3
mulsd %xmm0, %xmm0
movapd %xmm3, %xmm1
mulsd %xmm3, %xmm1
addsd %xmm0, %xmm1
movapd 0x190(%rsp), %xmm5
movapd %xmm5, %xmm2
mulsd %xmm4, %xmm2
addsd %xmm1, %xmm2
addsd %xmm3, %xmm3
mulsd %xmm4, %xmm3
movapd %xmm2, %xmm0
andpd %xmm7, %xmm0
movapd %xmm3, %xmm1
andpd %xmm7, %xmm1
addsd %xmm0, %xmm1
ucomisd %xmm6, %xmm1
movapd %xmm14, 0x1c0(%rsp)
movapd %xmm10, 0x1b0(%rsp)
jne 0x1cce0
jp 0x1cce0
andpd %xmm7, %xmm14
movapd 0x1a0(%rsp), %xmm6
addsd %xmm6, %xmm14
movapd 0xb0(%rsp), %xmm1
andpd %xmm7, %xmm1
movapd %xmm1, 0x160(%rsp)
addsd %xmm14, %xmm1
andpd %xmm7, %xmm10
addsd %xmm1, %xmm10
movapd %xmm13, %xmm2
andpd %xmm7, %xmm2
movapd %xmm2, 0x150(%rsp)
addsd %xmm10, %xmm2
mulsd 0xc0(%rsp), %xmm2
jmp 0x1cd08
movapd 0xb0(%rsp), %xmm0
andpd %xmm7, %xmm0
movapd %xmm0, 0x160(%rsp)
movapd %xmm13, %xmm0
andpd %xmm7, %xmm0
movapd %xmm0, 0x150(%rsp)
leaq 0x1(%rbp), %rax
imulq 0x18(%rsp), %rax
movq %rax, 0x70(%rsp)
movapd %xmm11, %xmm0
mulsd %xmm13, %xmm0
movapd 0xb0(%rsp), %xmm6
movapd %xmm6, %xmm1
mulsd %xmm12, %xmm1
subsd %xmm0, %xmm1
movapd %xmm4, %xmm0
mulsd %xmm15, %xmm0
addsd %xmm1, %xmm0
movapd %xmm15, %xmm1
mulsd %xmm13, %xmm1
movapd %xmm6, %xmm4
mulsd %xmm8, %xmm4
subsd %xmm1, %xmm4
movapd %xmm5, %xmm1
mulsd %xmm11, %xmm1
addsd %xmm4, %xmm1
movapd %xmm11, 0x140(%rsp)
movapd %xmm15, 0x100(%rsp)
callq 0x1d366
movsd %xmm0, (%r15,%rbx,8)
movq (%rsp), %rsi
movsd %xmm1, (%rsi,%rbx,8)
movapd 0x150(%rsp), %xmm3
addsd 0x1a0(%rsp), %xmm3
movapd 0x160(%rsp), %xmm2
ucomisd %xmm3, %xmm2
jbe 0x1ce6f
movq %r15, %rdx
movapd 0x1c0(%rsp), %xmm3
xorpd 0x6277(%rip), %xmm3     # 0x23040
movapd %xmm3, %xmm2
mulsd %xmm0, %xmm2
subsd 0x140(%rsp), %xmm2
movapd 0x50(%rsp), %xmm4
mulsd %xmm4, %xmm1
addsd %xmm2, %xmm1
movapd 0xb0(%rsp), %xmm2
divsd %xmm2, %xmm1
movq 0x70(%rsp), %rax
movsd %xmm1, (%r15,%rax,8)
movsd (%rsi,%rbx,8), %xmm0
mulsd %xmm3, %xmm0
subsd 0x100(%rsp), %xmm0
movsd (%r15,%rbx,8), %xmm1
mulsd 0x190(%rsp), %xmm1
addsd %xmm0, %xmm1
divsd %xmm2, %xmm1
movsd %xmm1, (%rsi,%rax,8)
movl %ebp, %r8d
movq 0x260(%rsp), %r11
movapd 0x90(%rsp), %xmm13
movapd 0xd0(%rsp), %xmm12
movapd 0x80(%rsp), %xmm8
xorpd %xmm6, %xmm6
movapd 0xe09d(%rip), %xmm7     # 0x2af00
movsd 0x78(%rsp), %xmm9
jmp 0x1cf0b
movapd 0x1b0(%rsp), %xmm2
xorpd 0x61c0(%rip), %xmm2     # 0x23040
mulsd %xmm2, %xmm0
subsd 0xd0(%rsp), %xmm0
mulsd %xmm1, %xmm2
subsd 0x80(%rsp), %xmm2
movapd %xmm2, %xmm1
movapd 0x90(%rsp), %xmm2
movapd 0x50(%rsp), %xmm3
callq 0x1d366
movq %r15, %rdx
movq (%rsp), %rsi
movq 0x70(%rsp), %rax
movsd %xmm0, (%r15,%rax,8)
movsd %xmm1, (%rsi,%rax,8)
movl %ebp, %r8d
movq 0x260(%rsp), %r11
movapd 0x90(%rsp), %xmm13
movapd 0xd0(%rsp), %xmm12
movapd 0x80(%rsp), %xmm8
xorpd %xmm6, %xmm6
movapd 0xe002(%rip), %xmm7     # 0x2af00
movsd 0x78(%rsp), %xmm9
movapd 0x50(%rsp), %xmm4
movq 0x18(%rsp), %r15
leaq -0x1(%rbp), %rax
movq 0x40(%rsp), %rbx
addq %rbx, %r14
testq %rbp, %rbp
movq %rax, %rbp
jg 0x1caab
jmp 0x1cf34
movq 0x18(%rsp), %r15
movq 0x40(%rsp), %rbx
decq 0x68(%rsp)
movq 0xf0(%rsp), %rsi
addq %rbx, %rsi
addq $-0x8, 0x38(%rsp)
addq %rbx, 0xa8(%rsp)
addq $-0x8, 0xf8(%rsp)
cmpq $0x1, 0x28(%rsp)
jg 0x1c705
movq 0x10(%rsp), %rbx
testl %ebx, %ebx
movl 0x4c(%rsp), %ebp
movq 0x8(%rsp), %r13
jle 0x1cfd4
movslq 0x20(%rsp), %rax
movslq %ebp, %rcx
leaq 0x8(,%r15,8), %rdx
xorl %esi, %esi
movq %r15, %rdi
movq %r13, %r8
movq 0x268(%rsp), %r9
cmpq %rcx, %rsi
setge %r10b
cmpq %rax, %rsi
setle %r11b
testb %r11b, %r10b
jne 0x1cfc3
xorl %r10d, %r10d
movsd (%r8,%r10,8), %xmm0
movsd %xmm0, (%r9,%r10,8)
incq %r10
cmpq %r10, %rdi
jne 0x1cfaf
incq %rsi
addq %rdx, %r9
addq %rdx, %r8
decq %rdi
cmpq %r15, %rsi
jne 0x1cf99
cmpl %ebp, %ebx
jle 0x1d0b6
movslq %ebp, %rax
movslq 0x10(%rsp), %rcx
movq 0x20(%rsp), %rdx
incl %edx
leaq (,%rcx,8), %rsi
leaq 0x8(,%rcx,8), %rdi
imulq %rax, %rdi
addq 0x268(%rsp), %rdi
movq %rdi, 0x90(%rsp)
leaq -0x1(%rax), %r8
leaq 0x8(,%rax,8), %rdi
imulq %rcx, %rdi
leaq (%rdi,%r13), %r9
addq $-0x8, %r9
movq %rcx, %r10
leaq -0x1(%r10), %r11
cmpl %ebp, 0x20(%rsp)
jl 0x1d0a2
movq 0x20(%rsp), %rdi
cmpl %edi, %r11d
cmovll %r11d, %edi
movslq %edi, %rbx
movq 0x268(%rsp), %rdi
leaq (%rdi,%r11,8), %r14
movq 0x90(%rsp), %rdi
movq %rax, %r12
xorpd %xmm0, %xmm0
cmpq %rax, %r10
jle 0x1d08a
movq %r9, %r13
movq %r8, %rbp
movq %rdi, %r15
movsd (%r15), %xmm1
mulsd (%r13), %xmm1
addsd %xmm1, %xmm0
addq $0x8, %r15
incq %rbp
addq %rsi, %r13
cmpq %rbx, %rbp
jl 0x1d06c
movq %r12, %r15
imulq %rcx, %r15
movsd %xmm0, (%r14,%r15,8)
incq %r12
addq %rsi, %rdi
cmpl %r12d, %edx
jne 0x1d05a
addq $-0x8, %r9
movq %r11, %r10
cmpq %rax, %r11
movl 0x4c(%rsp), %ebp
jg 0x1d02a
movq 0x10(%rsp), %r10
testl %r10d, %r10d
movl $0x0, %eax
jle 0x1d15a
movq 0x270(%rsp), %rax
movq 0x18(%rsp), %rbx
leaq (,%rbx,8), %rcx
xorl %edx, %edx
xorpd %xmm0, %xmm0
movapd 0x5f54(%rip), %xmm1     # 0x23040
movq 0x260(%rsp), %r11
movq 0x268(%rsp), %r14
movslq %edx, %rdi
movsd (%r11,%rdi,8), %xmm2
ucomisd %xmm0, %xmm2
jne 0x1d10d
jnp 0x1d151
leal 0x1(%rdi), %edx
leaq (%rax,%rdi,8), %rsi
leaq (%r14,%rdi,8), %rdi
movq %rbx, %r8
xorl %r9d, %r9d
movsd 0x8(%rdi,%r9), %xmm2
movsd %xmm2, (%rsi,%r9)
movsd (%rdi,%r9), %xmm2
movsd %xmm2, 0x8(%rdi,%r9)
movsd (%rsi,%r9), %xmm2
xorpd %xmm1, %xmm2
movlpd %xmm2, 0x8(%rsi,%r9)
addq %rcx, %r9
decq %r8
jne 0x1d11e
incl %edx
cmpl %r10d, %edx
jl 0x1d0fc
xorl %eax, %eax
addq $0x228, %rsp            # imm = 0x228
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq