// File: yhirose[P]fizzbuzzlang/./peglib.h
// Function: peg::HasEmptyElement::visit(peg::Sequence&)
inline void HasEmptyElement::visit(Sequence &ope) {
  auto save_is_empty = false;
  const char *save_error_s = nullptr;
  std::string save_error_name;

  auto it = ope.opes_.begin();
  while (it != ope.opes_.end()) {
    (*it)->accept(*this);
    if (!is_empty) {
      ++it;
      while (it != ope.opes_.end()) {
        DetectInfiniteLoop vis(refs_, has_error_cache_);
        (*it)->accept(vis);
        if (vis.has_error) {
          is_empty = true;
          error_s = vis.error_s;
          error_name = vis.error_name;
        }
        ++it;
      }
      return;
    }

    save_is_empty = is_empty;
    save_error_s = error_s;
    save_error_name = error_name;

    is_empty = false;
    error_name.clear();
    ++it;
  }

  is_empty = save_is_empty;
  error_s = save_error_s;
  error_name = save_error_name;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xc0, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0xc0(%rbp)
movb $0x0, -0x11(%rbp)
movq $0x0, -0x20(%rbp)
leaq -0x40(%rbp), %rdi
callq 0xa520
movq -0x10(%rbp), %rdi
addq $0x8, %rdi
callq 0x11a20
movq %rax, -0x48(%rbp)
movq -0x10(%rbp), %rdi
addq $0x8, %rdi
callq 0x11a90
movq %rax, -0x50(%rbp)
leaq -0x48(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x11a50
testb $0x1, %al
jne 0x1184b
jmp 0x119c4
leaq -0x48(%rbp), %rdi
callq 0x11ac0
movq %rax, %rdi
callq 0xded0
movq -0xc0(%rbp), %rsi
movq %rax, %rdi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
jmp 0x11871
movq -0xc0(%rbp), %rax
testb $0x1, 0x8(%rax)
jne 0x1197c
leaq -0x48(%rbp), %rdi
callq 0x11ae0
movq -0x10(%rbp), %rdi
addq $0x8, %rdi
callq 0x11a90
movq %rax, -0x68(%rbp)
leaq -0x48(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x11a50
testb $0x1, %al
jne 0x118b2
jmp 0x11970
movq -0xc0(%rbp), %rax
movq 0x38(%rax), %rsi
movq 0x40(%rax), %rdx
leaq -0xb0(%rbp), %rdi
callq 0x11b00
jmp 0x118cf
leaq -0x48(%rbp), %rdi
callq 0x11ac0
movq %rax, %rdi
callq 0xded0
movq %rax, %rdi
movq (%rdi), %rax
movq 0x18(%rax), %rax
leaq -0xb0(%rbp), %rsi
callq *%rax
jmp 0x118f5
testb $0x1, -0xa8(%rbp)
je 0x11956
movq -0xc0(%rbp), %rdi
movb $0x1, 0x8(%rdi)
movq -0xa0(%rbp), %rax
movq %rax, 0x10(%rdi)
leaq -0x98(%rbp), %rsi
addq $0x18, %rdi
callq 0xa040
jmp 0x11926
jmp 0x11956
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x11a06
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0xb0(%rbp), %rdi
callq 0x11b70
jmp 0x11a06
leaq -0x48(%rbp), %rdi
callq 0x11ae0
leaq -0xb0(%rbp), %rdi
callq 0x11b70
jmp 0x1188b
movl $0x1, -0xb4(%rbp)
jmp 0x119f4
movq -0xc0(%rbp), %rsi
movb 0x8(%rsi), %al
andb $0x1, %al
movb %al, -0x11(%rbp)
movq 0x10(%rsi), %rax
movq %rax, -0x20(%rbp)
addq $0x18, %rsi
leaq -0x40(%rbp), %rdi
callq 0xa040
jmp 0x119a2
movq -0xc0(%rbp), %rdi
movb $0x0, 0x8(%rdi)
addq $0x18, %rdi
callq 0xa4e0
leaq -0x48(%rbp), %rdi
callq 0x11ae0
jmp 0x11824
movq -0xc0(%rbp), %rdi
movb -0x11(%rbp), %al
andb $0x1, %al
movb %al, 0x8(%rdi)
movq -0x20(%rbp), %rax
movq %rax, 0x10(%rdi)
addq $0x18, %rdi
leaq -0x40(%rbp), %rsi
callq 0xa040
jmp 0x119ea
movl $0x0, -0xb4(%rbp)
leaq -0x40(%rbp), %rdi
callq 0xa250
addq $0xc0, %rsp
popq %rbp
retq
leaq -0x40(%rbp), %rdi
callq 0xa250
movq -0x58(%rbp), %rdi
callq 0xa650
nopl (%rax,%rax)