// File: /workspace/github_c_makefile_star2_O3/genometools[P]genometools/src/match/sfx-bentsedg.c
// Function: gt_sort_bentleysedgewick
static void gt_sort_bentleysedgewick(GtBentsedgresources *bsr,
                                     GtUword bucketleftidx,
                                     GtUword width,
                                     GtUword depth)
{
  bsr->mkvauxstack.nextfreeGtMKVstack = 0;
  gt_suffixsortspace_bucketrange_set(bsr->sssp,bucketleftidx,width);
  subsort_bentleysedgewick(bsr, 0, width, depth);
  while (bsr->mkvauxstack.nextfreeGtMKVstack > 0)
  {
    GtUword leftplusw, pa, pb, pc, pd, pm, bucketright,
                  cptr, temp, pivotcmpcharbychar = 0, valcmpcharbychar,
                  wtmp, subbucketleft;
    unsigned int smallermaxlcp, greatermaxlcp, smallerminlcp, greaterminlcp;
    GtSfxcmp pivotcmpbits, val;
    int retvalpivotcmpbits;
    GtUchar tmpvar;
    GtCommonunits commonunits;
    const int commonunitsequal = bsr->sfxstrategy->cmpcharbychar
                                 ? 1
                                 : GT_UNITSIN2BITENC;

    /* pop */
    bsr->mkvauxstack.nextfreeGtMKVstack--;
    subbucketleft = STACKTOP.subbucketleft;
    width = STACKTOP.width;
    depth = STACKTOP.depth;
    bucketright = width - 1;

    if (bsr->sfxstrategy->cmpcharbychar)
    {
      pm = cmpcharbychardelivermedian(bsr, subbucketleft, width, depth);
      BS_SWAPARRAY(temp, subbucketleft, 0, pm);
      CMPCHARBYCHARPTR2INT(pivotcmpcharbychar, subbucketleft,tmpvar,0);
    } else
    {
      pm = blockcmpdelivermedian(bsr,
                                 subbucketleft,
                                 width,
                                 depth,
                                 bsr->sfxstrategy->maxwidthrealmedian);
      if (width <= bsr->sfxstrategy->maxcountingsort &&
          width >= MINMEDIANOF9WIDTH)
      {
        PTR2INT(pivotcmpbits,subbucketleft,pm);
        gt_assert(width >= bsr->sfxstrategy->maxbltriesort);
        sarrcountingsort(bsr,
                         subbucketleft,
                         width,
                         &pivotcmpbits,
                         pm,
                         depth);
        /* new values for subbucketleft, bucketright, depth */
        continue;
      }
      BS_SWAPARRAY(temp, subbucketleft, 0, pm);
      PTR2INT(pivotcmpbits,subbucketleft,0UL);
    }
    bsr->counttqsort++;
    /* now pivot element is at index subbucketleft */
    /* all elements to be compared are between pb and pc */
    /* pa is the position at which the next element smaller than the
       pivot element is inserted at */
    /* pd is the position at which the next element greater than the
       pivot element is inserted at */
    pa = pb = 1UL;
    pc = pd = bucketright;
    if (bsr->sfxstrategy->cmpcharbychar)
    {
      smallerminlcp = greaterminlcp = smallermaxlcp = greatermaxlcp = 0;
      for (;;)
      {
        while (pb <= pc)
        {
          CMPCHARBYCHARPTR2INT(valcmpcharbychar,subbucketleft,tmpvar,pb);
          if (valcmpcharbychar > pivotcmpcharbychar)
          {
            break;
          }
          if (valcmpcharbychar == pivotcmpcharbychar)
          {
            BS_SWAPARRAY(temp, subbucketleft, pa, pb);
            pa++;
          }
          pb++;
        }
        while (pb <= pc)
        {
          CMPCHARBYCHARPTR2INT(valcmpcharbychar,subbucketleft,tmpvar,pc);
          if (valcmpcharbychar < pivotcmpcharbychar)
          { /* stop for elements < pivot */
            break;
          }
          if (valcmpcharbychar == pivotcmpcharbychar)
          {
            /* exchange equal element and element at index pd */
            BS_SWAPARRAY(temp, subbucketleft, pc, pd);
            pd--;
          }
          pc--;
        }
        if (pb > pc)
        { /* no elements to compare to pivot */
          break;
        }
        BS_SWAPARRAY(temp, subbucketleft, pb, pc);
        pb++;
        pc--;
      }
    } else
    {
      smallermaxlcp = greatermaxlcp = 0;
      smallerminlcp = greaterminlcp = (unsigned int) GT_UNITSIN2BITENC;
      for (;;)
      {
        /* look for elements identical or smaller than pivot from left */
        while (pb <= pc)
        {
          PTR2INT(val,subbucketleft,pb);
          Sfxdocompare(&commonunits,val,pivotcmpbits);
          if (GtSfxcmpGREATER(val,pivotcmpbits))
          { /* stop for elements val > pivot */
            GT_BSR_UPDATELCP(greaterminlcp,greatermaxlcp,commonunits.common);
            break;
          }
          if (GtSfxcmpEQUAL(val,pivotcmpbits))
          {
            /* exchange equal element and element at index pa */
            BS_SWAPARRAY(temp, subbucketleft, pa, pb);
            pa++;
          } else /* smaller */
          {
            GT_BSR_UPDATELCP(smallerminlcp,smallermaxlcp,commonunits.common);
          }
          pb++;
        }
        /* look for elements identical or greater than pivot from right */
        while (pb <= pc)
        {
          PTR2INT(val,subbucketleft,pc);
          Sfxdocompare(&commonunits,val,pivotcmpbits);
          if (GtSfxcmpSMALLER(val,pivotcmpbits))
          { /* stop for elements val < pivot */
            GT_BSR_UPDATELCP(smallerminlcp,smallermaxlcp,commonunits.common);
            break;
          }
          if (GtSfxcmpEQUAL(val,pivotcmpbits))
          {
            /* exchange equal element and element at index pa */
            BS_SWAPARRAY(temp, subbucketleft, pc, pd);
            pd--;
          } else /* greater */
          {
            GT_BSR_UPDATELCP(greaterminlcp,greatermaxlcp,commonunits.common);
          }
          pc--;
        }
        if (pb > pc)
        { /* interval is empty */
          break;
        }
        BS_SWAPARRAY(temp, subbucketleft, pb, pc);
        pb++;
        pc--;
      }
    }
    gt_assert(pb >= pa);
    wtmp = GT_MIN(pa,pb-pa);
    /* move w elements at the left to the middle */
    gt_assert(pb >= wtmp && wtmp <= pb - wtmp);
    vectorswap(bsr->sssp, subbucketleft, subbucketleft+pb-wtmp, wtmp);
    gt_assert(pd >= pc);
    gt_assert(bucketright >= pd);
    wtmp = GT_MIN(pd-pc, bucketright-pd);
    /* move w elements at the right to the middle */
    gt_assert(bucketright + 1 >= wtmp && pb + wtmp <= bucketright+1-wtmp);
    vectorswap(bsr->sssp, subbucketleft+pb, subbucketleft+bucketright+1-wtmp,
               wtmp);

    /* all elements equal to the pivot are now in the middle namely in the
       range [subbucketleft + (pb-pa) and bucketright - (pd-pc)] */
    /* hence we have to sort the elements in the intervals
       [subbucketleft..subbucketleft+(pb-pa)-1] and
       [bucketright-(pd-pc)+1..bucketright] */

    gt_assert(pb >= pa);
    if ((wtmp = pb-pa) > 0)
    {
      leftplusw = wtmp;
      if (bsr->tableoflcpvalues != NULL)
      {
        /*
          left part has suffix with lcp up to length smallermaxlcp w.r.t.
          to the pivot. This lcp belongs to a suffix on the left
          which is at a minimum distance to the pivot and thus to an
          element in the final part of the left side.
        */
        gt_lcptab_update(bsr->tableoflcpvalues,subbucketleft,leftplusw,
                         depth + smallermaxlcp);
      }
      if (wtmp > 1UL)
      {
        subsort_bentleysedgewick(bsr,
                                 subbucketleft,
                                 wtmp,
                                 depth + smallerminlcp);
      }
    } else
    {
      leftplusw = 0;
    }

    cptr = gt_suffixsortspace_get(bsr->sssp,subbucketleft,leftplusw) + depth;
    if (ISNOTEND(cptr) && (wtmp = bucketright-(pd-pb)-leftplusw) > 1UL)
    {
      subsort_bentleysedgewick(bsr,
                               subbucketleft + leftplusw,
                               wtmp,
                               depth+commonunitsequal);
    }

    gt_assert(pd >= pc);
    if ((wtmp = (GtUword) (pd-pc)) > 0)
    {
      if (bsr->tableoflcpvalues != NULL)
      {
        /*
          right part has suffix with lcp up to length largermaxlcp w.r.t.
          to the pivot. This lcp belongs to a suffix on the right
          which is at a minimum distance to the pivot and thus to an
          element in the first part of the right side.
        */
        gt_lcptab_update(bsr->tableoflcpvalues,
                         subbucketleft,bucketright - wtmp + 1,
                         depth + greatermaxlcp);
      }
      if (wtmp > 1UL)
      {
        subsort_bentleysedgewick(bsr,
                                 subbucketleft + bucketright - wtmp + 1,
                                 wtmp,
                                 depth + greaterminlcp);
      }
    }
  }
  gt_suffixsortspace_bucketrange_reset(bsr->sssp);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xd8, %rsp
movq %rcx, %rbx
movq %rdx, %r14
movq %rdi, %r15
movq $0x0, 0x30(%rdi)
movq 0x48(%rdi), %rdi
callq 0x1fcb04
movq %r15, %rdi
xorl %esi, %esi
movq %r14, %rdx
movq %rbx, %rcx
callq 0x1e5281
movq 0x30(%r15), %rax
testq %rax, %rax
je 0x1e4a50
leaq 0x50(%rsp), %r14
leaq 0xb0(%rsp), %r12
movq %r15, 0x18(%rsp)
movq 0x20(%r15), %rdx
movq 0x40(%r15), %rcx
movb 0x2c(%rcx), %dil
decq %rax
movq %rax, 0x30(%r15)
leaq (%rax,%rax,2), %rax
movq (%rdx,%rax,8), %rsi
movq %rsi, 0x10(%rsp)
movq 0x8(%rdx,%rax,8), %rbp
movq 0x10(%rdx,%rax,8), %rax
movq %rax, 0x30(%rsp)
leaq -0x1(%rbp), %rax
movq %rax, 0x80(%rsp)
movq %rbp, %r8
shrq %r8
movb %dil, 0x47(%rsp)
cmpb $0x1, %dil
movq %rbp, 0x48(%rsp)
jne 0x1e3565
cmpq $0x1f, %rbp
jb 0x1e361d
movq %rbp, %r14
shrq $0x3, %r14
leaq (%r14,%r14), %r13
movq 0x18(%rsp), %rdi
movq 0x10(%rsp), %rbp
movq %rbp, %rsi
movq 0x30(%rsp), %rbx
movq %rbx, %rdx
xorl %ecx, %ecx
movq %r8, %r15
movq %r14, %r8
movq %r13, %r9
callq 0x1e5cee
movq %rax, 0x20(%rsp)
movq %r15, %rcx
subq %r14, %rcx
leaq (%r15,%r14), %r9
movq 0x18(%rsp), %rdi
movq %rbp, %rsi
movq %rbx, %rdx
movq %r15, %r8
callq 0x1e5cee
movq %rax, 0x28(%rsp)
movq 0x80(%rsp), %r9
movq %r9, %rcx
subq %r13, %rcx
movq 0x18(%rsp), %r15
movq %r9, %r8
subq %r14, %r8
leaq 0x50(%rsp), %r14
movq %r15, %rdi
movq %rbp, %rsi
movq %rbx, %rdx
callq 0x1e5cee
movq 0x20(%rsp), %rcx
movq 0x28(%rsp), %r8
movq %rax, %r9
jmp 0x1e3631
cmpq $0x1f, %rbp
jb 0x1e36eb
cmpq (%rcx), %rbp
movq 0x30(%rsp), %r13
jbe 0x1e370f
movq %rbp, %r14
shrq $0x3, %r14
leaq (%r14,%r14), %r15
movq 0x18(%rsp), %rdi
movq 0x10(%rsp), %rbx
movq %rbx, %rsi
movq %r13, %rdx
xorl %ecx, %ecx
movq %r8, %rbp
movq %r14, %r8
movq %r15, %r9
callq 0x1e5e29
movq %rax, 0x20(%rsp)
movq %rbp, %rcx
subq %r14, %rcx
leaq (%r14,%rbp), %r9
movq 0x18(%rsp), %rdi
movq %rbx, %rsi
movq %r13, %rdx
movq %rbp, %r8
callq 0x1e5e29
movq %r13, %rbp
movq %rax, %r13
movq 0x80(%rsp), %r9
movq %r9, %rcx
subq %r15, %rcx
movq 0x18(%rsp), %r15
movq %r9, %r8
subq %r14, %r8
movq %r15, %rdi
movq %rbx, %rsi
movq %rbp, %rdx
callq 0x1e5e29
movq %r15, %rdi
movq %rbx, %rsi
movq %rbp, %rdx
movq 0x48(%rsp), %r14
movq 0x20(%rsp), %rcx
movq %r13, %r8
movq %rax, %r9
callq 0x1e5e29
movq %rax, %r13
jmp 0x1e3a5b
movq 0x80(%rsp), %r9
xorl %ecx, %ecx
movq 0x30(%rsp), %rbx
movq 0x10(%rsp), %rbp
movq %r15, %rdi
movq %rbp, %rsi
movq %rbx, %rdx
callq 0x1e5cee
testq %rax, %rax
je 0x1e369b
movq %rax, %rbx
movq 0x48(%r15), %rdi
movq %rbp, %rsi
xorl %edx, %edx
callq 0x1fc965
movq %rax, %r14
movq 0x18(%rsp), %rax
movq 0x48(%rax), %r15
movq %r15, %rdi
movq %rbp, %rsi
movq %rbx, %rdx
callq 0x1fc965
movq %r15, %rdi
movq 0x18(%rsp), %r15
movq %rbp, %rsi
xorl %edx, %edx
movq %rax, %rcx
callq 0x1fc9e1
movq 0x48(%r15), %rdi
movq %rbp, %rsi
movq %rbx, %rdx
movq %r14, %rcx
leaq 0x50(%rsp), %r14
callq 0x1fc9e1
movq 0x48(%r15), %rdi
movq %rbp, %rsi
xorl %edx, %edx
callq 0x1fc965
movq %rax, %rbx
addq 0x30(%rsp), %rbx
cmpq 0xb0(%r15), %rbx
jae 0x1e36da
movq (%r15), %rdi
movl 0x18(%r15), %edx
movq %rbx, %rsi
callq 0xe7bbc
cmpb $-0x3, %al
ja 0x1e36da
movzbl %al, %eax
movq %rax, 0x8(%rsp)
jmp 0x1e3b1e
addq $0x100, %rbx            # imm = 0x100
movq %rbx, 0x8(%rsp)
jmp 0x1e3b1e
movq %r15, %rdi
movq 0x10(%rsp), %rsi
movq 0x30(%rsp), %rdx
xorl %ecx, %ecx
movq 0x80(%rsp), %r9
callq 0x1e5e29
movq %rax, %r13
jmp 0x1e3a6e
movq %r8, 0x28(%rsp)
xorl %r14d, %r14d
xorl %ebx, %ebx
movq 0x2d0(%r15), %rax
movq %rbx, 0x18(%rax,%r14)
movq 0x48(%r15), %rdi
movq 0x10(%rsp), %rsi
movq %rbx, %rdx
callq 0x1fc965
movq 0x2d0(%r15), %rdi
movq %rax, 0x10(%rdi,%r14)
addq %r13, %rax
cmpq 0xb0(%r15), %rax
jae 0x1e3766
addq %r14, %rdi
movq (%r15), %rdx
movq 0x8(%r15), %rsi
movl 0x18(%r15), %ecx
movq %rax, %r8
callq 0xeca81
jmp 0x1e3777
movq $0x0, (%rdi,%r14)
movl $0x0, 0x8(%rdi,%r14)
incq %rbx
addq $0x20, %r14
cmpq %rbx, %rbp
jne 0x1e3719
movq 0x2d0(%r15), %rdx
movq %rbp, %rax
shlq $0x5, %rax
leaq (%rdx,%rax), %rbx
addq $-0x20, %rbx
movq 0x28(%rsp), %rcx
shlq $0x5, %rcx
addq %rdx, %rcx
movq %rdx, 0x78(%rsp)
cmpq %rdx, %rbx
jbe 0x1e3a46
movb 0x1c(%r15), %al
movb %al, 0x8(%rsp)
movb 0x1d(%r15), %al
movb %al, 0x38(%rsp)
movq 0x78(%rsp), %rbp
movq %rcx, 0x28(%rsp)
leaq 0x20(%rbp), %r14
cmpq %r14, %rbx
movq %rbx, 0x20(%rsp)
je 0x1e39ec
subq %rbp, %rbx
sarq %rbx
addq $0x10, %rbx
andq $-0x20, %rbx
addq %rbp, %rbx
movzbl 0x8(%rsp), %r15d
movzbl 0x38(%rsp), %r13d
movl %r15d, %edi
movl %r13d, %esi
movq %r12, %rdx
movq %rbx, %rcx
movq 0x20(%rsp), %r8
callq 0xed110
movq 0x20(%rsp), %r8
testl %eax, %eax
jle 0x1e384f
movups (%rbx), %xmm0
movups 0x10(%rbx), %xmm1
movaps %xmm1, 0x60(%rsp)
movaps %xmm0, 0x50(%rsp)
movups (%r8), %xmm0
movups 0x10(%r8), %xmm1
movups %xmm1, 0x10(%rbx)
movups %xmm0, (%rbx)
movaps 0x50(%rsp), %xmm0
movaps 0x60(%rsp), %xmm1
movups %xmm1, 0x10(%r8)
movups %xmm0, (%r8)
movl %r15d, %edi
movl %r13d, %esi
movq %r12, %rdx
movq %rbp, %rcx
callq 0xed110
testl %eax, %eax
jle 0x1e389b
movups (%rbp), %xmm0
movups 0x10(%rbp), %xmm1
movaps %xmm1, 0x60(%rsp)
movaps %xmm0, 0x50(%rsp)
movq 0x20(%rsp), %rax
movups (%rax), %xmm0
movups 0x10(%rax), %xmm1
movups %xmm1, 0x10(%rbp)
movups %xmm0, (%rbp)
movaps 0x50(%rsp), %xmm0
movaps 0x60(%rsp), %xmm1
movups %xmm1, 0x10(%rax)
movups %xmm0, (%rax)
movl %r15d, %edi
movl %r13d, %esi
movq %r12, %rdx
movq %rbx, %rcx
movq %rbp, %r8
callq 0xed110
testl %eax, %eax
jle 0x1e38e5
movups (%rbx), %xmm0
movups 0x10(%rbx), %xmm1
movaps %xmm1, 0x60(%rsp)
movaps %xmm0, 0x50(%rsp)
movups (%rbp), %xmm0
movups 0x10(%rbp), %xmm1
movups %xmm1, 0x10(%rbx)
movups %xmm0, (%rbx)
movaps 0x50(%rsp), %xmm0
movaps 0x60(%rsp), %xmm1
movups %xmm1, 0x10(%rbp)
movups %xmm0, (%rbp)
movups (%rbx), %xmm0
movups 0x10(%rbx), %xmm1
movaps %xmm1, 0x60(%rsp)
movaps %xmm0, 0x50(%rsp)
movups (%r14), %xmm0
movups 0x10(%r14), %xmm1
movups %xmm1, 0x10(%rbx)
movups %xmm0, (%rbx)
movaps 0x50(%rsp), %xmm0
movaps 0x60(%rsp), %xmm1
movups %xmm1, 0x10(%r14)
movups %xmm0, (%r14)
movq 0x20(%rsp), %rbx
addq $0x20, %r14
movl %r15d, %edi
movl %r13d, %esi
movq %r12, %rdx
movq %rbp, %rcx
movq %r14, %r8
callq 0xed110
testl %eax, %eax
jg 0x1e391e
addq $-0x20, %rbx
movl %r15d, %edi
movl %r13d, %esi
movq %r12, %rdx
movq %rbx, %rcx
movq %rbp, %r8
callq 0xed110
testl %eax, %eax
jg 0x1e393a
cmpq %r14, %rbx
jb 0x1e3991
movups (%r14), %xmm0
movups 0x10(%r14), %xmm1
movaps %xmm1, 0x60(%rsp)
movaps %xmm0, 0x50(%rsp)
movups (%rbx), %xmm0
movups 0x10(%rbx), %xmm1
movups %xmm1, 0x10(%r14)
movups %xmm0, (%r14)
movaps 0x50(%rsp), %xmm0
movaps 0x60(%rsp), %xmm1
movups %xmm1, 0x10(%rbx)
movups %xmm0, (%rbx)
jmp 0x1e391e
movups (%rbp), %xmm0
movups 0x10(%rbp), %xmm1
movaps %xmm1, 0x60(%rsp)
movaps %xmm0, 0x50(%rsp)
movups (%rbx), %xmm0
movups 0x10(%rbx), %xmm1
movups %xmm1, 0x10(%rbp)
movups %xmm0, (%rbp)
movaps 0x50(%rsp), %xmm0
movaps 0x60(%rsp), %xmm1
movups %xmm1, 0x10(%rbx)
movups %xmm0, (%rbx)
movq 0x28(%rsp), %rcx
cmpq %rcx, %rbx
cmovbeq %r14, %rbp
leaq -0x20(%rbx), %rax
movq 0x20(%rsp), %rbx
cmovaeq %rax, %rbx
cmpq %rbp, %rbx
movq 0x18(%rsp), %r15
ja 0x1e37cd
jmp 0x1e3a46
movzbl 0x8(%rsp), %edi
movzbl 0x38(%rsp), %esi
movq %r12, %rdx
movq %rbp, %rcx
movq 0x20(%rsp), %r8
callq 0xed110
movq 0x20(%rsp), %rdx
testl %eax, %eax
movq 0x28(%rsp), %rcx
jle 0x1e3a46
movups (%rbp), %xmm0
movups 0x10(%rbp), %xmm1
movaps %xmm1, 0x60(%rsp)
movaps %xmm0, 0x50(%rsp)
movups (%rdx), %xmm0
movups 0x10(%rdx), %xmm1
movups %xmm1, 0x10(%rbp)
movups %xmm0, (%rbp)
movaps 0x50(%rsp), %xmm0
movaps 0x60(%rsp), %xmm1
movups %xmm1, 0x10(%rdx)
movups %xmm0, (%rdx)
cmpq $0x0, 0x78(%rsp)
je 0x1e4ac5
movq 0x18(%rcx), %r13
movq 0x48(%rsp), %r14
movq 0x40(%r15), %rax
cmpq 0x18(%rax), %r14
jbe 0x1e450c
leaq 0x50(%rsp), %r14
testq %r13, %r13
movq 0x10(%rsp), %rbp
je 0x1e3ac2
movq 0x48(%r15), %rdi
movq %rbp, %rsi
xorl %edx, %edx
callq 0x1fc965
movq %rax, %rbx
movq 0x48(%r15), %r14
movq %r14, %rdi
movq %rbp, %rsi
movq %r13, %rdx
callq 0x1fc965
movq %r14, %rdi
leaq 0x50(%rsp), %r14
movq %rbp, %rsi
xorl %edx, %edx
movq %rax, %rcx
callq 0x1fc9e1
movq 0x48(%r15), %rdi
movq %rbp, %rsi
movq %r13, %rdx
movq %rbx, %rcx
callq 0x1fc9e1
movq 0x48(%r15), %rdi
movq %rbp, %rsi
xorl %edx, %edx
callq 0x1fc965
movq %rax, 0xc0(%rsp)
addq 0x30(%rsp), %rax
cmpq 0xb0(%r15), %rax
jae 0x1e3afe
movq (%r15), %rdx
movq 0x8(%r15), %rsi
movl 0x18(%r15), %ecx
movq %r12, %rdi
movq %rax, %r8
callq 0xeca81
jmp 0x1e3b15
movq $0x0, 0xb0(%rsp)
movl $0x0, 0xb8(%rsp)
movq $0x0, 0x8(%rsp)
leaq 0x98(%rsp), %rbp
incq 0x70(%r15)
movq 0x40(%r15), %rax
cmpb $0x0, 0x2c(%rax)
je 0x1e3daf
movl $0x1, %eax
movq %rax, 0x88(%rsp)
movl $0x1, %r14d
movq 0x80(%rsp), %rax
movq %rax, %rbx
movq %rax, 0x20(%rsp)
movq 0x10(%rsp), %r13
movq %r14, %rdx
cmpq %rbx, %r14
ja 0x1e3c5a
movq %rbx, %rbp
movq 0x48(%r15), %rdi
movq %r13, %rsi
movq %rdx, %r14
callq 0x1fc965
movq %rax, %rbx
addq 0x30(%rsp), %rbx
cmpq 0xb0(%r15), %rbx
jae 0x1e3ba7
movq (%r15), %rdi
movl 0x18(%r15), %edx
movq %rbx, %rsi
callq 0xe7bbc
cmpb $-0x3, %al
ja 0x1e3ba7
movzbl %al, %ebx
jmp 0x1e3bae
addq $0x100, %rbx            # imm = 0x100
cmpq 0x8(%rsp), %rbx
ja 0x1e3c54
movq %rbp, %rbx
jne 0x1e3c43
movq 0x88(%rsp), %r13
cmpq %r13, %r14
je 0x1e3c33
movq 0x48(%r15), %rdi
movq 0x10(%rsp), %rbx
movq %rbx, %rsi
movq %r13, %rdx
callq 0x1fc965
movq %rax, 0x38(%rsp)
movq 0x18(%rsp), %rax
movq 0x48(%rax), %r15
movq %r15, %rdi
movq %rbx, %rsi
movq %r14, %rdx
movq %r14, 0x28(%rsp)
callq 0x1fc965
movq %r15, %rdi
movq 0x18(%rsp), %r15
movq %rbx, %rsi
movq %r13, %rdx
movq %rax, %rcx
callq 0x1fc9e1
movq 0x48(%r15), %rdi
movq %rbx, %rsi
movq 0x28(%rsp), %rdx
movq 0x38(%rsp), %rcx
movq %rbp, %rbx
callq 0x1fc9e1
incq %r13
movq %r13, 0x88(%rsp)
movq 0x10(%rsp), %r13
movq %r14, %rdx
incq %rdx
cmpq %rbx, %rdx
jbe 0x1e3b6c
jmp 0x1e3c5a
movq %rbp, %rbx
movq %r14, %rdx
movl $0x0, 0x74(%rsp)
movq %rdx, 0x28(%rsp)
cmpq %rbx, %rdx
ja 0x1e4126
movq 0x8(%rsp), %r14
movq 0x48(%r15), %rdi
movq %r13, %rsi
movq %rbx, %rbp
movq %rbx, %rdx
callq 0x1fc965
movq %rax, %rbx
addq 0x30(%rsp), %rbx
cmpq 0xb0(%r15), %rbx
jae 0x1e3cb0
movq (%r15), %rdi
movl 0x18(%r15), %edx
movq %rbx, %rsi
callq 0xe7bbc
cmpb $-0x3, %al
ja 0x1e3cb0
movzbl %al, %ebx
jmp 0x1e3cb7
addq $0x100, %rbx            # imm = 0x100
cmpq %r14, %rbx
jb 0x1e3d43
movq %rbp, %rbx
jne 0x1e3d30
movq 0x20(%rsp), %r14
cmpq %r14, %rbx
je 0x1e3d23
movq 0x48(%r15), %rdi
movq %r13, %rsi
movq %rbx, %rdx
callq 0x1fc965
movq %rax, %rbx
movq 0x18(%rsp), %rax
movq 0x48(%rax), %r15
movq %r15, %rdi
movq %r13, %rsi
movq %r14, %rdx
callq 0x1fc965
movq %r15, %rdi
movq 0x18(%rsp), %r15
movq %r13, %rsi
movq %rbp, %rdx
movq %rax, %rcx
callq 0x1fc9e1
movq 0x48(%r15), %rdi
movq %r13, %rsi
movq %r14, %rdx
movq %rbx, %rcx
movq %rbp, %rbx
callq 0x1fc9e1
decq %r14
movq %r14, 0x20(%rsp)
movq 0x8(%rsp), %r14
decq %rbx
cmpq %rbx, 0x28(%rsp)
jbe 0x1e3c75
jmp 0x1e4126
movq %rbp, %rbx
movq 0x28(%rsp), %r14
cmpq %rbp, %r14
je 0x1e3da4
movq 0x48(%r15), %rdi
movq %r13, %rsi
movq %r14, %rdx
callq 0x1fc965
movq %rax, %rbx
movq 0x18(%rsp), %rax
movq 0x48(%rax), %r15
movq %r15, %rdi
movq %r13, %rsi
movq %rbp, %rdx
callq 0x1fc965
movq %r15, %rdi
movq 0x18(%rsp), %r15
movq %r13, %rsi
movq %r14, %rdx
movq %rax, %rcx
callq 0x1fc9e1
movq 0x48(%r15), %rdi
movq %r13, %rsi
movq %rbp, %rdx
movq %rbx, %rcx
movq %rbp, %rbx
callq 0x1fc9e1
incq %r14
decq %rbx
jmp 0x1e3b60
movl $0x20, 0x40(%rsp)
movl $0x0, 0x8(%rsp)
movl $0x1, %eax
movq %rax, 0x88(%rsp)
movl $0x1, %r13d
movq 0x80(%rsp), %rax
movq %rax, %rbx
movq %rax, 0x20(%rsp)
movl $0x0, 0x38(%rsp)
movl $0x20, 0x78(%rsp)
cmpq %rbx, %r13
ja 0x1e3f50
movq %rbx, 0x90(%rsp)
movq 0x48(%r15), %rdi
movq 0x10(%rsp), %rsi
movq %r13, %rdx
callq 0x1fc965
movq %rax, 0x60(%rsp)
addq 0x30(%rsp), %rax
cmpq 0xb0(%r15), %rax
jae 0x1e3e3f
movq (%r15), %rdx
movq 0x8(%r15), %rsi
movl 0x18(%r15), %ecx
movq %r14, %rdi
movq %rax, %r8
callq 0xeca81
jmp 0x1e3e50
movq $0x0, 0x50(%rsp)
movl $0x0, 0x58(%rsp)
movzbl 0x1c(%r15), %edi
movzbl 0x1d(%r15), %esi
movq %rbp, %rdx
movq %r14, %rcx
movq %r12, %r8
callq 0xed110
testl %eax, %eax
jg 0x1e3f2f
je 0x1e3e98
movl 0x98(%rsp), %eax
movl 0x40(%rsp), %ecx
cmpl %eax, %ecx
cmovael %eax, %ecx
movl %ecx, 0x40(%rsp)
movl 0x8(%rsp), %ecx
cmpl %eax, %ecx
cmovbel %eax, %ecx
movl %ecx, 0x8(%rsp)
jmp 0x1e3f21
movq 0x88(%rsp), %rbp
cmpq %rbp, %r13
je 0x1e3f0e
movq 0x48(%r15), %rdi
movq %r13, %r14
movq 0x10(%rsp), %r13
movq %r13, %rsi
movq %rbp, %rdx
callq 0x1fc965
movq %rax, %rbx
movq 0x18(%rsp), %rax
movq 0x48(%rax), %r15
movq %r15, %rdi
movq %r13, %rsi
movq %r14, %rdx
callq 0x1fc965
movq %r15, %rdi
movq 0x18(%rsp), %r15
movq %r13, %rsi
movq %rbp, %rdx
movq %rax, %rcx
callq 0x1fc9e1
movq 0x48(%r15), %rdi
movq %r13, %rsi
movq %r14, %r13
leaq 0x50(%rsp), %r14
movq %r13, %rdx
movq %rbx, %rcx
movq 0x90(%rsp), %rbx
callq 0x1fc9e1
incq %rbp
movq %rbp, 0x88(%rsp)
leaq 0x98(%rsp), %rbp
incq %r13
cmpq %rbx, %r13
jbe 0x1e3e03
jmp 0x1e3f50
movl 0x98(%rsp), %eax
movl 0x78(%rsp), %ecx
cmpl %eax, %ecx
cmovael %eax, %ecx
movl %ecx, 0x78(%rsp)
movl 0x38(%rsp), %ecx
cmpl %eax, %ecx
cmovbel %eax, %ecx
movl %ecx, 0x38(%rsp)
movl 0x8(%rsp), %eax
movl %eax, 0x74(%rsp)
cmpq %rbx, %r13
movq %r13, 0x28(%rsp)
ja 0x1e4140
movq 0x48(%r15), %rdi
movq 0x10(%rsp), %rsi
movq %rbx, %rdx
callq 0x1fc965
movq %rax, 0x60(%rsp)
addq 0x30(%rsp), %rax
cmpq 0xb0(%r15), %rax
jae 0x1e3fa2
movq (%r15), %rdx
movq 0x8(%r15), %rsi
movl 0x18(%r15), %ecx
movq %r14, %rdi
movq %rax, %r8
callq 0xeca81
jmp 0x1e3fb3
movq $0x0, 0x50(%rsp)
movl $0x0, 0x58(%rsp)
movzbl 0x1c(%r15), %edi
movzbl 0x1d(%r15), %esi
movq %rbp, %rdx
movq %r14, %rcx
movq %r12, %r8
callq 0xed110
testl %eax, %eax
js 0x1e408c
je 0x1e3ffb
movl 0x98(%rsp), %eax
movl 0x78(%rsp), %ecx
cmpl %eax, %ecx
cmovael %eax, %ecx
movl %ecx, 0x78(%rsp)
movl 0x38(%rsp), %ecx
cmpl %eax, %ecx
cmovbel %eax, %ecx
movl %ecx, 0x38(%rsp)
jmp 0x1e407b
movq 0x20(%rsp), %r14
cmpq %r14, %rbx
je 0x1e406e
movq 0x48(%r15), %rdi
movq 0x10(%rsp), %r13
movq %r13, %rsi
movq %rbx, %rdx
callq 0x1fc965
movq %rbx, %rbp
movq %rax, %rbx
movq 0x18(%rsp), %rax
movq 0x48(%rax), %r15
movq %r15, %rdi
movq %r13, %rsi
movq %r14, %rdx
callq 0x1fc965
movq %r15, %rdi
movq 0x18(%rsp), %r15
movq %r13, %rsi
movq %rbp, %rdx
movq %rax, %rcx
callq 0x1fc9e1
movq 0x48(%r15), %rdi
movq %r13, %rsi
movq 0x28(%rsp), %r13
movq %r14, %rdx
movq %rbx, %rcx
movq %rbp, %rbx
leaq 0x98(%rsp), %rbp
callq 0x1fc9e1
decq %r14
movq %r14, 0x20(%rsp)
leaq 0x50(%rsp), %r14
decq %rbx
cmpq %rbx, %r13
jbe 0x1e3f66
jmp 0x1e4140
movl 0x98(%rsp), %ecx
movl 0x40(%rsp), %eax
cmpl %ecx, %eax
cmovael %ecx, %eax
movl %eax, 0x40(%rsp)
movl 0x74(%rsp), %eax
cmpl %ecx, %eax
cmoval %eax, %ecx
movl %ecx, 0x8(%rsp)
cmpq %rbx, %r13
je 0x1e411b
movq 0x48(%r15), %rdi
movq 0x10(%rsp), %r13
movq %r13, %rsi
movq 0x28(%rsp), %rdx
callq 0x1fc965
movq %rax, 0x90(%rsp)
movq 0x18(%rsp), %rax
movq 0x48(%rax), %r15
movq %r15, %rdi
movq %r13, %rsi
movq %rbx, %rdx
callq 0x1fc965
movq %r15, %rdi
movq 0x18(%rsp), %r15
movq %r13, %rsi
movq 0x28(%rsp), %rdx
movq %rax, %rcx
callq 0x1fc9e1
movq 0x48(%r15), %rdi
movq %r13, %rsi
movq 0x28(%rsp), %r13
movq %rbx, %rdx
movq 0x90(%rsp), %rcx
callq 0x1fc9e1
incq %r13
decq %rbx
jmp 0x1e3df2
movl $0x0, 0x38(%rsp)
movl $0x0, 0x40(%rsp)
movl $0x0, 0x78(%rsp)
jmp 0x1e4145
movq 0x10(%rsp), %r13
movq 0x20(%rsp), %rdx
movq %rbx, 0x90(%rsp)
movq 0x28(%rsp), %rcx
movq %rcx, %rsi
movq 0x88(%rsp), %rax
subq %rax, %rsi
jb 0x1e4a93
movq %rdx, 0x20(%rsp)
cmpq %rsi, %rax
movq %rsi, 0xd0(%rsp)
cmovbq %rax, %rsi
movq %rcx, %rax
subq %rsi, %rax
movq %rsi, 0x8(%rsp)
cmpq %rax, %rsi
ja 0x1e4a9d
leaq (%rcx,%r13), %rax
movq %rax, 0xa8(%rsp)
cmpq $0x0, 0x8(%rsp)
je 0x1e420e
movq %r13, %r14
movq 0x18(%rsp), %rax
movq 0x48(%rax), %rbx
movq 0xa8(%rsp), %r15
subq 0x8(%rsp), %r15
xorl %r13d, %r13d
movq %rbx, %rdi
movq %r14, %rsi
movq %r13, %rdx
callq 0x1fc965
movq %rax, %rbp
movq %rbx, %rdi
movq %r15, %rsi
movq %r13, %rdx
callq 0x1fc965
movq %rbx, %rdi
movq %r14, %rsi
movq %r13, %rdx
movq %rax, %rcx
callq 0x1fc9e1
movq %rbx, %rdi
movq %r15, %rsi
movq %r13, %rdx
movq %rbp, %rcx
callq 0x1fc9e1
incq %r13
cmpq %r13, 0x8(%rsp)
jne 0x1e41c3
movq 0x20(%rsp), %rax
movq %rax, %rdi
subq 0x90(%rsp), %rdi
jb 0x1e4aa2
movq 0x80(%rsp), %rcx
subq %rax, %rcx
movq %rcx, %rax
movq 0x48(%rsp), %rdx
movq 0x10(%rsp), %rsi
movq 0x28(%rsp), %rcx
jb 0x1e4a98
movq %rax, %r8
cmpq %rax, %rdi
movq %rdi, 0xc8(%rsp)
cmovbq %rdi, %r8
movq %rdx, %rax
movq %r8, 0x8(%rsp)
subq %r8, %rax
jb 0x1e4a7a
movq 0x8(%rsp), %rdi
addq %rdi, %rcx
cmpq %rax, %rcx
ja 0x1e4a7a
addq %rsi, %rdx
movq %rdx, 0x48(%rsp)
cmpq $0x0, 0x8(%rsp)
movq 0xa8(%rsp), %r14
je 0x1e42f4
movq 0x18(%rsp), %rax
movq 0x48(%rax), %rbx
movq 0x48(%rsp), %r15
subq 0x8(%rsp), %r15
xorl %r13d, %r13d
movq %rbx, %rdi
movq %r14, %rsi
movq %r13, %rdx
callq 0x1fc965
movq %rax, %rbp
movq %rbx, %rdi
movq %r15, %rsi
movq %r13, %rdx
callq 0x1fc965
movq %rbx, %rdi
movq %r14, %rsi
movq %r13, %rdx
movq %rax, %rcx
callq 0x1fc9e1
movq %rbx, %rdi
movq %r15, %rsi
movq %r13, %rdx
movq %rbp, %rcx
callq 0x1fc9e1
incq %r13
cmpq %r13, 0x8(%rsp)
jne 0x1e42a9
movq 0x88(%rsp), %rax
cmpq %rax, 0x28(%rsp)
movq 0x18(%rsp), %r15
leaq 0x50(%rsp), %rbp
movq 0x90(%rsp), %rbx
movq 0x20(%rsp), %r14
movq 0xd0(%rsp), %r13
je 0x1e43c6
movq 0x38(%r15), %rax
testq %rax, %rax
je 0x1e43a7
movq 0x8(%rax), %rdx
testq %rdx, %rdx
je 0x1e4aac
movq 0x10(%rsp), %rcx
addq %r13, %rcx
addq 0x20(%rax), %rcx
cmpq 0x10(%rax), %rcx
jae 0x1e4aac
movq (%rax), %rsi
testq %rsi, %rsi
je 0x1e436f
movabsq $-0x8000000000000000, %rdi # imm = 0x8000000000000000
shrq %cl, %rdi
shrq $0x6, %rcx
orq %rdi, (%rsi,%rcx,8)
movl 0x74(%rsp), %ecx
addq 0x30(%rsp), %rcx
movq %rcx, %rsi
shrq $0x20, %rsi
jne 0x1e4abb
movq 0x20(%rax), %rsi
leaq (%rdx,%rsi,4), %rdx
movq 0x10(%rsp), %rsi
leaq (%rdx,%rsi,4), %rdx
movl %ecx, (%rdx,%r13,4)
cmpq $0xff, %rcx
jb 0x1e43a7
incq 0x18(%rax)
cmpq $0x1, %r13
je 0x1e43c6
movl 0x40(%rsp), %ecx
addq 0x30(%rsp), %rcx
movq %r15, %rdi
movq 0x10(%rsp), %rsi
movq %r13, %rdx
callq 0x1e5281
movq 0x48(%r15), %rdi
movq 0x10(%rsp), %rsi
movq %r13, %rdx
callq 0x1fc965
addq 0x30(%rsp), %rax
cmpq 0xb0(%r15), %rax
jae 0x1e4439
movq (%r15), %rdi
movl 0x18(%r15), %edx
movq %rax, %rsi
callq 0xe7bbc
cmpb $-0x3, %al
ja 0x1e4439
movq 0x28(%rsp), %rcx
addq 0x80(%rsp), %rcx
subq %r14, %rcx
subq %r13, %rcx
cmpq $0x2, %rcx
jb 0x1e4439
movq %rcx, %rdx
addq 0x10(%rsp), %r13
movq 0x30(%rsp), %rax
leaq 0x20(%rax), %rcx
incq %rax
cmpb $0x0, 0x47(%rsp)
cmovneq %rax, %rcx
movq %r15, %rdi
movq %r13, %rsi
callq 0x1e5281
cmpq %rbx, %r14
movq 0x48(%rsp), %rsi
movq %rbp, %r14
movq 0xc8(%rsp), %rdx
je 0x1e4a43
movq 0x38(%r15), %rax
testq %rax, %rax
je 0x1e44e6
movq 0x8(%rax), %r10
testq %r10, %r10
je 0x1e4aa7
movq 0x80(%rsp), %rcx
subq %rdx, %rcx
movq %rcx, %r9
incq %rcx
addq 0x10(%rsp), %rcx
addq 0x20(%rax), %rcx
cmpq 0x10(%rax), %rcx
jae 0x1e4aa7
movq (%rax), %r8
testq %r8, %r8
je 0x1e44ad
movabsq $-0x8000000000000000, %rdi # imm = 0x8000000000000000
shrq %cl, %rdi
shrq $0x6, %rcx
orq %rdi, (%r8,%rcx,8)
movl 0x38(%rsp), %ecx
addq 0x30(%rsp), %rcx
movq %rcx, %rdi
shrq $0x20, %rdi
jne 0x1e4ac0
movq 0x20(%rax), %rdi
leaq (%r10,%rdi,4), %r8
movq 0x10(%rsp), %rdi
leaq (%r8,%rdi,4), %rdi
movl %ecx, 0x4(%rdi,%r9,4)
cmpq $0xff, %rcx
jb 0x1e44e6
incq 0x18(%rax)
cmpq $0x1, %rdx
je 0x1e4a43
subq %rdx, %rsi
movl 0x78(%rsp), %eax
movq 0x30(%rsp), %rcx
addq %rax, %rcx
movq %r15, %rdi
callq 0x1e5281
jmp 0x1e4a43
movq 0x48(%r15), %rdi
movq 0x10(%rsp), %rsi
movq %r13, %rdx
callq 0x1fc965
movq %rax, 0xc0(%rsp)
addq 0x30(%rsp), %rax
cmpq 0xb0(%r15), %rax
jae 0x1e454b
movq (%r15), %rdx
movq 0x8(%r15), %rsi
movl 0x18(%r15), %ecx
movq %r12, %rdi
movq %rax, %r8
callq 0xeca81
jmp 0x1e4562
movq $0x0, 0xb0(%rsp)
movl $0x0, 0xb8(%rsp)
movq 0x40(%r15), %rax
cmpq 0x10(%rax), %r14
jb 0x1e4aca
incq 0x88(%r15)
xorl %r14d, %r14d
movq $0x0, 0x20(%rsp)
movq $0x0, 0x28(%rsp)
xorl %ebp, %ebp
movl $0x0, 0x8(%rsp)
movl $0x0, 0x38(%rsp)
movq 0x48(%r15), %rdi
cmpq %rbp, %r13
jne 0x1e45d2
movq 0x10(%rsp), %rsi
movq %r13, %rdx
callq 0x1fc965
movq 0x2d8(%r15), %rcx
movq %r13, %rdx
shlq $0x4, %rdx
movq %rax, (%rcx,%rdx)
movw $0x20, 0x8(%rcx,%rdx)
jmp 0x1e46d5
movq 0x10(%rsp), %rsi
movq %rbp, %rdx
callq 0x1fc965
movq 0x2d8(%r15), %rcx
movq %rax, (%rcx,%r14)
movq %rax, 0x60(%rsp)
addq 0x30(%rsp), %rax
cmpq 0xb0(%r15), %rax
jae 0x1e461a
movq (%r15), %rdx
movq 0x8(%r15), %rsi
movl 0x18(%r15), %ecx
leaq 0x50(%rsp), %rbx
movq %rbx, %rdi
movq %rax, %r8
callq 0xeca81
jmp 0x1e4630
movq $0x0, 0x50(%rsp)
movl $0x0, 0x58(%rsp)
leaq 0x50(%rsp), %rbx
movzbl 0x1c(%r15), %edi
movzbl 0x1d(%r15), %esi
leaq 0x98(%rsp), %rdx
movq %rbx, %rcx
movq %r12, %r8
callq 0xed110
movl 0x98(%rsp), %edx
cmpq $0x21, %rdx
jae 0x1e4a75
movq 0x2d8(%r15), %rcx
movb %dl, 0x8(%rcx,%r14)
testl %eax, %eax
jle 0x1e4699
cmpl $0x20, %edx
je 0x1e4a7f
incq 0x1c0(%r15,%rdx,8)
movl 0x8(%rsp), %eax
cmpl %edx, %eax
cmovbel %edx, %eax
movl %eax, 0x8(%rsp)
movb $0x1, 0x9(%rcx,%r14)
incq 0x20(%rsp)
jmp 0x1e46d5
js 0x1e46ac
cmpl $0x20, %edx
jne 0x1e4ab1
movb $0x0, 0x9(%rcx,%r14)
jmp 0x1e46d5
cmpl $0x20, %edx
je 0x1e4ab6
incq 0xc0(%r15,%rdx,8)
movl 0x38(%rsp), %eax
cmpl %edx, %eax
cmovbel %edx, %eax
movl %eax, 0x38(%rsp)
movb $-0x1, 0x9(%rcx,%r14)
incq 0x28(%rsp)
incq %rbp
addq $0x10, %r14
cmpq %rbp, 0x48(%rsp)
jne 0x1e459e
movl 0x38(%rsp), %eax
movl %eax, %ebp
testl %eax, %eax
je 0x1e4712
movq 0xc0(%r15), %rax
xorl %edx, %edx
addq 0xc8(%r15,%rdx,8), %rax
movq %rax, 0xc8(%r15,%rdx,8)
incq %rdx
cmpq %rdx, %rbp
jne 0x1e46fa
movl 0x8(%rsp), %eax
movl %eax, %esi
testl %eax, %eax
movq 0x10(%rsp), %r13
je 0x1e4742
movq 0x1c0(%r15), %rax
xorl %edx, %edx
addq 0x1c8(%r15,%rdx,8), %rax
movq %rax, 0x1c8(%r15,%rdx,8)
incq %rdx
cmpq %rdx, %rsi
jne 0x1e472a
movq %rsi, 0x8(%rsp)
movq 0x48(%rsp), %rax
shlq $0x4, %rax
leaq (%rcx,%rax), %r14
addq $-0x10, %r14
cmpq %rcx, %r14
jb 0x1e47f1
movq 0x48(%rsp), %rbx
subq 0x20(%rsp), %rbx
movzbl 0x9(%r14), %eax
testl %eax, %eax
je 0x1e47cb
cmpl $0x1, %eax
je 0x1e479e
cmpl $0xff, %eax
jne 0x1e47e0
movzbl 0x8(%r14), %eax
movq 0xc0(%r15,%rax,8), %rdx
decq %rdx
movq %rdx, 0xc0(%r15,%rax,8)
movq 0x48(%r15), %rdi
jmp 0x1e47c3
movzbl 0x8(%r14), %eax
movq 0x1c0(%r15,%rax,8), %rcx
leaq -0x1(%rcx), %rdx
movq %rdx, 0x1c0(%r15,%rax,8)
movq 0x48(%r15), %rdi
movq 0x48(%rsp), %rdx
subq %rcx, %rdx
movq (%r14), %rcx
movq %r13, %rsi
jmp 0x1e47db
movq 0x48(%r15), %rdi
decq %rbx
movq (%r14), %rcx
movq %r13, %rsi
movq %rbx, %rdx
callq 0x1fc9e1
addq $-0x10, %r14
cmpq 0x2d8(%r15), %r14
jae 0x1e476b
leaq 0x1(%rbp), %rbx
xorl %r14d, %r14d
movq 0x28(%rsp), %r15
cmpq %rbp, %r14
jae 0x1e480f
movq 0x18(%rsp), %rax
movq 0xc8(%rax,%r14,8), %r15
movq 0x18(%rsp), %r13
movq 0xc0(%r13,%r14,8), %rsi
leaq 0x1(%rsi), %rax
cmpq %r15, %rax
jae 0x1e4841
movq %r15, %rdx
subq %rsi, %rdx
addq 0x10(%rsp), %rsi
movq 0x30(%rsp), %rax
leaq (%rax,%r14), %rcx
movq %r13, %rdi
callq 0x1e5281
movq 0x38(%r13), %rax
testq %rax, %rax
je 0x1e48d5
cmpq %r15, 0xc0(%r13,%r14,8)
jae 0x1e48d5
movq 0x8(%rax), %rdx
testq %rdx, %rdx
movq 0x10(%rsp), %r9
je 0x1e4a6b
leaq (%r15,%r9), %rcx
addq 0x20(%rax), %rcx
cmpq 0x10(%rax), %rcx
jae 0x1e4a6b
movq (%rax), %rsi
testq %rsi, %rsi
movq 0x30(%rsp), %r8
je 0x1e489e
movabsq $-0x8000000000000000, %rdi # imm = 0x8000000000000000
shrq %cl, %rdi
shrq $0x6, %rcx
orq %rdi, (%rsi,%rcx,8)
leaq (%r8,%r14), %rcx
movq %rcx, %rsi
shrq $0x20, %rsi
jne 0x1e4a84
leal (%r8,%r14), %esi
movq 0x20(%rax), %rdi
leaq (%rdx,%rdi,4), %rdx
leaq (%rdx,%r9,4), %rdx
movl %esi, (%rdx,%r15,4)
cmpq $0xff, %rcx
movq 0x18(%rsp), %r13
jb 0x1e48d5
incq 0x18(%rax)
movq $0x0, 0xc0(%r13,%r14,8)
incq %r14
cmpq %r14, %rbx
jne 0x1e47f8
movq 0x20(%rsp), %rax
movq 0x28(%rsp), %rsi
addq %rsi, %rax
movq 0x48(%rsp), %rbx
movq %rbx, %rdx
subq %rax, %rdx
cmpq $0x2, %rdx
movq 0x10(%rsp), %r14
jb 0x1e4924
addq %r14, %rsi
movq 0x30(%rsp), %rax
leaq 0x20(%rax), %rcx
movq %r13, %rdi
callq 0x1e5281
addq %r14, %rbx
movq 0x8(%rsp), %rax
leaq 0x1(%rax), %r14
xorl %ebp, %ebp
movq 0x20(%rsp), %r15
cmpq 0x8(%rsp), %rbp
jae 0x1e494b
movq 0x18(%rsp), %rax
movq 0x1c8(%rax,%rbp,8), %r15
movq 0x18(%rsp), %r13
movq 0x1c0(%r13,%rbp,8), %rax
leaq 0x1(%rax), %rcx
cmpq %r15, %rcx
jae 0x1e497e
movq %r15, %rdx
subq %rax, %rdx
movq %rbx, %rsi
subq %r15, %rsi
movq 0x30(%rsp), %rax
leaq (%rax,%rbp), %rcx
movq %r13, %rdi
callq 0x1e5281
movq 0x38(%r13), %rax
testq %rax, %rax
je 0x1e4a23
cmpq %r15, 0x1c0(%r13,%rbp,8)
jae 0x1e4a23
movq 0x48(%rsp), %rdx
subq %r15, %rdx
jb 0x1e4a8e
movq 0x8(%rax), %rsi
testq %rsi, %rsi
movq 0x30(%rsp), %r9
movq 0x10(%rsp), %r10
je 0x1e4a70
leaq (%rdx,%r10), %rcx
addq 0x20(%rax), %rcx
cmpq 0x10(%rax), %rcx
jae 0x1e4a70
movq (%rax), %rdi
testq %rdi, %rdi
je 0x1e49ed
movabsq $-0x8000000000000000, %r8 # imm = 0x8000000000000000
shrq %cl, %r8
shrq $0x6, %rcx
orq %r8, (%rdi,%rcx,8)
leaq (%r9,%rbp), %rcx
movq %rcx, %rdi
shrq $0x20, %rdi
jne 0x1e4a89
leal (%r9,%rbp), %edi
movq 0x20(%rax), %r8
leaq (%rsi,%r8,4), %rsi
leaq (%rsi,%r10,4), %rsi
movl %edi, (%rsi,%rdx,4)
cmpq $0xff, %rcx
movq 0x18(%rsp), %r13
jb 0x1e4a23
incq 0x18(%rax)
movq $0x0, 0x1c0(%r13,%rbp,8)
incq %rbp
cmpq %rbp, %r14
jne 0x1e4932
movq %r13, %r15
leaq 0x50(%rsp), %r14
movq 0x30(%r15), %rax
testq %rax, %rax
jne 0x1e3471
movq 0x48(%r15), %rdi
callq 0x1fcb23
addq $0xd8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0x756f5
callq 0x75763
callq 0x755da
callq 0x758e8
callq 0x75685
callq 0x756be
callq 0x7572c
callq 0x7579a
callq 0x759cc
callq 0x75921
callq 0x75993
callq 0x7595a
callq 0x758b1
callq 0x75843
callq 0x75613
callq 0x7564c
callq 0x7580c
callq 0x7587a
callq 0x755a1
callq 0x757d3