// File: /workspace/github_c_makefile_star2_O3/genometools[P]genometools/src/match/tagerator.c
// Function: tgr_showmatch
static void tgr_showmatch(void *processinfo,const GtIdxMatch *match)
{
  TgrShowmatchinfo *showmatchinfo = (TgrShowmatchinfo *) processinfo;
  bool firstitem = true;

  gt_assert(showmatchinfo->tageratoroptions != NULL);
  if (showmatchinfo->tageratoroptions->outputmode & TAGOUT_DBLENGTH)
  {
    printf(""GT_WU"",match->dblen);
    firstitem = false;
  }
  if (showmatchinfo->tageratoroptions->outputmode & TAGOUT_DBSTARTPOS)
  {
    ADDTABULATOR;
    if (showmatchinfo->tageratoroptions->outputmode & TAGOUT_DBABSPOS)
    {
      printf(""GT_WU"",match->dbstartpos);
    } else
    {
      GtUword seqstartpos,
                    seqnum = gt_encseq_seqnum(showmatchinfo->encseq,
                                                  match->dbstartpos);
      seqstartpos = gt_encseq_seqstartpos(showmatchinfo->encseq, seqnum);
      gt_assert(seqstartpos <= match->dbstartpos);
      printf(""GT_WU"\t"GT_WU"",seqnum, match->dbstartpos - seqstartpos);
    }
  }
  if (showmatchinfo->tageratoroptions->outputmode & TAGOUT_DBSEQUENCE)
  {
    ADDTABULATOR;
    gt_assert(match->dbsubstring != NULL);
    gt_alphabet_decode_seq_to_fp(showmatchinfo->alpha,
                                 stdout,
                                 match->dbsubstring,
                                 (GtUword) match->dblen);
  }
  if (showmatchinfo->tageratoroptions->outputmode & TAGOUT_STRAND)
  {
    ADDTABULATOR;
    printf("%c",ISRCDIR(showmatchinfo->twlptr) ? '-' : '+');
  }
  if (showmatchinfo->tageratoroptions->outputmode & TAGOUT_EDIST)
  {
    ADDTABULATOR;
    printf(""GT_WU"",match->distance);
  }
  if (showmatchinfo->tageratoroptions->maxintervalwidth > 0)
  {
    if (showmatchinfo->tageratoroptions->skpp)
    {
      if (showmatchinfo->tageratoroptions->outputmode &
          (TAGOUT_TAGSTARTPOS | TAGOUT_TAGLENGTH | TAGOUT_TAGSUFFIXSEQ))
      {
        GtUword suffixlength
          = gt_reversesuffixmatch(showmatchinfo->eqsvector,
                               showmatchinfo->alphasize,
                               match->dbsubstring,
                               (GtUword) match->dblen,
                               showmatchinfo->tagptr,
                               match->querylen,
                               (GtUword) showmatchinfo->tageratoroptions->
                                                        userdefinedmaxdistance);
        gt_assert(match->querylen >= suffixlength);
        if (showmatchinfo->tageratoroptions->outputmode & TAGOUT_TAGSTARTPOS)
        {
          ADDTABULATOR;
          printf(""GT_WU"",match->querylen - suffixlength);
        }
        if (showmatchinfo->tageratoroptions->outputmode & TAGOUT_TAGLENGTH)
        {
          ADDTABULATOR;
          printf(""GT_WU"",suffixlength);
        }
        if (showmatchinfo->tageratoroptions->outputmode & TAGOUT_TAGSUFFIXSEQ)
        {
          ADDTABULATOR;
          gt_alphabet_decode_seq_to_fp(NULL,
                                       stdout,showmatchinfo->tagptr +
                                       (match->querylen - suffixlength),
                                       suffixlength);
        }
      }
    } else
    {
      if (showmatchinfo->tageratoroptions->outputmode & TAGOUT_TAGSTARTPOS)
      {
        ADDTABULATOR;
        printf("0");
      }
      if (showmatchinfo->tageratoroptions->outputmode & TAGOUT_TAGLENGTH)
      {
        ADDTABULATOR;
        printf(""GT_WU"",match->querylen);
      }
      if (showmatchinfo->tageratoroptions->outputmode & TAGOUT_TAGSUFFIXSEQ)
      {
        ADDTABULATOR;
        gt_alphabet_decode_seq_to_fp(NULL,
                                     stdout,
                                     showmatchinfo->tagptr,
                                     match->querylen);
      }
    }
  }
  if (!firstitem)
  {
    printf("\n");
  }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq (%rdi), %rax
testq %rax, %rax
je 0x1ff90c
movq %rsi, %r14
movq %rdi, %rbx
movl 0x54(%rax), %eax
movb $0x1, %bpl
testb $0x4, %al
je 0x1ff63a
movq 0x18(%r14), %rsi
leaq 0x1bc991(%rip), %rdi    # 0x3bbfbc
xorl %ebp, %ebp
xorl %eax, %eax
callq 0x17070
movq (%rbx), %rax
movl 0x54(%rax), %eax
testb $0x8, %al
je 0x1ff6a9
testb %bpl, %bpl
je 0x1ff647
xorl %ebp, %ebp
jmp 0x1ff657
movl $0x9, %edi
callq 0x17a20
movq (%rbx), %rax
movl 0x54(%rax), %eax
testb $0x10, %al
jne 0x1ff697
movq 0x30(%rbx), %rdi
movq 0x10(%r14), %rsi
callq 0xeb655
movq %rax, %r15
movq 0x30(%rbx), %rdi
movq %rax, %rsi
callq 0xeb6ee
movq 0x10(%r14), %rdx
subq %rax, %rdx
jb 0x1ff916
leaq 0x1bc92d(%rip), %rdi    # 0x3bbfb8
movq %r15, %rsi
xorl %eax, %eax
callq 0x17070
jmp 0x1ff6a9
movq 0x10(%r14), %rsi
leaq 0x1bc91a(%rip), %rdi    # 0x3bbfbc
xorl %eax, %eax
callq 0x17070
movq (%rbx), %rax
movl 0x54(%rax), %ecx
testb $0x20, %cl
je 0x1ff6f1
testb %bpl, %bpl
je 0x1ff6bd
xorl %ebp, %ebp
jmp 0x1ff6c7
movl $0x9, %edi
callq 0x17a20
movq 0x20(%r14), %rdx
testq %rdx, %rdx
je 0x1ff911
movq 0x18(%rbx), %rdi
movq 0x2b97f9(%rip), %rax    # 0x4b8ed8
movq (%rax), %rsi
movq 0x18(%r14), %rcx
callq 0xd1412
movq (%rbx), %rax
movl 0x54(%rax), %ecx
testb $0x40, %cl
je 0x1ff72b
testb %bpl, %bpl
je 0x1ff6ff
xorl %ebp, %ebp
jmp 0x1ff709
movl $0x9, %edi
callq 0x17a20
movq 0x28(%rbx), %rax
leaq 0x8(%rax), %rcx
xorl %edx, %edx
cmpq %rcx, (%rax)
setne %dl
leal 0x2b(,%rdx,2), %edi
callq 0x17a20
movq (%rbx), %rax
movl 0x54(%rax), %ecx
testb %cl, %cl
jns 0x1ff757
testb %bpl, %bpl
je 0x1ff738
xorl %ebp, %ebp
jmp 0x1ff742
movl $0x9, %edi
callq 0x17a20
movq 0x38(%r14), %rsi
leaq 0x1bc86f(%rip), %rdi    # 0x3bbfbc
xorl %eax, %eax
callq 0x17070
movq (%rbx), %rax
cmpq $0x0, 0x58(%rax)
je 0x1ff8e8
movl 0x54(%rax), %ecx
cmpb $0x1, 0x40(%rax)
jne 0x1ff7cb
testl $0x700, %ecx            # imm = 0x700
je 0x1ff8e8
movq 0x20(%rbx), %rdi
movl 0x8(%rbx), %esi
movq 0x18(%r14), %rcx
movq 0x20(%r14), %rdx
movq 0x10(%rbx), %r8
movq 0x30(%r14), %r9
movq 0x48(%rax), %rax
movq %rax, (%rsp)
callq 0x3085e5
movq 0x30(%r14), %rsi
cmpq %rax, %rsi
jb 0x1ff91b
movq %rax, %r15
movq (%rbx), %rax
movl 0x54(%rax), %eax
btl $0x8, %eax
jae 0x1ff880
testb %bpl, %bpl
je 0x1ff85b
xorl %ebp, %ebp
jmp 0x1ff869
btl $0x8, %ecx
jae 0x1ff7f4
testb %bpl, %bpl
je 0x1ff7da
xorl %ebp, %ebp
jmp 0x1ff7e4
movl $0x9, %edi
callq 0x17a20
movl $0x30, %edi
callq 0x17a20
movq (%rbx), %rax
movl 0x54(%rax), %ecx
btl $0x9, %ecx
jae 0x1ff825
testb %bpl, %bpl
je 0x1ff803
xorl %ebp, %ebp
jmp 0x1ff80d
movl $0x9, %edi
callq 0x17a20
movq 0x30(%r14), %rsi
leaq 0x1bc7a4(%rip), %rdi    # 0x3bbfbc
xorl %eax, %eax
callq 0x17070
movq (%rbx), %rax
movl 0x54(%rax), %ecx
btl $0xa, %ecx
jae 0x1ff8e8
testb %bpl, %bpl
je 0x1ff838
xorl %ebp, %ebp
jmp 0x1ff842
movl $0x9, %edi
callq 0x17a20
movq 0x2b968f(%rip), %rax    # 0x4b8ed8
movq (%rax), %rsi
movq 0x10(%rbx), %rdx
movq 0x30(%r14), %rcx
xorl %edi, %edi
jmp 0x1ff8e3
movl $0x9, %edi
callq 0x17a20
movq 0x30(%r14), %rsi
subq %r15, %rsi
leaq 0x1bc749(%rip), %rdi    # 0x3bbfbc
xorl %eax, %eax
callq 0x17070
movq (%rbx), %rax
movl 0x54(%rax), %eax
btl $0x9, %eax
jae 0x1ff8b0
testb %bpl, %bpl
je 0x1ff88f
xorl %ebp, %ebp
jmp 0x1ff899
movl $0x9, %edi
callq 0x17a20
leaq 0x1bc71c(%rip), %rdi    # 0x3bbfbc
movq %r15, %rsi
xorl %eax, %eax
callq 0x17070
movq (%rbx), %rax
movl 0x54(%rax), %eax
btl $0xa, %eax
jae 0x1ff8e8
testb %bpl, %bpl
je 0x1ff8bf
xorl %ebp, %ebp
jmp 0x1ff8c9
movl $0x9, %edi
callq 0x17a20
movq 0x2b9608(%rip), %rax    # 0x4b8ed8
movq (%rax), %rsi
movq 0x30(%r14), %rdx
subq %r15, %rdx
addq 0x10(%rbx), %rdx
xorl %edi, %edi
movq %r15, %rcx
callq 0xd1412
testb %bpl, %bpl
je 0x1ff8f8
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movl $0xa, %edi
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x17a20
callq 0x7f03a
callq 0x7efca
callq 0x7ef93
callq 0x7f001