LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O3/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 0xb05cb
movq %rdi, %rbx
leaq 0x44eb5(%rip), %rdx     # 0xf5427
movl $0x1, %esi
callq 0x5a67c
movq %rax, %r14
movl $0x8, %esi
movq %rbx, %rdi
callq 0x5924a
testq %rax, %rax
je 0xb05d0
movq %rax, %r15
movq (%r14), %rdi
callq 0x40ee0
movq %rax, (%r15)
leaq 0x4daaa(%rip), %rdx     # 0xfe050
movq %rbx, %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x57f56
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x586d6
movl $0x1, %eax
popq %rbx
popq %r14
popq %r15
retq
callq 0x26efe
callq 0x26ec7
// File: /workspace/github_c_makefile_star2_O3/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 0xb0642
movq %rdi, %rbx
leaq 0x44e3e(%rip), %rdx     # 0xf5427
movl $0x1, %esi
callq 0x5a67c
movq %rax, %r14
movl $0x8, %esi
movq %rbx, %rdi
callq 0x5924a
testq %rax, %rax
je 0xb0647
movq %rax, %r15
movq (%r14), %rdi
callq 0x40fcd
movq %rax, (%r15)
leaq 0x4da33(%rip), %rdx     # 0xfe050
movq %rbx, %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x57f56
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x586d6
movl $0x1, %eax
popq %rbx
popq %r14
popq %r15
retq
callq 0x26f6c
callq 0x26f35
// File: /workspace/github_c_makefile_star2_O3/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 0xb0699
movq %rdi, %rbx
callq 0x56afc
movl %eax, %ebp
leaq 0x50996(%rip), %rsi     # 0x100ffb
leaq 0xa0114(%rip), %rdx     # 0x150780
movq %rbx, %rdi
callq 0x5a9b5
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x56b09
movq %rbx, %rdi
callq 0x56afc
cmpl %ebp, %eax
jne 0xb069e
movl $0x1, %eax
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
callq 0x26fda
callq 0x26fa3
// File: /workspace/github_c_makefile_star2_O3/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 0x5924a
testq %rax, %rax
je 0xb072b
movq %rax, %r14
leaq 0x455d1(%rip), %r15     # 0xf5c98
movq %rbx, %rdi
movl $0x1, %esi
movq %r15, %rdx
callq 0x5a67c
movq %rax, %r12
leaq 0x4cee0(%rip), %rdx     # 0xfd5c1
movq %rbx, %rdi
movl $0x2, %esi
callq 0x5a67c
movq (%r12), %rdi
movq (%rax), %rsi
callq 0xdbc40
movq %rax, (%r14)
movq %rbx, %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
movq %r15, %rdx
callq 0x57f56
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x586d6
movl $0x1, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
callq 0x27011
// File: /workspace/github_c_makefile_star2_O3/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 0xb077d
movq %rdi, %rbx
callq 0x56afc
movl %eax, %ebp
leaq 0x508b2(%rip), %rsi     # 0x100ffb
leaq 0xa0050(%rip), %rdx     # 0x1507a0
movq %rbx, %rdi
callq 0x5a9b5
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x56b09
movq %rbx, %rdi
callq 0x56afc
cmpl %ebp, %eax
jne 0xb0782
movl $0x1, %eax
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
callq 0x2707f
callq 0x27048
// File: /workspace/github_c_makefile_star2_O3/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 0x5924a
testq %rax, %rax
je 0xb07ed
movq %rax, %r14
leaq 0x4ce1a(%rip), %rdx     # 0xfd5c1
movq %rbx, %rdi
movl $0x1, %esi
callq 0x5a67c
movq (%rax), %rdi
callq 0x412bf
movq %rax, (%r14)
leaq 0x44dac(%rip), %rdx     # 0xf5572
movq %rbx, %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x57f56
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x586d6
movl $0x1, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
callq 0x270b6
nop
// File: /workspace/github_c_makefile_star2_O3/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 0x72367
cmpq $0x0, 0xa256e(%rip)     # 0x152d70
jne 0xb081e
leaq 0x21(%rip), %rdx        # 0xb082c
movl $0x28, %edi
xorl %esi, %esi
callq 0x48c48
movq %rax, 0xa2552(%rip)     # 0x152d70
callq 0x7237d
movq 0xa2546(%rip), %rax     # 0x152d70
popq %rcx
retq
// File: /workspace/github_c_makefile_star2_O3/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 0xb0a96
movq %rdi, %rbx
callq 0x56afc
movl %eax, %ebp
leaq 0x452ea(%rip), %rsi     # 0xf5c98
movq %rbx, %rdi
callq 0x5a609
leaq 0x3d26d(%rip), %rsi     # 0xedc2a
movq %rbx, %rdi
callq 0x5790a
leaq 0xd4(%rip), %rsi        # 0xb0aa0
movq %rbx, %rdi
xorl %edx, %edx
callq 0x57d08
movq %rbx, %rdi
movl $0xfffffffd, %esi       # imm = 0xFFFFFFFD
callq 0x582b2
leaq 0x3d8ec(%rip), %rsi     # 0xee2d6
movq %rbx, %rdi
callq 0x5790a
leaq 0xc5(%rip), %rsi        # 0xb0abe
movq %rbx, %rdi
xorl %edx, %edx
callq 0x57d08
movq %rbx, %rdi
movl $0xfffffffd, %esi       # imm = 0xFFFFFFFD
callq 0x582b2
leaq 0x3d8c7(%rip), %rsi     # 0xee2de
movq %rbx, %rdi
callq 0x5790a
leaq 0x10c(%rip), %rsi       # 0xb0b32
movq %rbx, %rdi
xorl %edx, %edx
callq 0x57d08
movq %rbx, %rdi
movl $0xfffffffd, %esi       # imm = 0xFFFFFFFD
callq 0x582b2
leaq 0x9fd7c(%rip), %rdx     # 0x1507c0
movq %rbx, %rdi
xorl %esi, %esi
callq 0x5a9b5
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x56b09
leaq 0x50599(%rip), %rsi     # 0x100ffb
leaq 0x9fd77(%rip), %rdx     # 0x1507e0
movq %rbx, %rdi
callq 0x5a9b5
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x56b09
movq %rbx, %rdi
callq 0x56afc
cmpl %ebp, %eax
jne 0xb0a9b
movl $0x1, %eax
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
callq 0x271d1
callq 0x27198
// File: /workspace/github_c_makefile_star2_O3/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 0x5825c
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x56f7b
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x57fae
movq %rbx, %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x56f9b
testl %eax, %eax
jg 0xb0b2b
movq %rbx, %rdi
movl $0xfffffffd, %esi       # imm = 0xFFFFFFFD
callq 0x56b09
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x58207
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x56f7b
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x57fae
movl $0x1, %eax
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O3/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 0x5825c
movq %rbx, %rdi
movl $0xfffffffd, %esi       # imm = 0xFFFFFFFD
callq 0x56f7b
movq %rbx, %rdi
movl $0xfffffffd, %esi       # imm = 0xFFFFFFFD
callq 0x56f7b
movq %rbx, %rdi
movl $0xfffffffd, %esi       # imm = 0xFFFFFFFD
callq 0x58524
xorl %eax, %eax
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O3/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 0x4511a(%rip), %rdx     # 0xf5c98
movl $0x1, %esi
callq 0x5a67c
movq %rax, %r15
callq 0x34f04
movq %rax, %r14
movq (%r15), %rdi
leaq 0x8(%rsp), %rsi
movq %rax, %rdx
callq 0x48d7c
testl %eax, %eax
je 0xb0bb4
movq %rbx, %rdi
movq %r14, %rsi
callq 0xa7d4a
jmp 0xb0bda
movq 0x8(%rsp), %rsi
movq %rbx, %rdi
testq %rsi, %rsi
je 0xb0bc8
callq 0x875a5
jmp 0xb0bcd
callq 0x57704
movq %r14, %rdi
callq 0x35085
movl $0x1, %eax
addq $0x10, %rsp
popq %rbx
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O3/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 0xb0c93
movq %rdi, %rbx
movl $0x1, %esi
callq 0x56b09
movq %rbx, %rdi
movl $0x1, %esi
callq 0x56f9b
testl %eax, %eax
je 0xb0c44
movq %rbx, %rdi
movl $0x1, %esi
xorl %edx, %edx
callq 0x5a5dd
movq %rax, %r14
movq %rax, %rdi
callq 0x76120
testb %al, %al
jne 0xb0c47
leaq 0x4d689(%rip), %rdx     # 0xfe2be
movq %rbx, %rdi
movl $0x1, %esi
callq 0x5a2e1
jmp 0xb0c47
xorl %r14d, %r14d
movl $0x8, %esi
movq %rbx, %rdi
callq 0x5924a
movq %rax, %r15
movq %r14, %rdi
callq 0x42674
movq %rax, (%r15)
testq %rax, %rax
je 0xb0c98
leaq 0x4502a(%rip), %rdx     # 0xf5c98
movq %rbx, %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x57f56
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x586d6
movl $0x1, %eax
popq %rbx
popq %r14
popq %r15
retq
callq 0x27241
callq 0x2720a
// File: /workspace/github_c_makefile_star2_O3/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 0xb0db9
movq %rdi, %rbx
leaq 0x44fbe(%rip), %rdx     # 0xf5c98
movl $0x1, %esi
callq 0x5a67c
movq %rax, %r15
movq %rbx, %rdi
movl $0x2, %esi
callq 0x56b09
movq %rbx, %rdi
movl $0x2, %esi
callq 0x56f9b
testl %eax, %eax
je 0xb0d3b
movq %rbx, %rdi
movl $0x2, %esi
xorl %edx, %edx
callq 0x5a5dd
movq %rax, %r12
callq 0x34f04
movq %rax, %r14
leaq 0x3a933(%rip), %rsi     # 0xeb659
movq %r12, %rdi
movq %rax, %rdx
callq 0x7591e
testq %rax, %rax
je 0xb0da5
movq %rax, %r12
jmp 0xb0d41
xorl %r14d, %r14d
xorl %r12d, %r12d
movl $0x8, %esi
movq %rbx, %rdi
callq 0x5924a
movq %rax, %r13
movq (%r15), %rdi
movq %r12, %rsi
callq 0xdbd2c
movq %rax, (%r13)
testq %rax, %rax
je 0xb0dbe
leaq 0x44f2c(%rip), %rdx     # 0xf5c98
movq %rbx, %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x57f56
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x586d6
movq %r12, %rdi
callq 0x760c0
movq %r14, %rdi
callq 0x35085
movl $0x1, %eax
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
movq %rbx, %rdi
movq %r14, %rsi
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
jmp 0xa7d4a
callq 0x272af
callq 0x27278
// File: /workspace/github_c_makefile_star2_O3/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 0xb0fb6
movl %esi, %ebp
movq %rdi, %rbx
movl $0x8, %esi
callq 0x5924a
testq %rax, %rax
je 0xb0fbb
movq %rax, %r14
callq 0xb07f4
movzbl %bpl, %esi
movq %rax, %rdi
callq 0x48c80
movq %rax, (%r14)
testq %rax, %rax
je 0xb0fc0
callq 0xb07f4
movq (%r14), %rsi
movq %rax, %rdi
callq 0x48f0b
movq %rax, %r14
leaq 0x44d69(%rip), %rdx     # 0xf5c98
movq %rbx, %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x57f56
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x586d6
movq %rbx, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x58130
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x5878b
movq %rbx, 0x18(%r14)
leaq 0x4d24f(%rip), %rsi     # 0xfe1bc
movq %rbx, %rdi
callq 0x5790a
leaq 0x49(%rip), %rsi        # 0xb0fc5
movq %rbx, %rdi
xorl %edx, %edx
callq 0x57d08
movq %rbx, %rdi
movl $0xfffffffd, %esi       # imm = 0xFFFFFFFD
callq 0x582b2
movq %rbx, %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x56f7b
movq %rbx, %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x5b0df
movl %eax, 0x20(%r14)
popq %rbx
popq %r14
popq %rbp
retq
callq 0x273c6
callq 0x2738d
callq 0x27354
// File: /workspace/github_c_makefile_star2_O3/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 0x72367
cmpq $0x0, 0xa1d72(%rip)     # 0x152d78
jne 0xb1051
leaq 0x8c(%rip), %rax        # 0xb109b
movq %rax, (%rsp)
leaq 0x45(%rip), %rdx        # 0xb105f
leaq 0x4d(%rip), %rcx        # 0xb106e
leaq 0x55(%rip), %r8         # 0xb107d
leaq 0x5d(%rip), %r9         # 0xb108c
movl $0x18, %edi
xorl %esi, %esi
callq 0x48f24
movq %rax, 0xa1d36(%rip)     # 0x152d78
leaq 0x61(%rip), %rsi        # 0xb10aa
movq %rax, %rdi
callq 0x48f84
callq 0x7237d
movq 0xa1d1b(%rip), %rax     # 0x152d78
popq %rcx
retq
// File: /workspace/github_c_makefile_star2_O3/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 0xb11ad
movq %rdi, %rbx
callq 0x56afc
movl %eax, %ebp
leaq 0x4449c(%rip), %rsi     # 0xf5572
movq %rbx, %rdi
callq 0x5a609
leaq 0x3cb45(%rip), %rsi     # 0xedc2a
movq %rbx, %rdi
callq 0x5790a
leaq 0xc3(%rip), %rsi        # 0xb11b7
movq %rbx, %rdi
xorl %edx, %edx
callq 0x57d08
movq %rbx, %rdi
movl $0xfffffffd, %esi       # imm = 0xFFFFFFFD
callq 0x582b2
leaq 0x3d1c4(%rip), %rsi     # 0xee2d6
movq %rbx, %rdi
callq 0x5790a
leaq 0xb4(%rip), %rsi        # 0xb11d5
movq %rbx, %rdi
xorl %edx, %edx
callq 0x57d08
movq %rbx, %rdi
movl $0xfffffffd, %esi       # imm = 0xFFFFFFFD
callq 0x582b2
leaq 0x3d19f(%rip), %rsi     # 0xee2de
movq %rbx, %rdi
callq 0x5790a
leaq 0xfb(%rip), %rsi        # 0xb1249
movq %rbx, %rdi
xorl %edx, %edx
callq 0x57d08
movq %rbx, %rdi
movl $0xfffffffd, %esi       # imm = 0xFFFFFFFD
callq 0x582b2
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x56b09
leaq 0x4fe82(%rip), %rsi     # 0x100ffb
leaq 0x9f6c0(%rip), %rdx     # 0x150840
movq %rbx, %rdi
callq 0x5a9b5
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x56b09
movq %rbx, %rdi
callq 0x56afc
cmpl %ebp, %eax
jne 0xb11b2
movl $0x1, %eax
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
callq 0x27438
callq 0x273ff
// File: /workspace/github_c_makefile_star2_O3/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 0xb12cb
movq %rsi, %r14
testq %rsi, %rsi
je 0xb12cb
movq %rdi, %rbx
movl $0x8, %esi
callq 0x5924a
movq %r14, (%rax)
leaq 0x442c8(%rip), %rdx     # 0xf5572
movq %rbx, %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x57f56
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x586d6
callq 0x27471
// File: /workspace/github_c_makefile_star2_O3/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 0xb1402
movq %rcx, %rbx
movq %rdx, %r12
movq %rsi, %r15
movq %rdi, %r13
callq 0xb0ff8
movq %rax, %rdi
movq %r13, %rsi
callq 0x48fc5
movq %rax, %r14
movq 0x10(%rax), %rdi
leaq 0x44119(%rip), %rdx     # 0xf5427
movl $0x1, %esi
callq 0x5a67c
movq %rax, %rbp
movq 0x10(%r14), %rdi
leaq 0x4424c(%rip), %rdx     # 0xf5572
movl $0x2, %esi
callq 0x5a67c
cmpq %r15, (%rbp)
jne 0xb1407
cmpq %r13, (%rax)
jne 0xb140c
movq 0x10(%r14), %rdi
movl $0x2, %esi
callq 0x56f7b
movq 0x10(%r14), %rdi
movq %r12, %rsi
callq 0x5790a
movq 0x10(%r14), %rdi
movl $0x2, %esi
callq 0x57e45
movq 0x10(%r14), %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x56f9b
movq 0x10(%r14), %rdi
testl %eax, %eax
je 0xb13e5
movl $0x2, %esi
callq 0x56f7b
movq 0x10(%r14), %r12
movq %r15, %rdi
callq 0x4130c
movq %r12, %rdi
movq %rax, %rsi
callq 0x875a5
movq 0x10(%r14), %rdi
xorl %ebp, %ebp
movl $0x2, %esi
xorl %edx, %edx
xorl %ecx, %ecx
callq 0x588cb
testl %eax, %eax
je 0xb13f1
movq 0x10(%r14), %rdi
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
xorl %edx, %edx
callq 0x573f8
leaq 0x3d72b(%rip), %rsi     # 0xeeb01
movq %rbx, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x34f1f
jmp 0xb13f1
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x56b09
xorl %ebp, %ebp
movl %ebp, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0x27518
callq 0x274aa
callq 0x274e1
// File: /workspace/github_c_makefile_star2_O3/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 0xb1467
movq %rdi, %rbx
movl $0x8, %esi
callq 0x5924a
movq %rax, %r14
xorl %edi, %edi
callq 0x47917
movq %rax, (%r14)
testq %rax, %rax
je 0xb146c
leaq 0x44132(%rip), %rdx     # 0xf5572
movq %rbx, %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x57f56
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x586d6
movl $0x1, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
callq 0x27586
callq 0x2754f
// File: /workspace/github_c_makefile_star2_O3/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 0xb1506
movq %rdi, %rbx
movl $0x8, %esi
callq 0x5924a
testq %rax, %rax
je 0xb150b
movq %rax, %r14
callq 0xb0ff8
movq %rax, %rdi
callq 0x48f94
movq %rax, (%r14)
testq %rax, %rax
je 0xb1510
callq 0xb0ff8
movq (%r14), %rsi
movq %rax, %rdi
callq 0x48fc5
movq %rax, %r14
leaq 0x440b0(%rip), %rdx     # 0xf5572
movq %rbx, %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x57f56
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x586d6
movq %rbx, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x58130
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x5878b
movq %rbx, 0x10(%r14)
movl $0x1, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
callq 0x2762f
callq 0x275f6
callq 0x275bd
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O3/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 0xb15e4
movq %rdi, %rbx
callq 0x56afc
movl %eax, %ebp
leaq 0x4bf78(%rip), %rsi     # 0xfd4ad
movq %rbx, %rdi
callq 0x5a609
movq %rbx, %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x56f7b
leaq 0x3cd85(%rip), %rdx     # 0xee2d6
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x584c8
leaq 0x3c6c5(%rip), %rsi     # 0xedc2a
movq %rbx, %rdi
callq 0x5790a
leaq 0x7a(%rip), %rsi        # 0xb15ee
movq %rbx, %rdi
xorl %edx, %edx
callq 0x57d08
movq %rbx, %rdi
movl $0xfffffffd, %esi       # imm = 0xFFFFFFFD
callq 0x582b2
leaq 0x9f2de(%rip), %rdx     # 0x150870
movq %rbx, %rdi
xorl %esi, %esi
callq 0x5a9b5
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x56b09
leaq 0x4fa4b(%rip), %rsi     # 0x100ffb
leaq 0x9f2f9(%rip), %rdx     # 0x1508b0
movq %rbx, %rdi
callq 0x5a9b5
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x56b09
movq %rbx, %rdi
callq 0x56afc
cmpl %ebp, %eax
jne 0xb15e9
movl $0x1, %eax
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
callq 0x276a1
callq 0x27668
// File: /workspace/github_c_makefile_star2_O3/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 0x4be96(%rip), %rdx     # 0xfd4ad
movl $0x1, %esi
callq 0x5a67c
testq %rax, %rax
je 0xb1648
movq (%rax), %rdi
callq 0x515e4
movl %eax, %eax
cvtsi2sd %rax, %xmm0
movq %rbx, %rdi
callq 0x57718
xorl %edi, %edi
callq 0x35085
xorl %eax, %eax
popq %rbx
retq
callq 0x276da
// File: /workspace/github_c_makefile_star2_O3/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 0x4be55(%rip), %rdx     # 0xfd4ad
movl $0x1, %esi
callq 0x5a67c
testq %rax, %rax
je 0xb16a3
movq (%rax), %rdi
callq 0x5159c
movq %rax, %xmm1
punpckldq 0x2fe04(%rip), %xmm1 # xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
subpd 0x2fe0c(%rip), %xmm1    # 0xe1490
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
movq %rbx, %rdi
callq 0x57718
xorl %edi, %edi
callq 0x35085
xorl %eax, %eax
popq %rbx
retq
callq 0x27711
// File: /workspace/github_c_makefile_star2_O3/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 0x4bdf0(%rip), %rdx     # 0xfd4ad
movl $0x1, %esi
callq 0x5a67c
testq %rax, %rax
je 0xb186b
movq %rax, %r14
movq (%rax), %rdi
callq 0x5159c
testq %rax, %rax
je 0xb184a
movq %rax, %r15
xorl %r12d, %r12d
movq %rbx, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x58130
leaq 0x4ce8e(%rip), %r13     # 0xfe58b
movq %r12, %rbp
incq %r12
movq %r12, %xmm1
punpckldq 0x2fd70(%rip), %xmm1 # xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
subpd 0x2fd78(%rip), %xmm1    # 0xe1490
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
movq %rbx, %rdi
callq 0x57718
movq (%r14), %rdi
movq %rbp, %rsi
callq 0x515f3
testq %rax, %rax
je 0xb1866
movq %rax, %rbp
movq %rbx, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x58130
movq %rbx, %rdi
leaq 0x4ce1e(%rip), %rsi     # 0xfe577
callq 0x5790a
movq %rbp, %rdi
callq 0x5272a
movq %rbx, %rdi
callq 0x57718
movq %rbx, %rdi
movl $0xfffffffd, %esi       # imm = 0xFFFFFFFD
callq 0x58524
movq %rbx, %rdi
leaq 0x4cdf7(%rip), %rsi     # 0xfe57c
callq 0x5790a
movq %rbp, %rdi
callq 0x5273a
movq %rbx, %rdi
callq 0x57718
movq %rbx, %rdi
movl $0xfffffffd, %esi       # imm = 0xFFFFFFFD
callq 0x58524
movq %rbx, %rdi
leaq 0x4cdd0(%rip), %rsi     # 0xfe581
callq 0x5790a
movq %rbp, %rdi
callq 0x5274b
movq %rbx, %rdi
callq 0x57718
movq %rbx, %rdi
movl $0xfffffffd, %esi       # imm = 0xFFFFFFFD
callq 0x58524
movq %rbx, %rdi
leaq 0x4cda9(%rip), %rsi     # 0xfe586
callq 0x5790a
movq %rbp, %rdi
callq 0x5275c
movq %rbx, %rdi
callq 0x57718
movq %rbx, %rdi
movl $0xfffffffd, %esi       # imm = 0xFFFFFFFD
callq 0x58524
movq %rbx, %rdi
movq %r13, %rsi
callq 0x5790a
movq %rbp, %rdi
callq 0x5276d
movq %rax, %rdi
callq 0x4130c
movq %rbx, %rdi
movq %rax, %rsi
callq 0x875a5
movq %rbx, %rdi
movl $0xfffffffd, %esi       # imm = 0xFFFFFFFD
callq 0x58524
movq %rbx, %rdi
movl $0xfffffffd, %esi       # imm = 0xFFFFFFFD
callq 0x58524
cmpq %r12, %r15
jne 0xb16fd
jmp 0xb1852
movq %rbx, %rdi
callq 0x57704
movl $0x1, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0x27748
callq 0x2777f
// File: /workspace/github_c_makefile_star2_O3/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 0x5924a
testq %rax, %rax
je 0xb18bf
movq %rax, %r14
callq 0x514d4
movq %rax, (%r14)
leaq 0x4bc15(%rip), %rdx     # 0xfd4ad
movq %rbx, %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x57f56
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x586d6
movl $0x1, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
callq 0x277b6
// File: /workspace/github_c_makefile_star2_O3/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 0xb1990
movq %rdi, %rbx
callq 0x56afc
movl %eax, %ebp
leaq 0x4cd00(%rip), %rsi     # 0xfe5e1
movq %rbx, %rdi
callq 0x5a609
movq %rbx, %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x56f7b
leaq 0x3c9d9(%rip), %rdx     # 0xee2d6
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x584c8
leaq 0x3c319(%rip), %rsi     # 0xedc2a
movq %rbx, %rdi
callq 0x5790a
leaq 0x7a(%rip), %rsi        # 0xb199a
movq %rbx, %rdi
xorl %edx, %edx
callq 0x57d08
movq %rbx, %rdi
movl $0xfffffffd, %esi       # imm = 0xFFFFFFFD
callq 0x582b2
leaq 0x9ef92(%rip), %rdx     # 0x1508d0
movq %rbx, %rdi
xorl %esi, %esi
callq 0x5a9b5
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x56b09
leaq 0x4f69f(%rip), %rsi     # 0x100ffb
leaq 0x9ef9d(%rip), %rdx     # 0x150900
movq %rbx, %rdi
callq 0x5a9b5
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x56b09
movq %rbx, %rdi
callq 0x56afc
cmpl %ebp, %eax
jne 0xb1995
movl $0x1, %eax
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
callq 0x27824
callq 0x277ed
// File: /workspace/github_c_makefile_star2_O3/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 0x4cc17(%rip), %rdx     # 0xfe5e1
movl $0x1, %esi
callq 0x5a67c
movq %rax, %r15
leaq 0x4ba12(%rip), %rdx     # 0xfd3f0
movq %rbx, %rdi
movl $0x2, %esi
callq 0x5a67c
movq %rax, %r12
callq 0x34f04
movq %rax, %r14
movq (%r15), %rdi
movq (%r12), %rsi
movq %rax, %rdx
callq 0x51acd
testl %eax, %eax
js 0xb1a1f
movq %r14, %rdi
callq 0x35085
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 0xa7d4a
// File: /workspace/github_c_makefile_star2_O3/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 0x4cb96(%rip), %rdx     # 0xfe5e1
movl $0x1, %ebx
movl $0x1, %esi
callq 0x5a67c
movq %rax, %r12
callq 0x34f04
movq %rax, %r15
movq (%r12), %rdi
leaq 0x8(%rsp), %r12
movq %r12, %rsi
movq %rax, %rdx
callq 0x51d09
movsd (%r12), %xmm1
unpcklps 0x2f9fa(%rip), %xmm1    # xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
subpd 0x2fa02(%rip), %xmm1    # 0xe1490
movl %eax, %ebp
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
movq %r14, %rdi
callq 0x57718
testl %ebp, %ebp
js 0xb1ab2
movq %r15, %rdi
callq 0x35085
jmp 0xb1abf
movq %r14, %rdi
movq %r15, %rsi
callq 0xa7d4a
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_O3/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 0x4baca(%rip), %rdx     # 0xfd5ad
movl $0x1, %esi
callq 0x5a67c
movq %rax, %r14
movq %rbx, %rdi
movl $0x2, %esi
callq 0x5a844
movq %rax, %r15
movq %rbx, %rdi
callq 0xb1c05
movq %rax, %r12
movl $0x8, %esi
movq %rbx, %rdi
callq 0x5924a
testq %rax, %rax
je 0xb1ba3
movq %rax, %rbp
callq 0x34f04
movq %rax, %r13
movq (%r14), %rdi
movl %r15d, %esi
movq %r12, %rdx
movq %rax, %rcx
callq 0x517d0
movq %rax, (%rbp)
movq %r13, %rdi
callq 0x34fea
testb %al, %al
je 0xb1b66
movq %rbx, %rdi
movq %r13, %rsi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xa7d4a
movq %r13, %rdi
callq 0x35085
leaq 0x4ca6c(%rip), %rdx     # 0xfe5e1
movq %rbx, %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x57f56
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x586d6
movl $0x1, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0x2785b
// File: /workspace/github_c_makefile_star2_O3/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 0xb1bfb
movq %rsi, %r14
testq %rsi, %rsi
je 0xb1bfb
movq %rdi, %rbx
callq 0x56afc
movl %eax, %ebp
leaq -0x5f3ba(%rip), %rsi    # 0x52810
movq %rbx, %rdi
callq 0x57e0d
movq %rbx, %rdi
movq %r14, %rsi
callq 0x57e0d
movq %rbx, %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x58524
movq %rbx, %rdi
callq 0x56afc
cmpl %ebp, %eax
jne 0xb1c00
popq %rbx
popq %r14
popq %rbp
retq
callq 0x27892
callq 0x278c9
// File: /workspace/github_c_makefile_star2_O3/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 0xb1c77
movq %rdi, %rbx
callq 0x56afc
movl %eax, %ebp
leaq -0x5f40f(%rip), %rsi    # 0x52810
movq %rbx, %rdi
callq 0x57e0d
movq %rbx, %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x57fae
movq %rbx, %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x56f9b
cmpl $0x2, %eax
jne 0xb1c7c
movq %rbx, %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x57668
movq %rax, %r14
movq %rbx, %rdi
movl $0xfffffffe, %esi       # imm = 0xFFFFFFFE
callq 0x56b09
movq %rbx, %rdi
callq 0x56afc
cmpl %ebp, %eax
jne 0xb1c81
movq %r14, %rax
popq %rbx
popq %r14
popq %rbp
retq
callq 0x2796e
callq 0x27900
callq 0x27937
nop
// File: /workspace/github_c_makefile_star2_O3/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 0x95072
testq %rax, %rax
je 0xb1ce9
movq %rax, %r12
xorl %r14d, %r14d
movq %r13, %rdi
xorl %esi, %esi
xorl %edx, %edx
movl $0x1, %ecx
movq %r15, %r8
callq 0x95072
movq %rax, 0x8(%r12)
testq %rax, %rax
je 0xb1ce9
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_O3/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 %r14
pushq %rbx
movl %ecx, %ebx
movl %edx, %ebp
movl %esi, %r14d
movl $0x28, %edx
xorl %esi, %esi
callq 0xb1c88
testq %rax, %rax
je 0xb1d26
movq 0x8(%rax), %rcx
movslq %r14d, %rdx
movq %rdx, (%rcx)
movslq %ebp, %rdx
movq %rdx, 0x8(%rcx)
movl %ebx, 0x10(%rcx)
popq %rbx
popq %r14
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O3/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 0xb1c88
testq %rax, %rax
je 0xb1d74
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)
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O3/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 0xb1c88
testq %rax, %rax
je 0xb1db2
movq 0x8(%rax), %rcx
movq %rbx, (%rcx)
movq %r14, 0x8(%rcx)
movl 0x18(%r14), %ecx
addl 0x18(%rbx), %ecx
movl %ecx, 0x18(%rax)
addq $0x8, %rsp
popq %rbx
popq %r14
retq
// File: /workspace/github_c_makefile_star2_O3/genometools[P]genometools/src/external/tre/lib/tre-ast.c
// Function: tre_ast_new_catenation
tre_ast_node_t *
tre_ast_new_catenation(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, CATENATION, sizeof(tre_catenation_t));
  if (node == NULL)
    return NULL;
  ((tre_catenation_t *)node->obj)->left = left;
  ((tre_catenation_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 $0x1, %esi
callq 0xb1c88
testq %rax, %rax
je 0xb1ded
movq 0x8(%rax), %rcx
movq %rbx, (%rcx)
movq %r14, 0x8(%rcx)
movl 0x18(%r14), %ecx
addl 0x18(%rbx), %ecx
movl %ecx, 0x18(%rax)
addq $0x8, %rsp
popq %rbx
popq %r14
retq
nopl (%rax)