// File: /workspace/github_cpp_makefile_star2_O2/Luthaf[P]zeopp/voro++/src/cell.cc
// Function: voro::voronoicell_base::output_custom(char const*, int, double, double, double, double, _IO_FILE*)
void voronoicell_base::output_custom(const char *format,int i,double x,double y,double z,double r,FILE *fp) {
	char *fmp=(const_cast<char*>(format));
	std::vector<int> vi;
	std::vector<double> vd;
	while(*fmp!=0) {
		if(*fmp=='%') {
			fmp++;
			switch(*fmp) {

				// Particle-related output
				case 'i': fprintf(fp,"%d",i);break;
				case 'x': fprintf(fp,"%g",x);break;
				case 'y': fprintf(fp,"%g",y);break;
				case 'z': fprintf(fp,"%g",z);break;
				case 'q': fprintf(fp,"%g %g %g",x,y,z);break;
				case 'r': fprintf(fp,"%g",r);break;

				// Vertex-related output
				case 'w': fprintf(fp,"%d",p);break;
				case 'p': output_vertices(fp);break;
				case 'P': output_vertices(x,y,z,fp);break;
				case 'o': output_vertex_orders(fp);break;
				case 'm': fprintf(fp,"%g",0.25*max_radius_squared());break;

				// Edge-related output
				case 'g': fprintf(fp,"%d",number_of_edges());break;
				case 'E': fprintf(fp,"%g",total_edge_distance());break;
				case 'e': face_perimeters(vd);voro_print_vector(vd,fp);break;

				// Face-related output
				case 's': fprintf(fp,"%d",number_of_faces());break;
				case 'F': fprintf(fp,"%g",surface_area());break;
				case 'A': {
						  face_freq_table(vi);
						  voro_print_vector(vi,fp);
					  } break;
				case 'a': face_orders(vi);voro_print_vector(vi,fp);break;
				case 'f': face_areas(vd);voro_print_vector(vd,fp);break;
				case 't': {
						  face_vertices(vi);
						  voro_print_face_vertices(vi,fp);
					  } break;
				case 'l': normals(vd);
					  voro_print_positions(vd,fp);
					  break;
				case 'n': neighbors(vi);
					  voro_print_vector(vi,fp);
					  break;

				// Volume-related output
				case 'v': fprintf(fp,"%g",volume());break;
				case 'c': {
						  double cx,cy,cz;
						  centroid(cx,cy,cz);
						  fprintf(fp,"%g %g %g",cx,cy,cz);
					  } break;
				case 'C': {
						  double cx,cy,cz;
						  centroid(cx,cy,cz);
						  fprintf(fp,"%g %g %g",x+cx,y+cy,z+cz);
					  } break;

				// End-of-string reached
				case 0: fmp--;break;

				// The percent sign is not part of a
				// control sequence
				default: putc('%',fp);putc(*fmp,fp);
			}
		} else putc(*fmp,fp);
		fmp++;
	}
	fputs("\n",fp);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x78, %rsp
movq %rcx, %rbx
movsd %xmm3, 0x70(%rsp)
movsd %xmm2, 0x10(%rsp)
movsd %xmm1, 0x8(%rsp)
movsd %xmm0, (%rsp)
movl %edx, %ebp
movq %rsi, %r12
movq %rdi, %r14
andq $0x0, 0x40(%rsp)
xorpd %xmm0, %xmm0
andq $0x0, 0x60(%rsp)
movapd %xmm0, 0x30(%rsp)
movapd %xmm0, 0x50(%rsp)
leaq 0x27b49(%rip), %r13     # 0x30a78
movzbl (%r12), %eax
cmpl $0x25, %eax
je 0x8f51
testl %eax, %eax
je 0x9211
movsbl %al, %edi
movq %rbx, %rsi
callq 0x2250
jmp 0x9209
leaq 0x1(%r12), %r15
movzbl 0x1(%r12), %eax
leal -0x41(%rax), %ecx
cmpl $0x39, %ecx
ja 0x8f80
movslq (%r13,%rcx,4), %rax
addq %r13, %rax
jmpq *%rax
leaq 0x30(%rsp), %rsi
movq %r14, %rdi
callq 0x8c9a
jmp 0x9092
testl %eax, %eax
je 0x9209
pushq $0x25
popq %rdi
movq %rbx, %rsi
callq 0x2250
movsbl (%r15), %edi
movq %rbx, %rsi
callq 0x2250
jmp 0x9206
leaq 0x2818a(%rip), %rsi     # 0x31135
movq %rbx, %rdi
movsd 0x8(%rsp), %xmm0
jmp 0x91ff
movq %r14, %rdi
movq %rbx, %rsi
callq 0x84dc
jmp 0x9206
movq %r14, %rdi
callq 0x7c2c
mulsd 0x27a4f(%rip), %xmm0    # 0x30a28
jmp 0x91f5
leaq 0x27e6e(%rip), %rsi     # 0x30e53
movq %rbx, %rdi
movl %ebp, %edx
jmp 0x91c5
movq %r14, %rdi
movq %rbx, %rsi
callq 0x85c0
jmp 0x9206
leaq 0x2812f(%rip), %rsi     # 0x31135
movq %rbx, %rdi
movsd 0x10(%rsp), %xmm0
jmp 0x91ff
movq (%r14), %rax
leaq 0x30(%rsp), %rsi
movq %r14, %rdi
callq *(%rax)
jmp 0x9092
leaq 0x28(%rsp), %rsi
leaq 0x20(%rsp), %rdx
leaq 0x18(%rsp), %rcx
movq %r14, %rdi
callq 0x792e
movsd 0x28(%rsp), %xmm0
movsd 0x20(%rsp), %xmm1
movsd 0x18(%rsp), %xmm2
jmp 0x90ee
movl 0x1c(%r14), %edx
leaq 0x27df7(%rip), %rsi     # 0x30e53
movq %rbx, %rdi
jmp 0x91c5
leaq 0x280ca(%rip), %rsi     # 0x31135
movq %rbx, %rdi
movsd (%rsp), %xmm0
jmp 0x91ff
movq %r14, %rdi
callq 0x7718
jmp 0x91f5
leaq 0x30(%rsp), %rsi
movq %r14, %rdi
callq 0x8b9e
leaq 0x30(%rsp), %rdi
movq %rbx, %rsi
callq 0xfe8e
movq %r15, %r12
jmp 0x9209
movq %r14, %rdi
callq 0x7c9a
jmp 0x91f5
leaq 0x28(%rsp), %rsi
leaq 0x20(%rsp), %rdx
leaq 0x18(%rsp), %rcx
movq %r14, %rdi
callq 0x792e
movsd 0x28(%rsp), %xmm0
addsd (%rsp), %xmm0
movsd 0x20(%rsp), %xmm1
addsd 0x8(%rsp), %xmm1
movsd 0x18(%rsp), %xmm2
addsd 0x10(%rsp), %xmm2
leaq 0x2803a(%rip), %rsi     # 0x3112f
movq %rbx, %rdi
jmp 0x91a8
leaq 0x28031(%rip), %rsi     # 0x31135
movq %rbx, %rdi
movsd 0x70(%rsp), %xmm0
jmp 0x91ff
movq %r14, %rdi
movsd (%rsp), %xmm0
movsd 0x8(%rsp), %xmm1
movsd 0x10(%rsp), %xmm2
movq %rbx, %rsi
callq 0x8722
jmp 0x9206
movq %r14, %rdi
callq 0x8ebe
jmp 0x91b9
leaq 0x50(%rsp), %rsi
movq %r14, %rdi
callq 0x836c
leaq 0x50(%rsp), %rdi
movq %rbx, %rsi
callq 0xfdd4
movq %r15, %r12
jmp 0x9209
leaq 0x50(%rsp), %rsi
movq %r14, %rdi
callq 0x8814
jmp 0x917b
leaq 0x50(%rsp), %rsi
movq %r14, %rdi
callq 0x74ea
leaq 0x50(%rsp), %rdi
movq %rbx, %rsi
callq 0xff95
movq %r15, %r12
jmp 0x9209
leaq 0x27f9b(%rip), %rsi     # 0x3112f
movq %rbx, %rdi
movsd (%rsp), %xmm0
movsd 0x8(%rsp), %xmm1
movsd 0x10(%rsp), %xmm2
movb $0x3, %al
callq 0x21a0
jmp 0x9206
movq %r14, %rdi
callq 0x83e4
leaq 0x27c93(%rip), %rsi     # 0x30e53
movq %rbx, %rdi
movl %eax, %edx
xorl %eax, %eax
callq 0x21a0
jmp 0x9206
leaq 0x30(%rsp), %rsi
movq %r14, %rdi
callq 0x8a32
leaq 0x30(%rsp), %rdi
movq %rbx, %rsi
callq 0x100aa
movq %r15, %r12
jmp 0x9209
movq %r14, %rdi
callq 0x69f6
leaq 0x27f39(%rip), %rsi     # 0x31135
movq %rbx, %rdi
movb $0x1, %al
callq 0x21a0
movq %r15, %r12
incq %r12
jmp 0x8f2f
leaq 0x2c474(%rip), %rdi     # 0x3568c
movq %rbx, %rsi
callq 0x2130
leaq 0x50(%rsp), %rdi
callq 0xea26
leaq 0x30(%rsp), %rdi
callq 0xea5a
addq $0x78, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x9247
jmp 0x9247
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0xea26
leaq 0x30(%rsp), %rdi
callq 0xea5a
movq %rbx, %rdi
callq 0x2220