LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/sequence_node.c
// Function: gt_sequence_node_new
GtGenomeNode* gt_sequence_node_new(const char *description, GtStr *sequence)
{
  GtGenomeNode *gn = gt_genome_node_create(gt_sequence_node_class());
  GtSequenceNode *sn = gt_sequence_node_cast(gn);
  gt_assert(description && sequence);
  sn->description = gt_str_new_cstr(description);
  sn->sequence = gt_str_ref(sequence);
  return gn;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq %rsi, 0x18(%rsp)
callq 0x35f00
movq %rax, %rdi
callq 0x25530
movq %rax, 0x10(%rsp)
movq 0x10(%rsp), %rdi
callq 0x361e0
movq %rax, 0x8(%rsp)
cmpq $0x0, 0x20(%rsp)
je 0x3616f
cmpq $0x0, 0x18(%rsp)
jne 0x361a7
movq 0x17de62(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x127ee6(%rip), %rsi    # 0x15e066
leaq 0x1303ae(%rip), %rdx    # 0x166535
leaq 0x1303bf(%rip), %rcx    # 0x16654d
leaq 0x1303cd(%rip), %r8     # 0x166562
movl $0x59, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x361a9
movq 0x20(%rsp), %rdi
callq 0x18f70
movq %rax, %rcx
movq 0x8(%rsp), %rax
movq %rcx, 0x30(%rax)
movq 0x18(%rsp), %rdi
callq 0x19dc0
movq %rax, %rcx
movq 0x8(%rsp), %rax
movq %rcx, 0x38(%rax)
movq 0x10(%rsp), %rax
addq $0x28, %rsp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/tag_value_map.c
// Function: gt_tag_value_map_new
GtTagValueMap gt_tag_value_map_new(const char *tag, const char *value)
{
  GtTagValueMap map;
  size_t tag_len, value_len;
  gt_assert(tag && value);
  tag_len = strlen(tag);
  value_len = strlen(value);
  gt_assert(tag_len && value_len);
  map = gt_malloc((tag_len + 1 + value_len + 1 + 1) * sizeof *map);
  memcpy(map, tag, tag_len + 1);
  memcpy(map + tag_len + 1, value, value_len + 1);
  map[tag_len + 1 + value_len + 1] = '\0';
  return map;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq %rsi, 0x18(%rsp)
cmpq $0x0, 0x20(%rsp)
je 0x3635e
cmpq $0x0, 0x18(%rsp)
jne 0x36396
movq 0x17dc73(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x127cf7(%rip), %rsi    # 0x15e066
leaq 0x13cff7(%rip), %rdx    # 0x17336d
leaq 0x1302a2(%rip), %rcx    # 0x16661f
leaq 0x1302b0(%rip), %r8     # 0x166634
movl $0x24, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x36398
movq 0x20(%rsp), %rdi
callq 0xb240
movq %rax, 0x8(%rsp)
movq 0x18(%rsp), %rdi
callq 0xb240
movq %rax, (%rsp)
cmpq $0x0, 0x8(%rsp)
je 0x363c4
cmpq $0x0, (%rsp)
jne 0x363fc
movq 0x17dc0d(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x127c91(%rip), %rsi    # 0x15e066
leaq 0x130275(%rip), %rdx    # 0x166651
leaq 0x13023c(%rip), %rcx    # 0x16661f
leaq 0x13024a(%rip), %r8     # 0x166634
movl $0x27, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x363fe
movq 0x8(%rsp), %rdi
addq $0x1, %rdi
addq (%rsp), %rdi
addq $0x1, %rdi
addq $0x1, %rdi
shlq $0x0, %rdi
leaq 0x130216(%rip), %rsi    # 0x166634
movl $0x28, %edx
callq 0xd2e0
movq %rax, 0x10(%rsp)
movq 0x10(%rsp), %rdi
movq 0x20(%rsp), %rsi
movq 0x8(%rsp), %rdx
addq $0x1, %rdx
callq 0xb500
movq 0x10(%rsp), %rdi
addq 0x8(%rsp), %rdi
addq $0x1, %rdi
movq 0x18(%rsp), %rsi
movq (%rsp), %rdx
addq $0x1, %rdx
callq 0xb500
movq 0x10(%rsp), %rax
movq 0x8(%rsp), %rcx
addq $0x1, %rcx
addq (%rsp), %rcx
movb $0x0, 0x1(%rax,%rcx)
movq 0x10(%rsp), %rax
addq $0x28, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/tag_value_map.c
// Function: gt_tag_value_map_add
void gt_tag_value_map_add(GtTagValueMap *map, const char *tag,
                          const char *value)
{
  size_t tag_len, value_len, map_len = 0;
  GT_UNUSED const char *tag_already_used;
  gt_assert(map && *map && tag && value);
  tag_len = strlen(tag);
  value_len = strlen(value);
  gt_assert(tag_len && value_len);
  /* determine current map length */
  tag_already_used = get_value(*map, tag, &map_len);
  gt_assert(!tag_already_used); /* map does not contain given <tag> already */
  /* allocate additional space */
  *map = gt_realloc(*map, map_len + tag_len + 1 + value_len + 1 + 1);
  /* store new tag/value pair */
  memcpy(*map + map_len, tag, tag_len + 1);
  memcpy(*map + map_len + tag_len + 1, value, value_len + 1);
  (*map)[map_len + tag_len + 1 + value_len + 1] = '\0';
}

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x30(%rsp)
movq %rsi, 0x28(%rsp)
movq %rdx, 0x20(%rsp)
movq $0x0, 0x8(%rsp)
cmpq $0x0, 0x30(%rsp)
je 0x364cf
movq 0x30(%rsp), %rax
cmpq $0x0, (%rax)
je 0x364cf
cmpq $0x0, 0x28(%rsp)
je 0x364cf
cmpq $0x0, 0x20(%rsp)
jne 0x36507
movq 0x17db02(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x127b86(%rip), %rsi    # 0x15e066
leaq 0x13017f(%rip), %rdx    # 0x166666
leaq 0x130194(%rip), %rcx    # 0x166682
leaq 0x13013f(%rip), %r8     # 0x166634
movl $0x7b, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x36509
movq 0x28(%rsp), %rdi
callq 0xb240
movq %rax, 0x18(%rsp)
movq 0x20(%rsp), %rdi
callq 0xb240
movq %rax, 0x10(%rsp)
cmpq $0x0, 0x18(%rsp)
je 0x36537
cmpq $0x0, 0x10(%rsp)
jne 0x3656f
movq 0x17da9a(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x127b1e(%rip), %rsi    # 0x15e066
leaq 0x130102(%rip), %rdx    # 0x166651
leaq 0x13012c(%rip), %rcx    # 0x166682
leaq 0x1300d7(%rip), %r8     # 0x166634
movl $0x7e, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x36571
movq 0x30(%rsp), %rax
movq (%rax), %rdi
movq 0x28(%rsp), %rsi
leaq 0x8(%rsp), %rdx
callq 0x36680
movq %rax, (%rsp)
cmpq $0x0, (%rsp)
je 0x365cb
movq 0x17da3e(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x127ac2(%rip), %rsi    # 0x15e066
leaq 0x1300ec(%rip), %rdx    # 0x166697
leaq 0x1300d0(%rip), %rcx    # 0x166682
leaq 0x13007b(%rip), %r8     # 0x166634
movl $0x81, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x365cd
movq 0x30(%rsp), %rax
movq (%rax), %rdi
movq 0x8(%rsp), %rsi
addq 0x18(%rsp), %rsi
addq $0x1, %rsi
addq 0x10(%rsp), %rsi
addq $0x1, %rsi
addq $0x1, %rsi
leaq 0x13003d(%rip), %rdx    # 0x166634
movl $0x83, %ecx
callq 0xd730
movq %rax, %rcx
movq 0x30(%rsp), %rax
movq %rcx, (%rax)
movq 0x30(%rsp), %rax
movq (%rax), %rdi
addq 0x8(%rsp), %rdi
movq 0x28(%rsp), %rsi
movq 0x18(%rsp), %rdx
addq $0x1, %rdx
callq 0xb500
movq 0x30(%rsp), %rax
movq (%rax), %rdi
addq 0x8(%rsp), %rdi
addq 0x18(%rsp), %rdi
addq $0x1, %rdi
movq 0x20(%rsp), %rsi
movq 0x10(%rsp), %rdx
addq $0x1, %rdx
callq 0xb500
movq 0x30(%rsp), %rax
movq (%rax), %rax
movq 0x8(%rsp), %rcx
addq 0x18(%rsp), %rcx
addq $0x1, %rcx
addq 0x10(%rsp), %rcx
movb $0x0, 0x1(%rax,%rcx)
addq $0x38, %rsp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/tag_value_map.c
// Function: get_value
static char* get_value(const GtTagValueMap map, const char *tag,
                       size_t *map_len)
{
  char *map_ptr;
  const char *tag_ptr;
  /* search for equal tag */
  map_ptr = map;
  tag_ptr = tag;
  for (;;) {
    while (*map_ptr == *tag_ptr++) {
      if (*map_ptr == '\0') {
        if (*(map_ptr+1) != '\0')
          return (map_ptr+1); /* match found -> return value */
        else
          break;
      } else map_ptr++;
    }
    /* tag did not match */
    while (*map_ptr++ != '\0'); /* go to value */
    if (*map_ptr == '\0')
      break; /* no next pair found */
    else {
      while (*map_ptr != '\0') /* skip value */
        map_ptr++;
      if (*(map_ptr+1) != '\0')
        map_ptr++;
    }
    /* reset tag pointer */
    tag_ptr = tag;
  }
  if (map_len)
    *map_len = map_ptr - map; /* save map length */
  return NULL;
}

// Assembly:
movq %rdi, -0x10(%rsp)
movq %rsi, -0x18(%rsp)
movq %rdx, -0x20(%rsp)
movq -0x10(%rsp), %rax
movq %rax, -0x28(%rsp)
movq -0x18(%rsp), %rax
movq %rax, -0x30(%rsp)
jmp 0x366a5
movq -0x28(%rsp), %rax
movsbl (%rax), %eax
movq -0x30(%rsp), %rcx
movq %rcx, %rdx
addq $0x1, %rdx
movq %rdx, -0x30(%rsp)
movsbl (%rcx), %ecx
cmpl %ecx, %eax
jne 0x36705
movq -0x28(%rsp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
jne 0x366f5
movq -0x28(%rsp), %rax
movsbl 0x1(%rax), %eax
cmpl $0x0, %eax
je 0x366f3
movq -0x28(%rsp), %rax
addq $0x1, %rax
movq %rax, -0x8(%rsp)
jmp 0x367a3
jmp 0x36705
movq -0x28(%rsp), %rax
addq $0x1, %rax
movq %rax, -0x28(%rsp)
jmp 0x366a5
jmp 0x36707
movq -0x28(%rsp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x28(%rsp)
movsbl (%rax), %eax
cmpl $0x0, %eax
je 0x36722
jmp 0x36707
movq -0x28(%rsp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
jne 0x36731
jmp 0x3677d
jmp 0x36733
movq -0x28(%rsp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
je 0x36750
movq -0x28(%rsp), %rax
addq $0x1, %rax
movq %rax, -0x28(%rsp)
jmp 0x36733
movq -0x28(%rsp), %rax
movsbl 0x1(%rax), %eax
cmpl $0x0, %eax
je 0x3676c
movq -0x28(%rsp), %rax
addq $0x1, %rax
movq %rax, -0x28(%rsp)
jmp 0x3676e
movq -0x18(%rsp), %rax
movq %rax, -0x30(%rsp)
jmp 0x366a3
cmpq $0x0, -0x20(%rsp)
je 0x3679a
movq -0x28(%rsp), %rcx
movq -0x10(%rsp), %rax
subq %rax, %rcx
movq -0x20(%rsp), %rax
movq %rcx, (%rax)
movq $0x0, -0x8(%rsp)
movq -0x8(%rsp), %rax
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/tag_value_map.c
// Function: get_map_nof_items
static size_t get_map_nof_items(const GtTagValueMap map)
{
  const char *map_ptr = map;
  GtUword nof_items = 0;
  bool seen = false;
  for (;;) {
    if (*map_ptr++ == '\0') {
      if (*(map_ptr) == '\0') {
        if (seen) {
          nof_items++;
        }
        break;
      }
      if (seen) {
        nof_items++;
        seen = false;
      } else {
        seen = true;
      }
    }
  }
  return nof_items;
}

// Assembly:
movq %rdi, -0x8(%rsp)
movq -0x8(%rsp), %rax
movq %rax, -0x10(%rsp)
movq $0x0, -0x18(%rsp)
movb $0x0, -0x19(%rsp)
movq -0x10(%rsp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x10(%rsp)
movsbl (%rax), %eax
cmpl $0x0, %eax
jne 0x36a5d
movq -0x10(%rsp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
jne 0x36a3a
testb $0x1, -0x19(%rsp)
je 0x36a38
movq -0x18(%rsp), %rax
addq $0x1, %rax
movq %rax, -0x18(%rsp)
jmp 0x36a5f
testb $0x1, -0x19(%rsp)
je 0x36a56
movq -0x18(%rsp), %rax
addq $0x1, %rax
movq %rax, -0x18(%rsp)
movb $0x0, -0x19(%rsp)
jmp 0x36a5b
movb $0x1, -0x19(%rsp)
jmp 0x36a5d
jmp 0x369fd
movq -0x18(%rsp), %rax
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/tag_value_map.c
// Function: get_map_len
static size_t get_map_len(const GtTagValueMap map)
{
  const char *map_ptr = map;
  for (;;) {
    if ((*map_ptr++ == '\0') && (*map_ptr++ == '\0'))
      break;
  }
  return map_ptr - map - 1;
}

// Assembly:
movq %rdi, -0x8(%rsp)
movq -0x8(%rsp), %rax
movq %rax, -0x10(%rsp)
movq -0x10(%rsp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x10(%rsp)
movsbl (%rax), %eax
cmpl $0x0, %eax
jne 0x36ab3
movq -0x10(%rsp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x10(%rsp)
movsbl (%rax), %eax
cmpl $0x0, %eax
jne 0x36ab3
jmp 0x36ab5
jmp 0x36a7f
movq -0x10(%rsp), %rax
movq -0x8(%rsp), %rcx
subq %rcx, %rax
subq $0x1, %rax
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/tag_value_map.c
// Function: gt_tag_value_map_foreach
void gt_tag_value_map_foreach(const GtTagValueMap map,
                              GtTagValueMapIteratorFunc func,
                              void *data)
{
  const char *map_ptr, *tag;
  gt_assert(map && func);
  map_ptr = map;
  do { /* the map has at least one tag/value pair */
    tag = map_ptr;
    while (*map_ptr++ != '\0'); /* skip tag and \0 */
    func(tag, map_ptr /* value */, data);
    while (*map_ptr++ != '\0'); /* skip value and \0 */
  } while (*map_ptr != '\0');
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq %rsi, 0x18(%rsp)
movq %rdx, 0x10(%rsp)
cmpq $0x0, 0x20(%rsp)
je 0x36f53
cmpq $0x0, 0x18(%rsp)
jne 0x36f8b
movq 0x17d07e(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x127102(%rip), %rsi    # 0x15e066
leaq 0x12f880(%rip), %rdx    # 0x1667eb
leaq 0x12f885(%rip), %rcx    # 0x1667f7
leaq 0x12f6bb(%rip), %r8     # 0x166634
movl $0xd3, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x36f8d
movq 0x20(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rax
movq %rax, (%rsp)
movq 0x8(%rsp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, 0x8(%rsp)
movsbl (%rax), %eax
cmpl $0x0, %eax
je 0x36fbb
jmp 0x36fa0
movq 0x18(%rsp), %rax
movq (%rsp), %rdi
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
callq *%rax
movq 0x8(%rsp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, 0x8(%rsp)
movsbl (%rax), %eax
cmpl $0x0, %eax
je 0x36feb
jmp 0x36fd0
jmp 0x36fed
movq 0x8(%rsp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
jne 0x36f97
addq $0x28, %rsp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/tag_value_map.c
// Function: gt_tag_value_map_show
void gt_tag_value_map_show(const GtTagValueMap map)
{
  bool null_terminator_read = false;
  const char *map_ptr;
  gt_assert(map);
  map_ptr = map;
  for (;;) {
    if (*map_ptr == '\0') {
      printf("\\0");
      if (null_terminator_read)
        break;
      else
        null_terminator_read = true;
    }
    else {
      gt_xputchar(*map_ptr);
      null_terminator_read = false;
    }
    map_ptr++;
  }
  gt_xputchar('\n');
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
movb $0x0, 0xf(%rsp)
cmpq $0x0, 0x10(%rsp)
jne 0x3704e
movq 0x17cfbb(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x12703f(%rip), %rsi    # 0x15e066
leaq 0x1559c1(%rip), %rdx    # 0x18c9ef
leaq 0x12f7db(%rip), %rcx    # 0x166810
leaq 0x12f5f8(%rip), %r8     # 0x166634
movl $0xe1, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x37050
movq 0x10(%rsp), %rax
movq %rax, (%rsp)
movq (%rsp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
jne 0x37083
leaq 0x12f7ba(%rip), %rdi    # 0x166826
movb $0x0, %al
callq 0xb070
testb $0x1, 0xf(%rsp)
je 0x3707c
jmp 0x370a2
movb $0x1, 0xf(%rsp)
jmp 0x37094
movq (%rsp), %rax
movsbl (%rax), %edi
callq 0x1cbb0
movb $0x0, 0xf(%rsp)
movq (%rsp), %rax
addq $0x1, %rax
movq %rax, (%rsp)
jmp 0x37059
movl $0xa, %edi
callq 0x1cbb0
addq $0x18, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/tidy_region_node_stream.c
// Function: gt_tidy_region_node_stream_class
const GtNodeStreamClass* gt_tidy_region_node_stream_class(void)
{
  static const GtNodeStreamClass *nsc = NULL;
  gt_class_alloc_lock_enter();
  if (!nsc) {
    nsc = gt_node_stream_class_new(sizeof (GtTidyRegionNodeStream),
                                   tidy_region_node_stream_free,
                                   tidy_region_node_stream_next);
  }
  gt_class_alloc_lock_leave();
  return nsc;
}

// Assembly:
pushq %rax
callq 0x7b730
cmpq $0x0, 0x17dd4a(%rip)    # 0x1b6458
jne 0x3872f
movl $0x28, %edi
leaq 0x24(%rip), %rsi        # 0x38740
leaq 0x6d(%rip), %rdx        # 0x38790
callq 0x344e0
movq %rax, 0x17dd29(%rip)    # 0x1b6458
callq 0x7b790
movq 0x17dd1d(%rip), %rax    # 0x1b6458
popq %rcx
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/tidy_region_node_stream.c
// Function: tidy_region_node_stream_next
static int tidy_region_node_stream_next(GtNodeStream *ns, GtGenomeNode **gn,
                               GtError *err)
{
  GtTidyRegionNodeStream *ais;
  int had_err = 0;
  gt_error_check(err);
  ais = gt_tidy_region_node_stream_cast(ns);

  if (!ais->queued) {
    /* no nodes in the buffer -> get new nodes */
    while (!(had_err = gt_node_stream_next(ais->in_stream, gn, err)) && *gn) {
      gt_assert(*gn && !had_err);
      had_err = gt_genome_node_accept(*gn, ais->tidy_region_node_visitor, err);
      if (had_err) {
        /* we own the node -> delete it */
        gt_genome_node_delete(*gn);
        *gn = NULL;
        break;
      }
    }
    if (!had_err) {
      ais->queued = true;
    }
  }
  if (!had_err) {
    if (gt_tidy_region_node_visitor_node_buffer_size(
                                               ais->tidy_region_node_visitor)) {
      *gn = gt_tidy_region_node_visitor_get_node(ais->tidy_region_node_visitor);
    }
  }

  return had_err;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq %rsi, 0x18(%rsp)
movq %rdx, 0x10(%rsp)
movl $0x0, 0x4(%rsp)
cmpq $0x0, 0x10(%rsp)
je 0x387fb
movq 0x10(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0x387c3
jmp 0x387fb
movq 0x17b80e(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x125892(%rip), %rsi    # 0x15e066
leaq 0x125e6d(%rip), %rdx    # 0x15e648
leaq 0x12e7b8(%rip), %rcx    # 0x166f9a
leaq 0x12e78a(%rip), %r8     # 0x166f73
movl $0x28, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x387fd
callq 0x38700
movq %rax, %rdi
movq 0x20(%rsp), %rsi
callq 0x34af0
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rax
testb $0x1, 0x20(%rax)
jne 0x38911
jmp 0x38825
movq 0x8(%rsp), %rax
movq 0x10(%rax), %rdi
movq 0x18(%rsp), %rsi
movq 0x10(%rsp), %rdx
callq 0x34790
movl %eax, %ecx
movl %ecx, 0x4(%rsp)
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, 0x3(%rsp)
jne 0x3885e
movq 0x18(%rsp), %rax
cmpq $0x0, (%rax)
setne %al
movb %al, 0x3(%rsp)
movb 0x3(%rsp), %al
testb $0x1, %al
jne 0x3886b
jmp 0x388ff
jmp 0x3886d
movq 0x18(%rsp), %rax
cmpq $0x0, (%rax)
je 0x3887f
cmpl $0x0, 0x4(%rsp)
je 0x388b7
movq 0x17b752(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x1257d6(%rip), %rsi    # 0x15e066
leaq 0x12e720(%rip), %rdx    # 0x166fb7
leaq 0x12e6fc(%rip), %rcx    # 0x166f9a
leaq 0x12e6ce(%rip), %r8     # 0x166f73
movl $0x2e, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x388b9
movq 0x18(%rsp), %rax
movq (%rax), %rdi
movq 0x8(%rsp), %rax
movq 0x18(%rax), %rsi
movq 0x10(%rsp), %rdx
callq 0x25cc0
movl %eax, 0x4(%rsp)
cmpl $0x0, 0x4(%rsp)
je 0x388fa
movq 0x18(%rsp), %rax
movq (%rax), %rdi
callq 0x26eb0
movq 0x18(%rsp), %rax
movq $0x0, (%rax)
jmp 0x388ff
jmp 0x38825
cmpl $0x0, 0x4(%rsp)
jne 0x3890f
movq 0x8(%rsp), %rax
movb $0x1, 0x20(%rax)
jmp 0x38911
cmpl $0x0, 0x4(%rsp)
jne 0x38947
movq 0x8(%rsp), %rax
movq 0x18(%rax), %rdi
callq 0x39200
cmpq $0x0, %rax
je 0x38945
movq 0x8(%rsp), %rax
movq 0x18(%rax), %rdi
callq 0x39240
movq %rax, %rcx
movq 0x18(%rsp), %rax
movq %rcx, (%rax)
jmp 0x38947
movl 0x4(%rsp), %eax
addq $0x28, %rsp
retq
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/tidy_region_node_stream.c
// Function: gt_tidy_region_node_stream_new
GtNodeStream* gt_tidy_region_node_stream_new(GtNodeStream *in_stream)
{
  GtTidyRegionNodeStream *tidy_region_node_stream;
  GtNodeStream *ns;
  gt_assert(in_stream);
  ns = gt_node_stream_create(gt_tidy_region_node_stream_class(), false);
  tidy_region_node_stream = gt_tidy_region_node_stream_cast(ns);
  tidy_region_node_stream->in_stream = gt_node_stream_ref(in_stream);
  tidy_region_node_stream->tidy_region_node_visitor =
                                              gt_tidy_region_node_visitor_new();
  tidy_region_node_stream->queued = false;
  return ns;
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
cmpq $0x0, 0x10(%rsp)
jne 0x38999
movq 0x17b670(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x1256f4(%rip), %rsi    # 0x15e066
leaq 0x12e5d1(%rip), %rdx    # 0x166f4a
leaq 0x12e5d4(%rip), %rcx    # 0x166f54
leaq 0x12e5ec(%rip), %r8     # 0x166f73
movl $0x5d, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x3899b
callq 0x38700
movq %rax, %rdi
xorl %esi, %esi
callq 0x34580
movq %rax, (%rsp)
callq 0x38700
movq %rax, %rdi
movq (%rsp), %rsi
callq 0x34af0
movq %rax, 0x8(%rsp)
movq 0x10(%rsp), %rdi
callq 0x34650
movq %rax, %rcx
movq 0x8(%rsp), %rax
movq %rcx, 0x10(%rax)
callq 0x39190
movq %rax, %rcx
movq 0x8(%rsp), %rax
movq %rcx, 0x18(%rax)
movq 0x8(%rsp), %rax
movb $0x0, 0x20(%rax)
movq (%rsp), %rax
addq $0x18, %rsp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/tidy_region_node_visitor.c
// Function: gt_tidy_region_node_visitor_class
const GtNodeVisitorClass* gt_tidy_region_node_visitor_class()
{
  static GtNodeVisitorClass *nvc = NULL;
  gt_class_alloc_lock_enter();
  if (!nvc) {
    nvc = gt_node_visitor_class_new(sizeof (GtTidyRegionNodeVisitor),
                                    tidy_region_node_visitor_free,
                                    tidy_region_node_visitor_comment_node,
                                    tidy_region_node_visitor_feature_node,
                                    tidy_region_node_visitor_region_node,
                                    tidy_region_node_visitor_sequence_node,
                                    tidy_region_node_visitor_eof_node);
    gt_node_visitor_class_set_meta_node_func(nvc,
                                            tidy_region_node_visitor_meta_node);
  }
  gt_class_alloc_lock_leave();
  return nvc;
}

// Assembly:
pushq %rax
callq 0x7b730
cmpq $0x0, 0x17da52(%rip)    # 0x1b6460
jne 0x38a62
movl $0x20, %edi
leaq 0x54(%rip), %rsi        # 0x38a70
leaq 0x9d(%rip), %rdx        # 0x38ac0
leaq 0x136(%rip), %rcx       # 0x38b60
leaq 0x3df(%rip), %r8        # 0x38e10
leaq 0x578(%rip), %r9        # 0x38fb0
leaq 0x611(%rip), %rax       # 0x39050
movq %rax, (%rsp)
callq 0x34b70
movq %rax, 0x17da11(%rip)    # 0x1b6460
movq 0x17da0a(%rip), %rdi    # 0x1b6460
leaq 0x693(%rip), %rsi       # 0x390f0
callq 0x34c50
callq 0x7b790
movq 0x17d9f2(%rip), %rax    # 0x1b6460
popq %rcx
retq
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/tidy_region_node_visitor.c
// Function: tidy_region_node_visitor_free
static void tidy_region_node_visitor_free(GtNodeVisitor *nv)
{
  GtTidyRegionNodeVisitor *tidy_region_node_visitor =
                                              tidy_region_node_visitor_cast(nv);
  gt_hashmap_delete(tidy_region_node_visitor->region_nodes);
  gt_queue_delete(tidy_region_node_visitor->node_buffer);
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
callq 0x38a00
movq %rax, %rdi
movq 0x10(%rsp), %rsi
callq 0x34d50
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rax
movq 0x18(%rax), %rdi
callq 0x86cc0
movq 0x8(%rsp), %rax
movq 0x10(%rax), %rdi
callq 0x91770
addq $0x18, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/tidy_region_node_visitor.c
// Function: tidy_region_node_visitor_comment_node
static int tidy_region_node_visitor_comment_node(GtNodeVisitor *nv,
                                                 GtCommentNode *cn,
                                                 GT_UNUSED GtError *err)
{
  GtTidyRegionNodeVisitor *trnv;
  gt_error_check(err);
  trnv = tidy_region_node_visitor_cast(nv);
  gt_queue_add(trnv->node_buffer, cn);
  return 0;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq %rsi, 0x18(%rsp)
movq %rdx, 0x10(%rsp)
cmpq $0x0, 0x10(%rsp)
je 0x38b23
movq 0x10(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0x38aeb
jmp 0x38b23
movq 0x17b4e6(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x12556a(%rip), %rsi    # 0x15e066
leaq 0x125b45(%rip), %rdx    # 0x15e648
leaq 0x12e4bd(%rip), %rcx    # 0x166fc7
leaq 0x12e4dc(%rip), %r8     # 0x166fed
movl $0x87, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x38b25
callq 0x38a00
movq %rax, %rdi
movq 0x20(%rsp), %rsi
callq 0x34d50
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rax
movq 0x10(%rax), %rdi
movq 0x18(%rsp), %rsi
callq 0x909d0
xorl %eax, %eax
addq $0x28, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/tidy_region_node_visitor.c
// Function: tidy_region_node_visitor_region_node
static int tidy_region_node_visitor_region_node(GtNodeVisitor *nv,
                                                GtRegionNode *rn,
                                                GT_UNUSED GtError *err)
{
  GtTidyRegionNodeVisitor *trnv;
  const char *seqid;
  gt_error_check(err);
  trnv = tidy_region_node_visitor_cast(nv);
  seqid = gt_str_get(gt_genome_node_get_seqid((GtGenomeNode*) rn));
  gt_assert(seqid);
  if (!gt_hashmap_get(trnv->region_nodes, seqid)) {
    gt_hashmap_add(trnv->region_nodes, gt_cstr_dup(seqid),
                   gt_genome_node_ref((GtGenomeNode*) rn));
    gt_assert(gt_hashmap_get(trnv->region_nodes, seqid));
  }
  gt_queue_add(trnv->node_buffer, rn);
  return 0;
}

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x30(%rsp)
movq %rsi, 0x28(%rsp)
movq %rdx, 0x20(%rsp)
cmpq $0x0, 0x20(%rsp)
je 0x38e73
movq 0x20(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0x38e3b
jmp 0x38e73
movq 0x17b196(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x12521a(%rip), %rsi    # 0x15e066
leaq 0x1257f5(%rip), %rdx    # 0x15e648
leaq 0x12e21d(%rip), %rcx    # 0x167077
leaq 0x12e18c(%rip), %r8     # 0x166fed
movl $0x6a, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x38e75
callq 0x38a00
movq %rax, %rdi
movq 0x30(%rsp), %rsi
callq 0x34d50
movq %rax, 0x18(%rsp)
movq 0x28(%rsp), %rdi
callq 0x258a0
movq %rax, %rdi
callq 0x19940
movq %rax, 0x10(%rsp)
cmpq $0x0, 0x10(%rsp)
jne 0x38ee3
movq 0x17b126(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x1251aa(%rip), %rsi    # 0x15e066
leaq 0x14baad(%rip), %rdx    # 0x184970
leaq 0x12e1ad(%rip), %rcx    # 0x167077
leaq 0x12e11c(%rip), %r8     # 0x166fed
movl $0x6d, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x38ee5
movq 0x18(%rsp), %rax
movq 0x18(%rax), %rdi
movq 0x10(%rsp), %rsi
callq 0x86470
cmpq $0x0, %rax
jne 0x38f8e
movq 0x18(%rsp), %rax
movq 0x18(%rax), %rax
movq %rax, (%rsp)
movq 0x10(%rsp), %rdi
callq 0x7c400
movq %rax, 0x8(%rsp)
movq 0x28(%rsp), %rdi
callq 0x25140
movq (%rsp), %rdi
movq 0x8(%rsp), %rsi
movq %rax, %rdx
callq 0x86510
movq 0x18(%rsp), %rax
movq 0x18(%rax), %rdi
movq 0x10(%rsp), %rsi
callq 0x86470
cmpq $0x0, %rax
jne 0x38f8a
movq 0x17b07f(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x125103(%rip), %rsi    # 0x15e066
leaq 0x12e132(%rip), %rdx    # 0x16709c
leaq 0x12e106(%rip), %rcx    # 0x167077
leaq 0x12e075(%rip), %r8     # 0x166fed
movl $0x71, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x38f8c
jmp 0x38f8e
movq 0x18(%rsp), %rax
movq 0x10(%rax), %rdi
movq 0x28(%rsp), %rsi
callq 0x909d0
xorl %eax, %eax
addq $0x38, %rsp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/tidy_region_node_visitor.c
// Function: tidy_region_node_visitor_sequence_node
static int tidy_region_node_visitor_sequence_node(GtNodeVisitor *nv,
                                                  GtSequenceNode *sn,
                                                  GT_UNUSED GtError *err)
{
  GtTidyRegionNodeVisitor *trnv;
  gt_error_check(err);
  trnv = tidy_region_node_visitor_cast(nv);
  gt_queue_add(trnv->node_buffer, sn);
  return 0;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq %rsi, 0x18(%rsp)
movq %rdx, 0x10(%rsp)
cmpq $0x0, 0x10(%rsp)
je 0x39013
movq 0x10(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0x38fdb
jmp 0x39013
movq 0x17aff6(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x12507a(%rip), %rsi    # 0x15e066
leaq 0x125655(%rip), %rdx    # 0x15e648
leaq 0x12e0cc(%rip), %rcx    # 0x1670c6
leaq 0x12dfec(%rip), %r8     # 0x166fed
movl $0x7c, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x39015
callq 0x38a00
movq %rax, %rdi
movq 0x20(%rsp), %rsi
callq 0x34d50
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rax
movq 0x10(%rax), %rdi
movq 0x18(%rsp), %rsi
callq 0x909d0
xorl %eax, %eax
addq $0x28, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/tidy_region_node_visitor.c
// Function: tidy_region_node_visitor_eof_node
static int tidy_region_node_visitor_eof_node(GtNodeVisitor *nv,
                                             GtEOFNode *en,
                                             GT_UNUSED GtError *err)
{
  GtTidyRegionNodeVisitor *trnv;
  gt_error_check(err);
  trnv = tidy_region_node_visitor_cast(nv);
  gt_queue_add(trnv->node_buffer, en);
  return 0;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq %rsi, 0x18(%rsp)
movq %rdx, 0x10(%rsp)
cmpq $0x0, 0x10(%rsp)
je 0x390b3
movq 0x10(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0x3907b
jmp 0x390b3
movq 0x17af56(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x124fda(%rip), %rsi    # 0x15e066
leaq 0x1255b5(%rip), %rdx    # 0x15e648
leaq 0x12e053(%rip), %rcx    # 0x1670ed
leaq 0x12df4c(%rip), %r8     # 0x166fed
movl $0x9d, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x390b5
callq 0x38a00
movq %rax, %rdi
movq 0x20(%rsp), %rsi
callq 0x34d50
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rax
movq 0x10(%rax), %rdi
movq 0x18(%rsp), %rsi
callq 0x909d0
xorl %eax, %eax
addq $0x28, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/tidy_region_node_visitor.c
// Function: tidy_region_node_visitor_meta_node
static int tidy_region_node_visitor_meta_node(GtNodeVisitor *nv,
                                              GtMetaNode *mn,
                                              GT_UNUSED GtError *err)
{
  GtTidyRegionNodeVisitor *trnv;
  gt_error_check(err);
  trnv = tidy_region_node_visitor_cast(nv);
  gt_queue_add(trnv->node_buffer, mn);
  return 0;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq %rsi, 0x18(%rsp)
movq %rdx, 0x10(%rsp)
cmpq $0x0, 0x10(%rsp)
je 0x39153
movq 0x10(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0x3911b
jmp 0x39153
movq 0x17aeb6(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x124f3a(%rip), %rsi    # 0x15e066
leaq 0x125515(%rip), %rdx    # 0x15e648
leaq 0x12dfd5(%rip), %rcx    # 0x16710f
leaq 0x12deac(%rip), %r8     # 0x166fed
movl $0x92, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x39155
callq 0x38a00
movq %rax, %rdi
movq 0x20(%rsp), %rsi
callq 0x34d50
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rax
movq 0x10(%rax), %rdi
movq 0x18(%rsp), %rsi
callq 0x909d0
xorl %eax, %eax
addq $0x28, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/tidy_region_node_visitor.c
// Function: gt_tidy_region_node_visitor_new
GtNodeVisitor* gt_tidy_region_node_visitor_new(void)
{
  GtNodeVisitor *nv;
  GtTidyRegionNodeVisitor *tidy_region_node_visitor;
  nv = gt_node_visitor_create(gt_tidy_region_node_visitor_class());
  tidy_region_node_visitor = tidy_region_node_visitor_cast(nv);
  tidy_region_node_visitor->node_buffer = gt_queue_new();
  tidy_region_node_visitor->region_nodes = gt_hashmap_new(GT_HASH_STRING,
                                                gt_free_func,
                                                (GtFree) gt_genome_node_delete);
  return nv;
}

// Assembly:
subq $0x18, %rsp
callq 0x38a00
movq %rax, %rdi
callq 0x34cc0
movq %rax, 0x10(%rsp)
callq 0x38a00
movq %rax, %rdi
movq 0x10(%rsp), %rsi
callq 0x34d50
movq %rax, 0x8(%rsp)
callq 0x909b0
movq %rax, %rcx
movq 0x8(%rsp), %rax
movq %rcx, 0x10(%rax)
movl $0x1, %edi
leaq -0x2b5ba(%rip), %rsi    # 0xdc20
leaq -0x12331(%rip), %rdx    # 0x26eb0
callq 0x86190
movq %rax, %rcx
movq 0x8(%rsp), %rax
movq %rcx, 0x18(%rax)
movq 0x10(%rsp), %rax
addq $0x18, %rsp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/type_checker.c
// Function: gt_type_checker_create
GtTypeChecker* gt_type_checker_create(const GtTypeCheckerClass
                                       *type_checker_class)
{
  GtTypeChecker *type_checker;
  gt_assert(type_checker_class && type_checker_class->size);
  type_checker = gt_calloc(1, type_checker_class->size);
  type_checker->c_class = type_checker_class;
  return type_checker;
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
cmpq $0x0, 0x10(%rsp)
je 0x3929c
movq 0x10(%rsp), %rax
cmpq $0x0, (%rax)
jne 0x392d4
movq 0x17ad35(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x124db9(%rip), %rsi    # 0x15e066
leaq 0x12de7e(%rip), %rdx    # 0x167132
leaq 0x12dea6(%rip), %rcx    # 0x167161
leaq 0x12deb6(%rip), %r8     # 0x167178
movl $0x1b, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x392d6
movq 0x10(%rsp), %rax
movq (%rax), %rsi
movl $0x1, %edi
leaq 0x12de8e(%rip), %rdx    # 0x167178
movl $0x1c, %ecx
callq 0xd5b0
movq %rax, 0x8(%rsp)
movq 0x10(%rsp), %rcx
movq 0x8(%rsp), %rax
movq %rcx, (%rax)
movq 0x8(%rsp), %rax
addq $0x18, %rsp
retq
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/type_checker.c
// Function: gt_type_checker_is_partof
bool gt_type_checker_is_partof(GtTypeChecker *type_checker,
                               const char *parent_type, const char *child_type)
{
  gt_assert(type_checker && type_checker->c_class &&
            type_checker->c_class->is_partof);
  return type_checker->c_class->is_partof(type_checker, parent_type,
                                          child_type);
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
movq %rsi, 0x8(%rsp)
movq %rdx, (%rsp)
cmpq $0x0, 0x10(%rsp)
je 0x39554
movq 0x10(%rsp), %rax
cmpq $0x0, (%rax)
je 0x39554
movq 0x10(%rsp), %rax
movq (%rax), %rax
cmpq $0x0, 0x18(%rax)
jne 0x3958c
movq 0x17aa7d(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x124b01(%rip), %rsi    # 0x15e066
leaq 0x12dd21(%rip), %rdx    # 0x16728d
leaq 0x12dd64(%rip), %rcx    # 0x1672d7
leaq 0x12dbfe(%rip), %r8     # 0x167178
movl $0x42, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x3958e
movq 0x10(%rsp), %rax
movq (%rax), %rax
movq 0x18(%rax), %rax
movq 0x10(%rsp), %rdi
movq 0x8(%rsp), %rsi
movq (%rsp), %rdx
callq *%rax
andb $0x1, %al
addq $0x18, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/type_checker.c
// Function: gt_type_checker_is_a
bool gt_type_checker_is_a(GtTypeChecker *type_checker,
                          const char *parent_type, const char *child_type)
{
  gt_assert(type_checker && type_checker->c_class &&
            type_checker->c_class->is_a);
  return type_checker->c_class->is_a(type_checker, parent_type,
                                     child_type);
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
movq %rsi, 0x8(%rsp)
movq %rdx, (%rsp)
cmpq $0x0, 0x10(%rsp)
je 0x395f4
movq 0x10(%rsp), %rax
cmpq $0x0, (%rax)
je 0x395f4
movq 0x10(%rsp), %rax
movq (%rax), %rax
cmpq $0x0, 0x20(%rax)
jne 0x3962c
movq 0x17a9dd(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x124a61(%rip), %rsi    # 0x15e066
leaq 0x12dce5(%rip), %rdx    # 0x1672f1
leaq 0x12dd23(%rip), %rcx    # 0x167336
leaq 0x12db5e(%rip), %r8     # 0x167178
movl $0x4b, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x3962e
movq 0x10(%rsp), %rax
movq (%rax), %rax
movq 0x20(%rax), %rax
movq 0x10(%rsp), %rdi
movq 0x8(%rsp), %rsi
movq (%rsp), %rdx
callq *%rax
andb $0x1, %al
addq $0x18, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/type_checker.c
// Function: gt_type_checker_delete
void gt_type_checker_delete(GtTypeChecker *type_checker)
{
  if (!type_checker) return;
  if (type_checker->reference_count) {
    type_checker->reference_count--;
    return;
  }
  gt_assert(type_checker->c_class);
  if (type_checker->c_class->free)
    type_checker->c_class->free(type_checker);
  gt_free(type_checker);
}

// Assembly:
pushq %rax
movq %rdi, (%rsp)
cmpq $0x0, (%rsp)
jne 0x39671
jmp 0x39704
movq (%rsp), %rax
cmpl $0x0, 0x8(%rax)
je 0x3968a
movq (%rsp), %rax
movl 0x8(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0x8(%rax)
jmp 0x39704
jmp 0x3968c
movq (%rsp), %rax
cmpq $0x0, (%rax)
jne 0x396ce
movq 0x17a93b(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x1249bf(%rip), %rsi    # 0x15e066
leaq 0x12dc9d(%rip), %rdx    # 0x16734b
leaq 0x12dcac(%rip), %rcx    # 0x167361
leaq 0x12dabc(%rip), %r8     # 0x167178
movl $0x57, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x396d0
movq (%rsp), %rax
movq (%rax), %rax
cmpq $0x0, 0x28(%rax)
je 0x396ef
movq (%rsp), %rax
movq (%rax), %rax
movq 0x28(%rax), %rax
movq (%rsp), %rdi
callq *%rax
movq (%rsp), %rdi
leaq 0x12da7e(%rip), %rsi    # 0x167178
movl $0x5a, %edx
callq 0xdab0
popq %rax
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/visitor_stream.c
// Function: gt_visitor_stream_class
const GtNodeStreamClass* gt_visitor_stream_class(void)
{
  static const GtNodeStreamClass *nsc = NULL;
  gt_class_alloc_lock_enter();
  if (!nsc) {
    nsc = gt_node_stream_class_new(sizeof (GtVisitorStream),
                                   visitor_stream_free,
                                   visitor_stream_next);
  }
  gt_class_alloc_lock_leave();
  return nsc;
}

// Assembly:
pushq %rax
callq 0x7b730
cmpq $0x0, 0x17ccca(%rip)    # 0x1b6468
jne 0x397bf
movl $0x20, %edi
leaq 0x24(%rip), %rsi        # 0x397d0
leaq 0x6d(%rip), %rdx        # 0x39820
callq 0x344e0
movq %rax, 0x17cca9(%rip)    # 0x1b6468
callq 0x7b790
movq 0x17cc9d(%rip), %rax    # 0x1b6468
popq %rcx
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/visitor_stream.c
// Function: visitor_stream_next
static int visitor_stream_next(GtNodeStream *ns, GtGenomeNode **gn,
                               GtError *err)
{
  GtVisitorStream *visitor_stream;
  int had_err;
  gt_error_check(err);
  visitor_stream = visitor_stream_cast(ns);
  had_err = gt_node_stream_next(visitor_stream->in_stream, gn, err);
  if (!had_err && *gn)
    had_err = gt_genome_node_accept(*gn, visitor_stream->visitor, err);
  if (had_err) {
    /* we own the node -> delete it */
    gt_genome_node_delete(*gn);
    *gn = NULL;
  }
  return had_err;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq %rsi, 0x18(%rsp)
movq %rdx, 0x10(%rsp)
cmpq $0x0, 0x10(%rsp)
je 0x39883
movq 0x10(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0x3984b
jmp 0x39883
movq 0x17a786(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x12480a(%rip), %rsi    # 0x15e066
leaq 0x124de5(%rip), %rdx    # 0x15e648
leaq 0x12dbc3(%rip), %rcx    # 0x16742d
leaq 0x12db9e(%rip), %r8     # 0x16740f
movl $0x24, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x39885
callq 0x39790
movq %rax, %rdi
movq 0x20(%rsp), %rsi
callq 0x34af0
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rax
movq 0x10(%rax), %rdi
movq 0x18(%rsp), %rsi
movq 0x10(%rsp), %rdx
callq 0x34790
movl %eax, 0x4(%rsp)
cmpl $0x0, 0x4(%rsp)
jne 0x398e9
movq 0x18(%rsp), %rax
cmpq $0x0, (%rax)
je 0x398e9
movq 0x18(%rsp), %rax
movq (%rax), %rdi
movq 0x8(%rsp), %rax
movq 0x18(%rax), %rsi
movq 0x10(%rsp), %rdx
callq 0x25cc0
movl %eax, 0x4(%rsp)
cmpl $0x0, 0x4(%rsp)
je 0x39909
movq 0x18(%rsp), %rax
movq (%rax), %rdi
callq 0x26eb0
movq 0x18(%rsp), %rax
movq $0x0, (%rax)
movl 0x4(%rsp), %eax
addq $0x28, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/visitor_stream.c
// Function: gt_visitor_stream_new
GtNodeStream* gt_visitor_stream_new(GtNodeStream *in_stream,
                                    GtNodeVisitor *visitor)
{
  GtVisitorStream *visitor_stream;
  GtNodeStream *ns;
  ns = gt_node_stream_create(gt_visitor_stream_class(),
                             gt_node_stream_is_sorted(in_stream));
  visitor_stream = visitor_stream_cast(ns);
  visitor_stream->in_stream = gt_node_stream_ref(in_stream);
  visitor_stream->visitor = visitor;
  return ns;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq %rsi, 0x18(%rsp)
callq 0x39790
movq %rax, (%rsp)
movq 0x20(%rsp), %rdi
callq 0x34a90
movq (%rsp), %rdi
movzbl %al, %esi
andl $0x1, %esi
callq 0x34580
movq %rax, 0x8(%rsp)
callq 0x39790
movq %rax, %rdi
movq 0x8(%rsp), %rsi
callq 0x34af0
movq %rax, 0x10(%rsp)
movq 0x20(%rsp), %rdi
callq 0x34650
movq %rax, %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x10(%rax)
movq 0x18(%rsp), %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x18(%rax)
movq 0x8(%rsp), %rax
addq $0x28, %rsp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/xrf_checker.c
// Function: gt_xrf_checker_delete
void gt_xrf_checker_delete(GtXRFChecker *xrc)
{
  if (!xrc) return;
  if (xrc->reference_count) {
    xrc->reference_count--;
    return;
  }
  gt_xrf_abbr_parse_tree_delete(xrc->xpt);
  gt_hashmap_delete(xrc->abbrvs);
  gt_splitter_delete(xrc->splitter);
  gt_free(xrc);
}

// Assembly:
pushq %rax
movq %rdi, (%rsp)
cmpq $0x0, (%rsp)
jne 0x3a03e
jmp 0x3a096
movq (%rsp), %rax
cmpq $0x0, 0x18(%rax)
je 0x3a05b
movq (%rsp), %rax
movq 0x18(%rax), %rcx
addq $-0x1, %rcx
movq %rcx, 0x18(%rax)
jmp 0x3a096
movq (%rsp), %rax
movq 0x8(%rax), %rdi
callq 0xa9510
movq (%rsp), %rax
movq (%rax), %rdi
callq 0x86cc0
movq (%rsp), %rax
movq 0x10(%rax), %rdi
callq 0x17060
movq (%rsp), %rdi
leaq 0x12d3da(%rip), %rsi    # 0x167466
movl $0x8f, %edx
callq 0xdab0
popq %rax
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/annotationsketch/canvas.c
// Function: gt_canvas_class_new
const GtCanvasClass* gt_canvas_class_new(size_t size,
                                         GtCanvasVisitLayoutFunc la_visit_pre,
                                         GtCanvasVisitLayoutFunc la_visit_post,
                                         GtCanvasVisitTrackFunc t_visit_pre,
                                         GtCanvasVisitTrackFunc t_visit_post,
                                         GtCanvasVisitLineFunc l_visit_pre,
                                         GtCanvasVisitLineFunc l_visit_post,
                                         GtCanvasVisitBlockFunc b_visit,
                                         GtCanvasVisitElementFunc e_visit,
                                         GtCanvasVisitCustomTrackFunc ct_visit,
                                         GtCanvasDrawRulerFunc draw_ruler_func,
                                         GtCanvasFreeFunc free)
{
  GtCanvasClass *c_class = gt_class_alloc(sizeof *c_class);
  c_class->size = size;
  c_class->visit_layout_pre   = la_visit_pre;
  c_class->visit_layout_post  = la_visit_post;
  c_class->visit_track_pre    = t_visit_pre;
  c_class->visit_track_post   = t_visit_post;
  c_class->visit_line_pre     = l_visit_pre;
  c_class->visit_line_post    = l_visit_post;
  c_class->visit_block        = b_visit;
  c_class->visit_element      = e_visit;
  c_class->visit_ct           = ct_visit;
  c_class->draw_ruler_func    = draw_ruler_func;
  c_class->free = free;
  return c_class;
}

// Assembly:
subq $0x38, %rsp
movq 0x68(%rsp), %rax
movq 0x60(%rsp), %rax
movq 0x58(%rsp), %rax
movq 0x50(%rsp), %rax
movq 0x48(%rsp), %rax
movq 0x40(%rsp), %rax
movq %rdi, 0x30(%rsp)
movq %rsi, 0x28(%rsp)
movq %rdx, 0x20(%rsp)
movq %rcx, 0x18(%rsp)
movq %r8, 0x10(%rsp)
movq %r9, 0x8(%rsp)
movl $0x60, %edi
callq 0x7b610
movq %rax, (%rsp)
movq 0x30(%rsp), %rcx
movq (%rsp), %rax
movq %rcx, (%rax)
movq 0x28(%rsp), %rcx
movq (%rsp), %rax
movq %rcx, 0x8(%rax)
movq 0x20(%rsp), %rcx
movq (%rsp), %rax
movq %rcx, 0x10(%rax)
movq 0x18(%rsp), %rcx
movq (%rsp), %rax
movq %rcx, 0x18(%rax)
movq 0x10(%rsp), %rcx
movq (%rsp), %rax
movq %rcx, 0x20(%rax)
movq 0x8(%rsp), %rcx
movq (%rsp), %rax
movq %rcx, 0x28(%rax)
movq 0x40(%rsp), %rcx
movq (%rsp), %rax
movq %rcx, 0x30(%rax)
movq 0x48(%rsp), %rcx
movq (%rsp), %rax
movq %rcx, 0x38(%rax)
movq 0x50(%rsp), %rcx
movq (%rsp), %rax
movq %rcx, 0x40(%rax)
movq 0x58(%rsp), %rcx
movq (%rsp), %rax
movq %rcx, 0x48(%rax)
movq 0x60(%rsp), %rcx
movq (%rsp), %rax
movq %rcx, 0x50(%rax)
movq 0x68(%rsp), %rcx
movq (%rsp), %rax
movq %rcx, 0x58(%rax)
movq (%rsp), %rax
addq $0x38, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/annotationsketch/canvas.c
// Function: gt_canvas_create
GtCanvas* gt_canvas_create(const GtCanvasClass *cc)
{
  GtCanvas *c;
  gt_assert(cc && cc->size);
  c = gt_calloc(1, cc->size);
  c->c_class = cc;
  c->pvt = gt_calloc(1, sizeof (GtCanvasMembers));
  return c;
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
cmpq $0x0, 0x10(%rsp)
je 0x3a61c
movq 0x10(%rsp), %rax
cmpq $0x0, (%rax)
jne 0x3a654
movq 0x1799b5(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x123a39(%rip), %rsi    # 0x15e066
leaq 0x12cfe1(%rip), %rdx    # 0x167615
leaq 0x12cfe9(%rip), %rcx    # 0x167624
leaq 0x12cf84(%rip), %r8     # 0x1675c6
movl $0xa4, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x3a656
movq 0x10(%rsp), %rax
movq (%rax), %rsi
movl $0x1, %edi
leaq 0x12cf5c(%rip), %rdx    # 0x1675c6
movl $0xa5, %ecx
callq 0xd5b0
movq %rax, 0x8(%rsp)
movq 0x10(%rsp), %rcx
movq 0x8(%rsp), %rax
movq %rcx, (%rax)
movl $0x1, %edi
movl $0x68, %esi
leaq 0x12cf2f(%rip), %rdx    # 0x1675c6
movl $0xa7, %ecx
callq 0xd5b0
movq %rax, %rcx
movq 0x8(%rsp), %rax
movq %rcx, 0x8(%rax)
movq 0x8(%rsp), %rax
addq $0x18, %rsp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/annotationsketch/canvas.c
// Function: gt_canvas_delete
void gt_canvas_delete(GtCanvas *canvas)
{
  if (!canvas) return;
  gt_assert(canvas->c_class);
  if (canvas->c_class->free)
    canvas->c_class->free(canvas);
  if (canvas->pvt->g)
    gt_graphics_delete(canvas->pvt->g);
  if (canvas->pvt->bt)
    gt_bittab_delete(canvas->pvt->bt);
  gt_free(canvas->pvt);
  gt_free(canvas);
}

// Assembly:
pushq %rax
movq %rdi, (%rsp)
cmpq $0x0, (%rsp)
jne 0x3a6d1
jmp 0x3a7a4
jmp 0x3a6d3
movq (%rsp), %rax
cmpq $0x0, (%rax)
jne 0x3a715
movq 0x1798f4(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x123978(%rip), %rsi    # 0x15e066
leaq 0x12cf40(%rip), %rdx    # 0x167635
leaq 0x12cf49(%rip), %rcx    # 0x167645
leaq 0x12cec3(%rip), %r8     # 0x1675c6
movl $0xae, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x3a717
movq (%rsp), %rax
movq (%rax), %rax
cmpq $0x0, 0x58(%rax)
je 0x3a736
movq (%rsp), %rax
movq (%rax), %rax
movq 0x58(%rax), %rax
movq (%rsp), %rdi
callq *%rax
movq (%rsp), %rax
movq 0x8(%rax), %rax
cmpq $0x0, 0x58(%rax)
je 0x3a756
movq (%rsp), %rax
movq 0x8(%rax), %rax
movq 0x58(%rax), %rdi
callq 0x3e610
movq (%rsp), %rax
movq 0x8(%rax), %rax
cmpq $0x0, 0x50(%rax)
je 0x3a776
movq (%rsp), %rax
movq 0x8(%rax), %rax
movq 0x50(%rax), %rdi
callq 0x7a420
movq (%rsp), %rax
movq 0x8(%rax), %rdi
leaq 0x12ce41(%rip), %rsi    # 0x1675c6
movl $0xb5, %edx
callq 0xdab0
movq (%rsp), %rdi
leaq 0x12ce2c(%rip), %rsi    # 0x1675c6
movl $0xb6, %edx
callq 0xdab0
popq %rax
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/annotationsketch/canvas.c
// Function: gt_canvas_try_cast
void* gt_canvas_try_cast(GT_UNUSED const GtCanvasClass *cc, GtCanvas *c)
{
  gt_assert(cc && c);
  if (c->c_class == cc)
    return c;
  return NULL;
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x8(%rsp)
movq %rsi, (%rsp)
cmpq $0x0, 0x8(%rsp)
je 0x3a84c
cmpq $0x0, (%rsp)
jne 0x3a884
movq 0x179785(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x123809(%rip), %rsi    # 0x15e066
leaq 0x12ce1d(%rip), %rdx    # 0x167681
leaq 0x12ce1e(%rip), %rcx    # 0x167689
leaq 0x12cd54(%rip), %r8     # 0x1675c6
movl $0xc1, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x3a886
movq (%rsp), %rax
movq (%rax), %rax
cmpq 0x8(%rsp), %rax
jne 0x3a89f
movq (%rsp), %rax
movq %rax, 0x10(%rsp)
jmp 0x3a8a8
movq $0x0, 0x10(%rsp)
movq 0x10(%rsp), %rax
addq $0x18, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/annotationsketch/canvas.c
// Function: gt_canvas_visit_layout_pre
int gt_canvas_visit_layout_pre(GtCanvas *canvas, GtLayout* layout, GtError *err)
{
  gt_assert(canvas && layout);
  if (canvas->c_class->visit_layout_pre)
    return canvas->c_class->visit_layout_pre(canvas, layout, err);
  else
    return 0;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x18(%rsp)
movq %rsi, 0x10(%rsp)
movq %rdx, 0x8(%rsp)
cmpq $0x0, 0x18(%rsp)
je 0x3a943
cmpq $0x0, 0x10(%rsp)
jne 0x3a97b
movq 0x17968e(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0x123712(%rip), %rsi    # 0x15e066
leaq 0x12cd56(%rip), %rdx    # 0x1676b1
leaq 0x12cd60(%rip), %rcx    # 0x1676c2
leaq 0x12cc5d(%rip), %r8     # 0x1675c6
movl $0xcf, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x3a97d
movq 0x18(%rsp), %rax
movq (%rax), %rax
cmpq $0x0, 0x8(%rax)
je 0x3a9af
movq 0x18(%rsp), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
movq 0x18(%rsp), %rdi
movq 0x10(%rsp), %rsi
movq 0x8(%rsp), %rdx
callq *%rax
movl %eax, 0x24(%rsp)
jmp 0x3a9b7
movl $0x0, 0x24(%rsp)
movl 0x24(%rsp), %eax
addq $0x28, %rsp
retq