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

    auto h  = graph2dag(g);     // on fait un dag dont les noeuds sont les cycles du graphe g
    auto p  = parallelize(h);   //
    auto rp = rparallelize(h);  //
    auto s  = serialize(h);     //

    ss << "test7:        g = " << g << "; ";
    ss << "number of cycles: " << cycles(g) << "; ";
    ss << "0-cycles        : " << cycles(cut(g, 1)) << "; ";
    ss << "graph2dag(g)    = " << h << "; ";
    ss << "parallelize(h)  = " << p << "; ";
    ss << "rparallelize(h)  = " << rp << "; ";
    ss << "serialize(h)    = " << s << "; ";

    dotfile(ss, g);
}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
subq $0x190, %rsp            # imm = 0x190
movq %rdi, %rbx
leaq 0x8(%rsp), %r14
movq %r14, %rdi
callq 0x14ee8
leaq 0x37(%rsp), %rsi
movb $0x41, (%rsi)
leaq 0x36(%rsp), %rdx
movb $0x42, (%rdx)
leaq 0xc0(%rsp), %rcx
movl $0x0, (%rcx)
movq (%r14), %rdi
callq 0x1781e
leaq 0x35(%rsp), %rsi
movb $0x42, (%rsi)
leaq 0x34(%rsp), %rdx
movb $0x43, (%rdx)
leaq 0xa8(%rsp), %rcx
movl $0x1, (%rcx)
movq 0x8(%rsp), %rdi
callq 0x1781e
leaq 0x33(%rsp), %rsi
movb $0x43, (%rsi)
leaq 0x32(%rsp), %rdx
movb $0x41, (%rdx)
leaq 0x58(%rsp), %rcx
movl $0x0, (%rcx)
movq 0x8(%rsp), %rdi
callq 0x1781e
leaq 0x31(%rsp), %rsi
movb $0x44, (%rsi)
leaq 0x30(%rsp), %rdx
movb $0x42, (%rdx)
leaq 0x90(%rsp), %rcx
movl $0x0, (%rcx)
movq 0x8(%rsp), %rdi
callq 0x1781e
leaq 0x2f(%rsp), %rsi
movb $0x44, (%rsi)
leaq 0x2e(%rsp), %rdx
movb $0x43, (%rdx)
leaq 0x38(%rsp), %rcx
movl $0x0, (%rcx)
movq 0x8(%rsp), %rdi
callq 0x1781e
leaq 0x2d(%rsp), %rsi
movb $0x44, (%rsi)
leaq 0x2c(%rsp), %rdx
movb $0x45, (%rdx)
leaq 0x48(%rsp), %rcx
movl $0x1, (%rcx)
movq 0x8(%rsp), %rdi
callq 0x1781e
leaq 0x2b(%rsp), %rsi
movb $0x45, (%rsi)
leaq 0x2a(%rsp), %rdx
movb $0x44, (%rdx)
leaq 0x8c(%rsp), %rcx
movl $0x0, (%rcx)
movq 0x8(%rsp), %rdi
callq 0x1781e
leaq 0x29(%rsp), %rsi
movb $0x45, (%rsi)
leaq 0x28(%rsp), %rdx
movb $0x46, (%rdx)
leaq 0x88(%rsp), %rcx
movl $0x0, (%rcx)
movq 0x8(%rsp), %rdi
callq 0x1781e
leaq 0x27(%rsp), %rsi
movb $0x46, (%rsi)
leaq 0x26(%rsp), %rdx
movb $0x47, (%rdx)
leaq 0x84(%rsp), %rcx
movl $0x0, (%rcx)
movq 0x8(%rsp), %rdi
callq 0x1781e
leaq 0x25(%rsp), %rsi
movb $0x47, (%rsi)
leaq 0x24(%rsp), %rdx
movb $0x46, (%rdx)
leaq 0x80(%rsp), %rcx
movl $0x1, (%rcx)
movq 0x8(%rsp), %rdi
callq 0x1781e
leaq 0x23(%rsp), %rsi
movb $0x48, (%rsi)
leaq 0x22(%rsp), %rdx
movb $0x47, (%rdx)
leaq 0x7c(%rsp), %rcx
movl $0x0, (%rcx)
movq 0x8(%rsp), %rdi
callq 0x1781e
leaq 0x21(%rsp), %rsi
movb $0x48, (%rsi)
leaq 0x20(%rsp), %rdx
movb $0x45, (%rdx)
leaq 0x78(%rsp), %rcx
movl $0x0, (%rcx)
movq 0x8(%rsp), %rdi
callq 0x1781e
movb $0x48, %al
leaq 0x1f(%rsp), %rsi
movb %al, (%rsi)
leaq 0x1e(%rsp), %rdx
movb %al, (%rdx)
leaq 0x74(%rsp), %rcx
movl $0x1, (%rcx)
movq 0x8(%rsp), %rdi
callq 0x1781e
leaq 0xc0(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x1513a
leaq 0x150(%rsp), %r14
leaq 0x38(%rsp), %rdi
leaq 0x8(%rsp), %rsi
movq %r14, %rdx
callq 0x1848d
movq %r14, %rdi
callq 0x5ad0
leaq 0x120(%rsp), %rdi
callq 0x1767c
leaq 0xd0(%rsp), %rdi
callq 0x5b6e
leaq 0xa8(%rsp), %rdi
leaq 0x38(%rsp), %rsi
callq 0x15922
leaq 0x58(%rsp), %rdi
leaq 0x38(%rsp), %rsi
callq 0x15922
movq 0x58(%rsp), %rax
movq 0x60(%rsp), %rcx
subq %rax, %rcx
shrq $0x3, %rcx
imull $0xaaaaaaab, %ecx, %ecx # imm = 0xAAAAAAAB
decl %ecx
testl %ecx, %ecx
jle 0x10f79
movl %ecx, %ecx
leaq (%rcx,%rcx,2), %rdx
decq %rcx
leaq (%rax,%rdx,8), %rdx
addq $0x10, %rdx
addq $0x10, %rax
xorl %esi, %esi
movups -0x10(%rax), %xmm0
movq (%rax), %rdi
movq -0x10(%rdx), %r8
movq %r8, -0x10(%rax)
movq -0x8(%rdx), %r8
movq %r8, -0x8(%rax)
movq (%rdx), %r8
movq %r8, (%rax)
movups %xmm0, -0x10(%rdx)
movq %rdi, (%rdx)
incq %rsi
addq $0x18, %rax
leaq -0x1(%rcx), %rdi
addq $-0x18, %rdx
cmpq %rcx, %rsi
movq %rdi, %rcx
jl 0x10f3e
leaq 0x90(%rsp), %rdi
leaq 0x38(%rsp), %rsi
callq 0x15aba
leaq 0xc3a1(%rip), %rsi      # 0x1d333
movl $0x12, %edx
movq %rbx, %rdi
callq 0x21a0
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x14f39
leaq 0xc393(%rip), %rsi      # 0x1d346
movl $0x2, %edx
movq %rax, %rdi
callq 0x21a0
leaq 0xc382(%rip), %rsi      # 0x1d349
movl $0x12, %edx
movq %rbx, %rdi
callq 0x21a0
leaq 0xc0(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x1513a
leaq 0x150(%rsp), %rdi
movl 0x30(%rdi), %ebp
callq 0x5ad0
leaq 0x120(%rsp), %rdi
callq 0x1767c
leaq 0xd0(%rsp), %rdi
callq 0x5b6e
movq %rbx, %rdi
movl %ebp, %esi
callq 0x2240
leaq 0xc325(%rip), %rsi      # 0x1d346
movl $0x2, %edx
movq %rax, %rdi
callq 0x21a0
leaq 0xc327(%rip), %rsi      # 0x1d35c
movl $0x12, %edx
movq %rbx, %rdi
callq 0x21a0
xorps %xmm0, %xmm0
leaq 0xc0(%rsp), %rdx
movaps %xmm0, (%rdx)
movl $0x1, (%rdx)
leaq 0x87bf(%rip), %rax      # 0x1981c
movq %rax, 0x18(%rdx)
leaq 0x87bc(%rip), %rax      # 0x19824
movq %rax, 0x10(%rdx)
leaq 0x48(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x196e1
movq 0xd0(%rsp), %rax
testq %rax, %rax
je 0x1109a
leaq 0xc0(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0xc0(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0x1513a
leaq 0x150(%rsp), %rdi
movl 0x30(%rdi), %ebp
callq 0x5ad0
leaq 0x120(%rsp), %rdi
callq 0x1767c
leaq 0xd0(%rsp), %rdi
callq 0x5b6e
movq %rbx, %rdi
movl %ebp, %esi
callq 0x2240
leaq 0xc25f(%rip), %rsi      # 0x1d346
movl $0x2, %edx
movq %rax, %rdi
callq 0x21a0
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x11103
callq 0x3504
leaq 0xc265(%rip), %rsi      # 0x1d36f
movl $0x12, %edx
movq %rbx, %rdi
callq 0x21a0
leaq 0x38(%rsp), %rsi
movq %rbx, %rdi
callq 0x1527e
leaq 0xc21b(%rip), %rsi      # 0x1d346
movl $0x2, %edx
movq %rax, %rdi
callq 0x21a0
leaq 0xc244(%rip), %rsi      # 0x1d383
movl $0x12, %edx
movq %rbx, %rdi
callq 0x21a0
leaq 0xa8(%rsp), %rsi
movq %rbx, %rdi
callq 0x15bd9
leaq 0xc1e3(%rip), %rsi      # 0x1d346
movl $0x2, %edx
movq %rax, %rdi
callq 0x21a0
leaq 0xc20b(%rip), %rsi      # 0x1d382
movl $0x13, %edx
movq %rbx, %rdi
callq 0x21a0
leaq 0x58(%rsp), %rsi
movq %rbx, %rdi
callq 0x15bd9
leaq 0xc1ae(%rip), %rsi      # 0x1d346
movl $0x2, %edx
movq %rax, %rdi
callq 0x21a0
leaq 0xc1ea(%rip), %rsi      # 0x1d396
movl $0x12, %edx
movq %rbx, %rdi
callq 0x21a0
leaq 0x90(%rsp), %rsi
movq %rbx, %rdi
callq 0x15cc5
leaq 0xc176(%rip), %rsi      # 0x1d346
movl $0x2, %edx
movq %rax, %rdi
callq 0x21a0
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
xorl %edx, %edx
callq 0x15db1
leaq 0x90(%rsp), %rdi
callq 0x164aa
leaq 0x58(%rsp), %rdi
callq 0x164f0
leaq 0xa8(%rsp), %rdi
callq 0x164f0
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x1121f
callq 0x3504
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x1122e
callq 0x3504
addq $0x190, %rsp            # imm = 0x190
popq %rbx
popq %r14
popq %rbp
retq
jmp 0x11260
movq %rax, %rbx
movq 0xd0(%rsp), %rax
testq %rax, %rax
je 0x112bf
leaq 0xc0(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0x112bf
movq %rax, %rdi
callq 0x31c5
movq %rax, %rbx
jmp 0x112cc
movq %rax, %rbx
jmp 0x112d6
movq %rax, %rbx
jmp 0x112e3
movq %rax, %rbx
leaq 0xc0(%rsp), %rdi
callq 0x15258
jmp 0x112f2
jmp 0x112a3
jmp 0x112a3
jmp 0x112a3
jmp 0x112a3
jmp 0x112a3
jmp 0x112a3
jmp 0x112a3
jmp 0x112a3
jmp 0x112a3
jmp 0x112a3
jmp 0x112a3
jmp 0x112a3
jmp 0x112a3
movq %rax, %rbx
jmp 0x112f2
movq %rax, %rbx
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x112bf
callq 0x3504
jmp 0x112bf
movq %rax, %rbx
leaq 0x90(%rsp), %rdi
callq 0x164aa
leaq 0x58(%rsp), %rdi
callq 0x164f0
leaq 0xa8(%rsp), %rdi
callq 0x164f0
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x112f2
callq 0x3504
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x11301
callq 0x3504
movq %rbx, %rdi
callq 0x2250