// File: /workspace/github_cpp_makefile_star2_O3/splatlab[P]debgr/debruijn_graph.cc
// Function: void dna::debruijn_graph::print_graph<std::stack>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, dna::debruijn_graph::nodes_container<std::stack>, dna::debruijn_graph::edges_container<std::stack>, std::ostream&) const
void debruijn_graph::print_graph(string name,
																		 nodes_container<Q> nodes,
																		 edges_container<Q> edges,
																		 ostream &os) const {
			os << "digraph " << name << " {" << endl;
			for (const auto & n : nodes) {
				os << "  "
					<< (string)n
					<< "[ label=\""
					<< (string)n
					<< "\\n("
					<< get_left_ends(n) << ", "
					<< get_right_ends(n) 
					<< ")\", style=filled, fillcolor="
					<< ((get_left_ends(n) + get_right_ends(n)) ? "grey" : "white")
					<< ", shape="
					<< (can_have_duplex_edges(n) ? "diamond" : "ellipse")
					<<" ];" << endl;
			}
			for (const auto & e : edges) {
				node ln = left_node(e);
				node rn = right_node(e);
				os << "  "
					<< (string)ln << " -> "
					<< (string)rn << "[ label=\"("
					<< (string)e << ", "
					<< get_occurences(e)
					<< ")\", tailport="
					<< (is_left_edge(ln, e) ? "w" : is_right_edge(ln, e) ? "e" : "s")
					<< ", headport="
					<< (is_left_edge(rn, e) ? "w" : is_right_edge(rn, e) ? "e" : "s")
					<<" ];" << endl;
			}
			os << "}" << endl;
		}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x378, %rsp            # imm = 0x378
movq %r8, %r15
movq %rcx, 0x10(%rsp)
movq %rdx, %rbx
movq %rsi, %r14
movq %rdi, %r12
leaq 0xbfaf(%rip), %rsi      # 0x14820
movl $0x8, %edx
movq %r8, %rdi
callq 0x2280
movq (%r14), %rsi
movq 0x8(%r14), %rdx
movq %r15, (%rsp)
movq %r15, %rdi
callq 0x2280
movq %rax, %r14
leaq 0xbf8e(%rip), %rsi      # 0x14829
movl $0x2, %edx
movq %rax, %rdi
callq 0x2280
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2210
movsbl %al, %esi
movq %r14, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2150
leaq 0xb8(%rsp), %rdi
movq %rbx, %rsi
callq 0xc198
leaq 0x218(%rsp), %rdi
movq %rbx, %rsi
callq 0xc232
leaq 0x38(%r12), %rax
movq %rax, 0x8(%rsp)
movq %r12, 0x18(%rsp)
leaq 0x60(%r12), %r13
movq 0xf0(%rsp), %rax
cmpq 0xd0(%rsp), %rax
jne 0x892b
movq 0x230(%rsp), %rcx
cmpq %rcx, 0x250(%rsp)
je 0x8b87
cmpq 0xf8(%rsp), %rax
jne 0x8949
movq 0x108(%rsp), %rax
movq -0x8(%rax), %rax
movl $0x1e0, %ecx            # imm = 0x1E0
addq %rcx, %rax
movl -0x28(%rax), %r15d
movq -0x20(%rax), %r14
movl %r15d, 0x60(%rsp)
movq %r14, 0x68(%rsp)
movl $0x2, %edx
movq (%rsp), %rdi
leaq 0xbec1(%rip), %rsi      # 0x1482c
callq 0x2280
leaq 0x40(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x2892
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
movq (%rsp), %rdi
callq 0x2280
movq %rax, %rbx
movl $0x9, %edx
movq %rax, %rdi
leaq 0xbe8b(%rip), %rsi      # 0x1482f
callq 0x2280
leaq 0x20(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x2892
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
movq %rbx, %rdi
callq 0x2280
movq %rax, %rbx
movl $0x3, %edx
movq %rax, %rdi
leaq 0xbe5d(%rip), %rsi      # 0x14839
callq 0x2280
leal (%r15,%r15), %ecx
movq $-0x1, %rbp
shlq %cl, %rbp
cmpl $0x20, %r15d
notq %rbp
movq $-0x1, %rax
cmoveq %rax, %rbp
movq %r14, %rdi
movq %rbp, %rsi
callq 0xf992
movq 0x8(%rsp), %rdi
movq %rax, %rsi
xorl %edx, %edx
callq 0x120d0
movq %rbx, %rdi
movq %rax, %rsi
callq 0x2140
movq %rax, %rbx
movl $0x2, %edx
movq %rax, %rdi
leaq 0xbe05(%rip), %rsi      # 0x1483d
callq 0x2280
movq %r14, %rdi
movq %rbp, %rsi
callq 0xf992
movq %r13, %rdi
movq %rax, %rsi
xorl %edx, %edx
callq 0x120d0
movq %rbx, %rdi
movq %rax, %rsi
callq 0x2140
movq %rax, %rbx
movl $0x1c, %edx
movq %rax, %rdi
leaq 0xbdce(%rip), %rsi      # 0x14840
callq 0x2280
movq %r14, %rdi
movq %rbp, %rsi
callq 0xf992
movq 0x8(%rsp), %rdi
movq %rax, %rsi
xorl %edx, %edx
callq 0x120d0
movq %rax, %r12
movq %r14, %rdi
movq %rbp, %rsi
callq 0xf992
movq %r13, %rdi
movq %rax, %rsi
xorl %edx, %edx
callq 0x120d0
xorl %edx, %edx
addq %rax, %r12
sete %dl
leaq 0xbda2(%rip), %rsi      # 0x1485d
leaq 0xbda0(%rip), %rax      # 0x14862
cmoveq %rax, %rsi
orq $0x4, %rdx
movq %rbx, %rdi
callq 0x2280
movl $0x8, %edx
movq %rbx, %rdi
leaq 0xbd87(%rip), %rsi      # 0x14868
callq 0x2280
movl %r15d, %edi
movq %r14, %rsi
callq 0x31c8
testb %al, %al
leaq 0xbd7f(%rip), %rsi      # 0x14879
leaq 0xbd70(%rip), %rax      # 0x14871
cmovneq %rax, %rsi
movl $0x7, %edx
movq %rbx, %rdi
callq 0x2280
movl $0x3, %edx
movq %rbx, %rdi
leaq 0xbd60(%rip), %rsi      # 0x14881
callq 0x2280
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2210
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2150
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x8b61
callq 0x2200
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x8b75
callq 0x2200
leaq 0xb8(%rsp), %rdi
callq 0xc2a2
jmp 0x8903
leaq 0x270(%rsp), %rdi
callq 0xc6f4
leaq 0x220(%rsp), %rdi
callq 0xc946
leaq 0x110(%rsp), %rdi
callq 0xc6f4
leaq 0xc0(%rsp), %rdi
callq 0xc946
leaq 0xb8(%rsp), %r14
movq %r14, %rdi
movq 0x10(%rsp), %rbx
movq %rbx, %rsi
callq 0xbd6e
leaq 0x218(%rsp), %r15
movq %r15, %rdi
movq %rbx, %rsi
callq 0xbe08
movl $0x130, %eax            # imm = 0x130
leaq (%r14,%rax), %rcx
movq %rcx, 0x10(%rsp)
addq %r15, %rax
movq %rax, 0x80(%rsp)
movq 0x18(%rsp), %rbx
addq $0x8, %rbx
movq %rbx, 0x18(%rsp)
movq 0x210(%rsp), %rax
cmpq 0x10(%rsp), %rax
jne 0x8c32
movq 0x80(%rsp), %rcx
cmpq %rcx, 0x370(%rsp)
je 0x8edc
movl 0x20(%rax), %r13d
movq 0x28(%rax), %r14
movl %r13d, 0xa8(%rsp)
movq %r14, 0xb0(%rsp)
leal -0x1(%r13), %ebp
movl %r13d, %edi
movq %r14, %rsi
movl %ebp, %edx
callq 0x2bc4
movl %eax, %edi
movq %rdx, %rsi
callq 0x2a77
movl %eax, %r12d
movq %rdx, %rbx
movl %eax, 0x98(%rsp)
movq %rdx, 0xa0(%rsp)
movq %r14, %rsi
movl %ebp, %edx
callq 0x2c19
movl %eax, %edi
movq %rdx, %rsi
callq 0x2a77
movl %eax, %r15d
movq %rdx, %rbp
movl %eax, 0x88(%rsp)
movq %rdx, 0x90(%rsp)
movl $0x2, %edx
movq (%rsp), %rdi
leaq 0xbb79(%rip), %rsi      # 0x1482c
callq 0x2280
movl %r15d, 0x8(%rsp)
leaq 0x40(%rsp), %rdi
leaq 0x98(%rsp), %rsi
callq 0x2892
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
movq (%rsp), %rdi
callq 0x2280
movq %rax, %r15
movl $0x4, %edx
movq %rax, %rdi
leaq 0xbb91(%rip), %rsi      # 0x14885
callq 0x2280
leaq 0x20(%rsp), %rdi
leaq 0x88(%rsp), %rsi
callq 0x2892
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
movq %r15, %rdi
callq 0x2280
movq %rax, %r15
movl $0xa, %edx
movq %rax, %rdi
leaq 0xbb5b(%rip), %rsi      # 0x1488a
callq 0x2280
leaq 0x60(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
callq 0x2892
movq 0x60(%rsp), %rsi
movq 0x68(%rsp), %rdx
movq %r15, %rdi
callq 0x2280
movq %rax, %r15
movl $0x2, %edx
movq %rax, %rdi
leaq 0xbad3(%rip), %rsi      # 0x1483d
callq 0x2280
movq 0x18(%rsp), %rdi
movl %r13d, %esi
movq %r14, %rdx
callq 0x9978
movq %r15, %rdi
movq %rax, %rsi
callq 0x2140
movq %rax, %r15
movl $0xd, %edx
movq %rax, %rdi
leaq 0xbaf9(%rip), %rsi      # 0x14895
callq 0x2280
movl %r12d, %edi
movq %rbx, %rsi
movl %r13d, %edx
movq %r14, %rcx
callq 0x46cb
leaq 0xbaea(%rip), %rsi      # 0x148a3
testb %al, %al
jne 0x8de2
movl %r12d, %edi
movq %rbx, %rsi
movl %r13d, %edx
movq %r14, %rcx
callq 0x4752
testb %al, %al
leaq 0xba12(%rip), %rsi      # 0x147e9
leaq 0xb928(%rip), %rax      # 0x14706
cmovneq %rax, %rsi
movl $0x1, %edx
movq %r15, %rdi
callq 0x2280
movl $0xb, %edx
movq %r15, %rdi
leaq 0xbaa7(%rip), %rsi      # 0x148a5
callq 0x2280
movl 0x8(%rsp), %ebx
movl %ebx, %edi
movq %rbp, %rsi
movl %r13d, %edx
movq %r14, %rcx
callq 0x46cb
leaq 0xba85(%rip), %rsi      # 0x148a3
testb %al, %al
jne 0x8e46
movl %ebx, %edi
movq %rbp, %rsi
movl %r13d, %edx
movq %r14, %rcx
callq 0x4752
testb %al, %al
leaq 0xb9ae(%rip), %rsi      # 0x147e9
leaq 0xb8c4(%rip), %rax      # 0x14706
cmovneq %rax, %rsi
movl $0x1, %edx
movq %r15, %rdi
callq 0x2280
movl $0x3, %edx
movq %r15, %rdi
leaq 0xba1f(%rip), %rsi      # 0x14881
callq 0x2280
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x2210
movsbl %al, %esi
movq %r15, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2150
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x8ea2
callq 0x2200
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x8eb6
callq 0x2200
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x8eca
callq 0x2200
leaq 0xb8(%rsp), %rdi
callq 0xbe78
jmp 0x8c0d
movl $0x128, %ebx            # imm = 0x128
leaq 0x218(%rsp), %r12
leaq (%r12,%rbx), %rdi
callq 0xc756
movl $0xf0, %r14d
leaq (%r12,%r14), %rdi
callq 0xc6f4
movl $0xa0, %r15d
addq %r15, %r12
movq %r12, %rdi
callq 0xc946
leaq 0x278(%rsp), %rdi
callq 0xc6f4
leaq 0x228(%rsp), %rdi
callq 0xc946
leaq 0xb8(%rsp), %r12
addq %r12, %rbx
movq %rbx, %rdi
callq 0xc756
addq %r12, %r14
movq %r14, %rdi
callq 0xc6f4
addq %r15, %r12
movq %r12, %rdi
callq 0xc946
leaq 0x118(%rsp), %rdi
callq 0xc6f4
leaq 0xc8(%rsp), %rdi
callq 0xc946
leaq 0xb93b(%rip), %rsi      # 0x148b1
movl $0x1, %edx
movq (%rsp), %rbx
movq %rbx, %rdi
callq 0x2280
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2210
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2150
addq $0x378, %rsp            # imm = 0x378
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
jmp 0x9043
movq %rax, %rbx
jmp 0x9097
jmp 0x8fd5
jmp 0x8fd5
jmp 0x8fe8
jmp 0x8fed
movq %rax, %rbx
jmp 0x9036
jmp 0x8fe0
jmp 0x8fe0
jmp 0x8ff2
movq %rax, %rbx
jmp 0x907d
movq %rax, %rbx
jmp 0x900e
movq %rax, %rbx
jmp 0x9022
movq %rax, %rbx
jmp 0x9069
movq %rax, %rbx
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x900e
callq 0x2200
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x9022
callq 0x2200
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x9036
callq 0x2200
leaq 0x218(%rsp), %rdi
callq 0xc15a
leaq 0xb8(%rsp), %rdi
callq 0xc15a
jmp 0x90b1
movq %rax, %rbx
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x9069
callq 0x2200
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x907d
callq 0x2200
leaq 0x270(%rsp), %rdi
callq 0xc6f4
leaq 0x220(%rsp), %rdi
callq 0xc946
leaq 0x110(%rsp), %rdi
callq 0xc6f4
leaq 0xc0(%rsp), %rdi
callq 0xc946
movq %rbx, %rdi
callq 0x23b0
nop