// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/ltr/ltrharvest_stream.c
// Function: gt_simpleexactselfmatchstore
static int gt_simpleexactselfmatchstore(void *info,
                                        const GtGenericEncseq *genericencseq,
                                        GtUword len, GtUword pos1,
                                        GtUword pos2,
                                        GT_UNUSED GtError *err)
{
  GtUword distance;
  RepeatInfo *repeatinfo = (RepeatInfo *) info;

  gt_error_check(err);
  gt_assert(pos1 < pos2);
  if (repeatinfo->ltrsearchseqrange.start > 0 ||
      repeatinfo->ltrsearchseqrange.end > 0)
  {
    if (pos1 < repeatinfo->ltrsearchseqrange.start  ||
        pos2 + len - 1 > repeatinfo->ltrsearchseqrange.end)
    {
      return 0;
    }
  }
  distance = pos2 - pos1;
  /*test maximal length of candidate pair and distance constraints*/
  if (len <= repeatinfo->lmax && repeatinfo->dmin <= distance
                              && distance <= repeatinfo->dmax)
  {
    GtUword seqnum1, seqnum2;

    gt_assert(genericencseq->hasencseq);
    seqnum1 = gt_encseq_seqnum(genericencseq->seqptr.encseq,pos1);
    seqnum2 = gt_encseq_seqnum(genericencseq->seqptr.encseq,pos2);
    if (seqnum1 == seqnum2)
    {
      Repeat *nextfreerepeatptr;

      GT_GETNEXTFREEINARRAY(nextfreerepeatptr,&repeatinfo->repeats,Repeat,32);
      nextfreerepeatptr->pos1 = pos1;
      nextfreerepeatptr->offset = distance;
      nextfreerepeatptr->len = len;
      nextfreerepeatptr->contignumber = seqnum1;
    }
  }
  return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %r8, %rbp
movq %rcx, %r14
movq %rdx, %rbx
movq %rsi, %r13
movq %rdi, %r15
testq %r9, %r9
je 0x1c4e2b
movq %r9, %rdi
callq 0x89eb7
testb %al, %al
jne 0x1c4f47
movq %rbp, %r12
subq %r14, %r12
jbe 0x1c4f19
movq 0x38(%r15), %rax
testq %rax, %rax
jne 0x1c4e47
cmpq $0x0, 0x40(%r15)
je 0x1c4e61
cmpq %r14, %rax
ja 0x1c4f08
leaq (%rbx,%rbp), %rax
decq %rax
cmpq 0x40(%r15), %rax
ja 0x1c4f08
cmpq %rbx, 0x20(%r15)
jb 0x1c4f08
cmpq %r12, 0x28(%r15)
ja 0x1c4f08
cmpq 0x30(%r15), %r12
ja 0x1c4f08
cmpb $0x0, (%r13)
je 0x1c4f7f
movq 0x8(%r13), %rdi
movq %r14, %rsi
callq 0x74c9d
movq 0x8(%r13), %rdi
movq %rax, %r13
movq %rbp, %rsi
callq 0x74c9d
cmpq %rax, %r13
jne 0x1c4f08
movq 0x8(%r15), %rsi
cmpq %rsi, 0x10(%r15)
jae 0x1c4eb9
movq (%r15), %rax
jmp 0x1c4edc
addq $0x20, %rsi
movq %rsi, 0x8(%r15)
movq (%r15), %rdi
shlq $0x5, %rsi
leaq 0x19c4d5(%rip), %rdx    # 0x3613a4
movl $0xdd, %ecx
callq 0x93472
movq %rax, (%r15)
testq %rax, %rax
je 0x1c4fad
movq 0x10(%r15), %rcx
leaq 0x1(%rcx), %rdx
movq %rdx, 0x10(%r15)
shlq $0x5, %rcx
movq %r14, (%rax,%rcx)
movq %r12, 0x8(%rax,%rcx)
movq %rbx, 0x10(%rax,%rcx)
movq %r13, 0x18(%rax,%rcx)
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x273048(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1200e9(%rip), %rsi    # 0x2e5013
leaq 0x1307a8(%rip), %rdx    # 0x2f56d9
leaq 0x19c594(%rip), %rcx    # 0x3614cc
leaq 0x19c465(%rip), %r8     # 0x3613a4
movl $0xc5, %r9d
jmp 0x1c4f73
movq 0x27301a(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1200bb(%rip), %rsi    # 0x2e5013
leaq 0x120260(%rip), %rdx    # 0x2e51bf
leaq 0x19c566(%rip), %rcx    # 0x3614cc
leaq 0x19c437(%rip), %r8     # 0x3613a4
movl $0xc4, %r9d
xorl %eax, %eax
callq 0x17a50
callq 0x17390
movq 0x272fe2(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x120083(%rip), %rsi    # 0x2e5013
leaq 0x130816(%rip), %rdx    # 0x2f57ad
leaq 0x19c52e(%rip), %rcx    # 0x3614cc
leaq 0x19c3ff(%rip), %r8     # 0x3613a4
movl $0xd6, %r9d
jmp 0x1c4f73
movq 0x272fb4(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x120055(%rip), %rsi    # 0x2e5013
leaq 0x19c524(%rip), %rdx    # 0x3614e9
leaq 0x19c500(%rip), %rcx    # 0x3614cc
leaq 0x19c3d1(%rip), %r8     # 0x3613a4
movl $0xdd, %r9d
jmp 0x1c4f73