// File: grame-cncm[P]digraph/tests.cpp
// Function: test2(std::ostream&)
void test2(std::ostream& ss)
{
    digraph<char, int> g;
    g.add('A', 'B', 0)
        .add('B', 'C', 1)
        .add('C', 'A', 0)
        .add('D', 'B', 0)
        .add('D', 'C', 0)
        .add('D', 'E', 1)
        .add('E', 'D', 0)
        .add('E', 'F', 0)
        .add('F', 'G', 0)
        .add('G', 'F', 1)
        .add('H', 'G', 0)
        .add('H', 'E', 0)
        .add('H', 'H', 1);

    ss << "dag of g = " << graph2dag(g);
}

// Assembly:
subq $0x118, %rsp            # imm = 0x118
movq %rdi, 0x110(%rsp)
leaq 0x100(%rsp), %rdi
movq %rdi, 0x68(%rsp)
callq 0x24270
movq 0x68(%rsp), %rdi
movb $0x41, 0xff(%rsp)
movb $0x42, 0xfe(%rsp)
movl $0x0, 0xf8(%rsp)
leaq 0xff(%rsp), %rsi
leaq 0xfe(%rsp), %rdx
leaq 0xf8(%rsp), %rcx
callq 0x242b0
movq %rax, 0x70(%rsp)
jmp 0x1d765
movq 0x70(%rsp), %rdi
movb $0x42, 0xeb(%rsp)
movb $0x43, 0xea(%rsp)
movl $0x1, 0xe4(%rsp)
leaq 0xeb(%rsp), %rsi
leaq 0xea(%rsp), %rdx
leaq 0xe4(%rsp), %rcx
callq 0x242b0
movq %rax, 0x60(%rsp)
jmp 0x1d7a9
movq 0x60(%rsp), %rdi
movb $0x43, 0xe3(%rsp)
movb $0x41, 0xe2(%rsp)
movl $0x0, 0xdc(%rsp)
leaq 0xe3(%rsp), %rsi
leaq 0xe2(%rsp), %rdx
leaq 0xdc(%rsp), %rcx
callq 0x242b0
movq %rax, 0x58(%rsp)
jmp 0x1d7ed
movq 0x58(%rsp), %rdi
movb $0x44, 0xdb(%rsp)
movb $0x42, 0xda(%rsp)
movl $0x0, 0xd4(%rsp)
leaq 0xdb(%rsp), %rsi
leaq 0xda(%rsp), %rdx
leaq 0xd4(%rsp), %rcx
callq 0x242b0
movq %rax, 0x50(%rsp)
jmp 0x1d831
movq 0x50(%rsp), %rdi
movb $0x44, 0xd3(%rsp)
movb $0x43, 0xd2(%rsp)
movl $0x0, 0xcc(%rsp)
leaq 0xd3(%rsp), %rsi
leaq 0xd2(%rsp), %rdx
leaq 0xcc(%rsp), %rcx
callq 0x242b0
movq %rax, 0x48(%rsp)
jmp 0x1d875
movq 0x48(%rsp), %rdi
movb $0x44, 0xcb(%rsp)
movb $0x45, 0xca(%rsp)
movl $0x1, 0xc4(%rsp)
leaq 0xcb(%rsp), %rsi
leaq 0xca(%rsp), %rdx
leaq 0xc4(%rsp), %rcx
callq 0x242b0
movq %rax, 0x40(%rsp)
jmp 0x1d8b9
movq 0x40(%rsp), %rdi
movb $0x45, 0xc3(%rsp)
movb $0x44, 0xc2(%rsp)
movl $0x0, 0xbc(%rsp)
leaq 0xc3(%rsp), %rsi
leaq 0xc2(%rsp), %rdx
leaq 0xbc(%rsp), %rcx
callq 0x242b0
movq %rax, 0x38(%rsp)
jmp 0x1d8fd
movq 0x38(%rsp), %rdi
movb $0x45, 0xbb(%rsp)
movb $0x46, 0xba(%rsp)
movl $0x0, 0xb4(%rsp)
leaq 0xbb(%rsp), %rsi
leaq 0xba(%rsp), %rdx
leaq 0xb4(%rsp), %rcx
callq 0x242b0
movq %rax, 0x30(%rsp)
jmp 0x1d941
movq 0x30(%rsp), %rdi
movb $0x46, 0xb3(%rsp)
movb $0x47, 0xb2(%rsp)
movl $0x0, 0xac(%rsp)
leaq 0xb3(%rsp), %rsi
leaq 0xb2(%rsp), %rdx
leaq 0xac(%rsp), %rcx
callq 0x242b0
movq %rax, 0x28(%rsp)
jmp 0x1d985
movq 0x28(%rsp), %rdi
movb $0x47, 0xab(%rsp)
movb $0x46, 0xaa(%rsp)
movl $0x1, 0xa4(%rsp)
leaq 0xab(%rsp), %rsi
leaq 0xaa(%rsp), %rdx
leaq 0xa4(%rsp), %rcx
callq 0x242b0
movq %rax, 0x20(%rsp)
jmp 0x1d9c9
movq 0x20(%rsp), %rdi
movb $0x48, 0xa3(%rsp)
movb $0x47, 0xa2(%rsp)
movl $0x0, 0x9c(%rsp)
leaq 0xa3(%rsp), %rsi
leaq 0xa2(%rsp), %rdx
leaq 0x9c(%rsp), %rcx
callq 0x242b0
movq %rax, 0x18(%rsp)
jmp 0x1da0d
movq 0x18(%rsp), %rdi
movb $0x48, 0x9b(%rsp)
movb $0x45, 0x9a(%rsp)
movl $0x0, 0x94(%rsp)
leaq 0x9b(%rsp), %rsi
leaq 0x9a(%rsp), %rdx
leaq 0x94(%rsp), %rcx
callq 0x242b0
movq %rax, 0x10(%rsp)
jmp 0x1da51
movq 0x10(%rsp), %rdi
movb $0x48, 0x93(%rsp)
movb $0x48, 0x92(%rsp)
movl $0x1, 0x8c(%rsp)
leaq 0x93(%rsp), %rsi
leaq 0x92(%rsp), %rdx
leaq 0x8c(%rsp), %rcx
callq 0x242b0
jmp 0x1da90
movq 0x110(%rsp), %rdi
leaq 0x20550(%rip), %rsi     # 0x3dfef
callq 0x2180
movq %rax, 0x8(%rsp)
jmp 0x1daab
leaq 0x78(%rsp), %rdi
leaq 0x100(%rsp), %rsi
callq 0x24b10
jmp 0x1dabf
movq 0x8(%rsp), %rdi
leaq 0x78(%rsp), %rsi
callq 0x24810
jmp 0x1dad0
leaq 0x78(%rsp), %rdi
callq 0x24bb0
leaq 0x100(%rsp), %rdi
callq 0x24610
addq $0x118, %rsp            # imm = 0x118
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xf0(%rsp)
movl %eax, 0xec(%rsp)
jmp 0x1db23
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xf0(%rsp)
movl %eax, 0xec(%rsp)
leaq 0x78(%rsp), %rdi
callq 0x24bb0
leaq 0x100(%rsp), %rdi
callq 0x24610
movq 0xf0(%rsp), %rdi
callq 0x2290
nopl (%rax)