// File: kaityo256[P]lj_simd/force_aos.cpp
// Function: force_pair()
void
force_pair(void) {
  for (int k = 0; k < number_of_pairs; k++) {
    const int i = i_particles[k];
    const int j = j_particles[k];
    double dx = q[j][X] - q[i][X];
    double dy = q[j][Y] - q[i][Y];
    double dz = q[j][Z] - q[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;
    p[i][X] += df * dx;
    p[i][Y] += df * dy;
    p[i][Z] += df * dz;
    p[j][X] -= df * dx;
    p[j][Y] -= df * dy;
    p[j][Z] -= df * dz;
  }
}

// Assembly:
movl $0x0, -0x4(%rsp)
movl -0x4(%rsp), %eax
cmpl 0x3263a62(%rip), %eax   # 0x3266b84
jge 0x3400
movslq -0x4(%rsp), %rcx
leaq 0x33ea45c(%rip), %rax   # 0x33ed590
movl (%rax,%rcx,4), %eax
movl %eax, -0x8(%rsp)
movslq -0x4(%rsp), %rcx
leaq 0x61b1049(%rip), %rax   # 0x61b4190
movl (%rax,%rcx,4), %eax
movl %eax, -0xc(%rsp)
movslq -0xc(%rsp), %rcx
leaq 0x18f9f6(%rip), %rax    # 0x192b50
shlq $0x5, %rcx
addq %rcx, %rax
vmovsd (%rax), %xmm0
movslq -0x8(%rsp), %rcx
leaq 0x18f9df(%rip), %rax    # 0x192b50
shlq $0x5, %rcx
addq %rcx, %rax
vsubsd (%rax), %xmm0, %xmm0
vmovsd %xmm0, -0x18(%rsp)
movslq -0xc(%rsp), %rcx
leaq 0x18f9c2(%rip), %rax    # 0x192b50
shlq $0x5, %rcx
addq %rcx, %rax
vmovsd 0x8(%rax), %xmm0
movslq -0x8(%rsp), %rcx
leaq 0x18f9aa(%rip), %rax    # 0x192b50
shlq $0x5, %rcx
addq %rcx, %rax
vsubsd 0x8(%rax), %xmm0, %xmm0
vmovsd %xmm0, -0x20(%rsp)
movslq -0xc(%rsp), %rcx
leaq 0x18f98c(%rip), %rax    # 0x192b50
shlq $0x5, %rcx
addq %rcx, %rax
vmovsd 0x10(%rax), %xmm0
movslq -0x8(%rsp), %rcx
leaq 0x18f974(%rip), %rax    # 0x192b50
shlq $0x5, %rcx
addq %rcx, %rax
vsubsd 0x10(%rax), %xmm0, %xmm0
vmovsd %xmm0, -0x28(%rsp)
vmovsd -0x18(%rsp), %xmm0
vmovsd -0x18(%rsp), %xmm2
vmovsd -0x20(%rsp), %xmm1
vmulsd -0x20(%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, -0x30(%rsp)
vmovsd -0x30(%rsp), %xmm0
vmulsd -0x30(%rsp), %xmm0, %xmm0
vmulsd -0x30(%rsp), %xmm0, %xmm0
vmovsd %xmm0, -0x38(%rsp)
vmovsd -0x38(%rsp), %xmm1
vmovsd 0x6df8(%rip), %xmm2     # 0xa040
vmovsd 0x6df8(%rip), %xmm0     # 0xa048
vfmadd213sd %xmm2, %xmm1, %xmm0 # xmm0 = (xmm1 * xmm0) + xmm2
vmovsd -0x38(%rsp), %xmm1
vmulsd -0x38(%rsp), %xmm1, %xmm1
vmulsd -0x30(%rsp), %xmm1, %xmm1
vdivsd %xmm1, %xmm0, %xmm0
vmovsd 0x6dc5(%rip), %xmm1     # 0xa038
vmulsd %xmm1, %xmm0, %xmm0
vmovsd %xmm0, -0x40(%rsp)
vmovsd -0x30(%rsp), %xmm0
vmovsd 0x6da5(%rip), %xmm1     # 0xa030
vucomisd %xmm1, %xmm0
jbe 0x329b
vpxor %xmm0, %xmm0, %xmm0
vmovsd %xmm0, -0x40(%rsp)
vmovsd -0x40(%rsp), %xmm1
vmovsd -0x18(%rsp), %xmm0
movslq -0x8(%rsp), %rcx
leaq 0xdc489d(%rip), %rax    # 0xdc7b50
shlq $0x5, %rcx
addq %rcx, %rax
vmovsd (%rax), %xmm2
vfmadd213sd %xmm2, %xmm1, %xmm0 # xmm0 = (xmm1 * xmm0) + xmm2
vmovsd %xmm0, (%rax)
vmovsd -0x40(%rsp), %xmm1
vmovsd -0x20(%rsp), %xmm0
movslq -0x8(%rsp), %rcx
leaq 0xdc4871(%rip), %rax    # 0xdc7b50
shlq $0x5, %rcx
addq %rcx, %rax
vmovsd 0x8(%rax), %xmm2
vfmadd213sd %xmm2, %xmm1, %xmm0 # xmm0 = (xmm1 * xmm0) + xmm2
vmovsd %xmm0, 0x8(%rax)
vmovsd -0x40(%rsp), %xmm1
vmovsd -0x28(%rsp), %xmm0
movslq -0x8(%rsp), %rcx
leaq 0xdc4843(%rip), %rax    # 0xdc7b50
shlq $0x5, %rcx
addq %rcx, %rax
vmovsd 0x10(%rax), %xmm2
vfmadd213sd %xmm2, %xmm1, %xmm0 # xmm0 = (xmm1 * xmm0) + xmm2
vmovsd %xmm0, 0x10(%rax)
vmovsd -0x40(%rsp), %xmm1
vmovsd -0x18(%rsp), %xmm0
movslq -0xc(%rsp), %rcx
leaq 0xdc4815(%rip), %rax    # 0xdc7b50
shlq $0x5, %rcx
addq %rcx, %rax
vmovsd (%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, (%rax)
vmovsd -0x40(%rsp), %xmm1
vmovsd -0x20(%rsp), %xmm0
movslq -0xc(%rsp), %rcx
leaq 0xdc47d2(%rip), %rax    # 0xdc7b50
shlq $0x5, %rcx
addq %rcx, %rax
vmovsd 0x8(%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, 0x8(%rax)
vmovsd -0x40(%rsp), %xmm1
vmovsd -0x28(%rsp), %xmm0
movslq -0xc(%rsp), %rcx
leaq 0xdc478d(%rip), %rax    # 0xdc7b50
shlq $0x5, %rcx
addq %rcx, %rax
vmovsd 0x10(%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, 0x10(%rax)
movl -0x4(%rsp), %eax
addl $0x1, %eax
movl %eax, -0x4(%rsp)
jmp 0x3118
retq
nopw %cs:(%rax,%rax)