// File: /workspace/github_cpp_makefile_star2_O2/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, %rbx
movq %rdx, %r15
movl %esi, -0x2c(%rbp)
leaq -0x80(%rbp), %rax
andl $0x0, (%rax)
andq $0x0, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
andq $0x0, 0x20(%rax)
movq %rdi, %r12
xorl %eax, %eax
leaq -0x58(%rbp), %r13
movl %eax, -0x58(%rbp)
cmpl -0x2c(%rbp), %eax
jae 0x25ce
movq %r12, %rdi
callq 0x3084
movq %rax, %r14
leaq -0x88(%rbp), %rdi
movq %r13, %rsi
callq 0x2fe0
movq %r14, (%rax)
movl -0x58(%rbp), %eax
incl %eax
jmp 0x25a2
leaq -0x88(%rbp), %r14
movb 0xc(%r15), %al
cmpb 0xc(%rbx), %al
jne 0x25f2
testb %al, %al
je 0x2688
movq (%r15), %rax
cmpq (%rbx), %rax
je 0x2688
leaq -0x58(%rbp), %rdi
movq %r15, %rsi
xorl %edx, %edx
callq 0x3032
movl -0x50(%rbp), %eax
movl %eax, -0x34(%rbp)
movb 0xc(%r15), %al
cmpb 0xc(%rbx), %al
jne 0x2623
testb %al, %al
je 0x26c6
movq (%r15), %rax
cmpq (%rbx), %rax
je 0x26c6
movl 0x8(%r15), %eax
movl %eax, -0x30(%rbp)
movq %r14, %rdi
leaq -0x34(%rbp), %rsi
callq 0x3060
cmpq $0x1, %rax
jne 0x26ad
movq %r14, %rdi
leaq -0x30(%rbp), %rsi
callq 0x3060
cmpq $0x1, %rax
jne 0x26ad
movq %r14, %rdi
leaq -0x34(%rbp), %rsi
callq 0x2fe0
movq (%rax), %r13
movq %r14, %rdi
leaq -0x30(%rbp), %rsi
callq 0x2fe0
movq (%rax), %rcx
leaq -0x58(%rbp), %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0x3608
movq %r15, %rdi
callq 0x2f5c
jmp 0x25d5
movl -0x2c(%rbp), %eax
cmpq %rax, 0x38(%r12)
jne 0x26e3
leaq -0x88(%rbp), %rdi
callq 0x3a08
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x2ac6(%rip), %rdi      # 0x517a
leaq 0x29f9(%rip), %rsi      # 0x50b4
leaq 0x2a06(%rip), %rcx      # 0x50c8
pushq $0x49
jmp 0x26dd
leaq 0x299d(%rip), %rdi      # 0x506a
leaq 0x29e0(%rip), %rsi      # 0x50b4
leaq 0x29ed(%rip), %rcx      # 0x50c8
pushq $0x44
popq %rdx
callq 0x2110
leaq 0x2b04(%rip), %rdi      # 0x51ee
leaq 0x29c3(%rip), %rsi      # 0x50b4
leaq 0x29d0(%rip), %rcx      # 0x50c8
pushq $0x4d
jmp 0x26dd
jmp 0x2704
jmp 0x2704
jmp 0x2704
jmp 0x2704
movq %rax, %rbx
leaq -0x88(%rbp), %rdi
callq 0x3a08
movq %rbx, %rdi
callq 0x2280
nop