// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/tools/gt_repfind.c
// Function: gt_exact_selfmatch_with_output
static int gt_exact_selfmatch_with_output(void *info,
                                          const GtGenericEncseq *genericencseq,
                                          GtUword len,
                                          GtUword pos1,
                                          GtUword pos2,
                                          GT_UNUSED GtError *err)
{
  GtUword queryseqnum, query_seqstart, query_seqlen, dbseqnum,
          db_seqstart, dbseqlen;
  const GtEncseq *encseq;
  GtProcessinfo_and_querymatchspaceptr *info_querymatch
    = (GtProcessinfo_and_querymatchspaceptr *) info;
  GtSeqorEncseq dbes, queryes;

  gt_assert(pos1 < pos2 && genericencseq != NULL && genericencseq->hasencseq);
  encseq = genericencseq->seqptr.encseq;
  if (gt_encseq_has_multiseq_support(encseq))
  {
    dbseqnum = gt_encseq_seqnum(encseq,pos1);
    db_seqstart = gt_encseq_seqstartpos(encseq,dbseqnum);
    dbseqlen = gt_encseq_seqlength(encseq,dbseqnum);
    queryseqnum = gt_encseq_seqnum(encseq,pos2);
    query_seqstart = gt_encseq_seqstartpos(encseq,queryseqnum);
    query_seqlen = gt_encseq_seqlength(encseq,queryseqnum);
  } else
  {
    dbseqnum = 0;
    db_seqstart = 0;
    dbseqlen = 0;
    queryseqnum = 0;
    query_seqstart = 0;
    query_seqlen = 0;
  }
  gt_assert(pos2 >= query_seqstart);
  GT_SEQORENCSEQ_INIT_ENCSEQ(&dbes,encseq);
  GT_SEQORENCSEQ_INIT_ENCSEQ(&queryes,encseq);
  if (gt_querymatch_complete(info_querymatch->querymatchspaceptr,
                             info_querymatch->out_display_flag,
                             len,
                             dbseqnum,
                             pos1 - db_seqstart,
                             db_seqstart,
                             dbseqlen,
                             0, /* score */
                             0, /* edist */
                             0, /* mismatches */
                             true,
                             (uint64_t) queryseqnum,
                             len,
                             pos2 - query_seqstart,
                             &dbes,
                             &queryes,
                             query_seqstart,
                             query_seqlen,
                             pos1 - db_seqstart,
                             pos2 - query_seqstart,
                             len,
                             false))
  {
    /* for exact matches we do not output evalues and bitscores */
    gt_querymatch_prettyprint(DBL_MAX,DBL_MAX,
                              info_querymatch->out_display_flag,
                              info_querymatch->querymatchspaceptr);
  }
  return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x178, %rsp            # imm = 0x178
movq %rdi, 0x170(%rsp)
movq %rsi, 0x168(%rsp)
movq %rdx, 0x160(%rsp)
movq %rcx, 0x158(%rsp)
movq %r8, 0x150(%rsp)
movq %r9, 0x148(%rsp)
movq 0x170(%rsp), %rax
movq %rax, 0x108(%rsp)
movq 0x158(%rsp), %rax
cmpq 0x150(%rsp), %rax
jae 0x59d5b
cmpq $0x0, 0x168(%rsp)
je 0x59d5b
movq 0x168(%rsp), %rax
testb $0x1, (%rax)
jne 0x59d93
movq 0x5e223e(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x4bc2a7(%rip), %rsi    # 0x516013
leaq 0x4ccac2(%rip), %rdx    # 0x526835
leaq 0x4ccafc(%rip), %rcx    # 0x526876
leaq 0x4cc307(%rip), %r8     # 0x526088
movl $0x58, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x59d95
movq 0x168(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x110(%rsp)
movq 0x110(%rsp), %rdi
callq 0xb2480
testb $0x1, %al
jne 0x59dbf
jmp 0x59e6f
movq 0x110(%rsp), %rdi
movq 0x158(%rsp), %rsi
callq 0xb03a0
movq %rax, 0x128(%rsp)
movq 0x110(%rsp), %rdi
movq 0x128(%rsp), %rsi
callq 0xb0530
movq %rax, 0x120(%rsp)
movq 0x110(%rsp), %rdi
movq 0x128(%rsp), %rsi
callq 0xb09f0
movq %rax, 0x118(%rsp)
movq 0x110(%rsp), %rdi
movq 0x150(%rsp), %rsi
callq 0xb03a0
movq %rax, 0x140(%rsp)
movq 0x110(%rsp), %rdi
movq 0x140(%rsp), %rsi
callq 0xb0530
movq %rax, 0x138(%rsp)
movq 0x110(%rsp), %rdi
movq 0x140(%rsp), %rsi
callq 0xb09f0
movq %rax, 0x130(%rsp)
jmp 0x59eb7
movq $0x0, 0x128(%rsp)
movq $0x0, 0x120(%rsp)
movq $0x0, 0x118(%rsp)
movq $0x0, 0x140(%rsp)
movq $0x0, 0x138(%rsp)
movq $0x0, 0x130(%rsp)
jmp 0x59eb9
movq 0x150(%rsp), %rax
cmpq 0x138(%rsp), %rax
jae 0x59f03
movq 0x5e20ce(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x4bc137(%rip), %rsi    # 0x516013
leaq 0x4cc9b2(%rip), %rdx    # 0x526895
leaq 0x4cc98c(%rip), %rcx    # 0x526876
leaq 0x4cc197(%rip), %r8     # 0x526088
movl $0x6b, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x59f05
movq 0x110(%rsp), %rax
movq %rax, 0xd8(%rsp)
movq $0x0, 0xd0(%rsp)
movq $0x0, 0xe0(%rsp)
movq $-0x1, 0xf0(%rsp)
movq $-0x1, 0xe8(%rsp)
movq $0x0, 0xf8(%rsp)
movb $0x0, 0x100(%rsp)
movb $0x1, 0x101(%rsp)
movq 0x110(%rsp), %rax
movq %rax, 0xa0(%rsp)
movq $0x0, 0x98(%rsp)
movq $0x0, 0xa8(%rsp)
movq $-0x1, 0xb8(%rsp)
movq $-0x1, 0xb0(%rsp)
movq $0x0, 0xc0(%rsp)
movb $0x0, 0xc8(%rsp)
movb $0x1, 0xc9(%rsp)
movq 0x108(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x108(%rsp), %rax
movq 0x18(%rax), %rsi
movq 0x160(%rsp), %rdx
movq 0x128(%rsp), %rcx
movq 0x158(%rsp), %r8
subq 0x120(%rsp), %r8
movq 0x120(%rsp), %r9
movq 0x118(%rsp), %rax
movq %rax, 0x80(%rsp)
movq 0x140(%rsp), %rax
movq %rax, 0x88(%rsp)
movq 0x160(%rsp), %rbp
movq 0x150(%rsp), %r13
subq 0x138(%rsp), %r13
movq 0x138(%rsp), %r14
movq 0x130(%rsp), %rbx
movq 0x158(%rsp), %r11
subq 0x120(%rsp), %r11
movq 0x150(%rsp), %r10
subq 0x138(%rsp), %r10
movq 0x160(%rsp), %rax
movq %rax, 0x90(%rsp)
xorl %eax, %eax
leaq 0xd0(%rsp), %r12
leaq 0x98(%rsp), %r15
xorl %eax, %eax
movq 0x80(%rsp), %rax
movq %rax, (%rsp)
movq 0x88(%rsp), %rax
movq $0x0, 0x8(%rsp)
movq $0x0, 0x10(%rsp)
movq $0x0, 0x18(%rsp)
movl $0x1, 0x20(%rsp)
movq %rax, 0x28(%rsp)
movq 0x90(%rsp), %rax
movq %rbp, 0x30(%rsp)
movq %r13, 0x38(%rsp)
movq %r12, 0x40(%rsp)
movq %r15, 0x48(%rsp)
movq %r14, 0x50(%rsp)
movq %rbx, 0x58(%rsp)
movq %r11, 0x60(%rsp)
movq %r10, 0x68(%rsp)
movq %rax, 0x70(%rsp)
movl $0x0, 0x78(%rsp)
callq 0x269e50
testb $0x1, %al
jne 0x5a10d
jmp 0x5a135
movq 0x108(%rsp), %rax
movq 0x18(%rax), %rdi
movq 0x108(%rsp), %rax
movq 0x8(%rax), %rsi
movsd 0x4bec23(%rip), %xmm1   # 0x518d50
movaps %xmm1, %xmm0
callq 0x267bd0
xorl %eax, %eax
addq $0x178, %rsp            # imm = 0x178
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nopl (%rax)