// File: /workspace/github_cpp_makefile_star2_O2/icemiliang[P]vot/src/vot/cell.cc
// Function: voro::voronoicell_base::output_pov_mesh_new(double, double, double, std::shared_ptr<std::vector<std::array<double, 3ul>, std::allocator<std::array<double, 3ul>>>>, std::shared_ptr<std::vector<std::array<int, 3ul>, std::allocator<std::array<int, 3ul>>>>)
void voronoicell_base::output_pov_mesh_new(double x, double y, double z, 
                                           std::shared_ptr<std::vector<std::array<double,3>>> pv, 
                                           std::shared_ptr<std::vector<std::array<int, 3>>>   pf) {
    int i, j, k, l, m, n;
    double *ptsp = pts;
    for (i = 0; i < p; i++, ptsp += 3){
        std::array<double, 3> tmp = { x + *ptsp*0.5, y + ptsp[1] * 0.5, z + ptsp[2] * 0.5 };
        pv->push_back(tmp);
        //v[i][0] = x + *ptsp*0.5; v[i][1] = y + ptsp[1] * 0.5; v[i][2] = z + ptsp[2] * 0.5;
    }
    // int numf = 0;
    for (i = 1; i<p; i++) for (j = 0; j<nu[i]; j++) {
        k = ed[i][j];
        if (k >= 0) {
            ed[i][j] = -1 - k;
            l = cycle_up(ed[i][nu[i] + j], k);
            m = ed[k][l]; ed[k][l] = -1 - m;
            while (m != i) {
                n = cycle_up(ed[k][nu[k] + l], m);
                std::array<int, 3> tmp = { i, k, m };
                pf->push_back(tmp);
                //f[numf][0] = i; f[numf][1] = k; f[numf++][2] = m;
                k = m; l = n;
                m = ed[k][l]; ed[k][l] = -1 - m;
            }
        }
    }
    reset_edges();
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
movq %rdx, %rbx
movq %rsi, %r15
movsd %xmm2, 0x8(%rsp)
movq %rdi, %r14
movq 0x30(%rdi), %r13
unpcklpd %xmm1, %xmm0            # xmm0 = xmm0[0],xmm1[0]
movapd %xmm0, 0x30(%rsp)
xorl %ebp, %ebp
leaq 0x10(%rsp), %r12
movl 0x18(%r14), %eax
cmpl %eax, %ebp
jge 0x18abb
movupd (%r13), %xmm0
mulpd 0x2bc7e(%rip), %xmm0    # 0x44700
addpd 0x30(%rsp), %xmm0
movapd %xmm0, 0x10(%rsp)
movsd 0x10(%r13), %xmm0
mulsd 0x2ba1c(%rip), %xmm0    # 0x444b8
addsd 0x8(%rsp), %xmm0
movsd %xmm0, 0x20(%rsp)
movq (%r15), %rdi
movq %r12, %rsi
callq 0x1eab4
incl %ebp
addq $0x18, %r13
jmp 0x18a6c
pushq $0x1
popq %r12
cltq
cmpq %rax, %r12
jge 0x18bb5
xorl %ecx, %ecx
movq 0x28(%r14), %rdx
movslq (%rdx,%r12,4), %rax
cmpq %rax, %rcx
jge 0x18ba9
movq 0x20(%r14), %rax
movq (%rax,%r12,8), %rsi
movq %rcx, 0x8(%rsp)
movslq (%rsi,%rcx,4), %rcx
testq %rcx, %rcx
js 0x18b9c
movl %ecx, %edi
notl %edi
movq 0x8(%rsp), %r8
movl %edi, (%rsi,%r8,4)
movslq (%rdx,%r12,4), %rdi
movslq %r8d, %r8
addq %rdi, %r8
movl (%rsi,%r8,4), %esi
movl (%rdx,%rcx,4), %edx
decl %edx
leal 0x1(%rsi), %r15d
cmpl %esi, %edx
movl $0x0, %edx
cmovel %edx, %r15d
movq (%rax,%rcx,8), %rdx
movslq %r15d, %rsi
movl (%rdx,%rsi,4), %ebp
movl %ebp, %edi
notl %edi
movl %edi, (%rdx,%rsi,4)
movl %ebp, %edx
cmpq %rdx, %r12
je 0x18b9c
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movq 0x28(%r14), %rdx
movslq (%rdx,%rcx,4), %rsi
movslq %r15d, %rdi
addq %rsi, %rdi
movl (%rax,%rdi,4), %eax
movslq %ebp, %r13
movl (%rdx,%r13,4), %edx
decl %edx
leal 0x1(%rax), %r15d
cmpl %eax, %edx
movl $0x0, %eax
cmovel %eax, %r15d
movl %r12d, 0x10(%rsp)
movl %ecx, 0x14(%rsp)
movl %ebp, 0x18(%rsp)
movq (%rbx), %rdi
leaq 0x10(%rsp), %rsi
callq 0x1eada
movq 0x20(%r14), %rax
movq (%rax,%r13,8), %rdx
movslq %r15d, %rsi
movl (%rdx,%rsi,4), %edi
movl %ebp, %ecx
movl %edi, %ebp
jmp 0x18b32
movq 0x8(%rsp), %rcx
incq %rcx
jmp 0x18acc
incq %r12
movl 0x18(%r14), %eax
jmp 0x18abf
movq %r14, %rdi
callq 0x1ea08
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq