// File: /workspace/github_cpp_makefile_star2_O3/Luthaf[P]zeopp/voro++/src/cell.cc
// Function: voro::voronoicell_base::voronoicell_base(double)
voronoicell_base::voronoicell_base(double max_len_sq) :
	current_vertices(init_vertices), current_vertex_order(init_vertex_order),
	current_delete_size(init_delete_size), current_delete2_size(init_delete2_size),
	current_xsearch_size(init_xsearch_size),
	ed(new int*[current_vertices]), nu(new int[current_vertices]),
	mask(new unsigned int[current_vertices]),
	pts(new double[current_vertices<<2]), tol(tolerance*max_len_sq),
	tol_cu(tol*sqrt(tol)), big_tol(big_tolerance_fac*tol), mem(new int[current_vertex_order]),
	mec(new int[current_vertex_order]),
	mep(new int*[current_vertex_order]), ds(new int[current_delete_size]),
	stacke(ds+current_delete_size), ds2(new int[current_delete2_size]),
	stacke2(ds2+current_delete2_size), xse(new int[current_xsearch_size]),
	stacke3(xse+current_xsearch_size), maskc(0) {
	int i;
	for(i=0;i<current_vertices;i++) mask[i]=0;
	for(i=0;i<3;i++) {
		mem[i]=init_n_vertices;mec[i]=0;
		mep[i]=new int[init_n_vertices*((i<<1)+1)];
	}
	mem[3]=init_3_vertices;mec[3]=0;
	mep[3]=new int[init_3_vertices*7];
	for(i=4;i<current_vertex_order;i++) {
		mem[i]=init_n_vertices;mec[i]=0;
		mep[i]=new int[init_n_vertices*((i<<1)+1)];
	}
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x18, %rsp
movaps %xmm0, (%rsp)
movq %rdi, %rbx
leaq 0x3dfa3(%rip), %rax     # 0x44c18
movq %rax, (%rdi)
movapd 0x31960(%rip), %xmm0    # 0x385e0
movupd %xmm0, 0x8(%rdi)
movl $0x20, 0x18(%rdi)
movl $0x800, %edi            # imm = 0x800
callq 0x2030
movq %rax, 0x28(%rbx)
movl $0x400, %edi            # imm = 0x400
callq 0x2030
movq %rax, 0x30(%rbx)
movl $0x400, %edi            # imm = 0x400
callq 0x2030
movq %rax, 0x38(%rbx)
movl $0x2000, %edi           # imm = 0x2000
callq 0x2030
movapd (%rsp), %xmm1
movq %rax, 0x40(%rbx)
mulsd 0x30347(%rip), %xmm1    # 0x37018
movsd %xmm1, 0x48(%rbx)
xorpd %xmm0, %xmm0
ucomisd %xmm0, %xmm1
jb 0x6ce9
xorps %xmm0, %xmm0
sqrtsd %xmm1, %xmm0
jmp 0x6cfc
movapd %xmm1, %xmm0
movapd %xmm1, (%rsp)
callq 0x20f0
movapd (%rsp), %xmm1
movhpd 0x48(%rbx), %xmm1       # xmm1 = xmm1[0],mem[0]
shufpd $0x2, 0x318e6(%rip), %xmm0 # xmm0 = xmm0[0],mem[1]
mulpd %xmm1, %xmm0
movupd %xmm0, 0x50(%rbx)
movslq 0xc(%rbx), %rax
leaq (,%rax,4), %r14
testq %rax, %rax
movq $-0x1, %r12
cmovsq %r12, %r14
leaq (,%rax,8), %r15
cmovsq %r12, %r15
movq %r14, %rdi
callq 0x2030
movq %rax, 0x60(%rbx)
movq %r14, %rdi
callq 0x2030
movq %rax, 0x68(%rbx)
movq %r15, %rdi
callq 0x2030
movq %rax, 0x70(%rbx)
movslq 0x10(%rbx), %r14
leaq (,%r14,4), %rdi
testq %r14, %r14
cmovsq %r12, %rdi
callq 0x2030
movq %rax, 0x78(%rbx)
leaq (%rax,%r14,4), %rax
movq %rax, 0x88(%rbx)
movslq 0x14(%rbx), %r14
leaq (,%r14,4), %rdi
testq %r14, %r14
cmovsq %r12, %rdi
callq 0x2030
movq %rax, 0x90(%rbx)
leaq (%rax,%r14,4), %rax
movq %rax, 0xa0(%rbx)
movslq 0x18(%rbx), %r14
leaq (,%r14,4), %rdi
testq %r14, %r14
cmovsq %r12, %rdi
callq 0x2030
movq %rax, 0xa8(%rbx)
leaq (%rax,%r14,4), %rax
movq %rax, 0xb8(%rbx)
movl $0x0, 0xc0(%rbx)
cmpl $0x0, 0x8(%rbx)
jle 0x6e01
movq 0x38(%rbx), %rax
xorl %ecx, %ecx
movl $0x0, (%rax,%rcx,4)
incq %rcx
movslq 0x8(%rbx), %rdx
cmpq %rdx, %rcx
jl 0x6dee
movl $0x20, %r14d
xorl %r15d, %r15d
movq 0x60(%rbx), %rax
movl $0x8, (%rax,%r15,4)
movq 0x68(%rbx), %rax
movl $0x0, (%rax,%r15,4)
movq %r14, %rdi
callq 0x2030
movq 0x70(%rbx), %rcx
movq %rax, (%rcx,%r15,8)
incq %r15
addq $0x40, %r14
cmpq $0x3, %r15
jne 0x6e0a
movq 0x60(%rbx), %rax
movl $0x100, 0xc(%rax)       # imm = 0x100
movq 0x68(%rbx), %rax
movl $0x0, 0xc(%rax)
movl $0x1c00, %edi           # imm = 0x1C00
callq 0x2030
movq 0x70(%rbx), %rcx
movq %rax, 0x18(%rcx)
cmpl $0x5, 0xc(%rbx)
jl 0x6ec7
movl $0x4, %r14d
movl $0x40, %r15d
movq $-0x1, %r12
movq 0x60(%rbx), %rax
movl $0x8, (%rax,%r14,4)
movq 0x68(%rbx), %rax
movl $0x0, (%rax,%r14,4)
leal 0x8(%r15), %eax
movslq %eax, %rdi
shlq $0x2, %rdi
testl %r15d, %r15d
cmovsq %r12, %rdi
callq 0x2030
movq 0x70(%rbx), %rcx
movq %rax, (%rcx,%r14,8)
incq %r14
movslq 0xc(%rbx), %rax
addl $0x10, %r15d
cmpq %rax, %r14
jl 0x6e80
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
nop