// File: /workspace/github_c_makefile_star2_O2/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 0x1b3446
movq %rsi, %r14
movq %rdi, %rbx
movl 0x54(%rax), %eax
movb $0x1, %bpl
testb $0x4, %al
je 0x1b318d
movq 0x18(%r14), %rsi
leaq 0x1a9290(%rip), %rdi    # 0x35c40e
xorl %ebp, %ebp
xorl %eax, %eax
callq 0x17070
movq (%rbx), %rax
movl 0x54(%rax), %eax
testb $0x8, %al
je 0x1b31fa
testb %bpl, %bpl
je 0x1b319a
xorl %ebp, %ebp
jmp 0x1b31a8
pushq $0x9
popq %rdi
callq 0x179c0
movq (%rbx), %rax
movl 0x54(%rax), %eax
testb $0x10, %al
jne 0x1b31e8
movq 0x30(%rbx), %rdi
movq 0x10(%r14), %rsi
callq 0x74c9d
movq %rax, %r15
movq 0x30(%rbx), %rdi
movq %rax, %rsi
callq 0x74d9c
movq 0x10(%r14), %rdx
subq %rax, %rdx
jb 0x1b349a
leaq 0x1a922e(%rip), %rdi    # 0x35c40a
movq %r15, %rsi
xorl %eax, %eax
callq 0x17070
jmp 0x1b31fa
movq 0x10(%r14), %rsi
leaq 0x1a921b(%rip), %rdi    # 0x35c40e
xorl %eax, %eax
callq 0x17070
movq (%rbx), %rax
movl 0x54(%rax), %ecx
testb $0x20, %cl
je 0x1b3240
testb %bpl, %bpl
je 0x1b320e
xorl %ebp, %ebp
jmp 0x1b3216
pushq $0x9
popq %rdi
callq 0x179c0
movq 0x20(%r14), %rdx
testq %rdx, %rdx
je 0x1b3470
movq 0x18(%rbx), %rdi
movq 0x284c82(%rip), %rax    # 0x437eb0
movq (%rax), %rsi
movq 0x18(%r14), %rcx
callq 0x5703f
movq (%rbx), %rax
movl 0x54(%rax), %ecx
testb $0x40, %cl
je 0x1b3278
testb %bpl, %bpl
je 0x1b324e
xorl %ebp, %ebp
jmp 0x1b3256
pushq $0x9
popq %rdi
callq 0x179c0
movq 0x28(%rbx), %rax
leaq 0x8(%rax), %rcx
xorl %edx, %edx
cmpq %rcx, (%rax)
setne %dl
leal 0x2b(,%rdx,2), %edi
callq 0x179c0
movq (%rbx), %rax
movl 0x54(%rax), %ecx
testb %cl, %cl
jns 0x1b32a2
testb %bpl, %bpl
je 0x1b3285
xorl %ebp, %ebp
jmp 0x1b328d
pushq $0x9
popq %rdi
callq 0x179c0
movq 0x38(%r14), %rsi
leaq 0x1a9176(%rip), %rdi    # 0x35c40e
xorl %eax, %eax
callq 0x17070
movq (%rbx), %rax
cmpq $0x0, 0x58(%rax)
je 0x1b3424
movl 0x54(%rax), %ecx
cmpb $0x1, 0x40(%rax)
jne 0x1b3315
testw $0x700, %cx             # imm = 0x700
je 0x1b3424
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 0x2a7033
movq 0x30(%r14), %rsi
cmpq %rax, %rsi
jb 0x1b34d0
movq %rax, %r15
movq (%rbx), %rax
movl 0x54(%rax), %eax
btl $0x8, %eax
jae 0x1b33c0
testb %bpl, %bpl
je 0x1b339d
xorl %ebp, %ebp
jmp 0x1b33a9
btl $0x8, %ecx
jae 0x1b333a
testb %bpl, %bpl
je 0x1b3324
xorl %ebp, %ebp
jmp 0x1b332c
pushq $0x9
popq %rdi
callq 0x179c0
pushq $0x30
popq %rdi
callq 0x179c0
movq (%rbx), %rax
movl 0x54(%rax), %ecx
btl $0x9, %ecx
jae 0x1b3369
testb %bpl, %bpl
je 0x1b3349
xorl %ebp, %ebp
jmp 0x1b3351
pushq $0x9
popq %rdi
callq 0x179c0
movq 0x30(%r14), %rsi
leaq 0x1a90b2(%rip), %rdi    # 0x35c40e
xorl %eax, %eax
callq 0x17070
movq (%rbx), %rax
movl 0x54(%rax), %ecx
btl $0xa, %ecx
jae 0x1b3424
testb %bpl, %bpl
je 0x1b337c
xorl %ebp, %ebp
jmp 0x1b3384
pushq $0x9
popq %rdi
callq 0x179c0
movq 0x284b25(%rip), %rax    # 0x437eb0
movq (%rax), %rsi
movq 0x10(%rbx), %rdx
movq 0x30(%r14), %rcx
xorl %edi, %edi
jmp 0x1b341f
pushq $0x9
popq %rdi
callq 0x179c0
movq 0x30(%r14), %rsi
subq %r15, %rsi
leaq 0x1a905b(%rip), %rdi    # 0x35c40e
xorl %eax, %eax
callq 0x17070
movq (%rbx), %rax
movl 0x54(%rax), %eax
btl $0x9, %eax
jae 0x1b33ee
testb %bpl, %bpl
je 0x1b33cf
xorl %ebp, %ebp
jmp 0x1b33d7
pushq $0x9
popq %rdi
callq 0x179c0
leaq 0x1a9030(%rip), %rdi    # 0x35c40e
movq %r15, %rsi
xorl %eax, %eax
callq 0x17070
movq (%rbx), %rax
movl 0x54(%rax), %eax
btl $0xa, %eax
jae 0x1b3424
testb %bpl, %bpl
je 0x1b33fd
xorl %ebp, %ebp
jmp 0x1b3405
pushq $0x9
popq %rdi
callq 0x179c0
movq 0x284aa4(%rip), %rax    # 0x437eb0
movq (%rax), %rsi
movq 0x30(%r14), %rdx
subq %r15, %rdx
addq 0x10(%rbx), %rdx
xorl %edi, %edi
movq %r15, %rcx
callq 0x5703f
testb %bpl, %bpl
je 0x1b3434
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
pushq $0xa
popq %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x179c0
movq 0x284b1b(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x131bbc(%rip), %rsi    # 0x2e5013
leaq 0x1a8f76(%rip), %rdx    # 0x35c3d4
leaq 0x1a8f97(%rip), %rcx    # 0x35c3fc
leaq 0x1a8e23(%rip), %r8     # 0x35c28f
pushq $0x56
jmp 0x1b34c2
movq 0x284af1(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x131b92(%rip), %rsi    # 0x2e5013
leaq 0x1a8f8a(%rip), %rdx    # 0x35c412
leaq 0x1a8f6d(%rip), %rcx    # 0x35c3fc
leaq 0x1a8df9(%rip), %r8     # 0x35c28f
pushq $0x6f
jmp 0x1b34c2
movq 0x284ac7(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x131b68(%rip), %rsi    # 0x2e5013
leaq 0x194dfa(%rip), %rdx    # 0x3482ac
leaq 0x1a8f43(%rip), %rcx    # 0x35c3fc
leaq 0x1a8dcf(%rip), %r8     # 0x35c28f
pushq $0x68
popq %r9
xorl %eax, %eax
callq 0x17a50
callq 0x17390
movq 0x284a91(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x131b32(%rip), %rsi    # 0x2e5013
leaq 0x1a8f45(%rip), %rdx    # 0x35c42d
leaq 0x1a8f0d(%rip), %rcx    # 0x35c3fc
leaq 0x1a8d99(%rip), %r8     # 0x35c28f
movl $0x8f, %r9d
jmp 0x1b34c4