// File: /workspace/github_cpp_makefile_star2_O1/grame-cncm[P]digraph/tests.cpp
// Function: test15(std::ostream&)
void test15(std::ostream& ss)
{
    // roots and leaves
    digraph<char, int> h;
    h.add('A', 'B', 0).add('B', 'C', 0).add('C', 'D', 0).add('B', 'G', 1).add('C', 'B', 1);
    h.add('D', 'U', 0).add('U', 'D', 1);
    h.add('E', 'F', 0).add('F', 'G', 0).add('G', 'H', 0).add('G', 'F', 2);

    ss << "graph h   : " << h << std::endl;
    ss << "deep-first    : " << dfcyclesschedule(h) << ", cost: " << schedulingcost(h, dfcyclesschedule(h))
       << std::endl;
    ss << "breadth-first : " << bfcyclesschedule(h) << ", cost: " << schedulingcost(h, bfcyclesschedule(h))
       << std::endl;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xd8, %rsp
movq %rdi, %r14
leaq 0x10(%rsp), %rbx
movq %rbx, %rdi
callq 0x14de0
leaq 0x9(%rsp), %rsi
movb $0x41, (%rsi)
leaq 0xf(%rsp), %rdx
movb $0x42, (%rdx)
leaq 0x90(%rsp), %rcx
movl $0x0, (%rcx)
movq (%rbx), %rdi
callq 0x176e8
leaq 0xe(%rsp), %rsi
movb $0x42, (%rsi)
leaq 0xd(%rsp), %rdx
movb $0x43, (%rdx)
leaq 0x48(%rsp), %rcx
movl $0x0, (%rcx)
movq 0x10(%rsp), %rdi
callq 0x176e8
leaq 0xc(%rsp), %rsi
movb $0x43, (%rsi)
leaq 0xb(%rsp), %rdx
movb $0x44, (%rdx)
leaq 0x2c(%rsp), %rcx
movl $0x0, (%rcx)
movq 0x10(%rsp), %rdi
callq 0x176e8
leaq 0xa(%rsp), %rsi
movb $0x42, (%rsi)
leaq 0x23(%rsp), %rdx
movb $0x47, (%rdx)
leaq 0x28(%rsp), %rcx
movl $0x1, (%rcx)
movq 0x10(%rsp), %rdi
callq 0x176e8
leaq 0x22(%rsp), %rsi
movb $0x43, (%rsi)
leaq 0x21(%rsp), %rdx
movb $0x42, (%rdx)
leaq 0x24(%rsp), %rcx
movl $0x1, (%rcx)
movq 0x10(%rsp), %rdi
callq 0x176e8
leaq 0x2c(%rsp), %rsi
movb $0x44, (%rsi)
leaq 0x28(%rsp), %rdx
movb $0x55, (%rdx)
leaq 0x90(%rsp), %rcx
movl $0x0, (%rcx)
movq 0x10(%rsp), %rdi
callq 0x176e8
leaq 0x24(%rsp), %rsi
movb $0x55, (%rsi)
leaq 0x9(%rsp), %rdx
movb $0x44, (%rdx)
leaq 0x48(%rsp), %rcx
movl $0x1, (%rcx)
movq 0x10(%rsp), %rdi
callq 0x176e8
leaq 0x24(%rsp), %rsi
movb $0x45, (%rsi)
leaq 0x9(%rsp), %rdx
movb $0x46, (%rdx)
leaq 0x90(%rsp), %rcx
movl $0x0, (%rcx)
movq 0x10(%rsp), %rdi
callq 0x176e8
leaq 0xf(%rsp), %rsi
movb $0x46, (%rsi)
leaq 0xe(%rsp), %rdx
movb $0x47, (%rdx)
leaq 0x48(%rsp), %rcx
movl $0x0, (%rcx)
movq 0x10(%rsp), %rdi
callq 0x176e8
leaq 0xd(%rsp), %rsi
movb $0x47, (%rsi)
leaq 0xc(%rsp), %rdx
movb $0x48, (%rdx)
leaq 0x2c(%rsp), %rcx
movl $0x0, (%rcx)
movq 0x10(%rsp), %rdi
callq 0x176e8
leaq 0xb(%rsp), %rsi
movb $0x47, (%rsi)
leaq 0xa(%rsp), %rdx
movb $0x46, (%rdx)
leaq 0x28(%rsp), %rcx
movl $0x2, (%rcx)
movq 0x10(%rsp), %rdi
callq 0x176e8
leaq 0x95a2(%rip), %rsi      # 0x1dbe3
movl $0xc, %edx
movq %r14, %rdi
callq 0x21a0
leaq 0x10(%rsp), %rsi
movq %r14, %rdi
callq 0x14e31
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2160
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20d0
leaq 0x975b(%rip), %rsi      # 0x1dde7
movl $0x10, %edx
movq %r14, %rdi
callq 0x21a0
leaq 0x90(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x16ffd
leaq 0x90(%rsp), %rsi
movq %r14, %rdi
callq 0x16d49
movq %rax, %rbx
leaq 0x9545(%rip), %rsi      # 0x1dc0a
movl $0x8, %edx
movq %rax, %rdi
callq 0x21a0
leaq 0x48(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x16ffd
movq %rbx, 0x30(%rsp)
movq %r14, 0x40(%rsp)
movq 0x10(%rsp), %rax
movq 0x18(%rax), %r15
addq $0x8, %rax
movq %rax, 0x38(%rsp)
xorl %ebp, %ebp
cmpq %rax, %r15
je 0x14778
leaq 0x48(%rsp), %r12
leaq 0x20(%r15), %rbx
movq %r12, %rdi
movq %rbx, %rsi
callq 0x1aabc
movl %eax, %r13d
movq 0x10(%rsp), %rdi
addq $0x30, %rdi
movq %rbx, %rsi
callq 0x17cbe
movq %rax, %rbx
movq 0x18(%rax), %r14
addq $0x8, %rbx
cmpq %rbx, %r14
je 0x14766
leaq 0x20(%r14), %rsi
movq %r12, %rdi
callq 0x1aabc
movl %r13d, %ecx
subl %eax, %ecx
movl %ecx, %eax
negl %eax
cmovsl %ecx, %eax
addl %eax, %ebp
movq %r14, %rdi
callq 0x21b0
movq %rax, %r14
cmpq %rbx, %rax
jne 0x1473c
movq %r15, %rdi
callq 0x21b0
movq %rax, %r15
cmpq 0x38(%rsp), %rax
jne 0x14709
movq 0x30(%rsp), %rdi
movl %ebp, %esi
callq 0x2240
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2160
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20d0
leaq 0x60(%rsp), %rbx
movq %rbx, %rdi
callq 0x175a0
movq -0x18(%rbx), %rdi
testq %rdi, %rdi
movq 0x40(%rsp), %r14
je 0x147ce
callq 0x2150
leaq 0xa8(%rsp), %rbx
movq %rbx, %rdi
callq 0x175a0
movq -0x18(%rbx), %rdi
testq %rdi, %rdi
je 0x147ec
callq 0x2150
leaq 0x9605(%rip), %rsi      # 0x1ddf8
movl $0x10, %edx
movq %r14, %rdi
callq 0x21a0
leaq 0x90(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x17248
leaq 0x90(%rsp), %rsi
movq %r14, %rdi
callq 0x16d49
movq %rax, %rbx
leaq 0x93de(%rip), %rsi      # 0x1dc0a
movl $0x8, %edx
movq %rax, %rdi
callq 0x21a0
leaq 0x48(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x17248
movq %rbx, 0x30(%rsp)
movq 0x10(%rsp), %rax
movq 0x18(%rax), %r14
addq $0x8, %rax
movq %rax, 0x38(%rsp)
xorl %ebp, %ebp
cmpq %rax, %r14
je 0x148da
leaq 0x48(%rsp), %r15
leaq 0x20(%r14), %rbx
movq %r15, %rdi
movq %rbx, %rsi
callq 0x1aabc
movl %eax, %r12d
movq 0x10(%rsp), %rdi
addq $0x30, %rdi
movq %rbx, %rsi
callq 0x17cbe
movq %rax, %r13
movq 0x18(%rax), %rbx
addq $0x8, %r13
cmpq %r13, %rbx
je 0x148c8
leaq 0x20(%rbx), %rsi
movq %r15, %rdi
callq 0x1aabc
movl %r12d, %ecx
subl %eax, %ecx
movl %ecx, %eax
negl %eax
cmovsl %ecx, %eax
addl %eax, %ebp
movq %rbx, %rdi
callq 0x21b0
movq %rax, %rbx
cmpq %r13, %rax
jne 0x1489e
movq %r14, %rdi
callq 0x21b0
movq %rax, %r14
cmpq 0x38(%rsp), %rax
jne 0x1486b
movq 0x30(%rsp), %rdi
movl %ebp, %esi
callq 0x2240
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2160
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20d0
leaq 0x60(%rsp), %rbx
movq %rbx, %rdi
callq 0x175a0
movq -0x18(%rbx), %rdi
testq %rdi, %rdi
je 0x1492b
callq 0x2150
leaq 0xa8(%rsp), %rbx
movq %rbx, %rdi
callq 0x175a0
movq -0x18(%rbx), %rdi
testq %rdi, %rdi
je 0x14949
callq 0x2150
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x14958
callq 0x35d6
addq $0xd8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x1498a
jmp 0x14993
jmp 0x1498a
jmp 0x14993
jmp 0x14993
jmp 0x14993
jmp 0x14993
jmp 0x14993
jmp 0x14993
jmp 0x14993
jmp 0x14993
jmp 0x14993
jmp 0x14993
jmp 0x14993
jmp 0x14993
jmp 0x1498a
movq %rax, %rbx
jmp 0x149ab
jmp 0x1499e
jmp 0x1499e
movq %rax, %rbx
jmp 0x149b8
jmp 0x1499e
jmp 0x1499e
jmp 0x1499e
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
callq 0x16fe0
leaq 0x90(%rsp), %rdi
callq 0x16fe0
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x149c7
callq 0x35d6
movq %rbx, %rdi
callq 0x2250