// File: yhirose[P]fizzbuzzlang/./peglib.h
// Function: peg::CharacterClass::CharacterClass(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, bool, bool)
CharacterClass(const std::string &s, bool negated, bool ignore_case)
      : negated_(negated), ignore_case_(ignore_case) {
    auto chars = decode(s.data(), s.length());
    auto i = 0u;
    while (i < chars.size()) {
      if (i + 2 < chars.size() && chars[i + 1] == '-') {
        auto cp1 = chars[i];
        auto cp2 = chars[i + 2];
        ranges_.emplace_back(std::pair(cp1, cp2));
        i += 3;
      } else {
        auto cp = chars[i];
        ranges_.emplace_back(std::pair(cp, cp));
        i += 1;
      }
    }
    assert(!ranges_.empty());
  }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xc0, %rsp
movb %cl, %al
movb %dl, %cl
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
andb $0x1, %cl
movb %cl, -0x11(%rbp)
andb $0x1, %al
movb %al, -0x12(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x78(%rbp)
callq 0x1e540
movq -0x78(%rbp), %rdi
addq $0x8, %rdi
callq 0x48500
movq -0x78(%rbp), %rdi
leaq 0xaab71(%rip), %rax     # 0xf2e18
movq %rax, (%rdi)
addq $0x18, %rdi
movq %rdi, -0x80(%rbp)
callq 0x48520
movq -0x78(%rbp), %rax
movb -0x11(%rbp), %cl
andb $0x1, %cl
movb %cl, 0x30(%rax)
movb -0x12(%rbp), %cl
andb $0x1, %cl
movb %cl, 0x31(%rax)
movq -0x10(%rbp), %rdi
callq 0xa4d0
movq %rax, -0x70(%rbp)
movq -0x10(%rbp), %rdi
callq 0xa5a0
movq -0x70(%rbp), %rsi
movq %rax, %rdx
leaq -0x38(%rbp), %rdi
callq 0x48540
jmp 0x482f5
movl $0x0, -0x48(%rbp)
movl -0x48(%rbp), %eax
movq %rax, -0x88(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x48640
movq %rax, %rcx
movq -0x88(%rbp), %rax
cmpq %rcx, %rax
jae 0x48490
movl -0x48(%rbp), %eax
addl $0x2, %eax
movl %eax, %eax
movq %rax, -0x90(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x48640
movq %rax, %rcx
movq -0x90(%rbp), %rax
cmpq %rcx, %rax
jae 0x4842c
movl -0x48(%rbp), %eax
incl %eax
movl %eax, %esi
leaq -0x38(%rbp), %rdi
callq 0x48660
movq %rax, -0x98(%rbp)
jmp 0x48366
movq -0x98(%rbp), %rax
cmpl $0x2d, (%rax)
jne 0x4842c
movl -0x48(%rbp), %eax
movl %eax, %esi
leaq -0x38(%rbp), %rdi
callq 0x48660
movq %rax, -0xa0(%rbp)
jmp 0x4838d
movq -0xa0(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x4c(%rbp)
movl -0x48(%rbp), %eax
addl $0x2, %eax
movl %eax, %esi
leaq -0x38(%rbp), %rdi
callq 0x48660
movq %rax, -0xa8(%rbp)
jmp 0x483b3
movq -0x78(%rbp), %rax
movq -0xa8(%rbp), %rcx
movl (%rcx), %ecx
movl %ecx, -0x50(%rbp)
addq $0x18, %rax
movq %rax, -0xb0(%rbp)
leaq -0x58(%rbp), %rdi
leaq -0x4c(%rbp), %rsi
leaq -0x50(%rbp), %rdx
callq 0x48720
jmp 0x483e1
movq -0xb0(%rbp), %rdi
leaq -0x58(%rbp), %rsi
callq 0x486a0
jmp 0x483f3
movl -0x48(%rbp), %eax
addl $0x3, %eax
movl %eax, -0x48(%rbp)
jmp 0x4848b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x484d8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x48790
jmp 0x484d8
movl -0x48(%rbp), %eax
movl %eax, %esi
leaq -0x38(%rbp), %rdi
callq 0x48660
movq %rax, -0xb8(%rbp)
jmp 0x48443
movq -0x78(%rbp), %rax
movq -0xb8(%rbp), %rcx
movl (%rcx), %ecx
movl %ecx, -0x5c(%rbp)
addq $0x18, %rax
movq %rax, -0xc0(%rbp)
leaq -0x64(%rbp), %rdi
leaq -0x5c(%rbp), %rdx
movq %rdx, %rsi
callq 0x48720
jmp 0x48470
movq -0xc0(%rbp), %rdi
leaq -0x64(%rbp), %rsi
callq 0x486a0
jmp 0x48482
movl -0x48(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x48(%rbp)
jmp 0x482fc
movq -0x78(%rbp), %rdi
addq $0x18, %rdi
callq 0x48750
xorb $-0x1, %al
testb $0x1, %al
jne 0x484a5
jmp 0x484a7
jmp 0x484c6
leaq 0x59bfb(%rip), %rdi     # 0xa20a9
leaq 0x597dc(%rip), %rsi     # 0xa1c91
movl $0x4da, %edx            # imm = 0x4DA
leaq 0x59bf9(%rip), %rcx     # 0xa20ba
callq 0xa290
leaq -0x38(%rbp), %rdi
callq 0x48790
addq $0xc0, %rsp
popq %rbp
retq
movq -0x80(%rbp), %rdi
callq 0x39cf0
movq -0x78(%rbp), %rdi
addq $0x8, %rdi
callq 0x487d0
movq -0x78(%rbp), %rdi
callq 0x1e560
movq -0x40(%rbp), %rdi
callq 0xa650