LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/genome_node.c
// Function: gt_genome_node_get_user_data
void* gt_genome_node_get_user_data(const GtGenomeNode *gn, const char *key)
{
  GtGenomeNodeUserData *ud;
  gt_assert(gn && key);
  if (!gn->userdata)
    return NULL;
  ud = (GtGenomeNodeUserData*) gt_hashmap_get(gn->userdata, key);
  return (ud ? ud->ptr : NULL);
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x18(%rsp)
movq %rsi, 0x10(%rsp)
cmpq $0x0, 0x18(%rsp)
je 0x2660e
cmpq $0x0, 0x10(%rsp)
jne 0x26646
movq 0x18d9c3(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x137a47(%rip), %rsi    # 0x15e066
leaq 0x13c7c2(%rip), %rdx    # 0x162de8
leaq 0x13c7f7(%rip), %rcx    # 0x162e24
leaq 0x13c4a7(%rip), %r8     # 0x162adb
movl $0x1bf, %r9d            # imm = 0x1BF
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x26648
movq 0x18(%rsp), %rax
cmpq $0x0, 0x10(%rax)
jne 0x2665f
movq $0x0, 0x20(%rsp)
jmp 0x2669e
movq 0x18(%rsp), %rax
movq 0x10(%rax), %rdi
movq 0x10(%rsp), %rsi
callq 0x86470
movq %rax, 0x8(%rsp)
cmpq $0x0, 0x8(%rsp)
je 0x2668d
movq 0x8(%rsp), %rax
movq (%rax), %rax
movq %rax, (%rsp)
jmp 0x26695
xorl %eax, %eax
movq %rax, (%rsp)
jmp 0x26695
movq (%rsp), %rax
movq %rax, 0x20(%rsp)
movq 0x20(%rsp), %rax
addq $0x28, %rsp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/genome_node.c
// Function: gt_genome_node_release_user_data
void gt_genome_node_release_user_data(GtGenomeNode *gn, const char *key)
{
  GtGenomeNodeUserData *ud;
  gt_assert(gn && key);
  if (!gn->userdata)
    return;
  if ((ud = (GtGenomeNodeUserData*) gt_hashmap_get(gn->userdata, key))) {
    gt_hashmap_remove(gn->userdata, (char*) key);
    if (--gn->userdata_nof_items == 0) {
      gt_hashmap_delete(gn->userdata);
      gn->userdata = NULL;
    }
  }
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
movq %rsi, 0x8(%rsp)
cmpq $0x0, 0x10(%rsp)
je 0x266ce
cmpq $0x0, 0x8(%rsp)
jne 0x26706
movq 0x18d903(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x137987(%rip), %rsi    # 0x15e066
leaq 0x13c702(%rip), %rdx    # 0x162de8
leaq 0x13c754(%rip), %rcx    # 0x162e41
leaq 0x13c3e7(%rip), %r8     # 0x162adb
movl $0x1c9, %r9d            # imm = 0x1C9
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x26708
movq 0x10(%rsp), %rax
cmpq $0x0, 0x10(%rax)
jne 0x26716
jmp 0x26776
movq 0x10(%rsp), %rax
movq 0x10(%rax), %rdi
movq 0x8(%rsp), %rsi
callq 0x86470
movq %rax, (%rsp)
cmpq $0x0, %rax
je 0x26776
movq 0x10(%rsp), %rax
movq 0x10(%rax), %rdi
movq 0x8(%rsp), %rsi
callq 0x86580
movq 0x10(%rsp), %rcx
movl 0x28(%rcx), %eax
addl $-0x1, %eax
movl %eax, 0x28(%rcx)
cmpl $0x0, %eax
jne 0x26774
movq 0x10(%rsp), %rax
movq 0x10(%rax), %rdi
callq 0x86cc0
movq 0x10(%rsp), %rax
movq $0x0, 0x10(%rax)
jmp 0x26776
addq $0x18, %rsp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/genome_node.c
// Function: gt_genome_node_delete
void gt_genome_node_delete(GtGenomeNode *gn)
{
  if (!gn) return;
  gt_rwlock_wrlock(gn->lock);
  if (gn->reference_count) {
    gn->reference_count--;
    gt_rwlock_unlock(gn->lock);
    return;
  }
  gt_assert(gn->c_class);
  if (gn->c_class->free)
    gn->c_class->free(gn);
  gt_str_delete(gn->filename);
  if (gn->userdata)
    gt_hashmap_delete(gn->userdata);
  gt_rwlock_unlock(gn->lock);
#ifdef GT_THREADS_ENABLED
  gt_rwlock_delete(gn->lock);
#endif
  gt_free(gn);
}

// Assembly:
pushq %rax
movq %rdi, (%rsp)
cmpq $0x0, (%rsp)
jne 0x26ec1
jmp 0x26fb0
movq (%rsp), %rax
movq 0x18(%rax), %rdi
callq 0x1c100
movq (%rsp), %rax
cmpl $0x0, 0x24(%rax)
je 0x26ef7
movq (%rsp), %rax
movl 0x24(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0x24(%rax)
movq (%rsp), %rax
movq 0x18(%rax), %rdi
callq 0x1c1a0
jmp 0x26fb0
jmp 0x26ef9
movq (%rsp), %rax
cmpq $0x0, (%rax)
jne 0x26f3b
movq 0x18d0ce(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x137152(%rip), %rsi    # 0x15e066
leaq 0x13bcea(%rip), %rdx    # 0x162c05
leaq 0x13c106(%rip), %rcx    # 0x163028
leaq 0x13bbb2(%rip), %r8     # 0x162adb
movl $0x214, %r9d            # imm = 0x214
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x26f3d
movq (%rsp), %rax
movq (%rax), %rax
cmpq $0x0, 0x8(%rax)
je 0x26f5c
movq (%rsp), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
movq (%rsp), %rdi
callq *%rax
movq (%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x1afc0
movq (%rsp), %rax
cmpq $0x0, 0x10(%rax)
je 0x26f81
movq (%rsp), %rax
movq 0x10(%rax), %rdi
callq 0x86cc0
movq (%rsp), %rax
movq 0x18(%rax), %rdi
callq 0x1c1a0
movq (%rsp), %rax
movq 0x18(%rax), %rdi
callq 0x1bfe0
movq (%rsp), %rdi
leaq 0x13bb35(%rip), %rsi    # 0x162adb
movl $0x21e, %edx            # imm = 0x21E
callq 0xdab0
popq %rax
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_in_stream.c
// Function: gt_gff3_in_stream_class
const GtNodeStreamClass* gt_gff3_in_stream_class(void)
{
  static const GtNodeStreamClass *nsc = NULL;
  gt_class_alloc_lock_enter();
  if (!nsc) {
    nsc = gt_node_stream_class_new(sizeof (GtGFF3InStream),
                                   gff3_in_stream_free,
                                   gff3_in_stream_next);
  }
  gt_class_alloc_lock_leave();
  return nsc;
}

// Assembly:
pushq %rax
callq 0x7b730
cmpq $0x0, 0x18f1d2(%rip)    # 0x1b6420
jne 0x2726f
movl $0x40, %edi
leaq 0x24(%rip), %rsi        # 0x27280
leaq 0x8d(%rip), %rdx        # 0x272f0
callq 0x344e0
movq %rax, 0x18f1b1(%rip)    # 0x1b6420
callq 0x7b790
movq 0x18f1a5(%rip), %rax    # 0x1b6420
popq %rcx
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_in_stream.c
// Function: gff3_in_stream_free
static void gff3_in_stream_free(GtNodeStream *ns)
{
  GtGFF3InStream *gff3_in_stream = gff3_in_stream_cast(ns);
  gt_node_stream_delete(gff3_in_stream->cds_check_stream);
  gt_node_stream_delete(gff3_in_stream->add_ids_stream);
  gt_node_stream_delete(gff3_in_stream->gff3_in_stream_plain);
  gt_node_stream_delete(gff3_in_stream->fix_region_stream);
  gt_node_stream_delete(gff3_in_stream->multi_sanitize_stream);
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
callq 0x27240
movq %rax, %rdi
movq 0x10(%rsp), %rsi
callq 0x34af0
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rax
movq 0x20(%rax), %rdi
callq 0x346b0
movq 0x8(%rsp), %rax
movq 0x18(%rax), %rdi
callq 0x346b0
movq 0x8(%rsp), %rax
movq 0x10(%rax), %rdi
callq 0x346b0
movq 0x8(%rsp), %rax
movq 0x28(%rax), %rdi
callq 0x346b0
movq 0x8(%rsp), %rax
movq 0x38(%rax), %rdi
callq 0x346b0
addq $0x18, %rsp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_in_stream.c
// Function: gt_gff3_in_stream_set_type_checker
void gt_gff3_in_stream_set_type_checker(GtNodeStream *ns,
                                        GtTypeChecker *type_checker)
{
  GtGFF3InStream *is = gff3_in_stream_cast(ns);
  gt_assert(is);
  gt_gff3_in_stream_plain_set_type_checker(is->gff3_in_stream_plain,
                                           type_checker);
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
movq %rsi, 0x8(%rsp)
callq 0x27240
movq %rax, %rdi
movq 0x10(%rsp), %rsi
callq 0x34af0
movq %rax, (%rsp)
cmpq $0x0, (%rsp)
jne 0x274b3
movq 0x18cb56(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x136bda(%rip), %rsi    # 0x15e066
leaq 0x15d1f8(%rip), %rdx    # 0x18468b
leaq 0x13bc54(%rip), %rcx    # 0x1630ee
leaq 0x13bc0b(%rip), %r8     # 0x1630ac
movl $0x5b, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x274b5
movq (%rsp), %rax
movq 0x10(%rax), %rdi
movq 0x8(%rsp), %rsi
callq 0x283d0
addq $0x18, %rsp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_in_stream.c
// Function: gt_gff3_in_stream_set_xrf_checker
void gt_gff3_in_stream_set_xrf_checker(GtNodeStream *ns,
                                       GtXRFChecker *xrf_checker)
{
  GtGFF3InStream *is = gff3_in_stream_cast(ns);
  gt_assert(is);
  gt_gff3_in_stream_plain_set_xrf_checker(is->gff3_in_stream_plain,
                                          xrf_checker);
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
movq %rsi, 0x8(%rsp)
callq 0x27240
movq %rax, %rdi
movq 0x10(%rsp), %rsi
callq 0x34af0
movq %rax, (%rsp)
cmpq $0x0, (%rsp)
jne 0x27533
movq 0x18cad6(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x136b5a(%rip), %rsi    # 0x15e066
leaq 0x15d178(%rip), %rdx    # 0x18468b
leaq 0x13bbf7(%rip), %rcx    # 0x163111
leaq 0x13bb8b(%rip), %r8     # 0x1630ac
movl $0x64, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x27535
movq (%rsp), %rax
movq 0x10(%rax), %rdi
movq 0x8(%rsp), %rsi
callq 0x28450
addq $0x18, %rsp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_in_stream.c
// Function: gt_gff3_in_stream_set_offsetfile
int gt_gff3_in_stream_set_offsetfile(GtNodeStream *ns, GtStr *offsetfile,
                                     GtError *err)
{
  GtGFF3InStream *is = gff3_in_stream_cast(ns);
  gt_assert(is);
  return gt_gff3_in_stream_plain_set_offsetfile(is->gff3_in_stream_plain,
                                                offsetfile, err);
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq %rsi, 0x18(%rsp)
movq %rdx, 0x10(%rsp)
callq 0x27240
movq %rax, %rdi
movq 0x20(%rsp), %rsi
callq 0x34af0
movq %rax, 0x8(%rsp)
cmpq $0x0, 0x8(%rsp)
jne 0x276ba
movq 0x18c94f(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x1369d3(%rip), %rsi    # 0x15e066
leaq 0x15cff1(%rip), %rdx    # 0x18468b
leaq 0x13bad0(%rip), %rcx    # 0x163171
leaq 0x13ba04(%rip), %r8     # 0x1630ac
movl $0x7b, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x276bc
movq 0x8(%rsp), %rax
movq 0x10(%rax), %rdi
movq 0x18(%rsp), %rsi
movq 0x10(%rsp), %rdx
callq 0x285d0
addq $0x28, %rsp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_in_stream.c
// Function: gt_gff3_in_stream_enable_tidy_mode
void gt_gff3_in_stream_enable_tidy_mode(GtGFF3InStream *is)
{
  gt_assert(is);
  gt_gff3_in_stream_plain_enable_tidy_mode(is->gff3_in_stream_plain);
  gt_cds_check_stream_enable_tidy_mode((GtCDSCheckStream*)
                                       is->cds_check_stream);
}

// Assembly:
pushq %rax
movq %rdi, (%rsp)
cmpq $0x0, (%rsp)
jne 0x27814
movq 0x18c7f5(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x136879(%rip), %rsi    # 0x15e066
leaq 0x15ce97(%rip), %rdx    # 0x18468b
leaq 0x13b9f7(%rip), %rcx    # 0x1631f2
leaq 0x13b8aa(%rip), %r8     # 0x1630ac
movl $0x8f, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x27816
movq (%rsp), %rax
movq 0x10(%rax), %rdi
callq 0x286e0
movq (%rsp), %rax
movq 0x20(%rax), %rdi
callq 0xa4980
popq %rax
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_in_stream.c
// Function: gt_gff3_in_stream_fix_region_boundaries
void gt_gff3_in_stream_fix_region_boundaries(GtGFF3InStream *is)
{
  gt_assert(is);
  gt_gff3_in_stream_plain_do_not_check_region_boundaries(
                               (GtGFF3InStreamPlain*) is->gff3_in_stream_plain);
  is->last_stream = is->fix_region_stream =
             gt_tidy_region_node_stream_new(is->last_stream);
}

// Assembly:
pushq %rax
movq %rdi, (%rsp)
cmpq $0x0, (%rsp)
jne 0x27884
movq 0x18c785(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x136809(%rip), %rsi    # 0x15e066
leaq 0x15ce27(%rip), %rdx    # 0x18468b
leaq 0x13b9aa(%rip), %rcx    # 0x163215
leaq 0x13b83a(%rip), %r8     # 0x1630ac
movl $0x97, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x27886
movq (%rsp), %rax
movq 0x10(%rax), %rdi
callq 0x28320
movq (%rsp), %rax
movq 0x30(%rax), %rdi
callq 0x38950
movq %rax, %rcx
movq (%rsp), %rax
movq %rcx, 0x28(%rax)
movq (%rsp), %rax
movq %rcx, 0x30(%rax)
popq %rax
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_in_stream.c
// Function: gt_gff3_in_stream_new_unsorted
GtNodeStream* gt_gff3_in_stream_new_unsorted(int num_of_files,
                                             const char **filenames)
{
  GtNodeStream *ns = gt_node_stream_create(gt_gff3_in_stream_class(), false);
  GtGFF3InStream *is = gff3_in_stream_cast(ns);
  is->fix_region_stream = NULL;
  is->last_stream = is->gff3_in_stream_plain =
                  gt_gff3_in_stream_plain_new_unsorted(num_of_files, filenames);
  gt_gff3_in_stream_plain_check_region_boundaries(
                               (GtGFF3InStreamPlain*) is->gff3_in_stream_plain);
  is->last_stream = is->add_ids_stream = gt_add_ids_stream_new(is->last_stream);
  is->last_stream = is->multi_sanitize_stream =
       gt_visitor_stream_new(is->last_stream, gt_multi_sanitizer_visitor_new());
  is->last_stream = is->cds_check_stream =
                                       gt_cds_check_stream_new(is->last_stream);
  return ns;
}

// Assembly:
subq $0x28, %rsp
movl %edi, 0x24(%rsp)
movq %rsi, 0x18(%rsp)
callq 0x27240
movq %rax, %rdi
xorl %esi, %esi
callq 0x34580
movq %rax, 0x10(%rsp)
callq 0x27240
movq %rax, %rdi
movq 0x10(%rsp), %rsi
callq 0x34af0
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rax
movq $0x0, 0x28(%rax)
movl 0x24(%rsp), %edi
movq 0x18(%rsp), %rsi
callq 0x28760
movq %rax, %rcx
movq 0x8(%rsp), %rax
movq %rcx, 0x10(%rax)
movq 0x8(%rsp), %rax
movq %rcx, 0x30(%rax)
movq 0x8(%rsp), %rax
movq 0x10(%rax), %rdi
callq 0x282c0
movq 0x8(%rsp), %rax
movq 0x30(%rax), %rdi
callq 0xa38d0
movq %rax, %rcx
movq 0x8(%rsp), %rax
movq %rcx, 0x18(%rax)
movq 0x8(%rsp), %rax
movq %rcx, 0x30(%rax)
movq 0x8(%rsp), %rax
movq 0x30(%rax), %rax
movq %rax, (%rsp)
callq 0x34360
movq (%rsp), %rdi
movq %rax, %rsi
callq 0x39920
movq %rax, %rcx
movq 0x8(%rsp), %rax
movq %rcx, 0x38(%rax)
movq 0x8(%rsp), %rax
movq %rcx, 0x30(%rax)
movq 0x8(%rsp), %rax
movq 0x30(%rax), %rdi
callq 0xa4910
movq %rax, %rcx
movq 0x8(%rsp), %rax
movq %rcx, 0x20(%rax)
movq 0x8(%rsp), %rax
movq %rcx, 0x30(%rax)
movq 0x10(%rsp), %rax
addq $0x28, %rsp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_in_stream.c
// Function: gt_gff3_in_stream_new_sorted
GtNodeStream* gt_gff3_in_stream_new_sorted(const char *filename)
{
  GtNodeStream *ns = gt_node_stream_create(gt_gff3_in_stream_class(), true);
  GtGFF3InStream *is = gff3_in_stream_cast(ns);
  is->fix_region_stream = NULL;
  is->last_stream = is->gff3_in_stream_plain =
                                   gt_gff3_in_stream_plain_new_sorted(filename);
  gt_gff3_in_stream_plain_check_region_boundaries(
                               (GtGFF3InStreamPlain*) is->gff3_in_stream_plain);
  is->last_stream = is->add_ids_stream = gt_add_ids_stream_new(is->last_stream);
  is->last_stream = is->multi_sanitize_stream =
       gt_visitor_stream_new(is->last_stream, gt_multi_sanitizer_visitor_new());
  is->last_stream = is->cds_check_stream =
                                       gt_cds_check_stream_new(is->last_stream);
  return ns;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
callq 0x27240
movq %rax, %rdi
movl $0x1, %esi
callq 0x34580
movq %rax, 0x18(%rsp)
callq 0x27240
movq %rax, %rdi
movq 0x18(%rsp), %rsi
callq 0x34af0
movq %rax, 0x10(%rsp)
movq 0x10(%rsp), %rax
movq $0x0, 0x28(%rax)
movq 0x20(%rsp), %rdi
callq 0x28880
movq %rax, %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x10(%rax)
movq 0x10(%rsp), %rax
movq %rcx, 0x30(%rax)
movq 0x10(%rsp), %rax
movq 0x10(%rax), %rdi
callq 0x282c0
movq 0x10(%rsp), %rax
movq 0x30(%rax), %rdi
callq 0xa38d0
movq %rax, %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x18(%rax)
movq 0x10(%rsp), %rax
movq %rcx, 0x30(%rax)
movq 0x10(%rsp), %rax
movq 0x30(%rax), %rax
movq %rax, 0x8(%rsp)
callq 0x34360
movq 0x8(%rsp), %rdi
movq %rax, %rsi
callq 0x39920
movq %rax, %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x38(%rax)
movq 0x10(%rsp), %rax
movq %rcx, 0x30(%rax)
movq 0x10(%rsp), %rax
movq 0x30(%rax), %rdi
callq 0xa4910
movq %rax, %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x20(%rax)
movq 0x10(%rsp), %rax
movq %rcx, 0x30(%rax)
movq 0x18(%rsp), %rax
addq $0x28, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_in_stream_plain.c
// Function: gt_gff3_in_stream_plain_class
const GtNodeStreamClass* gt_gff3_in_stream_plain_class(void)
{
  static const GtNodeStreamClass *nsc = NULL;
  gt_class_alloc_lock_enter();
  if (!nsc) {
    nsc = gt_node_stream_class_new(sizeof (GtGFF3InStreamPlain),
                                   gff3_in_stream_plain_free,
                                   gff3_in_stream_plain_next);
  }
  gt_class_alloc_lock_leave();
  return nsc;
}

// Assembly:
pushq %rax
callq 0x7b730
cmpq $0x0, 0x18e95a(%rip)    # 0x1b6428
jne 0x27aef
movl $0x58, %edi
leaq 0x24(%rip), %rsi        # 0x27b00
leaq 0xcd(%rip), %rdx        # 0x27bb0
callq 0x344e0
movq %rax, 0x18e939(%rip)    # 0x1b6428
callq 0x7b790
movq 0x18e92d(%rip), %rax    # 0x1b6428
popq %rcx
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_in_stream_plain.c
// Function: gff3_in_stream_plain_free
static void gff3_in_stream_plain_free(GtNodeStream *ns)
{
  GtGFF3InStreamPlain *gff3_in_stream_plain = gff3_in_stream_plain_cast(ns);
  gt_str_array_delete(gff3_in_stream_plain->files);
  gt_str_delete(gff3_in_stream_plain->stdinstr);
  while (gt_queue_size(gff3_in_stream_plain->genome_node_buffer)) {
    gt_genome_node_delete(gt_queue_get(gff3_in_stream_plain
                                       ->genome_node_buffer));
  }
  gt_queue_delete(gff3_in_stream_plain->genome_node_buffer);
  gt_gff3_parser_delete(gff3_in_stream_plain->gff3_parser);
  gt_cstr_table_delete(gff3_in_stream_plain->used_types);
  gt_file_delete(gff3_in_stream_plain->fpin);
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
callq 0x27ac0
movq %rax, %rdi
movq 0x10(%rsp), %rsi
callq 0x34af0
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rax
movq 0x18(%rax), %rdi
callq 0x1b780
movq 0x8(%rsp), %rax
movq 0x20(%rax), %rdi
callq 0x1afc0
movq 0x8(%rsp), %rax
movq 0x40(%rax), %rdi
callq 0x90d30
cmpq $0x0, %rax
je 0x27b68
movq 0x8(%rsp), %rax
movq 0x40(%rax), %rdi
callq 0x90c50
movq %rax, %rdi
callq 0x26eb0
jmp 0x27b3c
movq 0x8(%rsp), %rax
movq 0x40(%rax), %rdi
callq 0x91770
movq 0x8(%rsp), %rax
movq 0x48(%rax), %rdi
callq 0x2baa0
movq 0x8(%rsp), %rax
movq 0x50(%rax), %rdi
callq 0x7d720
movq 0x8(%rsp), %rax
movq 0x30(%rax), %rdi
callq 0x83f40
addq $0x18, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_in_stream_plain.c
// Function: gt_gff3_in_stream_plain_new_unsorted
GtNodeStream* gt_gff3_in_stream_plain_new_unsorted(int num_of_files,
                                                   const char **filenames)
{
  int i;
  GtStrArray *files = gt_str_array_new();
  for (i = 0; i < num_of_files; i++)
    gt_str_array_add_cstr(files, filenames[i]);
  return gff3_in_stream_plain_new(files, false);
}

// Assembly:
subq $0x28, %rsp
movl %edi, 0x24(%rsp)
movq %rsi, 0x18(%rsp)
callq 0x1b020
movq %rax, 0x8(%rsp)
movl $0x0, 0x14(%rsp)
movl 0x14(%rsp), %eax
cmpl 0x24(%rsp), %eax
jge 0x287ae
movq 0x8(%rsp), %rdi
movq 0x18(%rsp), %rax
movslq 0x14(%rsp), %rcx
movq (%rax,%rcx,8), %rsi
callq 0x1b180
movl 0x14(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x14(%rsp)
jmp 0x2877f
movq 0x8(%rsp), %rdi
xorl %esi, %esi
callq 0x287c0
addq $0x28, %rsp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_in_stream_plain.c
// Function: gff3_in_stream_plain_new
static GtNodeStream* gff3_in_stream_plain_new(GtStrArray *files,
                                              bool ensure_sorting)
{
  GtNodeStream *ns = gt_node_stream_create(gt_gff3_in_stream_plain_class(),
                                           ensure_sorting);
  GtGFF3InStreamPlain *gff3_in_stream_plain = gff3_in_stream_plain_cast(ns);
  gff3_in_stream_plain->files               = files;
  gff3_in_stream_plain->stdinstr            = gt_str_new_cstr("stdin");
  gff3_in_stream_plain->ensure_sorting      = ensure_sorting;
  gff3_in_stream_plain->genome_node_buffer  = gt_queue_new();
  gff3_in_stream_plain->gff3_parser         = gt_gff3_parser_new(NULL);
  gff3_in_stream_plain->used_types          = gt_cstr_table_new();
  return ns;
}

// Assembly:
subq $0x28, %rsp
movb %sil, %al
movq %rdi, 0x20(%rsp)
andb $0x1, %al
movb %al, 0x1f(%rsp)
callq 0x27ac0
movq %rax, %rdi
movb 0x1f(%rsp), %al
andb $0x1, %al
movzbl %al, %esi
callq 0x34580
movq %rax, 0x10(%rsp)
callq 0x27ac0
movq %rax, %rdi
movq 0x10(%rsp), %rsi
callq 0x34af0
movq %rax, 0x8(%rsp)
movq 0x20(%rsp), %rcx
movq 0x8(%rsp), %rax
movq %rcx, 0x18(%rax)
leaq 0x142783(%rip), %rdi    # 0x16af9c
callq 0x18f70
movq %rax, %rcx
movq 0x8(%rsp), %rax
movq %rcx, 0x20(%rax)
movb 0x1f(%rsp), %cl
movq 0x8(%rsp), %rax
andb $0x1, %cl
movb %cl, 0x28(%rax)
callq 0x909b0
movq %rax, %rcx
movq 0x8(%rsp), %rax
movq %rcx, 0x40(%rax)
xorl %eax, %eax
movl %eax, %edi
callq 0x28a80
movq %rax, %rcx
movq 0x8(%rsp), %rax
movq %rcx, 0x48(%rax)
callq 0x7d020
movq %rax, %rcx
movq 0x8(%rsp), %rax
movq %rcx, 0x50(%rax)
movq 0x10(%rsp), %rax
addq $0x28, %rsp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_in_stream_plain.c
// Function: gt_gff3_in_stream_plain_new_sorted
GtNodeStream* gt_gff3_in_stream_plain_new_sorted(const char *filename)
{
  GtStrArray *files = gt_str_array_new();
  if (filename)
    gt_str_array_add_cstr(files, filename);
  return gff3_in_stream_plain_new(files, true);
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
callq 0x1b020
movq %rax, 0x8(%rsp)
cmpq $0x0, 0x10(%rsp)
je 0x288aa
movq 0x8(%rsp), %rdi
movq 0x10(%rsp), %rsi
callq 0x1b180
movq 0x8(%rsp), %rdi
movl $0x1, %esi
callq 0x287c0
addq $0x18, %rsp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_in_stream_plain.c
// Function: buffer_is_sorted
static int buffer_is_sorted(void **elem, void *info, GtError *err)
{
  GtGenomeNode *current_node, **last_node;

  gt_error_check(err);
  gt_assert(elem && info);

  current_node = *(GtGenomeNode**) elem,
  last_node = info;

  if (*last_node && gt_genome_node_compare(last_node, &current_node) > 0) {
    gt_assert(*last_node);
    gt_error_set(err, "the file %s is not sorted (example: line %u and %u)",
              gt_genome_node_get_filename(*last_node),
              gt_genome_node_get_line_number(*last_node),
              gt_genome_node_get_line_number(current_node));
    return -1;
  }
  else
    *last_node = current_node;
  return 0;
}

// Assembly:
subq $0x48, %rsp
movq %rdi, 0x38(%rsp)
movq %rsi, 0x30(%rsp)
movq %rdx, 0x28(%rsp)
cmpq $0x0, 0x28(%rsp)
je 0x28923
movq 0x28(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0x288eb
jmp 0x28923
movq 0x18b6e6(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13576a(%rip), %rsi    # 0x15e066
leaq 0x135d45(%rip), %rdx    # 0x15e648
leaq 0x13ac44(%rip), %rcx    # 0x16354e
leaq 0x13a96c(%rip), %r8     # 0x16327d
movl $0x37, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x28925
jmp 0x28927
cmpq $0x0, 0x38(%rsp)
je 0x28937
cmpq $0x0, 0x30(%rsp)
jne 0x2896f
movq 0x18b69a(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13571e(%rip), %rsi    # 0x15e066
leaq 0x13ac10(%rip), %rdx    # 0x16355f
leaq 0x13abf8(%rip), %rcx    # 0x16354e
leaq 0x13a920(%rip), %r8     # 0x16327d
movl $0x38, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x28971
movq 0x38(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x20(%rsp)
movq 0x30(%rsp), %rax
movq %rax, 0x18(%rsp)
movq 0x18(%rsp), %rax
cmpq $0x0, (%rax)
je 0x28a54
movq 0x18(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x25db0
cmpl $0x0, %eax
jle 0x28a54
jmp 0x289b1
movq 0x18(%rsp), %rax
cmpq $0x0, (%rax)
jne 0x289f4
movq 0x18b615(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x135699(%rip), %rsi    # 0x15e066
leaq 0x13ab98(%rip), %rdx    # 0x16356c
leaq 0x13ab73(%rip), %rcx    # 0x16354e
leaq 0x13a89b(%rip), %r8     # 0x16327d
movl $0x3e, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x289f6
movq 0x28(%rsp), %rax
movq %rax, (%rsp)
movq 0x18(%rsp), %rax
movq (%rax), %rdi
callq 0x257c0
movq %rax, 0x8(%rsp)
movq 0x18(%rsp), %rax
movq (%rax), %rdi
callq 0x25850
movl %eax, 0x14(%rsp)
movq 0x20(%rsp), %rdi
callq 0x25850
movq (%rsp), %rdi
movq 0x8(%rsp), %rdx
movl 0x14(%rsp), %ecx
movl %eax, %r8d
leaq 0x13ab34(%rip), %rsi    # 0x163577
movb $0x0, %al
callq 0xc0d0
movl $0xffffffff, 0x44(%rsp) # imm = 0xFFFFFFFF
jmp 0x28a69
movq 0x20(%rsp), %rcx
movq 0x18(%rsp), %rax
movq %rcx, (%rax)
movl $0x0, 0x44(%rsp)
movl 0x44(%rsp), %eax
addq $0x48, %rsp
retq
nopw %cs:(%rax,%rax)
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_parser.c
// Function: gt_gff3_parser_new
GtGFF3Parser* gt_gff3_parser_new(GtTypeChecker *type_checker)
{
  GtGFF3Parser *parser;
  parser = gt_calloc(1, sizeof *parser);
  parser->feature_info = gt_feature_info_new();
  parser->seqid_to_ssr_mapping = gt_hashmap_new(GT_HASH_STRING, NULL,
                                        (GtFree) simple_sequence_region_delete);
  parser->source_to_str_mapping = gt_hashmap_new(GT_HASH_STRING, NULL,
                                                 (GtFree) gt_str_delete);
  parser->offset = GT_UNDEF_WORD;
  parser->orphanage = gt_orphanage_new();
  parser->type_checker = type_checker ? gt_type_checker_ref(type_checker)
                                      : NULL;
  parser->xrf_checker = NULL;
  return parser;
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
movl $0x1, %edi
movl $0x58, %esi
leaq 0x13ab11(%rip), %rdx    # 0x1635ab
movl $0x66, %ecx
callq 0xd5b0
movq %rax, 0x8(%rsp)
callq 0xa6100
movq %rax, %rcx
movq 0x8(%rsp), %rax
movq %rcx, (%rax)
movl $0x1, %edi
xorl %eax, %eax
movl %eax, %esi
leaq 0xa7(%rip), %rdx        # 0x28b70
callq 0x86190
movq %rax, %rcx
movq 0x8(%rsp), %rax
movq %rcx, 0x8(%rax)
movl $0x1, %edi
xorl %eax, %eax
movl %eax, %esi
leaq -0xdb2a(%rip), %rdx     # 0x1afc0
callq 0x86190
movq %rax, %rcx
movq 0x8(%rsp), %rax
movq %rcx, 0x10(%rax)
movq 0x8(%rsp), %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
movq %rcx, 0x28(%rax)
callq 0x35460
movq %rax, %rcx
movq 0x8(%rsp), %rax
movq %rcx, 0x38(%rax)
cmpq $0x0, 0x10(%rsp)
je 0x28b37
movq 0x10(%rsp), %rdi
callq 0x39310
movq %rax, (%rsp)
jmp 0x28b3f
xorl %eax, %eax
movq %rax, (%rsp)
jmp 0x28b3f
movq (%rsp), %rcx
movq 0x8(%rsp), %rax
movq %rcx, 0x40(%rax)
movq 0x8(%rsp), %rax
movq $0x0, 0x48(%rax)
movq 0x8(%rsp), %rax
addq $0x18, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_parser.c
// Function: gt_gff3_parser_set_offsetfile
int gt_gff3_parser_set_offsetfile(GtGFF3Parser *parser, GtStr *offsetfile,
                                  GtError *err)
{
  gt_error_check(err);
  gt_assert(parser);
  gt_assert(parser->offset == GT_UNDEF_WORD);
  parser->offset_mapping = gt_mapping_new(offsetfile, "offsets",
                                          GT_MAPPINGTYPE_INTEGER, err);
  if (parser->offset_mapping)
    return 0;
  return -1;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x18(%rsp)
movq %rsi, 0x10(%rsp)
movq %rdx, 0x8(%rsp)
cmpq $0x0, 0x8(%rsp)
je 0x28ed3
movq 0x8(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0x28e9b
jmp 0x28ed3
movq 0x18b136(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x1351ba(%rip), %rsi    # 0x15e066
leaq 0x135795(%rip), %rdx    # 0x15e648
leaq 0x13a822(%rip), %rcx    # 0x1636dc
leaq 0x13a6ea(%rip), %r8     # 0x1635ab
movl $0xa0, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x28ed5
jmp 0x28ed7
cmpq $0x0, 0x18(%rsp)
jne 0x28f17
movq 0x18b0f2(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x135176(%rip), %rsi    # 0x15e066
leaq 0x13bb8a(%rip), %rdx    # 0x164a81
leaq 0x13a7de(%rip), %rcx    # 0x1636dc
leaq 0x13a6a6(%rip), %r8     # 0x1635ab
movl $0xa1, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x28f19
jmp 0x28f1b
movq 0x18(%rsp), %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
cmpq %rcx, 0x28(%rax)
je 0x28f68
movq 0x18b0a1(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x135125(%rip), %rsi    # 0x15e066
leaq 0x13a7b2(%rip), %rdx    # 0x1636fa
leaq 0x13a78d(%rip), %rcx    # 0x1636dc
leaq 0x13a655(%rip), %r8     # 0x1635ab
movl $0xa2, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x28f6a
movq 0x10(%rsp), %rdi
movq 0x8(%rsp), %rcx
leaq 0x13a79f(%rip), %rsi    # 0x16371a
movl $0x1, %edx
callq 0x32e30
movq %rax, %rcx
movq 0x18(%rsp), %rax
movq %rcx, 0x30(%rax)
movq 0x18(%rsp), %rax
cmpq $0x0, 0x30(%rax)
je 0x28fa7
movl $0x0, 0x24(%rsp)
jmp 0x28faf
movl $0xffffffff, 0x24(%rsp) # imm = 0xFFFFFFFF
movl 0x24(%rsp), %eax
addq $0x28, %rsp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_parser.c
// Function: gt_gff3_parser_build_target_str
void gt_gff3_parser_build_target_str(GtStr *target, GtStrArray *target_ids,
                                     GtArray *target_ranges,
                                     GtArray *target_strands)
{
  GtUword i;
  gt_assert(target && target_ids && target_ranges && target_strands);
  for (i = 0; i < gt_str_array_size(target_ids); i++) {
    GtRange *range;
    GtStrand *strand;
    range = gt_array_get(target_ranges, i);
    strand = gt_array_get(target_strands, i);
    if (i)
      gt_str_append_char(target, ',');
    gt_str_append_cstr(target, gt_str_array_get(target_ids, i));
    gt_str_append_char(target, ' ');
    gt_str_append_uword(target, range->start);
    gt_str_append_char(target, ' ');
    gt_str_append_uword(target, range->end);
    if (*strand != GT_NUM_OF_STRAND_TYPES) {
      gt_str_append_char(target, ' ');
      gt_str_append_char(target, GT_STRAND_CHARS[*strand]);
    }
  }
}

// Assembly:
subq $0x48, %rsp
movq %rdi, 0x40(%rsp)
movq %rsi, 0x38(%rsp)
movq %rdx, 0x30(%rsp)
movq %rcx, 0x28(%rsp)
cmpq $0x0, 0x40(%rsp)
je 0x29558
cmpq $0x0, 0x38(%rsp)
je 0x29558
cmpq $0x0, 0x30(%rsp)
je 0x29558
cmpq $0x0, 0x28(%rsp)
jne 0x29590
movq 0x18aa79(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x134afd(%rip), %rsi    # 0x15e066
leaq 0x13a226(%rip), %rdx    # 0x163796
leaq 0x13a257(%rip), %rcx    # 0x1637ce
leaq 0x13a02d(%rip), %r8     # 0x1635ab
movl $0x481, %r9d            # imm = 0x481
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x29592
movq $0x0, 0x20(%rsp)
movq 0x20(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x38(%rsp), %rdi
callq 0x1b720
movq %rax, %rcx
movq 0x8(%rsp), %rax
cmpq %rcx, %rax
jae 0x296b2
movq 0x30(%rsp), %rdi
movq 0x20(%rsp), %rsi
callq 0x75c80
movq %rax, 0x18(%rsp)
movq 0x28(%rsp), %rdi
movq 0x20(%rsp), %rsi
callq 0x75c80
movq %rax, 0x10(%rsp)
cmpq $0x0, 0x20(%rsp)
je 0x295ff
movq 0x40(%rsp), %rdi
movl $0x2c, %esi
callq 0x194d0
movq 0x40(%rsp), %rax
movq %rax, (%rsp)
movq 0x38(%rsp), %rdi
movq 0x20(%rsp), %rsi
callq 0x1b320
movq (%rsp), %rdi
movq %rax, %rsi
callq 0x18fb0
movq 0x40(%rsp), %rdi
movl $0x20, %esi
callq 0x194d0
movq 0x40(%rsp), %rdi
movq 0x18(%rsp), %rax
movq (%rax), %rsi
callq 0x19390
movq 0x40(%rsp), %rdi
movl $0x20, %esi
callq 0x194d0
movq 0x40(%rsp), %rdi
movq 0x18(%rsp), %rax
movq 0x8(%rax), %rsi
callq 0x19390
movq 0x10(%rsp), %rax
cmpl $0x4, (%rax)
je 0x2969d
movq 0x40(%rsp), %rdi
movl $0x20, %esi
callq 0x194d0
movq 0x40(%rsp), %rdi
movq 0x10(%rsp), %rax
movl (%rax), %eax
movl %eax, %ecx
leaq 0x1364a0(%rip), %rax    # 0x15fb34
movsbl (%rax,%rcx), %esi
callq 0x194d0
jmp 0x2969f
movq 0x20(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x20(%rsp)
jmp 0x2959b
addq $0x48, %rsp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_parser.c
// Function: chomp_seqid
void chomp_seqid(char *seqid, const char *filename, unsigned int line_number)
{
  GtUword len;
  if (!seqid) return;
  len = strlen(seqid);
  if (len > 0) {
    if (seqid[len-1] == ' ') {
      gt_warning("seqid \"%s\" on line %u in file \"%s\" ends with a blank, "
                 "removing it", seqid, line_number, filename);
      (void) gt_cstr_rtrim(seqid, ' ');
    }
  }
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq %rsi, 0x18(%rsp)
movl %edx, 0x14(%rsp)
cmpq $0x0, 0x20(%rsp)
jne 0x296dc
jmp 0x29737
movq 0x20(%rsp), %rdi
callq 0xb240
movq %rax, 0x8(%rsp)
cmpq $0x0, 0x8(%rsp)
jbe 0x29737
movq 0x20(%rsp), %rax
movq 0x8(%rsp), %rcx
subq $0x1, %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x20, %eax
jne 0x29735
movq 0x20(%rsp), %rsi
movl 0x14(%rsp), %edx
movq 0x18(%rsp), %rcx
leaq 0x13a0cf(%rip), %rdi    # 0x1637ee
movb $0x0, %al
callq 0x1c550
movq 0x20(%rsp), %rdi
movl $0x20, %esi
callq 0x7c720
jmp 0x29737
addq $0x28, %rsp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_parser.c
// Function: gt_gff3_parser_reset
void gt_gff3_parser_reset(GtGFF3Parser *parser)
{
  gt_assert(parser);
  parser->fasta_parsing = false;
  parser->eof_emitted = false;
  gt_feature_info_reset(parser->feature_info);
  gt_hashmap_reset(parser->seqid_to_ssr_mapping);
  gt_hashmap_reset(parser->source_to_str_mapping);
  gt_orphanage_reset(parser->orphanage);
  parser->last_terminator = 0;
}

// Assembly:
pushq %rax
movq %rdi, (%rsp)
cmpq $0x0, (%rsp)
jne 0x2ba44
movq 0x1885c5(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x132649(%rip), %rsi    # 0x15e066
leaq 0x13905d(%rip), %rdx    # 0x164a81
leaq 0x137e9c(%rip), %rcx    # 0x1638c7
leaq 0x137b79(%rip), %r8     # 0x1635ab
movl $0x8b6, %r9d            # imm = 0x8B6
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x2ba46
movq (%rsp), %rax
movb $0x0, 0x1d(%rax)
movq (%rsp), %rax
movb $0x0, 0x1e(%rax)
movq (%rsp), %rax
movq (%rax), %rdi
callq 0xa61b0
movq (%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x867b0
movq (%rsp), %rax
movq 0x10(%rax), %rdi
callq 0x867b0
movq (%rsp), %rax
movq 0x38(%rax), %rdi
callq 0x35530
movq (%rsp), %rax
movl $0x0, 0x50(%rax)
popq %rax
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_parser.c
// Function: gt_gff3_parser_delete
void gt_gff3_parser_delete(GtGFF3Parser *parser)
{
  if (!parser) return;
  gt_feature_info_delete(parser->feature_info);
  gt_hashmap_delete(parser->seqid_to_ssr_mapping);
  gt_hashmap_delete(parser->source_to_str_mapping);
  gt_mapping_delete(parser->offset_mapping);
  gt_orphanage_delete(parser->orphanage);
  gt_type_checker_delete(parser->type_checker);
  gt_xrf_checker_delete(parser->xrf_checker);
  gt_free(parser);
}

// Assembly:
pushq %rax
movq %rdi, (%rsp)
cmpq $0x0, (%rsp)
jne 0x2baae
jmp 0x2bb1d
movq (%rsp), %rax
movq (%rax), %rdi
callq 0xa6170
movq (%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x86cc0
movq (%rsp), %rax
movq 0x10(%rax), %rdi
callq 0x86cc0
movq (%rsp), %rax
movq 0x30(%rax), %rdi
callq 0x33270
movq (%rsp), %rax
movq 0x38(%rax), %rdi
callq 0x354b0
movq (%rsp), %rax
movq 0x40(%rax), %rdi
callq 0x39660
movq (%rsp), %rax
movq 0x48(%rax), %rdi
callq 0x3a030
movq (%rsp), %rdi
leaq 0x137a98(%rip), %rsi    # 0x1635ab
movl $0x8ca, %edx            # imm = 0x8CA
callq 0xdab0
popq %rax
retq
nop
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_parser.c
// Function: add_offset_if_necessary
static int add_offset_if_necessary(GtRange *range, GtGFF3Parser *parser,
                                   const char *seqid, const char *filename,
                                   GtUword line_number, GtError *err)
{
  int had_err = 0;
  gt_error_check(err);
  if (parser->offset != GT_UNDEF_WORD) {
    had_err = offset_possible(range, parser->offset, filename, line_number,
                              err);
    if (!had_err)
      *range = gt_range_offset(range, parser->offset);
  }
  else if (parser->offset_mapping) {
    GtWord offset;
    had_err = gt_mapping_map_integer(parser->offset_mapping, &offset, seqid,
                                     err);
    if (!had_err)
      had_err = offset_possible(range, offset, filename, line_number, err);
    if (!had_err)
      *range = gt_range_offset(range, offset);
  }
  return had_err;
}

// Assembly:
subq $0x78, %rsp
movq %rdi, 0x70(%rsp)
movq %rsi, 0x68(%rsp)
movq %rdx, 0x60(%rsp)
movq %rcx, 0x58(%rsp)
movq %r8, 0x50(%rsp)
movq %r9, 0x48(%rsp)
movl $0x0, 0x44(%rsp)
cmpq $0x0, 0x48(%rsp)
je 0x2c25a
movq 0x48(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0x2c222
jmp 0x2c25a
movq 0x187daf(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x131e33(%rip), %rsi    # 0x15e066
leaq 0x13240e(%rip), %rdx    # 0x15e648
leaq 0x137d7c(%rip), %rcx    # 0x163fbd
leaq 0x137363(%rip), %r8     # 0x1635ab
movl $0xd5, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x2c25c
movq 0x68(%rsp), %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
cmpq %rcx, 0x28(%rax)
je 0x2c2e5
movq 0x70(%rsp), %rdi
movq 0x68(%rsp), %rax
movq 0x28(%rax), %rsi
movq 0x58(%rsp), %rdx
movq 0x50(%rsp), %rax
movl %eax, %ecx
movq 0x48(%rsp), %r8
callq 0x2c990
movl %eax, 0x44(%rsp)
cmpl $0x0, 0x44(%rsp)
jne 0x2c2e0
movq 0x70(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x70(%rsp), %rdi
movq 0x68(%rsp), %rax
movq 0x28(%rax), %rsi
callq 0x940e0
movq %rax, %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x30(%rsp)
movq %rdx, 0x38(%rsp)
movq 0x30(%rsp), %rcx
movq %rcx, (%rax)
movq 0x38(%rsp), %rcx
movq %rcx, 0x8(%rax)
jmp 0x2c388
movq 0x68(%rsp), %rax
cmpq $0x0, 0x30(%rax)
je 0x2c386
movq 0x68(%rsp), %rax
movq 0x30(%rax), %rdi
movq 0x60(%rsp), %rdx
movq 0x48(%rsp), %rcx
leaq 0x28(%rsp), %rsi
callq 0x33500
movl %eax, 0x44(%rsp)
cmpl $0x0, 0x44(%rsp)
jne 0x2c341
movq 0x70(%rsp), %rdi
movq 0x28(%rsp), %rsi
movq 0x58(%rsp), %rdx
movq 0x50(%rsp), %rax
movl %eax, %ecx
movq 0x48(%rsp), %r8
callq 0x2c990
movl %eax, 0x44(%rsp)
cmpl $0x0, 0x44(%rsp)
jne 0x2c384
movq 0x70(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x70(%rsp), %rdi
movq 0x28(%rsp), %rsi
callq 0x940e0
movq %rax, %rcx
movq 0x8(%rsp), %rax
movq %rcx, 0x18(%rsp)
movq %rdx, 0x20(%rsp)
movq 0x18(%rsp), %rcx
movq %rcx, (%rax)
movq 0x20(%rsp), %rcx
movq %rcx, 0x8(%rax)
jmp 0x2c386
jmp 0x2c388
movl 0x44(%rsp), %eax
addq $0x78, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_parser.c
// Function: simple_sequence_region_new
static SimpleSequenceRegion* simple_sequence_region_new(const char *seqid,
                                                        GtRange range,
                                                        unsigned int
                                                        line_number)
{
  SimpleSequenceRegion *ssr = gt_calloc(1, sizeof *ssr);
  ssr->seqid_str = gt_str_new_cstr(seqid);
  ssr->range = range;
  ssr->line_number = line_number;
  return ssr;
}

// Assembly:
subq $0x28, %rsp
movq %rsi, 0x18(%rsp)
movq %rdx, 0x20(%rsp)
movq %rdi, 0x10(%rsp)
movl %ecx, 0xc(%rsp)
movl $0x1, %edi
movl $0x20, %esi
leaq 0x1371e3(%rip), %rdx    # 0x1635ab
movl $0x55, %ecx
callq 0xd5b0
movq %rax, (%rsp)
movq 0x10(%rsp), %rdi
callq 0x18f70
movq %rax, %rcx
movq (%rsp), %rax
movq %rcx, (%rax)
movq (%rsp), %rax
movq 0x18(%rsp), %rcx
movq %rcx, 0x8(%rax)
movq 0x20(%rsp), %rcx
movq %rcx, 0x10(%rax)
movl 0xc(%rsp), %ecx
movq (%rsp), %rax
movl %ecx, 0x18(%rax)
movq (%rsp), %rax
addq $0x28, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_parser.c
// Function: invalid_gff3_pragma
static bool invalid_gff3_pragma(const char *line)
{
  return (strncmp(line, GT_GFF_SPECIES, strlen(GT_GFF_SPECIES))
            && strncmp(line, GT_GFF_FEATURE_ONTOLOGY,
                       strlen(GT_GFF_FEATURE_ONTOLOGY))
            && strncmp(line, GT_GFF_ATTRIBUTE_ONTOLOGY,
                       strlen(GT_GFF_ATTRIBUTE_ONTOLOGY))
            && strncmp(line, GT_GFF_SOURCE_ONTOLOGY,
                       strlen(GT_GFF_SOURCE_ONTOLOGY))
            && strncmp(line, GT_GFF_GENOME_BUILD,
                       strlen(GT_GFF_GENOME_BUILD)));
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
movq 0x10(%rsp), %rdi
leaq 0x137c51(%rip), %rsi    # 0x164086
movl $0x9, %edx
callq 0xb280
movl %eax, %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, 0xf(%rsp)
je 0x2c4d9
movq 0x10(%rsp), %rdi
leaq 0x137c34(%rip), %rsi    # 0x164090
movl $0x12, %edx
callq 0xb280
movl %eax, %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, 0xf(%rsp)
je 0x2c4d9
movq 0x10(%rsp), %rdi
leaq 0x137c24(%rip), %rsi    # 0x1640a3
movl $0x14, %edx
callq 0xb280
movl %eax, %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, 0xf(%rsp)
je 0x2c4d9
movq 0x10(%rsp), %rdi
leaq 0x137c16(%rip), %rsi    # 0x1640b8
movl $0x11, %edx
callq 0xb280
movl %eax, %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, 0xf(%rsp)
je 0x2c4d9
movq 0x10(%rsp), %rdi
leaq 0x137c05(%rip), %rsi    # 0x1640ca
movl $0xe, %edx
callq 0xb280
cmpl $0x0, %eax
setne %al
movb %al, 0xf(%rsp)
movb 0xf(%rsp), %al
andb $0x1, %al
addq $0x18, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_parser.c
// Function: offset_possible
static int offset_possible(const GtRange *range, GtWord offset,
                           const char *filename, unsigned int line_number,
                           GtError *err)
{
  int had_err = 0;
  gt_error_check(err);
  if (offset < 0) {
    /* check for underflow */
    GtUword result = range->start + offset;
    if (result == 0) {
      gt_error_set(err, "==0");
      gt_error_set(err, "adding offset "GT_WD" to node on line %u in file "
                   "\"%s\" leads to start 0 (GFF3 files are 1-based)",
                   offset, line_number, filename);
      had_err = -1;
    }
    else if (result > range->start) {
      gt_error_set(err, "adding offset "GT_WD" to node on line %u in file "
                   "\"%s\" leads to underflow",
                   offset, line_number, filename);
      had_err = -1;
    }
  }
  return had_err;
}

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x30(%rsp)
movq %rsi, 0x28(%rsp)
movq %rdx, 0x20(%rsp)
movl %ecx, 0x1c(%rsp)
movq %r8, 0x10(%rsp)
movl $0x0, 0xc(%rsp)
cmpq $0x0, 0x10(%rsp)
je 0x2ca04
movq 0x10(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0x2c9cc
jmp 0x2ca04
movq 0x187605(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x131689(%rip), %rsi    # 0x15e066
leaq 0x131c64(%rip), %rdx    # 0x15e648
leaq 0x1375ea(%rip), %rcx    # 0x163fd5
leaq 0x136bb9(%rip), %r8     # 0x1635ab
movl $0xbb, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x2ca06
cmpq $0x0, 0x28(%rsp)
jge 0x2caa3
movq 0x30(%rsp), %rax
movq (%rax), %rax
addq 0x28(%rsp), %rax
movq %rax, (%rsp)
cmpq $0x0, (%rsp)
jne 0x2ca68
movq 0x10(%rsp), %rdi
leaq 0x142360(%rip), %rsi    # 0x16ed96
movb $0x0, %al
callq 0xc0d0
movq 0x10(%rsp), %rdi
movq 0x28(%rsp), %rdx
movl 0x1c(%rsp), %ecx
movq 0x20(%rsp), %r8
leaq 0x13758e(%rip), %rsi    # 0x163fe5
movb $0x0, %al
callq 0xc0d0
movl $0xffffffff, 0xc(%rsp)  # imm = 0xFFFFFFFF
jmp 0x2caa1
movq (%rsp), %rax
movq 0x30(%rsp), %rcx
cmpq (%rcx), %rax
jbe 0x2ca9f
movq 0x10(%rsp), %rdi
movq 0x28(%rsp), %rdx
movl 0x1c(%rsp), %ecx
movq 0x20(%rsp), %r8
leaq 0x1375b1(%rip), %rsi    # 0x164041
movb $0x0, %al
callq 0xc0d0
movl $0xffffffff, 0xc(%rsp)  # imm = 0xFFFFFFFF
jmp 0x2caa1
jmp 0x2caa3
movl 0xc(%rsp), %eax
addq $0x38, %rsp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_parser.c
// Function: set_source
static void set_source(GtFeatureNode *feature_node, const char *source,
                       GtHashmap *source_to_str_mapping)
{
  GtStr *source_str;
  gt_assert(feature_node && source && source_to_str_mapping);
  source_str = gt_hashmap_get(source_to_str_mapping, source);
  if (!source_str) {
    source_str = gt_str_new_cstr(source);
    gt_hashmap_add(source_to_str_mapping, gt_str_get(source_str), source_str);
  }
  gt_assert(source_str);
  gt_feature_node_set_source(feature_node, source_str);
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq %rsi, 0x18(%rsp)
movq %rdx, 0x10(%rsp)
cmpq $0x0, 0x20(%rsp)
je 0x2ccbb
cmpq $0x0, 0x18(%rsp)
je 0x2ccbb
cmpq $0x0, 0x10(%rsp)
jne 0x2ccf3
movq 0x187316(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x13139a(%rip), %rsi    # 0x15e066
leaq 0x13788d(%rip), %rdx    # 0x164560
leaq 0x134ebf(%rip), %rcx    # 0x161b99
leaq 0x1368ca(%rip), %r8     # 0x1635ab
movl $0x5d1, %r9d            # imm = 0x5D1
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x2ccf5
movq 0x10(%rsp), %rdi
movq 0x18(%rsp), %rsi
callq 0x86470
movq %rax, 0x8(%rsp)
cmpq $0x0, 0x8(%rsp)
jne 0x2cd44
movq 0x18(%rsp), %rdi
callq 0x18f70
movq %rax, 0x8(%rsp)
movq 0x10(%rsp), %rax
movq %rax, (%rsp)
movq 0x8(%rsp), %rdi
callq 0x19940
movq (%rsp), %rdi
movq %rax, %rsi
movq 0x8(%rsp), %rdx
callq 0x86510
jmp 0x2cd46
cmpq $0x0, 0x8(%rsp)
jne 0x2cd86
movq 0x187283(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x131307(%rip), %rsi    # 0x15e066
leaq 0x161632(%rip), %rdx    # 0x18e398
leaq 0x134e2c(%rip), %rcx    # 0x161b99
leaq 0x136837(%rip), %r8     # 0x1635ab
movl $0x5d7, %r9d            # imm = 0x5D7
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x2cd88
movq 0x20(%rsp), %rdi
movq 0x8(%rsp), %rsi
callq 0x1ff10
addq $0x28, %rsp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_parser.c
// Function: is_blank_attribute
static bool is_blank_attribute(const char *attribute)
{
  while (*attribute != '\0') {
    if (*attribute != ' ')
      return false;
    attribute++;
  }
  return true;
}

// Assembly:
movq %rdi, -0x10(%rsp)
movq -0x10(%rsp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
je 0x2dd76
movq -0x10(%rsp), %rax
movsbl (%rax), %eax
cmpl $0x20, %eax
je 0x2dd66
movb $0x0, -0x1(%rsp)
jmp 0x2dd7b
movq -0x10(%rsp), %rax
addq $0x1, %rax
movq %rax, -0x10(%rsp)
jmp 0x2dd45
movb $0x1, -0x1(%rsp)
movb -0x1(%rsp), %al
andb $0x1, %al
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_parser.c
// Function: invalid_uppercase_gff3_attribute
static bool invalid_uppercase_gff3_attribute(const char *attr_tag)
{
  return (strcmp(attr_tag, GT_GFF_ID) &&
          strcmp(attr_tag, GT_GFF_NAME) &&
          strcmp(attr_tag, GT_GFF_ALIAS) &&
          strcmp(attr_tag, GT_GFF_PARENT) &&
          strcmp(attr_tag, GT_GFF_TARGET) &&
          strcmp(attr_tag, GT_GFF_GAP) &&
          strcmp(attr_tag, GT_GFF_DERIVES_FROM) &&
          strcmp(attr_tag, GT_GFF_NOTE) &&
          strcmp(attr_tag, GT_GFF_DBXREF) &&
          strcmp(attr_tag, GT_GFF_ONTOLOGY_TERM) &&
          strcmp(attr_tag, GT_GFF_START_RANGE) &&
          strcmp(attr_tag, GT_GFF_END_RANGE) &&
          strcmp(attr_tag, GT_GFF_IS_CIRCULAR));
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
movq 0x10(%rsp), %rdi
leaq 0x136a9b(%rip), %rsi    # 0x164840
callq 0xb850
movl %eax, %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, 0xf(%rsp)
je 0x2df3c
movq 0x10(%rsp), %rdi
leaq 0x136b94(%rip), %rsi    # 0x16495b
callq 0xb850
movl %eax, %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, 0xf(%rsp)
je 0x2df3c
movq 0x10(%rsp), %rdi
leaq 0x136b77(%rip), %rsi    # 0x164960
callq 0xb850
movl %eax, %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, 0xf(%rsp)
je 0x2df3c
movq 0x10(%rsp), %rdi
leaq 0x136a38(%rip), %rsi    # 0x164843
callq 0xb850
movl %eax, %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, 0xf(%rsp)
je 0x2df3c
movq 0x10(%rsp), %rdi
leaq 0x136a84(%rip), %rsi    # 0x1648b1
callq 0xb850
movl %eax, %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, 0xf(%rsp)
je 0x2df3c
movq 0x10(%rsp), %rdi
leaq 0x136a7e(%rip), %rsi    # 0x1648cd
callq 0xb850
movl %eax, %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, 0xf(%rsp)
je 0x2df3c
movq 0x10(%rsp), %rdi
leaq 0x136af5(%rip), %rsi    # 0x164966
callq 0xb850
movl %eax, %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, 0xf(%rsp)
je 0x2df3c
movq 0x10(%rsp), %rdi
leaq 0x136ae0(%rip), %rsi    # 0x164973
callq 0xb850
movl %eax, %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, 0xf(%rsp)
je 0x2df3c
movq 0x10(%rsp), %rdi
leaq 0x136a03(%rip), %rsi    # 0x1648b8
callq 0xb850
movl %eax, %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, 0xf(%rsp)
je 0x2df3c
movq 0x10(%rsp), %rdi
leaq 0x1369ec(%rip), %rsi    # 0x1648bf
callq 0xb850
movl %eax, %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, 0xf(%rsp)
je 0x2df3c
movq 0x10(%rsp), %rdi
leaq 0x136a87(%rip), %rsi    # 0x164978
callq 0xb850
movl %eax, %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, 0xf(%rsp)
je 0x2df3c
movq 0x10(%rsp), %rdi
leaq 0x136a75(%rip), %rsi    # 0x164984
callq 0xb850
movl %eax, %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, 0xf(%rsp)
je 0x2df3c
movq 0x10(%rsp), %rdi
leaq 0x13691d(%rip), %rsi    # 0x16484a
callq 0xb850
cmpl $0x0, %eax
setne %al
movb %al, 0xf(%rsp)
movb 0xf(%rsp), %al
andb $0x1, %al
addq $0x18, %rsp
retq
nopw (%rax,%rax)