// File: /workspace/github_c_makefile_star2_O3/genometools[P]genometools/src/match/sfx-shortreadsort.c
// Function: shortread_gt_inlinedarr_qsort_r
static void QSORTNAME(gt_inlinedarr_qsort_r) (
                                   GtUword insertionsortthreshold,
                                   bool handlenotswapped,
                                   GtUword len,
                                   QSORTNAME(Datatype) data,
                                   GtUword depth,
                                   GtUword subbucketleft)
{
  GtUword pa, pb, pc, pd, pl, pm, pn, aidx, bidx, s,
                smallermaxlcp, greatermaxlcp;
  GtShortreadsort tmp;
  int r;
  bool swapped;
  GtStackIntervalarrtobesorted intervalstack;
  Intervalarrtobesorted current;

  GT_STACK_INIT(&intervalstack,32UL);
  current.startindex = 0;
  current.len = len;
  GT_STACK_PUSH(&intervalstack,current);
  if (insertionsortthreshold <= 2UL)
  {
    insertionsortthreshold = 6UL;
  }
  while (!GT_STACK_ISEMPTY(&intervalstack))
  {
    swapped = false;
    current = GT_STACK_POP(&intervalstack);
    if (current.len <= insertionsortthreshold)
    {
      for (pm = current.startindex + 1;
           pm < current.startindex + current.len; pm++)
      {
        for (pl = pm; pl > current.startindex; pl--)
        {
          r = QSORTNAME(qsortcmparr) (pl - 1, pl, data);
          if (data->mediumsizelcpvalues != NULL)
          {
            if (pl < pm && r > 0)
            {
              data->mediumsizelcpvalues[pl+1] = data->mediumsizelcpvalues[pl];
            }
            gt_assert(depth + data->tmplcplen <= UINT16_MAX);
            data->mediumsizelcpvalues[pl]
              = (uint16_t) (depth + data->tmplcplen);
          } else
          {
            if (data->sssplcpvalues != NULL)
            {
              if (pl < pm && r > 0)
              {
                gt_lcptab_update(data->sssplcpvalues,subbucketleft,pl+1,
                                 gt_lcptab_getvalue(data->sssplcpvalues,
                                                       subbucketleft,pl));
              }
              gt_lcptab_update(data->sssplcpvalues,subbucketleft,pl,
                               depth + data->tmplcplen);
            }
          }
          if (r <= 0)
          {
            break;
          }
          GT_QSORT_ARR_SWAP (arr, pl, pl - 1);
        }
      }
      continue;
    }
    pm = current.startindex + GT_DIV2 (current.len);
    if (current.len > 7UL)
    {
      pl = current.startindex;
      pn = current.startindex + current.len - 1;
      if (current.len > 40UL)
      {
        s = GT_DIV8 (current.len);
        pl = QSORTNAME(gt_inlined_qsort_arr_r_med3) (pl, pl + s,
                                                     pl + GT_MULT2 (s), data);
        gt_assert(pm >= s);
        pm = QSORTNAME(gt_inlined_qsort_arr_r_med3) (pm - s, pm,
                                                     pm + s, data);
        gt_assert(pn >= GT_MULT2(s));
        pn = QSORTNAME(gt_inlined_qsort_arr_r_med3) (pn - GT_MULT2 (s),
                                                     pn - s, pn, data);
      }
      pm = QSORTNAME(gt_inlined_qsort_arr_r_med3) (pl, pm, pn, data);
    }
    GT_QSORT_ARR_SWAP (arr, current.startindex, pm);
    pa = pb = current.startindex + 1;
    pc = pd = current.startindex + current.len - 1;
    smallermaxlcp = greatermaxlcp = 0;
    while (1)
    {
      while (pb <= pc)
      {
        r = QSORTNAME(qsortcmparr) (pb, current.startindex, data);
        if (r > 0)
        {
          GT_UPDATE_MAX(greatermaxlcp,data->tmplcplen);
          break;
        }
        if (r == 0)
        {
          swapped = true;
          GT_QSORT_ARR_SWAP (arr, pa, pb);
          pa++;
        } else
        {
          GT_UPDATE_MAX(smallermaxlcp,data->tmplcplen);
        }
        pb++;
      }
      while (pb <= pc)
      {
        r = QSORTNAME(qsortcmparr) (pc, current.startindex, data);
        if (r < 0)
        {
          GT_UPDATE_MAX(smallermaxlcp,data->tmplcplen);
          break;
        }
        if (r == 0)
        {
          swapped = true;
          GT_QSORT_ARR_SWAP (arr, pc, pd);
          gt_assert(pd > 0);
          pd--;
        } else
        {
          GT_UPDATE_MAX(greatermaxlcp,data->tmplcplen);
        }
        gt_assert(pc > 0);
        pc--;
      }
      if (pb > pc)
      {
        break;
      }
      GT_QSORT_ARR_SWAP (arr, pb, pc);
      swapped = true;
      pb++;
      gt_assert(pc > 0);
      pc--;
    }
    /* The following switch is not explained in the above mentioned
       paper and therefore we ignore it. */
    if (handlenotswapped && !swapped)
    {                                  /* Switch to insertion sort */
      gt_assert(current.len <= 40UL);
      for (pm = current.startindex + 1;
           pm < current.startindex + current.len; pm++)
      {
        for (pl = pm; pl > current.startindex; pl--)
        {
          r = QSORTNAME(qsortcmparr) (pl - 1, pl, data);
          if (r <= 0)
          {
            break;
          }
          GT_QSORT_ARR_SWAP (arr, pl, pl - 1);
        }
      }
      continue;
    }
    pn = current.startindex + current.len;
    gt_assert(pa >= current.startindex && pb >= pa);
    s = GT_MIN ((GtUword) (pa - current.startindex),
             (GtUword) (pb - pa));
    gt_assert(pb >= s);
    GT_QSORT_ARR_VECSWAP (arr, current.startindex, pb - s, s);
    gt_assert(pd >= pc && pn > pd);
    s = GT_MIN ((GtUword) (pd - pc), (GtUword) (pn - pd - 1));
    gt_assert(pn > s);
    GT_QSORT_ARR_VECSWAP (arr, pb, pn - s, s);
    gt_assert(pb >= pa);
    if ((s = (GtUword) (pb - pa)) > 0)
    {
      if (data->mediumsizelcpvalues != NULL)
      {
        gt_assert(depth + smallermaxlcp <= UINT16_MAX);
        data->mediumsizelcpvalues[current.startindex + s]
          = (uint16_t) (depth + smallermaxlcp);
      } else
      {
        if (data->sssplcpvalues != 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(data->sssplcpvalues,
                           subbucketleft,current.startindex + s,
                           depth + smallermaxlcp);
        }
      }
      if (s > 1UL)
      {
        current.len = s;
        GT_STACK_PUSH(&intervalstack,current);
      }
    }
    gt_assert(pd >= pc);
    if ((s = (GtUword) (pd - pc)) > 0)
    {
      if (data->mediumsizelcpvalues != NULL)
      {
        gt_assert (depth + greatermaxlcp <= UINT16_MAX);
        data->mediumsizelcpvalues[pn - s] = (uint16_t) (depth + greatermaxlcp);
      } else
      {
        if (data->sssplcpvalues != 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_assert(pn >= s);
          gt_lcptab_update(data->sssplcpvalues,subbucketleft,pn - s,
                           depth + greatermaxlcp);
        }
      }
      if (s > 1UL)
      {
        gt_assert(pn >= s);
        current.startindex = pn - s;
        current.len = s;
        GT_STACK_PUSH(&intervalstack,current);
      }
    }
  }
  GT_STACK_DELETE(&intervalstack);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x298, %rsp            # imm = 0x298
movq %rdx, 0x40(%rsp)
movq %rsi, %r15
movl $0x20, %eax
leaq 0x88(%rsp), %rdx
movq %rax, -0x10(%rdx)
movq %rax, -0x8(%rdx)
movq %rax, -0x28(%rdx)
movq %rdx, 0x200(%rdx)
xorl %eax, %eax
movq %rax, 0x208(%rdx)
movq %rax, (%rdx)
movq %rdi, 0x8(%rdx)
movq $0x1, -0x20(%rdx)
movq %rcx, 0x38(%rsp)
leaq (,%rcx,4), %rax
movq %rax, 0x50(%rsp)
movl $0x1, %eax
movq 0x288(%rsp), %rcx
decq %rax
movq %rax, 0x70(%rsp)
shlq $0x4, %rax
movq (%rcx,%rax), %rsi
movq 0x8(%rcx,%rax), %r14
cmpq $0x6, %r14
movq %rsi, 0x8(%rsp)
ja 0x1f5a3d
addq %rsi, %r14
leaq 0x1(%rsi), %rbx
cmpq %r14, %rbx
jae 0x1f60c3
movq %rsi, %rbp
shlq $0x4, %rbp
movq %rsi, 0x10(%rsp)
movq %r14, 0x30(%rsp)
cmpq %rsi, %rbx
jbe 0x1f5a1e
movq 0x10(%rsp), %r12
movq %rbp, %r14
leaq 0x1(%r12), %r13
movq %r12, %rdi
movq %r13, %rsi
movq %r15, %rdx
callq 0x1f679e
movq 0x10(%r15), %rcx
testq %rcx, %rcx
je 0x1f58ab
cmpq %rbx, %r13
setb %dl
testl %eax, %eax
setg %sil
andb %dl, %sil
cmpb $0x1, %sil
jne 0x1f5842
movzwl 0x2(%rcx,%r12,2), %edx
movw %dx, 0x4(%rcx,%r12,2)
movq 0x38(%r15), %rdx
addq 0x40(%rsp), %rdx
cmpq $0x10000, %rdx          # imm = 0x10000
jae 0x1f6353
movw %dx, 0x2(%rcx,%r12,2)
testl %eax, %eax
movq 0x8(%rsp), %rsi
jle 0x1f5a1e
movq (%r15), %rax
movups 0x10(%rax,%r14), %xmm0
movaps %xmm0, 0x20(%rsp)
movups (%rax,%r14), %xmm0
movups %xmm0, 0x10(%rax,%r14)
movq (%r15), %rax
movaps 0x20(%rsp), %xmm0
movups %xmm0, (%rax,%r14)
addq $-0x10, %r14
leaq -0x1(%r12), %rax
cmpq %rsi, %r12
movq %rax, %r12
ja 0x1f5801
jmp 0x1f5a1e
movq 0x8(%r15), %rdx
testq %rdx, %rdx
je 0x1f585e
cmpq %rbx, %r13
setb %cl
testl %eax, %eax
setg %sil
andb %cl, %sil
cmpb $0x1, %sil
jne 0x1f595b
movq 0x8(%rdx), %rsi
testq %rsi, %rsi
je 0x1f6362
movq 0x10(%rdx), %r9
movq 0x20(%rdx), %rdi
movq 0x38(%rsp), %rcx
leaq (%rcx,%r12), %r10
leaq (%rdi,%r10), %rcx
incq %rcx
cmpq %r9, %rcx
jae 0x1f6362
movq (%rdx), %r8
testq %r8, %r8
je 0x1f596e
movabsq $-0x8000000000000000, %r11 # imm = 0x8000000000000000
shrq %cl, %r11
shrq $0x6, %rcx
testq %r11, (%r8,%rcx,8)
movq 0x50(%rsp), %r11
je 0x1f6376
leaq (%rdi,%r10), %rcx
addq $0x2, %rcx
cmpq %r9, %rcx
jae 0x1f636c
leaq (%rsi,%rdi,4), %rdi
addq %r11, %rdi
movl 0x4(%rdi,%r12,4), %r9d
movabsq $-0x8000000000000000, %rdi # imm = 0x8000000000000000
shrq %cl, %rdi
shrq $0x6, %rcx
orq %rdi, (%r8,%rcx,8)
movq 0x20(%rdx), %rdi
jmp 0x1f5990
movq 0x8(%rdx), %rsi
testq %rsi, %rsi
movq 0x50(%rsp), %r11
jne 0x1f59a9
jmp 0x1f6358
leaq (%rdi,%r10), %rcx
addq $0x2, %rcx
cmpq %r9, %rcx
movq 0x50(%rsp), %r11
jae 0x1f636c
leaq (%rsi,%rdi,4), %rcx
addq %r11, %rcx
movl 0x4(%rcx,%r12,4), %r9d
leaq (%rsi,%rdi,4), %rcx
addq %r11, %rcx
movl %r9d, 0x8(%rcx,%r12,4)
cmpl $0xff, %r9d
jb 0x1f59a9
incq 0x18(%rdx)
movq 0x20(%rdx), %rcx
movq 0x38(%rsp), %rdi
addq %r12, %rdi
addq %rdi, %rcx
incq %rcx
cmpq 0x10(%rdx), %rcx
jae 0x1f6358
movq 0x38(%r15), %rdi
addq 0x40(%rsp), %rdi
movq (%rdx), %r8
testq %r8, %r8
je 0x1f59eb
movabsq $-0x8000000000000000, %r9 # imm = 0x8000000000000000
shrq %cl, %r9
shrq $0x6, %rcx
orq %r9, (%r8,%rcx,8)
movq %rdi, %rcx
shrq $0x20, %rcx
jne 0x1f635d
movq 0x20(%rdx), %rcx
leaq (%rsi,%rcx,4), %rcx
addq %r11, %rcx
movl %edi, 0x4(%rcx,%r12,4)
cmpq $0xff, %rdi
jb 0x1f585e
incq 0x18(%rdx)
jmp 0x1f585e
incq %rbx
addq $0x10, %rbp
incq 0x10(%rsp)
movq 0x30(%rsp), %r14
cmpq %r14, %rbx
jne 0x1f57f0
jmp 0x1f60c3
movq %r14, %r13
shrq %r13
addq %rsi, %r13
cmpq $0x7, %r14
je 0x1f5c69
leaq (%r14,%rsi), %rbp
decq %rbp
cmpq $0x29, %r14
jb 0x1f5ac2
movq %rbp, 0x30(%rsp)
movq %r14, %rbx
shrq $0x3, %rbx
leaq (%rbx,%rsi), %rbp
leaq (%rsi,%rbx,2), %rax
movq %rax, 0x18(%rsp)
movq %rsi, %rdi
movq %rbp, %rsi
movq %r15, %rdx
callq 0x1f679e
movl %eax, %r12d
movq %rbp, 0x10(%rsp)
movq %rbp, %rdi
movq 0x18(%rsp), %rbp
movq %rbp, %rsi
movq %r15, %rdx
callq 0x1f679e
testl %r12d, %r12d
js 0x1f5aca
testl %eax, %eax
movq 0x8(%rsp), %rdi
jg 0x1f5aeb
movq %rbp, %rsi
movq %r15, %rdx
callq 0x1f679e
testl %eax, %eax
cmovsq 0x8(%rsp), %rbp
jmp 0x1f5ae6
movq %rsi, %rbx
jmp 0x1f5bf9
testl %eax, %eax
movq 0x8(%rsp), %rdi
js 0x1f5aeb
movq %rbp, %rsi
movq %r15, %rdx
callq 0x1f679e
testl %eax, %eax
cmovnsq 0x8(%rsp), %rbp
movq %rbp, 0x10(%rsp)
movq %r13, %r12
subq %rbx, %r12
movq 0x30(%rsp), %rbp
jb 0x1f63a3
movq %rbx, 0x18(%rsp)
addq %r13, %rbx
movq %r12, %rdi
movq %r13, %rsi
movq %r15, %rdx
callq 0x1f679e
movl %eax, 0x48(%rsp)
movq %r13, %rdi
movq %rbx, 0x58(%rsp)
movq %rbx, %rsi
movq %r15, %rdx
callq 0x1f679e
cmpl $0x0, 0x48(%rsp)
js 0x1f5b4f
testl %eax, %eax
jg 0x1f5b6f
movq %r12, %rdi
movq 0x58(%rsp), %r13
movq %r13, %rsi
movq %r15, %rdx
callq 0x1f679e
testl %eax, %eax
cmovsq %r12, %r13
jmp 0x1f5b6f
testl %eax, %eax
js 0x1f5b6f
movq %r12, %rdi
movq 0x58(%rsp), %rbx
movq %rbx, %rsi
movq %r15, %rdx
callq 0x1f679e
testl %eax, %eax
cmovsq %rbx, %r12
movq %r12, %r13
movq 0x18(%rsp), %rcx
leaq (%rcx,%rcx), %rax
movq %rbp, %r12
subq %rax, %r12
jb 0x1f639e
movq %rbp, %rbx
subq %rcx, %rbx
movq %r12, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x1f679e
movl %eax, 0x18(%rsp)
movq %rbx, 0x48(%rsp)
movq %rbx, %rdi
movq %rbp, %rsi
movq %r15, %rdx
callq 0x1f679e
cmpl $0x0, 0x18(%rsp)
js 0x1f5bd5
testl %eax, %eax
movq 0x10(%rsp), %rbx
jg 0x1f5bf4
movq %r12, %rdi
movq %rbp, %rsi
movq %r15, %rdx
callq 0x1f679e
testl %eax, %eax
cmovsq %r12, %rbp
jmp 0x1f5bf9
testl %eax, %eax
movq 0x10(%rsp), %rbx
js 0x1f5bf4
movq %r12, %rdi
movq %rbp, %rsi
movq %r15, %rdx
callq 0x1f679e
testl %eax, %eax
cmovnsq %r12, %rbp
jmp 0x1f5bf9
movq 0x48(%rsp), %rbp
movq %rbx, %rdi
movq %r13, %rsi
movq %r15, %rdx
callq 0x1f679e
movl %eax, %r12d
movq %r13, %rdi
movq %rbp, %rsi
movq %r15, %rdx
callq 0x1f679e
testl %r12d, %r12d
js 0x1f5c44
testl %eax, %eax
movq 0x8(%rsp), %rsi
jg 0x1f5c69
movq %rbx, %rdi
movq %rbp, %rsi
movq %r15, %rdx
callq 0x1f679e
movq 0x8(%rsp), %rsi
testl %eax, %eax
cmovsq %rbx, %rbp
movq %rbp, %r13
jmp 0x1f5c69
testl %eax, %eax
movq 0x8(%rsp), %rsi
js 0x1f5c69
movq %rbx, %rdi
movq %rbp, %rsi
movq %r15, %rdx
callq 0x1f679e
movq 0x8(%rsp), %rsi
testl %eax, %eax
cmovsq %rbp, %rbx
movq %rbx, %r13
cmpq %r13, %rsi
je 0x1f5c9b
movq (%r15), %rax
movq %rsi, %rcx
shlq $0x4, %rcx
movups (%rax,%rcx), %xmm0
movaps %xmm0, 0x20(%rsp)
shlq $0x4, %r13
movups (%rax,%r13), %xmm0
movups %xmm0, (%rax,%rcx)
movq (%r15), %rax
movaps 0x20(%rsp), %xmm0
movups %xmm0, (%rax,%r13)
leaq 0x1(%rsi), %r12
movq %r14, %rax
addq %rsi, %r14
decq %r14
addq %rsi, %rax
movq %rax, 0x30(%rsp)
movq $0x0, 0x10(%rsp)
xorl %ebx, %ebx
movq %r14, %r13
movq %r12, %rax
cmpq %r13, %r12
movq %rax, 0x18(%rsp)
ja 0x1f5d5f
movq %r12, %rbp
shlq $0x4, %rbp
movq %r12, %rdi
movq %r15, %rdx
callq 0x1f679e
testl %eax, %eax
jg 0x1f5d4f
je 0x1f5d03
movq 0x38(%r15), %rax
movq 0x10(%rsp), %rcx
cmpq %rax, %rcx
cmovbeq %rax, %rcx
movq %rcx, 0x10(%rsp)
movq 0x8(%rsp), %rsi
jmp 0x1f5d41
movq 0x18(%rsp), %rdx
cmpq %rdx, %r12
movq 0x8(%rsp), %rsi
je 0x1f5d39
movq (%r15), %rax
movq %rdx, %rcx
shlq $0x4, %rcx
movups (%rax,%rcx), %xmm0
movaps %xmm0, 0x20(%rsp)
movups (%rax,%rbp), %xmm0
movups %xmm0, (%rax,%rcx)
movq (%r15), %rax
movaps 0x20(%rsp), %xmm0
movups %xmm0, (%rax,%rbp)
incq %rdx
movq %rdx, 0x18(%rsp)
incq %r12
addq $0x10, %rbp
cmpq %r13, %r12
jbe 0x1f5cd6
jmp 0x1f5d5f
movq 0x38(%r15), %rax
cmpq %rax, %rbx
cmovbeq %rax, %rbx
movq 0x8(%rsp), %rsi
cmpq %r13, %r12
ja 0x1f5e45
movq %r13, %rbp
shlq $0x4, %rbp
movq %r13, %rdi
movq %r15, %rdx
callq 0x1f679e
testl %eax, %eax
js 0x1f5de6
je 0x1f5d92
movq 0x38(%r15), %rax
cmpq %rax, %rbx
cmovbeq %rax, %rbx
movq 0x8(%rsp), %rsi
jmp 0x1f5dcf
cmpq %r14, %r13
movq 0x8(%rsp), %rsi
je 0x1f5dc3
movq (%r15), %rax
movups (%rax,%rbp), %xmm0
movaps %xmm0, 0x20(%rsp)
movq %r14, %rcx
shlq $0x4, %rcx
movups (%rax,%rcx), %xmm0
movups %xmm0, (%rax,%rbp)
movq (%r15), %rax
movaps 0x20(%rsp), %xmm0
movups %xmm0, (%rax,%rcx)
testq %r14, %r14
je 0x1f6371
decq %r14
testq %r13, %r13
je 0x1f6367
decq %r13
addq $-0x10, %rbp
cmpq %r13, %r12
jbe 0x1f5d6f
jmp 0x1f5e45
movq 0x38(%r15), %rax
movq 0x10(%rsp), %rcx
cmpq %rax, %rcx
cmovbeq %rax, %rcx
movq %rcx, 0x10(%rsp)
cmpq %r13, %r12
je 0x1f5e27
movq (%r15), %rax
movq %r12, %rcx
shlq $0x4, %rcx
movups (%rax,%rcx), %xmm0
movaps %xmm0, 0x20(%rsp)
movups (%rax,%rbp), %xmm0
movups %xmm0, (%rax,%rcx)
movq (%r15), %rax
movaps 0x20(%rsp), %xmm0
movups %xmm0, (%rax,%rbp)
testq %r13, %r13
movq 0x8(%rsp), %rsi
je 0x1f638f
incq %r12
decq %r13
movq 0x18(%rsp), %rax
jmp 0x1f5cc1
movq 0x18(%rsp), %rcx
movq %rcx, %rax
subq %rsi, %rax
jb 0x1f637b
movq %r12, %r10
subq %rcx, %r10
jb 0x1f637b
cmpq %r10, %rax
cmovaeq %r10, %rax
cmpq %rax, %r12
jb 0x1f6385
testq %rax, %rax
je 0x1f5ebe
movq %r12, %rcx
shlq $0x4, %rcx
movq %rax, %rdx
shlq $0x4, %rdx
subq %rdx, %rcx
movq 0x8(%rsp), %rdx
shlq $0x4, %rdx
movq (%r15), %rsi
movups (%rsi,%rdx), %xmm0
movaps %xmm0, 0x20(%rsp)
movups (%rsi,%rcx), %xmm0
movups %xmm0, (%rsi,%rdx)
movq (%r15), %rsi
movaps 0x20(%rsp), %xmm0
movups %xmm0, (%rsi,%rcx)
addq $0x10, %rcx
addq $0x10, %rdx
decq %rax
jne 0x1f5e91
movq %r14, %rbp
subq %r13, %rbp
movq 0x30(%rsp), %rcx
jb 0x1f638a
cmpq %r14, %rcx
jbe 0x1f638a
movq %r14, %rax
notq %rax
addq %rcx, %rax
cmpq %rax, %rbp
cmovbq %rbp, %rax
subq %rax, %rcx
jbe 0x1f6380
testq %rax, %rax
je 0x1f5f2e
shlq $0x4, %rcx
movq %r12, %rdx
shlq $0x4, %rdx
movq (%r15), %rsi
movups (%rsi,%rdx), %xmm0
movaps %xmm0, 0x20(%rsp)
movups (%rsi,%rcx), %xmm0
movups %xmm0, (%rsi,%rdx)
movq (%r15), %rsi
movaps 0x20(%rsp), %xmm0
movups %xmm0, (%rsi,%rcx)
addq $0x10, %rcx
addq $0x10, %rdx
decq %rax
jne 0x1f5f01
cmpq 0x18(%rsp), %r12
movq 0x8(%rsp), %rdx
je 0x1f608a
movq 0x10(%r15), %rax
testq %rax, %rax
je 0x1f61ea
movq 0x10(%rsp), %rcx
addq 0x40(%rsp), %rcx
cmpq $0x10000, %rcx          # imm = 0x10000
jae 0x1f6394
leaq (%rax,%rdx,2), %rax
movw %cx, (%rax,%r10,2)
cmpq $0x1, %r10
je 0x1f608a
movq 0x70(%rsp), %rax
movq 0x288(%rsp), %rdi
cmpq 0x60(%rsp), %rax
jne 0x1f6063
movq %r10, 0x18(%rsp)
movq %rbp, 0x10(%rsp)
movq 0x80(%rsp), %rsi
addq %rax, %rsi
shlq $0x4, %rsi
cmpq 0x78(%rsp), %rax
movl $0x0, %eax
cmoveq %rax, %rdi
leaq 0x1c3fe5(%rip), %rdx    # 0x3b9fa0
movl $0x20c, %ecx            # imm = 0x20C
callq 0x104461
movq %rax, 0x288(%rsp)
movq 0x60(%rsp), %rdx
cmpq 0x78(%rsp), %rdx
jne 0x1f5fed
shlq $0x4, %rdx
movq %rax, %rdi
leaq 0x88(%rsp), %rsi
callq 0x17660
cmpq $0x0, 0x290(%rsp)
setne %cl
movq 0x80(%rsp), %rax
testq %rax, %rax
setne %dl
andb %cl, %dl
cmpb $0x1, %dl
jne 0x1f6042
xorl %r12d, %r12d
xorl %ebp, %ebp
movq 0x60(%rsp), %rdi
shlq $0x4, %rdi
addq 0x288(%rsp), %rdi
addq %r12, %rdi
callq *0x290(%rsp)
incq %rbp
movq 0x80(%rsp), %rax
addq $0x10, %r12
cmpq %rax, %rbp
jb 0x1f6013
addq %rax, 0x60(%rsp)
movq 0x288(%rsp), %rdi
movq 0x70(%rsp), %rax
movq 0x8(%rsp), %rdx
movq 0x10(%rsp), %rbp
movq 0x18(%rsp), %r10
leaq 0x1(%rax), %rcx
movq %rcx, 0x70(%rsp)
shlq $0x4, %rax
movq %rdx, (%rdi,%rax)
movq %r10, 0x8(%rdi,%rax)
movq 0x70(%rsp), %rax
cmpq %rax, 0x68(%rsp)
jae 0x1f608a
movq %rax, 0x68(%rsp)
cmpq %r13, %r14
movq 0x30(%rsp), %r9
je 0x1f60c3
movq 0x10(%r15), %rax
testq %rax, %rax
je 0x1f6287
addq 0x40(%rsp), %rbx
cmpq $0x10000, %rbx          # imm = 0x10000
jae 0x1f6399
movq %r9, %rcx
subq %rbp, %rcx
movw %bx, (%rax,%rcx,2)
cmpq $0x1, %rbp
jne 0x1f60d6
movq 0x70(%rsp), %rax
testq %rax, %rax
jne 0x1f57a3
jmp 0x1f631c
subq %rbp, %r9
jb 0x1f63a8
movq 0x70(%rsp), %rax
movq 0x288(%rsp), %rdi
cmpq 0x60(%rsp), %rax
jne 0x1f61ba
movq %r9, %r12
movq 0x80(%rsp), %rsi
addq %rax, %rsi
shlq $0x4, %rsi
cmpq 0x78(%rsp), %rax
movl $0x0, %eax
cmoveq %rax, %rdi
leaq 0x1c3e82(%rip), %rdx    # 0x3b9fa0
movl $0x22a, %ecx            # imm = 0x22A
callq 0x104461
movq %rax, 0x288(%rsp)
movq 0x60(%rsp), %rdx
cmpq 0x78(%rsp), %rdx
jne 0x1f6150
shlq $0x4, %rdx
movq %rax, %rdi
leaq 0x88(%rsp), %rsi
callq 0x17660
cmpq $0x0, 0x290(%rsp)
setne %cl
movq 0x80(%rsp), %rax
testq %rax, %rax
setne %dl
andb %cl, %dl
cmpb $0x1, %dl
jne 0x1f61a5
xorl %ebx, %ebx
xorl %r14d, %r14d
movq 0x60(%rsp), %rdi
shlq $0x4, %rdi
addq 0x288(%rsp), %rdi
addq %rbx, %rdi
callq *0x290(%rsp)
incq %r14
movq 0x80(%rsp), %rax
addq $0x10, %rbx
cmpq %rax, %r14
jb 0x1f6176
addq %rax, 0x60(%rsp)
movq 0x288(%rsp), %rdi
movq 0x70(%rsp), %rax
movq %r12, %r9
leaq 0x1(%rax), %rcx
movq %rcx, 0x70(%rsp)
shlq $0x4, %rax
movq %r9, (%rdi,%rax)
movq %rbp, 0x8(%rdi,%rax)
movq 0x70(%rsp), %rax
cmpq %rax, 0x68(%rsp)
jae 0x1f60c8
movq %rax, 0x68(%rsp)
jmp 0x1f60c8
movq 0x8(%r15), %rax
testq %rax, %rax
movq 0x10(%rsp), %r9
je 0x1f5f6b
movq 0x8(%rax), %rdx
testq %rdx, %rdx
je 0x1f63ad
movq 0x8(%rsp), %rcx
leaq (%r10,%rcx), %rsi
movq 0x38(%rsp), %rcx
addq %rsi, %rcx
addq 0x20(%rax), %rcx
cmpq 0x10(%rax), %rcx
jae 0x1f63ad
movq (%rax), %rdi
testq %rdi, %rdi
je 0x1f6245
movabsq $-0x8000000000000000, %r8 # imm = 0x8000000000000000
shrq %cl, %r8
shrq $0x6, %rcx
orq %r8, (%rdi,%rcx,8)
addq 0x40(%rsp), %r9
movq %r9, %rcx
shrq $0x20, %rcx
jne 0x1f63b7
movq 0x20(%rax), %rcx
leaq (%rdx,%rcx,4), %rcx
movq 0x38(%rsp), %rdx
leaq (%rcx,%rdx,4), %rcx
movl %r9d, (%rcx,%rsi,4)
cmpq $0xff, %r9
movq 0x8(%rsp), %rdx
jb 0x1f5f6b
incq 0x18(%rax)
jmp 0x1f5f6b
movq 0x8(%r15), %rax
testq %rax, %rax
je 0x1f60bd
movq %r9, %rdx
subq %rbp, %rdx
jb 0x1f63c1
movq 0x8(%rax), %rsi
testq %rsi, %rsi
je 0x1f63b2
movq 0x38(%rsp), %rcx
addq %rdx, %rcx
addq 0x20(%rax), %rcx
cmpq 0x10(%rax), %rcx
jae 0x1f63b2
movq (%rax), %rdi
testq %rdi, %rdi
je 0x1f62e0
movabsq $-0x8000000000000000, %r8 # imm = 0x8000000000000000
shrq %cl, %r8
shrq $0x6, %rcx
orq %r8, (%rdi,%rcx,8)
addq 0x40(%rsp), %rbx
movq %rbx, %rcx
shrq $0x20, %rcx
jne 0x1f63bc
movq 0x20(%rax), %rcx
leaq (%rsi,%rcx,4), %rcx
movq 0x38(%rsp), %rsi
leaq (%rcx,%rsi,4), %rcx
movl %ebx, (%rcx,%rdx,4)
cmpq $0xff, %rbx
jb 0x1f60bd
incq 0x18(%rax)
jmp 0x1f60bd
movq 0x60(%rsp), %rax
cmpq 0x78(%rsp), %rax
jbe 0x1f6341
movq 0x288(%rsp), %rdi
leaq 0x1c3c69(%rip), %rsi    # 0x3b9fa0
movl $0x22e, %edx            # imm = 0x22E
callq 0x1045eb
addq $0x298, %rsp            # imm = 0x298
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0x7bc84
callq 0x7bd2b
callq 0x7bd62
callq 0x7bd99
callq 0x7b935
callq 0x7bcf4
callq 0x7b96e
callq 0x7bcbd
callq 0x7bc4b
callq 0x7ba19
callq 0x7bc12
callq 0x7b9e0
callq 0x7b9a7
callq 0x7ba52
callq 0x7baf9
callq 0x7b8c3
callq 0x7b8fc
callq 0x7bbd9
callq 0x7bac2
callq 0x7bb69
callq 0x7ba8b
callq 0x7bb32
callq 0x7bba0