// File: /workspace/github_cpp_makefile_star2_O2/grame-cncm[P]digraph/./dglib/digraphop.hh
// Function: std::ostream& dotfile<char, int>(std::ostream&, digraph<char, int> const&, bool)
inline std::ostream& dotfile(std::ostream& file, const digraph<N, A>& g, bool clusters = false)
{
    file << "digraph mygraph {" << std::endl;
    for (const N& n : g.nodes()) {
        std::stringstream sn;
        sn << '"' << n << '"';
        bool hascnx = false;
        for (const auto& c : g.connections(n)) {
            std::stringstream sm;
            sm << '"' << c.first << '"';
            hascnx = true;
            file << "\t" << sn.str() << "->" << sm.str() << " [label=\"" << arrow_traits<A>::label(c.second) << "\"];"
                 << std::endl;
        }
        if (!hascnx) {
            file << "\t" << sn.str() << ";" << std::endl;
        }
    }

    if (clusters) {
        Tarjan<N, A> T(g);
        int          ccount = 0;  // cluster count
        for (const auto& s : T.partition()) {
            file << "\t"
                 << "subgraph cluster" << ccount++ << " { " << std::endl;
            for (const N& n : s) {
                file << "\t\t" << '"' << n << '"' << ";" << std::endl;
            }
            file << "\t"
                 << "}" << std::endl;
        }
    }

    return file << "}" << std::endl;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x398, %rsp            # imm = 0x398
movl %edx, 0x14(%rsp)
movq %rsi, %rbx
leaq 0x60c4(%rip), %rsi      # 0x1504a
movq %rdi, (%rsp)
callq 0x2140
movq %rax, %rdi
callq 0x20b0
movq %rbx, 0x18(%rsp)
movq (%rbx), %rcx
movq 0x18(%rcx), %rax
addq $0x8, %rcx
movq %rcx, 0x20(%rsp)
leaq 0x210(%rsp), %r15
leaq 0x68(%rsp), %r12
cmpq 0x20(%rsp), %rax
je 0xf1a0
movq %rax, 0x8(%rsp)
leaq 0x88(%rsp), %rdi
callq 0x20e0
leaq 0x98(%rsp), %rdi
pushq $0x22
popq %rsi
callq 0x2190
movq 0x8(%rsp), %rcx
leaq 0x20(%rcx), %rbx
movsbl (%rbx), %esi
movq %rax, %rdi
callq 0x2190
movq %rax, %rdi
pushq $0x22
popq %rsi
callq 0x2190
movq 0x18(%rsp), %rdi
movq %rbx, %rsi
callq 0x10938
movq %rax, %rbx
movq 0x18(%rax), %r13
addq $0x8, %rbx
xorl %eax, %eax
cmpq %rbx, %r13
je 0xf133
movq %r15, %rdi
callq 0x20e0
leaq 0x220(%rsp), %rdi
pushq $0x22
popq %rsi
callq 0x2190
movsbl 0x20(%r13), %esi
movq %rax, %rdi
callq 0x2190
movq %rax, %rdi
pushq $0x22
popq %rsi
callq 0x2190
movq (%rsp), %rdi
leaq 0x601d(%rip), %rsi      # 0x15080
callq 0x2140
movq %rax, %r14
leaq 0x48(%rsp), %rbp
movq %rbp, %rdi
leaq 0xa0(%rsp), %rsi
callq 0x21e0
movq %r14, %rdi
movq %rbp, %rsi
callq 0x2120
movq %rax, %rdi
leaq 0x5f92(%rip), %rsi      # 0x15027
callq 0x2140
movq %rax, %r14
leaq 0x28(%rsp), %rbp
movq %rbp, %rdi
leaq 0x228(%rsp), %rsi
callq 0x21e0
movq %r14, %rdi
movq %rbp, %rsi
callq 0x2120
movq %rax, %rdi
leaq 0x5f95(%rip), %rsi      # 0x1505c
callq 0x2140
movq %rax, %r14
movl 0x24(%r13), %esi
movq %r12, %rdi
callq 0x131fe
movq %r14, %rdi
movq %r12, %rsi
callq 0x2120
movq %rax, %rdi
leaq 0x5f76(%rip), %rsi      # 0x15066
callq 0x2140
movq %rax, %rdi
callq 0x20b0
movq %r12, %rdi
callq 0x20a0
leaq 0x28(%rsp), %rdi
callq 0x20a0
leaq 0x48(%rsp), %rdi
callq 0x20a0
movq %r15, %rdi
callq 0x20f0
movq %r13, %rdi
callq 0x2170
movq %rax, %r13
movb $0x1, %al
jmp 0xf01f
testb $0x1, %al
jne 0xf184
movq (%rsp), %rdi
leaq 0x5f3e(%rip), %rsi      # 0x15080
callq 0x2140
movq %rax, %rbx
movq %r15, %rdi
leaq 0xa0(%rsp), %rsi
callq 0x21e0
movq %rbx, %rdi
movq %r15, %rsi
callq 0x2120
movq %rax, %rdi
leaq 0x5ef9(%rip), %rsi      # 0x15068
callq 0x2140
movq %rax, %rdi
callq 0x20b0
movq %r15, %rdi
callq 0x20a0
leaq 0x88(%rsp), %rdi
callq 0x20f0
movq 0x8(%rsp), %rdi
callq 0x2170
jmp 0xefb9
cmpb $0x0, 0x14(%rsp)
je 0xf2d8
leaq 0x88(%rsp), %rbx
movq %rbx, %rdi
movq 0x18(%rsp), %rsi
callq 0xe482
movq 0xa8(%rbx), %r14
movl $0x0, 0x8(%rsp)
leaq 0x5ea9(%rip), %r12      # 0x1507f
pushq $0x22
popq %r13
leaq 0x5e87(%rip), %rbp      # 0x15068
leaq 0x120(%rsp), %rax
cmpq %rax, %r14
je 0xf2cb
movq (%rsp), %rdi
leaq 0x5e83(%rip), %rsi      # 0x15080
callq 0x2140
movq %rax, %rdi
leaq 0x5e5e(%rip), %rsi      # 0x1506a
callq 0x2140
movq %rax, %rdi
movl 0x8(%rsp), %esi
callq 0x2210
movq %rax, %rdi
leaq 0x5e54(%rip), %rsi      # 0x1507b
callq 0x2140
movq %rax, %rdi
callq 0x20b0
incl 0x8(%rsp)
movq 0x38(%r14), %r15
leaq 0x28(%r14), %rbx
cmpq %rbx, %r15
je 0xf294
movq (%rsp), %rdi
movq %r12, %rsi
callq 0x2140
movq %rax, %rdi
movl %r13d, %esi
callq 0x2190
movsbl 0x20(%r15), %esi
movq %rax, %rdi
callq 0x2190
movq %rax, %rdi
movl %r13d, %esi
callq 0x2190
movq %rax, %rdi
movq %rbp, %rsi
callq 0x2140
movq %rax, %rdi
callq 0x20b0
movq %r15, %rdi
callq 0x2170
movq %rax, %r15
jmp 0xf240
movq (%rsp), %rdi
leaq 0x5de1(%rip), %rsi      # 0x15080
callq 0x2140
movq %rax, %rdi
leaq 0x6f69(%rip), %rsi      # 0x16217
callq 0x2140
movq %rax, %rdi
callq 0x20b0
movq %r14, %rdi
callq 0x2170
movq %rax, %r14
jmp 0xf1e1
leaq 0x88(%rsp), %rdi
callq 0xe57a
leaq 0x6f38(%rip), %rsi      # 0x16217
movq (%rsp), %rdi
callq 0x2140
movq %rax, %rdi
callq 0x20b0
addq $0x398, %rsp            # imm = 0x398
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0xf324
jmp 0xf324
jmp 0xf324
movq %rax, %rbx
leaq 0x210(%rsp), %rdi
callq 0x20a0
jmp 0xf378
jmp 0xf324
jmp 0xf333
jmp 0xf329
jmp 0xf368
jmp 0xf32e
movq %rax, %rbx
jmp 0xf378
movq %rax, %rbx
jmp 0xf352
movq %rax, %rbx
jmp 0xf35c
movq %rax, %rbx
leaq 0x88(%rsp), %rdi
callq 0xe57a
jmp 0xf385
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0x20a0
leaq 0x28(%rsp), %rdi
callq 0x20a0
leaq 0x48(%rsp), %rdi
callq 0x20a0
jmp 0xf36b
movq %rax, %rbx
leaq 0x210(%rsp), %rdi
callq 0x20f0
leaq 0x88(%rsp), %rdi
callq 0x20f0
movq %rbx, %rdi
callq 0x2220
nop