// File: /workspace/github_cpp_makefile_star2_O2/yhirose[P]fizzbuzzlang/./peglib.h
// Function: peg::ParserGenerator::perform_core(char const*, unsigned long, std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::shared_ptr<peg::Ope>, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, std::shared_ptr<peg::Ope>>>> 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&)>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
ParserContext perform_core(const char *s, size_t n, const Rules &rules,
                             Log log, std::string requested_start) {
    Data data;
    auto &grammar = *data.grammar;

    // Built-in macros
    {
      // `%recover`
      {
        auto &rule = grammar[RECOVER_DEFINITION_NAME];
        rule <= ref(grammar, "x", "", false, {});
        rule.name = RECOVER_DEFINITION_NAME;
        rule.s_ = "[native]";
        rule.ignoreSemanticValue = true;
        rule.is_macro = true;
        rule.params = {"x"};
      }
    }

    try {
      std::any dt = &data;
      auto r = g["Grammar"].parse(s, n, dt, nullptr, log);

      if (!r.ret) {
        if (log) {
          if (r.error_info.message_pos) {
            auto line = line_info(s, r.error_info.message_pos);
            log(line.first, line.second, r.error_info.message,
                r.error_info.label);
          } else {
            auto line = line_info(s, r.error_info.error_pos);
            log(line.first, line.second, "syntax error", r.error_info.label);
          }
        }
        return {};
      }
    } catch (const SyntaxErrorException &e) {
      if (log) {
        auto line = e.line_info();
        log(line.first, line.second, e.what(), "");
      }
      return {};
    }

    // User provided rules
    for (auto [user_name, user_rule] : rules) {
      auto name = user_name;
      auto ignore = false;
      if (!name.empty() && name[0] == '~') {
        ignore = true;
        name.erase(0, 1);
      }
      if (!name.empty()) {
        auto &rule = grammar[name];
        rule <= user_rule;
        rule.name = name;
        rule.ignoreSemanticValue = ignore;
      }
    }

    // Check duplicated definitions
    auto ret = true;

    if (!data.duplicates_of_definition.empty()) {
      for (const auto &[name, ptr] : data.duplicates_of_definition) {
        if (log) {
          auto line = line_info(s, ptr);
          log(line.first, line.second,
              "the definition '" + name + "' is already defined.", "");
        }
      }
      ret = false;
    }

    // Check duplicated instructions
    if (!data.duplicates_of_instruction.empty()) {
      for (const auto &[type, ptr] : data.duplicates_of_instruction) {
        if (log) {
          auto line = line_info(s, ptr);
          log(line.first, line.second,
              "the instruction '" + type + "' is already defined.", "");
        }
      }
      ret = false;
    }

    // Check undefined back references
    if (!data.undefined_back_references.empty()) {
      for (const auto &[name, ptr] : data.undefined_back_references) {
        if (log) {
          auto line = line_info(s, ptr);
          log(line.first, line.second,
              "the back reference '" + name + "' is undefined.", "");
        }
      }
      ret = false;
    }

    // Set root definition
    auto start = data.start;

    if (!requested_start.empty()) {
      if (grammar.count(requested_start)) {
        start = requested_start;
      } else {
        if (log) {
          auto line = line_info(s, s);
          log(line.first, line.second,
              "the specified start rule '" + requested_start +
                  "' is undefined.",
              "");
        }
        ret = false;
      }
    }

    if (!ret) { return {}; }

    auto &start_rule = grammar[start];

    // Check if the start rule has ignore operator
    {
      if (start_rule.ignoreSemanticValue) {
        if (log) {
          auto line = line_info(s, start_rule.s_);
          log(line.first, line.second,
              "ignore operator cannot be applied to '" + start_rule.name + "'.",
              "");
        }
        ret = false;
      }
    }

    if (!ret) { return {}; }

    // Check missing definitions
    auto referenced = std::unordered_set<std::string>{
        WHITESPACE_DEFINITION_NAME,
        WORD_DEFINITION_NAME,
        RECOVER_DEFINITION_NAME,
        start_rule.name,
    };

    for (auto &[_, rule] : grammar) {
      ReferenceChecker vis(grammar, rule.params);
      rule.accept(vis);
      referenced.insert(vis.referenced.begin(), vis.referenced.end());
      for (const auto &[name, ptr] : vis.error_s) {
        if (log) {
          auto line = line_info(s, ptr);
          log(line.first, line.second, vis.error_message[name], "");
        }
        ret = false;
      }
    }

    for (auto &[name, rule] : grammar) {
      if (!referenced.count(name)) {
        if (log) {
          auto line = line_info(s, rule.s_);
          auto msg = "'" + name + "' is not referenced.";
          log(line.first, line.second, msg, "");
        }
      }
    }

    if (!ret) { return {}; }

    // Link references
    for (auto &x : grammar) {
      auto &rule = x.second;
      LinkReferences vis(grammar, rule.params);
      rule.accept(vis);
    }

    // Check left recursion
    ret = true;

    for (auto &[name, rule] : grammar) {
      DetectLeftRecursion vis(name);
      rule.accept(vis);
      if (vis.error_s) {
        if (log) {
          auto line = line_info(s, vis.error_s);
          log(line.first, line.second, "'" + name + "' is left recursive.", "");
        }
        ret = false;
      }
    }

    if (!ret) { return {}; }

    // Check infinite loop
    if (detect_infiniteLoop(data, start_rule, log, s)) { return {}; }

    // Automatic whitespace skipping
    if (grammar.count(WHITESPACE_DEFINITION_NAME)) {
      for (auto &x : grammar) {
        auto &rule = x.second;
        auto ope = rule.get_core_operator();
        if (IsLiteralToken::check(*ope)) { rule <= tok(ope); }
      }

      auto &rule = grammar[WHITESPACE_DEFINITION_NAME];
      start_rule.whitespaceOpe = wsp(rule.get_core_operator());

      if (detect_infiniteLoop(data, rule, log, s)) { return {}; }
    }

    // Word expression
    if (grammar.count(WORD_DEFINITION_NAME)) {
      auto &rule = grammar[WORD_DEFINITION_NAME];
      start_rule.wordOpe = rule.get_core_operator();

      if (detect_infiniteLoop(data, rule, log, s)) { return {}; }
    }

    // Apply instructions
    for (const auto &[name, instructions] : data.instructions) {
      auto &rule = grammar[name];

      for (const auto &instruction : instructions) {
        if (instruction.type == "precedence") {
          const auto &info =
              std::any_cast<PrecedenceClimbing::BinOpeInfo>(instruction.data);

          if (!apply_precedence_instruction(rule, info, s, log)) { return {}; }
        } else if (instruction.type == "error_message") {
          rule.error_message = std::any_cast<std::string>(instruction.data);
        } else if (instruction.type == "no_ast_opt") {
          rule.no_ast_opt = true;
        }
      }
    }

    return {data.grammar, start, data.enablePackratParsing};
  }

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x328, %rsp            # imm = 0x328
movq %r9, -0x30(%rbp)
movq %r8, %r13
movq %rcx, %rbx
movq %rdx, -0x38(%rbp)
movq %rsi, -0xe0(%rbp)
movq %rdi, -0x50(%rbp)
leaq -0x348(%rbp), %r12
movq %r12, %rdi
callq 0x2de42
movq (%r12), %r14
leaq 0x27a62(%rip), %rsi     # 0x39cb3
leaq -0x1c0(%rbp), %rdi
leaq -0xd0(%rbp), %rdx
callq 0xff44
leaq -0x1c0(%rbp), %rsi
movq %r14, -0x58(%rbp)
movq %r14, %rdi
callq 0x1f982
movq %rax, %r15
leaq -0x1c0(%rbp), %rdi
callq 0x9140
leaq 0x276cb(%rip), %rsi     # 0x39958
leaq -0x1c0(%rbp), %rdi
leaq -0x88(%rbp), %rdx
callq 0xff44
xorps %xmm0, %xmm0
leaq -0xd0(%rbp), %r9
movaps %xmm0, (%r9)
andq $0x0, 0x10(%r9)
leaq 0x27720(%rip), %rcx     # 0x399da
leaq -0x100(%rbp), %rdi
leaq -0x1c0(%rbp), %rdx
movq -0x58(%rbp), %rsi
xorl %r8d, %r8d
callq 0x26e4d
leaq -0x100(%rbp), %rsi
movq %r15, %rdi
callq 0x1d86c
leaq -0xf8(%rbp), %rdi
callq 0x1106c
leaq -0xd0(%rbp), %rdi
callq 0xbb2a
leaq -0x1c0(%rbp), %rdi
callq 0x9140
leaq 0x279a5(%rip), %rsi     # 0x39cb3
movq %r15, %rdi
callq 0x94a0
leaq 0x27a97(%rip), %rax     # 0x39db4
movq %rax, 0x20(%r15)
movb $0x1, %al
movb %al, 0xc0(%r15)
movb %al, 0xe9(%r15)
leaq 0x27620(%rip), %rsi     # 0x39958
leaq -0x1c0(%rbp), %rdi
leaq -0xd0(%rbp), %rdx
callq 0xff44
addq $0xf0, %r15
leaq -0x1a0(%rbp), %rdx
leaq -0x1c0(%rbp), %rsi
movq %r15, %rdi
callq 0x2edfc
leaq -0x1c0(%rbp), %rdi
callq 0x9140
leaq 0x122a3(%rip), %rax     # 0x2461e
movq %rax, -0x100(%rbp)
movq %r12, -0xf8(%rbp)
leaq 0x27402(%rip), %rsi     # 0x39792
leaq -0xd0(%rbp), %rdi
leaq -0x88(%rbp), %rdx
callq 0xff44
leaq -0xd0(%rbp), %rsi
movq -0xe0(%rbp), %rdi
callq 0x1f982
movq %rax, %r14
leaq -0x248(%rbp), %r15
movq %r15, %rdi
movq -0x30(%rbp), %rsi
callq 0xbff0
movq %r15, (%rsp)
leaq -0x1c0(%rbp), %rdi
leaq -0x100(%rbp), %r8
movq %r14, %rsi
movq -0x38(%rbp), %rdx
movq %rbx, %rcx
xorl %r9d, %r9d
callq 0x2df8c
leaq -0x248(%rbp), %rdi
callq 0x3209c
leaq -0xd0(%rbp), %rdi
callq 0x9140
cmpb $0x0, -0x1c0(%rbp)
je 0x124eb
leaq -0x1b0(%rbp), %rdi
callq 0x108f6
leaq -0x100(%rbp), %rdi
callq 0x1113a
addq $0x10, %r13
leaq -0x1a0(%rbp), %rax
movq %rax, -0x1c8(%rbp)
leaq -0x1c0(%rbp), %r15
leaq -0xd0(%rbp), %r12
movq (%r13), %r13
testq %r13, %r13
je 0x12532
leaq 0x8(%r13), %rsi
movq %r15, %rdi
callq 0x2e06c
movq %r12, %rdi
movq %r15, %rsi
callq 0x9360
cmpq $0x0, -0xc8(%rbp)
je 0x124d6
movq -0xd0(%rbp), %rax
cmpb $0x7e, (%rax)
jne 0x124a3
movq %r12, %rdi
xorl %esi, %esi
pushq $0x1
popq %rdx
callq 0x9080
movb $0x1, %r14b
cmpq $0x0, -0xc8(%rbp)
jne 0x124a6
jmp 0x124d6
xorl %r14d, %r14d
movq -0x58(%rbp), %rdi
movq %r12, %rsi
callq 0x25a7a
movq %rax, %rbx
movq %rax, %rdi
leaq -0x1a0(%rbp), %rsi
callq 0x1d86c
movq %rbx, %rdi
movq %r12, %rsi
callq 0x9190
movb %r14b, 0xc0(%rbx)
movq %r12, %rdi
callq 0x9140
movq %r15, %rdi
callq 0x2e096
jmp 0x1244d
movq -0x30(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x12936
movq -0x190(%rbp), %rsi
testq %rsi, %rsi
je 0x128dd
movq -0x38(%rbp), %rdi
callq 0x11bfa
leaq -0x188(%rbp), %rcx
leaq -0x168(%rbp), %r8
movq -0x30(%rbp), %rdi
movq %rax, %rsi
callq 0x11e10
jmp 0x12936
movq -0x310(%rbp), %r12
movq -0x308(%rbp), %rax
movq %rax, -0x60(%rbp)
cmpq %rax, %r12
je 0x12612
leaq -0x1c0(%rbp), %r15
leaq -0x100(%rbp), %r14
cmpq -0x60(%rbp), %r12
je 0x1260d
movq -0x30(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x12604
movq 0x20(%r12), %rsi
movq -0x38(%rbp), %rdi
callq 0x11bfa
movq %rdx, -0x48(%rbp)
movq %rax, %r13
leaq -0xd0(%rbp), %rbx
movq %rbx, %rdi
leaq 0x27823(%rip), %rsi     # 0x39dbd
movq %r12, -0x68(%rbp)
movq %r12, %rdx
callq 0xbd74
movq %r15, %rdi
movq %rbx, %rsi
leaq 0x2781b(%rip), %rdx     # 0x39dce
callq 0xbd4b
movq %r14, %rdi
leaq 0x27418(%rip), %rsi     # 0x399da
leaq -0x88(%rbp), %rdx
callq 0xff44
movq -0x30(%rbp), %rdi
movq %r13, %rsi
movq -0x48(%rbp), %rdx
movq %r15, %rcx
movq %r14, %r8
callq 0x11e10
movq %r14, %rdi
callq 0x9140
movq %r15, %rdi
callq 0x9140
leaq -0xd0(%rbp), %rdi
callq 0x9140
movq -0x68(%rbp), %r12
addq $0x28, %r12
jmp 0x1255b
xorl %r14d, %r14d
jmp 0x12615
movb $0x1, %r14b
movq -0x2f8(%rbp), %r12
movq -0x2f0(%rbp), %rax
movq %rax, -0x60(%rbp)
cmpq %rax, %r12
je 0x126f3
leaq -0x1c0(%rbp), %r15
leaq -0x100(%rbp), %rbx
cmpq -0x60(%rbp), %r12
je 0x126f0
movq -0x30(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x126e7
movq 0x20(%r12), %rsi
movq -0x38(%rbp), %rdi
callq 0x11bfa
movq %rdx, -0x48(%rbp)
movq %rax, %r13
leaq -0xd0(%rbp), %r14
movq %r14, %rdi
leaq 0x27767(%rip), %rsi     # 0x39de4
movq %r12, -0x68(%rbp)
movq %r12, %rdx
callq 0xbd74
movq %r15, %rdi
movq %r14, %rsi
leaq 0x27738(%rip), %rdx     # 0x39dce
callq 0xbd4b
movq %rbx, %rdi
leaq 0x27335(%rip), %rsi     # 0x399da
leaq -0x88(%rbp), %rdx
callq 0xff44
movq -0x30(%rbp), %rdi
movq %r13, %rsi
movq -0x48(%rbp), %rdx
movq %r15, %rcx
movq %rbx, %r8
callq 0x11e10
movq %rbx, %rdi
callq 0x9140
movq %r15, %rdi
callq 0x9140
leaq -0xd0(%rbp), %rdi
callq 0x9140
movq -0x68(%rbp), %r12
addq $0x28, %r12
jmp 0x1263e
xorl %r14d, %r14d
movq -0x2b0(%rbp), %r12
movq -0x2a8(%rbp), %rax
movq %rax, -0x60(%rbp)
cmpq %rax, %r12
je 0x127d1
leaq -0x1c0(%rbp), %r15
leaq -0x100(%rbp), %rbx
cmpq -0x60(%rbp), %r12
je 0x127ce
movq -0x30(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x127c5
movq 0x20(%r12), %rsi
movq -0x38(%rbp), %rdi
callq 0x11bfa
movq %rdx, -0x48(%rbp)
movq %rax, %r13
leaq -0xd0(%rbp), %r14
movq %r14, %rdi
leaq 0x2769b(%rip), %rsi     # 0x39df6
movq %r12, -0x68(%rbp)
movq %r12, %rdx
callq 0xbd74
movq %r15, %rdi
movq %r14, %rsi
leaq 0x27697(%rip), %rdx     # 0x39e0b
callq 0xbd4b
movq %rbx, %rdi
leaq 0x27257(%rip), %rsi     # 0x399da
leaq -0x88(%rbp), %rdx
callq 0xff44
movq -0x30(%rbp), %rdi
movq %r13, %rsi
movq -0x48(%rbp), %rdx
movq %r15, %rcx
movq %rbx, %r8
callq 0x11e10
movq %rbx, %rdi
callq 0x9140
movq %r15, %rdi
callq 0x9140
leaq -0xd0(%rbp), %rdi
callq 0x9140
movq -0x68(%rbp), %r12
addq $0x28, %r12
jmp 0x1271c
xorl %r14d, %r14d
leaq -0x338(%rbp), %rsi
leaq -0x100(%rbp), %rdi
callq 0x9360
movq 0x10(%rbp), %r12
cmpq $0x0, 0x8(%r12)
leaq -0x1a0(%rbp), %r15
je 0x1281b
movq -0x58(%rbp), %rdi
movq %r12, %rsi
callq 0x3594a
testq %rax, %rax
je 0x12972
leaq -0x100(%rbp), %rdi
movq %r12, %rsi
callq 0x9190
testb %r14b, %r14b
je 0x12a1e
leaq -0x100(%rbp), %rsi
movq -0x58(%rbp), %rdi
callq 0x25a7a
movq %rax, -0xd8(%rbp)
cmpb $0x1, 0xc0(%rax)
jne 0x12a6e
movq -0x30(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x12a1e
movq -0xd8(%rbp), %r14
movq 0x20(%r14), %rsi
movq -0x38(%rbp), %rdi
callq 0x11bfa
movq %rax, %rbx
movq %rdx, %r15
leaq 0x275be(%rip), %rsi     # 0x39e36
leaq -0xd0(%rbp), %rdi
movq %r14, %rdx
callq 0xbd74
leaq 0x275cf(%rip), %rdx     # 0x39e5d
leaq -0x1c0(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
callq 0xbd4b
leaq 0x27132(%rip), %rsi     # 0x399da
leaq -0x88(%rbp), %rdi
leaq -0x1e8(%rbp), %rdx
callq 0xff44
leaq -0x1c0(%rbp), %rcx
leaq -0x88(%rbp), %r8
movq -0x30(%rbp), %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x11e10
jmp 0x129fa
movq -0x1b0(%rbp), %rsi
movq -0x38(%rbp), %rdi
callq 0x11bfa
movq %rax, %rbx
movq %rdx, %r14
leaq 0x26e59(%rip), %rsi     # 0x39753
leaq -0xd0(%rbp), %rdi
leaq -0x88(%rbp), %rdx
callq 0xff44
leaq -0x168(%rbp), %r8
leaq -0xd0(%rbp), %rcx
movq -0x30(%rbp), %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x11e10
leaq -0xd0(%rbp), %rdi
callq 0x9140
xorps %xmm0, %xmm0
movq -0x50(%rbp), %rbx
movups %xmm0, (%rbx)
leaq 0x20(%rbx), %rax
movq %rax, 0x10(%rbx)
andq $0x0, 0x18(%rbx)
xorl %eax, %eax
movb %al, 0x20(%rbx)
movb %al, 0x30(%rbx)
leaq -0x1b0(%rbp), %rdi
callq 0x108f6
leaq -0x100(%rbp), %rdi
callq 0x1113a
jmp 0x12a4d
movq -0x30(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x12a1e
movq -0x38(%rbp), %rdi
movq %rdi, %rsi
callq 0x11bfa
movq %rax, %rbx
movq %rdx, %r15
leaq 0x27481(%rip), %rsi     # 0x39e1b
leaq -0xd0(%rbp), %rdi
movq %r12, %rdx
callq 0xbd74
leaq 0x2745b(%rip), %rdx     # 0x39e0b
leaq -0x1c0(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
callq 0xbd4b
leaq 0x27010(%rip), %rsi     # 0x399da
leaq -0x88(%rbp), %rdi
leaq -0x1e8(%rbp), %rdx
callq 0xff44
leaq -0x1c0(%rbp), %rcx
leaq -0x88(%rbp), %r8
movq -0x30(%rbp), %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x11e10
leaq -0x88(%rbp), %rdi
callq 0x9140
leaq -0x1c0(%rbp), %rdi
callq 0x9140
leaq -0xd0(%rbp), %rdi
callq 0x9140
xorps %xmm0, %xmm0
movq -0x50(%rbp), %rcx
movups %xmm0, (%rcx)
leaq 0x20(%rcx), %rax
movq %rax, 0x10(%rcx)
andq $0x0, 0x18(%rcx)
xorl %eax, %eax
movb %al, 0x20(%rcx)
movb %al, 0x30(%rcx)
leaq -0x100(%rbp), %rdi
callq 0x9140
movq -0x50(%rbp), %rbx
leaq -0x348(%rbp), %rdi
callq 0x2e800
movq %rbx, %rax
addq $0x328, %rsp            # imm = 0x328
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x2742b(%rip), %rsi     # 0x39ea0
leaq -0x1c0(%rbp), %rbx
leaq -0x88(%rbp), %rdx
movq %rbx, %rdi
callq 0xff44
leaq 0x2741a(%rip), %rsi     # 0x39eac
leaq -0x1e8(%rbp), %rdx
movq %r15, %rdi
callq 0xff44
leaq -0x180(%rbp), %r15
leaq 0x27204(%rip), %rsi     # 0x39cb3
leaq -0x228(%rbp), %rdx
movq %r15, %rdi
callq 0xff44
leaq -0x160(%rbp), %r15
movq %r15, %rdi
movq -0xd8(%rbp), %rsi
callq 0x9360
leaq -0x140(%rbp), %rdx
leaq -0x89(%rbp), %rax
movq %rax, (%rsp)
leaq -0xd0(%rbp), %rdi
leaq -0x1c0(%rbp), %rsi
leaq -0x39(%rbp), %r8
leaq -0x8a(%rbp), %r9
xorl %ecx, %ecx
callq 0x2f762
pushq $0x60
popq %rbx
leaq (%rbx,%rbp), %rdi
addq $-0x1c0, %rdi           # imm = 0xFE40
callq 0x9140
addq $-0x20, %rbx
cmpq $-0x20, %rbx
jne 0x12b09
movq -0x58(%rbp), %rax
addq $0x10, %rax
leaq -0x1a8(%rbp), %r15
leaq -0x88(%rbp), %r13
movq %rax, -0x60(%rbp)
movq %rax, %r8
movq (%r8), %r8
testq %r8, %r8
je 0x12ca4
leaq 0x118(%r8), %rax
leaq 0x48cf6(%rip), %rcx     # 0x5b850
movq %rcx, -0x1c0(%rbp)
leaq -0x188(%rbp), %rdx
movq %rdx, -0x1b8(%rbp)
pushq $0x1
popq %rcx
movq %rcx, -0x1b0(%rbp)
xorps %xmm0, %xmm0
movups %xmm0, (%r15)
movl $0x3f800000, %edi       # imm = 0x3F800000
movl %edi, -0x198(%rbp)
movups %xmm0, -0x8(%rdx)
leaq -0x150(%rbp), %rsi
movq %rsi, -0x180(%rbp)
movq %rcx, -0x178(%rbp)
movups %xmm0, 0x18(%rdx)
movl %edi, -0x160(%rbp)
movups %xmm0, 0x30(%rdx)
leaq -0x118(%rbp), %rsi
movq %rsi, -0x148(%rbp)
movq %rcx, -0x140(%rbp)
movups %xmm0, 0x50(%rdx)
movl %edi, -0x128(%rbp)
movups %xmm0, 0x68(%rdx)
movq -0x58(%rbp), %rcx
movq %rcx, -0x110(%rbp)
movq %rax, -0x108(%rbp)
movq %r8, -0x48(%rbp)
movq 0x1e8(%r8), %rdi
movq (%rdi), %rax
leaq -0x1c0(%rbp), %rsi
callq *0x18(%rax)
movq -0x138(%rbp), %rsi
leaq -0xd0(%rbp), %rdi
xorl %edx, %edx
callq 0x2fbb0
movq (%r15), %r15
testq %r15, %r15
je 0x12c88
xorl %r14d, %r14d
movq -0x30(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x12c14
movq 0x28(%r15), %rsi
movq -0x38(%rbp), %rdi
callq 0x11bfa
movq %rax, %r14
movq %rdx, %rbx
leaq 0x8(%r15), %rsi
leaq -0x180(%rbp), %rdi
callq 0x35dec
movq %rax, %r12
movq %r13, %rdi
leaq 0x26d80(%rip), %rsi     # 0x399da
leaq -0x1e8(%rbp), %rdx
callq 0xff44
movq -0x30(%rbp), %rdi
movq %r14, %rsi
movq %rbx, %rdx
movq %r12, %rcx
movq %r13, %r8
callq 0x11e10
movq %r13, %rdi
callq 0x9140
xorl %r14d, %r14d
jmp 0x12c14
leaq -0x1c0(%rbp), %rdi
callq 0xef62
leaq -0x1a8(%rbp), %r15
movq -0x48(%rbp), %r8
jmp 0x12b40
leaq -0x1c0(%rbp), %r13
movq -0x60(%rbp), %r12
movq (%r12), %r12
testq %r12, %r12
je 0x12d6b
leaq 0x8(%r12), %rbx
leaq -0xd0(%rbp), %rdi
movq %rbx, %rsi
callq 0x35250
testq %rax, %rax
jne 0x12caf
movq -0x30(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x12caf
movq 0x48(%r12), %rsi
movq -0x38(%rbp), %rdi
callq 0x11bfa
movq %rax, -0x48(%rbp)
movq %rdx, -0x68(%rbp)
leaq -0x88(%rbp), %r15
movq %r15, %rdi
leaq 0x26a66(%rip), %rsi     # 0x3976d
movq %rbx, %rdx
callq 0xbd74
movq %r13, %rdi
movq %r15, %rsi
leaq 0x27144(%rip), %rdx     # 0x39e60
callq 0xbd4b
movq %r15, %rdi
callq 0x9140
movq %r15, %rdi
leaq 0x26ca7(%rip), %rsi     # 0x399da
leaq -0x1e8(%rbp), %rdx
callq 0xff44
movq -0x30(%rbp), %rdi
movq -0x48(%rbp), %rsi
movq -0x68(%rbp), %rdx
movq %r13, %rcx
movq %r15, %r8
callq 0x11e10
movq %r15, %rdi
callq 0x9140
movq %r13, %rdi
callq 0x9140
jmp 0x12caf
testb $0x1, %r14b
je 0x13125
leaq 0x48bc4(%rip), %r14     # 0x5b940
leaq -0x1c0(%rbp), %rbx
movq -0x60(%rbp), %r15
movq (%r15), %r15
testq %r15, %r15
je 0x12dc1
leaq 0x118(%r15), %rax
movq %r14, -0x1c0(%rbp)
movq -0x58(%rbp), %rcx
movq %rcx, -0x1b8(%rbp)
movq %rax, -0x1b0(%rbp)
movq 0x1e8(%r15), %rdi
movq (%rdi), %rax
movq %rbx, %rsi
callq *0x18(%rax)
jmp 0x12d87
movb $0x1, %bl
leaq -0x1c0(%rbp), %r13
movq -0x60(%rbp), %r14
movq (%r14), %r14
testq %r14, %r14
je 0x12ec0
leaq 0x8(%r14), %r12
movq %r13, %rdi
movq %r12, %rsi
callq 0x2e0b6
movq 0x1e8(%r14), %rdi
movq (%rdi), %rax
movq %r13, %r15
movq %r13, %rsi
callq *0x18(%rax)
movq -0x1b8(%rbp), %rsi
testq %rsi, %rsi
je 0x12eb0
movq -0x30(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x12eae
movq -0x38(%rbp), %rdi
callq 0x11bfa
movq %rax, -0x48(%rbp)
movq %rdx, -0x68(%rbp)
leaq -0x1e8(%rbp), %rbx
movq %rbx, %rdi
leaq 0x26930(%rip), %rsi     # 0x3976d
movq %r12, %rdx
callq 0xbd74
leaq -0x88(%rbp), %rdi
movq %rbx, %rsi
leaq 0x2701f(%rip), %rdx     # 0x39e75
callq 0xbd4b
movq %rbx, %r12
leaq -0x228(%rbp), %r13
movq %r13, %rdi
leaq 0x26b6b(%rip), %rsi     # 0x399da
leaq -0x39(%rbp), %rdx
callq 0xff44
movq -0x30(%rbp), %rdi
movq -0x48(%rbp), %rsi
movq -0x68(%rbp), %rdx
leaq -0x88(%rbp), %rbx
movq %rbx, %rcx
movq %r13, %r8
callq 0x11e10
movq %r13, %rdi
callq 0x9140
movq %rbx, %rdi
callq 0x9140
movq %r12, %rdi
callq 0x9140
xorl %ebx, %ebx
movq %r15, %r13
movq %r15, %rdi
callq 0xe6c6
jmp 0x12dce
testb $0x1, %bl
je 0x13125
leaq -0x348(%rbp), %rsi
movq -0xe0(%rbp), %rdi
movq -0xd8(%rbp), %rdx
movq -0x30(%rbp), %rcx
movq -0x38(%rbp), %r8
callq 0x2e104
testb %al, %al
jne 0x13125
leaq 0x26fa6(%rip), %rsi     # 0x39ea0
leaq -0x1c0(%rbp), %rdi
leaq -0x88(%rbp), %rdx
callq 0xff44
leaq -0x1c0(%rbp), %rsi
movq -0x58(%rbp), %rdi
callq 0x3594a
movq %rax, %rbx
leaq -0x1c0(%rbp), %rdi
callq 0x9140
testq %rbx, %rbx
je 0x13054
leaq -0x80(%rbp), %r15
leaq -0x1b8(%rbp), %rbx
leaq -0x1c0(%rbp), %r12
leaq -0x88(%rbp), %r13
movq -0x60(%rbp), %rax
movq (%rax), %rax
testq %rax, %rax
je 0x12fa5
movq %rax, -0x60(%rbp)
leaq 0x28(%rax), %r14
movq %r12, %rdi
movq %r14, %rsi
callq 0x101ac
movq -0x1c0(%rbp), %rdi
callq 0x103d4
testb %al, %al
je 0x12f9b
movq %r13, %rdi
movq %r12, %rsi
callq 0x1e71b
movq %r14, %rdi
movq %r13, %rsi
callq 0x1d86c
movq %r15, %rdi
callq 0x1106c
movq %rbx, %rdi
callq 0x1106c
jmp 0x12f4e
leaq 0x26ef4(%rip), %rsi     # 0x39ea0
leaq -0x1c0(%rbp), %rdi
leaq -0x88(%rbp), %rdx
callq 0xff44
leaq -0x1c0(%rbp), %rsi
movq -0x58(%rbp), %rdi
callq 0x1f982
movq %rax, %rbx
leaq -0x1c0(%rbp), %rdi
callq 0x9140
leaq -0x88(%rbp), %r14
movq %r14, %rdi
movq %rbx, %rsi
callq 0x101ac
leaq -0x1c0(%rbp), %rdi
movq %r14, %rsi
callq 0x2e2b8
movq -0xd8(%rbp), %rax
leaq 0xc8(%rax), %rdi
leaq -0x1c0(%rbp), %rsi
callq 0x24c72
leaq -0x1b8(%rbp), %rdi
callq 0x1106c
leaq -0x80(%rbp), %rdi
callq 0x1106c
leaq -0x348(%rbp), %rsi
movq -0xe0(%rbp), %rdi
movq %rbx, %rdx
movq -0x30(%rbp), %rcx
movq -0x38(%rbp), %r8
callq 0x2e104
testb %al, %al
jne 0x13125
leaq 0x26e51(%rip), %rsi     # 0x39eac
leaq -0x1c0(%rbp), %rdi
leaq -0x88(%rbp), %rdx
callq 0xff44
leaq -0x1c0(%rbp), %rsi
movq -0x58(%rbp), %rdi
callq 0x3594a
movq %rax, %rbx
leaq -0x1c0(%rbp), %rdi
callq 0x9140
testq %rbx, %rbx
je 0x13155
leaq 0x26e0f(%rip), %rsi     # 0x39eac
leaq -0x1c0(%rbp), %rdi
leaq -0x88(%rbp), %rdx
callq 0xff44
leaq -0x1c0(%rbp), %rsi
movq -0x58(%rbp), %rdi
callq 0x1f982
movq %rax, %rbx
leaq -0x1c0(%rbp), %rdi
callq 0x9140
leaq -0x1c0(%rbp), %r14
movq %r14, %rdi
movq %rbx, %rsi
callq 0x101ac
movq -0xd8(%rbp), %rdi
addq $0xd8, %rdi
movq %r14, %rsi
callq 0x24c72
leaq -0x1b8(%rbp), %rdi
callq 0x1106c
leaq -0x348(%rbp), %rsi
movq -0xe0(%rbp), %rdi
movq %rbx, %rdx
movq -0x30(%rbp), %rcx
movq -0x38(%rbp), %r8
callq 0x2e104
testb %al, %al
je 0x13155
xorps %xmm0, %xmm0
movq -0x50(%rbp), %rcx
movups %xmm0, (%rcx)
leaq 0x20(%rcx), %rax
movq %rax, 0x10(%rcx)
andq $0x0, 0x18(%rcx)
xorl %eax, %eax
movb %al, 0x20(%rcx)
movb %al, 0x30(%rcx)
leaq -0xd0(%rbp), %rdi
callq 0x2599c
jmp 0x12a3d
leaq -0x2d8(%rbp), %rax
movq 0x10(%rax), %r14
leaq -0x1c0(%rbp), %r12
cmpq %rax, %r14
je 0x132b0
leaq 0x20(%r14), %rsi
movq -0x58(%rbp), %rdi
callq 0x25a7a
movq %rax, %r15
movq 0x40(%r14), %rbx
movq %r14, -0x68(%rbp)
movq 0x48(%r14), %r13
addq $0x198, %rax            # imm = 0x198
movq %rax, -0x48(%rbp)
leaq -0x208(%rbp), %r14
cmpq %r13, %rbx
je 0x13268
movq %rbx, %rdi
leaq 0x26898(%rip), %rsi     # 0x39a48
callq 0x243eb
testb %al, %al
je 0x1320f
leaq 0x20(%rbx), %rsi
movq %r12, %rdi
callq 0x2e327
movq %r14, %rdi
movq -0x30(%rbp), %rsi
callq 0xbff0
movq -0xe0(%rbp), %rdi
movq %r15, %rsi
movq %r12, %rdx
movq -0x38(%rbp), %rcx
movq %r14, %r8
callq 0x2e358
movq %r14, %rdi
movl %eax, %r14d
callq 0x3209c
testb %r14b, %r14b
je 0x13280
movq %r12, %rdi
callq 0x2d34e
leaq -0x208(%rbp), %r14
jmp 0x1325f
movq %rbx, %rdi
leaq 0x2686a(%rip), %rsi     # 0x39a83
callq 0x243eb
testb %al, %al
je 0x13244
leaq 0x20(%rbx), %rsi
movq %r12, %rdi
callq 0x24286
movq -0x48(%rbp), %rdi
movq %r12, %rsi
callq 0x9310
movq %r12, %rdi
callq 0x9140
jmp 0x1325f
movq %rbx, %rdi
leaq 0x26843(%rip), %rsi     # 0x39a91
callq 0x243eb
testb %al, %al
je 0x1325f
movb $0x1, 0x1b8(%r15)
addq $0x40, %rbx
jmp 0x1319d
movq -0x68(%rbp), %rdi
callq 0x9200
movq %rax, %r14
leaq -0x2d8(%rbp), %rax
jmp 0x13167
xorps %xmm0, %xmm0
movq -0x50(%rbp), %rcx
movups %xmm0, (%rcx)
leaq 0x20(%rcx), %rax
movq %rax, 0x10(%rcx)
andq $0x0, 0x18(%rcx)
xorl %eax, %eax
movb %al, 0x20(%rcx)
movb %al, 0x30(%rcx)
leaq -0x1c0(%rbp), %rdi
callq 0x2d34e
jmp 0x13144
leaq -0x348(%rbp), %rsi
movq -0x50(%rbp), %rbx
movq %rbx, %rdi
callq 0x30342
leaq 0x10(%rbx), %rdi
leaq -0x100(%rbp), %rsi
callq 0x9360
movb -0x250(%rbp), %al
movb %al, 0x30(%rbx)
jmp 0x13144
movq %rax, %r15
addq $0x8, %rbx
jmp 0x13426
jmp 0x13654
jmp 0x134ad
jmp 0x13654
jmp 0x13654
movq %rax, %r15
leaq -0x80(%rbp), %rdi
jmp 0x13429
jmp 0x134ad
jmp 0x13654
jmp 0x134ad
jmp 0x13654
jmp 0x134ad
jmp 0x13654
jmp 0x13654
jmp 0x13654
jmp 0x13345
jmp 0x13356
jmp 0x13367
jmp 0x1344f
jmp 0x1344f
movq %rax, %r15
leaq -0x88(%rbp), %rdi
callq 0x9140
jmp 0x13359
movq %rax, %r15
leaq -0x1c0(%rbp), %rdi
callq 0x9140
jmp 0x1336a
movq %rax, %r15
leaq -0xd0(%rbp), %rdi
callq 0x9140
jmp 0x136fe
jmp 0x1344f
jmp 0x1344f
jmp 0x13654
movq %rax, %r15
pushq $0x60
popq %rbx
leaq (%rbx,%rbp), %rdi
addq $-0x1c0, %rdi           # imm = 0xFE40
callq 0x9140
addq $-0x20, %rbx
cmpq $-0x20, %rbx
jne 0x13390
jmp 0x136fe
jmp 0x13401
jmp 0x1344f
jmp 0x13423
movq %rdx, %rbx
movq %rax, %r15
leaq -0xd0(%rbp), %rdi
callq 0x9140
jmp 0x13439
jmp 0x13433
jmp 0x13433
movq %rax, %r15
leaq -0x208(%rbp), %rdi
callq 0x3209c
jmp 0x133e9
jmp 0x13654
movq %rax, %r15
leaq -0x1c0(%rbp), %rdi
callq 0x2d34e
jmp 0x136f2
movq %r15, -0x1c8(%rbp)
movq %rax, %r15
movq -0x1c8(%rbp), %r14
addq $-0x20, %r14
movq %r14, %rdi
callq 0x9140
cmpq %rbx, %r14
jne 0x1340b
jmp 0x136fe
jmp 0x1344f
movq %rax, %r15
movq %rbx, %rdi
callq 0x1106c
jmp 0x136f2
movq %rdx, %rbx
movq %rax, %r15
leaq -0x1b0(%rbp), %rdi
callq 0x108f6
jmp 0x13554
jmp 0x136a9
movq %rax, %r15
jmp 0x136fe
movq %rax, %r15
jmp 0x13475
movq %rax, %r15
jmp 0x13481
jmp 0x13524
movq %rax, %r15
leaq -0x228(%rbp), %rdi
callq 0x9140
leaq -0x88(%rbp), %rdi
callq 0x9140
leaq -0x1e8(%rbp), %rdi
callq 0x9140
jmp 0x13527
jmp 0x13524
jmp 0x13654
movq %rax, %r15
leaq -0x88(%rbp), %rdi
callq 0x9140
jmp 0x134b0
movq %rax, %r15
leaq -0x1c0(%rbp), %rdi
jmp 0x134c3
movq %rax, %r15
leaq -0x88(%rbp), %rdi
callq 0x9140
jmp 0x136f2
jmp 0x13654
movq %rdx, %rbx
movq %rax, %r15
leaq -0x248(%rbp), %rdi
callq 0x3209c
jmp 0x13548
movq %rdx, %rbx
movq %rax, %r15
jmp 0x13554
jmp 0x13510
jmp 0x136a9
jmp 0x136a9
movq %rax, %r15
leaq -0xd0(%rbp), %rdi
callq 0xbb2a
jmp 0x13513
jmp 0x136a9
movq %rax, %r15
leaq -0x1c0(%rbp), %rdi
jmp 0x13705
jmp 0x136a9
movq %rax, %r15
leaq -0x1c0(%rbp), %rdi
callq 0xe6c6
jmp 0x136f2
jmp 0x13654
jmp 0x13654
movq %rdx, %rbx
movq %rax, %r15
leaq -0xd0(%rbp), %rdi
callq 0x9140
leaq -0x100(%rbp), %rdi
callq 0x1113a
cmpl $0x1, %ebx
jne 0x1370a
movq %r15, %rdi
callq 0x9110
movq -0x30(%rbp), %rcx
cmpq $0x0, 0x10(%rcx)
je 0x135f2
movq 0x10(%rax), %rbx
movq 0x18(%rax), %r15
movq (%rax), %rcx
movq %rax, %rdi
callq *0x10(%rcx)
leaq -0x1c0(%rbp), %rdi
leaq -0x100(%rbp), %rdx
movq %rax, %rsi
callq 0xff44
leaq 0x26430(%rip), %rsi     # 0x399da
leaq -0xd0(%rbp), %rdi
leaq -0x88(%rbp), %rdx
callq 0xff44
leaq -0x1c0(%rbp), %rcx
leaq -0xd0(%rbp), %r8
movq -0x30(%rbp), %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x11e10
leaq -0xd0(%rbp), %rdi
callq 0x9140
leaq -0x1c0(%rbp), %rdi
callq 0x9140
xorps %xmm0, %xmm0
movq -0x50(%rbp), %rbx
movups %xmm0, (%rbx)
leaq 0x20(%rbx), %rax
movq %rax, 0x10(%rbx)
andq $0x0, 0x18(%rbx)
xorl %eax, %eax
movb %al, 0x20(%rbx)
movb %al, 0x30(%rbx)
callq 0x9410
jmp 0x12a4d
movq %rax, %r15
leaq -0xd0(%rbp), %rdi
callq 0x9140
jmp 0x1362f
movq %rax, %r15
leaq -0x1c0(%rbp), %rdi
callq 0x9140
jmp 0x13640
movq %rax, %r15
callq 0x9410
jmp 0x1370a
movq %rax, %rdi
callq 0xd6c3
jmp 0x136a9
movq %rax, %r15
jmp 0x136f2
jmp 0x136b3
jmp 0x136e3
jmp 0x136a9
jmp 0x13679
jmp 0x136a9
jmp 0x1368c
jmp 0x13691
jmp 0x136a9
jmp 0x13679
jmp 0x136a9
jmp 0x1368c
jmp 0x13691
jmp 0x136a9
movq %rax, %r15
leaq -0x100(%rbp), %rdi
callq 0x9140
jmp 0x13694
jmp 0x136a9
movq %rax, %r15
jmp 0x136a0
movq %rax, %r15
leaq -0x1c0(%rbp), %rdi
callq 0x9140
leaq -0xd0(%rbp), %rdi
jmp 0x13705
movq %rax, %r15
jmp 0x1370a
movq %rax, %r15
jmp 0x136c2
movq %rax, %r15
leaq -0xd0(%rbp), %rdi
callq 0x9140
leaq -0x1c0(%rbp), %rdi
callq 0x2e096
jmp 0x1370a
movq %rax, %r15
leaq -0x88(%rbp), %rdi
callq 0x9140
jmp 0x136e6
jmp 0x136e3
movq %rax, %r15
leaq -0x1c0(%rbp), %rdi
callq 0xef62
leaq -0xd0(%rbp), %rdi
callq 0x2599c
leaq -0x100(%rbp), %rdi
callq 0x9140
leaq -0x348(%rbp), %rdi
callq 0x2e800
movq %r15, %rdi
callq 0x9430