// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/match/sfx-shortreadsort.c
// Function: gt_shortreadsort_compare
static int gt_shortreadsort_compare(const GtShortreadsort *aq,
                                    const GtShortreadsort *bq,
                                    GtShortreadsortworkinfo *srsw)
{
  unsigned int maxprefix;
  GtTwobitencoding *aptr, *bptr;

  aptr = srsw->tbereservoir.spaceGtTwobitencoding + aq->tbeidx;
  bptr = srsw->tbereservoir.spaceGtTwobitencoding + bq->tbeidx;
  for (maxprefix = (unsigned int) GT_UNITSIN2BITENC;
       /* Nothing */;
       maxprefix += (unsigned int) GT_UNITSIN2BITENC, aptr++, bptr++)
  {
    int retval;
    GtCommonunits commonunits;

    if (aq->unitsnotspecial >= maxprefix &&
        bq->unitsnotspecial >= maxprefix)
    {
      GtTwobitencoding aval = *aptr, bval = *bptr;

      if (aval != bval)
      {
        retval = gt_encseq_compare_pairof_different_twobitencodings(
                              srsw->fwd,
                              srsw->complement,
                              &commonunits,
                              aval,bval);
        srsw->tmplcplen = (GtUword) (maxprefix - GT_UNITSIN2BITENC +
                                           commonunits.common);
        return retval;
      }
    } else
    {
      GtEndofTwobitencoding tbe_a, tbe_b;

      tbe_a.referstartpos = aq->suffixrepresentation;
      tbe_b.referstartpos = bq->suffixrepresentation;
      tbe_a.unitsnotspecial
        = aq->unitsnotspecial >= maxprefix
           ? maxprefix
           : aq->unitsnotspecial + GT_UNITSIN2BITENC - maxprefix;
      tbe_a.tbe = tbe_a.unitsnotspecial > 0 ? *aptr : 0;
      tbe_b.unitsnotspecial
        = bq->unitsnotspecial >= maxprefix
           ? maxprefix
           : bq->unitsnotspecial + GT_UNITSIN2BITENC - maxprefix;
      tbe_b.tbe = tbe_b.unitsnotspecial > 0 ? *bptr : 0;
      retval = gt_encseq_compare_pairof_twobitencodings(srsw->fwd,
                                                        srsw->complement,
                                                        &commonunits,
                                                        &tbe_a,
                                                        &tbe_b);
      srsw->tmplcplen = (GtUword) (maxprefix - GT_UNITSIN2BITENC +
                                         commonunits.common);
      return retval;
    }
  }
  /*@ignore@*/
  return 0;
  /*@end@*/
}

// Assembly:
subq $0xb8, %rsp
movq %rdi, 0xa8(%rsp)
movq %rsi, 0xa0(%rsp)
movq %rdx, 0x98(%rsp)
movq 0x98(%rsp), %rax
movq 0x20(%rax), %rax
movq 0xa8(%rsp), %rcx
movl 0x8(%rcx), %ecx
shlq $0x3, %rcx
addq %rcx, %rax
movq %rax, 0x88(%rsp)
movq 0x98(%rsp), %rax
movq 0x20(%rax), %rax
movq 0xa0(%rsp), %rcx
movl 0x8(%rcx), %ecx
shlq $0x3, %rcx
addq %rcx, %rax
movq %rax, 0x80(%rsp)
movl $0x20, 0x94(%rsp)
movq 0xa8(%rsp), %rax
movl 0xc(%rax), %eax
cmpl 0x94(%rsp), %eax
jb 0x2dd771
movq 0xa0(%rsp), %rax
movl 0xc(%rax), %eax
cmpl 0x94(%rsp), %eax
jb 0x2dd771
movq 0x88(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x60(%rsp)
movq 0x80(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x58(%rsp)
movq 0x60(%rsp), %rax
cmpq 0x58(%rsp), %rax
je 0x2dd76c
movq 0x98(%rsp), %rax
movb 0x50(%rax), %sil
movq 0x98(%rsp), %rax
movb 0x51(%rax), %al
movq 0x60(%rsp), %rcx
movq 0x58(%rsp), %r8
leaq 0x68(%rsp), %rdx
andb $0x1, %sil
andb $0x1, %al
movzbl %sil, %edi
movzbl %al, %esi
callq 0xb4070
movl %eax, 0x7c(%rsp)
movl 0x94(%rsp), %eax
subl $0x20, %eax
addl 0x68(%rsp), %eax
movl %eax, %eax
movl %eax, %ecx
movq 0x98(%rsp), %rax
movq %rcx, 0x38(%rax)
movl 0x7c(%rsp), %eax
movl %eax, 0xb4(%rsp)
jmp 0x2dd914
jmp 0x2dd8d4
movq 0xa8(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x50(%rsp)
movq 0xa0(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x38(%rsp)
movq 0xa8(%rsp), %rax
movl 0xc(%rax), %eax
cmpl 0x94(%rsp), %eax
jb 0x2dd7b2
movl 0x94(%rsp), %eax
movl %eax, 0x24(%rsp)
jmp 0x2dd7cb
movq 0xa8(%rsp), %rax
movl 0xc(%rax), %eax
addl $0x20, %eax
subl 0x94(%rsp), %eax
movl %eax, 0x24(%rsp)
movl 0x24(%rsp), %eax
movl %eax, 0x48(%rsp)
cmpl $0x0, 0x48(%rsp)
jbe 0x2dd7ec
movq 0x88(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x18(%rsp)
jmp 0x2dd7f5
xorl %eax, %eax
movq %rax, 0x18(%rsp)
jmp 0x2dd7f5
movq 0x18(%rsp), %rax
movq %rax, 0x40(%rsp)
movq 0xa0(%rsp), %rax
movl 0xc(%rax), %eax
cmpl 0x94(%rsp), %eax
jb 0x2dd820
movl 0x94(%rsp), %eax
movl %eax, 0x14(%rsp)
jmp 0x2dd839
movq 0xa0(%rsp), %rax
movl 0xc(%rax), %eax
addl $0x20, %eax
subl 0x94(%rsp), %eax
movl %eax, 0x14(%rsp)
movl 0x14(%rsp), %eax
movl %eax, 0x30(%rsp)
cmpl $0x0, 0x30(%rsp)
jbe 0x2dd85a
movq 0x80(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x8(%rsp)
jmp 0x2dd863
xorl %eax, %eax
movq %rax, 0x8(%rsp)
jmp 0x2dd863
movq 0x8(%rsp), %rax
movq %rax, 0x28(%rsp)
movq 0x98(%rsp), %rax
movb 0x50(%rax), %sil
movq 0x98(%rsp), %rax
movb 0x51(%rax), %al
leaq 0x68(%rsp), %rdx
leaq 0x40(%rsp), %rcx
leaq 0x28(%rsp), %r8
andb $0x1, %sil
andb $0x1, %al
movzbl %sil, %edi
movzbl %al, %esi
callq 0xb4420
movl %eax, 0x7c(%rsp)
movl 0x94(%rsp), %eax
subl $0x20, %eax
addl 0x68(%rsp), %eax
movl %eax, %eax
movl %eax, %ecx
movq 0x98(%rsp), %rax
movq %rcx, 0x38(%rax)
movl 0x7c(%rsp), %eax
movl %eax, 0xb4(%rsp)
jmp 0x2dd914
jmp 0x2dd8d6
movl 0x94(%rsp), %eax
addl $0x20, %eax
movl %eax, 0x94(%rsp)
movq 0x88(%rsp), %rax
addq $0x8, %rax
movq %rax, 0x88(%rsp)
movq 0x80(%rsp), %rax
addq $0x8, %rax
movq %rax, 0x80(%rsp)
jmp 0x2dd6a6
movl 0xb4(%rsp), %eax
addq $0xb8, %rsp
retq
nopw %cs:(%rax,%rax)
nopl (%rax)