// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/match/radixsort_str.c
// Function: gt_radixsort_str_eqlen
void gt_radixsort_str_eqlen(GtRadixsortstringinfo *rsi,
                            GtUword *suffixes,
                            GtLcpvalues *lcpvalues,
                            GtUword subbucketleft,
                            GtUword depth,
                            GtUword sortmaxdepth,
                            GtUword width)
{
  GtUword idx, previousbucketsize,
                *bucketindex; /* overlay with sizesofbuckets */
  GtRadixsortStrBucketInfo bucket;

  gt_assert(width <= rsi->maxwidth &&
            (sortmaxdepth == 0 ||
            (depth <= sortmaxdepth && sortmaxdepth <= rsi->equallengthplus1)));

  bucket.suffixes = suffixes;
  bucket.width = width;
  bucket.depth = depth;
  bucket.lcp = depth;
  gt_assert(GT_STACK_ISEMPTY(&rsi->stack));
  GT_STACK_PUSH(&rsi->stack, bucket);

  bucketindex = rsi->sizesofbuckets;
  while (!GT_STACK_ISEMPTY(&rsi->stack))
  {
    gt_radixsort_str_bucketnum_t prevbucketnum
      = GT_RADIXSORT_STR_SPECIAL_BUCKET; /* = undefined */
    bucket = GT_STACK_POP(&rsi->stack);
    memset(rsi->sizesofbuckets, 0, rsi->bytesinsizesofbuckets);

    /* Loop A */
    for (idx = 0; idx < bucket.width; idx++)
    {
      rsi->oracle[idx] = gt_radixsort_str_get_code(rsi->twobitencoding,
                                                   bucket.suffixes[idx],
                                                   bucket.depth,
                                                   rsi->equallengthplus1,
                                                   rsi->realtotallength);
    }
    for (idx = 0; idx < bucket.width; idx++)
    {
      rsi->sizesofbuckets[rsi->oracle[idx]]++;
    }
    previousbucketsize = rsi->sizesofbuckets[0];
    bucketindex[0] = 0;
    for (idx = 1UL; idx < (GtUword) GT_RADIXSORT_STR_NOFBUCKETS; idx++)
    {
      GtUword tmp;

      tmp = bucketindex[idx-1] + previousbucketsize;
      previousbucketsize = rsi->sizesofbuckets[idx];
      bucketindex[idx] = tmp;
    }

    /* Loop B */
    gt_assert(width > 1UL);
    if (bucket.suffixes[0] > bucket.suffixes[1])
    {
      for (idx = bucket.width; idx > 0; /* Nothing */)
      {
        idx--;
        rsi->sorted[bucketindex[rsi->oracle[idx]]++] = bucket.suffixes[idx];
      }
    } else
    {
      for (idx = 0; idx < bucket.width; idx++)
      {
        rsi->sorted[bucketindex[rsi->oracle[idx]]++] = bucket.suffixes[idx];
      }
    }

    memcpy(bucket.suffixes, rsi->sorted, sizeof (*rsi->sorted) * bucket.width);

    if (bucket.depth < rsi->equallengthplus1)
    {
      gt_radixsort_str_bucketnum_t bucketnum;
      GtRadixsortStrBucketInfo subbucket;

      subbucket.suffixes = bucket.suffixes;
      subbucket.depth = bucket.depth + GT_RADIXSORT_STR_KMERSIZE;
      subbucket.lcp = bucket.lcp;
      for (bucketnum = 0;
           bucketnum < (gt_radixsort_str_bucketnum_t)
                       GT_RADIXSORT_STR_NOFBUCKETS;
           bucketnum++)
      {
        subbucket.width
          = bucketnum > 0 ? (bucketindex[bucketnum] - bucketindex[bucketnum-1])
                          : bucketindex[bucketnum];
        if (subbucket.width > 0)
        {
          GtUword offset
            = (GtUword) (subbucket.suffixes - suffixes);
          if (lcpvalues != NULL)
          {
            if (prevbucketnum != GT_RADIXSORT_STR_SPECIAL_BUCKET)
            {
              subbucket.lcp = bucket.depth +
                              gt_radixsort_str_codeslcp(rsi,prevbucketnum,
                                                        bucketnum);
            }
            if (offset > 0)
            {
              gt_lcptab_update(lcpvalues,subbucketleft,offset,
                               sortmaxdepth == 0
                                 ? subbucket.lcp
                                 : GT_MIN(subbucket.lcp,sortmaxdepth));
            }
          }
          if (GT_RADIXSORT_STR_HAS_OVERFLOW(bucketnum))
          {
            if (subbucket.width > 1UL)
            {
              gt_direct_qsort_ulong (6UL, false, subbucket.suffixes,
                                     subbucket.width);
            }
            if (lcpvalues != NULL)
            {
              GtUword j,
                            lcpvalue = bucket.depth
                                       + GT_RADIXSORT_STR_KMERSIZE
                                       - GT_RADIXSORT_STR_OVERFLOW(bucketnum);

              if (sortmaxdepth > 0 && lcpvalue > sortmaxdepth)
              {
                lcpvalue = sortmaxdepth;
              }
              for (j = 1UL; j < subbucket.width; j++)
              {
                gt_lcptab_update(lcpvalues,subbucketleft,offset+j,lcpvalue);
              }
            }
          } else
          {
            if (subbucket.width > 1UL)
            {
              if (sortmaxdepth == 0 || subbucket.depth <= sortmaxdepth)
              {
                const GtUword radixsort_str_insertion_sort_max = 31UL;

                if (subbucket.width <= radixsort_str_insertion_sort_max)
                {
                  gt_radixsort_str_insertionsort(rsi,
                                                 subbucket.suffixes,
                                                 subbucketleft + offset,
                                                 subbucket.width,
                                                 subbucket.depth,
                                                 lcpvalues,
                                                 sortmaxdepth);
                } else
                {
                  GT_STACK_PUSH(&rsi->stack, subbucket);
                }
              } else
              {
                if (lcpvalues != NULL)
                {
                  GtUword j;
                  for (j = 1UL; j < subbucket.width; j++)
                  {
                    gt_lcptab_update(lcpvalues,subbucketleft,offset+j,
                                     sortmaxdepth);
                  }
                }
              }
            }
          }
          subbucket.suffixes += subbucket.width;
          gt_assert(subbucket.suffixes <= bucket.suffixes + bucket.width);
          prevbucketnum = bucketnum;
        }
      }
      gt_assert(bucket.suffixes + bucket.width == subbucket.suffixes);
    }
  }
}

// Assembly:
subq $0x158, %rsp            # imm = 0x158
movq 0x160(%rsp), %rax
movq %rdi, 0x150(%rsp)
movq %rsi, 0x148(%rsp)
movq %rdx, 0x140(%rsp)
movq %rcx, 0x138(%rsp)
movq %r8, 0x130(%rsp)
movq %r9, 0x128(%rsp)
movq 0x160(%rsp), %rax
movq 0x150(%rsp), %rcx
cmpq 0x20(%rcx), %rax
ja 0x4d44b8
cmpq $0x0, 0x128(%rsp)
je 0x4d44f0
movq 0x130(%rsp), %rax
cmpq 0x128(%rsp), %rax
ja 0x4d44b8
movq 0x128(%rsp), %rax
movq 0x150(%rsp), %rcx
cmpq 0x10(%rcx), %rax
jbe 0x4d44f0
movq 0x167ae1(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x41b4a(%rip), %rsi     # 0x516013
leaq 0xe59e7(%rip), %rdx     # 0x5b9eb7
leaq 0xe5a52(%rip), %rcx     # 0x5b9f29
leaq 0xe59bf(%rip), %r8      # 0x5b9e9d
movl $0x16e, %r9d            # imm = 0x16E
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x4d44f2
movq 0x148(%rsp), %rax
movq %rax, 0xf0(%rsp)
movq 0x160(%rsp), %rax
movq %rax, 0xf8(%rsp)
movq 0x130(%rsp), %rax
movq %rax, 0x100(%rsp)
movq 0x130(%rsp), %rax
movq %rax, 0x108(%rsp)
movq 0x150(%rsp), %rax
cmpq $0x0, 0x58(%rax)
jne 0x4d4549
movb $0x1, %al
testb $0x1, %al
jne 0x4d4589
jmp 0x4d4551
xorl %eax, %eax
testb $0x1, %al
jne 0x4d4589
jmp 0x4d4551
movq 0x167a48(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x41ab1(%rip), %rsi     # 0x516013
leaq 0xe59d7(%rip), %rdx     # 0x5b9f40
leaq 0xe59b9(%rip), %rcx     # 0x5b9f29
leaq 0xe5926(%rip), %r8      # 0x5b9e9d
movl $0x174, %r9d            # imm = 0x174
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x4d458b
movq 0x150(%rsp), %rax
movq 0x58(%rax), %rax
movq 0x150(%rsp), %rcx
cmpq 0x48(%rcx), %rax
jne 0x4d4745
movq $0x20, 0xe8(%rsp)
movq 0xe8(%rsp), %rax
movq 0x150(%rsp), %rcx
movq 0x48(%rcx), %rcx
movq 0x150(%rsp), %rdx
addq 0x68(%rdx), %rcx
imulq %rcx, %rax
movq %rax, 0xe0(%rsp)
movq 0x150(%rsp), %rax
movq 0x48(%rax), %rax
movq 0x150(%rsp), %rcx
cmpq 0x60(%rcx), %rax
jne 0x4d4604
xorl %eax, %eax
movq %rax, 0x58(%rsp)
jmp 0x4d4618
movq 0x150(%rsp), %rax
movq 0x8070(%rax), %rax
movq %rax, 0x58(%rsp)
movq 0x58(%rsp), %rdi
movq 0xe0(%rsp), %rsi
leaq 0xe5871(%rip), %rdx     # 0x5b9e9d
movl $0x175, %ecx            # imm = 0x175
callq 0xe8540
movq %rax, %rcx
movq 0x150(%rsp), %rax
movq %rcx, 0x8070(%rax)
movq 0x150(%rsp), %rax
movq 0x48(%rax), %rax
movq 0x150(%rsp), %rcx
cmpq 0x60(%rcx), %rax
jne 0x4d469b
movq 0x150(%rsp), %rax
movq 0x8070(%rax), %rdi
movq 0x150(%rsp), %rsi
addq $0x48, %rsi
addq $0x28, %rsi
movq 0xe8(%rsp), %rdx
movq 0x150(%rsp), %rax
imulq 0x60(%rax), %rdx
callq 0x19610
movq 0x150(%rsp), %rax
cmpq $0x0, 0x8078(%rax)
je 0x4d4729
movq $0x0, 0xd8(%rsp)
movq 0xd8(%rsp), %rax
movq 0x150(%rsp), %rcx
cmpq 0x68(%rcx), %rax
jae 0x4d4727
movq 0x150(%rsp), %rax
movq 0x8078(%rax), %rax
movq 0x150(%rsp), %rcx
movq 0x8070(%rcx), %rdi
movq 0x150(%rsp), %rcx
movq 0x48(%rcx), %rcx
shlq $0x5, %rcx
addq %rcx, %rdi
movq 0xd8(%rsp), %rcx
shlq $0x5, %rcx
addq %rcx, %rdi
callq *%rax
movq 0xd8(%rsp), %rax
addq $0x1, %rax
movq %rax, 0xd8(%rsp)
jmp 0x4d46b9
jmp 0x4d4729
movq 0x150(%rsp), %rax
movq 0x68(%rax), %rcx
movq 0x150(%rsp), %rax
addq 0x48(%rax), %rcx
movq %rcx, 0x48(%rax)
movq 0x150(%rsp), %rax
movq 0x8070(%rax), %rax
movq 0x150(%rsp), %rdx
movq 0x58(%rdx), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, 0x58(%rdx)
shlq $0x5, %rcx
addq %rcx, %rax
movq 0xf0(%rsp), %rcx
movq %rcx, (%rax)
movq 0xf8(%rsp), %rcx
movq %rcx, 0x8(%rax)
movq 0x100(%rsp), %rcx
movq %rcx, 0x10(%rax)
movq 0x108(%rsp), %rcx
movq %rcx, 0x18(%rax)
movq 0x150(%rsp), %rax
movq 0x50(%rax), %rax
movq 0x150(%rsp), %rcx
cmpq 0x58(%rcx), %rax
jae 0x4d47d3
movq 0x150(%rsp), %rax
movq 0x58(%rax), %rcx
movq 0x150(%rsp), %rax
movq %rcx, 0x50(%rax)
movq 0x150(%rsp), %rax
movq 0x28(%rax), %rax
movq %rax, 0x110(%rsp)
movq 0x150(%rsp), %rax
movq 0x58(%rax), %rdx
xorl %eax, %eax
movl $0x1, %ecx
cmpq $0x0, %rdx
cmovel %ecx, %eax
cmpl $0x0, %eax
setne %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x4d4812
jmp 0x4d5361
movw $0x400, 0xd6(%rsp)      # imm = 0x400
movq 0x150(%rsp), %rax
movq 0x8070(%rax), %rax
movq 0x150(%rsp), %rdx
movq 0x58(%rdx), %rcx
addq $-0x1, %rcx
movq %rcx, 0x58(%rdx)
shlq $0x5, %rcx
addq %rcx, %rax
movq (%rax), %rcx
movq %rcx, 0xf0(%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0xf8(%rsp)
movq 0x10(%rax), %rcx
movq %rcx, 0x100(%rsp)
movq 0x18(%rax), %rax
movq %rax, 0x108(%rsp)
movq 0x150(%rsp), %rax
movq 0x28(%rax), %rdi
movq 0x150(%rsp), %rax
movq 0x8(%rax), %rdx
xorl %esi, %esi
callq 0x19360
movq $0x0, 0x120(%rsp)
movq 0x120(%rsp), %rax
cmpq 0xf8(%rsp), %rax
jae 0x4d492a
movq 0x150(%rsp), %rax
movq (%rax), %rdi
movq 0xf0(%rsp), %rax
movq 0x120(%rsp), %rcx
movq (%rax,%rcx,8), %rsi
movq 0x100(%rsp), %rdx
movq 0x150(%rsp), %rax
movq 0x10(%rax), %rcx
movq 0x150(%rsp), %rax
movq 0x18(%rax), %r8
callq 0x4d5370
movw %ax, %dx
movq 0x150(%rsp), %rax
movq 0x38(%rax), %rax
movq 0x120(%rsp), %rcx
movw %dx, (%rax,%rcx,2)
movq 0x120(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x120(%rsp)
jmp 0x4d48a0
movq $0x0, 0x120(%rsp)
movq 0x120(%rsp), %rax
cmpq 0xf8(%rsp), %rax
jae 0x4d498e
movq 0x150(%rsp), %rax
movq 0x28(%rax), %rax
movq 0x150(%rsp), %rcx
movq 0x38(%rcx), %rcx
movq 0x120(%rsp), %rdx
movzwl (%rcx,%rdx,2), %ecx
movq (%rax,%rcx,8), %rdx
addq $0x1, %rdx
movq %rdx, (%rax,%rcx,8)
movq 0x120(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x120(%rsp)
jmp 0x4d4936
movq 0x150(%rsp), %rax
movq 0x28(%rax), %rax
movq (%rax), %rax
movq %rax, 0x118(%rsp)
movq 0x110(%rsp), %rax
movq $0x0, (%rax)
movq $0x1, 0x120(%rsp)
cmpq $0x401, 0x120(%rsp) # imm = 0x401
jae 0x4d4a4b
movq 0x110(%rsp), %rax
movq 0x120(%rsp), %rcx
subq $0x1, %rcx
movq (%rax,%rcx,8), %rax
addq 0x118(%rsp), %rax
movq %rax, 0xc8(%rsp)
movq 0x150(%rsp), %rax
movq 0x28(%rax), %rax
movq 0x120(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, 0x118(%rsp)
movq 0xc8(%rsp), %rdx
movq 0x110(%rsp), %rax
movq 0x120(%rsp), %rcx
movq %rdx, (%rax,%rcx,8)
movq 0x120(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x120(%rsp)
jmp 0x4d49c0
jmp 0x4d4a4d
cmpq $0x1, 0x160(%rsp)
ja 0x4d4a90
movq 0x167541(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x415aa(%rip), %rsi     # 0x516013
leaq 0xb3bff(%rip), %rdx     # 0x58866f
leaq 0xe54b2(%rip), %rcx     # 0x5b9f29
leaq 0xe541f(%rip), %r8      # 0x5b9e9d
movl $0x198, %r9d            # imm = 0x198
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x4d4a92
movq 0xf0(%rsp), %rax
movq (%rax), %rax
movq 0xf0(%rsp), %rcx
cmpq 0x8(%rcx), %rax
jbe 0x4d4b3a
movq 0xf8(%rsp), %rax
movq %rax, 0x120(%rsp)
cmpq $0x0, 0x120(%rsp)
jbe 0x4d4b35
movq 0x120(%rsp), %rax
addq $-0x1, %rax
movq %rax, 0x120(%rsp)
movq 0xf0(%rsp), %rax
movq 0x120(%rsp), %rcx
movq (%rax,%rcx,8), %rdx
movq 0x150(%rsp), %rax
movq 0x30(%rax), %rax
movq 0x110(%rsp), %rsi
movq 0x150(%rsp), %rcx
movq 0x38(%rcx), %rcx
movq 0x120(%rsp), %rdi
movzwl (%rcx,%rdi,2), %ecx
movl %ecx, %edi
movq (%rsi,%rdi,8), %rcx
movq %rcx, %r8
addq $0x1, %r8
movq %r8, (%rsi,%rdi,8)
movq %rdx, (%rax,%rcx,8)
jmp 0x4d4abf
jmp 0x4d4bc5
movq $0x0, 0x120(%rsp)
movq 0x120(%rsp), %rax
cmpq 0xf8(%rsp), %rax
jae 0x4d4bc3
movq 0xf0(%rsp), %rax
movq 0x120(%rsp), %rcx
movq (%rax,%rcx,8), %rdx
movq 0x150(%rsp), %rax
movq 0x30(%rax), %rax
movq 0x110(%rsp), %rsi
movq 0x150(%rsp), %rcx
movq 0x38(%rcx), %rcx
movq 0x120(%rsp), %rdi
movzwl (%rcx,%rdi,2), %ecx
movl %ecx, %edi
movq (%rsi,%rdi,8), %rcx
movq %rcx, %r8
addq $0x1, %r8
movq %r8, (%rsi,%rdi,8)
movq %rdx, (%rax,%rcx,8)
movq 0x120(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x120(%rsp)
jmp 0x4d4b46
jmp 0x4d4bc5
movq 0xf0(%rsp), %rdi
movq 0x150(%rsp), %rax
movq 0x30(%rax), %rsi
movq 0xf8(%rsp), %rdx
shlq $0x3, %rdx
callq 0x19610
movq 0x100(%rsp), %rax
movq 0x150(%rsp), %rcx
cmpq 0x10(%rcx), %rax
jae 0x4d535c
movq 0xf0(%rsp), %rax
movq %rax, 0xa0(%rsp)
movq 0x100(%rsp), %rax
addq $0x4, %rax
movq %rax, 0xb0(%rsp)
movq 0x108(%rsp), %rax
movq %rax, 0xb8(%rsp)
movw $0x0, 0xc6(%rsp)
movzwl 0xc6(%rsp), %eax
cmpl $0x401, %eax            # imm = 0x401
jge 0x4d52fd
movzwl 0xc6(%rsp), %eax
cmpl $0x0, %eax
jle 0x4d4c97
movq 0x110(%rsp), %rax
movzwl 0xc6(%rsp), %ecx
movq (%rax,%rcx,8), %rax
movq 0x110(%rsp), %rcx
movzwl 0xc6(%rsp), %edx
subl $0x1, %edx
movslq %edx, %rdx
subq (%rcx,%rdx,8), %rax
movq %rax, 0x50(%rsp)
jmp 0x4d4cb0
movq 0x110(%rsp), %rax
movzwl 0xc6(%rsp), %ecx
movq (%rax,%rcx,8), %rax
movq %rax, 0x50(%rsp)
movq 0x50(%rsp), %rax
movq %rax, 0xa8(%rsp)
cmpq $0x0, 0xa8(%rsp)
jbe 0x4d52e2
movq 0xa0(%rsp), %rax
movq 0x148(%rsp), %rcx
subq %rcx, %rax
sarq $0x3, %rax
movq %rax, 0x98(%rsp)
cmpq $0x0, 0x140(%rsp)
je 0x4d4def
movzwl 0xd6(%rsp), %eax
cmpl $0x400, %eax            # imm = 0x400
je 0x4d4d4c
movq 0x100(%rsp), %rax
movq %rax, 0x48(%rsp)
movq 0x150(%rsp), %rdi
movw 0xd6(%rsp), %ax
movzwl %ax, %esi
movzwl 0xc6(%rsp), %edx
callq 0x4d5620
movw %ax, %cx
movq 0x48(%rsp), %rax
movzwl %cx, %ecx
addq %rcx, %rax
movq %rax, 0xb8(%rsp)
cmpq $0x0, 0x98(%rsp)
jbe 0x4d4ded
movq 0x140(%rsp), %rax
movq %rax, 0x30(%rsp)
movq 0x138(%rsp), %rax
movq %rax, 0x38(%rsp)
movq 0x98(%rsp), %rax
movq %rax, 0x40(%rsp)
cmpq $0x0, 0x128(%rsp)
jne 0x4d4d9c
movq 0xb8(%rsp), %rax
movq %rax, 0x28(%rsp)
jmp 0x4d4dd4
movq 0xb8(%rsp), %rax
cmpq 0x128(%rsp), %rax
jae 0x4d4dbd
movq 0xb8(%rsp), %rax
movq %rax, 0x20(%rsp)
jmp 0x4d4dca
movq 0x128(%rsp), %rax
movq %rax, 0x20(%rsp)
movq 0x20(%rsp), %rax
movq %rax, 0x28(%rsp)
movq 0x40(%rsp), %rdx
movq 0x38(%rsp), %rsi
movq 0x30(%rsp), %rdi
movq 0x28(%rsp), %rcx
callq 0x4d5710
jmp 0x4d4def
movzwl 0xc6(%rsp), %eax
andl $0x3, %eax
cmpl $0x0, %eax
jne 0x4d4e12
movzwl 0xc6(%rsp), %eax
cmpl $0x400, %eax            # imm = 0x400
jne 0x4d4f30
cmpq $0x1, 0xa8(%rsp)
jbe 0x4d4e39
movq 0xa0(%rsp), %rdx
movq 0xa8(%rsp), %rcx
movl $0x6, %edi
xorl %esi, %esi
callq 0xfa290
cmpq $0x0, 0x140(%rsp)
je 0x4d4f2b
movq 0x100(%rsp), %rax
addq $0x4, %rax
movq %rax, 0x18(%rsp)
movzwl 0xc6(%rsp), %eax
cmpl $0x400, %eax            # imm = 0x400
jne 0x4d4e74
movl $0x4, %eax
movq %rax, 0x10(%rsp)
jmp 0x4d4e86
movzwl 0xc6(%rsp), %eax
andl $0x3, %eax
cltq
movq %rax, 0x10(%rsp)
movq 0x18(%rsp), %rax
movq 0x10(%rsp), %rcx
subq %rcx, %rax
movq %rax, 0x88(%rsp)
cmpq $0x0, 0x128(%rsp)
jbe 0x4d4ec8
movq 0x88(%rsp), %rax
cmpq 0x128(%rsp), %rax
jbe 0x4d4ec8
movq 0x128(%rsp), %rax
movq %rax, 0x88(%rsp)
movq $0x1, 0x90(%rsp)
movq 0x90(%rsp), %rax
cmpq 0xa8(%rsp), %rax
jae 0x4d4f29
movq 0x140(%rsp), %rdi
movq 0x138(%rsp), %rsi
movq 0x98(%rsp), %rdx
addq 0x90(%rsp), %rdx
movq 0x88(%rsp), %rcx
callq 0x4d5710
movq 0x90(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x90(%rsp)
jmp 0x4d4ed4
jmp 0x4d4f2b
jmp 0x4d5258
cmpq $0x1, 0xa8(%rsp)
jbe 0x4d5256
cmpq $0x0, 0x128(%rsp)
je 0x4d4f60
movq 0xb0(%rsp), %rax
cmpq 0x128(%rsp), %rax
ja 0x4d51f3
movq $0x1f, 0x80(%rsp)
cmpq $0x1f, 0xa8(%rsp)
ja 0x4d4fc5
movq 0x150(%rsp), %rdi
movq 0xa0(%rsp), %rsi
movq 0x138(%rsp), %rdx
addq 0x98(%rsp), %rdx
movq 0xa8(%rsp), %rcx
movq 0xb0(%rsp), %r8
movq 0x140(%rsp), %r9
movq 0x128(%rsp), %rax
movq %rax, (%rsp)
callq 0x4d5880
jmp 0x4d51f1
movq 0x150(%rsp), %rax
movq 0x58(%rax), %rax
movq 0x150(%rsp), %rcx
cmpq 0x48(%rcx), %rax
jne 0x4d5161
movq $0x20, 0x78(%rsp)
movq 0x78(%rsp), %rax
movq 0x150(%rsp), %rcx
movq 0x48(%rcx), %rcx
movq 0x150(%rsp), %rdx
addq 0x68(%rdx), %rcx
imulq %rcx, %rax
movq %rax, 0x70(%rsp)
movq 0x150(%rsp), %rax
movq 0x48(%rax), %rax
movq 0x150(%rsp), %rcx
cmpq 0x60(%rcx), %rax
jne 0x4d5035
xorl %eax, %eax
movq %rax, 0x8(%rsp)
jmp 0x4d5049
movq 0x150(%rsp), %rax
movq 0x8070(%rax), %rax
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rdi
movq 0x70(%rsp), %rsi
leaq 0xe4e43(%rip), %rdx     # 0x5b9e9d
movl $0x1f8, %ecx            # imm = 0x1F8
callq 0xe8540
movq %rax, %rcx
movq 0x150(%rsp), %rax
movq %rcx, 0x8070(%rax)
movq 0x150(%rsp), %rax
movq 0x48(%rax), %rax
movq 0x150(%rsp), %rcx
cmpq 0x60(%rcx), %rax
jne 0x4d50c6
movq 0x150(%rsp), %rax
movq 0x8070(%rax), %rdi
movq 0x150(%rsp), %rsi
addq $0x48, %rsi
addq $0x28, %rsi
movq 0x78(%rsp), %rdx
movq 0x150(%rsp), %rax
imulq 0x60(%rax), %rdx
callq 0x19610
movq 0x150(%rsp), %rax
cmpq $0x0, 0x8078(%rax)
je 0x4d5145
movq $0x0, 0x68(%rsp)
movq 0x68(%rsp), %rax
movq 0x150(%rsp), %rcx
cmpq 0x68(%rcx), %rax
jae 0x4d5143
movq 0x150(%rsp), %rax
movq 0x8078(%rax), %rax
movq 0x150(%rsp), %rcx
movq 0x8070(%rcx), %rdi
movq 0x150(%rsp), %rcx
movq 0x48(%rcx), %rcx
shlq $0x5, %rcx
addq %rcx, %rdi
movq 0x68(%rsp), %rcx
shlq $0x5, %rcx
addq %rcx, %rdi
callq *%rax
movq 0x68(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x68(%rsp)
jmp 0x4d50e1
jmp 0x4d5145
movq 0x150(%rsp), %rax
movq 0x68(%rax), %rcx
movq 0x150(%rsp), %rax
addq 0x48(%rax), %rcx
movq %rcx, 0x48(%rax)
movq 0x150(%rsp), %rax
movq 0x8070(%rax), %rax
movq 0x150(%rsp), %rdx
movq 0x58(%rdx), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, 0x58(%rdx)
shlq $0x5, %rcx
addq %rcx, %rax
movq 0xa0(%rsp), %rcx
movq %rcx, (%rax)
movq 0xa8(%rsp), %rcx
movq %rcx, 0x8(%rax)
movq 0xb0(%rsp), %rcx
movq %rcx, 0x10(%rax)
movq 0xb8(%rsp), %rcx
movq %rcx, 0x18(%rax)
movq 0x150(%rsp), %rax
movq 0x50(%rax), %rax
movq 0x150(%rsp), %rcx
cmpq 0x58(%rcx), %rax
jae 0x4d51ef
movq 0x150(%rsp), %rax
movq 0x58(%rax), %rcx
movq 0x150(%rsp), %rax
movq %rcx, 0x50(%rax)
jmp 0x4d51f1
jmp 0x4d5254
cmpq $0x0, 0x140(%rsp)
je 0x4d5252
movq $0x1, 0x60(%rsp)
movq 0x60(%rsp), %rax
cmpq 0xa8(%rsp), %rax
jae 0x4d5250
movq 0x140(%rsp), %rdi
movq 0x138(%rsp), %rsi
movq 0x98(%rsp), %rdx
addq 0x60(%rsp), %rdx
movq 0x128(%rsp), %rcx
callq 0x4d5710
movq 0x60(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x60(%rsp)
jmp 0x4d5207
jmp 0x4d5252
jmp 0x4d5254
jmp 0x4d5256
jmp 0x4d5258
movq 0xa8(%rsp), %rax
shlq $0x3, %rax
addq 0xa0(%rsp), %rax
movq %rax, 0xa0(%rsp)
movq 0xa0(%rsp), %rax
movq 0xf0(%rsp), %rcx
movq 0xf8(%rsp), %rdx
shlq $0x3, %rdx
addq %rdx, %rcx
cmpq %rcx, %rax
jbe 0x4d52d0
movq 0x166d01(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x40d6a(%rip), %rsi     # 0x516013
leaq 0xe4cae(%rip), %rdx     # 0x5b9f5e
leaq 0xe4c72(%rip), %rcx     # 0x5b9f29
leaq 0xe4bdf(%rip), %r8      # 0x5b9e9d
movl $0x209, %r9d            # imm = 0x209
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x4d52d2
movw 0xc6(%rsp), %ax
movw %ax, 0xd6(%rsp)
jmp 0x4d52e4
movw 0xc6(%rsp), %ax
addw $0x1, %ax
movw %ax, 0xc6(%rsp)
jmp 0x4d4c42
jmp 0x4d52ff
movq 0xf0(%rsp), %rax
movq 0xf8(%rsp), %rcx
shlq $0x3, %rcx
addq %rcx, %rax
cmpq 0xa0(%rsp), %rax
je 0x4d5358
movq 0x166c79(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x40ce2(%rip), %rsi     # 0x516013
leaq 0xe4c5b(%rip), %rdx     # 0x5b9f93
leaq 0xe4bea(%rip), %rcx     # 0x5b9f29
leaq 0xe4b57(%rip), %r8      # 0x5b9e9d
movl $0x20d, %r9d            # imm = 0x20D
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x4d535a
jmp 0x4d535c
jmp 0x4d47e7
addq $0x158, %rsp            # imm = 0x158
retq
nopl (%rax)