// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/match/test-maxpairs.c
// Function: gt_storemaxmatchself
static int gt_storemaxmatchself(void *info,
                                GT_UNUSED const GtGenericEncseq *genericencseq,
                                GtUword len,
                                GtUword pos1,
                                GtUword pos2,
                                GT_UNUSED GtError *err)
{
  GtMaxmatchselfinfo *maxmatchselfinfo = (GtMaxmatchselfinfo *) info;
  GtUword dbstart, querystart;

  if (pos1 < pos2)
  {
    dbstart = pos1;
    querystart = pos2;
  } else
  {
    dbstart = pos2;
    querystart = pos1;
  }
  if (dbstart < maxmatchselfinfo->dblen &&
      maxmatchselfinfo->dblen < querystart)
  {
    Substringmatch subm;
    GtUword pos;

    subm.len = len;
    subm.dbstart = dbstart;
    pos = querystart - (maxmatchselfinfo->dblen + 1);
    if (maxmatchselfinfo->querymarkpos == NULL)
    {
      subm.queryseqnum = 0;
      subm.querystart = pos;
    } else
    {
      GtUword queryseqnum
        = gt_encseq_sep2seqnum(maxmatchselfinfo->querymarkpos,
                               maxmatchselfinfo->numofquerysequences,
                               maxmatchselfinfo->querylen,
                               pos);
      if (queryseqnum == maxmatchselfinfo->numofquerysequences)
      {
        return -1;
      }
      if (queryseqnum == 0)
      {
        subm.querystart = pos;
      } else
      {
        subm.querystart = pos -
                          (maxmatchselfinfo->querymarkpos[queryseqnum-1] + 1);
      }
      subm.queryseqnum = queryseqnum;
    }
    gt_array_add(maxmatchselfinfo->results,subm);
  }
  return 0;
}

// Assembly:
subq $0x88, %rsp
movq %rdi, 0x78(%rsp)
movq %rsi, 0x70(%rsp)
movq %rdx, 0x68(%rsp)
movq %rcx, 0x60(%rsp)
movq %r8, 0x58(%rsp)
movq %r9, 0x50(%rsp)
movq 0x78(%rsp), %rax
movq %rax, 0x48(%rsp)
movq 0x60(%rsp), %rax
cmpq 0x58(%rsp), %rax
jae 0x2f2161
movq 0x60(%rsp), %rax
movq %rax, 0x40(%rsp)
movq 0x58(%rsp), %rax
movq %rax, 0x38(%rsp)
jmp 0x2f2175
movq 0x58(%rsp), %rax
movq %rax, 0x40(%rsp)
movq 0x60(%rsp), %rax
movq %rax, 0x38(%rsp)
movq 0x40(%rsp), %rax
movq 0x48(%rsp), %rcx
cmpq 0x8(%rcx), %rax
jae 0x2f2292
movq 0x48(%rsp), %rax
movq 0x8(%rax), %rax
cmpq 0x38(%rsp), %rax
jae 0x2f2292
movq 0x68(%rsp), %rax
movq %rax, 0x18(%rsp)
movq 0x40(%rsp), %rax
movq %rax, 0x20(%rsp)
movq 0x38(%rsp), %rax
movq 0x48(%rsp), %rcx
movq 0x8(%rcx), %rcx
addq $0x1, %rcx
subq %rcx, %rax
movq %rax, 0x10(%rsp)
movq 0x48(%rsp), %rax
cmpq $0x0, 0x10(%rax)
jne 0x2f21ef
movq $0x0, 0x30(%rsp)
movq 0x10(%rsp), %rax
movq %rax, 0x28(%rsp)
jmp 0x2f227b
movq 0x48(%rsp), %rax
movq 0x10(%rax), %rdi
movq 0x48(%rsp), %rax
movq 0x20(%rax), %rsi
movq 0x48(%rsp), %rax
movq 0x18(%rax), %rdx
movq 0x10(%rsp), %rcx
callq 0xafcb0
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rax
movq 0x48(%rsp), %rcx
cmpq 0x20(%rcx), %rax
jne 0x2f2236
movl $0xffffffff, 0x84(%rsp) # imm = 0xFFFFFFFF
jmp 0x2f229d
cmpq $0x0, 0x8(%rsp)
jne 0x2f224a
movq 0x10(%rsp), %rax
movq %rax, 0x28(%rsp)
jmp 0x2f2271
movq 0x10(%rsp), %rax
movq 0x48(%rsp), %rcx
movq 0x10(%rcx), %rcx
movq 0x8(%rsp), %rdx
subq $0x1, %rdx
movq (%rcx,%rdx,8), %rcx
addq $0x1, %rcx
subq %rcx, %rax
movq %rax, 0x28(%rsp)
movq 0x8(%rsp), %rax
movq %rax, 0x30(%rsp)
movq 0x48(%rsp), %rax
movq (%rax), %rdi
leaq 0x18(%rsp), %rsi
movl $0x20, %edx
callq 0x81100
movl $0x0, 0x84(%rsp)
movl 0x84(%rsp), %eax
addq $0x88, %rsp
retq
nopl (%rax)