// File: /workspace/github_cpp_makefile_star2_O3/yhirose[P]fizzbuzzlang/./peglib.h
// Function: peg::PrioritizedChoice::parse_core(char const*, unsigned long, peg::SemanticValues&, peg::Context&, std::any&) const
size_t parse_core(const char *s, size_t n, SemanticValues &vs, Context &c,
                    std::any &dt) const override {
    size_t len = static_cast<size_t>(-1);

    if (!for_label_) { c.cut_stack.push_back(false); }
    auto se = scope_exit([&]() {
      if (!for_label_) { c.cut_stack.pop_back(); }
    });

    size_t id = 0;
    for (const auto &ope : opes_) {
      if (!c.cut_stack.empty()) { c.cut_stack.back() = false; }

      auto &chvs = c.push();
      c.error_info.keep_previous_token = id > 0;
      auto se = scope_exit([&]() {
        c.pop();
        c.error_info.keep_previous_token = false;
      });

      len = ope->parse(s, n, chvs, c, dt);

      if (success(len)) {
        vs.append(chvs);
        vs.choice_count_ = opes_.size();
        vs.choice_ = id;
        c.shift_capture_values();
        break;
      } else if (!c.cut_stack.empty() && c.cut_stack.back()) {
        break;
      }

      id++;
    }

    return len;
  }

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x38, %rsp
movq %r9, -0x60(%rbp)
movq %r8, %rbx
movq %rcx, -0x40(%rbp)
movq %rdx, -0x58(%rbp)
movq %rsi, -0x50(%rbp)
movq %rdi, -0x30(%rbp)
cmpb $0x0, 0x20(%rdi)
jne 0xe1c4
leaq 0x138(%rbx), %rdi
xorl %esi, %esi
callq 0x3ab06
movq -0x30(%rbp), %rax
movq 0x8(%rax), %r14
movq 0x10(%rax), %rax
movq %rax, -0x48(%rbp)
cmpq %rax, %r14
je 0xe366
movabsq $-0x8000000000000000, %rax # imm = 0x8000000000000000
addq $0x10, %r14
xorl %r12d, %r12d
addq $0x3f, %rax
movq %rax, -0x38(%rbp)
movq 0x148(%rbx), %rax
movl 0x150(%rbx), %ecx
cmpq %rax, 0x138(%rbx)
sete %dl
testl %ecx, %ecx
sete %sil
testb %sil, %dl
jne 0xe25a
movl %ecx, %edx
leaq -0x1(%rdx), %rcx
addq $0x3e, %rdx
testq %rcx, %rcx
cmovnsq %rcx, %rdx
sarq $0x6, %rdx
movq %rcx, %rsi
andq -0x38(%rbp), %rsi
xorl %edi, %edi
movabsq $-0x8000000000000000, %r8 # imm = 0x8000000000000000
cmpq %r8, %rsi
setbe %dil
movq $-0x2, %rsi
rolq %cl, %rsi
leaq (%rax,%rdx,8), %rax
andq %rsi, -0x8(%rax,%rdi,8)
movq %rbx, %rdi
callq 0x11ce2
movq %rbx, %rdi
callq 0x3a5ca
movq %rax, %r15
testq %r12, %r12
setne 0x88(%rbx)
movq -0x10(%r14), %rdi
movq -0x50(%rbp), %rsi
movq -0x58(%rbp), %rdx
movq %rax, %rcx
movq %rbx, %r8
movq -0x60(%rbp), %r9
callq 0xa7b8
movq %rax, %r13
cmpq $-0x1, %rax
je 0xe2d0
movq -0x40(%rbp), %rdi
movq %r15, %rsi
callq 0x3a74e
movq -0x30(%rbp), %rcx
movq 0x10(%rcx), %rax
subq 0x8(%rcx), %rax
sarq $0x4, %rax
movq -0x40(%rbp), %rcx
movq %rax, 0x70(%rcx)
movq %r12, 0x78(%rcx)
movb $0x1, %r15b
movq %rbx, %rdi
callq 0x3ab5a
jmp 0xe339
movq 0x148(%rbx), %rax
movl 0x150(%rbx), %ecx
cmpq %rax, 0x138(%rbx)
sete %dl
testl %ecx, %ecx
sete %sil
testb %sil, %dl
jne 0xe333
movl %ecx, %ecx
leaq -0x1(%rcx), %rdx
addq $0x3e, %rcx
testq %rdx, %rdx
cmovnsq %rdx, %rcx
sarq $0x6, %rcx
movq %rdx, %rsi
andq -0x38(%rbp), %rsi
xorl %edi, %edi
movabsq $-0x8000000000000000, %r8 # imm = 0x8000000000000000
cmpq %r8, %rsi
setbe %dil
leaq (%rax,%rcx,8), %rax
movq -0x8(%rax,%rdi,8), %rax
movb $0x1, %r15b
btq %rdx, %rax
jb 0xe339
incq %r12
xorl %r15d, %r15d
decq 0x130(%rbx)
decq 0xb0(%rbx)
movb $0x0, 0x88(%rbx)
testb %r15b, %r15b
jne 0xe36d
leaq 0x10(%r14), %rax
cmpq -0x48(%rbp), %r14
movq %rax, %r14
jne 0xe1f6
jmp 0xe36d
movq $-0x1, %r13
movq -0x30(%rbp), %rax
cmpb $0x0, 0x20(%rax)
jne 0xe392
subl $0x1, 0x150(%rbx)
jae 0xe392
movl $0x3f, 0x150(%rbx)
addq $-0x8, 0x148(%rbx)
movq %r13, %rax
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0xe3bb
decq 0x130(%rbx)
decq 0xb0(%rbx)
movb $0x0, 0x88(%rbx)
movq -0x30(%rbp), %rcx
cmpb $0x0, 0x20(%rcx)
jne 0xe3e0
subl $0x1, 0x150(%rbx)
jae 0xe3e0
movl $0x3f, 0x150(%rbx)
addq $-0x8, 0x148(%rbx)
movq %rax, %rdi
callq 0x8420