// File: yhirose[P]fizzbuzzlang/./peglib.h
// Function: peg::Definition::parse_core(char const*, unsigned long, peg::SemanticValues&, std::any&, char const*, 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
Result parse_core(const char *s, size_t n, SemanticValues &vs, std::any &dt,
                    const char *path, Log log) const {
    initialize_definition_ids();

    std::shared_ptr<Ope> ope = holder_;

    std::any trace_data;
    if (tracer_start) { tracer_start(trace_data); }
    auto se = scope_exit([&]() {
      if (tracer_end) { tracer_end(trace_data); }
    });

    Context c(path, s, n, definition_ids_.size(), whitespaceOpe, wordOpe,
              enablePackratParsing, tracer_enter, tracer_leave, trace_data,
              verbose_trace, log);

    size_t i = 0;

    if (whitespaceOpe) {
      auto save_ignore_trace_state = c.ignore_trace_state;
      c.ignore_trace_state = !c.verbose_trace;
      auto se =
          scope_exit([&]() { c.ignore_trace_state = save_ignore_trace_state; });

      auto len = whitespaceOpe->parse(s, n, vs, c, dt);
      if (fail(len)) { return Result{false, c.recovered, i, c.error_info}; }

      i = len;
    }

    auto len = ope->parse(s + i, n - i, vs, c, dt);
    auto ret = success(len);
    if (ret) {
      i += len;
      if (eoi_check) {
        if (i < n) {
          if (c.error_info.error_pos - c.s < s + i - c.s) {
            c.error_info.message_pos = s + i;
            c.error_info.message = "expected end of input";
          }
          ret = false;
        }
      }
    }
    return Result{ret, c.recovered, i, c.error_info};
  }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x4b0, %rsp            # imm = 0x4B0
movq %rdi, -0x438(%rbp)
movq %rdi, %rax
movq %rax, -0x430(%rbp)
movq 0x18(%rbp), %rax
movq %rax, -0x428(%rbp)
movq 0x10(%rbp), %rax
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq %r8, -0x28(%rbp)
movq %r9, -0x30(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x420(%rbp)
callq 0x7b400
movq -0x420(%rbp), %rsi
addq $0x1c0, %rsi            # imm = 0x1C0
leaq -0x40(%rbp), %rdi
callq 0x20fd0
leaq -0x50(%rbp), %rdi
callq 0xda70
movq -0x420(%rbp), %rdi
addq $0x158, %rdi            # imm = 0x158
callq 0x7b430
testb $0x1, %al
jne 0x7ae2c
jmp 0x7ae58
movq -0x420(%rbp), %rdi
addq $0x158, %rdi            # imm = 0x158
leaq -0x50(%rbp), %rsi
callq 0x7b450
jmp 0x7ae45
jmp 0x7ae58
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x7b3dd
movq -0x420(%rbp), %rax
movq %rax, -0x88(%rbp)
leaq -0x50(%rbp), %rax
movq %rax, -0x80(%rbp)
leaq -0x78(%rbp), %rdi
leaq -0x88(%rbp), %rsi
callq 0x7b490
jmp 0x7ae80
movq -0x420(%rbp), %rdi
movq 0x10(%rbp), %rax
movq %rax, -0x460(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x458(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x450(%rbp)
addq $0x1e0, %rdi            # imm = 0x1E0
callq 0x113d0
movq -0x420(%rbp), %rsi
movq %rax, -0x448(%rbp)
addq $0xc8, %rsi
leaq -0x340(%rbp), %rdi
callq 0xf930
movq -0x420(%rbp), %rsi
addq $0xd8, %rsi
leaq -0x350(%rbp), %rdi
callq 0xf930
movq -0x420(%rbp), %rsi
movb 0xe8(%rsi), %al
movb %al, -0x439(%rbp)
addq $0x110, %rsi            # imm = 0x110
leaq -0x370(%rbp), %rdi
callq 0x1b280
jmp 0x7af17
movq -0x420(%rbp), %rsi
addq $0x130, %rsi            # imm = 0x130
leaq -0x390(%rbp), %rdi
callq 0x1b330
jmp 0x7af33
leaq -0x3a0(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x1b3e0
jmp 0x7af45
movq -0x428(%rbp), %rsi
movq -0x420(%rbp), %rax
movb 0x150(%rax), %al
movb %al, -0x461(%rbp)
leaq -0x3c0(%rbp), %rdi
callq 0x10520
jmp 0x7af6d
movq -0x448(%rbp), %r8
movq -0x450(%rbp), %rcx
movq -0x458(%rbp), %rdx
movq -0x460(%rbp), %rsi
movb -0x439(%rbp), %dil
movb -0x461(%rbp), %r9b
movq %rsp, %rax
leaq -0x3c0(%rbp), %r10
movq %r10, 0x30(%rax)
movzbl %r9b, %r9d
andl $0x1, %r9d
movl %r9d, 0x28(%rax)
leaq -0x3a0(%rbp), %r9
movq %r9, 0x20(%rax)
leaq -0x390(%rbp), %r9
movq %r9, 0x18(%rax)
leaq -0x370(%rbp), %r9
movq %r9, 0x10(%rax)
movzbl %dil, %edi
andl $0x1, %edi
movl %edi, 0x8(%rax)
leaq -0x350(%rbp), %rdi
movq %rdi, (%rax)
leaq -0x330(%rbp), %rdi
leaq -0x340(%rbp), %r9
callq 0xd470
jmp 0x7affb
leaq -0x3c0(%rbp), %rdi
callq 0xd9d0
leaq -0x3a0(%rbp), %rdi
callq 0xd9f0
leaq -0x390(%rbp), %rdi
callq 0xda10
leaq -0x370(%rbp), %rdi
callq 0xda30
leaq -0x350(%rbp), %rdi
callq 0xda50
leaq -0x340(%rbp), %rdi
callq 0xda50
movq -0x420(%rbp), %rdi
movq $0x0, -0x3c8(%rbp)
addq $0xc8, %rdi
callq 0xd270
testb $0x1, %al
jne 0x7b06a
jmp 0x7b24d
movb -0xa8(%rbp), %al
andb $0x1, %al
movb %al, -0x3c9(%rbp)
movb -0xf0(%rbp), %al
notb %al
andb $0x1, %al
movb %al, -0xa8(%rbp)
leaq -0x330(%rbp), %rax
movq %rax, -0x3f8(%rbp)
leaq -0x3c9(%rbp), %rax
movq %rax, -0x3f0(%rbp)
leaq -0x3e8(%rbp), %rdi
leaq -0x3f8(%rbp), %rsi
callq 0x7b4c0
jmp 0x7b0b9
movq -0x420(%rbp), %rdi
addq $0xc8, %rdi
callq 0xded0
movq %rax, %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
movq -0x30(%rbp), %r9
leaq -0x330(%rbp), %r8
callq 0xdaf0
movq %rax, -0x470(%rbp)
jmp 0x7b0f4
movq -0x470(%rbp), %rax
movq %rax, -0x400(%rbp)
movq -0x400(%rbp), %rdi
callq 0xdbd0
testb $0x1, %al
jne 0x7b117
jmp 0x7b217
movq -0x438(%rbp), %rdi
movb $0x0, (%rdi)
movb -0x2a0(%rbp), %al
andb $0x1, %al
movb %al, 0x1(%rdi)
movq -0x3c8(%rbp), %rax
movq %rax, 0x8(%rdi)
addq $0x10, %rdi
leaq -0x318(%rbp), %rsi
callq 0x7b4f0
jmp 0x7b149
movl $0x1, -0x404(%rbp)
jmp 0x7b22f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x7b1cc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x7b1c0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x7b1b4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x7b1a8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x3c0(%rbp), %rdi
callq 0xd9d0
leaq -0x3a0(%rbp), %rdi
callq 0xd9f0
leaq -0x390(%rbp), %rdi
callq 0xda10
leaq -0x370(%rbp), %rdi
callq 0xda30
leaq -0x350(%rbp), %rdi
callq 0xda50
leaq -0x340(%rbp), %rdi
callq 0xda50
jmp 0x7b3d4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x7b3c8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x3e8(%rbp), %rdi
callq 0x7b5c0
jmp 0x7b3c8
movq -0x400(%rbp), %rax
movq %rax, -0x3c8(%rbp)
movl $0x0, -0x404(%rbp)
leaq -0x3e8(%rbp), %rdi
callq 0x7b5c0
movl -0x404(%rbp), %eax
testl %eax, %eax
jne 0x7b391
jmp 0x7b24b
jmp 0x7b24d
leaq -0x40(%rbp), %rdi
callq 0xded0
movq %rax, %rdi
movq -0x18(%rbp), %rsi
movq -0x3c8(%rbp), %rax
addq %rax, %rsi
movq -0x20(%rbp), %rdx
subq %rax, %rdx
movq -0x28(%rbp), %rcx
movq -0x30(%rbp), %r9
leaq -0x330(%rbp), %r8
callq 0xdaf0
movq %rax, -0x478(%rbp)
jmp 0x7b28b
movq -0x478(%rbp), %rax
movq %rax, -0x410(%rbp)
movq -0x410(%rbp), %rdi
callq 0xe9a0
andb $0x1, %al
movb %al, -0x411(%rbp)
testb $0x1, -0x411(%rbp)
je 0x7b34e
movq -0x420(%rbp), %rax
movq -0x410(%rbp), %rcx
addq -0x3c8(%rbp), %rcx
movq %rcx, -0x3c8(%rbp)
testb $0x1, 0x1b9(%rax)
je 0x7b34c
movq -0x3c8(%rbp), %rax
cmpq -0x20(%rbp), %rax
jae 0x7b34a
movq -0x318(%rbp), %rax
movq -0x328(%rbp), %rcx
subq %rcx, %rax
movq -0x18(%rbp), %rcx
addq -0x3c8(%rbp), %rcx
movq -0x328(%rbp), %rdx
subq %rdx, %rcx
cmpq %rcx, %rax
jge 0x7b343
movq -0x18(%rbp), %rax
movq -0x3c8(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0x2f8(%rbp)
leaq -0x2f0(%rbp), %rdi
leaq 0x2712c(%rip), %rsi     # 0xa2466
callq 0xa510
jmp 0x7b341
jmp 0x7b343
movb $0x0, -0x411(%rbp)
jmp 0x7b34c
jmp 0x7b34e
movq -0x438(%rbp), %rdi
movb -0x411(%rbp), %al
andb $0x1, %al
movb %al, (%rdi)
movb -0x2a0(%rbp), %al
andb $0x1, %al
movb %al, 0x1(%rdi)
movq -0x3c8(%rbp), %rax
movq %rax, 0x8(%rdi)
addq $0x10, %rdi
leaq -0x318(%rbp), %rsi
callq 0x7b4f0
jmp 0x7b387
movl $0x1, -0x404(%rbp)
leaq -0x330(%rbp), %rdi
callq 0xdc30
leaq -0x78(%rbp), %rdi
callq 0x7b600
leaq -0x50(%rbp), %rdi
callq 0xd9f0
leaq -0x40(%rbp), %rdi
callq 0xda50
movq -0x430(%rbp), %rax
addq $0x4b0, %rsp            # imm = 0x4B0
popq %rbp
retq
leaq -0x330(%rbp), %rdi
callq 0xdc30
leaq -0x78(%rbp), %rdi
callq 0x7b600
leaq -0x50(%rbp), %rdi
callq 0xd9f0
leaq -0x40(%rbp), %rdi
callq 0xda50
movq -0x58(%rbp), %rdi
callq 0xa650
nopl (%rax,%rax)