// File: Luthaf[P]zeopp/voro++/src/container_prd.cc
// Function: voro::container_periodic_base::remap(int&, int&, int&, int&, int&, int&, double&, double&, double&, int&)
inline void container_periodic_base::remap(int &ai,int &aj,int &ak,int &ci,int &cj,int &ck,double &x,double &y,double &z,int &ijk) {

	// Remap particle in the z direction if necessary
	ck=step_int(z*zsp);
	if(ck<0||ck>=nz) {
		ak=step_div(ck,nz);
		z-=ak*bz;y-=ak*byz;x-=ak*bxz;ck-=ak*nz;
	} else ak=0;

	// Remap particle in the y direction if necessary
	cj=step_int(y*ysp);
	if(cj<0||cj>=ny) {
		aj=step_div(cj,ny);
		y-=aj*by;x-=aj*bxy;cj-=aj*ny;
	} else aj=0;

	// Remap particle in the x direction if necessary
	ci=step_int(x*xsp);
	if(ci<0||ci>=nx) {
		ai=step_div(ci,nx);
		x-=ai*bx;ci-=ai*nx;
	} else ai=0;

	cj+=ey;ck+=ez;
	ijk=ci+nx*(cj+oy*ck);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq 0x30(%rbp), %rax
movq 0x28(%rbp), %rax
movq 0x20(%rbp), %rax
movq 0x18(%rbp), %rax
movq 0x10(%rbp), %rax
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq %r8, -0x28(%rbp)
movq %r9, -0x30(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x38(%rbp)
movq %rax, %rdi
addq $0x128, %rdi            # imm = 0x128
movq 0x28(%rbp), %rcx
movsd (%rcx), %xmm0
mulsd 0x168(%rax), %xmm0
callq 0x1f4a0
movl %eax, %ecx
movq 0x10(%rbp), %rax
movl %ecx, (%rax)
movq 0x10(%rbp), %rax
cmpl $0x0, (%rax)
jl 0x51cd2
movq -0x38(%rbp), %rcx
movq 0x10(%rbp), %rax
movl (%rax), %eax
cmpl 0x130(%rcx), %eax
jl 0x51dbe
movq -0x38(%rbp), %rax
movq %rax, %rdi
addq $0x128, %rdi            # imm = 0x128
movq 0x10(%rbp), %rcx
movl (%rcx), %esi
movl 0x130(%rax), %edx
callq 0x1ee80
movl %eax, %edx
movq -0x38(%rbp), %rax
movq -0x20(%rbp), %rcx
movl %edx, (%rcx)
movq -0x20(%rbp), %rcx
cvtsi2sdl (%rcx), %xmm0
movsd 0x28(%rax), %xmm2
movq 0x28(%rbp), %rcx
movsd (%rcx), %xmm1
movq %xmm0, %rdx
movabsq $-0x8000000000000000, %rsi # imm = 0x8000000000000000
xorq %rsi, %rdx
movq %rdx, %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rcx)
movq -0x20(%rbp), %rcx
cvtsi2sdl (%rcx), %xmm0
movsd 0x20(%rax), %xmm2
movq 0x20(%rbp), %rcx
movsd (%rcx), %xmm1
movq %xmm0, %rdx
movabsq $-0x8000000000000000, %rsi # imm = 0x8000000000000000
xorq %rsi, %rdx
movq %rdx, %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rcx)
movq -0x20(%rbp), %rcx
cvtsi2sdl (%rcx), %xmm0
movsd 0x18(%rax), %xmm2
movq 0x18(%rbp), %rcx
movsd (%rcx), %xmm1
movq %xmm0, %rdx
movabsq $-0x8000000000000000, %rsi # imm = 0x8000000000000000
xorq %rsi, %rdx
movq %rdx, %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rcx)
movq -0x20(%rbp), %rcx
movl (%rcx), %edx
imull 0x130(%rax), %edx
movq 0x10(%rbp), %rax
movl (%rax), %ecx
subl %edx, %ecx
movl %ecx, (%rax)
jmp 0x51dc8
movq -0x20(%rbp), %rax
movl $0x0, (%rax)
movq -0x38(%rbp), %rax
movq %rax, %rdi
addq $0x128, %rdi            # imm = 0x128
movq 0x20(%rbp), %rcx
movsd (%rcx), %xmm0
mulsd 0x160(%rax), %xmm0
callq 0x1f4a0
movl %eax, %ecx
movq -0x30(%rbp), %rax
movl %ecx, (%rax)
movq -0x30(%rbp), %rax
cmpl $0x0, (%rax)
jl 0x51e12
movq -0x38(%rbp), %rcx
movq -0x30(%rbp), %rax
movl (%rax), %eax
cmpl 0x12c(%rcx), %eax
jl 0x51ec6
movq -0x38(%rbp), %rax
movq %rax, %rdi
addq $0x128, %rdi            # imm = 0x128
movq -0x30(%rbp), %rcx
movl (%rcx), %esi
movl 0x12c(%rax), %edx
callq 0x1ee80
movl %eax, %edx
movq -0x38(%rbp), %rax
movq -0x18(%rbp), %rcx
movl %edx, (%rcx)
movq -0x18(%rbp), %rcx
cvtsi2sdl (%rcx), %xmm0
movsd 0x10(%rax), %xmm2
movq 0x20(%rbp), %rcx
movsd (%rcx), %xmm1
movq %xmm0, %rdx
movabsq $-0x8000000000000000, %rsi # imm = 0x8000000000000000
xorq %rsi, %rdx
movq %rdx, %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rcx)
movq -0x18(%rbp), %rcx
cvtsi2sdl (%rcx), %xmm0
movsd 0x8(%rax), %xmm2
movq 0x18(%rbp), %rcx
movsd (%rcx), %xmm1
movq %xmm0, %rdx
movabsq $-0x8000000000000000, %rsi # imm = 0x8000000000000000
xorq %rsi, %rdx
movq %rdx, %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rcx)
movq -0x18(%rbp), %rcx
movl (%rcx), %edx
imull 0x12c(%rax), %edx
movq -0x30(%rbp), %rax
movl (%rax), %ecx
subl %edx, %ecx
movl %ecx, (%rax)
jmp 0x51ed0
movq -0x18(%rbp), %rax
movl $0x0, (%rax)
movq -0x38(%rbp), %rax
movq %rax, %rdi
addq $0x128, %rdi            # imm = 0x128
movq 0x18(%rbp), %rcx
movsd (%rcx), %xmm0
mulsd 0x158(%rax), %xmm0
callq 0x1f4a0
movl %eax, %ecx
movq -0x28(%rbp), %rax
movl %ecx, (%rax)
movq -0x28(%rbp), %rax
cmpl $0x0, (%rax)
jl 0x51f16
movq -0x38(%rbp), %rcx
movq -0x28(%rbp), %rax
movl (%rax), %eax
cmpl 0x128(%rcx), %eax
jl 0x51f91
movq -0x38(%rbp), %rax
movq %rax, %rdi
addq $0x128, %rdi            # imm = 0x128
movq -0x28(%rbp), %rcx
movl (%rcx), %esi
movl 0x128(%rax), %edx
callq 0x1ee80
movl %eax, %edx
movq -0x38(%rbp), %rax
movq -0x10(%rbp), %rcx
movl %edx, (%rcx)
movq -0x10(%rbp), %rcx
cvtsi2sdl (%rcx), %xmm0
movsd (%rax), %xmm2
movq 0x18(%rbp), %rcx
movsd (%rcx), %xmm1
movq %xmm0, %rdx
movabsq $-0x8000000000000000, %rsi # imm = 0x8000000000000000
xorq %rsi, %rdx
movq %rdx, %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rcx)
movq -0x10(%rbp), %rcx
movl (%rcx), %edx
imull 0x128(%rax), %edx
movq -0x28(%rbp), %rax
movl (%rax), %ecx
subl %edx, %ecx
movl %ecx, (%rax)
jmp 0x51f9b
movq -0x10(%rbp), %rax
movl $0x0, (%rax)
movq -0x38(%rbp), %rsi
movl 0x180(%rsi), %ecx
movq -0x30(%rbp), %rax
addl (%rax), %ecx
movl %ecx, (%rax)
movl 0x184(%rsi), %ecx
movq 0x10(%rbp), %rax
addl (%rax), %ecx
movl %ecx, (%rax)
movq -0x28(%rbp), %rax
movl (%rax), %ecx
movl 0x128(%rsi), %eax
movq -0x30(%rbp), %rdx
movl (%rdx), %edx
movl 0x190(%rsi), %esi
movq 0x10(%rbp), %rdi
imull (%rdi), %esi
addl %esi, %edx
imull %edx, %eax
addl %eax, %ecx
movq 0x30(%rbp), %rax
movl %ecx, (%rax)
addq $0x40, %rsp
popq %rbp
retq
nopl (%rax)