// File: Luthaf[P]zeopp/voro++/src/wall.cc
// Function: bool voro::wall_cone::cut_cell_base<voro::voronoicell>(voro::voronoicell&, double, double, double)
bool wall_cone::cut_cell_base(v_cell &c,double x,double y,double z) {
	double xd=x-xc,yd=y-yc,zd=z-zc,xf,yf,zf,q,pa=(xd*xa+yd*ya+zd*za)*asi;
	xd-=xa*pa;yd-=ya*pa;zd-=za*pa;
	pa=xd*xd+yd*yd+zd*zd;
	if(pa>1e-5) {
		pa=1/sqrt(pa);
		q=sqrt(asi);
		xf=-sang*q*xa+cang*pa*xd;
		yf=-sang*q*ya+cang*pa*yd;
		zf=-sang*q*za+cang*pa*zd;
		pa=2*(xf*(xc-x)+yf*(yc-y)+zf*(zc-z));
		return c.nplane(xf,yf,zf,pa,w_id);
	}
	return true;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x80, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movsd %xmm0, -0x20(%rbp)
movsd %xmm1, -0x28(%rbp)
movsd %xmm2, -0x30(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x78(%rbp)
movsd -0x20(%rbp), %xmm0
subsd 0x10(%rax), %xmm0
movsd %xmm0, -0x38(%rbp)
movsd -0x28(%rbp), %xmm0
subsd 0x18(%rax), %xmm0
movsd %xmm0, -0x40(%rbp)
movsd -0x30(%rbp), %xmm0
subsd 0x20(%rax), %xmm0
movsd %xmm0, -0x48(%rbp)
movsd -0x38(%rbp), %xmm1
movsd 0x28(%rax), %xmm2
movsd -0x40(%rbp), %xmm0
mulsd 0x30(%rax), %xmm0
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movsd -0x48(%rbp), %xmm0
movsd 0x38(%rax), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
mulsd 0x40(%rax), %xmm0
movsd %xmm0, -0x70(%rbp)
movsd 0x28(%rax), %xmm0
movsd -0x70(%rbp), %xmm2
movsd -0x38(%rbp), %xmm1
movq %xmm0, %rcx
movabsq $-0x8000000000000000, %rdx # imm = 0x8000000000000000
xorq %rdx, %rcx
movq %rcx, %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x38(%rbp)
movsd 0x30(%rax), %xmm0
movsd -0x70(%rbp), %xmm2
movsd -0x40(%rbp), %xmm1
movq %xmm0, %rcx
movabsq $-0x8000000000000000, %rdx # imm = 0x8000000000000000
xorq %rdx, %rcx
movq %rcx, %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x40(%rbp)
movsd 0x38(%rax), %xmm0
movsd -0x70(%rbp), %xmm2
movsd -0x48(%rbp), %xmm1
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x48(%rbp)
movsd -0x38(%rbp), %xmm1
movsd -0x38(%rbp), %xmm2
movsd -0x40(%rbp), %xmm0
mulsd -0x40(%rbp), %xmm0
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movsd -0x48(%rbp), %xmm0
movsd -0x48(%rbp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x70(%rbp)
movsd -0x70(%rbp), %xmm0
movsd 0x10258(%rip), %xmm1    # 0x5c200
ucomisd %xmm1, %xmm0
jbe 0x4c126
movsd -0x70(%rbp), %xmm0
callq 0x20f0
movq -0x78(%rbp), %rax
movaps %xmm0, %xmm1
movsd 0xa045(%rip), %xmm0     # 0x56010
divsd %xmm1, %xmm0
movsd %xmm0, -0x70(%rbp)
movsd 0x40(%rax), %xmm0
callq 0x20f0
movq -0x78(%rbp), %rax
movsd %xmm0, -0x68(%rbp)
movsd 0x50(%rax), %xmm0
movq %xmm0, %rcx
movabsq $-0x8000000000000000, %rdx # imm = 0x8000000000000000
xorq %rdx, %rcx
movq %rcx, %xmm0
mulsd -0x68(%rbp), %xmm0
movsd 0x28(%rax), %xmm2
movsd 0x58(%rax), %xmm1
mulsd -0x70(%rbp), %xmm1
mulsd -0x38(%rbp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x50(%rbp)
movsd 0x50(%rax), %xmm0
movq %xmm0, %rcx
movabsq $-0x8000000000000000, %rdx # imm = 0x8000000000000000
xorq %rdx, %rcx
movq %rcx, %xmm0
mulsd -0x68(%rbp), %xmm0
movsd 0x30(%rax), %xmm2
movsd 0x58(%rax), %xmm1
mulsd -0x70(%rbp), %xmm1
mulsd -0x40(%rbp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x58(%rbp)
movsd 0x50(%rax), %xmm0
movq %xmm0, %rcx
movabsq $-0x8000000000000000, %rdx # imm = 0x8000000000000000
xorq %rdx, %rcx
movq %rcx, %xmm0
mulsd -0x68(%rbp), %xmm0
movsd 0x38(%rax), %xmm2
movsd 0x58(%rax), %xmm1
mulsd -0x70(%rbp), %xmm1
mulsd -0x48(%rbp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x60(%rbp)
movsd -0x50(%rbp), %xmm0
movsd 0x10(%rax), %xmm2
subsd -0x20(%rbp), %xmm2
movsd -0x58(%rbp), %xmm1
movsd 0x18(%rax), %xmm3
subsd -0x28(%rbp), %xmm3
mulsd %xmm3, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd -0x60(%rbp), %xmm1
movsd 0x20(%rax), %xmm2
subsd -0x30(%rbp), %xmm2
mulsd %xmm2, %xmm1
addsd %xmm0, %xmm1
movsd 0xb512(%rip), %xmm0     # 0x57608
mulsd %xmm1, %xmm0
movsd %xmm0, -0x70(%rbp)
movq -0x18(%rbp), %rdi
movsd -0x50(%rbp), %xmm0
movsd -0x58(%rbp), %xmm1
movsd -0x60(%rbp), %xmm2
movsd -0x70(%rbp), %xmm3
movl 0x8(%rax), %esi
callq 0x21ec0
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x4c12a
movb $0x1, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x80, %rsp
popq %rbp
retq
nopl (%rax,%rax)