LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/spec_visitor.c
// Function: spec_feature_node_lua_appears_as_root_node
static int spec_feature_node_lua_appears_as_root_node(lua_State *L)
{
  GtGenomeNode **gn;
  GtFeatureNode *fn;
  GtSpecVisitor *sv;
  bool result = false;
  gn = check_genome_node(L, 1);
  /* make sure we get a feature node */
  fn = gt_feature_node_try_cast(*gn);
  luaL_argcheck(L, fn, 1, "not a feature node");

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

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

  return 1;
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
leaq 0x2174d4(%rip), %rdx    # 0x333d68
pushq $0x1
popq %rsi
callq 0x1dea4f
movq (%rax), %rdi
callq 0xdc2f0
testq %rax, %rax
jne 0x11c8bb
leaq 0x217548(%rip), %rdx    # 0x333df8
pushq $0x1
popq %rsi
movq %rbx, %rdi
callq 0x1de6f4
leaq 0x31c8e6(%rip), %rsi    # 0x4391a8
movq %rbx, %rdi
callq 0x1dc4ec
movq %rbx, %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x1dc524
pushq $-0x1
popq %rsi
movq %rbx, %rdi
callq 0x1dbd9e
testq %rax, %rax
je 0x11c90b
movq 0x60(%rax), %rdi
testq %rdi, %rdi
je 0x11c90b
callq 0x586a4
xorl %esi, %esi
testq %rax, %rax
sete %sil
movq %rbx, %rdi
callq 0x1dc4d2
pushq $0x1
popq %rax
popq %rbx
retq
movq 0x31b656(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1c86f7(%rip), %rsi    # 0x2e5013
leaq 0x217550(%rip), %rdx    # 0x333e73
leaq 0x217592(%rip), %rcx    # 0x333ebc
leaq 0x2172b5(%rip), %r8     # 0x333be6
movl $0x2b0, %r9d            # imm = 0x2B0
xorl %eax, %eax
callq 0x17a50
callq 0x17390
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/spec_visitor.c
// Function: spec_feature_node_get_path
static int spec_feature_node_get_path(lua_State *L)
{
  GtGenomeNode **gn;
  GtFeatureNode *fn;
  GtSpecVisitor *sv;
  GtUword i, j = 0;
  gn = check_genome_node(L, 1);
  /* make sure we get a feature node */
  fn = gt_feature_node_try_cast(*gn);
  luaL_argcheck(L, fn, 1, "not a feature node");

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

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

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
leaq 0x217255(%rip), %rdx    # 0x333d68
pushq $0x1
popq %rsi
callq 0x1dea4f
movq (%rax), %rdi
callq 0xdc2f0
testq %rax, %rax
jne 0x11cb3a
leaq 0x2172c9(%rip), %rdx    # 0x333df8
pushq $0x1
popq %rsi
movq %rbx, %rdi
callq 0x1de6f4
leaq 0x31c667(%rip), %rsi    # 0x4391a8
movq %rbx, %rdi
callq 0x1dc4ec
movq %rbx, %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x1dc524
pushq $-0x1
popq %rsi
movq %rbx, %rdi
callq 0x1dbd9e
movq %rax, %r14
movq %rbx, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x1dc7bd
testq %r14, %r14
je 0x11cc01
movq 0x60(%r14), %rdi
testq %rdi, %rdi
je 0x11cc01
callq 0x586a4
testq %rax, %rax
je 0x11cbef
movq 0x60(%r14), %rdi
callq 0x586a4
movq %rax, %r15
movq %rax, %rbp
negq %rbp
decq %r15
pushq $0x1
popq %r12
leaq (%r12,%rbp), %rax
cmpq $0x1, %rax
je 0x11cbef
movq 0x60(%r14), %rdi
movq %r15, %rsi
callq 0x581aa
movq (%rax), %r13
movq %rbx, %rdi
movq %r12, %rsi
callq 0x1dbe48
movq %r13, %rdi
callq 0xdccf8
movq %rbx, %rdi
movq %rax, %rsi
callq 0x12f524
movq %rbx, %rdi
pushq $-0x3
popq %rsi
callq 0x1dcb75
incq %r12
decq %r15
jmp 0x11cba5
pushq $0x1
popq %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x31b360(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1c8401(%rip), %rsi    # 0x2e5013
leaq 0x21725a(%rip), %rdx    # 0x333e73
leaq 0x217345(%rip), %rcx    # 0x333f65
leaq 0x216fbf(%rip), %r8     # 0x333be6
movl $0x255, %r9d            # imm = 0x255
xorl %eax, %eax
callq 0x17a50
callq 0x17390
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/spec_visitor.c
// Function: spec_is_a
static int spec_is_a(lua_State *L)
{
  GtSpecVisitor *sv;
  const char *child, *parent;
  bool result = false;
  child = gt_symbol(luaL_checkstring(L, 1));
  parent = gt_symbol(luaL_checkstring(L, 2));

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

  if (!sv->type_checker) {
    luaL_where(L, 1);
    lua_pushstring(L, "'string.is_a()' requires a type "
                      "checker (-typecheck)");
    lua_concat(L, 2);
    return lua_error(L);
  }

  if (sv->type_checker) {
    luaL_argcheck(L, gt_type_checker_is_valid(sv->type_checker, child),
                  1, "not a valid SO type");
    luaL_argcheck(L, gt_type_checker_is_valid(sv->type_checker, parent),
                  2, "not a valid SO type");
    result = gt_type_checker_is_a(sv->type_checker, parent, child);
  } else {
    result = (child == parent);
  }
  lua_pushboolean(L, result);

  return 1;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
pushq $0x1
popq %rsi
xorl %edx, %edx
callq 0x1de9c6
movq %rax, %rdi
callq 0xaed4b
movq %rax, %r14
pushq $0x2
popq %rsi
movq %rbx, %rdi
xorl %edx, %edx
callq 0x1de9c6
movq %rax, %rdi
callq 0xaed4b
movq %rax, %r15
leaq 0x31c530(%rip), %rsi    # 0x4391a8
movq %rbx, %rdi
callq 0x1dc4ec
movq %rbx, %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x1dc524
pushq $-0x1
popq %rsi
movq %rbx, %rdi
callq 0x1dbd9e
testq %rax, %rax
je 0x11cd50
movq %rax, %r12
movq 0x28(%rax), %rdi
testq %rdi, %rdi
je 0x11cd18
movq %r14, %rsi
callq 0x12a6ec
testb %al, %al
jne 0x11cccb
leaq 0x21719f(%rip), %rdx    # 0x333e5f
pushq $0x1
popq %rsi
movq %rbx, %rdi
callq 0x1de6f4
movq 0x28(%r12), %rdi
movq %r15, %rsi
callq 0x12a6ec
testb %al, %al
jne 0x11ccee
leaq 0x21717c(%rip), %rdx    # 0x333e5f
pushq $0x2
popq %rsi
movq %rbx, %rdi
callq 0x1de6f4
movq 0x28(%r12), %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0x12a7e3
movzbl %al, %esi
movq %rbx, %rdi
callq 0x1dc4d2
pushq $0x1
popq %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
pushq $0x1
popq %rsi
movq %rbx, %rdi
callq 0x1de895
leaq 0x217260(%rip), %rsi    # 0x333f8a
movq %rbx, %rdi
callq 0x1dc009
pushq $0x2
popq %rsi
movq %rbx, %rdi
callq 0x1dd50a
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0x1dd306
movq 0x31b211(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1c82b2(%rip), %rsi    # 0x2e5013
leaq 0x2181a3(%rip), %rdx    # 0x334f0b
leaq 0x217211(%rip), %rcx    # 0x333f80
leaq 0x216e70(%rip), %r8     # 0x333be6
movl $0x2f3, %r9d            # imm = 0x2F3
xorl %eax, %eax
callq 0x17a50
callq 0x17390
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/spec_visitor.c
// Function: spec_part_of
static int spec_part_of(lua_State *L)
{
  GtSpecVisitor *sv;
  const char *child, *parent;
  bool result = false;
  child = gt_symbol(luaL_checkstring(L, 1));
  parent = gt_symbol(luaL_checkstring(L, 2));

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

  if (!sv->type_checker) {
    luaL_where(L, 1);
    lua_pushstring(L, "'string.part_of()' requires a type "
                      "checker (-typecheck)");
    lua_concat(L, 2);
    return lua_error(L);
  }

  luaL_argcheck(L, gt_type_checker_is_valid(sv->type_checker, child),
                1, "not a valid SO type");
  luaL_argcheck(L, gt_type_checker_is_valid(sv->type_checker, parent),
                2, "not a valid SO type");
  result = gt_type_checker_is_partof(sv->type_checker, parent, child);
  lua_pushboolean(L, result);

  return 1;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
pushq $0x1
popq %rsi
xorl %edx, %edx
callq 0x1de9c6
movq %rax, %rdi
callq 0xaed4b
movq %rax, %r14
pushq $0x2
popq %rsi
movq %rbx, %rdi
xorl %edx, %edx
callq 0x1de9c6
movq %rax, %rdi
callq 0xaed4b
movq %rax, %r15
leaq 0x31c3e1(%rip), %rsi    # 0x4391a8
movq %rbx, %rdi
callq 0x1dc4ec
movq %rbx, %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x1dc524
pushq $-0x1
popq %rsi
movq %rbx, %rdi
callq 0x1dbd9e
testq %rax, %rax
je 0x11ce9f
movq %rax, %r12
movq 0x28(%rax), %rdi
testq %rdi, %rdi
je 0x11ce67
movq %r14, %rsi
callq 0x12a6ec
testb %al, %al
jne 0x11ce1a
leaq 0x217050(%rip), %rdx    # 0x333e5f
pushq $0x1
popq %rsi
movq %rbx, %rdi
callq 0x1de6f4
movq 0x28(%r12), %rdi
movq %r15, %rsi
callq 0x12a6ec
testb %al, %al
jne 0x11ce3d
leaq 0x21702d(%rip), %rdx    # 0x333e5f
pushq $0x2
popq %rsi
movq %rbx, %rdi
callq 0x1de6f4
movq 0x28(%r12), %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0x12a794
movzbl %al, %esi
movq %rbx, %rdi
callq 0x1dc4d2
pushq $0x1
popq %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
pushq $0x1
popq %rsi
movq %rbx, %rdi
callq 0x1de895
leaq 0x217153(%rip), %rsi    # 0x333fcc
movq %rbx, %rdi
callq 0x1dc009
pushq $0x2
popq %rsi
movq %rbx, %rdi
callq 0x1dd50a
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0x1dd306
movq 0x31b0c2(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1c8163(%rip), %rsi    # 0x2e5013
leaq 0x218054(%rip), %rdx    # 0x334f0b
leaq 0x217101(%rip), %rcx    # 0x333fbf
leaq 0x216d21(%rip), %r8     # 0x333be6
movl $0x316, %r9d            # imm = 0x316
xorl %eax, %eax
callq 0x17a50
callq 0x17390
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/spec_visitor.c
// Function: spec_register_feature_callback
static int spec_register_feature_callback(lua_State *L)
{
  int ref, *refptr;
  const char *type;
  GtSpecVisitor *sv;

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

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x1df200
movl %eax, %ebp
pushq $-0x1
popq %r15
movq %rbx, %rdi
movl %r15d, %esi
xorl %edx, %edx
callq 0x1dbb73
movq %rax, %r14
leaq 0x2170fc(%rip), %rdi    # 0x334004
movq %rax, %rsi
movl %ebp, %edx
xorl %eax, %eax
callq 0x92a82
leaq 0x31c28d(%rip), %rsi    # 0x4391a8
movq %rbx, %rdi
callq 0x1dc4ec
movq %rbx, %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x1dc524
movq %rbx, %rdi
movl %r15d, %esi
callq 0x1dbd9e
movq %rax, %r15
movq 0x20(%rax), %rdi
movq %r14, %rsi
callq 0x8f482
testq %rax, %rax
je 0x11cfa0
pushq $0x1
popq %rsi
movq %rbx, %rdi
callq 0x1de895
leaq 0x2170d3(%rip), %rsi    # 0x334034
movq %rbx, %rdi
callq 0x1dc009
movq %rbx, %rdi
movq %r14, %rsi
callq 0x1dc009
leaq 0x1f60d1(%rip), %rsi    # 0x31304c
movq %rbx, %rdi
callq 0x1dc009
pushq $0x4
popq %rsi
movq %rbx, %rdi
callq 0x1dd50a
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x1dd306
leaq 0x216c3f(%rip), %rsi    # 0x333be6
pushq $0x4
popq %rdi
movl $0x13d, %edx            # imm = 0x13D
callq 0x93160
movq %rax, %rbx
movl %ebp, (%rax)
movq 0x20(%r15), %r15
movq %r14, %rdi
callq 0x6c2be
movq %r15, %rdi
movq %rax, %rsi
movq %rbx, %rdx
callq 0x8f4bd
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/spec_visitor.c
// Function: spec_register_region_callback
static int spec_register_region_callback(lua_State *L)
{
  int ref;
  GtSpecVisitor *sv;

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

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x1df200
movl %eax, %ebp
leaq 0x31c1ab(%rip), %rsi    # 0x4391a8
movq %rbx, %rdi
callq 0x1dc4ec
movq %rbx, %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x1dc524
pushq $-0x1
popq %rsi
movq %rbx, %rdi
callq 0x1dbd9e
xorl %r15d, %r15d
cmpl 0x34(%rax), %r15d
jno 0x11d04f
movq %rax, %r14
movl %ebp, 0x34(%rax)
leaq 0x217031(%rip), %rdi    # 0x334064
movl %ebp, %esi
xorl %eax, %eax
callq 0x92a82
cmpl 0x34(%r14), %r15d
jo 0x11d086
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
pushq $0x1
popq %rsi
movq %rbx, %rdi
callq 0x1de895
leaq 0x217063(%rip), %rsi    # 0x3340c4
movq %rbx, %rdi
callq 0x1dc009
pushq $0x2
popq %rsi
movq %rbx, %rdi
callq 0x1dd50a
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x1dd306
movq 0x31aedb(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1c7f7c(%rip), %rsi    # 0x2e5013
leaq 0x216fe9(%rip), %rdx    # 0x334087
leaq 0x217001(%rip), %rcx    # 0x3340a6
leaq 0x216b3a(%rip), %r8     # 0x333be6
movl $0x173, %r9d            # imm = 0x173
xorl %eax, %eax
callq 0x17a50
callq 0x17390
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/spec_visitor.c
// Function: spec_register_meta_callback
static int spec_register_meta_callback(lua_State *L)
{
  int ref;
  GtSpecVisitor *sv;

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

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x1df200
movl %eax, %ebp
leaq 0x31c0cd(%rip), %rsi    # 0x4391a8
movq %rbx, %rdi
callq 0x1dc4ec
movq %rbx, %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x1dc524
pushq $-0x1
popq %rsi
movq %rbx, %rdi
callq 0x1dbd9e
xorl %r15d, %r15d
cmpl 0x30(%rax), %r15d
jno 0x11d12d
movq %rax, %r14
movl %ebp, 0x30(%rax)
leaq 0x216fe1(%rip), %rdi    # 0x3340f2
movl %ebp, %esi
xorl %eax, %eax
callq 0x92a82
cmpl 0x30(%r14), %r15d
jo 0x11d164
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
pushq $0x1
popq %rsi
movq %rbx, %rdi
callq 0x1de895
leaq 0x21700d(%rip), %rsi    # 0x33414c
movq %rbx, %rdi
callq 0x1dc009
pushq $0x2
popq %rsi
movq %rbx, %rdi
callq 0x1dd50a
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x1dd306
movq 0x31adfd(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1c7e9e(%rip), %rsi    # 0x2e5013
leaq 0x216f97(%rip), %rdx    # 0x334113
leaq 0x216fad(%rip), %rcx    # 0x334130
leaq 0x216a5c(%rip), %r8     # 0x333be6
movl $0x15a, %r9d            # imm = 0x15A
xorl %eax, %eax
callq 0x17a50
callq 0x17390
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/spec_visitor.c
// Function: spec_register_comment_callback
static int spec_register_comment_callback(lua_State *L)
{
  int ref;
  GtSpecVisitor *sv;

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

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x1df200
movl %eax, %ebp
leaq 0x31bfef(%rip), %rsi    # 0x4391a8
movq %rbx, %rdi
callq 0x1dc4ec
movq %rbx, %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x1dc524
pushq $-0x1
popq %rsi
movq %rbx, %rdi
callq 0x1dbd9e
xorl %r15d, %r15d
cmpl 0x38(%rax), %r15d
jno 0x11d20b
movq %rax, %r14
movl %ebp, 0x38(%rax)
leaq 0x216f89(%rip), %rdi    # 0x334178
movl %ebp, %esi
xorl %eax, %eax
callq 0x92a82
cmpl 0x38(%r14), %r15d
jo 0x11d242
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
pushq $0x1
popq %rsi
movq %rbx, %rdi
callq 0x1de895
leaq 0x216fbe(%rip), %rsi    # 0x3341db
movq %rbx, %rdi
callq 0x1dc009
pushq $0x2
popq %rsi
movq %rbx, %rdi
callq 0x1dd50a
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x1dd306
movq 0x31ad1f(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1c7dc0(%rip), %rsi    # 0x2e5013
leaq 0x216f42(%rip), %rdx    # 0x33419c
leaq 0x216f5b(%rip), %rcx    # 0x3341bc
leaq 0x21697e(%rip), %r8     # 0x333be6
movl $0x18c, %r9d            # imm = 0x18C
xorl %eax, %eax
callq 0x17a50
callq 0x17390
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/spec_visitor.c
// Function: spec_register_sequence_callback
static int spec_register_sequence_callback(lua_State *L)
{
  int ref;
  GtSpecVisitor *sv;

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

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x1df200
movl %eax, %ebp
leaq 0x31bf11(%rip), %rsi    # 0x4391a8
movq %rbx, %rdi
callq 0x1dc4ec
movq %rbx, %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x1dc524
pushq $-0x1
popq %rsi
movq %rbx, %rdi
callq 0x1dbd9e
xorl %r15d, %r15d
cmpl 0x3c(%rax), %r15d
jno 0x11d2e9
movq %rax, %r14
movl %ebp, 0x3c(%rax)
leaq 0x216f3d(%rip), %rdi    # 0x33420a
movl %ebp, %esi
xorl %eax, %eax
callq 0x92a82
cmpl 0x3c(%r14), %r15d
jo 0x11d320
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
pushq $0x1
popq %rsi
movq %rbx, %rdi
callq 0x1de895
leaq 0x216f75(%rip), %rsi    # 0x334270
movq %rbx, %rdi
callq 0x1dc009
pushq $0x2
popq %rsi
movq %rbx, %rdi
callq 0x1dd50a
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x1dd306
movq 0x31ac41(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1c7ce2(%rip), %rsi    # 0x2e5013
leaq 0x216ef7(%rip), %rdx    # 0x33422f
leaq 0x216f11(%rip), %rcx    # 0x334250
leaq 0x2168a0(%rip), %r8     # 0x333be6
movl $0x1a5, %r9d            # imm = 0x1A5
xorl %eax, %eax
callq 0x17a50
callq 0x17390
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/spec_visitor.c
// Function: spec_it
static int spec_it(lua_State *L)
{
  const char *name;
  GtSpecVisitor *sv;

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

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

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

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

  sv->current_aspect = NULL;

  return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
pushq $-0x2
popq %rbp
movl %ebp, %esi
xorl %edx, %edx
callq 0x1dbb73
movq %rax, %r15
leaq 0x31be30(%rip), %rsi    # 0x4391a8
movq %rbx, %rdi
callq 0x1dc4ec
movq %rbx, %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x1dc524
pushq $-0x1
popq %rsi
movq %rbx, %rdi
callq 0x1dbd9e
movq %rax, %r14
movq %rbx, %rdi
movl %ebp, %esi
callq 0x1db3d2
movq %r15, 0x50(%r14)
movq %rbx, %rdi
xorl %esi, %esi
xorl %edx, %edx
xorl %ecx, %ecx
callq 0x1dcedd
testl %eax, %eax
je 0x11d3f9
cmpb $0x1, 0x70(%r14)
jne 0x11d3d4
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x1dd306
movq 0x10(%r14), %rdi
pushq $-0x1
popq %rsi
xorl %edx, %edx
callq 0x1dbb73
movq 0x68(%r14), %rdi
movq 0x48(%r14), %rdx
movq 0x50(%r14), %rsi
pushq $0x2
popq %rcx
movq %rax, %r8
callq 0x11a7c0
andq $0x0, 0x50(%r14)
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/spec_visitor.c
// Function: spec_expect
static int spec_expect(lua_State *L)
{
  int ref;
  GtSpecVisitor *sv;

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

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

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

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

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

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

  return 1;
}

// Assembly:
pushq %rbp
pushq %rbx
pushq %rax
movq %rdi, %rbx
callq 0x1db3c5
cmpl $0x2, %eax
jl 0x11d432
pushq $0x1
popq %rsi
movq %rbx, %rdi
callq 0x1de895
leaq 0x216e73(%rip), %rsi    # 0x3342a0
jmp 0x11d4b9
movq %rbx, %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x1df200
movl %eax, %ebp
leaq 0x31bd60(%rip), %rsi    # 0x4391a8
movq %rbx, %rdi
callq 0x1dc4ec
movq %rbx, %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x1dc524
pushq $-0x1
popq %rsi
movq %rbx, %rdi
callq 0x1dbd9e
cmpq $0x0, 0x50(%rax)
je 0x11d4a7
movl %ebp, 0x40(%rax)
movq %rbx, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x1dc7bd
leaq 0x21693b(%rip), %rdx    # 0x333dc0
movq %rbx, %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x1dc63b
pushq $-0x2
popq %rsi
movq %rbx, %rdi
callq 0x1dcd27
pushq $0x1
popq %rax
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
pushq $0x1
popq %rsi
movq %rbx, %rdi
callq 0x1de895
leaq 0x216e09(%rip), %rsi    # 0x3342c2
movq %rbx, %rdi
callq 0x1dc009
pushq $0x2
popq %rsi
movq %rbx, %rdi
callq 0x1dd50a
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0x1dd306
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/spec_visitor.c
// Function: spec_expect_index
static int spec_expect_index(lua_State *L)
{
  const char *matcher_name;
  GtSpecVisitor *sv;

  /* get parameters from stack */
  matcher_name = lua_tostring(L, 2);
  lua_pushlightuserdata(L, (void *) &spec_defuserdata);
  lua_gettable(L, LUA_REGISTRYINDEX);
  sv = lua_touserdata(L, -1);

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

  /* return dispatcher function */
  lua_pushcfunction(L, spec_expect_matchdispatch);

  return 1;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
pushq $0x2
popq %rsi
xorl %edx, %edx
callq 0x1dbb73
movq %rax, %r14
leaq 0x31bcb3(%rip), %rsi    # 0x4391a8
movq %rbx, %rdi
callq 0x1dc4ec
movq %rbx, %rdi
movl $0xffffd8f0, %esi       # imm = 0xFFFFD8F0
callq 0x1dc524
pushq $-0x1
popq %rsi
movq %rbx, %rdi
callq 0x1dbd9e
movq %r14, 0x58(%rax)
leaq 0x1f0(%rip), %rsi       # 0x11d710
movq %rbx, %rdi
xorl %edx, %edx
callq 0x1dc3ec
pushq $0x1
popq %rax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/splice_site_info_stream.c
// Function: gt_splice_site_info_stream_class
const GtNodeStreamClass* gt_splice_site_info_stream_class(void)
{
  static const GtNodeStreamClass *nsc = NULL;
  gt_class_alloc_lock_enter();
  if (!nsc) {
    nsc = gt_node_stream_class_new(sizeof (GtSpliceSiteInfoStream),
                                   gt_splice_site_info_stream_free,
                                   gt_splice_site_info_stream_next);
  }
  gt_class_alloc_lock_leave();
  return nsc;
}

// Assembly:
pushq %rax
callq 0x69e97
cmpq $0x0, 0x31ff1a(%rip)    # 0x43d860
jne 0x11d965
leaq 0x24(%rip), %rsi        # 0x11d973
leaq 0x47(%rip), %rdx        # 0x11d99d
pushq $0x20
popq %rdi
callq 0x102838
movq %rax, 0x31fefb(%rip)    # 0x43d860
callq 0x69ede
movq 0x31feef(%rip), %rax    # 0x43d860
popq %rcx
retq
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/splice_site_info_stream.c
// Function: gt_splice_site_info_stream_next
static int gt_splice_site_info_stream_next(GtNodeStream *ns, GtGenomeNode **gn,
                                           GtError *err)
{
  GtSpliceSiteInfoStream *ssis;
  int had_err;
  gt_error_check(err);
  ssis = gt_splice_site_info_stream_cast(ns);
  had_err = gt_node_stream_next(ssis->in_stream, gn, err);
  if (!had_err) {
    gt_assert(ssis->splice_site_info_visitor);
    if (*gn) {
      had_err = gt_genome_node_accept(*gn, ssis->splice_site_info_visitor, err);
      if (had_err) {
        /* we own the node -> delete it */
        gt_genome_node_delete(*gn);
        *gn = NULL;
      }
    }
  }
  return had_err;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rdx, %r14
movq %rsi, %rbx
movq %rdi, %r15
testq %rdx, %rdx
je 0x11d9be
movq %r14, %rdi
callq 0x89eb7
testb %al, %al
jne 0x11da26
callq 0x11d938
movq %rax, %rdi
movq %r15, %rsi
callq 0x102c81
movq %rax, %r15
movq 0x10(%rax), %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x102a22
movl %eax, %ebp
testl %eax, %eax
je 0x11d9f3
movl %ebp, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq 0x18(%r15), %rsi
testq %rsi, %rsi
je 0x11da50
movq (%rbx), %rdi
xorl %ebp, %ebp
testq %rdi, %rdi
je 0x11d9e6
movq %r14, %rdx
callq 0xdd39c
testl %eax, %eax
je 0x11d9e6
movl %eax, %r14d
movq (%rbx), %rdi
callq 0xde013
andq $0x0, (%rbx)
movl %r14d, %ebp
jmp 0x11d9e6
movq 0x31a53b(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1c75dc(%rip), %rsi    # 0x2e5013
leaq 0x1c7781(%rip), %rdx    # 0x2e51bf
leaq 0x2169a6(%rip), %rcx    # 0x3343eb
leaq 0x216922(%rip), %r8     # 0x33436e
pushq $0x27
jmp 0x11da78
movq 0x31a511(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1c75b2(%rip), %rsi    # 0x2e5013
leaq 0x2169a3(%rip), %rdx    # 0x33440b
leaq 0x21697c(%rip), %rcx    # 0x3343eb
leaq 0x2168f8(%rip), %r8     # 0x33436e
pushq $0x2b
popq %r9
xorl %eax, %eax
callq 0x17a50
callq 0x17390
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/splice_site_info_stream.c
// Function: gt_splice_site_info_stream_new
GtNodeStream* gt_splice_site_info_stream_new(GtNodeStream *in_stream,
                                             GtRegionMapping *rm)
{
  GtNodeStream *ns = gt_node_stream_create(gt_splice_site_info_stream_class(),
                                           false);
  GtSpliceSiteInfoStream *ssis = gt_splice_site_info_stream_cast(ns);
  ssis->in_stream = gt_node_stream_ref(in_stream);
  ssis->splice_site_info_visitor = gt_splice_site_info_visitor_new(rm);
  return ns;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rsi, %rbx
movq %rdi, %r14
callq 0x11d938
movq %rax, %rdi
xorl %esi, %esi
callq 0x10289f
movq %rax, %r15
callq 0x11d938
movq %rax, %rdi
movq %r15, %rsi
callq 0x102c81
movq %rax, %r12
movq %r14, %rdi
callq 0x102934
movq %rax, 0x10(%r12)
movq %rbx, %rdi
callq 0x11dfbd
movq %rax, 0x18(%r12)
movq %r15, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/splice_site_info_stream.c
// Function: gt_splice_site_info_stream_show
bool gt_splice_site_info_stream_show(GtNodeStream *ns, GtFile *outfp)
{
  GtSpliceSiteInfoStream *ssis;
  gt_assert(ns);
  ssis = gt_splice_site_info_stream_cast(ns);
  return gt_splice_site_info_visitor_show(ssis->splice_site_info_visitor,
                                          outfp);
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
testq %rdi, %rdi
je 0x11db14
movq %rsi, %rbx
movq %rdi, %r14
callq 0x11d938
movq %rax, %rdi
movq %r14, %rsi
callq 0x102c81
movq 0x18(%rax), %rdi
movq %rbx, %rsi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x11e04d
movq 0x31a44d(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1c74ee(%rip), %rsi    # 0x2e5013
leaq 0x262c0a(%rip), %rdx    # 0x380736
leaq 0x21681b(%rip), %rcx    # 0x33434e
leaq 0x216834(%rip), %r8     # 0x33436e
pushq $0x5a
popq %r9
xorl %eax, %eax
callq 0x17a50
callq 0x17390
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/splice_site_info_stream.c
// Function: gt_splice_site_info_stream_intron_processed
bool gt_splice_site_info_stream_intron_processed(GtNodeStream *ns)
{
  GtSpliceSiteInfoStream *ssis;
  gt_assert(ns);
  ssis = gt_splice_site_info_stream_cast(ns);
  return gt_splice_site_info_visitor_intron_processed(ssis
                                                    ->splice_site_info_visitor);
}

// Assembly:
pushq %rbx
testq %rdi, %rdi
je 0x11db6d
movq %rdi, %rbx
callq 0x11d938
movq %rax, %rdi
movq %rbx, %rsi
callq 0x102c81
movq 0x18(%rax), %rdi
popq %rbx
jmp 0x11e269
movq 0x31a3f4(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1c7495(%rip), %rsi    # 0x2e5013
leaq 0x262bb1(%rip), %rdx    # 0x380736
leaq 0x216809(%rip), %rcx    # 0x334395
leaq 0x2167db(%rip), %r8     # 0x33436e
pushq $0x63
popq %r9
xorl %eax, %eax
callq 0x17a50
callq 0x17390
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/splice_site_info_stream.c
// Function: gt_splice_site_info_stream_show_canonical
bool gt_splice_site_info_stream_show_canonical(GtNodeStream *ns, bool show_gc)
{
  GtSpliceSiteInfoStream *ssis;
  gt_assert(ns);
  ssis = gt_splice_site_info_stream_cast(ns);
  return gt_splice_site_info_visitor_show_canonical(ssis
                                                    ->splice_site_info_visitor,
                                                    show_gc);
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
testq %rdi, %rdi
je 0x11dbd4
movl %esi, %ebx
movq %rdi, %r14
callq 0x11d938
movq %rax, %rdi
movq %r14, %rsi
callq 0x102c81
movq 0x18(%rax), %rdi
movzbl %bl, %esi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x11e2bf
movq 0x31a38d(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1c742e(%rip), %rsi    # 0x2e5013
leaq 0x262b4a(%rip), %rdx    # 0x380736
leaq 0x2167ce(%rip), %rcx    # 0x3343c1
leaq 0x216774(%rip), %r8     # 0x33436e
pushq $0x6c
popq %r9
xorl %eax, %eax
callq 0x17a50
callq 0x17390
nop
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/splice_site_info_visitor.c
// Function: gt_splice_site_info_visitor_class
const GtNodeVisitorClass* gt_splice_site_info_visitor_class()
{
  static const GtNodeVisitorClass *nvc = NULL;
  gt_class_alloc_lock_enter();
  if (!nvc) {
   nvc = gt_node_visitor_class_new(sizeof (GtSpliceSiteInfoVisitor),
                                   splice_site_info_visitor_free,
                                   NULL,
                                   splice_site_info_visitor_feature_node,
                                   NULL,
                                   NULL,
                                   NULL);
  }
  gt_class_alloc_lock_leave();
  return nvc;
}

// Assembly:
pushq %rax
callq 0x69e97
cmpq $0x0, 0x31fc4e(%rip)    # 0x43d868
jne 0x11dc46
andq $0x0, (%rsp)
leaq 0x2c(%rip), %rsi        # 0x11dc54
leaq 0x9c(%rip), %rcx        # 0x11dccb
pushq $0x38
popq %rdi
xorl %edx, %edx
xorl %r8d, %r8d
xorl %r9d, %r9d
callq 0x102cd0
movq %rax, 0x31fc22(%rip)    # 0x43d868
callq 0x69ede
movq 0x31fc16(%rip), %rax    # 0x43d868
popq %rcx
retq
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/splice_site_info_visitor.c
// Function: splice_site_info_visitor_free
static void splice_site_info_visitor_free(GtNodeVisitor *nv)
{
  GtSpliceSiteInfoVisitor *splice_site_info_visitor;
  gt_assert(nv);
  splice_site_info_visitor = splice_site_info_visitor_cast(nv);
  gt_region_mapping_delete(splice_site_info_visitor->region_mapping);
  gt_string_distri_delete(splice_site_info_visitor->splicesites);
  gt_string_distri_delete(splice_site_info_visitor->donorsites);
  gt_string_distri_delete(splice_site_info_visitor->acceptorsites);
}

// Assembly:
pushq %rbx
testq %rdi, %rdi
je 0x11dc95
movq %rdi, %rbx
callq 0x11dc0c
movq %rax, %rdi
movq %rbx, %rsi
callq 0x102dfe
movq %rax, %rbx
movq 0x10(%rax), %rdi
callq 0x10f7de
movq 0x18(%rbx), %rdi
callq 0xaeccb
movq 0x20(%rbx), %rdi
callq 0xaeccb
movq 0x28(%rbx), %rdi
popq %rbx
jmp 0xaeccb
movq 0x31a2cc(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1c736d(%rip), %rsi    # 0x2e5013
leaq 0x2201b4(%rip), %rdx    # 0x33de61
leaq 0x2168ff(%rip), %rcx    # 0x3345b3
leaq 0x21678f(%rip), %r8     # 0x33444a
pushq $0x32
popq %r9
xorl %eax, %eax
callq 0x17a50
callq 0x17390
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/splice_site_info_visitor.c
// Function: gt_splice_site_info_visitor_new
GtNodeVisitor* gt_splice_site_info_visitor_new(GtRegionMapping *rm)
{
  GtNodeVisitor *nv;
  GtSpliceSiteInfoVisitor *ssiv;
  gt_assert(rm);
  nv = gt_node_visitor_create(gt_splice_site_info_visitor_class());
  ssiv = splice_site_info_visitor_cast(nv);
  ssiv->region_mapping = rm;
  ssiv->splicesites = gt_string_distri_new();
  ssiv->acceptorsites = gt_string_distri_new();
  ssiv->donorsites = gt_string_distri_new();
  return nv;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
testq %rdi, %rdi
je 0x11e015
movq %rdi, %rbx
callq 0x11dc0c
movq %rax, %rdi
callq 0x102da0
movq %rax, %r14
callq 0x11dc0c
movq %rax, %rdi
movq %r14, %rsi
callq 0x102dfe
movq %rax, %r15
movq %rbx, 0x10(%rax)
callq 0xae898
movq %rax, 0x18(%r15)
callq 0xae898
movq %rax, 0x28(%r15)
callq 0xae898
movq %rax, 0x20(%r15)
movq %r14, %rax
popq %rbx
popq %r14
popq %r15
retq
movq 0x319f4c(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1c6fed(%rip), %rsi    # 0x2e5013
leaq 0x215c3e(%rip), %rdx    # 0x333c6b
leaq 0x2163f6(%rip), %rcx    # 0x33442a
leaq 0x21640f(%rip), %r8     # 0x33444a
movl $0x95, %r9d
xorl %eax, %eax
callq 0x17a50
callq 0x17390
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/splice_site_info_visitor.c
// Function: gt_splice_site_info_visitor_show
bool gt_splice_site_info_visitor_show(GtNodeVisitor *nv, GtFile *outfp)
{
  GtSpliceSiteInfoVisitor *ssiv;
  gt_assert(nv);
  ssiv = splice_site_info_visitor_cast(nv);

  if (ssiv->show) {
    /* show splice sites */
    gt_file_xprintf(outfp, "splice site distribution (for introns >= 4bp)\n");
    gt_string_distri_foreach(ssiv->splicesites, showsplicesite, outfp);
    gt_xputchar('\n');

    /* show donor sites */
    gt_file_xprintf(outfp, "donor site distribution (for introns >= 4bp)\n");
    gt_string_distri_foreach(ssiv->donorsites, showsinglesite, outfp);
    gt_xputchar('\n');

    /* show acceptor sites */
    gt_file_xprintf(outfp, "acceptor site distribution (for introns >= 4bp)\n");
    gt_string_distri_foreach(ssiv->acceptorsites, showsinglesite, outfp);
  }
  return ssiv->intron_processed;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
testq %rdi, %rdi
je 0x11e107
movq %rsi, %rbx
movq %rdi, %r14
callq 0x11dc0c
movq %rax, %rdi
movq %r14, %rsi
callq 0x102dfe
movq %rax, %r14
cmpb $0x1, 0x30(%rax)
jne 0x11e0f8
leaq 0x216410(%rip), %rsi    # 0x334493
movq %rbx, %rdi
xorl %eax, %eax
callq 0x8d432
movq 0x18(%r14), %rdi
leaq 0xa7(%rip), %rsi        # 0x11e13f
movq %rbx, %rdx
callq 0xaeb2d
pushq $0xa
popq %rbp
movl %ebp, %edi
callq 0xb30c7
leaq 0x216411(%rip), %rsi    # 0x3344c2
movq %rbx, %rdi
xorl %eax, %eax
callq 0x8d432
movq 0x20(%r14), %rdi
leaq 0x124(%rip), %r15       # 0x11e1ea
movq %r15, %rsi
movq %rbx, %rdx
callq 0xaeb2d
movl %ebp, %edi
callq 0xb30c7
leaq 0x216411(%rip), %rsi    # 0x3344f0
movq %rbx, %rdi
xorl %eax, %eax
callq 0x8d432
movq 0x28(%r14), %rdi
movq %r15, %rsi
movq %rbx, %rdx
callq 0xaeb2d
movb 0x31(%r14), %al
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq 0x319e5a(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1c6efb(%rip), %rsi    # 0x2e5013
leaq 0x21fd42(%rip), %rdx    # 0x33de61
leaq 0x21634c(%rip), %rcx    # 0x334472
leaq 0x21631d(%rip), %r8     # 0x33444a
movl $0xb5, %r9d
xorl %eax, %eax
callq 0x17a50
callq 0x17390
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/splice_site_info_visitor.c
// Function: showsplicesite
static void showsplicesite(const char *string, GtUword occurrences,
                           double probability, GT_UNUSED void *unused)
{
  gt_assert(string && strlen(string) == 4);
  gt_xputchar(string[0]);
  gt_xputchar(string[1]);
  gt_xputchar('-');
  gt_xputchar(string[2]);
  gt_xputchar(string[3]);
  printf(": %6.2f%% (n="GT_WU")\n", probability * 100.0, occurrences);
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movsd %xmm0, (%rsp)
testq %rdi, %rdi
je 0x11e1b2
movq %rsi, %rbx
movq %rdi, %r14
callq 0x172d0
cmpq $0x4, %rax
jne 0x11e1b2
movsbl (%r14), %edi
callq 0xb30c7
movsbl 0x1(%r14), %edi
callq 0xb30c7
pushq $0x2d
popq %rdi
callq 0xb30c7
movsbl 0x2(%r14), %edi
callq 0xb30c7
movsbl 0x3(%r14), %edi
callq 0xb30c7
movsd (%rsp), %xmm0
mulsd 0x1cb646(%rip), %xmm0   # 0x2e97e0
leaq 0x2163ff(%rip), %rdi    # 0x3345a0
movq %rbx, %rsi
movb $0x1, %al
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x17070
movq 0x319daf(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1c6e50(%rip), %rsi    # 0x2e5013
leaq 0x21648f(%rip), %rdx    # 0x334659
leaq 0x2164a6(%rip), %rcx    # 0x334677
leaq 0x216272(%rip), %r8     # 0x33444a
movl $0xa2, %r9d
xorl %eax, %eax
callq 0x17a50
callq 0x17390
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/splice_site_info_visitor.c
// Function: gt_splice_site_info_visitor_intron_processed
bool gt_splice_site_info_visitor_intron_processed(GtNodeVisitor *nv)
{
  GtSpliceSiteInfoVisitor *ssiv;
  gt_assert(nv);
  ssiv = splice_site_info_visitor_cast(nv);
  return ssiv->intron_processed;
}

// Assembly:
pushq %rbx
testq %rdi, %rdi
je 0x11e287
movq %rdi, %rbx
callq 0x11dc0c
movq %rax, %rdi
movq %rbx, %rsi
callq 0x102dfe
movb 0x31(%rax), %al
popq %rbx
retq
movq 0x319cda(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1c6d7b(%rip), %rsi    # 0x2e5013
leaq 0x21fbc2(%rip), %rdx    # 0x33de61
leaq 0x21627b(%rip), %rcx    # 0x334521
leaq 0x21619d(%rip), %r8     # 0x33444a
movl $0xcd, %r9d
xorl %eax, %eax
callq 0x17a50
callq 0x17390
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/splice_site_info_visitor.c
// Function: gt_splice_site_info_visitor_show_canonical
bool gt_splice_site_info_visitor_show_canonical(GtNodeVisitor *nv, bool show_gc)
{
  GtSpliceSiteInfoVisitor *ssiv;
  bool canonical_shown = false;
  gt_assert(nv);
  ssiv = splice_site_info_visitor_cast(nv);

  if (ssiv->show) {
    GtUword occ;
    if ((occ = gt_string_distri_get(ssiv->splicesites, "gtag"))) {
      printf("gt-ag: %6.2f%% (n="GT_WU")\n",
             gt_string_distri_get_prob(ssiv->splicesites, "gtag") * 100.0, occ);
      canonical_shown = true;
    }
    if (show_gc && (occ = gt_string_distri_get(ssiv->splicesites, "gcag"))) {
      printf("gc-ag: %6.2f%% (n="GT_WU")\n",
             gt_string_distri_get_prob(ssiv->splicesites, "gcag") * 100.0, occ);
      canonical_shown = true;
    }
  }

  return canonical_shown;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
testq %rdi, %rdi
je 0x11e391
movl %esi, %r14d
movq %rdi, %rbx
callq 0x11dc0c
movq %rax, %rdi
movq %rbx, %rsi
callq 0x102dfe
cmpb $0x1, 0x30(%rax)
jne 0x11e382
movq %rax, %rbx
movq 0x18(%rax), %rdi
leaq 0x21627c(%rip), %rsi    # 0x334579
callq 0xaea3a
testq %rax, %rax
setne %bpl
je 0x11e337
movq %rax, %r15
movq 0x18(%rbx), %rdi
leaq 0x216260(%rip), %rsi    # 0x334579
callq 0xaea91
mulsd 0x1cb4ba(%rip), %xmm0   # 0x2e97e0
leaq 0x216251(%rip), %rdi    # 0x33457e
movq %r15, %rsi
movb $0x1, %al
callq 0x17070
testb %r14b, %r14b
je 0x11e384
movq 0x18(%rbx), %rdi
leaq 0x21624f(%rip), %rsi    # 0x334596
callq 0xaea3a
testq %rax, %rax
je 0x11e384
movq %rax, %r14
movq 0x18(%rbx), %rdi
leaq 0x216237(%rip), %rsi    # 0x334596
callq 0xaea91
mulsd 0x1cb474(%rip), %xmm0   # 0x2e97e0
leaq 0x216228(%rip), %rdi    # 0x33459b
movb $0x1, %bpl
movq %r14, %rsi
movb $0x1, %al
callq 0x17070
jmp 0x11e384
xorl %ebp, %ebp
movl %ebp, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq 0x319bd0(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1c6c71(%rip), %rsi    # 0x2e5013
leaq 0x21fab8(%rip), %rdx    # 0x33de61
leaq 0x21619e(%rip), %rcx    # 0x33454e
leaq 0x216093(%rip), %r8     # 0x33444a
movl $0xd6, %r9d
xorl %eax, %eax
callq 0x17a50
callq 0x17390
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/squarealign.c
// Function: fillDPtab_in_square_space
static void fillDPtab_in_square_space(GtUword **E,
                                      const GtUchar *useq,
                                      GtUword ustart,
                                      GtUword ulen,
                                      const GtUchar *vseq,
                                      GtUword vstart,
                                      GtUword vlen,
                                      const GtScoreHandler *scorehandler)
{
  GtUword i, j, gapcost;
  gapcost =  gt_scorehandler_get_gapscore(scorehandler);

  E[0][0] = 0;
  for (i = 1; i <= ulen; i++)
  {
    E[i][0] = E[i-1][0] + gapcost;
  }
  for (j = 1; j <= vlen; j++)
  {
    E[0][j] = E[0][j-1] + gapcost;
    for (i = 1; i <= ulen; i++)
    {
      GtUword val;

      E[i][j] = E[i][j-1] + gapcost;
      val = E[i-1][j-1] + gt_scorehandler_get_replacement(scorehandler,
                                                          useq[ustart+i-1],
                                                          vseq[vstart+j-1]);
      if (val <= E[i][j])
      {
        E[i][j] = val;
      }
      if ((val = E[i-1][j] + gapcost) < E[i][j])
      {
        E[i][j] = val;
      }
    }
  }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %r9, %rbx
movq %r8, %r12
movq %rcx, 0x10(%rsp)
movq %rdx, %r14
movq %rsi, 0x8(%rsp)
movq %rdi, %r15
movq 0x58(%rsp), %rdi
callq 0x114a6a
movq %rax, %r13
movq (%r15), %rax
andq $0x0, (%rax)
pushq $0x1
popq %rax
cmpq 0x10(%rsp), %rax
ja 0x11ec9e
movq -0x8(%r15,%rax,8), %rcx
movq (%r15,%rax,8), %rdx
movq (%rcx), %rcx
addq %r13, %rcx
movq %rcx, (%rdx)
incq %rax
jmp 0x11ec80
leaq (%r12,%rbx), %rbp
decq %rbp
addq %r14, 0x8(%rsp)
pushq $0x1
popq %r12
cmpq 0x50(%rsp), %r12
ja 0x11ed3f
movq (%r15), %rax
movq -0x8(%rax,%r12,8), %rcx
addq %r13, %rcx
movq %rcx, (%rax,%r12,8)
xorl %r14d, %r14d
cmpq %r14, 0x10(%rsp)
je 0x11ed37
movq 0x8(%r15,%r14,8), %rax
movq -0x8(%rax,%r12,8), %rcx
addq %r13, %rcx
movq %rcx, (%rax,%r12,8)
movq (%r15,%r14,8), %rax
movq -0x8(%rax,%r12,8), %rbx
movq 0x8(%rsp), %rax
movzbl (%rax,%r14), %esi
movzbl (%rbp,%r12), %edx
movq 0x58(%rsp), %rdi
callq 0x114b2c
addq %rbx, %rax
movq 0x8(%r15,%r14,8), %rcx
movq (%rcx,%r12,8), %rdx
cmpq %rdx, %rax
ja 0x11ed1e
movq %rax, (%rcx,%r12,8)
movq %rax, %rdx
movq (%r15,%r14,8), %rax
movq (%rax,%r12,8), %rax
addq %r13, %rax
cmpq %rdx, %rax
jae 0x11ed32
movq %rax, (%rcx,%r12,8)
incq %r14
jmp 0x11eccb
incq %r12
jmp 0x11ecae
addq $0x18, %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/extended/squarealign.c
// Function: gt_squarealign_global_distance_only
GtUword gt_squarealign_global_distance_only(const GtUchar *useq,
                                            GtUword ustart,
                                            GtUword ulen,
                                            const GtUchar *vseq,
                                            GtUword vstart,
                                            GtUword vlen,
                                            const GtScoreHandler *scorehandler)
{
  GtUword **E, distance;

  gt_assert(scorehandler);

  gt_array2dim_malloc(E, (ulen+1), (vlen+1));
  fillDPtab_in_square_space(E, useq, ustart, ulen,
                            vseq, vstart, vlen, scorehandler);
  distance = E[ulen][vlen];
  gt_array2dim_delete(E);
  return distance;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %r8, 0x20(%rsp)
movq %rcx, 0x18(%rsp)
movq %rsi, 0x10(%rsp)
movq %rdi, 0x8(%rsp)
cmpq $0x0, 0x60(%rsp)
je 0x11ee43
movq %r9, %rbx
movq %rdx, %r14
leaq 0x1(%rdx), %r15
leaq 0x8(,%rdx,8), %r13
leaq 0x215c01(%rip), %rsi    # 0x334996
pushq $0x75
popq %rdx
movq %r13, %rdi
callq 0x93160
movq %rax, %r12
leaq 0x1(%rbx), %rbp
imulq %rbp, %r13
movq %r13, %rdi
leaq 0x215be1(%rip), %rsi    # 0x334996
pushq $0x75
popq %rdx
callq 0x93160
movq %rax, (%r12)
pushq $0x1
popq %rax
shlq $0x3, %rbp
cmpq %r15, %rax
jae 0x11edde
movq -0x8(%r12,%rax,8), %rcx
addq %rbp, %rcx
movq %rcx, (%r12,%rax,8)
incq %rax
jmp 0x11edc8
movq %r12, %rdi
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq %r14, %rcx
movq 0x18(%rsp), %r8
movq 0x20(%rsp), %r9
pushq 0x60(%rsp)
pushq %rbx
callq 0x11ec45
popq %rax
popq %rcx
movq (%r12,%r14,8), %rax
movq (%rax,%rbx,8), %rbx
movq (%r12), %rdi
leaq 0x215b7f(%rip), %r14    # 0x334996
pushq $0x79
popq %rbp
movq %r14, %rsi
movl %ebp, %edx
callq 0x936f9
movq %r12, %rdi
movq %r14, %rsi
movl %ebp, %edx
callq 0x936f9
movq %rbx, %rax
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x31911e(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1c61bf(%rip), %rsi    # 0x2e5013
leaq 0x211045(%rip), %rdx    # 0x32fea0
leaq 0x215b4f(%rip), %rcx    # 0x3349b1
leaq 0x215b2d(%rip), %r8     # 0x334996
pushq $0x73
popq %r9
xorl %eax, %eax
callq 0x17a50
callq 0x17390