// File: /workspace/github_cpp_makefile_star2_O2/Luthaf[P]zeopp/voro++/src/cell.cc
// Function: voro::voronoicell_base::minkowski_contrib(int, int, int, double, double&, double&)
inline void voronoicell_base::minkowski_contrib(int i,int k,int m,double r,double &ar,double &vo) {
	double ix=pts[4*i],iy=pts[4*i+1],iz=pts[4*i+2],
	       kx=pts[4*k],ky=pts[4*k+1],kz=pts[4*k+2],
	       mx=pts[4*m],my=pts[4*m+1],mz=pts[4*m+2],
	       ux=kx-ix,uy=ky-iy,uz=kz-iz,vx=mx-kx,vy=my-ky,vz=mz-kz,
	       e1x=uz*vy-uy*vz,e1y=ux*vz-uz*vx,e1z=uy*vx-ux*vy,e2x,e2y,e2z,
	       wmag=e1x*e1x+e1y*e1y+e1z*e1z;
	if(wmag<tol*tol) return;
	wmag=1/sqrt(wmag);
	e1x*=wmag;e1y*=wmag;e1z*=wmag;

	// Compute second orthonormal vector
	if(fabs(e1x)>0.5) {
		e2x=-e1y;e2y=e1x;e2z=0;
	} else if(fabs(e1y)>0.5) {
		e2x=0;e2y=-e1z;e2z=e1y;
	} else {
		e2x=e1z;e2y=0;e2z=-e1x;
	}
	wmag=1/sqrt(e2x*e2x+e2y*e2y+e2z*e2z);
	e2x*=wmag;e2y*=wmag;e2z*=wmag;

	// Compute third orthonormal vector
	double e3x=e1z*e2y-e1y*e2z,
	       e3y=e1x*e2z-e1z*e2x,
	       e3z=e1y*e2x-e1x*e2y,
	       x0=e1x*ix+e1y*iy+e1z*iz;
	if(x0<tol) return;

	double ir=e2x*ix+e2y*iy+e2z*iz,is=e3x*ix+e3y*iy+e3z*iz,
	       kr=e2x*kx+e2y*ky+e2z*kz,ks=e3x*kx+e3y*ky+e3z*kz,
	       mr=e2x*mx+e2y*my+e2z*mz,ms=e3x*mx+e3y*my+e3z*mz;

	minkowski_edge(x0,ir,is,kr,ks,r,ar,vo);
	minkowski_edge(x0,kr,ks,mr,ms,r,ar,vo);
	minkowski_edge(x0,mr,ms,ir,is,r,ar,vo);
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x70, %rsp
movsd %xmm0, 0x10(%rsp)
movq %rdi, %r15
movq 0x40(%rdi), %rax
leal (,%rsi,4), %edi
movslq %edi, %rdi
movsd (%rax,%rdi,8), %xmm7
leal 0x1(,%rsi,4), %edi
movslq %edi, %rdi
movsd (%rax,%rdi,8), %xmm8
leal 0x2(,%rsi,4), %esi
movslq %esi, %rsi
movsd (%rax,%rsi,8), %xmm14
leal (,%rdx,4), %esi
movslq %esi, %rsi
movsd (%rax,%rsi,8), %xmm6
leal 0x1(,%rdx,4), %esi
movslq %esi, %rsi
movsd (%rax,%rsi,8), %xmm2
leal 0x2(,%rdx,4), %edx
movslq %edx, %rdx
movsd (%rax,%rdx,8), %xmm0
leal (,%rcx,4), %edx
movslq %edx, %rdx
movsd (%rax,%rdx,8), %xmm15
leal 0x1(,%rcx,4), %edx
movslq %edx, %rdx
movsd (%rax,%rdx,8), %xmm4
leal 0x2(,%rcx,4), %ecx
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm1
movapd %xmm6, %xmm10
subsd %xmm7, %xmm10
movapd %xmm2, %xmm3
subsd %xmm8, %xmm3
movapd %xmm0, %xmm5
subsd %xmm14, %xmm5
movapd %xmm15, %xmm11
subsd %xmm6, %xmm11
movapd %xmm4, %xmm12
subsd %xmm2, %xmm12
movapd %xmm1, %xmm13
movsd %xmm0, 0x8(%rsp)
subsd %xmm0, %xmm13
movapd %xmm10, %xmm9
mulsd %xmm13, %xmm9
mulsd %xmm3, %xmm13
mulsd %xmm11, %xmm3
mulsd %xmm5, %xmm11
mulsd %xmm12, %xmm5
subsd %xmm13, %xmm5
subsd %xmm11, %xmm9
mulsd %xmm10, %xmm12
subsd %xmm12, %xmm3
movapd %xmm9, %xmm10
mulsd %xmm9, %xmm10
movapd %xmm5, %xmm11
mulsd %xmm5, %xmm11
addsd %xmm10, %xmm11
movapd %xmm3, %xmm10
mulsd %xmm3, %xmm10
addsd %xmm11, %xmm10
movsd 0x48(%r15), %xmm12
movapd %xmm12, %xmm11
mulsd %xmm12, %xmm11
ucomisd %xmm10, %xmm11
ja 0xe2e3
movq %r9, %rbx
movq %r8, %r14
movsd %xmm4, 0x20(%rsp)
sqrtsd %xmm10, %xmm10
movsd 0x20e15(%rip), %xmm11   # 0x2f018
divsd %xmm10, %xmm11
mulsd %xmm11, %xmm5
mulsd %xmm11, %xmm9
mulsd %xmm11, %xmm3
movapd 0x226d0(%rip), %xmm10   # 0x308f0
andpd %xmm5, %xmm10
movapd %xmm1, %xmm4
ucomisd 0x20dfe(%rip), %xmm10   # 0x2f030
jbe 0xe258
movapd %xmm15, %xmm1
movapd %xmm14, %xmm0
movapd 0x20df9(%rip), %xmm10   # 0x2f040
xorpd %xmm9, %xmm10
xorpd %xmm13, %xmm13
movapd %xmm5, %xmm11
jmp 0xe2ad
movapd 0x2268f(%rip), %xmm10   # 0x308f0
andpd %xmm9, %xmm10
movapd %xmm15, %xmm1
movapd %xmm14, %xmm0
ucomisd 0x20db7(%rip), %xmm10   # 0x2f030
jbe 0xe295
movapd 0x20dbc(%rip), %xmm11   # 0x2f040
xorpd %xmm3, %xmm11
xorpd %xmm10, %xmm10
movapd %xmm9, %xmm13
jmp 0xe2ad
movapd 0x20da2(%rip), %xmm13   # 0x2f040
xorpd %xmm5, %xmm13
xorpd %xmm11, %xmm11
movapd %xmm3, %xmm10
movapd %xmm8, %xmm14
mulsd %xmm9, %xmm14
movapd %xmm5, %xmm15
mulsd %xmm7, %xmm15
addsd %xmm14, %xmm15
movapd %xmm3, %xmm14
mulsd %xmm0, %xmm14
addsd %xmm15, %xmm14
ucomisd %xmm14, %xmm12
movsd 0x20(%rsp), %xmm15
jbe 0xe2ed
addq $0x70, %rsp
popq %rbx
popq %r14
popq %r15
retq
movsd %xmm1, 0x60(%rsp)
movapd %xmm11, %xmm12
mulsd %xmm11, %xmm12
movsd %xmm4, 0x68(%rsp)
movapd %xmm0, %xmm1
movapd %xmm14, 0x30(%rsp)
movapd %xmm10, %xmm14
mulsd %xmm10, %xmm14
addsd %xmm12, %xmm14
movapd %xmm13, %xmm12
mulsd %xmm13, %xmm12
addsd %xmm14, %xmm12
sqrtsd %xmm12, %xmm12
movsd 0x20cdf(%rip), %xmm0    # 0x2f018
divsd %xmm12, %xmm0
mulsd %xmm0, %xmm10
mulsd %xmm0, %xmm11
movapd %xmm11, %xmm12
mulsd %xmm5, %xmm12
movapd %xmm9, %xmm14
mulsd %xmm10, %xmm14
subsd %xmm12, %xmm14
mulsd %xmm13, %xmm0
movapd %xmm10, %xmm12
mulsd %xmm3, %xmm12
mulsd %xmm0, %xmm5
subsd %xmm12, %xmm5
mulsd %xmm0, %xmm9
movapd %xmm0, %xmm13
mulsd %xmm11, %xmm3
subsd %xmm9, %xmm3
movapd %xmm8, %xmm9
mulsd %xmm11, %xmm9
movapd %xmm10, %xmm12
mulsd %xmm7, %xmm12
addsd %xmm9, %xmm12
movapd %xmm0, %xmm9
mulsd %xmm1, %xmm9
addsd %xmm12, %xmm9
movsd %xmm9, 0x58(%rsp)
mulsd %xmm5, %xmm8
mulsd %xmm3, %xmm7
addsd %xmm8, %xmm7
mulsd %xmm14, %xmm1
addsd %xmm7, %xmm1
movapd %xmm2, %xmm0
movapd %xmm1, %xmm2
movsd %xmm1, 0x50(%rsp)
movapd %xmm0, %xmm7
mulsd %xmm11, %xmm7
movapd %xmm10, %xmm8
mulsd %xmm6, %xmm8
addsd %xmm7, %xmm8
movapd %xmm13, %xmm7
movsd 0x8(%rsp), %xmm1
mulsd %xmm1, %xmm7
addsd %xmm8, %xmm7
movsd %xmm7, 0x48(%rsp)
mulsd %xmm5, %xmm0
mulsd %xmm3, %xmm6
addsd %xmm0, %xmm6
mulsd %xmm14, %xmm1
addsd %xmm6, %xmm1
movapd %xmm1, %xmm4
movsd %xmm1, 0x8(%rsp)
mulsd %xmm15, %xmm11
movsd 0x60(%rsp), %xmm1
mulsd %xmm1, %xmm10
addsd %xmm11, %xmm10
movsd 0x68(%rsp), %xmm0
mulsd %xmm0, %xmm13
addsd %xmm10, %xmm13
movsd %xmm13, 0x18(%rsp)
mulsd %xmm15, %xmm5
mulsd %xmm1, %xmm3
addsd %xmm5, %xmm3
mulsd %xmm0, %xmm14
addsd %xmm3, %xmm14
movapd %xmm14, 0x20(%rsp)
movq %r15, %rdi
movaps 0x30(%rsp), %xmm0
movapd %xmm9, %xmm1
movapd %xmm7, %xmm3
movsd 0x10(%rsp), %xmm5
movq %r14, %rsi
movq %rbx, %rdx
callq 0x6d96
movq %r15, %rdi
movaps 0x30(%rsp), %xmm0
movsd 0x48(%rsp), %xmm1
movsd 0x8(%rsp), %xmm2
movsd 0x18(%rsp), %xmm3
movaps 0x20(%rsp), %xmm4
movsd 0x10(%rsp), %xmm5
movq %r14, %rsi
movq %rbx, %rdx
callq 0x6d96
movq %r15, %rdi
movaps 0x30(%rsp), %xmm0
movsd 0x18(%rsp), %xmm1
movaps 0x20(%rsp), %xmm2
movsd 0x58(%rsp), %xmm3
movsd 0x50(%rsp), %xmm4
movsd 0x10(%rsp), %xmm5
movq %r14, %rsi
movq %rbx, %rdx
addq $0x70, %rsp
popq %rbx
popq %r14
popq %r15
jmp 0x6d96
nop