// File: kaityo256[P]lj_simd/force_aos.cpp
// Function: force_sorted_z_avx2()
void
force_sorted_z_avx2(void) {
  const v4df vzero = _mm256_set1_pd(0.0);
  const v4df vcl2 = _mm256_set1_pd(CL2);
  const v4df vc24 = _mm256_set1_pd(24 * dt);
  const v4df vc48 = _mm256_set1_pd(48 * dt);
  const int pn = particle_number;
  for (int i = 0; i < pn; i++) {
    const v4df vqi = _mm256_load_pd((double *)(z + i));
    v4df vpi = _mm256_load_pd((double *)(&z[i][PX]));
    const int np = number_of_partners[i];
    const int kp = pointer[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];
      v4df vqj_1 = _mm256_load_pd((double *)(&z[j_1][X]));
      v4df vqj_2 = _mm256_load_pd((double *)(&z[j_2][X]));
      v4df vqj_3 = _mm256_load_pd((double *)(&z[j_3][X]));
      v4df vqj_4 = _mm256_load_pd((double *)(&z[j_4][X]));

      v4df vdq_1 = (vqj_1 - vqi);
      v4df vdq_2 = (vqj_2 - vqi);
      v4df vdq_3 = (vqj_3 - vqi);
      v4df vdq_4 = (vqj_4 - vqi);

      v4df tmp0 = _mm256_unpacklo_pd(vdq_1, vdq_2);
      v4df tmp1 = _mm256_unpackhi_pd(vdq_1, vdq_2);
      v4df tmp2 = _mm256_unpacklo_pd(vdq_3, vdq_4);
      v4df tmp3 = _mm256_unpackhi_pd(vdq_3, vdq_4);

      v4df vdx = _mm256_permute2f128_pd(tmp0, tmp2, 0x20);
      v4df vdy = _mm256_permute2f128_pd(tmp1, tmp3, 0x20);
      v4df vdz = _mm256_permute2f128_pd(tmp0, tmp2, 0x31);

      v4df vr2 = vdx * vdx + vdy * vdy + vdz * vdz;
      v4df vr6 = vr2 * vr2 * vr2;
      v4df vdf = (vc24 * vr6 - vc48) / (vr6 * vr6 * vr2);
      v4df mask = vcl2 - vr2;
      vdf = _mm256_blendv_pd(vdf, vzero, mask);

      v4df vdf_1 = _mm256_permute4x64_pd(vdf, 0);
      v4df vdf_2 = _mm256_permute4x64_pd(vdf, 85);
      v4df vdf_3 = _mm256_permute4x64_pd(vdf, 170);
      v4df vdf_4 = _mm256_permute4x64_pd(vdf, 255);

      v4df vpj_1 = _mm256_load_pd((double *)(&z[j_1][PX]));
      v4df vpj_2 = _mm256_load_pd((double *)(&z[j_2][PX]));
      v4df vpj_3 = _mm256_load_pd((double *)(&z[j_3][PX]));
      v4df vpj_4 = _mm256_load_pd((double *)(&z[j_4][PX]));

      vpi += vdq_1 * vdf_1;
      vpi += vdq_2 * vdf_2;
      vpi += vdq_3 * vdf_3;
      vpi += vdq_4 * vdf_4;

      vpj_1 -= vdq_1 * vdf_1;
      vpj_2 -= vdq_2 * vdf_2;
      vpj_3 -= vdq_3 * vdf_3;
      vpj_4 -= vdq_4 * vdf_4;

      _mm256_store_pd((double *)(&z[j_1][PX]), vpj_1);
      _mm256_store_pd((double *)(&z[j_2][PX]), vpj_2);
      _mm256_store_pd((double *)(&z[j_3][PX]), vpj_3);
      _mm256_store_pd((double *)(&z[j_4][PX]), vpj_4);
    }
    _mm256_store_pd((double *)(&z[i][PX]), vpi);
    for (int k = (np / 4) * 4; k < np; k++) {
      const int j = sorted_list[kp + k];
      double dx = z[j][X] - z[i][X];
      double dy = z[j][Y] - z[i][Y];
      double dz = z[j][Z] - z[i][Z];
      double r2 = (dx * dx + dy * dy + dz * dz);
      double r6 = r2 * r2 * r2;
      double df = ((24.0 * r6 - 48.0) / (r6 * r6 * r2)) * dt;
      if (r2 > CL2) df = 0.0;
      z[i][PX] += df * dx;
      z[i][PY] += df * dy;
      z[i][PZ] += df * dz;
      z[j][PX] -= df * dx;
      z[j][PY] -= df * dy;
      z[j][PZ] -= df * dz;
    }
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
andq $-0x20, %rsp
subq $0x900, %rsp            # imm = 0x900
movq $0x0, 0x4e8(%rsp)
vmovsd 0x4e8(%rsp), %xmm0
vmovsd %xmm0, 0x818(%rsp)
vmovsd %xmm0, 0x810(%rsp)
vmovsd %xmm0, 0x808(%rsp)
vmovsd %xmm0, 0x800(%rsp)
vmovsd 0x808(%rsp), %xmm1
vmovsd 0x800(%rsp), %xmm0
vunpcklpd %xmm1, %xmm0, %xmm0 # xmm0 = xmm0[0],xmm1[0]
vmovsd 0x818(%rsp), %xmm2
vmovsd 0x810(%rsp), %xmm1
vunpcklpd %xmm2, %xmm1, %xmm1 # xmm1 = xmm1[0],xmm2[0]
vmovapd %xmm1, 0x7f0(%rsp)
vmovapd %xmm0, 0x7e0(%rsp)
vmovapd 0x7e0(%rsp), %ymm0
vmovapd %ymm0, 0x4a0(%rsp)
movabsq $0x4022000000000000, %rax # imm = 0x4022000000000000
movq %rax, 0x4e0(%rsp)
vmovsd 0x4e0(%rsp), %xmm0
vmovsd %xmm0, 0x858(%rsp)
vmovsd %xmm0, 0x850(%rsp)
vmovsd %xmm0, 0x848(%rsp)
vmovsd %xmm0, 0x840(%rsp)
vmovsd 0x848(%rsp), %xmm1
vmovsd 0x840(%rsp), %xmm0
vunpcklpd %xmm1, %xmm0, %xmm0 # xmm0 = xmm0[0],xmm1[0]
vmovsd 0x858(%rsp), %xmm2
vmovsd 0x850(%rsp), %xmm1
vunpcklpd %xmm2, %xmm1, %xmm1 # xmm1 = xmm1[0],xmm2[0]
vmovapd %xmm1, 0x830(%rsp)
vmovapd %xmm0, 0x820(%rsp)
vmovapd 0x820(%rsp), %ymm0
vmovapd %ymm0, 0x480(%rsp)
movabsq $0x3f989374bc6a7efa, %rax # imm = 0x3F989374BC6A7EFA
movq %rax, 0x4d8(%rsp)
vmovsd 0x4d8(%rsp), %xmm0
vmovsd %xmm0, 0x898(%rsp)
vmovsd %xmm0, 0x890(%rsp)
vmovsd %xmm0, 0x888(%rsp)
vmovsd %xmm0, 0x880(%rsp)
vmovsd 0x888(%rsp), %xmm1
vmovsd 0x880(%rsp), %xmm0
vunpcklpd %xmm1, %xmm0, %xmm0 # xmm0 = xmm0[0],xmm1[0]
vmovsd 0x898(%rsp), %xmm2
vmovsd 0x890(%rsp), %xmm1
vunpcklpd %xmm2, %xmm1, %xmm1 # xmm1 = xmm1[0],xmm2[0]
vmovapd %xmm1, 0x870(%rsp)
vmovapd %xmm0, 0x860(%rsp)
vmovapd 0x860(%rsp), %ymm0
vmovapd %ymm0, 0x460(%rsp)
movabsq $0x3fa89374bc6a7efa, %rax # imm = 0x3FA89374BC6A7EFA
movq %rax, 0x4d0(%rsp)
vmovsd 0x4d0(%rsp), %xmm0
vmovsd %xmm0, 0x8e8(%rsp)
vmovsd %xmm0, 0x8e0(%rsp)
vmovsd %xmm0, 0x8d8(%rsp)
vmovsd %xmm0, 0x8d0(%rsp)
vmovsd 0x8e8(%rsp), %xmm1
vmovsd 0x8e0(%rsp), %xmm0
vunpcklpd %xmm1, %xmm0, %xmm1 # xmm1 = xmm0[0],xmm1[0]
vmovsd 0x8d8(%rsp), %xmm2
vmovsd 0x8d0(%rsp), %xmm0
vunpcklpd %xmm2, %xmm0, %xmm2 # xmm2 = xmm0[0],xmm2[0]
vmovaps %xmm2, %xmm0
vinsertf128 $0x1, %xmm1, %ymm0, %ymm0
vmovapd %ymm0, 0x8a0(%rsp)
vmovapd 0x8a0(%rsp), %ymm0
vmovapd %ymm0, 0x440(%rsp)
movl 0x32602b4(%rip), %eax   # 0x3266b80
movl %eax, 0x43c(%rsp)
movl $0x0, 0x438(%rsp)
movl 0x438(%rsp), %eax
cmpl 0x43c(%rsp), %eax
jge 0x74f5
movslq 0x438(%rsp), %rcx
leaq 0x19f627f(%rip), %rax   # 0x19fcb80
shlq $0x6, %rcx
addq %rcx, %rax
movq %rax, 0x538(%rsp)
movq 0x538(%rsp), %rax
vmovapd (%rax), %ymm0
vmovapd %ymm0, 0x400(%rsp)
movslq 0x438(%rsp), %rcx
leaq 0x19f624c(%rip), %rax   # 0x19fcb80
shlq $0x6, %rcx
addq %rcx, %rax
addq $0x20, %rax
movq %rax, 0x530(%rsp)
movq 0x530(%rsp), %rax
vmovapd (%rax), %ymm0
vmovapd %ymm0, 0x3e0(%rsp)
movslq 0x438(%rsp), %rcx
leaq 0x3260225(%rip), %rax   # 0x3266b90
movl (%rax,%rcx,4), %eax
movl %eax, 0x3dc(%rsp)
movslq 0x438(%rsp), %rcx
leaq 0x8f7440c(%rip), %rax   # 0x8f7ad90
movl (%rax,%rcx,4), %eax
movl %eax, 0x3d8(%rsp)
movl $0x0, 0x3d4(%rsp)
movl 0x3d4(%rsp), %eax
movl %eax, 0x24(%rsp)
movl 0x3dc(%rsp), %eax
movl $0x4, %ecx
cltd
idivl %ecx
movl %eax, %ecx
movl 0x24(%rsp), %eax
shll $0x2, %ecx
cmpl %ecx, %eax
jge 0x7189
movl 0x3d8(%rsp), %eax
movl 0x3d4(%rsp), %ecx
addl %ecx, %eax
movslq %eax, %rcx
leaq 0x90fadb2(%rip), %rax   # 0x9101790
movl (%rax,%rcx,4), %ecx
movl %ecx, 0x3d0(%rsp)
movl 0x3d8(%rsp), %ecx
movl 0x3d4(%rsp), %edx
addl %edx, %ecx
movslq %ecx, %rcx
movl 0x4(%rax,%rcx,4), %ecx
movl %ecx, 0x3cc(%rsp)
movl 0x3d8(%rsp), %ecx
movl 0x3d4(%rsp), %edx
addl %edx, %ecx
movslq %ecx, %rcx
movl 0x8(%rax,%rcx,4), %ecx
movl %ecx, 0x3c8(%rsp)
movl 0x3d8(%rsp), %ecx
movl 0x3d4(%rsp), %edx
addl %edx, %ecx
movslq %ecx, %rcx
movl 0xc(%rax,%rcx,4), %eax
movl %eax, 0x3c4(%rsp)
movslq 0x3d0(%rsp), %rdx
shlq $0x6, %rdx
leaq 0x19f612b(%rip), %rcx   # 0x19fcb80
movq %rcx, 0x18(%rsp)
movq %rcx, %rax
addq %rdx, %rax
movq %rax, 0x528(%rsp)
movq 0x528(%rsp), %rax
vmovapd (%rax), %ymm0
vmovapd %ymm0, 0x3a0(%rsp)
movslq 0x3cc(%rsp), %rdx
shlq $0x6, %rdx
movq %rcx, %rax
addq %rdx, %rax
movq %rax, 0x520(%rsp)
movq 0x520(%rsp), %rax
vmovapd (%rax), %ymm0
vmovapd %ymm0, 0x380(%rsp)
movslq 0x3c8(%rsp), %rdx
shlq $0x6, %rdx
movq %rcx, %rax
addq %rdx, %rax
movq %rax, 0x518(%rsp)
movq 0x518(%rsp), %rax
vmovapd (%rax), %ymm0
vmovapd %ymm0, 0x360(%rsp)
movslq 0x3c4(%rsp), %rdx
shlq $0x6, %rdx
movq %rcx, %rax
addq %rdx, %rax
movq %rax, 0x510(%rsp)
movq 0x510(%rsp), %rax
vmovapd (%rax), %ymm0
vmovapd %ymm0, 0x340(%rsp)
vmovapd 0x3a0(%rsp), %ymm0
vmovapd 0x400(%rsp), %ymm1
vsubpd %ymm1, %ymm0, %ymm0
vmovapd %ymm0, 0x320(%rsp)
vmovapd 0x380(%rsp), %ymm0
vmovapd 0x400(%rsp), %ymm1
vsubpd %ymm1, %ymm0, %ymm0
vmovapd %ymm0, 0x300(%rsp)
vmovapd 0x360(%rsp), %ymm0
vmovapd 0x400(%rsp), %ymm1
vsubpd %ymm1, %ymm0, %ymm0
vmovapd %ymm0, 0x2e0(%rsp)
vmovapd 0x340(%rsp), %ymm0
vmovapd 0x400(%rsp), %ymm1
vsubpd %ymm1, %ymm0, %ymm0
vmovapd %ymm0, 0x2c0(%rsp)
vmovapd 0x320(%rsp), %ymm1
vmovapd 0x300(%rsp), %ymm0
vmovapd %ymm1, 0x5a0(%rsp)
vmovapd %ymm0, 0x580(%rsp)
vmovapd 0x5a0(%rsp), %ymm0
vmovapd 0x580(%rsp), %ymm1
vunpcklpd %ymm1, %ymm0, %ymm0 # ymm0 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]
vmovapd %ymm0, 0x2a0(%rsp)
vmovapd 0x320(%rsp), %ymm1
vmovapd 0x300(%rsp), %ymm0
vmovapd %ymm1, 0x620(%rsp)
vmovapd %ymm0, 0x600(%rsp)
vmovapd 0x620(%rsp), %ymm0
vmovapd 0x600(%rsp), %ymm1
vunpckhpd %ymm1, %ymm0, %ymm0 # ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]
vmovapd %ymm0, 0x280(%rsp)
vmovapd 0x2e0(%rsp), %ymm1
vmovapd 0x2c0(%rsp), %ymm0
vmovapd %ymm1, 0x560(%rsp)
vmovapd %ymm0, 0x540(%rsp)
vmovapd 0x560(%rsp), %ymm0
vmovapd 0x540(%rsp), %ymm1
vunpcklpd %ymm1, %ymm0, %ymm0 # ymm0 = ymm0[0],ymm1[0],ymm0[2],ymm1[2]
vmovapd %ymm0, 0x260(%rsp)
vmovapd 0x2e0(%rsp), %ymm1
vmovapd 0x2c0(%rsp), %ymm0
vmovapd %ymm1, 0x5e0(%rsp)
vmovapd %ymm0, 0x5c0(%rsp)
vmovapd 0x5e0(%rsp), %ymm0
vmovapd 0x5c0(%rsp), %ymm1
vunpckhpd %ymm1, %ymm0, %ymm0 # ymm0 = ymm0[1],ymm1[1],ymm0[3],ymm1[3]
vmovapd %ymm0, 0x240(%rsp)
vmovapd 0x2a0(%rsp), %ymm0
vmovapd 0x260(%rsp), %ymm1
vperm2f128 $0x20, %ymm1, %ymm0, %ymm0 # ymm0 = ymm0[0,1],ymm1[0,1]
vmovapd %ymm0, 0x220(%rsp)
vmovapd 0x280(%rsp), %ymm0
vmovapd 0x240(%rsp), %ymm1
vperm2f128 $0x20, %ymm1, %ymm0, %ymm0 # ymm0 = ymm0[0,1],ymm1[0,1]
vmovapd %ymm0, 0x200(%rsp)
vmovapd 0x2a0(%rsp), %ymm0
vmovapd 0x260(%rsp), %ymm1
vperm2f128 $0x31, %ymm1, %ymm0, %ymm0 # ymm0 = ymm0[2,3],ymm1[2,3]
vmovapd %ymm0, 0x1e0(%rsp)
vmovapd 0x220(%rsp), %ymm1
vmovapd 0x200(%rsp), %ymm0
vmulpd %ymm0, %ymm0, %ymm0
vfmadd213pd %ymm0, %ymm1, %ymm1 # ymm1 = (ymm1 * ymm1) + ymm0
vmovapd 0x1e0(%rsp), %ymm0
vfmadd213pd %ymm1, %ymm0, %ymm0 # ymm0 = (ymm0 * ymm0) + ymm1
vmovapd %ymm0, 0x1c0(%rsp)
vmovapd 0x1c0(%rsp), %ymm1
vmulpd %ymm1, %ymm1, %ymm0
vmulpd %ymm1, %ymm0, %ymm0
vmovapd %ymm0, 0x1a0(%rsp)
vmovapd 0x460(%rsp), %ymm2
vmovapd 0x1a0(%rsp), %ymm1
vmovapd 0x440(%rsp), %ymm3
vmovaps %ymm1, %ymm0
vfmsub213pd %ymm3, %ymm2, %ymm0 # ymm0 = (ymm2 * ymm0) - ymm3
vmulpd %ymm1, %ymm1, %ymm1
vmovapd 0x1c0(%rsp), %ymm2
vmulpd %ymm2, %ymm1, %ymm1
vdivpd %ymm1, %ymm0, %ymm0
vmovapd %ymm0, 0x180(%rsp)
vmovapd 0x480(%rsp), %ymm0
vmovapd 0x1c0(%rsp), %ymm1
vsubpd %ymm1, %ymm0, %ymm0
vmovapd %ymm0, 0x160(%rsp)
vmovapd 0x180(%rsp), %ymm2
vmovapd 0x4a0(%rsp), %ymm1
vmovapd 0x160(%rsp), %ymm0
vmovapd %ymm2, 0x680(%rsp)
vmovapd %ymm1, 0x660(%rsp)
vmovapd %ymm0, 0x640(%rsp)
vmovapd 0x680(%rsp), %ymm0
vmovapd 0x660(%rsp), %ymm1
vmovdqa 0x640(%rsp), %ymm2
vblendvpd %ymm2, %ymm1, %ymm0, %ymm0
vmovapd %ymm0, 0x180(%rsp)
vbroadcastsd 0x180(%rsp), %ymm0
vmovapd %ymm0, 0x140(%rsp)
vbroadcastsd 0x188(%rsp), %ymm0
vmovapd %ymm0, 0x120(%rsp)
vbroadcastsd 0x190(%rsp), %ymm0
vmovapd %ymm0, 0x100(%rsp)
vbroadcastsd 0x198(%rsp), %ymm0
vmovapd %ymm0, 0xe0(%rsp)
movslq 0x3d0(%rsp), %rax
shlq $0x6, %rax
leaq 0x20(%rax,%rcx), %rax
movq %rax, 0x508(%rsp)
movq 0x508(%rsp), %rax
vmovapd (%rax), %ymm0
vmovapd %ymm0, 0xc0(%rsp)
movslq 0x3cc(%rsp), %rax
shlq $0x6, %rax
leaq 0x20(%rax,%rcx), %rax
movq %rax, 0x500(%rsp)
movq 0x500(%rsp), %rax
vmovapd (%rax), %ymm0
vmovapd %ymm0, 0xa0(%rsp)
movslq 0x3c8(%rsp), %rax
shlq $0x6, %rax
leaq 0x20(%rax,%rcx), %rax
movq %rax, 0x4f8(%rsp)
movq 0x4f8(%rsp), %rax
vmovapd (%rax), %ymm0
vmovapd %ymm0, 0x80(%rsp)
movslq 0x3c4(%rsp), %rax
shlq $0x6, %rax
leaq 0x20(%rax,%rcx), %rax
movq %rax, 0x4f0(%rsp)
movq 0x4f0(%rsp), %rax
vmovapd (%rax), %ymm0
vmovapd %ymm0, 0x60(%rsp)
vmovapd 0x320(%rsp), %ymm1
vmovapd 0x140(%rsp), %ymm0
vmovapd 0x3e0(%rsp), %ymm2
vfmadd213pd %ymm2, %ymm1, %ymm0 # ymm0 = (ymm1 * ymm0) + ymm2
vmovapd %ymm0, 0x3e0(%rsp)
vmovapd 0x300(%rsp), %ymm1
vmovapd 0x120(%rsp), %ymm0
vmovapd 0x3e0(%rsp), %ymm2
vfmadd213pd %ymm2, %ymm1, %ymm0 # ymm0 = (ymm1 * ymm0) + ymm2
vmovapd %ymm0, 0x3e0(%rsp)
vmovapd 0x2e0(%rsp), %ymm1
vmovapd 0x100(%rsp), %ymm0
vmovapd 0x3e0(%rsp), %ymm2
vfmadd213pd %ymm2, %ymm1, %ymm0 # ymm0 = (ymm1 * ymm0) + ymm2
vmovapd %ymm0, 0x3e0(%rsp)
vmovapd 0x2c0(%rsp), %ymm1
vmovapd 0xe0(%rsp), %ymm0
vmovapd 0x3e0(%rsp), %ymm2
vfmadd213pd %ymm2, %ymm1, %ymm0 # ymm0 = (ymm1 * ymm0) + ymm2
vmovapd %ymm0, 0x3e0(%rsp)
vmovapd 0x320(%rsp), %ymm1
vmovapd 0x140(%rsp), %ymm0
vmovapd 0xc0(%rsp), %ymm2
vfnmadd213pd %ymm2, %ymm1, %ymm0 # ymm0 = -(ymm1 * ymm0) + ymm2
vmovapd %ymm0, 0xc0(%rsp)
vmovapd 0x300(%rsp), %ymm1
vmovapd 0x120(%rsp), %ymm0
vmovapd 0xa0(%rsp), %ymm2
vfnmadd213pd %ymm2, %ymm1, %ymm0 # ymm0 = -(ymm1 * ymm0) + ymm2
vmovapd %ymm0, 0xa0(%rsp)
vmovapd 0x2e0(%rsp), %ymm1
vmovapd 0x100(%rsp), %ymm0
vmovapd 0x80(%rsp), %ymm2
vfnmadd213pd %ymm2, %ymm1, %ymm0 # ymm0 = -(ymm1 * ymm0) + ymm2
vmovapd %ymm0, 0x80(%rsp)
vmovapd 0x2c0(%rsp), %ymm1
vmovapd 0xe0(%rsp), %ymm0
vmovapd 0x60(%rsp), %ymm2
vpbroadcastq 0x300d(%rip), %ymm3 # 0xa050
vpxor %ymm3, %ymm1, %ymm1
vfmadd213pd %ymm2, %ymm1, %ymm0 # ymm0 = (ymm1 * ymm0) + ymm2
vmovapd %ymm0, 0x60(%rsp)
movslq 0x3d0(%rsp), %rcx
leaq 0x19f5b1f(%rip), %rax   # 0x19fcb80
shlq $0x6, %rcx
addq %rcx, %rax
addq $0x20, %rax
vmovapd 0xc0(%rsp), %ymm0
movq %rax, 0x7d8(%rsp)
vmovapd %ymm0, 0x7a0(%rsp)
vmovapd 0x7a0(%rsp), %ymm0
movq 0x7d8(%rsp), %rax
vmovapd %ymm0, (%rax)
movslq 0x3cc(%rsp), %rcx
leaq 0x19f5ad6(%rip), %rax   # 0x19fcb80
shlq $0x6, %rcx
addq %rcx, %rax
addq $0x20, %rax
vmovapd 0xa0(%rsp), %ymm0
movq %rax, 0x798(%rsp)
vmovapd %ymm0, 0x760(%rsp)
vmovapd 0x760(%rsp), %ymm0
movq 0x798(%rsp), %rax
vmovapd %ymm0, (%rax)
movslq 0x3c8(%rsp), %rcx
leaq 0x19f5a8d(%rip), %rax   # 0x19fcb80
shlq $0x6, %rcx
addq %rcx, %rax
addq $0x20, %rax
vmovapd 0x80(%rsp), %ymm0
movq %rax, 0x758(%rsp)
vmovapd %ymm0, 0x720(%rsp)
vmovapd 0x720(%rsp), %ymm0
movq 0x758(%rsp), %rax
vmovapd %ymm0, (%rax)
movslq 0x3c4(%rsp), %rcx
leaq 0x19f5a44(%rip), %rax   # 0x19fcb80
shlq $0x6, %rcx
addq %rcx, %rax
addq $0x20, %rax
vmovapd 0x60(%rsp), %ymm0
movq %rax, 0x718(%rsp)
vmovapd %ymm0, 0x6e0(%rsp)
vmovapd 0x6e0(%rsp), %ymm0
movq 0x718(%rsp), %rax
vmovapd %ymm0, (%rax)
movl 0x3d4(%rsp), %eax
addl $0x4, %eax
movl %eax, 0x3d4(%rsp)
jmp 0x6999
movslq 0x438(%rsp), %rcx
leaq 0x19f59e8(%rip), %rax   # 0x19fcb80
shlq $0x6, %rcx
addq %rcx, %rax
addq $0x20, %rax
vmovapd 0x3e0(%rsp), %ymm0
movq %rax, 0x6d8(%rsp)
vmovapd %ymm0, 0x6a0(%rsp)
vmovapd 0x6a0(%rsp), %ymm0
movq 0x6d8(%rsp), %rax
vmovapd %ymm0, (%rax)
movl 0x3dc(%rsp), %eax
movl $0x4, %ecx
cltd
idivl %ecx
shll $0x2, %eax
movl %eax, 0x5c(%rsp)
movl 0x5c(%rsp), %eax
cmpl 0x3dc(%rsp), %eax
jge 0x74dd
movl 0x3d8(%rsp), %eax
addl 0x5c(%rsp), %eax
movslq %eax, %rcx
leaq 0x90fa582(%rip), %rax   # 0x9101790
movl (%rax,%rcx,4), %eax
movl %eax, 0x58(%rsp)
movslq 0x58(%rsp), %rcx
leaq 0x19f595f(%rip), %rax   # 0x19fcb80
shlq $0x6, %rcx
addq %rcx, %rax
vmovsd (%rax), %xmm0
movslq 0x438(%rsp), %rcx
leaq 0x19f5945(%rip), %rax   # 0x19fcb80
shlq $0x6, %rcx
addq %rcx, %rax
vsubsd (%rax), %xmm0, %xmm0
vmovsd %xmm0, 0x50(%rsp)
movslq 0x58(%rsp), %rcx
leaq 0x19f5928(%rip), %rax   # 0x19fcb80
shlq $0x6, %rcx
addq %rcx, %rax
vmovsd 0x8(%rax), %xmm0
movslq 0x438(%rsp), %rcx
leaq 0x19f590d(%rip), %rax   # 0x19fcb80
shlq $0x6, %rcx
addq %rcx, %rax
vsubsd 0x8(%rax), %xmm0, %xmm0
vmovsd %xmm0, 0x48(%rsp)
movslq 0x58(%rsp), %rcx
leaq 0x19f58ef(%rip), %rax   # 0x19fcb80
shlq $0x6, %rcx
addq %rcx, %rax
vmovsd 0x10(%rax), %xmm0
movslq 0x438(%rsp), %rcx
leaq 0x19f58d4(%rip), %rax   # 0x19fcb80
shlq $0x6, %rcx
addq %rcx, %rax
vsubsd 0x10(%rax), %xmm0, %xmm0
vmovsd %xmm0, 0x40(%rsp)
vmovsd 0x50(%rsp), %xmm0
vmovsd 0x50(%rsp), %xmm2
vmovsd 0x48(%rsp), %xmm1
vmulsd 0x48(%rsp), %xmm1, %xmm1
vfmadd213sd %xmm1, %xmm0, %xmm2 # xmm2 = (xmm0 * xmm2) + xmm1
vmovsd 0x40(%rsp), %xmm1
vmovsd 0x40(%rsp), %xmm0
vfmadd213sd %xmm2, %xmm1, %xmm0 # xmm0 = (xmm1 * xmm0) + xmm2
vmovsd %xmm0, 0x38(%rsp)
vmovsd 0x38(%rsp), %xmm0
vmulsd 0x38(%rsp), %xmm0, %xmm0
vmulsd 0x38(%rsp), %xmm0, %xmm0
vmovsd %xmm0, 0x30(%rsp)
vmovsd 0x30(%rsp), %xmm1
vmovsd 0x2d28(%rip), %xmm2     # 0xa040
vmovsd 0x2d28(%rip), %xmm0     # 0xa048
vfmadd213sd %xmm2, %xmm1, %xmm0 # xmm0 = (xmm1 * xmm0) + xmm2
vmovsd 0x30(%rsp), %xmm1
vmulsd 0x30(%rsp), %xmm1, %xmm1
vmulsd 0x38(%rsp), %xmm1, %xmm1
vdivsd %xmm1, %xmm0, %xmm0
vmovsd 0x2cf5(%rip), %xmm1     # 0xa038
vmulsd %xmm1, %xmm0, %xmm0
vmovsd %xmm0, 0x28(%rsp)
vmovsd 0x38(%rsp), %xmm0
vmovsd 0x2cd5(%rip), %xmm1     # 0xa030
vucomisd %xmm1, %xmm0
jbe 0x736b
vpxor %xmm0, %xmm0, %xmm0
vmovsd %xmm0, 0x28(%rsp)
vmovsd 0x28(%rsp), %xmm1
vmovsd 0x50(%rsp), %xmm0
movslq 0x438(%rsp), %rcx
leaq 0x19f57fa(%rip), %rax   # 0x19fcb80
shlq $0x6, %rcx
addq %rcx, %rax
vmovsd 0x20(%rax), %xmm2
vfmadd213sd %xmm2, %xmm1, %xmm0 # xmm0 = (xmm1 * xmm0) + xmm2
vmovsd %xmm0, 0x20(%rax)
vmovsd 0x28(%rsp), %xmm1
vmovsd 0x48(%rsp), %xmm0
movslq 0x438(%rsp), %rcx
leaq 0x19f57c9(%rip), %rax   # 0x19fcb80
shlq $0x6, %rcx
addq %rcx, %rax
vmovsd 0x28(%rax), %xmm2
vfmadd213sd %xmm2, %xmm1, %xmm0 # xmm0 = (xmm1 * xmm0) + xmm2
vmovsd %xmm0, 0x28(%rax)
vmovsd 0x28(%rsp), %xmm1
vmovsd 0x40(%rsp), %xmm0
movslq 0x438(%rsp), %rcx
leaq 0x19f5798(%rip), %rax   # 0x19fcb80
shlq $0x6, %rcx
addq %rcx, %rax
vmovsd 0x30(%rax), %xmm2
vfmadd213sd %xmm2, %xmm1, %xmm0 # xmm0 = (xmm1 * xmm0) + xmm2
vmovsd %xmm0, 0x30(%rax)
vmovsd 0x28(%rsp), %xmm1
vmovsd 0x50(%rsp), %xmm0
movslq 0x58(%rsp), %rcx
leaq 0x19f576a(%rip), %rax   # 0x19fcb80
shlq $0x6, %rcx
addq %rcx, %rax
vmovsd 0x20(%rax), %xmm2
vmovq %xmm1, %rcx
movabsq $-0x8000000000000000, %rdx # imm = 0x8000000000000000
xorq %rdx, %rcx
vmovq %rcx, %xmm1
vfmadd213sd %xmm2, %xmm1, %xmm0 # xmm0 = (xmm1 * xmm0) + xmm2
vmovsd %xmm0, 0x20(%rax)
vmovsd 0x28(%rsp), %xmm1
vmovsd 0x48(%rsp), %xmm0
movslq 0x58(%rsp), %rcx
leaq 0x19f5725(%rip), %rax   # 0x19fcb80
shlq $0x6, %rcx
addq %rcx, %rax
vmovsd 0x28(%rax), %xmm2
vmovq %xmm1, %rcx
movabsq $-0x8000000000000000, %rdx # imm = 0x8000000000000000
xorq %rdx, %rcx
vmovq %rcx, %xmm1
vfmadd213sd %xmm2, %xmm1, %xmm0 # xmm0 = (xmm1 * xmm0) + xmm2
vmovsd %xmm0, 0x28(%rax)
vmovsd 0x28(%rsp), %xmm1
vmovsd 0x40(%rsp), %xmm0
movslq 0x58(%rsp), %rcx
leaq 0x19f56e0(%rip), %rax   # 0x19fcb80
shlq $0x6, %rcx
addq %rcx, %rax
vmovsd 0x30(%rax), %xmm2
vmovq %xmm1, %rcx
movabsq $-0x8000000000000000, %rdx # imm = 0x8000000000000000
xorq %rdx, %rcx
vmovq %rcx, %xmm1
vfmadd213sd %xmm2, %xmm1, %xmm0 # xmm0 = (xmm1 * xmm0) + xmm2
vmovsd %xmm0, 0x30(%rax)
movl 0x5c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x5c(%rsp)
jmp 0x71e8
jmp 0x74df
movl 0x438(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x438(%rsp)
jmp 0x68de
movq %rbp, %rsp
popq %rbp
vzeroupper
retq
nopl (%rax)