LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/encdesc_header_io.c
// Function: read_field_char_dists
static int read_field_char_dists(DescField *field,
                                 FILE *fp, GtError *err)
{
  int had_err = 0;
  GtUword char_idx,
          distr_len;
  EncsecDistriData data;

  data.err = err;
  data.had_err = 0;
  data.fp = fp;

  for (char_idx = 0; !had_err && char_idx < field->max_len; char_idx++) {
    if (char_idx >= field->len ||
        !gt_bittab_bit_is_set(field->bittab, char_idx)) {

      had_err = gt_io_error_fread_one(distr_len, fp, err);
      field->chars[char_idx] = io_hashmap_distri(field->chars[char_idx],
                                                 distr_len,
                                                 &data, err);
      if (field->chars[char_idx] == NULL)
        had_err = 1;
    }
  }
  return had_err;
}

// Assembly:
subq $0x68, %rsp
movq %rdi, 0x60(%rsp)
movq %rsi, 0x58(%rsp)
movq %rdx, 0x50(%rsp)
movl $0x0, 0x4c(%rsp)
movq 0x50(%rsp), %rax
movq %rax, 0x28(%rsp)
movl $0x0, 0x30(%rsp)
movq 0x58(%rsp), %rax
movq %rax, 0x10(%rsp)
movq $0x0, 0x40(%rsp)
xorl %eax, %eax
cmpl $0x0, 0x4c(%rsp)
movb %al, 0xf(%rsp)
jne 0x1655d2
movq 0x40(%rsp), %rax
movq 0x60(%rsp), %rcx
cmpq 0x68(%rcx), %rax
setb %al
movb %al, 0xf(%rsp)
movb 0xf(%rsp), %al
testb $0x1, %al
jne 0x1655df
jmp 0x165697
movq 0x40(%rsp), %rax
movq 0x60(%rsp), %rcx
cmpq 0x50(%rcx), %rax
jae 0x165606
movq 0x60(%rsp), %rax
movq 0x18(%rax), %rdi
movq 0x40(%rsp), %rsi
callq 0x8a780
testb $0x1, %al
jne 0x165682
movq 0x58(%rsp), %rcx
movq 0x50(%rsp), %r8
leaq 0x38(%rsp), %rdi
movl $0x8, %esi
movl $0x1, %edx
callq 0x1978e0
movl %eax, 0x4c(%rsp)
movq 0x60(%rsp), %rax
movq 0x30(%rax), %rax
movq 0x40(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
movq 0x38(%rsp), %rsi
movq 0x50(%rsp), %rcx
leaq 0x10(%rsp), %rdx
callq 0x165da0
movq %rax, %rdx
movq 0x60(%rsp), %rax
movq 0x30(%rax), %rax
movq 0x40(%rsp), %rcx
movq %rdx, (%rax,%rcx,8)
movq 0x60(%rsp), %rax
movq 0x30(%rax), %rax
movq 0x40(%rsp), %rcx
cmpq $0x0, (%rax,%rcx,8)
jne 0x165680
movl $0x1, 0x4c(%rsp)
jmp 0x165682
jmp 0x165684
movq 0x40(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x40(%rsp)
jmp 0x1655b0
movl 0x4c(%rsp), %eax
addq $0x68, %rsp
retq
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/encdesc_header_io.c
// Function: io_zero_padding
static int io_zero_padding(DescField *field, FILE *fp, GtIOFunc io_func,
                           GtError *err)
{
  int had_err = 0;
  had_err = GT_ENCDESC_IO_ONE(field->has_zero_padding);
  if (!had_err && field->has_zero_padding) {
    had_err = GT_ENCDESC_IO_ONE(field->fieldlen_is_const);
    if (!had_err) {
      if (field->fieldlen_is_const)
        had_err = GT_ENCDESC_IO_ONE(field->len);
      else {
        had_err = GT_ENCDESC_IO_ONE(field->max_zero);
      }
    }
  }
  return had_err;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq %rsi, 0x18(%rsp)
movq %rdx, 0x10(%rsp)
movq %rcx, 0x8(%rsp)
movl $0x0, 0x4(%rsp)
movq 0x10(%rsp), %rax
movq 0x20(%rsp), %rdi
addq $0xba, %rdi
movq 0x18(%rsp), %rcx
movq 0x8(%rsp), %r8
movl $0x1, %edx
movq %rdx, %rsi
callq *%rax
movl %eax, 0x4(%rsp)
cmpl $0x0, 0x4(%rsp)
jne 0x16579d
movq 0x20(%rsp), %rax
testb $0x1, 0xba(%rax)
je 0x16579d
movq 0x10(%rsp), %rax
movq 0x20(%rsp), %rdi
addq $0xb9, %rdi
movq 0x18(%rsp), %rcx
movq 0x8(%rsp), %r8
movl $0x1, %edx
movq %rdx, %rsi
callq *%rax
movl %eax, 0x4(%rsp)
cmpl $0x0, 0x4(%rsp)
jne 0x16579b
movq 0x20(%rsp), %rax
testb $0x1, 0xb9(%rax)
je 0x16576e
movq 0x10(%rsp), %rax
movq 0x20(%rsp), %rdi
addq $0x50, %rdi
movq 0x18(%rsp), %rcx
movq 0x8(%rsp), %r8
movl $0x8, %esi
movl $0x1, %edx
callq *%rax
movl %eax, 0x4(%rsp)
jmp 0x165799
movq 0x10(%rsp), %rax
movq 0x20(%rsp), %rdi
addq $0xb4, %rdi
movq 0x18(%rsp), %rcx
movq 0x8(%rsp), %r8
movl $0x4, %esi
movl $0x1, %edx
callq *%rax
movl %eax, 0x4(%rsp)
jmp 0x16579b
jmp 0x16579d
movl 0x4(%rsp), %eax
addq $0x28, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/encdesc_header_io.c
// Function: zero_padding_needs_dist
static bool zero_padding_needs_dist(DescField *field)
{
  if (field->has_zero_padding) {
    if (!field->fieldlen_is_const)
      return true;
  }
  return false;
}

// Assembly:
movq %rdi, -0x10(%rsp)
movq -0x10(%rsp), %rax
testb $0x1, 0xba(%rax)
je 0x1657da
movq -0x10(%rsp), %rax
testb $0x1, 0xb9(%rax)
jne 0x1657d8
movb $0x1, -0x1(%rsp)
jmp 0x1657df
jmp 0x1657da
movb $0x0, -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/encdesc_header_io.c
// Function: numeric_field_check_distri_dependence
static void numeric_field_check_distri_dependence(DescField *field,
                                                  bool *needs_delta_dist,
                                                  bool *needs_value_dist)
{
  field->use_hc = false;
  if (field->use_delta_coding) {
    if (!field->is_delta_const &&
        field->delta_values_size <= GT_ENCDESC_MAX_NUM_VAL_HUF) {
      *needs_delta_dist = true;
      field->use_hc = true;
      gt_log_log("delta_values_size: " GT_WU, field->delta_values_size);
    }
  }
  else {
    if (!field->is_value_const && field->num_values_size > 0 &&
        field->num_values_size <= GT_ENCDESC_MAX_NUM_VAL_HUF) {
      *needs_value_dist = true;
      field->use_hc = true;
      gt_log_log("num_values_size: " GT_WU, field->num_values_size);
    }
  }
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
movq %rsi, 0x8(%rsp)
movq %rdx, (%rsp)
movq 0x10(%rsp), %rax
movb $0x0, 0xc2(%rax)
movq 0x10(%rsp), %rax
testb $0x1, 0xc1(%rax)
je 0x165d46
movq 0x10(%rsp), %rax
testb $0x1, 0xbc(%rax)
jne 0x165d44
movq 0x10(%rsp), %rax
cmpq $0x400, 0x48(%rax)      # imm = 0x400
ja 0x165d44
movq 0x8(%rsp), %rax
movb $0x1, (%rax)
movq 0x10(%rsp), %rax
movb $0x1, 0xc2(%rax)
movq 0x10(%rsp), %rax
movq 0x48(%rax), %rsi
leaq 0x3e9289(%rip), %rdi    # 0x54efc6
movb $0x0, %al
callq 0xe7740
jmp 0x165d9b
movq 0x10(%rsp), %rax
testb $0x1, 0xc0(%rax)
jne 0x165d99
movq 0x10(%rsp), %rax
cmpq $0x0, 0x60(%rax)
jbe 0x165d99
movq 0x10(%rsp), %rax
cmpq $0x400, 0x60(%rax)      # imm = 0x400
ja 0x165d99
movq (%rsp), %rax
movb $0x1, (%rax)
movq 0x10(%rsp), %rax
movb $0x1, 0xc2(%rax)
movq 0x10(%rsp), %rax
movq 0x60(%rax), %rsi
leaq 0x3e924b(%rip), %rdi    # 0x54efdd
movb $0x0, %al
callq 0xe7740
jmp 0x165d9b
addq $0x18, %rsp
retq
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/encdesc_header_io.c
// Function: io_hashmap_distri
static inline GtHashtable *io_hashmap_distri(GtHashtable *h_table,
                                             GtUword size,
                                             EncsecDistriData *data,
                                             GtError *err)
{
  if (h_table != NULL) {
    h_table = write_hashmap_distri(h_table, size, data, err);
  }
  else {
    h_table = read_hashmap_distri(h_table, size, data->fp, err);
  }
  return h_table;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq %rsi, 0x18(%rsp)
movq %rdx, 0x10(%rsp)
movq %rcx, 0x8(%rsp)
cmpq $0x0, 0x20(%rsp)
je 0x165de0
movq 0x20(%rsp), %rdi
movq 0x18(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq 0x8(%rsp), %rcx
callq 0x165e70
movq %rax, 0x20(%rsp)
jmp 0x165e01
movq 0x20(%rsp), %rdi
movq 0x18(%rsp), %rsi
movq 0x10(%rsp), %rax
movq (%rax), %rdx
movq 0x8(%rsp), %rcx
callq 0x165f70
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/encdesc_header_io.c
// Function: io_zero_disc_distri
static inline GtDiscDistri *io_zero_disc_distri(GtDiscDistri *dist,
                                                EncsecDistriData *data,
                                                GtError *err)
{
  if (dist == NULL)
    dist = read_zero_disc_distri(dist, data->fp, err);
  else
    dist = write_zero_disc_distri(dist, data, err);
  return dist;
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
movq %rsi, 0x8(%rsp)
movq %rdx, (%rsp)
cmpq $0x0, 0x10(%rsp)
jne 0x165e47
movq 0x10(%rsp), %rdi
movq 0x8(%rsp), %rax
movq (%rax), %rsi
movq (%rsp), %rdx
callq 0x166340
movq %rax, 0x10(%rsp)
jmp 0x165e5f
movq 0x10(%rsp), %rdi
movq 0x8(%rsp), %rsi
movq (%rsp), %rdx
callq 0x166460
movq %rax, 0x10(%rsp)
movq 0x10(%rsp), %rax
addq $0x18, %rsp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/encdesc_header_io.c
// Function: write_hashmap_distri
static inline GtHashtable *write_hashmap_distri(GtHashtable *h_table,
                                                GT_UNUSED GtUword size,
                                                EncsecDistriData *data,
                                                GtError *err)
{
  int had_err = 0;
  data->written_elems = 0;
  had_err = li_ull_gt_hashmap_foreach(h_table,
                                      encdesc_li_ull_hashmap_iter_write,
                                      data, err);
  if (!had_err && data->written_elems != size)
    gt_log_log(GT_WU " != " GT_WU, size, data->written_elems);
  if (!had_err)
    gt_assert(data->written_elems == size);
  if (had_err) {
    li_ull_gt_hashmap_delete(h_table);
    h_table = NULL;
  }
  return h_table;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq %rsi, 0x18(%rsp)
movq %rdx, 0x10(%rsp)
movq %rcx, 0x8(%rsp)
movl $0x0, 0x4(%rsp)
movq 0x10(%rsp), %rax
movq $0x0, 0x8(%rax)
movq 0x20(%rsp), %rdi
movq 0x10(%rsp), %rdx
movq 0x8(%rsp), %rcx
leaq 0x26d(%rip), %rsi       # 0x166120
callq 0x1660c0
movl %eax, 0x4(%rsp)
cmpl $0x0, 0x4(%rsp)
jne 0x165eef
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rax
cmpq 0x18(%rsp), %rax
je 0x165eef
movq 0x18(%rsp), %rsi
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rdx
leaq 0x40f869(%rip), %rdi    # 0x575751
movb $0x0, %al
callq 0xe7740
cmpl $0x0, 0x4(%rsp)
jne 0x165f44
jmp 0x165ef8
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rax
cmpq 0x18(%rsp), %rax
je 0x165f40
movq 0x4d6091(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x3b00fa(%rip), %rsi    # 0x516013
leaq 0x3e90d2(%rip), %rdx    # 0x54eff2
leaq 0x3e90e7(%rip), %rcx    # 0x54f00e
leaq 0x3e8ea6(%rip), %r8     # 0x54edd4
movl $0x124, %r9d            # imm = 0x124
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x165f42
jmp 0x165f44
cmpl $0x0, 0x4(%rsp)
je 0x165f5e
movq 0x20(%rsp), %rdi
callq 0x1661d0
movq $0x0, 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/encdesc_header_io.c
// Function: read_hashmap_distri
static inline GtHashtable *read_hashmap_distri(GtHashtable *h_table,
                                               GtUword size,
                                               FILE *fp,
                                               GtError *err)
{
  int had_err = 0;
  GtUword idx;
  GtWord symbol;
  GtUint64 freq;

  h_table = li_ull_gt_hashmap_new();
  for (idx = 0; !had_err && idx < size; idx++) {
    had_err = gt_io_error_fread_one(symbol, fp, err);
    if (!had_err)
      had_err = gt_io_error_fread_one(freq, fp, err);
    if (!had_err) {
      gt_assert(li_ull_gt_hashmap_get(h_table, symbol) == 0);
      (void) li_ull_gt_hashmap_add(h_table, symbol, freq);
    }
  }
  if (had_err) {
    li_ull_gt_hashmap_delete(h_table);
    h_table = NULL;
  }
  return h_table;
}

// Assembly:
subq $0x48, %rsp
movq %rdi, 0x40(%rsp)
movq %rsi, 0x38(%rsp)
movq %rdx, 0x30(%rsp)
movq %rcx, 0x28(%rsp)
movl $0x0, 0x24(%rsp)
callq 0x166240
movq %rax, 0x40(%rsp)
movq $0x0, 0x18(%rsp)
xorl %eax, %eax
cmpl $0x0, 0x24(%rsp)
movb %al, 0x7(%rsp)
jne 0x165fc1
movq 0x18(%rsp), %rax
cmpq 0x38(%rsp), %rax
setb %al
movb %al, 0x7(%rsp)
movb 0x7(%rsp), %al
testb $0x1, %al
jne 0x165fce
jmp 0x16609a
movq 0x30(%rsp), %rcx
movq 0x28(%rsp), %r8
leaq 0x10(%rsp), %rdi
movl $0x8, %esi
movl $0x1, %edx
callq 0x1978e0
movl %eax, 0x24(%rsp)
cmpl $0x0, 0x24(%rsp)
jne 0x166019
movq 0x30(%rsp), %rcx
movq 0x28(%rsp), %r8
leaq 0x8(%rsp), %rdi
movl $0x8, %esi
movl $0x1, %edx
callq 0x1978e0
movl %eax, 0x24(%rsp)
cmpl $0x0, 0x24(%rsp)
jne 0x166085
jmp 0x166022
movq 0x40(%rsp), %rdi
movq 0x10(%rsp), %rsi
callq 0x166280
cmpq $0x0, %rax
je 0x16606f
movq 0x4d5f62(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x3affcb(%rip), %rsi    # 0x516013
leaq 0x3e8fd4(%rip), %rdx    # 0x54f023
leaq 0x3e8ff9(%rip), %rcx    # 0x54f04f
leaq 0x3e8d77(%rip), %r8     # 0x54edd4
movl $0x10c, %r9d            # imm = 0x10C
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x166071
movq 0x40(%rsp), %rdi
movq 0x10(%rsp), %rsi
movq 0x8(%rsp), %rdx
callq 0x1662d0
jmp 0x166087
movq 0x18(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x18(%rsp)
jmp 0x165fa3
cmpl $0x0, 0x24(%rsp)
je 0x1660b4
movq 0x40(%rsp), %rdi
callq 0x1661d0
movq $0x0, 0x40(%rsp)
movq 0x40(%rsp), %rax
addq $0x48, %rsp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/encdesc_header_io.c
// Function: encdesc_li_ull_hashmap_iter_write
static enum iterator_op encdesc_li_ull_hashmap_iter_write(
                                                          GtWord key,
                                                          GtUint64 value,
                                                          void *data,
                                                          GtError *err)
{
  int had_err = 0;
  EncsecDistriData *this_data = (EncsecDistriData*) data;
  this_data->written_elems++;
  had_err = gt_io_error_fwrite_one(key, this_data->fp, err);
  if (!had_err)
    had_err = gt_io_error_fwrite_one(value, this_data->fp, err);
  if (!had_err)
    return CONTINUE_ITERATION;
  return STOP_ITERATION;
}

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x28(%rsp)
movq %rsi, 0x20(%rsp)
movq %rdx, 0x18(%rsp)
movq %rcx, 0x10(%rsp)
movl $0x0, 0xc(%rsp)
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
movq (%rsp), %rax
movq 0x8(%rax), %rcx
addq $0x1, %rcx
movq %rcx, 0x8(%rax)
movq (%rsp), %rax
movq (%rax), %rcx
movq 0x10(%rsp), %r8
leaq 0x28(%rsp), %rdi
movl $0x8, %esi
movl $0x1, %edx
callq 0x197850
movl %eax, 0xc(%rsp)
cmpl $0x0, 0xc(%rsp)
jne 0x1661a8
movq (%rsp), %rax
movq (%rax), %rcx
movq 0x10(%rsp), %r8
leaq 0x20(%rsp), %rdi
movl $0x8, %esi
movl $0x1, %edx
callq 0x197850
movl %eax, 0xc(%rsp)
cmpl $0x0, 0xc(%rsp)
jne 0x1661b9
movl $0x0, 0x34(%rsp)
jmp 0x1661c1
movl $0x1, 0x34(%rsp)
movl 0x34(%rsp), %eax
addq $0x38, %rsp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/encdesc_header_io.c
// Function: read_zero_disc_distri
static inline GtDiscDistri *read_zero_disc_distri(GtDiscDistri *dist,
                                                  FILE *fp, GtError *err)
{
  int had_err = 0;
  GtUword idx, symbol;
  GtUint64 freq;
  GtUword num_of_zero_leaves;
  dist = gt_disc_distri_new();
  had_err = gt_io_error_fread_one(num_of_zero_leaves, fp, err);
  for (idx = 0; !had_err && idx < num_of_zero_leaves; idx++) {
    had_err = gt_io_error_fread_one(symbol, fp, err);
    if (!had_err)
      had_err = gt_io_error_fread_one(freq, fp, err);
    if (!had_err)
      gt_disc_distri_add_multi(dist, symbol, freq);
  }
  if (had_err) {
    gt_disc_distri_delete(dist);
    dist = NULL;
  }
  return dist;
}

// Assembly:
subq $0x48, %rsp
movq %rdi, 0x40(%rsp)
movq %rsi, 0x38(%rsp)
movq %rdx, 0x30(%rsp)
movl $0x0, 0x2c(%rsp)
callq 0xa5080
movq %rax, 0x40(%rsp)
movq 0x38(%rsp), %rcx
movq 0x30(%rsp), %r8
leaq 0x8(%rsp), %rdi
movl $0x8, %esi
movl $0x1, %edx
callq 0x1978e0
movl %eax, 0x2c(%rsp)
movq $0x0, 0x20(%rsp)
xorl %eax, %eax
cmpl $0x0, 0x2c(%rsp)
movb %al, 0x7(%rsp)
jne 0x1663ae
movq 0x20(%rsp), %rax
cmpq 0x8(%rsp), %rax
setb %al
movb %al, 0x7(%rsp)
movb 0x7(%rsp), %al
testb $0x1, %al
jne 0x1663b8
jmp 0x166433
movq 0x38(%rsp), %rcx
movq 0x30(%rsp), %r8
leaq 0x18(%rsp), %rdi
movl $0x8, %esi
movl $0x1, %edx
callq 0x1978e0
movl %eax, 0x2c(%rsp)
cmpl $0x0, 0x2c(%rsp)
jne 0x166403
movq 0x38(%rsp), %rcx
movq 0x30(%rsp), %r8
leaq 0x10(%rsp), %rdi
movl $0x8, %esi
movl $0x1, %edx
callq 0x1978e0
movl %eax, 0x2c(%rsp)
cmpl $0x0, 0x2c(%rsp)
jne 0x16641e
movq 0x40(%rsp), %rdi
movq 0x18(%rsp), %rsi
movq 0x10(%rsp), %rdx
callq 0xa50d0
jmp 0x166420
movq 0x20(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x20(%rsp)
jmp 0x166390
cmpl $0x0, 0x2c(%rsp)
je 0x16644d
movq 0x40(%rsp), %rdi
callq 0xa5bf0
movq $0x0, 0x40(%rsp)
movq 0x40(%rsp), %rax
addq $0x48, %rsp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/encdesc_header_io.c
// Function: write_zero_disc_distri
static inline GtDiscDistri *write_zero_disc_distri(GtDiscDistri *dist,
                                                   EncsecDistriData *data,
                                                   GtError *err)
{
  GtUword num_of_zero_leaves;
  data->written_elems = 0;
  data->err = err;
  data->had_err = 0;
  gt_disc_distri_foreach(dist, encdesc_distri_iter_count, data);
  if (!data->had_err) {
    num_of_zero_leaves = data->written_elems;
  }
  data->had_err = gt_io_error_fwrite_one(num_of_zero_leaves, data->fp, err);
  if (!data->had_err) {
    data->written_elems = 0;
    gt_disc_distri_foreach(dist, encdesc_distri_iter_write, data);
    gt_assert(data->written_elems == num_of_zero_leaves);
  }
  if (data->had_err) {
    gt_disc_distri_delete(dist);
    dist = NULL;
  }
  return dist;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq %rsi, 0x18(%rsp)
movq %rdx, 0x10(%rsp)
movq 0x18(%rsp), %rax
movq $0x0, 0x8(%rax)
movq 0x10(%rsp), %rcx
movq 0x18(%rsp), %rax
movq %rcx, 0x18(%rax)
movq 0x18(%rsp), %rax
movl $0x0, 0x20(%rax)
movq 0x20(%rsp), %rdi
movq 0x18(%rsp), %rdx
leaq 0xf5(%rip), %rsi        # 0x1665a0
callq 0xa55e0
movq 0x18(%rsp), %rax
cmpl $0x0, 0x20(%rax)
jne 0x1664c9
movq 0x18(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x8(%rsp)
movq 0x18(%rsp), %rax
movq (%rax), %rcx
movq 0x10(%rsp), %r8
leaq 0x8(%rsp), %rdi
movl $0x8, %esi
movl $0x1, %edx
callq 0x197850
movl %eax, %ecx
movq 0x18(%rsp), %rax
movl %ecx, 0x20(%rax)
movq 0x18(%rsp), %rax
cmpl $0x0, 0x20(%rax)
jne 0x16656e
movq 0x18(%rsp), %rax
movq $0x0, 0x8(%rax)
movq 0x20(%rsp), %rdi
movq 0x18(%rsp), %rdx
leaq 0xb3(%rip), %rsi        # 0x1665d0
callq 0xa55e0
movq 0x18(%rsp), %rax
movq 0x8(%rax), %rax
cmpq 0x8(%rsp), %rax
je 0x16656a
movq 0x4d5a67(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x3afad0(%rip), %rsi    # 0x516013
leaq 0x3e8b19(%rip), %rdx    # 0x54f063
leaq 0x3e8b3c(%rip), %rcx    # 0x54f08d
leaq 0x3e887c(%rip), %r8     # 0x54edd4
movl $0x161, %r9d            # imm = 0x161
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x16656c
jmp 0x16656e
movq 0x18(%rsp), %rax
cmpl $0x0, 0x20(%rax)
je 0x16658c
movq 0x20(%rsp), %rdi
callq 0xa5bf0
movq $0x0, 0x20(%rsp)
movq 0x20(%rsp), %rax
addq $0x28, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/encdesc_header_io.c
// Function: encdesc_distri_iter_write
static void encdesc_distri_iter_write(GtUword symbol,
                                      GtUint64 freq,
                                      void *data)
{
  EncsecDistriData *this_data = (EncsecDistriData*) data;
  if (!this_data->had_err) {
    this_data->written_elems++;
    this_data->had_err = gt_io_error_fwrite_one(symbol, this_data->fp,
                                                this_data->err);
    if (!this_data->had_err)
      this_data->had_err = gt_io_error_fwrite_one(freq, this_data->fp,
                                                  this_data->err);
  }
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq %rsi, 0x18(%rsp)
movq %rdx, 0x10(%rsp)
movq 0x10(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rax
cmpl $0x0, 0x20(%rax)
jne 0x166674
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rcx
addq $0x1, %rcx
movq %rcx, 0x8(%rax)
movq 0x8(%rsp), %rax
movq (%rax), %rcx
movq 0x8(%rsp), %rax
movq 0x18(%rax), %r8
leaq 0x20(%rsp), %rdi
movl $0x8, %esi
movl $0x1, %edx
callq 0x197850
movl %eax, %ecx
movq 0x8(%rsp), %rax
movl %ecx, 0x20(%rax)
movq 0x8(%rsp), %rax
cmpl $0x0, 0x20(%rax)
jne 0x166672
movq 0x8(%rsp), %rax
movq (%rax), %rcx
movq 0x8(%rsp), %rax
movq 0x18(%rax), %r8
leaq 0x18(%rsp), %rdi
movl $0x8, %esi
movl $0x1, %edx
callq 0x197850
movl %eax, %ecx
movq 0x8(%rsp), %rax
movl %ecx, 0x20(%rax)
jmp 0x166674
addq $0x28, %rsp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/extract_feature_stream.c
// Function: gt_extract_feature_stream_new
GtNodeStream* gt_extract_feature_stream_new(GtNodeStream *in_stream,
                                            GtRegionMapping *rm,
                                            const char *type, bool join,
                                            bool translate, bool seqid,
                                            bool target, GtUword width,
                                            GtFile *outfp)
{
  GtNodeVisitor *nv = gt_extract_feature_visitor_new(rm, type, join, translate,
                                                     seqid, target, width,
                                                     outfp);
  return gt_visitor_stream_new(in_stream, nv);
}

// Assembly:
subq $0x48, %rsp
movl %r9d, 0x10(%rsp)
movl %r8d, 0x14(%rsp)
movl %ecx, %eax
movl 0x10(%rsp), %ecx
movq %rdx, %r8
movl 0x14(%rsp), %edx
movq %r8, 0x18(%rsp)
movq %rsi, %r8
movq %rdi, %r9
movq 0x18(%rsp), %rdi
movb %al, %sil
movq 0x60(%rsp), %rax
movq 0x58(%rsp), %rax
movb 0x50(%rsp), %al
movq %r9, 0x40(%rsp)
movq %r8, 0x38(%rsp)
movq %rdi, 0x30(%rsp)
andb $0x1, %sil
movb %sil, 0x2f(%rsp)
andb $0x1, %dl
movb %dl, 0x2e(%rsp)
andb $0x1, %cl
movb %cl, 0x2d(%rsp)
andb $0x1, %al
movb %al, 0x2c(%rsp)
movq 0x38(%rsp), %rdi
movq 0x30(%rsp), %rsi
movb 0x2f(%rsp), %dl
movb 0x2e(%rsp), %cl
movb 0x2d(%rsp), %r8b
movb 0x2c(%rsp), %r9b
movq 0x58(%rsp), %r10
movq 0x60(%rsp), %rax
andb $0x1, %dl
andb $0x1, %cl
andb $0x1, %r8b
andb $0x1, %r9b
movzbl %dl, %edx
movzbl %cl, %ecx
movzbl %r8b, %r8d
movzbl %r9b, %r9d
movq %r10, (%rsp)
movq %rax, 0x8(%rsp)
callq 0x1680b0
movq %rax, 0x20(%rsp)
movq 0x40(%rsp), %rdi
movq 0x20(%rsp), %rsi
callq 0x1f6b70
addq $0x48, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/extract_feature_stream.c
// Function: gt_extract_feature_stream_set_trans_table
void gt_extract_feature_stream_set_trans_table(GtExtractFeatureStream *es,
                                               GtTransTable *table)
{
  gt_assert(es);
  gt_extract_feature_visitor_set_trans_table((GtExtractFeatureVisitor*)
                         gt_visitor_stream_get_visitor((GtVisitorStream*) es),
                         table);
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
movq %rsi, 0x8(%rsp)
cmpq $0x0, 0x10(%rsp)
jne 0x1679ae
movq 0x4d4623(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x3ae68c(%rip), %rsi    # 0x516013
leaq 0x3c3f93(%rip), %rdx    # 0x52b921
leaq 0x3e7b25(%rip), %rcx    # 0x54f4ba
leaq 0x3e7af8(%rip), %r8     # 0x54f494
movl $0x2f, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x1679b0
movq 0x10(%rsp), %rdi
callq 0x1f6bf0
movq %rax, %rdi
movq 0x8(%rsp), %rsi
callq 0x1682b0
addq $0x18, %rsp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/extract_feature_visitor.c
// Function: gt_extract_feature_visitor_class
const GtNodeVisitorClass* gt_extract_feature_visitor_class()
{
  static const GtNodeVisitorClass *nvc = NULL;
  gt_class_alloc_lock_enter();
  if (!nvc) {
    nvc = gt_node_visitor_class_new(sizeof (GtExtractFeatureVisitor),
                                    extract_feature_visitor_free,
                                    NULL,
                                    extract_feature_visitor_feature_node,
                                    NULL,
                                    NULL,
                                    NULL);
  }
  gt_class_alloc_lock_leave();
  return nvc;
}

// Assembly:
pushq %rax
callq 0x9f220
cmpq $0x0, 0x4db332(%rip)    # 0x642d70
jne 0x167a72
movl $0x48, %edi
leaq 0x34(%rip), %rsi        # 0x167a80
xorl %eax, %eax
movl %eax, %r9d
leaq 0xa8(%rip), %rcx        # 0x167b00
movq %r9, %rdx
movq %r9, %r8
movq $0x0, (%rsp)
callq 0x1b2170
movq %rax, 0x4db2fe(%rip)    # 0x642d70
callq 0x9f280
movq 0x4db2f2(%rip), %rax    # 0x642d70
popq %rcx
retq
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/extract_feature_visitor.c
// Function: gt_extract_feature_visitor_new
GtNodeVisitor* gt_extract_feature_visitor_new(GtRegionMapping *rm,
                                              const char *type, bool join,
                                              bool translate, bool seqid,
                                              bool target, GtUword width,
                                              GtFile *outfp)
{
  GtNodeVisitor *nv;
  GtExtractFeatureVisitor *efv;
  gt_assert(rm);
  nv = gt_node_visitor_create(gt_extract_feature_visitor_class());
  efv= gt_extract_feature_visitor_cast(nv);
  efv->type = gt_symbol(type);
  efv->join = join;
  efv->translate = translate;
  efv->seqid = seqid;
  efv->ttable = NULL;
  efv->target = target;
  efv->coords = false;
  efv->fastaseq_counter = 0;
  efv->region_mapping = rm;
  efv->width = width;
  efv->outfp = outfp;
  /* XXX */
  efv->retain_ids = getenv("GT_RETAINIDS") ? true : false;
  return nv;
}

// Assembly:
subq $0x48, %rsp
movl %r8d, 0xc(%rsp)
movl %ecx, %eax
movl 0xc(%rsp), %ecx
movl %eax, 0x10(%rsp)
movl %edx, %eax
movl 0x10(%rsp), %edx
movl %eax, 0x14(%rsp)
movq %rsi, %rax
movl 0x14(%rsp), %esi
movq %rax, 0x18(%rsp)
movq %rdi, %r8
movq 0x18(%rsp), %rdi
movb %r9b, %al
movq 0x58(%rsp), %r9
movq 0x50(%rsp), %r9
movq %r8, 0x40(%rsp)
movq %rdi, 0x38(%rsp)
andb $0x1, %sil
movb %sil, 0x37(%rsp)
andb $0x1, %dl
movb %dl, 0x36(%rsp)
andb $0x1, %cl
movb %cl, 0x35(%rsp)
andb $0x1, %al
movb %al, 0x34(%rsp)
cmpq $0x0, 0x40(%rsp)
jne 0x168155
movq 0x4d3e7c(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x3adee5(%rip), %rsi    # 0x516013
leaq 0x3fe121(%rip), %rdx    # 0x566256
leaq 0x3e73ce(%rip), %rcx    # 0x54f50a
leaq 0x3e73e6(%rip), %r8     # 0x54f529
movl $0xc1, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x168157
callq 0x167a30
movq %rax, %rdi
callq 0x1b22c0
movq %rax, 0x28(%rsp)
callq 0x167a30
movq %rax, %rdi
movq 0x28(%rsp), %rsi
callq 0x1b2350
movq %rax, 0x20(%rsp)
movq 0x38(%rsp), %rdi
callq 0x120930
movq %rax, %rcx
movq 0x20(%rsp), %rax
movq %rcx, 0x10(%rax)
movb 0x37(%rsp), %cl
movq 0x20(%rsp), %rax
andb $0x1, %cl
movb %cl, 0x20(%rax)
movb 0x36(%rsp), %cl
movq 0x20(%rsp), %rax
andb $0x1, %cl
movb %cl, 0x21(%rax)
movb 0x35(%rsp), %cl
movq 0x20(%rsp), %rax
andb $0x1, %cl
movb %cl, 0x22(%rax)
movq 0x20(%rsp), %rax
movq $0x0, 0x18(%rax)
movb 0x34(%rsp), %cl
movq 0x20(%rsp), %rax
andb $0x1, %cl
movb %cl, 0x23(%rax)
movq 0x20(%rsp), %rax
movb $0x0, 0x24(%rax)
movq 0x20(%rsp), %rax
movq $0x0, 0x28(%rax)
movq 0x40(%rsp), %rcx
movq 0x20(%rsp), %rax
movq %rcx, 0x38(%rax)
movq 0x50(%rsp), %rcx
movq 0x20(%rsp), %rax
movq %rcx, 0x30(%rax)
movq 0x58(%rsp), %rcx
movq 0x20(%rsp), %rax
movq %rcx, 0x40(%rax)
leaq 0x3e732a(%rip), %rdi    # 0x54f550
callq 0x198a0
movq %rax, %rdx
xorl %eax, %eax
movl $0x1, %ecx
cmpq $0x0, %rdx
cmovnel %ecx, %eax
cmpl $0x0, %eax
setne %cl
movq 0x20(%rsp), %rax
andb $0x1, %cl
movb %cl, 0x25(%rax)
movq 0x28(%rsp), %rax
addq $0x48, %rsp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_in_stream.c
// Function: gt_feature_in_stream_class
const GtNodeStreamClass *gt_feature_in_stream_class(void)
{
  static const GtNodeStreamClass *nsc = NULL;
  gt_class_alloc_lock_enter();
  if (!nsc)
  {
    nsc = gt_node_stream_class_new(sizeof (GtFeatureInStream),
                                   feature_in_stream_free,
                                   feature_in_stream_next);
  }
  gt_class_alloc_lock_leave();
  return nsc;
}

// Assembly:
pushq %rax
callq 0x9f220
cmpq $0x0, 0x4da56a(%rip)    # 0x642d78
jne 0x16882f
movl $0x28, %edi
leaq 0x24(%rip), %rsi        # 0x168840
leaq 0x8d(%rip), %rdx        # 0x1688b0
callq 0x1b1ae0
movq %rax, 0x4da549(%rip)    # 0x642d78
callq 0x9f280
movq 0x4da53d(%rip), %rax    # 0x642d78
popq %rcx
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_in_stream.c
// Function: feature_in_stream_free
static void feature_in_stream_free(GtNodeStream *ns)
{
  GtFeatureInStream *stream = feature_in_stream_cast(ns);
  while (gt_queue_size(stream->cache) > 0)
  {
    GtGenomeNode *gn = gt_queue_get(stream->cache);
    gt_genome_node_delete(gn);
  }
  gt_queue_delete(stream->cache);
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
callq 0x168800
movq %rax, %rdi
movq 0x10(%rsp), %rsi
callq 0x1b20f0
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rax
movq 0x18(%rax), %rdi
callq 0xfd4d0
cmpq $0x0, %rax
jbe 0x168891
movq 0x8(%rsp), %rax
movq 0x18(%rax), %rdi
callq 0xfd3f0
movq %rax, (%rsp)
movq (%rsp), %rdi
callq 0x173180
jmp 0x168860
movq 0x8(%rsp), %rax
movq 0x18(%rax), %rdi
callq 0xfdf10
addq $0x18, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_in_stream.c
// Function: feature_in_stream_next
static int feature_in_stream_next(GtNodeStream *ns, GtGenomeNode **gn,
                                  GT_UNUSED GtError *error)
{
  GtFeatureInStream *stream = feature_in_stream_cast(ns);
  gt_error_check(error);

  if (!stream->init)
  {
    feature_in_stream_init(stream);
    stream->init = true;
  }

  if (gt_queue_size(stream->cache) > 0)
  {
    GtGenomeNode *node = gt_queue_get(stream->cache);
    GtFeatureNode *fn = gt_feature_node_try_cast(node);
    if (fn)
      gt_genome_node_ref(node);
    *gn = node;
    return 0;
  }

  *gn = NULL;
  return 0;
}

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x28(%rsp)
movq %rsi, 0x20(%rsp)
movq %rdx, 0x18(%rsp)
callq 0x168800
movq %rax, %rdi
movq 0x28(%rsp), %rsi
callq 0x1b20f0
movq %rax, 0x10(%rsp)
cmpq $0x0, 0x18(%rsp)
je 0x16892a
movq 0x18(%rsp), %rdi
callq 0xd8a60
testb $0x1, %al
jne 0x1688f2
jmp 0x16892a
movq 0x4d36a7(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x3ad710(%rip), %rsi    # 0x516013
leaq 0x3e6e79(%rip), %rdx    # 0x54f783
leaq 0x3e6e94(%rip), %rcx    # 0x54f7a5
leaq 0x3e6db0(%rip), %r8     # 0x54f6c8
movl $0x66, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x16892c
movq 0x10(%rsp), %rax
testb $0x1, 0x21(%rax)
jne 0x16894a
movq 0x10(%rsp), %rdi
callq 0x1685f0
movq 0x10(%rsp), %rax
movb $0x1, 0x21(%rax)
movq 0x10(%rsp), %rax
movq 0x18(%rax), %rdi
callq 0xfd4d0
cmpq $0x0, %rax
jbe 0x1689a7
movq 0x10(%rsp), %rax
movq 0x18(%rax), %rdi
callq 0xfd3f0
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rdi
callq 0x170450
movq %rax, (%rsp)
cmpq $0x0, (%rsp)
je 0x168990
movq 0x8(%rsp), %rdi
callq 0x171410
movq 0x8(%rsp), %rcx
movq 0x20(%rsp), %rax
movq %rcx, (%rax)
movl $0x0, 0x34(%rsp)
jmp 0x1689bb
movq 0x20(%rsp), %rax
movq $0x0, (%rax)
movl $0x0, 0x34(%rsp)
movl 0x34(%rsp), %eax
addq $0x38, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/feature_in_stream.c
// Function: gt_feature_in_stream_new
GtNodeStream* gt_feature_in_stream_new(GtFeatureIndex *fi)
{
  GtNodeStream *ns;
  GtFeatureInStream *stream;
  gt_assert(fi);

  ns = gt_node_stream_create(gt_feature_in_stream_class(), true);
  stream = feature_in_stream_cast(ns);
  stream->fi = fi;
  stream->cache = gt_queue_new();
  stream->useorig = false;
  stream->init = false;
  return ns;
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
cmpq $0x0, 0x10(%rsp)
jne 0x168a29
movq 0x4d35a8(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x3ad611(%rip), %rsi    # 0x516013
leaq 0x3fd819(%rip), %rdx    # 0x566222
leaq 0x3e6c9f(%rip), %rcx    # 0x54f6af
leaq 0x3e6cb1(%rip), %r8     # 0x54f6c8
movl $0x9e, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x168a2b
callq 0x168800
movq %rax, %rdi
movl $0x1, %esi
callq 0x1b1b80
movq %rax, 0x8(%rsp)
callq 0x168800
movq %rax, %rdi
movq 0x8(%rsp), %rsi
callq 0x1b20f0
movq %rax, (%rsp)
movq 0x10(%rsp), %rcx
movq (%rsp), %rax
movq %rcx, 0x10(%rax)
callq 0xfd150
movq %rax, %rcx
movq (%rsp), %rax
movq %rcx, 0x18(%rax)
movq (%rsp), %rax
movb $0x0, 0x20(%rax)
movq (%rsp), %rax
movb $0x0, 0x21(%rax)
movq 0x8(%rsp), %rax
addq $0x18, %rsp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_linesorted_out_stream.c
// Function: gt_gff3_linesorted_out_stream_class
const GtNodeStreamClass* gt_gff3_linesorted_out_stream_class(void)
{
  static const GtNodeStreamClass *nsc = NULL;
  gt_class_alloc_lock_enter();
  if (!nsc) {
    nsc = gt_node_stream_class_new(sizeof (GtGFF3LinesortedOutStream),
                                   gff3_linesorted_out_stream_free,
                                   gff3_linesorted_out_stream_next);
  }
  gt_class_alloc_lock_leave();
  return nsc;
}

// Assembly:
pushq %rax
callq 0x9f220
cmpq $0x0, 0x4cd52a(%rip)    # 0x642da8
jne 0x17589f
movl $0x58, %edi
leaq 0x24(%rip), %rsi        # 0x1758b0
leaq 0xfd(%rip), %rdx        # 0x175990
callq 0x1b1ae0
movq %rax, 0x4cd509(%rip)    # 0x642da8
callq 0x9f280
movq 0x4cd4fd(%rip), %rax    # 0x642da8
popq %rcx
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_linesorted_out_stream.c
// Function: gff3_linesorted_out_stream_free
static void gff3_linesorted_out_stream_free(GtNodeStream *ns)
{
  GtUword i;
  GtGFF3LinesortedOutStream *lsos;
  if (!ns) return;
  lsos = gt_gff3_linesorted_out_stream_cast(ns);
  for (i = 0; i < gt_array_size(lsos->cur_node_set); i++) {
    gt_genome_node_delete(*(GtGenomeNode**)
                                           gt_array_get(lsos->cur_node_set, i));
  }
  gt_node_stream_delete(lsos->in_stream);
  gt_str_delete(lsos->buf);
  gt_str_delete(lsos->last_seqid);
  gt_node_visitor_delete(lsos->gff3vis);
  gt_splitter_delete(lsos->splitter);
  gt_array_delete(lsos->cur_node_set);
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
cmpq $0x0, 0x20(%rsp)
jne 0x1758c6
jmp 0x17598a
callq 0x175870
movq %rax, %rdi
movq 0x20(%rsp), %rsi
callq 0x1b20f0
movq %rax, 0x10(%rsp)
movq $0x0, 0x18(%rsp)
movq 0x18(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x10(%rsp), %rax
movq 0x18(%rax), %rdi
callq 0x81370
movq %rax, %rcx
movq 0x8(%rsp), %rax
cmpq %rcx, %rax
jae 0x175936
movq 0x10(%rsp), %rax
movq 0x18(%rax), %rdi
movq 0x18(%rsp), %rsi
callq 0x80b60
movq (%rax), %rdi
callq 0x173180
movq 0x18(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x18(%rsp)
jmp 0x1758e6
movq 0x10(%rsp), %rax
movq 0x10(%rax), %rdi
callq 0x1b1cb0
movq 0x10(%rsp), %rax
movq 0x28(%rax), %rdi
callq 0x11f560
movq 0x10(%rsp), %rax
movq 0x40(%rax), %rdi
callq 0x11f560
movq 0x10(%rsp), %rax
movq 0x38(%rax), %rdi
callq 0x1b29d0
movq 0x10(%rsp), %rax
movq 0x30(%rax), %rdi
callq 0x11b600
movq 0x10(%rsp), %rax
movq 0x18(%rax), %rdi
callq 0x81f80
addq $0x28, %rsp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_linesorted_out_stream.c
// Function: gt_gff3_linesorted_out_stream_new
GtNodeStream* gt_gff3_linesorted_out_stream_new(GtNodeStream *in_stream,
                                                GtFile *outfp)
{
  GtGFF3LinesortedOutStream *lsos;
  GtNodeStream *ns;
  gt_assert(in_stream);
  ns = gt_node_stream_create(gt_gff3_linesorted_out_stream_class(), true);
  lsos = gt_gff3_linesorted_out_stream_cast(ns);
  lsos->cur_node_set = gt_array_new(sizeof (GtFeatureNode*));
  lsos->in_stream = gt_node_stream_ref(in_stream);
  lsos->outfp = outfp;
  lsos->outstrings = NULL;
  lsos->outstrings_length = 0;
  lsos->last_seqid = NULL;
  lsos->splitter = gt_splitter_new();
  lsos->buf = gt_str_new();
  lsos->gff3vis = gt_gff3_visitor_new_to_str(lsos->buf);
  return ns;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq %rsi, 0x18(%rsp)
cmpq $0x0, 0x20(%rsp)
jne 0x175c4e
movq 0x4c6383(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x3a03ec(%rip), %rsi    # 0x516013
leaq 0x3aa7f5(%rip), %rdx    # 0x520423
leaq 0x3dc054(%rip), %rcx    # 0x551c89
leaq 0x3dc06f(%rip), %r8     # 0x551cab
movl $0x11f, %r9d            # imm = 0x11F
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x175c50
callq 0x175870
movq %rax, %rdi
movl $0x1, %esi
callq 0x1b1b80
movq %rax, 0x8(%rsp)
callq 0x175870
movq %rax, %rdi
movq 0x8(%rsp), %rsi
callq 0x1b20f0
movq %rax, 0x10(%rsp)
movl $0x8, %edi
callq 0x80990
movq %rax, %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x18(%rax)
movq 0x20(%rsp), %rdi
callq 0x1b1c50
movq %rax, %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x10(%rax)
movq 0x18(%rsp), %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x20(%rax)
movq 0x10(%rsp), %rax
movq $0x0, 0x48(%rax)
movq 0x10(%rsp), %rax
movq $0x0, 0x50(%rax)
movq 0x10(%rsp), %rax
movq $0x0, 0x40(%rax)
callq 0x11afb0
movq %rax, %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x30(%rax)
callq 0x11d4a0
movq %rax, %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x28(%rax)
movq 0x10(%rsp), %rax
movq 0x28(%rax), %rdi
callq 0x1803b0
movq %rax, %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x38(%rax)
movq 0x8(%rsp), %rax
addq $0x28, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_numsorted_out_stream.c
// Function: gt_gff3_numsorted_out_stream_class
const GtNodeStreamClass* gt_gff3_numsorted_out_stream_class(void)
{
  static const GtNodeStreamClass *nsc = NULL;
  gt_class_alloc_lock_enter();
  if (!nsc) {
    nsc = gt_node_stream_class_new(sizeof (GtGFF3NumsortedOutStream),
                                   gff3_numsorted_out_stream_free,
                                   gff3_numsorted_out_stream_next);
  }
  gt_class_alloc_lock_leave();
  return nsc;
}

// Assembly:
pushq %rax
callq 0x9f220
cmpq $0x0, 0x4cc642(%rip)    # 0x642db0
jne 0x17678f
movl $0x30, %edi
leaq 0x24(%rip), %rsi        # 0x1767a0
leaq 0x7d(%rip), %rdx        # 0x176800
callq 0x1b1ae0
movq %rax, 0x4cc621(%rip)    # 0x642db0
callq 0x9f280
movq 0x4cc615(%rip), %rax    # 0x642db0
popq %rcx
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_numsorted_out_stream.c
// Function: gff3_numsorted_out_stream_free
static void gff3_numsorted_out_stream_free(GtNodeStream *ns)
{
  GtGFF3NumsortedOutStream *gff3_out_stream =
                                             gff3_numsorted_out_stream_cast(ns);
  gt_node_stream_delete(gff3_out_stream->in_stream);
  gt_node_visitor_delete(gff3_out_stream->gff3_visitor);
  gt_array_delete(gff3_out_stream->buffer);
  gt_queue_delete(gff3_out_stream->outqueue);
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
callq 0x176760
movq %rax, %rdi
movq 0x10(%rsp), %rsi
callq 0x1b20f0
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rax
movq 0x10(%rax), %rdi
callq 0x1b1cb0
movq 0x8(%rsp), %rax
movq 0x28(%rax), %rdi
callq 0x1b29d0
movq 0x8(%rsp), %rax
movq 0x18(%rax), %rdi
callq 0x81f80
movq 0x8(%rsp), %rax
movq 0x20(%rax), %rdi
callq 0xfdf10
addq $0x18, %rsp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gff3_numsorted_out_stream.c
// Function: gt_gff3_numsorted_out_stream_new
GtNodeStream* gt_gff3_numsorted_out_stream_new(GtNodeStream *in_stream,
                                               GtFile *outfp)
{
  GtNodeStream *ns = gt_node_stream_create(gt_gff3_numsorted_out_stream_class(),
                                           false);
  GtGFF3NumsortedOutStream *gff3_out_stream =
                                             gff3_numsorted_out_stream_cast(ns);
  gff3_out_stream->in_stream = gt_node_stream_ref(in_stream);
  gff3_out_stream->buffer = gt_array_new(sizeof (GtGenomeNode*));
  gff3_out_stream->outqueue = NULL;
  gff3_out_stream->gff3_visitor = gt_gff3_visitor_new(outfp);
  return ns;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq %rsi, 0x18(%rsp)
callq 0x176760
movq %rax, %rdi
xorl %esi, %esi
callq 0x1b1b80
movq %rax, 0x10(%rsp)
callq 0x176760
movq %rax, %rdi
movq 0x10(%rsp), %rsi
callq 0x1b20f0
movq %rax, 0x8(%rsp)
movq 0x20(%rsp), %rdi
callq 0x1b1c50
movq %rax, %rcx
movq 0x8(%rsp), %rax
movq %rcx, 0x10(%rax)
movl $0x8, %edi
callq 0x80990
movq %rax, %rcx
movq 0x8(%rsp), %rax
movq %rcx, 0x18(%rax)
movq 0x8(%rsp), %rax
movq $0x0, 0x20(%rax)
movq 0x18(%rsp), %rdi
callq 0x180280
movq %rax, %rcx
movq 0x8(%rsp), %rax
movq %rcx, 0x28(%rax)
movq 0x10(%rsp), %rax
addq $0x28, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/golomb.c
// Function: gt_golomb_new
GtGolomb* gt_golomb_new(GtUword median)
{
  GtGolomb *golomb;
  gt_assert(median > 0);
  golomb = gt_malloc(sizeof (*golomb));
  golomb->median = median;
  golomb->len = (GtUword) ceil(GT_LOG2((double) golomb->median));
  golomb->two_pow_len = GT_POW2(golomb->len);
  return golomb;
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
cmpq $0x0, 0x10(%rsp)
ja 0x1812a9
movq 0x4bad28(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x394d91(%rip), %rsi    # 0x516013
leaq 0x3d3277(%rip), %rdx    # 0x554500
leaq 0x3d327b(%rip), %rcx    # 0x55450b
leaq 0x3d3282(%rip), %r8     # 0x554519
movl $0x32, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x1812ab
leaq 0x3d3267(%rip), %rsi    # 0x554519
movl $0x18, %edi
movl $0x33, %edx
callq 0xe80f0
movq %rax, 0x8(%rsp)
movq 0x10(%rsp), %rcx
movq 0x8(%rsp), %rax
movq %rcx, (%rax)
movq 0x8(%rsp), %rax
movq (%rax), %xmm0
movaps 0x39764d(%rip), %xmm1   # 0x518930
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0x397651(%rip), %xmm1   # 0x518940
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
callq 0x195c0
movsd 0x3d31ed(%rip), %xmm1   # 0x5544f8
divsd %xmm1, %xmm0
callq 0x190e0
movaps %xmm0, %xmm1
cvttsd2si %xmm1, %rcx
movq %rcx, %rdx
sarq $0x3f, %rdx
movsd 0x397a45(%rip), %xmm1   # 0x518d70
subsd %xmm1, %xmm0
cvttsd2si %xmm0, %rax
andq %rdx, %rax
orq %rax, %rcx
movq 0x8(%rsp), %rax
movq %rcx, 0x8(%rax)
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rcx
movl $0x1, %eax
shlq %cl, %rax
movq %rax, %rcx
movq 0x8(%rsp), %rax
movq %rcx, 0x10(%rax)
movq 0x8(%rsp), %rax
addq $0x18, %rsp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/golomb.c
// Function: gt_golomb_bitwise_decoder_new
GtGolombBitwiseDecoder *gt_golomb_bitwise_decoder_new(GtGolomb *golomb)
{
  GtGolombBitwiseDecoder *gbwd;
  gt_assert(golomb);
  gbwd = gt_malloc(sizeof (*gbwd));
  gbwd->median = golomb->median;
  gbwd->status = IN_Q;
  gbwd->cur_r_bit = 0;
  gbwd->quotient = 0;
  gbwd->remain = 0;
  gbwd->len = golomb->len;
  gbwd->two_pow_len = golomb->two_pow_len;
  return gbwd;
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
cmpq $0x0, 0x10(%rsp)
jne 0x181669
movq 0x4ba968(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x3949d1(%rip), %rsi    # 0x516013
leaq 0x3d2ee6(%rip), %rdx    # 0x55452f
leaq 0x3d2f07(%rip), %rcx    # 0x554557
leaq 0x3d2ec2(%rip), %r8     # 0x554519
movl $0x73, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x18166b
movl $0x38, %edi
leaq 0x3d2ea2(%rip), %rsi    # 0x554519
movl $0x74, %edx
callq 0xe80f0
movq %rax, 0x8(%rsp)
movq 0x10(%rsp), %rax
movq (%rax), %rcx
movq 0x8(%rsp), %rax
movq %rcx, (%rax)
movq 0x8(%rsp), %rax
movl $0x0, 0x30(%rax)
movq 0x8(%rsp), %rax
movq $0x0, 0x8(%rax)
movq 0x8(%rsp), %rax
movq $0x0, 0x10(%rax)
movq 0x8(%rsp), %rax
movq $0x0, 0x18(%rax)
movq 0x10(%rsp), %rax
movq 0x8(%rax), %rcx
movq 0x8(%rsp), %rax
movq %rcx, 0x20(%rax)
movq 0x10(%rsp), %rax
movq 0x10(%rax), %rcx
movq 0x8(%rsp), %rax
movq %rcx, 0x28(%rax)
movq 0x8(%rsp), %rax
addq $0x18, %rsp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gtf_in_stream.c
// Function: gt_gtf_in_stream_class
const GtNodeStreamClass* gt_gtf_in_stream_class(void)
{
  static const GtNodeStreamClass *nsc = NULL;
  gt_class_alloc_lock_enter();
  if (!nsc) {
    nsc = gt_node_stream_class_new(sizeof (GtGTFInStream),
                                   gtf_in_stream_free,
                                   gtf_in_stream_next);
  }
  gt_class_alloc_lock_leave();
  return nsc;
}

// Assembly:
pushq %rax
callq 0x9f220
cmpq $0x0, 0x4c0daa(%rip)    # 0x642dc8
jne 0x18203f
movl $0x30, %edi
leaq 0x24(%rip), %rsi        # 0x182050
leaq 0xad(%rip), %rdx        # 0x1820e0
callq 0x1b1ae0
movq %rax, 0x4c0d89(%rip)    # 0x642dc8
callq 0x9f280
movq 0x4c0d7d(%rip), %rax    # 0x642dc8
popq %rcx
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gtf_in_stream.c
// Function: gtf_in_stream_free
static void gtf_in_stream_free(GtNodeStream *ns)
{
  GtGTFInStream *gtf_in_stream = gtf_in_stream_cast(ns);
  gt_free(gtf_in_stream->filename);
  gt_type_checker_delete(gtf_in_stream->type_checker);
  while (gt_queue_size(gtf_in_stream->genome_node_buffer))
    gt_genome_node_delete(gt_queue_get(gtf_in_stream->genome_node_buffer));
  gt_queue_delete(gtf_in_stream->genome_node_buffer);
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
callq 0x182010
movq %rax, %rdi
movq 0x10(%rsp), %rsi
callq 0x1b20f0
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rax
movq 0x20(%rax), %rdi
leaq 0x3d25c4(%rip), %rsi    # 0x554644
movl $0x6a, %edx
callq 0xe88c0
movq 0x8(%rsp), %rax
movq 0x18(%rax), %rdi
callq 0x1f4420
movq 0x8(%rsp), %rax
movq 0x10(%rax), %rdi
callq 0xfd4d0
cmpq $0x0, %rax
je 0x1820c4
movq 0x8(%rsp), %rax
movq 0x10(%rax), %rdi
callq 0xfd3f0
movq %rax, %rdi
callq 0x173180
jmp 0x182098
movq 0x8(%rsp), %rax
movq 0x10(%rax), %rdi
callq 0xfdf10
addq $0x18, %rsp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/gtf_in_stream.c
// Function: gtf_in_stream_next
static int gtf_in_stream_next(GtNodeStream *ns, GtGenomeNode **gn,
                              GT_UNUSED GtError *err)
{
  GtGTFInStream *is;
  int had_err = 0;
  gt_error_check(err);
  is = gtf_in_stream_cast(ns);
  if (!is->file_processed) {
    had_err = gtf_in_stream_process_file(is, err);
    is->file_processed = true;
  }
  if (!had_err && gt_queue_size(is->genome_node_buffer)) {
    /* we still have a node in the buffer -> serve it from there */
    *gn = gt_queue_get(is->genome_node_buffer);
    return 0;
  }
  if (!had_err) {
    /* the buffer is empty */
    gt_assert(!gt_queue_size(is->genome_node_buffer));
    *gn = NULL;
  }
  return had_err;
}

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x28(%rsp)
movq %rsi, 0x20(%rsp)
movq %rdx, 0x18(%rsp)
movl $0x0, 0xc(%rsp)
cmpq $0x0, 0x18(%rsp)
je 0x18214b
movq 0x18(%rsp), %rdi
callq 0xd8a60
testb $0x1, %al
jne 0x182113
jmp 0x18214b
movq 0x4b9e86(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x393eef(%rip), %rsi    # 0x516013
leaq 0x394094(%rip), %rdx    # 0x5161bf
leaq 0x3d252f(%rip), %rcx    # 0x554661
leaq 0x3d250b(%rip), %r8     # 0x554644
movl $0x54, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x18214d
callq 0x182010
movq %rax, %rdi
movq 0x28(%rsp), %rsi
callq 0x1b20f0
movq %rax, 0x10(%rsp)
movq 0x10(%rsp), %rax
testb $0x1, 0x28(%rax)
jne 0x18218b
movq 0x10(%rsp), %rdi
movq 0x18(%rsp), %rsi
callq 0x182310
movl %eax, 0xc(%rsp)
movq 0x10(%rsp), %rax
movb $0x1, 0x28(%rax)
cmpl $0x0, 0xc(%rsp)
jne 0x1821c9
movq 0x10(%rsp), %rax
movq 0x10(%rax), %rdi
callq 0xfd4d0
cmpq $0x0, %rax
je 0x1821c9
movq 0x10(%rsp), %rax
movq 0x10(%rax), %rdi
callq 0xfd3f0
movq %rax, %rcx
movq 0x20(%rsp), %rax
movq %rcx, (%rax)
movl $0x0, 0x34(%rsp)
jmp 0x182234
cmpl $0x0, 0xc(%rsp)
jne 0x18222c
jmp 0x1821d2
movq 0x10(%rsp), %rax
movq 0x10(%rax), %rdi
callq 0xfd4d0
cmpq $0x0, %rax
je 0x18221e
movq 0x4b9db3(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x393e1c(%rip), %rsi    # 0x516013
leaq 0x3c76ac(%rip), %rdx    # 0x5498aa
leaq 0x3d245c(%rip), %rcx    # 0x554661
leaq 0x3d2438(%rip), %r8     # 0x554644
movl $0x61, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x182220
movq 0x20(%rsp), %rax
movq $0x0, (%rax)
movl 0xc(%rsp), %eax
movl %eax, 0x34(%rsp)
movl 0x34(%rsp), %eax
addq $0x38, %rsp
retq
nopl (%rax)