// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/match/eis-encidxseq.c
// Function: gt_EISVerifyIntegrity
enum EISIntegrityCheckResults
gt_EISVerifyIntegrity(EISeq *seqIdx, const char *projectName,
                      GtUword skip,
                      GtUword tickPrint, FILE *fp, int chkFlags,
                      GtLogger *verbosity, GtError *err)
{
  FILE *bwtFP;
  GtUword pos = 0,
                length = EISLength(seqIdx);
  Suffixarray suffixArray;
  Symbol symOrig;
  unsigned symEnc;
  EISHint hint;
  GtUword rankQueryResult, rankExpect;
  const MRAEnc *alphabet;
  AlphabetRangeSize alphabetSize;
  AlphabetRangeID numRanges;
  enum EISIntegrityCheckResults retval = EIS_INTEGRITY_CHECK_NO_ERROR;
  /* two part process: enumerate all positions of original sequence
   * and verify that the query functions return correct values */
  if (streamsuffixarray(&suffixArray, SARR_BWTTAB, projectName, verbosity, err))
  {
    gt_error_set(err, "Cannot load suffix array project with"
                  " demand for BWT file\n");
    return EIS_INTEGRITY_CHECK_SA_LOAD_ERROR;
  }
  bwtFP = suffixArray.bwttabstream.fp;
  hint = newEISHint(seqIdx);
  alphabet = EISGetAlphabet(seqIdx);
  alphabetSize = gt_MRAEncGetSize(alphabet);
  numRanges = MRAEncGetNumRanges(alphabet);
  do
  {
    GtUword rankTable[alphabetSize], rangeRanks[2][alphabetSize],
      pairRangeRanks[2* alphabetSize], lastRangeRankPos = 0;
    int symRead, rt = 0;
    AlphabetRangeID lastRangeID = 0;
    unsigned rankCmpSym;
    memset(rankTable, 0, sizeof (rankTable));
    memset(rangeRanks, 0, sizeof (rangeRanks));
    if (skip > 0)
    {
      unsigned sym;
      if (skip >= length)
      {
        gt_logger_log(verbosity, "Invalid skip request: "GT_LLD","
                    " too large for sequence length: "GT_WU"",
                    (GtInt64)skip, length);
        return -1;
      }
      fseeko(bwtFP, skip, SEEK_SET);
      for (sym = 0; sym <= (unsigned) GT_MAXALPHABETCHARACTER; ++sym)
        if (MRAEncSymbolHasValidMapping(alphabet, sym))
          rankTable[sym] = EISRank(seqIdx, sym, skip, hint);
      pos = skip;
    }
    while (retval == EIS_INTEGRITY_CHECK_NO_ERROR
           && (symRead = getc(bwtFP)) != EOF)
    {
      symOrig = MRAEncMapSymbol(alphabet, symRead);
      symEnc = EISGetTransformedSym(seqIdx, pos, hint);
      if (symEnc >= alphabetSize)
        verifyIntegrityErrRet(EIS_INTEGRITY_CHECK_INVALID_SYMBOL);
      if (symOrig >= alphabetSize)
        verifyIntegrityErrRet(EIS_INTEGRITY_CHECK_BWT_READ_ERROR);
      if (symEnc != symOrig)
        verifyIntegrityErrRet(EIS_INTEGRITY_CHECK_INVALID_SYMBOL);
      ++rankTable[symOrig];
      if (chkFlags & EIS_VERIFY_EXT_RANK)
      {
        for (rankCmpSym = 0; rankCmpSym < alphabetSize; ++rankCmpSym)
          if ((rankExpect = rankTable[rankCmpSym])
              != (rankQueryResult
                  = EISSymTransformedRank(seqIdx, rankCmpSym, pos + 1, hint)))
            verifyIntegrityErrRet(EIS_INTEGRITY_CHECK_RANK_FAILED);
      }
      else
      {
        rankCmpSym = symEnc;
        if ((rankExpect = rankTable[symEnc])
            != (rankQueryResult = EISSymTransformedRank(seqIdx, symEnc,
                                                        pos + 1, hint)))
          verifyIntegrityErrRet(EIS_INTEGRITY_CHECK_RANK_FAILED);
      }
      /* do rank for full range on some occasions */
      if (!(random() % AVG_RANGE_RANK_INTERVAL))
      {
        unsigned i;
        AlphabetRangeSize rangeSize;
        AlphabetRangeID range = random() % numRanges;
        Symbol rangeBase = MRAEncGetRangeBase(alphabet, range);
        rangeSize = MRAEncGetRangeSize(alphabet, range);
        EISRangeRank(seqIdx, range, pos + 1, rangeRanks[rt], hint);
        for (i = 0; i < rangeSize; ++i)
        {
          rankCmpSym = rangeBase + i;
          if ((rankQueryResult = rangeRanks[rt][i])
              != (rankExpect = rankTable[rankCmpSym]))
            verifyIntegrityErrRet(EIS_INTEGRITY_CHECK_RANK_FAILED);
        }
        if (retval)
          break;
        if (range == lastRangeID)
        {
          EISPosPairRangeRank(seqIdx, range, lastRangeRankPos, pos + 1,
                              pairRangeRanks, hint);
          for (i = 0; i < rangeSize; ++i)
          {
            rankCmpSym = rangeBase + i;
            if ((rankQueryResult = pairRangeRanks[rangeSize + i])
                != (rankExpect = rankTable[rankCmpSym]))
              verifyIntegrityErrRet(EIS_INTEGRITY_CHECK_RANK_FAILED);
            if ((rankQueryResult = pairRangeRanks[i])
                != (rankExpect = rangeRanks[rt ^ 1][i]))
              verifyIntegrityErrRet(EIS_INTEGRITY_CHECK_RANK_FAILED);
          }
          if (retval)
            break;
        }
        lastRangeID = range;
        lastRangeRankPos = pos + 1;
        rt ^= 1;
      }
      ++pos;
      if (tickPrint && !(pos % tickPrint))
        putc('.', fp);
    }
    if (retval)
      break;
    if (tickPrint)
      putc('\n', fp);
    if (ferror(bwtFP))
      verifyIntegrityErrRet(EIS_INTEGRITY_CHECK_BWT_READ_ERROR);
  } while (0);
  deleteEISHint(seqIdx, hint);
  gt_freesuffixarray(&suffixArray);
  return retval;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x220, %rsp            # imm = 0x220
movq 0x18(%rbp), %rax
movq 0x10(%rbp), %rax
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
movq %r8, -0x30(%rbp)
movl %r9d, -0x34(%rbp)
movq $0x0, -0x48(%rbp)
movq -0x10(%rbp), %rdi
callq 0x22a1f0
movq %rax, -0x50(%rbp)
movl $0x0, -0x184(%rbp)
movq -0x18(%rbp), %rdx
movq 0x10(%rbp), %rcx
movq 0x18(%rbp), %r8
leaq -0x150(%rbp), %rdi
movl $0x8, %esi
callq 0x233500
cmpl $0x0, %eax
je 0x2296ca
movq 0x18(%rbp), %rdi
leaq 0x34c62f(%rip), %rsi    # 0x575ce6
movb $0x0, %al
callq 0xd88c0
movl $0x3, -0x4(%rbp)
jmp 0x22a1da
movq -0x88(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x10(%rbp), %rdi
callq 0x22a200
movq %rax, -0x160(%rbp)
movq -0x10(%rbp), %rdi
callq 0x22a220
movq %rax, -0x178(%rbp)
movq -0x178(%rbp), %rdi
callq 0x22aeb0
movw %ax, -0x17a(%rbp)
movq -0x178(%rbp), %rdi
callq 0x22a270
movl %eax, -0x180(%rbp)
movzwl -0x17a(%rbp), %ecx
movl %ecx, %edx
movq %rsp, %rax
movq %rax, -0x190(%rbp)
movl %ecx, %eax
leal 0xf(,%rax,8), %eax
andl $-0x10, %eax
movq %rsp, %rdi
subq %rax, %rdi
movq %rdi, -0x1f8(%rbp)
movq %rdi, %rsp
movq %rdx, -0x198(%rbp)
movzwl -0x17a(%rbp), %ecx
movl %ecx, %eax
movq %rax, -0x1e8(%rbp)
shll $0x4, %ecx
movl %ecx, %esi
movq %rsp, %rcx
subq %rsi, %rcx
movq %rcx, -0x1e0(%rbp)
movq %rcx, %rsp
movq %rax, -0x1a0(%rbp)
movzwl -0x17a(%rbp), %ecx
movl %ecx, %eax
addl %eax, %eax
shll $0x4, %ecx
movl %ecx, %esi
movq %rsp, %rcx
subq %rsi, %rcx
movq %rcx, -0x1f0(%rbp)
movq %rcx, %rsp
movq %rax, -0x1a8(%rbp)
movq $0x0, -0x1b0(%rbp)
movl $0x0, -0x1b8(%rbp)
movl $0x0, -0x1bc(%rbp)
shlq $0x3, %rdx
xorl %esi, %esi
callq 0x19360
movq -0x1e8(%rbp), %rdx
movq -0x1e0(%rbp), %rdi
shlq %rdx
shlq $0x3, %rdx
xorl %esi, %esi
callq 0x19360
cmpq $0x0, -0x20(%rbp)
jbe 0x2298b9
movq -0x20(%rbp), %rax
cmpq -0x50(%rbp), %rax
jb 0x22982e
movq 0x10(%rbp), %rdi
movq -0x20(%rbp), %rdx
movq -0x50(%rbp), %rcx
leaq 0x34c510(%rip), %rsi    # 0x575d21
movb $0x0, %al
callq 0xe7cd0
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
movl $0x1, -0x1c8(%rbp)
jmp 0x22a188
movq -0x40(%rbp), %rdi
movq -0x20(%rbp), %rsi
xorl %edx, %edx
callq 0x19c10
movl $0x0, -0x1c4(%rbp)
cmpl $0xff, -0x1c4(%rbp)
ja 0x2298b1
movq -0x178(%rbp), %rdi
movl -0x1c4(%rbp), %eax
movzbl %al, %esi
callq 0x22a280
cmpl $0x0, %eax
je 0x22989e
movq -0x10(%rbp), %rdi
movl -0x1c4(%rbp), %eax
movq -0x20(%rbp), %rdx
movq -0x160(%rbp), %rcx
movzbl %al, %esi
callq 0x22a300
movq %rax, %rdx
movq -0x1f8(%rbp), %rax
movl -0x1c4(%rbp), %ecx
movq %rdx, (%rax,%rcx,8)
jmp 0x2298a0
movl -0x1c4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c4(%rbp)
jmp 0x229847
movq -0x20(%rbp), %rax
movq %rax, -0x48(%rbp)
jmp 0x2298bb
xorl %eax, %eax
cmpl $0x0, -0x184(%rbp)
movb %al, -0x1f9(%rbp)
jne 0x2298e7
movq -0x40(%rbp), %rdi
callq 0x191b0
movl %eax, -0x1b4(%rbp)
cmpl $-0x1, %eax
setne %al
movb %al, -0x1f9(%rbp)
movb -0x1f9(%rbp), %al
testb $0x1, %al
jne 0x2298f6
jmp 0x22a0db
movq -0x178(%rbp), %rdi
movl -0x1b4(%rbp), %eax
movzbl %al, %esi
callq 0x22a360
movb %al, -0x151(%rbp)
movq -0x10(%rbp), %rdi
movq -0x48(%rbp), %rsi
movq -0x160(%rbp), %rdx
callq 0x22a3a0
movzbl %al, %eax
movl %eax, -0x158(%rbp)
movl -0x158(%rbp), %eax
movzwl -0x17a(%rbp), %ecx
cmpl %ecx, %eax
jb 0x2299a8
movq 0x41265a(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
movq -0x48(%rbp), %rdx
movzbl -0x151(%rbp), %ecx
movl -0x158(%rbp), %r8d
leaq 0x34c3fe(%rip), %rsi    # 0x575d60
movb $0x0, %al
callq 0x199f0
movq 0x18(%rbp), %rdi
leaq 0x34c436(%rip), %rsi    # 0x575daa
movb $0x0, %al
callq 0xd88c0
movq -0x10(%rbp), %rdi
movq -0x48(%rbp), %rsi
movq 0x412616(%rip), %rax    # 0x63bfa0
movq (%rax), %rdx
movq -0x160(%rbp), %rcx
callq 0x22a420
movl $0x1, -0x184(%rbp)
jmp 0x22a0db
jmp 0x2299aa
jmp 0x2299ac
jmp 0x2299ae
movzbl -0x151(%rbp), %eax
movzwl -0x17a(%rbp), %ecx
cmpl %ecx, %eax
jl 0x229a1b
movq 0x4125d9(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
movq -0x48(%rbp), %rdx
leaq 0x34c3f1(%rip), %rsi    # 0x575dc6
movb $0x0, %al
callq 0x199f0
movq 0x18(%rbp), %rdi
leaq 0x34c406(%rip), %rsi    # 0x575ded
movb $0x0, %al
callq 0xd88c0
movq -0x10(%rbp), %rdi
movq -0x48(%rbp), %rsi
movq 0x4125a3(%rip), %rax    # 0x63bfa0
movq (%rax), %rdx
movq -0x160(%rbp), %rcx
callq 0x22a420
movl $0x2, -0x184(%rbp)
jmp 0x22a0db
jmp 0x229a1d
jmp 0x229a1f
jmp 0x229a21
movl -0x158(%rbp), %eax
movzbl -0x151(%rbp), %ecx
cmpl %ecx, %eax
je 0x229a9b
movq 0x412567(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
movq -0x48(%rbp), %rdx
movzbl -0x151(%rbp), %ecx
movl -0x158(%rbp), %r8d
leaq 0x34c30b(%rip), %rsi    # 0x575d60
movb $0x0, %al
callq 0x199f0
movq 0x18(%rbp), %rdi
leaq 0x34c343(%rip), %rsi    # 0x575daa
movb $0x0, %al
callq 0xd88c0
movq -0x10(%rbp), %rdi
movq -0x48(%rbp), %rsi
movq 0x412523(%rip), %rax    # 0x63bfa0
movq (%rax), %rdx
movq -0x160(%rbp), %rcx
callq 0x22a420
movl $0x1, -0x184(%rbp)
jmp 0x22a0db
jmp 0x229a9d
jmp 0x229a9f
jmp 0x229aa1
movq -0x1f8(%rbp), %rax
movzbl -0x151(%rbp), %ecx
movq (%rax,%rcx,8), %rdx
addq $0x1, %rdx
movq %rdx, (%rax,%rcx,8)
movl -0x34(%rbp), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x229bcd
movl $0x0, -0x1c0(%rbp)
movl -0x1c0(%rbp), %eax
movzwl -0x17a(%rbp), %ecx
cmpl %ecx, %eax
jae 0x229bc2
movq -0x1f8(%rbp), %rax
movl -0x1c0(%rbp), %ecx
movq (%rax,%rcx,8), %rax
movq %rax, -0x208(%rbp)
movq %rax, -0x170(%rbp)
movq -0x10(%rbp), %rdi
movl -0x1c0(%rbp), %eax
movq -0x48(%rbp), %rdx
addq $0x1, %rdx
movq -0x160(%rbp), %rcx
movzbl %al, %esi
callq 0x22a480
movq %rax, %rcx
movq -0x208(%rbp), %rax
movq %rcx, -0x168(%rbp)
cmpq %rcx, %rax
je 0x229bac
movq 0x41245a(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
movq -0x48(%rbp), %rdx
movq -0x168(%rbp), %rcx
movq -0x170(%rbp), %r8
movl -0x1c0(%rbp), %r9d
leaq 0x34c2a9(%rip), %rsi    # 0x575e12
movb $0x0, %al
callq 0x199f0
movq 0x18(%rbp), %rdi
leaq 0x34c2ee(%rip), %rsi    # 0x575e69
movb $0x0, %al
callq 0xd88c0
movq -0x10(%rbp), %rdi
movq -0x48(%rbp), %rsi
movq 0x41240f(%rip), %rax    # 0x63bfa0
movq (%rax), %rdx
movq -0x160(%rbp), %rcx
callq 0x22a420
movl $0x4, -0x184(%rbp)
jmp 0x229bc2
jmp 0x229bae
movl -0x1c0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c0(%rbp)
jmp 0x229ad4
jmp 0x229bc4
jmp 0x229bc6
jmp 0x229bc8
jmp 0x229ca7
movq -0x1f8(%rbp), %rax
movl -0x158(%rbp), %ecx
movl %ecx, -0x1c0(%rbp)
movl -0x158(%rbp), %ecx
movq (%rax,%rcx,8), %rax
movq %rax, -0x210(%rbp)
movq %rax, -0x170(%rbp)
movq -0x10(%rbp), %rdi
movl -0x158(%rbp), %eax
movq -0x48(%rbp), %rdx
addq $0x1, %rdx
movq -0x160(%rbp), %rcx
movzbl %al, %esi
callq 0x22a480
movq %rax, %rcx
movq -0x210(%rbp), %rax
movq %rcx, -0x168(%rbp)
cmpq %rcx, %rax
je 0x229c9f
movq 0x41236a(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
movq -0x48(%rbp), %rdx
movq -0x168(%rbp), %rcx
movq -0x170(%rbp), %r8
movl -0x1c0(%rbp), %r9d
leaq 0x34c1b9(%rip), %rsi    # 0x575e12
movb $0x0, %al
callq 0x199f0
movq 0x18(%rbp), %rdi
leaq 0x34c1fe(%rip), %rsi    # 0x575e69
movb $0x0, %al
callq 0xd88c0
movq -0x10(%rbp), %rdi
movq -0x48(%rbp), %rsi
movq 0x41231f(%rip), %rax    # 0x63bfa0
movq (%rax), %rdx
movq -0x160(%rbp), %rcx
callq 0x22a420
movl $0x4, -0x184(%rbp)
jmp 0x22a0db
jmp 0x229ca1
jmp 0x229ca3
jmp 0x229ca5
jmp 0x229ca7
callq 0x127e80
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movl %eax, %eax
movl $0x80, %ecx
cqto
idivq %rcx
cmpq $0x0, %rdx
jne 0x22a0a3
callq 0x127e80
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movl %eax, %eax
movl -0x180(%rbp), %ecx
cqto
idivq %rcx
movl %edx, %eax
movl %eax, -0x1d4(%rbp)
movq -0x178(%rbp), %rdi
movl -0x1d4(%rbp), %esi
callq 0x22a530
movb %al, -0x1d5(%rbp)
movq -0x178(%rbp), %rdi
movl -0x1d4(%rbp), %esi
callq 0x22a5c0
movq -0x1e8(%rbp), %r8
movq -0x1e0(%rbp), %rcx
movw %ax, -0x1ce(%rbp)
movq -0x10(%rbp), %rdi
movl -0x1d4(%rbp), %esi
movq -0x48(%rbp), %rdx
addq $0x1, %rdx
movslq -0x1b8(%rbp), %rax
imulq %r8, %rax
shlq $0x3, %rax
addq %rax, %rcx
movq -0x160(%rbp), %r8
callq 0x22a670
movl $0x0, -0x1cc(%rbp)
movl -0x1cc(%rbp), %eax
movzwl -0x1ce(%rbp), %ecx
cmpl %ecx, %eax
jae 0x229e5e
movq -0x1f8(%rbp), %rcx
movq -0x1e0(%rbp), %rax
movq -0x1e8(%rbp), %rsi
movzbl -0x1d5(%rbp), %edx
addl -0x1cc(%rbp), %edx
movl %edx, -0x1c0(%rbp)
movslq -0x1b8(%rbp), %rdx
imulq %rsi, %rdx
shlq $0x3, %rdx
addq %rdx, %rax
movl -0x1cc(%rbp), %edx
movq (%rax,%rdx,8), %rax
movq %rax, -0x168(%rbp)
movl -0x1c0(%rbp), %edx
movq (%rcx,%rdx,8), %rcx
movq %rcx, -0x170(%rbp)
cmpq %rcx, %rax
je 0x229e42
movq 0x4121c4(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
movq -0x48(%rbp), %rdx
movq -0x168(%rbp), %rcx
movq -0x170(%rbp), %r8
movl -0x1c0(%rbp), %r9d
leaq 0x34c013(%rip), %rsi    # 0x575e12
movb $0x0, %al
callq 0x199f0
movq 0x18(%rbp), %rdi
leaq 0x34c058(%rip), %rsi    # 0x575e69
movb $0x0, %al
callq 0xd88c0
movq -0x10(%rbp), %rdi
movq -0x48(%rbp), %rsi
movq 0x412179(%rip), %rax    # 0x63bfa0
movq (%rax), %rdx
movq -0x160(%rbp), %rcx
callq 0x22a420
movl $0x4, -0x184(%rbp)
jmp 0x229e5e
jmp 0x229e44
jmp 0x229e46
jmp 0x229e48
jmp 0x229e4a
movl -0x1cc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1cc(%rbp)
jmp 0x229d5f
cmpl $0x0, -0x184(%rbp)
je 0x229e6c
jmp 0x22a0db
movl -0x1d4(%rbp), %eax
cmpl -0x1bc(%rbp), %eax
jne 0x22a079
movq -0x1f0(%rbp), %r8
movq -0x10(%rbp), %rdi
movl -0x1d4(%rbp), %esi
movq -0x1b0(%rbp), %rdx
movq -0x48(%rbp), %rcx
addq $0x1, %rcx
movq -0x160(%rbp), %r9
callq 0x22a6c0
movl $0x0, -0x1cc(%rbp)
movl -0x1cc(%rbp), %eax
movzwl -0x1ce(%rbp), %ecx
cmpl %ecx, %eax
jae 0x22a06c
movq -0x1f8(%rbp), %rcx
movq -0x1f0(%rbp), %rax
movzbl -0x1d5(%rbp), %edx
addl -0x1cc(%rbp), %edx
movl %edx, -0x1c0(%rbp)
movzwl -0x1ce(%rbp), %edx
addl -0x1cc(%rbp), %edx
movl %edx, %edx
movq (%rax,%rdx,8), %rax
movq %rax, -0x168(%rbp)
movl -0x1c0(%rbp), %edx
movq (%rcx,%rdx,8), %rcx
movq %rcx, -0x170(%rbp)
cmpq %rcx, %rax
je 0x229f8a
movq 0x41207f(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
movq -0x48(%rbp), %rdx
movq -0x168(%rbp), %rcx
movq -0x170(%rbp), %r8
movl -0x1c0(%rbp), %r9d
leaq 0x34bece(%rip), %rsi    # 0x575e12
movb $0x0, %al
callq 0x199f0
movq 0x18(%rbp), %rdi
leaq 0x34bf13(%rip), %rsi    # 0x575e69
movb $0x0, %al
callq 0xd88c0
movq -0x10(%rbp), %rdi
movq -0x48(%rbp), %rsi
movq 0x412034(%rip), %rax    # 0x63bfa0
movq (%rax), %rdx
movq -0x160(%rbp), %rcx
callq 0x22a420
movl $0x4, -0x184(%rbp)
jmp 0x22a06c
jmp 0x229f8c
jmp 0x229f8e
jmp 0x229f90
movq -0x1e0(%rbp), %rcx
movq -0x1e8(%rbp), %rsi
movq -0x1f0(%rbp), %rax
movl -0x1cc(%rbp), %edx
movq (%rax,%rdx,8), %rax
movq %rax, -0x168(%rbp)
movl -0x1b8(%rbp), %edx
xorl $0x1, %edx
movslq %edx, %rdx
imulq %rsi, %rdx
shlq $0x3, %rdx
addq %rdx, %rcx
movl -0x1cc(%rbp), %edx
movq (%rcx,%rdx,8), %rcx
movq %rcx, -0x170(%rbp)
cmpq %rcx, %rax
je 0x22a050
movq 0x411fb6(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
movq -0x48(%rbp), %rdx
movq -0x168(%rbp), %rcx
movq -0x170(%rbp), %r8
movl -0x1c0(%rbp), %r9d
leaq 0x34be05(%rip), %rsi    # 0x575e12
movb $0x0, %al
callq 0x199f0
movq 0x18(%rbp), %rdi
leaq 0x34be4a(%rip), %rsi    # 0x575e69
movb $0x0, %al
callq 0xd88c0
movq -0x10(%rbp), %rdi
movq -0x48(%rbp), %rsi
movq 0x411f6b(%rip), %rax    # 0x63bfa0
movq (%rax), %rdx
movq -0x160(%rbp), %rcx
callq 0x22a420
movl $0x4, -0x184(%rbp)
jmp 0x22a06c
jmp 0x22a052
jmp 0x22a054
jmp 0x22a056
jmp 0x22a058
movl -0x1cc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1cc(%rbp)
jmp 0x229eb4
cmpl $0x0, -0x184(%rbp)
je 0x22a077
jmp 0x22a0db
jmp 0x22a079
movl -0x1d4(%rbp), %eax
movl %eax, -0x1bc(%rbp)
movq -0x48(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x1b0(%rbp)
movl -0x1b8(%rbp), %eax
xorl $0x1, %eax
movl %eax, -0x1b8(%rbp)
movq -0x48(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x48(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x22a0d6
movq -0x48(%rbp), %rax
xorl %ecx, %ecx
movl %ecx, %edx
divq -0x28(%rbp)
cmpq $0x0, %rdx
jne 0x22a0d6
movq -0x30(%rbp), %rsi
movl $0x2e, %edi
callq 0x19e80
jmp 0x2298bb
cmpl $0x0, -0x184(%rbp)
je 0x22a0f3
movl $0x2, -0x1c8(%rbp)
jmp 0x22a188
cmpq $0x0, -0x28(%rbp)
je 0x22a108
movq -0x30(%rbp), %rsi
movl $0xa, %edi
callq 0x19e80
movq -0x40(%rbp), %rdi
callq 0x19e10
cmpl $0x0, %eax
je 0x22a178
movq 0x411e83(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
movq -0x48(%rbp), %rdx
leaq 0x34bc9b(%rip), %rsi    # 0x575dc6
movb $0x0, %al
callq 0x199f0
movq 0x18(%rbp), %rdi
leaq 0x34bcb0(%rip), %rsi    # 0x575ded
movb $0x0, %al
callq 0xd88c0
movq -0x10(%rbp), %rdi
movq -0x48(%rbp), %rsi
movq 0x411e4d(%rip), %rax    # 0x63bfa0
movq (%rax), %rdx
movq -0x160(%rbp), %rcx
callq 0x22a420
movl $0x2, -0x184(%rbp)
movl $0x2, -0x1c8(%rbp)
jmp 0x22a188
jmp 0x22a17a
jmp 0x22a17c
jmp 0x22a17e
movl $0x0, -0x1c8(%rbp)
movq -0x190(%rbp), %rax
movq %rax, %rsp
movl -0x1c8(%rbp), %eax
movl %eax, -0x214(%rbp)
testl %eax, %eax
je 0x22a1b3
jmp 0x22a1a4
movl -0x214(%rbp), %eax
subl $0x1, %eax
je 0x22a1da
jmp 0x22a1b1
jmp 0x22a1b5
jmp 0x22a1b5
movq -0x10(%rbp), %rdi
movq -0x160(%rbp), %rsi
callq 0x22a720
leaq -0x150(%rbp), %rdi
callq 0x233320
movl -0x184(%rbp), %eax
movl %eax, -0x4(%rbp)
movl -0x4(%rbp), %eax
movq %rbp, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)