// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/tools/gt_packedindex_chk_search.c
// Function: gt_packedindex_chk_search
extern int
gt_packedindex_chk_search(int argc, const char *argv[], GtError *err)
{
  struct chkSearchOptions params;
  Suffixarray suffixarray;
  Enumpatterniterator *epi = NULL;
  bool saIsLoaded = false;
  BWTSeq *bwtSeq = NULL;
  GtStr *inputProject = NULL;
  int parsedArgs;
  bool had_err = false;
  BWTSeqExactMatchesIterator EMIter;
  bool EMIterInitialized = false;
  GtLogger *logger = NULL;
  inputProject = gt_str_new();

  do {
    gt_error_check(err);
    {
      bool exitNow = false;
      switch (parseChkBWTOptions(&parsedArgs, argc, argv, &params,
                                 inputProject, err))
      {
      case GT_OPTION_PARSER_OK:
        break;
      case GT_OPTION_PARSER_ERROR:
        had_err = true;
        exitNow = true;
        break;
      case GT_OPTION_PARSER_REQUESTS_EXIT:
        exitNow = true;
        break;
      }
      if (exitNow)
        break;
    }
    gt_str_set(inputProject, argv[parsedArgs]);

    logger = gt_logger_new(params.verboseOutput,
                           GT_LOGGER_DEFLT_PREFIX, stdout);

    bwtSeq = gt_availBWTSeq(&params.idx.final, logger, err);
    if ((had_err = bwtSeq == NULL))
      break;

    {
      enum verifyBWTSeqErrCode retval =
        gt_BWTSeqVerifyIntegrity(bwtSeq, gt_str_get(inputProject), params.flags,
                              params.progressInterval, stderr, logger, err);
      if ((had_err = (retval != VERIFY_BWTSEQ_NO_ERROR)))
      {
        fprintf(stderr, "index integrity check failed: %s\n",
                gt_error_get(err));
        gt_error_set(err, "aborted because of index integrity check fail");
        break;
      }
    }
    if (BWTSeqHasLocateInformation(bwtSeq))
    {
      if ((had_err = !gt_initEmptyEMIterator(&EMIter, bwtSeq)))
      {
        gt_error_set(err, "Cannot create matches iterator for sequence index.");
        break;
      }
      EMIterInitialized = true;
    }
    {
      GtUword totalLen, dbstart;
      GtUword trial, patternLen;

      if ((had_err =
           gt_mapsuffixarray(&suffixarray, SARR_SUFTAB | SARR_ESQTAB,
                             gt_str_get(inputProject), NULL, err) != 0))
      {
        gt_error_set(err, "Can't load suffix array project with"
                  " demand for encoded sequence and suffix table files\n");
        break;
      }
      totalLen = gt_encseq_total_length(suffixarray.encseq);
      saIsLoaded = true;
      if ((had_err = (params.minPatLen >= 0L && params.maxPatLen >= 0L
                      && params.minPatLen > params.maxPatLen)))
      {
        gt_error_set(err, "Invalid pattern lengths selected: min="GT_WD", "
                     "max="GT_WD";"
                     " min <= max is required.", params.minPatLen,
                     params.maxPatLen);
        break;
      }
      if (params.minPatLen < 0 || params.maxPatLen < 0)
      {
        unsigned int numofchars
          = gt_alphabet_num_of_chars(
                               gt_encseq_alphabet(suffixarray.encseq));
        if (params.minPatLen < 0)
          params.minPatLen
            = gt_recommendedprefixlength(numofchars,
                                         totalLen,
                                         GT_RECOMMENDED_MULTIPLIER_DEFAULT,
                                         true);
        if (params.maxPatLen < 0)
          params.maxPatLen =
            GT_MAX(params.minPatLen,
                125 * gt_recommendedprefixlength(numofchars,totalLen,
                                         GT_RECOMMENDED_MULTIPLIER_DEFAULT,
                                         true)/100);
        else
          params.maxPatLen = GT_MAX(params.maxPatLen, params.minPatLen);
      }
      fprintf(stderr, "Using patterns of lengths "GT_WU" to "GT_WU"\n",
              params.minPatLen, params.maxPatLen);
      if ((had_err = totalLen + 1 != BWTSeqLength(bwtSeq)))
      {
        gt_error_set(err, "base suffix array and index have diferrent lengths!"
                          ""GT_WU" vs. "GT_WU"",  totalLen + 1,
                  BWTSeqLength(bwtSeq));
        break;
      }
      if ((had_err =
           (epi = gt_newenumpatterniterator(params.minPatLen, params.maxPatLen,
                                         suffixarray.encseq,
                                         err)) == NULL))
      {
        fputs("Creation of pattern iterator failed!\n", stderr);
        break;
      }
      for (trial = 0; !had_err && trial < params.numOfSamples; ++trial)
      {
        const GtUchar *pptr = gt_nextEnumpatterniterator(&patternLen, epi);
        GtMMsearchiterator *mmsi =
          gt_mmsearchiterator_new_complete_plain(suffixarray.encseq,
                                            suffixarray.suftab,
                                            0,  /* leftbound */
                                            totalLen, /* rightbound */
                                            0, /* offset */
                                            suffixarray.readmode,
                                            pptr,
                                            patternLen);
        if (BWTSeqHasLocateInformation(bwtSeq))
        {
          if ((had_err = !gt_reinitEMIterator(&EMIter, bwtSeq, pptr, patternLen,
                                           false)))
          {
            fputs("Internal error: failed to reinitialize pattern match"
                  " iterator", stderr);
            abort();
          }
          gt_assert(gt_EMINumMatchesTotal(&EMIter) ==
                    gt_BWTSeqMatchCount(bwtSeq, pptr, patternLen,
                                        false));
          gt_assert(gt_EMINumMatchesTotal(&EMIter)
                      == gt_mmsearchiterator_count(mmsi));
          while (gt_mmsearchiterator_next(&dbstart,mmsi))
          {
            GtUword matchPos = 0;
            bool match = EMIGetNextMatch(&EMIter, &matchPos, bwtSeq);
            if ((had_err = !match))
            {
              gt_error_set(err,
                           "matches of packedindex expired before mmsearch!");
              break;
            }
            if ((had_err = matchPos != dbstart))
            {
              gt_error_set(err, "packedindex match doesn't equal mmsearch "
                           "match result!\n"GT_WU" vs. "GT_WU"\n",
                           matchPos, dbstart);
            }
          }
          if (!had_err)
          {
            GtUword matchPos;
            bool trailingMatch = EMIGetNextMatch(&EMIter, &matchPos, bwtSeq);
            if ((had_err = trailingMatch))
            {
              gt_error_set(err, "matches of mmsearch expired before fmindex!");
              break;
            }
          }
        }
        else
        {
          GtUword numFMIMatches = gt_BWTSeqMatchCount(bwtSeq, pptr,
                                                         patternLen,
                                                         false),
            numMMSearchMatches = gt_mmsearchiterator_count(mmsi);
          if ((had_err = numFMIMatches != numMMSearchMatches))
          {
            gt_error_set(err, "Number of matches not equal for suffix array ("
                              ""GT_WU") and fmindex ("GT_WU").\n",
                      numFMIMatches, numMMSearchMatches);
          }
        }
        gt_mmsearchiterator_delete(mmsi);
        mmsi = NULL;
        if (params.progressInterval && !((trial + 1) % params.progressInterval))
          putc('.', stderr);
      }
      if (params.progressInterval)
        putc('\n', stderr);
      fprintf(stderr, "Finished "GT_WU" of "GT_WU" matchings successfully.\n",
              trial, params.numOfSamples);
    }
  } while (0);
  if (EMIterInitialized) gt_destructEMIterator(&EMIter);
  if (saIsLoaded) gt_freesuffixarray(&suffixarray);
  gt_freeEnumpatterniterator(epi);
  if (bwtSeq) gt_deleteBWTSeq(bwtSeq);
  if (logger) gt_logger_delete(logger);
  if (inputProject) gt_str_delete(inputProject);
  return had_err?-1:0;
}

// Assembly:
subq $0x2e8, %rsp            # imm = 0x2E8
movl %edi, 0x2e4(%rsp)
movq %rsi, 0x2d8(%rsp)
movq %rdx, 0x2d0(%rsp)
movq $0x0, 0x168(%rsp)
movb $0x0, 0x167(%rsp)
movq $0x0, 0x158(%rsp)
movq $0x0, 0x150(%rsp)
movb $0x0, 0x14b(%rsp)
movb $0x0, 0xf7(%rsp)
movq $0x0, 0xe8(%rsp)
callq 0x11d4a0
movq %rax, 0x150(%rsp)
jmp 0x486d5
cmpq $0x0, 0x2d0(%rsp)
je 0x4872b
movq 0x2d0(%rsp), %rdi
callq 0xd8a60
testb $0x1, %al
jne 0x486f3
jmp 0x4872b
movq 0x5f38a6(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x4cd90f(%rip), %rsi    # 0x516013
leaq 0x4cdab4(%rip), %rdx    # 0x5161bf
leaq 0x4da04e(%rip), %rcx    # 0x522760
leaq 0x4da061(%rip), %r8     # 0x52277a
movl $0x44, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x4872d
movb $0x0, 0xe7(%rsp)
movl 0x2e4(%rsp), %esi
movq 0x2d8(%rsp), %rdx
movq 0x150(%rsp), %r8
movq 0x2d0(%rsp), %r9
leaq 0x14c(%rsp), %rdi
leaq 0x270(%rsp), %rcx
callq 0x491e0
movl %eax, %ecx
movl %ecx, 0x74(%rsp)
testl %eax, %eax
je 0x4878b
jmp 0x48775
movl 0x74(%rsp), %eax
subl $0x1, %eax
je 0x4878d
jmp 0x48780
movl 0x74(%rsp), %eax
subl $0x2, %eax
je 0x4879f
jmp 0x487a7
jmp 0x487a7
movb $0x1, 0x14b(%rsp)
movb $0x1, 0xe7(%rsp)
jmp 0x487a7
movb $0x1, 0xe7(%rsp)
testb $0x1, 0xe7(%rsp)
je 0x487b6
jmp 0x4913b
movq 0x150(%rsp), %rdi
movq 0x2d8(%rsp), %rax
movslq 0x14c(%rsp), %rcx
movq (%rax,%rcx,8), %rsi
callq 0x11d650
movb 0x2cc(%rsp), %al
movq 0x5f3753(%rip), %rcx    # 0x63bf38
movq (%rcx), %rdx
leaq 0x4cf0fd(%rip), %rsi    # 0x5178ec
andb $0x1, %al
movzbl %al, %edi
callq 0xe7870
movq %rax, 0xe8(%rsp)
leaq 0x270(%rsp), %rdi
movq 0xe8(%rsp), %rsi
movq 0x2d0(%rsp), %rdx
callq 0x21e7c0
movq %rax, 0x158(%rsp)
cmpq $0x0, 0x158(%rsp)
sete %al
movb %al, %cl
andb $0x1, %cl
movb %cl, 0x14b(%rsp)
testb $0x1, %al
jne 0x48844
jmp 0x48849
jmp 0x4913b
movq 0x158(%rsp), %rax
movq %rax, 0x68(%rsp)
movq 0x150(%rsp), %rdi
callq 0x11dee0
movq 0x68(%rsp), %rdi
movq %rax, %rsi
movl 0x2c8(%rsp), %edx
movq 0x2c0(%rsp), %rcx
movq 0x5f371f(%rip), %rax    # 0x63bfa0
movq (%rax), %r8
movq 0xe8(%rsp), %r9
movq 0x2d0(%rsp), %rax
movq %rax, (%rsp)
callq 0x2272b0
movl %eax, 0xe0(%rsp)
cmpl $0x0, 0xe0(%rsp)
setne %al
movb %al, %cl
andb $0x1, %cl
movb %cl, 0x14b(%rsp)
testb $0x1, %al
jne 0x488c1
jmp 0x4890e
movq 0x5f36d8(%rip), %rax    # 0x63bfa0
movq (%rax), %rax
movq %rax, 0x60(%rsp)
movq 0x2d0(%rsp), %rdi
callq 0xd8b20
movq 0x60(%rsp), %rdi
movq %rax, %rdx
leaq 0x4d9eb4(%rip), %rsi    # 0x5227a0
movb $0x0, %al
callq 0x199f0
movq 0x2d0(%rsp), %rdi
leaq 0x4d9ec0(%rip), %rsi    # 0x5227c2
movb $0x0, %al
callq 0xd88c0
jmp 0x4913b
movq 0x158(%rsp), %rdi
callq 0x494c0
testb $0x1, %al
jne 0x48921
jmp 0x4896d
movq 0x158(%rsp), %rsi
leaq 0xf8(%rsp), %rdi
callq 0x226ed0
xorb $-0x1, %al
movb %al, %cl
andb $0x1, %cl
movb %cl, 0x14b(%rsp)
testb $0x1, %al
jne 0x4894a
jmp 0x48965
movq 0x2d0(%rsp), %rdi
leaq 0x4d9e97(%rip), %rsi    # 0x5227f0
movb $0x0, %al
callq 0xd88c0
jmp 0x4913b
movb $0x1, 0xf7(%rsp)
movq 0x150(%rsp), %rdi
callq 0x11dee0
movq %rax, %rdx
movq 0x2d0(%rsp), %r8
leaq 0x170(%rsp), %rdi
movl $0x3, %esi
xorl %eax, %eax
movl %eax, %ecx
callq 0x233e00
cmpl $0x0, %eax
setne %al
movb %al, %cl
andb $0x1, %cl
movb %cl, 0x14b(%rsp)
testb $0x1, %al
jne 0x489b3
jmp 0x489ce
movq 0x2d0(%rsp), %rdi
leaq 0x4d9e61(%rip), %rsi    # 0x522823
movb $0x0, %al
callq 0xd88c0
jmp 0x4913b
movq 0x170(%rsp), %rdi
callq 0xa9d00
movq %rax, 0xd8(%rsp)
movb $0x1, 0x167(%rsp)
xorl %eax, %eax
cmpq $0x0, 0x2a8(%rsp)
movb %al, 0x5f(%rsp)
jl 0x48a24
xorl %eax, %eax
cmpq $0x0, 0x2b0(%rsp)
movb %al, 0x5f(%rsp)
jl 0x48a24
movq 0x2a8(%rsp), %rax
cmpq 0x2b0(%rsp), %rax
setg %al
movb %al, 0x5f(%rsp)
movb 0x5f(%rsp), %al
movb %al, %cl
andb $0x1, %cl
movb %cl, 0x14b(%rsp)
testb $0x1, %al
jne 0x48a3a
jmp 0x48a65
movq 0x2d0(%rsp), %rdi
movq 0x2a8(%rsp), %rdx
movq 0x2b0(%rsp), %rcx
leaq 0x4d9e23(%rip), %rsi    # 0x52287c
movb $0x0, %al
callq 0xd88c0
jmp 0x4913b
cmpq $0x0, 0x2a8(%rsp)
jl 0x48a7f
cmpq $0x0, 0x2b0(%rsp)
jge 0x48bb7
movq 0x170(%rsp), %rdi
callq 0xb0f00
movq %rax, %rdi
callq 0x7e8c0
movl %eax, 0xbc(%rsp)
cmpq $0x0, 0x2a8(%rsp)
jge 0x48ad1
movl 0xbc(%rsp), %edi
movq 0xd8(%rsp), %rsi
movsd 0x4d9c9b(%rip), %xmm0   # 0x522758
movl $0x1, %edx
callq 0x2b12f0
movl %eax, %eax
movq %rax, 0x2a8(%rsp)
cmpq $0x0, 0x2b0(%rsp)
jge 0x48b7a
movq 0x2a8(%rsp), %rax
movq %rax, 0x50(%rsp)
movl 0xbc(%rsp), %edi
movq 0xd8(%rsp), %rsi
movsd 0x4d9c54(%rip), %xmm0   # 0x522758
movl $0x1, %edx
callq 0x2b12f0
imull $0x7d, %eax, %eax
movl $0x64, %ecx
xorl %edx, %edx
divl %ecx
movl %eax, %ecx
movq 0x50(%rsp), %rax
movl %ecx, %ecx
cmpq %rcx, %rax
jle 0x48b37
movq 0x2a8(%rsp), %rax
movq %rax, 0x48(%rsp)
jmp 0x48b6b
movl 0xbc(%rsp), %edi
movq 0xd8(%rsp), %rsi
movsd 0x4d9c0a(%rip), %xmm0   # 0x522758
movl $0x1, %edx
callq 0x2b12f0
imull $0x7d, %eax, %eax
movl $0x64, %ecx
xorl %edx, %edx
divl %ecx
movl %eax, %eax
movq %rax, 0x48(%rsp)
movq 0x48(%rsp), %rax
movq %rax, 0x2b0(%rsp)
jmp 0x48bb5
movq 0x2b0(%rsp), %rax
cmpq 0x2a8(%rsp), %rax
jle 0x48b9b
movq 0x2b0(%rsp), %rax
movq %rax, 0x40(%rsp)
jmp 0x48ba8
movq 0x2a8(%rsp), %rax
movq %rax, 0x40(%rsp)
movq 0x40(%rsp), %rax
movq %rax, 0x2b0(%rsp)
jmp 0x48bb7
movq 0x5f33e2(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
movq 0x2a8(%rsp), %rdx
movq 0x2b0(%rsp), %rcx
leaq 0x4d9cf0(%rip), %rsi    # 0x5228c8
movb $0x0, %al
callq 0x199f0
movq 0xd8(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x38(%rsp)
movq 0x158(%rsp), %rdi
callq 0x494e0
movq %rax, %rcx
movq 0x38(%rsp), %rax
cmpq %rcx, %rax
setne %al
movb %al, %cl
andb $0x1, %cl
movb %cl, 0x14b(%rsp)
testb $0x1, %al
jne 0x48c1d
jmp 0x48c68
movq 0x2d0(%rsp), %rax
movq %rax, 0x28(%rsp)
movq 0xd8(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x30(%rsp)
movq 0x158(%rsp), %rdi
callq 0x494e0
movq 0x28(%rsp), %rdi
movq 0x30(%rsp), %rdx
movq %rax, %rcx
leaq 0x4d9c92(%rip), %rsi    # 0x5228ee
movb $0x0, %al
callq 0xd88c0
jmp 0x4913b
movq 0x2a8(%rsp), %rdi
movq 0x2b0(%rsp), %rsi
movq 0x170(%rsp), %rdx
movq 0x2d0(%rsp), %rcx
callq 0x231d50
movq %rax, 0x168(%rsp)
cmpq $0x0, %rax
sete %al
movb %al, %cl
andb $0x1, %cl
movb %cl, 0x14b(%rsp)
testb $0x1, %al
jne 0x48cae
jmp 0x48cc9
movq 0x5f32eb(%rip), %rax    # 0x63bfa0
movq (%rax), %rsi
leaq 0x4d9c6e(%rip), %rdi    # 0x52292d
callq 0x19810
jmp 0x4913b
movq $0x0, 0xc8(%rsp)
xorl %eax, %eax
testb $0x1, 0x14b(%rsp)
movb %al, 0x27(%rsp)
jne 0x48cfc
movq 0xc8(%rsp), %rax
cmpq 0x2b8(%rsp), %rax
setb %al
movb %al, 0x27(%rsp)
movb 0x27(%rsp), %al
testb $0x1, %al
jne 0x48d09
jmp 0x490f4
movq 0x168(%rsp), %rsi
leaq 0xc0(%rsp), %rdi
callq 0x231f30
movq %rax, 0xb0(%rsp)
movq 0x170(%rsp), %rdi
movq 0x1c8(%rsp), %rsi
movq 0xd8(%rsp), %rcx
movl 0x1b8(%rsp), %r9d
movq 0xb0(%rsp), %r10
movq 0xc0(%rsp), %rax
xorl %edx, %edx
movl %edx, %r8d
movq %r8, %rdx
movq %r10, (%rsp)
movq %rax, 0x8(%rsp)
callq 0x238170
movq %rax, 0xa8(%rsp)
movq 0x158(%rsp), %rdi
callq 0x494c0
testb $0x1, %al
jne 0x48d8a
jmp 0x49003
movq 0x158(%rsp), %rsi
movq 0xb0(%rsp), %rdx
movq 0xc0(%rsp), %rcx
leaq 0xf8(%rsp), %rdi
xorl %r8d, %r8d
callq 0x227080
xorb $-0x1, %al
movb %al, %cl
andb $0x1, %cl
movb %cl, 0x14b(%rsp)
testb $0x1, %al
jne 0x48dc6
jmp 0x48de1
movq 0x5f31d3(%rip), %rax    # 0x63bfa0
movq (%rax), %rsi
leaq 0x4d9b7c(%rip), %rdi    # 0x522953
callq 0x19810
callq 0x19370
jmp 0x48de3
leaq 0xf8(%rsp), %rdi
callq 0x227190
movq %rax, 0x18(%rsp)
movq 0x158(%rsp), %rdi
movq 0xb0(%rsp), %rsi
movq 0xc0(%rsp), %rdx
xorl %ecx, %ecx
callq 0x2268f0
movq %rax, %rcx
movq 0x18(%rsp), %rax
cmpq %rcx, %rax
je 0x48e59
movq 0x5f3178(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x4cd1e1(%rip), %rsi    # 0x516013
leaq 0x4d9b58(%rip), %rdx    # 0x522991
leaq 0x4d9920(%rip), %rcx    # 0x522760
leaq 0x4d9933(%rip), %r8     # 0x52277a
movl $0xc8, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x48e5b
jmp 0x48e5d
leaq 0xf8(%rsp), %rdi
callq 0x227190
movq %rax, 0x10(%rsp)
movq 0xa8(%rsp), %rdi
callq 0x2382c0
movq %rax, %rcx
movq 0x10(%rsp), %rax
cmpq %rcx, %rax
je 0x48ec1
movq 0x5f3110(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x4cd179(%rip), %rsi    # 0x516013
leaq 0x4d9b47(%rip), %rdx    # 0x5229e8
leaq 0x4d98b8(%rip), %rcx    # 0x522760
leaq 0x4d98cb(%rip), %r8     # 0x52277a
movl $0xca, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x48ec3
jmp 0x48ec5
movq 0xa8(%rsp), %rsi
leaq 0xd0(%rsp), %rdi
callq 0x238350
testb $0x1, %al
jne 0x48ee3
jmp 0x48f98
movq $0x0, 0xa0(%rsp)
movq 0x158(%rsp), %rdx
leaq 0xf8(%rsp), %rdi
leaq 0xa0(%rsp), %rsi
callq 0x49500
andb $0x1, %al
movb %al, 0x9f(%rsp)
movb 0x9f(%rsp), %al
xorb $-0x1, %al
movb %al, %cl
andb $0x1, %cl
movb %cl, 0x14b(%rsp)
testb $0x1, %al
jne 0x48f30
jmp 0x48f48
movq 0x2d0(%rsp), %rdi
leaq 0x4d9aeb(%rip), %rsi    # 0x522a2a
movb $0x0, %al
callq 0xd88c0
jmp 0x48f98
movq 0xa0(%rsp), %rax
cmpq 0xd0(%rsp), %rax
setne %al
movb %al, %cl
andb $0x1, %cl
movb %cl, 0x14b(%rsp)
testb $0x1, %al
jne 0x48f6d
jmp 0x48f93
movq 0x2d0(%rsp), %rdi
movq 0xa0(%rsp), %rdx
movq 0xd0(%rsp), %rcx
leaq 0x4d9ace(%rip), %rsi    # 0x522a5a
movb $0x0, %al
callq 0xd88c0
jmp 0x48ec5
testb $0x1, 0x14b(%rsp)
jne 0x48ffe
movq 0x158(%rsp), %rdx
leaq 0xf8(%rsp), %rdi
leaq 0x90(%rsp), %rsi
callq 0x49500
andb $0x1, %al
movb %al, 0x8f(%rsp)
movb 0x8f(%rsp), %al
movb %al, %cl
andb $0x1, %cl
movb %cl, 0x14b(%rsp)
testb $0x1, %al
jne 0x48fe1
jmp 0x48ffc
movq 0x2d0(%rsp), %rdi
leaq 0x4d9aae(%rip), %rsi    # 0x522a9e
movb $0x0, %al
callq 0xd88c0
jmp 0x490f4
jmp 0x48ffe
jmp 0x49083
movq 0x158(%rsp), %rdi
movq 0xb0(%rsp), %rsi
movq 0xc0(%rsp), %rdx
xorl %ecx, %ecx
callq 0x2268f0
movq %rax, 0x80(%rsp)
movq 0xa8(%rsp), %rdi
callq 0x2382c0
movq %rax, 0x78(%rsp)
movq 0x80(%rsp), %rax
cmpq 0x78(%rsp), %rax
setne %al
movb %al, %cl
andb $0x1, %cl
movb %cl, 0x14b(%rsp)
testb $0x1, %al
jne 0x4905e
jmp 0x49081
movq 0x2d0(%rsp), %rdi
movq 0x80(%rsp), %rdx
movq 0x78(%rsp), %rcx
leaq 0x4d9a50(%rip), %rsi    # 0x522aca
movb $0x0, %al
callq 0xd88c0
jmp 0x49083
movq 0xa8(%rsp), %rdi
callq 0x2384d0
movq $0x0, 0xa8(%rsp)
cmpq $0x0, 0x2c0(%rsp)
je 0x490d9
movq 0xc8(%rsp), %rax
addq $0x1, %rax
xorl %ecx, %ecx
movl %ecx, %edx
divq 0x2c0(%rsp)
cmpq $0x0, %rdx
jne 0x490d9
movq 0x5f2ed4(%rip), %rax    # 0x63bfa0
movq (%rax), %rsi
movl $0x2e, %edi
callq 0x19e80
jmp 0x490db
movq 0xc8(%rsp), %rax
addq $0x1, %rax
movq %rax, 0xc8(%rsp)
jmp 0x48cd5
cmpq $0x0, 0x2c0(%rsp)
je 0x49113
movq 0x5f2e9a(%rip), %rax    # 0x63bfa0
movq (%rax), %rsi
movl $0xa, %edi
callq 0x19e80
movq 0x5f2e86(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
movq 0xc8(%rsp), %rdx
movq 0x2b8(%rsp), %rcx
leaq 0x4d99dd(%rip), %rsi    # 0x522b11
movb $0x0, %al
callq 0x199f0
testb $0x1, 0xf7(%rsp)
je 0x49152
leaq 0xf8(%rsp), %rdi
callq 0x2270e0
testb $0x1, 0x167(%rsp)
je 0x49169
leaq 0x170(%rsp), %rdi
callq 0x233320
movq 0x168(%rsp), %rdi
callq 0x2322f0
cmpq $0x0, 0x158(%rsp)
je 0x4918e
movq 0x158(%rsp), %rdi
callq 0x2261a0
cmpq $0x0, 0xe8(%rsp)
je 0x491a6
movq 0xe8(%rsp), %rdi
callq 0xe7ed0
cmpq $0x0, 0x150(%rsp)
je 0x491be
movq 0x150(%rsp), %rdi
callq 0x11f560
movb 0x14b(%rsp), %dl
xorl %eax, %eax
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
testb $0x1, %dl
cmovnel %ecx, %eax
addq $0x2e8, %rsp            # imm = 0x2E8
retq
nopw (%rax,%rax)