// File: /workspace/github_cpp_makefile_star2_O3/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, %rbx
leaq 0x10(%rsp), %r14
movq %r14, %rdi
callq 0x14ee8
leaq 0x9(%rsp), %rsi
movb $0x41, (%rsi)
leaq 0xf(%rsp), %rdx
movb $0x42, (%rdx)
leaq 0x90(%rsp), %rcx
movl $0x0, (%rcx)
movq (%r14), %rdi
callq 0x1781e
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 0x1781e
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 0x1781e
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 0x1781e
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 0x1781e
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 0x1781e
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 0x1781e
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 0x1781e
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 0x1781e
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 0x1781e
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 0x1781e
leaq 0x95bd(%rip), %rsi      # 0x1dbe3
movl $0xc, %edx
movq %rbx, %rdi
callq 0x21a0
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0x14f39
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2160
movsbl %al, %esi
movq %r14, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20d0
leaq 0x9776(%rip), %rsi      # 0x1dde7
movl $0x10, %edx
movq %rbx, %rdi
callq 0x21a0
leaq 0x90(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x17125
leaq 0x90(%rsp), %rsi
movq %rbx, %rdi
callq 0x16e43
movq %rax, %r14
leaq 0x9560(%rip), %rsi      # 0x1dc0a
movl $0x8, %edx
movq %rax, %rdi
callq 0x21a0
movq %rbx, 0x40(%rsp)
leaq 0x48(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x17125
movq %r14, 0x30(%rsp)
movq 0x10(%rsp), %rax
movq 0x18(%rax), %r15
addq $0x8, %rax
movq %rax, 0x38(%rsp)
xorl %ebp, %ebp
cmpq %rax, %r15
je 0x147fe
leaq 0x68(%rsp), %rbx
leaq 0x20(%r15), %rsi
movq 0x70(%rsp), %r8
movl $0x0, %r14d
testq %r8, %r8
je 0x14756
movb (%rsi), %al
movq %rbx, %r9
movq %r9, %rcx
movq %r8, %rdx
movb 0x20(%r8), %dil
xorl %r8d, %r8d
cmpb %al, %dil
setl %r8b
movq %rdx, %r9
cmovlq %rcx, %r9
movq 0x10(%rdx,%r8,8), %r8
testq %r8, %r8
jne 0x1470b
movl $0x0, %r14d
cmpq %rbx, %r9
je 0x14756
cmpb %al, %dil
movq %rdx, %r8
cmovlq %rcx, %r8
cmpb 0x20(%r8), %al
jl 0x14756
cmpb %al, %dil
cmovlq %rcx, %rdx
movl 0x24(%rdx), %r14d
movq 0x10(%rsp), %rdi
addq $0x30, %rdi
callq 0x17ddc
movq %rax, %r12
movq 0x18(%rax), %rax
addq $0x8, %r12
cmpq %r12, %rax
je 0x147e8
movq 0x70(%rsp), %r13
xorl %ecx, %ecx
testq %r13, %r13
je 0x147cd
movb 0x20(%rax), %dl
movq %r13, %r10
movq %rbx, %r9
movq %r9, %rsi
movq %r10, %rdi
movb 0x20(%r10), %r8b
xorl %r10d, %r10d
cmpb %dl, %r8b
setl %r10b
movq %rdi, %r9
cmovlq %rsi, %r9
movq 0x10(%rdi,%r10,8), %r10
testq %r10, %r10
jne 0x14789
cmpq %rbx, %r9
je 0x147cd
cmpb %dl, %r8b
movq %rdi, %r9
cmovlq %rsi, %r9
cmpb 0x20(%r9), %dl
jl 0x147cd
cmpb %dl, %r8b
cmovlq %rsi, %rdi
movl 0x24(%rdi), %ecx
movl %r14d, %edx
subl %ecx, %edx
movl %edx, %ecx
negl %ecx
cmovsl %edx, %ecx
addl %ecx, %ebp
movq %rax, %rdi
callq 0x21b0
cmpq %r12, %rax
jne 0x14779
movq %r15, %rdi
callq 0x21b0
movq %rax, %r15
cmpq 0x38(%rsp), %rax
jne 0x146f2
movq 0x30(%rsp), %rdi
movl %ebp, %esi
callq 0x2240
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2160
movsbl %al, %esi
movq %r14, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20d0
leaq 0x60(%rsp), %r14
movq %r14, %rdi
callq 0x176c6
movq -0x18(%r14), %rdi
testq %rdi, %rdi
movq 0x40(%rsp), %rbx
je 0x14854
callq 0x2150
leaq 0xa8(%rsp), %r14
movq %r14, %rdi
callq 0x176c6
movq -0x18(%r14), %rdi
testq %rdi, %rdi
je 0x14872
callq 0x2150
leaq 0x957f(%rip), %rsi      # 0x1ddf8
movl $0x10, %edx
movq %rbx, %rdi
callq 0x21a0
leaq 0x90(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x1736b
leaq 0x90(%rsp), %rsi
movq %rbx, %rdi
callq 0x16e43
movq %rax, %rbx
leaq 0x9358(%rip), %rsi      # 0x1dc0a
movl $0x8, %edx
movq %rax, %rdi
callq 0x21a0
leaq 0x48(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x1736b
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 0x149fd
leaq 0x68(%rsp), %r13
leaq 0x20(%r14), %rsi
movq 0x70(%rsp), %r8
movl $0x0, %ebx
testq %r8, %r8
je 0x14956
movb (%rsi), %al
movq %r13, %r9
movq %r9, %rcx
movq %r8, %rdx
movb 0x20(%r8), %dil
xorl %r8d, %r8d
cmpb %al, %dil
setl %r8b
movq %rdx, %r9
cmovlq %rcx, %r9
movq 0x10(%rdx,%r8,8), %r8
testq %r8, %r8
jne 0x1490d
movl $0x0, %ebx
cmpq %r13, %r9
je 0x14956
cmpb %al, %dil
movq %rdx, %r8
cmovlq %rcx, %r8
cmpb 0x20(%r8), %al
jl 0x14956
cmpb %al, %dil
cmovlq %rcx, %rdx
movl 0x24(%rdx), %ebx
movq 0x10(%rsp), %rdi
addq $0x30, %rdi
callq 0x17ddc
movq %rax, %r15
movq 0x18(%rax), %rax
addq $0x8, %r15
cmpq %r15, %rax
je 0x149e7
movq 0x70(%rsp), %r12
xorl %ecx, %ecx
testq %r12, %r12
je 0x149cd
movb 0x20(%rax), %dl
movq %r12, %r10
movq %r13, %r9
movq %r9, %rsi
movq %r10, %rdi
movb 0x20(%r10), %r8b
xorl %r10d, %r10d
cmpb %dl, %r8b
setl %r10b
movq %rdi, %r9
cmovlq %rsi, %r9
movq 0x10(%rdi,%r10,8), %r10
testq %r10, %r10
jne 0x14989
cmpq %r13, %r9
je 0x149cd
cmpb %dl, %r8b
movq %rdi, %r9
cmovlq %rsi, %r9
cmpb 0x20(%r9), %dl
jl 0x149cd
cmpb %dl, %r8b
cmovlq %rsi, %rdi
movl 0x24(%rdi), %ecx
movl %ebx, %edx
subl %ecx, %edx
movl %edx, %ecx
negl %ecx
cmovsl %edx, %ecx
addl %ecx, %ebp
movq %rax, %rdi
callq 0x21b0
cmpq %r15, %rax
jne 0x14979
movq %r14, %rdi
callq 0x21b0
movq %rax, %r14
cmpq 0x38(%rsp), %rax
jne 0x148f5
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 0x176c6
movq -0x18(%rbx), %rdi
testq %rdi, %rdi
je 0x14a4e
callq 0x2150
leaq 0xa8(%rsp), %rbx
movq %rbx, %rdi
callq 0x176c6
movq -0x18(%rbx), %rdi
testq %rdi, %rdi
je 0x14a6c
callq 0x2150
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x14a7b
callq 0x3504
addq $0xd8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x14aad
jmp 0x14ab6
jmp 0x14aad
jmp 0x14ab6
jmp 0x14ab6
jmp 0x14ab6
jmp 0x14ab6
jmp 0x14ab6
jmp 0x14ab6
jmp 0x14ab6
jmp 0x14ab6
jmp 0x14ab6
jmp 0x14ab6
jmp 0x14ab6
jmp 0x14ab6
jmp 0x14aad
movq %rax, %rbx
jmp 0x14aca
jmp 0x14abd
jmp 0x14abd
movq %rax, %rbx
jmp 0x14ad7
jmp 0x14abd
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
callq 0x17108
leaq 0x90(%rsp), %rdi
callq 0x17108
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x14ae6
callq 0x3504
movq %rbx, %rdi
callq 0x2250