// File: /workspace/github_cpp_makefile_star2_O3/yhirose[P]fizzbuzzlang/./peglib.h
// Function: peg::ErrorInfo::output_log(std::function<void (unsigned long, unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)> const&, char const*, unsigned long)
inline void ErrorInfo::output_log(const Log &log, const char *s, size_t n) {
  if (message_pos) {
    if (message_pos > last_output_pos) {
      last_output_pos = message_pos;
      auto line = line_info(s, message_pos);
      std::string msg;
      if (auto unexpected_token = heuristic_error_token(s, n, message_pos);
          !unexpected_token.empty()) {
        msg = replace_all(message, "%t", unexpected_token);

        auto unexpected_char = unexpected_token.substr(
            0,
            codepoint_length(unexpected_token.data(), unexpected_token.size()));

        msg = replace_all(msg, "%c", unexpected_char);
      } else {
        msg = message;
      }
      log(line.first, line.second, msg, label);
    }
  } else if (error_pos) {
    if (error_pos > last_output_pos) {
      last_output_pos = error_pos;
      auto line = line_info(s, error_pos);

      std::string msg;
      if (expected_tokens.empty()) {
        msg = "syntax error.";
      } else {
        msg = "syntax error";

        // unexpected token
        if (auto unexpected_token = heuristic_error_token(s, n, error_pos);
            !unexpected_token.empty()) {
          msg += ", unexpected '";
          msg += unexpected_token;
          msg += "'";
        }

        auto first_item = true;
        size_t i = 0;
        while (i < expected_tokens.size()) {
          auto [error_literal, error_rule] = expected_tokens[i];

          // Skip rules start with '_'
          if (!(error_rule && error_rule->name[0] == '_')) {
            msg += (first_item ? ", expecting " : ", ");
            if (error_literal) {
              msg += "'";
              msg += error_literal;
              msg += "'";
            } else {
              msg += "<" + error_rule->name + ">";
              if (label.empty()) { label = error_rule->name; }
            }
            first_item = false;
          }

          i++;
        }
        msg += ".";
      }
      log(line.first, line.second, msg, label);
    }
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x108, %rsp            # imm = 0x108
movq %rcx, %r15
movq %rdx, %rbx
movq %rsi, %r14
movq %rdi, %r13
movq 0x20(%rdi), %r8
testq %r8, %r8
movq %rdi, -0x30(%rbp)
je 0xc5e8
cmpq 0x68(%r13), %r8
jbe 0xc9b2
movq %r14, -0xa0(%rbp)
movq %r8, 0x68(%r13)
movl $0x1, %r12d
movl $0x1, %r13d
cmpq %rbx, %r8
jbe 0xc352
movq %rbx, %rax
movq %rbx, %rcx
xorl %edx, %edx
cmpb $0xa, (%rcx)
leaq 0x1(%rcx), %rsi
cmoveq %rsi, %rax
sete %dl
addl %edx, %r13d
movq %rsi, %rcx
cmpq %r8, %rsi
jne 0xc2a5
movq %r8, %rcx
subq %rax, %rcx
je 0xc352
movl $0x1, %r12d
xorl %edx, %edx
movzbl (%rax,%rdx), %esi
movl $0x1, %r9d
testb %sil, %sil
jns 0xc343
movq %rcx, %rdi
subq %rdx, %rdi
cmpq $0x1, %rdi
je 0xc305
movl %esi, %r10d
andl $-0x20, %r10d
movl $0x2, %r9d
cmpl $0xc0, %r10d
je 0xc343
cmpq $0x3, %rdi
jb 0xc321
movl %esi, %r10d
andl $-0x10, %r10d
movl $0x3, %r9d
cmpl $0xe0, %r10d
je 0xc343
andl $-0x8, %esi
xorl %r10d, %r10d
cmpl $0xf0, %esi
sete %r10b
shll $0x2, %r10d
cmpq $0x4, %rdi
movl $0x0, %r9d
cmovaeq %r10, %r9
cmpq $0x1, %r9
adcq %r9, %rdx
incq %r12
cmpq %rcx, %rdx
jb 0xc2d4
leaq -0x60(%rbp), %r14
movq %r14, -0x10(%r14)
movq $0x0, -0x8(%r14)
movb $0x0, (%r14)
leaq -0x50(%rbp), %rdi
movq -0x30(%rbp), %rsi
movq %rbx, %rdx
movq %r15, %rcx
callq 0x12d9a
cmpq $0x0, -0x48(%rbp)
je 0xc939
leaq -0x120(%rbp), %r14
movq %r14, -0x10(%r14)
movq -0x30(%rbp), %rax
movq 0x28(%rax), %rsi
movq 0x30(%rax), %rdx
addq %rsi, %rdx
leaq -0x130(%rbp), %rdi
callq 0x13028
leaq -0xb8(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x36383(%rip), %rsi     # 0x4273f
leaq 0x3637e(%rip), %rdx     # 0x42741
leaq -0xc8(%rbp), %rdi
callq 0x11634
leaq -0x98(%rbp), %rdi
leaq -0x130(%rbp), %rdx
leaq -0xc8(%rbp), %rcx
leaq -0x50(%rbp), %r8
movq -0x30(%rbp), %rsi
callq 0x12f40
leaq -0x70(%rbp), %rdi
leaq -0x98(%rbp), %rbx
movq %rbx, %rsi
callq 0x8330
movq (%rbx), %rdi
leaq -0x88(%rbp), %rax
cmpq %rax, %rdi
je 0xc422
movq -0x88(%rbp), %rsi
incq %rsi
callq 0x82b0
movq -0xc8(%rbp), %rdi
cmpq %r15, %rdi
je 0xc43d
movq -0xb8(%rbp), %rsi
incq %rsi
callq 0x82b0
movq -0x130(%rbp), %rdi
cmpq %r14, %rdi
je 0xc458
movq -0x120(%rbp), %rsi
incq %rsi
callq 0x82b0
movq -0x48(%rbp), %rax
testq %rax, %rax
je 0xc4cf
movq -0x50(%rbp), %rcx
movzbl (%rcx), %edx
movl $0x1, %ecx
testb %dl, %dl
jns 0xc4d1
movl %edx, %ecx
andl $-0x20, %ecx
cmpl $0xc0, %ecx
sete %sil
cmpq $0x1, %rax
setne %dil
movl $0x2, %ecx
testb %sil, %dil
jne 0xc4d1
movl %edx, %ecx
andl $-0x10, %ecx
cmpl $0xe0, %ecx
sete %sil
cmpq $0x3, %rax
setae %dil
movl $0x3, %ecx
testb %sil, %dil
jne 0xc4d1
andl $-0x8, %edx
cmpl $0xf0, %edx
sete %dl
cmpq $0x4, %rax
setae %al
movl $0x4, %ecx
testb %dl, %al
jne 0xc4d1
xorl %ecx, %ecx
leaq -0x98(%rbp), %rdi
leaq -0x50(%rbp), %rsi
xorl %edx, %edx
callq 0x82d0
movq %r15, %r14
leaq -0xd8(%rbp), %rax
movq %rax, -0x10(%rax)
movq -0x70(%rbp), %rsi
movq -0x68(%rbp), %rdx
addq %rsi, %rdx
leaq -0xe8(%rbp), %rdi
callq 0x13028
leaq -0x100(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x36228(%rip), %rsi     # 0x42742
leaq 0x36223(%rip), %rdx     # 0x42744
leaq -0x110(%rbp), %rdi
callq 0x11634
leaq -0xc8(%rbp), %rdi
leaq -0xe8(%rbp), %rdx
leaq -0x110(%rbp), %rcx
leaq -0x98(%rbp), %r8
movq -0x30(%rbp), %rsi
callq 0x12f40
leaq -0x70(%rbp), %rdi
leaq -0xc8(%rbp), %rbx
movq %rbx, %rsi
callq 0x8330
movq (%rbx), %rdi
cmpq %r14, %rdi
je 0xc57c
movq -0xb8(%rbp), %rsi
incq %rsi
callq 0x82b0
movq -0x110(%rbp), %rdi
cmpq %r15, %rdi
je 0xc597
movq -0x100(%rbp), %rsi
incq %rsi
callq 0x82b0
movq -0xe8(%rbp), %rdi
leaq -0xd8(%rbp), %rax
cmpq %rax, %rdi
leaq -0x88(%rbp), %rbx
je 0xc5c0
movq -0xd8(%rbp), %rsi
incq %rsi
callq 0x82b0
movq -0x98(%rbp), %rdi
cmpq %rbx, %rdi
leaq -0x60(%rbp), %r14
je 0xc94a
movq -0x88(%rbp), %rsi
incq %rsi
callq 0x82b0
jmp 0xc94a
movq (%r13), %rax
testq %rax, %rax
je 0xc9b2
cmpq 0x68(%r13), %rax
jbe 0xc9b2
movq %rax, 0x68(%r13)
movl $0x1, %ecx
movq %rcx, -0xa8(%rbp)
movl $0x1, -0x74(%rbp)
cmpq %rbx, %rax
jbe 0xc6e8
movl $0x1, %r8d
movq %rbx, %rcx
movq %rbx, %rdx
xorl %esi, %esi
cmpb $0xa, (%rdx)
leaq 0x1(%rdx), %rdi
cmoveq %rdi, %rcx
sete %sil
addl %esi, %r8d
movq %rdi, %rdx
cmpq %rax, %rdi
jne 0xc62b
movl %r8d, -0x74(%rbp)
subq %rcx, %rax
je 0xc6e8
movl $0x1, %edx
movq %rdx, -0xa8(%rbp)
xorl %edx, %edx
movzbl (%rcx,%rdx), %esi
movl $0x1, %r8d
testb %sil, %sil
jns 0xc6d1
movq %rax, %rdi
subq %rdx, %rdi
cmpq $0x1, %rdi
je 0xc693
movl %esi, %r9d
andl $-0x20, %r9d
movl $0x2, %r8d
cmpl $0xc0, %r9d
je 0xc6d1
cmpq $0x3, %rdi
jb 0xc6af
movl %esi, %r9d
andl $-0x10, %r9d
movl $0x3, %r8d
cmpl $0xe0, %r9d
je 0xc6d1
andl $-0x8, %esi
xorl %r9d, %r9d
cmpl $0xf0, %esi
sete %r9b
shll $0x2, %r9d
cmpq $0x4, %rdi
movl $0x0, %r8d
cmovaeq %r9, %r8
cmpq $0x1, %r8
adcq %r8, %rdx
incq -0xa8(%rbp)
cmpq %rax, %rdx
jb 0xc662
leaq -0x60(%rbp), %rax
movq %rax, -0x10(%rax)
movq $0x0, -0x8(%rax)
movb $0x0, (%rax)
movq 0x8(%r13), %rax
cmpq 0x10(%r13), %rax
je 0xc9c4
leaq 0x36043(%rip), %rcx     # 0x42753
leaq -0x70(%rbp), %rdi
movl $0xc, %r8d
xorl %esi, %esi
xorl %edx, %edx
callq 0x83b0
movq (%r13), %r8
leaq -0x50(%rbp), %rdi
movq %r13, %rsi
movq %rbx, %rdx
movq %r15, %rcx
callq 0x12d9a
cmpq $0x0, -0x48(%rbp)
je 0xc771
leaq 0x36019(%rip), %rsi     # 0x42760
leaq -0x70(%rbp), %rdi
callq 0x8480
movq -0x50(%rbp), %rsi
movq -0x48(%rbp), %rdx
leaq -0x70(%rbp), %rdi
callq 0x80d0
leaq 0x36005(%rip), %rsi     # 0x4276d
leaq -0x70(%rbp), %rdi
callq 0x8480
movq %r14, -0xa0(%rbp)
leaq -0x40(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xc791
movq -0x40(%rbp), %rsi
incq %rsi
callq 0x82b0
movq 0x8(%r13), %rcx
cmpq %rcx, 0x10(%r13)
je 0xc919
movq -0x30(%rbp), %rax
addq $0x48, %rax
movq %rax, -0xf0(%rbp)
movb $0x1, %al
movl $0x8, %r14d
xorl %r13d, %r13d
leaq -0x70(%rbp), %rbx
movq -0x8(%rcx,%r14), %r12
movq (%rcx,%r14), %r15
testq %r15, %r15
je 0xc7d7
movq (%r15), %rcx
cmpb $0x5f, (%rcx)
je 0xc8f6
testb $0x1, %al
leaq 0x35f9c(%rip), %rsi     # 0x4277c
leaq 0x35f88(%rip), %rax     # 0x4276f
cmovneq %rax, %rsi
movq %rbx, %rdi
callq 0x8480
testq %r12, %r12
je 0xc826
movq %rbx, %rdi
leaq 0x35f6b(%rip), %rsi     # 0x4276d
callq 0x8480
movq %rbx, %rdi
movq %r12, %rsi
callq 0x8480
movq %rbx, %rdi
leaq 0x35f51(%rip), %rsi     # 0x4276d
callq 0x8480
jmp 0xc8f4
leaq -0x98(%rbp), %r12
movq %r12, %rdi
leaq 0x35f48(%rip), %rsi     # 0x4277f
movq %r15, %rdx
callq 0xbe0e
movq %r12, %rdi
leaq 0x35f38(%rip), %rsi     # 0x42781
callq 0x8480
leaq -0x40(%rbp), %rsi
movq %rsi, -0x50(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xc872
movq %rdx, -0x50(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x40(%rbp)
jmp 0xc878
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, -0x48(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq -0x50(%rbp), %rsi
movq -0x48(%rbp), %rdx
movq %rbx, %rdi
callq 0x80d0
movq -0x50(%rbp), %rdi
leaq -0x40(%rbp), %rax
cmpq %rax, %rdi
je 0xc8b8
movq -0x40(%rbp), %rsi
incq %rsi
callq 0x82b0
movq -0x98(%rbp), %rdi
leaq -0x88(%rbp), %rax
cmpq %rax, %rdi
je 0xc8da
movq -0x88(%rbp), %rsi
incq %rsi
callq 0x82b0
movq -0x30(%rbp), %rax
cmpq $0x0, 0x50(%rax)
jne 0xc8f4
movq -0xf0(%rbp), %rdi
movq %r15, %rsi
callq 0x8170
xorl %eax, %eax
incq %r13
movq -0x30(%rbp), %rdx
movq 0x8(%rdx), %rcx
movq 0x10(%rdx), %rdx
subq %rcx, %rdx
sarq $0x4, %rdx
addq $0x10, %r14
cmpq %rdx, %r13
jb 0xc7bd
leaq 0x3653e(%rip), %rsi     # 0x42e5e
leaq -0x70(%rbp), %rdi
callq 0x8480
movq -0xa0(%rbp), %r14
movq -0x30(%rbp), %r13
jmp 0xc9de
movq -0x30(%rbp), %rax
leaq 0x28(%rax), %rsi
leaq -0x70(%rbp), %rdi
callq 0x8170
movl %r13d, %ebx
leaq -0x40(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xc966
movq -0x40(%rbp), %rsi
incq %rsi
callq 0x82b0
movq %rbx, -0x50(%rbp)
movq %r12, -0x98(%rbp)
movq -0xa0(%rbp), %rdi
cmpq $0x0, 0x10(%rdi)
movq -0x30(%rbp), %r8
je 0xca26
addq $0x48, %r8
leaq -0x50(%rbp), %rsi
leaq -0x98(%rbp), %rdx
leaq -0x70(%rbp), %rcx
callq *0x18(%rdi)
movq -0x70(%rbp), %rdi
cmpq %r14, %rdi
je 0xc9b2
movq -0x60(%rbp), %rsi
incq %rsi
callq 0x82b0
addq $0x108, %rsp            # imm = 0x108
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x35d7a(%rip), %rcx     # 0x42745
leaq -0x70(%rbp), %rdi
movl $0xd, %r8d
xorl %esi, %esi
xorl %edx, %edx
callq 0x83b0
movl -0x74(%rbp), %eax
movq %rax, -0x50(%rbp)
movq -0xa8(%rbp), %rax
movq %rax, -0x98(%rbp)
cmpq $0x0, 0x10(%r14)
je 0xca2b
addq $0x48, %r13
leaq -0x50(%rbp), %rsi
leaq -0x98(%rbp), %rdx
leaq -0x70(%rbp), %rcx
movq %r14, %rdi
movq %r13, %r8
callq *0x18(%r14)
movq -0x70(%rbp), %rdi
leaq -0x60(%rbp), %rax
cmpq %rax, %rdi
jne 0xc9a6
jmp 0xc9b2
callq 0x80f0
callq 0x80f0
jmp 0xcb4f
jmp 0xcb4f
jmp 0xcaec
jmp 0xcaec
movq %rax, %rbx
movq -0x110(%rbp), %rdi
cmpq %r15, %rdi
je 0xca67
movq -0x100(%rbp), %rsi
incq %rsi
callq 0x82b0
jmp 0xca67
movq %rax, %rbx
movq -0xe8(%rbp), %rdi
leaq -0xd8(%rbp), %rax
cmpq %rax, %rdi
je 0xca8e
movq -0xd8(%rbp), %rsi
incq %rsi
callq 0x82b0
jmp 0xca8e
movq %rax, %rbx
movq -0x98(%rbp), %rdi
leaq -0x88(%rbp), %rax
cmpq %rax, %rdi
je 0xcaef
movq -0x88(%rbp), %rsi
jmp 0xcae2
jmp 0xcaec
movq %rax, %rbx
movq -0xc8(%rbp), %rdi
cmpq %r15, %rdi
je 0xcacf
movq -0xb8(%rbp), %rsi
incq %rsi
callq 0x82b0
jmp 0xcacf
movq %rax, %rbx
movq -0x130(%rbp), %rdi
cmpq %r14, %rdi
je 0xcaef
movq -0x120(%rbp), %rsi
incq %rsi
callq 0x82b0
jmp 0xcaef
movq %rax, %rbx
leaq -0x40(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xcb52
movq -0x40(%rbp), %rsi
jmp 0xcb41
jmp 0xcb4f
jmp 0xcb4f
movq %rax, %rbx
movq -0x50(%rbp), %rdi
leaq -0x40(%rbp), %rax
cmpq %rax, %rdi
je 0xcb27
movq -0x40(%rbp), %rsi
incq %rsi
callq 0x82b0
jmp 0xcb27
movq %rax, %rbx
movq -0x98(%rbp), %rdi
leaq -0x88(%rbp), %rax
cmpq %rax, %rdi
je 0xcb52
movq -0x88(%rbp), %rsi
incq %rsi
callq 0x82b0
jmp 0xcb52
jmp 0xcb4f
jmp 0xcb4f
movq %rax, %rbx
movq -0x70(%rbp), %rdi
leaq -0x60(%rbp), %rax
cmpq %rax, %rdi
je 0xcb6b
movq -0x60(%rbp), %rsi
incq %rsi
callq 0x82b0
movq %rbx, %rdi
callq 0x8420
nop