// File: /workspace/github_cpp_makefile_star2_O2/ef-gy[P]libefgy/src/test-case/markov.cpp
// Function: bool testMarkovChain<1u>(std::ostream&)
bool testMarkovChain(std::ostream &log) {
  typename markov::chain<char, order>::random PRNG(1);
  markov::chain<char, order> mc(PRNG);

  const std::vector<std::string> input{"frob", "frib", "frab",
                                       "foo",  "bar",  "baz"};
  for (const auto &i : input) {
    mc << typename markov::chain<char, order>::input(i.begin(), i.end());
  }

  typename markov::chain<char, order>::output out;

  mc >> out;
  std::cerr << std::string(out.begin(), out.end()) << "\n";
  mc >> out;
  std::cerr << std::string(out.begin(), out.end()) << "\n";
  mc >> out;
  std::cerr << std::string(out.begin(), out.end()) << "\n";
  mc >> out;
  std::cerr << std::string(out.begin(), out.end()) << "\n";
  mc >> out;
  std::cerr << std::string(out.begin(), out.end()) << "\n";

  return true;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x2840, %rsp           # imm = 0x2840
leaq 0x14b8(%rsp), %rbx
pushq $0x1
popq %rsi
movq %rbx, %rdi
callq 0x12102
leaq 0x100(%rsp), %rdi
movl $0x1388, %edx           # imm = 0x1388
movq %rbx, %rsi
callq 0x4220
leaq 0x1490(%rsp), %rax
andl $0x0, (%rax)
andq $0x0, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
andq $0x0, 0x20(%rax)
leaq 0xfe05(%rip), %rsi      # 0x14abe
leaq 0x40(%rsp), %r14
leaq 0x10(%rsp), %rdx
movq %r14, %rdi
callq 0x4a3a
leaq 0x60(%rsp), %r15
leaq 0xfdec(%rip), %rsi      # 0x14ac3
leaq 0xf(%rsp), %rdx
movq %r15, %rdi
callq 0x4a3a
leaq 0x80(%rsp), %r15
leaq 0xfdd5(%rip), %rsi      # 0x14ac8
leaq 0xe(%rsp), %rdx
movq %r15, %rdi
callq 0x4a3a
leaq 0xa0(%rsp), %r15
leaq 0xfdbe(%rip), %rsi      # 0x14acd
leaq 0xd(%rsp), %rdx
movq %r15, %rdi
callq 0x4a3a
leaq 0xc0(%rsp), %r15
leaq 0xfda6(%rip), %rsi      # 0x14ad1
leaq 0xc(%rsp), %rdx
movq %r15, %rdi
callq 0x4a3a
leaq 0xe0(%rsp), %r15
leaq 0xfd8e(%rip), %rsi      # 0x14ad5
leaq 0xb(%rsp), %rdx
movq %r15, %rdi
callq 0x4a3a
leaq 0x28(%rsp), %rdi
leaq 0x40(%rsp), %rsi
pushq $0x6
popq %rdx
leaq 0xa(%rsp), %rcx
callq 0x12044
movl $0xa0, %ebx
leaq (%rsp,%rbx), %rdi
addq $0x40, %rdi
callq 0x4120
addq $-0x20, %rbx
cmpq $-0x20, %rbx
jne 0x4d70
movq 0x28(%rsp), %r12
movq 0x30(%rsp), %r13
leaq 0x40(%rsp), %rbx
leaq 0x10(%rsp), %r14
leaq 0x100(%rsp), %r15
cmpq %r13, %r12
je 0x4dd8
movq (%r12), %rsi
movq 0x8(%r12), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
movq %r14, %rcx
callq 0x12090
movq %r15, %rdi
movq %rbx, %rsi
callq 0x1207e
movq %rbx, %rdi
callq 0x9bf6
addq $0x20, %r12
jmp 0x4da3
xorps %xmm0, %xmm0
leaq 0x10(%rsp), %rsi
movaps %xmm0, (%rsi)
andq $0x0, 0x10(%rsi)
leaq 0x100(%rsp), %rdi
callq 0x120c2
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
leaq 0x50(%rsp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0x40(%rsp), %rdi
callq 0x12f48
movq 0x1b1c7(%rip), %rdi     # 0x1ffe0
leaq 0x40(%rsp), %rsi
callq 0x4250
leaq 0xf35f(%rip), %rsi      # 0x14189
movq %rax, %rdi
callq 0x4270
leaq 0x40(%rsp), %rdi
callq 0x4120
leaq 0x100(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x120c2
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
leaq 0x40(%rsp), %rdi
movq %rbx, (%rdi)
callq 0x12f48
movq 0x1b174(%rip), %rdi     # 0x1ffe0
leaq 0x40(%rsp), %rsi
callq 0x4250
leaq 0xf30c(%rip), %rsi      # 0x14189
movq %rax, %rdi
callq 0x4270
leaq 0x40(%rsp), %rdi
callq 0x4120
leaq 0x100(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x120c2
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
leaq 0x40(%rsp), %rdi
movq %rbx, (%rdi)
callq 0x12f48
movq 0x1b121(%rip), %rdi     # 0x1ffe0
leaq 0x40(%rsp), %rsi
callq 0x4250
leaq 0xf2b9(%rip), %rsi      # 0x14189
movq %rax, %rdi
callq 0x4270
leaq 0x40(%rsp), %rdi
callq 0x4120
leaq 0x100(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x120c2
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
leaq 0x40(%rsp), %rdi
movq %rbx, (%rdi)
callq 0x12f48
movq 0x1b0ce(%rip), %rdi     # 0x1ffe0
leaq 0x40(%rsp), %rsi
callq 0x4250
leaq 0xf266(%rip), %rsi      # 0x14189
movq %rax, %rdi
callq 0x4270
leaq 0x40(%rsp), %rdi
callq 0x4120
leaq 0x100(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x120c2
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
leaq 0x40(%rsp), %rdi
movq %rbx, (%rdi)
callq 0x12f48
movq 0x1b07b(%rip), %rdi     # 0x1ffe0
leaq 0x40(%rsp), %rsi
callq 0x4250
leaq 0xf213(%rip), %rsi      # 0x14189
movq %rax, %rdi
callq 0x4270
leaq 0x40(%rsp), %rdi
callq 0x4120
leaq 0x10(%rsp), %rdi
callq 0x9bf6
leaq 0x28(%rsp), %rdi
callq 0x9b14
leaq 0x1488(%rsp), %rdi
callq 0x12fb6
movb $0x1, %al
addq $0x2840, %rsp           # imm = 0x2840
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
jmp 0x5034
jmp 0x5034
jmp 0x5034
jmp 0x5034
jmp 0x5034
movq %rax, %rbx
movl $0xa0, %r12d
leaq (%rsp,%r12), %rdi
addq $0x40, %rdi
callq 0x4120
addq $-0x20, %r12
cmpq $-0x20, %r12
jne 0x4fcf
movb $0x1, %al
jmp 0x4ff7
jmp 0x4ff2
jmp 0x4ff2
jmp 0x4ff2
jmp 0x4ff2
movq %rax, %rbx
xorl %eax, %eax
cmpq %r15, %r14
sete %cl
testb %al, %al
jne 0x505a
testb %cl, %cl
jne 0x505a
addq $-0x20, %r15
movq %r15, %rdi
callq 0x4120
cmpq %r14, %r15
jne 0x5005
jmp 0x505a
movq %rax, %rbx
jmp 0x505a
jmp 0x5025
jmp 0x5025
jmp 0x5025
jmp 0x5025
movq %rax, %rbx
leaq 0x40(%rsp), %rdi
callq 0x4120
jmp 0x5037
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
jmp 0x504b
movq %rax, %rbx
jmp 0x5050
movq %rax, %rbx
leaq 0x40(%rsp), %rdi
callq 0x9bf6
leaq 0x28(%rsp), %rdi
callq 0x9b14
leaq 0x1488(%rsp), %rdi
callq 0x12fb6
movq %rbx, %rdi
callq 0x4410
nop