// File: nvanbenschoten[P]total-order-multicast/include/args.h
// Function: _gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const*, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>> args::ArgumentParser::ParseArgs<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const*, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>>>(__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const*, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>>, __gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const*, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>>)
It ParseArgs(It begin, It end) {
    // Reset all Matched statuses and errors
    Reset();
    bool terminated = false;

    // Check all arg chunks
    for (auto it = begin; it != end; ++it) {
      const auto &chunk = *it;

      if (!terminated && chunk == terminator) {
        terminated = true;
        // If a long arg was found
      } else if (!terminated && chunk.find(longprefix) == 0 &&
                 chunk.size() > longprefix.size()) {
        const auto argchunk = chunk.substr(longprefix.size());
        // Try to separate it, in case of a separator:
        const auto separator = longseparator.empty()
                                   ? argchunk.npos
                                   : argchunk.find(longseparator);
        // If the separator is in the argument, separate it.
        const auto arg =
            (separator != argchunk.npos ? std::string(argchunk, 0, separator)
                                        : argchunk);

        if (auto base = Match(arg)) {
          if (auto argbase = dynamic_cast<ValueFlagBase *>(base)) {
            if (separator != argchunk.npos) {
              if (allowJoinedLongValue) {
                argbase->ParseValue(
                    argchunk.substr(separator + longseparator.size()));
              } else {
#ifdef ARGS_NOEXCEPT
                error = Error::Parse;
                return it;
#else
                std::ostringstream problem;
                problem << "Flag '" << arg << "' was passed a joined argument, "
                                              "but these are disallowed";
                throw ParseError(problem.str());
#endif
              }
            } else {
              ++it;
              if (it == end) {
#ifdef ARGS_NOEXCEPT
                error = Error::Parse;
                return it;
#else
                std::ostringstream problem;
                problem << "Flag '" << arg
                        << "' requires an argument but received none";
                throw ParseError(problem.str());
#endif
              }

              if (allowSeparateLongValue) {
                argbase->ParseValue(*it);
              } else {
#ifdef ARGS_NOEXCEPT
                error = Error::Parse;
                return it;
#else
                std::ostringstream problem;
                problem << "Flag '" << arg << "' was passed a separate "
                                              "argument, but these are "
                                              "disallowed";
                throw ParseError(problem.str());
#endif
              }
            }
          } else if (separator != argchunk.npos) {
#ifdef ARGS_NOEXCEPT
            error = Error::Parse;
            return it;
#else
            std::ostringstream problem;
            problem << "Passed an argument into a non-argument flag: " << chunk;
            throw ParseError(problem.str());
#endif
          }

          if (base->KickOut()) {
            return ++it;
          }
        } else {
#ifdef ARGS_NOEXCEPT
          error = Error::Parse;
          return it;
#else
          std::ostringstream problem;
          problem << "Flag could not be matched: " << arg;
          throw ParseError(problem.str());
#endif
        }
        // Check short args
      } else if (!terminated && chunk.find(shortprefix) == 0 &&
                 chunk.size() > shortprefix.size()) {
        const auto argchunk = chunk.substr(shortprefix.size());
        for (auto argit = std::begin(argchunk); argit != std::end(argchunk);
             ++argit) {
          const auto arg = *argit;

          if (auto base = Match(arg)) {
            if (auto argbase = dynamic_cast<ValueFlagBase *>(base)) {
              const std::string value(++argit, std::end(argchunk));
              if (!value.empty()) {
                if (allowJoinedShortValue) {
                  argbase->ParseValue(value);
                } else {
#ifdef ARGS_NOEXCEPT
                  error = Error::Parse;
                  return it;
#else
                  std::ostringstream problem;
                  problem << "Flag '" << arg << "' was passed a joined "
                                                "argument, but these are "
                                                "disallowed";
                  throw ParseError(problem.str());
#endif
                }
              } else {
                ++it;
                if (it == end) {
#ifdef ARGS_NOEXCEPT
                  error = Error::Parse;
                  return it;
#else
                  std::ostringstream problem;
                  problem << "Flag '" << arg
                          << "' requires an argument but received none";
                  throw ParseError(problem.str());
#endif
                }

                if (allowSeparateShortValue) {
                  argbase->ParseValue(*it);
                } else {
#ifdef ARGS_NOEXCEPT
                  error = Error::Parse;
                  return it;
#else
                  std::ostringstream problem;
                  problem << "Flag '" << arg << "' was passed a separate "
                                                "argument, but these are "
                                                "disallowed";
                  throw ParseError(problem.str());
#endif
                }
              }
              // Because this argchunk is done regardless
              break;
            }

            if (base->KickOut()) {
              return ++it;
            }
          } else {
#ifdef ARGS_NOEXCEPT
            error = Error::Parse;
            return it;
#else
            std::ostringstream problem;
            problem << "Flag could not be matched: '" << arg << "'";
            throw ParseError(problem.str());
#endif
          }
        }
      } else {
        auto pos = GetNextPositional();
        if (pos) {
          pos->ParseValue(chunk);

          if (pos->KickOut()) {
            return ++it;
          }
        } else {
#ifdef ARGS_NOEXCEPT
          error = Error::Parse;
          return it;
#else
          std::ostringstream problem;
          problem << "Passed in argument, but no positional arguments were "
                     "ready to receive it: "
                  << chunk;
          throw ParseError(problem.str());
#endif
        }
      }
    }
    if (!Matched()) {
#ifdef ARGS_NOEXCEPT
      error = Error::Validation;
#else
      std::ostringstream problem;
      problem << "Group validation failed somewhere!";
      throw ValidationError(problem.str());
#endif
    }
    return end;
  }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x14c0, %rsp           # imm = 0x14C0
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rdi, -0x20(%rbp)
movq -0x20(%rbp), %rdi
movq %rdi, -0x1330(%rbp)
movq (%rdi), %rax
callq *0x20(%rax)
movb $0x0, -0x21(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x30(%rbp)
leaq -0x30(%rbp), %rdi
leaq -0x18(%rbp), %rsi
callq 0x1b3b0
testb $0x1, %al
jne 0x262aa
jmp 0x27661
leaq -0x30(%rbp), %rdi
callq 0x1b490
movq %rax, -0x38(%rbp)
testb $0x1, -0x21(%rbp)
jne 0x262e3
movq -0x1330(%rbp), %rsi
movq -0x38(%rbp), %rdi
addq $0x148, %rsi            # imm = 0x148
callq 0xe670
testb $0x1, %al
jne 0x262da
jmp 0x262e3
movb $0x1, -0x21(%rbp)
jmp 0x27651
testb $0x1, -0x21(%rbp)
jne 0x26c34
movq -0x1330(%rbp), %rsi
movq -0x38(%rbp), %rdi
addq $0xe8, %rsi
xorl %eax, %eax
movl %eax, %edx
callq 0x68b0
cmpq $0x0, %rax
jne 0x26c34
movq -0x38(%rbp), %rdi
callq 0x62d0
movq -0x1330(%rbp), %rdi
movq %rax, -0x1338(%rbp)
addq $0xe8, %rdi
callq 0x62d0
movq %rax, %rcx
movq -0x1338(%rbp), %rax
cmpq %rcx, %rax
jbe 0x26c34
movq -0x1330(%rbp), %rdi
movq -0x38(%rbp), %rax
movq %rax, -0x1340(%rbp)
addq $0xe8, %rdi
callq 0x62d0
movq -0x1340(%rbp), %rsi
movq %rax, %rdx
leaq -0x58(%rbp), %rdi
movq $-0x1, %rcx
callq 0x6450
movq -0x1330(%rbp), %rdi
addq $0x128, %rdi            # imm = 0x128
callq 0x6700
testb $0x1, %al
jne 0x26399
jmp 0x263a9
movq $-0x1, %rax
movq %rax, -0x1348(%rbp)
jmp 0x263cb
movq -0x1330(%rbp), %rsi
addq $0x128, %rsi            # imm = 0x128
leaq -0x58(%rbp), %rdi
xorl %eax, %eax
movl %eax, %edx
callq 0x68b0
movq %rax, -0x1348(%rbp)
movq -0x1348(%rbp), %rax
movq %rax, -0x60(%rbp)
cmpq $-0x1, -0x60(%rbp)
je 0x263f6
movq -0x60(%rbp), %rcx
xorl %eax, %eax
movl %eax, %edx
leaq -0x80(%rbp), %rdi
leaq -0x58(%rbp), %rsi
callq 0x65f0
jmp 0x263f4
jmp 0x26407
leaq -0x80(%rbp), %rdi
leaq -0x58(%rbp), %rsi
callq 0x61c0
jmp 0x26405
jmp 0x26407
movq -0x1330(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0x277a0
movq %rax, -0x1350(%rbp)
jmp 0x26420
movq -0x1350(%rbp), %rax
movq %rax, -0x98(%rbp)
cmpq $0x0, -0x98(%rbp)
je 0x26ada
movq -0x98(%rbp), %rax
movq %rax, -0x1358(%rbp)
cmpq $0x0, %rax
je 0x264a5
movq -0x1358(%rbp), %rdi
leaq 0x1f24a(%rip), %rsi     # 0x456a8
leaq 0x1f5fb(%rip), %rdx     # 0x45a60
xorl %eax, %eax
movl %eax, %ecx
callq 0x64d0
movq %rax, -0x1360(%rbp)
jmp 0x264b0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x26c26
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x26c1d
xorl %eax, %eax
movq %rax, -0x1360(%rbp)
jmp 0x264b0
movq -0x1360(%rbp), %rax
movq %rax, -0xa0(%rbp)
cmpq $0x0, -0xa0(%rbp)
je 0x26983
cmpq $-0x1, -0x60(%rbp)
je 0x266bc
movq -0x1330(%rbp), %rax
testb $0x1, 0x169(%rax)
je 0x26587
movq -0x1330(%rbp), %rdi
movq -0xa0(%rbp), %rax
movq %rax, -0x1370(%rbp)
movq -0x60(%rbp), %rax
movq %rax, -0x1368(%rbp)
addq $0x128, %rdi            # imm = 0x128
callq 0x62d0
movq -0x1368(%rbp), %rdx
addq %rax, %rdx
leaq -0xc0(%rbp), %rdi
leaq -0x58(%rbp), %rsi
movq $-0x1, %rcx
callq 0x6450
jmp 0x2653a
movq -0x1370(%rbp), %rdi
movq (%rdi), %rax
movq 0x40(%rax), %rax
leaq -0xc0(%rbp), %rsi
callq *%rax
jmp 0x26553
leaq -0xc0(%rbp), %rdi
callq 0x68c8
jmp 0x266b7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0xc0(%rbp), %rdi
callq 0x68c8
jmp 0x26c1d
leaq -0x238(%rbp), %rdi
callq 0x65e0
jmp 0x26595
leaq 0x977d(%rip), %rsi      # 0x2fd19
leaq -0x238(%rbp), %rdi
callq 0x6410
movq %rax, -0x1378(%rbp)
jmp 0x265b1
movq -0x1378(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0x63d0
movq %rax, -0x1380(%rbp)
jmp 0x265ca
movq -0x1380(%rbp), %rdi
leaq 0x978e(%rip), %rsi      # 0x2fd66
callq 0x6410
jmp 0x265df
movb $0x1, -0x259(%rbp)
movl $0x10, %edi
callq 0x6230
movq %rax, -0x1388(%rbp)
leaq -0x258(%rbp), %rdi
leaq -0x238(%rbp), %rsi
callq 0x6440
jmp 0x2660c
movq -0x1388(%rbp), %rdi
leaq -0x258(%rbp), %rsi
callq 0x27900
jmp 0x26621
movq -0x1388(%rbp), %rdi
movb $0x0, -0x259(%rbp)
leaq 0x1f382(%rip), %rsi     # 0x459b8
leaq -0x132d(%rip), %rdx     # 0x25310
callq 0x6770
jmp 0x27794
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x266a6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x2668d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x258(%rbp), %rdi
callq 0x68c8
testb $0x1, -0x259(%rbp)
jne 0x26698
jmp 0x266a4
movq -0x1388(%rbp), %rdi
callq 0x6300
jmp 0x266a6
leaq -0x238(%rbp), %rdi
callq 0x60f0
jmp 0x26c1d
jmp 0x2697e
leaq -0x30(%rbp), %rdi
callq 0x1b4b0
leaq -0x30(%rbp), %rdi
leaq -0x18(%rbp), %rsi
callq 0x1ba30
testb $0x1, %al
jne 0x266db
jmp 0x2680b
leaq -0x3d8(%rbp), %rdi
callq 0x65e0
jmp 0x266e9
leaq 0x9629(%rip), %rsi      # 0x2fd19
leaq -0x3d8(%rbp), %rdi
callq 0x6410
movq %rax, -0x1390(%rbp)
jmp 0x26705
movq -0x1390(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0x63d0
movq %rax, -0x1398(%rbp)
jmp 0x2671e
movq -0x1398(%rbp), %rdi
leaq 0x9673(%rip), %rsi      # 0x2fd9f
callq 0x6410
jmp 0x26733
movb $0x1, -0x3f9(%rbp)
movl $0x10, %edi
callq 0x6230
movq %rax, -0x13a0(%rbp)
leaq -0x3f8(%rbp), %rdi
leaq -0x3d8(%rbp), %rsi
callq 0x6440
jmp 0x26760
movq -0x13a0(%rbp), %rdi
leaq -0x3f8(%rbp), %rsi
callq 0x27900
jmp 0x26775
movq -0x13a0(%rbp), %rdi
movb $0x0, -0x3f9(%rbp)
leaq 0x1f22e(%rip), %rsi     # 0x459b8
leaq -0x1481(%rip), %rdx     # 0x25310
callq 0x6770
jmp 0x27794
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x267fa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x267e1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x3f8(%rbp), %rdi
callq 0x68c8
testb $0x1, -0x3f9(%rbp)
jne 0x267ec
jmp 0x267f8
movq -0x13a0(%rbp), %rdi
callq 0x6300
jmp 0x267fa
leaq -0x3d8(%rbp), %rdi
callq 0x60f0
jmp 0x26c1d
movq -0x1330(%rbp), %rax
testb $0x1, 0x16b(%rax)
je 0x2684c
movq -0xa0(%rbp), %rax
movq %rax, -0x13a8(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x1b490
movq -0x13a8(%rbp), %rdi
movq %rax, %rsi
movq (%rdi), %rax
movq 0x40(%rax), %rax
callq *%rax
jmp 0x26847
jmp 0x2697c
leaq -0x578(%rbp), %rdi
callq 0x65e0
jmp 0x2685a
leaq 0x94b8(%rip), %rsi      # 0x2fd19
leaq -0x578(%rbp), %rdi
callq 0x6410
movq %rax, -0x13b0(%rbp)
jmp 0x26876
movq -0x13b0(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0x63d0
movq %rax, -0x13b8(%rbp)
jmp 0x2688f
movq -0x13b8(%rbp), %rdi
leaq 0x952b(%rip), %rsi      # 0x2fdc8
callq 0x6410
jmp 0x268a4
movb $0x1, -0x599(%rbp)
movl $0x10, %edi
callq 0x6230
movq %rax, -0x13c0(%rbp)
leaq -0x598(%rbp), %rdi
leaq -0x578(%rbp), %rsi
callq 0x6440
jmp 0x268d1
movq -0x13c0(%rbp), %rdi
leaq -0x598(%rbp), %rsi
callq 0x27900
jmp 0x268e6
movq -0x13c0(%rbp), %rdi
movb $0x0, -0x599(%rbp)
leaq 0x1f0bd(%rip), %rsi     # 0x459b8
leaq -0x15f2(%rip), %rdx     # 0x25310
callq 0x6770
jmp 0x27794
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x2696b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x26952
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x598(%rbp), %rdi
callq 0x68c8
testb $0x1, -0x599(%rbp)
jne 0x2695d
jmp 0x26969
movq -0x13c0(%rbp), %rdi
callq 0x6300
jmp 0x2696b
leaq -0x578(%rbp), %rdi
callq 0x60f0
jmp 0x26c1d
jmp 0x2697e
jmp 0x26aa4
cmpq $-0x1, -0x60(%rbp)
je 0x26aa2
leaq -0x718(%rbp), %rdi
callq 0x65e0
jmp 0x2699c
leaq 0x9460(%rip), %rsi      # 0x2fe03
leaq -0x718(%rbp), %rdi
callq 0x6410
movq %rax, -0x13c8(%rbp)
jmp 0x269b8
movq -0x13c8(%rbp), %rdi
movq -0x38(%rbp), %rsi
callq 0x63d0
jmp 0x269ca
movb $0x1, -0x739(%rbp)
movl $0x10, %edi
callq 0x6230
movq %rax, -0x13d0(%rbp)
leaq -0x738(%rbp), %rdi
leaq -0x718(%rbp), %rsi
callq 0x6440
jmp 0x269f7
movq -0x13d0(%rbp), %rdi
leaq -0x738(%rbp), %rsi
callq 0x27900
jmp 0x26a0c
movq -0x13d0(%rbp), %rdi
movb $0x0, -0x739(%rbp)
leaq 0x1ef97(%rip), %rsi     # 0x459b8
leaq -0x1718(%rip), %rdx     # 0x25310
callq 0x6770
jmp 0x27794
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x26a91
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x26a78
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x738(%rbp), %rdi
callq 0x68c8
testb $0x1, -0x739(%rbp)
jne 0x26a83
jmp 0x26a8f
movq -0x13d0(%rbp), %rdi
callq 0x6300
jmp 0x26a91
leaq -0x718(%rbp), %rdi
callq 0x60f0
jmp 0x26c1d
jmp 0x26aa4
movq -0x98(%rbp), %rdi
callq 0x27940
testb $0x1, %al
jne 0x26ab6
jmp 0x26ad5
leaq -0x30(%rbp), %rdi
callq 0x1b4b0
movq (%rax), %rax
movq %rax, -0x8(%rbp)
movl $0x1, -0x740(%rbp)
jmp 0x26bf5
jmp 0x26beb
leaq -0x8b8(%rbp), %rdi
callq 0x65e0
jmp 0x26ae8
leaq 0x9342(%rip), %rsi      # 0x2fe31
leaq -0x8b8(%rbp), %rdi
callq 0x6410
movq %rax, -0x13d8(%rbp)
jmp 0x26b04
movq -0x13d8(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0x63d0
jmp 0x26b16
movb $0x1, -0x8d9(%rbp)
movl $0x10, %edi
callq 0x6230
movq %rax, -0x13e0(%rbp)
leaq -0x8d8(%rbp), %rdi
leaq -0x8b8(%rbp), %rsi
callq 0x6440
jmp 0x26b43
movq -0x13e0(%rbp), %rdi
leaq -0x8d8(%rbp), %rsi
callq 0x27900
jmp 0x26b58
movq -0x13e0(%rbp), %rdi
movb $0x0, -0x8d9(%rbp)
leaq 0x1ee4b(%rip), %rsi     # 0x459b8
leaq -0x1864(%rip), %rdx     # 0x25310
callq 0x6770
jmp 0x27794
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x26bdd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x26bc4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x8d8(%rbp), %rdi
callq 0x68c8
testb $0x1, -0x8d9(%rbp)
jne 0x26bcf
jmp 0x26bdb
movq -0x13e0(%rbp), %rdi
callq 0x6300
jmp 0x26bdd
leaq -0x8b8(%rbp), %rdi
callq 0x60f0
jmp 0x26c1d
movl $0x0, -0x740(%rbp)
leaq -0x80(%rbp), %rdi
callq 0x68c8
leaq -0x58(%rbp), %rdi
callq 0x68c8
movl -0x740(%rbp), %eax
testl %eax, %eax
je 0x26c18
jmp 0x26c13
jmp 0x2777b
jmp 0x2764f
leaq -0x80(%rbp), %rdi
callq 0x68c8
leaq -0x58(%rbp), %rdi
callq 0x68c8
jmp 0x27788
testb $0x1, -0x21(%rbp)
jne 0x274d8
movq -0x1330(%rbp), %rsi
movq -0x38(%rbp), %rdi
addq $0x108, %rsi            # imm = 0x108
xorl %eax, %eax
movl %eax, %edx
callq 0x68b0
cmpq $0x0, %rax
jne 0x274d8
movq -0x38(%rbp), %rdi
callq 0x62d0
movq -0x1330(%rbp), %rdi
movq %rax, -0x13e8(%rbp)
addq $0x108, %rdi            # imm = 0x108
callq 0x62d0
movq %rax, %rcx
movq -0x13e8(%rbp), %rax
cmpq %rcx, %rax
jbe 0x274d8
movq -0x1330(%rbp), %rdi
movq -0x38(%rbp), %rax
movq %rax, -0x1400(%rbp)
addq $0x108, %rdi            # imm = 0x108
callq 0x62d0
movq -0x1400(%rbp), %rsi
movq %rax, %rdx
leaq -0x900(%rbp), %rdi
movq %rdi, -0x13f8(%rbp)
movq $-0x1, %rcx
callq 0x6450
movq -0x13f8(%rbp), %rdi
callq 0x27960
movq %rax, -0x13f0(%rbp)
jmp 0x26cf0
movq -0x13f0(%rbp), %rax
movq %rax, -0x908(%rbp)
leaq -0x900(%rbp), %rdi
callq 0x27990
movq %rax, -0x1408(%rbp)
jmp 0x26d13
movq -0x1408(%rbp), %rax
movq %rax, -0x910(%rbp)
leaq -0x908(%rbp), %rdi
leaq -0x910(%rbp), %rsi
callq 0x186e0
testb $0x1, %al
jne 0x26d3d
jmp 0x2749b
leaq -0x908(%rbp), %rdi
callq 0x18720
movq -0x1330(%rbp), %rdi
movb (%rax), %al
movb %al, -0x911(%rbp)
leaq -0x911(%rbp), %rsi
callq 0x279c0
movq %rax, -0x1410(%rbp)
jmp 0x26d6d
movq -0x1410(%rbp), %rax
movq %rax, -0x920(%rbp)
cmpq $0x0, -0x920(%rbp)
je 0x27358
movq -0x920(%rbp), %rax
movq %rax, -0x1418(%rbp)
cmpq $0x0, %rax
je 0x26ddb
movq -0x1418(%rbp), %rdi
leaq 0x1e8fd(%rip), %rsi     # 0x456a8
leaq 0x1ecae(%rip), %rdx     # 0x45a60
xorl %eax, %eax
movl %eax, %ecx
callq 0x64d0
movq %rax, -0x1420(%rbp)
jmp 0x26de6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x274c7
xorl %eax, %eax
movq %rax, -0x1420(%rbp)
jmp 0x26de6
movq -0x1420(%rbp), %rax
movq %rax, -0x928(%rbp)
cmpq $0x0, -0x928(%rbp)
je 0x27322
leaq -0x908(%rbp), %rdi
callq 0x18740
movq (%rax), %rax
movq %rax, -0x950(%rbp)
leaq -0x900(%rbp), %rdi
callq 0x27990
movq %rax, -0x1428(%rbp)
jmp 0x26e2d
movq -0x1428(%rbp), %rax
movq %rax, -0x958(%rbp)
leaq -0x959(%rbp), %rdi
movq %rdi, -0x1430(%rbp)
callq 0x67b0
movq -0x1430(%rbp), %rcx
movq -0x950(%rbp), %rsi
movq -0x958(%rbp), %rdx
leaq -0x948(%rbp), %rdi
callq 0x27b30
jmp 0x26e71
leaq -0x959(%rbp), %rdi
callq 0x6490
leaq -0x948(%rbp), %rdi
callq 0x6700
testb $0x1, %al
jne 0x27031
movq -0x1330(%rbp), %rax
testb $0x1, 0x168(%rax)
je 0x26ef9
movq -0x928(%rbp), %rdi
movq (%rdi), %rax
movq 0x40(%rax), %rax
leaq -0x948(%rbp), %rsi
callq *%rax
jmp 0x26eba
jmp 0x2702c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x959(%rbp), %rdi
callq 0x6490
jmp 0x274c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x27311
leaq -0xad8(%rbp), %rdi
callq 0x65e0
jmp 0x26f07
leaq 0x8e0b(%rip), %rsi      # 0x2fd19
leaq -0xad8(%rbp), %rdi
callq 0x6410
movq %rax, -0x1438(%rbp)
jmp 0x26f23
movq -0x1438(%rbp), %rdi
movsbl -0x911(%rbp), %esi
callq 0x6510
movq %rax, -0x1440(%rbp)
jmp 0x26f3f
movq -0x1440(%rbp), %rdi
leaq 0x8e19(%rip), %rsi      # 0x2fd66
callq 0x6410
jmp 0x26f54
movb $0x1, -0xaf9(%rbp)
movl $0x10, %edi
callq 0x6230
movq %rax, -0x1448(%rbp)
leaq -0xaf8(%rbp), %rdi
leaq -0xad8(%rbp), %rsi
callq 0x6440
jmp 0x26f81
movq -0x1448(%rbp), %rdi
leaq -0xaf8(%rbp), %rsi
callq 0x27900
jmp 0x26f96
movq -0x1448(%rbp), %rdi
movb $0x0, -0xaf9(%rbp)
leaq 0x1ea0d(%rip), %rsi     # 0x459b8
leaq -0x1ca2(%rip), %rdx     # 0x25310
callq 0x6770
jmp 0x27794
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x2701b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x27002
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0xaf8(%rbp), %rdi
callq 0x68c8
testb $0x1, -0xaf9(%rbp)
jne 0x2700d
jmp 0x27019
movq -0x1448(%rbp), %rdi
callq 0x6300
jmp 0x2701b
leaq -0xad8(%rbp), %rdi
callq 0x60f0
jmp 0x27311
jmp 0x272f6
leaq -0x30(%rbp), %rdi
callq 0x1b4b0
leaq -0x30(%rbp), %rdi
leaq -0x18(%rbp), %rsi
callq 0x1ba30
testb $0x1, %al
jne 0x27050
jmp 0x27183
leaq -0xc78(%rbp), %rdi
callq 0x65e0
jmp 0x2705e
leaq 0x8cb4(%rip), %rsi      # 0x2fd19
leaq -0xc78(%rbp), %rdi
callq 0x6410
movq %rax, -0x1450(%rbp)
jmp 0x2707a
movq -0x1450(%rbp), %rdi
movsbl -0x911(%rbp), %esi
callq 0x6510
movq %rax, -0x1458(%rbp)
jmp 0x27096
movq -0x1458(%rbp), %rdi
leaq 0x8cfb(%rip), %rsi      # 0x2fd9f
callq 0x6410
jmp 0x270ab
movb $0x1, -0xc99(%rbp)
movl $0x10, %edi
callq 0x6230
movq %rax, -0x1460(%rbp)
leaq -0xc98(%rbp), %rdi
leaq -0xc78(%rbp), %rsi
callq 0x6440
jmp 0x270d8
movq -0x1460(%rbp), %rdi
leaq -0xc98(%rbp), %rsi
callq 0x27900
jmp 0x270ed
movq -0x1460(%rbp), %rdi
movb $0x0, -0xc99(%rbp)
leaq 0x1e8b6(%rip), %rsi     # 0x459b8
leaq -0x1df9(%rip), %rdx     # 0x25310
callq 0x6770
jmp 0x27794
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x27172
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x27159
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0xc98(%rbp), %rdi
callq 0x68c8
testb $0x1, -0xc99(%rbp)
jne 0x27164
jmp 0x27170
movq -0x1460(%rbp), %rdi
callq 0x6300
jmp 0x27172
leaq -0xc78(%rbp), %rdi
callq 0x60f0
jmp 0x27311
movq -0x1330(%rbp), %rax
testb $0x1, 0x16a(%rax)
je 0x271c4
movq -0x928(%rbp), %rax
movq %rax, -0x1468(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x1b490
movq -0x1468(%rbp), %rdi
movq %rax, %rsi
movq (%rdi), %rax
movq 0x40(%rax), %rax
callq *%rax
jmp 0x271bf
jmp 0x272f4
leaq -0xe18(%rbp), %rdi
callq 0x65e0
jmp 0x271d2
leaq 0x8b40(%rip), %rsi      # 0x2fd19
leaq -0xe18(%rbp), %rdi
callq 0x6410
movq %rax, -0x1470(%rbp)
jmp 0x271ee
movq -0x1470(%rbp), %rdi
movsbl -0x911(%rbp), %esi
callq 0x6510
movq %rax, -0x1478(%rbp)
jmp 0x2720a
movq -0x1478(%rbp), %rdi
leaq 0x8bb0(%rip), %rsi      # 0x2fdc8
callq 0x6410
jmp 0x2721f
movb $0x1, -0xe39(%rbp)
movl $0x10, %edi
callq 0x6230
movq %rax, -0x1480(%rbp)
leaq -0xe38(%rbp), %rdi
leaq -0xe18(%rbp), %rsi
callq 0x6440
jmp 0x2724c
movq -0x1480(%rbp), %rdi
leaq -0xe38(%rbp), %rsi
callq 0x27900
jmp 0x27261
movq -0x1480(%rbp), %rdi
movb $0x0, -0xe39(%rbp)
leaq 0x1e742(%rip), %rsi     # 0x459b8
leaq -0x1f6d(%rip), %rdx     # 0x25310
callq 0x6770
jmp 0x27794
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x272e6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x272cd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0xe38(%rbp), %rdi
callq 0x68c8
testb $0x1, -0xe39(%rbp)
jne 0x272d8
jmp 0x272e4
movq -0x1480(%rbp), %rdi
callq 0x6300
jmp 0x272e6
leaq -0xe18(%rbp), %rdi
callq 0x60f0
jmp 0x27311
jmp 0x272f6
movl $0x5, -0x740(%rbp)
leaq -0x948(%rbp), %rdi
callq 0x68c8
jmp 0x2749b
leaq -0x948(%rbp), %rdi
callq 0x68c8
jmp 0x274c7
movq -0x920(%rbp), %rdi
callq 0x27940
testb $0x1, %al
jne 0x27334
jmp 0x27353
leaq -0x30(%rbp), %rdi
callq 0x1b4b0
movq (%rax), %rax
movq %rax, -0x8(%rbp)
movl $0x1, -0x740(%rbp)
jmp 0x274a5
jmp 0x27488
leaq -0xfb8(%rbp), %rdi
callq 0x65e0
jmp 0x27366
leaq 0x8ae0(%rip), %rsi      # 0x2fe4d
leaq -0xfb8(%rbp), %rdi
callq 0x6410
movq %rax, -0x1488(%rbp)
jmp 0x27382
movq -0x1488(%rbp), %rdi
movsbl -0x911(%rbp), %esi
callq 0x6510
movq %rax, -0x1490(%rbp)
jmp 0x2739e
movq -0x1490(%rbp), %rdi
leaq 0x8abc(%rip), %rsi      # 0x2fe68
callq 0x6410
jmp 0x273b3
movb $0x1, -0xfd9(%rbp)
movl $0x10, %edi
callq 0x6230
movq %rax, -0x1498(%rbp)
leaq -0xfd8(%rbp), %rdi
leaq -0xfb8(%rbp), %rsi
callq 0x6440
jmp 0x273e0
movq -0x1498(%rbp), %rdi
leaq -0xfd8(%rbp), %rsi
callq 0x27900
jmp 0x273f5
movq -0x1498(%rbp), %rdi
movb $0x0, -0xfd9(%rbp)
leaq 0x1e5ae(%rip), %rsi     # 0x459b8
leaq -0x2101(%rip), %rdx     # 0x25310
callq 0x6770
jmp 0x27794
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x2747a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x27461
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0xfd8(%rbp), %rdi
callq 0x68c8
testb $0x1, -0xfd9(%rbp)
jne 0x2746c
jmp 0x27478
movq -0x1498(%rbp), %rdi
callq 0x6300
jmp 0x2747a
leaq -0xfb8(%rbp), %rdi
callq 0x60f0
jmp 0x274c7
jmp 0x2748a
leaq -0x908(%rbp), %rdi
callq 0x18740
jmp 0x26cfe
movl $0x0, -0x740(%rbp)
leaq -0x900(%rbp), %rdi
callq 0x68c8
movl -0x740(%rbp), %eax
testl %eax, %eax
je 0x274c2
jmp 0x274bd
jmp 0x2777b
jmp 0x2764d
leaq -0x900(%rbp), %rdi
callq 0x68c8
jmp 0x27788
movq -0x1330(%rbp), %rdi
callq 0x27bb0
movq %rax, -0xfe8(%rbp)
cmpq $0x0, -0xfe8(%rbp)
je 0x27532
movq -0xfe8(%rbp), %rdi
movq -0x38(%rbp), %rsi
movq (%rdi), %rax
callq *0x30(%rax)
movq -0xfe8(%rbp), %rdi
callq 0x27940
testb $0x1, %al
jne 0x27518
jmp 0x2752d
leaq -0x30(%rbp), %rdi
callq 0x1b4b0
movq (%rax), %rax
movq %rax, -0x8(%rbp)
jmp 0x2777b
jmp 0x2764b
leaq -0x1160(%rbp), %rdi
movq %rdi, -0x14a8(%rbp)
callq 0x65e0
movq -0x14a8(%rbp), %rdi
leaq 0x8917(%rip), %rsi      # 0x2fe6a
callq 0x6410
movq %rax, -0x14a0(%rbp)
jmp 0x27561
movq -0x14a0(%rbp), %rdi
movq -0x38(%rbp), %rsi
callq 0x63d0
jmp 0x27573
movb $0x1, -0x1181(%rbp)
movl $0x10, %edi
callq 0x6230
movq %rax, -0x14b0(%rbp)
leaq -0x1180(%rbp), %rdi
leaq -0x1160(%rbp), %rsi
callq 0x6440
jmp 0x275a0
movq -0x14b0(%rbp), %rdi
leaq -0x1180(%rbp), %rsi
callq 0x27900
jmp 0x275b5
movq -0x14b0(%rbp), %rdi
movb $0x0, -0x1181(%rbp)
leaq 0x1e3ee(%rip), %rsi     # 0x459b8
leaq -0x22c1(%rip), %rdx     # 0x25310
callq 0x6770
jmp 0x27794
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x2763a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x27621
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x1180(%rbp), %rdi
callq 0x68c8
testb $0x1, -0x1181(%rbp)
jne 0x2762c
jmp 0x27638
movq -0x14b0(%rbp), %rdi
callq 0x6300
jmp 0x2763a
leaq -0x1160(%rbp), %rdi
callq 0x60f0
jmp 0x27788
jmp 0x2764d
jmp 0x2764f
jmp 0x27651
jmp 0x27653
leaq -0x30(%rbp), %rdi
callq 0x1b4b0
jmp 0x26294
movq -0x1330(%rbp), %rdi
movq (%rdi), %rax
callq *0x10(%rax)
testb $0x1, %al
jne 0x27773
leaq -0x1300(%rbp), %rdi
movq %rdi, -0x14b8(%rbp)
callq 0x65e0
movq -0x14b8(%rbp), %rdi
leaq 0x881e(%rip), %rsi      # 0x2feb5
callq 0x6410
jmp 0x2769e
movb $0x1, -0x1321(%rbp)
movl $0x10, %edi
callq 0x6230
movq %rax, -0x14c0(%rbp)
leaq -0x1320(%rbp), %rdi
leaq -0x1300(%rbp), %rsi
callq 0x6440
jmp 0x276cb
movq -0x14c0(%rbp), %rdi
leaq -0x1320(%rbp), %rsi
callq 0x1a080
jmp 0x276e0
movq -0x14c0(%rbp), %rdi
movb $0x0, -0x1321(%rbp)
leaq 0x1df5b(%rip), %rsi     # 0x45650
leaq -0xd63c(%rip), %rdx     # 0x1a0c0
callq 0x6770
jmp 0x27794
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x27765
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0x2774c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x1320(%rbp), %rdi
callq 0x68c8
testb $0x1, -0x1321(%rbp)
jne 0x27757
jmp 0x27763
movq -0x14c0(%rbp), %rdi
callq 0x6300
jmp 0x27765
leaq -0x1300(%rbp), %rdi
callq 0x60f0
jmp 0x27788
movq -0x18(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x14c0, %rsp           # imm = 0x14C0
popq %rbp
retq
movq -0x88(%rbp), %rdi
callq 0x67a0
nopw %cs:(%rax,%rax)
nop