// File: /workspace/github_cpp_makefile_star2_O2/grame-cncm[P]digraph/mtests.cpp
// Function: mtest1[abi:cxx11]()
std::string mtest1()
{
    digraph<char, multidep> g;
    g.add('A', 'B', mdep("M"))
        .add('B', 'C', mdep("M"))
        .add('C', 'A', mdep("M"))
        .add('D', 'B', mdep("M"))
        .add('D', 'C', mdep("M"))
        .add('D', 'E', mdep("M"))
        .add('E', 'D', mdep("M"))
        .add('E', 'F', mdep("M"))
        .add('F', 'G', mdep("M"))
        .add('G', 'F', mdep("M"))
        .add('H', 'G', mdep("M"))
        .add('H', 'E', mdep("M"))
        .add('H', 'H', mdep("M"));

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

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x698, %rsp            # imm = 0x698
movq %rdi, %r15
leaq 0x20(%rsp), %rdi
callq 0x25fa
movb $0x41, 0x1f(%rsp)
movb $0x42, 0x1e(%rsp)
leaq 0xedc6(%rip), %rsi      # 0x15004
leaq 0x1c0(%rsp), %rdi
leaq 0x3f(%rsp), %rdx
callq 0x2080
leaq 0x510(%rsp), %rdi
leaq 0x1c0(%rsp), %rsi
callq 0x8a6a
movq 0x20(%rsp), %rdi
leaq 0x1f(%rsp), %rsi
leaq 0x1e(%rsp), %rdx
leaq 0x510(%rsp), %rcx
callq 0x340c
movb $0x42, 0x1d(%rsp)
movb $0x43, 0x1c(%rsp)
leaq 0xed72(%rip), %rsi      # 0x15004
leaq 0x1a0(%rsp), %rdi
leaq 0x3e(%rsp), %rdx
callq 0x2080
leaq 0x448(%rsp), %rdi
leaq 0x1a0(%rsp), %rsi
callq 0x8a6a
movq 0x20(%rsp), %rdi
leaq 0x1d(%rsp), %rsi
leaq 0x1c(%rsp), %rdx
leaq 0x448(%rsp), %rcx
callq 0x340c
movb $0x43, 0x1b(%rsp)
movb $0x41, 0x1a(%rsp)
leaq 0xed1e(%rip), %rsi      # 0x15004
leaq 0x180(%rsp), %rdi
leaq 0x3d(%rsp), %rdx
callq 0x2080
leaq 0x410(%rsp), %rdi
leaq 0x180(%rsp), %rsi
callq 0x8a6a
movq 0x20(%rsp), %rdi
leaq 0x1b(%rsp), %rsi
leaq 0x1a(%rsp), %rdx
leaq 0x410(%rsp), %rcx
callq 0x340c
movb $0x44, 0x19(%rsp)
movb $0x42, 0x18(%rsp)
leaq 0xecca(%rip), %rsi      # 0x15004
leaq 0x160(%rsp), %rdi
leaq 0x3c(%rsp), %rdx
callq 0x2080
leaq 0x3d8(%rsp), %rdi
leaq 0x160(%rsp), %rsi
callq 0x8a6a
movq 0x20(%rsp), %rdi
leaq 0x19(%rsp), %rsi
leaq 0x18(%rsp), %rdx
leaq 0x3d8(%rsp), %rcx
callq 0x340c
movb $0x44, 0x17(%rsp)
movb $0x43, 0x16(%rsp)
leaq 0xec76(%rip), %rsi      # 0x15004
leaq 0x140(%rsp), %rdi
leaq 0x3b(%rsp), %rdx
callq 0x2080
leaq 0x3a0(%rsp), %rdi
leaq 0x140(%rsp), %rsi
callq 0x8a6a
movq 0x20(%rsp), %rdi
leaq 0x17(%rsp), %rsi
leaq 0x16(%rsp), %rdx
leaq 0x3a0(%rsp), %rcx
callq 0x340c
movb $0x44, 0x15(%rsp)
movb $0x45, 0x14(%rsp)
leaq 0xec22(%rip), %rsi      # 0x15004
leaq 0x120(%rsp), %rdi
leaq 0x3a(%rsp), %rdx
callq 0x2080
leaq 0x368(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x8a6a
movq 0x20(%rsp), %rdi
leaq 0x15(%rsp), %rsi
leaq 0x14(%rsp), %rdx
leaq 0x368(%rsp), %rcx
callq 0x340c
movb $0x45, 0x13(%rsp)
movb $0x44, 0x12(%rsp)
leaq 0xebce(%rip), %rsi      # 0x15004
leaq 0x100(%rsp), %rdi
leaq 0x39(%rsp), %rdx
callq 0x2080
leaq 0x330(%rsp), %rdi
leaq 0x100(%rsp), %rsi
callq 0x8a6a
movq 0x20(%rsp), %rdi
leaq 0x13(%rsp), %rsi
leaq 0x12(%rsp), %rdx
leaq 0x330(%rsp), %rcx
callq 0x340c
movb $0x45, 0x11(%rsp)
movb $0x46, 0x10(%rsp)
leaq 0xeb7a(%rip), %rsi      # 0x15004
leaq 0xe0(%rsp), %rdi
leaq 0x38(%rsp), %rdx
callq 0x2080
leaq 0x2f8(%rsp), %rdi
leaq 0xe0(%rsp), %rsi
callq 0x8a6a
movq 0x20(%rsp), %rdi
leaq 0x11(%rsp), %rsi
leaq 0x10(%rsp), %rdx
leaq 0x2f8(%rsp), %rcx
callq 0x340c
movb $0x46, 0xf(%rsp)
movb $0x47, 0xe(%rsp)
leaq 0xeb26(%rip), %rsi      # 0x15004
leaq 0xc0(%rsp), %rdi
leaq 0x37(%rsp), %rdx
callq 0x2080
leaq 0x2c0(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
callq 0x8a6a
movq 0x20(%rsp), %rdi
leaq 0xf(%rsp), %rsi
leaq 0xe(%rsp), %rdx
leaq 0x2c0(%rsp), %rcx
callq 0x340c
movb $0x47, 0xd(%rsp)
movb $0x46, 0xc(%rsp)
leaq 0xead2(%rip), %rsi      # 0x15004
leaq 0xa0(%rsp), %rdi
leaq 0x36(%rsp), %rdx
callq 0x2080
leaq 0x288(%rsp), %rdi
leaq 0xa0(%rsp), %rsi
callq 0x8a6a
movq 0x20(%rsp), %rdi
leaq 0xd(%rsp), %rsi
leaq 0xc(%rsp), %rdx
leaq 0x288(%rsp), %rcx
callq 0x340c
movb $0x48, 0xb(%rsp)
movb $0x47, 0xa(%rsp)
leaq 0xea7e(%rip), %rsi      # 0x15004
leaq 0x80(%rsp), %rdi
leaq 0x35(%rsp), %rdx
callq 0x2080
leaq 0x250(%rsp), %rdi
leaq 0x80(%rsp), %rsi
callq 0x8a6a
movq 0x20(%rsp), %rdi
leaq 0xb(%rsp), %rsi
leaq 0xa(%rsp), %rdx
leaq 0x250(%rsp), %rcx
callq 0x340c
movb $0x48, 0x9(%rsp)
movb $0x45, 0x8(%rsp)
leaq 0xea2a(%rip), %rsi      # 0x15004
leaq 0x60(%rsp), %rdi
leaq 0x34(%rsp), %rdx
callq 0x2080
leaq 0x218(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x8a6a
movq 0x20(%rsp), %rdi
leaq 0x9(%rsp), %rsi
leaq 0x8(%rsp), %rdx
leaq 0x218(%rsp), %rcx
callq 0x340c
movb $0x48, %al
movb %al, 0x7(%rsp)
movb %al, 0x6(%rsp)
leaq 0xe9dc(%rip), %rsi      # 0x15004
leaq 0x40(%rsp), %rdi
leaq 0x33(%rsp), %rdx
callq 0x2080
leaq 0x1e0(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x8a6a
movq 0x20(%rsp), %rdi
leaq 0x7(%rsp), %rsi
leaq 0x6(%rsp), %rdx
leaq 0x1e0(%rsp), %rcx
callq 0x340c
leaq 0x1e0(%rsp), %rdi
callq 0x2ee8
leaq 0x40(%rsp), %rdi
callq 0x20a0
leaq 0x218(%rsp), %rdi
callq 0x2ee8
leaq 0x60(%rsp), %rdi
callq 0x20a0
leaq 0x250(%rsp), %rdi
callq 0x2ee8
leaq 0x80(%rsp), %rdi
callq 0x20a0
leaq 0x288(%rsp), %rdi
callq 0x2ee8
leaq 0xa0(%rsp), %rdi
callq 0x20a0
leaq 0x2c0(%rsp), %rdi
callq 0x2ee8
leaq 0xc0(%rsp), %rdi
callq 0x20a0
leaq 0x2f8(%rsp), %rdi
callq 0x2ee8
leaq 0xe0(%rsp), %rdi
callq 0x20a0
leaq 0x330(%rsp), %rdi
callq 0x2ee8
leaq 0x100(%rsp), %rdi
callq 0x20a0
leaq 0x368(%rsp), %rdi
callq 0x2ee8
leaq 0x120(%rsp), %rdi
callq 0x20a0
leaq 0x3a0(%rsp), %rdi
callq 0x2ee8
leaq 0x140(%rsp), %rdi
callq 0x20a0
leaq 0x3d8(%rsp), %rdi
callq 0x2ee8
leaq 0x160(%rsp), %rdi
callq 0x20a0
leaq 0x410(%rsp), %rdi
callq 0x2ee8
leaq 0x180(%rsp), %rdi
callq 0x20a0
leaq 0x448(%rsp), %rdi
callq 0x2ee8
leaq 0x1a0(%rsp), %rdi
callq 0x20a0
leaq 0x510(%rsp), %rdi
callq 0x2ee8
leaq 0x1c0(%rsp), %rdi
callq 0x20a0
leaq 0x510(%rsp), %rdi
callq 0x20e0
leaq 0x520(%rsp), %r14
leaq 0xec96(%rip), %rsi      # 0x15463
movq %r14, %rdi
callq 0x2140
leaq 0x448(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x4666
leaq 0x4e0(%rsp), %rax
movq 0x10(%rax), %r13
leaq 0x10255(%rip), %rbp     # 0x16a4f
leaq 0x4e0(%rsp), %rax
cmpq %rax, %r13
je 0x6863
movq %r14, %rdi
leaq 0xec6b(%rip), %rsi      # 0x1547c
callq 0x2140
movq 0x38(%r13), %rbx
leaq 0x28(%r13), %r12
cmpq %r12, %rbx
je 0x6847
movsbl 0x20(%rbx), %esi
movq %r14, %rdi
callq 0x2190
movq %rax, %rdi
movq %rbp, %rsi
callq 0x2140
movq %rbx, %rdi
callq 0x2170
movq %rax, %rbx
jmp 0x681e
movq %r14, %rdi
leaq 0xec7d(%rip), %rsi      # 0x154ce
callq 0x2140
movq %r13, %rdi
callq 0x2170
movq %rax, %r13
jmp 0x67fa
leaq 0x528(%rsp), %rsi
movq %r15, %rdi
callq 0x21e0
leaq 0x448(%rsp), %rdi
callq 0x475e
leaq 0x510(%rsp), %rdi
callq 0x20f0
leaq 0x28(%rsp), %rdi
callq 0x2efc
movq %r15, %rax
addq $0x698, %rsp            # imm = 0x698
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x6ae9
jmp 0x68b3
movq %rax, %rbx
jmp 0x6af9
jmp 0x6ae2
movq %rax, %rbx
leaq 0x1e0(%rsp), %rdi
callq 0x2ee8
jmp 0x68d5
movq %rax, %rbx
leaq 0x40(%rsp), %rdi
callq 0x20a0
jmp 0x68e6
jmp 0x68e3
movq %rax, %rbx
leaq 0x218(%rsp), %rdi
callq 0x2ee8
jmp 0x68f8
movq %rax, %rbx
leaq 0x60(%rsp), %rdi
callq 0x20a0
jmp 0x6909
jmp 0x6906
movq %rax, %rbx
leaq 0x250(%rsp), %rdi
callq 0x2ee8
leaq 0x80(%rsp), %rdi
callq 0x20a0
jmp 0x692f
movq %rax, %rbx
jmp 0x6916
jmp 0x692c
movq %rax, %rbx
leaq 0x288(%rsp), %rdi
callq 0x2ee8
leaq 0xa0(%rsp), %rdi
callq 0x20a0
leaq 0x2c0(%rsp), %rdi
callq 0x2ee8
leaq 0xc0(%rsp), %rdi
callq 0x20a0
leaq 0x2f8(%rsp), %rdi
callq 0x2ee8
leaq 0xe0(%rsp), %rdi
callq 0x20a0
leaq 0x330(%rsp), %rdi
callq 0x2ee8
leaq 0x100(%rsp), %rdi
callq 0x20a0
leaq 0x368(%rsp), %rdi
callq 0x2ee8
leaq 0x120(%rsp), %rdi
callq 0x20a0
leaq 0x3a0(%rsp), %rdi
callq 0x2ee8
leaq 0x140(%rsp), %rdi
callq 0x20a0
leaq 0x3d8(%rsp), %rdi
callq 0x2ee8
leaq 0x160(%rsp), %rdi
callq 0x20a0
leaq 0x410(%rsp), %rdi
callq 0x2ee8
leaq 0x180(%rsp), %rdi
callq 0x20a0
leaq 0x448(%rsp), %rdi
callq 0x2ee8
leaq 0x1a0(%rsp), %rdi
callq 0x20a0
leaq 0x510(%rsp), %rdi
callq 0x2ee8
leaq 0x1c0(%rsp), %rdi
callq 0x20a0
jmp 0x6b06
movq %rax, %rbx
jmp 0x693c
jmp 0x6a42
movq %rax, %rbx
jmp 0x6949
movq %rax, %rbx
jmp 0x6956
jmp 0x6a54
movq %rax, %rbx
jmp 0x6963
movq %rax, %rbx
jmp 0x6970
jmp 0x6a66
movq %rax, %rbx
jmp 0x697d
movq %rax, %rbx
jmp 0x698a
jmp 0x6a78
movq %rax, %rbx
jmp 0x6997
movq %rax, %rbx
jmp 0x69a4
jmp 0x6a8a
movq %rax, %rbx
jmp 0x69b1
movq %rax, %rbx
jmp 0x69be
jmp 0x6a9c
movq %rax, %rbx
jmp 0x69cb
movq %rax, %rbx
jmp 0x69d8
jmp 0x6aae
movq %rax, %rbx
jmp 0x69e5
movq %rax, %rbx
jmp 0x69f2
jmp 0x6ac0
movq %rax, %rbx
jmp 0x69ff
movq %rax, %rbx
jmp 0x6a0c
jmp 0x6ad2
movq %rax, %rbx
jmp 0x6a19
movq %rax, %rbx
jmp 0x6a26
movq %rax, %rbx
jmp 0x6b06
jmp 0x6ae9
movq %rax, %rbx
leaq 0x448(%rsp), %rdi
callq 0x475e
leaq 0x510(%rsp), %rdi
callq 0x20f0
leaq 0x28(%rsp), %rdi
callq 0x2efc
movq %rbx, %rdi
callq 0x2220