LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/match/esa-maxpairs.c
// Function: binaryfindlcpinterval
static bool binaryfindlcpinterval(const Lcpinterval *itvtab,GtUword num,
                                  GtUword lcp,GtUword lb)
{
  const Lcpinterval *left = itvtab, *right = itvtab + num - 1;

  while (left <= right)
  {
    const Lcpinterval *mid = left + (right - left + 1)/2;

    if (lb < mid->left)
    {
      right = mid - 1;
    } else
    {
      if (lb > mid->left)
      {
        left = mid + 1;
      } else
      {
        if (lcp < mid->offset)
        {
          right = mid - 1;
        } else
        {
          if (lcp > mid->offset)
          {
            left = mid+1;
          } else
          {
            return true;
          }
        }
      }
    }
  }
  return false;
}

// Assembly:
movq %rdi, -0x10(%rsp)
movq %rsi, -0x18(%rsp)
movq %rdx, -0x20(%rsp)
movq %rcx, -0x28(%rsp)
movq -0x10(%rsp), %rax
movq %rax, -0x30(%rsp)
movq -0x10(%rsp), %rax
imulq $0x18, -0x18(%rsp), %rcx
addq %rcx, %rax
addq $-0x18, %rax
movq %rax, -0x38(%rsp)
movq -0x30(%rsp), %rax
cmpq -0x38(%rsp), %rax
ja 0x2377b8
movq -0x30(%rsp), %rax
movq %rax, -0x48(%rsp)
movq -0x38(%rsp), %rax
movq -0x30(%rsp), %rcx
subq %rcx, %rax
movl $0x18, %ecx
cqto
idivq %rcx
addq $0x1, %rax
movl $0x2, %ecx
cqto
idivq %rcx
movq %rax, %rcx
movq -0x48(%rsp), %rax
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x40(%rsp)
movq -0x28(%rsp), %rax
movq -0x40(%rsp), %rcx
cmpq 0x8(%rcx), %rax
jae 0x237748
movq -0x40(%rsp), %rax
addq $-0x18, %rax
movq %rax, -0x38(%rsp)
jmp 0x2377b3
movq -0x28(%rsp), %rax
movq -0x40(%rsp), %rcx
cmpq 0x8(%rcx), %rax
jbe 0x237768
movq -0x40(%rsp), %rax
addq $0x18, %rax
movq %rax, -0x30(%rsp)
jmp 0x2377b1
movq -0x20(%rsp), %rax
movq -0x40(%rsp), %rcx
cmpq (%rcx), %rax
jae 0x237787
movq -0x40(%rsp), %rax
addq $-0x18, %rax
movq %rax, -0x38(%rsp)
jmp 0x2377af
movq -0x20(%rsp), %rax
movq -0x40(%rsp), %rcx
cmpq (%rcx), %rax
jbe 0x2377a6
movq -0x40(%rsp), %rax
addq $0x18, %rax
movq %rax, -0x30(%rsp)
jmp 0x2377ad
movb $0x1, -0x1(%rsp)
jmp 0x2377bd
jmp 0x2377af
jmp 0x2377b1
jmp 0x2377b3
jmp 0x2376d5
movb $0x0, -0x1(%rsp)
movb -0x1(%rsp), %al
andb $0x1, %al
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/match/esa-maxpairs.c
// Function: concatlists_maxpairs
static void concatlists_maxpairs(GtBUstate_maxpairs *state,
                                 GtBUinfo_maxpairs *father,
                                 GtBUinfo_maxpairs *son)
{
  unsigned int base;

  for (base = 0; base < state->alphabetsize; base++)
  {
    NODEPOSLISTLENGTH(father,base) += NODEPOSLISTLENGTH(son,base);
  }
  father->uniquecharposlength += son->uniquecharposlength;
}

// Assembly:
movq %rdi, -0x8(%rsp)
movq %rsi, -0x10(%rsp)
movq %rdx, -0x18(%rsp)
movl $0x0, -0x1c(%rsp)
movl -0x1c(%rsp), %eax
movq -0x8(%rsp), %rcx
cmpl 0x8(%rcx), %eax
jae 0x237a86
movq -0x18(%rsp), %rax
movq 0x18(%rax), %rax
movl -0x1c(%rsp), %ecx
shlq $0x4, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rcx
movq -0x10(%rsp), %rax
movq 0x18(%rax), %rax
movl -0x1c(%rsp), %edx
shlq $0x4, %rdx
addq %rdx, %rax
addq 0x8(%rax), %rcx
movq %rcx, 0x8(%rax)
movl -0x1c(%rsp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rsp)
jmp 0x237a37
movq -0x18(%rsp), %rax
movq 0x10(%rax), %rcx
movq -0x10(%rsp), %rax
addq 0x10(%rax), %rcx
movq %rcx, 0x10(%rax)
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/match/esa-maxpairs.c
// Function: compareLcpitervals
static int compareLcpitervals(const void *a,const void *b)
{
  const Lcpinterval *lcpitv_a = (const Lcpinterval *) a;
  const Lcpinterval *lcpitv_b = (const Lcpinterval *) b;

  if (lcpitv_a->left < lcpitv_b->left)
  {
    return -1;
  }
  if (lcpitv_a->left > lcpitv_b->left)
  {
    return 1;
  }
  if (lcpitv_a->offset < lcpitv_b->offset)
  {
    return -1;
  }
  if (lcpitv_a->offset > lcpitv_b->offset)
  {
    return 1;
  }
  gt_assert(false);
  return 0;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x18(%rsp)
movq %rsi, 0x10(%rsp)
movq 0x18(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x10(%rsp), %rax
movq %rax, (%rsp)
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rax
movq (%rsp), %rcx
cmpq 0x8(%rcx), %rax
jae 0x237ae1
movl $0xffffffff, 0x24(%rsp) # imm = 0xFFFFFFFF
jmp 0x237b6e
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rax
movq (%rsp), %rcx
cmpq 0x8(%rcx), %rax
jbe 0x237afe
movl $0x1, 0x24(%rsp)
jmp 0x237b6e
movq 0x8(%rsp), %rax
movq (%rax), %rax
movq (%rsp), %rcx
cmpq (%rcx), %rax
jae 0x237b19
movl $0xffffffff, 0x24(%rsp) # imm = 0xFFFFFFFF
jmp 0x237b6e
movq 0x8(%rsp), %rax
movq (%rax), %rax
movq (%rsp), %rcx
cmpq (%rcx), %rax
jbe 0x237b34
movl $0x1, 0x24(%rsp)
jmp 0x237b6e
jmp 0x237b36
movq 0x404463(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x2de4cc(%rip), %rsi    # 0x516013
leaq 0x321215(%rip), %rdx    # 0x558d63
leaq 0x33f464(%rip), %rcx    # 0x576fb9
leaq 0x33f1e4(%rip), %r8     # 0x576d40
movl $0x264, %r9d            # imm = 0x264
movb $0x0, %al
callq 0x199f0
callq 0x19370
movl 0x24(%rsp), %eax
addq $0x28, %rsp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/match/esa-minunique.c
// Function: gt_suffixarrayuniqueforward
GtUword gt_suffixarrayuniqueforward (const void *genericindex,
                                       GtUword offset,
                                       GtUword left,
                                       GtUword right,
                                       GT_UNUSED GtUword
                                          *witnessposition,
                                       const GtUchar *qstart,
                                       const GtUchar *qend)
{
  Simplelcpinterval itv;
  const GtUchar *qptr;
  const Suffixarray *suffixarray = (const Suffixarray *) genericindex;
  GtUword totallength;

  itv.left = left;
  itv.right = right;
  totallength = gt_encseq_total_length(suffixarray->encseq);
  for (qptr = qstart; /* Nothing */; qptr++, offset++)
  {
    if (itv.left < itv.right)
    {
      if (qptr >= qend || GT_ISSPECIAL(*qptr) ||
          !gt_lcpintervalfindcharchildintv(suffixarray->encseq,
                                           suffixarray->readmode,
                                           totallength,
                                           suffixarray->suftab,
                                           &itv,
                                           *qptr,
                                           offset,
                                           itv.left,
                                           itv.right))
      {
        break;
      }
    } else
    {
      return offset;
    }
  }
  return 0;
}

// Assembly:
subq $0x78, %rsp
movq 0x80(%rsp), %rax
movq %rdi, 0x68(%rsp)
movq %rsi, 0x60(%rsp)
movq %rdx, 0x58(%rsp)
movq %rcx, 0x50(%rsp)
movq %r8, 0x48(%rsp)
movq %r9, 0x40(%rsp)
movq 0x68(%rsp), %rax
movq %rax, 0x20(%rsp)
movq 0x58(%rsp), %rax
movq %rax, 0x30(%rsp)
movq 0x50(%rsp), %rax
movq %rax, 0x38(%rsp)
movq 0x20(%rsp), %rax
movq (%rax), %rdi
callq 0xa9d00
movq %rax, 0x18(%rsp)
movq 0x40(%rsp), %rax
movq %rax, 0x28(%rsp)
movq 0x30(%rsp), %rax
cmpq 0x38(%rsp), %rax
jae 0x237c67
movq 0x28(%rsp), %rax
cmpq 0x80(%rsp), %rax
jae 0x237c63
movq 0x28(%rsp), %rax
movzbl (%rax), %eax
cmpl $0xfe, %eax
jge 0x237c63
movq 0x20(%rsp), %rax
movq (%rax), %rdi
movq 0x20(%rsp), %rax
movl 0x48(%rax), %esi
movq 0x18(%rsp), %rdx
movq 0x20(%rsp), %rax
movq 0x58(%rax), %rcx
movq 0x28(%rsp), %rax
movb (%rax), %r9b
movq 0x60(%rsp), %r11
movq 0x30(%rsp), %r10
movq 0x38(%rsp), %rax
leaq 0x30(%rsp), %r8
movzbl %r9b, %r9d
movq %r11, (%rsp)
movq %r10, 0x8(%rsp)
movq %rax, 0x10(%rsp)
callq 0x23f8c0
testb $0x1, %al
jne 0x237c65
jmp 0x237c96
jmp 0x237c73
movq 0x60(%rsp), %rax
movq %rax, 0x70(%rsp)
jmp 0x237c9f
jmp 0x237c75
movq 0x28(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x28(%rsp)
movq 0x60(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x60(%rsp)
jmp 0x237be4
movq $0x0, 0x70(%rsp)
movq 0x70(%rsp), %rax
addq $0x78, %rsp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/match/esa-mmsearch.c
// Function: gt_mmsearchiterator_new_complete_plain
GtMMsearchiterator *gt_mmsearchiterator_new_complete_plain(
                                   const GtEncseq *dbencseq,
                                   const void *voidsuftab, /* XXX */
                                   GtUword leftbound,
                                   GtUword rightbound,
                                   GtUword itvoffset,
                                   GtReadmode readmode,
                                   const GtUchar *pattern,
                                   GtUword patternlength)
{
  GtQueryrepresentation queryrep;
  GtQuerysubstring querysubstring;
  const ESASuffixptr *suftab = (const ESASuffixptr *) voidsuftab; /* XXX */

  queryrep.sequence = pattern;
  queryrep.encseq = NULL;
  queryrep.readmode = GT_READMODE_FORWARD;
  queryrep.startpos = 0;
  queryrep.seqlen = patternlength;
  querysubstring.queryrep = &queryrep;
  querysubstring.currentoffset = 0;
  return gt_mmsearchiterator_new(dbencseq,
                                 suftab,
                                 leftbound,
                                 rightbound,
                                 itvoffset,
                                 readmode,
                                 &querysubstring,
                                 patternlength);
}

// Assembly:
subq $0x88, %rsp
movq 0x98(%rsp), %rax
movq 0x90(%rsp), %rax
movq %rdi, 0x80(%rsp)
movq %rsi, 0x78(%rsp)
movq %rdx, 0x70(%rsp)
movq %rcx, 0x68(%rsp)
movq %r8, 0x60(%rsp)
movl %r9d, 0x5c(%rsp)
movq 0x78(%rsp), %rax
movq %rax, 0x18(%rsp)
movq 0x90(%rsp), %rax
movq %rax, 0x30(%rsp)
movq $0x0, 0x38(%rsp)
movl $0x0, 0x40(%rsp)
movq $0x0, 0x48(%rsp)
movq 0x98(%rsp), %rax
movq %rax, 0x50(%rsp)
leaq 0x30(%rsp), %rax
movq %rax, 0x20(%rsp)
movq $0x0, 0x28(%rsp)
movq 0x80(%rsp), %rdi
movq 0x18(%rsp), %rsi
movq 0x70(%rsp), %rdx
movq 0x68(%rsp), %rcx
movq 0x60(%rsp), %r8
movl 0x5c(%rsp), %r9d
movq 0x98(%rsp), %rax
leaq 0x20(%rsp), %r10
movq %r10, (%rsp)
movq %rax, 0x8(%rsp)
callq 0x238240
addq $0x88, %rsp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/match/esa-mmsearch.c
// Function: gt_mmsearchiterator_new
static GtMMsearchiterator *gt_mmsearchiterator_new(
                                       const GtEncseq *dbencseq,
                                       const ESASuffixptr *suftab,
                                       GtUword leftbound,
                                       GtUword rightbound,
                                       GtUword itvoffset,
                                       GtReadmode readmode,
                                       const GtQuerysubstring *querysubstring,
                                       GtUword minmatchlength)
{
  GtMMsearchiterator *mmsi = gt_mmsearchiterator_new_empty();

  gt_mmsearchiterator_reinit(mmsi,
                             dbencseq,
                             suftab,
                             leftbound,
                             rightbound,
                             itvoffset,
                             readmode,
                             querysubstring,
                             minmatchlength);
  return mmsi;
}

// Assembly:
subq $0x58, %rsp
movq 0x68(%rsp), %rax
movq 0x60(%rsp), %rax
movq %rdi, 0x50(%rsp)
movq %rsi, 0x48(%rsp)
movq %rdx, 0x40(%rsp)
movq %rcx, 0x38(%rsp)
movq %r8, 0x30(%rsp)
movl %r9d, 0x2c(%rsp)
callq 0x239000
movq %rax, 0x20(%rsp)
movq 0x20(%rsp), %rdi
movq 0x50(%rsp), %rsi
movq 0x48(%rsp), %rdx
movq 0x40(%rsp), %rcx
movq 0x38(%rsp), %r8
movq 0x30(%rsp), %r9
movl 0x2c(%rsp), %r11d
movq 0x60(%rsp), %r10
movq 0x68(%rsp), %rax
movl %r11d, (%rsp)
movq %r10, 0x8(%rsp)
movq %rax, 0x10(%rsp)
callq 0x239730
movq 0x20(%rsp), %rax
addq $0x58, %rsp
retq
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/match/esa-mmsearch.c
// Function: gt_mmsearchiterator_count
GtUword gt_mmsearchiterator_count(const GtMMsearchiterator *mmsi)
{
  gt_assert(mmsi != NULL);
  if (mmsi->lcpitv.left > mmsi->lcpitv.right)
  {
    return 0;
  }
  return mmsi->lcpitv.right - mmsi->lcpitv.left + 1;
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x8(%rsp)
cmpq $0x0, 0x8(%rsp)
jne 0x238309
movq 0x403cc8(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x2ddd31(%rip), %rsi    # 0x516013
leaq 0x33ed5a(%rip), %rdx    # 0x577043
leaq 0x33ed60(%rip), %rcx    # 0x577050
leaq 0x33ed73(%rip), %r8     # 0x57706a
movl $0x132, %r9d            # imm = 0x132
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x23830b
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x8(%rsp), %rcx
cmpq 0x10(%rcx), %rax
jbe 0x23832a
movq $0x0, 0x10(%rsp)
jmp 0x238345
movq 0x8(%rsp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rsp), %rcx
subq 0x8(%rcx), %rax
addq $0x1, %rax
movq %rax, 0x10(%rsp)
movq 0x10(%rsp), %rax
addq $0x18, %rsp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/match/esa-mmsearch.c
// Function: gt_mmsearchiterator_next
bool gt_mmsearchiterator_next(GtUword *dbstart,GtMMsearchiterator *mmsi)
{
  gt_assert(mmsi != NULL);
  if (mmsi->sufindex <= mmsi->lcpitv.right)
  {
    *dbstart = ESASUFFIXPTRGET(mmsi->suftab,mmsi->sufindex++);
    return true;
  }
  return false;
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x8(%rsp)
movq %rsi, (%rsp)
cmpq $0x0, (%rsp)
jne 0x23839c
movq 0x403c35(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x2ddc9e(%rip), %rsi    # 0x516013
leaq 0x33ecc7(%rip), %rdx    # 0x577043
leaq 0x33ed00(%rip), %rcx    # 0x577083
leaq 0x33ece0(%rip), %r8     # 0x57706a
movl $0x13c, %r9d            # imm = 0x13C
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x23839e
movq (%rsp), %rax
movq 0x18(%rax), %rax
movq (%rsp), %rcx
cmpq 0x10(%rcx), %rax
ja 0x2383de
movq (%rsp), %rax
movq 0x20(%rax), %rax
movq (%rsp), %rdx
movq 0x18(%rdx), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, 0x18(%rdx)
movq (%rax,%rcx,8), %rcx
movq 0x8(%rsp), %rax
movq %rcx, (%rax)
movb $0x1, 0x17(%rsp)
jmp 0x2383e3
movb $0x0, 0x17(%rsp)
movb 0x17(%rsp), %al
andb $0x1, %al
addq $0x18, %rsp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/match/esa-mmsearch.c
// Function: gt_mum_isleftmaximal
static bool gt_mum_isleftmaximal(const GtEncseq *dbencseq,
                                 GtReadmode readmode,
                                 GtUword dbstart,
                                 GtUword queryoffset,
                                 const GtUchar *query)
{
  GtUchar dbleftchar;

  if (dbstart == 0 || queryoffset == 0)
  {
    return true;
  }
  dbleftchar = gt_encseq_get_encoded_char(dbencseq, /* Random access */
                                          dbstart-1,
                                          readmode);
  if (GT_ISSPECIAL(dbleftchar) || dbleftchar != query[queryoffset-1])
  {
    return true;
  }
  return false;
}

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x28(%rsp)
movl %esi, 0x24(%rsp)
movq %rdx, 0x18(%rsp)
movq %rcx, 0x10(%rsp)
movq %r8, 0x8(%rsp)
cmpq $0x0, 0x18(%rsp)
je 0x23887c
cmpq $0x0, 0x10(%rsp)
jne 0x238883
movb $0x1, 0x37(%rsp)
jmp 0x2388d1
movq 0x28(%rsp), %rdi
movq 0x18(%rsp), %rsi
subq $0x1, %rsi
movl 0x24(%rsp), %edx
callq 0xa9da0
movb %al, 0x7(%rsp)
movzbl 0x7(%rsp), %eax
cmpl $0xfe, %eax
jge 0x2388c5
movzbl 0x7(%rsp), %eax
movq 0x8(%rsp), %rcx
movq 0x10(%rsp), %rdx
subq $0x1, %rdx
movzbl (%rcx,%rdx), %ecx
cmpl %ecx, %eax
je 0x2388cc
movb $0x1, 0x37(%rsp)
jmp 0x2388d1
movb $0x0, 0x37(%rsp)
movb 0x37(%rsp), %al
andb $0x1, %al
addq $0x38, %rsp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/match/esa-mmsearch.c
// Function: gt_querysubstringmatchiterator_delete
void gt_querysubstringmatchiterator_delete(GtQuerysubstringmatchiterator *qsmi)
{
  if (qsmi != NULL)
  {
    gt_mmsearchiterator_delete(qsmi->mmsi);
    gt_seq_iterator_delete(qsmi->seqit);
    gt_free(qsmi);
  }
}

// Assembly:
pushq %rax
movq %rdi, (%rsp)
cmpq $0x0, (%rsp)
je 0x23906e
movq (%rsp), %rax
movq 0x30(%rax), %rdi
callq 0x2384d0
movq (%rsp), %rax
movq 0x80(%rax), %rdi
callq 0x111c10
movq (%rsp), %rdi
leaq 0x33e006(%rip), %rsi    # 0x57706a
movl $0x31b, %edx            # imm = 0x31B
callq 0xe88c0
popq %rax
retq
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/match/esa-mmsearch.c
// Function: gt_mmsearchiterator_reinit
static void gt_mmsearchiterator_reinit(GtMMsearchiterator *mmsi,
                                       const GtEncseq *dbencseq,
                                       const ESASuffixptr *suftab,
                                       GtUword leftbound,
                                       GtUword rightbound,
                                       GtUword itvoffset,
                                       GtReadmode readmode,
                                       const GtQuerysubstring *querysubstring,
                                       GtUword minmatchlength)
{
  mmsi->suftab = suftab;
  if (mmsi->esr == NULL)
  {
    mmsi->esr = gt_encseq_create_reader_with_readmode(dbencseq, readmode, 0);
  } else
  {
    gt_encseq_reader_reinit_with_readmode(mmsi->esr,dbencseq,readmode,0);
  }
  mmsi->lcpitv.left = leftbound;
  mmsi->lcpitv.right = rightbound;
  mmsi->lcpitv.offset = itvoffset;
  if (!gt_mmsearch(dbencseq,mmsi->esr,suftab,readmode,&mmsi->lcpitv,
                   querysubstring,minmatchlength))
  {
    mmsi->lcpitv.left = 1UL;
    mmsi->lcpitv.right = 0;
  }
  mmsi->sufindex = mmsi->lcpitv.left;
}

// Assembly:
subq $0x38, %rsp
movq 0x50(%rsp), %rax
movq 0x48(%rsp), %rax
movl 0x40(%rsp), %eax
movq %rdi, 0x30(%rsp)
movq %rsi, 0x28(%rsp)
movq %rdx, 0x20(%rsp)
movq %rcx, 0x18(%rsp)
movq %r8, 0x10(%rsp)
movq %r9, 0x8(%rsp)
movq 0x20(%rsp), %rcx
movq 0x30(%rsp), %rax
movq %rcx, 0x20(%rax)
movq 0x30(%rsp), %rax
cmpq $0x0, 0x28(%rax)
jne 0x23979a
movq 0x28(%rsp), %rdi
movl 0x40(%rsp), %esi
xorl %eax, %eax
movl %eax, %edx
callq 0xac380
movq %rax, %rcx
movq 0x30(%rsp), %rax
movq %rcx, 0x28(%rax)
jmp 0x2397b5
movq 0x30(%rsp), %rax
movq 0x28(%rax), %rdi
movq 0x28(%rsp), %rsi
movl 0x40(%rsp), %edx
xorl %eax, %eax
movl %eax, %ecx
callq 0xabdb0
movq 0x18(%rsp), %rcx
movq 0x30(%rsp), %rax
movq %rcx, 0x8(%rax)
movq 0x10(%rsp), %rcx
movq 0x30(%rsp), %rax
movq %rcx, 0x10(%rax)
movq 0x8(%rsp), %rcx
movq 0x30(%rsp), %rax
movq %rcx, (%rax)
movq 0x28(%rsp), %rdi
movq 0x30(%rsp), %rax
movq 0x28(%rax), %rsi
movq 0x20(%rsp), %rdx
movl 0x40(%rsp), %ecx
movq 0x30(%rsp), %r8
movq 0x48(%rsp), %r9
movq 0x50(%rsp), %rax
movq %rax, (%rsp)
callq 0x23a0e0
testb $0x1, %al
jne 0x23982b
movq 0x30(%rsp), %rax
movq $0x1, 0x8(%rax)
movq 0x30(%rsp), %rax
movq $0x0, 0x10(%rax)
movq 0x30(%rsp), %rax
movq 0x8(%rax), %rcx
movq 0x30(%rsp), %rax
movq %rcx, 0x18(%rax)
addq $0x38, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/match/esa-mmsearch.c
// Function: gt_mmsearch_isleftmaximal
static bool gt_mmsearch_isleftmaximal(const GtEncseq *dbencseq,
                                      GtReadmode readmode,
                                      GtUword dbstart,
                                      const GtQuerysubstring *querysubstring)
{
  GtUchar dbleftchar;

  if (dbstart == 0 || querysubstring->currentoffset == 0)
  {
    return true;
  }
  dbleftchar = gt_encseq_get_encoded_char(dbencseq, /* Random access */
                                          dbstart-1,
                                          readmode);
  if (GT_ISSPECIAL(dbleftchar) ||
      dbleftchar != gt_mmsearch_accessquery(querysubstring->queryrep,
                                            querysubstring->currentoffset-1))
  {
    return true;
  }
  return false;
}

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x28(%rsp)
movl %esi, 0x24(%rsp)
movq %rdx, 0x18(%rsp)
movq %rcx, 0x10(%rsp)
cmpq $0x0, 0x18(%rsp)
je 0x23987b
movq 0x10(%rsp), %rax
cmpq $0x0, 0x8(%rax)
jne 0x239882
movb $0x1, 0x37(%rsp)
jmp 0x2398e5
movq 0x28(%rsp), %rdi
movq 0x18(%rsp), %rsi
subq $0x1, %rsi
movl 0x24(%rsp), %edx
callq 0xa9da0
movb %al, 0xf(%rsp)
movzbl 0xf(%rsp), %eax
cmpl $0xfe, %eax
jge 0x2398d9
movzbl 0xf(%rsp), %eax
movl %eax, 0x8(%rsp)
movq 0x10(%rsp), %rax
movq (%rax), %rdi
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rsi
subq $0x1, %rsi
callq 0x239f20
movb %al, %cl
movl 0x8(%rsp), %eax
movzbl %cl, %ecx
cmpl %ecx, %eax
je 0x2398e0
movb $0x1, 0x37(%rsp)
jmp 0x2398e5
movb $0x0, 0x37(%rsp)
movb 0x37(%rsp), %al
andb $0x1, %al
addq $0x38, %rsp
retq
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/match/esa-mmsearch.c
// Function: gt_mmsearch_extendright
static GtUword gt_mmsearch_extendright(const GtEncseq *dbencseq,
                                             GtEncseqReader *esr,
                                             GtReadmode readmode,
                                             GtUword totallength,
                                             GtUword dbend,
                                             const GtQuerysubstring
                                               *querysubstring,
                                             GtUword matchlength)
{
  GtUchar dbchar;
  GtUword dbpos, querypos;

  if (dbend < totallength)
  {
    gt_encseq_reader_reinit_with_readmode(esr,dbencseq,readmode,dbend);
  }
  for (dbpos = dbend, querypos = querysubstring->currentoffset + matchlength;
       dbpos < totallength &&
       querypos < querysubstring->queryrep->seqlen;
       dbpos++, querypos++)
  {
    dbchar = gt_encseq_reader_next_encoded_char(esr);
    if (GT_ISSPECIAL(dbchar) ||
        dbchar != gt_mmsearch_accessquery(querysubstring->queryrep,querypos))
    {
      break;
    }
  }
  return dbpos - dbend;
}

// Assembly:
subq $0x58, %rsp
movq 0x60(%rsp), %rax
movq %rdi, 0x50(%rsp)
movq %rsi, 0x48(%rsp)
movl %edx, 0x44(%rsp)
movq %rcx, 0x38(%rsp)
movq %r8, 0x30(%rsp)
movq %r9, 0x28(%rsp)
movq 0x30(%rsp), %rax
cmpq 0x38(%rsp), %rax
jae 0x23993a
movq 0x48(%rsp), %rdi
movq 0x50(%rsp), %rsi
movl 0x44(%rsp), %edx
movq 0x30(%rsp), %rcx
callq 0xabdb0
movq 0x30(%rsp), %rax
movq %rax, 0x18(%rsp)
movq 0x28(%rsp), %rax
movq 0x8(%rax), %rax
addq 0x60(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x18(%rsp), %rcx
xorl %eax, %eax
cmpq 0x38(%rsp), %rcx
movb %al, 0xf(%rsp)
jae 0x239981
movq 0x10(%rsp), %rax
movq 0x28(%rsp), %rcx
movq (%rcx), %rcx
cmpq 0x20(%rcx), %rax
setb %al
movb %al, 0xf(%rsp)
movb 0xf(%rsp), %al
testb $0x1, %al
jne 0x23998b
jmp 0x2399f2
movq 0x48(%rsp), %rdi
callq 0xaae30
movb %al, 0x27(%rsp)
movzbl 0x27(%rsp), %eax
cmpl $0xfe, %eax
jge 0x2399cd
movzbl 0x27(%rsp), %eax
movl %eax, 0x8(%rsp)
movq 0x28(%rsp), %rax
movq (%rax), %rdi
movq 0x10(%rsp), %rsi
callq 0x239f20
movb %al, %cl
movl 0x8(%rsp), %eax
movzbl %cl, %ecx
cmpl %ecx, %eax
je 0x2399cf
jmp 0x2399f2
jmp 0x2399d1
movq 0x18(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x18(%rsp)
movq 0x10(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x10(%rsp)
jmp 0x239957
movq 0x18(%rsp), %rax
subq 0x30(%rsp), %rax
addq $0x58, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/match/esa-mmsearch.c
// Function: gt_mmsearch_accessquery
static GtUchar gt_mmsearch_accessquery(const GtQueryrepresentation *queryrep,
                                       GtUword pos)
{
  GtUword abspos, cc;

  gt_assert(queryrep != NULL);
  gt_assert(pos < queryrep->seqlen);
  abspos = queryrep->startpos + (queryrep->readmode == GT_READMODE_FORWARD
                                  ? pos
                                  : GT_REVERSEPOS(queryrep->seqlen,pos));
  if (queryrep->sequence != NULL)
  {
    cc = queryrep->sequence[abspos];
  } else
  {
    gt_assert(queryrep->encseq != NULL);
    cc = gt_encseq_get_encoded_char(queryrep->encseq,abspos,
                                    GT_READMODE_FORWARD);
  }
  if (GT_ISDIRCOMPLEMENT(queryrep->readmode))
  {
    if (GT_ISSPECIAL(cc))
    {
      return cc;
    }
    return GT_COMPLEMENTBASE(cc);
  } else
  {
    return cc;
  }
}

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x28(%rsp)
movq %rsi, 0x20(%rsp)
cmpq $0x0, 0x28(%rsp)
jne 0x239f6e
movq 0x402063(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x2dc0cc(%rip), %rsi    # 0x516013
leaq 0x33d47d(%rip), %rdx    # 0x5773cb
leaq 0x33d487(%rip), %rcx    # 0x5773dc
leaq 0x33d10e(%rip), %r8     # 0x57706a
movl $0x35, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x239f70
jmp 0x239f72
movq 0x20(%rsp), %rax
movq 0x28(%rsp), %rcx
cmpq 0x20(%rcx), %rax
jb 0x239fba
movq 0x402017(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x2dc080(%rip), %rsi    # 0x516013
leaq 0x33d45a(%rip), %rdx    # 0x5773f4
leaq 0x33d43b(%rip), %rcx    # 0x5773dc
leaq 0x33d0c2(%rip), %r8     # 0x57706a
movl $0x36, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x239fbc
movq 0x28(%rsp), %rax
movq 0x18(%rax), %rax
movq %rax, 0x8(%rsp)
movq 0x28(%rsp), %rax
cmpl $0x0, 0x10(%rax)
jne 0x239fe0
movq 0x20(%rsp), %rax
movq %rax, (%rsp)
jmp 0x239ff6
movq 0x28(%rsp), %rax
movq 0x20(%rax), %rax
subq $0x1, %rax
subq 0x20(%rsp), %rax
movq %rax, (%rsp)
movq 0x8(%rsp), %rax
movq (%rsp), %rcx
addq %rcx, %rax
movq %rax, 0x18(%rsp)
movq 0x28(%rsp), %rax
cmpq $0x0, (%rax)
je 0x23a02a
movq 0x28(%rsp), %rax
movq (%rax), %rax
movq 0x18(%rsp), %rcx
movzbl (%rax,%rcx), %eax
movq %rax, 0x10(%rsp)
jmp 0x23a08f
jmp 0x23a02c
movq 0x28(%rsp), %rax
cmpq $0x0, 0x8(%rax)
jne 0x23a070
movq 0x401f61(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x2dbfca(%rip), %rsi    # 0x516013
leaq 0x33d3bb(%rip), %rdx    # 0x57740b
leaq 0x33d385(%rip), %rcx    # 0x5773dc
leaq 0x33d00c(%rip), %r8     # 0x57706a
movl $0x3f, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x23a072
movq 0x28(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x18(%rsp), %rsi
xorl %edx, %edx
callq 0xa9da0
movzbl %al, %eax
movq %rax, 0x10(%rsp)
movq 0x28(%rsp), %rax
cmpl $0x2, 0x10(%rax)
je 0x23a0a5
movq 0x28(%rsp), %rax
cmpl $0x3, 0x10(%rax)
jne 0x23a0cb
cmpq $0xfe, 0x10(%rsp)
jb 0x23a0bb
movq 0x10(%rsp), %rax
movb %al, 0x37(%rsp)
jmp 0x23a0d4
movl $0x3, %eax
subq 0x10(%rsp), %rax
movb %al, 0x37(%rsp)
jmp 0x23a0d4
movq 0x10(%rsp), %rax
movb %al, 0x37(%rsp)
movb 0x37(%rsp), %al
addq $0x38, %rsp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/match/esa-seqread.c
// Function: gt_freeSequentialsuffixarrayreader
void gt_freeSequentialsuffixarrayreader(Sequentialsuffixarrayreader **ssar)
{
  if ((*ssar)->suffixarray != NULL)
  {
    gt_freesuffixarray((*ssar)->suffixarray);
    gt_free((*ssar)->suffixarray);
  }
  gt_free(*ssar);
}

// Assembly:
pushq %rax
movq %rdi, (%rsp)
movq (%rsp), %rax
movq (%rax), %rax
cmpq $0x0, (%rax)
je 0x23b61c
movq (%rsp), %rax
movq (%rax), %rax
movq (%rax), %rdi
callq 0x233320
movq (%rsp), %rax
movq (%rax), %rax
movq (%rax), %rdi
leaq 0x33c038(%rip), %rsi    # 0x57764a
movl $0x43, %edx
callq 0xe88c0
movq (%rsp), %rax
movq (%rax), %rdi
leaq 0x33c020(%rip), %rsi    # 0x57764a
movl $0x45, %edx
callq 0xe88c0
popq %rax
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/match/esa-seqread.c
// Function: gt_nextSequentialsuftabvalue
int gt_nextSequentialsuftabvalue(GtUword *currentsuffix,
                                 Sequentialsuffixarrayreader *ssar)
{
  gt_assert(ssar != NULL);
  if (ssar->scanfile)
  {
#if defined (_LP64) || defined (_WIN64)
    if (ssar->suffixarray->suftabstream_GtUword.fp != NULL)
    {
      return gt_readnextfromstream_GtUword(currentsuffix,
                                 &ssar->suffixarray->suftabstream_GtUword);
    } else
    {
      uint32_t readvalue = 0;
      int ret = gt_readnextfromstream_uint32_t(
                                 &readvalue,
                                 &ssar->suffixarray->suftabstream_uint32_t);
      *currentsuffix = (GtUword) readvalue;
      return ret;
    }
#else
     return gt_readnextfromstream_GtUword(currentsuffix,
                                      &ssar->suffixarray->suftabstream_GtUword);
#endif
  }
  if (ssar->scanfile)
  {
    *currentsuffix = ESASUFFIXPTRGET(ssar->suftab,ssar->nextsuftabindex++);
  } else
  {
    *currentsuffix = ESASUFFIXPTRGET(ssar->suffixarray->suftab,
                                     ssar->nextsuftabindex++);
  }
  return 1;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x18(%rsp)
movq %rsi, 0x10(%rsp)
cmpq $0x0, 0x10(%rsp)
jne 0x23ba9e
movq 0x400533(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x2da59c(%rip), %rsi    # 0x516013
leaq 0x2ef1dd(%rip), %rdx    # 0x52ac5b
leaq 0x33bc74(%rip), %rcx    # 0x5776f9
leaq 0x33bbbe(%rip), %r8     # 0x57764a
movl $0x84, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x23baa0
movq 0x10(%rsp), %rax
testb $0x1, 0x40(%rax)
je 0x23bb1c
movq 0x10(%rsp), %rax
movq (%rax), %rax
cmpq $0x0, 0xb0(%rax)
je 0x23badf
movq 0x18(%rsp), %rdi
movq 0x10(%rsp), %rax
movq (%rax), %rsi
addq $0xa0, %rsi
callq 0x23bb90
movl %eax, 0x24(%rsp)
jmp 0x23bb86
movl $0x0, 0xc(%rsp)
movq 0x10(%rsp), %rax
movq (%rax), %rsi
addq $0x88, %rsi
leaq 0xc(%rsp), %rdi
callq 0x23bc70
movl %eax, 0x8(%rsp)
movl 0xc(%rsp), %eax
movl %eax, %ecx
movq 0x18(%rsp), %rax
movq %rcx, (%rax)
movl 0x8(%rsp), %eax
movl %eax, 0x24(%rsp)
jmp 0x23bb86
movq 0x10(%rsp), %rax
testb $0x1, 0x40(%rax)
je 0x23bb52
movq 0x10(%rsp), %rax
movq 0x30(%rax), %rax
movq 0x10(%rsp), %rdx
movq 0x18(%rdx), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, 0x18(%rdx)
movq (%rax,%rcx,8), %rcx
movq 0x18(%rsp), %rax
movq %rcx, (%rax)
jmp 0x23bb7e
movq 0x10(%rsp), %rax
movq (%rax), %rax
movq 0x58(%rax), %rax
movq 0x10(%rsp), %rdx
movq 0x18(%rdx), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, 0x18(%rdx)
movq (%rax,%rcx,8), %rcx
movq 0x18(%rsp), %rax
movq %rcx, (%rax)
movl $0x1, 0x24(%rsp)
movl 0x24(%rsp), %eax
addq $0x28, %rsp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/match/esa-seqread.c
// Function: gt_suftabSequentialsuffixarrayreader
const ESASuffixptr *gt_suftabSequentialsuffixarrayreader(
                        const Sequentialsuffixarrayreader *ssar)
{
  gt_assert(ssar != NULL);
  if (ssar->scanfile)
  {
    return ssar->suftab;
  }
  return ssar->suffixarray->suftab;
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x8(%rsp)
cmpq $0x0, 0x8(%rsp)
jne 0x23be39
movq 0x400198(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x2da201(%rip), %rsi    # 0x516013
leaq 0x2eee42(%rip), %rdx    # 0x52ac5b
leaq 0x33b942(%rip), %rcx    # 0x577762
leaq 0x33b823(%rip), %r8     # 0x57764a
movl $0xb6, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x23be3b
movq 0x8(%rsp), %rax
testb $0x1, 0x40(%rax)
je 0x23be56
movq 0x8(%rsp), %rax
movq 0x30(%rax), %rax
movq %rax, 0x10(%rsp)
jmp 0x23be67
movq 0x8(%rsp), %rax
movq (%rax), %rax
movq 0x58(%rax), %rax
movq %rax, 0x10(%rsp)
movq 0x10(%rsp), %rax
addq $0x18, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/match/esa-shulen.c
// Function: gt_multiesa2shulengthdist_print
int gt_multiesa2shulengthdist_print(Sequentialsuffixarrayreader *ssar,
                                    const GtEncseq *encseq,
                                    GtError *err)
{
  GtBUstate_shulen *state;
  bool haserr = false;

  state = gt_malloc(sizeof (*state));
  state->numofdbfiles = gt_encseq_num_of_files(encseq);
  state->encseq = encseq;
#ifdef GENOMEDIFF_PAPER_IMPL
  state->leafdist = gt_malloc(sizeof (*state->leafdist) * state->numofdbfiles);
#endif
#ifdef SHUDEBUG
  state->nextid = 0;
#endif
  state->shulengthdist = shulengthdist_new(state->numofdbfiles);
  if (gt_esa_bottomup_shulen(ssar, state, err) != 0)
  {
    haserr = true;
  }
  if (!haserr)
  {
    shulengthdist_print(NULL,(const uint64_t * const*) state->shulengthdist,
                        state->numofdbfiles);
  }
  gt_array2dim_delete(state->shulengthdist);
#ifdef GENOMEDIFF_PAPER_IMPL
  gt_free(state->leafdist);
#endif
  gt_free(state);
  return haserr ? -1 : 0;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq %rsi, 0x18(%rsp)
movq %rdx, 0x10(%rsp)
movb $0x0, 0x7(%rsp)
movl $0x48, %edi
leaq 0x33b7ab(%rip), %rsi    # 0x57792f
movl $0x17e, %edx            # imm = 0x17E
callq 0xe80f0
movq %rax, 0x8(%rsp)
movq 0x18(%rsp), %rdi
callq 0xb7df0
movq %rax, %rcx
movq 0x8(%rsp), %rax
movq %rcx, (%rax)
movq 0x18(%rsp), %rcx
movq 0x8(%rsp), %rax
movq %rcx, 0x10(%rax)
movq 0x8(%rsp), %rax
movq (%rax), %rdi
callq 0x23c280
movq %rax, %rcx
movq 0x8(%rsp), %rax
movq %rcx, 0x8(%rax)
movq 0x20(%rsp), %rdi
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
callq 0x23c390
cmpl $0x0, %eax
je 0x23c1ed
movb $0x1, 0x7(%rsp)
testb $0x1, 0x7(%rsp)
jne 0x23c20e
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rsi
movq 0x8(%rsp), %rax
movq (%rax), %rdx
xorl %eax, %eax
movl %eax, %edi
callq 0x23d470
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rdi
leaq 0x33b70e(%rip), %rsi    # 0x57792f
movl $0x191, %edx            # imm = 0x191
callq 0xe88c0
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
leaq 0x33b6f4(%rip), %rsi    # 0x57792f
movl $0x191, %edx            # imm = 0x191
callq 0xe88c0
movq 0x8(%rsp), %rdi
leaq 0x33b6de(%rip), %rsi    # 0x57792f
movl $0x195, %edx            # imm = 0x195
callq 0xe88c0
movb 0x7(%rsp), %dl
xorl %eax, %eax
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
testb $0x1, %dl
cmovnel %ecx, %eax
addq $0x28, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/match/esa-shulen.c
// Function: shulengthdist_new
static uint64_t **shulengthdist_new(GtUword numofdbfiles)
{
  GtUword idx1, idx2;
  uint64_t **shulengthdist;

  gt_array2dim_malloc(shulengthdist,numofdbfiles,numofdbfiles);
  for (idx1=0; idx1 < numofdbfiles; idx1++)
  {
    for (idx2=0; idx2 < numofdbfiles; idx2++)
    {
      shulengthdist[idx1][idx2] = 0;
    }
  }
  return shulengthdist;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq 0x20(%rsp), %rdi
shlq $0x3, %rdi
leaq 0x33b696(%rip), %rsi    # 0x57792f
movl $0x145, %edx            # imm = 0x145
callq 0xe80f0
movq %rax, 0x8(%rsp)
movq 0x20(%rsp), %rdi
shlq $0x3, %rdi
imulq 0x20(%rsp), %rdi
leaq 0x33b671(%rip), %rsi    # 0x57792f
movl $0x145, %edx            # imm = 0x145
callq 0xe80f0
movq %rax, %rcx
movq 0x8(%rsp), %rax
movq %rcx, (%rax)
movq $0x1, (%rsp)
movq (%rsp), %rax
cmpq 0x20(%rsp), %rax
jae 0x23c31e
movq 0x8(%rsp), %rax
movq (%rsp), %rcx
subq $0x1, %rcx
movq (%rax,%rcx,8), %rdx
movq 0x20(%rsp), %rax
shlq $0x3, %rax
addq %rax, %rdx
movq 0x8(%rsp), %rax
movq (%rsp), %rcx
movq %rdx, (%rax,%rcx,8)
movq (%rsp), %rax
addq $0x1, %rax
movq %rax, (%rsp)
jmp 0x23c2db
movq $0x0, 0x18(%rsp)
movq 0x18(%rsp), %rax
cmpq 0x20(%rsp), %rax
jae 0x23c385
movq $0x0, 0x10(%rsp)
movq 0x10(%rsp), %rax
cmpq 0x20(%rsp), %rax
jae 0x23c373
movq 0x8(%rsp), %rax
movq 0x18(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x10(%rsp), %rcx
movq $0x0, (%rax,%rcx,8)
movq 0x10(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x10(%rsp)
jmp 0x23c33c
jmp 0x23c375
movq 0x18(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x18(%rsp)
jmp 0x23c327
movq 0x8(%rsp), %rax
addq $0x28, %rsp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/match/esa-shulen.c
// Function: shulengthdist_print
static void shulengthdist_print(const GtStrArray *file_names,
                                const uint64_t * const*shulengthdist,
                                GtUword numofdbfiles)
{
  GtUword idx1, idx2;

  /*shulengthdist[0][0] = 0; for testing */
  printf("# sum of shulen\n" GT_WU "\n",numofdbfiles);
  for (idx2=0; idx2 < numofdbfiles; idx2++)
  {
    if (file_names != NULL)
    {
      printf("%s\t",gt_str_array_get(file_names,idx2));
    } else
    {
      printf("" GT_WU "\t",idx2);
    }
    for (idx1=0; idx1 < numofdbfiles; idx1++)
    {
      if (idx1 != idx2)
      {
        printf(Formatuint64_t"\t",
               PRINTuint64_tcast(shulengthdist[idx1][idx2]));
      } else
      {
        printf("0.000000\t");
      }
    }
    printf("\n");
  }
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq %rsi, 0x18(%rsp)
movq %rdx, 0x10(%rsp)
movq 0x10(%rsp), %rsi
leaq 0x33a5d7(%rip), %rdi    # 0x577a66
movb $0x0, %al
callq 0x19070
movq $0x0, (%rsp)
movq (%rsp), %rax
cmpq 0x10(%rsp), %rax
jae 0x23d56d
cmpq $0x0, 0x20(%rsp)
je 0x23d4d6
movq 0x20(%rsp), %rdi
movq (%rsp), %rsi
callq 0x11f8c0
movq %rax, %rsi
leaq 0x2e9893(%rip), %rdi    # 0x526d60
movb $0x0, %al
callq 0x19070
jmp 0x23d4e8
movq (%rsp), %rsi
leaq 0x340daf(%rip), %rdi    # 0x57e290
movb $0x0, %al
callq 0x19070
movq $0x0, 0x8(%rsp)
movq 0x8(%rsp), %rax
cmpq 0x10(%rsp), %rax
jae 0x23d54e
movq 0x8(%rsp), %rax
cmpq (%rsp), %rax
je 0x23d52e
movq 0x18(%rsp), %rax
movq 0x8(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq (%rsp), %rcx
movq (%rax,%rcx,8), %rsi
leaq 0x340d6b(%rip), %rdi    # 0x57e290
movb $0x0, %al
callq 0x19070
jmp 0x23d53c
leaq 0x33a546(%rip), %rdi    # 0x577a7b
movb $0x0, %al
callq 0x19070
jmp 0x23d53e
movq 0x8(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x8(%rsp)
jmp 0x23d4f1
leaq 0x355d1e(%rip), %rdi    # 0x593273
movb $0x0, %al
callq 0x19070
movq (%rsp), %rax
addq $0x1, %rax
movq %rax, (%rsp)
jmp 0x23d49e
addq $0x28, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/match/esa-shulen.c
// Function: gt_esa2shulengthquery
static GtUword gt_esa2shulengthquery(const Suffixarray *suffixarray,
                                           const GtUchar *query,
                                           GtUword querylen)
{
  const GtUchar *qptr;
  GtUword totalgmatchlength = 0, gmatchlength, remaining;
  GtUword totallength = gt_encseq_total_length(suffixarray->encseq);

  for (qptr = query, remaining = querylen; remaining > 0; qptr++, remaining--)
  {
    if (GT_ISSPECIAL(*qptr))
    {
      gmatchlength = 0;
    } else
    {
      gmatchlength = gt_esa2shulengthatposition(suffixarray,
                                              totallength,
                                              0,
                                              0,
                                              totallength,
                                              qptr,
                                              query+querylen);
    }
    totalgmatchlength += gmatchlength;
  }
  return totalgmatchlength;
}

// Assembly:
subq $0x48, %rsp
movq %rdi, 0x40(%rsp)
movq %rsi, 0x38(%rsp)
movq %rdx, 0x30(%rsp)
movq $0x0, 0x20(%rsp)
movq 0x40(%rsp), %rax
movq (%rax), %rdi
callq 0xa9d00
movq %rax, 0x8(%rsp)
movq 0x38(%rsp), %rax
movq %rax, 0x28(%rsp)
movq 0x30(%rsp), %rax
movq %rax, 0x10(%rsp)
cmpq $0x0, 0x10(%rsp)
jbe 0x23d7e2
movq 0x28(%rsp), %rax
movzbl (%rax), %eax
cmpl $0xfe, %eax
jl 0x23d784
movq $0x0, 0x18(%rsp)
jmp 0x23d7b5
movq 0x40(%rsp), %rdi
movq 0x8(%rsp), %rsi
movq 0x8(%rsp), %r8
movq 0x28(%rsp), %r9
movq 0x38(%rsp), %rax
addq 0x30(%rsp), %rax
xorl %ecx, %ecx
movq %rcx, %rdx
movq %rax, (%rsp)
callq 0x23f780
movq %rax, 0x18(%rsp)
movq 0x18(%rsp), %rax
addq 0x20(%rsp), %rax
movq %rax, 0x20(%rsp)
movq 0x28(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x28(%rsp)
movq 0x10(%rsp), %rax
addq $-0x1, %rax
movq %rax, 0x10(%rsp)
jmp 0x23d762
movq 0x20(%rsp), %rax
addq $0x48, %rsp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/match/esa-shulen.c
// Function: gt_multiesa2shulengthdist
int gt_multiesa2shulengthdist(Sequentialsuffixarrayreader *ssar,
                              const GtEncseq *encseq,
                              uint64_t **shulen,
                              const GtShuUnitFileInfo *unit_info,
                              GtError *err)
{
  GtBUstate_shulen *bustate;
  bool haserr = false;

  bustate = gt_malloc(sizeof (*bustate));
  bustate->numofdbfiles = unit_info->num_of_genomes;
  bustate->file_to_genome_map = unit_info->map_files;
  bustate->encseq = encseq;
#ifdef GENOMEDIFF_PAPER_IMPL
  bustate->leafdist
    = gt_malloc(sizeof (*bustate->leafdist) * bustate->numofdbfiles);
#endif
#ifdef SHUDEBUG
  bustate->nextid = 0;
#endif
  bustate->shulengthdist = shulen;
  if (gt_esa_bottomup_shulen(ssar, bustate, err) != 0)
  {
    haserr = true;
  }
#ifdef GENOMEDIFF_PAPER_IMPL
  gt_free(bustate->leafdist);
#endif
  gt_free(bustate);
  return haserr ? -1 : 0;
}

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x30(%rsp)
movq %rsi, 0x28(%rsp)
movq %rdx, 0x20(%rsp)
movq %rcx, 0x18(%rsp)
movq %r8, 0x10(%rsp)
movb $0x0, 0x7(%rsp)
movl $0x48, %edi
leaq 0x33a111(%rip), %rsi    # 0x57792f
movl $0x21c, %edx            # imm = 0x21C
callq 0xe80f0
movq %rax, 0x8(%rsp)
movq 0x18(%rsp), %rax
movq (%rax), %rcx
movq 0x8(%rsp), %rax
movq %rcx, (%rax)
movq 0x18(%rsp), %rax
movq 0x20(%rax), %rcx
movq 0x8(%rsp), %rax
movq %rcx, 0x18(%rax)
movq 0x28(%rsp), %rcx
movq 0x8(%rsp), %rax
movq %rcx, 0x10(%rax)
movq 0x20(%rsp), %rcx
movq 0x8(%rsp), %rax
movq %rcx, 0x8(%rax)
movq 0x30(%rsp), %rdi
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
callq 0x23c390
cmpl $0x0, %eax
je 0x23d889
movb $0x1, 0x7(%rsp)
movq 0x8(%rsp), %rdi
leaq 0x33a09a(%rip), %rsi    # 0x57792f
movl $0x22f, %edx            # imm = 0x22F
callq 0xe88c0
movb 0x7(%rsp), %dl
xorl %eax, %eax
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
testb $0x1, %dl
cmovnel %ecx, %eax
addq $0x38, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/match/esa-shulen.c
// Function: gt_sfx_multiesashulengthdist_new
GtBUstate_shulen *gt_sfx_multiesashulengthdist_new(const GtEncseq *encseq,
                                            GenomediffInfo *gd_info)
{
  GtBUstate_shulen *bustate;

  bustate = gt_malloc(sizeof (*bustate));
  bustate->encseq = encseq;
  bustate->previousbucketlastsuffix = ULONG_MAX;
  bustate->idxoffset = 0;
  bustate->firstedgefromroot = false;
#ifdef SHUDEBUG
  bustate->nextid = 0;
#endif
  if (gd_info == NULL)
    bustate->unit_info = gt_shu_unit_info_new(encseq);
  else
    bustate->unit_info = gd_info->unit_info;

  bustate->numofdbfiles = gt_encseq_num_of_files(encseq);
#ifdef GENOMEDIFF_PAPER_IMPL
  bustate->leafdist
    = gt_malloc(sizeof (*bustate->leafdist) * bustate->numofdbfiles);
#endif
  bustate->file_to_genome_map = bustate->unit_info->map_files;
  if (gd_info == NULL)
    bustate->shulengthdist = shulengthdist_new(bustate->numofdbfiles);
  else
    bustate->shulengthdist = gd_info->shulensums;

  bustate->stack = (void *) gt_GtArrayGtBUItvinfo_new_shulen();
  return bustate;
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
movq %rsi, 0x8(%rsp)
movl $0x48, %edi
leaq 0x33a055(%rip), %rsi    # 0x57792f
movl $0x238, %edx            # imm = 0x238
callq 0xe80f0
movq %rax, (%rsp)
movq 0x10(%rsp), %rcx
movq (%rsp), %rax
movq %rcx, 0x10(%rax)
movq (%rsp), %rax
movq $-0x1, 0x28(%rax)
movq (%rsp), %rax
movq $0x0, 0x20(%rax)
movq (%rsp), %rax
movb $0x0, 0x30(%rax)
cmpq $0x0, 0x8(%rsp)
jne 0x23d934
movq 0x10(%rsp), %rdi
callq 0x2ee1e0
movq %rax, %rcx
movq (%rsp), %rax
movq %rcx, 0x38(%rax)
jmp 0x23d944
movq 0x8(%rsp), %rax
movq (%rax), %rcx
movq (%rsp), %rax
movq %rcx, 0x38(%rax)
movq 0x10(%rsp), %rdi
callq 0xb7df0
movq %rax, %rcx
movq (%rsp), %rax
movq %rcx, (%rax)
movq (%rsp), %rax
movq 0x38(%rax), %rax
movq 0x20(%rax), %rcx
movq (%rsp), %rax
movq %rcx, 0x18(%rax)
cmpq $0x0, 0x8(%rsp)
jne 0x23d98d
movq (%rsp), %rax
movq (%rax), %rdi
callq 0x23c280
movq %rax, %rcx
movq (%rsp), %rax
movq %rcx, 0x8(%rax)
jmp 0x23d99e
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rcx
movq (%rsp), %rax
movq %rcx, 0x8(%rax)
callq 0x23c050
movq %rax, %rcx
movq (%rsp), %rax
movq %rcx, 0x40(%rax)
movq (%rsp), %rax
addq $0x18, %rsp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/match/esa-shulen.c
// Function: gt_sfx_multiesa2shulengthdist
int gt_sfx_multiesa2shulengthdist(GtBUstate_shulen *bustate,
                                  const GtUword *bucketofsuffixes,
                                  const uint32_t *bucketofsuffixes_uint32,
                                  const GtLcpvaluetype *lcptab_bucket,
                                  GtUword numberofsuffixes,
                                  GtError *err)
{
  bool haserr = false;

  if (bustate->previousbucketlastsuffix != ULONG_MAX &&
      gt_esa_bottomup_RAM_previousfromlast_shulen(
                                 bustate->previousbucketlastsuffix,
                                 (GtUword) lcptab_bucket[0],
                                 bustate->stack,
                                 bustate,
                                 err) != 0)
  {
    haserr = true;
  }
  if (!haserr)
  {
    if (gt_esa_bottomup_RAM_shulen(bucketofsuffixes,
                                   bucketofsuffixes_uint32,
                                   lcptab_bucket,
                                   numberofsuffixes,
                                   bustate->stack,
                                   bustate,
                                   err) != 0)
    {
      haserr = true;
    }
  }
  bustate->idxoffset += numberofsuffixes;
  return haserr ? -1 : 0;
}

// Assembly:
subq $0x48, %rsp
movq %rdi, 0x40(%rsp)
movq %rsi, 0x38(%rsp)
movq %rdx, 0x30(%rsp)
movq %rcx, 0x28(%rsp)
movq %r8, 0x20(%rsp)
movq %r9, 0x18(%rsp)
movb $0x0, 0x17(%rsp)
movq 0x40(%rsp), %rax
cmpq $-0x1, 0x28(%rax)
je 0x23da27
movq 0x40(%rsp), %rax
movq 0x28(%rax), %rdi
movq 0x28(%rsp), %rax
movl (%rax), %eax
movl %eax, %esi
movq 0x40(%rsp), %rax
movq 0x40(%rax), %rdx
movq 0x40(%rsp), %rcx
movq 0x18(%rsp), %r8
callq 0x23daa0
cmpl $0x0, %eax
je 0x23da27
movb $0x1, 0x17(%rsp)
testb $0x1, 0x17(%rsp)
jne 0x23da6a
movq 0x38(%rsp), %rdi
movq 0x30(%rsp), %rsi
movq 0x28(%rsp), %rdx
movq 0x20(%rsp), %rcx
movq 0x40(%rsp), %rax
movq 0x40(%rax), %r8
movq 0x40(%rsp), %r9
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
callq 0x23e220
cmpl $0x0, %eax
je 0x23da68
movb $0x1, 0x17(%rsp)
jmp 0x23da6a
movq 0x20(%rsp), %rcx
movq 0x40(%rsp), %rax
addq 0x20(%rax), %rcx
movq %rcx, 0x20(%rax)
movb 0x17(%rsp), %dl
xorl %eax, %eax
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
testb $0x1, %dl
cmovnel %ecx, %eax
addq $0x48, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/match/esa-shulen.c
// Function: gt_sfx_multiesa2shulengthdist_last
int gt_sfx_multiesa2shulengthdist_last(GtBUstate_shulen *bustate,GtError *err)
{
  if (bustate->previousbucketlastsuffix != ULONG_MAX &&
      gt_esa_bottomup_RAM_previousfromlast_shulen(
                                 bustate->previousbucketlastsuffix,
                                 0,
                                 bustate->stack,
                                 bustate,
                                 err) != 0)
  {
    return -1;
  }
  return 0;
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x8(%rsp)
movq %rsi, (%rsp)
movq 0x8(%rsp), %rax
cmpq $-0x1, 0x28(%rax)
je 0x23edbc
movq 0x8(%rsp), %rax
movq 0x28(%rax), %rdi
movq 0x8(%rsp), %rax
movq 0x40(%rax), %rdx
movq 0x8(%rsp), %rcx
movq (%rsp), %r8
xorl %eax, %eax
movl %eax, %esi
callq 0x23daa0
cmpl $0x0, %eax
je 0x23edbc
movl $0xffffffff, 0x14(%rsp) # imm = 0xFFFFFFFF
jmp 0x23edc4
movl $0x0, 0x14(%rsp)
movl 0x14(%rsp), %eax
addq $0x18, %rsp
retq
nopl (%rax)