// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/tir_stream.c
// Function: gt_tir_store_seeds
static int gt_tir_store_seeds(void *info, const GtGenericEncseq *genericencseq,
                              GtUword len, GtUword pos1,
                              GtUword pos2, GT_UNUSED GtError *err)
{
  GtUword seqnum1,
                seqnum2;
  Seed *nextfreeseedpointer;
  GtUword distance;
  SeedInfo *seeds = (SeedInfo *) info;
  const GtEncseq *encseq;
  gt_error_check(err);

  gt_assert(genericencseq->hasencseq);
  encseq = genericencseq->seqptr.encseq;
  /* ensure order of seeds */
  gt_assert(pos1 < pos2);

  /* match mirrored vs. unmirrored */
  if (pos1 > seeds->midpos || pos2 < seeds->midpos)
    return 0;

  /* check distance constraints */
  distance = (GT_REVERSEPOS(seeds->totallength, pos2) - len + 1) - pos1;
  if (distance < seeds->min_tir_distance || distance > seeds->max_tir_distance)
    return 0;

  /* check whether matches are on the `same' contig */
  seqnum1 = gt_encseq_seqnum(encseq, pos1);
  seqnum2 = gt_encseq_seqnum(encseq, pos2);
  if (seqnum2 != seeds->num_of_contigs - seqnum1 - 1)
    return 0;

  /* check length constraints */
  if (len > seeds->max_tir_length)
    return 0;

  GT_GETNEXTFREEINARRAY(nextfreeseedpointer, &seeds->seed, Seed, 256);
  nextfreeseedpointer->pos1 = pos1;
  nextfreeseedpointer->pos2 = pos2;
  nextfreeseedpointer->offset = distance;
  nextfreeseedpointer->len = len;
  nextfreeseedpointer->contignumber = seqnum1;
  return 0;
}

// Assembly:
subq $0x78, %rsp
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, 0x18(%rsp)
cmpq $0x0, 0x40(%rsp)
je 0x1f0b1c
movq 0x40(%rsp), %rdi
callq 0xd8a60
testb $0x1, %al
jne 0x1f0ae4
jmp 0x1f0b1c
movq 0x44b4b5(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x32551e(%rip), %rsi    # 0x516013
leaq 0x3256c3(%rip), %rdx    # 0x5161bf
leaq 0x378855(%rip), %rcx    # 0x569358
leaq 0x378725(%rip), %r8     # 0x56922f
movl $0x91, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x1f0b1e
jmp 0x1f0b20
movq 0x60(%rsp), %rax
testb $0x1, (%rax)
jne 0x1f0b62
movq 0x44b46f(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x3254d8(%rip), %rsi    # 0x516013
leaq 0x335d1b(%rip), %rdx    # 0x52685d
leaq 0x37880f(%rip), %rcx    # 0x569358
leaq 0x3786df(%rip), %r8     # 0x56922f
movl $0x93, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x1f0b64
movq 0x60(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x10(%rsp)
movq 0x50(%rsp), %rax
cmpq 0x48(%rsp), %rax
jb 0x1f0bb6
movq 0x44b41b(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x325484(%rip), %rsi    # 0x516013
leaq 0x335bf3(%rip), %rdx    # 0x526789
leaq 0x3787bb(%rip), %rcx    # 0x569358
leaq 0x37868b(%rip), %r8     # 0x56922f
movl $0x96, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x1f0bb8
movq 0x50(%rsp), %rax
movq 0x18(%rsp), %rcx
cmpq 0x40(%rcx), %rax
ja 0x1f0bd8
movq 0x48(%rsp), %rax
movq 0x18(%rsp), %rcx
cmpq 0x40(%rcx), %rax
jae 0x1f0be5
movl $0x0, 0x74(%rsp)
jmp 0x1f0e0f
movq 0x18(%rsp), %rax
movq 0x48(%rax), %rax
subq $0x1, %rax
subq 0x48(%rsp), %rax
subq 0x58(%rsp), %rax
addq $0x1, %rax
subq 0x50(%rsp), %rax
movq %rax, 0x20(%rsp)
movq 0x20(%rsp), %rax
movq 0x18(%rsp), %rcx
cmpq 0x30(%rcx), %rax
jb 0x1f0c2a
movq 0x20(%rsp), %rax
movq 0x18(%rsp), %rcx
cmpq 0x28(%rcx), %rax
jbe 0x1f0c37
movl $0x0, 0x74(%rsp)
jmp 0x1f0e0f
movq 0x10(%rsp), %rdi
movq 0x50(%rsp), %rsi
callq 0xb03a0
movq %rax, 0x38(%rsp)
movq 0x10(%rsp), %rdi
movq 0x48(%rsp), %rsi
callq 0xb03a0
movq %rax, 0x30(%rsp)
movq 0x30(%rsp), %rax
movq 0x18(%rsp), %rcx
movq 0x38(%rcx), %rcx
subq 0x38(%rsp), %rcx
subq $0x1, %rcx
cmpq %rcx, %rax
je 0x1f0c88
movl $0x0, 0x74(%rsp)
jmp 0x1f0e0f
movq 0x58(%rsp), %rax
movq 0x18(%rsp), %rcx
cmpq 0x18(%rcx), %rax
jbe 0x1f0ca5
movl $0x0, 0x74(%rsp)
jmp 0x1f0e0f
jmp 0x1f0ca7
jmp 0x1f0ca9
movq 0x18(%rsp), %rax
movq 0x10(%rax), %rax
addq $0x0, %rax
movq 0x18(%rsp), %rcx
cmpq 0x8(%rcx), %rax
jb 0x1f0d51
movq $0x100, 0x8(%rsp)       # imm = 0x100
xorl %eax, %eax
cmpq 0x8(%rsp), %rax
jbe 0x1f0d0f
movq 0x44b2c2(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x32532b(%rip), %rsi    # 0x516013
leaq 0x3284b8(%rip), %rdx    # 0x5191a7
leaq 0x378662(%rip), %rcx    # 0x569358
leaq 0x378532(%rip), %r8     # 0x56922f
movl $0xab, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x1f0d11
movq 0x8(%rsp), %rcx
movq 0x18(%rsp), %rax
addq 0x8(%rax), %rcx
movq %rcx, 0x8(%rax)
movq 0x18(%rsp), %rax
movq (%rax), %rdi
movq 0x18(%rsp), %rax
imulq $0x28, 0x8(%rax), %rsi
leaq 0x3784f3(%rip), %rdx    # 0x56922f
movl $0xab, %ecx
callq 0xe8540
movq %rax, %rcx
movq 0x18(%rsp), %rax
movq %rcx, (%rax)
jmp 0x1f0d53
movq 0x18(%rsp), %rax
cmpq $0x0, (%rax)
jne 0x1f0d96
movq 0x44b23b(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x3252a4(%rip), %rsi    # 0x516013
leaq 0x3785f5(%rip), %rdx    # 0x56936b
leaq 0x3785db(%rip), %rcx    # 0x569358
leaq 0x3784ab(%rip), %r8     # 0x56922f
movl $0xab, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x1f0d98
jmp 0x1f0d9a
movq 0x18(%rsp), %rax
movq (%rax), %rax
movq 0x18(%rsp), %rdx
movq 0x10(%rdx), %rcx
movq %rcx, %rsi
addq $0x1, %rsi
movq %rsi, 0x10(%rdx)
imulq $0x28, %rcx, %rcx
addq %rcx, %rax
movq %rax, 0x28(%rsp)
movq 0x50(%rsp), %rcx
movq 0x28(%rsp), %rax
movq %rcx, (%rax)
movq 0x48(%rsp), %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x8(%rax)
movq 0x20(%rsp), %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x10(%rax)
movq 0x58(%rsp), %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x18(%rax)
movq 0x38(%rsp), %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x20(%rax)
movl $0x0, 0x74(%rsp)
movl 0x74(%rsp), %eax
addq $0x78, %rsp
retq
nopl (%rax,%rax)