// File: icemiliang[P]vot/src/vot/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 $0xe0, %rdi
movq 0x28(%rbp), %rcx
movsd (%rcx), %xmm0
mulsd 0x120(%rax), %xmm0
callq 0x593d0
movl %eax, %ecx
movq 0x10(%rbp), %rax
movl %ecx, (%rax)
movq 0x10(%rbp), %rax
cmpl $0x0, (%rax)
jl 0x89382
movq -0x38(%rbp), %rcx
movq 0x10(%rbp), %rax
movl (%rax), %eax
cmpl 0xe8(%rcx), %eax
jl 0x8946e
movq -0x38(%rbp), %rax
movq %rax, %rdi
addq $0xe0, %rdi
movq 0x10(%rbp), %rcx
movl (%rcx), %esi
movl 0xe8(%rax), %edx
callq 0x58ce0
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 0xe8(%rax), %edx
movq 0x10(%rbp), %rax
movl (%rax), %ecx
subl %edx, %ecx
movl %ecx, (%rax)
jmp 0x89478
movq -0x20(%rbp), %rax
movl $0x0, (%rax)
movq -0x38(%rbp), %rax
movq %rax, %rdi
addq $0xe0, %rdi
movq 0x20(%rbp), %rcx
movsd (%rcx), %xmm0
mulsd 0x118(%rax), %xmm0
callq 0x593d0
movl %eax, %ecx
movq -0x30(%rbp), %rax
movl %ecx, (%rax)
movq -0x30(%rbp), %rax
cmpl $0x0, (%rax)
jl 0x894c2
movq -0x38(%rbp), %rcx
movq -0x30(%rbp), %rax
movl (%rax), %eax
cmpl 0xe4(%rcx), %eax
jl 0x89576
movq -0x38(%rbp), %rax
movq %rax, %rdi
addq $0xe0, %rdi
movq -0x30(%rbp), %rcx
movl (%rcx), %esi
movl 0xe4(%rax), %edx
callq 0x58ce0
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 0xe4(%rax), %edx
movq -0x30(%rbp), %rax
movl (%rax), %ecx
subl %edx, %ecx
movl %ecx, (%rax)
jmp 0x89580
movq -0x18(%rbp), %rax
movl $0x0, (%rax)
movq -0x38(%rbp), %rax
movq %rax, %rdi
addq $0xe0, %rdi
movq 0x18(%rbp), %rcx
movsd (%rcx), %xmm0
mulsd 0x110(%rax), %xmm0
callq 0x593d0
movl %eax, %ecx
movq -0x28(%rbp), %rax
movl %ecx, (%rax)
movq -0x28(%rbp), %rax
cmpl $0x0, (%rax)
jl 0x895c6
movq -0x38(%rbp), %rcx
movq -0x28(%rbp), %rax
movl (%rax), %eax
cmpl 0xe0(%rcx), %eax
jl 0x89641
movq -0x38(%rbp), %rax
movq %rax, %rdi
addq $0xe0, %rdi
movq -0x28(%rbp), %rcx
movl (%rcx), %esi
movl 0xe0(%rax), %edx
callq 0x58ce0
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 0xe0(%rax), %edx
movq -0x28(%rbp), %rax
movl (%rax), %ecx
subl %edx, %ecx
movl %ecx, (%rax)
jmp 0x8964b
movq -0x10(%rbp), %rax
movl $0x0, (%rax)
movq -0x38(%rbp), %rsi
movl 0x130(%rsi), %ecx
movq -0x30(%rbp), %rax
addl (%rax), %ecx
movl %ecx, (%rax)
movl 0x134(%rsi), %ecx
movq 0x10(%rbp), %rax
addl (%rax), %ecx
movl %ecx, (%rax)
movq -0x28(%rbp), %rax
movl (%rax), %ecx
movl 0xe0(%rsi), %eax
movq -0x30(%rbp), %rdx
movl (%rdx), %edx
movl 0x140(%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)