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

    std::set<char>     S{'C', 'F'};
    digraph<char, int> r = subgraph(g, S);
    ss << "Subgraph(" << g << ", " << S << ") = " << r;
}

// Assembly:
subq $0x188, %rsp            # imm = 0x188
movq %rdi, 0x180(%rsp)
leaq 0x170(%rsp), %rdi
movq %rdi, 0x90(%rsp)
callq 0x24270
movq 0x90(%rsp), %rdi
movb $0x41, 0x16f(%rsp)
movb $0x42, 0x16e(%rsp)
movl $0x0, 0x168(%rsp)
leaq 0x16f(%rsp), %rsi
leaq 0x16e(%rsp), %rdx
leaq 0x168(%rsp), %rcx
callq 0x242b0
movq %rax, 0x98(%rsp)
jmp 0x2000e
movq 0x98(%rsp), %rdi
movb $0x42, 0x15b(%rsp)
movb $0x43, 0x15a(%rsp)
movl $0x0, 0x154(%rsp)
leaq 0x15b(%rsp), %rsi
leaq 0x15a(%rsp), %rdx
leaq 0x154(%rsp), %rcx
callq 0x242b0
movq %rax, 0x88(%rsp)
jmp 0x20058
movq 0x88(%rsp), %rdi
movb $0x43, 0x153(%rsp)
movb $0x41, 0x152(%rsp)
movl $0x0, 0x14c(%rsp)
leaq 0x153(%rsp), %rsi
leaq 0x152(%rsp), %rdx
leaq 0x14c(%rsp), %rcx
callq 0x242b0
movq %rax, 0x80(%rsp)
jmp 0x200a2
movq 0x80(%rsp), %rdi
movb $0x44, 0x14b(%rsp)
movb $0x42, 0x14a(%rsp)
movl $0x0, 0x144(%rsp)
leaq 0x14b(%rsp), %rsi
leaq 0x14a(%rsp), %rdx
leaq 0x144(%rsp), %rcx
callq 0x242b0
movq %rax, 0x78(%rsp)
jmp 0x200e9
movq 0x78(%rsp), %rdi
movb $0x44, 0x143(%rsp)
movb $0x43, 0x142(%rsp)
movl $0x0, 0x13c(%rsp)
leaq 0x143(%rsp), %rsi
leaq 0x142(%rsp), %rdx
leaq 0x13c(%rsp), %rcx
callq 0x242b0
movq %rax, 0x70(%rsp)
jmp 0x2012d
movq 0x70(%rsp), %rdi
movb $0x44, 0x13b(%rsp)
movb $0x45, 0x13a(%rsp)
movl $0x0, 0x134(%rsp)
leaq 0x13b(%rsp), %rsi
leaq 0x13a(%rsp), %rdx
leaq 0x134(%rsp), %rcx
callq 0x242b0
movq %rax, 0x68(%rsp)
jmp 0x20171
movq 0x68(%rsp), %rdi
movb $0x45, 0x133(%rsp)
movb $0x44, 0x132(%rsp)
movl $0x0, 0x12c(%rsp)
leaq 0x133(%rsp), %rsi
leaq 0x132(%rsp), %rdx
leaq 0x12c(%rsp), %rcx
callq 0x242b0
movq %rax, 0x60(%rsp)
jmp 0x201b5
movq 0x60(%rsp), %rdi
movb $0x45, 0x12b(%rsp)
movb $0x46, 0x12a(%rsp)
movl $0x0, 0x124(%rsp)
leaq 0x12b(%rsp), %rsi
leaq 0x12a(%rsp), %rdx
leaq 0x124(%rsp), %rcx
callq 0x242b0
movq %rax, 0x58(%rsp)
jmp 0x201f9
movq 0x58(%rsp), %rdi
movb $0x46, 0x123(%rsp)
movb $0x47, 0x122(%rsp)
movl $0x0, 0x11c(%rsp)
leaq 0x123(%rsp), %rsi
leaq 0x122(%rsp), %rdx
leaq 0x11c(%rsp), %rcx
callq 0x242b0
movq %rax, 0x50(%rsp)
jmp 0x2023d
movq 0x50(%rsp), %rdi
movb $0x47, 0x11b(%rsp)
movb $0x46, 0x11a(%rsp)
movl $0x0, 0x114(%rsp)
leaq 0x11b(%rsp), %rsi
leaq 0x11a(%rsp), %rdx
leaq 0x114(%rsp), %rcx
callq 0x242b0
movq %rax, 0x48(%rsp)
jmp 0x20281
movq 0x48(%rsp), %rdi
movb $0x48, 0x113(%rsp)
movb $0x47, 0x112(%rsp)
movl $0x0, 0x10c(%rsp)
leaq 0x113(%rsp), %rsi
leaq 0x112(%rsp), %rdx
leaq 0x10c(%rsp), %rcx
callq 0x242b0
movq %rax, 0x40(%rsp)
jmp 0x202c5
movq 0x40(%rsp), %rdi
movb $0x48, 0x10b(%rsp)
movb $0x45, 0x10a(%rsp)
movl $0x0, 0x104(%rsp)
leaq 0x10b(%rsp), %rsi
leaq 0x10a(%rsp), %rdx
leaq 0x104(%rsp), %rcx
callq 0x242b0
movq %rax, 0x38(%rsp)
jmp 0x20309
movq 0x38(%rsp), %rdi
movb $0x48, 0x103(%rsp)
movb $0x48, 0x102(%rsp)
movl $0x0, 0xfc(%rsp)
leaq 0x103(%rsp), %rsi
leaq 0x102(%rsp), %rdx
leaq 0xfc(%rsp), %rcx
callq 0x242b0
jmp 0x20348
movb $0x43, 0xb6(%rsp)
movb $0x46, 0xb7(%rsp)
leaq 0xb6(%rsp), %rax
movq %rax, 0xb8(%rsp)
movq $0x2, 0xc0(%rsp)
leaq 0xb4(%rsp), %rdi
movq %rdi, 0x30(%rsp)
callq 0x22a0
movq 0x30(%rsp), %r8
movq 0xb8(%rsp), %rsi
movq 0xc0(%rsp), %rdx
leaq 0xc8(%rsp), %rdi
leaq 0xb5(%rsp), %rcx
callq 0x26470
jmp 0x203b2
leaq 0xb4(%rsp), %rdi
callq 0x21c0
leaq 0xa0(%rsp), %rdi
leaq 0x170(%rsp), %rsi
leaq 0xc8(%rsp), %rdx
callq 0x26550
jmp 0x203de
movq 0x180(%rsp), %rdi
leaq 0x1e4dc(%rip), %rsi     # 0x3e8c9
callq 0x2180
movq %rax, 0x28(%rsp)
jmp 0x203f9
movq 0x28(%rsp), %rdi
leaq 0x170(%rsp), %rsi
callq 0x24300
movq %rax, 0x20(%rsp)
jmp 0x20412
movq 0x20(%rsp), %rdi
leaq 0x1cc0c(%rip), %rsi     # 0x3d02a
callq 0x2180
movq %rax, 0x18(%rsp)
jmp 0x2042a
movq 0x18(%rsp), %rdi
leaq 0xc8(%rsp), %rsi
callq 0x268a0
movq %rax, 0x10(%rsp)
jmp 0x20443
movq 0x10(%rsp), %rdi
leaq 0x1ddf8(%rip), %rsi     # 0x3e247
callq 0x2180
movq %rax, 0x8(%rsp)
jmp 0x2045b
movq 0x8(%rsp), %rdi
leaq 0xa0(%rsp), %rsi
callq 0x24300
jmp 0x2046f
leaq 0xa0(%rsp), %rdi
callq 0x24610
leaq 0xc8(%rsp), %rdi
callq 0x5620
leaq 0x170(%rsp), %rdi
callq 0x24610
addq $0x188, %rsp            # imm = 0x188
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x160(%rsp)
movl %eax, 0x15c(%rsp)
jmp 0x2051b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x160(%rsp)
movl %eax, 0x15c(%rsp)
leaq 0xb4(%rsp), %rdi
callq 0x21c0
jmp 0x2051b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x160(%rsp)
movl %eax, 0x15c(%rsp)
jmp 0x2050e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x160(%rsp)
movl %eax, 0x15c(%rsp)
leaq 0xa0(%rsp), %rdi
callq 0x24610
leaq 0xc8(%rsp), %rdi
callq 0x5620
leaq 0x170(%rsp), %rdi
callq 0x24610
movq 0x160(%rsp), %rdi
callq 0x2290
nopw %cs:(%rax,%rax)