// File: /workspace/github_cpp_makefile_star2_O3/grame-cncm[P]digraph/tests.cpp
// Function: test1(std::ostream&)
void test1(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);

    ss << "Tarjan partition of g = ";
    Tarjan<char, int> tarj(g);
    for (const auto& cycle : tarj.partition()) {
        ss << "group{ ";
        for (const auto& n : cycle) {
            ss << n << " ";
        }
        ss << "} ";
    }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x128, %rsp            # imm = 0x128
movq %rdi, %rbx
movq %rsp, %r14
movq %r14, %rdi
callq 0x14ee8
leaq 0x2f(%rsp), %rsi
movb $0x41, (%rsi)
leaq 0x2e(%rsp), %rdx
movb $0x42, (%rdx)
leaq 0x60(%rsp), %rcx
movl $0x0, (%rcx)
movq (%r14), %rdi
callq 0x1781e
leaq 0x2d(%rsp), %rsi
movb $0x42, (%rsi)
leaq 0x2c(%rsp), %rdx
movb $0x43, (%rdx)
leaq 0x30(%rsp), %rcx
movl $0x0, (%rcx)
movq (%rsp), %rdi
callq 0x1781e
leaq 0x2b(%rsp), %rsi
movb $0x43, (%rsi)
leaq 0x2a(%rsp), %rdx
movb $0x41, (%rdx)
leaq 0x5c(%rsp), %rcx
movl $0x0, (%rcx)
movq (%rsp), %rdi
callq 0x1781e
leaq 0x29(%rsp), %rsi
movb $0x44, (%rsi)
leaq 0x28(%rsp), %rdx
movb $0x42, (%rdx)
leaq 0x58(%rsp), %rcx
movl $0x0, (%rcx)
movq (%rsp), %rdi
callq 0x1781e
leaq 0x27(%rsp), %rsi
movb $0x44, (%rsi)
leaq 0x26(%rsp), %rdx
movb $0x43, (%rdx)
leaq 0x54(%rsp), %rcx
movl $0x0, (%rcx)
movq (%rsp), %rdi
callq 0x1781e
leaq 0x25(%rsp), %rsi
movb $0x44, (%rsi)
leaq 0x24(%rsp), %rdx
movb $0x45, (%rdx)
leaq 0x50(%rsp), %rcx
movl $0x0, (%rcx)
movq (%rsp), %rdi
callq 0x1781e
leaq 0x23(%rsp), %rsi
movb $0x45, (%rsi)
leaq 0x22(%rsp), %rdx
movb $0x44, (%rdx)
leaq 0x4c(%rsp), %rcx
movl $0x0, (%rcx)
movq (%rsp), %rdi
callq 0x1781e
leaq 0x21(%rsp), %rsi
movb $0x45, (%rsi)
leaq 0x20(%rsp), %rdx
movb $0x46, (%rdx)
leaq 0x48(%rsp), %rcx
movl $0x0, (%rcx)
movq (%rsp), %rdi
callq 0x1781e
leaq 0x1f(%rsp), %rsi
movb $0x46, (%rsi)
leaq 0x1e(%rsp), %rdx
movb $0x47, (%rdx)
leaq 0x44(%rsp), %rcx
movl $0x0, (%rcx)
movq (%rsp), %rdi
callq 0x1781e
leaq 0x1d(%rsp), %rsi
movb $0x47, (%rsi)
leaq 0x1c(%rsp), %rdx
movb $0x46, (%rdx)
leaq 0x40(%rsp), %rcx
movl $0x0, (%rcx)
movq (%rsp), %rdi
callq 0x1781e
leaq 0x1b(%rsp), %rsi
movb $0x48, (%rsi)
leaq 0x1a(%rsp), %rdx
movb $0x47, (%rdx)
leaq 0x3c(%rsp), %rcx
movl $0x0, (%rcx)
movq (%rsp), %rdi
callq 0x1781e
leaq 0x19(%rsp), %rsi
movb $0x48, (%rsi)
leaq 0x18(%rsp), %rdx
movb $0x45, (%rdx)
leaq 0x38(%rsp), %rcx
movl $0x0, (%rcx)
movq (%rsp), %rdi
callq 0x1781e
movb $0x48, %al
leaq 0x17(%rsp), %rsi
movb %al, (%rsi)
leaq 0x16(%rsp), %rdx
movb %al, (%rdx)
leaq 0x34(%rsp), %rcx
movl $0x0, (%rcx)
movq (%rsp), %rdi
callq 0x1781e
leaq 0xd5b0(%rip), %rsi      # 0x1c4a9
movl $0x18, %edx
movq %rbx, %rdi
callq 0x21a0
leaq 0x60(%rsp), %rdi
movq %rsp, %rsi
callq 0x1513a
leaq 0xf8(%rsp), %rax
movq 0x10(%rax), %r14
cmpq %rax, %r14
je 0xefbd
leaq 0x30(%rsp), %r13
leaq 0xeb5f(%rip), %rbp      # 0x1da93
movl $0x7, %edx
movq %rbx, %rdi
leaq 0xd57f(%rip), %rsi      # 0x1c4c2
callq 0x21a0
movq 0x38(%r14), %r15
leaq 0x28(%r14), %r12
cmpq %r12, %r15
je 0xef8d
movb 0x20(%r15), %al
movb %al, 0x30(%rsp)
movl $0x1, %edx
movq %rbx, %rdi
movq %r13, %rsi
callq 0x21a0
movl $0x1, %edx
movq %rax, %rdi
movq %rbp, %rsi
callq 0x21a0
movq %r15, %rdi
callq 0x21b0
movq %rax, %r15
cmpq %r12, %rax
jne 0xef55
movl $0x2, %edx
movq %rbx, %rdi
leaq 0xd578(%rip), %rsi      # 0x1c514
callq 0x21a0
movq %r14, %rdi
callq 0x21b0
movq %rax, %r14
leaq 0xf8(%rsp), %rax
cmpq %rax, %r14
jne 0xef34
leaq 0xf0(%rsp), %rdi
callq 0x5ad0
leaq 0xc0(%rsp), %rdi
callq 0x1767c
leaq 0x70(%rsp), %rdi
callq 0x5b6e
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0xeff0
callq 0x3504
addq $0x128, %rsp            # imm = 0x128
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0xf01e
jmp 0xf01e
jmp 0xf01e
jmp 0xf01e
jmp 0xf01e
jmp 0xf01e
jmp 0xf01e
jmp 0xf01e
jmp 0xf01e
jmp 0xf01e
jmp 0xf01e
jmp 0xf01e
jmp 0xf01e
jmp 0xf01e
movq %rax, %rbx
jmp 0xf032
jmp 0xf025
movq %rax, %rbx
leaq 0x60(%rsp), %rdi
callq 0x15258
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0xf041
callq 0x3504
movq %rbx, %rdi
callq 0x2250