LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/gtlua/feature_index_lua.c
// Function: feature_index_lua_get_features_for_seqid
static int feature_index_lua_get_features_for_seqid(lua_State *L)
{
  GtFeatureIndex **feature_index;
  const char *seqid;
  GtArray *features;
  GtError *err;
  feature_index = check_feature_index(L, 1);
  seqid = luaL_checkstring(L, 2);
  err = gt_error_new();
  features = gt_feature_index_get_features_for_seqid(*feature_index, seqid,
                                                     err);
  if (!features)
    return gt_lua_error(L, err);
  gt_error_delete(err);
  push_features_as_table(L, features);
  gt_array_delete(features);
  return 1;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
leaq 0x533eb(%rip), %rdx     # 0xe68c7
pushq $0x1
popq %rsi
callq 0x3ae77
movq %rax, %r15
pushq $0x2
popq %rsi
movq %rbx, %rdi
xorl %edx, %edx
callq 0x3adee
movq %rax, %r12
callq 0xbff0
movq %rax, %r14
movq (%r15), %rdi
movq %r12, %rsi
movq %rax, %rdx
callq 0x16db7
testq %rax, %rax
je 0x9353f
movq %rax, %r15
movq %r14, %rdi
callq 0xc291
movq %rbx, %rdi
movq %r15, %rsi
callq 0x9388c
movq %r15, %rdi
callq 0x4c19d
pushq $0x1
popq %rax
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 0x88ba4
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/gtlua/feature_index_lua.c
// Function: feature_index_lua_get_features_for_range
static int feature_index_lua_get_features_for_range(lua_State *L)
{
  GtFeatureIndex **feature_index;
  const char *seqid;
  GtRange *range;
  GtError *err;
  bool has_seqid;
  GtArray *features;
  GT_UNUSED int had_err;

  feature_index = check_feature_index(L, 1);
  seqid = luaL_checkstring(L, 2);
  err = gt_error_new();
  if (gt_feature_index_has_seqid(*feature_index, &has_seqid, seqid, err))
    return gt_lua_error(L, err);
  gt_error_delete(err);
  luaL_argcheck(L, has_seqid, 2,
                "feature_index does not contain seqid");
  range = check_range(L, 3);
  features = gt_array_new(sizeof (GtGenomeNode*));
  err = gt_error_new();
  had_err = gt_feature_index_get_features_for_range(*feature_index, features,
                                                    seqid, range, err);
  if (had_err)
    return gt_lua_error(L, err);
  gt_error_delete(err);
  push_features_as_table(L, features);
  gt_array_delete(features);
  return 1;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rdi, %r14
leaq 0x5335a(%rip), %rdx     # 0xe68c7
pushq $0x1
popq %rbx
movl %ebx, %esi
callq 0x3ae77
movq %rax, %r15
pushq $0x2
popq %rsi
movq %r14, %rdi
xorl %edx, %edx
callq 0x3adee
movq %rax, %r12
callq 0xbff0
movq %rax, %r13
movq (%r15), %rdi
leaq 0xf(%rsp), %rsi
movq %r12, %rdx
movq %rax, %rcx
callq 0x17240
testl %eax, %eax
je 0x935b1
movq %r14, %rdi
movq %r13, %rsi
jmp 0x9361c
movq %r13, %rdi
callq 0xc291
cmpb $0x0, 0xf(%rsp)
jne 0x935d2
leaq 0x53ce6(%rip), %rdx     # 0xe72ad
pushq $0x2
popq %rsi
movq %r14, %rdi
callq 0x3ab1c
leaq 0x4b2a8(%rip), %rdx     # 0xde881
pushq $0x3
popq %rsi
movq %r14, %rdi
callq 0x3ae77
movq %rax, 0x10(%rsp)
pushq $0x8
popq %rdi
callq 0x4b380
movq %rax, %r13
callq 0xbff0
movq %rax, %rbp
movq (%r15), %rdi
movq %r13, %rsi
movq %r12, %rdx
movq 0x10(%rsp), %rcx
movq %rax, %r8
callq 0x16e42
testl %eax, %eax
je 0x93634
movq %r14, %rdi
movq %rbp, %rsi
callq 0x88ba4
movl %eax, %ebx
movl %ebx, %eax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rbp, %rdi
callq 0xc291
movq %r14, %rdi
movq %r13, %rsi
callq 0x9388c
movq %r13, %rdi
callq 0x4c19d
jmp 0x93623
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/gtlua/feature_index_lua.c
// Function: feature_index_lua_get_first_seqid
static int feature_index_lua_get_first_seqid(lua_State *L)
{
  GtFeatureIndex **feature_index;
  char *seqid;
  GtError *err;
  feature_index = check_feature_index(L, 1);
  err = gt_error_new();
  seqid = gt_feature_index_get_first_seqid(*feature_index, err);
  if (gt_error_is_set(err))
    return gt_lua_error(L, err);
  gt_error_delete(err);
  if (seqid) {
    lua_pushstring(L, seqid);
    gt_free(seqid);
  } else
    lua_pushnil(L);
  return 1;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rdi, %rbx
leaq 0x53267(%rip), %rdx     # 0xe68c7
pushq $0x1
popq %rsi
callq 0x3ae77
movq %rax, %r14
callq 0xbff0
movq %rax, %r15
movq (%r14), %rdi
movq %rax, %rsi
callq 0x16f57
movq %rax, %r14
movq %r15, %rdi
callq 0xc103
testb %al, %al
je 0x9369d
movq %rbx, %rdi
movq %r15, %rsi
popq %rbx
popq %r14
popq %r15
jmp 0x88ba4
movq %r15, %rdi
callq 0xc291
movq %rbx, %rdi
testq %r14, %r14
je 0x936cb
movq %r14, %rsi
callq 0x38431
leaq 0x53ae2(%rip), %rsi     # 0xe719e
movq %r14, %rdi
movl $0xb5, %edx
callq 0xd249
jmp 0x936d0
callq 0x3824a
pushq $0x1
popq %rax
popq %rbx
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/gtlua/feature_index_lua.c
// Function: feature_index_lua_get_seqids
static int feature_index_lua_get_seqids(lua_State *L)
{
  GtFeatureIndex **feature_index;
  GtStrArray *seqids;
  GtError *err;
  feature_index = check_feature_index(L, 1);
  err = gt_error_new();
  seqids = gt_feature_index_get_seqids(*feature_index, err);
  if (!seqids)
    return gt_lua_error(L, err);
  gt_error_delete(err);
  /* push table containing sequence ids onto the stack */
  gt_lua_push_strarray_as_table(L, seqids);
  gt_str_array_delete(seqids);
  return 1;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rdi, %rbx
leaq 0x531df(%rip), %rdx     # 0xe68c7
pushq $0x1
popq %rsi
callq 0x3ae77
movq %rax, %r15
callq 0xbff0
movq %rax, %r14
movq (%r15), %rdi
movq %rax, %rsi
callq 0x1708b
testq %rax, %rax
je 0x93732
movq %rax, %r15
movq %r14, %rdi
callq 0xc291
movq %rbx, %rdi
movq %r15, %rsi
callq 0x88a2d
movq %r15, %rdi
callq 0x1583a
pushq $0x1
popq %rax
popq %rbx
popq %r14
popq %r15
retq
movq %rbx, %rdi
movq %r14, %rsi
popq %rbx
popq %r14
popq %r15
jmp 0x88ba4
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/gtlua/feature_index_lua.c
// Function: feature_index_lua_get_range_for_seqid
static int feature_index_lua_get_range_for_seqid(lua_State *L)
{
  GtFeatureIndex **feature_index;
  const char *seqid;
  GtError *err;
  GtRange range;
  bool has_seqid;
  feature_index = check_feature_index(L, 1);
  seqid = luaL_checkstring(L, 2);
  err = gt_error_new();
  if (gt_feature_index_has_seqid(*feature_index, &has_seqid, seqid, err))
    return gt_lua_error(L, err);
  gt_error_delete(err);
  luaL_argcheck(L, has_seqid, 2,
                "feature_index does not contain seqid");
  err = gt_error_new();
  if (gt_feature_index_get_range_for_seqid(*feature_index, &range, seqid, err))
    return gt_lua_error(L, err);
  gt_error_delete(err);
  return gt_lua_range_push(L, range);
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rdi, %rbx
leaq 0x53170(%rip), %rdx     # 0xe68c7
pushq $0x1
popq %rsi
callq 0x3ae77
movq %rax, %r14
pushq $0x2
popq %rsi
movq %rbx, %rdi
xorl %edx, %edx
callq 0x3adee
movq %rax, %r15
callq 0xbff0
movq %rax, %r12
movq (%r14), %rdi
leaq 0x7(%rsp), %rsi
movq %r15, %rdx
movq %rax, %rcx
callq 0x17240
testl %eax, %eax
jne 0x937d1
movq %r12, %rdi
callq 0xc291
cmpb $0x0, 0x7(%rsp)
jne 0x937b2
leaq 0x53b06(%rip), %rdx     # 0xe72ad
pushq $0x2
popq %rsi
movq %rbx, %rdi
callq 0x3ab1c
callq 0xbff0
movq %rax, %r12
movq (%r14), %rdi
leaq 0x8(%rsp), %rsi
movq %r15, %rdx
movq %rax, %rcx
callq 0x1710c
testl %eax, %eax
je 0x937e8
movq %rbx, %rdi
movq %r12, %rsi
callq 0x88ba4
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
movq %r12, %rdi
callq 0xc291
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq %rbx, %rdi
callq 0x69990
jmp 0x937dc
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/gtlua/feature_index_lua.c
// Function: feature_index_lua_has_seqid
static int feature_index_lua_has_seqid(lua_State *L)
{
  GtFeatureIndex **feature_index;
  bool has_seqid;
  const char *seqid;
  GtError *err;
  int had_err = 0;
  feature_index = check_feature_index(L, 1);
  seqid = luaL_checkstring(L, 2);
  err = gt_error_new();
  had_err = gt_feature_index_has_seqid(*feature_index, &has_seqid, seqid, err);
  if (had_err)
    return gt_lua_error(L, err);
  gt_error_delete(err);
  lua_pushboolean(L, has_seqid);
  return 1;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x10, %rsp
movq %rdi, %r14
leaq 0x530ac(%rip), %rdx     # 0xe68c7
pushq $0x1
popq %rbx
movl %ebx, %esi
callq 0x3ae77
movq %rax, %r12
pushq $0x2
popq %rsi
movq %r14, %rdi
xorl %edx, %edx
callq 0x3adee
movq %rax, %r13
callq 0xbff0
movq %rax, %r15
movq (%r12), %rdi
leaq 0xf(%rsp), %rsi
movq %r13, %rdx
movq %rax, %rcx
callq 0x17240
testl %eax, %eax
je 0x93867
movq %r14, %rdi
movq %r15, %rsi
callq 0x88ba4
movl %eax, %ebx
jmp 0x9387c
movq %r15, %rdi
callq 0xc291
movzbl 0xf(%rsp), %esi
movq %r14, %rdi
callq 0x388fa
movl %ebx, %eax
addq $0x10, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/gtlua/feature_index_lua.c
// Function: push_features_as_table
static void push_features_as_table(lua_State *L, GtArray *features)
{
  GtUword i;
  if (features && gt_array_size(features)) {
    /* push table containing feature references onto the stack */
    lua_newtable(L);
    for (i = 0; i < gt_array_size(features); i++) {
      lua_pushinteger(L, i+1); /* in Lua we index from 1 on */
      gt_lua_genome_node_push(L, gt_genome_node_ref(*(GtGenomeNode**)
                                                  gt_array_get(features, i)));
      lua_rawset(L, -3);
    }
  }
  else
    lua_pushnil(L);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movq %rdi, %rbx
testq %rsi, %rsi
je 0x93907
movq %rsi, %r14
movq %rsi, %rdi
callq 0x4b988
testq %rax, %rax
je 0x93907
xorl %r15d, %r15d
movq %rbx, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x38be5
pushq $-0x3
popq %rbp
movq %r14, %rdi
callq 0x4b988
cmpq %rax, %r15
jae 0x93917
leaq 0x1(%r15), %r12
movq %rbx, %rdi
movq %r12, %rsi
callq 0x38270
movq %r14, %rdi
movq %r15, %rsi
callq 0x4b48e
movq (%rax), %rdi
callq 0x1bec8
movq %rbx, %rdi
movq %rax, %rsi
callq 0x67934
movq %rbx, %rdi
movl %ebp, %esi
callq 0x38f9d
movq %r12, %r15
jmp 0x938be
movq %rbx, %rdi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x3824a
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/gtlua/feature_index_lua.c
// Function: feature_index_memory_lua_new
static int feature_index_memory_lua_new(lua_State *L)
{
  GtFeatureIndex **feature_index;
  feature_index = lua_newuserdata(L, sizeof (GtFeatureIndex*));
  gt_assert(feature_index);
  *feature_index = gt_feature_index_memory_new();
  luaL_getmetatable(L, FEATURE_INDEX_METATABLE);
  lua_setmetatable(L, -2);
  return 1;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
pushq $0x8
popq %rsi
callq 0x39c01
testq %rax, %rax
je 0x93969
movq %rax, %r14
callq 0x18544
movq %rax, (%r14)
leaq 0x52f81(%rip), %rdx     # 0xe68c7
movq %rbx, %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x38a63
pushq $-0x2
popq %rsi
movq %rbx, %rdi
callq 0x3914f
pushq $0x1
popq %rax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
movq 0x9a648(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x366ec(%rip), %rsi     # 0xca066
leaq 0x52f52(%rip), %rdx     # 0xe68d3
leaq 0x53963(%rip), %rcx     # 0xe72eb
leaq 0x5380f(%rip), %r8      # 0xe719e
pushq $0x21
popq %r9
xorl %eax, %eax
callq 0xb8c0
callq 0xb300
nop
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/gtlua/feature_node_iterator_lua.c
// Function: gt_lua_open_feature_node_iterator
int gt_lua_open_feature_node_iterator(lua_State *L)
{
#ifndef NDEBUG
  int stack_size;
#endif
  gt_assert(L);
#ifndef NDEBUG
  stack_size = lua_gettop(L);
#endif
  luaL_newmetatable(L, GENOME_NODE_ITERATOR_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, feature_node_iterator_lua_delete);
  lua_settable(L, -3);
  /* register functions */
  luaL_register(L, NULL, feature_node_iterator_lib_m);
  lua_pop(L, 1);
  luaL_register(L, "gt", feature_node_iterator_lib_f);
  lua_pop(L, 1);
  gt_assert(lua_gettop(L) == stack_size);
  return 1;
}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
testq %rdi, %rdi
je 0x93a63
movq %rdi, %rbx
callq 0x377ed
movl %eax, %ebp
leaq 0x53992(%rip), %rsi     # 0xe7350
movq %rbx, %rdi
callq 0x3ae16
pushq $-0x1
popq %rsi
movq %rbx, %rdi
callq 0x37b39
leaq 0x438a6(%rip), %rdx     # 0xd727e
pushq $-0x2
popq %r14
movq %rbx, %rdi
movl %r14d, %esi
callq 0x38f41
leaq 0x431e4(%rip), %rsi     # 0xd6bd2
movq %rbx, %rdi
callq 0x38431
leaq 0xc6(%rip), %rsi        # 0x93ac3
movq %rbx, %rdi
xorl %edx, %edx
callq 0x38814
pushq $-0x3
popq %rsi
movq %rbx, %rdi
callq 0x38d5e
leaq 0x99cf7(%rip), %rdx     # 0x12d710
movq %rbx, %rdi
xorl %esi, %esi
callq 0x3b11b
movq %rbx, %rdi
movl %r14d, %esi
callq 0x377fa
leaq 0x56842(%rip), %rsi     # 0xea277
leaq 0x99cf4(%rip), %rdx     # 0x12d730
movq %rbx, %rdi
callq 0x3b11b
movq %rbx, %rdi
movl %r14d, %esi
callq 0x377fa
movq %rbx, %rdi
callq 0x377ed
cmpl %ebp, %eax
jne 0x93a8d
pushq $0x1
popq %rax
popq %rbx
popq %r14
popq %rbp
retq
movq 0x9a54e(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x365f2(%rip), %rsi     # 0xca066
leaq 0x42f7b(%rip), %rdx     # 0xd69f6
leaq 0x53886(%rip), %rcx     # 0xe7308
leaq 0x538a1(%rip), %r8      # 0xe732a
pushq $0x5d
jmp 0x93ab5
movq 0x9a524(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x365c8(%rip), %rsi     # 0xca066
leaq 0x4a336(%rip), %rdx     # 0xddddb
leaq 0x5385c(%rip), %rcx     # 0xe7308
leaq 0x53877(%rip), %r8      # 0xe732a
pushq $0x6e
popq %r9
xorl %eax, %eax
callq 0xb8c0
callq 0xb300
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/gtlua/feature_node_iterator_lua.c
// Function: feature_node_iterator_lua_next
static int feature_node_iterator_lua_next(lua_State *L)
{
  GtFeatureNodeIterator **fni;
  GtFeatureNode *fn;
  fni = check_gt_feature_node_iterator(L, 1);
  fn = gt_feature_node_iterator_next(*fni);
  if (fn)
    gt_lua_genome_node_push(L, gt_genome_node_ref((GtGenomeNode*) fn));
  else
    lua_pushnil(L);
  return 1;
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
leaq 0x53866(%rip), %rdx     # 0xe7350
pushq $0x1
popq %rsi
callq 0x3ae77
movq (%rax), %rdi
callq 0x1bb1e
testq %rax, %rax
je 0x93b14
movq %rax, %rdi
callq 0x1bec8
movq %rbx, %rdi
movq %rax, %rsi
callq 0x67934
jmp 0x93b1c
movq %rbx, %rdi
callq 0x3824a
pushq $0x1
popq %rax
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O2/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 0x93b86
movq %rdi, %rbx
leaq 0x4ac52(%rip), %rdx     # 0xde787
pushq $0x1
popq %rsi
callq 0x3ae77
movq %rax, %r14
pushq $0x8
popq %rsi
movq %rbx, %rdi
callq 0x39c01
testq %rax, %rax
je 0x93bb0
movq %rax, %r15
movq (%r14), %rdi
callq 0x1b8e0
movq %rax, (%r15)
leaq 0x537eb(%rip), %rdx     # 0xe7350
movq %rbx, %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x38a63
pushq $-0x2
popq %rsi
movq %rbx, %rdi
callq 0x3914f
pushq $0x1
popq %rax
popq %rbx
popq %r14
popq %r15
retq
movq 0x9a42b(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x364cf(%rip), %rsi     # 0xca066
leaq 0x42e58(%rip), %rdx     # 0xd69f6
leaq 0x537cd(%rip), %rcx     # 0xe7372
leaq 0x5377e(%rip), %r8      # 0xe732a
pushq $0x20
jmp 0x93bd8
movq 0x9a401(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x364a5(%rip), %rsi     # 0xca066
leaq 0x3acb8(%rip), %rdx     # 0xce880
leaq 0x537a3(%rip), %rcx     # 0xe7372
leaq 0x53754(%rip), %r8      # 0xe732a
pushq $0x23
popq %r9
xorl %eax, %eax
callq 0xb8c0
callq 0xb300
// File: /workspace/github_c_makefile_star2_O2/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 0x93c4b
movq %rdi, %rbx
leaq 0x4ab8d(%rip), %rdx     # 0xde787
pushq $0x1
popq %rsi
callq 0x3ae77
movq %rax, %r14
pushq $0x8
popq %rsi
movq %rbx, %rdi
callq 0x39c01
testq %rax, %rax
je 0x93c75
movq %rax, %r15
movq (%r14), %rdi
callq 0x1ba16
movq %rax, (%r15)
leaq 0x53726(%rip), %rdx     # 0xe7350
movq %rbx, %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x38a63
pushq $-0x2
popq %rsi
movq %rbx, %rdi
callq 0x3914f
pushq $0x1
popq %rax
popq %rbx
popq %r14
popq %r15
retq
movq 0x9a366(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x3640a(%rip), %rsi     # 0xca066
leaq 0x42d93(%rip), %rdx     # 0xd69f6
leaq 0x53726(%rip), %rcx     # 0xe7390
leaq 0x536b9(%rip), %r8      # 0xe732a
pushq $0x2e
jmp 0x93c9d
movq 0x9a33c(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x363e0(%rip), %rsi     # 0xca066
leaq 0x3abf3(%rip), %rdx     # 0xce880
leaq 0x536fc(%rip), %rcx     # 0xe7390
leaq 0x5368f(%rip), %r8      # 0xe732a
pushq $0x31
popq %r9
xorl %eax, %eax
callq 0xb8c0
callq 0xb300
nop
// File: /workspace/github_c_makefile_star2_O2/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 0x93cf5
movq %rdi, %rbx
callq 0x377ed
movl %eax, %ebp
leaq 0x565b2(%rip), %rsi     # 0xea277
leaq 0x99a94(%rip), %rdx     # 0x12d760
movq %rbx, %rdi
callq 0x3b11b
pushq $-0x2
popq %rsi
movq %rbx, %rdi
callq 0x377fa
movq %rbx, %rdi
callq 0x377ed
cmpl %ebp, %eax
jne 0x93d1f
pushq $0x1
popq %rax
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
movq 0x9a2bc(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x36360(%rip), %rsi     # 0xca066
leaq 0x42ce9(%rip), %rdx     # 0xd69f6
leaq 0x536a1(%rip), %rcx     # 0xe73b5
leaq 0x536b5(%rip), %r8      # 0xe73d0
pushq $0x31
jmp 0x93d47
movq 0x9a292(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x36336(%rip), %rsi     # 0xca066
leaq 0x4a0a4(%rip), %rdx     # 0xddddb
leaq 0x53677(%rip), %rcx     # 0xe73b5
leaq 0x5368b(%rip), %r8      # 0xe73d0
pushq $0x37
popq %r9
xorl %eax, %eax
callq 0xb8c0
callq 0xb300
// File: /workspace/github_c_makefile_star2_O2/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 %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movq %rdi, %rbx
pushq $0x8
popq %rsi
callq 0x39c01
testq %rax, %rax
je 0x93dd1
movq %rax, %r14
leaq 0x4b281(%rip), %r15     # 0xdeff8
pushq $0x1
popq %rbp
movq %rbx, %rdi
movl %ebp, %esi
movq %r15, %rdx
callq 0x3ae77
movq %rax, %r12
leaq 0x52b36(%rip), %rdx     # 0xe68c7
pushq $0x2
popq %rsi
movq %rbx, %rdi
callq 0x3ae77
movq (%r12), %rdi
movq (%rax), %rsi
callq 0xc4438
movq %rax, (%r14)
movq %rbx, %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
movq %r15, %rdx
callq 0x38a63
pushq $-0x2
popq %rsi
movq %rbx, %rdi
callq 0x3914f
movl %ebp, %eax
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movq 0x9a1e0(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x36284(%rip), %rsi     # 0xca066
leaq 0x535d8(%rip), %rdx     # 0xe73c1
leaq 0x53612(%rip), %rcx     # 0xe7402
leaq 0x535d9(%rip), %r8      # 0xe73d0
pushq $0x1e
popq %r9
xorl %eax, %eax
callq 0xb8c0
callq 0xb300
nop
// File: /workspace/github_c_makefile_star2_O2/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 0x93e51
movq %rdi, %rbx
callq 0x377ed
movl %eax, %ebp
leaq 0x56456(%rip), %rsi     # 0xea277
leaq 0x99958(%rip), %rdx     # 0x12d780
movq %rbx, %rdi
callq 0x3b11b
pushq $-0x2
popq %rsi
movq %rbx, %rdi
callq 0x377fa
movq %rbx, %rdi
callq 0x377ed
cmpl %ebp, %eax
jne 0x93e7b
pushq $0x1
popq %rax
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
movq 0x9a160(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x36204(%rip), %rsi     # 0xca066
leaq 0x42b8d(%rip), %rdx     # 0xd69f6
leaq 0x535a9(%rip), %rcx     # 0xe7419
leaq 0x535be(%rip), %r8      # 0xe7435
pushq $0x30
jmp 0x93ea3
movq 0x9a136(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x361da(%rip), %rsi     # 0xca066
leaq 0x49f48(%rip), %rdx     # 0xddddb
leaq 0x5357f(%rip), %rcx     # 0xe7419
leaq 0x53594(%rip), %r8      # 0xe7435
pushq $0x36
popq %r9
xorl %eax, %eax
callq 0xb8c0
callq 0xb300
// File: /workspace/github_c_makefile_star2_O2/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 %rbp
pushq %r14
pushq %rbx
movq %rdi, %rbx
pushq $0x8
popq %rsi
callq 0x39c01
testq %rax, %rax
je 0x93f0d
movq %rax, %r14
leaq 0x529f8(%rip), %rdx     # 0xe68c7
pushq $0x1
popq %rbp
movq %rbx, %rdi
movl %ebp, %esi
callq 0x3ae77
movq (%rax), %rdi
callq 0x1be4d
movq %rax, (%r14)
leaq 0x4a9e4(%rip), %rdx     # 0xde8d2
movq %rbx, %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x38a63
pushq $-0x2
popq %rsi
movq %rbx, %rdi
callq 0x3914f
movl %ebp, %eax
popq %rbx
popq %r14
popq %rbp
retq
movq 0x9a0a4(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x36148(%rip), %rsi     # 0xca066
leaq 0x53500(%rip), %rdx     # 0xe7425
leaq 0x53529(%rip), %rcx     # 0xe7455
leaq 0x53502(%rip), %r8      # 0xe7435
pushq $0x1e
popq %r9
xorl %eax, %eax
callq 0xb8c0
callq 0xb300
nop
// File: /workspace/github_c_makefile_star2_O2/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 0x4f21f
cmpq $0x0, 0x9be0e(%rip)     # 0x12fd60
jne 0x93f6c
leaq 0x1f(%rip), %rdx        # 0x93f7a
pushq $0x28
popq %rdi
xorl %esi, %esi
callq 0x25a78
movq %rax, 0x9bdf4(%rip)     # 0x12fd60
callq 0x4f266
movq 0x9bde8(%rip), %rax     # 0x12fd60
popq %rcx
retq
// File: /workspace/github_c_makefile_star2_O2/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 %r14
pushq %rbx
testq %rdi, %rdi
je 0x94243
movq %rdi, %rbx
callq 0x377ed
movl %eax, %ebp
leaq 0x4ae97(%rip), %rsi     # 0xdeff8
movq %rbx, %rdi
callq 0x3ae16
leaq 0x42a62(%rip), %rsi     # 0xd6bd2
movq %rbx, %rdi
callq 0x38431
leaq 0x12a(%rip), %rsi       # 0x942a9
movq %rbx, %rdi
xorl %edx, %edx
callq 0x38814
pushq $-0x3
popq %r14
movq %rbx, %rdi
movl %r14d, %esi
callq 0x38d5e
leaq 0x430df(%rip), %rsi     # 0xd727e
movq %rbx, %rdi
callq 0x38431
leaq 0x117(%rip), %rsi       # 0x942c5
movq %rbx, %rdi
xorl %edx, %edx
callq 0x38814
movq %rbx, %rdi
movl %r14d, %esi
callq 0x38d5e
leaq 0x430bc(%rip), %rsi     # 0xd7286
movq %rbx, %rdi
callq 0x38431
leaq 0x155(%rip), %rsi       # 0x9432e
movq %rbx, %rdi
xorl %edx, %edx
callq 0x38814
movq %rbx, %rdi
movl %r14d, %esi
callq 0x38d5e
leaq 0x995ab(%rip), %rdx     # 0x12d7a0
movq %rbx, %rdi
xorl %esi, %esi
callq 0x3b11b
pushq $-0x2
popq %r14
movq %rbx, %rdi
movl %r14d, %esi
callq 0x377fa
leaq 0x56062(%rip), %rsi     # 0xea277
leaq 0x995a4(%rip), %rdx     # 0x12d7c0
movq %rbx, %rdi
callq 0x3b11b
movq %rbx, %rdi
movl %r14d, %esi
callq 0x377fa
movq %rbx, %rdi
callq 0x377ed
cmpl %ebp, %eax
jne 0x94271
pushq $0x1
popq %rax
popq %rbx
popq %r14
popq %rbp
retq
movq 0x99d6e(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x35e12(%rip), %rsi     # 0xca066
leaq 0x4279b(%rip), %rdx     # 0xd69f6
leaq 0x5320b(%rip), %rcx     # 0xe746d
leaq 0x5321e(%rip), %r8      # 0xe7487
movl $0x129, %r9d            # imm = 0x129
jmp 0x9429d
movq 0x99d40(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x35de4(%rip), %rsi     # 0xca066
leaq 0x49b52(%rip), %rdx     # 0xddddb
leaq 0x531dd(%rip), %rcx     # 0xe746d
leaq 0x531f0(%rip), %r8      # 0xe7487
movl $0x140, %r9d            # imm = 0x140
xorl %eax, %eax
callq 0xb8c0
callq 0xb300
// File: /workspace/github_c_makefile_star2_O2/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 %rbp
pushq %rbx
pushq %rax
movq %rdi, %rbx
pushq $-0x2
popq %rbp
movl %ebp, %esi
callq 0x38d0a
movq %rbx, %rdi
movl %ebp, %esi
callq 0x37b39
movq %rbx, %rdi
movl %ebp, %esi
callq 0x38abb
pushq $-0x1
popq %rsi
movq %rbx, %rdi
callq 0x37b59
testl %eax, %eax
jg 0x94324
pushq $-0x3
popq %rsi
movq %rbx, %rdi
callq 0x377fa
pushq $-0x2
popq %rbp
movq %rbx, %rdi
movl %ebp, %esi
callq 0x38cb7
movq %rbx, %rdi
movl %ebp, %esi
callq 0x37b39
movq %rbx, %rdi
movl %ebp, %esi
callq 0x38abb
pushq $0x1
popq %rax
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/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 %rbp
pushq %rbx
pushq %rax
movq %rdi, %rbx
pushq $-0x3
popq %rbp
movl %ebp, %esi
callq 0x38d0a
movq %rbx, %rdi
movl %ebp, %esi
callq 0x37b39
movq %rbx, %rdi
movl %ebp, %esi
callq 0x37b39
movq %rbx, %rdi
movl %ebp, %esi
callq 0x38f9d
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/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 %r12
pushq %rbx
pushq %rax
movq %rdi, %r14
leaq 0x4ac81(%rip), %rdx     # 0xdeff8
pushq $0x1
popq %rbx
movl %ebx, %esi
callq 0x3ae77
movq %rax, %r12
callq 0xbff0
movq %rax, %r15
movq (%r12), %rdi
movq %rsp, %rsi
movq %rax, %rdx
callq 0x25c62
testl %eax, %eax
je 0x943ae
movq %r14, %rdi
movq %r15, %rsi
callq 0x88ba4
movl %eax, %ebx
jmp 0x943ce
movq (%rsp), %rsi
movq %r14, %rdi
testq %rsi, %rsi
je 0x943c1
callq 0x67934
jmp 0x943c6
callq 0x3824a
movq %r15, %rdi
callq 0xc291
movl %ebx, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O2/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 %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
testq %rdi, %rdi
je 0x94485
movq %rdi, %rbx
pushq $0x1
popq %rbp
movl %ebp, %esi
callq 0x377fa
movq %rbx, %rdi
movl %ebp, %esi
callq 0x37b59
testl %eax, %eax
je 0x94437
pushq $0x1
popq %rsi
movq %rbx, %rdi
xorl %edx, %edx
callq 0x3adee
movq %rax, %r14
movq %rax, %rdi
callq 0x54940
testb %al, %al
jne 0x9443a
leaq 0x53194(%rip), %rdx     # 0xe75be
pushq $0x1
popq %rsi
movq %rbx, %rdi
callq 0x3ab1c
jmp 0x9443a
xorl %r14d, %r14d
pushq $0x8
popq %rsi
movq %rbx, %rdi
callq 0x39c01
movq %rax, %r15
movq %r14, %rdi
callq 0x1d9e3
movq %rax, (%r15)
testq %rax, %rax
je 0x944af
leaq 0x4ab99(%rip), %rdx     # 0xdeff8
movq %rbx, %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x38a63
pushq $-0x2
popq %rsi
movq %rbx, %rdi
callq 0x3914f
pushq $0x1
popq %rax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq 0x99b2c(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x35bd0(%rip), %rsi     # 0xca066
leaq 0x42559(%rip), %rdx     # 0xd69f6
leaq 0x530fc(%rip), %rcx     # 0xe75a0
leaq 0x52fdc(%rip), %r8      # 0xe7487
pushq $0x23
jmp 0x944d7
movq 0x99b02(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x35ba6(%rip), %rsi     # 0xca066
leaq 0x5310b(%rip), %rdx     # 0xe75d2
leaq 0x530d2(%rip), %rcx     # 0xe75a0
leaq 0x52fb2(%rip), %r8      # 0xe7487
pushq $0x2d
popq %r9
xorl %eax, %eax
callq 0xb8c0
callq 0xb300
// File: /workspace/github_c_makefile_star2_O2/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 %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
testq %rdi, %rdi
je 0x945ff
movq %rdi, %rbx
leaq 0x4aad9(%rip), %rdx     # 0xdeff8
pushq $0x1
popq %rsi
callq 0x3ae77
movq %rax, %r15
pushq $0x2
popq %rbp
movq %rbx, %rdi
movl %ebp, %esi
callq 0x377fa
movq %rbx, %rdi
movl %ebp, %esi
callq 0x37b59
testl %eax, %eax
je 0x94579
pushq $0x2
popq %rsi
movq %rbx, %rdi
xorl %edx, %edx
callq 0x3adee
movq %rax, %r12
callq 0xbff0
movq %rax, %r14
leaq 0x400e5(%rip), %rsi     # 0xd4649
movq %r12, %rdi
movq %rax, %rdx
callq 0x53cad
testq %rax, %rax
je 0x945e6
movq %rax, %r12
jmp 0x9457f
xorl %r14d, %r14d
xorl %r12d, %r12d
pushq $0x8
popq %rsi
movq %rbx, %rdi
callq 0x39c01
movq %rax, %r13
movq (%r15), %rdi
movq %r12, %rsi
callq 0xc4553
movq %rax, (%r13)
testq %rax, %rax
je 0x94629
leaq 0x4aa4c(%rip), %rdx     # 0xdeff8
movq %rbx, %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x38a63
pushq $-0x2
popq %rsi
movq %rbx, %rdi
callq 0x3914f
movq %r12, %rdi
callq 0x548ae
movq %r14, %rdi
callq 0xc291
pushq $0x1
popq %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rbx, %rdi
movq %r14, %rsi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x88ba4
movq 0x999b2(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x35a56(%rip), %rsi     # 0xca066
leaq 0x423df(%rip), %rdx     # 0xd69f6
leaq 0x53010(%rip), %rcx     # 0xe762e
leaq 0x52e62(%rip), %r8      # 0xe7487
pushq $0x38
jmp 0x94651
movq 0x99988(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x35a2c(%rip), %rsi     # 0xca066
leaq 0x53005(%rip), %rdx     # 0xe7646
leaq 0x52fe6(%rip), %rcx     # 0xe762e
leaq 0x52e38(%rip), %r8      # 0xe7487
pushq $0x45
popq %r9
xorl %eax, %eax
callq 0xb8c0
callq 0xb300
// File: /workspace/github_c_makefile_star2_O2/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 0x948a2
movl %esi, %ebp
movq %rdi, %rbx
pushq $0x8
popq %rsi
callq 0x39c01
testq %rax, %rax
je 0x948d0
movq %rax, %r14
callq 0x93f44
movzbl %bpl, %esi
movq %rax, %rdi
callq 0x25adf
movq %rax, (%r14)
testq %rax, %rax
je 0x948fe
callq 0x93f44
movq (%r14), %rsi
movq %rax, %rdi
callq 0x25ec1
movq %rax, %r14
leaq 0x4a7d6(%rip), %rdx     # 0xdeff8
movq %rbx, %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x38a63
pushq $-0x2
popq %rbp
movq %rbx, %rdi
movl %ebp, %esi
callq 0x3914f
movq %rbx, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x38be5
movq %rbx, %rdi
movl %ebp, %esi
callq 0x391e9
movq %rbx, 0x18(%r14)
leaq 0x52c5f(%rip), %rsi     # 0xe74bc
movq %rbx, %rdi
callq 0x38431
leaq 0xca(%rip), %rsi        # 0x94936
movq %rbx, %rdi
xorl %edx, %edx
callq 0x38814
pushq $-0x3
popq %rsi
movq %rbx, %rdi
callq 0x38d5e
pushq $-0x1
popq %rsi
movq %rbx, %rdi
callq 0x37b39
movq %rbx, %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x3b628
movl %eax, 0x20(%r14)
popq %rbx
popq %r14
popq %rbp
retq
movq 0x9970f(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x357b3(%rip), %rsi     # 0xca066
leaq 0x4213c(%rip), %rdx     # 0xd69f6
leaq 0x52d15(%rip), %rcx     # 0xe75d6
leaq 0x52bbf(%rip), %r8      # 0xe7487
movl $0xce, %r9d
jmp 0x9492a
movq 0x996e1(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x35785(%rip), %rsi     # 0xca066
leaq 0x52d0d(%rip), %rdx     # 0xe75f5
leaq 0x52ce7(%rip), %rcx     # 0xe75d6
leaq 0x52b91(%rip), %r8      # 0xe7487
movl $0xd1, %r9d
jmp 0x9492a
movq 0x996b3(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x35757(%rip), %rsi     # 0xca066
leaq 0x52cde(%rip), %rdx     # 0xe75f4
leaq 0x52cb9(%rip), %rcx     # 0xe75d6
leaq 0x52b63(%rip), %r8      # 0xe7487
movl $0xd3, %r9d
xorl %eax, %eax
callq 0xb8c0
callq 0xb300
// File: /workspace/github_c_makefile_star2_O2/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 0x4f21f
cmpq $0x0, 0x9b3f2(%rip)     # 0x12fd68
jne 0x949bf
leaq 0x8a(%rip), %rax        # 0x94a09
movq %rax, (%rsp)
leaq 0x43(%rip), %rdx        # 0x949cd
leaq 0x4b(%rip), %rcx        # 0x949dc
leaq 0x53(%rip), %r8         # 0x949eb
leaq 0x5b(%rip), %r9         # 0x949fa
pushq $0x18
popq %rdi
xorl %esi, %esi
callq 0x25f10
movq %rax, 0x9b3b8(%rip)     # 0x12fd68
leaq 0x61(%rip), %rsi        # 0x94a18
movq %rax, %rdi
callq 0x25f9f
callq 0x4f266
movq 0x9b39d(%rip), %rax     # 0x12fd68
popq %rcx
retq
// File: /workspace/github_c_makefile_star2_O2/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 %r14
pushq %rbx
testq %rdi, %rdi
je 0x94b16
movq %rdi, %rbx
callq 0x377ed
movl %eax, %ebp
leaq 0x49e8d(%rip), %rsi     # 0xde8d2
movq %rbx, %rdi
callq 0x3ae16
leaq 0x4217e(%rip), %rsi     # 0xd6bd2
movq %rbx, %rdi
callq 0x38431
leaq 0x119(%rip), %rsi       # 0x94b7c
movq %rbx, %rdi
xorl %edx, %edx
callq 0x38814
pushq $-0x3
popq %r14
movq %rbx, %rdi
movl %r14d, %esi
callq 0x38d5e
leaq 0x427fb(%rip), %rsi     # 0xd727e
movq %rbx, %rdi
callq 0x38431
leaq 0x106(%rip), %rsi       # 0x94b98
movq %rbx, %rdi
xorl %edx, %edx
callq 0x38814
movq %rbx, %rdi
movl %r14d, %esi
callq 0x38d5e
leaq 0x427d8(%rip), %rsi     # 0xd7286
movq %rbx, %rdi
callq 0x38431
leaq 0x144(%rip), %rsi       # 0x94c01
movq %rbx, %rdi
xorl %edx, %edx
callq 0x38814
movq %rbx, %rdi
movl %r14d, %esi
callq 0x38d5e
pushq $-0x2
popq %r14
movq %rbx, %rdi
movl %r14d, %esi
callq 0x377fa
leaq 0x5578f(%rip), %rsi     # 0xea277
leaq 0x98d31(%rip), %rdx     # 0x12d820
movq %rbx, %rdi
callq 0x3b11b
movq %rbx, %rdi
movl %r14d, %esi
callq 0x377fa
movq %rbx, %rdi
callq 0x377ed
cmpl %ebp, %eax
jne 0x94b44
pushq $0x1
popq %rax
popq %rbx
popq %r14
popq %rbp
retq
movq 0x9949b(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x3553f(%rip), %rsi     # 0xca066
leaq 0x41ec8(%rip), %rdx     # 0xd69f6
leaq 0x52b3f(%rip), %rcx     # 0xe7674
leaq 0x52b53(%rip), %r8      # 0xe768f
movl $0xdd, %r9d
jmp 0x94b70
movq 0x9946d(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x35511(%rip), %rsi     # 0xca066
leaq 0x4927f(%rip), %rdx     # 0xddddb
leaq 0x52b11(%rip), %rcx     # 0xe7674
leaq 0x52b25(%rip), %r8      # 0xe768f
movl $0xf2, %r9d
xorl %eax, %eax
callq 0xb8c0
callq 0xb300
// File: /workspace/github_c_makefile_star2_O2/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 %rbp
pushq %rbx
pushq %rax
movq %rdi, %rbx
pushq $-0x2
popq %rbp
movl %ebp, %esi
callq 0x38d0a
movq %rbx, %rdi
movl %ebp, %esi
callq 0x37b39
movq %rbx, %rdi
movl %ebp, %esi
callq 0x38abb
pushq $-0x1
popq %rsi
movq %rbx, %rdi
callq 0x37b59
testl %eax, %eax
jg 0x94bf7
pushq $-0x3
popq %rsi
movq %rbx, %rdi
callq 0x377fa
pushq $-0x2
popq %rbp
movq %rbx, %rdi
movl %ebp, %esi
callq 0x38cb7
movq %rbx, %rdi
movl %ebp, %esi
callq 0x37b39
movq %rbx, %rdi
movl %ebp, %esi
callq 0x38abb
pushq $0x1
popq %rax
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/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 0x94c7d
movq %rsi, %r14
testq %rsi, %rsi
je 0x94c7d
movq %rdi, %rbx
pushq $0x8
popq %rsi
callq 0x39c01
movq %r14, (%rax)
leaq 0x49c74(%rip), %rdx     # 0xde8d2
movq %rbx, %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x38a63
pushq $-0x2
popq %rsi
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x3914f
movq 0x99334(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x353d8(%rip), %rsi     # 0xca066
leaq 0x52a19(%rip), %rdx     # 0xe76ae
leaq 0x52a1a(%rip), %rcx     # 0xe76b6
leaq 0x529ec(%rip), %r8      # 0xe768f
movl $0xf9, %r9d
xorl %eax, %eax
callq 0xb8c0
callq 0xb300
// File: /workspace/github_c_makefile_star2_O2/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 0x94eb6
movq %rdi, %rbx
pushq $0x8
popq %rsi
callq 0x39c01
movq %rax, %r14
xorl %edi, %edi
callq 0x24161
movq %rax, (%r14)
testq %rax, %rax
je 0x94ee0
leaq 0x49a3f(%rip), %rdx     # 0xde8d2
movq %rbx, %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x38a63
pushq $-0x2
popq %rsi
movq %rbx, %rdi
callq 0x3914f
pushq $0x1
popq %rax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
movq 0x990fb(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x3519f(%rip), %rsi     # 0xca066
leaq 0x41b28(%rip), %rdx     # 0xd69f6
leaq 0x528cb(%rip), %rcx     # 0xe77a0
leaq 0x527b3(%rip), %r8      # 0xe768f
pushq $0x2c
jmp 0x94f08
movq 0x990d1(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x35175(%rip), %rsi     # 0xca066
leaq 0x528bd(%rip), %rdx     # 0xe77b5
leaq 0x528a1(%rip), %rcx     # 0xe77a0
leaq 0x52789(%rip), %r8      # 0xe768f
pushq $0x30
popq %r9
xorl %eax, %eax
callq 0xb8c0
callq 0xb300
// File: /workspace/github_c_makefile_star2_O2/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 %rbp
pushq %r14
pushq %rbx
testq %rdi, %rdi
je 0x94fa9
movq %rdi, %rbx
pushq $0x8
popq %rsi
callq 0x39c01
testq %rax, %rax
je 0x94fd7
movq %rax, %r14
callq 0x94968
movq %rax, %rdi
callq 0x25fe0
movq %rax, (%r14)
testq %rax, %rax
je 0x95005
callq 0x94968
movq (%r14), %rsi
movq %rax, %rdi
callq 0x2603e
movq %rax, %r14
leaq 0x49965(%rip), %rdx     # 0xde8d2
movq %rbx, %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x38a63
pushq $-0x2
popq %rbp
movq %rbx, %rdi
movl %ebp, %esi
callq 0x3914f
movq %rbx, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x38be5
movq %rbx, %rdi
movl %ebp, %esi
callq 0x391e9
movq %rbx, 0x10(%r14)
pushq $0x1
popq %rax
popq %rbx
popq %r14
popq %rbp
retq
movq 0x99008(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x350ac(%rip), %rsi     # 0xca066
leaq 0x41a35(%rip), %rdx     # 0xd69f6
leaq 0x527f1(%rip), %rcx     # 0xe77b9
leaq 0x526c0(%rip), %r8      # 0xe768f
movl $0xb9, %r9d
jmp 0x95031
movq 0x98fda(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x3507e(%rip), %rsi     # 0xca066
leaq 0x526c4(%rip), %rdx     # 0xe76b3
leaq 0x527c3(%rip), %rcx     # 0xe77b9
leaq 0x52692(%rip), %r8      # 0xe768f
movl $0xbc, %r9d
jmp 0x95031
movq 0x98fac(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x35050(%rip), %rsi     # 0xca066
leaq 0x52798(%rip), %rdx     # 0xe77b5
leaq 0x52795(%rip), %rcx     # 0xe77b9
leaq 0x52664(%rip), %r8      # 0xe768f
movl $0xbe, %r9d
xorl %eax, %eax
callq 0xb8c0
callq 0xb300
nopl (%rax)