LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_node.c
// Function: remove_leaf
static int remove_leaf(GtFeatureNode *node, void *data, GT_UNUSED GtError *err)
{
  GtFeatureNode *child;
  GtFeatureNodeLeafDeleteInfo* info = (GtFeatureNodeLeafDeleteInfo*) data;
  GtDlistelem *dlistelem;
  gt_error_check(err);
  if (node != info->leaf && node->children) {
    for (dlistelem = gt_dlist_first(node->children); dlistelem != NULL;
         dlistelem = gt_dlistelem_next(dlistelem)) {
      child = (GtFeatureNode*) gt_dlistelem_get_data(dlistelem);
      if (child == info->leaf) {
        gt_dlist_remove(node->children, dlistelem);
        gt_genome_node_delete((GtGenomeNode*) child);
        info->deleted = true;
        break;
      }
    }
  }
  return 0;
}

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x30(%rsp)
movq %rsi, 0x28(%rsp)
movq %rdx, 0x20(%rsp)
movq 0x28(%rsp), %rax
movq %rax, 0x10(%rsp)
cmpq $0x0, 0x20(%rsp)
je 0x23c8d
movq 0x20(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0x23c55
jmp 0x23c8d
movq 0x19037c(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13a400(%rip), %rsi    # 0x15e066
leaq 0x13a9db(%rip), %rdx    # 0x15e648
leaq 0x13e942(%rip), %rcx    # 0x1625b6
leaq 0x13df29(%rip), %r8     # 0x161ba4
movl $0x465, %r9d            # imm = 0x465
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x23c8f
movq 0x30(%rsp), %rax
movq 0x10(%rsp), %rcx
cmpq (%rcx), %rax
je 0x23d24
movq 0x30(%rsp), %rax
cmpq $0x0, 0x70(%rax)
je 0x23d24
movq 0x30(%rsp), %rax
movq 0x70(%rax), %rdi
callq 0x7d850
movq %rax, 0x8(%rsp)
cmpq $0x0, 0x8(%rsp)
je 0x23d22
movq 0x8(%rsp), %rdi
callq 0x7d9e0
movq %rax, 0x18(%rsp)
movq 0x18(%rsp), %rax
movq 0x10(%rsp), %rcx
cmpq (%rcx), %rax
jne 0x23d0f
movq 0x30(%rsp), %rax
movq 0x70(%rax), %rdi
movq 0x8(%rsp), %rsi
callq 0x7df70
movq 0x18(%rsp), %rdi
callq 0x26eb0
movq 0x10(%rsp), %rax
movb $0x1, 0x10(%rax)
jmp 0x23d22
jmp 0x23d11
movq 0x8(%rsp), %rdi
callq 0x7da30
movq %rax, 0x8(%rsp)
jmp 0x23cc1
jmp 0x23d24
xorl %eax, %eax
addq $0x38, %rsp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_node.c
// Function: gt_feature_node_mark
void gt_feature_node_mark(GtFeatureNode *fn)
{
  gt_assert(fn);
  fn->bit_field |= 1;
  if (fn->observer && fn->observer->mark_changed)
    fn->observer->mark_changed(fn, true, fn->observer->data);
}

// Assembly:
pushq %rax
movq %rdi, (%rsp)
cmpq $0x0, (%rsp)
jne 0x23d74
movq 0x190295(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13a319(%rip), %rsi    # 0x15e066
leaq 0x14e82d(%rip), %rdx    # 0x172581
leaq 0x13e896(%rip), %rcx    # 0x1625f1
leaq 0x13de42(%rip), %r8     # 0x161ba4
movl $0x48f, %r9d            # imm = 0x48F
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x23d76
movq (%rsp), %rax
movl 0x68(%rax), %ecx
orl $0x1, %ecx
movl %ecx, 0x68(%rax)
movq (%rsp), %rax
cmpq $0x0, 0x80(%rax)
je 0x23dcc
movq (%rsp), %rax
movq 0x80(%rax), %rax
cmpq $0x0, 0x48(%rax)
je 0x23dcc
movq (%rsp), %rax
movq 0x80(%rax), %rax
movq 0x48(%rax), %rax
movq (%rsp), %rdi
movq (%rsp), %rcx
movq 0x80(%rcx), %rcx
movq 0x60(%rcx), %rdx
movl $0x1, %esi
callq *%rax
popq %rax
retq
nop
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_node.c
// Function: gt_feature_node_unmark
void gt_feature_node_unmark(GtFeatureNode *fn)
{
  gt_assert(fn);
  if (gt_feature_node_is_marked(fn))
    fn->bit_field &= ~(1);
  if (fn->observer && fn->observer->mark_changed)
    fn->observer->mark_changed(fn, false, fn->observer->data);
}

// Assembly:
pushq %rax
movq %rdi, (%rsp)
cmpq $0x0, (%rsp)
jne 0x23e14
movq 0x1901f5(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13a279(%rip), %rsi    # 0x15e066
leaq 0x14e78d(%rip), %rdx    # 0x172581
leaq 0x13e80b(%rip), %rcx    # 0x162606
leaq 0x13dda2(%rip), %r8     # 0x161ba4
movl $0x497, %r9d            # imm = 0x497
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x23e16
movq (%rsp), %rdi
callq 0x23e80
testb $0x1, %al
jne 0x23e25
jmp 0x23e32
movq (%rsp), %rax
movl 0x68(%rax), %ecx
andl $-0x2, %ecx
movl %ecx, 0x68(%rax)
movq (%rsp), %rax
cmpq $0x0, 0x80(%rax)
je 0x23e78
movq (%rsp), %rax
movq 0x80(%rax), %rax
cmpq $0x0, 0x48(%rax)
je 0x23e78
movq (%rsp), %rax
movq 0x80(%rax), %rax
movq 0x48(%rax), %rax
movq (%rsp), %rdi
movq (%rsp), %rcx
movq 0x80(%rcx), %rcx
movq 0x60(%rcx), %rdx
xorl %esi, %esi
callq *%rax
popq %rax
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_node.c
// Function: gt_feature_node_contains_marked
bool gt_feature_node_contains_marked(GtFeatureNode *fn)
{
  bool contains_marked = false;
  GT_UNUSED int rval;
  gt_assert(fn);
  rval = gt_feature_node_traverse_children(fn, &contains_marked,
                                           check_marked_status, true, NULL);
  gt_assert(!rval); /* check_marked_status() is sane */
  return contains_marked;
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
movb $0x0, 0xf(%rsp)
cmpq $0x0, 0x10(%rsp)
jne 0x23f3e
movq 0x1900cb(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13a14f(%rip), %rsi    # 0x15e066
leaq 0x14e663(%rip), %rdx    # 0x172581
leaq 0x13e712(%rip), %rcx    # 0x162637
leaq 0x13dc78(%rip), %r8     # 0x161ba4
movl $0x4b1, %r9d            # imm = 0x4B1
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x23f40
movq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rsi
leaq 0x5f(%rip), %rdx        # 0x23fb0
movl $0x1, %ecx
xorl %eax, %eax
movl %eax, %r8d
callq 0x22090
movl %eax, 0x8(%rsp)
cmpl $0x0, 0x8(%rsp)
je 0x23fa3
movq 0x190066(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13a0ea(%rip), %rsi    # 0x15e066
leaq 0x13aaf6(%rip), %rdx    # 0x15ea79
leaq 0x13e6ad(%rip), %rcx    # 0x162637
leaq 0x13dc13(%rip), %r8     # 0x161ba4
movl $0x4b4, %r9d            # imm = 0x4B4
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x23fa5
movb 0xf(%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: check_marked_status
static int check_marked_status(GtFeatureNode *fn, void *data,
                               GT_UNUSED GtError *err)
{
  bool *marked = data;
  if (gt_feature_node_is_marked(fn))
    *marked = true;
  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 0x20(%rsp), %rdi
callq 0x23e80
testb $0x1, %al
jne 0x23fdd
jmp 0x23fe5
movq 0x8(%rsp), %rax
movb $0x1, (%rax)
xorl %eax, %eax
addq $0x28, %rsp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_node.c
// Function: gt_feature_node_is_tree
bool gt_feature_node_is_tree(GtFeatureNode *fn)
{
  bool status = false;
  gt_assert(fn);
  switch (get_tree_status(fn->bit_field)) {
    case IS_TREE:
      status = true;
      break;
    case IS_NOT_A_TREE:
      status = false;
      break;
    case TREE_STATUS_UNDETERMINED:
      /* not implemented, the tree status must have been determined by a
         previous gt_genome_node_traverse_children() invocation */
    default: gt_assert(0);
  }
  return status;
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
movb $0x0, 0xf(%rsp)
cmpq $0x0, 0x10(%rsp)
jne 0x242ae
movq 0x18fd5b(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x139ddf(%rip), %rsi    # 0x15e066
leaq 0x14e2f3(%rip), %rdx    # 0x172581
leaq 0x13e44d(%rip), %rcx    # 0x1626e2
leaq 0x13d908(%rip), %r8     # 0x161ba4
movl $0x4f7, %r9d            # imm = 0x4F7
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x242b0
movq 0x10(%rsp), %rax
movl 0x68(%rax), %edi
callq 0x23480
movl %eax, %ecx
movl %ecx, 0x8(%rsp)
testl %eax, %eax
je 0x242ed
jmp 0x242c9
movl 0x8(%rsp), %eax
subl $0x1, %eax
je 0x242df
jmp 0x242d4
movl 0x8(%rsp), %eax
subl $0x2, %eax
je 0x242e6
jmp 0x242ef
movb $0x1, 0xf(%rsp)
jmp 0x24329
movb $0x0, 0xf(%rsp)
jmp 0x24329
jmp 0x242ef
jmp 0x242f1
movq 0x18fce0(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x139d64(%rip), %rsi    # 0x15e066
leaq 0x14bbb2(%rip), %rdx    # 0x16febb
leaq 0x13e3d2(%rip), %rcx    # 0x1626e2
leaq 0x13d88d(%rip), %r8     # 0x161ba4
movl $0x502, %r9d            # imm = 0x502
movb $0x0, %al
callq 0xb890
callq 0xb2e0
movb 0xf(%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: save_exons_and_cds
static int save_exons_and_cds(GtFeatureNode *fn, void *data,
                              GT_UNUSED GtError *err)
{
  SaveExonAndCDSInfo *info = (SaveExonAndCDSInfo*) data;
  gt_error_check(err);
  gt_assert(fn && info);
  if (gt_feature_node_has_type(fn, gt_ft_exon))
    gt_array_add(info->exon_features, fn);
  else if (gt_feature_node_has_type(fn, gt_ft_CDS))
    gt_array_add(info->cds_features, fn);
  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)
cmpq $0x0, 0x10(%rsp)
je 0x2463d
movq 0x10(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0x24605
jmp 0x2463d
movq 0x18f9cc(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x139a50(%rip), %rsi    # 0x15e066
leaq 0x13a02b(%rip), %rdx    # 0x15e648
leaq 0x13e23a(%rip), %rcx    # 0x16285e
leaq 0x13d579(%rip), %r8     # 0x161ba4
movl $0x227, %r9d            # imm = 0x227
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x2463f
jmp 0x24641
cmpq $0x0, 0x20(%rsp)
je 0x24651
cmpq $0x0, 0x8(%rsp)
jne 0x24689
movq 0x18f980(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x139a04(%rip), %rsi    # 0x15e066
leaq 0x13e1ea(%rip), %rdx    # 0x162853
leaq 0x13e1ee(%rip), %rcx    # 0x16285e
leaq 0x13d52d(%rip), %r8     # 0x161ba4
movl $0x228, %r9d            # imm = 0x228
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x2468b
movq 0x20(%rsp), %rdi
leaq 0x15671f(%rip), %rsi    # 0x17adb6
callq 0x21700
testb $0x1, %al
jne 0x246a2
jmp 0x246bb
movq 0x8(%rsp), %rax
movq (%rax), %rdi
leaq 0x20(%rsp), %rsi
movl $0x8, %edx
callq 0x76220
jmp 0x246ec
movq 0x20(%rsp), %rdi
leaq 0x13db74(%rip), %rsi    # 0x16223b
callq 0x21700
testb $0x1, %al
jne 0x246d2
jmp 0x246ea
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
leaq 0x20(%rsp), %rsi
movl $0x8, %edx
callq 0x76220
jmp 0x246ec
xorl %eax, %eax
addq $0x28, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_node.c
// Function: set_transcript_types
static void set_transcript_types(GtArray *features, GtStrand parent_strand)
{
  GtFeatureNode *fn;
  GtUword i;
  gt_assert(features);
  if (gt_array_size(features)) {
    if (gt_array_size(features) == 1) {
      fn = *(GtFeatureNode**) gt_array_get_first(features);
      set_transcriptfeaturetype(fn, TRANSCRIPT_FEATURE_TYPE_SINGLE);
    }
    else {
      fn = *(GtFeatureNode**) gt_array_get_first(features);
      set_transcriptfeaturetype(fn, parent_strand != GT_STRAND_REVERSE
                                    ? TRANSCRIPT_FEATURE_TYPE_INITIAL
                                    : TRANSCRIPT_FEATURE_TYPE_TERMINAL);
      for (i = 1; i < gt_array_size(features) - 1; i++) {
        fn = *(GtFeatureNode**) gt_array_get(features, i);
        set_transcriptfeaturetype(fn, TRANSCRIPT_FEATURE_TYPE_INTERNAL);
      }
      fn = *(GtFeatureNode**) gt_array_get_last(features);
      set_transcriptfeaturetype(fn, parent_strand != GT_STRAND_REVERSE
                                    ? TRANSCRIPT_FEATURE_TYPE_TERMINAL
                                    : TRANSCRIPT_FEATURE_TYPE_INITIAL);
    }
  }
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movl %esi, 0x1c(%rsp)
cmpq $0x0, 0x20(%rsp)
jne 0x2474d
movq 0x18f8bc(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x139940(%rip), %rsi    # 0x15e066
leaq 0x1565d7(%rip), %rdx    # 0x17ad04
leaq 0x13e13d(%rip), %rcx    # 0x162871
leaq 0x13d469(%rip), %r8     # 0x161ba4
movl $0x234, %r9d            # imm = 0x234
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x2474f
movq 0x20(%rsp), %rdi
callq 0x76490
cmpq $0x0, %rax
je 0x2485a
movq 0x20(%rsp), %rdi
callq 0x76490
cmpq $0x1, %rax
jne 0x24796
movq 0x20(%rsp), %rdi
callq 0x75d00
movq (%rax), %rax
movq %rax, 0x10(%rsp)
movq 0x10(%rsp), %rdi
xorl %esi, %esi
callq 0x20770
jmp 0x24858
movq 0x20(%rsp), %rdi
callq 0x75d00
movq (%rax), %rax
movq %rax, 0x10(%rsp)
movq 0x10(%rsp), %rdi
movl 0x1c(%rsp), %ecx
movl $0x3, %esi
movl $0x1, %eax
cmpl $0x1, %ecx
cmovnel %eax, %esi
callq 0x20770
movq $0x1, 0x8(%rsp)
movq 0x8(%rsp), %rax
movq %rax, (%rsp)
movq 0x20(%rsp), %rdi
callq 0x76490
movq %rax, %rcx
movq (%rsp), %rax
subq $0x1, %rcx
cmpq %rcx, %rax
jae 0x24828
movq 0x20(%rsp), %rdi
movq 0x8(%rsp), %rsi
callq 0x75c80
movq (%rax), %rax
movq %rax, 0x10(%rsp)
movq 0x10(%rsp), %rdi
movl $0x2, %esi
callq 0x20770
movq 0x8(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x8(%rsp)
jmp 0x247cf
movq 0x20(%rsp), %rdi
callq 0x75d20
movq (%rax), %rax
movq %rax, 0x10(%rsp)
movq 0x10(%rsp), %rdi
movl 0x1c(%rsp), %ecx
movl $0x1, %esi
movl $0x3, %eax
cmpl $0x1, %ecx
cmovnel %eax, %esi
callq 0x20770
jmp 0x2485a
addq $0x28, %rsp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_node_iterator.c
// Function: gt_feature_node_iterator_new
GtFeatureNodeIterator* gt_feature_node_iterator_new(const GtFeatureNode *fn)
{
  GtFeatureNodeIterator *fni;
  GtFeatureNode *child_feature;
  GtDlistelem *dlistelem;
  gt_assert(fn);
  fni = feature_node_iterator_new_base(fn);
  if (gt_feature_node_is_pseudo((GtFeatureNode*) fn)) {
    /* add the children backwards to traverse in order */
    for (dlistelem = gt_dlist_last(fn->children); dlistelem != NULL;
         dlistelem = gt_dlistelem_previous(dlistelem)) {
      child_feature = (GtFeatureNode*) gt_dlistelem_get_data(dlistelem);
      gt_array_add(fni->feature_stack, child_feature);
    }
  }
  else
    gt_array_add(fni->feature_stack, fni->fn);
  gt_assert(gt_array_size(fni->feature_stack));
  fni->direct = false;
  return fni;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
cmpq $0x0, 0x20(%rsp)
jne 0x248e9
movq 0x18f720(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x1397a4(%rip), %rsi    # 0x15e066
leaq 0x14dcb8(%rip), %rdx    # 0x172581
leaq 0x13e00c(%rip), %rcx    # 0x1628dc
leaq 0x13e022(%rip), %r8     # 0x1628f9
movl $0x2e, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x248eb
movq 0x20(%rsp), %rdi
callq 0x249e0
movq %rax, 0x18(%rsp)
movq 0x20(%rsp), %rdi
callq 0x21880
testb $0x1, %al
jne 0x2490a
jmp 0x2495f
movq 0x20(%rsp), %rax
movq 0x70(%rax), %rdi
callq 0x7d8a0
movq %rax, 0x8(%rsp)
cmpq $0x0, 0x8(%rsp)
je 0x2495d
movq 0x8(%rsp), %rdi
callq 0x7d9e0
movq %rax, 0x10(%rsp)
movq 0x18(%rsp), %rax
movq 0x8(%rax), %rdi
leaq 0x10(%rsp), %rsi
movl $0x8, %edx
callq 0x76220
movq 0x8(%rsp), %rdi
callq 0x7f260
movq %rax, 0x8(%rsp)
jmp 0x2491d
jmp 0x24977
movq 0x18(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x18(%rsp), %rsi
movl $0x8, %edx
callq 0x76220
jmp 0x24979
movq 0x18(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x76490
cmpq $0x0, %rax
jne 0x249c5
movq 0x18f644(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x1396c8(%rip), %rsi    # 0x15e066
leaq 0x13df79(%rip), %rdx    # 0x16291e
leaq 0x13df30(%rip), %rcx    # 0x1628dc
leaq 0x13df46(%rip), %r8     # 0x1628f9
movl $0x3a, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x249c7
movq 0x18(%rsp), %rax
movb $0x0, 0x10(%rax)
movq 0x18(%rsp), %rax
addq $0x28, %rsp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_node_iterator.c
// Function: feature_node_iterator_new_base
static GtFeatureNodeIterator* feature_node_iterator_new_base(const GtFeatureNode
                                                             *fn)
{
  GtFeatureNodeIterator *fni;
  gt_assert(fn);
  fni = gt_malloc(sizeof *fni);
  fni->fn = (GtFeatureNode*) gt_genome_node_ref((GtGenomeNode*) fn);
  fni->feature_stack = gt_array_new(sizeof (GtFeatureNode*));
  return fni;
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
cmpq $0x0, 0x10(%rsp)
jne 0x24a29
movq 0x18f5e0(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x139664(%rip), %rsi    # 0x15e066
leaq 0x14db78(%rip), %rdx    # 0x172581
leaq 0x13df76(%rip), %rcx    # 0x162986
leaq 0x13dee2(%rip), %r8     # 0x1628f9
movl $0x22, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x24a2b
movl $0x18, %edi
leaq 0x13dec2(%rip), %rsi    # 0x1628f9
movl $0x23, %edx
callq 0xd2e0
movq %rax, 0x8(%rsp)
movq 0x10(%rsp), %rdi
callq 0x25140
movq %rax, %rcx
movq 0x8(%rsp), %rax
movq %rcx, (%rax)
movl $0x8, %edi
callq 0x75ab0
movq %rax, %rcx
movq 0x8(%rsp), %rax
movq %rcx, 0x8(%rax)
movq 0x8(%rsp), %rax
addq $0x18, %rsp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_node_iterator.c
// Function: gt_feature_node_iterator_new_direct
GtFeatureNodeIterator* gt_feature_node_iterator_new_direct(const GtFeatureNode
                                                           *fn)
{
  GtFeatureNodeIterator *fni;
  gt_assert(fn);
  fni = feature_node_iterator_new_base(fn);
  if (fn->children)
    add_children_to_stack(fni->feature_stack, fn);
  fni->direct = true;
  return fni;
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
cmpq $0x0, 0x10(%rsp)
jne 0x24ac9
movq 0x18f540(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x1395c4(%rip), %rsi    # 0x15e066
leaq 0x14dad8(%rip), %rdx    # 0x172581
leaq 0x13de90(%rip), %rcx    # 0x162940
leaq 0x13de42(%rip), %r8     # 0x1628f9
movl $0x51, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x24acb
movq 0x10(%rsp), %rdi
callq 0x249e0
movq %rax, 0x8(%rsp)
movq 0x10(%rsp), %rax
cmpq $0x0, 0x70(%rax)
je 0x24af9
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x10(%rsp), %rsi
callq 0x24b10
movq 0x8(%rsp), %rax
movb $0x1, 0x10(%rax)
movq 0x8(%rsp), %rax
addq $0x18, %rsp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_node_iterator.c
// Function: add_children_to_stack
static void add_children_to_stack(GtArray *feature_stack,
                                  const GtFeatureNode *fn)
{
  GtFeatureNode *child;
  GtDlistelem *dlistelem;
  gt_assert(feature_stack && fn && fn->children);
  /* add the children backwards to traverse in order */
  for (dlistelem = gt_dlist_last(fn->children); dlistelem != NULL;
       dlistelem = gt_dlistelem_previous(dlistelem)) {
    child = gt_dlistelem_get_data(dlistelem);
    gt_array_add(feature_stack, child);
  }
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq %rsi, 0x18(%rsp)
cmpq $0x0, 0x20(%rsp)
je 0x24b3a
cmpq $0x0, 0x18(%rsp)
je 0x24b3a
movq 0x18(%rsp), %rax
cmpq $0x0, 0x70(%rax)
jne 0x24b72
movq 0x18f497(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13951b(%rip), %rsi    # 0x15e066
leaq 0x13de53(%rip), %rdx    # 0x1629a5
leaq 0x13de70(%rip), %rcx    # 0x1629c9
leaq 0x13dd99(%rip), %r8     # 0x1628f9
movl $0x44, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x24b74
movq 0x18(%rsp), %rax
movq 0x70(%rax), %rdi
callq 0x7d8a0
movq %rax, 0x8(%rsp)
cmpq $0x0, 0x8(%rsp)
je 0x24bc3
movq 0x8(%rsp), %rdi
callq 0x7d9e0
movq %rax, 0x10(%rsp)
movq 0x20(%rsp), %rdi
leaq 0x10(%rsp), %rsi
movl $0x8, %edx
callq 0x76220
movq 0x8(%rsp), %rdi
callq 0x7f260
movq %rax, 0x8(%rsp)
jmp 0x24b87
addq $0x28, %rsp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_node_iterator.c
// Function: gt_feature_node_iterator_next
GtFeatureNode* gt_feature_node_iterator_next(GtFeatureNodeIterator *fni)
{
  GtFeatureNode *fn;
  gt_assert(fni);
  if (!gt_array_size(fni->feature_stack))
    return NULL;
  /* pop */
  fn = *(GtFeatureNode**) gt_array_pop(fni->feature_stack);
  /* push children on stack */
  if (!fni->direct && fn->children)
    add_children_to_stack(fni->feature_stack, fn);
  return fn;
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x8(%rsp)
cmpq $0x0, 0x8(%rsp)
jne 0x24c19
movq 0x18f3f0(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x139474(%rip), %rsi    # 0x15e066
leaq 0x13dd6b(%rip), %rdx    # 0x162964
leaq 0x13dd68(%rip), %rcx    # 0x162968
leaq 0x13dcf2(%rip), %r8     # 0x1628f9
movl $0x5c, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x24c1b
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x76490
cmpq $0x0, %rax
jne 0x24c3a
movq $0x0, 0x10(%rsp)
jmp 0x24c80
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x75d90
movq (%rax), %rax
movq %rax, (%rsp)
movq 0x8(%rsp), %rax
testb $0x1, 0x10(%rax)
jne 0x24c77
movq (%rsp), %rax
cmpq $0x0, 0x70(%rax)
je 0x24c77
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
movq (%rsp), %rsi
callq 0x24b10
movq (%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x10(%rsp), %rax
addq $0x18, %rsp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_node_iterator.c
// Function: gt_feature_node_iterator_example
int gt_feature_node_iterator_example(GT_UNUSED GtError *err)
{
  GtFeatureNodeIterator *fni;
  GtFeatureNode *fn, *node;
  fn = (GtFeatureNode*) gt_feature_node_new_standard_gene();

  /* an example genome node iterator use case */
  fni = gt_feature_node_iterator_new(fn);
  while ((node = gt_feature_node_iterator_next(fni))) {
    /* do something with <node> */
  }
  gt_feature_node_iterator_delete(fni);

  gt_genome_node_delete((GtGenomeNode*) fn);
  return 0;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
callq 0x20a70
movq %rax, 0x10(%rsp)
movq 0x10(%rsp), %rdi
callq 0x248a0
movq %rax, 0x18(%rsp)
movq 0x18(%rsp), %rdi
callq 0x24bd0
movq %rax, 0x8(%rsp)
cmpq $0x0, %rax
je 0x24cc9
jmp 0x24cb2
movq 0x18(%rsp), %rdi
callq 0x24cf0
movq 0x10(%rsp), %rdi
callq 0x26eb0
xorl %eax, %eax
addq $0x28, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_node_iterator.c
// Function: gt_feature_node_iterator_delete
void gt_feature_node_iterator_delete(GtFeatureNodeIterator *fni)
{
  if (!fni) return;
  gt_genome_node_delete((GtGenomeNode*) fni->fn);
  gt_array_delete(fni->feature_stack);
  gt_free(fni);
}

// Assembly:
pushq %rax
movq %rdi, (%rsp)
cmpq $0x0, (%rsp)
jne 0x24cfe
jmp 0x24d2c
movq (%rsp), %rax
movq (%rax), %rdi
callq 0x26eb0
movq (%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x770a0
movq (%rsp), %rdi
leaq 0x13dbd7(%rip), %rsi    # 0x1628f9
movl $0x7d, %edx
callq 0xdab0
popq %rax
retq
nop
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_node_observer.c
// Function: gt_feature_node_observer_delete
void gt_feature_node_observer_delete(GtFeatureNodeObserver *o)
{
  if (!o) return;
  if (o->reference_count) {
    o->reference_count--;
    return;
  }
  if (o->data)
    gt_free(o->data);
  gt_free(o);
}

// Assembly:
pushq %rax
movq %rdi, (%rsp)
cmpq $0x0, (%rsp)
jne 0x24dce
jmp 0x24e24
movq (%rsp), %rax
cmpq $0x0, 0x68(%rax)
je 0x24deb
movq (%rsp), %rax
movq 0x68(%rax), %rcx
addq $-0x1, %rcx
movq %rcx, 0x68(%rax)
jmp 0x24e24
movq (%rsp), %rax
cmpq $0x0, 0x60(%rax)
je 0x24e0f
movq (%rsp), %rax
movq 0x60(%rax), %rdi
leaq 0x13dbda(%rip), %rsi    # 0x1629df
movl $0x2a, %edx
callq 0xdab0
movq (%rsp), %rdi
leaq 0x13dbc5(%rip), %rsi    # 0x1629df
movl $0x2b, %edx
callq 0xdab0
popq %rax
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_visitor.c
// Function: gt_feature_visitor_class
const GtNodeVisitorClass* gt_feature_visitor_class()
{
  static const GtNodeVisitorClass *gvc = NULL;
  gt_class_alloc_lock_enter();
  if (!gvc) {
    gvc = gt_node_visitor_class_new(sizeof (GtFeatureVisitor),
                                    feature_visitor_free,
                                    NULL,
                                    feature_visitor_feature_node,
                                    feature_visitor_region_node,
                                    NULL,
                                    NULL);
  }
  gt_class_alloc_lock_leave();
  return gvc;
}

// Assembly:
pushq %rax
callq 0x7b730
cmpq $0x0, 0x1915da(%rip)    # 0x1b6418
jne 0x24e76
movl $0x18, %edi
leaq 0x44(%rip), %rsi        # 0x24e90
xorl %eax, %eax
movl %eax, %r9d
leaq 0xb8(%rip), %rcx        # 0x24f10
leaq 0x161(%rip), %r8        # 0x24fc0
movq %r9, %rdx
movq $0x0, (%rsp)
callq 0x34b70
movq %rax, 0x1915a2(%rip)    # 0x1b6418
callq 0x7b790
movq 0x191596(%rip), %rax    # 0x1b6418
popq %rcx
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_visitor.c
// Function: feature_visitor_feature_node
static int feature_visitor_feature_node(GtNodeVisitor *gv, GtFeatureNode *fn,
                                        GtError *err)
{
  GtFeatureVisitor *v = feature_visitor_cast(gv);
  int rval = 0;
  gt_error_check(err);
  rval = gt_feature_index_add_feature_node(v->feature_index, fn, err);
  return rval;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq %rsi, 0x18(%rsp)
movq %rdx, 0x10(%rsp)
callq 0x24e30
movq %rax, %rdi
movq 0x20(%rsp), %rsi
callq 0x34d50
movq %rax, 0x8(%rsp)
movl $0x0, 0x4(%rsp)
cmpq $0x0, 0x10(%rsp)
je 0x24f92
movq 0x10(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0x24f5a
jmp 0x24f92
movq 0x18f077(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x1390fb(%rip), %rsi    # 0x15e066
leaq 0x1396d6(%rip), %rdx    # 0x15e648
leaq 0x13db16(%rip), %rcx    # 0x162a8f
leaq 0x13dac3(%rip), %r8     # 0x162a43
movl $0x2e, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x24f94
movq 0x8(%rsp), %rax
movq 0x10(%rax), %rdi
movq 0x18(%rsp), %rsi
movq 0x10(%rsp), %rdx
callq 0x1d3d0
movl %eax, 0x4(%rsp)
movl 0x4(%rsp), %eax
addq $0x28, %rsp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_visitor.c
// Function: gt_feature_visitor_new
GtNodeVisitor* gt_feature_visitor_new(GtFeatureIndex *fi)
{
  GtNodeVisitor *gv;
  GtFeatureVisitor *feature_visitor;
  gt_assert(fi != NULL);
  gv = gt_node_visitor_create(gt_feature_visitor_class());
  feature_visitor = feature_visitor_cast(gv);
  feature_visitor->feature_index = gt_feature_index_ref(fi);
  gt_assert(feature_visitor != NULL);
  return gv;
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
cmpq $0x0, 0x10(%rsp)
jne 0x250a9
movq 0x18ef60(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x138fe4(%rip), %rsi    # 0x15e066
leaq 0x13d998(%rip), %rdx    # 0x162a21
leaq 0x13d99c(%rip), %rcx    # 0x162a2c
leaq 0x13d9ac(%rip), %r8     # 0x162a43
movl $0x50, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x250ab
callq 0x24e30
movq %rax, %rdi
callq 0x34cc0
movq %rax, 0x8(%rsp)
callq 0x24e30
movq %rax, %rdi
movq 0x8(%rsp), %rsi
callq 0x34d50
movq %rax, (%rsp)
movq 0x10(%rsp), %rdi
callq 0x1d180
movq %rax, %rcx
movq (%rsp), %rax
movq %rcx, 0x10(%rax)
cmpq $0x0, (%rsp)
jne 0x25127
movq 0x18eee2(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x138f66(%rip), %rsi    # 0x15e066
leaq 0x13d95b(%rip), %rdx    # 0x162a62
leaq 0x13d91e(%rip), %rcx    # 0x162a2c
leaq 0x13d92e(%rip), %r8     # 0x162a43
movl $0x54, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x25129
movq 0x8(%rsp), %rax
addq $0x18, %rsp
retq
nopw %cs:(%rax,%rax)
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/genome_node.c
// Function: gt_genome_node_ref
GtGenomeNode* gt_genome_node_ref(GtGenomeNode *gn)
{
  gt_assert(gn);
  gt_rwlock_wrlock(gn->lock);
  gn->reference_count++;
  gt_rwlock_unlock(gn->lock);
  return gn;
}

// Assembly:
pushq %rax
movq %rdi, (%rsp)
cmpq $0x0, (%rsp)
jne 0x25184
movq 0x18ee85(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x138f09(%rip), %rsi    # 0x15e066
leaq 0x14e521(%rip), %rdx    # 0x173685
leaq 0x13d95d(%rip), %rcx    # 0x162ac8
leaq 0x13d969(%rip), %r8     # 0x162adb
movl $0x2b, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x25186
movq (%rsp), %rax
movq 0x18(%rax), %rdi
callq 0x1c100
movq (%rsp), %rax
movl 0x24(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x24(%rax)
movq (%rsp), %rax
movq 0x18(%rax), %rdi
callq 0x1c1a0
movq (%rsp), %rax
popq %rcx
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/genome_node.c
// Function: gt_genome_node_class_new
const GtGenomeNodeClass*
gt_genome_node_class_new(size_t size,
                         GtGenomeNodeFreeFunc free,
                         GtGenomeNodeSetSeqidFunc get_seqid,
                         GtGenomeNodeGetIdstrFunc get_idstr,
                         GtGenomeNodeGetRangeFunc get_range,
                         GtGenomeNodeSetRangeFunc set_range,
                         GtGenomeNodeChangeSeqidFunc change_seqid,
                         GtGenomeNodeAcceptFunc accept)
{
  GtGenomeNodeClass *c_class;
  gt_assert(size);
  c_class = gt_class_alloc(sizeof *c_class);
  c_class->size = size;
  c_class->free = free;
  c_class->get_seqid = get_seqid;
  c_class->get_idstr = get_idstr;
  c_class->get_range = get_range;
  c_class->set_range = set_range;
  c_class->change_seqid = change_seqid;
  c_class->accept = accept;
  return c_class;
}

// Assembly:
subq $0x38, %rsp
movq 0x48(%rsp), %rax
movq 0x40(%rsp), %rax
movq %rdi, 0x30(%rsp)
movq %rsi, 0x28(%rsp)
movq %rdx, 0x20(%rsp)
movq %rcx, 0x18(%rsp)
movq %r8, 0x10(%rsp)
movq %r9, 0x8(%rsp)
cmpq $0x0, 0x30(%rsp)
jne 0x2522c
movq 0x18eddd(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x138e61(%rip), %rsi    # 0x15e066
leaq 0x1489fb(%rip), %rdx    # 0x16dc07
leaq 0x13d8e3(%rip), %rcx    # 0x162af6
leaq 0x13d8c1(%rip), %r8     # 0x162adb
movl $0x3d, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x2522e
movl $0x40, %edi
callq 0x7b610
movq %rax, (%rsp)
movq 0x30(%rsp), %rcx
movq (%rsp), %rax
movq %rcx, (%rax)
movq 0x28(%rsp), %rcx
movq (%rsp), %rax
movq %rcx, 0x8(%rax)
movq 0x20(%rsp), %rcx
movq (%rsp), %rax
movq %rcx, 0x10(%rax)
movq 0x18(%rsp), %rcx
movq (%rsp), %rax
movq %rcx, 0x18(%rax)
movq 0x10(%rsp), %rcx
movq (%rsp), %rax
movq %rcx, 0x20(%rax)
movq 0x8(%rsp), %rcx
movq (%rsp), %rax
movq %rcx, 0x28(%rax)
movq 0x40(%rsp), %rcx
movq (%rsp), %rax
movq %rcx, 0x30(%rax)
movq 0x48(%rsp), %rcx
movq (%rsp), %rax
movq %rcx, 0x38(%rax)
movq (%rsp), %rax
addq $0x38, %rsp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/genome_node.c
// Function: gt_genome_node_create
GtGenomeNode* gt_genome_node_create(const GtGenomeNodeClass *gnc)
{
  GtGenomeNode *gn;
  gt_assert(gnc && gnc->size);
  gn                     = gt_malloc(gnc->size);
  gn->c_class            = gnc;
  gn->filename           = NULL; /* means the node is generated */
  gn->line_number        = 0;
  gn->reference_count    = 0;
  gn->userdata           = NULL;
  gn->userdata_nof_items = 0;
#ifdef GT_THREADS_ENABLED
  gn->lock              = gt_rwlock_new();
#endif
  return gn;
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
cmpq $0x0, 0x10(%rsp)
je 0x2554c
movq 0x10(%rsp), %rax
cmpq $0x0, (%rax)
jne 0x25584
movq 0x18ea85(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x138b09(%rip), %rsi    # 0x15e066
leaq 0x13d5ab(%rip), %rdx    # 0x162b0f
leaq 0x13d5b5(%rip), %rcx    # 0x162b20
leaq 0x13d569(%rip), %r8     # 0x162adb
movl $0xda, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x25586
movq 0x10(%rsp), %rax
movq (%rax), %rdi
leaq 0x13d546(%rip), %rsi    # 0x162adb
movl $0xdb, %edx
callq 0xd2e0
movq %rax, 0x8(%rsp)
movq 0x10(%rsp), %rcx
movq 0x8(%rsp), %rax
movq %rcx, (%rax)
movq 0x8(%rsp), %rax
movq $0x0, 0x8(%rax)
movq 0x8(%rsp), %rax
movl $0x0, 0x20(%rax)
movq 0x8(%rsp), %rax
movl $0x0, 0x24(%rax)
movq 0x8(%rsp), %rax
movq $0x0, 0x10(%rax)
movq 0x8(%rsp), %rax
movl $0x0, 0x28(%rax)
callq 0x1bec0
movq %rax, %rcx
movq 0x8(%rsp), %rax
movq %rcx, 0x18(%rax)
movq 0x8(%rsp), %rax
addq $0x18, %rsp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/genome_node.c
// Function: gt_genome_node_set_origin
void gt_genome_node_set_origin(GtGenomeNode *gn, GtStr *filename,
                               unsigned int line_number)
{
  gt_assert(gn && filename && line_number);
  gt_str_delete(gn->filename);
  gn->filename = gt_str_ref(filename);
  gn->line_number = line_number;
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
movq %rsi, 0x8(%rsp)
movl %edx, 0x4(%rsp)
cmpq $0x0, 0x10(%rsp)
je 0x25639
cmpq $0x0, 0x8(%rsp)
je 0x25639
cmpl $0x0, 0x4(%rsp)
jne 0x25671
movq 0x18e998(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x138a1c(%rip), %rsi    # 0x15e066
leaq 0x13d4e5(%rip), %rdx    # 0x162b36
leaq 0x13d4fc(%rip), %rcx    # 0x162b54
leaq 0x13d47c(%rip), %r8     # 0x162adb
movl $0xeb, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x25673
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x1afc0
movq 0x8(%rsp), %rdi
callq 0x19dc0
movq %rax, %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x8(%rax)
movl 0x4(%rsp), %ecx
movq 0x10(%rsp), %rax
movl %ecx, 0x20(%rax)
addq $0x18, %rsp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/genome_node.c
// Function: gt_genome_node_try_cast
void* gt_genome_node_try_cast(const GtGenomeNodeClass *gnc, GtGenomeNode *gn)
{
  gt_assert(gnc && gn);
  if (gn->c_class == gnc)
    return gn;
  return NULL;
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x8(%rsp)
movq %rsi, (%rsp)
cmpq $0x0, 0x8(%rsp)
je 0x2574c
cmpq $0x0, (%rsp)
jne 0x25784
movq 0x18e885(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x138909(%rip), %rsi    # 0x15e066
leaq 0x13d43e(%rip), %rdx    # 0x162ba2
leaq 0x13d441(%rip), %rcx    # 0x162bac
leaq 0x13d369(%rip), %r8     # 0x162adb
movl $0xfa, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x25786
movq (%rsp), %rax
movq (%rax), %rax
cmpq 0x8(%rsp), %rax
jne 0x2579f
movq (%rsp), %rax
movq %rax, 0x10(%rsp)
jmp 0x257a8
movq $0x0, 0x10(%rsp)
movq 0x10(%rsp), %rax
addq $0x18, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/genome_node.c
// Function: gt_genome_node_get_filename
const char* gt_genome_node_get_filename(const GtGenomeNode *gn)
{
  gt_assert(gn);
  if (gn->filename)
    return gt_str_get(gn->filename);
  return "generated";
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x8(%rsp)
cmpq $0x0, 0x8(%rsp)
jne 0x25809
movq 0x18e800(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x138884(%rip), %rsi    # 0x15e066
leaq 0x14de9c(%rip), %rdx    # 0x173685
leaq 0x13d3d4(%rip), %rcx    # 0x162bc4
leaq 0x13d2e4(%rip), %r8     # 0x162adb
movl $0x102, %r9d            # imm = 0x102
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x2580b
movq 0x8(%rsp), %rax
cmpq $0x0, 0x8(%rax)
je 0x2582c
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x19940
movq %rax, 0x10(%rsp)
jmp 0x25838
leaq 0x166815(%rip), %rax    # 0x18c048
movq %rax, 0x10(%rsp)
movq 0x10(%rsp), %rax
addq $0x18, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/genome_node.c
// Function: gt_genome_node_get_seqid
GtStr* gt_genome_node_get_seqid(GtGenomeNode *gn)
{
  gt_assert(gn && gn->c_class);
  if (gn->c_class->get_seqid)
    return gn->c_class->get_seqid(gn);
  return NULL;
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x8(%rsp)
cmpq $0x0, 0x8(%rsp)
je 0x258bc
movq 0x8(%rsp), %rax
cmpq $0x0, (%rax)
jne 0x258f4
movq 0x18e715(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x138799(%rip), %rsi    # 0x15e066
leaq 0x13d32b(%rip), %rdx    # 0x162bff
leaq 0x13d336(%rip), %rcx    # 0x162c11
leaq 0x13d1f9(%rip), %r8     # 0x162adb
movl $0x110, %r9d            # imm = 0x110
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x258f6
movq 0x8(%rsp), %rax
movq (%rax), %rax
cmpq $0x0, 0x10(%rax)
je 0x2591f
movq 0x8(%rsp), %rax
movq (%rax), %rax
movq 0x10(%rax), %rax
movq 0x8(%rsp), %rdi
callq *%rax
movq %rax, 0x10(%rsp)
jmp 0x25928
movq $0x0, 0x10(%rsp)
movq 0x10(%rsp), %rax
addq $0x18, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/genome_node.c
// Function: gt_genome_node_set_range
void gt_genome_node_set_range(GtGenomeNode *gn, const GtRange *range)
{
  gt_assert(gn && gn->c_class);
  if (gn->c_class->set_range) {
    gt_assert(range->start <= range->end);
    gn->c_class->set_range(gn, range);
  }
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
movq %rsi, 0x8(%rsp)
cmpq $0x0, 0x10(%rsp)
je 0x25b71
movq 0x10(%rsp), %rax
cmpq $0x0, (%rax)
jne 0x25ba9
movq 0x18e460(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x1384e4(%rip), %rsi    # 0x15e066
leaq 0x13d076(%rip), %rdx    # 0x162bff
leaq 0x13d13e(%rip), %rcx    # 0x162cce
leaq 0x13cf44(%rip), %r8     # 0x162adb
movl $0x136, %r9d            # imm = 0x136
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x25bab
movq 0x10(%rsp), %rax
movq (%rax), %rax
cmpq $0x0, 0x28(%rax)
je 0x25c21
jmp 0x25bbc
movq 0x8(%rsp), %rax
movq (%rax), %rax
movq 0x8(%rsp), %rcx
cmpq 0x8(%rcx), %rax
jbe 0x25c07
movq 0x18e402(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x138486(%rip), %rsi    # 0x15e066
leaq 0x13d100(%rip), %rdx    # 0x162ce7
leaq 0x13d0e0(%rip), %rcx    # 0x162cce
leaq 0x13cee6(%rip), %r8     # 0x162adb
movl $0x138, %r9d            # imm = 0x138
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x25c09
movq 0x10(%rsp), %rax
movq (%rax), %rax
movq 0x28(%rax), %rax
movq 0x10(%rsp), %rdi
movq 0x8(%rsp), %rsi
callq *%rax
addq $0x18, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/genome_node.c
// Function: compare_genome_nodes_with_delta
static int compare_genome_nodes_with_delta(GtGenomeNode *gn_a,
                                           GtGenomeNode *gn_b,
                                           GtUword delta)
{
  GtRange range_a, range_b;
  int rval;
  const char *id_a, *id_b;
  gt_assert(gn_a && gn_b);
  /* ensure that sequence regions come first, otherwise we don't get a valid
     gff3 stream */
  if ((rval = compare_genome_node_type(gn_a, gn_b)))
    return rval;

  id_a = gt_str_get(gt_genome_node_get_idstr(gn_a));
  id_b = gt_str_get(gt_genome_node_get_idstr(gn_b));
  if ((rval = gt_md5_seqid_cmp_seqids(id_a, id_b))) {
    return rval;
  }
  range_a = gt_genome_node_get_range(gn_a);
  range_b = gt_genome_node_get_range(gn_b);
  return gt_range_compare_with_delta(&range_a, &range_b, delta);
}

// Assembly:
subq $0x78, %rsp
movq %rdi, 0x68(%rsp)
movq %rsi, 0x60(%rsp)
movq %rdx, 0x58(%rsp)
cmpq $0x0, 0x68(%rsp)
je 0x25ef3
cmpq $0x0, 0x60(%rsp)
jne 0x25f2b
movq 0x18e0de(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x138162(%rip), %rsi    # 0x15e066
leaq 0x13d133(%rip), %rdx    # 0x16303e
leaq 0x13d154(%rip), %rcx    # 0x163066
leaq 0x13cbc2(%rip), %r8     # 0x162adb
movl $0xc7, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x25f2d
movq 0x68(%rsp), %rdi
movq 0x60(%rsp), %rsi
callq 0x26fc0
movl %eax, 0x34(%rsp)
cmpl $0x0, %eax
je 0x25f52
movl 0x34(%rsp), %eax
movl %eax, 0x74(%rsp)
jmp 0x26008
movq 0x68(%rsp), %rdi
callq 0x25940
movq %rax, %rdi
callq 0x19940
movq %rax, 0x28(%rsp)
movq 0x60(%rsp), %rdi
callq 0x25940
movq %rax, %rdi
callq 0x19940
movq %rax, 0x20(%rsp)
movq 0x28(%rsp), %rdi
movq 0x20(%rsp), %rsi
callq 0x8dd10
movl %eax, 0x34(%rsp)
cmpl $0x0, %eax
je 0x25fa2
movl 0x34(%rsp), %eax
movl %eax, 0x74(%rsp)
jmp 0x26008
movq 0x68(%rsp), %rdi
callq 0x259f0
movq %rax, 0x10(%rsp)
movq %rdx, 0x18(%rsp)
movq 0x10(%rsp), %rax
movq %rax, 0x48(%rsp)
movq 0x18(%rsp), %rax
movq %rax, 0x50(%rsp)
movq 0x60(%rsp), %rdi
callq 0x259f0
movq %rax, (%rsp)
movq %rdx, 0x8(%rsp)
movq (%rsp), %rax
movq %rax, 0x38(%rsp)
movq 0x8(%rsp), %rax
movq %rax, 0x40(%rsp)
movq 0x58(%rsp), %rdx
leaq 0x48(%rsp), %rdi
leaq 0x38(%rsp), %rsi
callq 0x93940
movl %eax, 0x74(%rsp)
movl 0x74(%rsp), %eax
addq $0x78, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/genome_node.c
// Function: gt_genome_nodes_show
void gt_genome_nodes_show(GtArray *nodes, GtFile *outfp)
{
  GtNodeVisitor *gff3_visitor;
  GtUword i;
  gt_assert(nodes);
  gff3_visitor = gt_gff3_visitor_new(outfp);
  for (i = 0; i < gt_array_size(nodes); i++) {
    GT_UNUSED int had_err;
    had_err = gt_genome_node_accept(*(GtGenomeNode**) gt_array_get(nodes, i),
                                    gff3_visitor, NULL);
    gt_assert(!had_err); /* should not happen */
  }
  gt_node_visitor_delete(gff3_visitor);
}

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x30(%rsp)
movq %rsi, 0x28(%rsp)
cmpq $0x0, 0x30(%rsp)
jne 0x2618e
movq 0x18de7b(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x137eff(%rip), %rsi    # 0x15e066
leaq 0x13c592(%rip), %rdx    # 0x162700
leaq 0x13cc43(%rip), %rcx    # 0x162db8
leaq 0x13c95f(%rip), %r8     # 0x162adb
movl $0x17f, %r9d            # imm = 0x17F
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x26190
movq 0x28(%rsp), %rdi
callq 0x31e50
movq %rax, 0x20(%rsp)
movq $0x0, 0x18(%rsp)
movq 0x18(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x30(%rsp), %rdi
callq 0x76490
movq %rax, %rcx
movq 0x8(%rsp), %rax
cmpq %rcx, %rax
jae 0x26243
movq 0x30(%rsp), %rdi
movq 0x18(%rsp), %rsi
callq 0x75c80
movq (%rax), %rdi
movq 0x20(%rsp), %rsi
xorl %eax, %eax
movl %eax, %edx
callq 0x25cc0
movl %eax, 0x14(%rsp)
cmpl $0x0, 0x14(%rsp)
je 0x2622c
movq 0x18dddd(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x137e61(%rip), %rsi    # 0x15e066
leaq 0x140db2(%rip), %rdx    # 0x166fbe
leaq 0x13cba5(%rip), %rcx    # 0x162db8
leaq 0x13c8c1(%rip), %r8     # 0x162adb
movl $0x185, %r9d            # imm = 0x185
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x2622e
jmp 0x26230
movq 0x18(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x18(%rsp)
jmp 0x261a8
movq 0x20(%rsp), %rdi
callq 0x353d0
addq $0x38, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/genome_node.c
// Function: gt_genome_nodes_are_equal_region_nodes
bool gt_genome_nodes_are_equal_region_nodes(GtGenomeNode *gn_a,
                                            GtGenomeNode *gn_b)
{
  void *sr_a, *sr_b;

  sr_a = gn_a ? gt_region_node_try_cast(gn_a) : NULL;
  sr_b = gn_b ? gt_region_node_try_cast(gn_b) : NULL;

  if (sr_a && sr_b && !gt_str_cmp(gt_genome_node_get_seqid(gn_a),
                                  gt_genome_node_get_seqid(gn_b))) {
    return true;
  }
  return false;
}

// Assembly:
subq $0x48, %rsp
movq %rdi, 0x38(%rsp)
movq %rsi, 0x30(%rsp)
cmpq $0x0, 0x38(%rsp)
je 0x26287
movq 0x38(%rsp), %rdi
callq 0x35ee0
movq %rax, 0x18(%rsp)
jmp 0x26290
xorl %eax, %eax
movq %rax, 0x18(%rsp)
jmp 0x26290
movq 0x18(%rsp), %rax
movq %rax, 0x28(%rsp)
cmpq $0x0, 0x30(%rsp)
je 0x262b3
movq 0x30(%rsp), %rdi
callq 0x35ee0
movq %rax, 0x10(%rsp)
jmp 0x262bc
xorl %eax, %eax
movq %rax, 0x10(%rsp)
jmp 0x262bc
movq 0x10(%rsp), %rax
movq %rax, 0x20(%rsp)
cmpq $0x0, 0x28(%rsp)
je 0x26308
cmpq $0x0, 0x20(%rsp)
je 0x26308
movq 0x38(%rsp), %rdi
callq 0x258a0
movq %rax, 0x8(%rsp)
movq 0x30(%rsp), %rdi
callq 0x258a0
movq 0x8(%rsp), %rdi
movq %rax, %rsi
callq 0x19bd0
cmpl $0x0, %eax
jne 0x26308
movb $0x1, 0x47(%rsp)
jmp 0x2630d
movb $0x0, 0x47(%rsp)
movb 0x47(%rsp), %al
andb $0x1, %al
addq $0x48, %rsp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/genome_node.c
// Function: gt_genome_nodes_are_sorted
bool gt_genome_nodes_are_sorted(const GtArray *nodes)
{
  GtUword i;
  gt_assert(nodes);
  for (i = 1; i < gt_array_size(nodes); i++) {
    if (gt_genome_node_compare(gt_array_get(nodes, i-1),
                               gt_array_get(nodes, i)) > 0) {
      return false;
    }
  }
  return true;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x18(%rsp)
cmpq $0x0, 0x18(%rsp)
jne 0x26369
movq 0x18dca0(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x137d24(%rip), %rsi    # 0x15e066
leaq 0x13c3b7(%rip), %rdx    # 0x162700
leaq 0x13ca7d(%rip), %rcx    # 0x162dcd
leaq 0x13c784(%rip), %r8     # 0x162adb
movl $0x19c, %r9d            # imm = 0x19C
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x2636b
movq $0x1, 0x10(%rsp)
movq 0x10(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x18(%rsp), %rdi
callq 0x76490
movq %rax, %rcx
movq 0x8(%rsp), %rax
cmpq %rcx, %rax
jae 0x263e5
movq 0x18(%rsp), %rdi
movq 0x10(%rsp), %rsi
subq $0x1, %rsi
callq 0x75c80
movq %rax, (%rsp)
movq 0x18(%rsp), %rdi
movq 0x10(%rsp), %rsi
callq 0x75c80
movq (%rsp), %rdi
movq %rax, %rsi
callq 0x25db0
cmpl $0x0, %eax
jle 0x263d3
movb $0x0, 0x27(%rsp)
jmp 0x263ea
jmp 0x263d5
movq 0x10(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x10(%rsp)
jmp 0x26374
movb $0x1, 0x27(%rsp)
movb 0x27(%rsp), %al
andb $0x1, %al
addq $0x28, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/genome_node.c
// Function: gt_genome_node_add_user_data
void gt_genome_node_add_user_data(GtGenomeNode *gn, const char *key, void *data,
                                  GtFree free_func)
{
  GtGenomeNodeUserData *ud, *myud;
  gt_assert(gn && key);
  ud = gt_malloc(sizeof (GtGenomeNodeUserData));
  ud->ptr = data;
  ud->free_func = free_func;
  if (!gn->userdata) {
    gn->userdata = gt_hashmap_new(GT_HASH_STRING, gt_free_func,
                                  userdata_delete);
  }
  gt_assert(gn->userdata != NULL);
  /* remove old data entry first if there is one */
  if ((myud = gt_hashmap_get(gn->userdata, key)) != NULL) {
    gt_hashmap_remove(gn->userdata, key);
  } else {
    gn->userdata_nof_items++;
  }
  gt_hashmap_add(gn->userdata, gt_cstr_dup((char*) key), ud);
}

// 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 0x26428
cmpq $0x0, 0x28(%rsp)
jne 0x26460
movq 0x18dba9(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x137c2d(%rip), %rsi    # 0x15e066
leaq 0x13c9a8(%rip), %rdx    # 0x162de8
leaq 0x13c9ab(%rip), %rcx    # 0x162df2
leaq 0x13c68d(%rip), %r8     # 0x162adb
movl $0x1aa, %r9d            # imm = 0x1AA
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x26462
movl $0x10, %edi
leaq 0x13c66d(%rip), %rsi    # 0x162adb
movl $0x1ab, %edx            # imm = 0x1AB
callq 0xd2e0
movq %rax, 0x10(%rsp)
movq 0x20(%rsp), %rcx
movq 0x10(%rsp), %rax
movq %rcx, (%rax)
movq 0x18(%rsp), %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x8(%rax)
movq 0x30(%rsp), %rax
cmpq $0x0, 0x10(%rax)
jne 0x264c8
movl $0x1, %edi
leaq -0x18890(%rip), %rsi    # 0xdc20
leaq 0xc9(%rip), %rdx        # 0x26580
callq 0x86190
movq %rax, %rcx
movq 0x30(%rsp), %rax
movq %rcx, 0x10(%rax)
jmp 0x264ca
movq 0x30(%rsp), %rax
cmpq $0x0, 0x10(%rax)
jne 0x2650e
movq 0x18dafb(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x137b7f(%rip), %rsi    # 0x15e066
leaq 0x13c921(%rip), %rdx    # 0x162e0f
leaq 0x13c8fd(%rip), %rcx    # 0x162df2
leaq 0x13c5df(%rip), %r8     # 0x162adb
movl $0x1b2, %r9d            # imm = 0x1B2
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x26510
movq 0x30(%rsp), %rax
movq 0x10(%rax), %rdi
movq 0x28(%rsp), %rsi
callq 0x86470
movq %rax, 0x8(%rsp)
cmpq $0x0, %rax
je 0x26543
movq 0x30(%rsp), %rax
movq 0x10(%rax), %rdi
movq 0x28(%rsp), %rsi
callq 0x86580
jmp 0x26551
movq 0x30(%rsp), %rax
movl 0x28(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x28(%rax)
movq 0x30(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, (%rsp)
movq 0x28(%rsp), %rdi
callq 0x7c400
movq (%rsp), %rdi
movq %rax, %rsi
movq 0x10(%rsp), %rdx
callq 0x86510
addq $0x38, %rsp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/genome_node.c
// Function: userdata_delete
static void userdata_delete(void *data)
{
  GtGenomeNodeUserData *ud;
  if (!data) return;
  ud = (GtGenomeNodeUserData*) data;
  if (ud->free_func)
    ud->free_func(ud->ptr);
  ud->free_func = ud->ptr = NULL;
  gt_free(ud);
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
cmpq $0x0, 0x10(%rsp)
jne 0x26593
jmp 0x265eb
movq 0x10(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rax
cmpq $0x0, 0x8(%rax)
je 0x265bc
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rax
movq 0x8(%rsp), %rcx
movq (%rcx), %rdi
callq *%rax
movq 0x8(%rsp), %rax
movq $0x0, (%rax)
movq 0x8(%rsp), %rax
movq $0x0, 0x8(%rax)
movq 0x8(%rsp), %rdi
leaq 0x13c4fa(%rip), %rsi    # 0x162adb
movl $0x52, %edx
callq 0xdab0
addq $0x18, %rsp
retq