LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/core/timer.c
// Function: gt_timer_show_formatted
void gt_timer_show_formatted(GT_WIN32_UNUSED GtTimer *t,
                             GT_WIN32_UNUSED const char *fmt,
                             GT_WIN32_UNUSED FILE *fp)
{
#ifndef _WIN32
  struct timeval elapsed_tv;
  if (t->state == TIMER_RUNNING)
    gt_timer_stop(t);
  gt_assert(t->state == TIMER_STOPPED);
  timeval_subtract(&elapsed_tv, &t->stop_tv, &t->gstart_tv);
  fprintf(fp, fmt,
          (GtWord)(elapsed_tv.tv_sec),
          (GtWord)(elapsed_tv.tv_usec),
          (GtWord)(t->stop_ru.ru_utime.tv_sec - t->start_ru.ru_utime.tv_sec),
          (GtWord)(t->stop_ru.ru_stime.tv_sec - t->start_ru.ru_stime.tv_sec));
#else
  /* XXX */
  fprintf(stderr, "gt_timer_show_formatted() not implemented\n");
  exit(EXIT_FAILURE);
#endif
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq %rsi, 0x18(%rsp)
movq %rdx, 0x10(%rsp)
movq 0x20(%rsp), %rax
cmpl $0x0, 0x1e0(%rax)
jne 0x14b8ab
movq 0x20(%rsp), %rdi
callq 0x14b7f0
jmp 0x14b8ad
movq 0x20(%rsp), %rax
cmpl $0x1, 0x1e0(%rax)
je 0x14b8f3
movq 0x68716(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0x1279a(%rip), %rsi     # 0x15e066
leaq 0x41718(%rip), %rdx     # 0x18cfeb
leaq 0x4172b(%rip), %rcx     # 0x18d005
leaq 0x416dc(%rip), %r8      # 0x18cfbd
movl $0x8f, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x14b8f5
movq 0x20(%rsp), %rsi
addq $0x20, %rsi
movq 0x20(%rsp), %rdx
movq %rsp, %rdi
callq 0x14b960
movq 0x10(%rsp), %rdi
movq 0x18(%rsp), %rsi
movq (%rsp), %rdx
movq 0x8(%rsp), %rcx
movq 0x20(%rsp), %rax
movq 0x150(%rax), %r8
movq 0x20(%rsp), %rax
subq 0xc0(%rax), %r8
movq 0x20(%rsp), %rax
movq 0x160(%rax), %r9
movq 0x20(%rsp), %rax
subq 0xd0(%rax), %r9
movb $0x0, %al
callq 0xb890
addq $0x28, %rsp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/core/timer.c
// Function: timeval_subtract
static int timeval_subtract(struct timeval *result,
                            struct timeval *x,
                            struct timeval *y)
{
  if (x->tv_usec < y->tv_usec) {
    int nsec = (y->tv_usec - x->tv_usec) / 1000000 + 1;
    y->tv_usec -= 1000000 * nsec;
    y->tv_sec += nsec;
  }
  if (x->tv_usec - y->tv_usec > 1000000) {
    int nsec = (x->tv_usec - y->tv_usec) / 1000000;
    y->tv_usec += 1000000 * nsec;
    y->tv_sec -= nsec;
  }
  result->tv_sec = x->tv_sec - y->tv_sec;
  result->tv_usec = x->tv_usec - y->tv_usec;
  return x->tv_sec < y->tv_sec;
}

// Assembly:
movq %rdi, -0x8(%rsp)
movq %rsi, -0x10(%rsp)
movq %rdx, -0x18(%rsp)
movq -0x10(%rsp), %rax
movq 0x8(%rax), %rax
movq -0x18(%rsp), %rcx
cmpq 0x8(%rcx), %rax
jge 0x14b9d2
movq -0x18(%rsp), %rax
movq 0x8(%rax), %rax
movq -0x10(%rsp), %rcx
subq 0x8(%rcx), %rax
movl $0xf4240, %ecx          # imm = 0xF4240
cqto
idivq %rcx
addq $0x1, %rax
movl %eax, -0x1c(%rsp)
imull $0xf4240, -0x1c(%rsp), %eax # imm = 0xF4240
movslq %eax, %rdx
movq -0x18(%rsp), %rax
movq 0x8(%rax), %rcx
subq %rdx, %rcx
movq %rcx, 0x8(%rax)
movslq -0x1c(%rsp), %rcx
movq -0x18(%rsp), %rax
addq (%rax), %rcx
movq %rcx, (%rax)
movq -0x10(%rsp), %rax
movq 0x8(%rax), %rax
movq -0x18(%rsp), %rcx
subq 0x8(%rcx), %rax
cmpq $0xf4240, %rax          # imm = 0xF4240
jle 0x14ba37
movq -0x10(%rsp), %rax
movq 0x8(%rax), %rax
movq -0x18(%rsp), %rcx
subq 0x8(%rcx), %rax
movl $0xf4240, %ecx          # imm = 0xF4240
cqto
idivq %rcx
movl %eax, -0x20(%rsp)
imull $0xf4240, -0x20(%rsp), %eax # imm = 0xF4240
movslq %eax, %rcx
movq -0x18(%rsp), %rax
addq 0x8(%rax), %rcx
movq %rcx, 0x8(%rax)
movslq -0x20(%rsp), %rdx
movq -0x18(%rsp), %rax
movq (%rax), %rcx
subq %rdx, %rcx
movq %rcx, (%rax)
movq -0x10(%rsp), %rax
movq (%rax), %rcx
movq -0x18(%rsp), %rax
subq (%rax), %rcx
movq -0x8(%rsp), %rax
movq %rcx, (%rax)
movq -0x10(%rsp), %rax
movq 0x8(%rax), %rcx
movq -0x18(%rsp), %rax
subq 0x8(%rax), %rcx
movq -0x8(%rsp), %rax
movq %rcx, 0x8(%rax)
movq -0x10(%rsp), %rax
movq (%rax), %rax
movq -0x18(%rsp), %rcx
cmpq (%rcx), %rax
setl %al
andb $0x1, %al
movzbl %al, %eax
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/core/timer.c
// Function: gt_timer_elapsed_usec
GtWord gt_timer_elapsed_usec(GT_WIN32_UNUSED GtTimer *t)
{
#ifndef _WIN32
  struct timeval elapsed_tv;
  if (t->state == TIMER_RUNNING)
    gt_timer_stop(t);
  gt_assert(t->state == TIMER_STOPPED);
  timeval_subtract(&elapsed_tv, &t->stop_tv, &t->gstart_tv);
  return (GtWord) (elapsed_tv.tv_usec + elapsed_tv.tv_sec * 1000000L);
#else
  /* XXX */
  fprintf(stderr, "gt_elapsed_usec() not implemented\n");
  exit(EXIT_FAILURE);
#endif
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
movq 0x10(%rsp), %rax
cmpl $0x0, 0x1e0(%rax)
jne 0x14bab1
movq 0x10(%rsp), %rdi
callq 0x14b7f0
jmp 0x14bab3
movq 0x10(%rsp), %rax
cmpl $0x1, 0x1e0(%rax)
je 0x14baf9
movq 0x68510(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0x12594(%rip), %rsi     # 0x15e066
leaq 0x41512(%rip), %rdx     # 0x18cfeb
leaq 0x4153d(%rip), %rcx     # 0x18d01d
leaq 0x414d6(%rip), %r8      # 0x18cfbd
movl $0xa3, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x14bafb
movq 0x10(%rsp), %rsi
addq $0x20, %rsi
movq 0x10(%rsp), %rdx
movq %rsp, %rdi
callq 0x14b960
movq 0x8(%rsp), %rax
imulq $0xf4240, (%rsp), %rcx  # imm = 0xF4240
addq %rcx, %rax
addq $0x18, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/core/timer.c
// Function: gt_timer_get_formatted
void gt_timer_get_formatted(GT_WIN32_UNUSED GtTimer *t,
                            GT_WIN32_UNUSED const char *fmt,
                            GT_WIN32_UNUSED GtStr *str)
{
#ifndef _WIN32
  struct timeval elapsed_tv;
  char buf[BUFSIZ];
  if (t->state == TIMER_RUNNING)
    gt_timer_stop(t);
  gt_assert(t->state == TIMER_STOPPED);
  timeval_subtract(&elapsed_tv, &t->stop_tv, &t->gstart_tv);
  (void) snprintf(buf, BUFSIZ-1, fmt,
          (GtWord)(elapsed_tv.tv_sec),
          (GtWord)(elapsed_tv.tv_usec),
          (GtWord)(t->stop_ru.ru_utime.tv_sec - t->start_ru.ru_utime.tv_sec),
          (GtWord)(t->stop_ru.ru_stime.tv_sec - t->start_ru.ru_stime.tv_sec));
  gt_str_append_cstr(str, buf);
#else
  /* XXX */
  fprintf(stderr, "gt_timer_get_formatted() not implemented\n");
  exit(EXIT_FAILURE);
#endif
}

// Assembly:
subq $0x2038, %rsp           # imm = 0x2038
movq %rdi, 0x2030(%rsp)
movq %rsi, 0x2028(%rsp)
movq %rdx, 0x2020(%rsp)
movq 0x2030(%rsp), %rax
cmpl $0x0, 0x1e0(%rax)
jne 0x14bb6d
movq 0x2030(%rsp), %rdi
callq 0x14b7f0
jmp 0x14bb6f
movq 0x2030(%rsp), %rax
cmpl $0x1, 0x1e0(%rax)
je 0x14bbb8
movq 0x68451(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0x124d5(%rip), %rsi     # 0x15e066
leaq 0x41453(%rip), %rdx     # 0x18cfeb
leaq 0x41494(%rip), %rcx     # 0x18d033
leaq 0x41417(%rip), %r8      # 0x18cfbd
movl $0xb6, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x14bbba
movq 0x2030(%rsp), %rsi
addq $0x20, %rsi
movq 0x2030(%rsp), %rdx
leaq 0x2010(%rsp), %rdi
callq 0x14b960
leaq 0x10(%rsp), %rdi
movq 0x2028(%rsp), %rdx
movq 0x2010(%rsp), %rcx
movq 0x2018(%rsp), %r8
movq 0x2030(%rsp), %rax
movq 0x150(%rax), %r9
movq 0x2030(%rsp), %rax
subq 0xc0(%rax), %r9
movq 0x2030(%rsp), %rax
movq 0x160(%rax), %rax
movq 0x2030(%rsp), %rsi
subq 0xd0(%rsi), %rax
movl $0x1fff, %esi           # imm = 0x1FFF
movq %rax, (%rsp)
movb $0x0, %al
callq 0xb9d0
movq 0x2020(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x18fb0
addq $0x2038, %rsp           # imm = 0x2038
retq
nop
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/core/timer.c
// Function: gt_timer_print_progress_report
static void gt_timer_print_progress_report(GtTimer *t,
    struct timeval *elapsed_tv, struct timeval *elapsed_user_tv,
    struct timeval *elapsed_sys_tv, const char *desc, FILE *fp)
{
  fprintf(fp,"# TIME %s "GT_WD".%02ld",
          desc,
          (GtWord)(elapsed_tv->tv_sec),
          (GtWord)(elapsed_tv->tv_usec)/10000);
  if (t->show_cpu_time) {
    fprintf(fp, " (user: "GT_WD".%02ld; sys: "GT_WD".%02ld)\n",
            (GtWord)(elapsed_user_tv->tv_sec),
            (GtWord)(elapsed_user_tv->tv_usec)/10000,
            (GtWord)(elapsed_sys_tv->tv_sec),
            (GtWord)(elapsed_sys_tv->tv_usec)/10000);
  }
  else {
    fprintf(fp, "\n");
  }
}

// Assembly:
subq $0x48, %rsp
movq %rdi, 0x40(%rsp)
movq %rsi, 0x38(%rsp)
movq %rdx, 0x30(%rsp)
movq %rcx, 0x28(%rsp)
movq %r8, 0x20(%rsp)
movq %r9, 0x18(%rsp)
movq 0x18(%rsp), %rdi
movq 0x20(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x38(%rsp), %rax
movq (%rax), %rcx
movq 0x38(%rsp), %rax
movq 0x8(%rax), %rax
movl $0x2710, %esi           # imm = 0x2710
cqto
idivq %rsi
movq 0x10(%rsp), %rdx
movq %rax, %r8
leaq 0x41083(%rip), %rsi     # 0x18d0be
movb $0x0, %al
callq 0xb890
movq 0x40(%rsp), %rax
testb $0x1, 0x1f2(%rax)
je 0x14c0ab
movq 0x18(%rsp), %rdi
movq 0x30(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x8(%rsp)
movq 0x30(%rsp), %rax
movq 0x8(%rax), %rax
movl $0x2710, %ecx           # imm = 0x2710
cqto
idivq %rcx
movq %rax, %rcx
movq 0x28(%rsp), %rax
movq (%rax), %r8
movq 0x28(%rsp), %rax
movq 0x8(%rax), %rax
movl $0x2710, %esi           # imm = 0x2710
cqto
idivq %rsi
movq 0x8(%rsp), %rdx
movq %rax, %r9
leaq 0x41030(%rip), %rsi     # 0x18d0d2
movb $0x0, %al
callq 0xb890
jmp 0x14c0be
movq 0x18(%rsp), %rdi
leaq 0x29b2e(%rip), %rsi     # 0x175be5
movb $0x0, %al
callq 0xb890
addq $0x48, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/core/timer.c
// Function: gt_timer_show_progress_final
void gt_timer_show_progress_final(GT_WIN32_UNUSED GtTimer *t,
                                  GT_WIN32_UNUSED FILE *fp)
{
#ifndef _WIN32
  struct timeval elapsed_tv, elapsed_user_tv, elapsed_sys_tv;
  const char overall_desc[] = "overall";

  gt_timer_stop(t);
  if (!t->omit_last_stage) {
    timeval_subtract(&elapsed_tv, &t->stop_tv, &t->start_tv);
    timeval_subtract(&elapsed_user_tv, &t->stop_ru.ru_utime,
      &t->start_ru.ru_utime);
    timeval_subtract(&elapsed_sys_tv, &t->stop_ru.ru_stime,
      &t->start_ru.ru_stime);
    gt_timer_print_progress_report(t, &elapsed_tv, &elapsed_user_tv,
      &elapsed_sys_tv, t->statedesc, fp);
  }
  timeval_subtract(&elapsed_tv, &t->stop_tv, &t->gstart_tv);
  timeval_subtract(&elapsed_user_tv, &t->stop_ru.ru_utime,
    &t->gstart_ru.ru_utime);
  timeval_subtract(&elapsed_sys_tv, &t->stop_ru.ru_stime,
    &t->gstart_ru.ru_stime);
  gt_timer_print_progress_report(t, &elapsed_tv, &elapsed_user_tv,
    &elapsed_sys_tv, overall_desc, fp);
#else
  /* XXX */
  fprintf(stderr, "gt_timer_show_progress_final() not implemented\n");
  exit(EXIT_FAILURE);
#endif
}

// Assembly:
subq $0x48, %rsp
movq %rdi, 0x40(%rsp)
movq %rsi, 0x38(%rsp)
movq 0x40fd1(%rip), %rax     # 0x18d0b6
movq %rax, (%rsp)
movq 0x40(%rsp), %rdi
callq 0x14b7f0
movq 0x40(%rsp), %rax
testb $0x1, 0x1f1(%rax)
jne 0x14c197
movq 0x40(%rsp), %rsi
addq $0x20, %rsi
movq 0x40(%rsp), %rdx
addq $0x10, %rdx
leaq 0x28(%rsp), %rdi
callq 0x14b960
movq 0x40(%rsp), %rsi
addq $0x150, %rsi            # imm = 0x150
movq 0x40(%rsp), %rdx
addq $0xc0, %rdx
leaq 0x18(%rsp), %rdi
callq 0x14b960
movq 0x40(%rsp), %rsi
addq $0x150, %rsi            # imm = 0x150
addq $0x10, %rsi
movq 0x40(%rsp), %rdx
addq $0xc0, %rdx
addq $0x10, %rdx
leaq 0x8(%rsp), %rdi
callq 0x14b960
movq 0x40(%rsp), %rdi
movq 0x40(%rsp), %rax
movq 0x1e8(%rax), %r8
movq 0x38(%rsp), %r9
leaq 0x28(%rsp), %rsi
leaq 0x18(%rsp), %rdx
leaq 0x8(%rsp), %rcx
callq 0x14bfe0
movq 0x40(%rsp), %rsi
addq $0x20, %rsi
movq 0x40(%rsp), %rdx
leaq 0x28(%rsp), %rdi
callq 0x14b960
movq 0x40(%rsp), %rsi
addq $0x150, %rsi            # imm = 0x150
movq 0x40(%rsp), %rdx
addq $0x30, %rdx
leaq 0x18(%rsp), %rdi
callq 0x14b960
movq 0x40(%rsp), %rsi
addq $0x150, %rsi            # imm = 0x150
addq $0x10, %rsi
movq 0x40(%rsp), %rdx
addq $0x30, %rdx
addq $0x10, %rdx
leaq 0x8(%rsp), %rdi
callq 0x14b960
movq 0x40(%rsp), %rdi
movq %rsp, %r8
movq 0x38(%rsp), %r9
leaq 0x28(%rsp), %rsi
leaq 0x18(%rsp), %rdx
leaq 0x8(%rsp), %rcx
callq 0x14bfe0
addq $0x48, %rsp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/core/timer.c
// Function: gt_timer_delete
void gt_timer_delete(GtTimer *t)
{
  if (!t) return;
  if (t->statedesc)
    gt_free(t->statedesc);
  gt_free(t);
}

// Assembly:
pushq %rax
movq %rdi, (%rsp)
cmpq $0x0, (%rsp)
jne 0x14c26e
jmp 0x14c2ad
movq (%rsp), %rax
cmpq $0x0, 0x1e8(%rax)
je 0x14c298
movq (%rsp), %rax
movq 0x1e8(%rax), %rdi
leaq 0x40d2f(%rip), %rsi     # 0x18cfbd
movl $0x14d, %edx            # imm = 0x14D
callq 0xdab0
movq (%rsp), %rdi
leaq 0x40d1a(%rip), %rsi     # 0x18cfbd
movl $0x14e, %edx            # imm = 0x14E
callq 0xdab0
popq %rax
retq
nop
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/core/trans_table.c
// Function: gt_trans_table_get_scheme_descriptions
GtStrArray* gt_trans_table_get_scheme_descriptions()
{
  GtUword i;
  GtTranslationScheme *scheme;
  GtStr *str;
  GtStrArray *sa = gt_str_array_new();
  str = gt_str_new();
  for (i = 0UL; i < (GtUword) GT_NUMOFTRANSSCHEMES; i++) {
    scheme = schemetable+i;
    gt_str_reset(str);
    gt_str_append_uint(str, scheme->identity);
    gt_str_append_cstr(str, ": ");
    gt_str_append_cstr(str, scheme->name);
    gt_str_array_add_cstr(sa, gt_str_get(str));
  }
  gt_str_delete(str);
  return sa;
}

// Assembly:
subq $0x28, %rsp
callq 0x1b020
movq %rax, 0x8(%rsp)
callq 0x18f00
movq %rax, 0x10(%rsp)
movq $0x0, 0x20(%rsp)
cmpq $0x13, 0x20(%rsp)
jae 0x14c366
movq 0x20(%rsp), %rcx
leaq 0x69bb7(%rip), %rax     # 0x1b5ea0
shlq $0x5, %rcx
addq %rcx, %rax
movq %rax, 0x18(%rsp)
movq 0x10(%rsp), %rdi
callq 0x19b70
movq 0x10(%rsp), %rdi
movq 0x18(%rsp), %rax
movl 0x8(%rax), %esi
callq 0x19860
movq 0x10(%rsp), %rdi
leaq 0x2e41f(%rip), %rsi     # 0x17a73c
callq 0x18fb0
movq 0x10(%rsp), %rdi
movq 0x18(%rsp), %rax
movq (%rax), %rsi
callq 0x18fb0
movq 0x8(%rsp), %rax
movq %rax, (%rsp)
movq 0x10(%rsp), %rdi
callq 0x19940
movq (%rsp), %rdi
movq %rax, %rsi
callq 0x1b180
movq 0x20(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x20(%rsp)
jmp 0x14c2d1
movq 0x10(%rsp), %rdi
callq 0x1afc0
movq 0x8(%rsp), %rax
addq $0x28, %rsp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/core/trans_table.c
// Function: gt_trans_table_new
GtTransTable* gt_trans_table_new(unsigned int scheme, GtError *err)
{
  GtTranslationScheme *schemep;
  GtTransTable *tt;
  if (!(schemep = getschemetable(scheme, err)))
    return NULL;
  tt = gt_calloc((size_t) 1, sizeof (GtTransTable));
  tt->scheme = schemep;
  return tt;
}

// Assembly:
subq $0x28, %rsp
movl %edi, 0x1c(%rsp)
movq %rsi, 0x10(%rsp)
movl 0x1c(%rsp), %edi
movq 0x10(%rsp), %rsi
callq 0x14c3f0
movq %rax, 0x8(%rsp)
cmpq $0x0, %rax
jne 0x14c3b1
movq $0x0, 0x20(%rsp)
jmp 0x14c3e5
movl $0x1, %edi
movl $0x8, %esi
leaq 0x40fe2(%rip), %rdx     # 0x18d3a4
movl $0x30b, %ecx            # imm = 0x30B
callq 0xd5b0
movq %rax, (%rsp)
movq 0x8(%rsp), %rcx
movq (%rsp), %rax
movq %rcx, (%rax)
movq (%rsp), %rax
movq %rax, 0x20(%rsp)
movq 0x20(%rsp), %rax
addq $0x28, %rsp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/core/trans_table.c
// Function: getschemetable
static GtTranslationScheme* getschemetable(unsigned int transnum, GtError *err)
{
  if (transnum >= GT_SIZEOFTRANSRANGE) {
    gt_error_set(err, "'%u' is not a valid translation table number!",
                 transnum);
    return NULL;
  }
  if (transnum2index[transnum] == GT_UNDEFTRANSNUM) {
    gt_error_set(err, "'%u' is not a valid translation table number!",
                 transnum);
    return NULL;
  }
  gt_assert(transnum != GT_UNDEFTRANSNUM);
  return schemetable + transnum2index[transnum];
}

// Assembly:
subq $0x18, %rsp
movl %edi, 0xc(%rsp)
movq %rsi, (%rsp)
cmpl $0x1a, 0xc(%rsp)
jb 0x14c427
movq (%rsp), %rdi
movl 0xc(%rsp), %edx
leaq 0x41afd(%rip), %rsi     # 0x18df0f
movb $0x0, %al
callq 0xc0d0
movq $0x0, 0x10(%rsp)
jmp 0x14c4c3
movl 0xc(%rsp), %eax
movl %eax, %ecx
leaq 0x69ccc(%rip), %rax     # 0x1b6100
cmpl $0x13, (%rax,%rcx,4)
jne 0x14c45b
movq (%rsp), %rdi
movl 0xc(%rsp), %edx
leaq 0x41ac6(%rip), %rsi     # 0x18df0f
movb $0x0, %al
callq 0xc0d0
movq $0x0, 0x10(%rsp)
jmp 0x14c4c3
jmp 0x14c45d
cmpl $0x13, 0xc(%rsp)
jne 0x14c49c
movq 0x67b6d(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0x11bf1(%rip), %rsi     # 0x15e066
leaq 0x41ac1(%rip), %rdx     # 0x18df3d
leaq 0x41ad7(%rip), %rcx     # 0x18df5a
leaq 0x40f1a(%rip), %r8      # 0x18d3a4
movl $0xd4, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x14c49e
movl 0xc(%rsp), %eax
movl %eax, %ecx
leaq 0x69c55(%rip), %rax     # 0x1b6100
movl (%rax,%rcx,4), %eax
movl %eax, %ecx
leaq 0x699e9(%rip), %rax     # 0x1b5ea0
shlq $0x5, %rcx
addq %rcx, %rax
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/core/trans_table.c
// Function: gt_trans_table_translate_codon
int gt_trans_table_translate_codon(const GtTransTable *tt,
                                   char c1, char c2, char c3,
                                   char *amino, GtError *err)
{
  gt_assert(tt && amino);
  gt_error_check(err);
  *amino = codon2amino(tt->scheme->aminos, true,
                       (unsigned char) c1,
                       (unsigned char) c2,
                       (unsigned char) c3,
                        NULL, err);
  if (*amino == GT_AMINOACIDFAIL) {
    return -1;
  }
  return 0;
}

// Assembly:
subq $0x38, %rsp
movb %cl, %al
movb %dl, %cl
movb %sil, %dl
movq %rdi, 0x28(%rsp)
movb %dl, 0x27(%rsp)
movb %cl, 0x26(%rsp)
movb %al, 0x25(%rsp)
movq %r8, 0x18(%rsp)
movq %r9, 0x10(%rsp)
cmpq $0x0, 0x28(%rsp)
je 0x14c586
cmpq $0x0, 0x18(%rsp)
jne 0x14c5be
movq 0x67a4b(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0x11acf(%rip), %rsi     # 0x15e066
leaq 0x40e38(%rip), %rdx     # 0x18d3d6
leaq 0x40e3d(%rip), %rcx     # 0x18d3e2
leaq 0x40df8(%rip), %r8      # 0x18d3a4
movl $0x31f, %r9d            # imm = 0x31F
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x14c5c0
jmp 0x14c5c2
cmpq $0x0, 0x10(%rsp)
je 0x14c612
movq 0x10(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0x14c5da
jmp 0x14c612
movq 0x679f7(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0x11a7b(%rip), %rsi     # 0x15e066
leaq 0x12056(%rip), %rdx     # 0x15e648
leaq 0x40de9(%rip), %rcx     # 0x18d3e2
leaq 0x40da4(%rip), %r8      # 0x18d3a4
movl $0x320, %r9d            # imm = 0x320
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x14c614
movq 0x28(%rsp), %rax
movq (%rax), %rax
movq 0x10(%rax), %rdi
movb 0x27(%rsp), %dl
movb 0x26(%rsp), %cl
movb 0x25(%rsp), %r8b
movq 0x10(%rsp), %rax
movl $0x1, %esi
xorl %r9d, %r9d
movzbl %dl, %edx
movzbl %cl, %ecx
movzbl %r8b, %r8d
movq %rax, (%rsp)
callq 0x14c680
movb %al, %cl
movq 0x18(%rsp), %rax
movb %cl, (%rax)
movq 0x18(%rsp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
jne 0x14c66d
movl $0xffffffff, 0x34(%rsp) # imm = 0xFFFFFFFF
jmp 0x14c675
movl $0x0, 0x34(%rsp)
movl 0x34(%rsp), %eax
addq $0x38, %rsp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/core/trans_table.c
// Function: gt_trans_table_is_start_codon
bool gt_trans_table_is_start_codon(const GtTransTable *tt,
                                   char c1, char c2, char c3)
{
  unsigned int code = 0;
  gt_assert(tt);
  (void) codon2amino(tt->scheme->aminos, true,
                     (unsigned char) c1,
                     (unsigned char) c2,
                     (unsigned char) c3,
                     &code, NULL);
  if (tt->scheme->startcodon[code] == GT_START_AMINO) {
    return true;
  }
  return false;
}

// Assembly:
subq $0x28, %rsp
movb %cl, %al
movb %dl, %cl
movb %sil, %dl
movq %rdi, 0x18(%rsp)
movb %dl, 0x17(%rsp)
movb %cl, 0x16(%rsp)
movb %al, 0x15(%rsp)
movl $0x0, 0x10(%rsp)
cmpq $0x0, 0x18(%rsp)
jne 0x14ca04
movq 0x67605(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0x11689(%rip), %rsi     # 0x15e066
leaq 0x2cbe7(%rip), %rdx     # 0x1795cb
leaq 0x40a16(%rip), %rcx     # 0x18d401
leaq 0x409b2(%rip), %r8      # 0x18d3a4
movl $0x330, %r9d            # imm = 0x330
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x14ca06
movq 0x18(%rsp), %rax
movq (%rax), %rax
movq 0x10(%rax), %rdi
movb 0x17(%rsp), %cl
movb 0x16(%rsp), %al
movl $0x1, %esi
leaq 0x10(%rsp), %r9
xorl %edx, %edx
movzbl %cl, %edx
movzbl %al, %ecx
movzbl 0x15(%rsp), %r8d
movq $0x0, (%rsp)
callq 0x14c680
movq 0x18(%rsp), %rax
movq (%rax), %rax
movq 0x18(%rax), %rax
movl 0x10(%rsp), %ecx
movsbl (%rax,%rcx), %eax
cmpl $0x4d, %eax
jne 0x14ca5f
movb $0x1, 0x27(%rsp)
jmp 0x14ca64
movb $0x0, 0x27(%rsp)
movb 0x27(%rsp), %al
andb $0x1, %al
addq $0x28, %rsp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/core/trans_table.c
// Function: gt_trans_table_is_stop_codon
bool gt_trans_table_is_stop_codon(const GtTransTable *tt,
                                  char c1, char c2, char c3)
{
  char trans;
  gt_assert(tt);
  trans = codon2amino(tt->scheme->aminos, true,
                      (unsigned char) c1,
                      (unsigned char) c2,
                      (unsigned char) c3,
                      NULL, NULL);
  if (trans == GT_STOP_AMINO) {
    return true;
  }
  return false;
}

// Assembly:
subq $0x28, %rsp
movb %cl, %al
movb %dl, %cl
movb %sil, %dl
movq %rdi, 0x18(%rsp)
movb %dl, 0x17(%rsp)
movb %cl, 0x16(%rsp)
movb %al, 0x15(%rsp)
cmpq $0x0, 0x18(%rsp)
jne 0x14cacc
movq 0x6753d(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0x115c1(%rip), %rsi     # 0x15e066
leaq 0x2cb1f(%rip), %rdx     # 0x1795cb
leaq 0x4096c(%rip), %rcx     # 0x18d41f
leaq 0x408ea(%rip), %r8      # 0x18d3a4
movl $0x340, %r9d            # imm = 0x340
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x14cace
movq 0x18(%rsp), %rax
movq (%rax), %rax
movq 0x10(%rax), %rdi
movb 0x17(%rsp), %cl
movb 0x16(%rsp), %al
movl $0x1, %esi
xorl %edx, %edx
movl %edx, %r9d
movzbl %cl, %edx
movzbl %al, %ecx
movzbl 0x15(%rsp), %r8d
movq $0x0, (%rsp)
callq 0x14c680
movb %al, 0x14(%rsp)
movsbl 0x14(%rsp), %eax
cmpl $0x2a, %eax
jne 0x14cb1a
movb $0x1, 0x27(%rsp)
jmp 0x14cb1f
movb $0x0, 0x27(%rsp)
movb 0x27(%rsp), %al
andb $0x1, %al
addq $0x28, %rsp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/cds_stream.c
// Function: gt_cds_stream_new
GtNodeStream* gt_cds_stream_new(GtNodeStream *in_stream, GtRegionMapping *rm,
                                unsigned int minorflen, const char *source,
                                bool start_codon, bool final_stop_codon,
                                bool generic_start_codons)
{
  GtNodeVisitor *nv;
  GtStr *source_str;
  source_str = gt_str_new_cstr(source);
  nv = gt_cds_visitor_new(rm, minorflen, source_str, start_codon,
                          final_stop_codon, generic_start_codons);
  gt_str_delete(source_str);
  return gt_visitor_stream_new(in_stream, nv);
}

// Assembly:
subq $0x58, %rsp
movl %r9d, 0xc(%rsp)
movl %r8d, %eax
movq %rcx, %r8
movl 0xc(%rsp), %ecx
movq %r8, 0x10(%rsp)
movl %edx, 0x1c(%rsp)
movq %rsi, %r8
movq 0x10(%rsp), %rsi
movq %rdi, %r9
movl 0x1c(%rsp), %edi
movb %al, %dl
movb 0x60(%rsp), %al
movq %r9, 0x50(%rsp)
movq %r8, 0x48(%rsp)
movl %edi, 0x44(%rsp)
movq %rsi, 0x38(%rsp)
andb $0x1, %dl
movb %dl, 0x37(%rsp)
andb $0x1, %cl
movb %cl, 0x36(%rsp)
andb $0x1, %al
movb %al, 0x35(%rsp)
movq 0x38(%rsp), %rdi
callq 0x18f70
movq %rax, 0x20(%rsp)
movq 0x48(%rsp), %rdi
movl 0x44(%rsp), %esi
movq 0x20(%rsp), %rdx
movb 0x37(%rsp), %cl
movb 0x36(%rsp), %r8b
movb 0x35(%rsp), %al
andb $0x1, %cl
andb $0x1, %r8b
andb $0x1, %al
movzbl %cl, %ecx
movzbl %r8b, %r8d
movzbl %al, %r9d
callq 0x14d440
movq %rax, 0x28(%rsp)
movq 0x20(%rsp), %rdi
callq 0x1afc0
movq 0x50(%rsp), %rdi
movq 0x28(%rsp), %rsi
callq 0x39920
addq $0x58, %rsp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/cds_visitor.c
// Function: gt_cds_visitor_class
const GtNodeVisitorClass* gt_cds_visitor_class()
{
  static const GtNodeVisitorClass *nvc = NULL;
  gt_class_alloc_lock_enter();
  if (!nvc) {
    nvc = gt_node_visitor_class_new(sizeof (GtCDSVisitor),
                                    cds_visitor_free,
                                    NULL,
                                    cds_visitor_feature_node,
                                    NULL,
                                    NULL,
                                    NULL);
  }
  gt_class_alloc_lock_leave();
  return nvc;
}

// Assembly:
pushq %rax
callq 0x7b730
cmpq $0x0, 0x693ba(%rip)     # 0x1b6678
jne 0x14d2f2
movl $0x40, %edi
leaq 0x34(%rip), %rsi        # 0x14d300
xorl %eax, %eax
movl %eax, %r9d
leaq 0xc8(%rip), %rcx        # 0x14d3a0
movq %r9, %rdx
movq %r9, %r8
movq $0x0, (%rsp)
callq 0x34b70
movq %rax, 0x69386(%rip)     # 0x1b6678
callq 0x7b790
movq 0x6937a(%rip), %rax     # 0x1b6678
popq %rcx
retq
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/cds_visitor.c
// Function: cds_visitor_free
static void cds_visitor_free(GtNodeVisitor *nv)
{
  GtCDSVisitor *cds_visitor = gt_cds_visitor_cast(nv);
  gt_assert(cds_visitor);
  gt_str_delete(cds_visitor->source);
  gt_splicedseq_delete(cds_visitor->splicedseq);
  gt_region_mapping_delete(cds_visitor->region_mapping);
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
callq 0x14d2b0
movq %rax, %rdi
movq 0x10(%rsp), %rsi
callq 0x34d50
movq %rax, 0x8(%rsp)
cmpq $0x0, 0x8(%rsp)
jne 0x14d360
movq 0x66ca9(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0x10d2d(%rip), %rsi     # 0x15e066
leaq 0x40ca4(%rip), %rdx     # 0x18dfe4
leaq 0x40ca9(%rip), %rcx     # 0x18dff0
leaq 0x40c7b(%rip), %r8      # 0x18dfc9
movl $0x32, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x14d362
movq 0x8(%rsp), %rax
movq 0x18(%rax), %rdi
callq 0x1afc0
movq 0x8(%rsp), %rax
movq 0x20(%rax), %rdi
callq 0x1526a0
movq 0x8(%rsp), %rax
movq 0x28(%rax), %rdi
callq 0xe87f0
addq $0x18, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/cds_visitor.c
// Function: cds_visitor_feature_node
static int cds_visitor_feature_node(GtNodeVisitor *nv, GtFeatureNode *fn,
                                    GtError *err)
{
  GtCDSVisitor *v = gt_cds_visitor_cast(nv);
  gt_error_check(err);
  return gt_feature_node_traverse_children(fn, v, add_cds_if_necessary, false,
                                           err);
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq %rsi, 0x18(%rsp)
movq %rdx, 0x10(%rsp)
callq 0x14d2b0
movq %rax, %rdi
movq 0x20(%rsp), %rsi
callq 0x34d50
movq %rax, 0x8(%rsp)
cmpq $0x0, 0x10(%rsp)
je 0x14d41a
movq 0x10(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0x14d3e2
jmp 0x14d41a
movq 0x66bef(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0x10c73(%rip), %rsi     # 0x15e066
leaq 0x1124e(%rip), %rdx     # 0x15e648
leaq 0x40c00(%rip), %rcx     # 0x18e001
leaq 0x40bc1(%rip), %r8      # 0x18dfc9
movl $0x12d, %r9d            # imm = 0x12D
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x14d41c
movq 0x18(%rsp), %rdi
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %r8
leaq 0x19e(%rip), %rdx       # 0x14d5d0
xorl %ecx, %ecx
callq 0x22090
addq $0x28, %rsp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/cds_visitor.c
// Function: gt_cds_visitor_new
GtNodeVisitor* gt_cds_visitor_new(GtRegionMapping *region_mapping,
                                  unsigned int minorflen, GtStr *source,
                                  bool start_codon, bool final_stop_codon,
                                  bool generic_start_codons)
{
  GtNodeVisitor *nv;
  GtCDSVisitor *cds_visitor;
  nv = gt_node_visitor_create(gt_cds_visitor_class());
  cds_visitor = gt_cds_visitor_cast(nv);
  cds_visitor->minorflen = minorflen;
  cds_visitor->source = gt_str_ref(source);
  cds_visitor->splicedseq = gt_splicedseq_new();
  cds_visitor->region_mapping = region_mapping;
  cds_visitor->start_codon = start_codon;
  cds_visitor->final_stop_codon = final_stop_codon;
  cds_visitor->generic_start_codons = generic_start_codons;
  return nv;
}

// Assembly:
subq $0x48, %rsp
movl %r8d, (%rsp)
movl %ecx, %eax
movl (%rsp), %ecx
movl %eax, 0x4(%rsp)
movq %rdx, %rax
movl 0x4(%rsp), %edx
movq %rax, 0x8(%rsp)
movl %esi, %eax
movq 0x8(%rsp), %rsi
movl %eax, 0x14(%rsp)
movq %rdi, %r8
movl 0x14(%rsp), %edi
movb %r9b, %al
movq %r8, 0x40(%rsp)
movl %edi, 0x3c(%rsp)
movq %rsi, 0x30(%rsp)
andb $0x1, %dl
movb %dl, 0x2f(%rsp)
andb $0x1, %cl
movb %cl, 0x2e(%rsp)
andb $0x1, %al
movb %al, 0x2d(%rsp)
callq 0x14d2b0
movq %rax, %rdi
callq 0x34cc0
movq %rax, 0x20(%rsp)
callq 0x14d2b0
movq %rax, %rdi
movq 0x20(%rsp), %rsi
callq 0x34d50
movq %rax, 0x18(%rsp)
movl 0x3c(%rsp), %ecx
movq 0x18(%rsp), %rax
movl %ecx, 0x10(%rax)
movq 0x30(%rsp), %rdi
callq 0x19dc0
movq %rax, %rcx
movq 0x18(%rsp), %rax
movq %rcx, 0x18(%rax)
callq 0x151ca0
movq %rax, %rcx
movq 0x18(%rsp), %rax
movq %rcx, 0x20(%rax)
movq 0x40(%rsp), %rcx
movq 0x18(%rsp), %rax
movq %rcx, 0x28(%rax)
movb 0x2f(%rsp), %cl
movq 0x18(%rsp), %rax
andb $0x1, %cl
movb %cl, 0x38(%rax)
movb 0x2e(%rsp), %cl
movq 0x18(%rsp), %rax
andb $0x1, %cl
movb %cl, 0x39(%rax)
movb 0x2d(%rsp), %cl
movq 0x18(%rsp), %rax
andb $0x1, %cl
movb %cl, 0x3a(%rax)
movq 0x20(%rsp), %rax
addq $0x48, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/cds_visitor.c
// Function: add_cds_if_necessary
static int add_cds_if_necessary(GtFeatureNode *fn, void *data, GtError *err)
{
  GtCDSVisitor *v = (GtCDSVisitor*) data;
  int had_err;

  gt_error_check(err);
  gt_assert(fn);

  had_err = extract_spliced_seq(fn, v, err);
  if (!had_err && gt_splicedseq_length(v->splicedseq) > 2) {
    GtArray *orfs;

    if (gt_feature_node_get_strand(fn) == GT_STRAND_REVERSE) {
      if (gt_splicedseq_reverse(v->splicedseq, err))
        return -1;
    }

    orfs = determine_ORFs_for_all_three_frames(v->splicedseq, v->start_codon,
                                               v->final_stop_codon,
                                               v->generic_start_codons);
    if (!orfs)
      had_err = -1;
    if (!had_err)
      create_CDS_features_for_longest_ORF(orfs, v, fn);
    gt_array_delete(orfs);
  }
  return had_err;
}

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x28(%rsp)
movq %rsi, 0x20(%rsp)
movq %rdx, 0x18(%rsp)
movq 0x20(%rsp), %rax
movq %rax, 0x10(%rsp)
cmpq $0x0, 0x18(%rsp)
je 0x14d63d
movq 0x18(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0x14d605
jmp 0x14d63d
movq 0x669cc(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0x10a50(%rip), %rsi     # 0x15e066
leaq 0x1102b(%rip), %rdx     # 0x15e648
leaq 0x409f6(%rip), %rcx     # 0x18e01a
leaq 0x4099e(%rip), %r8      # 0x18dfc9
movl $0x111, %r9d            # imm = 0x111
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x14d63f
jmp 0x14d641
cmpq $0x0, 0x28(%rsp)
jne 0x14d681
movq 0x66988(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0x10a0c(%rip), %rsi     # 0x15e066
leaq 0x24f20(%rip), %rdx     # 0x172581
leaq 0x409b2(%rip), %rcx     # 0x18e01a
leaq 0x4095a(%rip), %r8      # 0x18dfc9
movl $0x112, %r9d            # imm = 0x112
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x14d683
movq 0x28(%rsp), %rdi
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
callq 0x14d770
movl %eax, 0xc(%rsp)
cmpl $0x0, 0xc(%rsp)
jne 0x14d75e
movq 0x10(%rsp), %rax
movq 0x20(%rax), %rdi
callq 0x152130
cmpq $0x2, %rax
jbe 0x14d75e
movq 0x28(%rsp), %rdi
callq 0x20a10
cmpl $0x1, %eax
jne 0x14d6f1
movq 0x10(%rsp), %rax
movq 0x20(%rax), %rdi
movq 0x18(%rsp), %rsi
callq 0x152190
cmpl $0x0, %eax
je 0x14d6ef
movl $0xffffffff, 0x34(%rsp) # imm = 0xFFFFFFFF
jmp 0x14d766
jmp 0x14d6f1
movq 0x10(%rsp), %rax
movq 0x20(%rax), %rdi
movq 0x10(%rsp), %rax
movb 0x38(%rax), %dl
movq 0x10(%rsp), %rax
movb 0x39(%rax), %cl
movq 0x10(%rsp), %rax
movb 0x3a(%rax), %al
andb $0x1, %dl
andb $0x1, %cl
andb $0x1, %al
movzbl %dl, %esi
movzbl %cl, %edx
movzbl %al, %ecx
callq 0x14d850
movq %rax, (%rsp)
cmpq $0x0, (%rsp)
jne 0x14d73b
movl $0xffffffff, 0xc(%rsp)  # imm = 0xFFFFFFFF
cmpl $0x0, 0xc(%rsp)
jne 0x14d755
movq (%rsp), %rdi
movq 0x10(%rsp), %rsi
movq 0x28(%rsp), %rdx
callq 0x14de00
movq (%rsp), %rdi
callq 0x770a0
movl 0xc(%rsp), %eax
movl %eax, 0x34(%rsp)
movl 0x34(%rsp), %eax
addq $0x38, %rsp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/cds_visitor.c
// Function: extract_spliced_seq
static int extract_spliced_seq(GtFeatureNode *fn, GtCDSVisitor *visitor,
                               GtError *err)
{
  gt_error_check(err);
  gt_assert(fn && visitor);
  /* traverse the direct children */
  gt_splicedseq_reset(visitor->splicedseq);
  return gt_feature_node_traverse_direct_children(fn, visitor,
                                                  extract_cds_if_necessary,
                                                  err);
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
movq %rsi, 0x8(%rsp)
movq %rdx, (%rsp)
cmpq $0x0, (%rsp)
je 0x14d7d0
movq (%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0x14d798
jmp 0x14d7d0
movq 0x66839(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0x108bd(%rip), %rsi     # 0x15e066
leaq 0x10e98(%rip), %rdx     # 0x15e648
leaq 0x40878(%rip), %rcx     # 0x18e02f
leaq 0x4080b(%rip), %r8      # 0x18dfc9
movl $0x57, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x14d7d2
jmp 0x14d7d4
cmpq $0x0, 0x10(%rsp)
je 0x14d7e4
cmpq $0x0, 0x8(%rsp)
jne 0x14d81c
movq 0x667ed(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0x10871(%rip), %rsi     # 0x15e066
leaq 0x40847(%rip), %rdx     # 0x18e043
leaq 0x4082c(%rip), %rcx     # 0x18e02f
leaq 0x407bf(%rip), %r8      # 0x18dfc9
movl $0x58, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x14d81e
movq 0x8(%rsp), %rax
movq 0x20(%rax), %rdi
callq 0x1522a0
movq 0x10(%rsp), %rdi
movq 0x8(%rsp), %rsi
movq (%rsp), %rcx
leaq 0x63f(%rip), %rdx       # 0x14de80
callq 0x23790
addq $0x18, %rsp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/cds_visitor.c
// Function: create_CDS_features_for_longest_ORF
static void create_CDS_features_for_longest_ORF(GtArray *orfs, GtCDSVisitor *v,
                                                GtFeatureNode *fn)
{
  if (gt_array_size(orfs)) {
    /* sort ORFs according to length */
    gt_ranges_sort_by_length_stable(orfs);

    /* create CDS features from the longest ORF */
    if (gt_range_length(gt_array_get_first(orfs)) >=
        v->minorflen * GT_CODON_LENGTH) {
      create_CDS_features_for_ORF(*(GtRange*) gt_array_get_first(orfs), v, fn);
    }
  }
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
movq %rsi, 0x8(%rsp)
movq %rdx, (%rsp)
movq 0x10(%rsp), %rdi
callq 0x76490
cmpq $0x0, %rax
je 0x14de6f
movq 0x10(%rsp), %rdi
callq 0x95580
movq 0x10(%rsp), %rdi
callq 0x75d00
movq %rax, %rdi
callq 0x93bd0
movq 0x8(%rsp), %rcx
imull $0x3, 0x10(%rcx), %ecx
movl %ecx, %ecx
cmpq %rcx, %rax
jb 0x14de6d
movq 0x10(%rsp), %rdi
callq 0x75d00
movq 0x8(%rsp), %rdx
movq (%rsp), %rcx
movq (%rax), %rdi
movq 0x8(%rax), %rsi
callq 0x14e150
jmp 0x14de6f
addq $0x18, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/cds_visitor.c
// Function: set_phases
static void set_phases(GtArray *cds_features)
{
  GtPhase phase = GT_PHASE_ZERO;
  GtFeatureNode *cds_feature;
  GtUword i, length;
  gt_assert(cds_features && gt_array_size(cds_features));
  for (i = 0; i < gt_array_size(cds_features); i++) {
    cds_feature = *(GtFeatureNode**) gt_array_get(cds_features, i);
    gt_feature_node_set_phase(cds_feature, phase);
    length = gt_genome_node_get_length((GtGenomeNode*) cds_feature);
    phase = (3 - (length - phase) % 3) % 3;
    gt_assert(phase <= GT_PHASE_TWO);
  }
}

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x30(%rsp)
movl $0x0, 0x2c(%rsp)
cmpq $0x0, 0x30(%rsp)
je 0x14e749
movq 0x30(%rsp), %rdi
callq 0x76490
cmpq $0x0, %rax
jne 0x14e781
movq 0x65888(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0xf90c(%rip), %rsi      # 0x15e066
leaq 0x3f9a6(%rip), %rdx     # 0x18e107
leaq 0x3f9cb(%rip), %rcx     # 0x18e133
leaq 0x3f85a(%rip), %r8      # 0x18dfc9
movl $0xb1, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x14e783
movq $0x0, 0x18(%rsp)
movq 0x18(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x30(%rsp), %rdi
callq 0x76490
movq %rax, %rcx
movq 0x8(%rsp), %rax
cmpq %rcx, %rax
jae 0x14e869
movq 0x30(%rsp), %rdi
movq 0x18(%rsp), %rsi
callq 0x75c80
movq (%rax), %rax
movq %rax, 0x20(%rsp)
movq 0x20(%rsp), %rdi
movl 0x2c(%rsp), %esi
callq 0x1fff0
movq 0x20(%rsp), %rdi
callq 0x25ab0
movq %rax, 0x10(%rsp)
movq 0x10(%rsp), %rax
movl 0x2c(%rsp), %ecx
subq %rcx, %rax
movl $0x3, %ecx
xorl %edx, %edx
divq %rcx
movl $0x3, %eax
subq %rdx, %rax
movl $0x3, %ecx
xorl %edx, %edx
divq %rcx
movl %edx, %eax
movl %eax, 0x2c(%rsp)
cmpl $0x2, 0x2c(%rsp)
jbe 0x14e852
movq 0x657b7(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0xf83b(%rip), %rsi      # 0x15e066
leaq 0x3f90c(%rip), %rdx     # 0x18e13e
leaq 0x3f8fa(%rip), %rcx     # 0x18e133
leaq 0x3f789(%rip), %r8      # 0x18dfc9
movl $0xb7, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x14e854
jmp 0x14e856
movq 0x18(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x18(%rsp)
jmp 0x14e78c
addq $0x38, %rsp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/csa_stream.c
// Function: gt_csa_stream_class
const GtNodeStreamClass* gt_csa_stream_class(void)
{
  static const GtNodeStreamClass *nsc= NULL;
  gt_class_alloc_lock_enter();
  if (!nsc) {
    nsc = gt_node_stream_class_new(sizeof (GtCSAStream),
                                   csa_stream_free,
                                   csa_stream_next);
  }
  gt_class_alloc_lock_leave();
  return nsc;
}

// Assembly:
pushq %rax
callq 0x7b730
cmpq $0x0, 0x67e02(%rip)     # 0x1b6680
jne 0x14e89f
movl $0x20, %edi
leaq 0x24(%rip), %rsi        # 0x14e8b0
leaq 0x6d(%rip), %rdx        # 0x14e900
callq 0x344e0
movq %rax, 0x67de1(%rip)     # 0x1b6680
callq 0x7b790
movq 0x67dd5(%rip), %rax     # 0x1b6680
popq %rcx
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/csa_stream.c
// Function: gt_csa_stream_new
GtNodeStream* gt_csa_stream_new(GtNodeStream *in_stream,
                                GtUword join_length)
{
  GtNodeStream *ns = gt_node_stream_create(gt_csa_stream_class(),
                                           gt_node_stream_is_sorted(in_stream));
  GtCSAStream *cs = csa_stream_cast(ns);
  cs->in_stream = gt_node_stream_ref(in_stream);
  cs->csa_visitor = gt_csa_visitor_new(join_length);
  return ns;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq %rsi, 0x18(%rsp)
callq 0x14e870
movq %rax, (%rsp)
movq 0x20(%rsp), %rdi
callq 0x34a90
movq (%rsp), %rdi
movzbl %al, %esi
andl $0x1, %esi
callq 0x34580
movq %rax, 0x10(%rsp)
callq 0x14e870
movq %rax, %rdi
movq 0x10(%rsp), %rsi
callq 0x34af0
movq %rax, 0x8(%rsp)
movq 0x20(%rsp), %rdi
callq 0x34650
movq %rax, %rcx
movq 0x8(%rsp), %rax
movq %rcx, 0x10(%rax)
movq 0x18(%rsp), %rdi
callq 0x14f190
movq %rax, %rcx
movq 0x8(%rsp), %rax
movq %rcx, 0x18(%rax)
movq 0x10(%rsp), %rax
addq $0x28, %rsp
retq
nopw %cs:(%rax,%rax)
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/csa_visitor.c
// Function: gt_csa_visitor_class
const GtNodeVisitorClass* gt_csa_visitor_class()
{
  static GtNodeVisitorClass *nvc = NULL;
  gt_class_alloc_lock_enter();
  if (!nvc) {
    nvc = gt_node_visitor_class_new(sizeof (CSAVisitor),
                                    csa_visitor_free,
                                    csa_visitor_comment_node,
                                    csa_visitor_feature_node,
                                    csa_visitor_region_node,
                                    csa_visitor_sequence_node,
                                    csa_visitor_eof_node);
    gt_node_visitor_class_set_meta_node_func(nvc, csa_visitor_meta_node);
  }
  gt_class_alloc_lock_leave();
  return nvc;
}

// Assembly:
pushq %rax
callq 0x7b730
cmpq $0x0, 0x67a7a(%rip)     # 0x1b6688
jne 0x14ec62
movl $0x68, %edi
leaq 0x54(%rip), %rsi        # 0x14ec70
leaq 0x9d(%rip), %rdx        # 0x14ecc0
leaq 0xc6(%rip), %rcx        # 0x14ecf0
leaq 0x47f(%rip), %r8        # 0x14f0b0
leaq 0x4a8(%rip), %r9        # 0x14f0e0
leaq 0x4e1(%rip), %rax       # 0x14f120
movq %rax, (%rsp)
callq 0x34b70
movq %rax, 0x67a39(%rip)     # 0x1b6688
movq 0x67a32(%rip), %rdi     # 0x1b6688
leaq 0x503(%rip), %rsi       # 0x14f160
callq 0x34c50
callq 0x7b790
movq 0x67a1a(%rip), %rax     # 0x1b6688
popq %rcx
retq
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/csa_visitor.c
// Function: csa_visitor_free
static void csa_visitor_free(GtNodeVisitor *nv)
{
  CSAVisitor *csa_visitor = csa_visitor_cast(nv);
  gt_queue_delete(csa_visitor->gt_genome_node_buffer);
  gt_array_delete(csa_visitor->cluster);
  gt_str_delete(csa_visitor->gt_csa_source_str);
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
callq 0x14ec00
movq %rax, %rdi
movq 0x10(%rsp), %rsi
callq 0x34d50
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rax
movq 0x10(%rax), %rdi
callq 0x91770
movq 0x8(%rsp), %rax
movq 0x20(%rax), %rdi
callq 0x770a0
movq 0x8(%rsp), %rax
movq 0x60(%rax), %rdi
callq 0x1afc0
addq $0x18, %rsp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/csa_visitor.c
// Function: gt_csa_visitor_new
GtNodeVisitor* gt_csa_visitor_new(GtUword join_length)
{
  GtNodeVisitor *nv = gt_node_visitor_create(gt_csa_visitor_class());
  CSAVisitor *csa_visitor = csa_visitor_cast(nv);
  csa_visitor->gt_genome_node_buffer = gt_queue_new();
  csa_visitor->join_length = join_length;
  csa_visitor->cluster = gt_array_new(sizeof (GtFeatureNode*));
  csa_visitor->buffered_feature = NULL;
  csa_visitor->gt_csa_source_str = gt_str_new_cstr(GT_CSA_SOURCE_TAG);
  return nv;
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
callq 0x14ec00
movq %rax, %rdi
callq 0x34cc0
movq %rax, 0x8(%rsp)
callq 0x14ec00
movq %rax, %rdi
movq 0x8(%rsp), %rsi
callq 0x34d50
movq %rax, (%rsp)
callq 0x909b0
movq %rax, %rcx
movq (%rsp), %rax
movq %rcx, 0x10(%rax)
movq 0x10(%rsp), %rcx
movq (%rsp), %rax
movq %rcx, 0x18(%rax)
movl $0x8, %edi
callq 0x75ab0
movq %rax, %rcx
movq (%rsp), %rax
movq %rcx, 0x20(%rax)
movq (%rsp), %rax
movq $0x0, 0x28(%rax)
leaq 0x3ef78(%rip), %rdi     # 0x18e17e
callq 0x18f70
movq %rax, %rcx
movq (%rsp), %rax
movq %rcx, 0x60(%rax)
movq 0x8(%rsp), %rax
addq $0x18, %rsp
retq
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/csa_visitor.c
// Function: get_exons
static void get_exons(GtArray *exon_ranges, const void *sa)
{
  GtFeatureNode *fn = *(GtFeatureNode**) sa;
  GT_UNUSED int had_err;
  gt_assert(exon_ranges && fn && gt_feature_node_has_type(fn, gt_ft_gene));
  had_err = gt_feature_node_traverse_children(fn, exon_ranges,
                                              csa_visitor_save_exon, false,
                                              NULL);
  gt_assert(!had_err); /* csa_visitor_save_exon() is sane */
  /* we got at least one exon */
  gt_assert(gt_array_size(exon_ranges));
  gt_assert(gt_ranges_are_sorted_and_do_not_overlap(exon_ranges));
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq %rsi, 0x18(%rsp)
movq 0x18(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x10(%rsp)
cmpq $0x0, 0x20(%rsp)
je 0x14f660
cmpq $0x0, 0x10(%rsp)
je 0x14f660
movq 0x10(%rsp), %rdi
leaq 0x3feb9(%rip), %rsi     # 0x18f510
callq 0x21700
testb $0x1, %al
jne 0x14f698
movq 0x64971(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0xe9f5(%rip), %rsi      # 0x15e066
leaq 0x3ec45(%rip), %rdx     # 0x18e2bd
leaq 0x3fdea(%rip), %rcx     # 0x18f469
leaq 0x3eb65(%rip), %r8      # 0x18e1eb
movl $0xe0, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x14f69a
movq 0x10(%rsp), %rdi
movq 0x20(%rsp), %rsi
leaq 0x265(%rip), %rdx       # 0x14f910
xorl %ecx, %ecx
xorl %eax, %eax
movl %eax, %r8d
callq 0x22090
movl %eax, 0xc(%rsp)
cmpl $0x0, 0xc(%rsp)
je 0x14f6fa
movq 0x6490f(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0xe993(%rip), %rsi      # 0x15e066
leaq 0x178e4(%rip), %rdx     # 0x166fbe
leaq 0x3fd88(%rip), %rcx     # 0x18f469
leaq 0x3eb03(%rip), %r8      # 0x18e1eb
movl $0xe4, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x14f6fc
jmp 0x14f6fe
movq 0x20(%rsp), %rdi
callq 0x76490
cmpq $0x0, %rax
jne 0x14f746
movq 0x648c3(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0xe947(%rip), %rsi      # 0x15e066
leaq 0x3ebd5(%rip), %rdx     # 0x18e2fb
leaq 0x3fd3c(%rip), %rcx     # 0x18f469
leaq 0x3eab7(%rip), %r8      # 0x18e1eb
movl $0xe6, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x14f748
jmp 0x14f74a
movq 0x20(%rsp), %rdi
callq 0x957e0
testb $0x1, %al
jne 0x14f790
movq 0x64879(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0xe8fd(%rip), %rsi      # 0x15e066
leaq 0x3eba6(%rip), %rdx     # 0x18e316
leaq 0x3fcf2(%rip), %rcx     # 0x18f469
leaq 0x3ea6d(%rip), %r8      # 0x18e1eb
movl $0xe7, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x14f792
addq $0x28, %rsp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/csa_visitor.c
// Function: process_csa_genes
static void process_csa_genes(GtQueue *gt_genome_node_buffer,
                              GtArray *csa_genes,
                              GtStr *gt_csa_source_str)
{
  GtUword i;
  gt_assert(csa_genes);
  for (i = 0; i < gt_array_size(csa_genes); i++) {
    GtFeatureNode *gene_feature = create_gene_feature(*(GtCSAGene**)
                                                     gt_array_get(csa_genes, i),
                                                      gt_csa_source_str);
    gt_queue_add(gt_genome_node_buffer, gene_feature);
  }
}

// Assembly:
subq $0x38, %rsp
movq %rdi, 0x30(%rsp)
movq %rsi, 0x28(%rsp)
movq %rdx, 0x20(%rsp)
cmpq $0x0, 0x28(%rsp)
jne 0x14f7f3
movq 0x64816(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0xe89a(%rip), %rsi      # 0x15e066
leaq 0x3eba8(%rip), %rdx     # 0x18e37b
leaq 0x3eb99(%rip), %rcx     # 0x18e373
leaq 0x3ea0a(%rip), %r8      # 0x18e1eb
movl $0x1cf, %r9d            # imm = 0x1CF
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x14f7f5
movq $0x0, 0x18(%rsp)
movq 0x18(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x28(%rsp), %rdi
callq 0x76490
movq %rax, %rcx
movq 0x8(%rsp), %rax
cmpq %rcx, %rax
jae 0x14f85f
movq 0x28(%rsp), %rdi
movq 0x18(%rsp), %rsi
callq 0x75c80
movq (%rax), %rdi
movq 0x20(%rsp), %rsi
callq 0x14fa30
movq %rax, 0x10(%rsp)
movq 0x30(%rsp), %rdi
movq 0x10(%rsp), %rsi
callq 0x909d0
movq 0x18(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x18(%rsp)
jmp 0x14f7fe
addq $0x38, %rsp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/csa_visitor.c
// Function: csa_visitor_default_func
static int csa_visitor_default_func(GtNodeVisitor *nv, GtGenomeNode *gn,
                                    GT_UNUSED GtError *err)
{
  CSAVisitor *csa_visitor;
  gt_error_check(err);
  csa_visitor = csa_visitor_cast(nv);
  gt_queue_add(csa_visitor->gt_genome_node_buffer, gn);
  return 0;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x20(%rsp)
movq %rsi, 0x18(%rsp)
movq %rdx, 0x10(%rsp)
cmpq $0x0, 0x10(%rsp)
je 0x14f8d3
movq 0x10(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0x14f89b
jmp 0x14f8d3
movq 0x64736(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0xe7ba(%rip), %rsi      # 0x15e066
leaq 0xed95(%rip), %rdx      # 0x15e648
leaq 0x3e95a(%rip), %rcx     # 0x18e214
leaq 0x3e92a(%rip), %r8      # 0x18e1eb
movl $0x6f, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x14f8d5
callq 0x14ec00
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)