// File: 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
subq $0x130, %rsp            # imm = 0x130
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 -0x8(%rbp), %rax
movq %rax, -0xe8(%rbp)
movq $-0x1, -0x38(%rbp)
testb $0x1, 0x20(%rax)
jne 0x13e9e
movq -0x28(%rbp), %rdi
addq $0x138, %rdi            # imm = 0x138
xorl %esi, %esi
callq 0x880d0
movq -0xe8(%rbp), %rax
movq %rax, -0x60(%rbp)
movq -0x28(%rbp), %rax
movq %rax, -0x58(%rbp)
leaq -0x50(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0x881a0
movq -0xe8(%rbp), %rax
movq $0x0, -0x68(%rbp)
addq $0x8, %rax
movq %rax, -0x70(%rbp)
movq -0x70(%rbp), %rdi
callq 0xf870
movq %rax, -0x78(%rbp)
movq -0x70(%rbp), %rdi
callq 0xf8a0
movq %rax, -0x80(%rbp)
leaq -0x78(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0xf8d0
testb $0x1, %al
jne 0x13f05
jmp 0x14169
leaq -0x78(%rbp), %rdi
callq 0xf910
movq %rax, -0x88(%rbp)
movq -0x28(%rbp), %rdi
addq $0x138, %rdi            # imm = 0x138
callq 0x10e60
testb $0x1, %al
jne 0x13f8c
movq -0x28(%rbp), %rdi
addq $0x138, %rdi            # imm = 0x138
callq 0x10ee0
movq %rdx, -0xf8(%rbp)
movq %rax, -0xf0(%rbp)
jmp 0x13f49
movq -0xf8(%rbp), %rax
movq -0xf0(%rbp), %rcx
movq %rcx, -0x98(%rbp)
movq %rax, -0x90(%rbp)
leaq -0x98(%rbp), %rdi
xorl %esi, %esi
callq 0x10f50
jmp 0x13f8c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x14197
movq -0x28(%rbp), %rdi
callq 0x881d0
movq %rax, -0x100(%rbp)
jmp 0x13f9e
movq -0x100(%rbp), %rax
movq %rax, -0xb0(%rbp)
movq -0x68(%rbp), %rax
testq %rax, %rax
movq -0x28(%rbp), %rax
setne 0x88(%rax)
movq -0x28(%rbp), %rax
movq %rax, -0xc8(%rbp)
leaq -0xc0(%rbp), %rdi
leaq -0xc8(%rbp), %rsi
callq 0x88200
jmp 0x13fde
movq -0x88(%rbp), %rdi
callq 0xded0
movq %rax, %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq -0xb0(%rbp), %rcx
movq -0x28(%rbp), %r8
movq -0x30(%rbp), %r9
callq 0xdaf0
movq %rax, -0x108(%rbp)
jmp 0x14012
movq -0x108(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rdi
callq 0xe9a0
testb $0x1, %al
jne 0x1402c
jmp 0x140a2
movq -0x20(%rbp), %rdi
movq -0xb0(%rbp), %rsi
callq 0x864e0
jmp 0x1403e
movq -0xe8(%rbp), %rdi
addq $0x8, %rdi
callq 0x126d0
movq %rax, %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x70(%rax)
movq -0x68(%rbp), %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x78(%rax)
movq -0x28(%rbp), %rdi
callq 0x88220
jmp 0x14070
movl $0x2, -0xcc(%rbp)
jmp 0x1413f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0xc0(%rbp), %rdi
callq 0x88350
jmp 0x14197
movq -0x28(%rbp), %rdi
addq $0x138, %rdi            # imm = 0x138
callq 0x10e60
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x109(%rbp)
jne 0x1410f
movq -0x28(%rbp), %rdi
addq $0x138, %rdi            # imm = 0x138
callq 0x10ee0
movq %rdx, -0x120(%rbp)
movq %rax, -0x118(%rbp)
jmp 0x140e1
movq -0x120(%rbp), %rax
movq -0x118(%rbp), %rcx
movq %rcx, -0xe0(%rbp)
movq %rax, -0xd8(%rbp)
leaq -0xe0(%rbp), %rdi
callq 0x88320
movb %al, -0x109(%rbp)
movb -0x109(%rbp), %al
testb $0x1, %al
jne 0x1411b
jmp 0x14127
movl $0x2, -0xcc(%rbp)
jmp 0x1413f
jmp 0x14129
movq -0x68(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x68(%rbp)
movl $0x0, -0xcc(%rbp)
leaq -0xc0(%rbp), %rdi
callq 0x88350
movl -0xcc(%rbp), %eax
testl %eax, %eax
je 0x14159
jmp 0x14157
jmp 0x14169
jmp 0x1415b
leaq -0x78(%rbp), %rdi
callq 0xf9e0
jmp 0x13eef
movq -0x38(%rbp), %rax
movq %rax, -0x128(%rbp)
movl $0x1, -0xcc(%rbp)
leaq -0x50(%rbp), %rdi
callq 0x88390
movq -0x128(%rbp), %rax
addq $0x130, %rsp            # imm = 0x130
popq %rbp
retq
leaq -0x50(%rbp), %rdi
callq 0x88390
movq -0xa0(%rbp), %rdi
callq 0xa650
nopl (%rax)