// File: /workspace/github_c_makefile_star2_O1/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 $0x258, %rsp            # imm = 0x258
movq %r8, 0x40(%rsp)
movl %edx, %r14d
movq %rsi, %r11
movl %edi, 0x60(%rsp)
movq 0x290(%rsp), %rsi
testl %edx, %edx
jle 0x1b1db
movl %r14d, %eax
xorl %edi, %edi
xorl %edx, %edx
movq %rdi, (%r9,%rdx,8)
movq %rdi, (%rsi,%rdx,8)
incq %rdx
cmpq %rdx, %rax
jne 0x1b1cb
xorpd %xmm9, %xmm9
movslq %ecx, %r12
xorpd %xmm6, %xmm6
testl %r14d, %r14d
movq %r11, 0x8(%rsp)
jle 0x1b27e
leal 0x1(%r14), %eax
movslq 0x40(%rsp), %rbx
movl %r14d, %edx
leaq -0x8(%r11), %rsi
leaq (,%rdx,8), %rdi
leaq 0x1(%rdx), %r8
xorl %r15d, %r15d
movapd 0x20c24(%rip), %xmm0    # 0x3be40
cmpl $0x2, %r15d
movl $0x1, %r10d
cmovgel %r15d, %r10d
cmpl %r14d, %r10d
jg 0x1b245
movsd (%rsi,%r10,8), %xmm1
andpd %xmm0, %xmm1
addsd %xmm1, %xmm6
incq %r10
cmpq %r10, %r8
jne 0x1b22f
cmpq %r12, %r15
setge %r10b
cmpq %rbx, %r15
setle %r11b
testb %r11b, %r10b
movq 0x8(%rsp), %r11
jne 0x1b273
movl %eax, %r10d
imull %r15d, %r10d
movslq %r10d, %r10
movsd (%r11,%r10,8), %xmm1
movsd %xmm1, (%r9,%r15,8)
incq %r15
addq %rdi, %rsi
cmpq %rdx, %r15
jne 0x1b21c
movq 0x40(%rsp), %rax
xorpd %xmm8, %xmm8
xorpd %xmm7, %xmm7
subl %ecx, %eax
movl %eax, 0x88(%rsp)
movq %r14, 0x28(%rsp)
movl %ecx, 0x24(%rsp)
movq %r12, 0xb8(%rsp)
movq %r9, 0x80(%rsp)
jge 0x1bdc6
xorl %eax, %eax
cmpl $0x0, 0x60(%rsp)
je 0x1cdc1
xorpd %xmm0, %xmm0
ucomisd %xmm0, %xmm6
movl %r14d, %eax
movq %rax, 0x10(%rsp)
jne 0x1b2d9
jnp 0x1bd1c
movq 0x28(%rsp), %r11
testl %r11d, %r11d
jle 0x1bbd5
leal 0x1(%r11), %eax
movl %eax, 0xf0(%rsp)
mulsd 0x20b2e(%rip), %xmm6    # 0x3be28
leal -0x3(%r11), %eax
movslq %eax, %rdx
movq 0x10(%rsp), %rbx
leaq -0x2(%rbx), %rax
imulq %rbx, %rax
movq 0x8(%rsp), %rcx
leaq (%rcx,%rax,8), %rsi
leaq (,%rbx,8), %r13
movq %r13, %rax
negq %rax
movq %rax, 0xa0(%rsp)
leaq (%rcx,%rbx,8), %rax
addq $-0x8, %rax
movq %rax, 0x48(%rsp)
movq %rdx, 0x88(%rsp)
movq %rdx, %rax
imulq %rbx, %rax
leaq (%rcx,%rax,8), %rax
movq %rax, 0x38(%rsp)
leaq (%rcx,%rbx,8), %rax
addq $-0x10, %rax
movq %rax, 0x130(%rsp)
xorpd %xmm10, %xmm10
movapd %xmm6, 0xe0(%rsp)
movq %rbx, %r8
decq %rbx
movq 0x80(%rsp), %rax
movsd -0x8(%rax,%r8,8), %xmm12
movq 0x290(%rsp), %rax
movsd -0x8(%rax,%r8,8), %xmm11
ucomisd %xmm11, %xmm10
movq %rsi, 0xc0(%rsp)
movq %r8, 0xf8(%rsp)
jbe 0x1b458
leaq -0x2(%r8), %r15
leal -0x1(%rbx), %eax
movq %rbx, %rcx
movq 0x10(%rsp), %rdi
imulq %rdi, %rcx
movl %ebx, %edx
imull %r11d, %edx
movq 0x8(%rsp), %rsi
leaq (%rsi,%rcx,8), %r14
movsd -0x10(%r14,%r8,8), %xmm0
movapd %xmm0, %xmm2
movapd 0x20a5c(%rip), %xmm4    # 0x3be40
andpd %xmm4, %xmm2
movq %r15, %rcx
imulq %rdi, %rcx
imull %r11d, %eax
movslq %eax, %r12
leaq (%rsi,%rbx,8), %rdi
movsd (%rdi,%r12,8), %xmm1
movapd %xmm1, %xmm3
andpd %xmm4, %xmm3
ucomisd %xmm3, %xmm2
leaq (%rsi,%rcx,8), %rbp
movslq %edx, %rcx
movsd %xmm12, 0x120(%rsp)
movapd %xmm11, 0x160(%rsp)
movq %rdi, 0x50(%rsp)
jbe 0x1b63f
movapd %xmm11, %xmm1
divsd %xmm0, %xmm1
movsd %xmm1, -0x10(%rbp,%r8,8)
movapd %xmm12, %xmm1
subsd (%rdi,%rcx,8), %xmm1
divsd -0x10(%r14,%r8,8), %xmm1
jmp 0x1b6da
ucomisd %xmm10, %xmm11
jne 0x1bb8a
jp 0x1bb8a
movl 0xf0(%rsp), %eax
imull %ebx, %eax
cltq
movq 0x8(%rsp), %rcx
movabsq $0x3ff0000000000000, %rdx # imm = 0x3FF0000000000000
movq %rdx, (%rcx,%rax,8)
cmpq $0x2, %r8
jl 0x1bb8a
leaq (%rcx,%rbx,8), %rax
movq %rsi, %rcx
movq %rbx, %rdx
movl %ebx, %r8d
movq %rdx, %rsi
decq %rdx
movq %rdx, %rdi
imulq 0x10(%rsp), %rdi
movsd (%rax,%rdi,8), %xmm7
movslq %r8d, %r9
cmpq %r9, %rbx
jle 0x1b4e8
movq %r13, %r10
imulq %r9, %r10
addq 0x48(%rsp), %r10
movq 0x28(%rsp), %r11
movsd (%rcx,%r9,8), %xmm0
mulsd (%r10), %xmm0
addsd %xmm0, %xmm7
incq %r9
addq %r13, %r10
cmpq %rbx, %r9
jl 0x1b4cc
jmp 0x1b4ed
movq 0x28(%rsp), %r11
movl %edx, %r9d
imull %r11d, %r9d
movslq %r9d, %r9
movq 0x8(%rsp), %r11
leaq (%r11,%rsi,8), %r10
addq $-0x8, %r10
movsd (%r10,%r9,8), %xmm0
subsd %xmm12, %xmm0
movq 0x290(%rsp), %r9
movsd (%r9,%rdx,8), %xmm3
ucomisd %xmm3, %xmm10
jbe 0x1b533
movapd %xmm0, %xmm9
movapd %xmm7, %xmm8
jmp 0x1b628
ucomisd %xmm10, %xmm3
jne 0x1b570
jp 0x1b570
movapd %xmm0, %xmm1
cmpeqsd %xmm10, %xmm1
movapd %xmm1, %xmm2
andpd %xmm6, %xmm2
andnpd %xmm0, %xmm1
orpd %xmm2, %xmm1
movapd %xmm7, %xmm0
xorpd 0x18b5e(%rip), %xmm0    # 0x340c0
divsd %xmm1, %xmm0
movsd %xmm0, (%rax,%rdi,8)
jmp 0x1b625
leaq (%r11,%rdi,8), %r8
movsd (%r8,%rsi,8), %xmm1
movq %rsi, %r8
imulq 0x10(%rsp), %r8
leaq (%r11,%r8,8), %r9
movsd (%r9,%rdx,8), %xmm2
movq 0x80(%rsp), %r9
movsd (%r9,%rdx,8), %xmm4
subsd %xmm12, %xmm4
mulsd %xmm3, %xmm3
mulsd %xmm4, %xmm4
addsd %xmm3, %xmm4
movapd %xmm7, %xmm5
mulsd %xmm9, %xmm5
movapd %xmm1, %xmm3
mulsd %xmm8, %xmm3
subsd %xmm5, %xmm3
divsd %xmm4, %xmm3
movsd %xmm3, (%rax,%rdi,8)
movapd %xmm1, %xmm4
movapd 0x20868(%rip), %xmm11   # 0x3be40
andpd %xmm11, %xmm4
movapd %xmm9, %xmm5
andpd %xmm11, %xmm5
ucomisd %xmm4, %xmm5
jae 0x1b609
xorpd 0x18acb(%rip), %xmm0    # 0x340c0
mulsd %xmm3, %xmm0
subsd %xmm7, %xmm0
divsd %xmm1, %xmm0
movsd %xmm0, (%rax,%r8,8)
jmp 0x1b625
xorpd 0x18aaf(%rip), %xmm2    # 0x340c0
mulsd %xmm3, %xmm2
subsd %xmm8, %xmm2
divsd %xmm9, %xmm2
movsd %xmm2, (%rax,%r8,8)
movl %edx, %r8d
addq 0xa0(%rsp), %rcx
cmpq $0x1, %rsi
jg 0x1b49f
jmp 0x1bb8a
xorpd 0x18a79(%rip), %xmm1    # 0x340c0
movsd -0x10(%rbp,%r8,8), %xmm2
subsd %xmm12, %xmm2
xorpd %xmm0, %xmm0
movapd %xmm11, %xmm3
movapd %xmm7, 0xd0(%rsp)
movapd %xmm8, 0x70(%rsp)
movapd %xmm9, 0x140(%rsp)
movq %rcx, 0x60(%rsp)
callq 0x1cfbd
movq 0x60(%rsp), %rcx
movq 0x50(%rsp), %rdi
movapd 0x160(%rsp), %xmm11
movsd 0x120(%rsp), %xmm12
movq 0xf8(%rsp), %r8
xorpd %xmm10, %xmm10
movapd 0x140(%rsp), %xmm9
movapd 0x70(%rsp), %xmm8
movapd 0xd0(%rsp), %xmm7
movapd 0xe0(%rsp), %xmm6
movq 0x8(%rsp), %rsi
movsd %xmm0, -0x10(%rbp,%r8,8)
movsd %xmm1, (%rdi,%r12,8)
movq $0x0, -0x10(%r14,%r8,8)
movabsq $0x3ff0000000000000, %rax # imm = 0x3FF0000000000000
movq %rax, (%rdi,%rcx,8)
cmpq $0x3, %r8
jl 0x1bb8a
movapd %xmm11, %xmm0
xorpd 0x189b2(%rip), %xmm0    # 0x340c0
movapd %xmm0, 0x1f0(%rsp)
movapd %xmm11, %xmm0
andpd 0x2071c(%rip), %xmm0    # 0x3be40
leaq (%rsi,%r15,8), %rdx
movq 0x38(%rsp), %r14
movq 0x88(%rsp), %r12
movapd %xmm0, 0x1a0(%rsp)
movq %rdx, 0x150(%rsp)
movq %r12, %rbp
imulq 0x10(%rsp), %rbp
movsd (%rdi,%rbp,8), %xmm13
movslq %r15d, %rax
xorpd %xmm14, %xmm14
cmpq %rax, %rbx
jle 0x1b799
movq %r13, %rcx
imulq %rax, %rcx
addq 0x130(%rsp), %rcx
movsd (%r14,%rax,8), %xmm0
movsd (%rcx), %xmm1
mulsd %xmm0, %xmm1
addsd %xmm1, %xmm14
mulsd 0x8(%rcx), %xmm0
addsd %xmm0, %xmm13
incq %rax
addq %r13, %rcx
cmpq %rbx, %rax
jl 0x1b771
movl %r12d, %eax
imull 0x28(%rsp), %eax
movslq %eax, %rcx
leaq (%rsi,%r12,8), %rax
movsd (%rax,%rcx,8), %xmm15
subsd %xmm12, %xmm15
movq 0x290(%rsp), %rcx
movsd (%rcx,%r12,8), %xmm0
ucomisd %xmm0, %xmm10
jbe 0x1b7dc
movapd %xmm15, %xmm9
movapd %xmm13, %xmm8
movapd %xmm14, %xmm7
jmp 0x1bb71
ucomisd %xmm10, %xmm0
movapd %xmm7, 0xd0(%rsp)
movapd %xmm8, 0x70(%rsp)
movapd %xmm9, 0x140(%rsp)
jne 0x1b892
jp 0x1b892
movapd 0x188b1(%rip), %xmm0    # 0x340c0
xorpd %xmm0, %xmm14
xorpd %xmm0, %xmm13
movapd %xmm14, %xmm0
movapd %xmm13, %xmm1
movapd %xmm15, %xmm2
movapd %xmm11, %xmm3
callq 0x1cfbd
movq 0x50(%rsp), %rdi
movapd 0x160(%rsp), %xmm11
movsd 0x120(%rsp), %xmm12
xorpd %xmm10, %xmm10
movapd 0x140(%rsp), %xmm9
movapd 0x70(%rsp), %xmm8
movapd 0xd0(%rsp), %xmm7
movq 0x8(%rsp), %rsi
movq 0x150(%rsp), %rdx
movsd %xmm0, (%rdx,%rbp,8)
movsd %xmm1, (%rdi,%rbp,8)
movl %r12d, %r15d
movapd 0xe0(%rsp), %xmm6
jmp 0x1bb71
leal 0x1(%r12), %ecx
leaq (%rsi,%rbp,8), %rdx
movsd 0x8(%rdx,%r12,8), %xmm1
movaps %xmm1, 0x60(%rsp)
imull 0x28(%rsp), %ecx
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm4
movq 0x80(%rsp), %rax
movsd (%rax,%r12,8), %xmm3
subsd %xmm12, %xmm3
mulsd %xmm0, %xmm0
movapd %xmm3, %xmm1
mulsd %xmm3, %xmm1
addsd %xmm0, %xmm1
movapd 0x1f0(%rsp), %xmm6
movapd %xmm6, %xmm2
mulsd %xmm11, %xmm2
addsd %xmm1, %xmm2
addsd %xmm3, %xmm3
mulsd %xmm11, %xmm3
movapd %xmm2, %xmm0
movapd 0x2053e(%rip), %xmm5    # 0x3be40
andpd %xmm5, %xmm0
movapd %xmm3, %xmm1
andpd %xmm5, %xmm1
addsd %xmm0, %xmm1
ucomisd %xmm10, %xmm1
jne 0x1b95d
jp 0x1b95d
movapd %xmm15, %xmm0
andpd %xmm5, %xmm0
addsd 0x1a0(%rsp), %xmm0
movapd 0x60(%rsp), %xmm1
andpd %xmm5, %xmm1
addsd %xmm0, %xmm1
movapd %xmm4, %xmm0
andpd %xmm5, %xmm0
addsd %xmm1, %xmm0
movapd %xmm9, %xmm2
andpd %xmm5, %xmm2
addsd %xmm0, %xmm2
mulsd 0xe0(%rsp), %xmm2
movapd %xmm4, 0x110(%rsp)
movapd %xmm15, 0x200(%rsp)
leaq 0x1(%r12), %r15
imulq 0x10(%rsp), %r15
movapd %xmm14, %xmm0
mulsd %xmm9, %xmm0
movapd 0x60(%rsp), %xmm4
movapd %xmm4, %xmm1
mulsd %xmm7, %xmm1
subsd %xmm0, %xmm1
movapd %xmm11, %xmm0
mulsd %xmm13, %xmm0
addsd %xmm1, %xmm0
movapd %xmm13, %xmm1
mulsd %xmm9, %xmm1
mulsd %xmm8, %xmm4
subsd %xmm1, %xmm4
movapd %xmm6, %xmm1
mulsd %xmm14, %xmm1
addsd %xmm4, %xmm1
movapd %xmm13, 0x100(%rsp)
movapd %xmm14, 0x90(%rsp)
callq 0x1cfbd
movapd 0x140(%rsp), %xmm9
movq 0x150(%rsp), %rdx
movsd %xmm0, (%rdx,%rbp,8)
movq 0x50(%rsp), %rdi
movsd %xmm1, (%rdi,%rbp,8)
movapd 0x60(%rsp), %xmm2
movapd 0x20433(%rip), %xmm4    # 0x3be40
andpd %xmm4, %xmm2
movapd %xmm9, %xmm3
andpd %xmm4, %xmm3
addsd 0x1a0(%rsp), %xmm3
ucomisd %xmm3, %xmm2
jbe 0x1bad5
movapd 0x200(%rsp), %xmm3
xorpd 0x18682(%rip), %xmm3    # 0x340c0
movapd %xmm3, %xmm2
mulsd %xmm0, %xmm2
subsd 0x90(%rsp), %xmm2
movapd 0x160(%rsp), %xmm11
mulsd %xmm11, %xmm1
addsd %xmm2, %xmm1
movapd 0x60(%rsp), %xmm2
divsd %xmm2, %xmm1
movsd %xmm1, (%rdx,%r15,8)
movsd (%rdi,%rbp,8), %xmm0
mulsd %xmm3, %xmm0
subsd 0x100(%rsp), %xmm0
movsd (%rdx,%rbp,8), %xmm1
mulsd 0x1f0(%rsp), %xmm1
addsd %xmm0, %xmm1
divsd %xmm2, %xmm1
movsd %xmm1, (%rdi,%r15,8)
movl %r12d, %r15d
movq 0x8(%rsp), %rsi
movapd 0xe0(%rsp), %xmm6
movapd 0xd0(%rsp), %xmm7
movapd 0x70(%rsp), %xmm8
xorpd %xmm10, %xmm10
movsd 0x120(%rsp), %xmm12
jmp 0x1bb71
movapd 0x110(%rsp), %xmm2
xorpd 0x185da(%rip), %xmm2    # 0x340c0
mulsd %xmm2, %xmm0
subsd 0xd0(%rsp), %xmm0
mulsd %xmm1, %xmm2
subsd 0x70(%rsp), %xmm2
movapd %xmm2, %xmm1
movapd %xmm9, %xmm2
movapd 0x160(%rsp), %xmm3
callq 0x1cfbd
movq 0x150(%rsp), %rdx
movq 0x50(%rsp), %rdi
movapd 0x140(%rsp), %xmm9
movsd %xmm0, (%rdx,%r15,8)
movsd %xmm1, (%rdi,%r15,8)
movl %r12d, %r15d
movq 0x8(%rsp), %rsi
movapd 0xe0(%rsp), %xmm6
movapd 0xd0(%rsp), %xmm7
movapd 0x70(%rsp), %xmm8
xorpd %xmm10, %xmm10
movsd 0x120(%rsp), %xmm12
movapd 0x160(%rsp), %xmm11
leaq -0x1(%r12), %rax
addq 0xa0(%rsp), %r14
testq %r12, %r12
movq %rax, %r12
jg 0x1b746
decq 0x88(%rsp)
movq 0xc0(%rsp), %rsi
movq 0xa0(%rsp), %rax
addq %rax, %rsi
addq $-0x8, 0x48(%rsp)
addq %rax, 0x38(%rsp)
addq $-0x8, 0x130(%rsp)
cmpq $0x1, 0xf8(%rsp)
movq 0x28(%rsp), %r11
movq 0xb8(%rsp), %r12
jg 0x1b370
testl %r11d, %r11d
movl 0x24(%rsp), %ebx
jle 0x1bc3c
movslq 0x40(%rsp), %rax
movq 0x10(%rsp), %rsi
leaq 0x8(,%rsi,8), %rcx
xorl %edx, %edx
movq 0x8(%rsp), %rdi
movq 0x298(%rsp), %r8
cmpq %r12, %rdx
setge %r9b
cmpq %rax, %rdx
setle %r10b
testb %r10b, %r9b
jne 0x1bc29
xorl %r9d, %r9d
movsd (%rdi,%r9,8), %xmm0
movsd %xmm0, (%r8,%r9,8)
incq %r9
cmpq %r9, %rsi
jne 0x1bc15
incq %rdx
addq %rcx, %r8
addq %rcx, %rdi
decq %rsi
cmpq 0x10(%rsp), %rdx
jne 0x1bbff
cmpl %ebx, %r11d
movq 0x8(%rsp), %r9
jle 0x1bd1c
movslq 0x28(%rsp), %rax
movq 0x40(%rsp), %rcx
incl %ecx
leaq (,%rax,8), %rdx
leaq 0x8(,%rax,8), %rsi
imulq %r12, %rsi
addq 0x298(%rsp), %rsi
leaq -0x1(%r12), %rdi
leaq 0x8(,%r12,8), %r8
imulq %rax, %r8
addq %r9, %r8
addq $-0x8, %r8
movq %rax, %r9
leaq -0x1(%r9), %r10
cmpl 0x40(%rsp), %ebx
jg 0x1bd08
movq 0x40(%rsp), %r11
cmpl %r11d, %r10d
cmovll %r10d, %r11d
movslq %r11d, %r11
movq 0x298(%rsp), %rbx
leaq (%rbx,%r10,8), %rbx
movq %rsi, %r14
movq %r12, %r15
xorpd %xmm0, %xmm0
cmpq %r12, %r9
jle 0x1bce8
movq %r8, %r12
movq %rdi, %r13
movq %r14, %rbp
movsd (%rbp), %xmm1
mulsd (%r12), %xmm1
addsd %xmm1, %xmm0
addq $0x8, %rbp
incq %r13
addq %rdx, %r12
cmpq %r11, %r13
jl 0x1bcca
movq %r15, %r12
imulq %rax, %r12
movsd %xmm0, (%rbx,%r12,8)
incq %r15
addq %rdx, %r14
cmpl %r15d, %ecx
movq 0xb8(%rsp), %r12
jne 0x1bcb8
addq $-0x8, %r8
movq %r10, %r9
cmpq %r12, %r10
movl 0x24(%rsp), %ebx
jg 0x1bc8d
movq 0x28(%rsp), %r10
testl %r10d, %r10d
movl $0x0, %eax
jle 0x1cdc1
movq 0x2a0(%rsp), %rax
movq 0x10(%rsp), %rcx
leaq (,%rcx,8), %rcx
xorl %edx, %edx
xorpd %xmm0, %xmm0
movapd 0x1836e(%rip), %xmm1    # 0x340c0
movq 0x290(%rsp), %r11
movq 0x298(%rsp), %rbx
movslq %edx, %rdi
movsd (%r11,%rdi,8), %xmm2
ucomisd %xmm0, %xmm2
jne 0x1bd73
jnp 0x1bdb8
leaq (%rax,%rdi,8), %rsi
leaq (%rbx,%rdi,8), %rdi
movq 0x10(%rsp), %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 0x1bd83
incl %edx
incl %edx
cmpl %r10d, %edx
jl 0x1bd62
xorl %eax, %eax
jmp 0x1cdc1
leal 0x1(%r14), %r15d
leal -0x1(%r14), %eax
movl %eax, 0x188(%rsp)
movslq %r14d, %rsi
leaq -0x8(%r11), %rax
movq %rax, 0x1a0(%rsp)
leaq (,%rsi,8), %rbp
leaq 0x8(,%rsi,8), %rdi
movq %rbp, %rbx
xorq $-0x8, %rbx
movl %r14d, %eax
notl %eax
movl %eax, 0x140(%rsp)
movl %ecx, %eax
imull %r15d, %eax
movl %eax, 0x18c(%rsp)
movl $0x1, %eax
subl %ecx, %eax
movl %eax, 0x184(%rsp)
leaq 0x8(%r11), %rax
movq %rax, 0x1d0(%rsp)
leaq -0x18(%r11), %rax
movq %rax, 0x220(%rsp)
movq %r12, %rax
imulq %rsi, %rax
movq 0x298(%rsp), %rdx
leaq (%rdx,%rax,8), %rax
movq %rax, 0x1b8(%rsp)
incl 0x88(%rsp)
xorpd %xmm5, %xmm5
movapd 0x1ffd7(%rip), %xmm10   # 0x3be40
movsd 0x1ffb6(%rip), %xmm11   # 0x3be28
movapd 0x18245(%rip), %xmm12   # 0x340c0
xorpd %xmm14, %xmm14
xorpd %xmm4, %xmm4
xorpd %xmm13, %xmm13
xorpd %xmm9, %xmm9
movq 0x40(%rsp), %rax
movl %eax, %r8d
movapd %xmm6, 0xe0(%rsp)
movq %rbx, 0x1c0(%rsp)
movl %r15d, 0x5c(%rsp)
movq %rsi, 0xf0(%rsp)
movq %rdi, 0x90(%rsp)
movl %r8d, %esi
imull %r14d, %esi
leal (%rsi,%r8), %eax
leal -0x1(%r8), %r10d
movl %r10d, %r9d
imull %r14d, %r9d
leal (%r9,%r8), %edx
leal -0x2(%r8), %r13d
cmpl $0x0, 0x60(%rsp)
cltq
movq %rax, 0x170(%rsp)
leal -0x1(%r9,%r8), %eax
cltq
movq %rax, 0x1e0(%rsp)
movq %rsi, 0x1e8(%rsp)
leal -0x1(%rsi,%r8), %eax
cltq
movq %rax, 0x178(%rsp)
movslq %edx, %rax
movq %rax, 0x238(%rsp)
movq %r9, 0x1c8(%rsp)
leal -0x2(%r8,%r9), %eax
cltq
movq %rax, 0x218(%rsp)
movl 0x188(%rsp), %eax
cmovel %r8d, %eax
movslq %r8d, %rdx
cmpl %ecx, %edx
movl %ecx, %esi
cmovgl %r8d, %esi
cltq
movq %rax, 0x50(%rsp)
movq %rdi, %rax
imulq %rdx, %rax
addq 0x1a0(%rsp), %rax
movq %rax, 0x248(%rsp)
movl %r15d, %eax
imull %r10d, %eax
movl %eax, 0x19c(%rsp)
addl 0x184(%rsp), %esi
movl %esi, 0x190(%rsp)
movl %r14d, %eax
imull %r13d, %eax
movl %eax, 0x198(%rsp)
movl %r13d, 0xcc(%rsp)
movslq %r13d, %rsi
movq %rsi, %rax
negq %rax
movq %rax, 0x228(%rsp)
leaq 0x2(%rsi), %rax
imulq %rbp, %rax
leaq (%rax,%rsi,8), %rax
movq %rax, 0x1f0(%rsp)
leaq (%r11,%rsi,8), %rax
movq %rax, 0xf8(%rsp)
movq 0x1d0(%rsp), %rax
leaq (%rax,%rsi,8), %rax
movq %rax, 0x200(%rsp)
imulq %rdi, %rsi
movq %rsi, 0x230(%rsp)
leal -0x3(%rdx), %eax
imull %r15d, %eax
movl %eax, 0x194(%rsp)
movq %r10, 0x1d8(%rsp)
movslq %r10d, %r13
leaq (,%rdx,8), %r9
movq %rdx, 0x110(%rsp)
leaq (%r11,%rdx,8), %rax
movq %rax, 0x240(%rsp)
movl $0x0, 0x34(%rsp)
movq %r8, 0x100(%rsp)
movq %r9, 0x1b0(%rsp)
movl 0x19c(%rsp), %eax
movq 0x248(%rsp), %r10
movq 0x1e8(%rsp), %rdx
movl %edx, %esi
movq 0x240(%rsp), %rdi
movq 0x110(%rsp), %rdx
movl %r8d, %ecx
cmpl 0x24(%rsp), %r8d
jle 0x1c0e1
movslq %esi, %r8
movslq %eax, %r9
movsd (%r11,%r9,8), %xmm0
andpd %xmm10, %xmm0
movsd (%rdi,%r8,8), %xmm1
andpd %xmm10, %xmm1
addsd %xmm0, %xmm1
movapd %xmm1, %xmm8
cmpeqsd %xmm5, %xmm8
movapd %xmm8, %xmm0
andnpd %xmm1, %xmm0
andpd %xmm6, %xmm8
orpd %xmm0, %xmm8
movsd (%r10), %xmm0
andpd %xmm10, %xmm0
movapd %xmm8, %xmm1
mulsd %xmm11, %xmm1
ucomisd %xmm0, %xmm1
jae 0x1c0df
decq %rdx
addq $-0x8, %rdi
subl %r14d, %esi
addq %rbx, %r10
addl 0x140(%rsp), %eax
cmpq %r12, %rdx
jg 0x1c068
movl 0x24(%rsp), %ecx
jmp 0x1c0e1
movl %edx, %ecx
movq 0x170(%rsp), %rax
movsd (%r11,%rax,8), %xmm15
movq 0x100(%rsp), %r8
cmpl %r8d, %ecx
je 0x1c936
movl %ecx, %esi
movq 0x1e0(%rsp), %rax
movsd (%r11,%rax,8), %xmm0
movaps %xmm0, 0xa0(%rsp)
movq 0x178(%rsp), %rax
movsd (%r11,%rax,8), %xmm0
movq 0x238(%rsp), %rax
mulsd (%r11,%rax,8), %xmm0
movapd %xmm0, 0x10(%rsp)
cmpl %r13d, %ecx
je 0x1c978
movl 0x34(%rsp), %ecx
testl %ecx, %ecx
je 0x1c1fe
cmpl $0x1e, %ecx
je 0x1cdbc
imull $0xcccccccd, %ecx, %eax # imm = 0xCCCCCCCD
rorl %eax
cmpl $0x19999999, %eax       # imm = 0x19999999
movq 0x90(%rsp), %rdi
ja 0x1c206
movl 0x190(%rsp), %eax
movl 0x18c(%rsp), %edx
movslq %edx, %rdx
movsd (%r11,%rdx,8), %xmm0
subsd %xmm15, %xmm0
movsd %xmm0, (%r11,%rdx,8)
addl %r15d, %edx
decl %eax
jne 0x1c181
addsd %xmm15, %xmm13
movq 0x178(%rsp), %rax
movsd (%r11,%rax,8), %xmm0
andpd %xmm10, %xmm0
movq 0x218(%rsp), %rax
movsd (%r11,%rax,8), %xmm8
andpd %xmm10, %xmm8
addsd %xmm0, %xmm8
movapd %xmm8, %xmm15
mulsd 0x1fc56(%rip), %xmm15   # 0x3be30
movapd %xmm8, %xmm0
mulsd 0x1fc51(%rip), %xmm0    # 0x3be38
mulsd %xmm8, %xmm0
movapd %xmm0, 0x10(%rsp)
movapd %xmm15, 0xa0(%rsp)
jmp 0x1c206
movq 0x90(%rsp), %rdi
movl 0xcc(%rsp), %eax
movl %eax, %edx
cmpl %esi, %eax
movl %esi, 0xc0(%rsp)
jl 0x1c3f6
movapd 0x10(%rsp), %xmm0
xorpd %xmm12, %xmm0
movapd %xmm0, 0x10(%rsp)
movslq %esi, %rax
addq 0x228(%rsp), %rax
movl 0x194(%rsp), %ecx
movl %ecx, %r10d
movq 0x1d0(%rsp), %rdx
movq 0x1c8(%rsp), %rsi
movl 0x198(%rsp), %edi
xorl %r12d, %r12d
movq 0x230(%rsp), %r15
movslq %edi, %r8
movq 0xf8(%rsp), %r9
leaq (%r9,%r8,8), %r8
movslq %esi, %r9
movq 0x200(%rsp), %rcx
leaq (%rcx,%r9,8), %r9
movsd (%r8,%r12,8), %xmm9
movapd %xmm15, %xmm1
subsd %xmm9, %xmm1
movapd 0xa0(%rsp), %xmm2
subsd %xmm9, %xmm2
movsd (%r9,%r12,8), %xmm0
movapd %xmm0, %xmm4
subsd %xmm9, %xmm4
subsd %xmm1, %xmm4
movapd %xmm1, %xmm14
mulsd %xmm2, %xmm14
addsd 0x10(%rsp), %xmm14
divsd -0x8(%r9,%r12,8), %xmm14
addsd (%rdx,%r15), %xmm14
subsd %xmm2, %xmm4
movq 0x1f0(%rsp), %r8
movsd (%rdx,%r8), %xmm7
movapd %xmm14, %xmm1
andpd %xmm10, %xmm1
movapd %xmm4, %xmm2
andpd %xmm10, %xmm2
addsd %xmm1, %xmm2
movapd %xmm7, %xmm8
andpd %xmm10, %xmm8
addsd %xmm2, %xmm8
divsd %xmm8, %xmm14
divsd %xmm8, %xmm4
divsd %xmm8, %xmm7
cmpq %r12, %rax
je 0x1c3cc
movsd -0x10(%rdx,%r15), %xmm2
andpd %xmm10, %xmm2
movapd %xmm4, %xmm3
andpd %xmm10, %xmm3
movapd %xmm7, %xmm1
andpd %xmm10, %xmm1
addsd %xmm3, %xmm1
mulsd %xmm2, %xmm1
movslq %r10d, %r10
movsd (%r11,%r10,8), %xmm2
andpd %xmm10, %xmm2
movapd %xmm9, %xmm3
andpd %xmm10, %xmm3
addsd %xmm2, %xmm3
andpd %xmm10, %xmm0
addsd %xmm3, %xmm0
mulsd %xmm11, %xmm0
movapd %xmm14, %xmm2
andpd %xmm10, %xmm2
mulsd %xmm0, %xmm2
decq %r12
subl %r14d, %edi
subl %r14d, %esi
addq %rbx, %rdx
addl 0x140(%rsp), %r10d
ucomisd %xmm1, %xmm2
jb 0x1c266
addl 0x1d8(%rsp), %r12d
movq 0x90(%rsp), %rdi
movq %r12, %rdx
movq 0x100(%rsp), %r8
movl 0x5c(%rsp), %r15d
movl 0x34(%rsp), %ecx
movl 0xc0(%rsp), %esi
jmp 0x1c3ee
movl 0xc0(%rsp), %esi
movl %esi, %edx
movq 0x90(%rsp), %rdi
movq 0x100(%rsp), %r8
movl 0x5c(%rsp), %r15d
movl 0x34(%rsp), %ecx
movq 0xb8(%rsp), %r12
leal 0x2(%rdx), %eax
movq %rdx, 0x48(%rsp)
movslq %edx, %rdx
movq %rdx, 0x10(%rsp)
cmpl %r8d, %eax
jg 0x1c438
movq 0x10(%rsp), %r10
leaq 0x2(%r10), %rax
imulq %rbp, %rax
leaq (%rax,%r10,8), %rax
addq %r11, %rax
movq 0x1d8(%rsp), %rdx
subl %r10d, %edx
movq $0x0, (%rax)
addq %rdi, %rax
decl %edx
jne 0x1c42a
movq 0x48(%rsp), %rax
addl $0x3, %eax
cmpl %r8d, %eax
jg 0x1c46c
cltq
imulq %rdi, %rax
addq 0x220(%rsp), %rax
movl 0xcc(%rsp), %edx
subl 0x48(%rsp), %edx
movq $0x0, (%rax)
addq %rdi, %rax
decl %edx
jne 0x1c45e
incl %ecx
movl %ecx, 0x34(%rsp)
cmpl %r8d, 0x48(%rsp)
jge 0x1c035
cmpl $0x0, 0x60(%rsp)
movl $0x0, %eax
cmovel %esi, %eax
movl %eax, 0x160(%rsp)
movslq %eax, %rcx
movq 0x10(%rsp), %r12
leaq 0x2(%r12), %rax
imulq %rbp, %rax
leaq (%rax,%r12,8), %r14
addq %r11, %r14
leaq 0x1(%r12), %rax
imulq %rbp, %rax
leaq (%rax,%r12,8), %r15
addq %r11, %r15
movq %rdi, %rbx
imulq %r12, %rbx
addq %r11, %rbx
movq %rbp, %rax
imulq %rcx, %rax
decq %rcx
movq %rcx, 0x250(%rsp)
leaq (%rax,%r12,8), %rcx
addq %r11, %rcx
movq 0x1b8(%rsp), %rax
leaq (%rax,%r12,8), %rdx
movq 0xf0(%rsp), %rsi
movq 0x110(%rsp), %r10
movsd %xmm13, 0x38(%rsp)
cmpq 0x10(%rsp), %r12
je 0x1c58f
xorpd %xmm7, %xmm7
cmpq %r13, %r12
je 0x1c527
leaq 0x2(%r12), %rax
imulq %rsi, %rax
leaq (%r11,%rax,8), %rax
movsd -0x8(%rax,%r12,8), %xmm7
movq %r12, %rax
imulq %rsi, %rax
leaq (%r11,%rax,8), %rax
movsd -0x8(%rax,%r12,8), %xmm14
leaq 0x1(%r12), %rax
imulq %rsi, %rax
leaq (%r11,%rax,8), %rax
movsd -0x8(%rax,%r12,8), %xmm4
movapd %xmm14, %xmm0
andpd %xmm10, %xmm0
movapd %xmm4, %xmm1
andpd %xmm10, %xmm1
addsd %xmm0, %xmm1
movapd %xmm7, %xmm15
andpd %xmm10, %xmm15
addsd %xmm1, %xmm15
ucomisd %xmm5, %xmm15
jne 0x1c580
jnp 0x1c8fa
divsd %xmm15, %xmm14
divsd %xmm15, %xmm4
divsd %xmm15, %xmm7
movq %rdx, 0x70(%rsp)
movapd %xmm4, %xmm0
mulsd %xmm4, %xmm0
movapd %xmm14, %xmm1
mulsd %xmm14, %xmm1
addsd %xmm0, %xmm1
movapd %xmm7, %xmm0
mulsd %xmm7, %xmm0
addsd %xmm1, %xmm0
ucomisd %xmm5, %xmm0
movq %rcx, 0xa0(%rsp)
jb 0x1c5cd
sqrtsd %xmm0, %xmm0
jmp 0x1c672
movapd %xmm7, 0xd0(%rsp)
movapd %xmm14, 0x130(%rsp)
movapd %xmm4, 0x150(%rsp)
movapd %xmm15, 0x120(%rsp)
callq 0x22c0
movapd 0x120(%rsp), %xmm15
movq 0x110(%rsp), %r10
movapd 0x150(%rsp), %xmm4
movapd 0x130(%rsp), %xmm14
movq 0x100(%rsp), %r8
movsd 0x38(%rsp), %xmm13
movapd 0x17a8b(%rip), %xmm12   # 0x340c0
movsd 0x1f7ea(%rip), %xmm11   # 0x3be28
movapd 0x1f7f9(%rip), %xmm10   # 0x3be40
xorpd %xmm5, %xmm5
movq 0x90(%rsp), %rdi
movq 0xf0(%rsp), %rsi
movapd 0xd0(%rsp), %xmm7
movapd 0xe0(%rsp), %xmm6
movq 0x8(%rsp), %r11
movq 0x50(%rsp), %rdx
movapd %xmm0, %xmm1
xorpd %xmm12, %xmm1
movapd %xmm14, %xmm8
cmpltsd %xmm5, %xmm8
andpd %xmm8, %xmm1
andnpd %xmm0, %xmm8
orpd %xmm1, %xmm8
cmpq 0x10(%rsp), %r12
jne 0x1c6d3
movq 0x48(%rsp), %rax
cmpl %eax, 0xc0(%rsp)
je 0x1c6fb
movq %r12, %rax
imulq %rsi, %rax
movq 0x1a0(%rsp), %rcx
leaq (%rcx,%r12,8), %rcx
movsd (%rcx,%rax,8), %xmm0
xorpd %xmm12, %xmm0
movlpd %xmm0, (%rcx,%rax,8)
jmp 0x1c6fb
movapd %xmm8, %xmm0
xorpd %xmm12, %xmm0
mulsd %xmm0, %xmm15
movq %r12, %rax
imulq %rsi, %rax
movq 0x1a0(%rsp), %rcx
leaq (%rcx,%r12,8), %rcx
movsd %xmm15, (%rcx,%rax,8)
addsd %xmm8, %xmm14
movapd %xmm14, %xmm15
divsd %xmm8, %xmm15
movapd %xmm4, %xmm0
divsd %xmm8, %xmm0
movapd %xmm7, %xmm9
divsd %xmm8, %xmm9
divsd %xmm14, %xmm4
divsd %xmm14, %xmm7
cmpq %rdx, %r12
jg 0x1c7c0
movq $-0x1, %rax
movsd 0x8(%r15,%rax,8), %xmm14
mulsd %xmm4, %xmm14
addsd 0x8(%rbx,%rax,8), %xmm14
cmpq %r13, %r12
je 0x1c778
movsd 0x8(%r14,%rax,8), %xmm1
movapd %xmm7, %xmm2
mulsd %xmm1, %xmm2
addsd %xmm2, %xmm14
movapd %xmm14, %xmm2
mulsd %xmm9, %xmm2
subsd %xmm2, %xmm1
movsd %xmm1, 0x8(%r14,%rax,8)
movsd 0x8(%r15,%rax,8), %xmm1
movapd %xmm14, %xmm2
mulsd %xmm0, %xmm2
subsd %xmm2, %xmm1
movsd %xmm1, 0x8(%r15,%rax,8)
movsd 0x8(%rbx,%rax,8), %xmm1
movapd %xmm14, %xmm2
mulsd %xmm15, %xmm2
subsd %xmm2, %xmm1
movsd %xmm1, 0x8(%rbx,%rax,8)
leaq (%r12,%rax), %rcx
incq %rcx
incq %rax
cmpq %rdx, %rcx
jl 0x1c737
leal 0x3(%r12), %eax
cmpl %eax, %r8d
cmovll %r8d, %eax
cmpl %eax, 0x160(%rsp)
jg 0x1c85c
cltq
movq 0xa0(%rsp), %rcx
movq 0x250(%rsp), %rdx
movsd 0x8(%rcx), %xmm1
mulsd %xmm0, %xmm1
movsd (%rcx), %xmm14
mulsd %xmm15, %xmm14
addsd %xmm1, %xmm14
cmpq %r13, %r12
je 0x1c82d
movsd 0x10(%rcx), %xmm1
movapd %xmm9, %xmm2
mulsd %xmm1, %xmm2
addsd %xmm2, %xmm14
movapd %xmm14, %xmm2
mulsd %xmm7, %xmm2
subsd %xmm2, %xmm1
movsd %xmm1, 0x10(%rcx)
movsd (%rcx), %xmm1
movsd 0x8(%rcx), %xmm2
movapd %xmm14, %xmm3
mulsd %xmm4, %xmm3
subsd %xmm3, %xmm2
movsd %xmm2, 0x8(%rcx)
subsd %xmm14, %xmm1
movsd %xmm1, (%rcx)
incq %rdx
addq %rbp, %rcx
cmpq %rax, %rdx
jl 0x1c7eb
cmpl $0x0, 0x60(%rsp)
je 0x1c8ed
movl 0x88(%rsp), %eax
movq 0x70(%rsp), %rdx
movq %rdx, %rcx
movsd 0x8(%rcx), %xmm1
mulsd %xmm0, %xmm1
movsd (%rcx), %xmm14
mulsd %xmm15, %xmm14
addsd %xmm1, %xmm14
cmpq %r13, %r12
je 0x1c8b8
movsd 0x10(%rcx), %xmm1
movapd %xmm9, %xmm2
mulsd %xmm1, %xmm2
addsd %xmm2, %xmm14
movapd %xmm14, %xmm2
mulsd %xmm7, %xmm2
subsd %xmm2, %xmm1
movsd %xmm1, 0x10(%rcx)
movsd (%rcx), %xmm1
movsd 0x8(%rcx), %xmm2
movapd %xmm14, %xmm3
mulsd %xmm4, %xmm3
subsd %xmm3, %xmm2
movsd %xmm2, 0x8(%rcx)
subsd %xmm14, %xmm1
movsd %xmm1, (%rcx)
addq %rbp, %rcx
decl %eax
jne 0x1c876
movq 0xa0(%rsp), %rcx
jmp 0x1c8fa
movq 0xa0(%rsp), %rcx
movq 0x70(%rsp), %rdx
incq %r12
addq %rdi, %r14
addq %rdi, %r15
addq %rdi, %rbx
addq $0x8, %rcx
addq $0x8, %rdx
cmpq %r10, %r12
jne 0x1c4ff
movq 0x28(%rsp), %r14
movq 0xb8(%rsp), %r12
movl 0x5c(%rsp), %r15d
movq 0x1c0(%rsp), %rbx
jmp 0x1c035
addsd %xmm13, %xmm15
movq 0x80(%rsp), %rax
movq 0x110(%rsp), %rcx
movsd %xmm15, (%rax,%rcx,8)
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
cmpl $0x0, 0x60(%rsp)
je 0x1c96b
movq 0x170(%rsp), %rax
movsd %xmm15, (%r11,%rax,8)
movq 0x90(%rsp), %rdi
jmp 0x1cd9f
movapd 0xa0(%rsp), %xmm14
subsd %xmm15, %xmm14
mulsd 0x17690(%rip), %xmm14   # 0x34020
movapd %xmm14, %xmm4
mulsd %xmm14, %xmm4
addsd 0x10(%rsp), %xmm4
movapd %xmm4, %xmm0
andpd 0x1f494(%rip), %xmm0    # 0x3be40
ucomisd %xmm5, %xmm0
jb 0x1c9c0
xorps %xmm9, %xmm9
sqrtsd %xmm0, %xmm9
jmp 0x1ca67
movapd %xmm7, 0xd0(%rsp)
movapd %xmm8, 0x70(%rsp)
movsd %xmm13, 0x38(%rsp)
movapd %xmm14, 0x130(%rsp)
movapd %xmm4, 0x150(%rsp)
movapd %xmm15, 0x120(%rsp)
callq 0x22c0
movapd 0x120(%rsp), %xmm15
movapd 0x150(%rsp), %xmm4
movapd 0x130(%rsp), %xmm14
movq 0x100(%rsp), %r8
movsd 0x38(%rsp), %xmm13
movapd 0x17692(%rip), %xmm12   # 0x340c0
movsd 0x1f3f1(%rip), %xmm11   # 0x3be28
movapd 0x1f400(%rip), %xmm10   # 0x3be40
xorpd %xmm5, %xmm5
movapd 0x70(%rsp), %xmm8
movapd 0xd0(%rsp), %xmm7
movapd 0xe0(%rsp), %xmm6
movq 0x8(%rsp), %r11
movapd %xmm0, %xmm9
movq 0x90(%rsp), %rdi
movq 0x110(%rsp), %rdx
addsd %xmm13, %xmm15
cmpl $0x0, 0x60(%rsp)
je 0x1caad
movq 0x170(%rsp), %rax
movsd %xmm15, (%r11,%rax,8)
movapd 0xa0(%rsp), %xmm0
addsd %xmm13, %xmm0
movq 0x1e0(%rsp), %rax
movsd %xmm0, (%r11,%rax,8)
ucomisd %xmm4, %xmm5
jbe 0x1caf3
addsd %xmm14, %xmm15
movq 0x80(%rsp), %rcx
movsd %xmm15, (%rcx,%r13,8)
movq 0x290(%rsp), %rsi
movsd %xmm9, (%rsi,%r13,8)
movsd %xmm15, (%rcx,%rdx,8)
movapd %xmm9, %xmm0
xorpd %xmm12, %xmm0
movlpd %xmm0, (%rsi,%rdx,8)
movl $0xfffffffe, %ebx       # imm = 0xFFFFFFFE
jmp 0x1cd9f
movapd %xmm9, %xmm0
xorpd %xmm12, %xmm0
movapd %xmm14, %xmm2
cmpltsd %xmm5, %xmm2
andpd %xmm2, %xmm0
andnpd %xmm9, %xmm2
orpd %xmm0, %xmm2
addsd %xmm14, %xmm2
movapd %xmm15, %xmm0
addsd %xmm2, %xmm0
movq 0x80(%rsp), %rax
movsd %xmm0, (%rax,%r13,8)
movapd 0x10(%rsp), %xmm1
divsd %xmm2, %xmm1
subsd %xmm1, %xmm15
movapd %xmm2, %xmm1
cmpeqsd %xmm5, %xmm1
andpd %xmm1, %xmm0
andnpd %xmm15, %xmm1
orpd %xmm0, %xmm1
movlpd %xmm1, (%rax,%rdx,8)
movl $0xfffffffe, %ebx       # imm = 0xFFFFFFFE
cmpl $0x0, 0x60(%rsp)
je 0x1cbc4
movq 0x178(%rsp), %rax
movsd (%r11,%rax,8), %xmm14
movapd %xmm14, %xmm0
andpd %xmm10, %xmm0
movapd %xmm2, %xmm8
andpd %xmm10, %xmm8
addsd %xmm0, %xmm8
divsd %xmm8, %xmm14
divsd %xmm8, %xmm2
movapd %xmm2, %xmm1
mulsd %xmm2, %xmm1
movapd %xmm14, %xmm0
mulsd %xmm14, %xmm0
addsd %xmm1, %xmm0
ucomisd %xmm5, %xmm0
movapd %xmm2, %xmm15
jb 0x1cbce
xorps %xmm7, %xmm7
sqrtsd %xmm0, %xmm7
jmp 0x1cc52
movapd %xmm2, %xmm9
jmp 0x1cd9f
movapd %xmm8, 0x70(%rsp)
movsd %xmm13, 0x38(%rsp)
movapd %xmm14, 0x130(%rsp)
movapd %xmm15, 0x10(%rsp)
callq 0x22c0
movapd 0x10(%rsp), %xmm15
movapd 0x130(%rsp), %xmm14
movq 0x100(%rsp), %r8
movsd 0x38(%rsp), %xmm13
movapd 0x174a5(%rip), %xmm12   # 0x340c0
movsd 0x1f204(%rip), %xmm11   # 0x3be28
movapd 0x1f213(%rip), %xmm10   # 0x3be40
xorpd %xmm5, %xmm5
movq 0x90(%rsp), %rdi
movapd 0x70(%rsp), %xmm8
movapd 0xe0(%rsp), %xmm6
movq 0x8(%rsp), %r11
movapd %xmm0, %xmm7
movq 0x1b0(%rsp), %r9
divsd %xmm7, %xmm14
divsd %xmm7, %xmm15
cmpl %r14d, %r8d
jg 0x1ccdf
movapd %xmm14, %xmm0
xorpd %xmm12, %xmm0
movslq 0x1c8(%rsp), %rcx
movslq 0x1e8(%rsp), %rax
movq %r13, %rdx
shlq $0x3, %rdx
leaq (%rdx,%rax,8), %rax
addq %r11, %rax
leaq (%rdx,%rcx,8), %rcx
addq %r11, %rcx
movl %r15d, %edx
subl %r8d, %edx
xorl %esi, %esi
movsd (%rcx,%rsi,8), %xmm1
movsd (%rax,%rsi,8), %xmm2
mulsd %xmm14, %xmm2
movapd %xmm15, %xmm3
mulsd %xmm1, %xmm3
addsd %xmm2, %xmm3
movsd %xmm3, (%rcx,%rsi,8)
mulsd %xmm0, %xmm1
movsd (%rax,%rsi,8), %xmm2
mulsd %xmm15, %xmm2
addsd %xmm1, %xmm2
movsd %xmm2, (%rax,%rsi,8)
incq %rsi
cmpl %esi, %edx
jne 0x1cca0
testl %r8d, %r8d
js 0x1cd39
movapd %xmm14, %xmm0
xorpd %xmm12, %xmm0
movl %r8d, %eax
leal 0x1(%r8), %ecx
movq %r11, %rdx
movsd (%rdx,%r13,8), %xmm1
movsd (%rdx,%rax,8), %xmm2
movapd %xmm14, %xmm3
mulsd %xmm2, %xmm3
movapd %xmm15, %xmm4
mulsd %xmm1, %xmm4
addsd %xmm3, %xmm4
movsd %xmm4, (%rdx,%r13,8)
mulsd %xmm0, %xmm1
mulsd %xmm15, %xmm2
addsd %xmm1, %xmm2
movsd %xmm2, (%rdx,%rax,8)
addq %rbp, %rdx
decq %rcx
jne 0x1ccf8
movapd %xmm14, %xmm0
xorpd %xmm12, %xmm0
movl 0x88(%rsp), %eax
movq 0x1b8(%rsp), %rcx
movsd (%rcx,%r13,8), %xmm9
movsd (%rcx,%r9), %xmm1
movapd %xmm14, %xmm2
mulsd %xmm1, %xmm2
movapd %xmm15, %xmm3
mulsd %xmm9, %xmm3
addsd %xmm2, %xmm3
movsd %xmm3, (%rcx,%r13,8)
movapd %xmm9, %xmm2
mulsd %xmm0, %xmm2
mulsd %xmm15, %xmm1
addsd %xmm2, %xmm1
movsd %xmm1, (%rcx,%r9)
addq %rbp, %rcx
decl %eax
jne 0x1cd52
movapd %xmm15, %xmm4
addl %ebx, %r8d
movl 0x24(%rsp), %ecx
cmpl %ecx, %r8d
movq 0x1c0(%rsp), %rbx
jge 0x1bebc
jmp 0x1b2b4
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
addq $0x258, %rsp            # imm = 0x258
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq