LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/spec_results.c
// Function: spec_results_luaL_opencustomlibs
static void spec_results_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:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
movq %rsi, 0x8(%rsp)
movq 0x8(%rsp), %rax
cmpq $0x0, 0x8(%rax)
je 0x1db942
movq 0x10(%rsp), %rdi
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rsi
xorl %edx, %edx
callq 0x335ef0
movq 0x10(%rsp), %rdi
movq 0x8(%rsp), %rax
movq (%rax), %rsi
callq 0x335740
movq 0x10(%rsp), %rdi
movl $0x1, %esi
xorl %edx, %edx
callq 0x337460
movq 0x8(%rsp), %rax
addq $0x10, %rax
movq %rax, 0x8(%rsp)
jmp 0x1db8ee
addq $0x18, %rsp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/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:
subq $0x38, %rsp
movq %rdi, 0x30(%rsp)
movq %rsi, 0x28(%rsp)
movq %rdx, 0x20(%rsp)
movq %rcx, 0x18(%rsp)
movq 0x30(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x20(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rax
movq 0x18(%rax), %rdi
movq 0x10(%rsp), %rsi
callq 0x335740
movq 0x8(%rsp), %rax
movq 0x18(%rax), %rdi
xorl %edx, %edx
movl %edx, %esi
callq 0x336790
movq 0x28(%rsp), %rdi
movq 0x8(%rsp), %rdx
leaq 0x2e(%rip), %rsi        # 0x1db9e0
xorl %eax, %eax
movl %eax, %ecx
callq 0xe11a0
movq 0x8(%rsp), %rax
movq 0x18(%rax), %rdi
movl $0xfffffffd, %esi       # imm = 0xFFFFFFFD
callq 0x336e40
xorl %eax, %eax
addq $0x38, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/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:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movl $0x0, 0x14(%rsp)
cmpq $0x0, 0x20(%rsp)
jne 0x1dbe51
movq 0x460180(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x33a1e9(%rip), %rsi    # 0x516013
leaq 0x372862(%rip), %rdx    # 0x54e693
leaq 0x38a340(%rip), %rcx    # 0x566178
leaq 0x38a04d(%rip), %r8     # 0x565e8c
movl $0x19a, %r9d            # imm = 0x19A
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x1dbe53
movq 0x20(%rsp), %rdi
leaq 0x461c59(%rip), %rsi    # 0x63dab8
callq 0x336160
movq 0x20(%rsp), %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x336210
movq 0x20(%rsp), %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x335300
movq %rax, 0x18(%rsp)
movl $0x1, 0x14(%rsp)
movl 0x14(%rsp), %eax
movl %eax, 0x10(%rsp)
movq 0x20(%rsp), %rdi
callq 0x333eb0
movl %eax, %ecx
movl 0x10(%rsp), %eax
cmpl %ecx, %eax
jg 0x1dbeff
movq 0x20(%rsp), %rdi
movl 0x14(%rsp), %esi
callq 0x3347b0
cmpl $0x0, %eax
je 0x1dbef0
movq 0x18(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x20(%rsp), %rdi
movl 0x14(%rsp), %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x334f50
movq 0x8(%rsp), %rdi
movq %rax, %rdx
leaq 0x3c0138(%rip), %rsi    # 0x59c021
movb $0x0, %al
callq 0xddca0
jmp 0x1dbef2
movl 0x14(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x14(%rsp)
jmp 0x1dbe8f
xorl %eax, %eax
addq $0x28, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/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:
pushq %rax
movq %rdi, (%rsp)
cmpq $0x0, (%rsp)
jne 0x1dbf1e
jmp 0x1dbf80
movq (%rsp), %rax
movq (%rax), %rdi
callq 0xe1770
movq (%rsp), %rax
movq 0x8(%rax), %rdi
callq 0xe1770
movq (%rsp), %rax
movq 0x18(%rax), %rdi
callq 0xe1770
movq (%rsp), %rax
movq 0x20(%rax), %rdi
callq 0xe1770
movq (%rsp), %rax
movq 0x10(%rax), %rdi
callq 0xe1770
movq (%rsp), %rax
movq 0x50(%rax), %rdi
callq 0x11fd20
movq (%rsp), %rdi
leaq 0x389f16(%rip), %rsi    # 0x565e8c
movl $0x23f, %edx            # imm = 0x23F
callq 0xe88c0
popq %rax
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/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:
pushq %rax
movq %rdi, (%rsp)
cmpq $0x0, (%rsp)
jne 0x1dbf9e
jmp 0x1dbfcc
movq (%rsp), %rax
movq (%rax), %rdi
callq 0x11fd20
movq (%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x11fd20
movq (%rsp), %rdi
leaq 0x389eca(%rip), %rsi    # 0x565e8c
movl $0x7b, %edx
callq 0xe88c0
popq %rax
retq
nop
// File: /workspace/github_c_makefile_star2_O0/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 %rax
movl $0x1, %edi
movl $0x10, %esi
leaq 0x389eaa(%rip), %rdx    # 0x565e8c
movl $0x70, %ecx
callq 0xe83c0
movq %rax, (%rsp)
callq 0x11f5c0
movq %rax, %rcx
movq (%rsp), %rax
movq %rcx, (%rax)
callq 0x11f5c0
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/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:
subq $0x38, %rsp
movq %rdi, 0x30(%rsp)
movq %rsi, 0x28(%rsp)
movq %rdx, 0x20(%rsp)
movq %rcx, 0x18(%rsp)
movq 0x28(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x20(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x11fcc0
cmpq $0x0, %rax
jbe 0x1dc075
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
jmp 0x1dc09c
movq 0x10(%rsp), %rax
movq (%rax), %rdi
callq 0x11fcc0
cmpq $0x0, %rax
jbe 0x1dc09a
movq 0x8(%rsp), %rax
movq (%rax), %rax
movq (%rax), %rcx
addq $0x1, %rcx
movq %rcx, (%rax)
jmp 0x1dc09c
xorl %eax, %eax
addq $0x38, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/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 0x9f220
cmpq $0x0, 0x4669fa(%rip)    # 0x642f08
jne 0x1dc561
movl $0x78, %edi
leaq 0x54(%rip), %rsi        # 0x1dc570
leaq 0xbd(%rip), %rdx        # 0x1dc5e0
leaq 0x216(%rip), %rcx       # 0x1dc740
leaq 0x32f(%rip), %r8        # 0x1dc860
leaq 0x488(%rip), %r9        # 0x1dc9c0
xorl %eax, %eax
movq $0x0, (%rsp)
callq 0x1b2170
movq %rax, 0x4669ba(%rip)    # 0x642f08
movq 0x4669b3(%rip), %rdi    # 0x642f08
leaq 0x5c4(%rip), %rsi       # 0x1dcb20
callq 0x1b2250
callq 0x9f280
movq 0x46699b(%rip), %rax    # 0x642f08
popq %rcx
retq
nop
// File: /workspace/github_c_makefile_star2_O0/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:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
cmpq $0x0, 0x10(%rsp)
jne 0x1dc583
jmp 0x1dc5d2
callq 0x1dc500
movq %rax, %rdi
movq 0x10(%rsp), %rsi
callq 0x1b2350
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rax
movq 0x18(%rax), %rdi
callq 0x11f560
movq 0x8(%rsp), %rax
movq 0x10(%rax), %rdi
callq 0x339e40
movq 0x8(%rsp), %rax
movq 0x20(%rax), %rdi
callq 0xe1770
movq 0x8(%rsp), %rax
movq 0x60(%rax), %rdi
callq 0x81f80
addq $0x18, %rsp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/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:
subq $0x38, %rsp
movq %rdi, 0x30(%rsp)
movq %rsi, 0x28(%rsp)
movq %rdx, 0x20(%rsp)
movl $0x0, 0x1c(%rsp)
cmpq $0x0, 0x20(%rsp)
je 0x1dc64b
movq 0x20(%rsp), %rdi
callq 0xd8a60
testb $0x1, %al
jne 0x1dc613
jmp 0x1dc64b
movq 0x45f986(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x3399ef(%rip), %rsi    # 0x516013
leaq 0x339b94(%rip), %rdx    # 0x5161bf
leaq 0x389c88(%rip), %rcx    # 0x5662ba
leaq 0x389b98(%rip), %r8     # 0x5661d1
movl $0xe6, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x1dc64d
callq 0x1dc500
movq %rax, %rdi
movq 0x30(%rsp), %rsi
callq 0x1b2350
movq %rax, 0x10(%rsp)
movq 0x10(%rsp), %rax
cmpl $0x80000000, 0x38(%rax) # imm = 0x80000000
je 0x1dc71c
movq 0x28(%rsp), %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x48(%rax)
movq 0x10(%rsp), %rax
movq 0x10(%rax), %rdi
movq 0x10(%rsp), %rax
movl 0x38(%rax), %edx
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x336650
movq 0x10(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, (%rsp)
movq 0x28(%rsp), %rdi
callq 0x171410
movq (%rsp), %rdi
movq %rax, %rsi
callq 0x1fbf90
movq 0x10(%rsp), %rax
movq 0x10(%rax), %rdi
movl $0x1, %esi
xorl %ecx, %ecx
movl %ecx, %edx
callq 0x3375c0
cmpl $0x0, %eax
je 0x1dc71a
movq 0x10(%rsp), %rax
movq 0x10(%rax), %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
xorl %eax, %eax
movl %eax, %edx
callq 0x334f50
movq %rax, 0x8(%rsp)
movq 0x20(%rsp), %rdi
movq 0x8(%rsp), %rdx
leaq 0x3bf916(%rip), %rsi    # 0x59c021
movb $0x0, %al
callq 0xd88c0
movl $0xffffffff, 0x1c(%rsp) # imm = 0xFFFFFFFF
jmp 0x1dc71c
movq 0x10(%rsp), %rax
movq 0x68(%rax), %rdi
callq 0x1da740
movl 0x1c(%rsp), %eax
addq $0x38, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/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:
subq $0x38, %rsp
movq %rdi, 0x30(%rsp)
movq %rsi, 0x28(%rsp)
movq %rdx, 0x20(%rsp)
movl $0x0, 0x1c(%rsp)
cmpq $0x0, 0x20(%rsp)
je 0x1dc7ab
movq 0x20(%rsp), %rdi
callq 0xd8a60
testb $0x1, %al
jne 0x1dc773
jmp 0x1dc7ab
movq 0x45f826(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x33988f(%rip), %rsi    # 0x516013
leaq 0x339a34(%rip), %rdx    # 0x5161bf
leaq 0x389b42(%rip), %rcx    # 0x5662d4
leaq 0x389a38(%rip), %r8     # 0x5661d1
movl $0xa4, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x1dc7ad
callq 0x1dc500
movq %rax, %rdi
movq 0x30(%rsp), %rsi
callq 0x1b2350
movq %rax, 0x10(%rsp)
movq 0x10(%rsp), %rdi
movq 0x28(%rsp), %rsi
movq 0x20(%rsp), %rdx
callq 0x1dd7c0
movl %eax, 0x1c(%rsp)
cmpl $0x0, 0x1c(%rsp)
jne 0x1dc849
movq 0x28(%rsp), %rdi
callq 0x16d3a0
testb $0x1, %al
jne 0x1dc7f3
jmp 0x1dc849
movq 0x10(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x20(%rsp), %rax
movq %rax, (%rsp)
movq 0x8(%rsp), %rax
movq 0x60(%rax), %rdi
leaq 0x28(%rsp), %rsi
movl $0x8, %edx
callq 0x81100
movq 0x28(%rsp), %rdi
movq 0x20(%rsp), %rcx
movq %rsp, %rsi
leaq 0x10ee(%rip), %rdx      # 0x1dd920
callq 0x16f9f0
movl %eax, 0x1c(%rsp)
movq 0x8(%rsp), %rax
movq 0x60(%rax), %rdi
callq 0x80c70
movq 0x10(%rsp), %rax
movq 0x68(%rax), %rdi
callq 0x1da740
movl 0x1c(%rsp), %eax
addq $0x38, %rsp
retq
// File: /workspace/github_c_makefile_star2_O0/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:
subq $0x38, %rsp
movq %rdi, 0x30(%rsp)
movq %rsi, 0x28(%rsp)
movq %rdx, 0x20(%rsp)
movl $0x0, 0x1c(%rsp)
cmpq $0x0, 0x20(%rsp)
je 0x1dc8cb
movq 0x20(%rsp), %rdi
callq 0xd8a60
testb $0x1, %al
jne 0x1dc893
jmp 0x1dc8cb
movq 0x45f706(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x33976f(%rip), %rsi    # 0x516013
leaq 0x339914(%rip), %rdx    # 0x5161bf
leaq 0x389a56(%rip), %rcx    # 0x566308
leaq 0x389918(%rip), %r8     # 0x5661d1
movl $0xd0, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x1dc8cd
callq 0x1dc500
movq %rax, %rdi
movq 0x30(%rsp), %rsi
callq 0x1b2350
movq %rax, 0x10(%rsp)
movq 0x10(%rsp), %rax
cmpl $0x80000000, 0x34(%rax) # imm = 0x80000000
je 0x1dc99c
movq 0x28(%rsp), %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x48(%rax)
movq 0x10(%rsp), %rax
movq 0x10(%rax), %rdi
movq 0x10(%rsp), %rax
movl 0x34(%rax), %edx
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x336650
movq 0x10(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, (%rsp)
movq 0x28(%rsp), %rdi
callq 0x171410
movq (%rsp), %rdi
movq %rax, %rsi
callq 0x1fbf90
movq 0x10(%rsp), %rax
movq 0x10(%rax), %rdi
movl $0x1, %esi
xorl %ecx, %ecx
movl %ecx, %edx
callq 0x3375c0
cmpl $0x0, %eax
je 0x1dc99a
movq 0x10(%rsp), %rax
movq 0x10(%rax), %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
xorl %eax, %eax
movl %eax, %edx
callq 0x334f50
movq %rax, 0x8(%rsp)
movq 0x20(%rsp), %rdi
movq 0x8(%rsp), %rdx
leaq 0x3bf696(%rip), %rsi    # 0x59c021
movb $0x0, %al
callq 0xd88c0
movl $0xffffffff, 0x1c(%rsp) # imm = 0xFFFFFFFF
jmp 0x1dc99c
movq 0x10(%rsp), %rax
movq 0x68(%rax), %rdi
callq 0x1da740
movl 0x1c(%rsp), %eax
addq $0x38, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/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:
subq $0x38, %rsp
movq %rdi, 0x30(%rsp)
movq %rsi, 0x28(%rsp)
movq %rdx, 0x20(%rsp)
movl $0x0, 0x1c(%rsp)
cmpq $0x0, 0x20(%rsp)
je 0x1dca2b
movq 0x20(%rsp), %rdi
callq 0xd8a60
testb $0x1, %al
jne 0x1dc9f3
jmp 0x1dca2b
movq 0x45f5a6(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x33960f(%rip), %rsi    # 0x516013
leaq 0x3397b4(%rip), %rdx    # 0x5161bf
leaq 0x38990f(%rip), %rcx    # 0x566321
leaq 0x3897b8(%rip), %r8     # 0x5661d1
movl $0xfc, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x1dca2d
callq 0x1dc500
movq %rax, %rdi
movq 0x30(%rsp), %rsi
callq 0x1b2350
movq %rax, 0x10(%rsp)
movq 0x10(%rsp), %rax
cmpl $0x80000000, 0x3c(%rax) # imm = 0x80000000
je 0x1dcafc
movq 0x28(%rsp), %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x48(%rax)
movq 0x10(%rsp), %rax
movq 0x10(%rax), %rdi
movq 0x10(%rsp), %rax
movl 0x3c(%rax), %edx
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x336650
movq 0x10(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, (%rsp)
movq 0x28(%rsp), %rdi
callq 0x171410
movq (%rsp), %rdi
movq %rax, %rsi
callq 0x1fbf90
movq 0x10(%rsp), %rax
movq 0x10(%rax), %rdi
movl $0x1, %esi
xorl %ecx, %ecx
movl %ecx, %edx
callq 0x3375c0
cmpl $0x0, %eax
je 0x1dcafa
movq 0x10(%rsp), %rax
movq 0x10(%rax), %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
xorl %eax, %eax
movl %eax, %edx
callq 0x334f50
movq %rax, 0x8(%rsp)
movq 0x20(%rsp), %rdi
movq 0x8(%rsp), %rdx
leaq 0x3bf536(%rip), %rsi    # 0x59c021
movb $0x0, %al
callq 0xd88c0
movl $0xffffffff, 0x1c(%rsp) # imm = 0xFFFFFFFF
jmp 0x1dcafc
movq 0x10(%rsp), %rax
movq 0x68(%rax), %rdi
callq 0x1da740
movl 0x1c(%rsp), %eax
addq $0x38, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/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:
subq $0x38, %rsp
movq %rdi, 0x30(%rsp)
movq %rsi, 0x28(%rsp)
movq %rdx, 0x20(%rsp)
movl $0x0, 0x1c(%rsp)
cmpq $0x0, 0x20(%rsp)
je 0x1dcb8b
movq 0x20(%rsp), %rdi
callq 0xd8a60
testb $0x1, %al
jne 0x1dcb53
jmp 0x1dcb8b
movq 0x45f446(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x3394af(%rip), %rsi    # 0x516013
leaq 0x339654(%rip), %rdx    # 0x5161bf
leaq 0x3897ca(%rip), %rcx    # 0x56633c
leaq 0x389658(%rip), %r8     # 0x5661d1
movl $0xba, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x1dcb8d
callq 0x1dc500
movq %rax, %rdi
movq 0x30(%rsp), %rsi
callq 0x1b2350
movq %rax, 0x10(%rsp)
movq 0x10(%rsp), %rax
cmpl $0x80000000, 0x30(%rax) # imm = 0x80000000
je 0x1dcc5c
movq 0x28(%rsp), %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x48(%rax)
movq 0x10(%rsp), %rax
movq 0x10(%rax), %rdi
movq 0x10(%rsp), %rax
movl 0x30(%rax), %edx
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x336650
movq 0x10(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, (%rsp)
movq 0x28(%rsp), %rdi
callq 0x171410
movq (%rsp), %rdi
movq %rax, %rsi
callq 0x1fbf90
movq 0x10(%rsp), %rax
movq 0x10(%rax), %rdi
movl $0x1, %esi
xorl %ecx, %ecx
movl %ecx, %edx
callq 0x3375c0
cmpl $0x0, %eax
je 0x1dcc5a
movq 0x10(%rsp), %rax
movq 0x10(%rax), %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
xorl %eax, %eax
movl %eax, %edx
callq 0x334f50
movq %rax, 0x8(%rsp)
movq 0x20(%rsp), %rdi
movq 0x8(%rsp), %rdx
leaq 0x3bf3d6(%rip), %rsi    # 0x59c021
movb $0x0, %al
callq 0xd88c0
movl $0xffffffff, 0x1c(%rsp) # imm = 0xFFFFFFFF
jmp 0x1dcc5c
movq 0x10(%rsp), %rax
movq 0x68(%rax), %rdi
callq 0x1da740
movl 0x1c(%rsp), %eax
addq $0x38, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/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:
subq $0x48, %rsp
movq %rdi, 0x40(%rsp)
movq %rsi, 0x38(%rsp)
movq %rdx, 0x30(%rsp)
movl $0x0, 0x2c(%rsp)
movq 0x38(%rsp), %rdi
callq 0x16dae0
testb $0x1, %al
jne 0x1dd909
movq 0x38(%rsp), %rdi
callq 0x16d430
movq %rax, 0x18(%rsp)
cmpq $0x0, 0x18(%rsp)
jne 0x1dd83c
movq 0x45e795(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x3387fe(%rip), %rsi    # 0x516013
leaq 0x38c606(%rip), %rdx    # 0x569e22
leaq 0x388acb(%rip), %rcx    # 0x5662ee
leaq 0x3889a7(%rip), %r8     # 0x5661d1
movl $0x7e, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x1dd83e
movq 0x40(%rsp), %rax
movq 0x20(%rax), %rdi
movq 0x18(%rsp), %rsi
callq 0xe0f20
movq %rax, 0x20(%rsp)
cmpq $0x0, %rax
je 0x1dd907
movq 0x38(%rsp), %rcx
movq 0x40(%rsp), %rax
movq %rcx, 0x48(%rax)
movq 0x40(%rsp), %rax
movq 0x10(%rax), %rdi
movq 0x20(%rsp), %rax
movl (%rax), %edx
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x336650
movq 0x40(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, 0x8(%rsp)
movq 0x38(%rsp), %rdi
callq 0x171410
movq 0x8(%rsp), %rdi
movq %rax, %rsi
callq 0x1fbf90
movq 0x40(%rsp), %rax
movq 0x10(%rax), %rdi
movl $0x1, %esi
xorl %ecx, %ecx
movl %ecx, %edx
callq 0x3375c0
cmpl $0x0, %eax
je 0x1dd905
movq 0x40(%rsp), %rax
movq 0x10(%rax), %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
xorl %eax, %eax
movl %eax, %edx
callq 0x334f50
movq %rax, 0x10(%rsp)
movq 0x30(%rsp), %rdi
movq 0x10(%rsp), %rdx
leaq 0x3be72b(%rip), %rsi    # 0x59c021
movb $0x0, %al
callq 0xd88c0
movl $0xffffffff, 0x2c(%rsp) # imm = 0xFFFFFFFF
jmp 0x1dd907
jmp 0x1dd909
movl 0x2c(%rsp), %eax
addq $0x48, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/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:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq %rsi, 0x18(%rsp)
movq %rdx, 0x10(%rsp)
movl $0x0, 0xc(%rsp)
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
movq (%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x20(%rsp), %rsi
movq 0x10(%rsp), %rdx
callq 0x1dd7c0
movl %eax, 0xc(%rsp)
cmpl $0x0, 0xc(%rsp)
jne 0x1dd9c0
movq 0x20(%rsp), %rdi
callq 0x16d3a0
testb $0x1, %al
jne 0x1dd976
jmp 0x1dd9c0
movq (%rsp), %rax
movq 0x8(%rax), %rax
movq 0x60(%rax), %rdi
leaq 0x20(%rsp), %rsi
movl $0x8, %edx
callq 0x81100
movq 0x20(%rsp), %rdi
movq (%rsp), %rsi
movq 0x10(%rsp), %rcx
leaq -0x86(%rip), %rdx       # 0x1dd920
callq 0x16f9f0
movl %eax, 0xc(%rsp)
movq (%rsp), %rax
movq 0x8(%rax), %rax
movq 0x60(%rax), %rdi
callq 0x80c70
movl 0xc(%rsp), %eax
addq $0x28, %rsp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/spec_visitor.c
// Function: spec_feature_node_lua_appears_as_root_node
static int spec_feature_node_lua_appears_as_root_node(lua_State *L)
{
  GtGenomeNode **gn;
  GtFeatureNode *fn;
  GtSpecVisitor *sv;
  bool result = false;
  gn = check_genome_node(L, 1);
  /* make sure we get a feature node */
  fn = gt_feature_node_try_cast(*gn);
  luaL_argcheck(L, fn, 1, "not a feature node");

  lua_pushlightuserdata(L, (void *) &spec_defuserdata);
  lua_gettable(L, LUA_REGISTRYINDEX);
  sv = lua_touserdata(L, -1);

  gt_assert(sv && sv->graph_context);
  result = (gt_array_size(sv->graph_context) == 0);
  lua_pushboolean(L, result);

  return 1;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movb $0x0, 0x7(%rsp)
movq 0x20(%rsp), %rdi
movl $0x1, %esi
leaq 0x388936(%rip), %rdx    # 0x566365
callq 0x33a790
movq %rax, 0x18(%rsp)
movq 0x18(%rsp), %rax
movq (%rax), %rdi
callq 0x170450
movq %rax, 0x10(%rsp)
movb $0x1, %al
cmpq $0x0, 0x10(%rsp)
movb %al, 0x6(%rsp)
jne 0x1dda79
movq 0x20(%rsp), %rdi
movl $0x1, %esi
leaq 0x38898b(%rip), %rdx    # 0x5663f5
callq 0x33a1f0
cmpl $0x0, %eax
setne %al
movb %al, 0x6(%rsp)
movb 0x6(%rsp), %al
movq 0x20(%rsp), %rdi
leaq 0x460037(%rip), %rsi    # 0x63dac0
callq 0x336160
movq 0x20(%rsp), %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x336210
movq 0x20(%rsp), %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x335300
movq %rax, 0x8(%rsp)
cmpq $0x0, 0x8(%rsp)
je 0x1ddac5
movq 0x8(%rsp), %rax
cmpq $0x0, 0x60(%rax)
jne 0x1ddafd
movq 0x45e4d4(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x33853d(%rip), %rsi    # 0x516013
leaq 0x388993(%rip), %rdx    # 0x566470
leaq 0x3889d5(%rip), %rcx    # 0x5664b9
leaq 0x3886e6(%rip), %r8     # 0x5661d1
movl $0x2b0, %r9d            # imm = 0x2B0
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x1ddaff
movq 0x8(%rsp), %rax
movq 0x60(%rax), %rdi
callq 0x81370
cmpq $0x0, %rax
sete %al
andb $0x1, %al
movb %al, 0x7(%rsp)
movq 0x20(%rsp), %rdi
movb 0x7(%rsp), %al
andb $0x1, %al
movzbl %al, %esi
callq 0x336110
movl $0x1, %eax
addq $0x28, %rsp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/spec_visitor.c
// Function: spec_feature_node_get_path
static int spec_feature_node_get_path(lua_State *L)
{
  GtGenomeNode **gn;
  GtFeatureNode *fn;
  GtSpecVisitor *sv;
  GtUword i, j = 0;
  gn = check_genome_node(L, 1);
  /* make sure we get a feature node */
  fn = gt_feature_node_try_cast(*gn);
  luaL_argcheck(L, fn, 1, "not a feature node");

  lua_pushlightuserdata(L, (void *) &spec_defuserdata);
  lua_gettable(L, LUA_REGISTRYINDEX);
  sv = lua_touserdata(L, -1);
  lua_newtable(L);

  gt_assert(sv && sv->graph_context);
  if (gt_array_size(sv->graph_context) > 0) {
    for (i = gt_array_size(sv->graph_context) - 1; i + 1 > 0; i--) {
      GtFeatureNode* fn2
        = *(GtFeatureNode**) gt_array_get(sv->graph_context, i);
      lua_pushinteger(L, j + 1); /* in Lua we index from 1 on */
      gt_lua_genome_node_push(L, gt_genome_node_ref((GtGenomeNode*) fn2));
      lua_rawset(L, -3);
      j++;
    }
  }
  return 1;
}

// Assembly:
subq $0x48, %rsp
movq %rdi, 0x40(%rsp)
movq $0x0, 0x18(%rsp)
movq 0x40(%rsp), %rdi
movl $0x1, %esi
leaq 0x388562(%rip), %rdx    # 0x566365
callq 0x33a790
movq %rax, 0x38(%rsp)
movq 0x38(%rsp), %rax
movq (%rax), %rdi
callq 0x170450
movq %rax, 0x30(%rsp)
movb $0x1, %al
cmpq $0x0, 0x30(%rsp)
movb %al, 0xf(%rsp)
jne 0x1dde4d
movq 0x40(%rsp), %rdi
movl $0x1, %esi
leaq 0x3885b7(%rip), %rdx    # 0x5663f5
callq 0x33a1f0
cmpl $0x0, %eax
setne %al
movb %al, 0xf(%rsp)
movb 0xf(%rsp), %al
movq 0x40(%rsp), %rdi
leaq 0x45fc63(%rip), %rsi    # 0x63dac0
callq 0x336160
movq 0x40(%rsp), %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x336210
movq 0x40(%rsp), %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x335300
movq %rax, 0x28(%rsp)
movq 0x40(%rsp), %rdi
xorl %edx, %edx
movl %edx, %esi
callq 0x336790
cmpq $0x0, 0x28(%rsp)
je 0x1ddea7
movq 0x28(%rsp), %rax
cmpq $0x0, 0x60(%rax)
jne 0x1ddedf
movq 0x45e0f2(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x33815b(%rip), %rsi    # 0x516013
leaq 0x3885b1(%rip), %rdx    # 0x566470
leaq 0x38869c(%rip), %rcx    # 0x566562
leaq 0x388304(%rip), %r8     # 0x5661d1
movl $0x255, %r9d            # imm = 0x255
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x1ddee1
movq 0x28(%rsp), %rax
movq 0x60(%rax), %rdi
callq 0x81370
cmpq $0x0, %rax
jbe 0x1ddf9e
movq 0x28(%rsp), %rax
movq 0x60(%rax), %rdi
callq 0x81370
subq $0x1, %rax
movq %rax, 0x20(%rsp)
movq 0x20(%rsp), %rax
addq $0x1, %rax
cmpq $0x0, %rax
jbe 0x1ddf9c
movq 0x28(%rsp), %rax
movq 0x60(%rax), %rdi
movq 0x20(%rsp), %rsi
callq 0x80b60
movq (%rax), %rax
movq %rax, 0x10(%rsp)
movq 0x40(%rsp), %rdi
movq 0x18(%rsp), %rsi
addq $0x1, %rsi
callq 0x3354f0
movq 0x40(%rsp), %rax
movq %rax, (%rsp)
movq 0x10(%rsp), %rdi
callq 0x171410
movq (%rsp), %rdi
movq %rax, %rsi
callq 0x1fbf90
movq 0x40(%rsp), %rdi
movl $0xfffffffd, %esi       # imm = 0xFFFFFFFD
callq 0x336e40
movq 0x18(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x18(%rsp)
movq 0x20(%rsp), %rax
addq $-0x1, %rax
movq %rax, 0x20(%rsp)
jmp 0x1ddf10
jmp 0x1ddf9e
movl $0x1, %eax
addq $0x48, %rsp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/spec_visitor.c
// Function: spec_register_feature_callback
static int spec_register_feature_callback(lua_State *L)
{
  int ref, *refptr;
  const char *type;
  GtSpecVisitor *sv;

  /* get parameters from stack */
  ref = luaL_ref(L, LUA_REGISTRYINDEX);
  type = lua_tostring(L, -1);
  gt_log_log("registering feature specs for type %s at ref %d", type, ref);
  /* get visitor from registry */
  lua_pushlightuserdata(L, (void *) &spec_defuserdata);
  lua_gettable(L, LUA_REGISTRYINDEX);
  sv = lua_touserdata(L, -1);
  /* register Lua callback for type */
  if (!gt_hashmap_get(sv->type_specs, type)) {
    refptr = gt_malloc(sizeof (int));
    *refptr = ref;
    gt_hashmap_add(sv->type_specs, gt_cstr_dup(type), refptr);
  } else {
    luaL_where(L, 1);
    lua_pushstring(L, "duplicate definition of spec for feature type '");
    lua_pushstring(L, type);
    lua_pushstring(L, "'");
    lua_concat(L, 4);
    return lua_error(L);
  }
  return 0;
}

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x28(%rsp)
movq 0x28(%rsp), %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x33b470
movl %eax, 0x24(%rsp)
movq 0x28(%rsp), %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
xorl %eax, %eax
movl %eax, %edx
callq 0x334f50
movq %rax, 0x10(%rsp)
movq 0x10(%rsp), %rsi
movl 0x24(%rsp), %edx
leaq 0x38821d(%rip), %rdi    # 0x566601
movb $0x0, %al
callq 0xe7740
movq 0x28(%rsp), %rdi
leaq 0x45f6c9(%rip), %rsi    # 0x63dac0
callq 0x336160
movq 0x28(%rsp), %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x336210
movq 0x28(%rsp), %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x335300
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rax
movq 0x20(%rax), %rdi
movq 0x10(%rsp), %rsi
callq 0xe0f20
cmpq $0x0, %rax
jne 0x1de488
movl $0x4, %edi
leaq 0x387d8d(%rip), %rsi    # 0x5661d1
movl $0x13d, %edx            # imm = 0x13D
callq 0xe80f0
movq %rax, 0x18(%rsp)
movl 0x24(%rsp), %ecx
movq 0x18(%rsp), %rax
movl %ecx, (%rax)
movq 0x8(%rsp), %rax
movq 0x20(%rax), %rax
movq %rax, (%rsp)
movq 0x10(%rsp), %rdi
callq 0xa2db0
movq (%rsp), %rdi
movq %rax, %rsi
movq 0x18(%rsp), %rdx
callq 0xe0fc0
jmp 0x1de4e7
movq 0x28(%rsp), %rdi
movl $0x1, %esi
callq 0x33a490
movq 0x28(%rsp), %rdi
leaq 0x38818e(%rip), %rsi    # 0x566631
callq 0x335740
movq 0x28(%rsp), %rdi
movq 0x10(%rsp), %rsi
callq 0x335740
movq 0x28(%rsp), %rdi
leaq 0x366aa5(%rip), %rsi    # 0x544f68
callq 0x335740
movq 0x28(%rsp), %rdi
movl $0x4, %esi
callq 0x338280
movq 0x28(%rsp), %rdi
callq 0x337ea0
movl %eax, 0x34(%rsp)
jmp 0x1de4ef
movl $0x0, 0x34(%rsp)
movl 0x34(%rsp), %eax
addq $0x38, %rsp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/spec_visitor.c
// Function: spec_register_region_callback
static int spec_register_region_callback(lua_State *L)
{
  int ref;
  GtSpecVisitor *sv;

  /* get parameters from stack */
  ref = luaL_ref(L, LUA_REGISTRYINDEX);
  /* get visitor from registry */
  lua_pushlightuserdata(L, (void *) &spec_defuserdata);
  lua_gettable(L, LUA_REGISTRYINDEX);
  sv = lua_touserdata(L, -1);
  /* register Lua callback */
  if (sv->region_ref == GT_UNDEF_INT) {
    sv->region_ref = ref;
    gt_log_log("registering region specs at ref %d", ref);
    gt_assert(sv->region_ref != GT_UNDEF_INT);
  } else {
    luaL_where(L, 1);
    lua_pushstring(L, "duplicate definition of spec for region nodes");
    lua_concat(L, 2);
    return lua_error(L);
  }
  return 0;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x18(%rsp)
movq 0x18(%rsp), %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x33b470
movl %eax, 0x14(%rsp)
movq 0x18(%rsp), %rdi
leaq 0x45f598(%rip), %rsi    # 0x63dac0
callq 0x336160
movq 0x18(%rsp), %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x336210
movq 0x18(%rsp), %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x335300
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rax
cmpl $0x80000000, 0x34(%rax) # imm = 0x80000000
jne 0x1de5c6
movl 0x14(%rsp), %ecx
movq 0x8(%rsp), %rax
movl %ecx, 0x34(%rax)
movl 0x14(%rsp), %esi
leaq 0x3880ec(%rip), %rdi    # 0x566661
movb $0x0, %al
callq 0xe7740
movq 0x8(%rsp), %rax
cmpl $0x80000000, 0x34(%rax) # imm = 0x80000000
jne 0x1de5c2
movq 0x45da0f(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x337a78(%rip), %rsi    # 0x516013
leaq 0x3880e2(%rip), %rdx    # 0x566684
leaq 0x3880fa(%rip), %rcx    # 0x5666a3
leaq 0x387c21(%rip), %r8     # 0x5661d1
movl $0x173, %r9d            # imm = 0x173
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x1de5c4
jmp 0x1de605
movq 0x18(%rsp), %rdi
movl $0x1, %esi
callq 0x33a490
movq 0x18(%rsp), %rdi
leaq 0x3880e0(%rip), %rsi    # 0x5666c1
callq 0x335740
movq 0x18(%rsp), %rdi
movl $0x2, %esi
callq 0x338280
movq 0x18(%rsp), %rdi
callq 0x337ea0
movl %eax, 0x24(%rsp)
jmp 0x1de60d
movl $0x0, 0x24(%rsp)
movl 0x24(%rsp), %eax
addq $0x28, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/spec_visitor.c
// Function: spec_register_meta_callback
static int spec_register_meta_callback(lua_State *L)
{
  int ref;
  GtSpecVisitor *sv;

  /* get parameters from stack */
  ref = luaL_ref(L, LUA_REGISTRYINDEX);
  /* get visitor from registry */
  lua_pushlightuserdata(L, (void *) &spec_defuserdata);
  lua_gettable(L, LUA_REGISTRYINDEX);
  sv = lua_touserdata(L, -1);
  /* register Lua callback */
  if (sv->meta_ref == GT_UNDEF_INT) {
    sv->meta_ref = ref;
    gt_log_log("registering meta specs at ref %d", ref);
    gt_assert(sv->meta_ref != GT_UNDEF_INT);
  } else {
    luaL_where(L, 1);
    lua_pushstring(L, "duplicate definition of spec for meta nodes");
    lua_concat(L, 2);
    return lua_error(L);
  }
  return 0;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x18(%rsp)
movq 0x18(%rsp), %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x33b470
movl %eax, 0x14(%rsp)
movq 0x18(%rsp), %rdi
leaq 0x45f478(%rip), %rsi    # 0x63dac0
callq 0x336160
movq 0x18(%rsp), %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x336210
movq 0x18(%rsp), %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x335300
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rax
cmpl $0x80000000, 0x30(%rax) # imm = 0x80000000
jne 0x1de6e6
movl 0x14(%rsp), %ecx
movq 0x8(%rsp), %rax
movl %ecx, 0x30(%rax)
movl 0x14(%rsp), %esi
leaq 0x38805a(%rip), %rdi    # 0x5666ef
movb $0x0, %al
callq 0xe7740
movq 0x8(%rsp), %rax
cmpl $0x80000000, 0x30(%rax) # imm = 0x80000000
jne 0x1de6e2
movq 0x45d8ef(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x337958(%rip), %rsi    # 0x516013
leaq 0x38804e(%rip), %rdx    # 0x566710
leaq 0x388064(%rip), %rcx    # 0x56672d
leaq 0x387b01(%rip), %r8     # 0x5661d1
movl $0x15a, %r9d            # imm = 0x15A
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x1de6e4
jmp 0x1de725
movq 0x18(%rsp), %rdi
movl $0x1, %esi
callq 0x33a490
movq 0x18(%rsp), %rdi
leaq 0x388048(%rip), %rsi    # 0x566749
callq 0x335740
movq 0x18(%rsp), %rdi
movl $0x2, %esi
callq 0x338280
movq 0x18(%rsp), %rdi
callq 0x337ea0
movl %eax, 0x24(%rsp)
jmp 0x1de72d
movl $0x0, 0x24(%rsp)
movl 0x24(%rsp), %eax
addq $0x28, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/spec_visitor.c
// Function: spec_register_comment_callback
static int spec_register_comment_callback(lua_State *L)
{
  int ref;
  GtSpecVisitor *sv;

  /* get parameters from stack */
  ref = luaL_ref(L, LUA_REGISTRYINDEX);
  /* get visitor from registry */
  lua_pushlightuserdata(L, (void *) &spec_defuserdata);
  lua_gettable(L, LUA_REGISTRYINDEX);
  sv = lua_touserdata(L, -1);
  /* register Lua callback */
  if (sv->comment_ref == GT_UNDEF_INT) {
    sv->comment_ref = ref;
    gt_log_log("registering comment specs at ref %d", ref);
    gt_assert(sv->comment_ref != GT_UNDEF_INT);
  } else {
    luaL_where(L, 1);
    lua_pushstring(L, "duplicate definition of spec for comment nodes");
    lua_concat(L, 2);
    return lua_error(L);
  }
  return 0;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x18(%rsp)
movq 0x18(%rsp), %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x33b470
movl %eax, 0x14(%rsp)
movq 0x18(%rsp), %rdi
leaq 0x45f358(%rip), %rsi    # 0x63dac0
callq 0x336160
movq 0x18(%rsp), %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x336210
movq 0x18(%rsp), %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x335300
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rax
cmpl $0x80000000, 0x38(%rax) # imm = 0x80000000
jne 0x1de806
movl 0x14(%rsp), %ecx
movq 0x8(%rsp), %rax
movl %ecx, 0x38(%rax)
movl 0x14(%rsp), %esi
leaq 0x387fc0(%rip), %rdi    # 0x566775
movb $0x0, %al
callq 0xe7740
movq 0x8(%rsp), %rax
cmpl $0x80000000, 0x38(%rax) # imm = 0x80000000
jne 0x1de802
movq 0x45d7cf(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x337838(%rip), %rsi    # 0x516013
leaq 0x387fb7(%rip), %rdx    # 0x566799
leaq 0x387fd0(%rip), %rcx    # 0x5667b9
leaq 0x3879e1(%rip), %r8     # 0x5661d1
movl $0x18c, %r9d            # imm = 0x18C
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x1de804
jmp 0x1de845
movq 0x18(%rsp), %rdi
movl $0x1, %esi
callq 0x33a490
movq 0x18(%rsp), %rdi
leaq 0x387fb7(%rip), %rsi    # 0x5667d8
callq 0x335740
movq 0x18(%rsp), %rdi
movl $0x2, %esi
callq 0x338280
movq 0x18(%rsp), %rdi
callq 0x337ea0
movl %eax, 0x24(%rsp)
jmp 0x1de84d
movl $0x0, 0x24(%rsp)
movl 0x24(%rsp), %eax
addq $0x28, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/spec_visitor.c
// Function: spec_register_sequence_callback
static int spec_register_sequence_callback(lua_State *L)
{
  int ref;
  GtSpecVisitor *sv;

  /* get parameters from stack */
  ref = luaL_ref(L, LUA_REGISTRYINDEX);
  /* get visitor from registry */
  lua_pushlightuserdata(L, (void *) &spec_defuserdata);
  lua_gettable(L, LUA_REGISTRYINDEX);
  sv = lua_touserdata(L, -1);
  /* register Lua callback */
  if (sv->sequence_ref == GT_UNDEF_INT) {
    sv->sequence_ref = ref;
    gt_log_log("registering sequence specs at ref %d", ref);
    gt_assert(sv->sequence_ref != GT_UNDEF_INT);
  } else {
    luaL_where(L, 1);
    lua_pushstring(L, "duplicate definition of spec for sequence nodes");
    lua_concat(L, 2);
    return lua_error(L);
  }
  return 0;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x18(%rsp)
movq 0x18(%rsp), %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x33b470
movl %eax, 0x14(%rsp)
movq 0x18(%rsp), %rdi
leaq 0x45f238(%rip), %rsi    # 0x63dac0
callq 0x336160
movq 0x18(%rsp), %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x336210
movq 0x18(%rsp), %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x335300
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rax
cmpl $0x80000000, 0x3c(%rax) # imm = 0x80000000
jne 0x1de926
movl 0x14(%rsp), %ecx
movq 0x8(%rsp), %rax
movl %ecx, 0x3c(%rax)
movl 0x14(%rsp), %esi
leaq 0x387f32(%rip), %rdi    # 0x566807
movb $0x0, %al
callq 0xe7740
movq 0x8(%rsp), %rax
cmpl $0x80000000, 0x3c(%rax) # imm = 0x80000000
jne 0x1de922
movq 0x45d6af(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x337718(%rip), %rsi    # 0x516013
leaq 0x387f2a(%rip), %rdx    # 0x56682c
leaq 0x387f44(%rip), %rcx    # 0x56684d
leaq 0x3878c1(%rip), %r8     # 0x5661d1
movl $0x1a5, %r9d            # imm = 0x1A5
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x1de924
jmp 0x1de965
movq 0x18(%rsp), %rdi
movl $0x1, %esi
callq 0x33a490
movq 0x18(%rsp), %rdi
leaq 0x387f2c(%rip), %rsi    # 0x56686d
callq 0x335740
movq 0x18(%rsp), %rdi
movl $0x2, %esi
callq 0x338280
movq 0x18(%rsp), %rdi
callq 0x337ea0
movl %eax, 0x24(%rsp)
jmp 0x1de96d
movl $0x0, 0x24(%rsp)
movl 0x24(%rsp), %eax
addq $0x28, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/spec_visitor.c
// Function: spec_it
static int spec_it(lua_State *L)
{
  const char *name;
  GtSpecVisitor *sv;

  /* get parameters from stack */
  name = lua_tostring(L, -2);

  /* get visitor from registry */
  lua_pushlightuserdata(L, (void *) &spec_defuserdata);
  lua_gettable(L, LUA_REGISTRYINDEX);
  sv = lua_touserdata(L, -1);
  lua_pop(L, 1);

  /* handle aspect */
  sv->current_aspect = name;

  if (lua_pcall(L, 0, 0, 0)) {
    if (sv->runtime_fail_hard) {
      return lua_error(L);
    } else {
      const char *error = lua_tostring(sv->L, -1);
      gt_spec_results_add_result(sv->res, sv->current_aspect, sv->current_node,
                                 GT_SPEC_RUNTIME_ERROR, error);
    }
  }

  sv->current_aspect = NULL;

  return 0;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x18(%rsp)
movq 0x18(%rsp), %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
xorl %eax, %eax
movl %eax, %edx
callq 0x334f50
movq %rax, 0x10(%rsp)
movq 0x18(%rsp), %rdi
leaq 0x45f113(%rip), %rsi    # 0x63dac0
callq 0x336160
movq 0x18(%rsp), %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x336210
movq 0x18(%rsp), %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x335300
movq %rax, 0x8(%rsp)
movq 0x18(%rsp), %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x333ed0
movq 0x10(%rsp), %rcx
movq 0x8(%rsp), %rax
movq %rcx, 0x50(%rax)
movq 0x18(%rsp), %rdi
xorl %ecx, %ecx
movl %ecx, %esi
movl %ecx, %edx
callq 0x3375c0
cmpl $0x0, %eax
je 0x1dea68
movq 0x8(%rsp), %rax
testb $0x1, 0x70(%rax)
je 0x1dea22
movq 0x18(%rsp), %rdi
callq 0x337ea0
movl %eax, 0x24(%rsp)
jmp 0x1dea7d
movq 0x8(%rsp), %rax
movq 0x10(%rax), %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
xorl %eax, %eax
movl %eax, %edx
callq 0x334f50
movq %rax, (%rsp)
movq 0x8(%rsp), %rax
movq 0x68(%rax), %rdi
movq 0x8(%rsp), %rax
movq 0x50(%rax), %rsi
movq 0x8(%rsp), %rax
movq 0x48(%rax), %rdx
movq (%rsp), %r8
movl $0x2, %ecx
callq 0x1da810
jmp 0x1dea68
movq 0x8(%rsp), %rax
movq $0x0, 0x50(%rax)
movl $0x0, 0x24(%rsp)
movl 0x24(%rsp), %eax
addq $0x28, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/spec_visitor.c
// Function: spec_expect
static int spec_expect(lua_State *L)
{
  int ref;
  GtSpecVisitor *sv;

  /* accept only one parameter */
  if (lua_gettop(L) > 1) {
    luaL_where(L, 1);
    lua_pushstring(L, "'expect' takes only one parameter");
    lua_concat(L, 2);
    return lua_error(L);
  }

  /* get parameters from stack */
  ref = luaL_ref(L, LUA_REGISTRYINDEX);

  /* get visitor */
  lua_pushlightuserdata(L, (void *) &spec_defuserdata);
  lua_gettable(L, LUA_REGISTRYINDEX);
  sv = lua_touserdata(L, -1);

  /* check for lone expect() calls -- currently disallowed */
  if (!sv->current_aspect) {
    luaL_where(L, 1);
    lua_pushstring(L, "'expect' must be called inside an aspect "
                      "definition ('it')");
    lua_concat(L, 2);
    return lua_error(L);
  }

  /* we can't do closures as nicely as in Lua -- keep this around for later */
  sv->target_ref = ref;

  /* return new object with __index metamethod set */
  lua_newtable(L);
  luaL_getmetatable(L, "GenomeTools.specexpect");
  lua_setmetatable(L, -2);

  return 1;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x18(%rsp)
movq 0x18(%rsp), %rdi
callq 0x333eb0
cmpl $0x1, %eax
jle 0x1deaea
movq 0x18(%rsp), %rdi
movl $0x1, %esi
callq 0x33a490
movq 0x18(%rsp), %rdi
leaq 0x387dda(%rip), %rsi    # 0x56689d
callq 0x335740
movq 0x18(%rsp), %rdi
movl $0x2, %esi
callq 0x338280
movq 0x18(%rsp), %rdi
callq 0x337ea0
movl %eax, 0x24(%rsp)
jmp 0x1debc3
movq 0x18(%rsp), %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x33b470
movl %eax, 0x14(%rsp)
movq 0x18(%rsp), %rdi
leaq 0x45efb7(%rip), %rsi    # 0x63dac0
callq 0x336160
movq 0x18(%rsp), %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x336210
movq 0x18(%rsp), %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x335300
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rax
cmpq $0x0, 0x50(%rax)
jne 0x1deb7c
movq 0x18(%rsp), %rdi
movl $0x1, %esi
callq 0x33a490
movq 0x18(%rsp), %rdi
leaq 0x387d67(%rip), %rsi    # 0x5668bf
callq 0x335740
movq 0x18(%rsp), %rdi
movl $0x2, %esi
callq 0x338280
movq 0x18(%rsp), %rdi
callq 0x337ea0
movl %eax, 0x24(%rsp)
jmp 0x1debc3
movl 0x14(%rsp), %ecx
movq 0x8(%rsp), %rax
movl %ecx, 0x40(%rax)
movq 0x18(%rsp), %rdi
xorl %edx, %edx
movl %edx, %esi
callq 0x336790
movq 0x18(%rsp), %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
leaq 0x387816(%rip), %rdx    # 0x5663bd
callq 0x336410
movq 0x18(%rsp), %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x3371c0
movl $0x1, 0x24(%rsp)
movl 0x24(%rsp), %eax
addq $0x28, %rsp
retq
nopl (%rax)