// File: yhirose[P]fizzbuzzlang/./peglib.h
// Function: peg::ParserGenerator::apply_precedence_instruction(peg::Definition&, std::map<std::basic_string_view<char, std::char_traits<char>>, std::pair<unsigned long, char>, std::less<std::basic_string_view<char, std::char_traits<char>>>, std::allocator<std::pair<std::basic_string_view<char, std::char_traits<char>> const, std::pair<unsigned long, char>>>> const&, 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&)>)
bool apply_precedence_instruction(Definition &rule,
                                    const PrecedenceClimbing::BinOpeInfo &info,
                                    const char *s, Log log) {
    try {
      auto &seq = dynamic_cast<Sequence &>(*rule.get_core_operator());
      auto atom = seq.opes_[0];
      auto &rep = dynamic_cast<Repetition &>(*seq.opes_[1]);
      auto &seq1 = dynamic_cast<Sequence &>(*rep.ope_);
      auto binop = seq1.opes_[0];
      auto atom1 = seq1.opes_[1];

      auto atom_name = dynamic_cast<Reference &>(*atom).name_;
      auto binop_name = dynamic_cast<Reference &>(*binop).name_;
      auto atom1_name = dynamic_cast<Reference &>(*atom1).name_;

      if (!rep.is_zom() || atom_name != atom1_name || atom_name == binop_name) {
        if (log) {
          auto line = line_info(s, rule.s_);
          log(line.first, line.second,
              "'precedence' instruction cannot be applied to '" + rule.name +
                  "'.",
              "");
        }
        return false;
      }

      rule.holder_->ope_ = pre(atom, binop, info, rule);
      rule.disable_action = true;
    } catch (...) {
      if (log) {
        auto line = line_info(s, rule.s_);
        log(line.first, line.second,
            "'precedence' instruction cannot be applied to '" + rule.name +
                "'.",
            "");
      }
      return false;
    }
    return true;
  }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x290, %rsp            # imm = 0x290
movq %r8, -0x208(%rbp)
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
movq %r8, -0x30(%rbp)
movq -0x18(%rbp), %rsi
leaq -0x48(%rbp), %rdi
callq 0x19720
leaq -0x48(%rbp), %rdi
callq 0x104b0
movq %rax, %rdi
leaq 0x7a562(%rip), %rsi     # 0xf2b58
leaq 0x7a5e3(%rip), %rdx     # 0xf2be0
xorl %eax, %eax
movl %eax, %ecx
callq 0xa480
movq %rax, -0x200(%rbp)
cmpq $0x0, %rax
jne 0x7861a
callq 0xa6c0
jmp 0x7861a
leaq -0x48(%rbp), %rdi
callq 0xda50
movq -0x200(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rdi
addq $0x8, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x7f240
movq %rax, %rsi
leaq -0x68(%rbp), %rdi
callq 0xf930
movq -0x38(%rbp), %rdi
addq $0x8, %rdi
movl $0x1, %esi
callq 0x7f240
movq %rax, %rdi
callq 0x104b0
movq %rax, %rdi
leaq 0x7a4e9(%rip), %rsi     # 0xf2b58
leaq 0x7a5fa(%rip), %rdx     # 0xf2c70
xorl %eax, %eax
movl %eax, %ecx
callq 0xa480
movq %rax, -0x210(%rbp)
cmpq $0x0, %rax
jne 0x78693
callq 0xa6c0
jmp 0x78693
movq -0x210(%rbp), %rax
movq %rax, -0x70(%rbp)
movq -0x70(%rbp), %rdi
addq $0x8, %rdi
callq 0x104b0
movq %rax, %rdi
leaq 0x7a4a3(%rip), %rsi     # 0xf2b58
leaq 0x7a524(%rip), %rdx     # 0xf2be0
xorl %eax, %eax
movl %eax, %ecx
callq 0xa480
movq %rax, -0x218(%rbp)
cmpq $0x0, %rax
jne 0x786d9
callq 0xa6c0
jmp 0x786d9
movq -0x218(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0x78(%rbp), %rdi
addq $0x8, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x7f240
movq %rax, %rsi
leaq -0x88(%rbp), %rdi
callq 0xf930
movq -0x78(%rbp), %rdi
addq $0x8, %rdi
movl $0x1, %esi
callq 0x7f240
movq %rax, %rsi
leaq -0x98(%rbp), %rdi
callq 0xf930
leaq -0x68(%rbp), %rdi
callq 0x104b0
movq %rax, %rdi
leaq 0x7a420(%rip), %rsi     # 0xf2b58
leaq 0x7a439(%rip), %rdx     # 0xf2b78
xorl %eax, %eax
movl %eax, %ecx
callq 0xa480
movq %rax, -0x220(%rbp)
cmpq $0x0, %rax
jne 0x7875c
callq 0xa6c0
jmp 0x7875c
movq -0x220(%rbp), %rsi
addq $0x20, %rsi
leaq -0xb8(%rbp), %rdi
callq 0xa170
jmp 0x78775
leaq -0x88(%rbp), %rdi
callq 0x104b0
movq %rax, %rdi
leaq 0x7a3cd(%rip), %rsi     # 0xf2b58
leaq 0x7a3e6(%rip), %rdx     # 0xf2b78
xorl %eax, %eax
movl %eax, %ecx
callq 0xa480
movq %rax, -0x228(%rbp)
cmpq $0x0, %rax
jne 0x787af
callq 0xa6c0
jmp 0x787af
movq -0x228(%rbp), %rsi
addq $0x20, %rsi
leaq -0xd8(%rbp), %rdi
callq 0xa170
jmp 0x787c8
leaq -0x98(%rbp), %rdi
callq 0x104b0
movq %rax, %rdi
leaq 0x7a37a(%rip), %rsi     # 0xf2b58
leaq 0x7a393(%rip), %rdx     # 0xf2b78
xorl %eax, %eax
movl %eax, %ecx
callq 0xa480
movq %rax, -0x230(%rbp)
cmpq $0x0, %rax
jne 0x78802
callq 0xa6c0
jmp 0x78802
movq -0x230(%rbp), %rsi
addq $0x20, %rsi
leaq -0xf8(%rbp), %rdi
callq 0xa170
jmp 0x7881b
movq -0x70(%rbp), %rdi
callq 0x7f260
movb %al, -0x231(%rbp)
jmp 0x7882c
movb -0x231(%rbp), %al
testb $0x1, %al
jne 0x78838
jmp 0x7886b
leaq -0xb8(%rbp), %rdi
leaq -0xf8(%rbp), %rsi
callq 0x7f2b0
testb $0x1, %al
jne 0x7886b
leaq -0xb8(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
callq 0x116e0
testb $0x1, %al
jne 0x7886b
jmp 0x78a78
movq -0x208(%rbp), %rdi
callq 0x104e0
testb $0x1, %al
jne 0x78880
jmp 0x78a68
movq -0x28(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x20(%rax), %rsi
callq 0x21040
movq %rdx, -0x248(%rbp)
movq %rax, -0x240(%rbp)
jmp 0x788a1
movq -0x248(%rbp), %rax
movq -0x240(%rbp), %rcx
movq %rcx, -0x108(%rbp)
movq %rax, -0x100(%rbp)
movq -0x108(%rbp), %rax
movq %rax, -0x258(%rbp)
movq -0x100(%rbp), %rax
movq %rax, -0x250(%rbp)
movq -0x18(%rbp), %rdx
leaq 0x29bc9(%rip), %rsi     # 0xa24ad
leaq -0x148(%rbp), %rdi
callq 0x10030
jmp 0x788f2
leaq 0x29b40(%rip), %rdx     # 0xa2439
leaq -0x128(%rbp), %rdi
leaq -0x148(%rbp), %rsi
callq 0xffe0
jmp 0x7890e
leaq -0x169(%rbp), %rdi
movq %rdi, -0x260(%rbp)
callq 0xa660
movq -0x260(%rbp), %rdx
leaq 0x29687(%rip), %rsi     # 0xa1fb6
leaq -0x168(%rbp), %rdi
callq 0x18be0
jmp 0x7893d
movq -0x250(%rbp), %rdx
movq -0x258(%rbp), %rsi
movq -0x208(%rbp), %rdi
leaq -0x128(%rbp), %rcx
leaq -0x168(%rbp), %r8
callq 0x21400
jmp 0x78967
leaq -0x168(%rbp), %rdi
callq 0xa250
leaq -0x169(%rbp), %rdi
callq 0xa410
leaq -0x128(%rbp), %rdi
callq 0xa250
leaq -0x148(%rbp), %rdi
callq 0xa250
jmp 0x78a68
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x48(%rbp), %rdi
callq 0xda50
jmp 0x78b7d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x78b74
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x78b5c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x78b50
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x78b44
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x78b38
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x78a57
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x78a3f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x168(%rbp), %rdi
callq 0xa250
leaq -0x169(%rbp), %rdi
callq 0xa410
leaq -0x128(%rbp), %rdi
callq 0xa250
leaq -0x148(%rbp), %rdi
callq 0xa250
jmp 0x78b38
movb $0x0, -0x1(%rbp)
movl $0x1, -0x170(%rbp)
jmp 0x78add
movq -0x20(%rbp), %rcx
movq -0x18(%rbp), %r8
leaq -0x180(%rbp), %rdi
leaq -0x68(%rbp), %rsi
leaq -0x88(%rbp), %rdx
callq 0x7f2e0
jmp 0x78a99
movq -0x18(%rbp), %rdi
addq $0x1c0, %rdi            # imm = 0x1C0
callq 0x19b90
movq %rax, %rdi
addq $0x8, %rdi
leaq -0x180(%rbp), %rsi
callq 0x4ed50
leaq -0x180(%rbp), %rdi
callq 0xda50
movq -0x18(%rbp), %rax
movb $0x1, 0x108(%rax)
movl $0x0, -0x170(%rbp)
leaq -0xf8(%rbp), %rdi
callq 0xa250
leaq -0xd8(%rbp), %rdi
callq 0xa250
leaq -0xb8(%rbp), %rdi
callq 0xa250
leaq -0x98(%rbp), %rdi
callq 0xda50
leaq -0x88(%rbp), %rdi
callq 0xda50
leaq -0x68(%rbp), %rdi
callq 0xda50
movl -0x170(%rbp), %eax
testl %eax, %eax
je 0x78b33
jmp 0x78b2e
jmp 0x78d3e
jmp 0x78d3a
leaq -0xf8(%rbp), %rdi
callq 0xa250
leaq -0xd8(%rbp), %rdi
callq 0xa250
leaq -0xb8(%rbp), %rdi
callq 0xa250
leaq -0x98(%rbp), %rdi
callq 0xda50
leaq -0x88(%rbp), %rdi
callq 0xda50
leaq -0x68(%rbp), %rdi
callq 0xda50
movq -0x50(%rbp), %rdi
callq 0xa160
movq -0x208(%rbp), %rdi
callq 0x104e0
testb $0x1, %al
jne 0x78b9b
jmp 0x78d1c
movq -0x28(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x20(%rax), %rsi
callq 0x21040
movq %rdx, -0x270(%rbp)
movq %rax, -0x268(%rbp)
jmp 0x78bbc
movq -0x270(%rbp), %rax
movq -0x268(%rbp), %rcx
movq %rcx, -0x190(%rbp)
movq %rax, -0x188(%rbp)
movq -0x190(%rbp), %rax
movq %rax, -0x280(%rbp)
movq -0x188(%rbp), %rax
movq %rax, -0x278(%rbp)
movq -0x18(%rbp), %rdx
leaq 0x298ae(%rip), %rsi     # 0xa24ad
leaq -0x1d0(%rbp), %rdi
callq 0x10030
jmp 0x78c0d
leaq 0x29825(%rip), %rdx     # 0xa2439
leaq -0x1b0(%rbp), %rdi
leaq -0x1d0(%rbp), %rsi
callq 0xffe0
jmp 0x78c29
leaq -0x1f1(%rbp), %rdi
movq %rdi, -0x288(%rbp)
callq 0xa660
movq -0x288(%rbp), %rdx
leaq 0x2936c(%rip), %rsi     # 0xa1fb6
leaq -0x1f0(%rbp), %rdi
callq 0x18be0
jmp 0x78c58
movq -0x278(%rbp), %rdx
movq -0x280(%rbp), %rsi
movq -0x208(%rbp), %rdi
leaq -0x1b0(%rbp), %rcx
leaq -0x1f0(%rbp), %r8
callq 0x21400
jmp 0x78c82
leaq -0x1f0(%rbp), %rdi
callq 0xa250
leaq -0x1f1(%rbp), %rdi
callq 0xa410
leaq -0x1b0(%rbp), %rdi
callq 0xa250
leaq -0x1d0(%rbp), %rdi
callq 0xa250
jmp 0x78d1c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x78d31
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x78d0e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x78cf6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x1f0(%rbp), %rdi
callq 0xa250
leaq -0x1f1(%rbp), %rdi
callq 0xa410
leaq -0x1b0(%rbp), %rdi
callq 0xa250
leaq -0x1d0(%rbp), %rdi
callq 0xa250
jmp 0x78d31
movb $0x0, -0x1(%rbp)
movl $0x1, -0x170(%rbp)
callq 0xa600
jmp 0x78d3e
callq 0xa600
jmp 0x78d38
jmp 0x78d4c
movb $0x1, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x290, %rsp            # imm = 0x290
popq %rbp
retq
movq -0x50(%rbp), %rdi
callq 0xa650
movq %rax, %rdi
callq 0x13bd0
nopl (%rax)