// File: /workspace/github_cpp_makefile_star2_O1/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 0x14de0
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 0x176e8
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 0x176e8
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 0x176e8
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 0x176e8
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 0x176e8
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 0x176e8
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 0x176e8
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 0x176e8
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 0x176e8
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 0x176e8
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 0x176e8
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 0x176e8
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 0x176e8
leaq 0xc0(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x15032
leaq 0x150(%rsp), %r14
leaq 0x38(%rsp), %rdi
leaq 0x8(%rsp), %rsi
movq %r14, %rdx
callq 0x18373
movq %r14, %rdi
callq 0x5be8
leaq 0x120(%rsp), %rdi
callq 0x17556
leaq 0xd0(%rsp), %rdi
callq 0x5c86
leaq 0xa8(%rsp), %rdi
leaq 0x38(%rsp), %rsi
callq 0x1581c
leaq 0x58(%rsp), %rdi
leaq 0x38(%rsp), %rsi
callq 0x1581c
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 0x11109
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 0x110ce
leaq 0x90(%rsp), %rdi
leaq 0x38(%rsp), %rsi
callq 0x159b8
leaq 0xc211(%rip), %rsi      # 0x1d333
movl $0x12, %edx
movq %rbx, %rdi
callq 0x21a0
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x14e31
leaq 0xc203(%rip), %rsi      # 0x1d346
movl $0x2, %edx
movq %rax, %rdi
callq 0x21a0
leaq 0xc1f2(%rip), %rsi      # 0x1d349
movl $0x12, %edx
movq %rbx, %rdi
callq 0x21a0
leaq 0xc0(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x15032
leaq 0x150(%rsp), %rdi
movl 0x30(%rdi), %ebp
callq 0x5be8
leaq 0x120(%rsp), %rdi
callq 0x17556
leaq 0xd0(%rsp), %rdi
callq 0x5c86
movq %rbx, %rdi
movl %ebp, %esi
callq 0x2240
leaq 0xc195(%rip), %rsi      # 0x1d346
movl $0x2, %edx
movq %rax, %rdi
callq 0x21a0
leaq 0xc197(%rip), %rsi      # 0x1d35c
movl $0x12, %edx
movq %rbx, %rdi
callq 0x21a0
xorps %xmm0, %xmm0
leaq 0xc0(%rsp), %rdx
movaps %xmm0, (%rdx)
movaps %xmm0, 0x10(%rdx)
movl $0x1, (%rdx)
leaq 0x8523(%rip), %rax      # 0x19714
movq %rax, 0x18(%rdx)
leaq 0x8520(%rip), %rax      # 0x1971c
movq %rax, 0x10(%rdx)
leaq 0x48(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x195d8
movq 0xd0(%rsp), %rax
testq %rax, %rax
je 0x1122e
leaq 0xc0(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0xc0(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0x15032
leaq 0x150(%rsp), %rdi
movl 0x30(%rdi), %ebp
callq 0x5be8
leaq 0x120(%rsp), %rdi
callq 0x17556
leaq 0xd0(%rsp), %rdi
callq 0x5c86
movq %rbx, %rdi
movl %ebp, %esi
callq 0x2240
leaq 0xc0cb(%rip), %rsi      # 0x1d346
movl $0x2, %edx
movq %rax, %rdi
callq 0x21a0
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x11297
callq 0x35d6
leaq 0xc0d1(%rip), %rsi      # 0x1d36f
movl $0x12, %edx
movq %rbx, %rdi
callq 0x21a0
leaq 0x38(%rsp), %rsi
movq %rbx, %rdi
callq 0x15188
leaq 0xc087(%rip), %rsi      # 0x1d346
movl $0x2, %edx
movq %rax, %rdi
callq 0x21a0
leaq 0xc0b0(%rip), %rsi      # 0x1d383
movl $0x12, %edx
movq %rbx, %rdi
callq 0x21a0
leaq 0xa8(%rsp), %rsi
movq %rbx, %rdi
callq 0x15ad2
leaq 0xc04f(%rip), %rsi      # 0x1d346
movl $0x2, %edx
movq %rax, %rdi
callq 0x21a0
leaq 0xc077(%rip), %rsi      # 0x1d382
movl $0x13, %edx
movq %rbx, %rdi
callq 0x21a0
leaq 0x58(%rsp), %rsi
movq %rbx, %rdi
callq 0x15ad2
leaq 0xc01a(%rip), %rsi      # 0x1d346
movl $0x2, %edx
movq %rax, %rdi
callq 0x21a0
leaq 0xc056(%rip), %rsi      # 0x1d396
movl $0x12, %edx
movq %rbx, %rdi
callq 0x21a0
leaq 0x90(%rsp), %rsi
movq %rbx, %rdi
callq 0x15bbe
leaq 0xbfe2(%rip), %rsi      # 0x1d346
movl $0x2, %edx
movq %rax, %rdi
callq 0x21a0
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
xorl %edx, %edx
callq 0x15caa
leaq 0x90(%rsp), %rdi
callq 0x163aa
leaq 0x58(%rsp), %rdi
callq 0x163ea
leaq 0xa8(%rsp), %rdi
callq 0x163ea
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x113b3
callq 0x35d6
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x113c2
callq 0x35d6
addq $0x190, %rsp            # imm = 0x190
popq %rbx
popq %r14
popq %rbp
retq
jmp 0x113f4
movq %rax, %rbx
movq 0xd0(%rsp), %rax
testq %rax, %rax
je 0x11453
leaq 0xc0(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0x11453
movq %rax, %rdi
callq 0x329c
movq %rax, %rbx
jmp 0x11460
movq %rax, %rbx
jmp 0x1146a
movq %rax, %rbx
jmp 0x11477
movq %rax, %rbx
leaq 0xc0(%rsp), %rdi
callq 0x15162
jmp 0x11486
jmp 0x11437
jmp 0x11437
jmp 0x11437
jmp 0x11437
jmp 0x11437
jmp 0x11437
jmp 0x11437
jmp 0x11437
jmp 0x11437
jmp 0x11437
jmp 0x11437
jmp 0x11437
jmp 0x11437
movq %rax, %rbx
jmp 0x11486
movq %rax, %rbx
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x11453
callq 0x35d6
jmp 0x11453
movq %rax, %rbx
leaq 0x90(%rsp), %rdi
callq 0x163aa
leaq 0x58(%rsp), %rdi
callq 0x163ea
leaq 0xa8(%rsp), %rdi
callq 0x163ea
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x11486
callq 0x35d6
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x11495
callq 0x35d6
movq %rbx, %rdi
callq 0x2250