// File: kaityo256[P]lj_simd/force_soa.cpp
// Function: force_avx2()
void
force_avx2(void) {
  const int pn = particle_number;
  const v4df vzero = _mm256_set_pd(0, 0, 0, 0);
  const v4df vcl2 = _mm256_set_pd(CL2, CL2, CL2, CL2);
  const v4df vc24 = _mm256_set_pd(24 * dt, 24 * dt, 24 * dt, 24 * dt);
  const v4df vc48 = _mm256_set_pd(48 * dt, 48 * dt, 48 * dt, 48 * dt);
  for (int i = 0; i < pn; i++) {
    const double qix = q[X][i];
    const double qiy = q[Y][i];
    const double qiz = q[Z][i];
    const int np = number_of_partners[i];
    double pfx = 0;
    double pfy = 0;
    double pfz = 0;
    const int kp = pointer[i];
    const v4df vqix = _mm256_set_pd(q[X][i], q[X][i], q[X][i], q[X][i]);
    const v4df vqiy = _mm256_set_pd(q[Y][i], q[Y][i], q[Y][i], q[Y][i]);
    const v4df vqiz = _mm256_set_pd(q[Z][i], q[Z][i], q[Z][i], q[Z][i]);

    for (int k = 0; k < (np / 4) * 4; k += 4) {
      const int j_1 = sorted_list[kp + k];
      const int j_2 = sorted_list[kp + k + 1];
      const int j_3 = sorted_list[kp + k + 2];
      const int j_4 = sorted_list[kp + k + 3];

      const v4df vqjx = _mm256_set_pd(q[X][j_1], q[X][j_2], q[X][j_3], q[X][j_4]);
      const v4df vqjy = _mm256_set_pd(q[Y][j_1], q[Y][j_2], q[Y][j_3], q[Y][j_4]);
      const v4df vqjz = _mm256_set_pd(q[Z][j_1], q[Z][j_2], q[Z][j_3], q[Z][j_4]);

      const v4df vdx = vqjx - vqix;
      const v4df vdy = vqjy - vqiy;
      const v4df vdz = vqjz - vqiz;
      const v4df vr2 = vdx * vdx + vdy * vdy + vdz * vdz;
      const v4df vr6 = vr2 * vr2 * vr2;
      v4df vdf = (vc24 * vr6 - vc48) / (vr6 * vr6 * vr2);
      const v4df mask = vcl2 - vr2;
      vdf = _mm256_blendv_pd(vdf, vzero, mask);
      v4df vdfx = vdf * vdx;
      v4df vdfy = vdf * vdy;
      v4df vdfz = vdf * vdz;
      double *dfx = (double *)(&vdfx);
      double *dfy = (double *)(&vdfy);
      double *dfz = (double *)(&vdfz);

      pfx += dfx[3];
      pfy += dfy[3];
      pfz += dfz[3];

      p[X][j_1] -= dfx[3];
      p[Y][j_1] -= dfy[3];
      p[Z][j_1] -= dfz[3];

      pfx += dfx[2];
      pfy += dfy[2];
      pfz += dfz[2];
      p[X][j_2] -= dfx[2];
      p[Y][j_2] -= dfy[2];
      p[Z][j_2] -= dfz[2];

      pfx += dfx[1];
      pfy += dfy[1];
      pfz += dfz[1];
      p[X][j_3] -= dfx[1];
      p[Y][j_3] -= dfy[1];
      p[Z][j_3] -= dfz[1];

      pfx += dfx[0];
      pfy += dfy[0];
      pfz += dfz[0];
      p[X][j_4] -= dfx[0];
      p[Y][j_4] -= dfy[0];
      p[Z][j_4] -= dfz[0];
    }
    p[X][i] += pfx;
    p[Y][i] += pfy;
    p[Z][i] += pfz;
    for (int k = (np / 4) * 4; k < np; k++) {
      const int j = sorted_list[kp + k];
      double dx = q[X][j] - qix;
      double dy = q[Y][j] - qiy;
      double dz = q[Z][j] - qiz;
      double r2 = (dx * dx + dy * dy + dz * dz);
      if (r2 > CL2) continue;
      double r6 = r2 * r2 * r2;
      double df = ((24.0 * r6 - 48.0) / (r6 * r6 * r2)) * dt;
      p[X][i] += df * dx;
      p[Y][i] += df * dy;
      p[Z][i] += df * dz;
      p[X][j] -= df * dx;
      p[Y][j] -= df * dy;
      p[Z][j] -= df * dz;
    }
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
andq $-0x20, %rsp
subq $0x680, %rsp            # imm = 0x680
movl 0x19f75bb(%rip), %eax   # 0x19fab10
movl %eax, 0x37c(%rsp)
movq $0x0, 0x5f8(%rsp)
movq $0x0, 0x5f0(%rsp)
movq $0x0, 0x5e8(%rsp)
movq $0x0, 0x5e0(%rsp)
vmovsd 0x5e8(%rsp), %xmm1
vmovsd 0x5e0(%rsp), %xmm0
vunpcklpd %xmm1, %xmm0, %xmm0 # xmm0 = xmm0[0],xmm1[0]
vmovsd 0x5f8(%rsp), %xmm2
vmovsd 0x5f0(%rsp), %xmm1
vunpcklpd %xmm2, %xmm1, %xmm1 # xmm1 = xmm1[0],xmm2[0]
vmovapd %xmm1, 0x5d0(%rsp)
vmovapd %xmm0, 0x5c0(%rsp)
vmovapd 0x5c0(%rsp), %ymm0
vmovapd %ymm0, 0x340(%rsp)
movabsq $0x4022000000000000, %rax # imm = 0x4022000000000000
movq %rax, 0x5b8(%rsp)
movq %rax, 0x5b0(%rsp)
movq %rax, 0x5a8(%rsp)
movq %rax, 0x5a0(%rsp)
vmovsd 0x5a8(%rsp), %xmm1
vmovsd 0x5a0(%rsp), %xmm0
vunpcklpd %xmm1, %xmm0, %xmm0 # xmm0 = xmm0[0],xmm1[0]
vmovsd 0x5b8(%rsp), %xmm2
vmovsd 0x5b0(%rsp), %xmm1
vunpcklpd %xmm2, %xmm1, %xmm1 # xmm1 = xmm1[0],xmm2[0]
vmovapd %xmm1, 0x590(%rsp)
vmovapd %xmm0, 0x580(%rsp)
vmovapd 0x580(%rsp), %ymm0
vmovapd %ymm0, 0x320(%rsp)
movabsq $0x3f989374bc6a7efa, %rax # imm = 0x3F989374BC6A7EFA
movq %rax, 0x578(%rsp)
movq %rax, 0x570(%rsp)
movq %rax, 0x568(%rsp)
movq %rax, 0x560(%rsp)
vmovsd 0x568(%rsp), %xmm1
vmovsd 0x560(%rsp), %xmm0
vunpcklpd %xmm1, %xmm0, %xmm0 # xmm0 = xmm0[0],xmm1[0]
vmovsd 0x578(%rsp), %xmm2
vmovsd 0x570(%rsp), %xmm1
vunpcklpd %xmm2, %xmm1, %xmm1 # xmm1 = xmm1[0],xmm2[0]
vmovapd %xmm1, 0x550(%rsp)
vmovapd %xmm0, 0x540(%rsp)
vmovapd 0x540(%rsp), %ymm0
vmovapd %ymm0, 0x300(%rsp)
movabsq $0x3fa89374bc6a7efa, %rax # imm = 0x3FA89374BC6A7EFA
movq %rax, 0x538(%rsp)
movq %rax, 0x530(%rsp)
movq %rax, 0x528(%rsp)
movq %rax, 0x520(%rsp)
vmovsd 0x538(%rsp), %xmm1
vmovsd 0x530(%rsp), %xmm0
vunpcklpd %xmm1, %xmm0, %xmm1 # xmm1 = xmm0[0],xmm1[0]
vmovsd 0x528(%rsp), %xmm2
vmovsd 0x520(%rsp), %xmm0
vunpcklpd %xmm2, %xmm0, %xmm2 # xmm2 = xmm0[0],xmm2[0]
vmovaps %xmm2, %xmm0
vinsertf128 $0x1, %xmm1, %ymm0, %ymm0
vmovapd %ymm0, 0x500(%rsp)
vmovapd 0x500(%rsp), %ymm0
vmovapd %ymm0, 0x2e0(%rsp)
movl $0x0, 0x2dc(%rsp)
movl 0x2dc(%rsp), %eax
cmpl 0x37c(%rsp), %eax
jge 0x45af
movslq 0x2dc(%rsp), %rcx
leaq 0x18d397(%rip), %rax    # 0x190b10
vmovsd (%rax,%rcx,8), %xmm0
vmovsd %xmm0, 0x2d0(%rsp)
movslq 0x2dc(%rsp), %rcx
vmovsd 0x30d400(%rax,%rcx,8), %xmm0
vmovsd %xmm0, 0x2c8(%rsp)
movslq 0x2dc(%rsp), %rcx
vmovsd 0x61a800(%rax,%rcx,8), %xmm0
vmovsd %xmm0, 0x2c0(%rsp)
movslq 0x2dc(%rsp), %rdx
leaq 0x19f7356(%rip), %rcx   # 0x19fab20
movl (%rcx,%rdx,4), %ecx
movl %ecx, 0x2bc(%rsp)
movq $0x0, 0x2b0(%rsp)
movq $0x0, 0x2a8(%rsp)
movq $0x0, 0x2a0(%rsp)
movslq 0x2dc(%rsp), %rdx
leaq 0x770b519(%rip), %rcx   # 0x770ed20
movl (%rcx,%rdx,4), %ecx
movl %ecx, 0x29c(%rsp)
movslq 0x2dc(%rsp), %rcx
vmovsd (%rax,%rcx,8), %xmm0
vmovsd %xmm0, 0x4f8(%rsp)
vmovsd %xmm0, 0x4f0(%rsp)
vmovsd %xmm0, 0x4e8(%rsp)
vmovsd %xmm0, 0x4e0(%rsp)
vmovsd 0x4e8(%rsp), %xmm1
vmovsd 0x4e0(%rsp), %xmm0
vunpcklpd %xmm1, %xmm0, %xmm0 # xmm0 = xmm0[0],xmm1[0]
vmovsd 0x4f8(%rsp), %xmm2
vmovsd 0x4f0(%rsp), %xmm1
vunpcklpd %xmm2, %xmm1, %xmm1 # xmm1 = xmm1[0],xmm2[0]
vmovapd %xmm1, 0x4d0(%rsp)
vmovapd %xmm0, 0x4c0(%rsp)
vmovapd 0x4c0(%rsp), %ymm0
vmovapd %ymm0, 0x260(%rsp)
movslq 0x2dc(%rsp), %rcx
vmovsd 0x30d400(%rax,%rcx,8), %xmm0
vmovsd %xmm0, 0x4b8(%rsp)
vmovsd %xmm0, 0x4b0(%rsp)
vmovsd %xmm0, 0x4a8(%rsp)
vmovsd %xmm0, 0x4a0(%rsp)
vmovsd 0x4a8(%rsp), %xmm1
vmovsd 0x4a0(%rsp), %xmm0
vunpcklpd %xmm1, %xmm0, %xmm0 # xmm0 = xmm0[0],xmm1[0]
vmovsd 0x4b8(%rsp), %xmm2
vmovsd 0x4b0(%rsp), %xmm1
vunpcklpd %xmm2, %xmm1, %xmm1 # xmm1 = xmm1[0],xmm2[0]
vmovapd %xmm1, 0x490(%rsp)
vmovapd %xmm0, 0x480(%rsp)
vmovapd 0x480(%rsp), %ymm0
vmovapd %ymm0, 0x240(%rsp)
movslq 0x2dc(%rsp), %rcx
vmovsd 0x61a800(%rax,%rcx,8), %xmm0
vmovsd %xmm0, 0x478(%rsp)
vmovsd %xmm0, 0x470(%rsp)
vmovsd %xmm0, 0x468(%rsp)
vmovsd %xmm0, 0x460(%rsp)
vmovsd 0x478(%rsp), %xmm1
vmovsd 0x470(%rsp), %xmm0
vunpcklpd %xmm1, %xmm0, %xmm1 # xmm1 = xmm0[0],xmm1[0]
vmovsd 0x468(%rsp), %xmm2
vmovsd 0x460(%rsp), %xmm0
vunpcklpd %xmm2, %xmm0, %xmm2 # xmm2 = xmm0[0],xmm2[0]
vmovaps %xmm2, %xmm0
vinsertf128 $0x1, %xmm1, %ymm0, %ymm0
vmovapd %ymm0, 0x440(%rsp)
vmovapd 0x440(%rsp), %ymm0
vmovapd %ymm0, 0x220(%rsp)
movl $0x0, 0x21c(%rsp)
movl 0x21c(%rsp), %eax
movl %eax, 0xc(%rsp)
movl 0x2bc(%rsp), %eax
movl $0x4, %ecx
cltd
idivl %ecx
movl %eax, %ecx
movl 0xc(%rsp), %eax
shll $0x2, %ecx
cmpl %ecx, %eax
jge 0x4227
movl 0x29c(%rsp), %eax
movl 0x21c(%rsp), %ecx
addl %ecx, %eax
movslq %eax, %rcx
leaq 0x7a18733(%rip), %rax   # 0x7a1c120
movl (%rax,%rcx,4), %ecx
movl %ecx, 0x218(%rsp)
movl 0x29c(%rsp), %ecx
movl 0x21c(%rsp), %edx
addl %edx, %ecx
movslq %ecx, %rcx
movl 0x4(%rax,%rcx,4), %ecx
movl %ecx, 0x214(%rsp)
movl 0x29c(%rsp), %ecx
movl 0x21c(%rsp), %edx
addl %edx, %ecx
movslq %ecx, %rcx
movl 0x8(%rax,%rcx,4), %ecx
movl %ecx, 0x210(%rsp)
movl 0x29c(%rsp), %ecx
movl 0x21c(%rsp), %edx
addl %edx, %ecx
movslq %ecx, %rcx
movl 0xc(%rax,%rcx,4), %eax
movl %eax, 0x20c(%rsp)
movslq 0x218(%rsp), %rcx
leaq 0x18d0b0(%rip), %rax    # 0x190b10
movq %rax, (%rsp)
vmovsd (%rax,%rcx,8), %xmm3
movslq 0x214(%rsp), %rcx
vmovsd (%rax,%rcx,8), %xmm2
movslq 0x210(%rsp), %rcx
vmovsd (%rax,%rcx,8), %xmm1
movslq 0x20c(%rsp), %rcx
vmovsd (%rax,%rcx,8), %xmm0
vmovsd %xmm3, 0x438(%rsp)
vmovsd %xmm2, 0x430(%rsp)
vmovsd %xmm1, 0x428(%rsp)
vmovsd %xmm0, 0x420(%rsp)
vmovsd 0x428(%rsp), %xmm1
vmovsd 0x420(%rsp), %xmm0
vunpcklpd %xmm1, %xmm0, %xmm0 # xmm0 = xmm0[0],xmm1[0]
vmovsd 0x438(%rsp), %xmm2
vmovsd 0x430(%rsp), %xmm1
vunpcklpd %xmm2, %xmm1, %xmm1 # xmm1 = xmm1[0],xmm2[0]
vmovapd %xmm1, 0x410(%rsp)
vmovapd %xmm0, 0x400(%rsp)
vmovapd 0x400(%rsp), %ymm0
vmovapd %ymm0, 0x1e0(%rsp)
movslq 0x218(%rsp), %rcx
vmovsd 0x30d400(%rax,%rcx,8), %xmm3
movslq 0x214(%rsp), %rcx
vmovsd 0x30d400(%rax,%rcx,8), %xmm2
movslq 0x210(%rsp), %rcx
vmovsd 0x30d400(%rax,%rcx,8), %xmm1
movslq 0x20c(%rsp), %rcx
vmovsd 0x30d400(%rax,%rcx,8), %xmm0
vmovsd %xmm3, 0x3f8(%rsp)
vmovsd %xmm2, 0x3f0(%rsp)
vmovsd %xmm1, 0x3e8(%rsp)
vmovsd %xmm0, 0x3e0(%rsp)
vmovsd 0x3e8(%rsp), %xmm1
vmovsd 0x3e0(%rsp), %xmm0
vunpcklpd %xmm1, %xmm0, %xmm0 # xmm0 = xmm0[0],xmm1[0]
vmovsd 0x3f8(%rsp), %xmm2
vmovsd 0x3f0(%rsp), %xmm1
vunpcklpd %xmm2, %xmm1, %xmm1 # xmm1 = xmm1[0],xmm2[0]
vmovapd %xmm1, 0x3d0(%rsp)
vmovapd %xmm0, 0x3c0(%rsp)
vmovapd 0x3c0(%rsp), %ymm0
vmovapd %ymm0, 0x1c0(%rsp)
movslq 0x218(%rsp), %rcx
vmovsd 0x61a800(%rax,%rcx,8), %xmm3
movslq 0x214(%rsp), %rcx
vmovsd 0x61a800(%rax,%rcx,8), %xmm2
movslq 0x210(%rsp), %rcx
vmovsd 0x61a800(%rax,%rcx,8), %xmm1
movslq 0x20c(%rsp), %rcx
vmovsd 0x61a800(%rax,%rcx,8), %xmm0
vmovsd %xmm3, 0x3b8(%rsp)
vmovsd %xmm2, 0x3b0(%rsp)
vmovsd %xmm1, 0x3a8(%rsp)
vmovsd %xmm0, 0x3a0(%rsp)
vmovsd 0x3a8(%rsp), %xmm1
vmovsd 0x3a0(%rsp), %xmm0
vunpcklpd %xmm1, %xmm0, %xmm0 # xmm0 = xmm0[0],xmm1[0]
vmovsd 0x3b8(%rsp), %xmm2
vmovsd 0x3b0(%rsp), %xmm1
vunpcklpd %xmm2, %xmm1, %xmm1 # xmm1 = xmm1[0],xmm2[0]
vmovapd %xmm1, 0x390(%rsp)
vmovapd %xmm0, 0x380(%rsp)
vmovapd 0x380(%rsp), %ymm0
vmovapd %ymm0, 0x1a0(%rsp)
vmovapd 0x1e0(%rsp), %ymm0
vmovapd 0x260(%rsp), %ymm1
vsubpd %ymm1, %ymm0, %ymm0
vmovapd %ymm0, 0x180(%rsp)
vmovapd 0x1c0(%rsp), %ymm0
vmovapd 0x240(%rsp), %ymm1
vsubpd %ymm1, %ymm0, %ymm0
vmovapd %ymm0, 0x160(%rsp)
vmovapd 0x1a0(%rsp), %ymm0
vmovapd 0x220(%rsp), %ymm1
vsubpd %ymm1, %ymm0, %ymm0
vmovapd %ymm0, 0x140(%rsp)
vmovapd 0x180(%rsp), %ymm1
vmovapd 0x160(%rsp), %ymm0
vmulpd %ymm0, %ymm0, %ymm0
vfmadd213pd %ymm0, %ymm1, %ymm1 # ymm1 = (ymm1 * ymm1) + ymm0
vmovapd 0x140(%rsp), %ymm0
vfmadd213pd %ymm1, %ymm0, %ymm0 # ymm0 = (ymm0 * ymm0) + ymm1
vmovapd %ymm0, 0x120(%rsp)
vmovapd 0x120(%rsp), %ymm1
vmulpd %ymm1, %ymm1, %ymm0
vmulpd %ymm1, %ymm0, %ymm0
vmovapd %ymm0, 0x100(%rsp)
vmovapd 0x300(%rsp), %ymm1
vmovapd 0x100(%rsp), %ymm0
vmovapd 0x2e0(%rsp), %ymm2
vpbroadcastq 0x430f(%rip), %ymm3 # 0x8050
vpxor %ymm3, %ymm2, %ymm2
vfmadd213pd %ymm2, %ymm1, %ymm0 # ymm0 = (ymm1 * ymm0) + ymm2
vmovapd 0x100(%rsp), %ymm1
vmulpd 0x100(%rsp), %ymm1, %ymm1
vmulpd 0x120(%rsp), %ymm1, %ymm1
vdivpd %ymm1, %ymm0, %ymm0
vmovapd %ymm0, 0xe0(%rsp)
vmovapd 0x320(%rsp), %ymm0
vsubpd 0x120(%rsp), %ymm0, %ymm0
vmovapd %ymm0, 0xc0(%rsp)
vmovapd 0xe0(%rsp), %ymm2
vmovapd 0x340(%rsp), %ymm1
vmovapd 0xc0(%rsp), %ymm0
vmovapd %ymm2, 0x640(%rsp)
vmovapd %ymm1, 0x620(%rsp)
vmovapd %ymm0, 0x600(%rsp)
vmovapd 0x640(%rsp), %ymm0
vmovapd 0x620(%rsp), %ymm1
vmovapd 0x600(%rsp), %ymm2
vblendvpd %ymm2, %ymm1, %ymm0, %ymm0
vmovapd %ymm0, 0xe0(%rsp)
vmovapd 0xe0(%rsp), %ymm0
vmulpd 0x180(%rsp), %ymm0, %ymm0
vmovapd %ymm0, 0xa0(%rsp)
vmovapd 0xe0(%rsp), %ymm0
vmulpd 0x160(%rsp), %ymm0, %ymm0
vmovapd %ymm0, 0x80(%rsp)
vmovapd 0xe0(%rsp), %ymm0
vmulpd 0x140(%rsp), %ymm0, %ymm0
vmovapd %ymm0, 0x60(%rsp)
leaq 0xa0(%rsp), %rax
movq %rax, 0x58(%rsp)
leaq 0x80(%rsp), %rax
movq %rax, 0x50(%rsp)
leaq 0x60(%rsp), %rax
movq %rax, 0x48(%rsp)
movq 0x58(%rsp), %rax
vmovsd 0x18(%rax), %xmm0
vaddsd 0x2b0(%rsp), %xmm0, %xmm0
vmovsd %xmm0, 0x2b0(%rsp)
movq 0x50(%rsp), %rax
vmovsd 0x18(%rax), %xmm0
vaddsd 0x2a8(%rsp), %xmm0, %xmm0
vmovsd %xmm0, 0x2a8(%rsp)
movq 0x48(%rsp), %rax
vmovsd 0x18(%rax), %xmm0
vaddsd 0x2a0(%rsp), %xmm0, %xmm0
vmovsd %xmm0, 0x2a0(%rsp)
movq 0x58(%rsp), %rax
vmovsd 0x18(%rax), %xmm1
movslq 0x218(%rsp), %rcx
leaq 0xdc1c44(%rip), %rax    # 0xdc5b10
vmovsd (%rax,%rcx,8), %xmm0
vsubsd %xmm1, %xmm0, %xmm0
leaq 0xdc1c34(%rip), %rax    # 0xdc5b10
vmovsd %xmm0, (%rax,%rcx,8)
movq 0x50(%rsp), %rax
vmovsd 0x18(%rax), %xmm1
movslq 0x218(%rsp), %rcx
leaq 0xdc1c16(%rip), %rax    # 0xdc5b10
vmovsd 0x30d400(%rax,%rcx,8), %xmm0
vsubsd %xmm1, %xmm0, %xmm0
leaq 0xdc1c02(%rip), %rax    # 0xdc5b10
vmovsd %xmm0, 0x30d400(%rax,%rcx,8)
movq 0x48(%rsp), %rax
vmovsd 0x18(%rax), %xmm1
movslq 0x218(%rsp), %rcx
leaq 0xdc1be0(%rip), %rax    # 0xdc5b10
vmovsd 0x61a800(%rax,%rcx,8), %xmm0
vsubsd %xmm1, %xmm0, %xmm0
leaq 0xdc1bcc(%rip), %rax    # 0xdc5b10
vmovsd %xmm0, 0x61a800(%rax,%rcx,8)
movq 0x58(%rsp), %rax
vmovsd 0x10(%rax), %xmm0
vaddsd 0x2b0(%rsp), %xmm0, %xmm0
vmovsd %xmm0, 0x2b0(%rsp)
movq 0x50(%rsp), %rax
vmovsd 0x10(%rax), %xmm0
vaddsd 0x2a8(%rsp), %xmm0, %xmm0
vmovsd %xmm0, 0x2a8(%rsp)
movq 0x48(%rsp), %rax
vmovsd 0x10(%rax), %xmm0
vaddsd 0x2a0(%rsp), %xmm0, %xmm0
vmovsd %xmm0, 0x2a0(%rsp)
movq 0x58(%rsp), %rax
vmovsd 0x10(%rax), %xmm1
movslq 0x214(%rsp), %rcx
leaq 0xdc1b56(%rip), %rax    # 0xdc5b10
vmovsd (%rax,%rcx,8), %xmm0
vsubsd %xmm1, %xmm0, %xmm0
leaq 0xdc1b46(%rip), %rax    # 0xdc5b10
vmovsd %xmm0, (%rax,%rcx,8)
movq 0x50(%rsp), %rax
vmovsd 0x10(%rax), %xmm1
movslq 0x214(%rsp), %rcx
leaq 0xdc1b28(%rip), %rax    # 0xdc5b10
vmovsd 0x30d400(%rax,%rcx,8), %xmm0
vsubsd %xmm1, %xmm0, %xmm0
leaq 0xdc1b14(%rip), %rax    # 0xdc5b10
vmovsd %xmm0, 0x30d400(%rax,%rcx,8)
movq 0x48(%rsp), %rax
vmovsd 0x10(%rax), %xmm1
movslq 0x214(%rsp), %rcx
leaq 0xdc1af2(%rip), %rax    # 0xdc5b10
vmovsd 0x61a800(%rax,%rcx,8), %xmm0
vsubsd %xmm1, %xmm0, %xmm0
leaq 0xdc1ade(%rip), %rax    # 0xdc5b10
vmovsd %xmm0, 0x61a800(%rax,%rcx,8)
movq 0x58(%rsp), %rax
vmovsd 0x8(%rax), %xmm0
vaddsd 0x2b0(%rsp), %xmm0, %xmm0
vmovsd %xmm0, 0x2b0(%rsp)
movq 0x50(%rsp), %rax
vmovsd 0x8(%rax), %xmm0
vaddsd 0x2a8(%rsp), %xmm0, %xmm0
vmovsd %xmm0, 0x2a8(%rsp)
movq 0x48(%rsp), %rax
vmovsd 0x8(%rax), %xmm0
vaddsd 0x2a0(%rsp), %xmm0, %xmm0
vmovsd %xmm0, 0x2a0(%rsp)
movq 0x58(%rsp), %rax
vmovsd 0x8(%rax), %xmm1
movslq 0x210(%rsp), %rcx
leaq 0xdc1a68(%rip), %rax    # 0xdc5b10
vmovsd (%rax,%rcx,8), %xmm0
vsubsd %xmm1, %xmm0, %xmm0
leaq 0xdc1a58(%rip), %rax    # 0xdc5b10
vmovsd %xmm0, (%rax,%rcx,8)
movq 0x50(%rsp), %rax
vmovsd 0x8(%rax), %xmm1
movslq 0x210(%rsp), %rcx
leaq 0xdc1a3a(%rip), %rax    # 0xdc5b10
vmovsd 0x30d400(%rax,%rcx,8), %xmm0
vsubsd %xmm1, %xmm0, %xmm0
leaq 0xdc1a26(%rip), %rax    # 0xdc5b10
vmovsd %xmm0, 0x30d400(%rax,%rcx,8)
movq 0x48(%rsp), %rax
vmovsd 0x8(%rax), %xmm1
movslq 0x210(%rsp), %rcx
leaq 0xdc1a04(%rip), %rax    # 0xdc5b10
vmovsd 0x61a800(%rax,%rcx,8), %xmm0
vsubsd %xmm1, %xmm0, %xmm0
leaq 0xdc19f0(%rip), %rax    # 0xdc5b10
vmovsd %xmm0, 0x61a800(%rax,%rcx,8)
movq 0x58(%rsp), %rax
vmovsd (%rax), %xmm0
vaddsd 0x2b0(%rsp), %xmm0, %xmm0
vmovsd %xmm0, 0x2b0(%rsp)
movq 0x50(%rsp), %rax
vmovsd (%rax), %xmm0
vaddsd 0x2a8(%rsp), %xmm0, %xmm0
vmovsd %xmm0, 0x2a8(%rsp)
movq 0x48(%rsp), %rax
vmovsd (%rax), %xmm0
vaddsd 0x2a0(%rsp), %xmm0, %xmm0
vmovsd %xmm0, 0x2a0(%rsp)
movq 0x58(%rsp), %rax
vmovsd (%rax), %xmm1
movslq 0x20c(%rsp), %rcx
leaq 0xdc197e(%rip), %rax    # 0xdc5b10
vmovsd (%rax,%rcx,8), %xmm0
vsubsd %xmm1, %xmm0, %xmm0
leaq 0xdc196e(%rip), %rax    # 0xdc5b10
vmovsd %xmm0, (%rax,%rcx,8)
movq 0x50(%rsp), %rax
vmovsd (%rax), %xmm1
movslq 0x20c(%rsp), %rcx
leaq 0xdc1951(%rip), %rax    # 0xdc5b10
vmovsd 0x30d400(%rax,%rcx,8), %xmm0
vsubsd %xmm1, %xmm0, %xmm0
leaq 0xdc193d(%rip), %rax    # 0xdc5b10
vmovsd %xmm0, 0x30d400(%rax,%rcx,8)
movq 0x48(%rsp), %rax
vmovsd (%rax), %xmm1
movslq 0x20c(%rsp), %rcx
leaq 0xdc191c(%rip), %rax    # 0xdc5b10
vmovsd 0x61a800(%rax,%rcx,8), %xmm0
vsubsd %xmm1, %xmm0, %xmm0
leaq 0xdc1908(%rip), %rax    # 0xdc5b10
vmovsd %xmm0, 0x61a800(%rax,%rcx,8)
movl 0x21c(%rsp), %eax
addl $0x4, %eax
movl %eax, 0x21c(%rsp)
jmp 0x39a8
vmovsd 0x2b0(%rsp), %xmm0
movslq 0x2dc(%rsp), %rcx
leaq 0xdc18d1(%rip), %rax    # 0xdc5b10
vaddsd (%rax,%rcx,8), %xmm0, %xmm0
leaq 0xdc18c5(%rip), %rax    # 0xdc5b10
vmovsd %xmm0, (%rax,%rcx,8)
vmovsd 0x2a8(%rsp), %xmm0
movslq 0x2dc(%rsp), %rcx
leaq 0xdc18a8(%rip), %rax    # 0xdc5b10
vaddsd 0x30d400(%rax,%rcx,8), %xmm0, %xmm0
leaq 0xdc1898(%rip), %rax    # 0xdc5b10
vmovsd %xmm0, 0x30d400(%rax,%rcx,8)
vmovsd 0x2a0(%rsp), %xmm0
movslq 0x2dc(%rsp), %rcx
leaq 0xdc1877(%rip), %rax    # 0xdc5b10
vaddsd 0x61a800(%rax,%rcx,8), %xmm0, %xmm0
leaq 0xdc1867(%rip), %rax    # 0xdc5b10
vmovsd %xmm0, 0x61a800(%rax,%rcx,8)
movl 0x2bc(%rsp), %eax
movl $0x4, %ecx
cltd
idivl %ecx
shll $0x2, %eax
movl %eax, 0x44(%rsp)
movl 0x44(%rsp), %eax
cmpl 0x2bc(%rsp), %eax
jge 0x4597
movl 0x29c(%rsp), %eax
addl 0x44(%rsp), %eax
movslq %eax, %rcx
leaq 0x7a17e32(%rip), %rax   # 0x7a1c120
movl (%rax,%rcx,4), %eax
movl %eax, 0x40(%rsp)
movslq 0x40(%rsp), %rcx
leaq 0x18c80f(%rip), %rax    # 0x190b10
vmovsd (%rax,%rcx,8), %xmm0
vsubsd 0x2d0(%rsp), %xmm0, %xmm0
vmovsd %xmm0, 0x38(%rsp)
movslq 0x40(%rsp), %rcx
leaq 0x18c7ef(%rip), %rax    # 0x190b10
vmovsd 0x30d400(%rax,%rcx,8), %xmm0
vsubsd 0x2c8(%rsp), %xmm0, %xmm0
vmovsd %xmm0, 0x30(%rsp)
movslq 0x40(%rsp), %rcx
leaq 0x18c7cb(%rip), %rax    # 0x190b10
vmovsd 0x61a800(%rax,%rcx,8), %xmm0
vsubsd 0x2c0(%rsp), %xmm0, %xmm0
vmovsd %xmm0, 0x28(%rsp)
vmovsd 0x38(%rsp), %xmm0
vmovsd 0x38(%rsp), %xmm2
vmovsd 0x30(%rsp), %xmm1
vmulsd 0x30(%rsp), %xmm1, %xmm1
vfmadd213sd %xmm1, %xmm0, %xmm2 # xmm2 = (xmm0 * xmm2) + xmm1
vmovsd 0x28(%rsp), %xmm1
vmovsd 0x28(%rsp), %xmm0
vfmadd213sd %xmm2, %xmm1, %xmm0 # xmm0 = (xmm1 * xmm0) + xmm2
vmovsd %xmm0, 0x20(%rsp)
vmovsd 0x20(%rsp), %xmm0
vmovsd 0x3c91(%rip), %xmm1     # 0x8030
vucomisd %xmm1, %xmm0
jbe 0x43aa
jmp 0x4587
vmovsd 0x20(%rsp), %xmm0
vmulsd 0x20(%rsp), %xmm0, %xmm0
vmulsd 0x20(%rsp), %xmm0, %xmm0
vmovsd %xmm0, 0x18(%rsp)
vmovsd 0x18(%rsp), %xmm1
vmovsd 0x3c70(%rip), %xmm2     # 0x8040
vmovsd 0x3c70(%rip), %xmm0     # 0x8048
vfmadd213sd %xmm2, %xmm1, %xmm0 # xmm0 = (xmm1 * xmm0) + xmm2
vmovsd 0x18(%rsp), %xmm1
vmulsd 0x18(%rsp), %xmm1, %xmm1
vmulsd 0x20(%rsp), %xmm1, %xmm1
vdivsd %xmm1, %xmm0, %xmm0
vmovsd 0x3c3d(%rip), %xmm1     # 0x8038
vmulsd %xmm1, %xmm0, %xmm0
vmovsd %xmm0, 0x10(%rsp)
vmovsd 0x10(%rsp), %xmm1
vmovsd 0x38(%rsp), %xmm0
movslq 0x2dc(%rsp), %rcx
leaq 0xdc16f0(%rip), %rax    # 0xdc5b10
vmovsd (%rax,%rcx,8), %xmm2
vfmadd213sd %xmm2, %xmm1, %xmm0 # xmm0 = (xmm1 * xmm0) + xmm2
leaq 0xdc16df(%rip), %rax    # 0xdc5b10
vmovsd %xmm0, (%rax,%rcx,8)
vmovsd 0x10(%rsp), %xmm1
vmovsd 0x30(%rsp), %xmm0
movslq 0x2dc(%rsp), %rcx
leaq 0xdc16bf(%rip), %rax    # 0xdc5b10
vmovsd 0x30d400(%rax,%rcx,8), %xmm2
vfmadd213sd %xmm2, %xmm1, %xmm0 # xmm0 = (xmm1 * xmm0) + xmm2
leaq 0xdc16aa(%rip), %rax    # 0xdc5b10
vmovsd %xmm0, 0x30d400(%rax,%rcx,8)
vmovsd 0x10(%rsp), %xmm1
vmovsd 0x28(%rsp), %xmm0
movslq 0x2dc(%rsp), %rcx
leaq 0xdc1686(%rip), %rax    # 0xdc5b10
vmovsd 0x61a800(%rax,%rcx,8), %xmm2
vfmadd213sd %xmm2, %xmm1, %xmm0 # xmm0 = (xmm1 * xmm0) + xmm2
leaq 0xdc1671(%rip), %rax    # 0xdc5b10
vmovsd %xmm0, 0x61a800(%rax,%rcx,8)
vmovsd 0x10(%rsp), %xmm1
vmovsd 0x38(%rsp), %xmm0
movslq 0x40(%rsp), %rcx
leaq 0xdc1650(%rip), %rax    # 0xdc5b10
vmovsd (%rax,%rcx,8), %xmm2
vmovq %xmm1, %rax
movabsq $-0x8000000000000000, %rdx # imm = 0x8000000000000000
xorq %rdx, %rax
vmovq %rax, %xmm1
vfmadd213sd %xmm2, %xmm1, %xmm0 # xmm0 = (xmm1 * xmm0) + xmm2
leaq 0xdc1628(%rip), %rax    # 0xdc5b10
vmovsd %xmm0, (%rax,%rcx,8)
vmovsd 0x10(%rsp), %xmm1
vmovsd 0x30(%rsp), %xmm0
movslq 0x40(%rsp), %rcx
leaq 0xdc160b(%rip), %rax    # 0xdc5b10
vmovsd 0x30d400(%rax,%rcx,8), %xmm2
vmovq %xmm1, %rax
movabsq $-0x8000000000000000, %rdx # imm = 0x8000000000000000
xorq %rdx, %rax
vmovq %rax, %xmm1
vfmadd213sd %xmm2, %xmm1, %xmm0 # xmm0 = (xmm1 * xmm0) + xmm2
leaq 0xdc15df(%rip), %rax    # 0xdc5b10
vmovsd %xmm0, 0x30d400(%rax,%rcx,8)
vmovsd 0x10(%rsp), %xmm1
vmovsd 0x28(%rsp), %xmm0
movslq 0x40(%rsp), %rcx
leaq 0xdc15be(%rip), %rax    # 0xdc5b10
vmovsd 0x61a800(%rax,%rcx,8), %xmm2
vmovq %xmm1, %rax
movabsq $-0x8000000000000000, %rdx # imm = 0x8000000000000000
xorq %rdx, %rax
vmovq %rax, %xmm1
vfmadd213sd %xmm2, %xmm1, %xmm0 # xmm0 = (xmm1 * xmm0) + xmm2
leaq 0xdc1592(%rip), %rax    # 0xdc5b10
vmovsd %xmm0, 0x61a800(%rax,%rcx,8)
movl 0x44(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x44(%rsp)
jmp 0x42c8
jmp 0x4599
movl 0x2dc(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x2dc(%rsp)
jmp 0x3756
movq %rbp, %rsp
popq %rbp
vzeroupper
retq
nopw (%rax,%rax)