LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/sequence_node_out_visitor.c
// Function: sequence_node_out_visitor_sequence_node
static int sequence_node_out_visitor_sequence_node(GtNodeVisitor *nv,
                                                   GtSequenceNode *sn,
                                                   GT_UNUSED GtError *err)
{
  GtSequenceNodeOutVisitor *v = sequence_node_out_visitor_cast(nv);
  GT_UNUSED GtFeatureNode *node;
  int had_err = 0;
  gt_error_check(err);
  gt_assert(v && sn);

  gt_fasta_show_entry(gt_sequence_node_get_description(sn),
                      gt_sequence_node_get_sequence(sn),
                      gt_sequence_node_get_sequence_length(sn),
                      v->width, v->outfile);

  if (v->keep_sequence_nodes)
    gt_queue_add(v->node_buffer, sn);
  else
    gt_genome_node_delete((GtGenomeNode*) sn);

  return had_err;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rdx, %r15
movq %rsi, %rbx
movq %rdi, %r14
callq 0x1183e8
movq %rax, %rdi
movq %r14, %rsi
callq 0x102dfe
movq %rax, %r14
testq %r15, %r15
je 0x1186b9
movq %r15, %rdi
callq 0x89eb7
testb %al, %al
jne 0x11874c
testq %rbx, %rbx
je 0x118722
testq %r14, %r14
je 0x118722
movq %rbx, %rdi
callq 0x117de7
movq %rax, %r15
movq %rbx, %rdi
callq 0x117e2c
movq %rax, %r12
movq %rbx, %rdi
callq 0x117e71
movq 0x18(%r14), %r8
movq 0x20(%r14), %rcx
movq %r15, %rdi
movq %r12, %rsi
movq %rax, %rdx
callq 0x8c0bc
cmpb $0x1, 0x28(%r14)
jne 0x11870c
movq 0x10(%r14), %rdi
movq %rbx, %rsi
callq 0x9e2d1
jmp 0x118714
movq %rbx, %rdi
callq 0xde013
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
movq 0x31f83f(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1cc8e0(%rip), %rsi    # 0x2e5013
leaq 0x209ae8(%rip), %rdx    # 0x322222
leaq 0x21ac4d(%rip), %rcx    # 0x33338e
leaq 0x21aba9(%rip), %r8     # 0x3332f1
pushq $0x35
jmp 0x118774
movq 0x31f815(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1cc8b6(%rip), %rsi    # 0x2e5013
leaq 0x1cca5b(%rip), %rdx    # 0x2e51bf
leaq 0x21ac23(%rip), %rcx    # 0x33338e
leaq 0x21ab7f(%rip), %r8     # 0x3332f1
pushq $0x34
popq %r9
xorl %eax, %eax
callq 0x17a50
callq 0x17390
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/sequence_node_out_visitor.c
// Function: sequence_node_out_visitor_eof_node
static int sequence_node_out_visitor_eof_node(GtNodeVisitor *nv,
                                              GtEOFNode *en,
                                              GT_UNUSED GtError *err)
{
  GtSequenceNodeOutVisitor *v = sequence_node_out_visitor_cast(nv);
  int had_err = 0;
  gt_error_check(err);
  gt_assert(v && en);

  gt_queue_add(v->node_buffer, en);

  return had_err;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rdx, %r15
movq %rsi, %rbx
movq %rdi, %r14
callq 0x1183e8
movq %rax, %rdi
movq %r14, %rsi
callq 0x102dfe
movq %rax, %r14
testq %r15, %r15
je 0x1187b4
movq %r15, %rdi
callq 0x89eb7
testb %al, %al
jne 0x1187fc
testq %rbx, %rbx
je 0x1187d2
testq %r14, %r14
je 0x1187d2
movq 0x10(%r14), %rdi
movq %rbx, %rsi
callq 0x9e2d1
xorl %eax, %eax
popq %rbx
popq %r14
popq %r15
retq
movq 0x31f78f(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1cc830(%rip), %rsi    # 0x2e5013
leaq 0x209a57(%rip), %rdx    # 0x322241
leaq 0x21abc5(%rip), %rcx    # 0x3333b6
leaq 0x21aaf9(%rip), %r8     # 0x3332f1
pushq $0x67
jmp 0x118824
movq 0x31f765(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1cc806(%rip), %rsi    # 0x2e5013
leaq 0x1cc9ab(%rip), %rdx    # 0x2e51bf
leaq 0x21ab9b(%rip), %rcx    # 0x3333b6
leaq 0x21aacf(%rip), %r8     # 0x3332f1
pushq $0x66
popq %r9
xorl %eax, %eax
callq 0x17a50
callq 0x17390
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/sequence_node_out_visitor.c
// Function: sequence_node_out_visitor_meta_node
static int sequence_node_out_visitor_meta_node(GtNodeVisitor *nv,
                                               GtMetaNode *mn,
                                               GT_UNUSED GtError *err)
{
  GtSequenceNodeOutVisitor *v = sequence_node_out_visitor_cast(nv);
  int had_err = 0;
  gt_error_check(err);
  gt_assert(v && mn);

  gt_queue_add(v->node_buffer, mn);

  return had_err;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rdx, %r15
movq %rsi, %rbx
movq %rdi, %r14
callq 0x1183e8
movq %rax, %rdi
movq %r14, %rsi
callq 0x102dfe
movq %rax, %r14
testq %r15, %r15
je 0x118864
movq %r15, %rdi
callq 0x89eb7
testb %al, %al
jne 0x1188b0
testq %rbx, %rbx
je 0x118882
testq %r14, %r14
je 0x118882
movq 0x10(%r14), %rdi
movq %rbx, %rsi
callq 0x9e2d1
xorl %eax, %eax
popq %rbx
popq %r14
popq %r15
retq
movq 0x31f6df(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1cc780(%rip), %rsi    # 0x2e5013
leaq 0x2099c7(%rip), %rdx    # 0x322261
leaq 0x21ab38(%rip), %rcx    # 0x3333d9
leaq 0x21aa49(%rip), %r8     # 0x3332f1
movl $0x83, %r9d
jmp 0x1188dc
movq 0x31f6b1(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1cc752(%rip), %rsi    # 0x2e5013
leaq 0x1cc8f7(%rip), %rdx    # 0x2e51bf
leaq 0x21ab0a(%rip), %rcx    # 0x3333d9
leaq 0x21aa1b(%rip), %r8     # 0x3332f1
movl $0x82, %r9d
xorl %eax, %eax
callq 0x17a50
callq 0x17390
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/sequence_node_out_visitor.c
// Function: gt_sequence_node_out_visitor_new
GtNodeVisitor* gt_sequence_node_out_visitor_new(GtFile *outfile)
{
  GtNodeVisitor *nv =
                   gt_node_visitor_create(gt_sequence_node_out_visitor_class());
  GtSequenceNodeOutVisitor *v = sequence_node_out_visitor_cast(nv);
  v->outfile = outfile;
  v->width = 80;
  v->keep_sequence_nodes = false;
  v->node_buffer = gt_queue_new();
  return nv;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rdi, %rbx
callq 0x1183e8
movq %rax, %rdi
callq 0x102da0
movq %rax, %r14
callq 0x1183e8
movq %rax, %rdi
movq %r14, %rsi
callq 0x102dfe
movq %rax, %r15
movq %rbx, 0x18(%rax)
movq $0x50, 0x20(%rax)
movb $0x0, 0x28(%rax)
callq 0x9e2bc
movq %rax, 0x10(%r15)
movq %r14, %rax
popq %rbx
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/set_source_visitor.c
// Function: gt_set_source_visitor_new
GtNodeVisitor *gt_set_source_visitor_new(GtStr *newsource)
{
  GtNodeVisitor *nv;
  gt_assert(newsource);
  nv = gt_node_visitor_create(gt_set_source_visitor_class());
  GtSetSourceVisitor *ssv = set_source_visitor_cast(nv);
  ssv->newsource = gt_str_ref(newsource);
  return nv;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
testq %rdi, %rdi
je 0x1189f9
movq %rdi, %rbx
callq 0x118a2f
movq %rax, %rdi
callq 0x102da0
movq %rax, %r14
callq 0x118a2f
movq %rax, %rdi
movq %r14, %rsi
callq 0x102dfe
movq %rax, %r15
movq %rbx, %rdi
callq 0xad4d2
movq %rax, 0x10(%r15)
movq %r14, %rax
popq %rbx
popq %r14
popq %r15
retq
movq 0x31f568(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1cc609(%rip), %rsi    # 0x2e5013
leaq 0x21a9ec(%rip), %rdx    # 0x3333fd
leaq 0x21a9ef(%rip), %rcx    # 0x333407
leaq 0x21aa02(%rip), %r8     # 0x333421
pushq $0x24
popq %r9
xorl %eax, %eax
callq 0x17a50
callq 0x17390
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/set_source_visitor.c
// Function: gt_set_source_visitor_class
const GtNodeVisitorClass *gt_set_source_visitor_class()
{
  static const GtNodeVisitorClass *nvc = NULL;
  gt_class_alloc_lock_enter();
  if (!nvc)
  {
    nvc = gt_node_visitor_class_new(sizeof (GtSetSourceVisitor),
                                    set_source_visitor_free,
                                    NULL,
                                    set_source_visitor_visit_feature_node,
                                    NULL,
                                    NULL,
                                    NULL);
  }
  gt_class_alloc_lock_leave();
  return nvc;
}

// Assembly:
pushq %rax
callq 0x69e97
cmpq $0x0, 0x324dfb(%rip)    # 0x43d838
jne 0x118a69
andq $0x0, (%rsp)
leaq 0x2c(%rip), %rsi        # 0x118a77
leaq 0x43(%rip), %rcx        # 0x118a95
pushq $0x18
popq %rdi
xorl %edx, %edx
xorl %r8d, %r8d
xorl %r9d, %r9d
callq 0x102cd0
movq %rax, 0x324dcf(%rip)    # 0x43d838
callq 0x69ede
movq 0x324dc3(%rip), %rax    # 0x43d838
popq %rcx
retq
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/set_source_visitor.c
// Function: set_source_visitor_visit_feature_node
static int set_source_visitor_visit_feature_node(GtNodeVisitor *nv,
                                                 GtFeatureNode *fn,
                                                 GT_UNUSED GtError *error)
{
  GtSetSourceVisitor *ssv;
  gt_error_check(error);
  ssv = set_source_visitor_cast(nv);

  GtFeatureNode *current;
  GtFeatureNodeIterator *iter = gt_feature_node_iterator_new(fn);
  for (current  = gt_feature_node_iterator_next(iter);
       current != NULL;
       current  = gt_feature_node_iterator_next(iter))
  {
    gt_feature_node_set_source(current, ssv->newsource);
  }
  gt_feature_node_iterator_delete(iter);

  return 0;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rsi, %r14
movq %rdi, %rbx
testq %rdx, %rdx
je 0x118ab0
movq %rdx, %rdi
callq 0x89eb7
testb %al, %al
jne 0x118afe
callq 0x118a2f
movq %rax, %rdi
movq %rbx, %rsi
callq 0x102dfe
movq %rax, %rbx
movq %r14, %rdi
callq 0xdc6f0
movq %rax, %r14
movq %rax, %rdi
callq 0xdc92e
testq %rax, %rax
je 0x118aec
movq 0x10(%rbx), %rsi
movq %rax, %rdi
callq 0xd96be
movq %r14, %rdi
jmp 0x118ad1
movq %r14, %rdi
callq 0xdc9f1
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
movq 0x31f463(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1cc504(%rip), %rsi    # 0x2e5013
leaq 0x204acd(%rip), %rdx    # 0x31d5e3
leaq 0x21a926(%rip), %rcx    # 0x333443
leaq 0x21a8fd(%rip), %r8     # 0x333421
pushq $0x36
popq %r9
xorl %eax, %eax
callq 0x17a50
callq 0x17390
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/shredder.c
// Function: gt_shredder_new
GtShredder* gt_shredder_new(GtBioseq *bioseq, GtUword minlength,
                                       GtUword maxlength)
{
  GtShredder *shredder = gt_calloc(1, sizeof *shredder);
  gt_assert(bioseq && minlength && minlength <= maxlength);
  shredder->bioseq = bioseq;
  shredder->minlength = minlength;
  shredder->maxlength = maxlength;
  shredder->sample_probability = 1.0;
  return shredder;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rdx, %rbx
movq %rsi, %r14
movq %rdi, %r15
leaq 0x21a920(%rip), %rdx    # 0x333469
pushq $0x1
popq %rdi
pushq $0x38
popq %rsi
pushq $0x23
popq %rcx
callq 0x9334a
testq %r15, %r15
je 0x118b84
leaq -0x1(%r14), %rcx
cmpq %rbx, %rcx
jae 0x118b84
movq %r15, (%rax)
movq %r14, 0x8(%rax)
movq %rbx, 0x10(%rax)
movabsq $0x3ff0000000000000, %rcx # imm = 0x3FF0000000000000
movq %rcx, 0x30(%rax)
popq %rbx
popq %r14
popq %r15
retq
movq 0x31f3dd(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1cc47e(%rip), %rsi    # 0x2e5013
leaq 0x21a8e5(%rip), %rdx    # 0x333481
leaq 0x21a90c(%rip), %rcx    # 0x3334af
leaq 0x21a8bf(%rip), %r8     # 0x333469
pushq $0x24
popq %r9
xorl %eax, %eax
callq 0x17a50
callq 0x17390
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/shredder.c
// Function: gt_shredder_shred
char* gt_shredder_shred(GtShredder *shredder, GtUword *fragment_offset,
                        GtUword *fragment_length, GtStr *desc)
{
  char *frag;
  gt_assert(shredder && fragment_length);
  while ((frag = generate_fragment(shredder, fragment_offset, fragment_length,
                                   desc))) {
    if (shredder->sample_probability == 1.0 ||
        gt_rand_0_to_1() <= shredder->sample_probability) {
      return frag;
    } else gt_free(frag);
  }
  return NULL;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rsi, (%rsp)
testq %rdi, %rdi
je 0x118e5a
movq %rdx, %r14
testq %rdx, %rdx
je 0x118e5a
movq %rcx, %rbx
movq %rdi, %r12
movq (%r12), %rdi
movq 0x20(%r12), %r15
callq 0x5ba79
cmpq %rax, %r15
jae 0x118de6
movq (%r12), %rdi
movq 0x20(%r12), %rsi
callq 0x5b2f1
movq %rax, %r15
movq 0x10(%r12), %rcx
movq %rcx, %rdi
subq 0x8(%r12), %rdi
jne 0x118cfa
xorl %eax, %eax
jmp 0x118d04
callq 0x955fa
movq 0x8(%r12), %rcx
addq %rax, %rcx
jb 0x118dfa
movq 0x28(%r12), %rax
leaq (%rax,%rcx), %rdx
movq %r15, %r13
subq %rax, %r13
cmpq %r15, %rdx
cmovbeq %rcx, %r13
movq (%rsp), %rcx
movq %rax, (%rcx)
movq %r13, (%r14)
movq %rbx, %rdi
callq 0xad357
movq (%r12), %rdi
movq 0x20(%r12), %rsi
callq 0x5b338
movq %rbx, %rdi
movq %rax, %rsi
callq 0xacbfb
movq 0x28(%r12), %rdx
leaq (%rdx,%r13), %rcx
cmpq %r15, %rcx
ja 0x118e24
movq (%r12), %rdi
movq 0x20(%r12), %rsi
decq %rcx
callq 0x5b5a5
movq %rax, %rbp
movq 0x28(%r12), %rcx
leaq (%rcx,%r13), %rax
cmpq %r15, %rax
jne 0x118d8b
incq 0x20(%r12)
xorl %eax, %eax
jmp 0x118da0
movq 0x18(%r12), %rdx
cmpq %rdx, %r13
jbe 0x118d9a
subq %rdx, %rax
jmp 0x118da0
incq %rcx
movq %rcx, %rax
movq %rax, 0x28(%r12)
testq %rbp, %rbp
je 0x118de6
movsd 0x30(%r12), %xmm0
ucomisd 0x1cd46f(%rip), %xmm0   # 0x2e6228
jne 0x118dbd
jnp 0x118de8
callq 0x9576b
movsd 0x30(%r12), %xmm1
ucomisd %xmm0, %xmm1
jae 0x118de8
movq %rbp, %rdi
leaq 0x21a690(%rip), %rsi    # 0x333469
pushq $0x72
popq %rdx
callq 0x936f9
jmp 0x118cbf
xorl %ebp, %ebp
movq %rbp, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x31f167(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1cc208(%rip), %rsi    # 0x2e5013
leaq 0x21a728(%rip), %rdx    # 0x33353a
leaq 0x21a70f(%rip), %rcx    # 0x333528
leaq 0x21a649(%rip), %r8     # 0x333469
pushq $0x4d
jmp 0x118e4c
movq 0x31f13d(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1cc1de(%rip), %rsi    # 0x2e5013
leaq 0x21a71d(%rip), %rdx    # 0x333559
leaq 0x21a6e5(%rip), %rcx    # 0x333528
leaq 0x21a61f(%rip), %r8     # 0x333469
pushq $0x55
popq %r9
xorl %eax, %eax
callq 0x17a50
callq 0x17390
movq 0x31f107(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1cc1a8(%rip), %rsi    # 0x2e5013
leaq 0x21a688(%rip), %rdx    # 0x3334fa
leaq 0x21a69d(%rip), %rcx    # 0x333516
leaq 0x21a5e9(%rip), %r8     # 0x333469
pushq $0x6c
jmp 0x118e4c
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/snp_annotator_stream.c
// Function: gt_snp_annotator_stream_class
const GtNodeStreamClass* gt_snp_annotator_stream_class(void)
{
  static const GtNodeStreamClass *nsc = NULL;
  gt_class_alloc_lock_enter();
  if (!nsc) {
    nsc = gt_node_stream_class_new(sizeof (GtSNPAnnotatorStream),
                                   snp_annotator_stream_free,
                                   snp_annotator_stream_next);
  }
  gt_class_alloc_lock_leave();
  return nsc;
}

// Assembly:
pushq %rax
callq 0x69e97
cmpq $0x0, 0x3249ae(%rip)    # 0x43d840
jne 0x118eb1
leaq 0x24(%rip), %rsi        # 0x118ebf
leaq 0x10e(%rip), %rdx       # 0x118fb0
pushq $0x58
popq %rdi
callq 0x102838
movq %rax, 0x32498f(%rip)    # 0x43d840
callq 0x69ede
movq 0x324983(%rip), %rax    # 0x43d840
popq %rcx
retq
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/snp_annotator_stream.c
// Function: snp_annotator_stream_free
static void snp_annotator_stream_free(GtNodeStream *ns)
{
  GtUword i;
  GtSNPAnnotatorStream *sas;
  if (!ns) return;
  sas = gt_snp_annotator_stream_cast(ns);
  gt_region_mapping_delete(sas->rmap);
  while (gt_queue_size(sas->snps) > 0) {
    gt_genome_node_delete((GtGenomeNode*) gt_queue_get(sas->snps));
  }
  while (gt_queue_size(sas->outqueue) > 0) {
    gt_genome_node_delete((GtGenomeNode*) gt_queue_get(sas->outqueue));
  }
  for (i = 0; i < gt_array_size(sas->instreams); i++) {
    gt_node_stream_delete(*(GtNodeStream**) gt_array_get(sas->instreams, i));
  }
  for (i = 0; i < gt_array_size(sas->cur_gene_set); i++) {
    gt_genome_node_delete(*(GtGenomeNode**) gt_array_get(sas->cur_gene_set, i));
  }
  gt_array_delete(sas->cur_gene_set);
  gt_node_stream_delete(sas->merge_stream);
  gt_array_delete(sas->instreams);
  gt_queue_delete(sas->snps);
  gt_queue_delete(sas->outqueue);
}

// Assembly:
testq %rdi, %rdi
je 0x118faf
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
callq 0x118e84
movq %rax, %rdi
movq %rbx, %rsi
callq 0x102c81
movq %rax, %rbx
movq 0x40(%rax), %rdi
callq 0x10f7de
movq 0x48(%rbx), %rdi
callq 0x9e48b
testq %rax, %rax
je 0x118f1d
movq 0x48(%rbx), %rdi
callq 0x9e411
movq %rax, %rdi
callq 0xde013
jmp 0x118eeb
movq 0x50(%rbx), %rdi
callq 0x9e411
movq %rax, %rdi
callq 0xde013
movq 0x50(%rbx), %rdi
callq 0x9e48b
testq %rax, %rax
jne 0x118f0c
xorl %r14d, %r14d
movq 0x28(%rbx), %rdi
callq 0x586a4
cmpq %rax, %r14
jae 0x118f55
movq 0x28(%rbx), %rdi
movq %r14, %rsi
callq 0x581aa
movq (%rax), %rdi
callq 0x10297b
incq %r14
jmp 0x118f2e
xorl %r14d, %r14d
movq 0x20(%rbx), %rdi
callq 0x586a4
movq 0x20(%rbx), %rdi
cmpq %rax, %r14
jae 0x118f7f
movq %r14, %rsi
callq 0x581aa
movq (%rax), %rdi
callq 0xde013
incq %r14
jmp 0x118f58
callq 0x58eb9
movq 0x10(%rbx), %rdi
callq 0x10297b
movq 0x28(%rbx), %rdi
callq 0x58eb9
movq 0x48(%rbx), %rdi
callq 0x9e9dd
movq 0x50(%rbx), %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x9e9dd
retq
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/snp_annotator_stream.c
// Function: gt_snp_annotator_stream_new
GtNodeStream* gt_snp_annotator_stream_new(GtNodeStream *gvf_stream,
                                          GtNodeStream *gff_stream,
                                          GtTransTable *trans_table,
                                          GtRegionMapping *rmap)
{
  GtSNPAnnotatorStream *sas;
  GtNodeStream *ns;
  gt_assert(gvf_stream && gff_stream && rmap);
  ns = gt_node_stream_create(gt_snp_annotator_stream_class(), true);
  sas = gt_snp_annotator_stream_cast(ns);
  sas->instreams = gt_array_new(sizeof (GtNodeStream*));
  (void) gt_node_stream_ref(gvf_stream);
  gt_array_add(sas->instreams, gvf_stream);
  (void) gt_node_stream_ref(gff_stream);
  gt_array_add(sas->instreams, gff_stream);
  sas->cur_gene_set = gt_array_new(sizeof (GtFeatureNode*));
  sas->merge_stream = gt_merge_stream_new(sas->instreams);
  sas->rmap = gt_region_mapping_ref(rmap);
  sas->cur_gene_range.start =
    sas->cur_gene_range.end = GT_UNDEF_UWORD;
  sas->snps = gt_queue_new();
  sas->outqueue = gt_queue_new();
  sas->tt = trans_table;
  return ns;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rdx, (%rsp)
movq %rdi, 0x10(%rsp)
movq %rsi, 0x8(%rsp)
testq %rdi, %rdi
je 0x119437
movq %rsi, %r13
testq %rsi, %rsi
je 0x119437
movq %rcx, %r14
testq %rcx, %rcx
je 0x119437
movq %rdi, %rbp
callq 0x118e84
pushq $0x1
popq %rsi
movq %rax, %rdi
callq 0x10289f
movq %rax, %r15
callq 0x118e84
movq %rax, %rdi
movq %r15, %rsi
callq 0x102c81
movq %rax, %r12
pushq $0x8
popq %rbx
movq %rbx, %rdi
callq 0x5809c
movq %rax, 0x28(%r12)
movq %rbp, %rdi
callq 0x102934
movq 0x28(%r12), %rdi
leaq 0x10(%rsp), %rsi
movq %rbx, %rdx
callq 0x5851d
movq %r13, %rdi
callq 0x102934
movq 0x28(%r12), %rdi
leaq 0x8(%rsp), %rsi
movq %rbx, %rdx
callq 0x5851d
movq %rbx, %rdi
callq 0x5809c
movq %rax, 0x20(%r12)
movq 0x28(%r12), %rdi
callq 0x100d59
movq %rax, 0x10(%r12)
movq %r14, %rdi
callq 0x10fa8b
movq %rax, 0x40(%r12)
pcmpeqd %xmm0, %xmm0
movdqu %xmm0, 0x30(%r12)
callq 0x9e2bc
movq %rax, 0x48(%r12)
callq 0x9e2bc
movq %rax, 0x50(%r12)
movq (%rsp), %rax
movq %rax, 0x18(%r12)
movq %r15, %rax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x31eb2a(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1cbbcb(%rip), %rsi    # 0x2e5013
leaq 0x21a12c(%rip), %rdx    # 0x33357b
leaq 0x21a146(%rip), %rcx    # 0x33359c
leaq 0x21a15b(%rip), %r8     # 0x3335b8
movl $0xf6, %r9d
xorl %eax, %eax
callq 0x17a50
callq 0x17390
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/snp_annotator_visitor.c
// Function: gt_snp_annotator_visitor_class
const GtNodeVisitorClass* gt_snp_annotator_visitor_class()
{
  static GtNodeVisitorClass *nvc = NULL;
  gt_class_alloc_lock_enter();
  if (!nvc) {
    nvc = gt_node_visitor_class_new(sizeof (GtSNPAnnotatorVisitor),
                                    snp_annotator_visitor_free,
                                    NULL,
                                    snp_annotator_visitor_feature_node,
                                    NULL,
                                    NULL,
                                    NULL);
  }
  gt_class_alloc_lock_leave();
  return nvc;
}

// Assembly:
pushq %rax
callq 0x69e97
cmpq $0x0, 0x3241ba(%rip)    # 0x43d848
jne 0x1196ba
andq $0x0, (%rsp)
leaq 0x2c(%rip), %rsi        # 0x1196c8
leaq 0x6d(%rip), %rcx        # 0x119710
pushq $0x58
popq %rdi
xorl %edx, %edx
xorl %r8d, %r8d
xorl %r9d, %r9d
callq 0x102cd0
movq %rax, 0x32418e(%rip)    # 0x43d848
callq 0x69ede
movq 0x324182(%rip), %rax    # 0x43d848
popq %rcx
retq
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/snp_annotator_visitor.c
// Function: snp_annotator_visitor_free
static void snp_annotator_visitor_free(GtNodeVisitor *nv)
{
  GtSNPAnnotatorVisitor *sav;
  if (!nv) return;
  sav = snp_annotator_visitor_cast(nv);
  gt_genome_node_delete((GtGenomeNode*) sav->gene);
  if (sav->own_tt)
    gt_trans_table_delete(sav->tt);
  gt_region_mapping_delete(sav->rmap);
  gt_hashmap_delete(sav->rnaseqs);
}

// Assembly:
testq %rdi, %rdi
je 0x11970f
pushq %rbx
movq %rdi, %rbx
callq 0x119680
movq %rax, %rdi
movq %rbx, %rsi
callq 0x102dfe
movq %rax, %rbx
movq 0x10(%rax), %rdi
callq 0xde013
cmpb $0x1, 0x30(%rbx)
jne 0x1196fc
movq 0x28(%rbx), %rdi
callq 0xb168a
movq 0x18(%rbx), %rdi
callq 0x10f7de
movq 0x20(%rbx), %rdi
popq %rbx
jmp 0x8f933
retq
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/spec_results.c
// Function: gt_spec_results_new
GtSpecResults *gt_spec_results_new(void)
{
  GtSpecResults *spec_results;
  spec_results = gt_calloc(1, sizeof (GtSpecResults));
  spec_results->feature_aspects = gt_hashmap_new(GT_HASH_STRING, NULL,
                                                 (GtFree) gt_hashmap_delete);
  spec_results->meta_aspects = gt_hashmap_new(GT_HASH_STRING, NULL,
                                              (GtFree) gt_spec_aspect_delete);
  spec_results->sequence_aspects = gt_hashmap_new(GT_HASH_STRING, NULL,
                                               (GtFree) gt_spec_aspect_delete);
  spec_results->region_aspects = gt_hashmap_new(GT_HASH_STRING, NULL,
                                               (GtFree) gt_spec_aspect_delete);
  spec_results->comment_aspects = gt_hashmap_new(GT_HASH_STRING, NULL,
                                               (GtFree) gt_spec_aspect_delete);
  spec_results->warnings = gt_str_array_new();
  spec_results->has_runtime_errors = spec_results->has_failures = false;
  return spec_results;
}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
leaq 0x21925a(%rip), %rdx    # 0x3338d5
pushq $0x1
popq %rdi
pushq $0x58
popq %rsi
movl $0x98, %ecx
callq 0x9334a
movq %rax, %rbx
leaq -0x8ad62(%rip), %rdx    # 0x8f933
pushq $0x1
popq %rbp
movl %ebp, %edi
xorl %esi, %esi
callq 0x8f330
movq %rax, (%rbx)
leaq 0x56(%rip), %r14        # 0x11a701
movl %ebp, %edi
xorl %esi, %esi
movq %r14, %rdx
callq 0x8f330
movq %rax, 0x8(%rbx)
movl %ebp, %edi
xorl %esi, %esi
movq %r14, %rdx
callq 0x8f330
movq %rax, 0x20(%rbx)
movl %ebp, %edi
xorl %esi, %esi
movq %r14, %rdx
callq 0x8f330
movq %rax, 0x10(%rbx)
movl %ebp, %edi
xorl %esi, %esi
movq %r14, %rdx
callq 0x8f330
movq %rax, 0x18(%rbx)
callq 0xae154
movq %rax, 0x50(%rbx)
andw $0x0, 0x2d(%rbx)
movq %rbx, %rax
popq %rbx
popq %r14
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/spec_results.c
// Function: gt_spec_aspect_delete
static void gt_spec_aspect_delete(GtSpecAspect *sa)
{
  if (!sa) return;
  gt_str_delete(sa->name);
  gt_hashmap_delete(sa->aspect_node_results);
  gt_free(sa);
}

// Assembly:
testq %rdi, %rdi
je 0x11a730
pushq %rbx
movq %rdi, %rbx
movq 0x8(%rdi), %rdi
callq 0xae103
movq (%rbx), %rdi
callq 0x8f933
leaq 0x2191b3(%rip), %rsi    # 0x3338d5
movq %rbx, %rdi
movl $0x92, %edx
popq %rbx
jmp 0x936f9
retq
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/spec_results.c
// Function: gt_spec_aspect_new
static GtSpecAspect* gt_spec_aspect_new(const char *name)
{
  GtSpecAspect *sa;
  gt_assert(name);

  sa = gt_calloc(1, sizeof (*sa));
  sa->name = gt_str_new_cstr(name);
  sa->last_node = NULL;
  sa->aspect_node_results= gt_hashmap_new(GT_HASH_DIRECT,
                                    (GtFree) gt_genome_node_delete,
                                    (GtFree) gt_spec_aspect_node_result_delete);

  return sa;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
leaq 0x218cb9(%rip), %rdx    # 0x3338d5
pushq $0x1
popq %rdi
pushq $0x20
popq %rsi
movl $0x83, %ecx
callq 0x9334a
movq %rax, %r14
movq %rbx, %rdi
callq 0xacbd1
movq %rax, 0x8(%r14)
andq $0x0, 0x10(%r14)
leaq -0x3cc34(%rip), %rsi    # 0xde013
leaq 0xa84(%rip), %rdx       # 0x11b6d2
xorl %edi, %edi
callq 0x8f330
movq %rax, (%r14)
movq %r14, %rax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/spec_results.c
// Function: gt_spec_results_make_feature_model
static int gt_spec_results_make_feature_model(void *key, void *value,
                                              void *data,
                                                         GT_UNUSED GtError *err)
{
  const char *type = (const char*) key;
  GtSpecResultsReportInfo *info = (GtSpecResultsReportInfo*) data;
  lua_pushstring(info->L, type);
  lua_newtable(info->L);
  gt_hashmap_foreach((GtHashmap*) value, gt_spec_results_make_aspect_model,
                     info, NULL);
  lua_rawset(info->L, -3);
  return 0;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rdx, %rbx
movq %rsi, %r14
movq %rdi, %rsi
movq 0x18(%rdx), %rdi
callq 0x1dc009
movq 0x18(%rbx), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x1dc7bd
leaq 0x23(%rip), %rsi        # 0x11b30e
movq %r14, %rdi
movq %rbx, %rdx
xorl %ecx, %ecx
callq 0x8f56e
movq 0x18(%rbx), %rdi
pushq $-0x3
popq %rsi
callq 0x1dcb75
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/spec_results.c
// Function: gt_spec_results_lua_print
static int gt_spec_results_lua_print(lua_State* L) {
    GtFile *outfile;
    int i = 0;
    gt_assert(L);

    lua_pushlightuserdata(L, (void *) &spec_resuserdata);
    lua_gettable(L, LUA_REGISTRYINDEX);
    outfile = lua_touserdata(L, -1);

    for (i = 1; i <= lua_gettop(L); i++) {
      if (lua_isstring(L, i)) {
        gt_file_xprintf(outfile, "%s", lua_tostring(L, i));
      }
    }

    return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
testq %rdi, %rdi
je 0x11b646
movq %rdi, %rbx
leaq 0x31dbcb(%rip), %rsi    # 0x4391a0
callq 0x1dc4ec
movq %rbx, %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x1dc524
pushq $-0x1
popq %rsi
movq %rbx, %rdi
callq 0x1dbd9e
movq %rax, %r14
pushq $0x1
popq %rbp
leaq 0x24d8aa(%rip), %r15    # 0x368ea9
movq %rbx, %rdi
callq 0x1db3c5
cmpl %eax, %ebp
jg 0x11b639
movq %rbx, %rdi
movl %ebp, %esi
callq 0x1db803
testl %eax, %eax
je 0x11b635
movq %rbx, %rdi
movl %ebp, %esi
xorl %edx, %edx
callq 0x1dbb73
movq %r14, %rdi
movq %r15, %rsi
movq %rax, %rdx
xorl %eax, %eax
callq 0x8d432
incl %ebp
jmp 0x11b5ff
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq 0x31c91b(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1c99bc(%rip), %rsi    # 0x2e5013
leaq 0x200e95(%rip), %rdx    # 0x31c4f3
leaq 0x218512(%rip), %rcx    # 0x333b77
leaq 0x218269(%rip), %r8     # 0x3338d5
movl $0x19a, %r9d            # imm = 0x19A
xorl %eax, %eax
callq 0x17a50
callq 0x17390
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/spec_results.c
// Function: gt_spec_results_delete
void gt_spec_results_delete(GtSpecResults *spec_results)
{
  if (!spec_results) return;
  gt_hashmap_delete(spec_results->feature_aspects);
  gt_hashmap_delete(spec_results->meta_aspects);
  gt_hashmap_delete(spec_results->comment_aspects);
  gt_hashmap_delete(spec_results->sequence_aspects);
  gt_hashmap_delete(spec_results->region_aspects);
  gt_str_array_delete(spec_results->warnings);
  gt_free(spec_results);
}

// Assembly:
testq %rdi, %rdi
je 0x11b6d1
pushq %rbx
movq %rdi, %rbx
movq (%rdi), %rdi
callq 0x8f933
movq 0x8(%rbx), %rdi
callq 0x8f933
movq 0x18(%rbx), %rdi
callq 0x8f933
movq 0x20(%rbx), %rdi
callq 0x8f933
movq 0x10(%rbx), %rdi
callq 0x8f933
movq 0x50(%rbx), %rdi
callq 0xae662
leaq 0x218212(%rip), %rsi    # 0x3338d5
movq %rbx, %rdi
movl $0x23f, %edx            # imm = 0x23F
popq %rbx
jmp 0x936f9
retq
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/spec_results.c
// Function: gt_spec_aspect_node_result_delete
static void gt_spec_aspect_node_result_delete(GtSpecAspectNodeResult *sanr)
{
  if (!sanr) return;
  gt_str_array_delete(sanr->failure_messages);
  gt_str_array_delete(sanr->runtime_error_messages);
  gt_free(sanr);
}

// Assembly:
testq %rdi, %rdi
je 0x11b6ff
pushq %rbx
movq %rdi, %rbx
movq (%rdi), %rdi
callq 0xae662
movq 0x8(%rbx), %rdi
callq 0xae662
leaq 0x2181e2(%rip), %rsi    # 0x3338d5
pushq $0x7b
popq %rdx
movq %rbx, %rdi
popq %rbx
jmp 0x936f9
retq
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/spec_results.c
// Function: gt_spec_aspect_node_result_new
static GtSpecAspectNodeResult* gt_spec_aspect_node_result_new()
{
  GtSpecAspectNodeResult *sanr;

  sanr = gt_calloc(1, sizeof (*sanr));
  sanr->failure_messages = gt_str_array_new();
  sanr->runtime_error_messages = gt_str_array_new();
  return sanr;
}

// Assembly:
pushq %rbx
leaq 0x2181cd(%rip), %rdx    # 0x3338d5
pushq $0x1
popq %rdi
pushq $0x10
popq %rsi
pushq $0x70
popq %rcx
callq 0x9334a
movq %rax, %rbx
callq 0xae154
movq %rax, (%rbx)
callq 0xae154
movq %rax, 0x8(%rbx)
movq %rbx, %rax
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/spec_results.c
// Function: gt_spec_aspect_count_stats
static int gt_spec_aspect_count_stats(GT_UNUSED void *key, void *value,
                                      void *data, GT_UNUSED GtError *err)
{
  GtSpecAspectNodeResult *sanr = (GtSpecAspectNodeResult*) value;
  GtSpecAspectCountInfo *info = (GtSpecAspectCountInfo*) data;

  if (gt_str_array_size(sanr->runtime_error_messages) > 0) {
    (*info->err)++;
  } else if (gt_str_array_size(sanr->failure_messages) > 0) {
    (*info->fail)++;
  }
  return 0;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rdx, %rbx
movq %rsi, %r14
movq 0x8(%rsi), %rdi
callq 0xae61c
testq %rax, %rax
je 0x11b74d
addq $0x8, %rbx
jmp 0x11b75a
movq (%r14), %rdi
callq 0xae61c
testq %rax, %rax
je 0x11b760
movq (%rbx), %rax
incq (%rax)
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/spec_visitor.c
// Function: gt_spec_visitor_class
const GtNodeVisitorClass* gt_spec_visitor_class()
{
  static GtNodeVisitorClass *nvc = NULL;
  gt_class_alloc_lock_enter();
  if (!nvc) {
    nvc = gt_node_visitor_class_new(sizeof (GtSpecVisitor),
                                    spec_visitor_free,
                                    spec_visitor_comment_node,
                                    spec_visitor_feature_node,
                                    spec_visitor_region_node,
                                    spec_visitor_sequence_node,
                                    NULL);
    gt_node_visitor_class_set_meta_node_func(nvc, spec_visitor_meta_node);
  }
  gt_class_alloc_lock_leave();
  return nvc;
}

// Assembly:
pushq %rax
callq 0x69e97
cmpq $0x0, 0x321e36(%rip)    # 0x43d858
jne 0x11ba6a
andq $0x0, (%rsp)
leaq 0x48(%rip), %rsi        # 0x11ba78
leaq 0x83(%rip), %rdx        # 0x11baba
leaq 0x16f(%rip), %rcx       # 0x11bbad
leaq 0x264(%rip), %r8        # 0x11bca9
leaq 0x350(%rip), %r9        # 0x11bd9c
pushq $0x78
popq %rdi
callq 0x102cd0
movq %rax, 0x321dfd(%rip)    # 0x43d858
leaq 0x42d(%rip), %rsi       # 0x11be8f
movq %rax, %rdi
callq 0x102d5f
callq 0x69ede
movq 0x321de2(%rip), %rax    # 0x43d858
popq %rcx
retq
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/spec_visitor.c
// Function: spec_visitor_free
static void spec_visitor_free(GtNodeVisitor* nv)
{
  GtSpecVisitor *sv;
  if (!nv) return;
  sv = spec_visitor_cast(nv);
  gt_str_delete(sv->filename);
  lua_close(sv->L);
  gt_hashmap_delete(sv->type_specs);
  gt_array_delete(sv->graph_context);
}

// Assembly:
testq %rdi, %rdi
je 0x11bab9
pushq %rbx
movq %rdi, %rbx
callq 0x11ba14
movq %rax, %rdi
movq %rbx, %rsi
callq 0x102dfe
movq %rax, %rbx
movq 0x18(%rax), %rdi
callq 0xae103
movq 0x10(%rbx), %rdi
callq 0x1de4cb
movq 0x20(%rbx), %rdi
callq 0x8f933
movq 0x60(%rbx), %rdi
popq %rbx
jmp 0x58eb9
retq
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/spec_visitor.c
// Function: spec_visitor_comment_node
static int spec_visitor_comment_node(GtNodeVisitor *nv, GtCommentNode *cn,
                                     GtError *err)
{
  int had_err = 0;
  GtSpecVisitor *sv;
  gt_error_check(err);

  sv = spec_visitor_cast(nv);
  if (sv->comment_ref != GT_UNDEF_INT) {
    sv->current_node = (GtGenomeNode*) cn;
    lua_rawgeti(sv->L, LUA_REGISTRYINDEX, sv->comment_ref);
    gt_lua_genome_node_push(sv->L, gt_genome_node_ref((GtGenomeNode*) cn));
    if (lua_pcall(sv->L, 1, 0, 0)) {
      const char *error = lua_tostring(sv->L, -1);
      gt_error_set(err, "%s", error);
      had_err = -1;
    }
  }
  gt_spec_results_add_cc(sv->res);
  return had_err;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movq %rdx, %rbx
movq %rsi, %r15
movq %rdi, %r14
testq %rdx, %rdx
je 0x11bae0
movq %rbx, %rdi
callq 0x89eb7
testb %al, %al
jne 0x11bb75
callq 0x11ba14
movq %rax, %rdi
movq %r14, %rsi
callq 0x102dfe
movq %rax, %r14
movl 0x38(%rax), %edx
xorl %ebp, %ebp
movl %edx, %eax
negl %eax
jo 0x11bb61
movq %r15, 0x48(%r14)
movq 0x10(%r14), %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x1dc73a
movq 0x10(%r14), %r12
movq %r15, %rdi
callq 0xdccf8
movq %r12, %rdi
movq %rax, %rsi
callq 0x12f524
movq 0x10(%r14), %rdi
pushq $0x1
popq %rsi
xorl %ebp, %ebp
xorl %edx, %edx
xorl %ecx, %ecx
callq 0x1dcedd
testl %eax, %eax
je 0x11bb61
movq 0x10(%r14), %rdi
pushq $-0x1
popq %rbp
movl %ebp, %esi
xorl %edx, %edx
callq 0x1dbb73
leaq 0x24d355(%rip), %rsi    # 0x368ea9
movq %rbx, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x89dbb
movq 0x68(%r14), %rdi
callq 0x11a731
movl %ebp, %eax
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movq 0x31c3ec(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1c948d(%rip), %rsi    # 0x2e5013
leaq 0x1c9632(%rip), %rdx    # 0x2e51bf
leaq 0x21813b(%rip), %rcx    # 0x333ccf
leaq 0x21804b(%rip), %r8     # 0x333be6
movl $0xe6, %r9d
xorl %eax, %eax
callq 0x17a50
callq 0x17390
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/spec_visitor.c
// Function: spec_visitor_feature_node
static int spec_visitor_feature_node(GtNodeVisitor *nv, GtFeatureNode *fn,
                                     GtError *err)
{
  int had_err = 0;
  GtSpecVisitor *sv;
  GtSpecVisitorNodeTraverseInfo info;
  gt_error_check(err);

  sv = spec_visitor_cast(nv);
  had_err = spec_visitor_process_node(sv, fn, err);
  if (!had_err && gt_feature_node_has_children(fn)) {
    info.sv = sv;
    info.err = err;
    gt_array_add(info.sv->graph_context, fn);
    had_err = gt_feature_node_traverse_direct_children(fn, &info,
                                                       spec_visitor_visit_child,
                                                       err);
    (void) gt_array_pop(info.sv->graph_context);
  }
  gt_spec_results_add_cc(sv->res);
  return had_err;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x20, %rsp
movq %rdx, %rbx
movq %rsi, %r15
movq %rdi, %r14
movq %rsi, 0x8(%rsp)
testq %rdx, %rdx
je 0x11bbdc
movq %rbx, %rdi
callq 0x89eb7
testb %al, %al
jne 0x11bc71
callq 0x11ba14
movq %rax, %rdi
movq %r14, %rsi
callq 0x102dfe
movq %rax, %r14
movq %rax, %rdi
movq %r15, %rsi
movq %rbx, %rdx
callq 0x11c711
testl %eax, %eax
je 0x11bc06
pushq $-0x1
popq %rbp
jmp 0x11bc59
movq %r15, %rdi
callq 0xda2e0
xorl %ebp, %ebp
testb %al, %al
je 0x11bc59
leaq 0x10(%rsp), %r15
movq %r14, 0x8(%r15)
movq %rbx, (%r15)
movq 0x60(%r14), %rdi
leaq 0x8(%rsp), %r12
pushq $0x8
popq %rdx
movq %r12, %rsi
callq 0x5851d
movq (%r12), %rdi
leaq 0xbbd(%rip), %rdx       # 0x11c7fc
movq %r15, %rsi
movq %rbx, %rcx
callq 0xdbc10
movl %eax, %ebp
movq 0x8(%r15), %rax
movq 0x60(%rax), %rdi
callq 0x58247
movq 0x68(%r14), %rdi
callq 0x11a731
movl %ebp, %eax
addq $0x20, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movq 0x31c2f0(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1c9391(%rip), %rsi    # 0x2e5013
leaq 0x1c9536(%rip), %rdx    # 0x2e51bf
leaq 0x218059(%rip), %rcx    # 0x333ce9
leaq 0x217f4f(%rip), %r8     # 0x333be6
movl $0xa4, %r9d
xorl %eax, %eax
callq 0x17a50
callq 0x17390
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/spec_visitor.c
// Function: spec_visitor_region_node
static int spec_visitor_region_node(GtNodeVisitor *nv, GtRegionNode *rn,
                                    GtError *err)
{
  int had_err = 0;
  GtSpecVisitor *sv;
  gt_error_check(err);

  sv = spec_visitor_cast(nv);
  if (sv->region_ref != GT_UNDEF_INT) {
    sv->current_node = (GtGenomeNode*) rn;
    lua_rawgeti(sv->L, LUA_REGISTRYINDEX, sv->region_ref);
    gt_lua_genome_node_push(sv->L, gt_genome_node_ref((GtGenomeNode*) rn));
    if (lua_pcall(sv->L, 1, 0, 0)) {
      const char *error = lua_tostring(sv->L, -1);
      gt_error_set(err, "%s", error);
      had_err = -1;
    }
  }
  gt_spec_results_add_cc(sv->res);
  return had_err;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movq %rdx, %rbx
movq %rsi, %r15
movq %rdi, %r14
testq %rdx, %rdx
je 0x11bccf
movq %rbx, %rdi
callq 0x89eb7
testb %al, %al
jne 0x11bd64
callq 0x11ba14
movq %rax, %rdi
movq %r14, %rsi
callq 0x102dfe
movq %rax, %r14
movl 0x34(%rax), %edx
xorl %ebp, %ebp
movl %edx, %eax
negl %eax
jo 0x11bd50
movq %r15, 0x48(%r14)
movq 0x10(%r14), %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x1dc73a
movq 0x10(%r14), %r12
movq %r15, %rdi
callq 0xdccf8
movq %r12, %rdi
movq %rax, %rsi
callq 0x12f524
movq 0x10(%r14), %rdi
pushq $0x1
popq %rsi
xorl %ebp, %ebp
xorl %edx, %edx
xorl %ecx, %ecx
callq 0x1dcedd
testl %eax, %eax
je 0x11bd50
movq 0x10(%r14), %rdi
pushq $-0x1
popq %rbp
movl %ebp, %esi
xorl %edx, %edx
callq 0x1dbb73
leaq 0x24d166(%rip), %rsi    # 0x368ea9
movq %rbx, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x89dbb
movq 0x68(%r14), %rdi
callq 0x11a731
movl %ebp, %eax
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movq 0x31c1fd(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1c929e(%rip), %rsi    # 0x2e5013
leaq 0x1c9443(%rip), %rdx    # 0x2e51bf
leaq 0x217f9a(%rip), %rcx    # 0x333d1d
leaq 0x217e5c(%rip), %r8     # 0x333be6
movl $0xd0, %r9d
xorl %eax, %eax
callq 0x17a50
callq 0x17390
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/spec_visitor.c
// Function: spec_visitor_sequence_node
static int spec_visitor_sequence_node(GtNodeVisitor *nv, GtSequenceNode *sn,
                                      GtError *err)
{
  int had_err = 0;
  GtSpecVisitor *sv;
  gt_error_check(err);

  sv = spec_visitor_cast(nv);
  if (sv->sequence_ref != GT_UNDEF_INT) {
    sv->current_node = (GtGenomeNode*) sn;
    lua_rawgeti(sv->L, LUA_REGISTRYINDEX, sv->sequence_ref);
    gt_lua_genome_node_push(sv->L, gt_genome_node_ref((GtGenomeNode*) sn));
    if (lua_pcall(sv->L, 1, 0, 0)) {
      const char *error = lua_tostring(sv->L, -1);
      gt_error_set(err, "%s", error);
      had_err = -1;
    }
  }
  gt_spec_results_add_cc(sv->res);
  return had_err;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movq %rdx, %rbx
movq %rsi, %r15
movq %rdi, %r14
testq %rdx, %rdx
je 0x11bdc2
movq %rbx, %rdi
callq 0x89eb7
testb %al, %al
jne 0x11be57
callq 0x11ba14
movq %rax, %rdi
movq %r14, %rsi
callq 0x102dfe
movq %rax, %r14
movl 0x3c(%rax), %edx
xorl %ebp, %ebp
movl %edx, %eax
negl %eax
jo 0x11be43
movq %r15, 0x48(%r14)
movq 0x10(%r14), %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x1dc73a
movq 0x10(%r14), %r12
movq %r15, %rdi
callq 0xdccf8
movq %r12, %rdi
movq %rax, %rsi
callq 0x12f524
movq 0x10(%r14), %rdi
pushq $0x1
popq %rsi
xorl %ebp, %ebp
xorl %edx, %edx
xorl %ecx, %ecx
callq 0x1dcedd
testl %eax, %eax
je 0x11be43
movq 0x10(%r14), %rdi
pushq $-0x1
popq %rbp
movl %ebp, %esi
xorl %edx, %edx
callq 0x1dbb73
leaq 0x24d073(%rip), %rsi    # 0x368ea9
movq %rbx, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x89dbb
movq 0x68(%r14), %rdi
callq 0x11a731
movl %ebp, %eax
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movq 0x31c10a(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1c91ab(%rip), %rsi    # 0x2e5013
leaq 0x1c9350(%rip), %rdx    # 0x2e51bf
leaq 0x217ec0(%rip), %rcx    # 0x333d36
leaq 0x217d69(%rip), %r8     # 0x333be6
movl $0xfc, %r9d
xorl %eax, %eax
callq 0x17a50
callq 0x17390
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/spec_visitor.c
// Function: spec_visitor_meta_node
static int spec_visitor_meta_node(GtNodeVisitor *nv, GtMetaNode *mn,
                                  GtError *err)
{
  int had_err = 0;
  GtSpecVisitor *sv;
  gt_error_check(err);

  sv = spec_visitor_cast(nv);
  if (sv->meta_ref != GT_UNDEF_INT) {
    sv->current_node = (GtGenomeNode*) mn;
    lua_rawgeti(sv->L, LUA_REGISTRYINDEX, sv->meta_ref);
    gt_lua_genome_node_push(sv->L, gt_genome_node_ref((GtGenomeNode*) mn));
    if (lua_pcall(sv->L, 1, 0, 0)) {
      const char *error = lua_tostring(sv->L, -1);
      gt_error_set(err, "%s", error);
      had_err = -1;
    }
  }
  gt_spec_results_add_cc(sv->res);
  return had_err;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movq %rdx, %rbx
movq %rsi, %r15
movq %rdi, %r14
testq %rdx, %rdx
je 0x11beb5
movq %rbx, %rdi
callq 0x89eb7
testb %al, %al
jne 0x11bf4a
callq 0x11ba14
movq %rax, %rdi
movq %r14, %rsi
callq 0x102dfe
movq %rax, %r14
movl 0x30(%rax), %edx
xorl %ebp, %ebp
movl %edx, %eax
negl %eax
jo 0x11bf36
movq %r15, 0x48(%r14)
movq 0x10(%r14), %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x1dc73a
movq 0x10(%r14), %r12
movq %r15, %rdi
callq 0xdccf8
movq %r12, %rdi
movq %rax, %rsi
callq 0x12f524
movq 0x10(%r14), %rdi
pushq $0x1
popq %rsi
xorl %ebp, %ebp
xorl %edx, %edx
xorl %ecx, %ecx
callq 0x1dcedd
testl %eax, %eax
je 0x11bf36
movq 0x10(%r14), %rdi
pushq $-0x1
popq %rbp
movl %ebp, %esi
xorl %edx, %edx
callq 0x1dbb73
leaq 0x24cf80(%rip), %rsi    # 0x368ea9
movq %rbx, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x89dbb
movq 0x68(%r14), %rdi
callq 0x11a731
movl %ebp, %eax
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movq 0x31c017(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1c90b8(%rip), %rsi    # 0x2e5013
leaq 0x1c925d(%rip), %rdx    # 0x2e51bf
leaq 0x217de8(%rip), %rcx    # 0x333d51
leaq 0x217c76(%rip), %r8     # 0x333be6
movl $0xba, %r9d
xorl %eax, %eax
callq 0x17a50
callq 0x17390
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/spec_visitor.c
// Function: spec_luaL_opencustomlibs
static void spec_luaL_opencustomlibs(lua_State *L, const luaL_Reg *lib)
{
  for (; lib->func; lib++) {
    lua_pushcfunction(L, lib->func);
    lua_pushstring(L, lib->name);
    lua_call(L, 1, 0);
  }
}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
movq %rsi, %rbx
movq %rdi, %r14
addq $0x8, %rbx
pushq $0x1
popq %rbp
movq (%rbx), %rsi
testq %rsi, %rsi
je 0x11c70c
movq %r14, %rdi
xorl %edx, %edx
callq 0x1dc3ec
movq -0x8(%rbx), %rsi
movq %r14, %rdi
callq 0x1dc009
movq %r14, %rdi
movl %ebp, %esi
xorl %edx, %edx
callq 0x1dce3a
addq $0x10, %rbx
jmp 0x11c6dc
popq %rbx
popq %r14
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/spec_visitor.c
// Function: spec_visitor_process_node
static int spec_visitor_process_node(GtSpecVisitor *sv, GtFeatureNode *node,
                                     GtError *err)
{
  int had_err = 0, *ref;
  const char *type;

  if (!gt_feature_node_is_pseudo(node)) {
    type = gt_feature_node_get_type(node);
    gt_assert(type);
    if ((ref = gt_hashmap_get(sv->type_specs, type))) {
      sv->current_node = (GtGenomeNode*) node;
      lua_rawgeti(sv->L, LUA_REGISTRYINDEX, *ref);
      gt_lua_genome_node_push(sv->L, gt_genome_node_ref((GtGenomeNode*) node));
      if (lua_pcall(sv->L, 1, 0, 0)) {
        const char *error = lua_tostring(sv->L, -1);
        gt_error_set(err, "%s", error);
        had_err = -1;
      }
    }
  }

  return had_err;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movq %rdx, %rbx
movq %rsi, %r15
movq %rdi, %r14
movq %rsi, %rdi
callq 0xda769
xorl %ebp, %ebp
testb %al, %al
jne 0x11c7bb
movq %r15, %rdi
callq 0xda338
testq %rax, %rax
je 0x11c7c6
movq 0x20(%r14), %rdi
movq %rax, %rsi
callq 0x8f482
testq %rax, %rax
je 0x11c7bb
movq %r15, 0x48(%r14)
movq 0x10(%r14), %rdi
movl (%rax), %edx
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x1dc73a
movq 0x10(%r14), %r12
movq %r15, %rdi
callq 0xdccf8
movq %r12, %rdi
movq %rax, %rsi
callq 0x12f524
movq 0x10(%r14), %rdi
pushq $0x1
popq %rsi
xorl %ebp, %ebp
xorl %edx, %edx
xorl %ecx, %ecx
callq 0x1dcedd
testl %eax, %eax
je 0x11c7bb
movq 0x10(%r14), %rdi
pushq $-0x1
popq %rbp
movl %ebp, %esi
xorl %edx, %edx
callq 0x1dbb73
leaq 0x24c6fb(%rip), %rsi    # 0x368ea9
movq %rbx, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x89dbb
movl %ebp, %eax
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movq 0x31b79b(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1c883c(%rip), %rsi    # 0x2e5013
leaq 0x21afaa(%rip), %rdx    # 0x337788
leaq 0x21751e(%rip), %rcx    # 0x333d03
leaq 0x2173fa(%rip), %r8     # 0x333be6
pushq $0x7e
popq %r9
xorl %eax, %eax
callq 0x17a50
callq 0x17390
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/spec_visitor.c
// Function: spec_visitor_visit_child
static int spec_visitor_visit_child(GtFeatureNode* fn, void *nti, GtError *err)
{
  int had_err = 0;
  GtSpecVisitorNodeTraverseInfo* info = (GtSpecVisitorNodeTraverseInfo*) nti;

  had_err = spec_visitor_process_node(info->sv, fn, err);
  if (!had_err && gt_feature_node_has_children(fn)) {
    gt_array_add(info->sv->graph_context, fn);
    had_err = gt_feature_node_traverse_direct_children(fn, info,
                                                       spec_visitor_visit_child,
                                                       err);
    (void) gt_array_pop(info->sv->graph_context);
  }
  return had_err;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rdx, %r14
movq %rsi, %rbx
movq %rdi, %r15
movq %rdi, (%rsp)
movq 0x8(%rsi), %rdi
movq %r15, %rsi
callq 0x11c711
testl %eax, %eax
je 0x11c825
pushq $-0x1
popq %rbp
jmp 0x11c86d
movq %r15, %rdi
callq 0xda2e0
xorl %ebp, %ebp
testb %al, %al
je 0x11c86d
movq 0x8(%rbx), %rax
movq 0x60(%rax), %rdi
movq %rsp, %r15
pushq $0x8
popq %rdx
movq %r15, %rsi
callq 0x5851d
movq (%r15), %rdi
leaq -0x57(%rip), %rdx       # 0x11c7fc
movq %rbx, %rsi
movq %r14, %rcx
callq 0xdbc10
movl %eax, %ebp
movq 0x8(%rbx), %rax
movq 0x60(%rax), %rdi
callq 0x58247
movl %ebp, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq