// File: yhirose[P]fizzbuzzlang/./peglib.h
// Function: peg::Dictionary::parse_core(char const*, unsigned long, peg::SemanticValues&, peg::Context&, std::any&) const
inline size_t Dictionary::parse_core(const char *s, size_t n,
                                     SemanticValues &vs, Context &c,
                                     std::any &dt) const {
  size_t id;
  auto i = trie_.match(s, n, id);

  if (i == 0) {
    c.set_error_pos(s);
    return static_cast<size_t>(-1);
  }

  vs.choice_count_ = trie_.size();
  vs.choice_ = id;

  // Word check
  if (c.wordOpe) {
    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; });

    {
      SemanticValues dummy_vs;
      Context dummy_c(nullptr, c.s, c.l, 0, nullptr, nullptr, false, nullptr,
                      nullptr, nullptr, false, nullptr);
      std::any dummy_dt;

      NotPredicate ope(c.wordOpe);
      auto len = ope.parse(s + i, n - i, dummy_vs, dummy_c, dummy_dt);
      if (fail(len)) {
        c.set_error_pos(s);
        return len;
      }
      i += len;
    }
  }

  // Skip whitespace
  if (!c.in_token_boundary_count && c.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 = c.whitespaceOpe->parse(s + i, n - i, vs, c, dt);
    if (fail(len)) { return len; }
    i += len;
  }

  return i;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x560, %rsp            # imm = 0x560
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
movq %r8, -0x30(%rbp)
movq %r9, -0x38(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x4d8(%rbp)
addq $0x18, %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
leaq -0x40(%rbp), %rcx
callq 0xcdb0
movq %rax, -0x48(%rbp)
cmpq $0x0, -0x48(%rbp)
jne 0xc82c
movq -0x30(%rbp), %rdi
movq -0x18(%rbp), %rsi
xorl %eax, %eax
movl %eax, %edx
callq 0xd050
movq $-0x1, -0x8(%rbp)
jmp 0xcd92
movq -0x4d8(%rbp), %rdi
addq $0x18, %rdi
callq 0xd250
movq %rax, %rcx
movq -0x28(%rbp), %rax
movq %rcx, 0x70(%rax)
movq -0x40(%rbp), %rcx
movq -0x28(%rbp), %rax
movq %rcx, 0x78(%rax)
movq -0x30(%rbp), %rdi
addq $0x108, %rdi            # imm = 0x108
callq 0xd270
testb $0x1, %al
jne 0xc86c
jmp 0xcc33
movq -0x30(%rbp), %rax
movb 0x288(%rax), %al
andb $0x1, %al
movb %al, -0x49(%rbp)
movq -0x30(%rbp), %rax
movb 0x240(%rax), %cl
notb %cl
andb $0x1, %cl
movb %cl, 0x288(%rax)
movq -0x30(%rbp), %rax
movq %rax, -0x78(%rbp)
leaq -0x49(%rbp), %rax
movq %rax, -0x70(%rbp)
leaq -0x68(%rbp), %rdi
leaq -0x78(%rbp), %rsi
callq 0xd290
leaq -0x118(%rbp), %rdi
callq 0xd2c0
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rcx
movq %rcx, -0x4f0(%rbp)
movq 0x10(%rax), %rax
movq %rax, -0x4e8(%rbp)
xorl %eax, %eax
movl %eax, %esi
movq %rsi, -0x4e0(%rbp)
leaq -0x3d0(%rbp), %rdi
callq 0xd340
movq -0x4e0(%rbp), %rsi
leaq -0x3e0(%rbp), %rdi
callq 0xd340
movq -0x4e0(%rbp), %rsi
leaq -0x400(%rbp), %rdi
callq 0xd360
movq -0x4e0(%rbp), %rsi
leaq -0x420(%rbp), %rdi
callq 0xd3a0
movq $0x0, -0x438(%rbp)
leaq -0x430(%rbp), %rdi
leaq -0x438(%rbp), %rsi
callq 0xd3e0
jmp 0xc943
xorl %eax, %eax
movl %eax, %esi
movq %rsi, -0x4f8(%rbp)
leaq -0x468(%rbp), %rdi
movq %rdi, -0x500(%rbp)
callq 0xd430
movq -0x500(%rbp), %rsi
movq -0x4f0(%rbp), %rdx
movq -0x4e8(%rbp), %rcx
movq -0x4f8(%rbp), %r8
movq %rsp, %rax
movq %rsi, 0x30(%rax)
leaq -0x430(%rbp), %rsi
movq %rsi, 0x20(%rax)
leaq -0x420(%rbp), %rsi
movq %rsi, 0x18(%rax)
leaq -0x400(%rbp), %rsi
movq %rsi, 0x10(%rax)
leaq -0x3e0(%rbp), %rsi
movq %rsi, (%rax)
movl $0x0, 0x28(%rax)
movl $0x0, 0x8(%rax)
leaq -0x3c0(%rbp), %rdi
leaq -0x3d0(%rbp), %r9
movq %r8, %rsi
callq 0xd470
jmp 0xc9d5
leaq -0x468(%rbp), %rdi
callq 0xd9d0
leaq -0x430(%rbp), %rdi
callq 0xd9f0
leaq -0x420(%rbp), %rdi
callq 0xda10
leaq -0x400(%rbp), %rdi
callq 0xda30
leaq -0x3e0(%rbp), %rdi
callq 0xda50
leaq -0x3d0(%rbp), %rdi
callq 0xda50
leaq -0x478(%rbp), %rdi
callq 0xda70
movq -0x30(%rbp), %rsi
addq $0x108, %rsi            # imm = 0x108
leaq -0x490(%rbp), %rdi
callq 0xdaa0
jmp 0xca42
movq -0x18(%rbp), %rsi
movq -0x48(%rbp), %rax
addq %rax, %rsi
movq -0x20(%rbp), %rdx
subq %rax, %rdx
leaq -0x490(%rbp), %rdi
leaq -0x118(%rbp), %rcx
leaq -0x3c0(%rbp), %r8
leaq -0x478(%rbp), %r9
callq 0xdaf0
movq %rax, -0x508(%rbp)
jmp 0xca7e
movq -0x508(%rbp), %rax
movq %rax, -0x498(%rbp)
movq -0x498(%rbp), %rdi
callq 0xdbd0
movb %al, -0x509(%rbp)
jmp 0xcaa0
movb -0x509(%rbp), %al
testb $0x1, %al
jne 0xcaaf
jmp 0xcb86
movq -0x30(%rbp), %rdi
movq -0x18(%rbp), %rsi
xorl %eax, %eax
movl %eax, %edx
callq 0xd050
jmp 0xcac2
movq -0x498(%rbp), %rax
movq %rax, -0x8(%rbp)
movl $0x1, -0x49c(%rbp)
jmp 0xcb9f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x440(%rbp)
movl %eax, -0x444(%rbp)
jmp 0xcb1a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x440(%rbp)
movl %eax, -0x444(%rbp)
leaq -0x468(%rbp), %rdi
callq 0xd9d0
leaq -0x430(%rbp), %rdi
callq 0xd9f0
leaq -0x420(%rbp), %rdi
callq 0xda10
leaq -0x400(%rbp), %rdi
callq 0xda30
leaq -0x3e0(%rbp), %rdi
callq 0xda50
leaq -0x3d0(%rbp), %rdi
callq 0xda50
jmp 0xcc19
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x440(%rbp)
movl %eax, -0x444(%rbp)
jmp 0xcc01
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x440(%rbp)
movl %eax, -0x444(%rbp)
leaq -0x490(%rbp), %rdi
callq 0xdbf0
jmp 0xcc01
movq -0x498(%rbp), %rax
addq -0x48(%rbp), %rax
movq %rax, -0x48(%rbp)
movl $0x0, -0x49c(%rbp)
leaq -0x490(%rbp), %rdi
callq 0xdbf0
leaq -0x478(%rbp), %rdi
callq 0xd9f0
leaq -0x3c0(%rbp), %rdi
callq 0xdc30
leaq -0x118(%rbp), %rdi
callq 0xde10
movl -0x49c(%rbp), %eax
testl %eax, %eax
jne 0xcbe5
jmp 0xcbdb
movl $0x0, -0x49c(%rbp)
leaq -0x68(%rbp), %rdi
callq 0xde60
movl -0x49c(%rbp), %eax
testl %eax, %eax
je 0xcbff
jmp 0xcbfa
jmp 0xcd92
jmp 0xcc33
leaq -0x478(%rbp), %rdi
callq 0xd9f0
leaq -0x3c0(%rbp), %rdi
callq 0xdc30
leaq -0x118(%rbp), %rdi
callq 0xde10
leaq -0x68(%rbp), %rdi
callq 0xde60
jmp 0xcd9f
movq -0x30(%rbp), %rax
cmpq $0x0, 0xe8(%rax)
jne 0xcd8a
movq -0x30(%rbp), %rdi
addq $0xf0, %rdi
callq 0xd270
testb $0x1, %al
jne 0xcc5e
jmp 0xcd8a
movq -0x30(%rbp), %rax
movb 0x288(%rax), %al
andb $0x1, %al
movb %al, -0x49d(%rbp)
movq -0x30(%rbp), %rax
movb 0x240(%rax), %cl
notb %cl
andb $0x1, %cl
movb %cl, 0x288(%rax)
movq -0x30(%rbp), %rax
movq %rax, -0x4c8(%rbp)
leaq -0x49d(%rbp), %rax
movq %rax, -0x4c0(%rbp)
leaq -0x4b8(%rbp), %rdi
leaq -0x4c8(%rbp), %rsi
callq 0xdea0
movq -0x30(%rbp), %rdi
addq $0xf0, %rdi
callq 0xded0
movq %rax, %rdi
movq -0x18(%rbp), %rsi
movq -0x48(%rbp), %rax
addq %rax, %rsi
movq -0x20(%rbp), %rdx
subq %rax, %rdx
movq -0x28(%rbp), %rcx
movq -0x30(%rbp), %r8
movq -0x38(%rbp), %r9
callq 0xdaf0
movq %rax, -0x518(%rbp)
jmp 0xccf0
movq -0x518(%rbp), %rax
movq %rax, -0x4d0(%rbp)
movq -0x4d0(%rbp), %rdi
callq 0xdbd0
movb %al, -0x519(%rbp)
jmp 0xcd12
movb -0x519(%rbp), %al
testb $0x1, %al
jne 0xcd1e
jmp 0xcd55
movq -0x4d0(%rbp), %rax
movq %rax, -0x8(%rbp)
movl $0x1, -0x49c(%rbp)
jmp 0xcd6e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x440(%rbp)
movl %eax, -0x444(%rbp)
leaq -0x4b8(%rbp), %rdi
callq 0xdef0
jmp 0xcd9f
movq -0x4d0(%rbp), %rax
addq -0x48(%rbp), %rax
movq %rax, -0x48(%rbp)
movl $0x0, -0x49c(%rbp)
leaq -0x4b8(%rbp), %rdi
callq 0xdef0
movl -0x49c(%rbp), %eax
testl %eax, %eax
je 0xcd88
jmp 0xcd86
jmp 0xcd92
jmp 0xcd8a
movq -0x48(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x560, %rsp            # imm = 0x560
popq %rbp
retq
movq -0x440(%rbp), %rdi
callq 0xa650
nopl (%rax,%rax)