// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gtf_visitor.c
// Function: gtf_show_transcript
static int gtf_show_transcript(GtFeatureNode *feature_node,
                               GtGTFVisitor *gtf_visitor, GtError *err)
{
  GtFeatureNode *fn;
  GtUword i;
  int had_err;
  gt_error_check(err);
  gt_assert(feature_node && gtf_visitor);
  gt_array_reset(gtf_visitor->exon_features);
  gt_array_reset(gtf_visitor->CDS_features);
  had_err = gt_feature_node_traverse_direct_children(feature_node, gtf_visitor,
                                                     save_exon_node, err);
  if (gt_array_size(gtf_visitor->exon_features)) {
    /* sort exon features */
    qsort(gt_array_get_space(gtf_visitor->exon_features),
          gt_array_size(gtf_visitor->exon_features), sizeof (GtGenomeNode*),
          (GtCompare) gt_genome_node_compare);
    /* show exon features */
    gtf_visitor->transcript_id++;
    for (i = 0; i < gt_array_size(gtf_visitor->exon_features); i++) {
      fn = *(GtFeatureNode**) gt_array_get(gtf_visitor->exon_features, i);
      gt_gff3_output_leading(fn, gtf_visitor->outfp);
      gt_file_xprintf(gtf_visitor->outfp, "gene_id \""GT_WU"\"; transcript_id "
                      "\""GT_WU"."GT_WU"\";\n", gtf_visitor->gene_id,
                      gtf_visitor->gene_id, gtf_visitor->transcript_id);
    }
  }
  if (gt_array_size(gtf_visitor->CDS_features)) {
    /* sort CDS features */
    qsort(gt_array_get_space(gtf_visitor->CDS_features),
          gt_array_size(gtf_visitor->CDS_features), sizeof (GtGenomeNode*),
          (GtCompare) gt_genome_node_compare);
    /* show start_codon feature */
    /* fn = *(GtFeatureNode**) */ (void) gt_array_get(gtf_visitor->CDS_features,
                                                      0);
    /* XXX: to be done */

    /* show CDS features */
    for (i = 0; i < gt_array_size(gtf_visitor->CDS_features); i++) {
      fn = *(GtFeatureNode**) gt_array_get(gtf_visitor->CDS_features, i);
      gt_gff3_output_leading(fn, gtf_visitor->outfp);
      gt_file_xprintf(gtf_visitor->outfp, "gene_id \""GT_WU"\"; transcript_id "
                      "\""GT_WU"."GT_WU"\";\n", gtf_visitor->gene_id,
                      gtf_visitor->gene_id, gtf_visitor->transcript_id);
    }
    /* XXX: show stop_codon feature and shorten last CDS feature */
  }
  return had_err;
}

// Assembly:
subq $0x58, %rsp
movq %rdi, 0x50(%rsp)
movq %rsi, 0x48(%rsp)
movq %rdx, 0x40(%rsp)
cmpq $0x0, 0x40(%rsp)
je 0x1859c3
movq 0x40(%rsp), %rdi
callq 0xd8a60
testb $0x1, %al
jne 0x18598b
jmp 0x1859c3
movq 0x4b660e(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x390677(%rip), %rsi    # 0x516013
leaq 0x39081c(%rip), %rdx    # 0x5161bf
leaq 0x3cf2bb(%rip), %rcx    # 0x554c65
leaq 0x3cf228(%rip), %r8     # 0x554bd9
movl $0x4f, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x1859c5
jmp 0x1859c7
cmpq $0x0, 0x50(%rsp)
je 0x1859d7
cmpq $0x0, 0x48(%rsp)
jne 0x185a0f
movq 0x4b65c2(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x39062b(%rip), %rsi    # 0x516013
leaq 0x3cf28a(%rip), %rdx    # 0x554c79
leaq 0x3cf26f(%rip), %rcx    # 0x554c65
leaq 0x3cf1dc(%rip), %r8     # 0x554bd9
movl $0x50, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x185a11
movq 0x48(%rsp), %rax
movq 0x20(%rax), %rdi
callq 0x814a0
movq 0x48(%rsp), %rax
movq 0x28(%rax), %rdi
callq 0x814a0
movq 0x50(%rsp), %rdi
movq 0x48(%rsp), %rsi
movq 0x40(%rsp), %rcx
leaq 0x22d(%rip), %rdx       # 0x185c70
callq 0x16f9f0
movl %eax, 0x2c(%rsp)
movq 0x48(%rsp), %rax
movq 0x20(%rax), %rdi
callq 0x81370
cmpq $0x0, %rax
je 0x185b52
movq 0x48(%rsp), %rax
movq 0x20(%rax), %rdi
callq 0x81080
movq %rax, 0x20(%rsp)
movq 0x48(%rsp), %rax
movq 0x20(%rax), %rdi
callq 0x81370
movq 0x20(%rsp), %rdi
movq %rax, %rsi
movl $0x8, %edx
leaq -0x13a19(%rip), %rcx    # 0x172080
callq 0x19e70
movq 0x48(%rsp), %rax
movq 0x18(%rax), %rcx
addq $0x1, %rcx
movq %rcx, 0x18(%rax)
movq $0x0, 0x30(%rsp)
movq 0x30(%rsp), %rax
movq %rax, 0x18(%rsp)
movq 0x48(%rsp), %rax
movq 0x20(%rax), %rdi
callq 0x81370
movq %rax, %rcx
movq 0x18(%rsp), %rax
cmpq %rcx, %rax
jae 0x185b50
movq 0x48(%rsp), %rax
movq 0x20(%rax), %rdi
movq 0x30(%rsp), %rsi
callq 0x80b60
movq (%rax), %rax
movq %rax, 0x38(%rsp)
movq 0x38(%rsp), %rdi
movq 0x48(%rsp), %rax
movq 0x30(%rax), %rsi
callq 0x491210
movq 0x48(%rsp), %rax
movq 0x30(%rax), %rdi
movq 0x48(%rsp), %rax
movq 0x10(%rax), %rdx
movq 0x48(%rsp), %rax
movq 0x10(%rax), %rcx
movq 0x48(%rsp), %rax
movq 0x18(%rax), %r8
leaq 0x3cf15f(%rip), %rsi    # 0x554c95
movb $0x0, %al
callq 0xddca0
movq 0x30(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x30(%rsp)
jmp 0x185ab8
jmp 0x185b52
movq 0x48(%rsp), %rax
movq 0x28(%rax), %rdi
callq 0x81370
cmpq $0x0, %rax
je 0x185c59
movq 0x48(%rsp), %rax
movq 0x28(%rax), %rdi
callq 0x81080
movq %rax, 0x10(%rsp)
movq 0x48(%rsp), %rax
movq 0x28(%rax), %rdi
callq 0x81370
movq 0x10(%rsp), %rdi
movq %rax, %rsi
movl $0x8, %edx
leaq -0x13b1f(%rip), %rcx    # 0x172080
callq 0x19e70
movq 0x48(%rsp), %rax
movq 0x28(%rax), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x80b60
movq $0x0, 0x30(%rsp)
movq 0x30(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x48(%rsp), %rax
movq 0x28(%rax), %rdi
callq 0x81370
movq %rax, %rcx
movq 0x8(%rsp), %rax
cmpq %rcx, %rax
jae 0x185c57
movq 0x48(%rsp), %rax
movq 0x28(%rax), %rdi
movq 0x30(%rsp), %rsi
callq 0x80b60
movq (%rax), %rax
movq %rax, 0x38(%rsp)
movq 0x38(%rsp), %rdi
movq 0x48(%rsp), %rax
movq 0x30(%rax), %rsi
callq 0x491210
movq 0x48(%rsp), %rax
movq 0x30(%rax), %rdi
movq 0x48(%rsp), %rax
movq 0x10(%rax), %rdx
movq 0x48(%rsp), %rax
movq 0x10(%rax), %rcx
movq 0x48(%rsp), %rax
movq 0x18(%rax), %r8
leaq 0x3cf058(%rip), %rsi    # 0x554c95
movb $0x0, %al
callq 0xddca0
movq 0x30(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x30(%rsp)
jmp 0x185bbf
jmp 0x185c59
movl 0x2c(%rsp), %eax
addq $0x58, %rsp
retq
nopw %cs:(%rax,%rax)