// File: grame-cncm[P]digraph/./dglib/digraphop.hh
// Function: std::ostream& operator<<<char, std::pair<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, int, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, int>>>, int>>(std::ostream&, digraph<char, std::pair<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, int, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, int>>>, int>> const&)
inline std::ostream& operator<<(std::ostream& file, const digraph<N, A>& g)
{
    std::string sep = "";

    file << "Graph {";
    for (const N& n : g.nodes()) {
        bool hascnx = false;
        for (const auto& c : g.connections(n)) {
            hascnx = true;
            file << sep << n << '-' << (c.second) << "->" << (c.first);
            sep = ", ";
        }
        if (!hascnx) {
            file << sep << n;
        }
        sep = ", ";
    }

    return file << "}";
}

// Assembly:
subq $0xe8, %rsp
movq %rdi, 0xe0(%rsp)
movq %rsi, 0xd8(%rsp)
leaq 0xb7(%rsp), %rdi
movq %rdi, 0x50(%rsp)
callq 0x22a0
movq 0x50(%rsp), %rdx
leaq 0x3a3fc(%rip), %rsi     # 0x3d081
leaq 0xb8(%rsp), %rdi
callq 0x2200
jmp 0x2c94
leaq 0xb7(%rsp), %rdi
callq 0x21c0
movq 0xe0(%rsp), %rdi
leaq 0x3a36f(%rip), %rsi     # 0x3d01f
callq 0x2180
jmp 0x2cb7
movq 0xd8(%rsp), %rdi
callq 0xa130
movq %rax, 0x48(%rsp)
jmp 0x2ccb
movq 0x48(%rsp), %rax
movq %rax, 0x98(%rsp)
movq 0x98(%rsp), %rdi
callq 0xa150
movq %rax, 0x90(%rsp)
movq 0x98(%rsp), %rdi
callq 0xa180
movq %rax, 0x88(%rsp)
leaq 0x90(%rsp), %rdi
leaq 0x88(%rsp), %rsi
callq 0xa1b0
testb $0x1, %al
jne 0x2d20
jmp 0x2f17
leaq 0x90(%rsp), %rdi
callq 0xa1d0
movq %rax, 0x80(%rsp)
movb $0x0, 0x7f(%rsp)
movq 0xd8(%rsp), %rdi
movq 0x80(%rsp), %rsi
callq 0xa1f0
movq %rax, 0x40(%rsp)
jmp 0x2d56
movq 0x40(%rsp), %rax
movq %rax, 0x70(%rsp)
movq 0x70(%rsp), %rdi
callq 0xa220
movq %rax, 0x68(%rsp)
movq 0x70(%rsp), %rdi
callq 0xa250
movq %rax, 0x60(%rsp)
leaq 0x68(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0xa280
testb $0x1, %al
jne 0x2d96
jmp 0x2eb1
leaq 0x68(%rsp), %rdi
callq 0xa2a0
movq %rax, 0x58(%rsp)
movb $0x1, 0x7f(%rsp)
movq 0xe0(%rsp), %rdi
leaq 0xb8(%rsp), %rsi
callq 0x2150
movq %rax, 0x38(%rsp)
jmp 0x2dc6
movq 0x38(%rsp), %rdi
movq 0x80(%rsp), %rax
movsbl (%rax), %esi
callq 0x21e0
movq %rax, 0x30(%rsp)
jmp 0x2de2
movq 0x30(%rsp), %rdi
movl $0x2d, %esi
callq 0x21e0
movq %rax, 0x28(%rsp)
jmp 0x2df8
movq 0x28(%rsp), %rdi
movq 0x58(%rsp), %rsi
addq $0x8, %rsi
callq 0xa2c0
movq %rax, 0x20(%rsp)
jmp 0x2e12
movq 0x20(%rsp), %rdi
leaq 0x3a209(%rip), %rsi     # 0x3d027
callq 0x2180
movq %rax, 0x18(%rsp)
jmp 0x2e2a
movq 0x18(%rsp), %rdi
movq 0x58(%rsp), %rax
movsbl (%rax), %esi
callq 0x21e0
jmp 0x2e3e
leaq 0x3a1e5(%rip), %rsi     # 0x3d02a
leaq 0xb8(%rsp), %rdi
callq 0x21f0
jmp 0x2e54
jmp 0x2e56
leaq 0x68(%rsp), %rdi
callq 0xa320
jmp 0x2d7e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa8(%rsp)
movl %eax, 0xa4(%rsp)
leaq 0xb7(%rsp), %rdi
callq 0x21c0
jmp 0x2f4c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa8(%rsp)
movl %eax, 0xa4(%rsp)
leaq 0xb8(%rsp), %rdi
callq 0x20e0
jmp 0x2f4c
testb $0x1, 0x7f(%rsp)
jne 0x2eed
movq 0xe0(%rsp), %rdi
leaq 0xb8(%rsp), %rsi
callq 0x2150
movq %rax, 0x10(%rsp)
jmp 0x2ed4
movq 0x10(%rsp), %rdi
movq 0x80(%rsp), %rax
movsbl (%rax), %esi
callq 0x21e0
jmp 0x2eeb
jmp 0x2eed
leaq 0x3a136(%rip), %rsi     # 0x3d02a
leaq 0xb8(%rsp), %rdi
callq 0x21f0
jmp 0x2f03
jmp 0x2f05
leaq 0x90(%rsp), %rdi
callq 0xa350
jmp 0x2d02
movq 0xe0(%rsp), %rdi
leaq 0x3b375(%rip), %rsi     # 0x3e29b
callq 0x2180
movq %rax, 0x8(%rsp)
jmp 0x2f32
leaq 0xb8(%rsp), %rdi
callq 0x20e0
movq 0x8(%rsp), %rax
addq $0xe8, %rsp
retq
movq 0xa8(%rsp), %rdi
callq 0x2290
nopl (%rax)