// File: Luthaf[P]zeopp/voro++/src/container.cc
// Function: voro::container_base::remap(int&, int&, int&, int&, int&, int&, double&, double&, double&, int&)
inline bool container_base::remap(int &ai,int &aj,int &ak,int &ci,int &cj,int &ck,double &x,double &y,double &z,int &ijk) {
	ci=step_int((x-ax)*xsp);
	if(ci<0||ci>=nx) {
		if(xperiodic) {ai=step_div(ci,nx);x-=ai*(bx-ax);ci-=ai*nx;}
		else return false;
	} else ai=0;

	cj=step_int((y-ay)*ysp);
	if(cj<0||cj>=ny) {
		if(yperiodic) {aj=step_div(cj,ny);y-=aj*(by-ay);cj-=aj*ny;}
		else return false;
	} else aj=0;

	ck=step_int((z-az)*zsp);
	if(ck<0||ck>=nz) {
		if(zperiodic) {ak=step_div(ck,nz);z-=ak*(bz-az);ck-=ak*nz;}
		else return false;
	} else ak=0;

	ijk=ci+nx*cj+nxy*ck;
	return true;
}

// 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, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
movq %r8, -0x30(%rbp)
movq %r9, -0x38(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x40(%rbp)
movq 0x18(%rbp), %rax
movsd (%rax), %xmm0
subsd 0x70(%rdi), %xmm0
mulsd 0x30(%rdi), %xmm0
callq 0x1f4a0
movl %eax, %ecx
movq -0x30(%rbp), %rax
movl %ecx, (%rax)
movq -0x30(%rbp), %rax
cmpl $0x0, (%rax)
jl 0x1ec06
movq -0x40(%rbp), %rcx
movq -0x30(%rbp), %rax
movl (%rax), %eax
cmpl (%rcx), %eax
jl 0x1ec8d
movq -0x40(%rbp), %rax
testb $0x1, 0xa8(%rax)
je 0x1ec82
movq -0x40(%rbp), %rdi
movq -0x30(%rbp), %rax
movl (%rax), %esi
movl (%rdi), %edx
callq 0x1ee80
movl %eax, %edx
movq -0x40(%rbp), %rax
movq -0x18(%rbp), %rcx
movl %edx, (%rcx)
movq -0x18(%rbp), %rcx
cvtsi2sdl (%rcx), %xmm0
movsd 0x78(%rax), %xmm2
subsd 0x70(%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 (%rax), %edx
movq -0x30(%rbp), %rax
movl (%rax), %ecx
subl %edx, %ecx
movl %ecx, (%rax)
jmp 0x1ec8b
movb $0x0, -0x1(%rbp)
jmp 0x1ee75
jmp 0x1ec97
movq -0x18(%rbp), %rax
movl $0x0, (%rax)
movq -0x40(%rbp), %rdi
movq 0x20(%rbp), %rax
movsd (%rax), %xmm0
subsd 0x80(%rdi), %xmm0
mulsd 0x38(%rdi), %xmm0
callq 0x1f4a0
movl %eax, %ecx
movq -0x38(%rbp), %rax
movl %ecx, (%rax)
movq -0x38(%rbp), %rax
cmpl $0x0, (%rax)
jl 0x1ecd9
movq -0x40(%rbp), %rcx
movq -0x38(%rbp), %rax
movl (%rax), %eax
cmpl 0x4(%rcx), %eax
jl 0x1ed68
movq -0x40(%rbp), %rax
testb $0x1, 0xa9(%rax)
je 0x1ed5d
movq -0x40(%rbp), %rdi
movq -0x38(%rbp), %rax
movl (%rax), %esi
movl 0x4(%rdi), %edx
callq 0x1ee80
movl %eax, %edx
movq -0x40(%rbp), %rax
movq -0x20(%rbp), %rcx
movl %edx, (%rcx)
movq -0x20(%rbp), %rcx
cvtsi2sdl (%rcx), %xmm0
movsd 0x88(%rax), %xmm2
subsd 0x80(%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
movl (%rcx), %edx
imull 0x4(%rax), %edx
movq -0x38(%rbp), %rax
movl (%rax), %ecx
subl %edx, %ecx
movl %ecx, (%rax)
jmp 0x1ed66
movb $0x0, -0x1(%rbp)
jmp 0x1ee75
jmp 0x1ed72
movq -0x20(%rbp), %rax
movl $0x0, (%rax)
movq -0x40(%rbp), %rdi
movq 0x28(%rbp), %rax
movsd (%rax), %xmm0
subsd 0x90(%rdi), %xmm0
mulsd 0x40(%rdi), %xmm0
callq 0x1f4a0
movl %eax, %ecx
movq 0x10(%rbp), %rax
movl %ecx, (%rax)
movq 0x10(%rbp), %rax
cmpl $0x0, (%rax)
jl 0x1edb4
movq -0x40(%rbp), %rcx
movq 0x10(%rbp), %rax
movl (%rax), %eax
cmpl 0x8(%rcx), %eax
jl 0x1ee40
movq -0x40(%rbp), %rax
testb $0x1, 0xaa(%rax)
je 0x1ee38
movq -0x40(%rbp), %rdi
movq 0x10(%rbp), %rax
movl (%rax), %esi
movl 0x8(%rdi), %edx
callq 0x1ee80
movl %eax, %edx
movq -0x40(%rbp), %rax
movq -0x28(%rbp), %rcx
movl %edx, (%rcx)
movq -0x28(%rbp), %rcx
cvtsi2sdl (%rcx), %xmm0
movsd 0x98(%rax), %xmm2
subsd 0x90(%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 -0x28(%rbp), %rcx
movl (%rcx), %edx
imull 0x8(%rax), %edx
movq 0x10(%rbp), %rax
movl (%rax), %ecx
subl %edx, %ecx
movl %ecx, (%rax)
jmp 0x1ee3e
movb $0x0, -0x1(%rbp)
jmp 0x1ee75
jmp 0x1ee4a
movq -0x28(%rbp), %rax
movl $0x0, (%rax)
movq -0x40(%rbp), %rax
movq -0x30(%rbp), %rcx
movl (%rcx), %ecx
movl (%rax), %edx
movq -0x38(%rbp), %rsi
imull (%rsi), %edx
addl %edx, %ecx
movl 0xc(%rax), %eax
movq 0x10(%rbp), %rdx
imull (%rdx), %eax
addl %eax, %ecx
movq 0x30(%rbp), %rax
movl %ecx, (%rax)
movb $0x1, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x40, %rsp
popq %rbp
retq