LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_parser.c
// Function: feature_node_is_part_of_pseudo_node
static void feature_node_is_part_of_pseudo_node(GtFeatureNode *pseudo_node,
                                                GtFeatureNode *child,
                                                GtFeatureInfo *feature_info)
{
  const char *id;
  gt_assert(pseudo_node &&
            gt_feature_node_is_pseudo((GtFeatureNode*) pseudo_node));
  gt_assert(child && !gt_feature_node_is_pseudo((GtFeatureNode*) child));
  gt_assert(feature_info);
  gt_feature_node_add_child(pseudo_node, child);
  id = gt_feature_node_get_attribute(child, GT_GFF_ID);
  gt_assert(id);
  gt_feature_info_add_pseudo_parent(feature_info, id, pseudo_node);
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq %rsi, 0x18(%rsp)
movq %rdx, 0x10(%rsp)
cmpq $0x0, 0x20(%rsp)
je 0x2f159
movq 0x20(%rsp), %rdi
callq 0x21880
testb $0x1, %al
jne 0x2f191
movq 0x184e78(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x12eefc(%rip), %rsi    # 0x15e066
leaq 0x135a48(%rip), %rdx    # 0x164bb9
leaq 0x135a88(%rip), %rcx    # 0x164c00
leaq 0x13442c(%rip), %r8     # 0x1635ab
movl $0x1fc, %r9d            # imm = 0x1FC
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x2f193
jmp 0x2f195
cmpq $0x0, 0x18(%rsp)
je 0x2f1ad
movq 0x18(%rsp), %rdi
callq 0x21880
testb $0x1, %al
jne 0x2f1ad
jmp 0x2f1e5
movq 0x184e24(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x12eea8(%rip), %rsi    # 0x15e066
leaq 0x135a5f(%rip), %rdx    # 0x164c24
leaq 0x135a34(%rip), %rcx    # 0x164c00
leaq 0x1343d8(%rip), %r8     # 0x1635ab
movl $0x1fd, %r9d            # imm = 0x1FD
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x2f1e7
jmp 0x2f1e9
cmpq $0x0, 0x10(%rsp)
jne 0x2f229
movq 0x184de0(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x12ee64(%rip), %rsi    # 0x15e066
leaq 0x136073(%rip), %rdx    # 0x16527c
leaq 0x1359f0(%rip), %rcx    # 0x164c00
leaq 0x134394(%rip), %r8     # 0x1635ab
movl $0x1fe, %r9d            # imm = 0x1FE
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x2f22b
movq 0x20(%rsp), %rdi
movq 0x18(%rsp), %rsi
callq 0x20db0
movq 0x18(%rsp), %rdi
leaq 0x1355fa(%rip), %rsi    # 0x164840
callq 0x1fde0
movq %rax, 0x8(%rsp)
cmpq $0x0, 0x8(%rsp)
jne 0x2f290
movq 0x184d79(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x12edfd(%rip), %rsi    # 0x15e066
leaq 0x1432ee(%rip), %rdx    # 0x17255e
leaq 0x135989(%rip), %rcx    # 0x164c00
leaq 0x13432d(%rip), %r8     # 0x1635ab
movl $0x201, %r9d            # imm = 0x201
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x2f292
movq 0x10(%rsp), %rdi
movq 0x8(%rsp), %rsi
movq 0x20(%rsp), %rdx
callq 0xa63f0
addq $0x28, %rsp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_parser.c
// Function: replace_node
static void replace_node(GtFeatureNode *node_to_replace,
                         GtFeatureNode *replacing_node, GtQueue *genome_nodes)
{
  ReplaceInfo replace_info;
  GT_UNUSED int rval;
  gt_assert(node_to_replace && replacing_node && genome_nodes);
  replace_info.node_to_replace = node_to_replace;
  replace_info.replacing_node = replacing_node;
  /* we go backwards in both cases, because we expect that the <node_to_replace>
     is near the end of the queue */
  rval = gt_queue_iterate_reverse(genome_nodes, replace_func, &replace_info,
                                  NULL);
  gt_assert(rval == 1);
}

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x30(%rsp)
movq %rsi, 0x28(%rsp)
movq %rdx, 0x20(%rsp)
cmpq $0x0, 0x30(%rsp)
je 0x2f2db
cmpq $0x0, 0x28(%rsp)
je 0x2f2db
cmpq $0x0, 0x20(%rsp)
jne 0x2f313
movq 0x184cf6(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x12ed7a(%rip), %rsi    # 0x15e066
leaq 0x13596d(%rip), %rdx    # 0x164c60
leaq 0x135998(%rip), %rcx    # 0x164c92
leaq 0x1342aa(%rip), %r8     # 0x1635ab
movl $0x1d9, %r9d            # imm = 0x1D9
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x2f315
movq 0x30(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x28(%rsp), %rax
movq %rax, 0x18(%rsp)
movq 0x20(%rsp), %rdi
leaq 0x1db(%rip), %rsi       # 0x2f510
leaq 0x10(%rsp), %rdx
xorl %eax, %eax
movl %eax, %ecx
callq 0x91530
movl %eax, 0xc(%rsp)
cmpl $0x1, 0xc(%rsp)
je 0x2f386
movq 0x184c83(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x12ed07(%rip), %rsi    # 0x15e066
leaq 0x135939(%rip), %rdx    # 0x164c9f
leaq 0x135925(%rip), %rcx    # 0x164c92
leaq 0x134237(%rip), %r8     # 0x1635ab
movl $0x1e0, %r9d            # imm = 0x1E0
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x2f388
addq $0x38, %rsp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_parser.c
// Function: update_pseudo_node_range
static void update_pseudo_node_range(GtFeatureNode *pseudo_node,
                                     GtFeatureNode *feature_node)
{
  GtRange pseudo_range, feature_range, joined_range;
  gt_assert(pseudo_node && feature_node);
  gt_assert(gt_feature_node_is_pseudo(pseudo_node));
  gt_assert(!gt_feature_node_is_pseudo(feature_node));
  pseudo_range = gt_genome_node_get_range((GtGenomeNode*) pseudo_node);
  feature_range = gt_genome_node_get_range((GtGenomeNode*) feature_node);
  joined_range = gt_range_join(&pseudo_range, &feature_range);
  gt_genome_node_set_range((GtGenomeNode*) pseudo_node, &joined_range);
}

// Assembly:
subq $0x78, %rsp
movq %rdi, 0x70(%rsp)
movq %rsi, 0x68(%rsp)
cmpq $0x0, 0x70(%rsp)
je 0x2f3ae
cmpq $0x0, 0x68(%rsp)
jne 0x2f3e6
movq 0x184c23(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x12eca7(%rip), %rsi    # 0x15e066
leaq 0x135905(%rip), %rdx    # 0x164ccb
leaq 0x13591a(%rip), %rcx    # 0x164ce7
leaq 0x1341d7(%rip), %r8     # 0x1635ab
movl $0x1ed, %r9d            # imm = 0x1ED
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x2f3e8
jmp 0x2f3ea
movq 0x70(%rsp), %rdi
callq 0x21880
testb $0x1, %al
jne 0x2f430
movq 0x184bd9(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x12ec5d(%rip), %rsi    # 0x15e066
leaq 0x1358f0(%rip), %rdx    # 0x164d00
leaq 0x1358d0(%rip), %rcx    # 0x164ce7
leaq 0x13418d(%rip), %r8     # 0x1635ab
movl $0x1ee, %r9d            # imm = 0x1EE
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x2f432
jmp 0x2f434
movq 0x68(%rsp), %rdi
callq 0x21880
testb $0x1, %al
jne 0x2f444
jmp 0x2f47c
movq 0x184b8d(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x12ec11(%rip), %rsi    # 0x15e066
leaq 0x1358cb(%rip), %rdx    # 0x164d27
leaq 0x135884(%rip), %rcx    # 0x164ce7
leaq 0x134141(%rip), %r8     # 0x1635ab
movl $0x1ef, %r9d            # imm = 0x1EF
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x2f47e
movq 0x70(%rsp), %rdi
callq 0x259f0
movq %rax, 0x28(%rsp)
movq %rdx, 0x30(%rsp)
movq 0x28(%rsp), %rax
movq %rax, 0x58(%rsp)
movq 0x30(%rsp), %rax
movq %rax, 0x60(%rsp)
movq 0x68(%rsp), %rdi
callq 0x259f0
movq %rax, 0x18(%rsp)
movq %rdx, 0x20(%rsp)
movq 0x18(%rsp), %rax
movq %rax, 0x48(%rsp)
movq 0x20(%rsp), %rax
movq %rax, 0x50(%rsp)
leaq 0x58(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0x93fe0
movq %rax, 0x8(%rsp)
movq %rdx, 0x10(%rsp)
movq 0x8(%rsp), %rax
movq %rax, 0x38(%rsp)
movq 0x10(%rsp), %rax
movq %rax, 0x40(%rsp)
movq 0x70(%rsp), %rdi
leaq 0x38(%rsp), %rsi
callq 0x25b50
addq $0x78, %rsp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_parser.c
// Function: replace_func
static int replace_func(void **elem, void *info, GT_UNUSED GtError *err)
{
  ReplaceInfo *replace_info = info;
  GtGenomeNode **node = (GtGenomeNode**) elem;
  gt_error_check(err);
  gt_assert(node && replace_info);
  if (*node == (GtGenomeNode*) replace_info->node_to_replace) {
    *node = (GtGenomeNode*) replace_info->replacing_node;
    return 1;
  }
  return 0;
}

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x28(%rsp)
movq %rsi, 0x20(%rsp)
movq %rdx, 0x18(%rsp)
movq 0x20(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x28(%rsp), %rax
movq %rax, 0x8(%rsp)
cmpq $0x0, 0x18(%rsp)
je 0x2f587
movq 0x18(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0x2f54f
jmp 0x2f587
movq 0x184a82(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x12eb06(%rip), %rsi    # 0x15e066
leaq 0x12f0e1(%rip), %rdx    # 0x15e648
leaq 0x13573b(%rip), %rcx    # 0x164ca9
leaq 0x134036(%rip), %r8     # 0x1635ab
movl $0x1cb, %r9d            # imm = 0x1CB
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x2f589
jmp 0x2f58b
cmpq $0x0, 0x8(%rsp)
je 0x2f59b
cmpq $0x0, 0x10(%rsp)
jne 0x2f5d3
movq 0x184a36(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x12eaba(%rip), %rsi    # 0x15e066
leaq 0x135703(%rip), %rdx    # 0x164cb6
leaq 0x1356ef(%rip), %rcx    # 0x164ca9
leaq 0x133fea(%rip), %r8     # 0x1635ab
movl $0x1cc, %r9d            # imm = 0x1CC
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x2f5d5
movq 0x8(%rsp), %rax
movq (%rax), %rax
movq 0x10(%rsp), %rcx
cmpq (%rcx), %rax
jne 0x2f602
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rcx
movq 0x8(%rsp), %rax
movq %rcx, (%rax)
movl $0x1, 0x34(%rsp)
jmp 0x2f60a
movl $0x0, 0x34(%rsp)
movl 0x34(%rsp), %eax
addq $0x38, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_parser.c
// Function: find_roots
static GtArray* find_roots(GtStrArray *parents, GtFeatureInfo *feature_info)
{
  GtArray *roots;
  GtUword i;
  gt_assert(parents);
  roots = gt_array_new(sizeof (GtGenomeNode*));
  for (i = 0; i < gt_str_array_size(parents); i++) {
    GtFeatureNode *root = gt_feature_info_find_root(feature_info,
                                                 gt_str_array_get(parents, i));
    gt_array_add(roots, root);
  }
  return roots;
}

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x30(%rsp)
movq %rsi, 0x28(%rsp)
cmpq $0x0, 0x30(%rsp)
jne 0x3095e
movq 0x1836ab(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x12d72f(%rip), %rsi    # 0x15e066
leaq 0x141b1f(%rip), %rdx    # 0x17245d
leaq 0x134d42(%rip), %rcx    # 0x165687
leaq 0x132c5f(%rip), %r8     # 0x1635ab
movl $0x258, %r9d            # imm = 0x258
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x30960
movl $0x8, %edi
callq 0x75ab0
movq %rax, 0x20(%rsp)
movq $0x0, 0x18(%rsp)
movq 0x18(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x30(%rsp), %rdi
callq 0x1b720
movq %rax, %rcx
movq 0x8(%rsp), %rax
cmpq %rcx, %rax
jae 0x309e6
movq 0x28(%rsp), %rax
movq %rax, (%rsp)
movq 0x30(%rsp), %rdi
movq 0x18(%rsp), %rsi
callq 0x1b320
movq (%rsp), %rdi
movq %rax, %rsi
callq 0xa6620
movq %rax, 0x10(%rsp)
movq 0x20(%rsp), %rdi
leaq 0x10(%rsp), %rsi
movl $0x8, %edx
callq 0x76220
movq 0x18(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x18(%rsp)
jmp 0x30978
movq 0x20(%rsp), %rax
addq $0x38, %rsp
retq
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_parser.c
// Function: dedup_roots
static void dedup_roots(GtArray *roots)
{
  GtUword i = 0,
          j = 0;
  gt_assert(roots);
  for (i = 0; i < gt_array_size(roots); i++) {
    for (j = i+1; j < gt_array_size(roots); j++) {
      if (*(GtGenomeNode**) gt_array_get(roots, i)
            == *(GtGenomeNode**) gt_array_get(roots, j)) {
        gt_array_rem(roots, j);
        j--;
      }
    }
  }
}

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x30(%rsp)
movq $0x0, 0x28(%rsp)
movq $0x0, 0x20(%rsp)
cmpq $0x0, 0x30(%rsp)
jne 0x30a4b
movq 0x1835be(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x12d642(%rip), %rsi    # 0x15e066
leaq 0x134c61(%rip), %rdx    # 0x16568c
leaq 0x134c60(%rip), %rcx    # 0x165692
leaq 0x132b72(%rip), %r8     # 0x1635ab
movl $0x2d6, %r9d            # imm = 0x2D6
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x30a4d
movq $0x0, 0x28(%rsp)
movq 0x28(%rsp), %rax
movq %rax, 0x18(%rsp)
movq 0x30(%rsp), %rdi
callq 0x76490
movq %rax, %rcx
movq 0x18(%rsp), %rax
cmpq %rcx, %rax
jae 0x30b24
movq 0x28(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x20(%rsp)
movq 0x20(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x30(%rsp), %rdi
callq 0x76490
movq %rax, %rcx
movq 0x10(%rsp), %rax
cmpq %rcx, %rax
jae 0x30b0f
movq 0x30(%rsp), %rdi
movq 0x28(%rsp), %rsi
callq 0x75c80
movq (%rax), %rax
movq %rax, 0x8(%rsp)
movq 0x30(%rsp), %rdi
movq 0x20(%rsp), %rsi
callq 0x75c80
movq %rax, %rcx
movq 0x8(%rsp), %rax
cmpq (%rcx), %rax
jne 0x30afa
movq 0x30(%rsp), %rdi
movq 0x20(%rsp), %rsi
callq 0x75e10
movq 0x20(%rsp), %rax
addq $-0x1, %rax
movq %rax, 0x20(%rsp)
jmp 0x30afc
movq 0x20(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x20(%rsp)
jmp 0x30a89
jmp 0x30b11
movq 0x28(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x28(%rsp)
jmp 0x30a56
addq $0x38, %rsp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_parser.c
// Function: roots_differ
static bool roots_differ(GtArray *roots)
{
  GtGenomeNode *first_root;
  GtUword i;
  gt_assert(roots);
  first_root = *(GtGenomeNode**) gt_array_get(roots, 0);
  for (i = 1; i < gt_array_size(roots); i++) {
    if (first_root != *(GtGenomeNode**) gt_array_get(roots, i))
      return true;
  }
  return false;
}

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x28(%rsp)
cmpq $0x0, 0x28(%rsp)
jne 0x30b79
movq 0x183490(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x12d514(%rip), %rsi    # 0x15e066
leaq 0x134b33(%rip), %rdx    # 0x16568c
leaq 0x134b3e(%rip), %rcx    # 0x16569e
leaq 0x132a44(%rip), %r8     # 0x1635ab
movl $0x266, %r9d            # imm = 0x266
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x30b7b
movq 0x28(%rsp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x75c80
movq (%rax), %rax
movq %rax, 0x20(%rsp)
movq $0x1, 0x18(%rsp)
movq 0x18(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x28(%rsp), %rdi
callq 0x76490
movq %rax, %rcx
movq 0x10(%rsp), %rax
cmpq %rcx, %rax
jae 0x30bfa
movq 0x20(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x28(%rsp), %rdi
movq 0x18(%rsp), %rsi
callq 0x75c80
movq %rax, %rcx
movq 0x8(%rsp), %rax
cmpq (%rcx), %rax
je 0x30be8
movb $0x1, 0x37(%rsp)
jmp 0x30bff
jmp 0x30bea
movq 0x18(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x18(%rsp)
jmp 0x30b9a
movb $0x0, 0x37(%rsp)
movb 0x37(%rsp), %al
andb $0x1, %al
addq $0x38, %rsp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_parser.c
// Function: join_roots
static void join_roots(GtArray *roots, GtFeatureInfo *feature_info,
                       GtQueue *genome_nodes)
{
  GtFeatureNode *master_root;
  GtUword i;
  gt_assert(roots && feature_info && genome_nodes);
  master_root = *(GtFeatureNode**) gt_array_get(roots, 0);
  for (i = 1; i < gt_array_size(roots); i++) {
    master_root = join_root_pair(master_root,
                                 *(GtFeatureNode**) gt_array_get(roots, i),
                                 feature_info, genome_nodes);
  }
}

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x30(%rsp)
movq %rsi, 0x28(%rsp)
movq %rdx, 0x20(%rsp)
cmpq $0x0, 0x30(%rsp)
je 0x30c3b
cmpq $0x0, 0x28(%rsp)
je 0x30c3b
cmpq $0x0, 0x20(%rsp)
jne 0x30c73
movq 0x183396(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x12d41a(%rip), %rsi    # 0x15e066
leaq 0x134a58(%rip), %rdx    # 0x1656ab
leaq 0x134a77(%rip), %rcx    # 0x1656d1
leaq 0x13294a(%rip), %r8     # 0x1635ab
movl $0x2c9, %r9d            # imm = 0x2C9
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x30c75
movq 0x30(%rsp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x75c80
movq (%rax), %rax
movq %rax, 0x18(%rsp)
movq $0x1, 0x10(%rsp)
movq 0x10(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x30(%rsp), %rdi
callq 0x76490
movq %rax, %rcx
movq 0x8(%rsp), %rax
cmpq %rcx, %rax
jae 0x30cf8
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
movq 0x30(%rsp), %rdi
movq 0x10(%rsp), %rsi
callq 0x75c80
movq (%rsp), %rdi
movq (%rax), %rsi
movq 0x28(%rsp), %rdx
movq 0x20(%rsp), %rcx
callq 0x30d00
movq %rax, 0x18(%rsp)
movq 0x10(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x10(%rsp)
jmp 0x30c94
addq $0x38, %rsp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_parser.c
// Function: join_root_pair
static GtFeatureNode* join_root_pair(GtFeatureNode *root_a,
                                     GtFeatureNode *root_b,
                                     GtFeatureInfo *feature_info,
                                     GtQueue *genome_nodes)
{
  bool root_a_is_pseudo, root_b_is_pseudo;
  GtFeatureNode *master_root;
  gt_assert(root_a && root_b && feature_info && genome_nodes);
  root_a_is_pseudo = gt_feature_node_is_pseudo((GtFeatureNode*) root_a);
  root_b_is_pseudo = gt_feature_node_is_pseudo((GtFeatureNode*) root_b);
  if (root_a_is_pseudo && root_b_is_pseudo) {
    master_root = merge_pseudo_roots(root_a, root_b, feature_info,
                                     genome_nodes);
  }
  else if (root_a_is_pseudo) { /* !root_b_is_pseudo */
    master_root = add_node_to_pseudo_node(root_a, root_b, feature_info,
                                          genome_nodes);
  }
  else if (root_b_is_pseudo) { /* !root_a_is_pseudo */
    master_root = add_node_to_pseudo_node(root_b, root_a, feature_info,
                                          genome_nodes);
  }
  else { /* !root_a_is_pseudo && !root_b_is_pseudo */
    master_root = create_pseudo_node(root_a, root_b, feature_info,
                                     genome_nodes);
  }
  return master_root;
}

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x30(%rsp)
movq %rsi, 0x28(%rsp)
movq %rdx, 0x20(%rsp)
movq %rcx, 0x18(%rsp)
cmpq $0x0, 0x30(%rsp)
je 0x30d38
cmpq $0x0, 0x28(%rsp)
je 0x30d38
cmpq $0x0, 0x20(%rsp)
je 0x30d38
cmpq $0x0, 0x18(%rsp)
jne 0x30d70
movq 0x183299(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x12d31d(%rip), %rsi    # 0x15e066
leaq 0x13498c(%rip), %rdx    # 0x1656dc
leaq 0x1349b6(%rip), %rcx    # 0x16570d
leaq 0x13284d(%rip), %r8     # 0x1635ab
movl $0x2ae, %r9d            # imm = 0x2AE
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x30d72
movq 0x30(%rsp), %rdi
callq 0x21880
andb $0x1, %al
movb %al, 0x17(%rsp)
movq 0x28(%rsp), %rdi
callq 0x21880
andb $0x1, %al
movb %al, 0x16(%rsp)
testb $0x1, 0x17(%rsp)
je 0x30dc0
testb $0x1, 0x16(%rsp)
je 0x30dc0
movq 0x30(%rsp), %rdi
movq 0x28(%rsp), %rsi
movq 0x20(%rsp), %rdx
movq 0x18(%rsp), %rcx
callq 0x30e40
movq %rax, 0x8(%rsp)
jmp 0x30e30
testb $0x1, 0x17(%rsp)
je 0x30de7
movq 0x30(%rsp), %rdi
movq 0x28(%rsp), %rsi
movq 0x20(%rsp), %rdx
movq 0x18(%rsp), %rcx
callq 0x30fc0
movq %rax, 0x8(%rsp)
jmp 0x30e2e
testb $0x1, 0x16(%rsp)
je 0x30e0e
movq 0x28(%rsp), %rdi
movq 0x30(%rsp), %rsi
movq 0x20(%rsp), %rdx
movq 0x18(%rsp), %rcx
callq 0x30fc0
movq %rax, 0x8(%rsp)
jmp 0x30e2c
movq 0x30(%rsp), %rdi
movq 0x28(%rsp), %rsi
movq 0x20(%rsp), %rdx
movq 0x18(%rsp), %rcx
callq 0x31100
movq %rax, 0x8(%rsp)
jmp 0x30e2e
jmp 0x30e30
movq 0x8(%rsp), %rax
addq $0x38, %rsp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_parser.c
// Function: merge_pseudo_roots
static GtFeatureNode* merge_pseudo_roots(GtFeatureNode *pseudo_a,
                                         GtFeatureNode *pseudo_b,
                                         GtFeatureInfo *feature_info,
                                         GtQueue *genome_nodes)
{
  GtFeatureNodeIterator *fni;
  GtFeatureNode *child;
  gt_assert(pseudo_a && gt_feature_node_is_pseudo(pseudo_a));
  gt_assert(pseudo_b && gt_feature_node_is_pseudo(pseudo_b));
  gt_assert(feature_info && genome_nodes);
  /* add children of pseudo node b to pseudo node a */
  fni = gt_feature_node_iterator_new_direct(pseudo_b);
  while ((child = gt_feature_node_iterator_next(fni))) {
    gt_feature_node_add_child(pseudo_a, child);
    gt_feature_info_replace_pseudo_parent(feature_info, child, pseudo_a);
  }
  gt_feature_node_iterator_delete(fni);
  /* remove pseudo node b from buffer */
  remove_node((GtGenomeNode*) pseudo_b, genome_nodes);
  gt_genome_node_delete((GtGenomeNode*) pseudo_b);
  return pseudo_a;
}

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x30(%rsp)
movq %rsi, 0x28(%rsp)
movq %rdx, 0x20(%rsp)
movq %rcx, 0x18(%rsp)
cmpq $0x0, 0x30(%rsp)
je 0x30e6e
movq 0x30(%rsp), %rdi
callq 0x21880
testb $0x1, %al
jne 0x30ea6
movq 0x183163(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x12d1e7(%rip), %rsi    # 0x15e066
leaq 0x134896(%rip), %rdx    # 0x16571c
leaq 0x1348bf(%rip), %rcx    # 0x16574c
leaq 0x132717(%rip), %r8     # 0x1635ab
movl $0x276, %r9d            # imm = 0x276
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x30ea8
jmp 0x30eaa
cmpq $0x0, 0x28(%rsp)
je 0x30ec0
movq 0x28(%rsp), %rdi
callq 0x21880
testb $0x1, %al
jne 0x30ef8
movq 0x183111(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x12d195(%rip), %rsi    # 0x15e066
leaq 0x134887(%rip), %rdx    # 0x16575f
leaq 0x13486d(%rip), %rcx    # 0x16574c
leaq 0x1326c5(%rip), %r8     # 0x1635ab
movl $0x277, %r9d            # imm = 0x277
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x30efa
jmp 0x30efc
cmpq $0x0, 0x20(%rsp)
je 0x30f0c
cmpq $0x0, 0x18(%rsp)
jne 0x30f44
movq 0x1830c5(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x12d149(%rip), %rsi    # 0x15e066
leaq 0x1347cc(%rip), %rdx    # 0x1656f0
leaq 0x134821(%rip), %rcx    # 0x16574c
leaq 0x132679(%rip), %r8     # 0x1635ab
movl $0x278, %r9d            # imm = 0x278
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x30f46
movq 0x28(%rsp), %rdi
callq 0x24a80
movq %rax, 0x10(%rsp)
movq 0x10(%rsp), %rdi
callq 0x24bd0
movq %rax, 0x8(%rsp)
cmpq $0x0, %rax
je 0x30f8f
movq 0x30(%rsp), %rdi
movq 0x8(%rsp), %rsi
callq 0x20db0
movq 0x20(%rsp), %rdi
movq 0x8(%rsp), %rsi
movq 0x30(%rsp), %rdx
callq 0xa64e0
jmp 0x30f55
movq 0x10(%rsp), %rdi
callq 0x24cf0
movq 0x28(%rsp), %rdi
movq 0x18(%rsp), %rsi
callq 0x31270
movq 0x28(%rsp), %rdi
callq 0x26eb0
movq 0x30(%rsp), %rax
addq $0x38, %rsp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_parser.c
// Function: add_node_to_pseudo_node
static GtFeatureNode* add_node_to_pseudo_node(GtFeatureNode *pseudo_node,
                                              GtFeatureNode *normal_node,
                                              GtFeatureInfo *feature_info,
                                              GtQueue *genome_nodes)
{
  gt_assert(pseudo_node &&
         gt_feature_node_is_pseudo((GtFeatureNode*) pseudo_node));
  gt_assert(normal_node &&
         !gt_feature_node_is_pseudo((GtFeatureNode*) normal_node));
  gt_assert(feature_info && genome_nodes);
  feature_node_is_part_of_pseudo_node(pseudo_node, normal_node, feature_info);
  remove_node((GtGenomeNode*) normal_node, genome_nodes);
  return pseudo_node;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq %rsi, 0x18(%rsp)
movq %rdx, 0x10(%rsp)
movq %rcx, 0x8(%rsp)
cmpq $0x0, 0x20(%rsp)
je 0x30fee
movq 0x20(%rsp), %rdi
callq 0x21880
testb $0x1, %al
jne 0x31026
movq 0x182fe3(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x12d067(%rip), %rsi    # 0x15e066
leaq 0x133bb3(%rip), %rdx    # 0x164bb9
leaq 0x13479e(%rip), %rcx    # 0x1657ab
leaq 0x132597(%rip), %r8     # 0x1635ab
movl $0x28c, %r9d            # imm = 0x28C
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x31028
jmp 0x3102a
cmpq $0x0, 0x18(%rsp)
je 0x31042
movq 0x18(%rsp), %rdi
callq 0x21880
testb $0x1, %al
jne 0x31042
jmp 0x3107a
movq 0x182f8f(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x12d013(%rip), %rsi    # 0x15e066
leaq 0x134769(%rip), %rdx    # 0x1657c3
leaq 0x13474a(%rip), %rcx    # 0x1657ab
leaq 0x132543(%rip), %r8     # 0x1635ab
movl $0x28e, %r9d            # imm = 0x28E
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x3107c
jmp 0x3107e
cmpq $0x0, 0x10(%rsp)
je 0x3108e
cmpq $0x0, 0x8(%rsp)
jne 0x310c6
movq 0x182f43(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x12cfc7(%rip), %rsi    # 0x15e066
leaq 0x13464a(%rip), %rdx    # 0x1656f0
leaq 0x1346fe(%rip), %rcx    # 0x1657ab
leaq 0x1324f7(%rip), %r8     # 0x1635ab
movl $0x28f, %r9d            # imm = 0x28F
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x310c8
movq 0x20(%rsp), %rdi
movq 0x18(%rsp), %rsi
movq 0x10(%rsp), %rdx
callq 0x2f130
movq 0x18(%rsp), %rdi
movq 0x8(%rsp), %rsi
callq 0x31270
movq 0x20(%rsp), %rax
addq $0x28, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_parser.c
// Function: create_pseudo_node
static GtFeatureNode* create_pseudo_node(GtFeatureNode *node_a,
                                         GtFeatureNode *node_b,
                                         GtFeatureInfo *feature_info,
                                         GtQueue *genome_nodes)
{
  GtFeatureNode *pseudo_node;
  gt_assert(node_a && !gt_feature_node_is_pseudo((GtFeatureNode*) node_a));
  gt_assert(node_b && !gt_feature_node_is_pseudo((GtFeatureNode*) node_b));
  gt_assert(feature_info && genome_nodes);
  pseudo_node = (GtFeatureNode*)
                gt_feature_node_new_pseudo_template((GtFeatureNode*) node_a);
  feature_node_is_part_of_pseudo_node(pseudo_node, node_a, feature_info);
  feature_node_is_part_of_pseudo_node(pseudo_node, node_b, feature_info);
  replace_node(node_a, pseudo_node, genome_nodes);
  remove_node((GtGenomeNode*) node_b, genome_nodes);
  return pseudo_node;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq %rsi, 0x18(%rsp)
movq %rdx, 0x10(%rsp)
movq %rcx, 0x8(%rsp)
cmpq $0x0, 0x20(%rsp)
je 0x31130
movq 0x20(%rsp), %rdi
callq 0x21880
testb $0x1, %al
jne 0x31130
jmp 0x31168
movq 0x182ea1(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x12cf25(%rip), %rsi    # 0x15e066
leaq 0x1346c3(%rip), %rdx    # 0x16580b
leaq 0x1346fa(%rip), %rcx    # 0x165849
leaq 0x132455(%rip), %r8     # 0x1635ab
movl $0x29b, %r9d            # imm = 0x29B
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x3116a
jmp 0x3116c
cmpq $0x0, 0x18(%rsp)
je 0x31184
movq 0x18(%rsp), %rdi
callq 0x21880
testb $0x1, %al
jne 0x31184
jmp 0x311bc
movq 0x182e4d(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x12ced1(%rip), %rsi    # 0x15e066
leaq 0x1346c0(%rip), %rdx    # 0x16585c
leaq 0x1346a6(%rip), %rcx    # 0x165849
leaq 0x132401(%rip), %r8     # 0x1635ab
movl $0x29c, %r9d            # imm = 0x29C
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x311be
jmp 0x311c0
cmpq $0x0, 0x10(%rsp)
je 0x311d0
cmpq $0x0, 0x8(%rsp)
jne 0x31208
movq 0x182e01(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x12ce85(%rip), %rsi    # 0x15e066
leaq 0x134508(%rip), %rdx    # 0x1656f0
leaq 0x13465a(%rip), %rcx    # 0x165849
leaq 0x1323b5(%rip), %r8     # 0x1635ab
movl $0x29d, %r9d            # imm = 0x29D
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x3120a
movq 0x20(%rsp), %rdi
callq 0x20920
movq %rax, (%rsp)
movq (%rsp), %rdi
movq 0x20(%rsp), %rsi
movq 0x10(%rsp), %rdx
callq 0x2f130
movq (%rsp), %rdi
movq 0x18(%rsp), %rsi
movq 0x10(%rsp), %rdx
callq 0x2f130
movq 0x20(%rsp), %rdi
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
callq 0x2f2b0
movq 0x18(%rsp), %rdi
movq 0x8(%rsp), %rsi
callq 0x31270
movq (%rsp), %rax
addq $0x28, %rsp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_visitor.c
// Function: gt_gff3_visitor_class
const GtNodeVisitorClass* gt_gff3_visitor_class()
{
  static GtNodeVisitorClass *nvc = NULL;
  if (!nvc) {
    nvc = gt_node_visitor_class_new(sizeof (GtGFF3Visitor),
                                    gff3_visitor_free,
                                    gff3_visitor_comment_node,
                                    gff3_visitor_feature_node,
                                    gff3_visitor_region_node,
                                    gff3_visitor_sequence_node,
                                    gff3_visitor_eof_node);
    gt_node_visitor_class_set_meta_node_func(nvc, gff3_visitor_meta_node);
  }
  return nvc;
}

// Assembly:
pushq %rax
cmpq $0x0, 0x185147(%rip)    # 0x1b6430
jne 0x3133d
movl $0x50, %edi
leaq 0x59(%rip), %rsi        # 0x31350
leaq 0x112(%rip), %rdx       # 0x31410
leaq 0x26b(%rip), %rcx       # 0x31570
leaq 0x424(%rip), %r8        # 0x31730
leaq 0x64d(%rip), %r9        # 0x31960
leaq 0x836(%rip), %rax       # 0x31b50
movq %rax, (%rsp)
callq 0x34b70
movq %rax, 0x185106(%rip)    # 0x1b6430
movq 0x1850ff(%rip), %rdi    # 0x1b6430
leaq 0x8d8(%rip), %rsi       # 0x31c10
callq 0x34c50
movq 0x1850ec(%rip), %rax    # 0x1b6430
popq %rcx
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_visitor.c
// Function: gff3_visitor_free
static void gff3_visitor_free(GtNodeVisitor *nv)
{
  GtGFF3Visitor *gff3_visitor = gff3_visitor_cast(nv);
  gt_assert(gff3_visitor);
  gt_string_distri_delete(gff3_visitor->id_counter);
  gt_hashmap_delete(gff3_visitor->feature_node_to_id_array);
  gt_hashmap_delete(gff3_visitor->feature_node_to_unique_id_str);
  gt_cstr_table_delete(gff3_visitor->used_ids);
  gt_str_delete(gff3_visitor->outstr);
  gt_file_delete(gff3_visitor->outfp);
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
callq 0x312e0
movq %rax, %rdi
movq 0x10(%rsp), %rsi
callq 0x34d50
movq %rax, 0x8(%rsp)
cmpq $0x0, 0x8(%rsp)
jne 0x313b0
movq 0x182c59(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x12ccdd(%rip), %rsi    # 0x15e066
leaq 0x13469a(%rip), %rdx    # 0x165a2a
leaq 0x134619(%rip), %rcx    # 0x1659b0
leaq 0x1345b2(%rip), %r8     # 0x165950
movl $0x57, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x313b2
movq 0x8(%rsp), %rax
movq 0x18(%rax), %rdi
callq 0xa2680
movq 0x8(%rsp), %rax
movq 0x20(%rax), %rdi
callq 0x86cc0
movq 0x8(%rsp), %rax
movq 0x28(%rax), %rdi
callq 0x86cc0
movq 0x8(%rsp), %rax
movq 0x48(%rax), %rdi
callq 0x7d720
movq 0x8(%rsp), %rax
movq 0x40(%rax), %rdi
callq 0x1afc0
movq 0x8(%rsp), %rax
movq 0x38(%rax), %rdi
callq 0x83f40
addq $0x18, %rsp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_visitor.c
// Function: gff3_visitor_comment_node
static int gff3_visitor_comment_node(GtNodeVisitor *nv, GtCommentNode *cn,
                                     GT_UNUSED GtError *err)
{
  GtGFF3Visitor *gff3_visitor;
  gt_error_check(err);
  gff3_visitor = gff3_visitor_cast(nv);
  gt_assert(nv && cn);
  gff3_version_string(nv);
  if (!gff3_visitor->outstr) {
    gt_file_xprintf(gff3_visitor->outfp, "#%s\n",
                    gt_comment_node_get_comment(cn));
  } else  {
    gt_str_append_char(gff3_visitor->outstr, '#');
    gt_str_append_cstr(gff3_visitor->outstr, gt_comment_node_get_comment(cn));
    gt_str_append_char(gff3_visitor->outstr, '\n');
  }
  return 0;
}

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x30(%rsp)
movq %rsi, 0x28(%rsp)
movq %rdx, 0x20(%rsp)
cmpq $0x0, 0x20(%rsp)
je 0x31473
movq 0x20(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0x3143b
jmp 0x31473
movq 0x182b96(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x12cc1a(%rip), %rsi    # 0x15e066
leaq 0x12d1f5(%rip), %rdx    # 0x15e648
leaq 0x134568(%rip), %rcx    # 0x1659c2
leaq 0x1344ef(%rip), %r8     # 0x165950
movl $0x64, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x31475
callq 0x312e0
movq %rax, %rdi
movq 0x30(%rsp), %rsi
callq 0x34d50
movq %rax, 0x18(%rsp)
cmpq $0x0, 0x30(%rsp)
je 0x3149c
cmpq $0x0, 0x28(%rsp)
jne 0x314d4
movq 0x182b35(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x12cbb9(%rip), %rsi    # 0x15e066
leaq 0x134528(%rip), %rdx    # 0x1659dc
leaq 0x134507(%rip), %rcx    # 0x1659c2
leaq 0x13448e(%rip), %r8     # 0x165950
movl $0x66, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x314d6
movq 0x30(%rsp), %rdi
callq 0x32100
movq 0x18(%rsp), %rax
cmpq $0x0, 0x40(%rax)
jne 0x3151c
movq 0x18(%rsp), %rax
movq 0x38(%rax), %rax
movq %rax, 0x10(%rsp)
movq 0x28(%rsp), %rdi
callq 0xa5e10
movq 0x10(%rsp), %rdi
movq %rax, %rdx
leaq 0x1346a6(%rip), %rsi    # 0x165bb9
movb $0x0, %al
callq 0x837b0
jmp 0x31567
movq 0x18(%rsp), %rax
movq 0x40(%rax), %rdi
movl $0x23, %esi
callq 0x194d0
movq 0x18(%rsp), %rax
movq 0x40(%rax), %rax
movq %rax, 0x8(%rsp)
movq 0x28(%rsp), %rdi
callq 0xa5e10
movq 0x8(%rsp), %rdi
movq %rax, %rsi
callq 0x18fb0
movq 0x18(%rsp), %rax
movq 0x40(%rax), %rdi
movl $0xa, %esi
callq 0x194d0
xorl %eax, %eax
addq $0x38, %rsp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_visitor.c
// Function: gff3_visitor_eof_node
static int gff3_visitor_eof_node(GtNodeVisitor *nv, GT_UNUSED GtEOFNode *en,
                                 GT_UNUSED GtError *err)
{
  gt_error_check(err);
  gt_assert(nv && en);
  gff3_version_string(nv);
  return 0;
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
movq %rsi, 0x8(%rsp)
movq %rdx, (%rsp)
cmpq $0x0, (%rsp)
je 0x31bb0
movq (%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0x31b78
jmp 0x31bb0
movq 0x182459(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x12c4dd(%rip), %rsi    # 0x15e066
leaq 0x12cab8(%rip), %rdx    # 0x15e648
leaq 0x133fd9(%rip), %rcx    # 0x165b70
leaq 0x133db2(%rip), %r8     # 0x165950
movl $0x1f2, %r9d            # imm = 0x1F2
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x31bb2
jmp 0x31bb4
cmpq $0x0, 0x10(%rsp)
je 0x31bc4
cmpq $0x0, 0x8(%rsp)
jne 0x31bfc
movq 0x18240d(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x12c491(%rip), %rsi    # 0x15e066
leaq 0x133faa(%rip), %rdx    # 0x165b86
leaq 0x133f8d(%rip), %rcx    # 0x165b70
leaq 0x133d66(%rip), %r8     # 0x165950
movl $0x1f3, %r9d            # imm = 0x1F3
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x31bfe
movq 0x10(%rsp), %rdi
callq 0x32100
xorl %eax, %eax
addq $0x18, %rsp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_visitor.c
// Function: gt_gff3_visitor_new
GtNodeVisitor* gt_gff3_visitor_new(GtFile *outfp)
{
  GtNodeVisitor *nv = gt_node_visitor_create(gt_gff3_visitor_class());
  GtGFF3Visitor *gff3_visitor = gff3_visitor_cast(nv);
  gt_gff3_visitor_init(gff3_visitor);
  gff3_visitor->outfp = gt_file_ref(outfp);
  gff3_visitor->outstr = NULL;
  return nv;
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
callq 0x312e0
movq %rax, %rdi
callq 0x34cc0
movq %rax, 0x8(%rsp)
callq 0x312e0
movq %rax, %rdi
movq 0x8(%rsp), %rsi
callq 0x34d50
movq %rax, (%rsp)
movq (%rsp), %rdi
callq 0x31ec0
movq 0x10(%rsp), %rdi
callq 0x83200
movq %rax, %rcx
movq (%rsp), %rax
movq %rcx, 0x38(%rax)
movq (%rsp), %rax
movq $0x0, 0x40(%rax)
movq 0x8(%rsp), %rax
addq $0x18, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_visitor.c
// Function: gt_gff3_visitor_init
static void gt_gff3_visitor_init(GtGFF3Visitor *gff3_visitor)
{
  gff3_visitor->version_string_shown = false;
  gff3_visitor->fasta_directive_shown = false;
  gff3_visitor->id_counter = gt_string_distri_new();
  gff3_visitor->feature_node_to_id_array =
    gt_hashmap_new(GT_HASH_DIRECT, NULL, (GtFree) gt_array_delete);
  gff3_visitor->feature_node_to_unique_id_str =
    gt_hashmap_new(GT_HASH_DIRECT, NULL, (GtFree) gt_str_delete);
  gff3_visitor->fasta_width = 0;
  gff3_visitor->used_ids = gt_cstr_table_new();
  /* XXX */
  gff3_visitor->retain_ids = getenv("GT_RETAINIDS") ? true : false;
  gff3_visitor->allow_nonunique_ids = false;
}

// Assembly:
pushq %rax
movq %rdi, (%rsp)
movq (%rsp), %rax
movb $0x0, 0x10(%rax)
movq (%rsp), %rax
movb $0x0, 0x12(%rax)
callq 0xa1f80
movq %rax, %rcx
movq (%rsp), %rax
movq %rcx, 0x18(%rax)
xorl %edi, %edi
xorl %eax, %eax
movl %eax, %esi
leaq 0x451ae(%rip), %rdx     # 0x770a0
callq 0x86190
movq %rax, %rcx
movq (%rsp), %rax
movq %rcx, 0x20(%rax)
xorl %edi, %edi
xorl %eax, %eax
movl %eax, %esi
leaq -0x16f4f(%rip), %rdx    # 0x1afc0
callq 0x86190
movq %rax, %rcx
movq (%rsp), %rax
movq %rcx, 0x28(%rax)
movq (%rsp), %rax
movq $0x0, 0x30(%rax)
callq 0x7d020
movq %rax, %rcx
movq (%rsp), %rax
movq %rcx, 0x48(%rax)
leaq 0x133c7c(%rip), %rdi    # 0x165bbe
callq 0xb790
movq %rax, %rdx
xorl %eax, %eax
movl $0x1, %ecx
cmpq $0x0, %rdx
cmovnel %ecx, %eax
cmpl $0x0, %eax
setne %cl
movq (%rsp), %rax
andb $0x1, %cl
movb %cl, 0x11(%rax)
movq (%rsp), %rax
movb $0x0, 0x13(%rax)
popq %rax
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_visitor.c
// Function: gt_gff3_visitor_new_to_str
GtNodeVisitor* gt_gff3_visitor_new_to_str(GtStr *outstr)
{
  GtNodeVisitor *nv = gt_node_visitor_create(gt_gff3_visitor_class());
  GtGFF3Visitor *gff3_visitor = gff3_visitor_cast(nv);
  gt_gff3_visitor_init(gff3_visitor);
  gff3_visitor->outfp = NULL;
  gff3_visitor->outstr = gt_str_ref(outstr);
  return nv;
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
callq 0x312e0
movq %rax, %rdi
callq 0x34cc0
movq %rax, 0x8(%rsp)
callq 0x312e0
movq %rax, %rdi
movq 0x8(%rsp), %rsi
callq 0x34d50
movq %rax, (%rsp)
movq (%rsp), %rdi
callq 0x31ec0
movq (%rsp), %rax
movq $0x0, 0x38(%rax)
movq 0x10(%rsp), %rdi
callq 0x19dc0
movq %rax, %rcx
movq (%rsp), %rax
movq %rcx, 0x40(%rax)
movq 0x8(%rsp), %rax
addq $0x18, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_visitor.c
// Function: gff3_version_string
static void gff3_version_string(GtNodeVisitor *nv)
{
  GtGFF3Visitor *gff3_visitor = gff3_visitor_cast(nv);
  gt_assert(gff3_visitor);
  if (!gff3_visitor->version_string_shown) {
    if (!gff3_visitor->outstr) {
      gt_file_xprintf(gff3_visitor->outfp, "%s %u\n", GT_GFF_VERSION_PREFIX,
                      GT_GFF_VERSION);
    } else {
      gt_str_append_cstr(gff3_visitor->outstr, GT_GFF_VERSION_PREFIX);
      gt_str_append_cstr(gff3_visitor->outstr, " ");
      gt_str_append_uint(gff3_visitor->outstr, GT_GFF_VERSION);
      gt_str_append_char(gff3_visitor->outstr, '\n');
    }
    gff3_visitor->version_string_shown = true;
  }
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
callq 0x312e0
movq %rax, %rdi
movq 0x10(%rsp), %rsi
callq 0x34d50
movq %rax, 0x8(%rsp)
cmpq $0x0, 0x8(%rsp)
jne 0x32160
movq 0x181ea9(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x12bf2d(%rip), %rsi    # 0x15e066
leaq 0x1338ea(%rip), %rdx    # 0x165a2a
leaq 0x13389e(%rip), %rcx    # 0x1659e5
leaq 0x133802(%rip), %r8     # 0x165950
movl $0x45, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x32162
movq 0x8(%rsp), %rax
testb $0x1, 0x10(%rax)
jne 0x321fb
movq 0x8(%rsp), %rax
cmpq $0x0, 0x40(%rax)
jne 0x321a2
movq 0x8(%rsp), %rax
movq 0x38(%rax), %rdi
leaq 0x13386c(%rip), %rsi    # 0x1659f9
leaq 0x131916(%rip), %rdx    # 0x163aaa
movl $0x3, %ecx
movb $0x0, %al
callq 0x837b0
jmp 0x321f2
movq 0x8(%rsp), %rax
movq 0x40(%rax), %rdi
leaq 0x1318f8(%rip), %rsi    # 0x163aaa
callq 0x18fb0
movq 0x8(%rsp), %rax
movq 0x40(%rax), %rdi
leaq 0x14aa15(%rip), %rsi    # 0x17cbdc
callq 0x18fb0
movq 0x8(%rsp), %rax
movq 0x40(%rax), %rdi
movl $0x3, %esi
callq 0x19860
movq 0x8(%rsp), %rax
movq 0x40(%rax), %rdi
movl $0xa, %esi
callq 0x194d0
movq 0x8(%rsp), %rax
movb $0x1, 0x10(%rax)
addq $0x18, %rsp
retq
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_visitor.c
// Function: make_id_unique
static GtStr* make_id_unique(GtGFF3Visitor *gff3_visitor, GtFeatureNode *fn)
{
  GtUword i = 1;
  GtStr *id = gt_str_new_cstr(gt_feature_node_get_attribute(fn, "ID"));

  if (!gff3_visitor->allow_nonunique_ids) {
    if (gt_cstr_table_get(gff3_visitor->used_ids, gt_str_get(id))) {
      GtStr *buf = gt_str_new();
      while (!id_string_is_unique(id, buf, gff3_visitor->used_ids, i++));
      gt_warning("feature ID \"%s\" not unique: changing to %s", gt_str_get(id),
                                                               gt_str_get(buf));
      gt_str_set(id, gt_str_get(buf));
      gt_str_delete(buf);
    }
    /* update table with the new id */
    gt_cstr_table_add(gff3_visitor->used_ids, gt_str_get(id));
  }

  /* store (unique) id */
  gt_hashmap_add(gff3_visitor->feature_node_to_unique_id_str, fn, id);

  return id;
}

// Assembly:
subq $0x48, %rsp
movq %rdi, 0x40(%rsp)
movq %rsi, 0x38(%rsp)
movq $0x1, 0x30(%rsp)
movq 0x38(%rsp), %rdi
leaq 0x131f6d(%rip), %rsi    # 0x164840
callq 0x1fde0
movq %rax, %rdi
callq 0x18f70
movq %rax, 0x28(%rsp)
movq 0x40(%rsp), %rax
testb $0x1, 0x13(%rax)
jne 0x329dd
movq 0x40(%rsp), %rax
movq 0x48(%rax), %rax
movq %rax, 0x18(%rsp)
movq 0x28(%rsp), %rdi
callq 0x19940
movq 0x18(%rsp), %rdi
movq %rax, %rsi
callq 0x7d1d0
cmpq $0x0, %rax
je 0x329ba
callq 0x18f00
movq %rax, 0x20(%rsp)
movq 0x28(%rsp), %rdi
movq 0x20(%rsp), %rsi
movq 0x40(%rsp), %rax
movq 0x48(%rax), %rdx
movq 0x30(%rsp), %rcx
movq %rcx, %rax
addq $0x1, %rax
movq %rax, 0x30(%rsp)
callq 0x32c20
xorb $-0x1, %al
testb $0x1, %al
jne 0x3295e
jmp 0x32960
jmp 0x3292d
movq 0x28(%rsp), %rdi
callq 0x19940
movq %rax, 0x8(%rsp)
movq 0x20(%rsp), %rdi
callq 0x19940
movq 0x8(%rsp), %rsi
movq %rax, %rdx
leaq 0x1330af(%rip), %rdi    # 0x165a37
movb $0x0, %al
callq 0x1c550
movq 0x28(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x20(%rsp), %rdi
callq 0x19940
movq 0x10(%rsp), %rdi
movq %rax, %rsi
callq 0x190b0
movq 0x20(%rsp), %rdi
callq 0x1afc0
movq 0x40(%rsp), %rax
movq 0x48(%rax), %rax
movq %rax, (%rsp)
movq 0x28(%rsp), %rdi
callq 0x19940
movq (%rsp), %rdi
movq %rax, %rsi
callq 0x7d0b0
movq 0x40(%rsp), %rax
movq 0x28(%rax), %rdi
movq 0x38(%rsp), %rsi
movq 0x28(%rsp), %rdx
callq 0x86510
movq 0x28(%rsp), %rax
addq $0x48, %rsp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_visitor.c
// Function: create_unique_id
static GtStr* create_unique_id(GtGFF3Visitor *gff3_visitor, GtFeatureNode *fn)
{
  const char *type;
  GtStr *id;
  gt_assert(gff3_visitor && fn);
  type = gt_feature_node_get_type(fn);

  /* increase id counter */
  gt_string_distri_add(gff3_visitor->id_counter, type);

  /* build id string */
  id = gt_str_new_cstr(type);
  gt_str_append_uword(id, gt_string_distri_get(gff3_visitor->id_counter, type));

  /* store (unique) id */
  gt_hashmap_add(gff3_visitor->feature_node_to_unique_id_str, fn, id);

  return id;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq %rsi, 0x18(%rsp)
cmpq $0x0, 0x20(%rsp)
je 0x32a1e
cmpq $0x0, 0x18(%rsp)
jne 0x32a56
movq 0x1815b3(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x12b637(%rip), %rsi    # 0x15e066
leaq 0x13302c(%rip), %rdx    # 0x165a62
leaq 0x133038(%rip), %rcx    # 0x165a75
leaq 0x132f0c(%rip), %r8     # 0x165950
movl $0xf5, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x32a58
movq 0x18(%rsp), %rdi
callq 0x211d0
movq %rax, 0x10(%rsp)
movq 0x20(%rsp), %rax
movq 0x18(%rax), %rdi
movq 0x10(%rsp), %rsi
callq 0xa2000
movq 0x10(%rsp), %rdi
callq 0x18f70
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rax
movq %rax, (%rsp)
movq 0x20(%rsp), %rax
movq 0x18(%rax), %rdi
movq 0x10(%rsp), %rsi
callq 0xa2250
movq (%rsp), %rdi
movq %rax, %rsi
callq 0x19390
movq 0x20(%rsp), %rax
movq 0x28(%rax), %rdi
movq 0x18(%rsp), %rsi
movq 0x8(%rsp), %rdx
callq 0x86510
movq 0x8(%rsp), %rax
addq $0x28, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_visitor.c
// Function: add_id
static int add_id(GtFeatureNode *fn, void *data, GT_UNUSED GtError *err)
{
  AddIDInfo *info = (AddIDInfo*) data;
  GtArray *parent_features = NULL;
  gt_error_check(err);
  gt_assert(fn && info && info->gt_feature_node_to_id_array && info->id);
  parent_features = gt_hashmap_get(info->gt_feature_node_to_id_array, fn);
  if (!parent_features) {
    parent_features = gt_array_new(sizeof (char*));
    gt_hashmap_add(info->gt_feature_node_to_id_array, fn, parent_features);
  }
  gt_array_add(parent_features, info->id);
  return 0;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq %rsi, 0x18(%rsp)
movq %rdx, 0x10(%rsp)
movq 0x18(%rsp), %rax
movq %rax, 0x8(%rsp)
movq $0x0, (%rsp)
cmpq $0x0, 0x10(%rsp)
je 0x32b55
movq 0x10(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0x32b1d
jmp 0x32b55
movq 0x1814b4(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x12b538(%rip), %rsi    # 0x15e066
leaq 0x12bb13(%rip), %rdx    # 0x15e648
leaq 0x132f4a(%rip), %rcx    # 0x165a86
leaq 0x132e0d(%rip), %r8     # 0x165950
movl $0x77, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x32b57
jmp 0x32b59
cmpq $0x0, 0x20(%rsp)
je 0x32b80
cmpq $0x0, 0x8(%rsp)
je 0x32b80
movq 0x8(%rsp), %rax
cmpq $0x0, (%rax)
je 0x32b80
movq 0x8(%rsp), %rax
cmpq $0x0, 0x8(%rax)
jne 0x32bb8
movq 0x181451(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x12b4d5(%rip), %rsi    # 0x15e066
leaq 0x132ef5(%rip), %rdx    # 0x165a8d
leaq 0x132ee7(%rip), %rcx    # 0x165a86
leaq 0x132daa(%rip), %r8     # 0x165950
movl $0x78, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x32bba
movq 0x8(%rsp), %rax
movq (%rax), %rdi
movq 0x20(%rsp), %rsi
callq 0x86470
movq %rax, (%rsp)
cmpq $0x0, (%rsp)
jne 0x32bfb
movl $0x8, %edi
callq 0x75ab0
movq %rax, (%rsp)
movq 0x8(%rsp), %rax
movq (%rax), %rdi
movq 0x20(%rsp), %rsi
movq (%rsp), %rdx
callq 0x86510
movq (%rsp), %rdi
movq 0x8(%rsp), %rsi
addq $0x8, %rsi
movl $0x8, %edx
callq 0x76220
xorl %eax, %eax
addq $0x28, %rsp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_visitor.c
// Function: id_string_is_unique
static bool id_string_is_unique(GtStr *id, GtStr *buf, GtCstrTable *tab,
                                GtUword i)
{
  gt_str_reset(buf);
  gt_str_append_str(buf, id);
  make_unique_id_string(buf, i);
  return !gt_cstr_table_get(tab, gt_str_get(buf));
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq %rsi, 0x18(%rsp)
movq %rdx, 0x10(%rsp)
movq %rcx, 0x8(%rsp)
movq 0x18(%rsp), %rdi
callq 0x19b70
movq 0x18(%rsp), %rdi
movq 0x20(%rsp), %rsi
callq 0x191b0
movq 0x18(%rsp), %rdi
movq 0x8(%rsp), %rsi
callq 0x32c90
movq 0x10(%rsp), %rax
movq %rax, (%rsp)
movq 0x18(%rsp), %rdi
callq 0x19940
movq (%rsp), %rdi
movq %rax, %rsi
callq 0x7d1d0
cmpq $0x0, %rax
setne %al
xorb $-0x1, %al
andb $0x1, %al
addq $0x28, %rsp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_visitor.c
// Function: show_attribute
static void show_attribute(const char *attr_name, const char *attr_value,
                           void *data)
{
  ShowAttributeInfo *info = (ShowAttributeInfo*) data;
  gt_assert(attr_name && attr_value && info);
  if (strcmp(attr_name, GT_GFF_ID) && strcmp(attr_name, GT_GFF_PARENT)) {
    if (*info->attribute_shown) {
      if (!info->outstr)
        gt_file_xfputc(';', info->outfp);
      else
        gt_str_append_char(info->outstr, ';');
    } else
      *info->attribute_shown = true;
    if (!info->outstr)
      gt_file_xprintf(info->outfp, "%s=%s", attr_name, attr_value);
    else {
      gt_str_append_cstr(info->outstr, attr_name);
      gt_str_append_char(info->outstr, '=');
      gt_str_append_cstr(info->outstr, attr_value);
    }
  }
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq %rsi, 0x18(%rsp)
movq %rdx, 0x10(%rsp)
movq 0x10(%rsp), %rax
movq %rax, 0x8(%rsp)
cmpq $0x0, 0x20(%rsp)
je 0x32d05
cmpq $0x0, 0x18(%rsp)
je 0x32d05
cmpq $0x0, 0x8(%rsp)
jne 0x32d3d
movq 0x1812cc(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x12b350(%rip), %rsi    # 0x15e066
leaq 0x132dcd(%rip), %rdx    # 0x165aea
leaq 0x132de6(%rip), %rcx    # 0x165b0a
leaq 0x132c25(%rip), %r8     # 0x165950
movl $0x86, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x32d3f
movq 0x20(%rsp), %rdi
leaq 0x131af5(%rip), %rsi    # 0x164840
callq 0xb850
cmpl $0x0, %eax
je 0x32e2b
movq 0x20(%rsp), %rdi
leaq 0x131ade(%rip), %rsi    # 0x164843
callq 0xb850
cmpl $0x0, %eax
je 0x32e2b
movq 0x8(%rsp), %rax
movq (%rax), %rax
testb $0x1, (%rax)
je 0x32db6
movq 0x8(%rsp), %rax
cmpq $0x0, 0x10(%rax)
jne 0x32da1
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rsi
movl $0x3b, %edi
callq 0x83a70
jmp 0x32db4
movq 0x8(%rsp), %rax
movq 0x10(%rax), %rdi
movl $0x3b, %esi
callq 0x194d0
jmp 0x32dc1
movq 0x8(%rsp), %rax
movq (%rax), %rax
movb $0x1, (%rax)
movq 0x8(%rsp), %rax
cmpq $0x0, 0x10(%rax)
jne 0x32df0
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x20(%rsp), %rdx
movq 0x18(%rsp), %rcx
leaq 0x132cf9(%rip), %rsi    # 0x165ae0
movb $0x0, %al
callq 0x837b0
jmp 0x32e29
movq 0x8(%rsp), %rax
movq 0x10(%rax), %rdi
movq 0x20(%rsp), %rsi
callq 0x18fb0
movq 0x8(%rsp), %rax
movq 0x10(%rax), %rdi
movl $0x3d, %esi
callq 0x194d0
movq 0x8(%rsp), %rax
movq 0x10(%rax), %rdi
movq 0x18(%rsp), %rsi
callq 0x18fb0
jmp 0x32e2b
addq $0x28, %rsp
retq
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/mapping.c
// Function: gt_mapping_delete
void gt_mapping_delete(GtMapping *m)
{
  if (!m) return;
  gt_str_delete(m->mapping_file);
  gt_free(m->global);
  if (m->L) lua_close(m->L);
  gt_free(m);
}

// Assembly:
pushq %rax
movq %rdi, (%rsp)
cmpq $0x0, (%rsp)
jne 0x3327e
jmp 0x332d0
movq (%rsp), %rax
movq (%rax), %rdi
callq 0x1afc0
movq (%rsp), %rax
movq 0x8(%rax), %rdi
leaq 0x132941(%rip), %rsi    # 0x165bda
movl $0xe2, %edx
callq 0xdab0
movq (%rsp), %rax
cmpq $0x0, 0x18(%rax)
je 0x332bb
movq (%rsp), %rax
movq 0x18(%rax), %rdi
callq 0x55070
movq (%rsp), %rdi
leaq 0x132914(%rip), %rsi    # 0x165bda
movl $0xe4, %edx
callq 0xdab0
popq %rax
retq
nopw %cs:(%rax,%rax)