// File: /workspace/github_cpp_makefile_star2_O3/xnevs[P]bullimp/examples/../graph/ullimp_order.hpp
// Function: int ullimp::detail::clustering1<boost::adjacency_list<boost::setS, boost::vecS, boost::bidirectionalS, boost::no_property, Color, boost::no_property, boost::listS>>(boost::graph_traits<boost::adjacency_list<boost::setS, boost::vecS, boost::bidirectionalS, boost::no_property, Color, boost::no_property, boost::listS>>::vertex_descriptor, boost::adjacency_list<boost::setS, boost::vecS, boost::bidirectionalS, boost::no_property, Color, boost::no_property, boost::listS> const&)
int clustering1(typename boost::graph_traits<Graph>::vertex_descriptor u, Graph const & g) {
    using namespace boost;

    int c = 0;
    BGL_FORALL_ADJ_T(u, w, g, Graph) {
        BGL_FORALL_ADJ_T(w, r, g, Graph) {
            if(edge(r, u, g).second || edge(u, r, g).second) 
                ++c;
        }
        BGL_FORALL_INV_ADJ_T(w, r, g, Graph) {
            if(edge(r, u, g).second || edge(u, r, g).second) 
                ++c;
        }
    }
    BGL_FORALL_INV_ADJ_T(u, w, g, Graph) {
        BGL_FORALL_ADJ_T(w, r, g, Graph) {
            if(edge(r, u, g).second || edge(u, r, g).second) 
                ++c;
        }
        BGL_FORALL_INV_ADJ_T(w, r, g, Graph) {
            if(edge(r, u, g).second || edge(u, r, g).second) 
                ++c;
        }
    }
    return c;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq 0x18(%rsi), %r15
imulq $0x68, %rdi, %rax
movq %rdi, %rbx
xorl %ebp, %ebp
movq %rax, (%rsp)
leaq 0x8(%r15,%rax), %r13
leaq (%r15,%rax), %r12
movq 0x10(%r13), %rax
cmpq %r13, %rax
je 0x526b
movq %rax, 0x10(%rsp)
imulq $0x68, 0x20(%rax), %rax
leaq 0x8(%r15,%rax), %r14
movq %rax, 0x8(%rsp)
movq 0x10(%r14), %rax
cmpq %r14, %rax
je 0x51cf
movq 0x20(%rax), %rcx
imulq $0x68, %rcx, %rsi
movq 0x10(%r15,%rsi), %rdx
testq %rdx, %rdx
je 0x5193
leaq 0x8(%r15,%rsi), %rdi
movq %rdi, %rsi
xorl %r8d, %r8d
cmpq %rbx, 0x20(%rdx)
setb %r8b
cmovaeq %rdx, %rsi
movq 0x10(%rdx,%r8,8), %rdx
testq %rdx, %rdx
jne 0x516f
cmpq %rdi, %rsi
je 0x5193
cmpq %rbx, 0x20(%rsi)
jbe 0x51c3
movq 0x10(%r12), %rdx
testq %rdx, %rdx
je 0x51c5
movq %r13, %rsi
xorl %edi, %edi
cmpq %rcx, 0x20(%rdx)
setb %dil
cmovaeq %rdx, %rsi
movq 0x10(%rdx,%rdi,8), %rdx
testq %rdx, %rdx
jne 0x51a0
cmpq %r13, %rsi
je 0x51c5
cmpq %rcx, 0x20(%rsi)
ja 0x51c5
incl %ebp
movq %rax, %rdi
callq 0x2180
jmp 0x5150
movq 0x8(%rsp), %rax
leaq 0x38(%r15,%rax), %r14
movq 0x10(%r14), %rax
cmpq %r14, %rax
je 0x525c
movq 0x20(%rax), %rcx
imulq $0x68, %rcx, %rsi
movq 0x10(%r15,%rsi), %rdx
testq %rdx, %rdx
je 0x5220
leaq 0x8(%r15,%rsi), %rdi
movq %rdi, %rsi
xorl %r8d, %r8d
cmpq %rbx, 0x20(%rdx)
setb %r8b
cmovaeq %rdx, %rsi
movq 0x10(%rdx,%r8,8), %rdx
testq %rdx, %rdx
jne 0x51fc
cmpq %rdi, %rsi
je 0x5220
cmpq %rbx, 0x20(%rsi)
jbe 0x5250
movq 0x10(%r12), %rdx
testq %rdx, %rdx
je 0x5252
movq %r13, %rsi
xorl %edi, %edi
cmpq %rcx, 0x20(%rdx)
setb %dil
cmovaeq %rdx, %rsi
movq 0x10(%rdx,%rdi,8), %rdx
testq %rdx, %rdx
jne 0x522d
cmpq %r13, %rsi
je 0x5252
cmpq %rcx, 0x20(%rsi)
ja 0x5252
incl %ebp
movq %rax, %rdi
callq 0x2180
jmp 0x51dd
movq 0x10(%rsp), %rdi
callq 0x2180
jmp 0x512f
movq (%rsp), %rax
leaq 0x38(%r15,%rax), %rcx
movq 0x10(%rcx), %rax
movq %rcx, (%rsp)
cmpq %rcx, %rax
je 0x53bd
movq %rax, 0x10(%rsp)
imulq $0x68, 0x20(%rax), %rax
leaq 0x8(%r15,%rax), %r14
movq %rax, 0x8(%rsp)
movq 0x10(%r14), %rax
cmpq %r14, %rax
je 0x531c
movq 0x20(%rax), %rcx
imulq $0x68, %rcx, %rsi
movq 0x10(%r15,%rsi), %rdx
testq %rdx, %rdx
je 0x52e0
leaq 0x8(%r15,%rsi), %rdi
movq %rdi, %rsi
xorl %r8d, %r8d
cmpq %rbx, 0x20(%rdx)
setb %r8b
cmovaeq %rdx, %rsi
movq 0x10(%rdx,%r8,8), %rdx
testq %rdx, %rdx
jne 0x52bc
cmpq %rdi, %rsi
je 0x52e0
cmpq %rbx, 0x20(%rsi)
jbe 0x5310
movq 0x10(%r12), %rdx
testq %rdx, %rdx
je 0x5312
movq %r13, %rsi
xorl %edi, %edi
cmpq %rcx, 0x20(%rdx)
setb %dil
cmovaeq %rdx, %rsi
movq 0x10(%rdx,%rdi,8), %rdx
testq %rdx, %rdx
jne 0x52ed
cmpq %r13, %rsi
je 0x5312
cmpq %rcx, 0x20(%rsi)
ja 0x5312
incl %ebp
movq %rax, %rdi
callq 0x2180
jmp 0x529d
movq 0x8(%rsp), %rax
leaq 0x38(%r15,%rax), %r14
movq 0x10(%r14), %rax
cmpq %r14, %rax
je 0x53a9
movq 0x20(%rax), %rcx
imulq $0x68, %rcx, %rsi
movq 0x10(%r15,%rsi), %rdx
testq %rdx, %rdx
je 0x536d
leaq 0x8(%r15,%rsi), %rdi
movq %rdi, %rsi
xorl %r8d, %r8d
cmpq %rbx, 0x20(%rdx)
setb %r8b
cmovaeq %rdx, %rsi
movq 0x10(%rdx,%r8,8), %rdx
testq %rdx, %rdx
jne 0x5349
cmpq %rdi, %rsi
je 0x536d
cmpq %rbx, 0x20(%rsi)
jbe 0x539d
movq 0x10(%r12), %rdx
testq %rdx, %rdx
je 0x539f
movq %r13, %rsi
xorl %edi, %edi
cmpq %rcx, 0x20(%rdx)
setb %dil
cmovaeq %rdx, %rsi
movq 0x10(%rdx,%rdi,8), %rdx
testq %rdx, %rdx
jne 0x537a
cmpq %r13, %rsi
je 0x539f
cmpq %rcx, 0x20(%rsi)
ja 0x539f
incl %ebp
movq %rax, %rdi
callq 0x2180
jmp 0x532a
movq 0x10(%rsp), %rdi
callq 0x2180
cmpq (%rsp), %rax
jne 0x5285
movl %ebp, %eax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq