// File: /workspace/github_cpp_makefile_star2_O1/Luthaf[P]zeopp/voro++/src/cell.cc
// Function: voro::voronoicell_base::minkowski_formula(double, double, double, double, double&, double&)
void voronoicell_base::minkowski_formula(double x0,double y0,double z0,double r,double &ar,double &vo) {
	const double pi=3.1415926535897932384626433832795;
	if(fabs(z0)<tol) return;
	double si;
	if(z0<0) {z0=-z0;si=-1;} else si=1;
	if(y0<0) {y0=-y0;si=-si;}
	double xs=x0*x0,ys=y0*y0,zs=z0*z0,res=xs+ys,rvs=res+zs,theta=atan(z0/y0),rs=r*r,rc=rs*r,temp,voc,arc;
	if(r<x0) {
		temp=2*theta-0.5*pi-asin((zs*xs-ys*rvs)/(res*(ys+zs)));
		voc=rc/6.*temp;
		arc=rs*0.5*temp;
	} else if(rs<res*1.0000000001) {
		temp=0.5*pi+asin((zs*xs-ys*rvs)/(res*(ys+zs)));
		voc=theta*0.5*(rs*x0-xs*x0/3.)-rc/6.*temp;
		arc=theta*x0*r-rs*0.5*temp;
	} else if(rs<rvs) {
		temp=theta-pi*0.5+asin(y0/sqrt(rs-xs));
		double temp2=(rs*x0-xs*x0/3.),
		       x2s=rs*xs/res,y2s=rs*ys/res,
		       temp3=asin((x2s-y2s-xs)/(rs-xs)),
		       temp4=asin((zs*xs-ys*rvs)/(res*(ys+zs))),
		       temp5=sqrt(rs-res);
		voc=0.5*temp*temp2+x0*y0/6.*temp5+r*rs/6*(temp3-temp4);
		arc=x0*r*temp-0.5*temp2*y0*r/((rs-xs)*temp5)+x0*y0/6.*r/temp5+rs*0.5*temp3+rs*rs/3.*2*xs*ys/(res*(rs-xs)*sqrt((rs-xs)*(rs-xs)-(x2s-y2s-xs)*(x2s-y2s-xs)))-rs*0.5*temp4;
	} else {
		voc=x0*y0*z0/6.;
		arc=0;
	}
	vo+=voc*si;
	ar+=arc*si;
}

// Assembly:
movapd %xmm0, %xmm5
movapd 0x2fd28(%rip), %xmm0    # 0x388c0
andpd %xmm2, %xmm0
movsd 0x48(%rdi), %xmm4
ucomisd %xmm0, %xmm4
ja 0x917a
pushq %r14
pushq %rbx
subq $0xb8, %rsp
movq %rdx, %r14
movq %rsi, %rbx
movapd 0x2e46d(%rip), %xmm0    # 0x37030
movapd %xmm2, %xmm7
xorpd %xmm0, %xmm7
xorl %eax, %eax
ucomisd %xmm2, %xmm7
seta %al
maxsd %xmm2, %xmm7
movapd %xmm1, %xmm6
xorpd %xmm0, %xmm6
leaq 0x2fce9(%rip), %rcx     # 0x388d0
movsd (%rcx,%rax,8), %xmm2
xorpd %xmm2, %xmm0
movsd %xmm3, 0x28(%rsp)
movapd %xmm1, %xmm4
cmpltsd %xmm6, %xmm4
movapd %xmm4, %xmm3
andnpd %xmm2, %xmm3
andpd %xmm0, %xmm4
orpd %xmm3, %xmm4
movapd %xmm4, 0xa0(%rsp)
maxsd %xmm1, %xmm6
movapd %xmm5, %xmm0
mulsd %xmm5, %xmm0
movapd %xmm6, %xmm1
mulsd %xmm6, %xmm1
movapd %xmm7, %xmm2
mulsd %xmm7, %xmm2
movsd %xmm0, (%rsp)
movapd %xmm1, 0x40(%rsp)
addsd %xmm1, %xmm0
movsd %xmm0, 0x10(%rsp)
movapd %xmm2, 0x80(%rsp)
addsd %xmm2, %xmm0
movsd %xmm0, 0x20(%rsp)
movapd %xmm7, 0x60(%rsp)
movapd %xmm7, %xmm0
movapd %xmm6, 0x70(%rsp)
divsd %xmm6, %xmm0
movsd %xmm5, 0x30(%rsp)
callq 0x2100
movsd 0x30(%rsp), %xmm2
movsd 0x28(%rsp), %xmm1
movapd %xmm1, %xmm3
mulsd %xmm1, %xmm3
movapd %xmm3, %xmm5
mulsd %xmm1, %xmm5
ucomisd %xmm1, %xmm2
jbe 0x8d36
addsd %xmm0, %xmm0
addsd 0x2fd53(%rip), %xmm0    # 0x38a00
movsd %xmm0, 0x8(%rsp)
movapd 0x40(%rsp), %xmm4
movsd 0x20(%rsp), %xmm6
mulsd %xmm4, %xmm6
movsd (%rsp), %xmm1
movapd 0x80(%rsp), %xmm2
mulsd %xmm2, %xmm1
subsd %xmm6, %xmm1
addsd %xmm2, %xmm4
movsd 0x10(%rsp), %xmm2
mulsd %xmm4, %xmm2
divsd %xmm2, %xmm1
movapd %xmm1, %xmm0
movsd %xmm3, 0x18(%rsp)
movsd %xmm5, 0x38(%rsp)
callq 0x2210
movsd 0x8(%rsp), %xmm2
subsd %xmm0, %xmm2
movsd 0x38(%rsp), %xmm12
divsd 0x2fcde(%rip), %xmm12   # 0x389f8
movsd 0x18(%rsp), %xmm1
mulsd 0x2e300(%rip), %xmm1    # 0x37028
mulsd %xmm2, %xmm12
mulsd %xmm2, %xmm1
jmp 0x914c
movsd %xmm0, 0x8(%rsp)
movsd 0x2fcac(%rip), %xmm0    # 0x389f0
movsd 0x10(%rsp), %xmm4
mulsd %xmm4, %xmm0
ucomisd %xmm3, %xmm0
jbe 0x8e23
movapd 0x40(%rsp), %xmm6
movsd 0x20(%rsp), %xmm7
mulsd %xmm6, %xmm7
movapd 0x80(%rsp), %xmm0
addsd %xmm0, %xmm6
mulsd (%rsp), %xmm0
subsd %xmm7, %xmm0
mulsd %xmm6, %xmm4
divsd %xmm4, %xmm0
movsd %xmm3, 0x18(%rsp)
movsd %xmm5, 0x38(%rsp)
callq 0x2210
addsd 0x2fc81(%rip), %xmm0    # 0x38a20
movsd 0x2e281(%rip), %xmm1    # 0x37028
movsd 0x8(%rsp), %xmm3
mulsd %xmm3, %xmm1
movsd 0x30(%rsp), %xmm5
movsd (%rsp), %xmm2
mulsd %xmm5, %xmm2
divsd 0x2fc40(%rip), %xmm2    # 0x38a08
movapd %xmm2, %xmm6
movsd 0x18(%rsp), %xmm4
movapd %xmm4, %xmm2
mulsd %xmm5, %xmm2
addsd %xmm6, %xmm2
mulsd %xmm1, %xmm2
movsd 0x38(%rsp), %xmm12
divsd 0x2fc36(%rip), %xmm12   # 0x38a28
mulsd %xmm0, %xmm12
addsd %xmm2, %xmm12
mulsd %xmm5, %xmm3
movapd %xmm4, %xmm1
mulsd 0x2fc04(%rip), %xmm1    # 0x38a10
mulsd %xmm0, %xmm1
mulsd 0x28(%rsp), %xmm3
addsd %xmm1, %xmm3
movapd %xmm3, %xmm1
jmp 0x914c
movsd 0x20(%rsp), %xmm0
ucomisd %xmm3, %xmm0
movsd (%rsp), %xmm0
jbe 0x8e71
movsd 0x8(%rsp), %xmm1
addsd 0x2fbbe(%rip), %xmm1    # 0x38a00
movsd %xmm1, 0x8(%rsp)
movsd %xmm3, 0x18(%rsp)
subsd %xmm0, %xmm3
xorpd %xmm0, %xmm0
ucomisd %xmm0, %xmm3
movsd %xmm5, 0x38(%rsp)
movsd %xmm3, 0x60(%rsp)
jb 0x8e97
xorps %xmm0, %xmm0
sqrtsd %xmm3, %xmm0
jmp 0x8ea0
movapd 0x70(%rsp), %xmm0
mulsd %xmm2, %xmm0
mulsd 0x60(%rsp), %xmm0
divsd 0x2fb6f(%rip), %xmm0    # 0x389f8
xorpd %xmm1, %xmm1
movapd %xmm0, %xmm12
jmp 0x914c
movapd %xmm3, %xmm0
callq 0x20f0
movapd 0x70(%rsp), %xmm1
divsd %xmm0, %xmm1
movapd %xmm1, %xmm0
callq 0x2210
movsd 0x8(%rsp), %xmm1
addsd %xmm0, %xmm1
movsd %xmm1, 0x8(%rsp)
movsd (%rsp), %xmm4
movapd %xmm4, %xmm0
movsd 0x30(%rsp), %xmm1
mulsd %xmm1, %xmm0
divsd 0x2fb2a(%rip), %xmm0    # 0x38a08
movsd 0x18(%rsp), %xmm3
movapd %xmm3, %xmm2
mulsd %xmm1, %xmm2
addsd %xmm0, %xmm2
movsd %xmm2, 0x90(%rsp)
movapd %xmm4, %xmm1
mulsd %xmm3, %xmm1
movsd 0x10(%rsp), %xmm2
divsd %xmm2, %xmm1
movapd %xmm3, %xmm0
mulsd 0x40(%rsp), %xmm0
divsd %xmm2, %xmm0
subsd %xmm0, %xmm1
subsd %xmm4, %xmm1
movsd %xmm1, 0x98(%rsp)
movapd %xmm1, %xmm0
divsd 0x60(%rsp), %xmm0
callq 0x2210
movsd %xmm0, 0x58(%rsp)
movsd 0x20(%rsp), %xmm2
movapd 0x40(%rsp), %xmm1
mulsd %xmm1, %xmm2
movapd 0x80(%rsp), %xmm0
addsd %xmm0, %xmm1
mulsd (%rsp), %xmm0
subsd %xmm2, %xmm0
mulsd 0x10(%rsp), %xmm1
divsd %xmm1, %xmm0
callq 0x2210
movsd 0x18(%rsp), %xmm6
movapd %xmm0, %xmm10
movapd %xmm6, %xmm0
subsd 0x10(%rsp), %xmm0
ucomisd 0x2fa9f(%rip), %xmm0    # 0x38a30
movsd %xmm10, 0x20(%rsp)
jb 0x8fa0
sqrtsd %xmm0, %xmm0
jmp 0x8fb2
callq 0x20f0
movsd 0x20(%rsp), %xmm10
movsd 0x18(%rsp), %xmm6
movsd 0x28(%rsp), %xmm4
movsd 0x2e067(%rip), %xmm11   # 0x37028
movsd 0x8(%rsp), %xmm7
movapd %xmm7, %xmm14
mulsd %xmm11, %xmm14
movapd 0x70(%rsp), %xmm8
movapd %xmm8, %xmm1
movsd 0x30(%rsp), %xmm5
mulsd %xmm5, %xmm1
movsd 0x2fa09(%rip), %xmm2    # 0x389f8
divsd %xmm2, %xmm1
movapd %xmm1, %xmm3
mulsd %xmm0, %xmm3
movsd 0x90(%rsp), %xmm13
mulsd %xmm13, %xmm14
addsd %xmm3, %xmm14
movsd 0x38(%rsp), %xmm3
divsd %xmm2, %xmm3
movsd 0x58(%rsp), %xmm9
movapd %xmm9, %xmm12
subsd %xmm10, %xmm12
mulsd 0x2f9dd(%rip), %xmm13   # 0x38a10
mulsd %xmm3, %xmm12
mulsd %xmm8, %xmm13
movsd 0x60(%rsp), %xmm3
movapd %xmm3, %xmm2
mulsd %xmm0, %xmm2
mulsd %xmm4, %xmm13
divsd %xmm2, %xmm13
mulsd %xmm4, %xmm5
mulsd %xmm7, %xmm5
addsd %xmm13, %xmm5
mulsd %xmm4, %xmm1
divsd %xmm0, %xmm1
addsd %xmm5, %xmm1
mulsd %xmm6, %xmm11
mulsd %xmm11, %xmm9
addsd %xmm1, %xmm9
mulsd %xmm6, %xmm6
divsd 0x2f98f(%rip), %xmm6    # 0x38a18
addsd %xmm6, %xmm6
movsd (%rsp), %xmm0
mulsd %xmm6, %xmm0
movapd 0x40(%rsp), %xmm1
mulsd %xmm0, %xmm1
movsd 0x10(%rsp), %xmm2
mulsd %xmm3, %xmm2
movsd 0x98(%rsp), %xmm0
mulsd %xmm0, %xmm0
mulsd %xmm3, %xmm3
subsd %xmm0, %xmm3
xorpd %xmm0, %xmm0
ucomisd %xmm0, %xmm3
jb 0x90d2
xorps %xmm0, %xmm0
sqrtsd %xmm3, %xmm0
jmp 0x9130
movapd %xmm3, %xmm0
movapd %xmm1, 0x40(%rsp)
movsd %xmm2, 0x10(%rsp)
movsd %xmm9, 0x58(%rsp)
movsd %xmm11, (%rsp)
movsd %xmm12, 0x30(%rsp)
movsd %xmm14, 0x28(%rsp)
callq 0x20f0
movsd 0x28(%rsp), %xmm14
movsd 0x30(%rsp), %xmm12
movsd (%rsp), %xmm11
movsd 0x20(%rsp), %xmm10
movsd 0x58(%rsp), %xmm9
movsd 0x10(%rsp), %xmm2
movapd 0x40(%rsp), %xmm1
mulsd %xmm0, %xmm2
divsd %xmm2, %xmm1
addsd %xmm9, %xmm1
addsd %xmm14, %xmm12
mulsd %xmm10, %xmm11
subsd %xmm11, %xmm1
movapd 0xa0(%rsp), %xmm0
mulsd %xmm0, %xmm12
addsd (%r14), %xmm12
movsd %xmm12, (%r14)
mulsd %xmm0, %xmm1
addsd (%rbx), %xmm1
movsd %xmm1, (%rbx)
addq $0xb8, %rsp
popq %rbx
popq %r14
retq
nop