// File: /workspace/github_c_makefile_star2_O0/josch[P]stride/nsc.c
// Function: nsc_dclm
int nsc_dclm(
  double *co, double *radius, int nat,
  int densit, int mode,
  double *value_of_area, double **at_area,
  double *value_of_vol,
  double **lidots, int *nu_dots) {

  int iat, i, ii, iii, ix, iy, iz, ixe, ixs, iye, iys, ize, izs, i_ac;
  int jat, j, jj, jjj, jx, jy, jz;
  int distribution;
  int l;
  int maxnei, nnei, last, maxdots;
  point_int wkdot=NULL, wkbox=NULL, wkat1=NULL, wkatm=NULL;
  Neighb  *wknb, *ctnb;
  int iii1, iii2, iiat, lfnr, i_at, j_at;
  double dx, dy, dz, dd, ai, aisq, ajsq, aj, as, a;
  double xi, yi, zi, xs=0., ys=0., zs=0.;
  double dotarea, area, vol=0.;
  point_double xus, dots=NULL, atom_area=NULL;

  int    nxbox, nybox, nzbox, nxy, nxyz;
  double xmin, ymin, zmin, xmax, ymax, zmax, ra2max, d, *pco;

  distribution = unsp_type(densit);
  if (distribution != -last_unsp || last_cubus != 4 ||
     (densit != last_densit && densit != last_n_dot)) {
    if (make_unsp(densit, (-distribution), &n_dot, 4)) return 1;
    }
  xus = xpunsp;

  dotarea = FOURPI/(double) n_dot;
  area = 0.;

#if TEST_CUBE 
  printf("nsc_dclm: n_dot=%5d %9.3f\n", n_dot, dotarea);
#endif

/* start with neighbour list */
/* calculate neighbour list with the box algorithm */
  if (nat==0) {
    WARNING("nsc_dclm: no surface atoms selected");
    return 1;
    }
  if (mode & FLAG_VOLUME) vol=0.;
  if (mode & FLAG_DOTS) {
    maxdots = 3*n_dot*nat/10;
    dots = (double *) CALLOC(maxdots, sizeof(double));
    lfnr=0;
    }
  if (mode & FLAG_ATOM_AREA) {
    atom_area = (double *) CALLOC(nat, sizeof(double));
    }

/* dimensions of atomic set, cell edge is 2*ra_max */
  xmin = co[0]; xmax = xmin; xs=xmin;
  ymin = co[1]; ymax = ymin; ys=ymin;
  zmin = co[2]; zmax = zmin; zs=zmin;
  ra2max = radius[0];

  for (iat=1; iat<nat; iat++) {
    pco = co+3*iat;
    xmin = MINIMUM(xmin, *pco);     xmax = MAXIMUM(xmax, *pco);
    ymin = MINIMUM(ymin, *(pco+1)); ymax = MAXIMUM(ymax, *(pco+1));
    zmin = MINIMUM(zmin, *(pco+2)); zmax = MAXIMUM(zmax, *(pco+2));
    xs= xs+ *pco; ys = ys+ *(pco+1); zs= zs+ *(pco+2);
    ra2max = MAXIMUM(ra2max, radius[iat]);
    }
  xs = xs/ (double) nat;
  ys = ys/ (double) nat;
  zs = zs/ (double) nat;
  ra2max = 2.*ra2max;
#if TEST_CUBE
  printf("nsc_dclm: n_dot=%5d ra2max=%9.3f %9.3f\n", n_dot, ra2max, dotarea);
#endif

  d = xmax-xmin; nxbox = (int) MAXIMUM(ceil(d/ra2max), 1.);
  d = (((double)nxbox)*ra2max-d)/2.;
  xmin = xmin-d; xmax = xmax+d;
  d = ymax-ymin; nybox = (int) MAXIMUM(ceil(d/ra2max), 1.);
  d = (((double)nybox)*ra2max-d)/2.;
  ymin = ymin-d; ymax = ymax+d;
  d = zmax-zmin; nzbox = (int) MAXIMUM(ceil(d/ra2max), 1.);
  d = (((double)nzbox)*ra2max-d)/2.;
  zmin = zmin-d; zmax = zmax+d;
  nxy = nxbox*nybox;
  nxyz = nxy*nzbox;

/* box number of atoms */
  wkatm = (int *) CALLOC(3*nat, sizeof(int));
  wkat1 = wkatm+nat;
  wkdot = (int *) CALLOC(n_dot+nxyz+1, sizeof(int));
  wkbox = wkdot+n_dot;

  for (iat=0; iat<nat; iat++) {
    pco = co+3*iat;
    i = (int) MAXIMUM(floor((  *pco  -xmin)/ra2max), 0); i = MINIMUM(i,nxbox-1);
    j = (int) MAXIMUM(floor((*(pco+1)-ymin)/ra2max), 0); j = MINIMUM(j,nybox-1);
    l = (int) MAXIMUM(floor((*(pco+2)-zmin)/ra2max), 0); l = MINIMUM(l,nzbox-1);
    i = i+j*nxbox+l*nxy;
    wkat1[iat] = i; wkbox[i]++;
    }

/* sorting of atoms in accordance with box numbers */
  j = wkbox[0]; for (i=1; i<nxyz; i++) j= MAXIMUM(wkbox[i], j);
  for (i=1; i<=nxyz; i++) wkbox[i] += wkbox[i-1];
/*
  maxnei = (int) floor(ra2max*ra2max*ra2max*0.5);
*/
  maxnei = MINIMUM(nat, 27*j);
  wknb = (Neighb *) CALLOC(maxnei, sizeof(Neighb));
  for (iat=0; iat<nat; iat++) {
    wkatm[--wkbox[wkat1[iat]]] = iat;
#if TEST_CUBE
    printf("atom %5d on place %5d\n", iat, wkbox[wkat1[iat]]);
#endif
    }
#if TEST_CUBE
  printf("nsc_dclm: n_dot=%5d ra2max=%9.3f %9.3f\n", n_dot, ra2max, dotarea);
  printf("neighbour list calculated/box(xyz):%d %d %d\n", nxbox, nybox, nzbox);
  for (i=0; i<nxyz; i++) printf("box %6d : atoms %4d-%4d    %5d\n",
    i, wkbox[i], wkbox[i+1]-1, wkbox[i+1]-wkbox[i]);
  for (i=0; i<nat; i++) {
    printf("list place %5d by atom %7d\n", i, wkatm[i]);
    }
#endif

/* calculate surface for all atoms, step cube-wise */
  for (iz=0; iz<nzbox; iz++) {
    iii = iz*nxy;
    izs = MAXIMUM(iz-1,0); ize = MINIMUM(iz+2, nzbox);
  for (iy=0; iy<nybox; iy++) {
    ii = iy*nxbox+iii;
    iys = MAXIMUM(iy-1,0); iye = MINIMUM(iy+2, nybox);
  for (ix=0; ix<nxbox; ix++) {
    i = ii+ix;
    iii1=wkbox[i]; iii2=wkbox[i+1];
    if (iii1 >= iii2) continue;
    ixs = MAXIMUM(ix-1,0); ixe = MINIMUM(ix+2, nxbox);

    iiat = 0;
/* make intermediate atom list */
    for (jz=izs; jz<ize; jz++) {
      jjj = jz*nxy;
    for (jy=iys; jy<iye; jy++) {
      jj = jy*nxbox+jjj;
    for (jx=ixs; jx<ixe; jx++) {
      j = jj+jx;
      for (jat=wkbox[j]; jat<wkbox[j+1]; jat++) {
        wkat1[iiat] = wkatm[jat]; iiat++;
        }     /* end of cycle "jat" */
      }       /* end of cycle "jx" */
      }       /* end of cycle "jy" */
      }       /* end of cycle "jz" */
    for (iat=iii1; iat<iii2; iat++) {
      i_at = wkatm[iat];
      ai = radius[i_at]; aisq = ai*ai;
      pco = co+3*i_at;
      xi = *pco; yi = *(pco+1); zi = *(pco+2);
      for (i=0; i<n_dot; i++) *(wkdot+i)=0;

      ctnb = wknb; nnei = 0;
      for (j=0; j<iiat; j++) {
        j_at = *(wkat1+j);
        if (j_at == i_at) continue;

        aj = radius[j_at]; ajsq = aj*aj;
        pco = co+3*j_at;
        dx = *pco-xi; dy = *(pco+1)-yi; dz = *(pco+2)-zi;
        dd = dx*dx+dy*dy+dz*dz;

        as = ai+aj; if (dd > as*as) continue;
        nnei++;
        ctnb->x = dx; ctnb->y = dy; ctnb->z = dz;
        ctnb->dot = (dd+aisq-ajsq)/(2.*ai); /* reference dot product */
        ctnb++;
        }

/* check points on accessibility */
      if (nnei) {
        last = 0; i_ac = 0;
        for (l=0; l<n_dot; l++) {
          if (xus[3*l]*(wknb+last)->x+
              xus[1+3*l]*(wknb+last)->y+
              xus[2+3*l]*(wknb+last)->z <= (wknb+last)->dot) {
            for (j=0; j<nnei; j++) {
              if (xus[3*l]*(wknb+j)->x+xus[1+3*l]*(wknb+j)->y+
                  xus[2+3*l]*(wknb+j)->z > (wknb+j)->dot) {
                last = j; break;
                }
              }
            if (j >= nnei) { i_ac++; wkdot[l] = 1; }
            }     /* end of cycle j */
          }       /* end of cycle l */
        }
      else {
        i_ac  = n_dot;
        for (l=0; l < n_dot; l++) wkdot[l] = 1;
        }

#if TEST_CUBE
      printf("i_ac=%d, dotarea=%8.3f, aisq=%8.3f\n", i_ac, dotarea, aisq);
#endif
      a = aisq*dotarea* (double) i_ac;
      area = area + a;
      if (mode & FLAG_ATOM_AREA) {
        atom_area[i_at] = a;
        }
      if (mode & FLAG_DOTS) {
        for (l=0; l<n_dot; l++) {
          if (wkdot[l]) {
            lfnr++;
            if (maxdots <= 3*lfnr+1) {
              maxdots = maxdots+n_dot*3;
              dots = (double *) REALLOC(dots, maxdots*sizeof(double));
              }
            dots[3*lfnr-3] = ai*xus[3*l]+xi;
            dots[3*lfnr-2] = ai*xus[1+3*l]+yi;
            dots[3*lfnr-1] = ai*xus[2+3*l]+zi;
            }
          }
        }
      if (mode & FLAG_VOLUME) {
        dx=0.; dy=0.; dz=0.;
        for (l=0; l<n_dot; l++) {
          if (wkdot[l]) {
            dx=dx+xus[3*l];
            dy=dy+xus[1+3*l];
            dz=dz+xus[2+3*l];
            }
          }
        vol = vol+aisq*(dx*(xi-xs)+dy*(yi-ys)+dz*(zi-zs)+ai* (double) i_ac);
        }

      }         /* end of cycle "iat" */
    }           /* end of cycle "ix" */
    }           /* end of cycle "iy" */
    }           /* end of cycle "iz" */

  free(wkatm); free(wkdot); free(wknb);

  if (mode & FLAG_VOLUME) {
    vol = vol*FOURPI/(3.* (double) n_dot);
    *value_of_vol = vol;
    }
  if (mode & FLAG_DOTS) {
    *nu_dots = lfnr;
    *lidots = dots;
    }
  if (mode & FLAG_ATOM_AREA) {
    *at_area = atom_area;
    }
  *value_of_area = area;

#if TEST_CUBE
  printf("area=%8.3f\n", area);
#endif
  return 0;
  }

// Assembly:
subq $0x298, %rsp            # imm = 0x298
movq 0x2b8(%rsp), %rax
movq 0x2b0(%rsp), %rax
movq 0x2a8(%rsp), %rax
movq 0x2a0(%rsp), %rax
movq %rdi, 0x288(%rsp)
movq %rsi, 0x280(%rsp)
movl %edx, 0x27c(%rsp)
movl %ecx, 0x278(%rsp)
movl %r8d, 0x274(%rsp)
movq %r9, 0x268(%rsp)
movq $0x0, 0x1f0(%rsp)
movq $0x0, 0x1e8(%rsp)
movq $0x0, 0x1e0(%rsp)
movq $0x0, 0x1d8(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0x140(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0x138(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0x130(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0x118(%rsp)
movq $0x0, 0x108(%rsp)
movq $0x0, 0x100(%rsp)
movl 0x278(%rsp), %edi
callq 0x20bf0
movl %eax, 0x210(%rsp)
movl 0x210(%rsp), %eax
xorl %ecx, %ecx
subl 0x109d1(%rip), %ecx     # 0x31e90
cmpl %ecx, %eax
jne 0x214ea
cmpl $0x4, 0x109ca(%rip)     # 0x31e94
jne 0x214ea
movl 0x278(%rsp), %eax
cmpl 0x109b3(%rip), %eax     # 0x31e8c
je 0x21522
movl 0x278(%rsp), %eax
cmpl 0x109a0(%rip), %eax     # 0x31e88
je 0x21522
movl 0x278(%rsp), %edi
xorl %esi, %esi
subl 0x210(%rsp), %esi
leaq 0x109b7(%rip), %rdx     # 0x31eb8
movl $0x4, %ecx
callq 0x20c80
cmpl $0x0, %eax
je 0x21520
movl $0x1, 0x294(%rsp)
jmp 0x23203
jmp 0x21522
movq 0x10947(%rip), %rax     # 0x31e70
movq %rax, 0x110(%rsp)
cvtsi2sdl 0x1097f(%rip), %xmm1 # 0x31eb8
movsd 0xb17f(%rip), %xmm0     # 0x2c6c0
divsd %xmm1, %xmm0
movsd %xmm0, 0x128(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0x120(%rsp)
cmpl $0x0, 0x27c(%rsp)
jne 0x2159a
leaq 0xb1d6(%rip), %rax      # 0x2c741
movq %rax, 0x1092e(%rip)     # 0x31ea0
movl $0x22f, 0x1091c(%rip)   # imm = 0x22F
leaq 0xb37e(%rip), %rdi      # 0x2c901
movb $0x0, %al
callq 0x1d5c0
movl $0x1, 0x294(%rsp)
jmp 0x23203
movl 0x274(%rsp), %eax
andl $0x2, %eax
cmpl $0x0, %eax
je 0x215b5
xorps %xmm0, %xmm0
movsd %xmm0, 0x118(%rsp)
movl 0x274(%rsp), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x21613
imull $0x3, 0x108ed(%rip), %eax # 0x31eb8
imull 0x27c(%rsp), %eax
movl $0xa, %ecx
cltd
idivl %ecx
movl %eax, 0x1fc(%rsp)
movslq 0x1fc(%rsp), %rdx
leaq 0xb150(%rip), %rdi      # 0x2c741
movl $0x235, %esi            # imm = 0x235
movl $0x8, %ecx
callq 0x1d7a0
movq %rax, 0x108(%rsp)
movl $0x0, 0x1b8(%rsp)
movl 0x274(%rsp), %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0x21648
movslq 0x27c(%rsp), %rdx
leaq 0xb110(%rip), %rdi      # 0x2c741
movl $0x239, %esi            # imm = 0x239
movl $0x8, %ecx
callq 0x1d7a0
movq %rax, 0x100(%rsp)
movq 0x288(%rsp), %rax
movsd (%rax), %xmm0
movsd %xmm0, 0xe0(%rsp)
movsd 0xe0(%rsp), %xmm0
movsd %xmm0, 0xc8(%rsp)
movsd 0xe0(%rsp), %xmm0
movsd %xmm0, 0x140(%rsp)
movq 0x288(%rsp), %rax
movsd 0x8(%rax), %xmm0
movsd %xmm0, 0xd8(%rsp)
movsd 0xd8(%rsp), %xmm0
movsd %xmm0, 0xc0(%rsp)
movsd 0xd8(%rsp), %xmm0
movsd %xmm0, 0x138(%rsp)
movq 0x288(%rsp), %rax
movsd 0x10(%rax), %xmm0
movsd %xmm0, 0xd0(%rsp)
movsd 0xd0(%rsp), %xmm0
movsd %xmm0, 0xb8(%rsp)
movsd 0xd0(%rsp), %xmm0
movsd %xmm0, 0x130(%rsp)
movq 0x280(%rsp), %rax
movsd (%rax), %xmm0
movsd %xmm0, 0xb0(%rsp)
movl $0x1, 0x264(%rsp)
movl 0x264(%rsp), %eax
cmpl 0x27c(%rsp), %eax
jge 0x21a06
movq 0x288(%rsp), %rax
imull $0x3, 0x264(%rsp), %ecx
movslq %ecx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movq %rax, 0xa0(%rsp)
movsd 0xe0(%rsp), %xmm1
movq 0xa0(%rsp), %rax
movsd (%rax), %xmm0
ucomisd %xmm1, %xmm0
jbe 0x2177a
movsd 0xe0(%rsp), %xmm0
movsd %xmm0, 0x98(%rsp)
jmp 0x2178f
movq 0xa0(%rsp), %rax
movsd (%rax), %xmm0
movsd %xmm0, 0x98(%rsp)
movsd 0x98(%rsp), %xmm0
movsd %xmm0, 0xe0(%rsp)
movsd 0xc8(%rsp), %xmm0
movq 0xa0(%rsp), %rax
ucomisd (%rax), %xmm0
jbe 0x217cc
movsd 0xc8(%rsp), %xmm0
movsd %xmm0, 0x90(%rsp)
jmp 0x217e1
movq 0xa0(%rsp), %rax
movsd (%rax), %xmm0
movsd %xmm0, 0x90(%rsp)
movsd 0x90(%rsp), %xmm0
movsd %xmm0, 0xc8(%rsp)
movsd 0xd8(%rsp), %xmm1
movq 0xa0(%rsp), %rax
movsd 0x8(%rax), %xmm0
ucomisd %xmm1, %xmm0
jbe 0x21823
movsd 0xd8(%rsp), %xmm0
movsd %xmm0, 0x88(%rsp)
jmp 0x21839
movq 0xa0(%rsp), %rax
movsd 0x8(%rax), %xmm0
movsd %xmm0, 0x88(%rsp)
movsd 0x88(%rsp), %xmm0
movsd %xmm0, 0xd8(%rsp)
movsd 0xc0(%rsp), %xmm0
movq 0xa0(%rsp), %rax
ucomisd 0x8(%rax), %xmm0
jbe 0x21877
movsd 0xc0(%rsp), %xmm0
movsd %xmm0, 0x80(%rsp)
jmp 0x2188d
movq 0xa0(%rsp), %rax
movsd 0x8(%rax), %xmm0
movsd %xmm0, 0x80(%rsp)
movsd 0x80(%rsp), %xmm0
movsd %xmm0, 0xc0(%rsp)
movsd 0xd0(%rsp), %xmm1
movq 0xa0(%rsp), %rax
movsd 0x10(%rax), %xmm0
ucomisd %xmm1, %xmm0
jbe 0x218cc
movsd 0xd0(%rsp), %xmm0
movsd %xmm0, 0x78(%rsp)
jmp 0x218df
movq 0xa0(%rsp), %rax
movsd 0x10(%rax), %xmm0
movsd %xmm0, 0x78(%rsp)
movsd 0x78(%rsp), %xmm0
movsd %xmm0, 0xd0(%rsp)
movsd 0xb8(%rsp), %xmm0
movq 0xa0(%rsp), %rax
ucomisd 0x10(%rax), %xmm0
jbe 0x21917
movsd 0xb8(%rsp), %xmm0
movsd %xmm0, 0x70(%rsp)
jmp 0x2192a
movq 0xa0(%rsp), %rax
movsd 0x10(%rax), %xmm0
movsd %xmm0, 0x70(%rsp)
movsd 0x70(%rsp), %xmm0
movsd %xmm0, 0xb8(%rsp)
movsd 0x140(%rsp), %xmm0
movq 0xa0(%rsp), %rax
addsd (%rax), %xmm0
movsd %xmm0, 0x140(%rsp)
movsd 0x138(%rsp), %xmm0
movq 0xa0(%rsp), %rax
addsd 0x8(%rax), %xmm0
movsd %xmm0, 0x138(%rsp)
movsd 0x130(%rsp), %xmm0
movq 0xa0(%rsp), %rax
addsd 0x10(%rax), %xmm0
movsd %xmm0, 0x130(%rsp)
movsd 0xb0(%rsp), %xmm0
movq 0x280(%rsp), %rax
movslq 0x264(%rsp), %rcx
ucomisd (%rax,%rcx,8), %xmm0
jbe 0x219c6
movsd 0xb0(%rsp), %xmm0
movsd %xmm0, 0x68(%rsp)
jmp 0x219e1
movq 0x280(%rsp), %rax
movslq 0x264(%rsp), %rcx
movsd (%rax,%rcx,8), %xmm0
movsd %xmm0, 0x68(%rsp)
movsd 0x68(%rsp), %xmm0
movsd %xmm0, 0xb0(%rsp)
movl 0x264(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x264(%rsp)
jmp 0x21715
movsd 0x140(%rsp), %xmm0
cvtsi2sdl 0x27c(%rsp), %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, 0x140(%rsp)
movsd 0x138(%rsp), %xmm0
cvtsi2sdl 0x27c(%rsp), %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, 0x138(%rsp)
movsd 0x130(%rsp), %xmm0
cvtsi2sdl 0x27c(%rsp), %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, 0x130(%rsp)
movsd 0xa04d(%rip), %xmm0     # 0x2bab8
mulsd 0xb0(%rsp), %xmm0
movsd %xmm0, 0xb0(%rsp)
movsd 0xc8(%rsp), %xmm0
subsd 0xe0(%rsp), %xmm0
movsd %xmm0, 0xa8(%rsp)
movsd 0xa8(%rsp), %xmm0
divsd 0xb0(%rsp), %xmm0
callq 0x2230
movsd 0x9d41(%rip), %xmm1     # 0x2b7f8
ucomisd %xmm1, %xmm0
jbe 0x21adc
movsd 0xa8(%rsp), %xmm0
divsd 0xb0(%rsp), %xmm0
callq 0x2230
movsd %xmm0, 0x60(%rsp)
jmp 0x21aec
movsd 0x9d14(%rip), %xmm0     # 0x2b7f8
movsd %xmm0, 0x60(%rsp)
jmp 0x21aec
movsd 0x60(%rsp), %xmm0
cvttsd2si %xmm0, %eax
movl %eax, 0xfc(%rsp)
cvtsi2sdl 0xfc(%rsp), %xmm0
movsd 0xb0(%rsp), %xmm2
movsd 0xa8(%rsp), %xmm1
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd 0x9f79(%rip), %xmm1     # 0x2bab8
divsd %xmm1, %xmm0
movsd %xmm0, 0xa8(%rsp)
movsd 0xe0(%rsp), %xmm0
subsd 0xa8(%rsp), %xmm0
movsd %xmm0, 0xe0(%rsp)
movsd 0xc8(%rsp), %xmm0
addsd 0xa8(%rsp), %xmm0
movsd %xmm0, 0xc8(%rsp)
movsd 0xc0(%rsp), %xmm0
subsd 0xd8(%rsp), %xmm0
movsd %xmm0, 0xa8(%rsp)
movsd 0xa8(%rsp), %xmm0
divsd 0xb0(%rsp), %xmm0
callq 0x2230
movsd 0x9c3c(%rip), %xmm1     # 0x2b7f8
ucomisd %xmm1, %xmm0
jbe 0x21be1
movsd 0xa8(%rsp), %xmm0
divsd 0xb0(%rsp), %xmm0
callq 0x2230
movsd %xmm0, 0x58(%rsp)
jmp 0x21bf1
movsd 0x9c0f(%rip), %xmm0     # 0x2b7f8
movsd %xmm0, 0x58(%rsp)
jmp 0x21bf1
movsd 0x58(%rsp), %xmm0
cvttsd2si %xmm0, %eax
movl %eax, 0xf8(%rsp)
cvtsi2sdl 0xf8(%rsp), %xmm0
movsd 0xb0(%rsp), %xmm2
movsd 0xa8(%rsp), %xmm1
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd 0x9e74(%rip), %xmm1     # 0x2bab8
divsd %xmm1, %xmm0
movsd %xmm0, 0xa8(%rsp)
movsd 0xd8(%rsp), %xmm0
subsd 0xa8(%rsp), %xmm0
movsd %xmm0, 0xd8(%rsp)
movsd 0xc0(%rsp), %xmm0
addsd 0xa8(%rsp), %xmm0
movsd %xmm0, 0xc0(%rsp)
movsd 0xb8(%rsp), %xmm0
subsd 0xd0(%rsp), %xmm0
movsd %xmm0, 0xa8(%rsp)
movsd 0xa8(%rsp), %xmm0
divsd 0xb0(%rsp), %xmm0
callq 0x2230
movsd 0x9b37(%rip), %xmm1     # 0x2b7f8
ucomisd %xmm1, %xmm0
jbe 0x21ce6
movsd 0xa8(%rsp), %xmm0
divsd 0xb0(%rsp), %xmm0
callq 0x2230
movsd %xmm0, 0x50(%rsp)
jmp 0x21cf6
movsd 0x9b0a(%rip), %xmm0     # 0x2b7f8
movsd %xmm0, 0x50(%rsp)
jmp 0x21cf6
movsd 0x50(%rsp), %xmm0
cvttsd2si %xmm0, %eax
movl %eax, 0xf4(%rsp)
cvtsi2sdl 0xf4(%rsp), %xmm0
movsd 0xb0(%rsp), %xmm2
movsd 0xa8(%rsp), %xmm1
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd 0x9d6f(%rip), %xmm1     # 0x2bab8
divsd %xmm1, %xmm0
movsd %xmm0, 0xa8(%rsp)
movsd 0xd0(%rsp), %xmm0
subsd 0xa8(%rsp), %xmm0
movsd %xmm0, 0xd0(%rsp)
movsd 0xb8(%rsp), %xmm0
addsd 0xa8(%rsp), %xmm0
movsd %xmm0, 0xb8(%rsp)
movl 0xfc(%rsp), %eax
imull 0xf8(%rsp), %eax
movl %eax, 0xf0(%rsp)
movl 0xf0(%rsp), %eax
imull 0xf4(%rsp), %eax
movl %eax, 0xec(%rsp)
imull $0x3, 0x27c(%rsp), %eax
movslq %eax, %rdx
leaq 0xa977(%rip), %rdi      # 0x2c741
movl $0x25f, %esi            # imm = 0x25F
movl $0x4, %ecx
callq 0x1d7a0
movq %rax, 0x1d8(%rsp)
movq 0x1d8(%rsp), %rax
movslq 0x27c(%rsp), %rcx
shlq $0x2, %rcx
addq %rcx, %rax
movq %rax, 0x1e0(%rsp)
movl 0x100b2(%rip), %eax     # 0x31eb8
addl 0xec(%rsp), %eax
addl $0x1, %eax
movslq %eax, %rdx
leaq 0xa927(%rip), %rdi      # 0x2c741
movl $0x261, %esi            # imm = 0x261
movl $0x4, %ecx
callq 0x1d7a0
movq %rax, 0x1f0(%rsp)
movq 0x1f0(%rsp), %rax
movslq 0x10078(%rip), %rcx     # 0x31eb8
shlq $0x2, %rcx
addq %rcx, %rax
movq %rax, 0x1e8(%rsp)
movl $0x0, 0x264(%rsp)
movl 0x264(%rsp), %eax
cmpl 0x27c(%rsp), %eax
jge 0x22117
movq 0x288(%rsp), %rax
imull $0x3, 0x264(%rsp), %ecx
movslq %ecx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movq %rax, 0xa0(%rsp)
movq 0xa0(%rsp), %rax
movsd (%rax), %xmm0
subsd 0xe0(%rsp), %xmm0
divsd 0xb0(%rsp), %xmm0
callq 0x21c0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jbe 0x21ee7
movq 0xa0(%rsp), %rax
movsd (%rax), %xmm0
subsd 0xe0(%rsp), %xmm0
divsd 0xb0(%rsp), %xmm0
callq 0x21c0
movsd %xmm0, 0x48(%rsp)
jmp 0x21ef2
xorps %xmm0, %xmm0
movsd %xmm0, 0x48(%rsp)
jmp 0x21ef2
movsd 0x48(%rsp), %xmm0
cvttsd2si %xmm0, %eax
movl %eax, 0x260(%rsp)
movl 0x260(%rsp), %eax
movl 0xfc(%rsp), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jge 0x21f25
movl 0x260(%rsp), %eax
movl %eax, 0x44(%rsp)
jmp 0x21f33
movl 0xfc(%rsp), %eax
subl $0x1, %eax
movl %eax, 0x44(%rsp)
movl 0x44(%rsp), %eax
movl %eax, 0x260(%rsp)
movq 0xa0(%rsp), %rax
movsd 0x8(%rax), %xmm0
subsd 0xd8(%rsp), %xmm0
divsd 0xb0(%rsp), %xmm0
callq 0x21c0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jbe 0x21f97
movq 0xa0(%rsp), %rax
movsd 0x8(%rax), %xmm0
subsd 0xd8(%rsp), %xmm0
divsd 0xb0(%rsp), %xmm0
callq 0x21c0
movsd %xmm0, 0x38(%rsp)
jmp 0x21fa2
xorps %xmm0, %xmm0
movsd %xmm0, 0x38(%rsp)
jmp 0x21fa2
movsd 0x38(%rsp), %xmm0
cvttsd2si %xmm0, %eax
movl %eax, 0x228(%rsp)
movl 0x228(%rsp), %eax
movl 0xf8(%rsp), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jge 0x21fd5
movl 0x228(%rsp), %eax
movl %eax, 0x34(%rsp)
jmp 0x21fe3
movl 0xf8(%rsp), %eax
subl $0x1, %eax
movl %eax, 0x34(%rsp)
movl 0x34(%rsp), %eax
movl %eax, 0x228(%rsp)
movq 0xa0(%rsp), %rax
movsd 0x10(%rax), %xmm0
subsd 0xd0(%rsp), %xmm0
divsd 0xb0(%rsp), %xmm0
callq 0x21c0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jbe 0x22047
movq 0xa0(%rsp), %rax
movsd 0x10(%rax), %xmm0
subsd 0xd0(%rsp), %xmm0
divsd 0xb0(%rsp), %xmm0
callq 0x21c0
movsd %xmm0, 0x28(%rsp)
jmp 0x22052
xorps %xmm0, %xmm0
movsd %xmm0, 0x28(%rsp)
jmp 0x22052
movsd 0x28(%rsp), %xmm0
cvttsd2si %xmm0, %eax
movl %eax, 0x20c(%rsp)
movl 0x20c(%rsp), %eax
movl 0xf4(%rsp), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jge 0x22085
movl 0x20c(%rsp), %eax
movl %eax, 0x24(%rsp)
jmp 0x22093
movl 0xf4(%rsp), %eax
subl $0x1, %eax
movl %eax, 0x24(%rsp)
movl 0x24(%rsp), %eax
movl %eax, 0x20c(%rsp)
movl 0x260(%rsp), %eax
movl 0x228(%rsp), %ecx
imull 0xfc(%rsp), %ecx
addl %ecx, %eax
movl 0x20c(%rsp), %ecx
imull 0xf0(%rsp), %ecx
addl %ecx, %eax
movl %eax, 0x260(%rsp)
movl 0x260(%rsp), %edx
movq 0x1e0(%rsp), %rax
movslq 0x264(%rsp), %rcx
movl %edx, (%rax,%rcx,4)
movq 0x1e8(%rsp), %rax
movslq 0x260(%rsp), %rcx
movl (%rax,%rcx,4), %edx
addl $0x1, %edx
movl %edx, (%rax,%rcx,4)
movl 0x264(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x264(%rsp)
jmp 0x21e5a
movq 0x1e8(%rsp), %rax
movl (%rax), %eax
movl %eax, 0x228(%rsp)
movl $0x1, 0x260(%rsp)
movl 0x260(%rsp), %eax
cmpl 0xec(%rsp), %eax
jge 0x221a1
movq 0x1e8(%rsp), %rax
movslq 0x260(%rsp), %rcx
movl (%rax,%rcx,4), %eax
cmpl 0x228(%rsp), %eax
jle 0x22178
movq 0x1e8(%rsp), %rax
movslq 0x260(%rsp), %rcx
movl (%rax,%rcx,4), %eax
movl %eax, 0x20(%rsp)
jmp 0x22183
movl 0x228(%rsp), %eax
movl %eax, 0x20(%rsp)
movl 0x20(%rsp), %eax
movl %eax, 0x228(%rsp)
movl 0x260(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x260(%rsp)
jmp 0x22133
movl $0x1, 0x260(%rsp)
movl 0x260(%rsp), %eax
cmpl 0xec(%rsp), %eax
jg 0x221fd
movq 0x1e8(%rsp), %rax
movl 0x260(%rsp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movl (%rax,%rcx,4), %edx
movq 0x1e8(%rsp), %rax
movslq 0x260(%rsp), %rcx
addl (%rax,%rcx,4), %edx
movl %edx, (%rax,%rcx,4)
movl 0x260(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x260(%rsp)
jmp 0x221ac
movl 0x27c(%rsp), %eax
imull $0x1b, 0x228(%rsp), %ecx
cmpl %ecx, %eax
jge 0x2221d
movl 0x27c(%rsp), %eax
movl %eax, 0x1c(%rsp)
jmp 0x22229
imull $0x1b, 0x228(%rsp), %eax
movl %eax, 0x1c(%rsp)
movl 0x1c(%rsp), %eax
movl %eax, 0x208(%rsp)
movslq 0x208(%rsp), %rdx
leaq 0xa4fe(%rip), %rdi      # 0x2c741
movl $0x274, %esi            # imm = 0x274
movl $0x20, %ecx
callq 0x1d7a0
movq %rax, 0x1d0(%rsp)
movl $0x0, 0x264(%rsp)
movl 0x264(%rsp), %eax
cmpl 0x27c(%rsp), %eax
jge 0x222c2
movl 0x264(%rsp), %edx
movq 0x1d8(%rsp), %rax
movq 0x1e8(%rsp), %rsi
movq 0x1e0(%rsp), %rcx
movslq 0x264(%rsp), %rdi
movslq (%rcx,%rdi,4), %rdi
movl (%rsi,%rdi,4), %ecx
addl $-0x1, %ecx
movl %ecx, (%rsi,%rdi,4)
movslq %ecx, %rcx
movl %edx, (%rax,%rcx,4)
movl 0x264(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x264(%rsp)
jmp 0x22265
movl $0x0, 0x24c(%rsp)
movl 0x24c(%rsp), %eax
cmpl 0xf4(%rsp), %eax
jge 0x23111
movl 0x24c(%rsp), %eax
imull 0xf0(%rsp), %eax
movl %eax, 0x258(%rsp)
movl 0x24c(%rsp), %eax
subl $0x1, %eax
cmpl $0x0, %eax
jle 0x22316
movl 0x24c(%rsp), %eax
subl $0x1, %eax
movl %eax, 0x18(%rsp)
jmp 0x2231e
xorl %eax, %eax
movl %eax, 0x18(%rsp)
jmp 0x2231e
movl 0x18(%rsp), %eax
movl %eax, 0x234(%rsp)
movl 0x24c(%rsp), %eax
addl $0x2, %eax
cmpl 0xf4(%rsp), %eax
jge 0x2234c
movl 0x24c(%rsp), %eax
addl $0x2, %eax
movl %eax, 0x14(%rsp)
jmp 0x22357
movl 0xf4(%rsp), %eax
movl %eax, 0x14(%rsp)
movl 0x14(%rsp), %eax
movl %eax, 0x238(%rsp)
movl $0x0, 0x250(%rsp)
movl 0x250(%rsp), %eax
cmpl 0xf8(%rsp), %eax
jge 0x230f9
movl 0x250(%rsp), %eax
imull 0xfc(%rsp), %eax
addl 0x258(%rsp), %eax
movl %eax, 0x25c(%rsp)
movl 0x250(%rsp), %eax
subl $0x1, %eax
cmpl $0x0, %eax
jle 0x223bd
movl 0x250(%rsp), %eax
subl $0x1, %eax
movl %eax, 0x10(%rsp)
jmp 0x223c5
xorl %eax, %eax
movl %eax, 0x10(%rsp)
jmp 0x223c5
movl 0x10(%rsp), %eax
movl %eax, 0x23c(%rsp)
movl 0x250(%rsp), %eax
addl $0x2, %eax
cmpl 0xf8(%rsp), %eax
jge 0x223f3
movl 0x250(%rsp), %eax
addl $0x2, %eax
movl %eax, 0xc(%rsp)
jmp 0x223fe
movl 0xf8(%rsp), %eax
movl %eax, 0xc(%rsp)
movl 0xc(%rsp), %eax
movl %eax, 0x240(%rsp)
movl $0x0, 0x254(%rsp)
movl 0x254(%rsp), %eax
cmpl 0xfc(%rsp), %eax
jge 0x230e1
movl 0x25c(%rsp), %eax
addl 0x254(%rsp), %eax
movl %eax, 0x260(%rsp)
movq 0x1e8(%rsp), %rax
movslq 0x260(%rsp), %rcx
movl (%rax,%rcx,4), %eax
movl %eax, 0x1c4(%rsp)
movq 0x1e8(%rsp), %rax
movl 0x260(%rsp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movl (%rax,%rcx,4), %eax
movl %eax, 0x1c0(%rsp)
movl 0x1c4(%rsp), %eax
cmpl 0x1c0(%rsp), %eax
jl 0x2248b
jmp 0x230cb
movl 0x254(%rsp), %eax
subl $0x1, %eax
cmpl $0x0, %eax
jle 0x224aa
movl 0x254(%rsp), %eax
subl $0x1, %eax
movl %eax, 0x8(%rsp)
jmp 0x224b2
xorl %eax, %eax
movl %eax, 0x8(%rsp)
jmp 0x224b2
movl 0x8(%rsp), %eax
movl %eax, 0x244(%rsp)
movl 0x254(%rsp), %eax
addl $0x2, %eax
cmpl 0xfc(%rsp), %eax
jge 0x224e0
movl 0x254(%rsp), %eax
addl $0x2, %eax
movl %eax, 0x4(%rsp)
jmp 0x224eb
movl 0xfc(%rsp), %eax
movl %eax, 0x4(%rsp)
movl 0x4(%rsp), %eax
movl %eax, 0x248(%rsp)
movl $0x0, 0x1bc(%rsp)
movl 0x234(%rsp), %eax
movl %eax, 0x214(%rsp)
movl 0x214(%rsp), %eax
cmpl 0x238(%rsp), %eax
jge 0x2267c
movl 0x214(%rsp), %eax
imull 0xf0(%rsp), %eax
movl %eax, 0x220(%rsp)
movl 0x23c(%rsp), %eax
movl %eax, 0x218(%rsp)
movl 0x218(%rsp), %eax
cmpl 0x240(%rsp), %eax
jge 0x22664
movl 0x218(%rsp), %eax
imull 0xfc(%rsp), %eax
addl 0x220(%rsp), %eax
movl %eax, 0x224(%rsp)
movl 0x244(%rsp), %eax
movl %eax, 0x21c(%rsp)
movl 0x21c(%rsp), %eax
cmpl 0x248(%rsp), %eax
jge 0x2264c
movl 0x224(%rsp), %eax
addl 0x21c(%rsp), %eax
movl %eax, 0x228(%rsp)
movq 0x1e8(%rsp), %rax
movslq 0x228(%rsp), %rcx
movl (%rax,%rcx,4), %eax
movl %eax, 0x22c(%rsp)
movl 0x22c(%rsp), %eax
movq 0x1e8(%rsp), %rcx
movl 0x228(%rsp), %edx
addl $0x1, %edx
movslq %edx, %rdx
cmpl (%rcx,%rdx,4), %eax
jge 0x22634
movq 0x1d8(%rsp), %rax
movslq 0x22c(%rsp), %rcx
movl (%rax,%rcx,4), %edx
movq 0x1e0(%rsp), %rax
movslq 0x1bc(%rsp), %rcx
movl %edx, (%rax,%rcx,4)
movl 0x1bc(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x1bc(%rsp)
movl 0x22c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x22c(%rsp)
jmp 0x225c9
jmp 0x22636
movl 0x21c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x21c(%rsp)
jmp 0x22586
jmp 0x2264e
movl 0x218(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x218(%rsp)
jmp 0x22547
jmp 0x22666
movl 0x214(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x214(%rsp)
jmp 0x2250f
movl 0x1c4(%rsp), %eax
movl %eax, 0x264(%rsp)
movl 0x264(%rsp), %eax
cmpl 0x1c0(%rsp), %eax
jge 0x230c9
movq 0x1d8(%rsp), %rax
movslq 0x264(%rsp), %rcx
movl (%rax,%rcx,4), %eax
movl %eax, 0x1b4(%rsp)
movq 0x280(%rsp), %rax
movslq 0x1b4(%rsp), %rcx
movsd (%rax,%rcx,8), %xmm0
movsd %xmm0, 0x188(%rsp)
movsd 0x188(%rsp), %xmm0
mulsd 0x188(%rsp), %xmm0
movsd %xmm0, 0x180(%rsp)
movq 0x288(%rsp), %rax
imull $0x3, 0x1b4(%rsp), %ecx
movslq %ecx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movq %rax, 0xa0(%rsp)
movq 0xa0(%rsp), %rax
movsd (%rax), %xmm0
movsd %xmm0, 0x158(%rsp)
movq 0xa0(%rsp), %rax
movsd 0x8(%rax), %xmm0
movsd %xmm0, 0x150(%rsp)
movq 0xa0(%rsp), %rax
movsd 0x10(%rax), %xmm0
movsd %xmm0, 0x148(%rsp)
movl $0x0, 0x260(%rsp)
movl 0x260(%rsp), %eax
cmpl 0xf74c(%rip), %eax      # 0x31eb8
jge 0x22798
movq 0x1f0(%rsp), %rax
movslq 0x260(%rsp), %rcx
movl $0x0, (%rax,%rcx,4)
movl 0x260(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x260(%rsp)
jmp 0x2275f
movq 0x1d0(%rsp), %rax
movq %rax, 0x1c8(%rsp)
movl $0x0, 0x204(%rsp)
movl $0x0, 0x228(%rsp)
movl 0x228(%rsp), %eax
cmpl 0x1bc(%rsp), %eax
jge 0x22a01
movq 0x1e0(%rsp), %rax
movslq 0x228(%rsp), %rcx
movl (%rax,%rcx,4), %eax
movl %eax, 0x1b0(%rsp)
movl 0x1b0(%rsp), %eax
cmpl 0x1b4(%rsp), %eax
jne 0x22801
jmp 0x229eb
movq 0x280(%rsp), %rax
movslq 0x1b0(%rsp), %rcx
movsd (%rax,%rcx,8), %xmm0
movsd %xmm0, 0x170(%rsp)
movsd 0x170(%rsp), %xmm0
mulsd 0x170(%rsp), %xmm0
movsd %xmm0, 0x178(%rsp)
movq 0x288(%rsp), %rax
imull $0x3, 0x1b0(%rsp), %ecx
movslq %ecx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movq %rax, 0xa0(%rsp)
movq 0xa0(%rsp), %rax
movsd (%rax), %xmm0
subsd 0x158(%rsp), %xmm0
movsd %xmm0, 0x1a8(%rsp)
movq 0xa0(%rsp), %rax
movsd 0x8(%rax), %xmm0
subsd 0x150(%rsp), %xmm0
movsd %xmm0, 0x1a0(%rsp)
movq 0xa0(%rsp), %rax
movsd 0x10(%rax), %xmm0
subsd 0x148(%rsp), %xmm0
movsd %xmm0, 0x198(%rsp)
movsd 0x1a8(%rsp), %xmm1
movsd 0x1a8(%rsp), %xmm2
movsd 0x1a0(%rsp), %xmm0
mulsd 0x1a0(%rsp), %xmm0
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movsd 0x198(%rsp), %xmm0
movsd 0x198(%rsp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x190(%rsp)
movsd 0x188(%rsp), %xmm0
addsd 0x170(%rsp), %xmm0
movsd %xmm0, 0x168(%rsp)
movsd 0x190(%rsp), %xmm0
movsd 0x168(%rsp), %xmm1
mulsd 0x168(%rsp), %xmm1
ucomisd %xmm1, %xmm0
jbe 0x22948
jmp 0x229eb
movl 0x204(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x204(%rsp)
movsd 0x1a8(%rsp), %xmm0
movq 0x1c8(%rsp), %rax
movsd %xmm0, (%rax)
movsd 0x1a0(%rsp), %xmm0
movq 0x1c8(%rsp), %rax
movsd %xmm0, 0x8(%rax)
movsd 0x198(%rsp), %xmm0
movq 0x1c8(%rsp), %rax
movsd %xmm0, 0x10(%rax)
movsd 0x190(%rsp), %xmm0
addsd 0x180(%rsp), %xmm0
subsd 0x178(%rsp), %xmm0
movsd 0x90fb(%rip), %xmm1     # 0x2bab8
mulsd 0x188(%rsp), %xmm1
divsd %xmm1, %xmm0
movq 0x1c8(%rsp), %rax
movsd %xmm0, 0x18(%rax)
movq 0x1c8(%rsp), %rax
addq $0x20, %rax
movq %rax, 0x1c8(%rsp)
movl 0x228(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x228(%rsp)
jmp 0x227be
cmpl $0x0, 0x204(%rsp)
je 0x22c84
movl $0x0, 0x200(%rsp)
movl $0x0, 0x230(%rsp)
movl $0x0, 0x20c(%rsp)
movl 0x20c(%rsp), %eax
cmpl 0xf47b(%rip), %eax      # 0x31eb8
jge 0x22c82
movq 0x110(%rsp), %rax
imull $0x3, 0x20c(%rsp), %ecx
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm0
movq 0x1d0(%rsp), %rax
movslq 0x200(%rsp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movsd (%rax), %xmm2
movq 0x110(%rsp), %rax
imull $0x3, 0x20c(%rsp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm1
movq 0x1d0(%rsp), %rax
movslq 0x200(%rsp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
mulsd 0x8(%rax), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq 0x110(%rsp), %rax
imull $0x3, 0x20c(%rsp), %ecx
addl $0x2, %ecx
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm1
movq 0x1d0(%rsp), %rax
movslq 0x200(%rsp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movsd 0x10(%rax), %xmm2
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movq 0x1d0(%rsp), %rax
movslq 0x200(%rsp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movsd 0x18(%rax), %xmm0
ucomisd %xmm1, %xmm0
jb 0x22c6a
movl $0x0, 0x228(%rsp)
movl 0x228(%rsp), %eax
cmpl 0x204(%rsp), %eax
jge 0x22c30
movq 0x110(%rsp), %rax
imull $0x3, 0x20c(%rsp), %ecx
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm1
movq 0x1d0(%rsp), %rax
movslq 0x228(%rsp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movsd (%rax), %xmm2
movq 0x110(%rsp), %rax
imull $0x3, 0x20c(%rsp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm0
movq 0x1d0(%rsp), %rax
movslq 0x228(%rsp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
mulsd 0x8(%rax), %xmm0
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movq 0x110(%rsp), %rax
imull $0x3, 0x20c(%rsp), %ecx
addl $0x2, %ecx
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm0
movq 0x1d0(%rsp), %rax
movslq 0x228(%rsp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movsd 0x10(%rax), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq 0x1d0(%rsp), %rax
movslq 0x228(%rsp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
ucomisd 0x18(%rax), %xmm0
jbe 0x22c18
movl 0x228(%rsp), %eax
movl %eax, 0x200(%rsp)
jmp 0x22c30
jmp 0x22c1a
movl 0x228(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x228(%rsp)
jmp 0x22b25
movl 0x228(%rsp), %eax
cmpl 0x204(%rsp), %eax
jl 0x22c68
movl 0x230(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x230(%rsp)
movq 0x1f0(%rsp), %rax
movslq 0x20c(%rsp), %rcx
movl $0x1, (%rax,%rcx,4)
jmp 0x22c6a
jmp 0x22c6c
movl 0x20c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x20c(%rsp)
jmp 0x22a30
jmp 0x22cd7
movl 0xf22e(%rip), %eax      # 0x31eb8
movl %eax, 0x230(%rsp)
movl $0x0, 0x20c(%rsp)
movl 0x20c(%rsp), %eax
cmpl 0xf20f(%rip), %eax      # 0x31eb8
jge 0x22cd5
movq 0x1f0(%rsp), %rax
movslq 0x20c(%rsp), %rcx
movl $0x1, (%rax,%rcx,4)
movl 0x20c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x20c(%rsp)
jmp 0x22c9c
jmp 0x22cd7
movsd 0x180(%rsp), %xmm0
mulsd 0x128(%rsp), %xmm0
cvtsi2sdl 0x230(%rsp), %xmm1
mulsd %xmm1, %xmm0
movsd %xmm0, 0x160(%rsp)
movsd 0x120(%rsp), %xmm0
addsd 0x160(%rsp), %xmm0
movsd %xmm0, 0x120(%rsp)
movl 0x274(%rsp), %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0x22d47
movsd 0x160(%rsp), %xmm0
movq 0x100(%rsp), %rax
movslq 0x1b4(%rsp), %rcx
movsd %xmm0, (%rax,%rcx,8)
movl 0x274(%rsp), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x22f04
movl $0x0, 0x20c(%rsp)
movl 0x20c(%rsp), %eax
cmpl 0xf146(%rip), %eax      # 0x31eb8
jge 0x22f02
movq 0x1f0(%rsp), %rax
movslq 0x20c(%rsp), %rcx
cmpl $0x0, (%rax,%rcx,4)
je 0x22eea
movl 0x1b8(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x1b8(%rsp)
movl 0x1fc(%rsp), %eax
imull $0x3, 0x1b8(%rsp), %ecx
addl $0x1, %ecx
cmpl %ecx, %eax
jg 0x22dfd
movl 0x1fc(%rsp), %eax
imull $0x3, 0xf0f1(%rip), %ecx # 0x31eb8
addl %ecx, %eax
movl %eax, 0x1fc(%rsp)
movq 0x108(%rsp), %rdx
movslq 0x1fc(%rsp), %rcx
shlq $0x3, %rcx
leaq 0x9956(%rip), %rdi      # 0x2c741
movl $0x2dc, %esi            # imm = 0x2DC
callq 0x1d830
movq %rax, 0x108(%rsp)
movsd 0x188(%rsp), %xmm0
movq 0x110(%rsp), %rax
imull $0x3, 0x20c(%rsp), %ecx
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm2
movsd 0x158(%rsp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq 0x108(%rsp), %rax
imull $0x3, 0x1b8(%rsp), %ecx
subl $0x3, %ecx
movslq %ecx, %rcx
movsd %xmm0, (%rax,%rcx,8)
movsd 0x188(%rsp), %xmm0
movq 0x110(%rsp), %rax
imull $0x3, 0x20c(%rsp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm2
movsd 0x150(%rsp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq 0x108(%rsp), %rax
imull $0x3, 0x1b8(%rsp), %ecx
subl $0x2, %ecx
movslq %ecx, %rcx
movsd %xmm0, (%rax,%rcx,8)
movsd 0x188(%rsp), %xmm0
movq 0x110(%rsp), %rax
imull $0x3, 0x20c(%rsp), %ecx
addl $0x2, %ecx
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm2
movsd 0x148(%rsp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movq 0x108(%rsp), %rax
imull $0x3, 0x1b8(%rsp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movsd %xmm0, (%rax,%rcx,8)
jmp 0x22eec
movl 0x20c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x20c(%rsp)
jmp 0x22d65
jmp 0x22f04
movl 0x274(%rsp), %eax
andl $0x2, %eax
cmpl $0x0, %eax
je 0x230b1
xorps %xmm0, %xmm0
movsd %xmm0, 0x1a8(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0x1a0(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0x198(%rsp)
movl $0x0, 0x20c(%rsp)
movl 0x20c(%rsp), %eax
cmpl 0xef65(%rip), %eax      # 0x31eb8
jge 0x2300f
movq 0x1f0(%rsp), %rax
movslq 0x20c(%rsp), %rcx
cmpl $0x0, (%rax,%rcx,4)
je 0x22ff7
movsd 0x1a8(%rsp), %xmm0
movq 0x110(%rsp), %rax
imull $0x3, 0x20c(%rsp), %ecx
movslq %ecx, %rcx
addsd (%rax,%rcx,8), %xmm0
movsd %xmm0, 0x1a8(%rsp)
movsd 0x1a0(%rsp), %xmm0
movq 0x110(%rsp), %rax
imull $0x3, 0x20c(%rsp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
addsd (%rax,%rcx,8), %xmm0
movsd %xmm0, 0x1a0(%rsp)
movsd 0x198(%rsp), %xmm0
movq 0x110(%rsp), %rax
imull $0x3, 0x20c(%rsp), %ecx
addl $0x2, %ecx
movslq %ecx, %rcx
addsd (%rax,%rcx,8), %xmm0
movsd %xmm0, 0x198(%rsp)
jmp 0x22ff9
movl 0x20c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x20c(%rsp)
jmp 0x22f46
movsd 0x118(%rsp), %xmm1
movsd 0x180(%rsp), %xmm0
movsd 0x1a8(%rsp), %xmm2
movsd 0x158(%rsp), %xmm4
subsd 0x140(%rsp), %xmm4
movsd 0x1a0(%rsp), %xmm3
movsd 0x150(%rsp), %xmm5
subsd 0x138(%rsp), %xmm5
mulsd %xmm5, %xmm3
mulsd %xmm4, %xmm2
addsd %xmm3, %xmm2
movsd 0x198(%rsp), %xmm3
movsd 0x148(%rsp), %xmm4
subsd 0x130(%rsp), %xmm4
mulsd %xmm4, %xmm3
addsd %xmm2, %xmm3
movsd 0x188(%rsp), %xmm2
cvtsi2sdl 0x230(%rsp), %xmm4
mulsd %xmm4, %xmm2
addsd %xmm3, %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x118(%rsp)
jmp 0x230b3
movl 0x264(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x264(%rsp)
jmp 0x2268a
jmp 0x230cb
movl 0x254(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x254(%rsp)
jmp 0x22414
jmp 0x230e3
movl 0x250(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x250(%rsp)
jmp 0x2236d
jmp 0x230fb
movl 0x24c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x24c(%rsp)
jmp 0x222cd
movq 0x1d8(%rsp), %rdi
callq 0x2030
movq 0x1f0(%rsp), %rdi
callq 0x2030
movq 0x1d0(%rsp), %rdi
callq 0x2030
movl 0x274(%rsp), %eax
andl $0x2, %eax
cmpl $0x0, %eax
je 0x2318e
movsd 0x9571(%rip), %xmm0     # 0x2c6c0
mulsd 0x118(%rsp), %xmm0
cvtsi2sdl 0xed58(%rip), %xmm2 # 0x31eb8
movsd 0x8920(%rip), %xmm1     # 0x2ba88
mulsd %xmm2, %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, 0x118(%rsp)
movsd 0x118(%rsp), %xmm0
movq 0x2a8(%rsp), %rax
movsd %xmm0, (%rax)
movl 0x274(%rsp), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x231c1
movl 0x1b8(%rsp), %ecx
movq 0x2b8(%rsp), %rax
movl %ecx, (%rax)
movq 0x108(%rsp), %rcx
movq 0x2b0(%rsp), %rax
movq %rcx, (%rax)
movl 0x274(%rsp), %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0x231e3
movq 0x100(%rsp), %rcx
movq 0x2a0(%rsp), %rax
movq %rcx, (%rax)
movsd 0x120(%rsp), %xmm0
movq 0x268(%rsp), %rax
movsd %xmm0, (%rax)
movl $0x0, 0x294(%rsp)
movl 0x294(%rsp), %eax
addq $0x298, %rsp            # imm = 0x298
retq
nopw %cs:(%rax,%rax)
nopl (%rax)