LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O1/genometools[P]genometools/src/gtlua/feature_node_iterator_lua.c
// Function: feature_node_iterator_lua_new
static int feature_node_iterator_lua_new(lua_State *L)
{
  GtFeatureNodeIterator **fni;
  GtFeatureNode **fn;
  gt_assert(L);
  fn = (GtFeatureNode**) check_genome_node(L, 1);
  fni = lua_newuserdata(L, sizeof (GtFeatureNodeIterator*));
  gt_assert(fni);
  *fni = gt_feature_node_iterator_new(*fn);
  luaL_getmetatable(L, GENOME_NODE_ITERATOR_METATABLE);
  lua_setmetatable(L, -2);
  return 1;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
testq %rdi, %rdi
je 0xb110b
movq %rdi, %rbx
leaq 0x443d5(%rip), %rdx     # 0xf5487
movl $0x1, %esi
callq 0x5b252
movq %rax, %r14
movl $0x8, %esi
movq %rbx, %rdi
callq 0x59e95
testq %rax, %rax
je 0xb1110
movq %rax, %r15
movq (%r14), %rdi
callq 0x4186c
movq %rax, (%r15)
leaq 0x4cfca(%rip), %rdx     # 0xfe0b0
movq %rbx, %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x58b98
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x59337
movl $0x1, %eax
popq %rbx
popq %r14
popq %r15
retq
callq 0x2704e
callq 0x27017
// File: /workspace/github_c_makefile_star2_O1/genometools[P]genometools/src/gtlua/feature_node_iterator_lua.c
// Function: feature_node_iterator_lua_new_direct
static int feature_node_iterator_lua_new_direct(lua_State *L)
{
  GtFeatureNodeIterator **fni;
  GtFeatureNode **fn;
  gt_assert(L);
  fn = (GtFeatureNode**) check_genome_node(L, 1);
  fni = lua_newuserdata(L, sizeof (GtFeatureNodeIterator*));
  gt_assert(fni);
  *fni = gt_feature_node_iterator_new_direct(*fn);
  luaL_getmetatable(L, GENOME_NODE_ITERATOR_METATABLE);
  lua_setmetatable(L, -2);
  return 1;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
testq %rdi, %rdi
je 0xb1182
movq %rdi, %rbx
leaq 0x4435e(%rip), %rdx     # 0xf5487
movl $0x1, %esi
callq 0x5b252
movq %rax, %r14
movl $0x8, %esi
movq %rbx, %rdi
callq 0x59e95
testq %rax, %rax
je 0xb1187
movq %rax, %r15
movq (%r14), %rdi
callq 0x41959
movq %rax, (%r15)
leaq 0x4cf53(%rip), %rdx     # 0xfe0b0
movq %rbx, %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x58b98
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x59337
movl $0x1, %eax
popq %rbx
popq %r14
popq %r15
retq
callq 0x270bc
callq 0x27085
// File: /workspace/github_c_makefile_star2_O1/genometools[P]genometools/src/gtlua/feature_stream_lua.c
// Function: gt_lua_open_feature_stream
int gt_lua_open_feature_stream(lua_State *L)
{
#ifndef NDEBUG
  int stack_size;
#endif
  gt_assert(L);
#ifndef NDEBUG
  stack_size = lua_gettop(L);
#endif
  luaL_register(L, "gt", feature_stream_lib_f);
  lua_pop(L, 1);
  gt_assert(lua_gettop(L) == stack_size);
  return 1;
}

// Assembly:
pushq %rbp
pushq %rbx
pushq %rax
testq %rdi, %rdi
je 0xb11d9
movq %rdi, %rbx
callq 0x578c5
movl %eax, %ebp
leaq 0x4fee2(%rip), %rsi     # 0x101087
leaq 0x9f5d4(%rip), %rdx     # 0x150780
movq %rbx, %rdi
callq 0x5b590
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x578d2
movq %rbx, %rdi
callq 0x578c5
cmpl %ebp, %eax
jne 0xb11de
movl $0x1, %eax
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
callq 0x2712a
callq 0x270f3
// File: /workspace/github_c_makefile_star2_O1/genometools[P]genometools/src/gtlua/feature_stream_lua.c
// Function: feature_stream_lua_new
static int feature_stream_lua_new(lua_State *L)
{
  GtNodeStream **feature_stream, **in_stream;
  GtFeatureIndex **feature_index;
  feature_stream = lua_newuserdata(L, sizeof (GtNodeStream*));
  gt_assert(feature_stream);
  in_stream = check_genome_stream(L, 1);
  feature_index = check_feature_index(L, 2);
  *feature_stream = gt_feature_stream_new(*in_stream, *feature_index);
  luaL_getmetatable(L, GENOME_STREAM_METATABLE);
  lua_setmetatable(L, -2);
  return 1;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
movl $0x8, %esi
callq 0x59e95
testq %rax, %rax
je 0xb126b
movq %rax, %r14
leaq 0x44af1(%rip), %r15     # 0xf5cf8
movq %rbx, %rdi
movl $0x1, %esi
movq %r15, %rdx
callq 0x5b252
movq %rax, %r12
leaq 0x4c40a(%rip), %rdx     # 0xfd62b
movq %rbx, %rdi
movl $0x2, %esi
callq 0x5b252
movq (%r12), %rdi
movq (%rax), %rsi
callq 0xdb584
movq %rax, (%r14)
movq %rbx, %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
movq %r15, %rdx
callq 0x58b98
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x59337
movl $0x1, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
callq 0x27161
// File: /workspace/github_c_makefile_star2_O1/genometools[P]genometools/src/gtlua/feature_visitor_lua.c
// Function: gt_lua_open_feature_visitor
int gt_lua_open_feature_visitor(lua_State *L)
{
#ifndef NDEBUG
  int stack_size;
#endif
  gt_assert(L);
#ifndef NDEBUG
  stack_size = lua_gettop(L);
#endif
  luaL_register(L, "gt", feature_visitor_lib_f);
  lua_pop(L, 1);
  gt_assert(lua_gettop(L) == stack_size);
  return 1;
}

// Assembly:
pushq %rbp
pushq %rbx
pushq %rax
testq %rdi, %rdi
je 0xb12bd
movq %rdi, %rbx
callq 0x578c5
movl %eax, %ebp
leaq 0x4fdfe(%rip), %rsi     # 0x101087
leaq 0x9f510(%rip), %rdx     # 0x1507a0
movq %rbx, %rdi
callq 0x5b590
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x578d2
movq %rbx, %rdi
callq 0x578c5
cmpl %ebp, %eax
jne 0xb12c2
movl $0x1, %eax
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
callq 0x271cf
callq 0x27198
// File: /workspace/github_c_makefile_star2_O1/genometools[P]genometools/src/gtlua/feature_visitor_lua.c
// Function: feature_visitor_lua_new
static int feature_visitor_lua_new(lua_State *L)
{
  GtNodeVisitor **feature_visitor;
  GtFeatureIndex **feature_index;
  feature_visitor = lua_newuserdata(L, sizeof (GtNodeVisitor*));
  gt_assert(feature_visitor);
  feature_index = check_feature_index(L, 1);
  *feature_visitor = gt_feature_visitor_new(*feature_index);
  luaL_getmetatable(L, GENOME_VISITOR_METATABLE);
  lua_setmetatable(L, -2);
  return 1;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
movl $0x8, %esi
callq 0x59e95
testq %rax, %rax
je 0xb132d
movq %rax, %r14
leaq 0x4c344(%rip), %rdx     # 0xfd62b
movq %rbx, %rdi
movl $0x1, %esi
callq 0x5b252
movq (%rax), %rdi
callq 0x41c4b
movq %rax, (%r14)
leaq 0x442cc(%rip), %rdx     # 0xf55d2
movq %rbx, %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x58b98
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x59337
movl $0x1, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
callq 0x27206
nop
// File: /workspace/github_c_makefile_star2_O1/genometools[P]genometools/src/gtlua/genome_stream_lua.c
// Function: gt_lua_custom_stream_class
const GtNodeStreamClass* gt_lua_custom_stream_class(void)
{
  static const GtNodeStreamClass *nsc = NULL;
  gt_class_alloc_lock_enter();
  if (!nsc) {
    nsc = gt_node_stream_class_new(sizeof (GtLuaCustomStream),
                                   NULL,
                                   lua_custom_stream_next);
  }
  gt_class_alloc_lock_leave();
  return nsc;
}

// Assembly:
pushq %rax
callq 0x71d9b
cmpq $0x0, 0xa1a2e(%rip)     # 0x152d70
jne 0xb135e
leaq 0x21(%rip), %rdx        # 0xb136c
movl $0x28, %edi
xorl %esi, %esi
callq 0x498b0
movq %rax, 0xa1a12(%rip)     # 0x152d70
callq 0x71db1
movq 0xa1a06(%rip), %rax     # 0x152d70
popq %rcx
retq
// File: /workspace/github_c_makefile_star2_O1/genometools[P]genometools/src/gtlua/genome_stream_lua.c
// Function: gt_lua_open_genome_stream
int gt_lua_open_genome_stream(lua_State *L)
{
#ifndef NDEBUG
  int stack_size;
#endif
  gt_assert(L);
#ifndef NDEBUG
  stack_size = lua_gettop(L);
#endif
  luaL_newmetatable(L, GENOME_STREAM_METATABLE);
  /* metatable.__index = metatable */
  /* lua_pushvalue(L, -1); */ /* duplicate the metatable */
  /* lua_setfield(L, -2, "__index"); */
  /* set its _gc field */
  lua_pushstring(L, "__gc");
  lua_pushcfunction(L, gt_node_stream_lua_delete);
  lua_settable(L, -3);
  lua_pushstring(L, "__index");
  lua_pushcfunction(L, custom_stream_lua_index);
  lua_settable(L, -3);
  lua_pushstring(L, "__newindex");
  lua_pushcfunction(L, custom_stream_lua_newindex);
  lua_settable(L, -3);
  /* register functions */
  luaL_register(L, NULL, gt_node_stream_lib_m);
  lua_pop(L, 1);
  luaL_register(L, "gt", gt_node_stream_lib_f);
  lua_pop(L, 1);
  gt_assert(lua_gettop(L) == stack_size);
  return 1;
}

// Assembly:
pushq %rbp
pushq %rbx
pushq %rax
testq %rdi, %rdi
je 0xb15d6
movq %rdi, %rbx
callq 0x578c5
movl %eax, %ebp
leaq 0x4480a(%rip), %rsi     # 0xf5cf8
movq %rbx, %rdi
callq 0x5b1df
leaq 0x3c775(%rip), %rsi     # 0xedc72
movq %rbx, %rdi
callq 0x58568
leaq 0xd4(%rip), %rsi        # 0xb15e0
movq %rbx, %rdi
xorl %edx, %edx
callq 0x58930
movq %rbx, %rdi
movl $0xfffffffd, %esi       # imm = 0xFFFFFFFD
callq 0x58f22
leaq 0x3cdf4(%rip), %rsi     # 0xee31e
movq %rbx, %rdi
callq 0x58568
leaq 0xc5(%rip), %rsi        # 0xb15fe
movq %rbx, %rdi
xorl %edx, %edx
callq 0x58930
movq %rbx, %rdi
movl $0xfffffffd, %esi       # imm = 0xFFFFFFFD
callq 0x58f22
leaq 0x3cdcf(%rip), %rsi     # 0xee326
movq %rbx, %rdi
callq 0x58568
leaq 0x10c(%rip), %rsi       # 0xb1672
movq %rbx, %rdi
xorl %edx, %edx
callq 0x58930
movq %rbx, %rdi
movl $0xfffffffd, %esi       # imm = 0xFFFFFFFD
callq 0x58f22
leaq 0x9f23c(%rip), %rdx     # 0x1507c0
movq %rbx, %rdi
xorl %esi, %esi
callq 0x5b590
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x578d2
leaq 0x4fae5(%rip), %rsi     # 0x101087
leaq 0x9f237(%rip), %rdx     # 0x1507e0
movq %rbx, %rdi
callq 0x5b590
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x578d2
movq %rbx, %rdi
callq 0x578c5
cmpl %ebp, %eax
jne 0xb15db
movl $0x1, %eax
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
callq 0x27321
callq 0x272e8
// File: /workspace/github_c_makefile_star2_O1/genometools[P]genometools/src/gtlua/genome_stream_lua.c
// Function: custom_stream_lua_index
static int custom_stream_lua_index(lua_State* L)
{
  lua_getfenv(L, -2);
  lua_pushvalue(L, -2);
  lua_rawget(L, -2);
  if (lua_isnoneornil(L, -1) == 0) {
      return 1;
  }
  lua_pop(L, 2);

  /* check the metatable */
  lua_getmetatable(L, -2);
  lua_pushvalue(L, -2);
  lua_rawget(L, -2);

  return 1;
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x58ecc
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x57c3c
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x58bf0
movq %rbx, %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x57c5c
testl %eax, %eax
jg 0xb166b
movq %rbx, %rdi
movl $0xfffffffd, %esi       # imm = 0xFFFFFFFD
callq 0x578d2
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x58e77
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x57c3c
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x58bf0
movl $0x1, %eax
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O1/genometools[P]genometools/src/gtlua/genome_stream_lua.c
// Function: custom_stream_lua_newindex
static int custom_stream_lua_newindex(lua_State* L)
{
  lua_getfenv(L, -3);
  lua_pushvalue(L, -3);
  lua_pushvalue(L, -3);
  lua_rawset(L, -3);
  return 0;
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
movl $0xfffffffd, %esi       # imm = 0xFFFFFFFD
callq 0x58ecc
movq %rbx, %rdi
movl $0xfffffffd, %esi       # imm = 0xFFFFFFFD
callq 0x57c3c
movq %rbx, %rdi
movl $0xfffffffd, %esi       # imm = 0xFFFFFFFD
callq 0x57c3c
movq %rbx, %rdi
movl $0xfffffffd, %esi       # imm = 0xFFFFFFFD
callq 0x59193
xorl %eax, %eax
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O1/genometools[P]genometools/src/gtlua/genome_stream_lua.c
// Function: gt_node_stream_lua_next_tree
static int gt_node_stream_lua_next_tree(lua_State *L)
{
  GtNodeStream **gs = check_genome_stream(L, 1);
  GtGenomeNode *gn;
  GtError *err = gt_error_new();
  if (gt_node_stream_next(*gs, &gn, err))
    return gt_lua_error(L, err); /* handle error */
  else if (gn)
    gt_lua_genome_node_push(L, gn);
  else
    lua_pushnil(L);
  gt_error_delete(err);
  return 1;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x10, %rsp
movq %rdi, %rbx
leaq 0x4463a(%rip), %rdx     # 0xf5cf8
movl $0x1, %esi
callq 0x5b252
movq %rax, %r15
callq 0x35584
movq %rax, %r14
movq (%r15), %rdi
leaq 0x8(%rsp), %rsi
movq %rax, %rdx
callq 0x499e4
testl %eax, %eax
je 0xb16f4
movq %rbx, %rdi
movq %r14, %rsi
callq 0xa8706
jmp 0xb171a
movq 0x8(%rsp), %rsi
movq %rbx, %rdi
testq %rsi, %rsi
je 0xb1708
callq 0x87acd
jmp 0xb170d
callq 0x5834e
movq %r14, %rdi
callq 0x35705
movl $0x1, %eax
addq $0x10, %rsp
popq %rbx
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O1/genometools[P]genometools/src/gtlua/genome_stream_lua.c
// Function: gff3_in_stream_lua_new_sorted
static int gff3_in_stream_lua_new_sorted(lua_State *L)
{
  GtNodeStream **gs;
  const char *filename = NULL;
  gt_assert(L);
  lua_settop(L, 1);
  /* get/check parameters */
  if (!lua_isnil(L, 1)) {
    filename = luaL_checkstring(L, 1);
    luaL_argcheck(L, gt_file_exists(filename), 1, "file does not exist");
  }
  /* construct object */
  gs = lua_newuserdata(L, sizeof (GtNodeStream*));
  *gs = gt_gff3_in_stream_new_sorted(filename);
  gt_assert(*gs);
  luaL_getmetatable(L, GENOME_STREAM_METATABLE);
  lua_setmetatable(L, -2);
  return 1;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
testq %rdi, %rdi
je 0xb17d3
movq %rdi, %rbx
movl $0x1, %esi
callq 0x578d2
movq %rbx, %rdi
movl $0x1, %esi
callq 0x57c5c
testl %eax, %eax
je 0xb1784
movq %rbx, %rdi
movl $0x1, %esi
xorl %edx, %edx
callq 0x5b1b3
movq %rax, %r14
movq %rax, %rdi
callq 0x75bdc
testb %al, %al
jne 0xb1787
leaq 0x4cba9(%rip), %rdx     # 0xfe31e
movq %rbx, %rdi
movl $0x1, %esi
callq 0x5aeac
jmp 0xb1787
xorl %r14d, %r14d
movl $0x8, %esi
movq %rbx, %rdi
callq 0x59e95
movq %rax, %r15
movq %r14, %rdi
callq 0x43058
movq %rax, (%r15)
testq %rax, %rax
je 0xb17d8
leaq 0x4454a(%rip), %rdx     # 0xf5cf8
movq %rbx, %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x58b98
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x59337
movl $0x1, %eax
popq %rbx
popq %r14
popq %r15
retq
callq 0x27391
callq 0x2735a
// File: /workspace/github_c_makefile_star2_O1/genometools[P]genometools/src/gtlua/genome_stream_lua.c
// Function: gff3_out_stream_lua_new
static int gff3_out_stream_lua_new(lua_State *L)
{
  GtFile *outfile = NULL;
  GtError *err = NULL;
  GtNodeStream **out_stream, **in_stream;
  gt_assert(L);
  in_stream = check_genome_stream(L, 1);
  lua_settop(L, 2);
  if (!lua_isnil(L, 2)) {
    const char *filename = luaL_checkstring(L, 2);
    err = gt_error_new();
    outfile = gt_file_new(filename, "w+", err);
    if (!outfile)
      return gt_lua_error(L, err);
  }
  /* construct object */
  out_stream = lua_newuserdata(L, sizeof (GtNodeStream*));
  *out_stream = gt_gff3_out_stream_new(*in_stream, outfile);
  gt_assert(*out_stream);
  luaL_getmetatable(L, GENOME_STREAM_METATABLE);
  lua_setmetatable(L, -2);
  gt_file_delete(outfile);
  gt_error_delete(err);
  return 1;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
testq %rdi, %rdi
je 0xb18f5
movq %rdi, %rbx
leaq 0x444de(%rip), %rdx     # 0xf5cf8
movl $0x1, %esi
callq 0x5b252
movq %rax, %r14
movq %rbx, %rdi
movl $0x2, %esi
callq 0x578d2
movq %rbx, %rdi
movl $0x2, %esi
callq 0x57c5c
testl %eax, %eax
je 0xb188b
movq %rbx, %rdi
movl $0x2, %esi
xorl %edx, %edx
callq 0x5b1b3
movq %rax, %r12
callq 0x35584
movq %rax, %r15
leaq 0x39e43(%rip), %rsi     # 0xeb6a9
movq %r12, %rdi
movq %rax, %rdx
callq 0x753d7
movq %rax, %r12
testq %r12, %r12
jne 0xb1884
movq %rbx, %rdi
movq %r15, %rsi
callq 0xa8706
testq %r12, %r12
jne 0xb1891
jmp 0xb18eb
xorl %r15d, %r15d
xorl %r12d, %r12d
movl $0x8, %esi
movq %rbx, %rdi
callq 0x59e95
movq %rax, %r13
movq (%r14), %rdi
movq %r12, %rsi
callq 0xdb670
movq %rax, (%r13)
testq %rax, %rax
je 0xb18fa
leaq 0x4443c(%rip), %rdx     # 0xf5cf8
movq %rbx, %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x58b98
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x59337
movq %r12, %rdi
callq 0x75b7c
movq %r15, %rdi
callq 0x35705
movl $0x1, %eax
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
callq 0x273ff
callq 0x273c8
// File: /workspace/github_c_makefile_star2_O1/genometools[P]genometools/src/gtlua/genome_stream_lua.c
// Function: lua_custom_stream_new_generic
static int lua_custom_stream_new_generic(lua_State *L, bool sorted)
{
  GtLuaCustomStream *lcs;
  GtNodeStream **ns;
  gt_assert(L);

  ns = lua_newuserdata(L, sizeof (GtNodeVisitor*));
  gt_assert(ns);
  *ns = gt_node_stream_create(gt_lua_custom_stream_class(), sorted);
  gt_assert(*ns);
  lcs = lua_custom_stream_cast(*ns);
  luaL_getmetatable(L, GENOME_STREAM_METATABLE);
  lua_setmetatable(L, -2);

  /* set clean env for this object */
  lua_newtable(L);
  lua_setfenv(L, -2);
  lcs->L = L;

  /* replace the default next_tree method to force an override in the custom
     stream */
  lua_pushstring(L, "next_tree");
  lua_pushcfunction(L, gt_node_stream_lua_next_tree_fail);
  lua_settable(L, -3);

  /* store reference to Lua object */
  lua_pushvalue(L, -1);
  lcs->ref = luaL_ref(L, LUA_REGISTRYINDEX);

  return 1;
}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
testq %rdi, %rdi
je 0xb1aee
movl %esi, %ebp
movq %rdi, %rbx
movl $0x8, %esi
callq 0x59e95
testq %rax, %rax
je 0xb1af3
movq %rax, %r14
callq 0xb1334
movzbl %bpl, %esi
movq %rax, %rdi
callq 0x498e8
movq %rax, (%r14)
testq %rax, %rax
je 0xb1af8
callq 0xb1334
movq (%r14), %rsi
movq %rax, %rdi
callq 0x49b60
movq %rax, %r14
leaq 0x44291(%rip), %rdx     # 0xf5cf8
movq %rbx, %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x58b98
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x59337
movq %rbx, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x58da0
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x593ec
movq %rbx, 0x18(%r14)
leaq 0x4c777(%rip), %rsi     # 0xfe21c
movq %rbx, %rdi
callq 0x58568
leaq 0x49(%rip), %rsi        # 0xb1afd
movq %rbx, %rdi
xorl %edx, %edx
callq 0x58930
movq %rbx, %rdi
movl $0xfffffffd, %esi       # imm = 0xFFFFFFFD
callq 0x58f22
movq %rbx, %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x57c3c
movq %rbx, %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x5bb99
movl %eax, 0x20(%r14)
popq %rbx
popq %r14
popq %rbp
retq
callq 0x27516
callq 0x274dd
callq 0x274a4
// File: /workspace/github_c_makefile_star2_O1/genometools[P]genometools/src/gtlua/genome_visitor_lua.c
// Function: lua_custom_visitor_class
const GtNodeVisitorClass* lua_custom_visitor_class()
{
  static GtNodeVisitorClass *nvc = NULL;
  gt_class_alloc_lock_enter();
  if (!nvc) {
    nvc = gt_node_visitor_class_new(sizeof (GtLuaCustomVisitor),
                                    NULL,
                                    lua_custom_visitor_visit_comment,
                                    lua_custom_visitor_visit_feature ,
                                    lua_custom_visitor_visit_region,
                                    lua_custom_visitor_visit_sequence,
                                    lua_custom_visitor_visit_eof);
    gt_node_visitor_class_set_meta_node_func(nvc,
                                             lua_custom_visitor_visit_meta);
  }
  gt_class_alloc_lock_leave();
  return nvc;
}

// Assembly:
pushq %rax
callq 0x71d9b
cmpq $0x0, 0xa123a(%rip)     # 0x152d78
jne 0xb1b89
leaq 0x8c(%rip), %rax        # 0xb1bd3
movq %rax, (%rsp)
leaq 0x45(%rip), %rdx        # 0xb1b97
leaq 0x4d(%rip), %rcx        # 0xb1ba6
leaq 0x55(%rip), %r8         # 0xb1bb5
leaq 0x5d(%rip), %r9         # 0xb1bc4
movl $0x18, %edi
xorl %esi, %esi
callq 0x49b7c
movq %rax, 0xa11fe(%rip)     # 0x152d78
leaq 0x61(%rip), %rsi        # 0xb1be2
movq %rax, %rdi
callq 0x49bdc
callq 0x71db1
movq 0xa11e3(%rip), %rax     # 0x152d78
popq %rcx
retq
// File: /workspace/github_c_makefile_star2_O1/genometools[P]genometools/src/gtlua/genome_visitor_lua.c
// Function: gt_lua_open_genome_visitor
int gt_lua_open_genome_visitor(lua_State *L)
{
#ifndef NDEBUG
  int stack_size;
#endif
  gt_assert(L);
#ifndef NDEBUG
  stack_size = lua_gettop(L);
#endif
  luaL_newmetatable(L, GENOME_VISITOR_METATABLE);
  /* metatable.__index = metatable */
  /* lua_pushvalue(L, -1); */ /* duplicate the metatable */
  /* lua_setfield(L, -2, "__index"); */
  lua_pushstring(L, "__gc");
  lua_pushcfunction(L, gt_node_visitor_lua_delete);
  lua_settable(L, -3);
  lua_pushstring(L, "__index");
  lua_pushcfunction(L, custom_visitor_lua_index);
  lua_settable(L, -3);
  lua_pushstring(L, "__newindex");
  lua_pushcfunction(L, custom_visitor_lua_newindex);
  lua_settable(L, -3);
  lua_pop(L, 1);
  /* register functions */
  luaL_register(L, "gt", gt_node_visitor_lib_f);
  lua_pop(L, 1);
  gt_assert(lua_gettop(L) == stack_size);
  return 1;
}

// Assembly:
pushq %rbp
pushq %rbx
pushq %rax
testq %rdi, %rdi
je 0xb1ce5
movq %rdi, %rbx
callq 0x578c5
movl %eax, %ebp
leaq 0x439c4(%rip), %rsi     # 0xf55d2
movq %rbx, %rdi
callq 0x5b1df
leaq 0x3c055(%rip), %rsi     # 0xedc72
movq %rbx, %rdi
callq 0x58568
leaq 0xc3(%rip), %rsi        # 0xb1cef
movq %rbx, %rdi
xorl %edx, %edx
callq 0x58930
movq %rbx, %rdi
movl $0xfffffffd, %esi       # imm = 0xFFFFFFFD
callq 0x58f22
leaq 0x3c6d4(%rip), %rsi     # 0xee31e
movq %rbx, %rdi
callq 0x58568
leaq 0xb4(%rip), %rsi        # 0xb1d0d
movq %rbx, %rdi
xorl %edx, %edx
callq 0x58930
movq %rbx, %rdi
movl $0xfffffffd, %esi       # imm = 0xFFFFFFFD
callq 0x58f22
leaq 0x3c6af(%rip), %rsi     # 0xee326
movq %rbx, %rdi
callq 0x58568
leaq 0xfb(%rip), %rsi        # 0xb1d81
movq %rbx, %rdi
xorl %edx, %edx
callq 0x58930
movq %rbx, %rdi
movl $0xfffffffd, %esi       # imm = 0xFFFFFFFD
callq 0x58f22
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x578d2
leaq 0x4f3d6(%rip), %rsi     # 0x101087
leaq 0x9eb88(%rip), %rdx     # 0x150840
movq %rbx, %rdi
callq 0x5b590
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x578d2
movq %rbx, %rdi
callq 0x578c5
cmpl %ebp, %eax
jne 0xb1cea
movl $0x1, %eax
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
callq 0x27588
callq 0x2754f
// File: /workspace/github_c_makefile_star2_O1/genometools[P]genometools/src/gtlua/genome_visitor_lua.c
// Function: custom_visitor_lua_index
static int custom_visitor_lua_index(lua_State* L)
{
  lua_getfenv(L, -2);
  lua_pushvalue(L, -2);
  lua_rawget(L, -2);
  if (lua_isnoneornil(L, -1) == 0) {
      return 1;
  }
  lua_pop(L, 2);

  /* check the metatable */
  lua_getmetatable(L, -2);
  lua_pushvalue(L, -2);
  lua_rawget(L, -2);

  return 1;
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x58ecc
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x57c3c
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x58bf0
movq %rbx, %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x57c5c
testl %eax, %eax
jg 0xb1d7a
movq %rbx, %rdi
movl $0xfffffffd, %esi       # imm = 0xFFFFFFFD
callq 0x578d2
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x58e77
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x57c3c
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x58bf0
movl $0x1, %eax
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O1/genometools[P]genometools/src/gtlua/genome_visitor_lua.c
// Function: gt_lua_genome_visitor_push
void gt_lua_genome_visitor_push(lua_State *L, GtNodeVisitor *gv)
{
  GtNodeVisitor **gv_lua;
  gt_assert(L && gv);
  gv_lua = lua_newuserdata(L, sizeof (GtNodeVisitor**));
  *gv_lua = gv;
  luaL_getmetatable(L, GENOME_VISITOR_METATABLE);
  lua_setmetatable(L, -2);
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
testq %rdi, %rdi
je 0xb1e03
movq %rsi, %r14
testq %rsi, %rsi
je 0xb1e03
movq %rdi, %rbx
movl $0x8, %esi
callq 0x59e95
movq %r14, (%rax)
leaq 0x437f0(%rip), %rdx     # 0xf55d2
movq %rbx, %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x58b98
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x59337
callq 0x275c1
// File: /workspace/github_c_makefile_star2_O1/genometools[P]genometools/src/gtlua/genome_visitor_lua.c
// Function: lua_custom_visitor_visit_node_generic
static int lua_custom_visitor_visit_node_generic(GT_UNUSED GtNodeVisitor *nv,
                                                 GtGenomeNode *fn,
                                                 const char *function,
                                                 GtError *err)
{
  GT_UNUSED GtNodeVisitor **vis;
  GtLuaCustomVisitor *lcv;
  GT_UNUSED GtGenomeNode **node;
  int had_err = 0;
  gt_assert(nv);
  lcv = lua_custom_visitor_cast(nv);

  node = check_genome_node(lcv->L, 1);
  vis = check_genome_visitor(lcv->L, 2);
  gt_assert(*node == (GtGenomeNode*) fn);
  gt_assert(*vis == (GtNodeVisitor*) nv);
  lua_pushvalue(lcv->L, 2);
  lua_pushstring(lcv->L, function);
  lua_gettable(lcv->L, 2);
  if (lua_isnil(lcv->L, -1)) {
    lua_pop(lcv->L, 1);
    return had_err;
  }
  lua_pushvalue(lcv->L, 2);
  gt_lua_genome_node_push(lcv->L, gt_genome_node_ref((GtGenomeNode*) fn));
  if (lua_pcall(lcv->L, 2, 0, 0)) {
    const char *error = lua_tostring(lcv->L, -1);
    gt_error_set(err, "%s", error);
    had_err = -1;
  }
  return had_err;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
testq %rdi, %rdi
je 0xb1f3a
movq %rcx, %rbx
movq %rdx, %r12
movq %rsi, %r15
movq %rdi, %r13
callq 0xb1b30
movq %rax, %rdi
movq %r13, %rsi
callq 0x49c1d
movq %rax, %r14
movq 0x10(%rax), %rdi
leaq 0x43641(%rip), %rdx     # 0xf5487
movl $0x1, %esi
callq 0x5b252
movq %rax, %rbp
movq 0x10(%r14), %rdi
leaq 0x43774(%rip), %rdx     # 0xf55d2
movl $0x2, %esi
callq 0x5b252
cmpq %r15, (%rbp)
jne 0xb1f3f
cmpq %r13, (%rax)
jne 0xb1f44
movq 0x10(%r14), %rdi
movl $0x2, %esi
callq 0x57c3c
movq 0x10(%r14), %rdi
movq %r12, %rsi
callq 0x58568
movq 0x10(%r14), %rdi
movl $0x2, %esi
callq 0x58a66
movq 0x10(%r14), %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x57c5c
movq 0x10(%r14), %rdi
testl %eax, %eax
je 0xb1f1d
movl $0x2, %esi
callq 0x57c3c
movq 0x10(%r14), %r12
movq %r15, %rdi
callq 0x41ca0
movq %r12, %rdi
movq %rax, %rsi
callq 0x87acd
movq 0x10(%r14), %rdi
xorl %ebp, %ebp
movl $0x2, %esi
xorl %edx, %edx
xorl %ecx, %ecx
callq 0x59536
testl %eax, %eax
je 0xb1f29
movq 0x10(%r14), %rdi
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
xorl %edx, %edx
callq 0x58042
leaq 0x3cc3b(%rip), %rsi     # 0xeeb49
movq %rbx, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x3559f
jmp 0xb1f29
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x578d2
xorl %ebp, %ebp
movl %ebp, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0x27668
callq 0x275fa
callq 0x27631
// File: /workspace/github_c_makefile_star2_O1/genometools[P]genometools/src/gtlua/genome_visitor_lua.c
// Function: gff3_visitor_lua_new
static int gff3_visitor_lua_new(lua_State *L)
{
  GtNodeVisitor **gv;
  gt_assert(L);
  /* construct object */
  gv = lua_newuserdata(L, sizeof (GtNodeVisitor*));
  *gv = gt_gff3_visitor_new(NULL);
  gt_assert(*gv);
  luaL_getmetatable(L, GENOME_VISITOR_METATABLE);
  lua_setmetatable(L, -2);
  return 1;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
testq %rdi, %rdi
je 0xb1f9f
movq %rdi, %rbx
movl $0x8, %esi
callq 0x59e95
movq %rax, %r14
xorl %edi, %edi
callq 0x48588
movq %rax, (%r14)
testq %rax, %rax
je 0xb1fa4
leaq 0x4365a(%rip), %rdx     # 0xf55d2
movq %rbx, %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x58b98
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x59337
movl $0x1, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
callq 0x276d6
callq 0x2769f
// File: /workspace/github_c_makefile_star2_O1/genometools[P]genometools/src/gtlua/genome_visitor_lua.c
// Function: custom_visitor_lua_new
static int custom_visitor_lua_new(lua_State *L)
{
  GtNodeVisitor **gv;
  GtLuaCustomVisitor *lcv;
  gt_assert(L);

  gv = lua_newuserdata(L, sizeof (GtNodeVisitor*));
  gt_assert(gv);
  *gv = gt_node_visitor_create(lua_custom_visitor_class());
  gt_assert(*gv);
  lcv = lua_custom_visitor_cast(*gv);
  luaL_getmetatable(L, GENOME_VISITOR_METATABLE);
  lua_setmetatable(L, -2);

  /* set clean env for this visitor */
  lua_newtable(L);
  lua_setfenv(L, -2);
  lcv->L = L;
  return 1;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
testq %rdi, %rdi
je 0xb203e
movq %rdi, %rbx
movl $0x8, %esi
callq 0x59e95
testq %rax, %rax
je 0xb2043
movq %rax, %r14
callq 0xb1b30
movq %rax, %rdi
callq 0x49bec
movq %rax, (%r14)
testq %rax, %rax
je 0xb2048
callq 0xb1b30
movq (%r14), %rsi
movq %rax, %rdi
callq 0x49c1d
movq %rax, %r14
leaq 0x435d8(%rip), %rdx     # 0xf55d2
movq %rbx, %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x58b98
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x59337
movq %rbx, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x58da0
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x593ec
movq %rbx, 0x10(%r14)
movl $0x1, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
callq 0x2777f
callq 0x27746
callq 0x2770d
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O1/genometools[P]genometools/src/gtlua/image_info_lua.c
// Function: gt_lua_open_imageinfo
int gt_lua_open_imageinfo(lua_State *L)
{
#ifndef NDEBUG
  int stack_size;
#endif
  gt_assert(L);
#ifndef NDEBUG
  stack_size = lua_gettop(L);
#endif
  luaL_newmetatable(L, IMAGEINFO_METATABLE);
  lua_pushvalue(L, -1); /* duplicate the metatable */
  lua_setfield(L, -2, "__index");
  /* set its _gc field */
  lua_pushstring(L, "__gc");
  lua_pushcfunction(L, imageinfo_lua_delete);
  lua_settable(L, -3);
  /* register functions */
  luaL_register(L, NULL, imageinfo_lib_m);
  lua_pop(L, 1);
  luaL_register(L, "gt", imageinfo_lib_f);
  lua_pop(L, 1);
  gt_assert(lua_gettop(L) == stack_size);
  return 1;
}

// Assembly:
pushq %rbp
pushq %rbx
pushq %rax
testq %rdi, %rdi
je 0xb211c
movq %rdi, %rbx
callq 0x578c5
movl %eax, %ebp
leaq 0x4b4aa(%rip), %rsi     # 0xfd517
movq %rbx, %rdi
callq 0x5b1df
movq %rbx, %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x57c3c
leaq 0x3c295(%rip), %rdx     # 0xee31e
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x59137
leaq 0x3bbd5(%rip), %rsi     # 0xedc72
movq %rbx, %rdi
callq 0x58568
leaq 0x7a(%rip), %rsi        # 0xb2126
movq %rbx, %rdi
xorl %edx, %edx
callq 0x58930
movq %rbx, %rdi
movl $0xfffffffd, %esi       # imm = 0xFFFFFFFD
callq 0x58f22
leaq 0x9e7a6(%rip), %rdx     # 0x150870
movq %rbx, %rdi
xorl %esi, %esi
callq 0x5b590
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x578d2
leaq 0x4ef9f(%rip), %rsi     # 0x101087
leaq 0x9e7c1(%rip), %rdx     # 0x1508b0
movq %rbx, %rdi
callq 0x5b590
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x578d2
movq %rbx, %rdi
callq 0x578c5
cmpl %ebp, %eax
jne 0xb2121
movl $0x1, %eax
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
callq 0x277f1
callq 0x277b8
// File: /workspace/github_c_makefile_star2_O1/genometools[P]genometools/src/gtlua/image_info_lua.c
// Function: imageinfo_lua_get_height
static int imageinfo_lua_get_height(lua_State *L)
{
  GtImageInfo **ii;
  GtUword height;
  GtError *err = NULL;
  ii = check_imageinfo(L, 1);
  gt_assert(ii);
  height = gt_image_info_get_height(*ii);
  if (height > DBL_MAX)
  {
    err = gt_error_new();
    gt_error_set(err, "image height exceeds %f!", DBL_MAX);
    return gt_lua_error(L, err);
  }
  else
    lua_pushnumber(L, (double) height);
  gt_error_delete(err);
  return 0;
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
leaq 0x4b3c8(%rip), %rdx     # 0xfd517
movl $0x1, %esi
callq 0x5b252
testq %rax, %rax
je 0xb2180
movq (%rax), %rdi
callq 0x5226c
movl %eax, %eax
cvtsi2sd %rax, %xmm0
movq %rbx, %rdi
callq 0x58362
xorl %edi, %edi
callq 0x35705
xorl %eax, %eax
popq %rbx
retq
callq 0x2782a
// File: /workspace/github_c_makefile_star2_O1/genometools[P]genometools/src/gtlua/image_info_lua.c
// Function: imageinfo_lua_num_of_recmaps
static int imageinfo_lua_num_of_recmaps(lua_State *L)
{
  GtImageInfo **ii;
  GtUword nof_rm;
  GtError *err = NULL;
  ii = check_imageinfo(L, 1);
  gt_assert(ii);
  nof_rm = gt_image_info_num_of_rec_maps(*ii);
  if (nof_rm > DBL_MAX)
  {
    err = gt_error_new();
    gt_error_set(err, "number of recmaps exceeds %f!", DBL_MAX);
    return gt_lua_error(L, err);
  }
  else
    lua_pushnumber(L, (double) nof_rm);
  gt_error_delete(err);
  return 0;
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
leaq 0x4b387(%rip), %rdx     # 0xfd517
movl $0x1, %esi
callq 0x5b252
testq %rax, %rax
je 0xb21db
movq (%rax), %rdi
callq 0x52224
movq %rax, %xmm1
punpckldq 0x2f2cc(%rip), %xmm1 # xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
subpd 0x2f2d4(%rip), %xmm1    # 0xe1490
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
movq %rbx, %rdi
callq 0x58362
xorl %edi, %edi
callq 0x35705
xorl %eax, %eax
popq %rbx
retq
callq 0x27861
// File: /workspace/github_c_makefile_star2_O1/genometools[P]genometools/src/gtlua/image_info_lua.c
// Function: imageinfo_lua_recmaps_as_table
static int imageinfo_lua_recmaps_as_table(lua_State *L)
{
  GtImageInfo **ii;
  GtUword num, i;
  ii = check_imageinfo(L, 1);
  gt_assert(ii);
  num = gt_image_info_num_of_rec_maps(*ii);
  if (num>0)
  {
    lua_newtable(L);
    for (i=0;i<num;i++)
    {
      lua_pushnumber(L, i+1);
      push_recmap_as_table(L, gt_image_info_get_rec_map(*ii, i));
      lua_rawset(L, -3);
    }
  } else lua_pushnil(L);
  return 1;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
leaq 0x4b322(%rip), %rdx     # 0xfd517
movl $0x1, %esi
callq 0x5b252
testq %rax, %rax
je 0xb23a3
movq %rax, %r14
movq (%rax), %rdi
callq 0x52224
testq %rax, %rax
je 0xb2382
movq %rax, %r15
xorl %r12d, %r12d
movq %rbx, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x58da0
leaq 0x4c3b6(%rip), %r13     # 0xfe5eb
movq %r12, %rbp
incq %r12
movq %r12, %xmm1
punpckldq 0x2f238(%rip), %xmm1 # xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
subpd 0x2f240(%rip), %xmm1    # 0xe1490
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
movq %rbx, %rdi
callq 0x58362
movq (%r14), %rdi
movq %rbp, %rsi
callq 0x5227b
testq %rax, %rax
je 0xb239e
movq %rax, %rbp
movq %rbx, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x58da0
movq %rbx, %rdi
leaq 0x4c346(%rip), %rsi     # 0xfe5d7
callq 0x58568
movq %rbp, %rdi
callq 0x533a2
movq %rbx, %rdi
callq 0x58362
movq %rbx, %rdi
movl $0xfffffffd, %esi       # imm = 0xFFFFFFFD
callq 0x59193
movq %rbx, %rdi
leaq 0x4c31f(%rip), %rsi     # 0xfe5dc
callq 0x58568
movq %rbp, %rdi
callq 0x533b2
movq %rbx, %rdi
callq 0x58362
movq %rbx, %rdi
movl $0xfffffffd, %esi       # imm = 0xFFFFFFFD
callq 0x59193
movq %rbx, %rdi
leaq 0x4c2f8(%rip), %rsi     # 0xfe5e1
callq 0x58568
movq %rbp, %rdi
callq 0x533c3
movq %rbx, %rdi
callq 0x58362
movq %rbx, %rdi
movl $0xfffffffd, %esi       # imm = 0xFFFFFFFD
callq 0x59193
movq %rbx, %rdi
leaq 0x4c2d1(%rip), %rsi     # 0xfe5e6
callq 0x58568
movq %rbp, %rdi
callq 0x533d4
movq %rbx, %rdi
callq 0x58362
movq %rbx, %rdi
movl $0xfffffffd, %esi       # imm = 0xFFFFFFFD
callq 0x59193
movq %rbx, %rdi
movq %r13, %rsi
callq 0x58568
movq %rbp, %rdi
callq 0x533e5
movq %rax, %rdi
callq 0x41ca0
movq %rbx, %rdi
movq %rax, %rsi
callq 0x87acd
movq %rbx, %rdi
movl $0xfffffffd, %esi       # imm = 0xFFFFFFFD
callq 0x59193
movq %rbx, %rdi
movl $0xfffffffd, %esi       # imm = 0xFFFFFFFD
callq 0x59193
cmpq %r12, %r15
jne 0xb2235
jmp 0xb238a
movq %rbx, %rdi
callq 0x5834e
movl $0x1, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0x27898
callq 0x278cf
// File: /workspace/github_c_makefile_star2_O1/genometools[P]genometools/src/gtlua/image_info_lua.c
// Function: imageinfo_lua_new
static int imageinfo_lua_new(lua_State *L)
{
  GtImageInfo **ii;
  ii = lua_newuserdata(L, sizeof (GtImageInfo*));
  gt_assert(ii);
  *ii = gt_image_info_new();
  luaL_getmetatable(L, IMAGEINFO_METATABLE);
  lua_setmetatable(L, -2);
  return 1;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
movl $0x8, %esi
callq 0x59e95
testq %rax, %rax
je 0xb23f7
movq %rax, %r14
callq 0x5215c
movq %rax, (%r14)
leaq 0x4b147(%rip), %rdx     # 0xfd517
movq %rbx, %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x58b98
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x59337
movl $0x1, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
callq 0x27906
// File: /workspace/github_c_makefile_star2_O1/genometools[P]genometools/src/gtlua/layout_lua.c
// Function: gt_lua_open_layout
int gt_lua_open_layout(lua_State *L)
{
#ifndef NDEBUG
  int stack_size;
#endif
  gt_assert(L);
#ifndef NDEBUG
  stack_size = lua_gettop(L);
#endif
  luaL_newmetatable(L, LAYOUT_METATABLE);
  lua_pushvalue(L, -1); /* duplicate the metatable */
  lua_setfield(L, -2, "__index");
  /* set its _gc field */
  lua_pushstring(L, "__gc");
  lua_pushcfunction(L, layout_lua_delete);
  lua_settable(L, -3);
  /* register functions */
  luaL_register(L, NULL, layout_lib_m);
  lua_pop(L, 1);
  luaL_register(L, "gt", layout_lib_f);
  lua_pop(L, 1);
  gt_assert(lua_gettop(L) == stack_size);
  return 1;
}

// Assembly:
pushq %rbp
pushq %rbx
pushq %rax
testq %rdi, %rdi
je 0xb24c8
movq %rdi, %rbx
callq 0x578c5
movl %eax, %ebp
leaq 0x4c228(%rip), %rsi     # 0xfe641
movq %rbx, %rdi
callq 0x5b1df
movq %rbx, %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x57c3c
leaq 0x3bee9(%rip), %rdx     # 0xee31e
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x59137
leaq 0x3b829(%rip), %rsi     # 0xedc72
movq %rbx, %rdi
callq 0x58568
leaq 0x7a(%rip), %rsi        # 0xb24d2
movq %rbx, %rdi
xorl %edx, %edx
callq 0x58930
movq %rbx, %rdi
movl $0xfffffffd, %esi       # imm = 0xFFFFFFFD
callq 0x58f22
leaq 0x9e45a(%rip), %rdx     # 0x1508d0
movq %rbx, %rdi
xorl %esi, %esi
callq 0x5b590
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x578d2
leaq 0x4ebf3(%rip), %rsi     # 0x101087
leaq 0x9e465(%rip), %rdx     # 0x150900
movq %rbx, %rdi
callq 0x5b590
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x578d2
movq %rbx, %rdi
callq 0x578c5
cmpl %ebp, %eax
jne 0xb24cd
movl $0x1, %eax
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
callq 0x27974
callq 0x2793d
// File: /workspace/github_c_makefile_star2_O1/genometools[P]genometools/src/gtlua/layout_lua.c
// Function: layout_lua_sketch
static int layout_lua_sketch(lua_State *L)
{
  GtLayout **layout;
  GtCanvas **canvas;
  GtError *err;
  int had_err = 0;
  layout = check_layout(L, 1);
  canvas = check_canvas(L, 2);
  err = gt_error_new();
  had_err = gt_layout_sketch(*layout, *canvas, err);
  if (had_err < 0)
    return gt_lua_error(L, err);
  gt_error_delete(err);
  return 0;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
leaq 0x4c13f(%rip), %rdx     # 0xfe641
movl $0x1, %esi
callq 0x5b252
movq %rax, %r15
leaq 0x4af44(%rip), %rdx     # 0xfd45a
movq %rbx, %rdi
movl $0x2, %esi
callq 0x5b252
movq %rax, %r12
callq 0x35584
movq %rax, %r14
movq (%r15), %rdi
movq (%r12), %rsi
movq %rax, %rdx
callq 0x52748
testl %eax, %eax
js 0xb2557
movq %r14, %rdi
callq 0x35705
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
movq %rbx, %rdi
movq %r14, %rsi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0xa8706
// File: /workspace/github_c_makefile_star2_O1/genometools[P]genometools/src/gtlua/layout_lua.c
// Function: layout_lua_get_height
static int layout_lua_get_height(lua_State *L)
{
  GtLayout **layout;
  GtError *err;
  int had_err = 0;
  GtUword height;
  layout = check_layout(L, 1);
  err = gt_error_new();
  had_err = gt_layout_get_height(*layout, &height, err);
  lua_pushnumber(L, height);
  if (had_err < 0)
    return gt_lua_error(L, err);
  gt_error_delete(err);
  return 1;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x10, %rsp
movq %rdi, %r14
leaq 0x4c0be(%rip), %rdx     # 0xfe641
movl $0x1, %ebx
movl $0x1, %esi
callq 0x5b252
movq %rax, %r12
callq 0x35584
movq %rax, %r15
movq (%r12), %rdi
leaq 0x8(%rsp), %r12
movq %r12, %rsi
movq %rax, %rdx
callq 0x52984
movsd (%r12), %xmm1
unpcklps 0x2eec2(%rip), %xmm1    # xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
subpd 0x2eeca(%rip), %xmm1    # 0xe1490
movl %eax, %ebp
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
movq %r14, %rdi
callq 0x58362
testl %ebp, %ebp
js 0xb25ea
movq %r15, %rdi
callq 0x35705
jmp 0xb25f7
movq %r14, %rdi
movq %r15, %rsi
callq 0xa8706
movl %eax, %ebx
movl %ebx, %eax
addq $0x10, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O1/genometools[P]genometools/src/gtlua/layout_lua.c
// Function: layout_lua_new
static int layout_lua_new(lua_State *L)
{
  GtLayout **layout;
  GtDiagram **diagram;
  unsigned int width;
  GtStyle *style;
  GtError *err;
  diagram = check_diagram(L, 1);
  width = luaL_checkint(L, 2);
  /* create layout */
  style = gt_lua_get_style_from_registry(L);
  layout = lua_newuserdata(L, sizeof (GtLayout*));
  gt_assert(layout);
  err = gt_error_new();
  *layout = gt_layout_new(*diagram, width, style, err);
  if (gt_error_is_set(err))
    return gt_lua_error(L, err);
  gt_error_delete(err);
  luaL_getmetatable(L, LAYOUT_METATABLE);
  lua_setmetatable(L, -2);
  return 1;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
leaq 0x4affc(%rip), %rdx     # 0xfd617
movl $0x1, %esi
callq 0x5b252
movq %rax, %r14
movq %rbx, %rdi
movl $0x2, %esi
callq 0x5b41f
movq %rax, %r15
movq %rbx, %rdi
callq 0xb273d
movq %rax, %r12
movl $0x8, %esi
movq %rbx, %rdi
callq 0x59e95
testq %rax, %rax
je 0xb26db
movq %rax, %rbp
callq 0x35584
movq %rax, %r13
movq (%r14), %rdi
movl %r15d, %esi
movq %r12, %rdx
movq %rax, %rcx
callq 0x52450
movq %rax, (%rbp)
movq %r13, %rdi
callq 0x3566a
testb %al, %al
je 0xb269e
movq %rbx, %rdi
movq %r13, %rsi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xa8706
movq %r13, %rdi
callq 0x35705
leaq 0x4bf94(%rip), %rdx     # 0xfe641
movq %rbx, %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x58b98
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x59337
movl $0x1, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0x279ab
// File: /workspace/github_c_makefile_star2_O1/genometools[P]genometools/src/annotationsketch/luastyle.c
// Function: gt_lua_put_style_in_registry
void gt_lua_put_style_in_registry(lua_State *L, GtStyle *style)
{
#ifndef NDEBUG
  int stack_size;
#endif
  gt_assert(L && style);
#ifndef NDEBUG
  stack_size = lua_gettop(L);
#endif
  lua_pushlightuserdata(L, STYLE_KEY);
  lua_pushlightuserdata(L, style);
  lua_rawset(L, LUA_REGISTRYINDEX);
  gt_assert(lua_gettop(L) == stack_size); /* make sure the stack doesn't grow */
}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
testq %rdi, %rdi
je 0xb2733
movq %rsi, %r14
testq %rsi, %rsi
je 0xb2733
movq %rdi, %rbx
callq 0x578c5
movl %eax, %ebp
leaq -0x5f27a(%rip), %rsi    # 0x53488
movq %rbx, %rdi
callq 0x58a2e
movq %rbx, %rdi
movq %r14, %rsi
callq 0x58a2e
movq %rbx, %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x59193
movq %rbx, %rdi
callq 0x578c5
cmpl %ebp, %eax
jne 0xb2738
popq %rbx
popq %r14
popq %rbp
retq
callq 0x279e2
callq 0x27a19
// File: /workspace/github_c_makefile_star2_O1/genometools[P]genometools/src/annotationsketch/luastyle.c
// Function: gt_lua_get_style_from_registry
GtStyle* gt_lua_get_style_from_registry(lua_State *L)
{
#ifndef NDEBUG
  int stack_size;
#endif
  GtStyle *style;
  gt_assert(L);
#ifndef NDEBUG
  stack_size = lua_gettop(L);
#endif
  lua_pushlightuserdata(L, STYLE_KEY);
  lua_rawget(L, LUA_REGISTRYINDEX);
  gt_assert(lua_islightuserdata(L, -1));
  style = lua_touserdata(L, -1);
  lua_pop(L, 1);
  gt_assert(lua_gettop(L) == stack_size); /* make sure the stack doesn't grow */
  return style;
}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
testq %rdi, %rdi
je 0xb27af
movq %rdi, %rbx
callq 0x578c5
movl %eax, %ebp
leaq -0x5f2cf(%rip), %rsi    # 0x53488
movq %rbx, %rdi
callq 0x58a2e
movq %rbx, %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x58bf0
movq %rbx, %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x57c5c
cmpl $0x2, %eax
jne 0xb27b4
movq %rbx, %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x582b2
movq %rax, %r14
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x578d2
movq %rbx, %rdi
callq 0x578c5
cmpl %ebp, %eax
jne 0xb27b9
movq %r14, %rax
popq %rbx
popq %r14
popq %rbp
retq
callq 0x27abe
callq 0x27a50
callq 0x27a87
nop
// File: /workspace/github_c_makefile_star2_O1/genometools[P]genometools/src/external/tre/lib/tre-ast.c
// Function: tre_ast_new_node
tre_ast_node_t *
tre_ast_new_node(tre_mem_t mem, tre_ast_type_t type, size_t size)
{
  tre_ast_node_t *node;

  node = tre_mem_calloc(mem, sizeof(*node));
  if (!node)
    return NULL;
  node->obj = tre_mem_calloc(mem, size);
  if (!node->obj)
    return NULL;
  node->type = type;
  node->nullable = -1;
  node->submatch_id = -1;

  return node;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
movq %rdx, %r15
movl %esi, %ebx
movq %rdi, %r13
xorl %r14d, %r14d
movl $0x30, %r8d
xorl %esi, %esi
xorl %edx, %edx
movl $0x1, %ecx
callq 0x955ee
testq %rax, %rax
je 0xb2821
movq %rax, %r12
xorl %r14d, %r14d
movq %r13, %rdi
xorl %esi, %esi
xorl %edx, %edx
movl $0x1, %ecx
movq %r15, %r8
callq 0x955ee
movq %rax, 0x8(%r12)
testq %rax, %rax
je 0xb2821
movl %ebx, (%r12)
movq $-0x1, 0x10(%r12)
movq %r12, %r14
movq %r14, %rax
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O1/genometools[P]genometools/src/external/tre/lib/tre-ast.c
// Function: tre_ast_new_literal
tre_ast_node_t *
tre_ast_new_literal(tre_mem_t mem, int code_min, int code_max, int position)
{
  tre_ast_node_t *node;
  tre_literal_t *lit;

  node = tre_ast_new_node(mem, LITERAL, sizeof(tre_literal_t));
  if (!node)
    return NULL;
  lit = node->obj;
  lit->code_min = code_min;
  lit->code_max = code_max;
  lit->position = position;

  return node;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movl %ecx, %ebx
movl %edx, %ebp
movl %esi, %r15d
xorl %r14d, %r14d
movl $0x28, %edx
xorl %esi, %esi
callq 0xb27c0
testq %rax, %rax
je 0xb2867
movq 0x8(%rax), %rcx
movslq %r15d, %rdx
movq %rdx, (%rcx)
movslq %ebp, %rdx
movq %rdx, 0x8(%rcx)
movl %ebx, 0x10(%rcx)
movq %rax, %r14
movq %r14, %rax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O1/genometools[P]genometools/src/external/tre/lib/tre-ast.c
// Function: tre_ast_new_iter
tre_ast_node_t *
tre_ast_new_iter(tre_mem_t mem, tre_ast_node_t *arg, int min, int max,
		 int minimal)
{
  tre_ast_node_t *node;
  tre_iteration_t *iter;

  node = tre_ast_new_node(mem, ITERATION, sizeof(tre_iteration_t));
  if (!node)
    return NULL;
  iter = node->obj;
  iter->arg = arg;
  iter->min = min;
  iter->max = max;
  iter->minimal = minimal;
  node->num_submatches = arg->num_submatches;

  return node;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movl %r8d, %ebx
movl %ecx, %ebp
movl %edx, %r15d
movq %rsi, %r14
movl $0x20, %edx
movl $0x2, %esi
callq 0xb27c0
testq %rax, %rax
je 0xb28c0
movq 0x8(%rax), %rcx
movq %r14, (%rcx)
movl %r15d, 0x8(%rcx)
movl %ebp, 0xc(%rcx)
movb 0x10(%rcx), %dl
andb $0x1, %bl
andb $-0x2, %dl
orb %bl, %dl
movb %dl, 0x10(%rcx)
movl 0x18(%r14), %ecx
movl %ecx, 0x18(%rax)
jmp 0xb28c2
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O1/genometools[P]genometools/src/external/tre/lib/tre-ast.c
// Function: tre_ast_new_union
tre_ast_node_t *
tre_ast_new_union(tre_mem_t mem, tre_ast_node_t *left, tre_ast_node_t *right)
{
  tre_ast_node_t *node;

  node = tre_ast_new_node(mem, UNION, sizeof(tre_union_t));
  if (node == NULL)
    return NULL;
  ((tre_union_t *)node->obj)->left = left;
  ((tre_union_t *)node->obj)->right = right;
  node->num_submatches = left->num_submatches + right->num_submatches;

  return node;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rdx, %r14
movq %rsi, %rbx
movl $0x10, %edx
movl $0x3, %esi
callq 0xb27c0
testq %rax, %rax
je 0xb2902
movq 0x8(%rax), %rcx
movq %rbx, (%rcx)
movq %r14, 0x8(%rcx)
movl 0x18(%r14), %ecx
addl 0x18(%rbx), %ecx
movl %ecx, 0x18(%rax)
jmp 0xb2904
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
retq