// File: /workspace/github_cpp_makefile_star2_O1/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 0xbf39(%rip), %rsi      # 0x14820
movl $0x8, %edx
movq %r8, %rdi
callq 0x2290
movq (%r14), %rsi
movq 0x8(%r14), %rdx
movq %r15, (%rsp)
movq %r15, %rdi
callq 0x2290
movq %rax, %r14
leaq 0xbf18(%rip), %rsi      # 0x14829
movl $0x2, %edx
movq %rax, %rdi
callq 0x2290
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2220
movsbl %al, %esi
movq %r14, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2150
leaq 0xb8(%rsp), %rdi
movq %rbx, %rsi
callq 0xc1c0
leaq 0x218(%rsp), %rdi
movq %rbx, %rsi
callq 0xc25a
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 0x89a1
movq 0x230(%rsp), %rcx
cmpq %rcx, 0x250(%rsp)
je 0x8bfd
cmpq 0xf8(%rsp), %rax
jne 0x89bf
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 0xbe4b(%rip), %rsi      # 0x1482c
callq 0x2290
leaq 0x40(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x2896
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
movq (%rsp), %rdi
callq 0x2290
movq %rax, %rbx
movl $0x9, %edx
movq %rax, %rdi
leaq 0xbe15(%rip), %rsi      # 0x1482f
callq 0x2290
leaq 0x20(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x2896
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
movq %rbx, %rdi
callq 0x2290
movq %rax, %rbx
movl $0x3, %edx
movq %rax, %rdi
leaq 0xbde7(%rip), %rsi      # 0x14839
callq 0x2290
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 0xfa78
movq 0x8(%rsp), %rdi
movq %rax, %rsi
xorl %edx, %edx
callq 0x1232e
movq %rbx, %rdi
movq %rax, %rsi
callq 0x2140
movq %rax, %rbx
movl $0x2, %edx
movq %rax, %rdi
leaq 0xbd8f(%rip), %rsi      # 0x1483d
callq 0x2290
movq %r14, %rdi
movq %rbp, %rsi
callq 0xfa78
movq %r13, %rdi
movq %rax, %rsi
xorl %edx, %edx
callq 0x1232e
movq %rbx, %rdi
movq %rax, %rsi
callq 0x2140
movq %rax, %rbx
movl $0x1c, %edx
movq %rax, %rdi
leaq 0xbd58(%rip), %rsi      # 0x14840
callq 0x2290
movq %r14, %rdi
movq %rbp, %rsi
callq 0xfa78
movq 0x8(%rsp), %rdi
movq %rax, %rsi
xorl %edx, %edx
callq 0x1232e
movq %rax, %r12
movq %r14, %rdi
movq %rbp, %rsi
callq 0xfa78
movq %r13, %rdi
movq %rax, %rsi
xorl %edx, %edx
callq 0x1232e
xorl %edx, %edx
addq %rax, %r12
sete %dl
leaq 0xbd2c(%rip), %rsi      # 0x1485d
leaq 0xbd2a(%rip), %rax      # 0x14862
cmoveq %rax, %rsi
orq $0x4, %rdx
movq %rbx, %rdi
callq 0x2290
movl $0x8, %edx
movq %rbx, %rdi
leaq 0xbd11(%rip), %rsi      # 0x14868
callq 0x2290
movl %r15d, %edi
movq %r14, %rsi
callq 0x321e
testb %al, %al
leaq 0xbd09(%rip), %rsi      # 0x14879
leaq 0xbcfa(%rip), %rax      # 0x14871
cmovneq %rax, %rsi
movl $0x7, %edx
movq %rbx, %rdi
callq 0x2290
movl $0x3, %edx
movq %rbx, %rdi
leaq 0xbcea(%rip), %rsi      # 0x14881
callq 0x2290
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2220
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 0x8bd7
callq 0x2210
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x8beb
callq 0x2210
leaq 0xb8(%rsp), %rdi
callq 0xc2ca
jmp 0x8979
leaq 0x270(%rsp), %rdi
callq 0xc72c
leaq 0x220(%rsp), %rdi
callq 0xc972
leaq 0x110(%rsp), %rdi
callq 0xc72c
leaq 0xc0(%rsp), %rdi
callq 0xc972
leaq 0xb8(%rsp), %r14
movq %r14, %rdi
movq 0x10(%rsp), %rbx
movq %rbx, %rsi
callq 0xbd90
leaq 0x218(%rsp), %r15
movq %r15, %rdi
movq %rbx, %rsi
callq 0xbe2a
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 0x8ca8
movq 0x80(%rsp), %rcx
cmpq %rcx, 0x370(%rsp)
je 0x8f52
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 0x2bc8
movl %eax, %edi
movq %rdx, %rsi
callq 0x2a7b
movl %eax, %r12d
movq %rdx, %rbx
movl %eax, 0x98(%rsp)
movq %rdx, 0xa0(%rsp)
movq %r14, %rsi
movl %ebp, %edx
callq 0x2c1d
movl %eax, %edi
movq %rdx, %rsi
callq 0x2a7b
movl %eax, %r15d
movq %rdx, %rbp
movl %eax, 0x88(%rsp)
movq %rdx, 0x90(%rsp)
movl $0x2, %edx
movq (%rsp), %rdi
leaq 0xbb03(%rip), %rsi      # 0x1482c
callq 0x2290
movl %r15d, 0x8(%rsp)
leaq 0x40(%rsp), %rdi
leaq 0x98(%rsp), %rsi
callq 0x2896
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
movq (%rsp), %rdi
callq 0x2290
movq %rax, %r15
movl $0x4, %edx
movq %rax, %rdi
leaq 0xbb1b(%rip), %rsi      # 0x14885
callq 0x2290
leaq 0x20(%rsp), %rdi
leaq 0x88(%rsp), %rsi
callq 0x2896
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
movq %r15, %rdi
callq 0x2290
movq %rax, %r15
movl $0xa, %edx
movq %rax, %rdi
leaq 0xbae5(%rip), %rsi      # 0x1488a
callq 0x2290
leaq 0x60(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
callq 0x2896
movq 0x60(%rsp), %rsi
movq 0x68(%rsp), %rdx
movq %r15, %rdi
callq 0x2290
movq %rax, %r15
movl $0x2, %edx
movq %rax, %rdi
leaq 0xba5d(%rip), %rsi      # 0x1483d
callq 0x2290
movq 0x18(%rsp), %rdi
movl %r13d, %esi
movq %r14, %rdx
callq 0x99ee
movq %r15, %rdi
movq %rax, %rsi
callq 0x2140
movq %rax, %r15
movl $0xd, %edx
movq %rax, %rdi
leaq 0xba83(%rip), %rsi      # 0x14895
callq 0x2290
movl %r12d, %edi
movq %rbx, %rsi
movl %r13d, %edx
movq %r14, %rcx
callq 0x4721
leaq 0xba74(%rip), %rsi      # 0x148a3
testb %al, %al
jne 0x8e58
movl %r12d, %edi
movq %rbx, %rsi
movl %r13d, %edx
movq %r14, %rcx
callq 0x47b3
testb %al, %al
leaq 0xb99c(%rip), %rsi      # 0x147e9
leaq 0xb8b2(%rip), %rax      # 0x14706
cmovneq %rax, %rsi
movl $0x1, %edx
movq %r15, %rdi
callq 0x2290
movl $0xb, %edx
movq %r15, %rdi
leaq 0xba31(%rip), %rsi      # 0x148a5
callq 0x2290
movl 0x8(%rsp), %ebx
movl %ebx, %edi
movq %rbp, %rsi
movl %r13d, %edx
movq %r14, %rcx
callq 0x4721
leaq 0xba0f(%rip), %rsi      # 0x148a3
testb %al, %al
jne 0x8ebc
movl %ebx, %edi
movq %rbp, %rsi
movl %r13d, %edx
movq %r14, %rcx
callq 0x47b3
testb %al, %al
leaq 0xb938(%rip), %rsi      # 0x147e9
leaq 0xb84e(%rip), %rax      # 0x14706
cmovneq %rax, %rsi
movl $0x1, %edx
movq %r15, %rdi
callq 0x2290
movl $0x3, %edx
movq %r15, %rdi
leaq 0xb9a9(%rip), %rsi      # 0x14881
callq 0x2290
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x2220
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 0x8f18
callq 0x2210
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x8f2c
callq 0x2210
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x8f40
callq 0x2210
leaq 0xb8(%rsp), %rdi
callq 0xbe9a
jmp 0x8c83
movl $0x128, %ebx            # imm = 0x128
leaq 0x218(%rsp), %r12
leaq (%r12,%rbx), %rdi
callq 0xc78e
movl $0xf0, %r14d
leaq (%r12,%r14), %rdi
callq 0xc72c
movl $0xa0, %r15d
addq %r15, %r12
movq %r12, %rdi
callq 0xc972
leaq 0x278(%rsp), %rdi
callq 0xc72c
leaq 0x228(%rsp), %rdi
callq 0xc972
leaq 0xb8(%rsp), %r12
addq %r12, %rbx
movq %rbx, %rdi
callq 0xc78e
addq %r12, %r14
movq %r14, %rdi
callq 0xc72c
addq %r15, %r12
movq %r12, %rdi
callq 0xc972
leaq 0x118(%rsp), %rdi
callq 0xc72c
leaq 0xc8(%rsp), %rdi
callq 0xc972
leaq 0xb8c5(%rip), %rsi      # 0x148b1
movl $0x1, %edx
movq (%rsp), %rbx
movq %rbx, %rdi
callq 0x2290
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2220
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 0x90b9
movq %rax, %rbx
jmp 0x910d
jmp 0x904b
jmp 0x904b
jmp 0x905e
jmp 0x9063
movq %rax, %rbx
jmp 0x90ac
jmp 0x9056
jmp 0x9056
jmp 0x9068
movq %rax, %rbx
jmp 0x90f3
movq %rax, %rbx
jmp 0x9084
movq %rax, %rbx
jmp 0x9098
movq %rax, %rbx
jmp 0x90df
movq %rax, %rbx
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x9084
callq 0x2210
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x9098
callq 0x2210
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x90ac
callq 0x2210
leaq 0x218(%rsp), %rdi
callq 0xc182
leaq 0xb8(%rsp), %rdi
callq 0xc182
jmp 0x9127
movq %rax, %rbx
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x90df
callq 0x2210
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x90f3
callq 0x2210
leaq 0x270(%rsp), %rdi
callq 0xc72c
leaq 0x220(%rsp), %rdi
callq 0xc972
leaq 0x110(%rsp), %rdi
callq 0xc72c
leaq 0xc0(%rsp), %rdi
callq 0xc972
movq %rbx, %rdi
callq 0x23c0
nop