LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/add_ids_visitor.c
// Function: gt_add_ids_visitor_new
GtNodeVisitor* gt_add_ids_visitor_new(bool ensure_sorting)
{
  GtNodeVisitor *nv = gt_node_visitor_create(gt_add_ids_visitor_class());
  GtAddIDsVisitor *add_ids_visitor = add_ids_visitor_cast(nv);
  add_ids_visitor->node_buffer = gt_queue_new();
  add_ids_visitor->defined_seqids = gt_cstr_table_new();
  add_ids_visitor->undefined_sequence_regions =
    gt_hashmap_new(GT_HASH_STRING, NULL,
                   (GtFree) automatic_sequence_region_delete);
  add_ids_visitor->ensure_sorting = ensure_sorting;
  return nv;
}

// Assembly:
subq $0x18, %rsp
movb %dil, %al
andb $0x1, %al
movb %al, 0x17(%rsp)
callq 0xa39c0
movq %rax, %rdi
callq 0x34cc0
movq %rax, 0x8(%rsp)
callq 0xa39c0
movq %rax, %rdi
movq 0x8(%rsp), %rsi
callq 0x34d50
movq %rax, (%rsp)
callq 0x909b0
movq %rax, %rcx
movq (%rsp), %rax
movq %rcx, 0x10(%rax)
callq 0x7d020
movq %rax, %rcx
movq (%rsp), %rax
movq %rcx, 0x18(%rax)
movl $0x1, %edi
xorl %eax, %eax
movl %eax, %esi
leaq 0x2b(%rip), %rdx        # 0xa4390
callq 0x86190
movq %rax, %rcx
movq (%rsp), %rax
movq %rcx, 0x20(%rax)
movb 0x17(%rsp), %cl
movq (%rsp), %rax
andb $0x1, %cl
movb %cl, 0x28(%rax)
movq 0x8(%rsp), %rax
addq $0x18, %rsp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/add_ids_visitor.c
// Function: automatic_sequence_region_delete
static void automatic_sequence_region_delete(AutomaticSequenceRegion *auto_sr)
{
  GtUword i;
  if (!auto_sr) return;
  gt_genome_node_delete(auto_sr->sequence_region);
  for (i = 0; i < gt_array_size(auto_sr->feature_nodes); i++) {
    gt_genome_node_delete(*(GtGenomeNode**)
                              gt_array_get(auto_sr->feature_nodes, i));
  }
  gt_array_delete(auto_sr->feature_nodes);
  gt_free(auto_sr);
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
cmpq $0x0, 0x10(%rsp)
jne 0xa43a6
jmp 0xa442e
movq 0x10(%rsp), %rax
movq (%rax), %rdi
callq 0x26eb0
movq $0x0, 0x8(%rsp)
movq 0x8(%rsp), %rax
movq %rax, (%rsp)
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x76490
movq %rax, %rcx
movq (%rsp), %rax
cmpq %rcx, %rax
jae 0xa440a
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x8(%rsp), %rsi
callq 0x75c80
movq (%rax), %rdi
callq 0x26eb0
movq 0x8(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x8(%rsp)
jmp 0xa43bc
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x770a0
movq 0x10(%rsp), %rdi
leaq 0xcdae0(%rip), %rsi     # 0x171f04
movl $0x45, %edx
callq 0xdab0
addq $0x18, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/add_ids_visitor.c
// Function: gt_add_ids_visitor_finalize
void gt_add_ids_visitor_finalize(GtNodeVisitor *nv)
{
  GT_UNUSED int had_err;
  GtAddIDsVisitor *add_ids_visitor = add_ids_visitor_cast(nv);
  had_err = gt_hashmap_foreach(add_ids_visitor->undefined_sequence_regions,
                               add_auto_sr_to_queue,
                               add_ids_visitor->node_buffer, NULL);
  gt_assert(!had_err); /* add_auto_sr_to_queue() is sane */
  gt_hashmap_reset(add_ids_visitor->undefined_sequence_regions);
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
callq 0xa39c0
movq %rax, %rdi
movq 0x10(%rsp), %rsi
callq 0x34d50
movq %rax, (%rsp)
movq (%rsp), %rax
movq 0x20(%rax), %rdi
movq (%rsp), %rax
movq 0x10(%rax), %rdx
leaq 0x6a(%rip), %rsi        # 0xa4560
xorl %eax, %eax
movl %eax, %ecx
callq 0x866f0
movl %eax, 0xc(%rsp)
cmpl $0x0, 0xc(%rsp)
je 0xa4542
movq 0x10fac7(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0xb9b4b(%rip), %rsi     # 0x15e066
leaq 0xc2a9c(%rip), %rdx     # 0x166fbe
leaq 0xcd9bf(%rip), %rcx     # 0x171ee8
leaq 0xcd9d4(%rip), %r8      # 0x171f04
movl $0x124, %r9d            # imm = 0x124
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0xa4544
movq (%rsp), %rax
movq 0x20(%rax), %rdi
callq 0x867b0
addq $0x18, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/add_ids_visitor.c
// Function: add_auto_sr_to_queue
static int add_auto_sr_to_queue(GT_UNUSED void *key, void *value, void *data,
                                GT_UNUSED GtError *err)
{
  AutomaticSequenceRegion *auto_sr = value;
  GtQueue *genome_nodes = data;
  GtGenomeNode *gf;
  unsigned int i;
  gt_error_check(err);
  gt_assert(key && value && data);
  if (gt_array_size(auto_sr->feature_nodes)) {
    gt_queue_add(genome_nodes, auto_sr->sequence_region);
    auto_sr->sequence_region = NULL;
    for (i = 0; i < gt_array_size(auto_sr->feature_nodes); i++) {
      gf = *(GtGenomeNode**) gt_array_get(auto_sr->feature_nodes, i);
      gt_queue_add(genome_nodes, gf);
    }
    gt_array_reset(auto_sr->feature_nodes);
  }
  return 0;
}

// Assembly:
subq $0x48, %rsp
movq %rdi, 0x40(%rsp)
movq %rsi, 0x38(%rsp)
movq %rdx, 0x30(%rsp)
movq %rcx, 0x28(%rsp)
movq 0x38(%rsp), %rax
movq %rax, 0x20(%rsp)
movq 0x30(%rsp), %rax
movq %rax, 0x18(%rsp)
cmpq $0x0, 0x28(%rsp)
je 0xa45dc
movq 0x28(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0xa45a4
jmp 0xa45dc
movq 0x10fa2d(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0xb9ab1(%rip), %rsi     # 0x15e066
leaq 0xba08c(%rip), %rdx     # 0x15e648
leaq 0xcdb77(%rip), %rcx     # 0x17213a
leaq 0xcd93a(%rip), %r8      # 0x171f04
movl $0x10f, %r9d            # imm = 0x10F
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0xa45de
jmp 0xa45e0
cmpq $0x0, 0x40(%rsp)
je 0xa45f8
cmpq $0x0, 0x38(%rsp)
je 0xa45f8
cmpq $0x0, 0x30(%rsp)
jne 0xa4630
movq 0x10f9d9(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0xb9a5d(%rip), %rsi     # 0x15e066
leaq 0xba112(%rip), %rdx     # 0x15e722
leaq 0xcdb23(%rip), %rcx     # 0x17213a
leaq 0xcd8e6(%rip), %r8      # 0x171f04
movl $0x110, %r9d            # imm = 0x110
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0xa4632
movq 0x20(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x76490
cmpq $0x0, %rax
je 0xa46d8
movq 0x18(%rsp), %rdi
movq 0x20(%rsp), %rax
movq (%rax), %rsi
callq 0x909d0
movq 0x20(%rsp), %rax
movq $0x0, (%rax)
movl $0x0, 0xc(%rsp)
movl 0xc(%rsp), %eax
movq %rax, (%rsp)
movq 0x20(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x76490
movq %rax, %rcx
movq (%rsp), %rax
cmpq %rcx, %rax
jae 0xa46ca
movq 0x20(%rsp), %rax
movq 0x8(%rax), %rdi
movl 0xc(%rsp), %eax
movl %eax, %esi
callq 0x75c80
movq (%rax), %rax
movq %rax, 0x10(%rsp)
movq 0x18(%rsp), %rdi
movq 0x10(%rsp), %rsi
callq 0x909d0
movl 0xc(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xc(%rsp)
jmp 0xa4670
movq 0x20(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x765c0
xorl %eax, %eax
addq $0x48, %rsp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/add_ids_visitor.c
// Function: automatic_sequence_region_new
static AutomaticSequenceRegion* automatic_sequence_region_new(bool is_circular)
{
  AutomaticSequenceRegion *auto_sr;
  auto_sr = gt_malloc(sizeof (AutomaticSequenceRegion));
  auto_sr->feature_nodes = gt_array_new(sizeof (GtFeatureNode*));
  auto_sr->is_circular = is_circular;
  return auto_sr;
}

// Assembly:
subq $0x18, %rsp
movb %dil, %al
andb $0x1, %al
movb %al, 0x17(%rsp)
movl $0x18, %edi
leaq 0xcd80b(%rip), %rsi     # 0x171f04
movl $0x35, %edx
callq 0xd2e0
movq %rax, 0x8(%rsp)
movl $0x8, %edi
callq 0x75ab0
movq %rax, %rcx
movq 0x8(%rsp), %rax
movq %rcx, 0x8(%rax)
movb 0x17(%rsp), %cl
movq 0x8(%rsp), %rax
andb $0x1, %cl
movb %cl, 0x10(%rax)
movq 0x8(%rsp), %rax
addq $0x18, %rsp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/cds_check_stream.c
// Function: gt_cds_check_stream_class
const GtNodeStreamClass* gt_cds_check_stream_class(void)
{
  static const GtNodeStreamClass *nsc = NULL;
  gt_class_alloc_lock_enter();
  if (!nsc) {
    nsc = gt_node_stream_class_new(sizeof (GtCDSCheckStream),
                                   cds_check_stream_free,
                                   cds_check_stream_next);
  }
  gt_class_alloc_lock_leave();
  return nsc;
}

// Assembly:
pushq %rax
callq 0x7b730
cmpq $0x0, 0x111dc2(%rip)    # 0x1b6510
jne 0xa476f
movl $0x20, %edi
leaq 0x24(%rip), %rsi        # 0xa4780
leaq 0x6d(%rip), %rdx        # 0xa47d0
callq 0x344e0
movq %rax, 0x111da1(%rip)    # 0x1b6510
callq 0x7b790
movq 0x111d95(%rip), %rax    # 0x1b6510
popq %rcx
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/cds_check_stream.c
// Function: cds_check_stream_next
static int cds_check_stream_next(GtNodeStream *ns, GtGenomeNode **gn,
                                 GtError *err)
{
  GtCDSCheckStream *cs;
  int had_err;
  gt_error_check(err);
  cs = cds_check_stream_cast(ns);
  gt_assert(cs);
  had_err = gt_node_stream_next(cs->in_stream, gn, err);
  if (!had_err && *gn)
    had_err = gt_genome_node_accept(*gn, cs->cds_check_visitor, err);
  if (had_err) {
    /* we own the node -> delete it */
    gt_genome_node_delete(*gn);
    *gn = NULL;
  }
  return had_err;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq %rsi, 0x18(%rsp)
movq %rdx, 0x10(%rsp)
cmpq $0x0, 0x10(%rsp)
je 0xa4833
movq 0x10(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0xa47fb
jmp 0xa4833
movq 0x10f7d6(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0xb985a(%rip), %rsi     # 0x15e066
leaq 0xb9e35(%rip), %rdx     # 0x15e648
leaq 0xcd97a(%rip), %rcx     # 0x172194
leaq 0xcd953(%rip), %r8      # 0x172174
movl $0x25, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0xa4835
callq 0xa4740
movq %rax, %rdi
movq 0x20(%rsp), %rsi
callq 0x34af0
movq %rax, 0x8(%rsp)
cmpq $0x0, 0x8(%rsp)
jne 0xa488c
movq 0x10f77d(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0xb9801(%rip), %rsi     # 0x15e066
leaq 0xb9b10(%rip), %rdx     # 0x15e37c
leaq 0xcd921(%rip), %rcx     # 0x172194
leaq 0xcd8fa(%rip), %r8      # 0x172174
movl $0x27, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0xa488e
movq 0x8(%rsp), %rax
movq 0x10(%rax), %rdi
movq 0x18(%rsp), %rsi
movq 0x10(%rsp), %rdx
callq 0x34790
movl %eax, 0x4(%rsp)
cmpl $0x0, 0x4(%rsp)
jne 0xa48db
movq 0x18(%rsp), %rax
cmpq $0x0, (%rax)
je 0xa48db
movq 0x18(%rsp), %rax
movq (%rax), %rdi
movq 0x8(%rsp), %rax
movq 0x18(%rax), %rsi
movq 0x10(%rsp), %rdx
callq 0x25cc0
movl %eax, 0x4(%rsp)
cmpl $0x0, 0x4(%rsp)
je 0xa48fb
movq 0x18(%rsp), %rax
movq (%rax), %rdi
callq 0x26eb0
movq 0x18(%rsp), %rax
movq $0x0, (%rax)
movl 0x4(%rsp), %eax
addq $0x28, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/cds_check_stream.c
// Function: gt_cds_check_stream_new
GtNodeStream* gt_cds_check_stream_new(GtNodeStream *in_stream)
{
  GtNodeStream *ns = gt_node_stream_create(gt_cds_check_stream_class(), false);
  GtCDSCheckStream *cs = cds_check_stream_cast(ns);
  cs->in_stream = gt_node_stream_ref(in_stream);
  cs->cds_check_visitor = gt_cds_check_visitor_new();
  return ns;
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
callq 0xa4740
movq %rax, %rdi
xorl %esi, %esi
callq 0x34580
movq %rax, 0x8(%rsp)
callq 0xa4740
movq %rax, %rdi
movq 0x8(%rsp), %rsi
callq 0x34af0
movq %rax, (%rsp)
movq 0x10(%rsp), %rdi
callq 0x34650
movq %rax, %rcx
movq (%rsp), %rax
movq %rcx, 0x10(%rax)
callq 0xa4c80
movq %rax, %rcx
movq (%rsp), %rax
movq %rcx, 0x18(%rax)
movq 0x8(%rsp), %rax
addq $0x18, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/cds_check_visitor.c
// Function: gt_cds_check_visitor_class
const GtNodeVisitorClass* gt_cds_check_visitor_class()
{
  static const GtNodeVisitorClass *nvc = NULL;
  gt_class_alloc_lock_enter();
  if (!nvc) {
    nvc = gt_node_visitor_class_new(sizeof (GtCDSCheckVisitor),
                                    cds_check_visitor_free,
                                    NULL,
                                    cds_check_visitor_feature_node,
                                    NULL,
                                    NULL,
                                    NULL);
  }
  gt_class_alloc_lock_leave();
  return nvc;
}

// Assembly:
pushq %rax
callq 0x7b730
cmpq $0x0, 0x111b2a(%rip)    # 0x1b6518
jne 0xa4a22
movl $0x28, %edi
leaq 0x34(%rip), %rsi        # 0xa4a30
xorl %eax, %eax
movl %eax, %r9d
leaq 0x78(%rip), %rcx        # 0xa4a80
movq %r9, %rdx
movq %r9, %r8
movq $0x0, (%rsp)
callq 0x34b70
movq %rax, 0x111af6(%rip)    # 0x1b6518
callq 0x7b790
movq 0x111aea(%rip), %rax    # 0x1b6518
popq %rcx
retq
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/cds_check_visitor.c
// Function: gt_cds_check_visitor_new
GtNodeVisitor* gt_cds_check_visitor_new(void)
{
  GtNodeVisitor *nv = gt_node_visitor_create(gt_cds_check_visitor_class());
  GtCDSCheckVisitor *v = cds_check_visitor_cast(nv);
  v->cds_features = gt_hashmap_new(GT_HASH_DIRECT, NULL, NULL);
  v->cds_features_to_split = gt_hashmap_new(GT_HASH_DIRECT, NULL, NULL);
  return nv;
}

// Assembly:
subq $0x18, %rsp
callq 0xa49e0
movq %rax, %rdi
callq 0x34cc0
movq %rax, 0x10(%rsp)
callq 0xa49e0
movq %rax, %rdi
movq 0x10(%rsp), %rsi
callq 0x34d50
movq %rax, 0x8(%rsp)
xorl %edi, %edi
xorl %eax, %eax
movl %eax, %edx
movq %rdx, %rsi
callq 0x86190
movq %rax, %rcx
movq 0x8(%rsp), %rax
movq %rcx, 0x10(%rax)
xorl %edi, %edi
xorl %eax, %eax
movl %eax, %edx
movq %rdx, %rsi
callq 0x86190
movq %rax, %rcx
movq 0x8(%rsp), %rax
movq %rcx, 0x18(%rax)
movq 0x10(%rsp), %rax
addq $0x18, %rsp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/cds_check_visitor.c
// Function: split_cds_features
static void split_cds_features(GtHashmap *features_to_split, GtFeatureNode *fn)
{
  GtArray *cds_features;
  GtUword i;
  GT_UNUSED int had_err;
  gt_assert(features_to_split && fn);
  cds_features = gt_array_new(sizeof (GtFeatureNode*));
  had_err = gt_hashmap_foreach(features_to_split, collect_cds_feature,
                               cds_features, NULL);
  gt_assert(!had_err); /* collect_cds_feature() is sane */
  gt_assert(gt_array_size(cds_features));
  for (i = 0; i < gt_array_size(cds_features); i++) {
    GtFeatureNode *cds_feature;
    cds_feature = *(GtFeatureNode**) gt_array_get(cds_features, i);
    split_cds_feature(cds_feature, fn);
  }
  gt_array_delete(cds_features);
}

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x30(%rsp)
movq %rsi, 0x28(%rsp)
cmpq $0x0, 0x30(%rsp)
je 0xa4fde
cmpq $0x0, 0x28(%rsp)
jne 0xa5016
movq 0x10eff3(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0xb9077(%rip), %rsi     # 0x15e066
leaq 0xcd3fb(%rip), %rdx     # 0x1723f1
leaq 0xcd40c(%rip), %rcx     # 0x172409
leaq 0xcd1cc(%rip), %r8      # 0x1721d0
movl $0x103, %r9d            # imm = 0x103
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0xa5018
movl $0x8, %edi
callq 0x75ab0
movq %rax, 0x20(%rsp)
movq 0x30(%rsp), %rdi
movq 0x20(%rsp), %rdx
leaq 0x7d8(%rip), %rsi       # 0xa5810
xorl %eax, %eax
movl %eax, %ecx
callq 0x866f0
movl %eax, 0x14(%rsp)
cmpl $0x0, 0x14(%rsp)
je 0xa5084
movq 0x10ef85(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0xb9009(%rip), %rsi     # 0x15e066
leaq 0xc1f5a(%rip), %rdx     # 0x166fbe
leaq 0xcd39e(%rip), %rcx     # 0x172409
leaq 0xcd15e(%rip), %r8      # 0x1721d0
movl $0x107, %r9d            # imm = 0x107
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0xa5086
jmp 0xa5088
movq 0x20(%rsp), %rdi
callq 0x76490
cmpq $0x0, %rax
jne 0xa50d0
movq 0x10ef39(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0xb8fbd(%rip), %rsi     # 0x15e066
leaq 0xe9067(%rip), %rdx     # 0x18e117
leaq 0xcd352(%rip), %rcx     # 0x172409
leaq 0xcd112(%rip), %r8      # 0x1721d0
movl $0x108, %r9d            # imm = 0x108
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0xa50d2
movq $0x0, 0x18(%rsp)
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
movq 0x20(%rsp), %rdi
callq 0x76490
movq %rax, %rcx
movq (%rsp), %rax
cmpq %rcx, %rax
jae 0xa5130
movq 0x20(%rsp), %rdi
movq 0x18(%rsp), %rsi
callq 0x75c80
movq (%rax), %rax
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rdi
movq 0x28(%rsp), %rsi
callq 0xa58a0
movq 0x18(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x18(%rsp)
jmp 0xa50db
movq 0x20(%rsp), %rdi
callq 0x770a0
addq $0x38, %rsp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/cds_check_visitor.c
// Function: check_cds_phases_hm
static int check_cds_phases_hm(GT_UNUSED void *key, void *value, void *data,
                               GtError *err)
{
  GtArray *cds_features = value;
  gt_error_check(err);
  gt_assert(cds_features && data);
  return check_cds_phases(cds_features, data, true, false, err);
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq %rsi, 0x18(%rsp)
movq %rdx, 0x10(%rsp)
movq %rcx, 0x8(%rsp)
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
cmpq $0x0, 0x8(%rsp)
je 0xa57a1
movq 0x8(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0xa5769
jmp 0xa57a1
movq 0x10e868(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0xb88ec(%rip), %rsi     # 0x15e066
leaq 0xb8ec7(%rip), %rdx     # 0x15e648
leaq 0xccc40(%rip), %rcx     # 0x1723c8
leaq 0xcca41(%rip), %r8      # 0x1721d0
movl $0x8c, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0xa57a3
jmp 0xa57a5
cmpq $0x0, (%rsp)
je 0xa57b4
cmpq $0x0, 0x10(%rsp)
jne 0xa57ec
movq 0x10e81d(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0xb88a1(%rip), %rsi     # 0x15e066
leaq 0xccc10(%rip), %rdx     # 0x1723dc
leaq 0xccbf5(%rip), %rcx     # 0x1723c8
leaq 0xcc9f6(%rip), %r8      # 0x1721d0
movl $0x8d, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0xa57ee
movq (%rsp), %rdi
movq 0x10(%rsp), %rsi
movq 0x8(%rsp), %r8
movl $0x1, %edx
xorl %ecx, %ecx
callq 0xa5140
addq $0x28, %rsp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/cds_check_visitor.c
// Function: collect_cds_feature
static int collect_cds_feature(void *key, GT_UNUSED void *value, void *data,
                               GT_UNUSED GtError *err)
{
  GtArray *cds_features = data;
  gt_error_check(err);
  gt_array_add(cds_features, key);
  return 0;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq %rsi, 0x18(%rsp)
movq %rdx, 0x10(%rsp)
movq %rcx, 0x8(%rsp)
movq 0x10(%rsp), %rax
movq %rax, (%rsp)
cmpq $0x0, 0x8(%rsp)
je 0xa5881
movq 0x8(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0xa5849
jmp 0xa5881
movq 0x10e788(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0xb880c(%rip), %rsi     # 0x15e066
leaq 0xb8de7(%rip), %rdx     # 0x15e648
leaq 0xccbb4(%rip), %rcx     # 0x17241c
leaq 0xcc961(%rip), %r8      # 0x1721d0
movl $0xc6, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0xa5883
movq (%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/cds_check_visitor.c
// Function: split_cds_feature
static void split_cds_feature(GtFeatureNode *cds_feature, GtFeatureNode *fn)
{
  GtArray *parents;
  GtUword i;
  gt_assert(cds_feature && fn);

  /* find parents */
  parents = find_cds_parents(cds_feature, fn);

  /* remove CDS feature */
  gt_genome_node_ref((GtGenomeNode*) cds_feature);
  gt_feature_node_remove_leaf(fn, cds_feature);

  /* add CDS feature to all parents */
  for (i = 0; i < gt_array_size(parents); i++) {
    GtFeatureNode *parent = *(GtFeatureNode**) gt_array_get(parents, i);
    const char *id = gt_feature_node_get_attribute(parent, GT_GFF_ID);
    if (!i) {
      gt_feature_node_set_attribute(cds_feature, GT_GFF_PARENT, id);
      gt_feature_node_add_child(parent, cds_feature);
    }
    else {
      GtFeatureNode *new_cds = gt_feature_node_clone(cds_feature);
      gt_feature_node_set_attribute(new_cds, GT_GFF_PARENT, id);
      gt_feature_node_add_child(parent, new_cds);
    }
  }

  gt_array_delete(parents);
}

// Assembly:
subq $0x48, %rsp
movq %rdi, 0x40(%rsp)
movq %rsi, 0x38(%rsp)
cmpq $0x0, 0x40(%rsp)
je 0xa58be
cmpq $0x0, 0x38(%rsp)
jne 0xa58f6
movq 0x10e713(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0xb8797(%rip), %rsi     # 0x15e066
leaq 0xccb5a(%rip), %rdx     # 0x172430
leaq 0xccb65(%rip), %rcx     # 0x172442
leaq 0xcc8ec(%rip), %r8      # 0x1721d0
movl $0xe3, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0xa58f8
movq 0x40(%rsp), %rdi
movq 0x38(%rsp), %rsi
callq 0xa5a10
movq %rax, 0x30(%rsp)
movq 0x40(%rsp), %rdi
callq 0x25140
movq 0x38(%rsp), %rdi
movq 0x40(%rsp), %rsi
callq 0x23ac0
movq $0x0, 0x28(%rsp)
movq 0x28(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x30(%rsp), %rdi
callq 0x76490
movq %rax, %rcx
movq 0x8(%rsp), %rax
cmpq %rcx, %rax
jae 0xa59f8
movq 0x30(%rsp), %rdi
movq 0x28(%rsp), %rsi
callq 0x75c80
movq (%rax), %rax
movq %rax, 0x20(%rsp)
movq 0x20(%rsp), %rdi
leaq 0xbeeca(%rip), %rsi     # 0x164840
callq 0x1fde0
movq %rax, 0x18(%rsp)
cmpq $0x0, 0x28(%rsp)
jne 0xa59af
movq 0x40(%rsp), %rdi
movq 0x18(%rsp), %rdx
leaq 0xbeeaa(%rip), %rsi     # 0x164843
callq 0x21400
movq 0x20(%rsp), %rdi
movq 0x40(%rsp), %rsi
callq 0x20db0
jmp 0xa59e3
movq 0x40(%rsp), %rdi
callq 0x20f70
movq %rax, 0x10(%rsp)
movq 0x10(%rsp), %rdi
movq 0x18(%rsp), %rdx
leaq 0xbee74(%rip), %rsi     # 0x164843
callq 0x21400
movq 0x20(%rsp), %rdi
movq 0x10(%rsp), %rsi
callq 0x20db0
jmp 0xa59e5
movq 0x28(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x28(%rsp)
jmp 0xa592e
movq 0x30(%rsp), %rdi
callq 0x770a0
addq $0x48, %rsp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/cds_check_visitor.c
// Function: find_cds_parents
static GtArray* find_cds_parents(GtFeatureNode *cds_feature, GtFeatureNode *fn)
{
  GtFeatureNodeIterator *fni, *di;
  GtFeatureNode *parent, *child;
  GtArray *parents;
  gt_assert(cds_feature && fn);
  parents = gt_array_new(sizeof (GtFeatureNode*));
  fni = gt_feature_node_iterator_new(fn);
  while ((parent = gt_feature_node_iterator_next(fni))) {
    di = gt_feature_node_iterator_new_direct(parent);
    while ((child = gt_feature_node_iterator_next(di))) {
      if (child == cds_feature)
        gt_array_add(parents, parent);
    }
    gt_feature_node_iterator_delete(di);
  }
  gt_feature_node_iterator_delete(fni);
  return parents;
}

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x30(%rsp)
movq %rsi, 0x28(%rsp)
cmpq $0x0, 0x30(%rsp)
je 0xa5a2e
cmpq $0x0, 0x28(%rsp)
jne 0xa5a66
movq 0x10e5a3(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0xb8627(%rip), %rsi     # 0x15e066
leaq 0xcc9ea(%rip), %rdx     # 0x172430
leaq 0xcca07(%rip), %rcx     # 0x172454
leaq 0xcc77c(%rip), %r8      # 0x1721d0
movl $0xd0, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0xa5a68
movl $0x8, %edi
callq 0x75ab0
movq %rax, (%rsp)
movq 0x28(%rsp), %rdi
callq 0x248a0
movq %rax, 0x20(%rsp)
movq 0x20(%rsp), %rdi
callq 0x24bd0
movq %rax, 0x10(%rsp)
cmpq $0x0, %rax
je 0xa5aeb
movq 0x10(%rsp), %rdi
callq 0x24a80
movq %rax, 0x18(%rsp)
movq 0x18(%rsp), %rdi
callq 0x24bd0
movq %rax, 0x8(%rsp)
cmpq $0x0, %rax
je 0xa5adf
movq 0x8(%rsp), %rax
cmpq 0x30(%rsp), %rax
jne 0xa5add
movq (%rsp), %rdi
leaq 0x10(%rsp), %rsi
movl $0x8, %edx
callq 0x76220
jmp 0xa5aa9
movq 0x18(%rsp), %rdi
callq 0x24cf0
jmp 0xa5a85
movq 0x20(%rsp), %rdi
callq 0x24cf0
movq (%rsp), %rax
addq $0x38, %rsp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/comment_node.c
// Function: gt_comment_node_class
const GtGenomeNodeClass* gt_comment_node_class()
{
  static const GtGenomeNodeClass *gnc = NULL;
  gt_class_alloc_lock_enter();
  if (!gnc) {
    gnc = gt_genome_node_class_new(sizeof (GtCommentNode),
                                   comment_node_free,
                                   NULL,
                                   comment_node_get_idstr,
                                   comment_node_get_range,
                                   NULL,
                                   NULL,
                                   comment_node_accept);
  }
  gt_class_alloc_lock_leave();
  return gnc;
}

// Assembly:
subq $0x18, %rsp
callq 0x7b730
cmpq $0x0, 0x110a0f(%rip)    # 0x1b6520
jne 0xa5b55
movl $0x40, %edi
leaq 0x51(%rip), %rsi        # 0xa5b70
xorl %eax, %eax
movl %eax, %r9d
leaq 0xe5(%rip), %rcx        # 0xa5c10
leaq 0x14e(%rip), %r8        # 0xa5c80
leaq 0x177(%rip), %rax       # 0xa5cb0
movq %r9, %rdx
movq $0x0, (%rsp)
movq %rax, 0x8(%rsp)
callq 0x251c0
movq %rax, 0x1109cb(%rip)    # 0x1b6520
callq 0x7b790
movq 0x1109bf(%rip), %rax    # 0x1b6520
addq $0x18, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/comment_node.c
// Function: comment_node_free
static void comment_node_free(GtGenomeNode *gn)
{
  GtCommentNode *c = gt_comment_node_cast(gn);
  gt_assert(c && c->comment);
  gt_free(c->comment);
  gt_str_delete(c->comment_str);
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
movq 0x10(%rsp), %rdi
callq 0xa5df0
movq %rax, 0x8(%rsp)
cmpq $0x0, 0x8(%rsp)
je 0xa5b9c
movq 0x8(%rsp), %rax
cmpq $0x0, 0x30(%rax)
jne 0xa5bd4
movq 0x10e435(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0xb84b9(%rip), %rsi     # 0x15e066
leaq 0xcc8e1(%rip), %rdx     # 0x172495
leaq 0xcc906(%rip), %rcx     # 0x1724c1
leaq 0xcc8b7(%rip), %r8      # 0x172479
movl $0x25, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0xa5bd6
movq 0x8(%rsp), %rax
movq 0x30(%rax), %rdi
leaq 0xcc893(%rip), %rsi     # 0x172479
movl $0x26, %edx
callq 0xdab0
movq 0x8(%rsp), %rax
movq 0x38(%rax), %rdi
callq 0x1afc0
addq $0x18, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/comment_node.c
// Function: gt_comment_node_new
GtGenomeNode* gt_comment_node_new(const char *comment)
{
  GtGenomeNode *gn = gt_genome_node_create(gt_comment_node_class());
  GtCommentNode *c = gt_comment_node_cast(gn);
  gt_assert(comment);
  c->comment = gt_cstr_dup(comment);
  c->comment_str = gt_str_new_cstr("");
  return gn;
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
callq 0xa5b00
movq %rax, %rdi
callq 0x25530
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rdi
callq 0xa5df0
movq %rax, (%rsp)
cmpq $0x0, 0x10(%rsp)
jne 0xa5da9
movq 0x10e260(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0xb82e4(%rip), %rsi     # 0x15e066
leaq 0xc55db(%rip), %rdx     # 0x16b364
leaq 0xcc6d5(%rip), %rcx     # 0x172465
leaq 0xcc6e2(%rip), %r8      # 0x172479
movl $0x59, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0xa5dab
movq 0x10(%rsp), %rdi
callq 0x7c400
movq %rax, %rcx
movq (%rsp), %rax
movq %rcx, 0x30(%rax)
leaq 0xc611c(%rip), %rdi     # 0x16bee3
callq 0x18f70
movq %rax, %rcx
movq (%rsp), %rax
movq %rcx, 0x38(%rax)
movq 0x8(%rsp), %rax
addq $0x18, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/eof_node.c
// Function: gt_eof_node_class
const GtGenomeNodeClass* gt_eof_node_class()
{
  static const GtGenomeNodeClass *gnc = NULL;
  gt_class_alloc_lock_enter();
  if (!gnc) {
    gnc = gt_genome_node_class_new(sizeof (GtEOFNode),
                                   eof_node_free,
                                   NULL,
                                   eof_node_get_idstr,
                                   eof_node_get_range,
                                   NULL,
                                   eof_node_change_seqid,
                                   eof_node_accept);
  }
  gt_class_alloc_lock_leave();
  return gnc;
}

// Assembly:
subq $0x18, %rsp
callq 0x7b730
cmpq $0x0, 0x110687(%rip)    # 0x1b6528
jne 0xa5ee8
movl $0x38, %edi
leaq 0x51(%rip), %rsi        # 0xa5f00
xorl %eax, %eax
movl %eax, %r9d
leaq 0x85(%rip), %rcx        # 0xa5f40
leaq 0xde(%rip), %r8         # 0xa5fa0
leaq 0x107(%rip), %r10       # 0xa5fd0
leaq 0x110(%rip), %rax       # 0xa5fe0
movq %r9, %rdx
movq %r10, (%rsp)
movq %rax, 0x8(%rsp)
callq 0x251c0
movq %rax, 0x110640(%rip)    # 0x1b6528
callq 0x7b790
movq 0x110634(%rip), %rax    # 0x1b6528
addq $0x18, %rsp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/eof_node.c
// Function: eof_node_get_idstr
static GtStr* eof_node_get_idstr(GT_UNUSED GtGenomeNode *gn)
{
  GtEOFNode *eof;
  eof = gt_eof_node_cast(gn);
  if (!eof->idstr) {
    eof->idstr = gt_str_new_cstr(gt_genome_node_get_filename(gn));
  }
  return eof->idstr;
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
callq 0xa5e90
movq %rax, %rdi
movq 0x10(%rsp), %rsi
callq 0x256b0
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rax
cmpq $0x0, 0x30(%rax)
jne 0xa5f8a
movq 0x10(%rsp), %rdi
callq 0x257c0
movq %rax, %rdi
callq 0x18f70
movq %rax, %rcx
movq 0x8(%rsp), %rax
movq %rcx, 0x30(%rax)
movq 0x8(%rsp), %rax
movq 0x30(%rax), %rax
addq $0x18, %rsp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/eof_node.c
// Function: gt_eof_node_new
GtGenomeNode* gt_eof_node_new(void)
{
  GtEOFNode *eof;
  GtGenomeNode *gn = gt_genome_node_create(gt_eof_node_class());
  eof = gt_eof_node_cast(gn);
  eof->idstr = NULL;
  return gn;
}

// Assembly:
subq $0x18, %rsp
callq 0xa5e90
movq %rax, %rdi
callq 0x25530
movq %rax, 0x8(%rsp)
callq 0xa5e90
movq %rax, %rdi
movq 0x8(%rsp), %rsi
callq 0x256b0
movq %rax, 0x10(%rsp)
movq 0x10(%rsp), %rax
movq $0x0, 0x30(%rax)
movq 0x8(%rsp), %rax
addq $0x18, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_info.c
// Function: gt_feature_info_new
GtFeatureInfo* gt_feature_info_new(void)
{
  GtFeatureInfo *fi = gt_malloc(sizeof *fi);
  fi->id_to_genome_node = gt_hashmap_new(GT_HASH_STRING, gt_free_func,
                                         (GtFree) gt_genome_node_delete);
  fi->id_to_pseudo_parent = gt_hashmap_new(GT_HASH_STRING, gt_free_func,
                                           (GtFree) gt_genome_node_delete);
  return fi;
}

// Assembly:
pushq %rax
movl $0x10, %edi
leaq 0xcc419(%rip), %rsi     # 0x172526
movl $0x21, %edx
callq 0xd2e0
movq %rax, (%rsp)
movl $0x1, %edi
leaq -0x98507(%rip), %rsi    # 0xdc20
leaq -0x7f27e(%rip), %rdx    # 0x26eb0
callq 0x86190
movq %rax, %rcx
movq (%rsp), %rax
movq %rcx, (%rax)
movl $0x1, %edi
leaq -0x98529(%rip), %rsi    # 0xdc20
leaq -0x7f2a0(%rip), %rdx    # 0x26eb0
callq 0x86190
movq %rax, %rcx
movq (%rsp), %rax
movq %rcx, 0x8(%rax)
movq (%rsp), %rax
popq %rcx
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_info.c
// Function: gt_feature_info_delete
void gt_feature_info_delete(GtFeatureInfo *fi)
{
  if (!fi) return;
  gt_hashmap_delete(fi->id_to_genome_node);
  gt_hashmap_delete(fi->id_to_pseudo_parent);
  gt_free(fi);
}

// Assembly:
pushq %rax
movq %rdi, (%rsp)
cmpq $0x0, (%rsp)
jne 0xa617e
jmp 0xa61ac
movq (%rsp), %rax
movq (%rax), %rdi
callq 0x86cc0
movq (%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x86cc0
movq (%rsp), %rdi
leaq 0xcc384(%rip), %rsi     # 0x172526
movl $0x2e, %edx
callq 0xdab0
popq %rax
retq
nop
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_info.c
// Function: gt_feature_info_add
void gt_feature_info_add(GtFeatureInfo *fi, const char *id, GtFeatureNode *fn)
{
  gt_assert(fi && id && fn);
  gt_assert(!gt_feature_node_is_pseudo((GtFeatureNode*) fn));
  gt_hashmap_add(fi->id_to_genome_node, gt_cstr_dup(id),
                 gt_genome_node_ref((GtGenomeNode*) fn));
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq %rsi, 0x18(%rsp)
movq %rdx, 0x10(%rsp)
cmpq $0x0, 0x20(%rsp)
je 0xa62bb
cmpq $0x0, 0x18(%rsp)
je 0xa62bb
cmpq $0x0, 0x10(%rsp)
jne 0xa62f3
movq 0x10dd16(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0xb7d9a(%rip), %rsi     # 0x15e066
leaq 0xcc2a2(%rip), %rdx     # 0x172575
leaq 0xcc2aa(%rip), %rcx     # 0x172584
leaq 0xcc245(%rip), %r8      # 0x172526
movl $0x40, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0xa62f5
jmp 0xa62f7
movq 0x10(%rsp), %rdi
callq 0x21880
testb $0x1, %al
jne 0xa6307
jmp 0xa633f
movq 0x10dcca(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0xb7d4e(%rip), %rsi     # 0x15e066
leaq 0xcc279(%rip), %rdx     # 0x172598
leaq 0xcc25e(%rip), %rcx     # 0x172584
leaq 0xcc1f9(%rip), %r8      # 0x172526
movl $0x41, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0xa6341
movq 0x20(%rsp), %rax
movq (%rax), %rax
movq %rax, (%rsp)
movq 0x18(%rsp), %rdi
callq 0x7c400
movq %rax, 0x8(%rsp)
movq 0x10(%rsp), %rdi
callq 0x25140
movq (%rsp), %rdi
movq 0x8(%rsp), %rsi
movq %rax, %rdx
callq 0x86510
addq $0x28, %rsp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_info.c
// Function: gt_feature_info_add_pseudo_parent
void gt_feature_info_add_pseudo_parent(GtFeatureInfo *fi, const char *id,
                                       GtFeatureNode *pseudo_parent)
{
  gt_assert(fi && id && pseudo_parent);
  gt_assert(gt_feature_node_is_pseudo((GtFeatureNode*) pseudo_parent));
  gt_hashmap_add(fi->id_to_pseudo_parent, gt_cstr_dup(id),
                 gt_genome_node_ref((GtGenomeNode*) pseudo_parent));
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq %rsi, 0x18(%rsp)
movq %rdx, 0x10(%rsp)
cmpq $0x0, 0x20(%rsp)
je 0xa641b
cmpq $0x0, 0x18(%rsp)
je 0xa641b
cmpq $0x0, 0x10(%rsp)
jne 0xa6453
movq 0x10dbb6(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0xb7c3a(%rip), %rsi     # 0x15e066
leaq 0xcc1b7(%rip), %rdx     # 0x1725ea
leaq 0xcc1ca(%rip), %rcx     # 0x172604
leaq 0xcc0e5(%rip), %r8      # 0x172526
movl $0x50, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0xa6455
jmp 0xa6457
movq 0x10(%rsp), %rdi
callq 0x21880
testb $0x1, %al
jne 0xa649d
movq 0x10db6c(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0xb7bf0(%rip), %rsi     # 0x15e066
leaq 0xcc1a9(%rip), %rdx     # 0x172626
leaq 0xcc180(%rip), %rcx     # 0x172604
leaq 0xcc09b(%rip), %r8      # 0x172526
movl $0x51, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0xa649f
movq 0x20(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, (%rsp)
movq 0x18(%rsp), %rdi
callq 0x7c400
movq %rax, 0x8(%rsp)
movq 0x10(%rsp), %rdi
callq 0x25140
movq (%rsp), %rdi
movq 0x8(%rsp), %rsi
movq %rax, %rdx
callq 0x86510
addq $0x28, %rsp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_info.c
// Function: gt_feature_info_replace_pseudo_parent
void gt_feature_info_replace_pseudo_parent(GtFeatureInfo *fi,
                                           GtFeatureNode *child,
                                           GtFeatureNode *new_pseudo_parent)
{
  const char *id;
  gt_assert(fi && child && new_pseudo_parent);
  gt_assert(gt_feature_node_is_pseudo((GtFeatureNode*) new_pseudo_parent));
  id = gt_feature_node_get_attribute(child, GT_GFF_ID);
  gt_assert(id);
  gt_hashmap_remove(fi->id_to_pseudo_parent, id);
  gt_feature_info_add_pseudo_parent(fi, id, new_pseudo_parent);
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq %rsi, 0x18(%rsp)
movq %rdx, 0x10(%rsp)
cmpq $0x0, 0x20(%rsp)
je 0xa650b
cmpq $0x0, 0x18(%rsp)
je 0xa650b
cmpq $0x0, 0x10(%rsp)
jne 0xa6543
movq 0x10dac6(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0xb7b4a(%rip), %rsi     # 0x15e066
leaq 0xcc13d(%rip), %rdx     # 0x172660
leaq 0xcc157(%rip), %rcx     # 0x172681
leaq 0xcbff5(%rip), %r8      # 0x172526
movl $0x5b, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0xa6545
jmp 0xa6547
movq 0x10(%rsp), %rdi
callq 0x21880
testb $0x1, %al
jne 0xa658d
movq 0x10da7c(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0xb7b00(%rip), %rsi     # 0x15e066
leaq 0xcc13a(%rip), %rdx     # 0x1726a7
leaq 0xcc10d(%rip), %rcx     # 0x172681
leaq 0xcbfab(%rip), %r8      # 0x172526
movl $0x5c, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0xa658f
movq 0x18(%rsp), %rdi
leaq 0xbe2a5(%rip), %rsi     # 0x164840
callq 0x1fde0
movq %rax, 0x8(%rsp)
cmpq $0x0, 0x8(%rsp)
jne 0xa65e5
movq 0x10da24(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0xb7aa8(%rip), %rsi     # 0x15e066
leaq 0xcbf99(%rip), %rdx     # 0x17255e
leaq 0xcc0b5(%rip), %rcx     # 0x172681
leaq 0xcbf53(%rip), %r8      # 0x172526
movl $0x5e, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0xa65e7
movq 0x20(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x8(%rsp), %rsi
callq 0x86580
movq 0x20(%rsp), %rdi
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
callq 0xa63f0
addq $0x28, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_info.c
// Function: find_root
static GtFeatureNode* find_root(const GtFeatureInfo *fi, const char *id)
{
  const char *delim, *parents;
  GtFeatureNode *this_feature, *parent_pseudo_feature;
  gt_assert(fi && id);
  /* get feature */
  delim = strchr(id, ';');
  if (delim) {
    char *first_parent = gt_cstr_dup_nt(id, delim - id);
    this_feature = gt_hashmap_get(fi->id_to_genome_node, first_parent);
    parent_pseudo_feature = gt_hashmap_get(fi->id_to_pseudo_parent,
                                           first_parent);
    gt_free(first_parent);
  }
  else {
    this_feature = gt_hashmap_get(fi->id_to_genome_node, id);
    parent_pseudo_feature = gt_hashmap_get(fi->id_to_pseudo_parent, id);
  }
  gt_assert(this_feature);
  /* recursion */
  parents = gt_feature_node_get_attribute(this_feature, GT_GFF_PARENT);
  if (parents)
    return find_root(fi, parents);
  else if (parent_pseudo_feature)
    return parent_pseudo_feature;
  return this_feature;
}

// Assembly:
subq $0x48, %rsp
movq %rdi, 0x38(%rsp)
movq %rsi, 0x30(%rsp)
cmpq $0x0, 0x38(%rsp)
je 0xa66fe
cmpq $0x0, 0x30(%rsp)
jne 0xa6736
movq 0x10d8d3(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0xb7957(%rip), %rsi     # 0x15e066
leaq 0xcbe42(%rip), %rdx     # 0x172558
leaq 0xcbfd8(%rip), %rcx     # 0x1726f5
leaq 0xcbe02(%rip), %r8      # 0x172526
movl $0x67, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0xa6738
movq 0x30(%rsp), %rdi
movl $0x3b, %esi
callq 0xb1f0
movq %rax, 0x28(%rsp)
cmpq $0x0, 0x28(%rsp)
je 0xa67b7
movq 0x30(%rsp), %rdi
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rax
subq %rax, %rsi
callq 0x7c4a0
movq %rax, 0x8(%rsp)
movq 0x38(%rsp), %rax
movq (%rax), %rdi
movq 0x8(%rsp), %rsi
callq 0x86470
movq %rax, 0x18(%rsp)
movq 0x38(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x8(%rsp), %rsi
callq 0x86470
movq %rax, 0x10(%rsp)
movq 0x8(%rsp), %rdi
leaq 0xcbd7b(%rip), %rsi     # 0x172526
movl $0x6f, %edx
callq 0xdab0
jmp 0xa67e6
movq 0x38(%rsp), %rax
movq (%rax), %rdi
movq 0x30(%rsp), %rsi
callq 0x86470
movq %rax, 0x18(%rsp)
movq 0x38(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x30(%rsp), %rsi
callq 0x86470
movq %rax, 0x10(%rsp)
jmp 0xa67e8
cmpq $0x0, 0x18(%rsp)
jne 0xa6828
movq 0x10d7e1(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0xb7865(%rip), %rsi     # 0x15e066
leaq 0xcbf13(%rip), %rdx     # 0x17271b
leaq 0xcbee6(%rip), %rcx     # 0x1726f5
leaq 0xcbd10(%rip), %r8      # 0x172526
movl $0x75, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0xa682a
movq 0x18(%rsp), %rdi
leaq 0xbe00d(%rip), %rsi     # 0x164843
callq 0x1fde0
movq %rax, 0x20(%rsp)
cmpq $0x0, 0x20(%rsp)
je 0xa685e
movq 0x38(%rsp), %rdi
movq 0x20(%rsp), %rsi
callq 0xa66e0
movq %rax, 0x40(%rsp)
jmp 0xa687e
cmpq $0x0, 0x10(%rsp)
je 0xa6872
movq 0x10(%rsp), %rax
movq %rax, 0x40(%rsp)
jmp 0xa687e
jmp 0xa6874
movq 0x18(%rsp), %rax
movq %rax, 0x40(%rsp)
movq 0x40(%rsp), %rax
addq $0x48, %rsp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gap_str.c
// Function: gt_gap_str_new
static GtGapStr *gt_gap_str_new(const char *str, bool is_protein, GtError *err)
{
  GtGapStr *gap_str;
  gap_str = gt_malloc(sizeof (GtGapStr));
  gap_str->is_protein_alignment = is_protein;
  gap_str->step = is_protein ? 3 : 1;
  gap_str->ali_len = 0;
  gap_str->ref_len = 0;
  gap_str->tar_len = 0;
  if (gt_gap_str_parse(gap_str, str, err) != 0) {
    gt_free(gap_str);
    return NULL;
  }
  return gap_str;
}

// Assembly:
subq $0x28, %rsp
movb %sil, %al
movq %rdi, 0x18(%rsp)
andb $0x1, %al
movb %al, 0x17(%rsp)
movq %rdx, 0x8(%rsp)
movl $0x28, %edi
leaq 0xcbea5(%rip), %rsi     # 0x172788
movl $0x87, %edx
callq 0xd2e0
movq %rax, (%rsp)
movb 0x17(%rsp), %cl
movq (%rsp), %rax
andb $0x1, %cl
movb %cl, 0x20(%rax)
movb 0x17(%rsp), %dl
movl $0x1, %eax
movl $0x3, %ecx
testb $0x1, %dl
cmovnel %ecx, %eax
movslq %eax, %rcx
movq (%rsp), %rax
movq %rcx, 0x18(%rax)
movq (%rsp), %rax
movq $0x0, 0x10(%rax)
movq (%rsp), %rax
movq $0x0, (%rax)
movq (%rsp), %rax
movq $0x0, 0x8(%rax)
movq (%rsp), %rdi
movq 0x18(%rsp), %rsi
movq 0x8(%rsp), %rdx
callq 0xa6ad0
cmpl $0x0, %eax
je 0xa6979
movq (%rsp), %rdi
leaq 0xcbe24(%rip), %rsi     # 0x172788
movl $0x8e, %edx
callq 0xdab0
movq $0x0, 0x20(%rsp)
jmp 0xa6982
movq (%rsp), %rax
movq %rax, 0x20(%rsp)
movq 0x20(%rsp), %rax
addq $0x28, %rsp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_escaping.c
// Function: gt_gff3_escape
void gt_gff3_escape(GtStr *escaped_seq, const char *unescaped_seq,
                    GtUword length)
{
  const char *cc;
  gt_assert(escaped_seq && unescaped_seq);
  for (cc = unescaped_seq; cc < unescaped_seq + length; cc++) {
    switch (*cc) {
      case ';':  gt_str_append_cstr(escaped_seq, SEMICOLON); break;
      case '=':  gt_str_append_cstr(escaped_seq, EQUALS); break;
      case '%':  gt_str_append_cstr(escaped_seq, PERCENT); break;
      case '&':  gt_str_append_cstr(escaped_seq, AND); break;
      case ',':  gt_str_append_cstr(escaped_seq, COMMA); break;
      default:
        if ((*cc > 0 && *cc < 0x20) || *cc == 0x7F) {
          gt_gff3_escape_controlchar2hex(escaped_seq, *cc);
        } else gt_str_append_char(escaped_seq, *cc);
    }
  }
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq %rsi, 0x18(%rsp)
movq %rdx, 0x10(%rsp)
cmpq $0x0, 0x20(%rsp)
je 0xa7053
cmpq $0x0, 0x18(%rsp)
jne 0xa708b
movq 0x10cf7e(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0xb7002(%rip), %rsi     # 0x15e066
leaq 0xcb8e5(%rip), %rdx     # 0x172950
leaq 0xcb8fb(%rip), %rcx     # 0x17296d
leaq 0xcb903(%rip), %r8      # 0x17297c
movl $0x5a, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0xa708d
movq 0x18(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rax
movq 0x18(%rsp), %rcx
addq 0x10(%rsp), %rcx
cmpq %rcx, %rax
jae 0xa71a2
movq 0x8(%rsp), %rax
movsbl (%rax), %eax
addl $-0x25, %eax
movl %eax, %ecx
movq %rcx, (%rsp)
subl $0x18, %eax
ja 0xa713e
movq (%rsp), %rax
leaq 0xcb81c(%rip), %rcx     # 0x1728ec
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x20(%rsp), %rdi
leaq 0xcb8b4(%rip), %rsi     # 0x172999
callq 0x18fb0
jmp 0xa718d
movq 0x20(%rsp), %rdi
leaq 0xcb8a2(%rip), %rsi     # 0x17299d
callq 0x18fb0
jmp 0xa718d
movq 0x20(%rsp), %rdi
leaq 0xcb890(%rip), %rsi     # 0x1729a1
callq 0x18fb0
jmp 0xa718d
movq 0x20(%rsp), %rdi
leaq 0xcb881(%rip), %rsi     # 0x1729a5
callq 0x18fb0
jmp 0xa718d
movq 0x20(%rsp), %rdi
leaq 0xcb872(%rip), %rsi     # 0x1729a9
callq 0x18fb0
jmp 0xa718d
movq 0x8(%rsp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
jle 0xa7158
movq 0x8(%rsp), %rax
movsbl (%rax), %eax
cmpl $0x20, %eax
jl 0xa7165
movq 0x8(%rsp), %rax
movsbl (%rax), %eax
cmpl $0x7f, %eax
jne 0xa7179
movq 0x20(%rsp), %rdi
movq 0x8(%rsp), %rax
movsbl (%rax), %esi
callq 0xa71b0
jmp 0xa718b
movq 0x20(%rsp), %rdi
movq 0x8(%rsp), %rax
movsbl (%rax), %esi
callq 0x194d0
jmp 0xa718d
jmp 0xa718f
movq 0x8(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x8(%rsp)
jmp 0xa7097
addq $0x28, %rsp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_escaping.c
// Function: gt_gff3_escape_controlchar2hex
static void gt_gff3_escape_controlchar2hex(GtStr *escaped_seq, char ctrlchar)
{
  gt_assert(escaped_seq);
  gt_str_append_char(escaped_seq, '%');
  gt_str_append_char(escaped_seq, (char) GtNibbleToHex[ctrlchar >> 4]);
  gt_str_append_char(escaped_seq, (char) GtNibbleToHex[ctrlchar & 15]);
}

// Assembly:
subq $0x18, %rsp
movb %sil, %al
movq %rdi, 0x10(%rsp)
movb %al, 0xf(%rsp)
cmpq $0x0, 0x10(%rsp)
jne 0xa7200
movq 0x10ce09(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0xb6e8d(%rip), %rsi     # 0x15e066
leaq 0xcb7ef(%rip), %rdx     # 0x1729cf
leaq 0xcb8a8(%rip), %rcx     # 0x172a8f
leaq 0xcb78e(%rip), %r8      # 0x17297c
movl $0x50, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0xa7202
movq 0x10(%rsp), %rdi
movl $0x25, %esi
callq 0x194d0
movq 0x10(%rsp), %rdi
movsbl 0xf(%rsp), %eax
sarl $0x4, %eax
movslq %eax, %rcx
leaq 0x10d988(%rip), %rax    # 0x1b4bb0
movsbl (%rax,%rcx), %esi
callq 0x194d0
movq 0x10(%rsp), %rdi
movsbl 0xf(%rsp), %eax
andl $0xf, %eax
movslq %eax, %rcx
leaq 0x10d968(%rip), %rax    # 0x1b4bb0
movsbl (%rax,%rcx), %esi
callq 0x194d0
addq $0x18, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_escaping.c
// Function: gt_gff3_unescape
int gt_gff3_unescape(GtStr *unescaped_seq, const char *escaped_seq,
                     GtUword length, GtError *err)
{
  const char *cc;
  int had_err = 0;
  gt_error_check(err);
  gt_assert(unescaped_seq && escaped_seq);
  for (cc = escaped_seq; !had_err && cc < escaped_seq + length; cc++) {
    if (*cc == '%') {
      if (cc + 2 >= escaped_seq + length) {
        gt_error_set(err, "not enough sequence left to unescape after '%%'");
        had_err = -1;
      } else {
        char x = GT_UNDEF_CHAR;
        int ret = gt_gff3_escape_hex2prnchar(cc, &x);
        if (ret == 0 && x != GT_UNDEF_CHAR) {
          gt_str_append_char(unescaped_seq, x);
          cc += 2;
        } else gt_str_append_char(unescaped_seq, *cc);
      }
    } else gt_str_append_char(unescaped_seq, *cc);
  }
  return had_err;
}

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x30(%rsp)
movq %rsi, 0x28(%rsp)
movq %rdx, 0x20(%rsp)
movq %rcx, 0x18(%rsp)
movl $0x0, 0xc(%rsp)
cmpq $0x0, 0x18(%rsp)
je 0xa72d0
movq 0x18(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0xa7298
jmp 0xa72d0
movq 0x10cd39(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0xb6dbd(%rip), %rsi     # 0x15e066
leaq 0xb7398(%rip), %rdx     # 0x15e648
leaq 0xcb6f6(%rip), %rcx     # 0x1729ad
leaq 0xcb6be(%rip), %r8      # 0x17297c
movl $0x6f, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0xa72d2
jmp 0xa72d4
cmpq $0x0, 0x30(%rsp)
je 0xa72e4
cmpq $0x0, 0x28(%rsp)
jne 0xa731c
movq 0x10cced(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0xb6d71(%rip), %rsi     # 0x15e066
leaq 0xcb6c2(%rip), %rdx     # 0x1729be
leaq 0xcb6aa(%rip), %rcx     # 0x1729ad
leaq 0xcb672(%rip), %r8      # 0x17297c
movl $0x70, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0xa731e
movq 0x28(%rsp), %rax
movq %rax, 0x10(%rsp)
xorl %eax, %eax
cmpl $0x0, 0xc(%rsp)
movb %al, 0x3(%rsp)
jne 0xa734e
movq 0x10(%rsp), %rax
movq 0x28(%rsp), %rcx
addq 0x20(%rsp), %rcx
cmpq %rcx, %rax
setb %al
movb %al, 0x3(%rsp)
movb 0x3(%rsp), %al
testb $0x1, %al
jne 0xa735b
jmp 0xa7426
movq 0x10(%rsp), %rax
movsbl (%rax), %eax
cmpl $0x25, %eax
jne 0xa73ff
movq 0x10(%rsp), %rax
addq $0x2, %rax
movq 0x28(%rsp), %rcx
addq 0x20(%rsp), %rcx
cmpq %rcx, %rax
jb 0xa73a1
movq 0x18(%rsp), %rdi
leaq 0xcb64b(%rip), %rsi     # 0x1729db
movb $0x0, %al
callq 0xc0d0
movl $0xffffffff, 0xc(%rsp)  # imm = 0xFFFFFFFF
jmp 0xa73fd
movb $0x7f, 0xb(%rsp)
movq 0x10(%rsp), %rdi
leaq 0xb(%rsp), %rsi
callq 0xa7430
movl %eax, 0x4(%rsp)
cmpl $0x0, 0x4(%rsp)
jne 0xa73e9
movsbl 0xb(%rsp), %eax
cmpl $0x7f, %eax
je 0xa73e9
movq 0x30(%rsp), %rdi
movsbl 0xb(%rsp), %esi
callq 0x194d0
movq 0x10(%rsp), %rax
addq $0x2, %rax
movq %rax, 0x10(%rsp)
jmp 0xa73fb
movq 0x30(%rsp), %rdi
movq 0x10(%rsp), %rax
movsbl (%rax), %esi
callq 0x194d0
jmp 0xa73fd
jmp 0xa7411
movq 0x30(%rsp), %rdi
movq 0x10(%rsp), %rax
movsbl (%rax), %esi
callq 0x194d0
jmp 0xa7413
movq 0x10(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x10(%rsp)
jmp 0xa7328
movl 0xc(%rsp), %eax
addq $0x38, %rsp
retq
nop