// File: /workspace/github_c_makefile_star2_O1/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 0x2090bb
movq %rsi, %r14
movq %rdi, %rbx
movb $0x1, %bpl
testb $0x4, 0x54(%rax)
je 0x208dfc
movq 0x18(%r14), %rsi
leaq 0x1bc839(%rip), %rdi    # 0x3c562c
xorl %ebp, %ebp
xorl %eax, %eax
callq 0x17070
movq (%rbx), %rax
testb $0x8, 0x54(%rax)
je 0x208e6f
testb %bpl, %bpl
je 0x208e0e
xorl %ebp, %ebp
jmp 0x208e18
movl $0x9, %edi
callq 0x17a20
movq (%rbx), %rax
testb $0x10, 0x54(%rax)
jne 0x208e5d
movq 0x30(%rbx), %rdi
movq 0x10(%r14), %rsi
callq 0xefc48
movq %rax, %r15
movq 0x30(%rbx), %rdi
movq %rax, %rsi
callq 0xefce0
movq 0x10(%r14), %rdx
subq %rax, %rdx
jb 0x2090c5
leaq 0x1bc7d7(%rip), %rdi    # 0x3c5628
movq %r15, %rsi
xorl %eax, %eax
callq 0x17070
jmp 0x208e6f
movq 0x10(%r14), %rsi
leaq 0x1bc7c4(%rip), %rdi    # 0x3c562c
xorl %eax, %eax
callq 0x17070
movq (%rbx), %rax
testb $0x20, 0x54(%rax)
je 0x208eaf
testb %bpl, %bpl
je 0x208e81
xorl %ebp, %ebp
jmp 0x208e8b
movl $0x9, %edi
callq 0x17a20
movq 0x20(%r14), %rdx
testq %rdx, %rdx
je 0x2090c0
movq 0x18(%rbx), %rdi
movq 0x2bb045(%rip), %rax    # 0x4c3ee8
movq (%rax), %rsi
movq 0x18(%r14), %rcx
callq 0xd394b
movq (%rbx), %rax
testb $0x40, 0x54(%rax)
je 0x208ee7
testb %bpl, %bpl
je 0x208ec1
xorl %ebp, %ebp
jmp 0x208ecb
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
testb $-0x80, 0x54(%rax)
je 0x208f15
testb %bpl, %bpl
je 0x208ef9
xorl %ebp, %ebp
jmp 0x208f03
movl $0x9, %edi
callq 0x17a20
movq 0x38(%r14), %rsi
leaq 0x1bc71e(%rip), %rdi    # 0x3c562c
xorl %eax, %eax
callq 0x17070
movq (%rbx), %rax
cmpq $0x0, 0x58(%rax)
je 0x209097
movl 0x54(%rax), %ecx
cmpb $0x1, 0x40(%rax)
jne 0x208f86
testl $0x700, %ecx            # imm = 0x700
je 0x209097
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 0x312431
cmpq %rax, 0x30(%r14)
jb 0x2090ca
movq %rax, %r15
movq (%rbx), %rax
testb $0x1, 0x55(%rax)
je 0x20902f
testb %bpl, %bpl
je 0x209010
xorl %ebp, %ebp
jmp 0x20901a
btl $0x8, %ecx
jae 0x208fa9
testb %bpl, %bpl
je 0x208f95
xorl %ebp, %ebp
jmp 0x208f9f
movl $0x9, %edi
callq 0x17a20
movl $0x30, %edi
callq 0x17a20
movq (%rbx), %rax
testb $0x2, 0x55(%rax)
je 0x208fd7
testb %bpl, %bpl
je 0x208fbb
xorl %ebp, %ebp
jmp 0x208fc5
movl $0x9, %edi
callq 0x17a20
movq 0x30(%r14), %rsi
leaq 0x1bc65c(%rip), %rdi    # 0x3c562c
xorl %eax, %eax
callq 0x17070
movq (%rbx), %rax
testb $0x4, 0x55(%rax)
je 0x209097
testb %bpl, %bpl
je 0x208fed
xorl %ebp, %ebp
jmp 0x208ff7
movl $0x9, %edi
callq 0x17a20
movq 0x2baeea(%rip), %rax    # 0x4c3ee8
movq (%rax), %rsi
movq 0x10(%rbx), %rdx
movq 0x30(%r14), %rcx
xorl %edi, %edi
jmp 0x209092
movl $0x9, %edi
callq 0x17a20
movq 0x30(%r14), %rsi
subq %r15, %rsi
leaq 0x1bc604(%rip), %rdi    # 0x3c562c
xorl %eax, %eax
callq 0x17070
movq (%rbx), %rax
testb $0x2, 0x55(%rax)
je 0x20905c
testb %bpl, %bpl
je 0x209041
xorl %ebp, %ebp
jmp 0x20904b
movl $0x9, %edi
callq 0x17a20
leaq 0x1bc5da(%rip), %rdi    # 0x3c562c
movq %r15, %rsi
xorl %eax, %eax
callq 0x17070
movq (%rbx), %rax
testb $0x4, 0x55(%rax)
je 0x209097
testb %bpl, %bpl
je 0x20906e
xorl %ebp, %ebp
jmp 0x209078
movl $0x9, %edi
callq 0x17a20
movq 0x2bae69(%rip), %rax    # 0x4c3ee8
movq (%rax), %rsi
movq 0x30(%r14), %rdx
subq %r15, %rdx
addq 0x10(%rbx), %rdx
xorl %edi, %edi
movq %r15, %rcx
callq 0xd394b
testb %bpl, %bpl
je 0x2090a7
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 0x80e44
callq 0x80dd4
callq 0x80d9d
callq 0x80e0b