LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/gtlua/genome_node_lua.c
// Function: feature_node_lua_extract_sequence
static int feature_node_lua_extract_sequence(lua_State *L)
{
  GtGenomeNode **gn;
  GtFeatureNode *fn;
  const char *type;
  bool join;
  GtRegionMapping **region_mapping;
  GtStr *sequence;
  GtError *err;
  gn = check_genome_node(L, 1);
  /* make sure we get a feature node */
  fn = gt_feature_node_try_cast(*gn);
  luaL_argcheck(L, fn, 1, "not a feature node");
  type = luaL_checkstring(L, 2);
  join = lua_toboolean(L, 3);
  region_mapping = check_region_mapping(L, 4);
  err = gt_error_new();
  sequence = gt_str_new();
  if (gt_extract_feature_sequence(sequence, *gn, gt_symbol(type), join,
                                  NULL, NULL, *region_mapping, err)) {
    gt_str_delete(sequence);
    return gt_lua_error(L, err);
  }
  lua_pushstring(L, gt_str_get(sequence));
  gt_str_delete(sequence);
  gt_error_delete(err);
  return 1;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
leaq 0x76050(%rip), %rdx     # 0xde787
pushq $0x1
popq %rsi
callq 0x3ae77
movq %rax, %r14
movq (%rax), %rdi
callq 0x1b4e0
testq %rax, %rax
jne 0x68761
leaq 0x7613d(%rip), %rdx     # 0xde893
pushq $0x1
popq %rsi
movq %rbx, %rdi
callq 0x3ab1c
pushq $0x2
popq %rsi
movq %rbx, %rdi
xorl %edx, %edx
callq 0x3adee
movq %rax, (%rsp)
pushq $0x3
popq %rsi
movq %rbx, %rdi
callq 0x37f77
xorl %ebp, %ebp
testl %eax, %eax
setne %bpl
leaq 0x762b8(%rip), %rdx     # 0xdea44
pushq $0x4
popq %rsi
movq %rbx, %rdi
callq 0x3ae77
movq %rax, %r13
callq 0xbff0
movq %rax, %r15
callq 0x13d5c
movq %rax, %r12
movq (%r14), %r14
movq (%rsp), %rdi
callq 0x15a03
movq %r12, %rdi
movq %r14, %rsi
movq %rax, %rdx
movl %ebp, %ecx
xorl %r8d, %r8d
xorl %r9d, %r9d
pushq %r15
pushq (%r13)
callq 0x87e6c
popq %rcx
popq %rdx
testl %eax, %eax
je 0x687f9
movq %r12, %rdi
callq 0x152db
movq %rbx, %rdi
movq %r15, %rsi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x88ba4
movq %r12, %rdi
callq 0x143d2
movq %rbx, %rdi
movq %rax, %rsi
callq 0x38431
movq %r12, %rdi
callq 0x152db
movq %r15, %rdi
callq 0xc291
pushq $0x1
popq %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/gtlua/genome_node_lua.c
// Function: feature_node_lua_extract_and_translate_sequence
static int feature_node_lua_extract_and_translate_sequence(lua_State *L)
{
  GtGenomeNode **gn;
  GtFeatureNode *fn;
  const char *type;
  bool join;
  GtRegionMapping **region_mapping;
  GtStr *sequence;
  GtError *err;
  gn = check_genome_node(L, 1);
  /* make sure we get a feature node */
  fn = gt_feature_node_try_cast(*gn);
  luaL_argcheck(L, fn, 1, "not a feature node");
  type = luaL_checkstring(L, 2);
  join = lua_toboolean(L, 3);
  region_mapping = check_region_mapping(L, 4);
  err = gt_error_new();
  sequence = gt_str_new();
  if (gt_extract_and_translate_feature_sequence(fn, gt_symbol(type), join,
                                                NULL, NULL, *region_mapping,
                                                NULL,
                                                sequence, NULL, NULL, err)) {
    gt_str_delete(sequence);
    return gt_lua_error(L, err);
  }
  lua_pushstring(L, gt_str_get(sequence));
  gt_str_delete(sequence);
  gt_error_delete(err);
  return 1;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x38, %rsp
movq %rdi, %rbx
leaq 0x75f41(%rip), %rdx     # 0xde787
pushq $0x1
popq %rsi
callq 0x3ae77
movq (%rax), %rdi
callq 0x1b4e0
movq %rax, 0x30(%rsp)
testq %rax, %rax
jne 0x68872
leaq 0x7602c(%rip), %rdx     # 0xde893
pushq $0x1
popq %rsi
movq %rbx, %rdi
callq 0x3ab1c
pushq $0x2
popq %rsi
movq %rbx, %rdi
xorl %edx, %edx
callq 0x3adee
movq %rax, %r13
pushq $0x3
popq %rsi
movq %rbx, %rdi
callq 0x37f77
xorl %ebp, %ebp
testl %eax, %eax
setne %bpl
leaq 0x761a8(%rip), %rdx     # 0xdea44
pushq $0x4
popq %rsi
movq %rbx, %rdi
callq 0x3ae77
movq %rax, %r14
callq 0xbff0
movq %rax, %r15
callq 0x13d5c
movq %rax, %r12
movq %r13, %rdi
callq 0x15a03
movq (%r14), %r9
movq %r15, 0x20(%rsp)
xorps %xmm0, %xmm0
movups %xmm0, 0x10(%rsp)
andq $0x0, (%rsp)
movq %r12, 0x8(%rsp)
movq 0x30(%rsp), %rdi
movq %rax, %rsi
movl %ebp, %edx
xorl %ecx, %ecx
xorl %r8d, %r8d
callq 0x883ac
testl %eax, %eax
je 0x68915
movq %r12, %rdi
callq 0x152db
movq %rbx, %rdi
movq %r15, %rsi
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x88ba4
movq %r12, %rdi
callq 0x143d2
movq %rbx, %rdi
movq %rax, %rsi
callq 0x38431
movq %r12, %rdi
callq 0x152db
movq %r15, %rdi
callq 0xc291
pushq $0x1
popq %rax
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/gtlua/genome_node_lua.c
// Function: feature_node_lua_remove_leaf
static int feature_node_lua_remove_leaf(lua_State *L)
{
  GtGenomeNode **parent, **leaf;
  GtFeatureNode *pf, *lf;
  parent = check_genome_node(L, 1);
  leaf  = check_genome_node(L, 2);
  pf = gt_feature_node_try_cast(*parent);
  luaL_argcheck(L, pf, 1, "not a feature node");
  lf = gt_feature_node_try_cast(*leaf);
  luaL_argcheck(L, lf, 2, "not a feature node");
  luaL_argcheck(L, gt_feature_node_number_of_children(lf) == 0, 2,
                "must be a leaf");
  gt_feature_node_remove_leaf(pf, lf);
  return 0;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
leaq 0x75e2b(%rip), %r14     # 0xde787
pushq $0x1
popq %rsi
movq %r14, %rdx
callq 0x3ae77
movq %rax, %r12
pushq $0x2
popq %rsi
movq %rbx, %rdi
movq %r14, %rdx
callq 0x3ae77
movq %rax, %r15
movq (%r12), %rdi
callq 0x1b4e0
movq %rax, %r14
testq %rax, %rax
jne 0x6899e
leaq 0x75f00(%rip), %rdx     # 0xde893
pushq $0x1
popq %rsi
movq %rbx, %rdi
callq 0x3ab1c
movq (%r15), %rdi
callq 0x1b4e0
movq %rax, %r15
testq %rax, %rax
jne 0x689c0
leaq 0x75ede(%rip), %rdx     # 0xde893
pushq $0x2
popq %rsi
movq %rbx, %rdi
callq 0x3ab1c
movq %r15, %rdi
callq 0x1aeb5
testq %rax, %rax
je 0x689df
leaq 0x7608b(%rip), %rdx     # 0xdea5f
pushq $0x2
popq %rsi
movq %rbx, %rdi
callq 0x3ab1c
movq %r14, %rdi
movq %r15, %rsi
callq 0x1afe7
xorl %eax, %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_node_lua.c
// Function: meta_node_lua_get_data
static int meta_node_lua_get_data(lua_State *L)
{
  GtGenomeNode **gn;
  GtMetaNode *mn;
  const char *meta_data = NULL;
  gn = check_genome_node(L, 1);
  /* make sure we get a meta node */
  mn = gt_meta_node_try_cast(*gn);
  luaL_argcheck(L, mn, 1, "not a meta node");
  meta_data = gt_meta_node_get_data(mn);
  if (meta_data) {
    lua_pushstring(L, meta_data);
  } else {
    lua_pushnil(L);
  }
  return 1;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
leaq 0x75d81(%rip), %rdx     # 0xde787
pushq $0x1
popq %rsi
callq 0x3ae77
movq (%rax), %rdi
callq 0x25853
movq %rax, %r14
testq %rax, %rax
jne 0x68a30
leaq 0x76049(%rip), %rdx     # 0xdea6e
pushq $0x1
popq %rsi
movq %rbx, %rdi
callq 0x3ab1c
movq %r14, %rdi
callq 0x25812
movq %rbx, %rdi
testq %rax, %rax
je 0x68a4a
movq %rax, %rsi
callq 0x38431
jmp 0x68a4f
callq 0x3824a
pushq $0x1
popq %rax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/gtlua/genome_node_lua.c
// Function: meta_node_lua_get_directive
static int meta_node_lua_get_directive(lua_State *L)
{
  GtGenomeNode **gn;
  GtMetaNode *mn;
  const char *meta_directive = NULL;
  gn = check_genome_node(L, 1);
  /* make sure we get a meta node */
  mn = gt_meta_node_try_cast(*gn);
  luaL_argcheck(L, mn, 1, "not a meta node");
  meta_directive = gt_meta_node_get_directive(mn);
  gt_assert(meta_directive);
  lua_pushstring(L, meta_directive);
  return 1;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
leaq 0x75d1f(%rip), %rdx     # 0xde787
pushq $0x1
popq %rsi
callq 0x3ae77
movq (%rax), %rdi
callq 0x25853
movq %rax, %r14
testq %rax, %rax
jne 0x68a92
leaq 0x75fe7(%rip), %rdx     # 0xdea6e
pushq $0x1
popq %rsi
movq %rbx, %rdi
callq 0x3ab1c
movq %r14, %rdi
callq 0x257cc
testq %rax, %rax
je 0x68ab5
movq %rbx, %rdi
movq %rax, %rsi
callq 0x38431
pushq $0x1
popq %rax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
movq 0xc54fc(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x615a0(%rip), %rsi     # 0xca066
leaq 0x6923e(%rip), %rdx     # 0xd1d0b
leaq 0x75faa(%rip), %rcx     # 0xdea7e
leaq 0x75c90(%rip), %r8      # 0xde76b
movl $0x23c, %r9d            # imm = 0x23C
xorl %eax, %eax
callq 0xb8c0
callq 0xb300
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/gtlua/genome_node_lua.c
// Function: comment_node_lua_get_comment
static int comment_node_lua_get_comment(lua_State *L)
{
  GtGenomeNode **gn;
  GtCommentNode *cn;
  gn = check_genome_node(L, 1);
  /* make sure we get a meta node */
  cn = gt_comment_node_try_cast(*gn);
  luaL_argcheck(L, cn, 1, "not a comment node");
  lua_pushstring(L, gt_comment_node_get_comment(cn));
  return 1;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
leaq 0x75c8c(%rip), %rdx     # 0xde787
pushq $0x1
popq %rsi
callq 0x3ae77
movq (%rax), %rdi
callq 0x6441a
movq %rax, %r14
testq %rax, %rax
jne 0x68b25
leaq 0x75f80(%rip), %rdx     # 0xdea9a
pushq $0x1
popq %rsi
movq %rbx, %rdi
callq 0x3ab1c
movq %r14, %rdi
callq 0x643d4
movq %rbx, %rdi
movq %rax, %rsi
callq 0x38431
pushq $0x1
popq %rax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/gtlua/genome_node_lua.c
// Function: sequence_node_lua_get_description
static int sequence_node_lua_get_description(lua_State *L)
{
  GtGenomeNode **gn;
  GtSequenceNode *sn;
  gn = check_genome_node(L, 1);
  /* make sure we get a sequence node */
  sn = gt_sequence_node_try_cast(*gn);
  luaL_argcheck(L, sn, 1, "not a sequence node");
  lua_pushstring(L, gt_sequence_node_get_description(sn));
  return 1;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
leaq 0x75c36(%rip), %rdx     # 0xde787
pushq $0x1
popq %rsi
callq 0x3ae77
movq (%rax), %rdi
callq 0x26f12
movq %rax, %r14
testq %rax, %rax
jne 0x68b7b
leaq 0x75f3d(%rip), %rdx     # 0xdeaad
pushq $0x1
popq %rsi
movq %rbx, %rdi
callq 0x3ab1c
movq %r14, %rdi
callq 0x26e43
movq %rbx, %rdi
movq %rax, %rsi
callq 0x38431
pushq $0x1
popq %rax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/gtlua/genome_node_lua.c
// Function: sequence_node_lua_get_sequence
static int sequence_node_lua_get_sequence(lua_State *L)
{
  GtGenomeNode **gn;
  GtSequenceNode *sn;
  gn = check_genome_node(L, 1);
  /* make sure we get a sequence node */
  sn = gt_sequence_node_try_cast(*gn);
  luaL_argcheck(L, sn, 1, "not a sequence node");
  lua_pushstring(L, gt_sequence_node_get_sequence(sn));
  return 1;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
leaq 0x75be0(%rip), %rdx     # 0xde787
pushq $0x1
popq %rsi
callq 0x3ae77
movq (%rax), %rdi
callq 0x26f12
movq %rax, %r14
testq %rax, %rax
jne 0x68bd1
leaq 0x75ee7(%rip), %rdx     # 0xdeaad
pushq $0x1
popq %rsi
movq %rbx, %rdi
callq 0x3ab1c
movq %r14, %rdi
callq 0x26e88
movq %rbx, %rdi
movq %rax, %rsi
callq 0x38431
pushq $0x1
popq %rax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/gtlua/genome_node_lua.c
// Function: sequence_node_lua_get_sequence_length
static int sequence_node_lua_get_sequence_length(lua_State *L)
{
  GtGenomeNode **gn;
  GtSequenceNode *sn;
  gn = check_genome_node(L, 1);
  /* make sure we get a sequence node */
  sn = gt_sequence_node_try_cast(*gn);
  luaL_argcheck(L, sn, 1, "not a sequence node");
  lua_pushnumber(L, gt_sequence_node_get_sequence_length(sn));
  return 1;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
leaq 0x75b8a(%rip), %rdx     # 0xde787
pushq $0x1
popq %rsi
callq 0x3ae77
movq (%rax), %rdi
callq 0x26f12
movq %rax, %r14
testq %rax, %rax
jne 0x68c27
leaq 0x75e91(%rip), %rdx     # 0xdeaad
pushq $0x1
popq %rsi
movq %rbx, %rdi
callq 0x3ab1c
movq %r14, %rdi
callq 0x26ecd
movq %rax, %xmm1
punpckldq 0x61844(%rip), %xmm1 # xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
subpd 0x6184c(%rip), %xmm1    # 0xca490
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
movq %rbx, %rdi
callq 0x3825b
pushq $0x1
popq %rax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/gtlua/genome_node_lua.c
// Function: feature_node_lua_get_children_generic
static int feature_node_lua_get_children_generic(lua_State *L, bool direct)
{
  GtGenomeNode **gn;
  GtFeatureNode *fn;
  GtFeatureNodeIterator **it;
  gn = check_genome_node(L, 1);
  /* make sure we get a feature node */
  fn = gt_feature_node_try_cast(*gn);
  luaL_argcheck(L, fn, 1, "not a feature node");
  it = (GtFeatureNodeIterator**) lua_newuserdata(L,
                                              sizeof (GtFeatureNodeIterator *));
  luaL_getmetatable(L, "GenomeTools.get_children");
  lua_setmetatable(L, -2);
  if (direct)
    *it = gt_feature_node_iterator_new_direct(fn);
  else
    *it = gt_feature_node_iterator_new(fn);
  gt_assert(*it);
  lua_pushcclosure(L, feature_node_lua_get_children_iter, 1);
  return 1;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movl %esi, %ebp
movq %rdi, %rbx
leaq 0x75b11(%rip), %rdx     # 0xde787
pushq $0x1
popq %rsi
callq 0x3ae77
movq (%rax), %rdi
callq 0x1b4e0
movq %rax, %r14
testq %rax, %rax
jne 0x68ca0
leaq 0x75bfe(%rip), %rdx     # 0xde893
pushq $0x1
popq %rsi
movq %rbx, %rdi
callq 0x3ab1c
pushq $0x8
popq %rsi
movq %rbx, %rdi
callq 0x39c01
movq %rax, %r15
leaq 0x75aea(%rip), %rdx     # 0xde79f
movq %rbx, %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x38a63
pushq $-0x2
popq %rsi
movq %rbx, %rdi
callq 0x3914f
movq %r14, %rdi
testb %bpl, %bpl
je 0x68cdc
callq 0x1ba16
jmp 0x68ce1
callq 0x1b8e0
movq %rax, (%r15)
testq %rax, %rax
je 0x68d05
leaq 0x4d(%rip), %rsi        # 0x68d3d
pushq $0x1
popq %rdx
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x38814
movq 0xc52ac(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x61350(%rip), %rsi     # 0xca066
leaq 0x75c8b(%rip), %rdx     # 0xde9a8
leaq 0x75c88(%rip), %rcx     # 0xde9ac
leaq 0x75a40(%rip), %r8      # 0xde76b
movl $0x2f5, %r9d            # imm = 0x2F5
xorl %eax, %eax
callq 0xb8c0
callq 0xb300
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/gtlua/genome_node_lua.c
// Function: feature_node_lua_each_attribute_iter
static int feature_node_lua_each_attribute_iter(lua_State *L) {
  GtFeatureNodeLuaEachAttribInfo *info;
  info = *(GtFeatureNodeLuaEachAttribInfo**) lua_touserdata(L,
                                                           lua_upvalueindex(1));
  if (!info->attribs) return 0;
  if (info->cur_attr < gt_str_array_size(info->attribs)) {
    const char *attr, *val;
    attr = gt_str_array_get(info->attribs, info->cur_attr);
    gt_assert(attr);
    val = gt_feature_node_get_attribute(info->fn, attr);
    gt_assert(val);
    lua_pushstring(L, attr);
    lua_pushstring(L, val);
    info->cur_attr++;
    return 2;
  } else
    return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movq %rdi, %rbx
movl $0xffffd8ed, %esi       # imm = 0xFFFFD8ED
callq 0x381c6
movq (%rax), %r12
movq 0x8(%r12), %rdi
xorl %ebp, %ebp
testq %rdi, %rdi
je 0x68dee
movq (%r12), %r14
callq 0x157f4
cmpq %rax, %r14
jae 0x68dee
movq (%r12), %rsi
movq 0x8(%r12), %rdi
callq 0x1555e
testq %rax, %rax
je 0x68df9
movq %rax, %r14
movq 0x10(%r12), %rdi
movq %rax, %rsi
callq 0x18818
testq %rax, %rax
je 0x68e27
movq %rax, %r15
movq %rbx, %rdi
movq %r14, %rsi
callq 0x38431
movq %rbx, %rdi
movq %r15, %rsi
callq 0x38431
incq (%r12)
pushq $0x2
popq %rbp
movl %ebp, %eax
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movq 0xc51b8(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x6125c(%rip), %rsi     # 0xca066
leaq 0x67b28(%rip), %rdx     # 0xd0939
leaq 0x75be0(%rip), %rcx     # 0xde9f8
leaq 0x7594c(%rip), %r8      # 0xde76b
movl $0x1c8, %r9d            # imm = 0x1C8
jmp 0x68e53
movq 0xc518a(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x6122e(%rip), %rsi     # 0xca066
leaq 0x6c2e1(%rip), %rdx     # 0xd5120
leaq 0x75bb2(%rip), %rcx     # 0xde9f8
leaq 0x7591e(%rip), %r8      # 0xde76b
movl $0x1ca, %r9d            # imm = 0x1CA
xorl %eax, %eax
callq 0xb8c0
callq 0xb300
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/gtlua/genome_node_lua.c
// Function: region_node_lua_new
static int region_node_lua_new(lua_State *L)
{
  GtGenomeNode **rn;
  GtUword startpos, endpos;
  const char *seqid;
  GtStr *seqid_str;
  gt_assert(L);
  /* get_check parameters */
  seqid = luaL_checkstring(L, 1);
  startpos = luaL_checklong(L, 2);
  endpos   = luaL_checklong(L, 3);
  luaL_argcheck(L, startpos > 0, 2, "must be > 0");
  luaL_argcheck(L, endpos > 0, 3, "must be > 0");
  luaL_argcheck(L, startpos <= endpos, 2, "must be <= endpos");
  /* construct object */
  rn = lua_newuserdata(L, sizeof (GtGenomeNode*));
  seqid_str = gt_str_new_cstr(seqid);
  *rn = gt_region_node_new(seqid_str, startpos, endpos);
  gt_str_delete(seqid_str);
  gt_assert(*rn);
  luaL_getmetatable(L, GENOME_NODE_METATABLE);
  lua_setmetatable(L, -2);
  return 1;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
testq %rdi, %rdi
je 0x69103
movq %rdi, %rbx
pushq $0x1
popq %rsi
xorl %edx, %edx
callq 0x3adee
movq %rax, %r14
pushq $0x2
popq %rsi
movq %rbx, %rdi
callq 0x3b001
movq %rax, %r15
pushq $0x3
popq %rsi
movq %rbx, %rdi
callq 0x3b001
movq %rax, %r12
testq %r15, %r15
jne 0x6906f
leaq 0x75a72(%rip), %rdx     # 0xdead6
pushq $0x2
popq %rsi
movq %rbx, %rdi
callq 0x3ab1c
testq %r12, %r12
jne 0x69086
leaq 0x75a5b(%rip), %rdx     # 0xdead6
pushq $0x3
popq %rsi
movq %rbx, %rdi
callq 0x3ab1c
cmpq %r12, %r15
jbe 0x6909d
leaq 0x75a50(%rip), %rdx     # 0xdeae2
pushq $0x2
popq %rsi
movq %rbx, %rdi
callq 0x3ab1c
pushq $0x8
popq %rsi
movq %rbx, %rdi
callq 0x39c01
movq %rax, %r13
movq %r14, %rdi
callq 0x13da9
movq %rax, %r14
movq %rax, %rdi
movq %r15, %rsi
movq %r12, %rdx
callq 0x26a40
movq %rax, (%r13)
movq %r14, %rdi
callq 0x152db
cmpq $0x0, (%r13)
je 0x6912d
leaq 0x756a9(%rip), %rdx     # 0xde787
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 %r12
popq %r13
popq %r14
popq %r15
retq
movq 0xc4eae(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x60f52(%rip), %rsi     # 0xca066
leaq 0x6d8db(%rip), %rdx     # 0xd69f6
leaq 0x75a06(%rip), %rcx     # 0xdeb28
leaq 0x75642(%rip), %r8      # 0xde76b
pushq $0x51
jmp 0x69155
movq 0xc4e84(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x60f28(%rip), %rsi     # 0xca066
leaq 0x759f7(%rip), %rdx     # 0xdeb3c
leaq 0x759dc(%rip), %rcx     # 0xdeb28
leaq 0x75618(%rip), %r8      # 0xde76b
pushq $0x5e
popq %r9
xorl %eax, %eax
callq 0xb8c0
callq 0xb300
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/gtlua/genome_node_lua.c
// Function: meta_node_lua_new
static int meta_node_lua_new(lua_State *L)
{
  GtGenomeNode **mn;
  const char *directive = NULL, *data = NULL;
  gt_assert(L);
  /* get_check parameters */
  directive = luaL_checkstring(L, 1);
  if (!lua_isnil(L, 2))
    data = luaL_checkstring(L, 2);
  /* construct object */
  mn = lua_newuserdata(L, sizeof (GtGenomeNode*));
  gt_assert(directive);
  *mn = gt_meta_node_new(directive, data);
  gt_assert(*mn);
  luaL_getmetatable(L, GENOME_NODE_METATABLE);
  lua_setmetatable(L, -2);
  return 1;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
testq %rdi, %rdi
je 0x691ff
movq %rdi, %rbx
xorl %r15d, %r15d
pushq $0x1
popq %rsi
xorl %edx, %edx
callq 0x3adee
movq %rax, %r14
pushq $0x2
popq %rsi
movq %rbx, %rdi
callq 0x37b59
testl %eax, %eax
je 0x691a6
pushq $0x2
popq %rsi
movq %rbx, %rdi
xorl %edx, %edx
callq 0x3adee
movq %rax, %r15
pushq $0x8
popq %rsi
movq %rbx, %rdi
callq 0x39c01
testq %r14, %r14
je 0x69229
movq %rax, %r12
movq %r14, %rdi
movq %r15, %rsi
callq 0x25713
movq %rax, (%r12)
testq %rax, %rax
je 0x69253
leaq 0x755af(%rip), %rdx     # 0xde787
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 %r12
popq %r14
popq %r15
retq
movq 0xc4db2(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x60e56(%rip), %rsi     # 0xca066
leaq 0x6d7df(%rip), %rdx     # 0xd69f6
leaq 0x75922(%rip), %rcx     # 0xdeb40
leaq 0x75546(%rip), %r8      # 0xde76b
pushq $0x68
jmp 0x6927b
movq 0xc4d88(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x60e2c(%rip), %rsi     # 0xca066
leaq 0x68acf(%rip), %rdx     # 0xd1d10
leaq 0x758f8(%rip), %rcx     # 0xdeb40
leaq 0x7551c(%rip), %r8      # 0xde76b
pushq $0x6f
jmp 0x6927b
movq 0xc4d5e(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x60e02(%rip), %rsi     # 0xca066
leaq 0x758e7(%rip), %rdx     # 0xdeb52
leaq 0x758ce(%rip), %rcx     # 0xdeb40
leaq 0x754f2(%rip), %r8      # 0xde76b
pushq $0x71
popq %r9
xorl %eax, %eax
callq 0xb8c0
callq 0xb300
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/gtlua/genome_node_lua.c
// Function: comment_node_lua_new
static int comment_node_lua_new(lua_State *L)
{
  GtGenomeNode **cn;
  const char *comment;
  gt_assert(L);
  /* get_check parameters */
  comment = luaL_checkstring(L, 1);
  /* construct object */
  cn = lua_newuserdata(L, sizeof (GtGenomeNode*));
  *cn = gt_comment_node_new(comment);
  gt_assert(*cn);
  luaL_getmetatable(L, GENOME_NODE_METATABLE);
  lua_setmetatable(L, -2);
  return 1;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
testq %rdi, %rdi
je 0x692e9
movq %rdi, %rbx
pushq $0x1
popq %rsi
xorl %edx, %edx
callq 0x3adee
movq %rax, %r14
pushq $0x8
popq %rsi
movq %rbx, %rdi
callq 0x39c01
movq %rax, %r15
movq %r14, %rdi
callq 0x6433c
movq %rax, (%r15)
testq %rax, %rax
je 0x69315
leaq 0x754bf(%rip), %rdx     # 0xde787
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 0xc4cc8(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x60d6c(%rip), %rsi     # 0xca066
leaq 0x6d6f5(%rip), %rdx     # 0xd69f6
leaq 0x7584e(%rip), %rcx     # 0xdeb56
leaq 0x7545c(%rip), %r8      # 0xde76b
pushq $0x7b
popq %r9
jmp 0x69341
movq 0xc4c9c(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x60d40(%rip), %rsi     # 0xca066
leaq 0x7583e(%rip), %rdx     # 0xdeb6b
leaq 0x75822(%rip), %rcx     # 0xdeb56
leaq 0x75430(%rip), %r8      # 0xde76b
movl $0x81, %r9d
xorl %eax, %eax
callq 0xb8c0
callq 0xb300
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/gtlua/genome_node_lua.c
// Function: sequence_node_lua_new
static int sequence_node_lua_new(lua_State *L)
{
  GtGenomeNode **sn;
  GtStr *seq_str;
  const char *desc, *seq;
  gt_assert(L);
  /* get_check parameters */
  desc = luaL_checkstring(L, 1);
  seq = luaL_checkstring(L, 2);
  /* construct object */
  sn = lua_newuserdata(L, sizeof (GtGenomeNode*));
  seq_str = gt_str_new_cstr(seq);
  *sn = gt_sequence_node_new(desc, seq_str);
  gt_assert(*sn);
  gt_str_delete(seq_str);
  luaL_getmetatable(L, GENOME_NODE_METATABLE);
  lua_setmetatable(L, -2);
  return 1;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
testq %rdi, %rdi
je 0x693e1
movq %rdi, %rbx
pushq $0x1
popq %rsi
xorl %edx, %edx
callq 0x3adee
movq %rax, %r15
pushq $0x2
popq %rsi
movq %rbx, %rdi
xorl %edx, %edx
callq 0x3adee
movq %rax, %r14
pushq $0x8
popq %rsi
movq %rbx, %rdi
callq 0x39c01
movq %rax, %r12
movq %r14, %rdi
callq 0x13da9
movq %rax, %r14
movq %r15, %rdi
movq %rax, %rsi
callq 0x26d9c
movq %rax, (%r12)
testq %rax, %rax
je 0x6940f
movq %r14, %rdi
callq 0x152db
leaq 0x753cd(%rip), %rdx     # 0xde787
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 %r12
popq %r14
popq %r15
retq
movq 0xc4bd0(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x60c74(%rip), %rsi     # 0xca066
leaq 0x6d5fd(%rip), %rdx     # 0xd69f6
leaq 0x7576f(%rip), %rcx     # 0xdeb6f
leaq 0x75364(%rip), %r8      # 0xde76b
movl $0x8c, %r9d
jmp 0x6943b
movq 0xc4ba2(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x60c46(%rip), %rsi     # 0xca066
leaq 0x7575e(%rip), %rdx     # 0xdeb85
leaq 0x75741(%rip), %rcx     # 0xdeb6f
leaq 0x75336(%rip), %r8      # 0xde76b
movl $0x94, %r9d
xorl %eax, %eax
callq 0xb8c0
callq 0xb300
nop
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/gtlua/gt_lua.c
// Function: gt_lua_open_lib
int gt_lua_open_lib(lua_State *L)
{
#ifndef NDEBUG
  int stack_size;
#endif
  gt_assert(L);
#ifndef NDEBUG
  stack_size = lua_gettop(L);
#endif
  gt_lua_open_core(L); /* open core */
  gt_lua_open_extended(L); /* open extended */
#ifndef WITHOUT_CAIRO
  gt_lua_open_annotationsketch(L); /* open annotationsketch */
#endif
  gt_assert(lua_gettop(L) == stack_size);
  return 1;
}

// Assembly:
pushq %rbp
pushq %rbx
pushq %rax
testq %rdi, %rdi
je 0x69488
movq %rdi, %rbx
callq 0x377ed
movl %eax, %ebp
movq %rbx, %rdi
callq 0x694e8
movq %rbx, %rdi
callq 0x695a8
movq %rbx, %rdi
callq 0x8fc90
movq %rbx, %rdi
callq 0x377ed
cmpl %ebp, %eax
jne 0x694b2
pushq $0x1
popq %rax
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
movq 0xc4b29(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x60bcd(%rip), %rsi     # 0xca066
leaq 0x6d556(%rip), %rdx     # 0xd69f6
leaq 0x756e2(%rip), %rcx     # 0xdeb89
leaq 0x756eb(%rip), %r8      # 0xdeb99
pushq $0x20
jmp 0x694da
movq 0xc4aff(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x60ba3(%rip), %rsi     # 0xca066
leaq 0x74911(%rip), %rdx     # 0xddddb
leaq 0x756b8(%rip), %rcx     # 0xdeb89
leaq 0x756c1(%rip), %r8      # 0xdeb99
pushq $0x29
popq %r9
xorl %eax, %eax
callq 0xb8c0
callq 0xb300
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/gtlua/gtcore_lua.c
// Function: gt_lua_open_core
int gt_lua_open_core(lua_State *L)
{
#ifndef NDEBUG
  int stack_size;
#endif
  gt_assert(L);
#ifndef NDEBUG
  stack_size = lua_gettop(L);
#endif
  gt_lua_open_alphabet(L);
  gt_lua_open_bittab(L);
  gt_lua_open_encseq(L);
  gt_lua_open_mathsupport(L);
  gt_lua_open_range(L);
  gt_lua_open_score_matrix(L);
  gt_lua_open_translate(L);
  gt_assert(lua_gettop(L) == stack_size);
  return 1;
}

// Assembly:
pushq %rbp
pushq %rbx
pushq %rax
testq %rdi, %rdi
je 0x69548
movq %rdi, %rbx
callq 0x377ed
movl %eax, %ebp
movq %rbx, %rdi
callq 0x8f6dc
movq %rbx, %rdi
callq 0x8fd38
movq %rbx, %rdi
callq 0x90cac
movq %rbx, %rdi
callq 0x69688
movq %rbx, %rdi
callq 0x6977c
movq %rbx, %rdi
callq 0x6a84c
movq %rbx, %rdi
callq 0x6afb0
movq %rbx, %rdi
callq 0x377ed
cmpl %ebp, %eax
jne 0x69572
pushq $0x1
popq %rax
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
movq 0xc4a69(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x60b0d(%rip), %rsi     # 0xca066
leaq 0x6d496(%rip), %rdx     # 0xd69f6
leaq 0x75645(%rip), %rcx     # 0xdebac
leaq 0x7564f(%rip), %r8      # 0xdebbd
pushq $0x21
jmp 0x6959a
movq 0xc4a3f(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x60ae3(%rip), %rsi     # 0xca066
leaq 0x74851(%rip), %rdx     # 0xddddb
leaq 0x7561b(%rip), %rcx     # 0xdebac
leaq 0x75625(%rip), %r8      # 0xdebbd
pushq $0x2c
popq %r9
xorl %eax, %eax
callq 0xb8c0
callq 0xb300
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/gtlua/gtext_lua.c
// Function: gt_lua_open_extended
int gt_lua_open_extended(lua_State *L)
{
#ifndef NDEBUG
  int stack_size;
#endif
  gt_assert(L);
#ifndef NDEBUG
  stack_size = lua_gettop(L);
#endif
  gt_lua_open_cds_stream(L);
  gt_lua_open_csa_stream(L);
  gt_lua_open_feature_index(L);
  gt_lua_open_feature_node_iterator(L);
  gt_lua_open_feature_stream(L);
  gt_lua_open_feature_visitor(L);
  gt_lua_open_genome_node(L);
  gt_lua_open_genome_stream(L);
  gt_lua_open_genome_visitor(L);
  gt_lua_open_region_mapping(L);
  gt_lua_open_stream_evaluator(L);
  gt_assert(lua_gettop(L) == stack_size);
  return 1;
}

// Assembly:
pushq %rbp
pushq %rbx
pushq %rax
testq %rdi, %rdi
je 0x69628
movq %rdi, %rbx
callq 0x377ed
movl %eax, %ebp
movq %rbx, %rdi
callq 0x904f4
movq %rbx, %rdi
callq 0x9067c
movq %rbx, %rdi
callq 0x930b1
movq %rbx, %rdi
callq 0x939a0
movq %rbx, %rdi
callq 0x93cac
movq %rbx, %rdi
callq 0x93e08
movq %rbx, %rdi
callq 0x67520
movq %rbx, %rdi
callq 0x94143
movq %rbx, %rdi
callq 0x94a27
movq %rbx, %rdi
callq 0x69f81
movq %rbx, %rdi
callq 0x6ad34
movq %rbx, %rdi
callq 0x377ed
cmpl %ebp, %eax
jne 0x69652
pushq $0x1
popq %rax
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
movq 0xc4989(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x60a2d(%rip), %rsi     # 0xca066
leaq 0x6d3b6(%rip), %rdx     # 0xd69f6
leaq 0x7558d(%rip), %rcx     # 0xdebd4
leaq 0x7559b(%rip), %r8      # 0xdebe9
pushq $0x25
jmp 0x6967a
movq 0xc495f(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x60a03(%rip), %rsi     # 0xca066
leaq 0x74771(%rip), %rdx     # 0xddddb
leaq 0x75563(%rip), %rcx     # 0xdebd4
leaq 0x75571(%rip), %r8      # 0xdebe9
pushq $0x34
popq %r9
xorl %eax, %eax
callq 0xb8c0
callq 0xb300
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/gtlua/mathsupport_lua.c
// Function: gt_lua_open_mathsupport
int gt_lua_open_mathsupport(lua_State *L)
{
#ifndef NDEBUG
  int stack_size;
#endif
  gt_assert(L);
#ifndef NDEBUG
  stack_size = lua_gettop(L);
#endif
  luaL_register(L, "gt", mathsupport_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 0x696d1
movq %rdi, %rbx
callq 0x377ed
movl %eax, %ebp
leaq 0x80bd6(%rip), %rsi     # 0xea277
leaq 0xc34b8(%rip), %rdx     # 0x12cb60
movq %rbx, %rdi
callq 0x3b11b
pushq $-0x2
popq %rsi
movq %rbx, %rdi
callq 0x377fa
movq %rbx, %rdi
callq 0x377ed
cmpl %ebp, %eax
jne 0x696fb
pushq $0x1
popq %rax
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
movq 0xc48e0(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x60984(%rip), %rsi     # 0xca066
leaq 0x6d30d(%rip), %rdx     # 0xd69f6
leaq 0x7550f(%rip), %rcx     # 0xdebff
leaq 0x75520(%rip), %r8      # 0xdec17
pushq $0x28
jmp 0x69723
movq 0xc48b6(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x6095a(%rip), %rsi     # 0xca066
leaq 0x746c8(%rip), %rdx     # 0xddddb
leaq 0x754e5(%rip), %rcx     # 0xdebff
leaq 0x754f6(%rip), %r8      # 0xdec17
pushq $0x2e
popq %r9
xorl %eax, %eax
callq 0xb8c0
callq 0xb300
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/gtlua/range_lua.c
// Function: gt_lua_open_range
int gt_lua_open_range(lua_State *L)
{
#ifndef NDEBUG
  int stack_size;
#endif
  gt_assert(L);
#ifndef NDEBUG
  stack_size = lua_gettop(L);
#endif
  luaL_newmetatable(L, RANGE_METATABLE);
  /* metatable.__index = metatable */
  lua_pushvalue(L, -1); /* duplicate the metatable */
  lua_setfield(L, -2, "__index");
  /* set its _tostring field */
  lua_pushstring(L, "__tostring");
  lua_pushcfunction(L, range_lua_tostring);
  lua_settable(L, -3);
  /* set its _eq field */
  lua_pushstring(L, "__eq");
  lua_pushcfunction(L, range_lua_eq);
  lua_settable(L, -3);
  /* register functions */
  luaL_register(L, NULL, range_lib_m);
  gt_lua_export_metatable(L, RANGE_METATABLE);
  luaL_register(L, "gt", range_lib_f);
  lua_pop(L, 1);
  gt_assert(lua_gettop(L) == stack_size);
  return 1;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
testq %rdi, %rdi
je 0x69879
movq %rdi, %rbx
callq 0x377ed
movl %eax, %ebp
leaq 0x750e3(%rip), %r14     # 0xde881
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3ae16
pushq $-0x1
popq %rsi
movq %rbx, %rdi
callq 0x37b39
leaq 0x6dac3(%rip), %rdx     # 0xd727e
pushq $-0x2
popq %r15
movq %rbx, %rdi
movl %r15d, %esi
callq 0x38f41
leaq 0x6de3e(%rip), %rsi     # 0xd760f
movq %rbx, %rdi
callq 0x38431
leaq 0xff(%rip), %rsi        # 0x698df
movq %rbx, %rdi
xorl %edx, %edx
callq 0x38814
pushq $-0x3
popq %r12
movq %rbx, %rdi
movl %r12d, %esi
callq 0x38d5e
leaq 0x6da98(%rip), %rsi     # 0xd7298
movq %rbx, %rdi
callq 0x38431
leaq 0x128(%rip), %rsi       # 0x69937
movq %rbx, %rdi
xorl %edx, %edx
callq 0x38814
movq %rbx, %rdi
movl %r12d, %esi
callq 0x38d5e
leaq 0xc3355(%rip), %rdx     # 0x12cb80
movq %rbx, %rdi
xorl %esi, %esi
callq 0x3b11b
movq %rbx, %rdi
movq %r14, %rsi
callq 0x88975
leaq 0x80a30(%rip), %rsi     # 0xea277
leaq 0xc33c2(%rip), %rdx     # 0x12cc10
movq %rbx, %rdi
callq 0x3b11b
movq %rbx, %rdi
movl %r15d, %esi
callq 0x377fa
movq %rbx, %rdi
callq 0x377ed
cmpl %ebp, %eax
jne 0x698a7
pushq $0x1
popq %rax
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movq 0xc4738(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x607dc(%rip), %rsi     # 0xca066
leaq 0x6d165(%rip), %rdx     # 0xd69f6
leaq 0x7539b(%rip), %rcx     # 0xdec33
leaq 0x753a6(%rip), %r8      # 0xdec45
movl $0xef, %r9d
jmp 0x698d3
movq 0xc470a(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x607ae(%rip), %rsi     # 0xca066
leaq 0x7451c(%rip), %rdx     # 0xddddb
leaq 0x7536d(%rip), %rcx     # 0xdec33
leaq 0x75378(%rip), %r8      # 0xdec45
movl $0x104, %r9d            # imm = 0x104
xorl %eax, %eax
callq 0xb8c0
callq 0xb300
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/gtlua/range_lua.c
// Function: range_lua_tostring
static int range_lua_tostring(lua_State *L)
{
  GtRange *range;
  char buf[BUFSIZ];
  range = check_range(L, 1);
  (void) snprintf(buf, BUFSIZ, GT_WU "-" GT_WU, range->start, range->end);
  lua_pushstring(L, buf);
  return 1;
}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
subq $0x2000, %rsp           # imm = 0x2000
movq %rdi, %rbx
leaq 0x74f8d(%rip), %rdx     # 0xde881
pushq $0x1
popq %rbp
movl %ebp, %esi
callq 0x3ae77
movq (%rax), %rcx
movq 0x8(%rax), %r8
leaq 0x74f06(%rip), %rdx     # 0xde812
movq %rsp, %r14
movl $0x2000, %esi           # imm = 0x2000
movq %r14, %rdi
xorl %eax, %eax
callq 0xba00
movq %rbx, %rdi
movq %r14, %rsi
callq 0x38431
movl %ebp, %eax
addq $0x2000, %rsp           # imm = 0x2000
popq %rbx
popq %r14
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/gtlua/range_lua.c
// Function: range_lua_eq
static int range_lua_eq(lua_State *L)
{
  GtRange *range_a, *range_b;
  bool ret = false;
  range_a = check_range(L, 1);
  range_b = check_range(L, 2);
  if (gt_range_compare(range_a, range_b) == 0)
    ret = true;
  lua_pushboolean(L, ret);
  return 1;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %r14
leaq 0x74f38(%rip), %r15     # 0xde881
pushq $0x1
popq %rbx
movl %ebx, %esi
movq %r15, %rdx
callq 0x3ae77
movq %rax, %r12
pushq $0x2
popq %rsi
movq %r14, %rdi
movq %r15, %rdx
callq 0x3ae77
movq %r12, %rdi
movq %rax, %rsi
callq 0x5cec8
xorl %esi, %esi
testl %eax, %eax
sete %sil
movq %r14, %rdi
callq 0x388fa
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/range_lua.c
// Function: gt_lua_range_push
int gt_lua_range_push(lua_State *L, GtRange inrange)
{
  GtRange *outrange;
  gt_assert(L);
  outrange = lua_newuserdata(L, sizeof (GtRange));
  *outrange = inrange;
  luaL_getmetatable(L, RANGE_METATABLE);
  lua_setmetatable(L, -2);
  return 1;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
testq %rdi, %rdi
je 0x699da
movq %rdx, %r14
movq %rsi, %r15
movq %rdi, %rbx
pushq $0x10
popq %rsi
callq 0x39c01
movq %r15, (%rax)
movq %r14, 0x8(%rax)
leaq 0x74ec8(%rip), %rdx     # 0xde881
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 0xc45d7(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x6067b(%rip), %rsi     # 0xca066
leaq 0x6d004(%rip), %rdx     # 0xd69f6
leaq 0x75262(%rip), %rcx     # 0xdec5b
leaq 0x75245(%rip), %r8      # 0xdec45
movl $0x10b, %r9d            # imm = 0x10B
xorl %eax, %eax
callq 0xb8c0
callq 0xb300
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/gtlua/range_lua.c
// Function: range_lua_overlap
static int range_lua_overlap(lua_State *L)
{
  GtRange *range_a, *range_b;
  range_a = check_range(L, 1);
  range_b = check_range(L, 2);
  lua_pushboolean(L, gt_range_overlap(range_a, range_b));
  return 1;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
leaq 0x74e07(%rip), %r14     # 0xde881
pushq $0x1
popq %rbp
movl %ebp, %esi
movq %r14, %rdx
callq 0x3ae77
movq %rax, %r15
pushq $0x2
popq %rsi
movq %rbx, %rdi
movq %r14, %rdx
callq 0x3ae77
movq %r15, %rdi
movq %rax, %rsi
callq 0x5d0a4
movzbl %al, %esi
movq %rbx, %rdi
callq 0x388fa
movl %ebp, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/gtlua/range_lua.c
// Function: range_lua_overlap_delta
static int range_lua_overlap_delta(lua_State *L)
{
  GtRange *range_a, *range_b;
  GtUword delta;
  range_a = check_range(L, 1);
  range_b = check_range(L, 2);
  delta = luaL_checklong(L, 3);
  lua_pushboolean(L, gt_range_overlap_delta(range_a, range_b, delta));
  return 1;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %r14
leaq 0x74db4(%rip), %r15     # 0xde881
pushq $0x1
popq %rbx
movl %ebx, %esi
movq %r15, %rdx
callq 0x3ae77
movq %rax, %r12
pushq $0x2
popq %rsi
movq %r14, %rdi
movq %r15, %rdx
callq 0x3ae77
movq %rax, %r15
pushq $0x3
popq %rsi
movq %r14, %rdi
callq 0x3b001
movq %r12, %rdi
movq %r15, %rsi
movq %rax, %rdx
callq 0x5d102
movzbl %al, %esi
movq %r14, %rdi
callq 0x388fa
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/range_lua.c
// Function: range_lua_join
static int range_lua_join(lua_State *L)
{
  GtRange *final_range, tmp_rng, *range_a, *range_b;
  range_a = check_range(L, 1);
  range_b = check_range(L, 2);
  final_range = lua_newuserdata(L, sizeof (GtRange));
  tmp_rng = gt_range_join(range_a, range_b);
  final_range->start = tmp_rng.start;
  final_range->end   = tmp_rng.end;
  luaL_getmetatable(L, RANGE_METATABLE);
  lua_setmetatable(L, -2);
  return 1;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %r14
leaq 0x74d19(%rip), %r15     # 0xde881
pushq $0x1
popq %rbx
movl %ebx, %esi
movq %r15, %rdx
callq 0x3ae77
movq %rax, %r12
pushq $0x2
popq %rsi
movq %r14, %rdi
movq %r15, %rdx
callq 0x3ae77
movq %rax, %r13
pushq $0x10
popq %rsi
movq %r14, %rdi
callq 0x39c01
movq %rax, %rbp
movq %r12, %rdi
movq %r13, %rsi
callq 0x5d269
movq %rax, (%rbp)
movq %rdx, 0x8(%rbp)
movq %r14, %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
movq %r15, %rdx
callq 0x38a63
pushq $-0x2
popq %rsi
movq %r14, %rdi
callq 0x3914f
movl %ebx, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/gtlua/range_lua.c
// Function: range_lua_contains
static int range_lua_contains(lua_State *L)
{
  GtRange *range_a, *range_b;
  range_a = check_range(L, 1);
  range_b = check_range(L, 2);
  lua_pushboolean(L, gt_range_contains(range_a, range_b));
  return 1;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
leaq 0x74c9a(%rip), %r14     # 0xde881
pushq $0x1
popq %rbp
movl %ebp, %esi
movq %r14, %rdx
callq 0x3ae77
movq %rax, %r15
pushq $0x2
popq %rsi
movq %rbx, %rdi
movq %r14, %rdx
callq 0x3ae77
movq %r15, %rdi
movq %rax, %rsi
callq 0x5d1b5
movzbl %al, %esi
movq %rbx, %rdi
callq 0x388fa
movl %ebp, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/gtlua/range_lua.c
// Function: range_lua_within
static int range_lua_within(lua_State *L)
{
  GtRange *range;
  long point;
  range = check_range(L, 1);
  point = luaL_checklong(L, 2);
  luaL_argcheck(L, point > 0, 2, "must be > 0");
  lua_pushboolean(L, gt_range_within(range, point));
  return 1;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rdi, %rbx
leaq 0x74c4a(%rip), %rdx     # 0xde881
pushq $0x1
popq %rsi
callq 0x3ae77
movq %rax, %r14
pushq $0x2
popq %rsi
movq %rbx, %rdi
callq 0x3b001
movq %rax, %r15
testq %rax, %rax
jg 0x69c67
leaq 0x74e7a(%rip), %rdx     # 0xdead6
pushq $0x2
popq %rsi
movq %rbx, %rdi
callq 0x3ab1c
movq %r14, %rdi
movq %r15, %rsi
callq 0x5d215
movzbl %al, %esi
movq %rbx, %rdi
callq 0x388fa
pushq $0x1
popq %rax
popq %rbx
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/gtlua/range_lua.c
// Function: range_lua_new
static int range_lua_new(lua_State *L)
{
  GtUword startpos, endpos;
  GtRange *range;
  startpos = luaL_checklong(L, 1);
  endpos   = luaL_checklong(L, 2);
  luaL_argcheck(L, startpos > 0, 1, "must be > 0");
  luaL_argcheck(L, endpos > 0, 2, "must be > 0");
  luaL_argcheck(L, startpos <= endpos, 1, "must be <= endpos");
  range = lua_newuserdata(L, sizeof (GtRange));
  range->start = startpos;
  range->end   = endpos;
  luaL_getmetatable(L, RANGE_METATABLE);
  lua_setmetatable(L, -2);
  return 1;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rdi, %rbx
pushq $0x1
popq %rsi
callq 0x3b001
movq %rax, %r14
pushq $0x2
popq %rsi
movq %rbx, %rdi
callq 0x3b001
movq %rax, %r15
testq %r14, %r14
jne 0x69cbe
leaq 0x74e23(%rip), %rdx     # 0xdead6
pushq $0x1
popq %rsi
movq %rbx, %rdi
callq 0x3ab1c
testq %r15, %r15
jne 0x69cd5
leaq 0x74e0c(%rip), %rdx     # 0xdead6
pushq $0x2
popq %rsi
movq %rbx, %rdi
callq 0x3ab1c
cmpq %r15, %r14
jbe 0x69cec
leaq 0x74e01(%rip), %rdx     # 0xdeae2
pushq $0x1
popq %rsi
movq %rbx, %rdi
callq 0x3ab1c
pushq $0x10
popq %rsi
movq %rbx, %rdi
callq 0x39c01
movq %r14, (%rax)
movq %r15, 0x8(%rax)
leaq 0x74b7c(%rip), %rdx     # 0xde881
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
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/gtlua/range_lua.c
// Function: ranges_lua_sort
static int ranges_lua_sort(lua_State *L)
{
  GtArray *ranges;
  ranges = range_table_to_array(L);
  gt_ranges_sort(ranges);
  push_range_array_as_table(L, ranges);
  gt_array_delete(ranges);
  return 1;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movq %rdi, %r14
callq 0x69dfb
movq %rax, %rbx
movq %rax, %rdi
callq 0x5db48
testq %rbx, %rbx
je 0x69daa
movq %rbx, %rdi
callq 0x4b988
testq %rax, %rax
je 0x69daa
xorl %r15d, %r15d
movq %r14, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x38be5
pushq $-0x3
popq %rbp
movq %rbx, %rdi
callq 0x4b988
cmpq %rax, %r15
jae 0x69db2
leaq 0x1(%r15), %r12
movq %r14, %rdi
movq %r12, %rsi
callq 0x38270
movq %rbx, %rdi
movq %r15, %rsi
callq 0x4b48e
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq %r14, %rdi
callq 0x69990
movq %r14, %rdi
movl %ebp, %esi
callq 0x38f9d
movq %r12, %r15
jmp 0x69d65
movq %r14, %rdi
callq 0x3824a
movq %rbx, %rdi
callq 0x4c19d
pushq $0x1
popq %rax
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/gtlua/range_lua.c
// Function: ranges_lua_are_sorted
static int ranges_lua_are_sorted(lua_State *L)
{
  GtArray *ranges;
  bool are_sorted;
  ranges = range_table_to_array(L);
  are_sorted = gt_ranges_are_sorted(ranges);
  gt_array_delete(ranges);
  lua_pushboolean(L, are_sorted);
  return 1;
}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
movq %rdi, %rbx
callq 0x69dfb
movq %rax, %r14
movq %rax, %rdi
callq 0x5dc28
movl %eax, %ebp
movq %r14, %rdi
callq 0x4c19d
movzbl %bpl, %esi
movq %rbx, %rdi
callq 0x388fa
pushq $0x1
popq %rax
popq %rbx
popq %r14
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/gtlua/range_lua.c
// Function: range_table_to_array
static GtArray* range_table_to_array(lua_State *L)
{
  lua_Integer i = 1;
  GtArray *ranges;
  GtRange *range;
  GT_UNUSED const char *msg;
  bool error;
  /* make sure we got a table as first argument */
  luaL_checktype(L, 1, LUA_TTABLE);
  /* traverse table and save the ranges */
  ranges = gt_array_new(sizeof (GtRange));
  lua_pushinteger(L, i);
  lua_gettable(L, 1);
  while (!lua_isnil(L, -1)) {
    error = false;
    range = lua_touserdata(L, -1);
    if (range && lua_getmetatable(L, -1)) {
      lua_getfield(L, LUA_REGISTRYINDEX, RANGE_METATABLE);
      if (lua_rawequal(L, -1, -2)) {
        lua_pop(L, 2); /* remove both metatables */
        gt_array_add(ranges, *range);
      }
      else
        error = true;
    }
    else
      error = true;
    if (error) {
      /* we have a non range in the table */
      msg = lua_pushfstring(L, "expected %s as type of table entry %d",
                            RANGE_METATABLE, i);
      gt_array_delete(ranges);
      lua_error(L);
    }
    i++;
    lua_pop(L, 1); /* pop last result */
    lua_pushinteger(L, i);
    lua_gettable(L, 1);
  }
  return ranges;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
pushq $0x1
popq %rsi
pushq $0x5
popq %rdx
callq 0x3af12
pushq $0x10
popq %rdi
callq 0x4b380
movq %rax, %r15
pushq $0x1
popq %r12
pushq $-0x1
popq %r13
pushq $-0x2
popq %rbp
movq %rbx, %rdi
movq %r12, %rsi
callq 0x38270
movq %rbx, %rdi
pushq $0x1
popq %rsi
callq 0x3894c
movq %rbx, %rdi
movl %r13d, %esi
callq 0x37b59
testl %eax, %eax
je 0x69ef2
movq %rbx, %rdi
movl %r13d, %esi
callq 0x381c6
testq %rax, %rax
je 0x69eb5
movq %rax, %r14
movq %rbx, %rdi
movl %r13d, %esi
callq 0x38cb7
testl %eax, %eax
je 0x69eb5
movq %rbx, %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
leaq 0x749fd(%rip), %rdx     # 0xde881
callq 0x38a63
movq %rbx, %rdi
movl %r13d, %esi
movl %ebp, %edx
callq 0x37c5c
testl %eax, %eax
je 0x69eb5
movq %rbx, %rdi
pushq $-0x3
popq %rsi
callq 0x377fa
movq %r15, %rdi
movq %r14, %rsi
pushq $0x10
popq %rdx
callq 0x4b801
jmp 0x69ee0
movq %rbx, %rdi
leaq 0x74dca(%rip), %rsi     # 0xdec89
leaq 0x749bb(%rip), %rdx     # 0xde881
movq %r12, %rcx
xorl %eax, %eax
callq 0x38764
movq %r15, %rdi
callq 0x4c19d
movq %rbx, %rdi
callq 0x3972e
incq %r12
movq %rbx, %rdi
movl %ebp, %esi
callq 0x377fa
jmp 0x69e2a
movq %r15, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/gtlua/region_mapping_lua.c
// Function: gt_lua_region_mapping_push
void gt_lua_region_mapping_push(lua_State *L, GtRegionMapping *rm)
{
  GtRegionMapping **rm_lua;
  gt_assert(L && rm);
  rm_lua = lua_newuserdata(L, sizeof (GtRegionMapping**));
  *rm_lua = rm;
  luaL_getmetatable(L, REGION_MAPPING_METATABLE);
  lua_setmetatable(L, -2);
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
testq %rdi, %rdi
je 0x69f49
movq %rsi, %r14
testq %rsi, %rsi
je 0x69f49
movq %rdi, %rbx
pushq $0x8
popq %rsi
callq 0x39c01
movq %r14, (%rax)
leaq 0x74b1a(%rip), %rdx     # 0xdea44
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 0xc4068(%rip), %rax     # 0x12dfb8
movq (%rax), %rdi
leaq 0x6010c(%rip), %rsi     # 0xca066
leaq 0x74d4e(%rip), %rdx     # 0xdecaf
leaq 0x74d4f(%rip), %rcx     # 0xdecb7
leaq 0x74d63(%rip), %r8      # 0xdecd2
movl $0xcc, %r9d
xorl %eax, %eax
callq 0xb8c0
callq 0xb300