// File: /workspace/github_cpp_makefile_star2_O1/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 $0xc0, %rsp
movsd %xmm0, 0x28(%rsp)
movq %rdi, %r15
movq 0x40(%rdi), %rax
leal (,%rsi,4), %edi
movslq %edi, %rdi
movsd (%rax,%rdi,8), %xmm13
leal 0x1(,%rsi,4), %edi
movslq %edi, %rdi
movsd (%rax,%rdi,8), %xmm9
leal 0x2(,%rsi,4), %esi
movslq %esi, %rsi
movsd (%rax,%rsi,8), %xmm4
leal (,%rdx,4), %esi
movslq %esi, %rsi
movsd (%rax,%rsi,8), %xmm8
leal 0x1(,%rdx,4), %esi
movslq %esi, %rsi
movsd (%rax,%rsi,8), %xmm12
leal 0x2(,%rdx,4), %edx
movslq %edx, %rdx
movsd (%rax,%rdx,8), %xmm5
leal (,%rcx,4), %edx
movslq %edx, %rdx
movsd (%rax,%rdx,8), %xmm6
leal 0x1(,%rcx,4), %edx
movslq %edx, %rdx
movsd (%rax,%rdx,8), %xmm10
leal 0x2(,%rcx,4), %ecx
movslq %ecx, %rcx
movsd (%rax,%rcx,8), %xmm7
movapd %xmm8, %xmm0
subsd %xmm13, %xmm0
movapd %xmm12, %xmm14
subsd %xmm9, %xmm14
movapd %xmm5, %xmm11
subsd %xmm4, %xmm11
movapd %xmm6, %xmm1
subsd %xmm8, %xmm1
movapd %xmm10, %xmm2
subsd %xmm12, %xmm2
movapd %xmm7, %xmm3
movsd %xmm5, 0x20(%rsp)
subsd %xmm5, %xmm3
movapd %xmm0, %xmm15
mulsd %xmm3, %xmm15
mulsd %xmm14, %xmm3
mulsd %xmm1, %xmm14
mulsd %xmm11, %xmm1
mulsd %xmm2, %xmm11
subsd %xmm3, %xmm11
subsd %xmm1, %xmm15
mulsd %xmm0, %xmm2
subsd %xmm2, %xmm14
movapd %xmm15, %xmm0
mulsd %xmm15, %xmm0
movapd %xmm11, %xmm1
mulsd %xmm11, %xmm1
addsd %xmm0, %xmm1
movapd %xmm14, %xmm0
mulsd %xmm14, %xmm0
addsd %xmm1, %xmm0
movsd 0x48(%r15), %xmm1
mulsd %xmm1, %xmm1
ucomisd %xmm0, %xmm1
ja 0x1189e
movq %r9, %rbx
movq %r8, %r14
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
movsd %xmm4, 0x8(%rsp)
movsd %xmm6, 0x40(%rsp)
movsd %xmm7, 0x98(%rsp)
movsd %xmm8, 0x68(%rsp)
movsd %xmm10, 0x60(%rsp)
movsd %xmm12, 0x58(%rsp)
movsd %xmm13, (%rsp)
movsd %xmm9, 0x50(%rsp)
jb 0x116de
sqrtsd %xmm0, %xmm0
jmp 0x11713
movapd %xmm14, 0x10(%rsp)
movapd %xmm11, 0x30(%rsp)
movapd %xmm15, 0x80(%rsp)
callq 0x20f0
movapd 0x80(%rsp), %xmm15
movapd 0x30(%rsp), %xmm11
movapd 0x10(%rsp), %xmm14
movsd 0x258ed(%rip), %xmm1    # 0x37008
divsd %xmm0, %xmm1
mulsd %xmm1, %xmm11
mulsd %xmm1, %xmm15
mulsd %xmm1, %xmm14
movapd 0x2718a(%rip), %xmm0    # 0x388c0
andpd %xmm11, %xmm0
ucomisd 0x258e5(%rip), %xmm0    # 0x37028
jbe 0x1175e
movapd 0x258e2(%rip), %xmm13   # 0x37030
xorpd %xmm15, %xmm13
xorpd %xmm2, %xmm2
movapd %xmm11, %xmm5
jmp 0x117a4
movapd 0x2715a(%rip), %xmm0    # 0x388c0
andpd %xmm15, %xmm0
ucomisd 0x258b5(%rip), %xmm0    # 0x37028
jbe 0x1178e
movapd 0x258b3(%rip), %xmm5    # 0x37030
xorpd %xmm14, %xmm5
xorpd %xmm13, %xmm13
movapd %xmm15, %xmm2
jmp 0x117a4
movapd 0x2589a(%rip), %xmm2    # 0x37030
xorpd %xmm11, %xmm2
xorpd %xmm5, %xmm5
movapd %xmm14, %xmm13
movapd %xmm5, %xmm0
mulsd %xmm5, %xmm0
movapd %xmm13, %xmm1
mulsd %xmm13, %xmm1
addsd %xmm0, %xmm1
movapd %xmm2, 0x70(%rsp)
movapd %xmm2, %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jb 0x117dc
sqrtsd %xmm0, %xmm0
jmp 0x11837
movapd %xmm14, 0x10(%rsp)
movapd %xmm11, 0x30(%rsp)
movapd %xmm15, 0x80(%rsp)
movapd %xmm13, 0xb0(%rsp)
movapd %xmm5, 0xa0(%rsp)
callq 0x20f0
movapd 0xa0(%rsp), %xmm5
movapd 0xb0(%rsp), %xmm13
movapd 0x80(%rsp), %xmm15
movapd 0x30(%rsp), %xmm11
movapd 0x10(%rsp), %xmm14
movsd 0x8(%rsp), %xmm2
movsd 0x40(%rsp), %xmm4
movsd 0x68(%rsp), %xmm6
movsd 0x60(%rsp), %xmm7
movsd 0x58(%rsp), %xmm8
movsd (%rsp), %xmm10
movsd 0x50(%rsp), %xmm12
movapd %xmm12, %xmm1
mulsd %xmm15, %xmm1
movapd %xmm11, %xmm3
mulsd %xmm10, %xmm3
addsd %xmm1, %xmm3
movapd %xmm14, %xmm9
mulsd %xmm2, %xmm9
addsd %xmm3, %xmm9
movsd 0x48(%r15), %xmm1
movapd %xmm9, 0x10(%rsp)
ucomisd %xmm9, %xmm1
jbe 0x118ab
addq $0xc0, %rsp
popq %rbx
popq %r14
popq %r15
retq
movsd 0x25755(%rip), %xmm1    # 0x37008
divsd %xmm0, %xmm1
mulsd %xmm1, %xmm13
mulsd %xmm1, %xmm5
movapd %xmm5, %xmm0
mulsd %xmm11, %xmm0
movapd %xmm15, %xmm9
mulsd %xmm13, %xmm9
subsd %xmm0, %xmm9
movapd 0x70(%rsp), %xmm3
mulsd %xmm1, %xmm3
movapd %xmm13, %xmm0
mulsd %xmm14, %xmm0
mulsd %xmm3, %xmm11
subsd %xmm0, %xmm11
mulsd %xmm3, %xmm15
mulsd %xmm5, %xmm14
subsd %xmm15, %xmm14
movapd %xmm12, %xmm0
mulsd %xmm5, %xmm0
movapd %xmm13, %xmm1
mulsd %xmm10, %xmm1
addsd %xmm0, %xmm1
movapd %xmm3, %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movapd %xmm0, %xmm1
movsd %xmm0, 0x30(%rsp)
mulsd %xmm11, %xmm12
mulsd %xmm14, %xmm10
addsd %xmm12, %xmm10
mulsd %xmm9, %xmm2
addsd %xmm10, %xmm2
movsd %xmm2, 0x8(%rsp)
movapd %xmm8, %xmm0
mulsd %xmm5, %xmm0
movapd %xmm13, %xmm10
mulsd %xmm6, %xmm10
addsd %xmm0, %xmm10
movapd %xmm3, %xmm12
movsd 0x20(%rsp), %xmm0
mulsd %xmm0, %xmm12
addsd %xmm10, %xmm12
movsd %xmm12, (%rsp)
mulsd %xmm11, %xmm8
mulsd %xmm14, %xmm6
addsd %xmm8, %xmm6
mulsd %xmm9, %xmm0
addsd %xmm6, %xmm0
movapd %xmm4, %xmm6
movapd %xmm0, %xmm4
movsd %xmm0, 0x20(%rsp)
mulsd %xmm7, %xmm5
mulsd %xmm6, %xmm13
addsd %xmm5, %xmm13
movsd 0x98(%rsp), %xmm0
mulsd %xmm0, %xmm3
addsd %xmm13, %xmm3
movapd %xmm3, 0x70(%rsp)
mulsd %xmm7, %xmm11
mulsd %xmm6, %xmm14
addsd %xmm11, %xmm14
mulsd %xmm0, %xmm9
addsd %xmm14, %xmm9
movapd %xmm9, 0x40(%rsp)
movq %r15, %rdi
movaps 0x10(%rsp), %xmm0
movapd %xmm12, %xmm3
movsd 0x28(%rsp), %xmm5
movq %r14, %rsi
movq %rbx, %rdx
callq 0x89ee
movq %r15, %rdi
movaps 0x10(%rsp), %xmm0
movsd (%rsp), %xmm1
movsd 0x20(%rsp), %xmm2
movaps 0x70(%rsp), %xmm3
movaps 0x40(%rsp), %xmm4
movsd 0x28(%rsp), %xmm5
movq %r14, %rsi
movq %rbx, %rdx
callq 0x89ee
movq %r15, %rdi
movaps 0x10(%rsp), %xmm0
movaps 0x70(%rsp), %xmm1
movaps 0x40(%rsp), %xmm2
movsd 0x30(%rsp), %xmm3
movsd 0x8(%rsp), %xmm4
movsd 0x28(%rsp), %xmm5
movq %r14, %rsi
movq %rbx, %rdx
addq $0xc0, %rsp
popq %rbx
popq %r14
popq %r15
jmp 0x89ee
nop