// File: icemiliang[P]vot/src/vot/unitcell.cc
// Function: voro::unitcell::intersects_image(double, double, double, double&)
bool unitcell::intersects_image(double dx,double dy,double dz,double &vol) {
	const double bxinv=1/bx,byinv=1/by,bzinv=1/bz,ivol=bxinv*byinv*bzinv;
	voronoicell c;
	c=unit_voro;
	dx*=2;dy*=2;dz*=2;
	if(!c.plane(0,0,bzinv,dz+1)) return false;
	if(!c.plane(0,0,-bzinv,-dz+1)) return false;
	if(!c.plane(0,byinv,-byz*byinv*bzinv,dy+1)) return false;
	if(!c.plane(0,-byinv,byz*byinv*bzinv,-dy+1)) return false;
	if(!c.plane(bxinv,-bxy*bxinv*byinv,(bxy*byz-by*bxz)*ivol,dx+1)) return false;
	if(!c.plane(-bxinv,bxy*bxinv*byinv,(-bxy*byz+by*bxz)*ivol,-dx+1)) return false;
	vol=c.volume()*ivol;
	return true;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x120, %rsp            # imm = 0x120
movq %rdi, -0x10(%rbp)
movsd %xmm0, -0x18(%rbp)
movsd %xmm1, -0x20(%rbp)
movsd %xmm2, -0x28(%rbp)
movq %rsi, -0x30(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x110(%rbp)
movsd (%rax), %xmm2
movsd 0x356f(%rip), %xmm0     # 0x8ddb8
movaps %xmm0, %xmm1
divsd %xmm2, %xmm1
movsd %xmm1, -0x38(%rbp)
movsd 0x10(%rax), %xmm2
movaps %xmm0, %xmm1
divsd %xmm2, %xmm1
movsd %xmm1, -0x40(%rbp)
movsd 0x28(%rax), %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, -0x48(%rbp)
movsd -0x38(%rbp), %xmm0
movsd -0x40(%rbp), %xmm1
mulsd %xmm1, %xmm0
movsd -0x48(%rbp), %xmm1
mulsd %xmm1, %xmm0
movsd %xmm0, -0x50(%rbp)
leaq -0xf0(%rbp), %rdi
movq %rdi, -0x108(%rbp)
callq 0x23520
movq -0x110(%rbp), %rsi
movq -0x108(%rbp), %rdi
addq $0x30, %rsi
callq 0x83960
jmp 0x8a8bc
movsd -0x18(%rbp), %xmm0
addsd %xmm0, %xmm0
movsd %xmm0, -0x18(%rbp)
movsd -0x20(%rbp), %xmm0
addsd %xmm0, %xmm0
movsd %xmm0, -0x20(%rbp)
movsd -0x28(%rbp), %xmm0
addsd %xmm0, %xmm0
movsd %xmm0, -0x28(%rbp)
movsd -0x48(%rbp), %xmm2
movsd -0x28(%rbp), %xmm3
movsd 0x34c0(%rip), %xmm0     # 0x8ddb8
addsd %xmm0, %xmm3
leaq -0xf0(%rbp), %rdi
xorps %xmm1, %xmm1
movaps %xmm1, %xmm0
callq 0x8b6c0
movb %al, -0x111(%rbp)
jmp 0x8a916
movb -0x111(%rbp), %al
testb $0x1, %al
jne 0x8a958
jmp 0x8a922
movb $0x0, -0x1(%rbp)
movl $0x1, -0x100(%rbp)
jmp 0x8abf6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
leaq -0xf0(%rbp), %rdi
callq 0x236a0
jmp 0x8ac10
movaps 0x3431(%rip), %xmm0     # 0x8dd90
movsd -0x48(%rbp), %xmm2
pxor %xmm0, %xmm2
movsd -0x28(%rbp), %xmm0
movsd 0x3443(%rip), %xmm3     # 0x8ddb8
subsd %xmm0, %xmm3
leaq -0xf0(%rbp), %rdi
xorps %xmm1, %xmm1
movaps %xmm1, %xmm0
callq 0x8b6c0
movb %al, -0x112(%rbp)
jmp 0x8a993
movb -0x112(%rbp), %al
testb $0x1, %al
jne 0x8a9b2
jmp 0x8a99f
movb $0x0, -0x1(%rbp)
movl $0x1, -0x100(%rbp)
jmp 0x8abf6
movq -0x110(%rbp), %rax
movsd -0x40(%rbp), %xmm1
movsd 0x20(%rax), %xmm2
movaps 0x33c6(%rip), %xmm0     # 0x8dd90
pxor %xmm0, %xmm2
mulsd %xmm1, %xmm2
movsd -0x48(%rbp), %xmm0
mulsd %xmm0, %xmm2
movsd -0x20(%rbp), %xmm3
movsd 0x33d0(%rip), %xmm0     # 0x8ddb8
addsd %xmm0, %xmm3
leaq -0xf0(%rbp), %rdi
xorps %xmm0, %xmm0
callq 0x8b6c0
movb %al, -0x113(%rbp)
jmp 0x8aa03
movb -0x113(%rbp), %al
testb $0x1, %al
jne 0x8aa22
jmp 0x8aa0f
movb $0x0, -0x1(%rbp)
movl $0x1, -0x100(%rbp)
jmp 0x8abf6
movq -0x110(%rbp), %rax
movsd -0x40(%rbp), %xmm0
movaps %xmm0, %xmm1
movaps 0x3358(%rip), %xmm2     # 0x8dd90
pxor %xmm2, %xmm1
movsd 0x20(%rax), %xmm2
mulsd %xmm0, %xmm2
movsd -0x48(%rbp), %xmm0
mulsd %xmm0, %xmm2
movsd -0x20(%rbp), %xmm0
movsd 0x335d(%rip), %xmm3     # 0x8ddb8
subsd %xmm0, %xmm3
leaq -0xf0(%rbp), %rdi
xorps %xmm0, %xmm0
callq 0x8b6c0
movb %al, -0x114(%rbp)
jmp 0x8aa76
movb -0x114(%rbp), %al
testb $0x1, %al
jne 0x8aa95
jmp 0x8aa82
movb $0x0, -0x1(%rbp)
movl $0x1, -0x100(%rbp)
jmp 0x8abf6
movq -0x110(%rbp), %rax
movsd -0x38(%rbp), %xmm0
movsd 0x8(%rax), %xmm2
movsd 0x10(%rax), %xmm3
movaps %xmm2, %xmm1
movaps 0x32db(%rip), %xmm4     # 0x8dd90
pxor %xmm4, %xmm1
mulsd %xmm0, %xmm1
movsd -0x40(%rbp), %xmm4
mulsd %xmm4, %xmm1
movsd 0x20(%rax), %xmm4
movsd 0x18(%rax), %xmm5
mulsd %xmm5, %xmm3
mulsd %xmm4, %xmm2
subsd %xmm3, %xmm2
movsd -0x50(%rbp), %xmm3
mulsd %xmm3, %xmm2
movsd -0x18(%rbp), %xmm3
movsd 0x32c6(%rip), %xmm4     # 0x8ddb8
addsd %xmm4, %xmm3
leaq -0xf0(%rbp), %rdi
callq 0x8b6c0
movb %al, -0x115(%rbp)
jmp 0x8ab0a
movb -0x115(%rbp), %al
testb $0x1, %al
jne 0x8ab29
jmp 0x8ab16
movb $0x0, -0x1(%rbp)
movl $0x1, -0x100(%rbp)
jmp 0x8abf6
movq -0x110(%rbp), %rax
movsd -0x38(%rbp), %xmm4
movaps %xmm4, %xmm0
movaps 0x3251(%rip), %xmm1     # 0x8dd90
pxor %xmm1, %xmm0
movsd 0x8(%rax), %xmm3
movsd 0x10(%rax), %xmm2
movaps %xmm3, %xmm1
mulsd %xmm4, %xmm1
movsd -0x40(%rbp), %xmm4
mulsd %xmm4, %xmm1
movsd 0x20(%rax), %xmm4
movsd 0x18(%rax), %xmm5
mulsd %xmm5, %xmm2
mulsd %xmm4, %xmm3
subsd %xmm3, %xmm2
movsd -0x50(%rbp), %xmm3
mulsd %xmm3, %xmm2
movsd -0x18(%rbp), %xmm4
movsd 0x322f(%rip), %xmm3     # 0x8ddb8
subsd %xmm4, %xmm3
leaq -0xf0(%rbp), %rdi
callq 0x8b6c0
movb %al, -0x116(%rbp)
jmp 0x8aba1
movb -0x116(%rbp), %al
testb $0x1, %al
jne 0x8abbd
jmp 0x8abad
movb $0x0, -0x1(%rbp)
movl $0x1, -0x100(%rbp)
jmp 0x8abf6
leaq -0xf0(%rbp), %rdi
callq 0x43b70
movsd %xmm0, -0x120(%rbp)
jmp 0x8abd3
movsd -0x120(%rbp), %xmm0
mulsd -0x50(%rbp), %xmm0
movq -0x30(%rbp), %rax
movsd %xmm0, (%rax)
movb $0x1, -0x1(%rbp)
movl $0x1, -0x100(%rbp)
leaq -0xf0(%rbp), %rdi
callq 0x236a0
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x120, %rsp            # imm = 0x120
popq %rbp
retq
movq -0xf8(%rbp), %rdi
callq 0xa950
nopl (%rax)