// File: /workspace/github_cpp_makefile_star2_O3/ldionne[P]hawick_circuits/hawick_circuits.cpp
// Function: void build_graph<boost::directed_graph<boost::no_property, boost::no_property, boost::no_property>, std::istream_iterator<unsigned int, char, std::char_traits<char>, long>>(boost::directed_graph<boost::no_property, boost::no_property, boost::no_property>&, unsigned int, std::istream_iterator<unsigned int, char, std::char_traits<char>, long>, std::istream_iterator<unsigned int, char, std::char_traits<char>, long>)
void build_graph(Graph& graph, unsigned int const nvertices,
                 VertexPairIterator first, VertexPairIterator last) {
    typedef boost::graph_traits<Graph> Traits;
    typedef typename Traits::vertex_descriptor vertex_descriptor;
    std::map<unsigned int, vertex_descriptor> vertices;

    for (unsigned int i = 0; i < nvertices; ++i)
        vertices[i] = add_vertex(graph);

    for (; first != last; ++first) {
        unsigned int u = *first++;

        BOOST_ASSERT_MSG(first != last,
            "there is a lonely vertex at the end of the edge list");

        unsigned int v = *first;

        BOOST_ASSERT_MSG(vertices.count(u) == 1 && vertices.count(v) == 1,
            "specified a vertex over the number of vertices in the graph");

        add_edge(vertices[u], vertices[v], graph);
    }
    BOOST_ASSERT(num_vertices(graph) == nvertices);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x68, %rsp
movq %rcx, %r14
movq %rdx, %r12
movq %rdi, -0x38(%rbp)
leaq -0x88(%rbp), %rbx
xorl %eax, %eax
movl %eax, (%rbx)
movq %rax, 0x8(%rbx)
movq %rbx, 0x10(%rbx)
movq %rbx, 0x18(%rbx)
movq %rax, 0x20(%rbx)
movl %eax, -0x60(%rbp)
movl %esi, -0x2c(%rbp)
testl %esi, %esi
je 0x2699
leaq -0x60(%rbp), %r15
movq -0x38(%rbp), %rdi
callq 0x3224
movq %rax, %r13
leaq -0x90(%rbp), %rdi
movq %r15, %rsi
callq 0x31bc
movq %r13, (%rax)
movl -0x60(%rbp), %eax
incl %eax
movl %eax, -0x60(%rbp)
cmpl -0x2c(%rbp), %eax
jb 0x266e
leaq -0x90(%rbp), %r13
movb 0xc(%r12), %al
cmpb 0xc(%r14), %al
jne 0x26c0
testb %al, %al
je 0x27ba
movq (%r12), %rax
cmpq (%r14), %rax
je 0x27ba
movl 0x8(%r12), %r15d
movq %r12, %rdi
callq 0x3134
movl %r15d, -0x40(%rbp)
movb 0xc(%r12), %al
cmpb 0xc(%r14), %al
jne 0x26f1
testb %al, %al
je 0x2801
movq (%r12), %rax
cmpq (%r14), %rax
je 0x2801
movl 0x8(%r12), %eax
movl %eax, -0x3c(%rbp)
movq -0x80(%rbp), %rcx
testq %rcx, %rcx
je 0x27e2
movq %rcx, %r9
movq %rbx, %r8
movq %r8, %rdx
movq %r9, %rsi
movl 0x20(%r9), %edi
xorl %r9d, %r9d
cmpl %r15d, %edi
setb %r9b
movq %rsi, %r8
cmovbq %rdx, %r8
movq 0x10(%rsi,%r9,8), %r9
testq %r9, %r9
jne 0x270c
cmpq %rbx, %r8
je 0x27e2
cmpl %r15d, %edi
cmovbq %rdx, %rsi
cmpl 0x20(%rsi), %r15d
jb 0x27e2
movq %rbx, %r8
movq %r8, %rdx
movq %rcx, %rsi
movl 0x20(%rcx), %edi
xorl %ecx, %ecx
cmpl %eax, %edi
setb %cl
movq %rsi, %r8
cmovbq %rdx, %r8
movq 0x10(%rsi,%rcx,8), %rcx
testq %rcx, %rcx
jne 0x274e
cmpq %rbx, %r8
je 0x27e2
cmpl %eax, %edi
cmovbq %rdx, %rsi
cmpl 0x20(%rsi), %eax
jb 0x27e2
movq %r13, %rdi
leaq -0x40(%rbp), %rsi
callq 0x31bc
movq (%rax), %r15
movq %r13, %rdi
leaq -0x3c(%rbp), %rsi
callq 0x31bc
movq (%rax), %rcx
leaq -0x60(%rbp), %rdi
movq -0x38(%rbp), %rsi
movq %r15, %rdx
callq 0x34bc
movq %r12, %rdi
callq 0x3134
jmp 0x26a0
movl -0x2c(%rbp), %eax
movq -0x38(%rbp), %rcx
cmpq %rax, 0x38(%rcx)
jne 0x2820
leaq -0x90(%rbp), %rdi
callq 0x358c
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x2991(%rip), %rdi      # 0x517a
leaq 0x28c4(%rip), %rsi      # 0x50b4
leaq 0x28d1(%rip), %rcx      # 0x50c8
movl $0x49, %edx
callq 0x2100
leaq 0x2862(%rip), %rdi      # 0x506a
leaq 0x28a5(%rip), %rsi      # 0x50b4
leaq 0x28b2(%rip), %rcx      # 0x50c8
movl $0x44, %edx
callq 0x2100
leaq 0x29c7(%rip), %rdi      # 0x51ee
leaq 0x2886(%rip), %rsi      # 0x50b4
leaq 0x2893(%rip), %rcx      # 0x50c8
movl $0x4d, %edx
callq 0x2100
jmp 0x2847
jmp 0x2847
jmp 0x2847
jmp 0x2847
movq %rax, %rbx
leaq -0x90(%rbp), %rdi
callq 0x358c
movq %rbx, %rdi
callq 0x2260