// File: ldionne[P]hawick_circuits/boost/graph/hawick_circuits.hpp
// Function: boost::hawick_circuits_detail::hawick_circuits_from<boost::directed_graph<boost::no_property, boost::no_property, boost::no_property>, cycle_printer<std::ostream>, boost::adj_list_vertex_property_map<boost::adjacency_list<boost::listS, boost::listS, boost::bidirectionalS, boost::property<boost::vertex_index_t, unsigned int, boost::no_property>, boost::property<boost::edge_index_t, unsigned int, boost::no_property>, boost::no_property, boost::listS>, unsigned int, unsigned int const&, boost::vertex_index_t>, std::vector<void*, std::allocator<void*>>, std::vector<std::vector<void*, std::allocator<void*>>, std::allocator<std::vector<void*, std::allocator<void*>>>>, boost::hawick_circuits_detail::get_all_adjacent_vertices>::hawick_circuits_from(boost::directed_graph<boost::no_property, boost::no_property, boost::no_property> const&, cycle_printer<std::ostream>&, boost::adj_list_vertex_property_map<boost::adjacency_list<boost::listS, boost::listS, boost::bidirectionalS, boost::property<boost::vertex_index_t, unsigned int, boost::no_property>, boost::property<boost::edge_index_t, unsigned int, boost::no_property>, boost::no_property, boost::listS>, unsigned int, unsigned int const&, boost::vertex_index_t> const&, std::vector<void*, std::allocator<void*>>&, std::vector<std::vector<void*, std::allocator<void*>>, std::allocator<std::vector<void*, std::allocator<void*>>>>&, unsigned long)
hawick_circuits_from(Graph const& graph, Visitor& visitor,
                         VertexIndexMap const& vim,
                         Stack& stack, ClosedMatrix& closed,
                         VerticesSize n_vertices)
        : graph_(graph), visitor_(visitor), vim_(vim), stack_(stack),
          closed_(closed), blocked_(n_vertices, vim_)
        {
            BOOST_ASSERT(blocked_map_starts_all_unblocked());

            // Since sharing the data structures between iterations is
            // just an optimization, it must always be equivalent to
            // constructing new ones in this constructor.
            BOOST_ASSERT(stack_.empty());
            BOOST_ASSERT(closed_.size() == n_vertices);
            BOOST_ASSERT(all_closed_rows_are_empty());
        }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq 0x10(%rbp), %rax
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq %r8, -0x28(%rbp)
movq %r9, -0x30(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x48(%rbp)
movq -0x10(%rbp), %rcx
movq %rcx, (%rax)
movq -0x18(%rbp), %rcx
movq %rcx, 0x8(%rax)
movq -0x20(%rbp), %rcx
movq %rcx, 0x10(%rax)
movq -0x28(%rbp), %rcx
movq %rcx, 0x18(%rax)
movq -0x30(%rbp), %rcx
movq %rcx, 0x20(%rax)
movq %rax, %rdi
addq $0x28, %rdi
movq %rdi, -0x50(%rbp)
movq 0x10(%rbp), %rsi
movq 0x10(%rax), %rdx
callq 0xb000
movq -0x48(%rbp), %rdi
callq 0xb070
movb %al, -0x3d(%rbp)
jmp 0x9e69
movb -0x3d(%rbp), %al
testb $0x1, %al
jne 0x9e72
jmp 0x9e74
jmp 0x9ead
leaq 0x5456(%rip), %rdi      # 0xf2d1
leaq 0x5472(%rip), %rsi      # 0xf2f4
movl $0x9a, %edx
leaq 0x54c8(%rip), %rcx      # 0xf356
callq 0x3150
movq -0x50(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
callq 0xb3a0
jmp 0x9f53
movq -0x48(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0xb1e0
testb $0x1, %al
jne 0x9ec0
jmp 0x9ec2
jmp 0x9ee1
leaq 0x590f(%rip), %rdi      # 0xf7d8
leaq 0x5424(%rip), %rsi      # 0xf2f4
movl $0x9f, %edx
leaq 0x547a(%rip), %rcx      # 0xf356
callq 0x3150
movq -0x48(%rbp), %rax
movq 0x20(%rax), %rdi
callq 0xb220
cmpq 0x10(%rbp), %rax
jne 0x9ef6
jmp 0x9f15
leaq 0x58ea(%rip), %rdi      # 0xf7e7
leaq 0x53f0(%rip), %rsi      # 0xf2f4
movl $0xa0, %edx
leaq 0x5446(%rip), %rcx      # 0xf356
callq 0x3150
movq -0x48(%rbp), %rdi
callq 0xb250
movb %al, -0x51(%rbp)
jmp 0x9f23
movb -0x51(%rbp), %al
testb $0x1, %al
jne 0x9f2c
jmp 0x9f2e
jmp 0x9f4d
leaq 0x58cf(%rip), %rdi      # 0xf804
leaq 0x53b8(%rip), %rsi      # 0xf2f4
movl $0xa1, %edx
leaq 0x540e(%rip), %rcx      # 0xf356
callq 0x3150
addq $0x60, %rsp
popq %rbp
retq
movq -0x38(%rbp), %rdi
callq 0x32e0
nopl (%rax)