LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_node.c
// Function: gt_feature_node_is_pseudo
bool gt_feature_node_is_pseudo(const GtFeatureNode *fn)
{
  gt_assert(fn);
  if ((fn->bit_field >> PSEUDO_FEATURE_OFFSET) & PSEUDO_FEATURE_MASK) {
    gt_assert(!((fn->bit_field >> MULTI_FEATURE_OFFSET) & MULTI_FEATURE_MASK));
    return true;
  }
  return false;
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x8(%rsp)
cmpq $0x0, 0x8(%rsp)
jne 0x218c9
movq 0x192740(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13c7c4(%rip), %rsi    # 0x15e066
leaq 0x150cd8(%rip), %rdx    # 0x172581
leaq 0x14053d(%rip), %rcx    # 0x161ded
leaq 0x1402ed(%rip), %r8     # 0x161ba4
movl $0x1b3, %r9d            # imm = 0x1B3
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x218cb
movq 0x8(%rsp), %rax
movl 0x68(%rax), %eax
shrl $0xf, %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x21934
jmp 0x218e0
movq 0x8(%rsp), %rax
movl 0x68(%rax), %eax
shrl $0xe, %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x2192b
movq 0x1926de(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13c762(%rip), %rsi    # 0x15e066
leaq 0x1404fc(%rip), %rdx    # 0x161e07
leaq 0x1404db(%rip), %rcx    # 0x161ded
leaq 0x14028b(%rip), %r8     # 0x161ba4
movl $0x1b5, %r9d            # imm = 0x1B5
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x2192d
movb $0x1, 0x17(%rsp)
jmp 0x21939
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_make_multi_representative
void gt_feature_node_make_multi_representative(GtFeatureNode *fn)
{
  gt_assert(fn);
  feature_node_set_multi(fn);
  if (fn->observer && fn->observer->multi_changed) {
    fn->observer->multi_changed(fn, gt_feature_node_is_multi(fn),
                                fn->representative, fn->observer->data);
  }
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
cmpq $0x0, 0x10(%rsp)
jne 0x21999
movq 0x192670(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13c6f4(%rip), %rsi    # 0x15e066
leaq 0x150c08(%rip), %rdx    # 0x172581
leaq 0x1404c7(%rip), %rcx    # 0x161e47
leaq 0x14021d(%rip), %r8     # 0x161ba4
movl $0x1c3, %r9d            # imm = 0x1C3
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x2199b
movq 0x10(%rsp), %rdi
callq 0x21a30
movq 0x10(%rsp), %rax
cmpq $0x0, 0x80(%rax)
je 0x21a1d
movq 0x10(%rsp), %rax
movq 0x80(%rax), %rax
cmpq $0x0, 0x40(%rax)
je 0x21a1d
movq 0x10(%rsp), %rax
movq 0x80(%rax), %rax
movq 0x40(%rax), %rax
movq %rax, 0x8(%rsp)
movq 0x10(%rsp), %rax
movq %rax, (%rsp)
movq 0x10(%rsp), %rdi
callq 0x217b0
movq (%rsp), %rdi
movb %al, %sil
movq 0x8(%rsp), %rax
movq 0x10(%rsp), %rcx
movq 0x78(%rcx), %rdx
movq 0x10(%rsp), %rcx
movq 0x80(%rcx), %rcx
movq 0x60(%rcx), %rcx
movzbl %sil, %esi
andl $0x1, %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_multi_representative
void gt_feature_node_set_multi_representative(GtFeatureNode *fn,
                                              GtFeatureNode *rep)
{
  gt_assert(fn);
  gt_assert(rep && gt_feature_node_is_multi(rep));
  feature_node_set_multi(fn);
  fn->representative = rep;
  if (fn->observer && fn->observer->multi_changed) {
    fn->observer->multi_changed(fn, gt_feature_node_is_multi(fn),
                                fn->representative, fn->observer->data);
  }
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq %rsi, 0x18(%rsp)
cmpq $0x0, 0x20(%rsp)
jne 0x21ade
movq 0x19252b(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13c5af(%rip), %rsi    # 0x15e066
leaq 0x150ac3(%rip), %rdx    # 0x172581
leaq 0x1403ac(%rip), %rcx    # 0x161e71
leaq 0x1400d8(%rip), %r8     # 0x161ba4
movl $0x1ce, %r9d            # imm = 0x1CE
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x21ae0
jmp 0x21ae2
cmpq $0x0, 0x18(%rsp)
je 0x21af8
movq 0x18(%rsp), %rdi
callq 0x217b0
testb $0x1, %al
jne 0x21b30
movq 0x1924d9(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13c55d(%rip), %rsi    # 0x15e066
leaq 0x14038a(%rip), %rdx    # 0x161e9a
leaq 0x14035a(%rip), %rcx    # 0x161e71
leaq 0x140086(%rip), %r8     # 0x161ba4
movl $0x1cf, %r9d            # imm = 0x1CF
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x21b32
movq 0x20(%rsp), %rdi
callq 0x21a30
movq 0x18(%rsp), %rcx
movq 0x20(%rsp), %rax
movq %rcx, 0x78(%rax)
movq 0x20(%rsp), %rax
cmpq $0x0, 0x80(%rax)
je 0x21bc4
movq 0x20(%rsp), %rax
movq 0x80(%rax), %rax
cmpq $0x0, 0x40(%rax)
je 0x21bc4
movq 0x20(%rsp), %rax
movq 0x80(%rax), %rax
movq 0x40(%rax), %rax
movq %rax, 0x10(%rsp)
movq 0x20(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x20(%rsp), %rdi
callq 0x217b0
movq 0x8(%rsp), %rdi
movb %al, %sil
movq 0x10(%rsp), %rax
movq 0x20(%rsp), %rcx
movq 0x78(%rcx), %rdx
movq 0x20(%rsp), %rcx
movq 0x80(%rcx), %rcx
movq 0x60(%rcx), %rcx
movzbl %sil, %esi
andl $0x1, %esi
callq *%rax
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_get_multi_representative
GtFeatureNode* gt_feature_node_get_multi_representative(GtFeatureNode *fn)
{
  gt_assert(fn && gt_feature_node_is_multi(fn) &&
            !gt_feature_node_is_pseudo(fn));
  if (fn->representative) {
    gt_assert(gt_feature_node_is_multi(fn->representative));
    return fn->representative;
  }
  return fn; /* is itself the representative */
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x8(%rsp)
cmpq $0x0, 0x8(%rsp)
je 0x21c71
movq 0x8(%rsp), %rdi
callq 0x217b0
testb $0x1, %al
jne 0x21c61
jmp 0x21c71
movq 0x8(%rsp), %rdi
callq 0x21880
testb $0x1, %al
jne 0x21c71
jmp 0x21ca9
movq 0x192360(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13c3e4(%rip), %rsi    # 0x15e066
leaq 0x140252(%rip), %rdx    # 0x161edb
leaq 0x140290(%rip), %rcx    # 0x161f20
leaq 0x13ff0d(%rip), %r8     # 0x161ba4
movl $0x1e2, %r9d            # imm = 0x1E2
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x21cab
movq 0x8(%rsp), %rax
cmpq $0x0, 0x78(%rax)
je 0x21d15
jmp 0x21cb9
movq 0x8(%rsp), %rax
movq 0x78(%rax), %rdi
callq 0x217b0
testb $0x1, %al
jne 0x21d03
movq 0x192306(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13c38a(%rip), %rsi    # 0x15e066
leaq 0x140266(%rip), %rdx    # 0x161f49
leaq 0x140236(%rip), %rcx    # 0x161f20
leaq 0x13feb3(%rip), %r8     # 0x161ba4
movl $0x1e4, %r9d            # imm = 0x1E4
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x21d05
movq 0x8(%rsp), %rax
movq 0x78(%rax), %rax
movq %rax, 0x10(%rsp)
jmp 0x21d1f
movq 0x8(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x10(%rsp), %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_set_strand
void gt_feature_node_set_strand(GtFeatureNode *fn, GtStrand strand)
{
  gt_assert(fn);
  fn->bit_field &= ~(STRAND_MASK << STRAND_OFFSET);
  fn->bit_field |= strand << STRAND_OFFSET;
  if (fn->observer && fn->observer->strand_changed)
    fn->observer->strand_changed(fn, strand, fn->observer->data);
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
movl %esi, 0xc(%rsp)
cmpq $0x0, 0x10(%rsp)
jne 0x21edd
movq 0x19212c(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13c1b0(%rip), %rsi    # 0x15e066
leaq 0x1506c4(%rip), %rdx    # 0x172581
leaq 0x140128(%rip), %rcx    # 0x161fec
leaq 0x13fcd9(%rip), %r8     # 0x161ba4
movl $0x200, %r9d            # imm = 0x200
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x21edf
movq 0x10(%rsp), %rax
movl 0x68(%rax), %ecx
andl $0xffffff1f, %ecx       # imm = 0xFFFFFF1F
movl %ecx, 0x68(%rax)
movl 0xc(%rsp), %ecx
shll $0x5, %ecx
movq 0x10(%rsp), %rax
orl 0x68(%rax), %ecx
movl %ecx, 0x68(%rax)
movq 0x10(%rsp), %rax
cmpq $0x0, 0x80(%rax)
je 0x21f4f
movq 0x10(%rsp), %rax
movq 0x80(%rax), %rax
cmpq $0x0, 0x10(%rax)
je 0x21f4f
movq 0x10(%rsp), %rax
movq 0x80(%rax), %rax
movq 0x10(%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: feature_node_save_exon
static int feature_node_save_exon(GtFeatureNode *fn, void *data,
                                  GT_UNUSED GtError *err)
{
  GtArray *exon_features = (GtArray*) data;
  gt_error_check(err);
  gt_assert(fn && exon_features);
  if (gt_feature_node_has_type(fn, gt_ft_exon)) {
    gt_array_add(exon_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 0x2258d
movq 0x10(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0x22555
jmp 0x2258d
movq 0x191a7c(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13bb00(%rip), %rsi    # 0x15e066
leaq 0x13c0db(%rip), %rdx    # 0x15e648
leaq 0x1402b4(%rip), %rcx    # 0x162828
leaq 0x13f629(%rip), %r8     # 0x161ba4
movl $0x211, %r9d            # imm = 0x211
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x2258f
jmp 0x22591
cmpq $0x0, 0x20(%rsp)
je 0x225a1
cmpq $0x0, 0x8(%rsp)
jne 0x225d9
movq 0x191a30(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13bab4(%rip), %rsi    # 0x15e066
leaq 0x140286(%rip), %rdx    # 0x16283f
leaq 0x140268(%rip), %rcx    # 0x162828
leaq 0x13f5dd(%rip), %r8     # 0x161ba4
movl $0x212, %r9d            # imm = 0x212
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x225db
movq 0x20(%rsp), %rdi
leaq 0x1587cf(%rip), %rsi    # 0x17adb6
callq 0x21700
testb $0x1, %al
jne 0x225f2
jmp 0x22606
movq 0x8(%rsp), %rdi
leaq 0x20(%rsp), %rsi
movl $0x8, %edx
callq 0x76220
xorl %eax, %eax
addq $0x28, %rsp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_node.c
// Function: gt_feature_node_determine_transcripttypes
void gt_feature_node_determine_transcripttypes(GtFeatureNode *fn)
{
  SaveExonAndCDSInfo info;
  GT_UNUSED int had_err;
  gt_assert(fn);
  info.exon_features = gt_array_new(sizeof (GtFeatureNode*));
  info.cds_features = gt_array_new(sizeof (GtFeatureNode*));
  had_err = gt_feature_node_traverse_children(fn, &info,
                                              determine_transcripttypes, false,
                                              NULL);
  gt_assert(!had_err); /* cannot happen, because determine_transcripttypes() is
                          sane */
  gt_array_delete(info.exon_features);
  gt_array_delete(info.cds_features);
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
cmpq $0x0, 0x20(%rsp)
jne 0x22659
movq 0x1919b0(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13ba34(%rip), %rsi    # 0x15e066
leaq 0x14ff48(%rip), %rdx    # 0x172581
leaq 0x13fa30(%rip), %rcx    # 0x162070
leaq 0x13f55d(%rip), %r8     # 0x161ba4
movl $0x263, %r9d            # imm = 0x263
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x2265b
movl $0x8, %edi
callq 0x75ab0
movq %rax, 0x10(%rsp)
movl $0x8, %edi
callq 0x75ab0
movq %rax, 0x18(%rsp)
movq 0x20(%rsp), %rdi
leaq 0x10(%rsp), %rsi
leaq 0x76(%rip), %rdx        # 0x22700
xorl %ecx, %ecx
xorl %eax, %eax
movl %eax, %r8d
callq 0x22090
movl %eax, 0xc(%rsp)
cmpl $0x0, 0xc(%rsp)
je 0x226d9
movq 0x191930(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13b9b4(%rip), %rsi    # 0x15e066
leaq 0x144905(%rip), %rdx    # 0x166fbe
leaq 0x13f9b0(%rip), %rcx    # 0x162070
leaq 0x13f4dd(%rip), %r8     # 0x161ba4
movl $0x269, %r9d            # imm = 0x269
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x226db
movq 0x10(%rsp), %rdi
callq 0x770a0
movq 0x18(%rsp), %rdi
callq 0x770a0
addq $0x28, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_node.c
// Function: determine_transcripttypes
static int determine_transcripttypes(GtFeatureNode *fn, void *data,
                                     GT_UNUSED GtError *err)
{
  SaveExonAndCDSInfo *info = (SaveExonAndCDSInfo*) data;
  GT_UNUSED int had_err;
  gt_error_check(err);
  gt_assert(fn && info);
  /* reset exon_features and cds_features */
  gt_array_reset(info->exon_features);
  gt_array_reset(info->cds_features);
  /* collect all direct children exons */
  had_err = gt_feature_node_traverse_direct_children(fn, info,
                                                     save_exons_and_cds, NULL);
  gt_assert(!had_err); /* cannot happen, because save_exons_and_cds() is sane */
  /* set transcript feature type, if necessary */
  set_transcript_types(info->exon_features, gt_feature_node_get_strand(fn));
  set_transcript_types(info->cds_features, gt_feature_node_get_strand(fn));
  return 0;
}

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x30(%rsp)
movq %rsi, 0x28(%rsp)
movq %rdx, 0x20(%rsp)
movq 0x28(%rsp), %rax
movq %rax, 0x18(%rsp)
cmpq $0x0, 0x20(%rsp)
je 0x2276d
movq 0x20(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0x22735
jmp 0x2276d
movq 0x19189c(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13b920(%rip), %rsi    # 0x15e066
leaq 0x13befb(%rip), %rdx    # 0x15e648
leaq 0x13f92c(%rip), %rcx    # 0x162080
leaq 0x13f449(%rip), %r8     # 0x161ba4
movl $0x250, %r9d            # imm = 0x250
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x2276f
jmp 0x22771
cmpq $0x0, 0x30(%rsp)
je 0x22781
cmpq $0x0, 0x18(%rsp)
jne 0x227b9
movq 0x191850(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13b8d4(%rip), %rsi    # 0x15e066
leaq 0x1400ba(%rip), %rdx    # 0x162853
leaq 0x13f8e0(%rip), %rcx    # 0x162080
leaq 0x13f3fd(%rip), %r8     # 0x161ba4
movl $0x251, %r9d            # imm = 0x251
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x227bb
movq 0x18(%rsp), %rax
movq (%rax), %rdi
callq 0x765c0
movq 0x18(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x765c0
movq 0x30(%rsp), %rdi
movq 0x18(%rsp), %rsi
leaq 0x1de9(%rip), %rdx      # 0x245d0
xorl %eax, %eax
movl %eax, %ecx
callq 0x23790
movl %eax, 0x14(%rsp)
cmpl $0x0, 0x14(%rsp)
je 0x22833
movq 0x1917d6(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13b85a(%rip), %rsi    # 0x15e066
leaq 0x1447ab(%rip), %rdx    # 0x166fbe
leaq 0x13f866(%rip), %rcx    # 0x162080
leaq 0x13f383(%rip), %r8     # 0x161ba4
movl $0x258, %r9d            # imm = 0x258
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x22835
movq 0x18(%rsp), %rax
movq (%rax), %rax
movq %rax, (%rsp)
movq 0x30(%rsp), %rdi
callq 0x20a10
movq (%rsp), %rdi
movl %eax, %esi
callq 0x24700
movq 0x18(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x8(%rsp)
movq 0x30(%rsp), %rdi
callq 0x20a10
movq 0x8(%rsp), %rdi
movl %eax, %esi
callq 0x24700
xorl %eax, %eax
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_set_end
void gt_feature_node_set_end(GtFeatureNode *fn, GtUword end)
{
  gt_assert(fn && fn->range.start <= end);
  fn->range.end = end;
  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)
cmpq $0x0, 0x10(%rsp)
je 0x22916
movq 0x10(%rsp), %rax
movq 0x48(%rax), %rax
cmpq 0x8(%rsp), %rax
jbe 0x2294e
movq 0x1916bb(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13b73f(%rip), %rsi    # 0x15e066
leaq 0x13f796(%rip), %rdx    # 0x1620c4
leaq 0x13f7ac(%rip), %rcx    # 0x1620e1
leaq 0x13f268(%rip), %r8     # 0x161ba4
movl $0x279, %r9d            # imm = 0x279
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x22950
movq 0x8(%rsp), %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x50(%rax)
movq 0x10(%rsp), %rax
cmpq $0x0, 0x80(%rax)
je 0x229b0
movq 0x10(%rsp), %rax
movq 0x80(%rax), %rax
cmpq $0x0, 0x38(%rax)
je 0x229b0
movq 0x10(%rsp), %rax
movq 0x80(%rax), %rax
movq 0x38(%rax), %rax
movq 0x10(%rsp), %rdi
movq 0x10(%rsp), %rsi
addq $0x48, %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_set_score_p
void gt_feature_node_set_score_p(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)
movq %rsi, 0x8(%rsp)
cmpq $0x0, 0x10(%rsp)
jne 0x22a0e
movq 0x1915fb(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13b67f(%rip), %rsi    # 0x15e066
leaq 0x14fb93(%rip), %rdx    # 0x172581
leaq 0x13f71e(%rip), %rcx    # 0x162113
leaq 0x13f1a8(%rip), %r8     # 0x161ba4
movl $0x28a, %r9d            # imm = 0x28A
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x22a10
movq 0x10(%rsp), %rax
movl 0x68(%rax), %ecx
orl $0x2000, %ecx           # imm = 0x2000
movl %ecx, 0x68(%rax)
movq 0x8(%rsp), %rax
movss (%rax), %xmm0
movq 0x10(%rsp), %rax
movss %xmm0, 0x58(%rax)
movq 0x10(%rsp), %rax
cmpq $0x0, 0x80(%rax)
je 0x22a88
movq 0x10(%rsp), %rax
movq 0x80(%rax), %rax
cmpq $0x0, (%rax)
je 0x22a88
movq 0x10(%rsp), %rax
movq 0x80(%rax), %rax
movq (%rax), %rax
movq 0x10(%rsp), %rdi
movq 0x8(%rsp), %rcx
movss (%rcx), %xmm0
cvtss2sd %xmm0, %xmm0
movq 0x10(%rsp), %rcx
movq 0x80(%rcx), %rcx
movq 0x60(%rcx), %rsi
callq *%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_unset_score
void gt_feature_node_unset_score(GtFeatureNode *fn)
{
  gt_assert(fn);
  fn->bit_field &= ~(1 << SCORE_IS_DEFINED_OFFSET);
  fn->score = GT_UNDEF_FLOAT;
  if (fn->observer && fn->observer->score_changed)
    fn->observer->score_changed(fn, fn->score, fn->observer->data);
}

// Assembly:
pushq %rax
movq %rdi, (%rsp)
cmpq $0x0, (%rsp)
jne 0x22ad4
movq 0x191535(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13b5b9(%rip), %rsi    # 0x15e066
leaq 0x14facd(%rip), %rdx    # 0x172581
leaq 0x13f674(%rip), %rcx    # 0x16212f
leaq 0x13f0e2(%rip), %r8     # 0x161ba4
movl $0x293, %r9d            # imm = 0x293
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x22ad6
movq (%rsp), %rax
movl 0x68(%rax), %ecx
andl $0xffffdfff, %ecx       # imm = 0xFFFFDFFF
movl %ecx, 0x68(%rax)
movq (%rsp), %rax
movss 0x13f086(%rip), %xmm0   # 0x161b78
movss %xmm0, 0x58(%rax)
movq (%rsp), %rax
cmpq $0x0, 0x80(%rax)
je 0x22b46
movq (%rsp), %rax
movq 0x80(%rax), %rax
cmpq $0x0, (%rax)
je 0x22b46
movq (%rsp), %rax
movq 0x80(%rax), %rax
movq (%rax), %rax
movq (%rsp), %rdi
movq (%rsp), %rcx
movss 0x58(%rcx), %xmm0
cvtss2sd %xmm0, %xmm0
movq (%rsp), %rcx
movq 0x80(%rcx), %rcx
movq 0x60(%rcx), %rsi
callq *%rax
popq %rax
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_node.c
// Function: gt_feature_node_add_attribute
void gt_feature_node_add_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_add(&fn->attributes, attr_name, attr_value);
  if (fn->observer && fn->observer->attribute_changed) {
    fn->observer->attribute_changed(fn, true, 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 0x22b79
cmpq $0x0, 0x8(%rsp)
je 0x22b79
cmpq $0x0, (%rsp)
jne 0x22bb1
movq 0x191458(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13b4dc(%rip), %rsi    # 0x15e066
leaq 0x13f5ba(%rip), %rdx    # 0x16214b
leaq 0x13f5d1(%rip), %rcx    # 0x162169
leaq 0x13f005(%rip), %r8     # 0x161ba4
movl $0x29e, %r9d            # imm = 0x29E
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x22bb3
jmp 0x22bb5
movq 0x8(%rsp), %rdi
callq 0xb240
cmpq $0x0, %rax
jne 0x22bfd
movq 0x19140c(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13b490(%rip), %rsi    # 0x15e066
leaq 0x13f5aa(%rip), %rdx    # 0x162187
leaq 0x13f585(%rip), %rcx    # 0x162169
leaq 0x13efb9(%rip), %r8     # 0x161ba4
movl $0x29f, %r9d            # imm = 0x29F
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x22bff
jmp 0x22c01
movq (%rsp), %rdi
callq 0xb240
cmpq $0x0, %rax
jne 0x22c48
movq 0x1913c1(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13b445(%rip), %rsi    # 0x15e066
leaq 0x13f571(%rip), %rdx    # 0x162199
leaq 0x13f53a(%rip), %rcx    # 0x162169
leaq 0x13ef6e(%rip), %r8     # 0x161ba4
movl $0x2a0, %r9d            # imm = 0x2A0
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x22c4a
movq 0x10(%rsp), %rax
cmpq $0x0, 0x60(%rax)
jne 0x22c72
movq 0x8(%rsp), %rdi
movq (%rsp), %rsi
callq 0x36340
movq %rax, %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x60(%rax)
jmp 0x22c89
movq 0x10(%rsp), %rdi
addq $0x60, %rdi
movq 0x8(%rsp), %rsi
movq (%rsp), %rdx
callq 0x36490
movq 0x10(%rsp), %rax
cmpq $0x0, 0x80(%rax)
je 0x22ce0
movq 0x10(%rsp), %rax
movq 0x80(%rax), %rax
cmpq $0x0, 0x28(%rax)
je 0x22ce0
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
movl $0x1, %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_remove_attribute
void gt_feature_node_remove_attribute(GtFeatureNode *fn,
                                      const char *attr_name)
{
  gt_assert(fn && attr_name);
  gt_assert(strlen(attr_name)); /* attribute name cannot be empty */
  gt_assert(fn->attributes); /* attribute list must exist already */
  if (gt_tag_value_map_size(fn->attributes) == 1) {
    gt_tag_value_map_delete(fn->attributes);
    fn->attributes = NULL;
  } else
    gt_tag_value_map_remove(&fn->attributes, attr_name);
  if (fn->observer && fn->observer->attribute_deleted) {
    fn->observer->attribute_deleted(fn, attr_name, fn->observer->data);
  }
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
movq %rsi, 0x8(%rsp)
cmpq $0x0, 0x10(%rsp)
je 0x22d0e
cmpq $0x0, 0x8(%rsp)
jne 0x22d46
movq 0x1912c3(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13b347(%rip), %rsi    # 0x15e066
leaq 0x13f4a4(%rip), %rdx    # 0x1621ca
leaq 0x13f4ad(%rip), %rcx    # 0x1621da
leaq 0x13ee70(%rip), %r8     # 0x161ba4
movl $0x2bf, %r9d            # imm = 0x2BF
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x22d48
jmp 0x22d4a
movq 0x8(%rsp), %rdi
callq 0xb240
cmpq $0x0, %rax
jne 0x22d92
movq 0x191277(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13b2fb(%rip), %rsi    # 0x15e066
leaq 0x13f415(%rip), %rdx    # 0x162187
leaq 0x13f461(%rip), %rcx    # 0x1621da
leaq 0x13ee24(%rip), %r8     # 0x161ba4
movl $0x2c0, %r9d            # imm = 0x2C0
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x22d94
jmp 0x22d96
movq 0x10(%rsp), %rax
cmpq $0x0, 0x60(%rax)
jne 0x22dda
movq 0x19122f(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13b2b3(%rip), %rsi    # 0x15e066
leaq 0x13f441(%rip), %rdx    # 0x1621fb
leaq 0x13f419(%rip), %rcx    # 0x1621da
leaq 0x13eddc(%rip), %r8     # 0x161ba4
movl $0x2c1, %r9d            # imm = 0x2C1
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x22ddc
movq 0x10(%rsp), %rax
movq 0x60(%rax), %rdi
callq 0x36ed0
cmpq $0x1, %rax
jne 0x22e0d
movq 0x10(%rsp), %rax
movq 0x60(%rax), %rdi
callq 0x372f0
movq 0x10(%rsp), %rax
movq $0x0, 0x60(%rax)
jmp 0x22e20
movq 0x10(%rsp), %rdi
addq $0x60, %rdi
movq 0x8(%rsp), %rsi
callq 0x367b0
movq 0x10(%rsp), %rax
cmpq $0x0, 0x80(%rax)
je 0x22e6e
movq 0x10(%rsp), %rax
movq 0x80(%rax), %rax
cmpq $0x0, 0x30(%rax)
je 0x22e6e
movq 0x10(%rsp), %rax
movq 0x80(%rax), %rax
movq 0x30(%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_foreach_attribute
void gt_feature_node_foreach_attribute(GtFeatureNode *fn,
                                       GtFeatureNodeAttributeIterFunc iterfunc,
                                       void *data)
{
  gt_assert(fn && iterfunc);
  if (fn->attributes) {
    gt_tag_value_map_foreach(fn->attributes,
                             (GtTagValueMapIteratorFunc) iterfunc,
                             data);
  }
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
movq %rsi, 0x8(%rsp)
movq %rdx, (%rsp)
cmpq $0x0, 0x10(%rsp)
je 0x22ea2
cmpq $0x0, 0x8(%rsp)
jne 0x22eda
movq 0x19112f(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13b1b3(%rip), %rsi    # 0x15e066
leaq 0x13f350(%rip), %rdx    # 0x16220a
leaq 0x13f358(%rip), %rcx    # 0x162219
leaq 0x13ecdc(%rip), %r8     # 0x161ba4
movl $0x2d0, %r9d            # imm = 0x2D0
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x22edc
movq 0x10(%rsp), %rax
cmpq $0x0, 0x60(%rax)
je 0x22eff
movq 0x10(%rsp), %rax
movq 0x60(%rax), %rdi
movq 0x8(%rsp), %rsi
movq (%rsp), %rdx
callq 0x36f30
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_has_gft
static bool feature_node_has_gft(const GtFeatureNode *fn, const char **fnts)
{
  GtFeatureNodeIterator *fni;
  GtFeatureNode *child;
  bool has_gft = false;
  gt_assert(fn && fnts && fnts[0] != NULL);
  fni = gt_feature_node_iterator_new(fn);
  while ((child = gt_feature_node_iterator_next(fni))) {
    GtUword i = 0;
    while (fnts[i] != NULL) {
      if (gt_feature_node_has_type((GtFeatureNode*) child, fnts[i])) {
        has_gft = true;
        break;
      }
      i++;
    }
    if (has_gft)
      break;
  }
  gt_feature_node_iterator_delete(fni);
  return has_gft;
}

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x30(%rsp)
movq %rsi, 0x28(%rsp)
movb $0x0, 0x17(%rsp)
cmpq $0x0, 0x30(%rsp)
je 0x22f5e
cmpq $0x0, 0x28(%rsp)
je 0x22f5e
movq 0x28(%rsp), %rax
cmpq $0x0, (%rax)
jne 0x22f96
movq 0x191073(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13b0f7(%rip), %rsi    # 0x15e066
leaq 0x13f910(%rip), %rdx    # 0x162886
leaq 0x13f927(%rip), %rcx    # 0x1628a4
leaq 0x13ec20(%rip), %r8     # 0x161ba4
movl $0x2dd, %r9d            # imm = 0x2DD
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x22f98
movq 0x30(%rsp), %rdi
callq 0x248a0
movq %rax, 0x20(%rsp)
movq 0x20(%rsp), %rdi
callq 0x24bd0
movq %rax, 0x18(%rsp)
cmpq $0x0, %rax
je 0x23016
movq $0x0, 0x8(%rsp)
movq 0x28(%rsp), %rax
movq 0x8(%rsp), %rcx
cmpq $0x0, (%rax,%rcx,8)
je 0x2300b
movq 0x18(%rsp), %rdi
movq 0x28(%rsp), %rax
movq 0x8(%rsp), %rcx
movq (%rax,%rcx,8), %rsi
callq 0x21700
testb $0x1, %al
jne 0x22ff4
jmp 0x22ffb
movb $0x1, 0x17(%rsp)
jmp 0x2300b
movq 0x8(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x8(%rsp)
jmp 0x22fc5
testb $0x1, 0x17(%rsp)
je 0x23014
jmp 0x23016
jmp 0x22fa7
movq 0x20(%rsp), %rdi
callq 0x24cf0
movb 0x17(%rsp), %al
andb $0x1, %al
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_average_splice_site_prob
double gt_feature_node_average_splice_site_prob(const GtFeatureNode *fn,
                                                GtUword *num_ss)
{
  GtFeatureNodeIterator *fni;
  GtFeatureNode *child;
  GtUword num_of_splice_sites = 0;
  double averagessp = 0.0;
  gt_assert(fn);
  fni = gt_feature_node_iterator_new(fn);
  while ((child = gt_feature_node_iterator_next(fni))) {
    if (gt_feature_node_has_type(child, gt_ft_five_prime_cis_splice_site) ||
        gt_feature_node_has_type(child, gt_ft_five_prime_splice_site) ||
        gt_feature_node_has_type(child, gt_ft_three_prime_cis_splice_site) ||
        gt_feature_node_has_type(child, gt_ft_three_prime_splice_site)) {
      averagessp += gt_feature_node_get_score((GtFeatureNode*) child);
      num_of_splice_sites++;
    }
  }
  gt_feature_node_iterator_delete(fni);
  if (num_of_splice_sites)
    averagessp /= num_of_splice_sites;
  if (num_ss)
    *num_ss = num_of_splice_sites;
  return averagessp;
}

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x30(%rsp)
movq %rsi, 0x28(%rsp)
movq $0x0, 0x10(%rsp)
xorps %xmm0, %xmm0
movsd %xmm0, 0x8(%rsp)
cmpq $0x0, 0x30(%rsp)
jne 0x230b0
movq 0x190f59(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13afdd(%rip), %rsi    # 0x15e066
leaq 0x14f4f1(%rip), %rdx    # 0x172581
leaq 0x13f20e(%rip), %rcx    # 0x1622a5
leaq 0x13eb06(%rip), %r8     # 0x161ba4
movl $0x306, %r9d            # imm = 0x306
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x230b2
movq 0x30(%rsp), %rdi
callq 0x248a0
movq %rax, 0x20(%rsp)
movq 0x20(%rsp), %rdi
callq 0x24bd0
movq %rax, 0x18(%rsp)
cmpq $0x0, %rax
je 0x2315d
movq 0x18(%rsp), %rdi
leaq 0x13f159(%rip), %rsi    # 0x16223f
callq 0x21700
testb $0x1, %al
jne 0x23130
movq 0x18(%rsp), %rdi
leaq 0x13f15f(%rip), %rsi    # 0x16225a
callq 0x21700
testb $0x1, %al
jne 0x23130
movq 0x18(%rsp), %rdi
leaq 0x13f161(%rip), %rsi    # 0x162271
callq 0x21700
testb $0x1, %al
jne 0x23130
movq 0x18(%rsp), %rdi
leaq 0x13f168(%rip), %rsi    # 0x16228d
callq 0x21700
testb $0x1, %al
jne 0x23130
jmp 0x23158
movq 0x18(%rsp), %rdi
callq 0x21d30
cvtss2sd %xmm0, %xmm0
addsd 0x8(%rsp), %xmm0
movsd %xmm0, 0x8(%rsp)
movq 0x10(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x10(%rsp)
jmp 0x230c1
movq 0x20(%rsp), %rdi
callq 0x24cf0
cmpq $0x0, 0x10(%rsp)
je 0x231a7
movaps 0x13b30a(%rip), %xmm0   # 0x15e480
movq 0x10(%rsp), %xmm1
punpckldq %xmm0, %xmm1    # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
movapd 0x13b308(%rip), %xmm0   # 0x15e490
subpd %xmm0, %xmm1
movaps %xmm1, %xmm0
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm0, %xmm1
movsd 0x8(%rsp), %xmm0
divsd %xmm1, %xmm0
movsd %xmm0, 0x8(%rsp)
cmpq $0x0, 0x28(%rsp)
je 0x231bc
movq 0x10(%rsp), %rcx
movq 0x28(%rsp), %rax
movq %rcx, (%rax)
movsd 0x8(%rsp), %xmm0
addq $0x38, %rsp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_node.c
// Function: gt_feature_node_is_similar
bool gt_feature_node_is_similar(const GtFeatureNode *fn_a,
                                const GtFeatureNode *fn_b)
{
  GtRange range_a, range_b;
  gt_assert(fn_a && fn_b);
  range_a = feature_node_get_range((GtGenomeNode*) fn_a);
  range_b = feature_node_get_range((GtGenomeNode*) fn_b);
  if (!gt_str_cmp(gt_genome_node_get_seqid((GtGenomeNode*) fn_a),
                  gt_genome_node_get_seqid((GtGenomeNode*) fn_b)) &&
      (gt_feature_node_get_type(fn_a) == gt_feature_node_get_type(fn_b)) &&
      (!gt_range_compare(&range_a, &range_b)) &&
      (gt_feature_node_get_strand(fn_a) ==
       gt_feature_node_get_strand(fn_b)) &&
      (gt_feature_node_get_phase(fn_a) ==
       gt_feature_node_get_phase(fn_b))) {
    return true;
  }
  return false;
}

// Assembly:
subq $0x78, %rsp
movq %rdi, 0x68(%rsp)
movq %rsi, 0x60(%rsp)
cmpq $0x0, 0x68(%rsp)
je 0x231ee
cmpq $0x0, 0x60(%rsp)
jne 0x23226
movq 0x190de3(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13ae67(%rip), %rsi    # 0x15e066
leaq 0x13f0c8(%rip), %rdx    # 0x1622ce
leaq 0x13f0ce(%rip), %rcx    # 0x1622db
leaq 0x13e990(%rip), %r8     # 0x161ba4
movl $0x31d, %r9d            # imm = 0x31D
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x23228
movq 0x68(%rsp), %rdi
callq 0x20390
movq %rax, 0x30(%rsp)
movq %rdx, 0x38(%rsp)
movq 0x30(%rsp), %rax
movq %rax, 0x50(%rsp)
movq 0x38(%rsp), %rax
movq %rax, 0x58(%rsp)
movq 0x60(%rsp), %rdi
callq 0x20390
movq %rax, 0x20(%rsp)
movq %rdx, 0x28(%rsp)
movq 0x20(%rsp), %rax
movq %rax, 0x40(%rsp)
movq 0x28(%rsp), %rax
movq %rax, 0x48(%rsp)
movq 0x68(%rsp), %rdi
callq 0x258a0
movq %rax, 0x18(%rsp)
movq 0x60(%rsp), %rdi
callq 0x258a0
movq 0x18(%rsp), %rdi
movq %rax, %rsi
callq 0x19bd0
cmpl $0x0, %eax
jne 0x2332c
movq 0x68(%rsp), %rdi
callq 0x211d0
movq %rax, 0x10(%rsp)
movq 0x60(%rsp), %rdi
callq 0x211d0
movq %rax, %rcx
movq 0x10(%rsp), %rax
cmpq %rcx, %rax
jne 0x2332c
leaq 0x50(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x93850
cmpl $0x0, %eax
jne 0x2332c
movq 0x68(%rsp), %rdi
callq 0x20a10
movl %eax, 0xc(%rsp)
movq 0x60(%rsp), %rdi
callq 0x20a10
movl %eax, %ecx
movl 0xc(%rsp), %eax
cmpl %ecx, %eax
jne 0x2332c
movq 0x68(%rsp), %rdi
callq 0x21f60
movl %eax, 0x8(%rsp)
movq 0x60(%rsp), %rdi
callq 0x21f60
movl %eax, %ecx
movl 0x8(%rsp), %eax
cmpl %ecx, %eax
jne 0x2332c
movb $0x1, 0x77(%rsp)
jmp 0x23331
movb $0x0, 0x77(%rsp)
movb 0x77(%rsp), %al
andb $0x1, %al
addq $0x78, %rsp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_node.c
// Function: gt_feature_node_unit_test
int gt_feature_node_unit_test(GtError *err)
{
  GtGenomeNode *fn;
  GtStr *seqid;
  int had_err = 0;

  gt_error_check(err);

  seqid = gt_str_new_cstr("seqid");
  fn = gt_feature_node_new(seqid, gt_ft_gene, 1, 1000, GT_STRAND_FORWARD);

  gt_ensure(!gt_feature_node_score_is_defined((GtFeatureNode*) fn));

  gt_genome_node_delete(fn);
  gt_str_delete(seqid);

  return had_err;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movl $0x0, 0xc(%rsp)
cmpq $0x0, 0x20(%rsp)
je 0x233a1
movq 0x20(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0x23369
jmp 0x233a1
movq 0x190c68(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13acec(%rip), %rsi    # 0x15e066
leaq 0x13b2c7(%rip), %rdx    # 0x15e648
leaq 0x13ef6e(%rip), %rcx    # 0x1622f6
leaq 0x13e815(%rip), %r8     # 0x161ba4
movl $0x333, %r9d            # imm = 0x333
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x233a3
leaq 0x1615c6(%rip), %rdi    # 0x184970
callq 0x18f70
movq %rax, 0x10(%rsp)
movq 0x10(%rsp), %rdi
leaq 0x16c150(%rip), %rsi    # 0x18f510
movl $0x1, %edx
movl $0x3e8, %ecx            # imm = 0x3E8
xorl %r8d, %r8d
callq 0x20580
movq %rax, 0x18(%rsp)
cmpl $0x0, 0xc(%rsp)
jne 0x23426
movq 0x18(%rsp), %rdi
callq 0x212b0
testb $0x1, %al
jne 0x233ee
jmp 0x23424
movq 0x20(%rsp), %rdi
leaq 0x13cd7d(%rip), %rsi    # 0x160177
leaq 0x13ef0f(%rip), %rdx    # 0x162310
leaq 0x13eeee(%rip), %rcx    # 0x1622f6
leaq 0x13e795(%rip), %r8     # 0x161ba4
movl $0x338, %r9d            # imm = 0x338
movb $0x0, %al
callq 0xc0d0
movl $0xffffffff, 0xc(%rsp)  # imm = 0xFFFFFFFF
jmp 0x23426
jmp 0x23428
movq 0x18(%rsp), %rdi
callq 0x26eb0
movq 0x10(%rsp), %rdi
callq 0x1afc0
movl 0xc(%rsp), %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: gt_feature_node_traverse_children_top
int gt_feature_node_traverse_children_top(GtFeatureNode *feature_node,
                                          void *data,
                                          GtFeatureNodeTraverseFunc traverse,
                                          GtError *err)
{
  GtArray *toplist;
  int had_err = 0;

  if (!feature_node)
    return 0;

  /* this is the first traversal */
  gt_assert(feature_node_get_dfs_status(feature_node) == DFS_WHITE);

  /* initialization */
  toplist = gt_array_new(sizeof (GtFeatureNode*));

  /* process queue */
  dfs_visit(feature_node, toplist);

  /* process topologically sorted feature node list */
  if (traverse) {
    while (gt_array_size(toplist)) {
      GtFeatureNode *fn = *(GtFeatureNode**) gt_array_pop(toplist);
      if ((had_err = traverse(fn, data, err)))
        break;
    }
  }

  /* free */
  gt_array_delete(toplist);

  return had_err;
}

// Assembly:
subq $0x48, %rsp
movq %rdi, 0x38(%rsp)
movq %rsi, 0x30(%rsp)
movq %rdx, 0x28(%rsp)
movq %rcx, 0x20(%rsp)
movl $0x0, 0x14(%rsp)
cmpq $0x0, 0x38(%rsp)
jne 0x235a5
movl $0x0, 0x44(%rsp)
jmp 0x23671
jmp 0x235a7
movq 0x38(%rsp), %rdi
callq 0x23490
cmpl $0x0, %eax
je 0x235ee
movq 0x190a1b(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13aa9f(%rip), %rsi    # 0x15e066
leaq 0x13ee4e(%rip), %rdx    # 0x16241c
leaq 0x13ee7e(%rip), %rcx    # 0x162453
leaq 0x13e5c8(%rip), %r8     # 0x161ba4
movl $0x3f9, %r9d            # imm = 0x3F9
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x235f0
movl $0x8, %edi
callq 0x75ab0
movq %rax, 0x18(%rsp)
movq 0x38(%rsp), %rdi
movq 0x18(%rsp), %rsi
callq 0x23680
cmpq $0x0, 0x28(%rsp)
je 0x2365f
jmp 0x23618
movq 0x18(%rsp), %rdi
callq 0x76490
cmpq $0x0, %rax
je 0x2365d
movq 0x18(%rsp), %rdi
callq 0x75d90
movq (%rax), %rax
movq %rax, 0x8(%rsp)
movq 0x28(%rsp), %rax
movq 0x8(%rsp), %rdi
movq 0x30(%rsp), %rsi
movq 0x20(%rsp), %rdx
callq *%rax
movl %eax, 0x14(%rsp)
cmpl $0x0, %eax
je 0x2365b
jmp 0x2365d
jmp 0x23618
jmp 0x2365f
movq 0x18(%rsp), %rdi
callq 0x770a0
movl 0x14(%rsp), %eax
movl %eax, 0x44(%rsp)
movl 0x44(%rsp), %eax
addq $0x48, %rsp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_node.c
// Function: dfs_visit
static void dfs_visit(GtFeatureNode *u, GtArray *toplist)
{
  GtDlistelem *dlistelem;
  gt_assert(u && toplist);
  feature_node_set_dfs_status(u, DFS_GRAY);
  if (u->children) {
    for (dlistelem = gt_dlist_last(u->children);
         dlistelem != NULL;
         dlistelem = gt_dlistelem_previous(dlistelem)) {
      GtFeatureNode *v = (GtFeatureNode*) gt_dlistelem_get_data(dlistelem);
      if (feature_node_get_dfs_status(v) == DFS_WHITE)
        dfs_visit(v, toplist);
    }
  }
  feature_node_set_dfs_status(u, DFS_BLACK);
  if (!gt_feature_node_is_pseudo(u))
    gt_array_add(toplist, u);
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq %rsi, 0x18(%rsp)
cmpq $0x0, 0x20(%rsp)
je 0x2369e
cmpq $0x0, 0x18(%rsp)
jne 0x236d6
movq 0x190933(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13a9b7(%rip), %rsi    # 0x15e066
leaq 0x13f203(%rip), %rdx    # 0x1628b9
leaq 0x13f209(%rip), %rcx    # 0x1628c6
leaq 0x13e4e0(%rip), %r8     # 0x161ba4
movl $0x3d8, %r9d            # imm = 0x3D8
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x236d8
movq 0x20(%rsp), %rdi
movl $0x1, %esi
callq 0x234f0
movq 0x20(%rsp), %rax
cmpq $0x0, 0x70(%rax)
je 0x23750
movq 0x20(%rsp), %rax
movq 0x70(%rax), %rdi
callq 0x7d8a0
movq %rax, 0x10(%rsp)
cmpq $0x0, 0x10(%rsp)
je 0x2374e
movq 0x10(%rsp), %rdi
callq 0x7d9e0
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rdi
callq 0x23490
cmpl $0x0, %eax
jne 0x2373b
movq 0x8(%rsp), %rdi
movq 0x18(%rsp), %rsi
callq 0x23680
jmp 0x2373d
movq 0x10(%rsp), %rdi
callq 0x7f260
movq %rax, 0x10(%rsp)
jmp 0x23706
jmp 0x23750
movq 0x20(%rsp), %rdi
movl $0x2, %esi
callq 0x234f0
movq 0x20(%rsp), %rdi
callq 0x21880
testb $0x1, %al
jne 0x23781
movq 0x18(%rsp), %rdi
leaq 0x20(%rsp), %rsi
movl $0x8, %edx
callq 0x76220
addq $0x28, %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_traverse_direct_children
int gt_feature_node_traverse_direct_children(GtFeatureNode *fn,
                                             void *traverse_func_data,
                                             GtFeatureNodeTraverseFunc traverse,
                                             GtError *err)
{
  GtDlistelem *dlistelem;
  int had_err = 0;
  gt_error_check(err);
  if (!fn || !traverse)
    return 0;
  if (fn->children) {
    for (dlistelem = gt_dlist_first(fn->children); dlistelem != NULL;
         dlistelem = gt_dlistelem_next(dlistelem)) {
      had_err = traverse((GtFeatureNode*) gt_dlistelem_get_data(dlistelem),
                          traverse_func_data, err);
      if (had_err)
        break;
    }
  }
  return had_err;
}

// Assembly:
subq $0x48, %rsp
movq %rdi, 0x38(%rsp)
movq %rsi, 0x30(%rsp)
movq %rdx, 0x28(%rsp)
movq %rcx, 0x20(%rsp)
movl $0x0, 0x14(%rsp)
cmpq $0x0, 0x20(%rsp)
je 0x23800
movq 0x20(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0x237c8
jmp 0x23800
movq 0x190809(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13a88d(%rip), %rsi    # 0x15e066
leaq 0x13ae68(%rip), %rdx    # 0x15e648
leaq 0x13ec92(%rip), %rcx    # 0x162479
leaq 0x13e3b6(%rip), %r8     # 0x161ba4
movl $0x421, %r9d            # imm = 0x421
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x23802
cmpq $0x0, 0x38(%rsp)
je 0x23812
cmpq $0x0, 0x28(%rsp)
jne 0x2381c
movl $0x0, 0x44(%rsp)
jmp 0x23895
movq 0x38(%rsp), %rax
cmpq $0x0, 0x70(%rax)
je 0x2388d
movq 0x38(%rsp), %rax
movq 0x70(%rax), %rdi
callq 0x7d850
movq %rax, 0x18(%rsp)
cmpq $0x0, 0x18(%rsp)
je 0x2388b
movq 0x28(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x18(%rsp), %rdi
callq 0x7d9e0
movq %rax, %rdi
movq 0x8(%rsp), %rax
movq 0x30(%rsp), %rsi
movq 0x20(%rsp), %rdx
callq *%rax
movl %eax, 0x14(%rsp)
cmpl $0x0, 0x14(%rsp)
je 0x23878
jmp 0x2388b
jmp 0x2387a
movq 0x18(%rsp), %rdi
callq 0x7da30
movq %rax, 0x18(%rsp)
jmp 0x2383b
jmp 0x2388d
movl 0x14(%rsp), %eax
movl %eax, 0x44(%rsp)
movl 0x44(%rsp), %eax
addq $0x48, %rsp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_node.c
// Function: gt_feature_node_number_of_children_of_type
GtUword gt_feature_node_number_of_children_of_type(const GtFeatureNode
                                                         *parent,
                                                         const GtFeatureNode
                                                         *node)
{
  GT_UNUSED int had_err = 0;
  GtTypeTraverseInfo traverseinfo;
  gt_assert(parent && node);
  traverseinfo.type = gt_feature_node_get_type(node);
  traverseinfo.number = 0;
  had_err = gt_feature_node_traverse_direct_children((GtFeatureNode*) parent,
                                                     &traverseinfo, count_types,
                                                     NULL);
  return traverseinfo.number;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq %rsi, 0x18(%rsp)
movl $0x0, 0x14(%rsp)
cmpq $0x0, 0x20(%rsp)
je 0x23926
cmpq $0x0, 0x18(%rsp)
jne 0x2395e
movq 0x1906ab(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13a72f(%rip), %rsi    # 0x15e066
leaq 0x13eb87(%rip), %rdx    # 0x1624c5
leaq 0x13eb8f(%rip), %rcx    # 0x1624d4
leaq 0x13e258(%rip), %r8     # 0x161ba4
movl $0x43d, %r9d            # imm = 0x43D
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x23960
movq 0x18(%rsp), %rdi
callq 0x211d0
movq %rax, (%rsp)
movq $0x0, 0x8(%rsp)
movq 0x20(%rsp), %rdi
movq %rsp, %rsi
leaq 0x1a(%rip), %rdx        # 0x239a0
xorl %eax, %eax
movl %eax, %ecx
callq 0x23790
movl %eax, 0x14(%rsp)
movq 0x8(%rsp), %rax
addq $0x28, %rsp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_node.c
// Function: count_types
static int count_types(GtFeatureNode *fn, void *data, GT_UNUSED GtError *err)
{
  int had_err = 0;
  GtTypeTraverseInfo *traverseinfo = (GtTypeTraverseInfo*) data;
  gt_error_check(err);
  if (strcmp(traverseinfo->type, gt_feature_node_get_type(fn)) == 0)
    traverseinfo->number++;
  return had_err;
}

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x30(%rsp)
movq %rsi, 0x28(%rsp)
movq %rdx, 0x20(%rsp)
movl $0x0, 0x1c(%rsp)
movq 0x28(%rsp), %rax
movq %rax, 0x10(%rsp)
cmpq $0x0, 0x20(%rsp)
je 0x23a15
movq 0x20(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0x239dd
jmp 0x23a15
movq 0x1905f4(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13a678(%rip), %rsi    # 0x15e066
leaq 0x13ac53(%rip), %rdx    # 0x15e648
leaq 0x13eed4(%rip), %rcx    # 0x1628d0
leaq 0x13e1a1(%rip), %r8     # 0x161ba4
movl $0x414, %r9d            # imm = 0x414
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x23a17
movq 0x10(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x8(%rsp)
movq 0x30(%rsp), %rdi
callq 0x211d0
movq 0x8(%rsp), %rdi
movq %rax, %rsi
callq 0xb850
cmpl $0x0, %eax
jne 0x23a51
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rcx
addq $0x1, %rcx
movq %rcx, 0x8(%rax)
movl 0x1c(%rsp), %eax
addq $0x38, %rsp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_node.c
// Function: add_parent
static void add_parent(unsigned int *bit_field)
{
  switch (get_parent_status(*bit_field)) {
    case NO_PARENT:
      set_parent_status(bit_field, ONE_PARENT);
      break;
    case ONE_PARENT:
      set_parent_status(bit_field, MULTIPLE_PARENTS);
      break;
    case MULTIPLE_PARENTS:
      break;
  }
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
movq 0x10(%rsp), %rax
movl (%rax), %edi
callq 0x24860
movl %eax, %ecx
movl %ecx, 0xc(%rsp)
testl %eax, %eax
je 0x23a97
jmp 0x23a81
movl 0xc(%rsp), %eax
subl $0x1, %eax
je 0x23aa8
jmp 0x23a8c
movl 0xc(%rsp), %eax
subl $0x2, %eax
je 0x23ab9
jmp 0x23abb
movq 0x10(%rsp), %rdi
movl $0x1, %esi
callq 0x24870
jmp 0x23abb
movq 0x10(%rsp), %rdi
movl $0x2, %esi
callq 0x24870
jmp 0x23abb
jmp 0x23abb
addq $0x18, %rsp
retq
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_node.c
// Function: gt_feature_node_remove_leaf
void gt_feature_node_remove_leaf(GtFeatureNode *tree, GtFeatureNode *leafn)
{
  GT_UNUSED int had_err;
  GtFeatureNodeLeafDeleteInfo info;
  gt_assert(tree && leafn);

  info.leaf = leafn;
  info.parent = tree;
  info.deleted = false;

  /* ref child node to enable traversal */
  gt_genome_node_ref((GtGenomeNode*) leafn);
  gt_assert(gt_feature_node_number_of_children(leafn) == 0);
  had_err = gt_feature_node_traverse_children(tree, &info, remove_leaf, true,
                                              NULL);
  /* unref child node, traversal done */
  gt_genome_node_delete((GtGenomeNode*) leafn);

  if (info.deleted)
    set_tree_status(&tree->bit_field, TREE_STATUS_UNDETERMINED);

  gt_assert(!had_err); /* cannot happen, remove_leaf() is sane */
}

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x30(%rsp)
movq %rsi, 0x28(%rsp)
cmpq $0x0, 0x30(%rsp)
je 0x23ade
cmpq $0x0, 0x28(%rsp)
jne 0x23b16
movq 0x1904f3(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13a577(%rip), %rsi    # 0x15e066
leaq 0x13eaa2(%rip), %rdx    # 0x162598
leaq 0x13eaa9(%rip), %rcx    # 0x1625a6
leaq 0x13e0a0(%rip), %r8     # 0x161ba4
movl $0x479, %r9d            # imm = 0x479
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x23b18
movq 0x28(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x30(%rsp), %rax
movq %rax, 0x10(%rsp)
movb $0x0, 0x18(%rsp)
movq 0x28(%rsp), %rdi
callq 0x25140
movq 0x28(%rsp), %rdi
callq 0x238a0
cmpq $0x0, %rax
je 0x23b83
movq 0x190486(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13a50a(%rip), %rsi    # 0x15e066
leaq 0x13ea5f(%rip), %rdx    # 0x1625c2
leaq 0x13ea3c(%rip), %rcx    # 0x1625a6
leaq 0x13e033(%rip), %r8     # 0x161ba4
movl $0x481, %r9d            # imm = 0x481
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x23b85
movq 0x30(%rsp), %rdi
leaq 0x8(%rsp), %rsi
leaq 0x8a(%rip), %rdx        # 0x23c20
movl $0x1, %ecx
xorl %eax, %eax
movl %eax, %r8d
callq 0x22090
movl %eax, 0x24(%rsp)
movq 0x28(%rsp), %rdi
callq 0x26eb0
testb $0x1, 0x18(%rsp)
je 0x23bca
movq 0x30(%rsp), %rdi
addq $0x68, %rdi
xorl %esi, %esi
callq 0x207f0
jmp 0x23bcc
cmpl $0x0, 0x24(%rsp)
je 0x23c0b
movq 0x1903fe(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13a482(%rip), %rsi    # 0x15e066
leaq 0x1433d3(%rip), %rdx    # 0x166fbe
leaq 0x13e9b4(%rip), %rcx    # 0x1625a6
leaq 0x13dfab(%rip), %r8     # 0x161ba4
movl $0x48a, %r9d            # imm = 0x48A
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x23c0d
addq $0x38, %rsp
retq
nopw %cs:(%rax,%rax)