LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_index_memory.c
// Function: gt_feature_index_memory_get_features_for_range
int gt_feature_index_memory_get_features_for_range(GtFeatureIndex *gfi,
                                                   GtArray *results,
                                                   const char *seqid,
                                                   const GtRange *qry_range,
                                                   GtError *err)
{
  RegionInfo *ri;
  GtFeatureIndexMemory *fi;
  gt_error_check(err);
  gt_assert(gfi && results);

  fi = gt_feature_index_memory_cast(gfi);
  ri = (RegionInfo*) gt_hashmap_get(fi->regions, seqid);
  if (!ri) {
    gt_error_set(err, "feature index does not contain the given sequence id");
    return -1;
  }
  gt_interval_tree_find_all_overlapping(ri->features, qry_range->start,
                                        qry_range->end, results);
  gt_array_sort(results, gt_genome_node_cmp_range_start);
  return 0;
}

// Assembly:
subq $0x48, %rsp
movq %rdi, 0x38(%rsp)
movq %rsi, 0x30(%rsp)
movq %rdx, 0x28(%rsp)
movq %rcx, 0x20(%rsp)
movq %r8, 0x18(%rsp)
cmpq $0x0, 0x18(%rsp)
je 0x1f21d
movq 0x18(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0x1f1e5
jmp 0x1f21d
movq 0x194dec(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13ee70(%rip), %rsi    # 0x15e066
leaq 0x13f44b(%rip), %rdx    # 0x15e648
leaq 0x142719(%rip), %rcx    # 0x16191d
leaq 0x142651(%rip), %r8     # 0x16185c
movl $0xe7, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x1f21f
jmp 0x1f221
cmpq $0x0, 0x38(%rsp)
je 0x1f231
cmpq $0x0, 0x30(%rsp)
jne 0x1f269
movq 0x194da0(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13ee24(%rip), %rsi    # 0x15e066
leaq 0x142703(%rip), %rdx    # 0x16194c
leaq 0x1426cd(%rip), %rcx    # 0x16191d
leaq 0x142605(%rip), %r8     # 0x16185c
movl $0xe8, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x1f26b
callq 0x1eb70
movq %rax, %rdi
movq 0x38(%rsp), %rsi
callq 0x1de70
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rax
movq 0x10(%rax), %rdi
movq 0x28(%rsp), %rsi
callq 0x86470
movq %rax, 0x10(%rsp)
cmpq $0x0, 0x10(%rsp)
jne 0x1f2bf
movq 0x18(%rsp), %rdi
leaq 0x1426ad(%rip), %rsi    # 0x16195b
movb $0x0, %al
callq 0xc0d0
movl $0xffffffff, 0x44(%rsp) # imm = 0xFFFFFFFF
jmp 0x1f2fb
movq 0x10(%rsp), %rax
movq (%rax), %rdi
movq 0x20(%rsp), %rax
movq (%rax), %rsi
movq 0x20(%rsp), %rax
movq 0x8(%rax), %rdx
movq 0x30(%rsp), %rcx
callq 0x89ef0
movq 0x30(%rsp), %rdi
leaq 0x22(%rip), %rsi        # 0x1f310
callq 0x76620
movl $0x0, 0x44(%rsp)
movl 0x44(%rsp), %eax
addq $0x48, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_index_memory.c
// Function: gt_feature_index_memory_get_node_by_ptr
GtFeatureNode*  gt_feature_index_memory_get_node_by_ptr(GtFeatureIndexMemory
                                                                          *fim,
                                                        GtFeatureNode *ptr,
                                                        GtError *err)
{
  GtFeatureNode *retnode;
  gt_assert(fim);

  if (!(retnode = gt_hashmap_get(fim->nodes_in_index, ptr))) {
    gt_error_set(err, "feature index does not contain a node with address %p",
                 ptr);
  }
  return retnode;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq %rsi, 0x18(%rsp)
movq %rdx, 0x10(%rsp)
cmpq $0x0, 0x20(%rsp)
jne 0x1f3a3
movq 0x194c66(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13ecea(%rip), %rsi    # 0x15e066
leaq 0x14260d(%rip), %rdx    # 0x161990
leaq 0x14260a(%rip), %rcx    # 0x161994
leaq 0x1424cb(%rip), %r8     # 0x16185c
movl $0xfc, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x1f3a5
movq 0x20(%rsp), %rax
movq 0x18(%rax), %rdi
movq 0x18(%rsp), %rsi
callq 0x86470
movq %rax, 0x8(%rsp)
cmpq $0x0, %rax
jne 0x1f3db
movq 0x10(%rsp), %rdi
movq 0x18(%rsp), %rdx
leaq 0x1425e8(%rip), %rsi    # 0x1619bc
movb $0x0, %al
callq 0xc0d0
movq 0x8(%rsp), %rax
addq $0x28, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_index_memory.c
// Function: gt_feature_index_memory_get_first_seqid
char* gt_feature_index_memory_get_first_seqid(const GtFeatureIndex *gfi,
                                              GT_UNUSED GtError *err)
{
  GtFeatureIndexMemory *fi;
  gt_assert(gfi);

  fi = gt_feature_index_memory_cast((GtFeatureIndex*) gfi);
  return fi->firstseqid ? gt_cstr_dup(fi->firstseqid) : NULL;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq %rsi, 0x18(%rsp)
cmpq $0x0, 0x20(%rsp)
jne 0x1f43e
movq 0x194bcb(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13ec4f(%rip), %rsi    # 0x15e066
leaq 0x1425d4(%rip), %rdx    # 0x1619f2
leaq 0x1425d1(%rip), %rcx    # 0x1619f6
leaq 0x142430(%rip), %r8     # 0x16185c
movl $0x109, %r9d            # imm = 0x109
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x1f440
callq 0x1eb70
movq %rax, %rdi
movq 0x20(%rsp), %rsi
callq 0x1de70
movq %rax, 0x10(%rsp)
movq 0x10(%rsp), %rax
cmpq $0x0, 0x28(%rax)
je 0x1f478
movq 0x10(%rsp), %rax
movq 0x28(%rax), %rdi
callq 0x7c400
movq %rax, 0x8(%rsp)
jmp 0x1f481
xorl %eax, %eax
movq %rax, 0x8(%rsp)
jmp 0x1f481
movq 0x8(%rsp), %rax
addq $0x28, %rsp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_index_memory.c
// Function: gt_feature_index_memory_get_seqids
GtStrArray* gt_feature_index_memory_get_seqids(const GtFeatureIndex *gfi,
                                               GT_UNUSED GtError *err)
{
  GtCstrTable* seqids;
  GtStrArray *ret;
  GT_UNUSED int rval;
  GtFeatureIndexMemory *fi;
  gt_assert(gfi);

  fi = gt_feature_index_memory_cast((GtFeatureIndex*) gfi);
  seqids = gt_cstr_table_new();
  rval = gt_hashmap_foreach_in_key_order(fi->regions, store_seqid, seqids,
                                         NULL);
  gt_assert(!rval); /* store_seqid() is sane */
  ret = gt_cstr_table_get_all(seqids);
  gt_cstr_table_delete(seqids);
  return ret;
}

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x30(%rsp)
movq %rsi, 0x28(%rsp)
cmpq $0x0, 0x30(%rsp)
jne 0x1f4de
movq 0x194b2b(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13ebaf(%rip), %rsi    # 0x15e066
leaq 0x142534(%rip), %rdx    # 0x1619f2
leaq 0x142559(%rip), %rcx    # 0x161a1e
leaq 0x142390(%rip), %r8     # 0x16185c
movl $0x122, %r9d            # imm = 0x122
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x1f4e0
callq 0x1eb70
movq %rax, %rdi
movq 0x30(%rsp), %rsi
callq 0x1de70
movq %rax, 0x8(%rsp)
callq 0x7d020
movq %rax, 0x20(%rsp)
movq 0x8(%rsp), %rax
movq 0x10(%rax), %rdi
movq 0x20(%rsp), %rdx
leaq 0x7a(%rip), %rsi        # 0x1f590
xorl %eax, %eax
movl %eax, %ecx
callq 0x86750
movl %eax, 0x14(%rsp)
cmpl $0x0, 0x14(%rsp)
je 0x1f562
movq 0x194aa7(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13eb2b(%rip), %rsi    # 0x15e066
leaq 0x13f537(%rip), %rdx    # 0x15ea79
leaq 0x1424d5(%rip), %rcx    # 0x161a1e
leaq 0x14230c(%rip), %r8     # 0x16185c
movl $0x128, %r9d            # imm = 0x128
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x1f564
movq 0x20(%rsp), %rdi
callq 0x7d270
movq %rax, 0x18(%rsp)
movq 0x20(%rsp), %rdi
callq 0x7d720
movq 0x18(%rsp), %rax
addq $0x38, %rsp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_index_memory.c
// Function: store_seqid
static int store_seqid(void *key, GT_UNUSED void *value, void *data,
                       GT_UNUSED GtError *err)
{
  GtCstrTable *seqids = (GtCstrTable*) data;
  const char *seqid = (const char*) key;
  gt_assert(seqids && seqid);
  if (!gt_cstr_table_get(seqids, seqid)) {
    gt_cstr_table_add(seqids, seqid);
  }
  return 0;
}

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x30(%rsp)
movq %rsi, 0x28(%rsp)
movq %rdx, 0x20(%rsp)
movq %rcx, 0x18(%rsp)
movq 0x20(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x30(%rsp), %rax
movq %rax, 0x8(%rsp)
cmpq $0x0, 0x10(%rsp)
je 0x1f5cc
cmpq $0x0, 0x8(%rsp)
jne 0x1f604
movq 0x194a05(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13ea89(%rip), %rsi    # 0x15e066
leaq 0x142578(%rip), %rdx    # 0x161b5c
leaq 0x142581(%rip), %rcx    # 0x161b6c
leaq 0x14226a(%rip), %r8     # 0x16185c
movl $0x114, %r9d            # imm = 0x114
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x1f606
movq 0x10(%rsp), %rdi
movq 0x8(%rsp), %rsi
callq 0x7d1d0
cmpq $0x0, %rax
jne 0x1f62a
movq 0x10(%rsp), %rdi
movq 0x8(%rsp), %rsi
callq 0x7d0b0
xorl %eax, %eax
addq $0x38, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_index_memory.c
// Function: gt_feature_index_memory_get_range_for_seqid
int gt_feature_index_memory_get_range_for_seqid(GtFeatureIndex *gfi,
                                                GtRange *range,
                                                const char *seqid,
                                                GT_UNUSED GtError *err)
{
  RegionInfo *info;
  GtFeatureIndexMemory *fi;
  gt_assert(gfi && range && seqid);
  fi = gt_feature_index_memory_cast(gfi);
  info = (RegionInfo*) gt_hashmap_get(fi->regions, seqid);
  gt_assert(info);

  if (info->dyn_range.start != ~0UL && info->dyn_range.end != 0) {
    range->start = info->dyn_range.start;
    range->end = info->dyn_range.end;
  }
  else if (info->region)
    *range = gt_genome_node_get_range((GtGenomeNode*) info->region);
  return 0;
}

// Assembly:
subq $0x48, %rsp
movq %rdi, 0x40(%rsp)
movq %rsi, 0x38(%rsp)
movq %rdx, 0x30(%rsp)
movq %rcx, 0x28(%rsp)
cmpq $0x0, 0x40(%rsp)
je 0x1f670
cmpq $0x0, 0x38(%rsp)
je 0x1f670
cmpq $0x0, 0x30(%rsp)
jne 0x1f6a8
movq 0x194961(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13e9e5(%rip), %rsi    # 0x15e066
leaq 0x1423b9(%rip), %rdx    # 0x161a41
leaq 0x1423c8(%rip), %rcx    # 0x161a57
leaq 0x1421c6(%rip), %r8     # 0x16185c
movl $0x135, %r9d            # imm = 0x135
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x1f6aa
callq 0x1eb70
movq %rax, %rdi
movq 0x40(%rsp), %rsi
callq 0x1de70
movq %rax, 0x18(%rsp)
movq 0x18(%rsp), %rax
movq 0x10(%rax), %rdi
movq 0x30(%rsp), %rsi
callq 0x86470
movq %rax, 0x20(%rsp)
cmpq $0x0, 0x20(%rsp)
jne 0x1f719
movq 0x1948f0(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13e974(%rip), %rsi    # 0x15e066
leaq 0x14640c(%rip), %rdx    # 0x165b05
leaq 0x142357(%rip), %rcx    # 0x161a57
leaq 0x142155(%rip), %r8     # 0x16185c
movl $0x138, %r9d            # imm = 0x138
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x1f71b
movq 0x20(%rsp), %rax
cmpq $-0x1, 0x10(%rax)
je 0x1f758
movq 0x20(%rsp), %rax
cmpq $0x0, 0x18(%rax)
je 0x1f758
movq 0x20(%rsp), %rax
movq 0x10(%rax), %rcx
movq 0x38(%rsp), %rax
movq %rcx, (%rax)
movq 0x20(%rsp), %rax
movq 0x18(%rax), %rcx
movq 0x38(%rsp), %rax
movq %rcx, 0x8(%rax)
jmp 0x1f79f
movq 0x20(%rsp), %rax
cmpq $0x0, 0x8(%rax)
je 0x1f79d
movq 0x38(%rsp), %rax
movq %rax, (%rsp)
movq 0x20(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x259f0
movq %rax, %rcx
movq (%rsp), %rax
movq %rcx, 0x8(%rsp)
movq %rdx, 0x10(%rsp)
movq 0x8(%rsp), %rcx
movq %rcx, (%rax)
movq 0x10(%rsp), %rcx
movq %rcx, 0x8(%rax)
jmp 0x1f79f
xorl %eax, %eax
addq $0x48, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_index_memory.c
// Function: gt_feature_index_memory_get_orig_range_for_seqid
int gt_feature_index_memory_get_orig_range_for_seqid(GtFeatureIndex *gfi,
                                                     GtRange *range,
                                                     const char *seqid,
                                                     GT_UNUSED GtError *err)
{
  RegionInfo *info;
  GtFeatureIndexMemory *fi;
  gt_assert(gfi && range && seqid);
  fi = gt_feature_index_memory_cast(gfi);
  info = (RegionInfo*) gt_hashmap_get(fi->regions, seqid);
  gt_assert(info);

  if (info->region)
    *range = gt_genome_node_get_range((GtGenomeNode*) info->region);

  return 0;
}

// Assembly:
subq $0x48, %rsp
movq %rdi, 0x40(%rsp)
movq %rsi, 0x38(%rsp)
movq %rdx, 0x30(%rsp)
movq %rcx, 0x28(%rsp)
cmpq $0x0, 0x40(%rsp)
je 0x1f7e0
cmpq $0x0, 0x38(%rsp)
je 0x1f7e0
cmpq $0x0, 0x30(%rsp)
jne 0x1f818
movq 0x1947f1(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13e875(%rip), %rsi    # 0x15e066
leaq 0x142249(%rip), %rdx    # 0x161a41
leaq 0x142284(%rip), %rcx    # 0x161a83
leaq 0x142056(%rip), %r8     # 0x16185c
movl $0x14a, %r9d            # imm = 0x14A
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x1f81a
callq 0x1eb70
movq %rax, %rdi
movq 0x40(%rsp), %rsi
callq 0x1de70
movq %rax, 0x18(%rsp)
movq 0x18(%rsp), %rax
movq 0x10(%rax), %rdi
movq 0x30(%rsp), %rsi
callq 0x86470
movq %rax, 0x20(%rsp)
cmpq $0x0, 0x20(%rsp)
jne 0x1f889
movq 0x194780(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13e804(%rip), %rsi    # 0x15e066
leaq 0x14629c(%rip), %rdx    # 0x165b05
leaq 0x142213(%rip), %rcx    # 0x161a83
leaq 0x141fe5(%rip), %r8     # 0x16185c
movl $0x14d, %r9d            # imm = 0x14D
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x1f88b
movq 0x20(%rsp), %rax
cmpq $0x0, 0x8(%rax)
je 0x1f8d0
movq 0x38(%rsp), %rax
movq %rax, (%rsp)
movq 0x20(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x259f0
movq %rax, %rcx
movq (%rsp), %rax
movq %rcx, 0x8(%rsp)
movq %rdx, 0x10(%rsp)
movq 0x8(%rsp), %rcx
movq %rcx, (%rax)
movq 0x10(%rsp), %rcx
movq %rcx, 0x8(%rax)
xorl %eax, %eax
addq $0x48, %rsp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_index_memory.c
// Function: gt_feature_index_memory_has_seqid
int gt_feature_index_memory_has_seqid(const GtFeatureIndex *gfi,
                                      bool *has_seqid,
                                      const char *seqid,
                                      GT_UNUSED GtError *err)
{
  GtFeatureIndexMemory *fi;
  gt_assert(gfi);

  fi = gt_feature_index_memory_cast((GtFeatureIndex*) gfi);
  *has_seqid = (gt_hashmap_get(fi->regions, seqid) != NULL);
  return 0;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq %rsi, 0x18(%rsp)
movq %rdx, 0x10(%rsp)
movq %rcx, 0x8(%rsp)
cmpq $0x0, 0x20(%rsp)
jne 0x1f938
movq 0x1946d1(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13e755(%rip), %rsi    # 0x15e066
leaq 0x1420da(%rip), %rdx    # 0x1619f2
leaq 0x142195(%rip), %rcx    # 0x161ab4
leaq 0x141f36(%rip), %r8     # 0x16185c
movl $0x15b, %r9d            # imm = 0x15B
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x1f93a
callq 0x1eb70
movq %rax, %rdi
movq 0x20(%rsp), %rsi
callq 0x1de70
movq %rax, (%rsp)
movq (%rsp), %rax
movq 0x10(%rax), %rdi
movq 0x10(%rsp), %rsi
callq 0x86470
cmpq $0x0, %rax
setne %cl
movq 0x18(%rsp), %rax
andb $0x1, %cl
movb %cl, (%rax)
xorl %eax, %eax
addq $0x28, %rsp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_index_memory.c
// Function: gt_feature_index_memory_delete
void gt_feature_index_memory_delete(GtFeatureIndex *gfi)
{
  GtFeatureIndexMemory *fi;
  if (!gfi) return;
  fi = gt_feature_index_memory_cast(gfi);
  gt_hashmap_delete(fi->regions);
  gt_hashmap_delete(fi->nodes_in_index);
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
cmpq $0x0, 0x10(%rsp)
jne 0x1f993
jmp 0x1f9c6
callq 0x1eb70
movq %rax, %rdi
movq 0x10(%rsp), %rsi
callq 0x1de70
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rax
movq 0x10(%rax), %rdi
callq 0x86cc0
movq 0x8(%rsp), %rax
movq 0x18(%rax), %rdi
callq 0x86cc0
addq $0x18, %rsp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_index_memory.c
// Function: gt_feature_index_memory_new
GtFeatureIndex* gt_feature_index_memory_new(void)
{
  GtFeatureIndexMemory *fim;
  GtFeatureIndex *fi;
  fi = gt_feature_index_create(gt_feature_index_memory_class());
  fim = gt_feature_index_memory_cast(fi);
  fim->nof_nodes = 0;
  fim->regions = gt_hashmap_new(GT_HASH_STRING, NULL,
                                (GtFree) region_info_delete);
  fim->nodes_in_index = gt_hashmap_new(GT_HASH_DIRECT, NULL, NULL);
  return fi;
}

// Assembly:
subq $0x18, %rsp
callq 0x1eb70
movq %rax, %rdi
callq 0x1d0b0
movq %rax, 0x8(%rsp)
callq 0x1eb70
movq %rax, %rdi
movq 0x8(%rsp), %rsi
callq 0x1de70
movq %rax, 0x10(%rsp)
movq 0x10(%rsp), %rax
movq $0x0, 0x40(%rax)
movl $0x1, %edi
xorl %eax, %eax
movl %eax, %esi
leaq 0x36(%rip), %rdx        # 0x1fa50
callq 0x86190
movq %rax, %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x10(%rax)
xorl %edi, %edi
xorl %eax, %eax
movl %eax, %edx
movq %rdx, %rsi
callq 0x86190
movq %rax, %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x18(%rax)
movq 0x8(%rsp), %rax
addq $0x18, %rsp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_index_memory.c
// Function: region_info_delete
static void region_info_delete(RegionInfo *info)
{
  gt_interval_tree_delete(info->features);
  if (info->region)
    gt_genome_node_delete((GtGenomeNode*)info->region);
  gt_free(info);
}

// Assembly:
pushq %rax
movq %rdi, (%rsp)
movq (%rsp), %rax
movq (%rax), %rdi
callq 0x8a4d0
movq (%rsp), %rax
cmpq $0x0, 0x8(%rax)
je 0x1fa79
movq (%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x26eb0
movq (%rsp), %rdi
leaq 0x141dd8(%rip), %rsi    # 0x16185c
movl $0x40, %edx
callq 0xdab0
popq %rax
retq
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_node.c
// Function: gt_feature_node_get_attribute_list
GtStrArray* gt_feature_node_get_attribute_list(const GtFeatureNode *fn)
{
  GtStrArray *list = gt_str_array_new();
  if (fn->attributes)
    gt_tag_value_map_foreach(fn->attributes, store_attribute, list);
  return list;
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
callq 0x1b020
movq %rax, 0x8(%rsp)
movq 0x10(%rsp), %rax
cmpq $0x0, 0x60(%rax)
je 0x1fe69
movq 0x10(%rsp), %rax
movq 0x60(%rax), %rdi
movq 0x8(%rsp), %rdx
leaq 0x1c(%rip), %rsi        # 0x1fe80
callq 0x36f30
movq 0x8(%rsp), %rax
addq $0x18, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_node.c
// Function: gt_feature_node_set_source
void gt_feature_node_set_source(GtFeatureNode *fn, GtStr *source)
{
  gt_assert(fn && source);
  if (fn->source)
    gt_str_delete(fn->source);
  fn->source = gt_str_ref(source);
  if (fn->observer && fn->observer->source_changed)
    fn->observer->source_changed(fn, source, fn->observer->data);
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
movq %rsi, 0x8(%rsp)
cmpq $0x0, 0x10(%rsp)
je 0x1ff2e
cmpq $0x0, 0x8(%rsp)
jne 0x1ff66
movq 0x1940a3(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13e127(%rip), %rsi    # 0x15e066
leaq 0x141c36(%rip), %rdx    # 0x161b7c
leaq 0x141c3c(%rip), %rcx    # 0x161b89
leaq 0x141c50(%rip), %r8     # 0x161ba4
movl $0x9f, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x1ff68
movq 0x10(%rsp), %rax
cmpq $0x0, 0x38(%rax)
je 0x1ff82
movq 0x10(%rsp), %rax
movq 0x38(%rax), %rdi
callq 0x1afc0
movq 0x8(%rsp), %rdi
callq 0x19dc0
movq %rax, %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x38(%rax)
movq 0x10(%rsp), %rax
cmpq $0x0, 0x80(%rax)
je 0x1ffe6
movq 0x10(%rsp), %rax
movq 0x80(%rax), %rax
cmpq $0x0, 0x20(%rax)
je 0x1ffe6
movq 0x10(%rsp), %rax
movq 0x80(%rax), %rax
movq 0x20(%rax), %rax
movq 0x10(%rsp), %rdi
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rcx
movq 0x80(%rcx), %rcx
movq 0x60(%rcx), %rdx
callq *%rax
addq $0x18, %rsp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_node.c
// Function: gt_feature_node_set_phase
void gt_feature_node_set_phase(GtFeatureNode *fn, GtPhase phase)
{
  gt_assert(fn);
  fn->bit_field &= ~(PHASE_MASK << PHASE_OFFSET);
  fn->bit_field |= phase << PHASE_OFFSET;
  if (fn->observer && fn->observer->phase_changed)
    fn->observer->phase_changed(fn, phase, fn->observer->data);
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
movl %esi, 0xc(%rsp)
cmpq $0x0, 0x10(%rsp)
jne 0x2003d
movq 0x193fcc(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13e050(%rip), %rsi    # 0x15e066
leaq 0x152564(%rip), %rdx    # 0x172581
leaq 0x141b9c(%rip), %rcx    # 0x161bc0
leaq 0x141b79(%rip), %r8     # 0x161ba4
movl $0xa9, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x2003f
movq 0x10(%rsp), %rax
movl 0x68(%rax), %ecx
andl $0xfffffcff, %ecx       # imm = 0xFFFFFCFF
movl %ecx, 0x68(%rax)
movl 0xc(%rsp), %ecx
shll $0x8, %ecx
movq 0x10(%rsp), %rax
orl 0x68(%rax), %ecx
movl %ecx, 0x68(%rax)
movq 0x10(%rsp), %rax
cmpq $0x0, 0x80(%rax)
je 0x200af
movq 0x10(%rsp), %rax
movq 0x80(%rax), %rax
cmpq $0x0, 0x8(%rax)
je 0x200af
movq 0x10(%rsp), %rax
movq 0x80(%rax), %rax
movq 0x8(%rax), %rax
movq 0x10(%rsp), %rdi
movl 0xc(%rsp), %esi
movq 0x10(%rsp), %rcx
movq 0x80(%rcx), %rcx
movq 0x60(%rcx), %rdx
callq *%rax
addq $0x18, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_node.c
// Function: gt_feature_node_set_observer
void gt_feature_node_set_observer(GtFeatureNode *fn, GtFeatureNodeObserver *o)
{
  gt_assert(fn && o);
  if (fn->observer)
    gt_feature_node_observer_delete(fn->observer);
  fn->observer = gt_feature_node_observer_ref(o);
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
movq %rsi, 0x8(%rsp)
cmpq $0x0, 0x10(%rsp)
je 0x200de
cmpq $0x0, 0x8(%rsp)
jne 0x20116
movq 0x193ef3(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13df77(%rip), %rsi    # 0x15e066
leaq 0x141ae4(%rip), %rdx    # 0x161bda
leaq 0x141ae5(%rip), %rcx    # 0x161be2
leaq 0x141aa0(%rip), %r8     # 0x161ba4
movl $0xbb, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x20118
movq 0x10(%rsp), %rax
cmpq $0x0, 0x80(%rax)
je 0x20138
movq 0x10(%rsp), %rax
movq 0x80(%rax), %rdi
callq 0x24dc0
movq 0x8(%rsp), %rdi
callq 0x24d60
movq %rax, %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x80(%rax)
addq $0x18, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_node.c
// Function: gt_feature_node_unset_observer
void gt_feature_node_unset_observer(GtFeatureNode *fn)
{
  gt_assert(fn);
  if (fn->observer)
    gt_feature_node_observer_delete(fn->observer);
  fn->observer = NULL;
}

// Assembly:
pushq %rax
movq %rdi, (%rsp)
cmpq $0x0, (%rsp)
jne 0x201a4
movq 0x193e65(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13dee9(%rip), %rsi    # 0x15e066
leaq 0x1523fd(%rip), %rdx    # 0x172581
leaq 0x141a74(%rip), %rcx    # 0x161bff
leaq 0x141a12(%rip), %r8     # 0x161ba4
movl $0xc3, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x201a6
movq (%rsp), %rax
cmpq $0x0, 0x80(%rax)
je 0x201c4
movq (%rsp), %rax
movq 0x80(%rax), %rdi
callq 0x24dc0
movq (%rsp), %rax
movq $0x0, 0x80(%rax)
popq %rax
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_node.c
// Function: gt_feature_node_class
const GtGenomeNodeClass* gt_feature_node_class()
{
  static const GtGenomeNodeClass *gnc = NULL;
  gt_class_alloc_lock_enter();
  if (!gnc) {
    gnc = gt_genome_node_class_new(sizeof (GtFeatureNode),
                                   feature_node_free,
                                   feature_node_get_seqid,
                                   feature_node_get_seqid,
                                   feature_node_get_range,
                                   feature_node_set_range,
                                   feature_node_change_seqid,
                                   feature_node_accept);
  }
  gt_class_alloc_lock_leave();
  return gnc;
}

// Assembly:
subq $0x18, %rsp
callq 0x7b730
cmpq $0x0, 0x19621f(%rip)    # 0x1b6410
jne 0x2023a
movl $0x88, %edi
leaq 0x51(%rip), %rsi        # 0x20250
leaq 0x15a(%rip), %rcx       # 0x20360
leaq 0x183(%rip), %r8        # 0x20390
leaq 0x1bc(%rip), %r9        # 0x203d0
leaq 0x245(%rip), %r10       # 0x20460
leaq 0x2ce(%rip), %rax       # 0x204f0
movq %rcx, %rdx
movq %r10, (%rsp)
movq %rax, 0x8(%rsp)
callq 0x251c0
movq %rax, 0x1961d6(%rip)    # 0x1b6410
callq 0x7b790
movq 0x1961ca(%rip), %rax    # 0x1b6410
addq $0x18, %rsp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_node.c
// Function: feature_node_free
static void feature_node_free(GtGenomeNode *gn)
{
  GtFeatureNode *fn = gt_feature_node_cast(gn);
  gt_str_delete(fn->seqid);
  gt_str_delete(fn->source);
  gt_tag_value_map_delete(fn->attributes);
  if (fn->children) {
    GtDlistelem *dlistelem;
    for (dlistelem = gt_dlist_first(fn->children);
         dlistelem != NULL;
         dlistelem = gt_dlistelem_next(dlistelem)) {
      gt_genome_node_delete(gt_dlistelem_get_data(dlistelem));
    }
  }
  gt_dlist_delete(fn->children);
  if (fn->observer && fn->observer->deleted)
    fn->observer->deleted(fn, fn->observer->data);
  if (fn->observer)
    gt_feature_node_observer_delete(fn->observer);
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
movq 0x10(%rsp), %rdi
callq 0x20750
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rax
movq 0x30(%rax), %rdi
callq 0x1afc0
movq 0x8(%rsp), %rax
movq 0x38(%rax), %rdi
callq 0x1afc0
movq 0x8(%rsp), %rax
movq 0x60(%rax), %rdi
callq 0x372f0
movq 0x8(%rsp), %rax
cmpq $0x0, 0x70(%rax)
je 0x202d9
movq 0x8(%rsp), %rax
movq 0x70(%rax), %rdi
callq 0x7d850
movq %rax, (%rsp)
cmpq $0x0, (%rsp)
je 0x202d7
movq (%rsp), %rdi
callq 0x7d9e0
movq %rax, %rdi
callq 0x26eb0
movq (%rsp), %rdi
callq 0x7da30
movq %rax, (%rsp)
jmp 0x202b0
jmp 0x202d9
movq 0x8(%rsp), %rax
movq 0x70(%rax), %rdi
callq 0x7e220
movq 0x8(%rsp), %rax
cmpq $0x0, 0x80(%rax)
je 0x20330
movq 0x8(%rsp), %rax
movq 0x80(%rax), %rax
cmpq $0x0, 0x58(%rax)
je 0x20330
movq 0x8(%rsp), %rax
movq 0x80(%rax), %rax
movq 0x58(%rax), %rax
movq 0x8(%rsp), %rdi
movq 0x8(%rsp), %rcx
movq 0x80(%rcx), %rcx
movq 0x60(%rcx), %rsi
callq *%rax
movq 0x8(%rsp), %rax
cmpq $0x0, 0x80(%rax)
je 0x20350
movq 0x8(%rsp), %rax
movq 0x80(%rax), %rdi
callq 0x24dc0
addq $0x18, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_node.c
// Function: feature_node_set_range
static void feature_node_set_range(GtGenomeNode *gn, const GtRange *range)
{
  GtFeatureNode *fn = gt_feature_node_cast(gn);
  fn->range = *range;
  if (fn->observer && fn->observer->range_changed)
    fn->observer->range_changed(fn, &(fn->range), fn->observer->data);
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
movq %rsi, 0x8(%rsp)
movq 0x10(%rsp), %rdi
callq 0x20750
movq %rax, (%rsp)
movq (%rsp), %rax
movq 0x8(%rsp), %rcx
movq (%rcx), %rdx
movq %rdx, 0x48(%rax)
movq 0x8(%rcx), %rcx
movq %rcx, 0x50(%rax)
movq (%rsp), %rax
cmpq $0x0, 0x80(%rax)
je 0x20450
movq (%rsp), %rax
movq 0x80(%rax), %rax
cmpq $0x0, 0x38(%rax)
je 0x20450
movq (%rsp), %rax
movq 0x80(%rax), %rax
movq 0x38(%rax), %rax
movq (%rsp), %rdi
movq (%rsp), %rsi
addq $0x48, %rsi
movq (%rsp), %rcx
movq 0x80(%rcx), %rcx
movq 0x60(%rcx), %rdx
callq *%rax
addq $0x18, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_node.c
// Function: feature_node_change_seqid
static void feature_node_change_seqid(GtGenomeNode *gn, GtStr *seqid)
{
  GtFeatureNode *fn = gt_feature_node_cast(gn);
  gt_assert(fn && seqid);
  gt_str_delete(fn->seqid);
  fn->seqid = gt_str_ref(seqid);
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
movq %rsi, 0x8(%rsp)
movq 0x10(%rsp), %rdi
callq 0x20750
movq %rax, (%rsp)
cmpq $0x0, (%rsp)
je 0x2048b
cmpq $0x0, 0x8(%rsp)
jne 0x204c3
movq 0x193b46(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13dbca(%rip), %rsi    # 0x15e066
leaq 0x14231a(%rip), %rdx    # 0x1627bd
leaq 0x14231f(%rip), %rcx    # 0x1627c9
leaq 0x1416f3(%rip), %r8     # 0x161ba4
movl $0x98, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x204c5
movq (%rsp), %rax
movq 0x30(%rax), %rdi
callq 0x1afc0
movq 0x8(%rsp), %rdi
callq 0x19dc0
movq %rax, %rcx
movq (%rsp), %rax
movq %rcx, 0x30(%rax)
addq $0x18, %rsp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_node.c
// Function: gt_feature_node_new
GtGenomeNode* gt_feature_node_new(GtStr *seqid, const char *type,
                                  GtUword start, GtUword end,
                                  GtStrand strand)
{
  GtGenomeNode *gn;
  GtFeatureNode *fn;
  gt_assert(seqid && type);
  gt_assert(start <= end);
  gn = gt_genome_node_create(gt_feature_node_class());
  fn = gt_feature_node_cast(gn);
  fn->seqid       = gt_str_ref(seqid);
  fn->source      = NULL;
  fn->type        = gt_symbol(type);
  fn->score       = GT_UNDEF_FLOAT;
  fn->range.start = start;
  fn->range.end   = end;
  fn->representative = NULL;
  fn->attributes  = NULL;
  fn->bit_field   = 0;
  fn->bit_field  |= strand << STRAND_OFFSET;
  fn->children    = NULL; /* the children list is create on demand */
  fn->observer    = NULL;
  gt_feature_node_set_phase(fn, GT_PHASE_UNDEFINED);
  set_transcriptfeaturetype(fn, TRANSCRIPT_FEATURE_TYPE_UNDETERMINED);
  set_tree_status(&fn->bit_field, IS_TREE);
  /* the DFS status is set to DFS_WHITE already */
  fn->representative = NULL;
  return gn;
}

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x30(%rsp)
movq %rsi, 0x28(%rsp)
movq %rdx, 0x20(%rsp)
movq %rcx, 0x18(%rsp)
movl %r8d, 0x14(%rsp)
cmpq $0x0, 0x30(%rsp)
je 0x205ad
cmpq $0x0, 0x28(%rsp)
jne 0x205e5
movq 0x193a24(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13daa8(%rip), %rsi    # 0x15e066
leaq 0x141659(%rip), %rdx    # 0x161c1e
leaq 0x141660(%rip), %rcx    # 0x161c2c
leaq 0x1415d1(%rip), %r8     # 0x161ba4
movl $0xf0, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x205e7
jmp 0x205e9
movq 0x20(%rsp), %rax
cmpq 0x18(%rsp), %rax
jbe 0x2062d
movq 0x1939dc(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13da60(%rip), %rsi    # 0x15e066
leaq 0x14e62d(%rip), %rdx    # 0x16ec3a
leaq 0x141618(%rip), %rcx    # 0x161c2c
leaq 0x141589(%rip), %r8     # 0x161ba4
movl $0xf1, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x2062f
callq 0x201e0
movq %rax, %rdi
callq 0x25530
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rdi
callq 0x20750
movq %rax, (%rsp)
movq 0x30(%rsp), %rdi
callq 0x19dc0
movq %rax, %rcx
movq (%rsp), %rax
movq %rcx, 0x30(%rax)
movq (%rsp), %rax
movq $0x0, 0x38(%rax)
movq 0x28(%rsp), %rdi
callq 0x1baa0
movq %rax, %rcx
movq (%rsp), %rax
movq %rcx, 0x40(%rax)
movq (%rsp), %rax
movss 0x1414e7(%rip), %xmm0   # 0x161b78
movss %xmm0, 0x58(%rax)
movq 0x20(%rsp), %rcx
movq (%rsp), %rax
movq %rcx, 0x48(%rax)
movq 0x18(%rsp), %rcx
movq (%rsp), %rax
movq %rcx, 0x50(%rax)
movq (%rsp), %rax
movq $0x0, 0x78(%rax)
movq (%rsp), %rax
movq $0x0, 0x60(%rax)
movq (%rsp), %rax
movl $0x0, 0x68(%rax)
movl 0x14(%rsp), %ecx
shll $0x5, %ecx
movq (%rsp), %rax
orl 0x68(%rax), %ecx
movl %ecx, 0x68(%rax)
movq (%rsp), %rax
movq $0x0, 0x70(%rax)
movq (%rsp), %rax
movq $0x0, 0x80(%rax)
movq (%rsp), %rdi
movl $0x3, %esi
callq 0x1fff0
movq (%rsp), %rdi
movl $0x4, %esi
callq 0x20770
movq (%rsp), %rdi
addq $0x68, %rdi
movl $0x1, %esi
callq 0x207f0
movq (%rsp), %rax
movq $0x0, 0x78(%rax)
movq 0x8(%rsp), %rax
addq $0x38, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_node.c
// Function: gt_feature_node_new_pseudo
GtGenomeNode* gt_feature_node_new_pseudo(GtStr *seqid, GtUword start,
                                         GtUword end, GtStrand strand)
{
  GtFeatureNode *pf;
  GtGenomeNode *pn;
  gt_assert(seqid);
  gt_assert(start <= end);
  pn = gt_feature_node_new(seqid, "pseudo", start, end, strand);
  pf = gt_feature_node_cast(pn);
  pf->type = NULL; /* pseudo features do not have a type */
  pf->bit_field |= 1 << PSEUDO_FEATURE_OFFSET;
  return pn;
}

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x30(%rsp)
movq %rsi, 0x28(%rsp)
movq %rdx, 0x20(%rsp)
movl %ecx, 0x1c(%rsp)
cmpq $0x0, 0x30(%rsp)
jne 0x20877
movq 0x193792(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13d816(%rip), %rsi    # 0x15e066
leaq 0x164119(%rip), %rdx    # 0x184970
leaq 0x1413e2(%rip), %rcx    # 0x161c40
leaq 0x14133f(%rip), %r8     # 0x161ba4
movl $0x10d, %r9d            # imm = 0x10D
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x20879
jmp 0x2087b
movq 0x28(%rsp), %rax
cmpq 0x20(%rsp), %rax
jbe 0x208bf
movq 0x19374a(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13d7ce(%rip), %rsi    # 0x15e066
leaq 0x14e39b(%rip), %rdx    # 0x16ec3a
leaq 0x14139a(%rip), %rcx    # 0x161c40
leaq 0x1412f7(%rip), %r8     # 0x161ba4
movl $0x10e, %r9d            # imm = 0x10E
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x208c1
movq 0x30(%rsp), %rdi
movq 0x28(%rsp), %rdx
movq 0x20(%rsp), %rcx
movl 0x1c(%rsp), %r8d
leaq 0x141524(%rip), %rsi    # 0x161e00
callq 0x20580
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rdi
callq 0x20750
movq %rax, 0x10(%rsp)
movq 0x10(%rsp), %rax
movq $0x0, 0x40(%rax)
movq 0x10(%rsp), %rax
movl 0x68(%rax), %ecx
orl $0x8000, %ecx           # imm = 0x8000
movl %ecx, 0x68(%rax)
movq 0x8(%rsp), %rax
addq $0x38, %rsp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_node.c
// Function: gt_feature_node_new_pseudo_template
GtGenomeNode* gt_feature_node_new_pseudo_template(GtFeatureNode *fn)
{
  GtFeatureNode *pf;
  GtGenomeNode *pn;
  GtRange range;
  gt_assert(fn);
  range = feature_node_get_range((GtGenomeNode*) fn),
  pn = gt_feature_node_new_pseudo(feature_node_get_seqid((GtGenomeNode*) fn),
                                  range.start, range.end,
                                  gt_feature_node_get_strand(fn));
  pf = gt_feature_node_cast(pn);
  gt_feature_node_set_source(pf, fn->source);
  return pn;
}

// Assembly:
subq $0x58, %rsp
movq %rdi, 0x50(%rsp)
cmpq $0x0, 0x50(%rsp)
jne 0x20969
movq 0x1936a0(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13d724(%rip), %rsi    # 0x15e066
leaq 0x151c38(%rip), %rdx    # 0x172581
leaq 0x14130b(%rip), %rcx    # 0x161c5b
leaq 0x14124d(%rip), %r8     # 0x161ba4
movl $0x11b, %r9d            # imm = 0x11B
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x2096b
movq 0x50(%rsp), %rdi
callq 0x20390
movq %rax, 0x20(%rsp)
movq %rdx, 0x28(%rsp)
movq 0x20(%rsp), %rax
movq %rax, 0x30(%rsp)
movq 0x28(%rsp), %rax
movq %rax, 0x38(%rsp)
movq 0x50(%rsp), %rdi
callq 0x20360
movq %rax, 0x8(%rsp)
movq 0x30(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x38(%rsp), %rax
movq %rax, 0x18(%rsp)
movq 0x50(%rsp), %rdi
callq 0x20a10
movq 0x8(%rsp), %rdi
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
movl %eax, %ecx
callq 0x20820
movq %rax, 0x40(%rsp)
movq 0x40(%rsp), %rdi
callq 0x20750
movq %rax, 0x48(%rsp)
movq 0x48(%rsp), %rdi
movq 0x50(%rsp), %rax
movq 0x38(%rax), %rsi
callq 0x1ff10
movq 0x40(%rsp), %rax
addq $0x58, %rsp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_node.c
// Function: gt_feature_node_add_child
void gt_feature_node_add_child(GtFeatureNode *parent, GtFeatureNode *child)
{
  gt_assert(parent && child);
  /* <parent> and <child> have the same seqid */
  gt_assert(!gt_str_cmp(gt_genome_node_get_seqid((GtGenomeNode*) parent),
                        gt_genome_node_get_seqid((GtGenomeNode*) child)));
  /* pseudo-features have to be top-level */
  gt_assert(!gt_feature_node_is_pseudo((GtFeatureNode*) child));
  /* create children list on demand */
  if (!parent->children)
    parent->children = gt_dlist_new((GtCompare) gt_genome_node_cmp);
  gt_dlist_add(parent->children, child); /* XXX: check for cycles */
  /* update tree status of <parent> */
  set_tree_status(&parent->bit_field, TREE_STATUS_UNDETERMINED);
  /* update parent info of <child> */
  add_parent(&child->bit_field);
  if (parent->observer && parent->observer->child_added)
    parent->observer->child_added(parent, child, parent->observer->data);
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
movq %rsi, 0x8(%rsp)
cmpq $0x0, 0x10(%rsp)
je 0x20dce
cmpq $0x0, 0x8(%rsp)
jne 0x20e06
movq 0x193203(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13d287(%rip), %rsi    # 0x15e066
leaq 0x141719(%rip), %rdx    # 0x1624ff
leaq 0x141722(%rip), %rcx    # 0x16250f
leaq 0x140db0(%rip), %r8     # 0x161ba4
movl $0x448, %r9d            # imm = 0x448
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x20e08
jmp 0x20e0a
movq 0x10(%rsp), %rdi
callq 0x258a0
movq %rax, (%rsp)
movq 0x8(%rsp), %rdi
callq 0x258a0
movq (%rsp), %rdi
movq %rax, %rsi
callq 0x19bd0
cmpl $0x0, %eax
je 0x20e6b
movq 0x19319e(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13d222(%rip), %rsi    # 0x15e066
leaq 0x1416de(%rip), %rdx    # 0x162529
leaq 0x1416bd(%rip), %rcx    # 0x16250f
leaq 0x140d4b(%rip), %r8     # 0x161ba4
movl $0x44b, %r9d            # imm = 0x44B
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x20e6d
jmp 0x20e6f
movq 0x8(%rsp), %rdi
callq 0x21880
testb $0x1, %al
jne 0x20e7f
jmp 0x20eb7
movq 0x193152(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13d1d6(%rip), %rsi    # 0x15e066
leaq 0x143d96(%rip), %rdx    # 0x164c2d
leaq 0x141671(%rip), %rcx    # 0x16250f
leaq 0x140cff(%rip), %r8     # 0x161ba4
movl $0x44d, %r9d            # imm = 0x44D
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x20eb9
movq 0x10(%rsp), %rax
cmpq $0x0, 0x70(%rax)
jne 0x20edd
leaq 0x43e4(%rip), %rdi      # 0x252b0
callq 0x7d760
movq %rax, %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x70(%rax)
movq 0x10(%rsp), %rax
movq 0x70(%rax), %rdi
movq 0x8(%rsp), %rsi
callq 0x7dab0
movq 0x10(%rsp), %rdi
addq $0x68, %rdi
xorl %esi, %esi
callq 0x207f0
movq 0x8(%rsp), %rdi
addq $0x68, %rdi
callq 0x23a60
movq 0x10(%rsp), %rax
cmpq $0x0, 0x80(%rax)
je 0x20f5c
movq 0x10(%rsp), %rax
movq 0x80(%rax), %rax
cmpq $0x0, 0x50(%rax)
je 0x20f5c
movq 0x10(%rsp), %rax
movq 0x80(%rax), %rax
movq 0x50(%rax), %rax
movq 0x10(%rsp), %rdi
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rcx
movq 0x80(%rcx), %rcx
movq 0x60(%rcx), %rdx
callq *%rax
addq $0x18, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_node.c
// Function: gt_feature_node_has_children
bool gt_feature_node_has_children(const GtFeatureNode *fn)
{
  gt_assert(fn);
  if (!fn->children || gt_dlist_size(fn->children) == 0)
    return false;
  return true;
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x8(%rsp)
cmpq $0x0, 0x8(%rsp)
jne 0x21189
movq 0x192e80(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13cf04(%rip), %rsi    # 0x15e066
leaq 0x151418(%rip), %rdx    # 0x172581
leaq 0x1414e7(%rip), %rcx    # 0x162657
leaq 0x140a2d(%rip), %r8     # 0x161ba4
movl $0x4ba, %r9d            # imm = 0x4BA
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x2118b
movq 0x8(%rsp), %rax
cmpq $0x0, 0x70(%rax)
je 0x211ab
movq 0x8(%rsp), %rax
movq 0x70(%rax), %rdi
callq 0x7da80
cmpq $0x0, %rax
jne 0x211b2
movb $0x0, 0x17(%rsp)
jmp 0x211b7
movb $0x1, 0x17(%rsp)
movb 0x17(%rsp), %al
andb $0x1, %al
addq $0x18, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_node.c
// Function: gt_feature_node_has_source
bool gt_feature_node_has_source(const GtFeatureNode *fn)
{
  gt_assert(fn);
  if (!fn->source || !strcmp(gt_str_get(fn->source), "."))
    return false;
  return true;
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x8(%rsp)
cmpq $0x0, 0x8(%rsp)
jne 0x21269
movq 0x192da0(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13ce24(%rip), %rsi    # 0x15e066
leaq 0x151338(%rip), %rdx    # 0x172581
leaq 0x140ab0(%rip), %rcx    # 0x161d00
leaq 0x14094d(%rip), %r8     # 0x161ba4
movl $0x182, %r9d            # imm = 0x182
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x2126b
movq 0x8(%rsp), %rax
cmpq $0x0, 0x38(%rax)
je 0x21299
movq 0x8(%rsp), %rax
movq 0x38(%rax), %rdi
callq 0x19940
movq %rax, %rdi
leaq 0x146357(%rip), %rsi    # 0x1675e6
callq 0xb850
cmpl $0x0, %eax
jne 0x212a0
movb $0x0, 0x17(%rsp)
jmp 0x212a5
movb $0x1, 0x17(%rsp)
movb 0x17(%rsp), %al
andb $0x1, %al
addq $0x18, %rsp
retq
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_node.c
// Function: gt_feature_node_score_is_defined
bool gt_feature_node_score_is_defined(const GtFeatureNode *fn)
{
  gt_assert(fn);
  if ((fn->bit_field >> SCORE_IS_DEFINED_OFFSET) & SCORE_IS_DEFINED_MASK)
    return true;
  return false;
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x8(%rsp)
cmpq $0x0, 0x8(%rsp)
jne 0x212f9
movq 0x192d10(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13cd94(%rip), %rsi    # 0x15e066
leaq 0x1512a8(%rip), %rdx    # 0x172581
leaq 0x140a91(%rip), %rcx    # 0x161d71
leaq 0x1408bd(%rip), %r8     # 0x161ba4
movl $0x1a0, %r9d            # imm = 0x1A0
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x212fb
movq 0x8(%rsp), %rax
movl 0x68(%rax), %eax
shrl $0xd, %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x21315
movb $0x1, 0x17(%rsp)
jmp 0x2131a
movb $0x0, 0x17(%rsp)
movb 0x17(%rsp), %al
andb $0x1, %al
addq $0x18, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_node.c
// Function: gt_feature_node_set_score
void gt_feature_node_set_score(GtFeatureNode *fn, float score)
{
  gt_assert(fn);
  fn->bit_field |= 1 << SCORE_IS_DEFINED_OFFSET;
  fn->score = score;
  if (fn->observer && fn->observer->score_changed)
    fn->observer->score_changed(fn, score, fn->observer->data);
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
movss %xmm0, 0xc(%rsp)
cmpq $0x0, 0x10(%rsp)
jne 0x2137f
movq 0x192c8a(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13cd0e(%rip), %rsi    # 0x15e066
leaq 0x151222(%rip), %rdx    # 0x172581
leaq 0x140d93(%rip), %rcx    # 0x1620f9
leaq 0x140837(%rip), %r8     # 0x161ba4
movl $0x281, %r9d            # imm = 0x281
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x21381
movq 0x10(%rsp), %rax
movl 0x68(%rax), %ecx
orl $0x2000, %ecx           # imm = 0x2000
movl %ecx, 0x68(%rax)
movss 0xc(%rsp), %xmm0
movq 0x10(%rsp), %rax
movss %xmm0, 0x58(%rax)
movq 0x10(%rsp), %rax
cmpq $0x0, 0x80(%rax)
je 0x213f3
movq 0x10(%rsp), %rax
movq 0x80(%rax), %rax
cmpq $0x0, (%rax)
je 0x213f3
movq 0x10(%rsp), %rax
movq 0x80(%rax), %rax
movq (%rax), %rax
movq 0x10(%rsp), %rdi
movss 0xc(%rsp), %xmm0
cvtss2sd %xmm0, %xmm0
movq 0x10(%rsp), %rcx
movq 0x80(%rcx), %rcx
movq 0x60(%rcx), %rsi
callq *%rax
addq $0x18, %rsp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_node.c
// Function: gt_feature_node_set_attribute
void gt_feature_node_set_attribute(GtFeatureNode *fn,
                                   const char *attr_name,
                                   const char *attr_value)
{
  gt_assert(fn && attr_name && attr_value);
  gt_assert(strlen(attr_name)); /* attribute name cannot be empty */
  gt_assert(strlen(attr_value)); /* attribute value cannot be empty */
  if (!fn->attributes)
    fn->attributes = gt_tag_value_map_new(attr_name, attr_value);
  else
    gt_tag_value_map_set(&fn->attributes, attr_name, attr_value);
  if (fn->observer && fn->observer->attribute_changed) {
    fn->observer->attribute_changed(fn, false, attr_name, attr_value,
                                    fn->observer->data);
  }
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
movq %rsi, 0x8(%rsp)
movq %rdx, (%rsp)
cmpq $0x0, 0x10(%rsp)
je 0x21429
cmpq $0x0, 0x8(%rsp)
je 0x21429
cmpq $0x0, (%rsp)
jne 0x21461
movq 0x192ba8(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13cc2c(%rip), %rsi    # 0x15e066
leaq 0x140d0a(%rip), %rdx    # 0x16214b
leaq 0x140d64(%rip), %rcx    # 0x1621ac
leaq 0x140755(%rip), %r8     # 0x161ba4
movl $0x2af, %r9d            # imm = 0x2AF
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x21463
jmp 0x21465
movq 0x8(%rsp), %rdi
callq 0xb240
cmpq $0x0, %rax
jne 0x214ad
movq 0x192b5c(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13cbe0(%rip), %rsi    # 0x15e066
leaq 0x140cfa(%rip), %rdx    # 0x162187
leaq 0x140d18(%rip), %rcx    # 0x1621ac
leaq 0x140709(%rip), %r8     # 0x161ba4
movl $0x2b0, %r9d            # imm = 0x2B0
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x214af
jmp 0x214b1
movq (%rsp), %rdi
callq 0xb240
cmpq $0x0, %rax
jne 0x214f8
movq 0x192b11(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13cb95(%rip), %rsi    # 0x15e066
leaq 0x140cc1(%rip), %rdx    # 0x162199
leaq 0x140ccd(%rip), %rcx    # 0x1621ac
leaq 0x1406be(%rip), %r8     # 0x161ba4
movl $0x2b1, %r9d            # imm = 0x2B1
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x214fa
movq 0x10(%rsp), %rax
cmpq $0x0, 0x60(%rax)
jne 0x21522
movq 0x8(%rsp), %rdi
movq (%rsp), %rsi
callq 0x36340
movq %rax, %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x60(%rax)
jmp 0x21539
movq 0x10(%rsp), %rdi
addq $0x60, %rdi
movq 0x8(%rsp), %rsi
movq (%rsp), %rdx
callq 0x36ad0
movq 0x10(%rsp), %rax
cmpq $0x0, 0x80(%rax)
je 0x2158d
movq 0x10(%rsp), %rax
movq 0x80(%rax), %rax
cmpq $0x0, 0x28(%rax)
je 0x2158d
movq 0x10(%rsp), %rax
movq 0x80(%rax), %rax
movq 0x28(%rax), %rax
movq 0x10(%rsp), %rdi
movq 0x8(%rsp), %rdx
movq (%rsp), %rcx
movq 0x10(%rsp), %rsi
movq 0x80(%rsi), %rsi
movq 0x60(%rsi), %r8
xorl %esi, %esi
callq *%rax
addq $0x18, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_node.c
// Function: gt_feature_node_set_type
void gt_feature_node_set_type(GtFeatureNode *fn, const char *type)
{
  gt_assert(fn && type);
  fn->type = gt_symbol(type);
  if (fn->observer && fn->observer->type_changed)
    fn->observer->type_changed(fn, fn->type, fn->observer->data);
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
movq %rsi, 0x8(%rsp)
cmpq $0x0, 0x10(%rsp)
je 0x2164e
cmpq $0x0, 0x8(%rsp)
jne 0x21686
movq 0x192983(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13ca07(%rip), %rsi    # 0x15e066
leaq 0x1406ce(%rip), %rdx    # 0x161d34
leaq 0x1406d2(%rip), %rcx    # 0x161d3f
leaq 0x140530(%rip), %r8     # 0x161ba4
movl $0x190, %r9d            # imm = 0x190
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x21688
movq 0x8(%rsp), %rdi
callq 0x1baa0
movq %rax, %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x40(%rax)
movq 0x10(%rsp), %rax
cmpq $0x0, 0x80(%rax)
je 0x216f0
movq 0x10(%rsp), %rax
movq 0x80(%rax), %rax
cmpq $0x0, 0x18(%rax)
je 0x216f0
movq 0x10(%rsp), %rax
movq 0x80(%rax), %rax
movq 0x18(%rax), %rax
movq 0x10(%rsp), %rdi
movq 0x10(%rsp), %rcx
movq 0x40(%rcx), %rsi
movq 0x10(%rsp), %rcx
movq 0x80(%rcx), %rcx
movq 0x60(%rcx), %rdx
callq *%rax
addq $0x18, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_node.c
// Function: gt_feature_node_has_type
bool gt_feature_node_has_type(GtFeatureNode *fn, const char *type)
{
  gt_assert(fn && type);
  if (!fn->type) /* <fn> is pseudo-node */
    return false;
  return gt_strcmp(fn->type, type) ? false : true;
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x8(%rsp)
movq %rsi, (%rsp)
cmpq $0x0, 0x8(%rsp)
je 0x2171c
cmpq $0x0, (%rsp)
jne 0x21754
movq 0x1928b5(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13c939(%rip), %rsi    # 0x15e066
leaq 0x140600(%rip), %rdx    # 0x161d34
leaq 0x14061d(%rip), %rcx    # 0x161d58
leaq 0x140462(%rip), %r8     # 0x161ba4
movl $0x198, %r9d            # imm = 0x198
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x21756
movq 0x8(%rsp), %rax
cmpq $0x0, 0x40(%rax)
jne 0x21769
movb $0x0, 0x17(%rsp)
jmp 0x21796
movq 0x8(%rsp), %rax
movq 0x40(%rax), %rdi
movq (%rsp), %rsi
callq 0xa1e70
movl %eax, %edx
movl $0x1, %eax
xorl %ecx, %ecx
cmpl $0x0, %edx
cmovnel %ecx, %eax
cmpl $0x0, %eax
setne %al
andb $0x1, %al
movb %al, 0x17(%rsp)
movb 0x17(%rsp), %al
andb $0x1, %al
addq $0x18, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_node.c
// Function: gt_feature_node_is_multi
bool gt_feature_node_is_multi(const GtFeatureNode *fn)
{
  gt_assert(fn);
  if ((fn->bit_field >> MULTI_FEATURE_OFFSET) & MULTI_FEATURE_MASK) {
    gt_assert(!((fn->bit_field >> PSEUDO_FEATURE_OFFSET) &
                   PSEUDO_FEATURE_MASK));
    return true;
  }
  return false;
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x8(%rsp)
cmpq $0x0, 0x8(%rsp)
jne 0x217f9
movq 0x192810(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13c894(%rip), %rsi    # 0x15e066
leaq 0x150da8(%rip), %rdx    # 0x172581
leaq 0x1405b2(%rip), %rcx    # 0x161d92
leaq 0x1403bd(%rip), %r8     # 0x161ba4
movl $0x1a8, %r9d            # imm = 0x1A8
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x217fb
movq 0x8(%rsp), %rax
movl 0x68(%rax), %eax
shrl $0xe, %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x21864
jmp 0x21810
movq 0x8(%rsp), %rax
movl 0x68(%rax), %eax
shrl $0xf, %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x2185b
movq 0x1927ae(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13c832(%rip), %rsi    # 0x15e066
leaq 0x140570(%rip), %rdx    # 0x161dab
leaq 0x140550(%rip), %rcx    # 0x161d92
leaq 0x14035b(%rip), %r8     # 0x161ba4
movl $0x1ab, %r9d            # imm = 0x1AB
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x2185d
movb $0x1, 0x17(%rsp)
jmp 0x21869
movb $0x0, 0x17(%rsp)
movb 0x17(%rsp), %al
andb $0x1, %al
addq $0x18, %rsp
retq
nopw %cs:(%rax,%rax)