// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/tools/gt_seqtranslate.c
// Function: gt_seqtranslate_runner
static int gt_seqtranslate_runner(int argc, const char **argv, int parsed_args,
                              void *tool_arguments, GT_UNUSED GtError *err)
{
  GtTranslateArguments *arguments = tool_arguments;
  GtSeqIterator *si = NULL;
  GtSequenceBuffer *sb = NULL;
  GtStrArray *infiles;
  int had_err = 0,
      rval,
      i;
  GtStr *translations[3];
  translations[0] = gt_str_new();
  translations[1] = gt_str_new();
  translations[2] = gt_str_new();

  gt_error_check(err);
  gt_assert(arguments);

  infiles = gt_str_array_new();
  for (i = parsed_args; i < argc; i++) {
    gt_str_array_add_cstr(infiles, argv[i]);
  }
  sb = gt_sequence_buffer_new_guess_type(infiles, err);
  if (!sb)
    had_err = -1;
  if (!had_err) {
    si = gt_seq_iterator_sequence_buffer_new_with_buffer(sb);
    if (!si)
      had_err = -1;
  }
  if (!had_err) {
    char *desc;
    const GtUchar *sequence;
    GtUword len;
    while (!had_err && (rval = gt_seq_iterator_next(si,
                                                   &sequence,
                                                   &len, &desc, err))) {
      if (rval < 0) {
        had_err = -1;
        break;
      }
      if (len < GT_CODON_LENGTH) {
        gt_warning("sequence '%s' is shorter than codon length of %d, skipping",
                   desc, GT_CODON_LENGTH);
      } else {
        had_err = gt_seqtranslate_do_translation(arguments, (char*) sequence,
                                                 len, desc,
                                                 translations, false, err);
        if (!had_err && arguments->reverse) {
          char *revseq = gt_cstr_dup_nt((char*) sequence, len);
          had_err = gt_reverse_complement(revseq, len, err);
          if (!had_err) {
            had_err = gt_seqtranslate_do_translation(arguments, revseq, len,
                                                  desc, translations, true,
                                                  err);
          }
          gt_free(revseq);
        }
      }
    }
  }
  gt_str_delete(translations[0]);
  gt_str_delete(translations[1]);
  gt_str_delete(translations[2]);
  gt_str_array_delete(infiles);
  gt_seq_iterator_delete(si);
  gt_sequence_buffer_delete(sb);
  return had_err;
}

// Assembly:
subq $0xa8, %rsp
movl %edi, 0xa4(%rsp)
movq %rsi, 0x98(%rsp)
movl %edx, 0x94(%rsp)
movq %rcx, 0x88(%rsp)
movq %r8, 0x80(%rsp)
movq 0x88(%rsp), %rax
movq %rax, 0x78(%rsp)
movq $0x0, 0x70(%rsp)
movq $0x0, 0x68(%rsp)
movl $0x0, 0x5c(%rsp)
callq 0x11d4a0
movq %rax, 0x30(%rsp)
callq 0x11d4a0
movq %rax, 0x38(%rsp)
callq 0x11d4a0
movq %rax, 0x40(%rsp)
cmpq $0x0, 0x80(%rsp)
je 0x680b8
movq 0x80(%rsp), %rdi
callq 0xd8a60
testb $0x1, %al
jne 0x68080
jmp 0x680b8
movq 0x5d3f19(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x4adf82(%rip), %rsi    # 0x516013
leaq 0x4ae127(%rip), %rdx    # 0x5161bf
leaq 0x4c238d(%rip), %rcx    # 0x52a42c
leaq 0x4c22a0(%rip), %r8     # 0x52a346
movl $0x9c, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x680ba
jmp 0x680bc
cmpq $0x0, 0x78(%rsp)
jne 0x680fc
movq 0x5d3ed5(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x4adf3e(%rip), %rsi    # 0x516013
leaq 0x512a83(%rip), %rdx    # 0x57ab5f
leaq 0x4c2349(%rip), %rcx    # 0x52a42c
leaq 0x4c225c(%rip), %r8     # 0x52a346
movl $0x9d, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x680fe
callq 0x11f5c0
movq %rax, 0x60(%rsp)
movl 0x94(%rsp), %eax
movl %eax, 0x54(%rsp)
movl 0x54(%rsp), %eax
cmpl 0xa4(%rsp), %eax
jge 0x68148
movq 0x60(%rsp), %rdi
movq 0x98(%rsp), %rax
movslq 0x54(%rsp), %rcx
movq (%rax,%rcx,8), %rsi
callq 0x11f720
movl 0x54(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x54(%rsp)
jmp 0x68113
movq 0x60(%rsp), %rdi
movq 0x80(%rsp), %rsi
callq 0x113d20
movq %rax, 0x68(%rsp)
cmpq $0x0, 0x68(%rsp)
jne 0x6816f
movl $0xffffffff, 0x5c(%rsp) # imm = 0xFFFFFFFF
cmpl $0x0, 0x5c(%rsp)
jne 0x68197
movq 0x68(%rsp), %rdi
callq 0x1132a0
movq %rax, 0x70(%rsp)
cmpq $0x0, 0x70(%rsp)
jne 0x68195
movl $0xffffffff, 0x5c(%rsp) # imm = 0xFFFFFFFF
jmp 0x68197
cmpl $0x0, 0x5c(%rsp)
jne 0x682fa
jmp 0x681a4
xorl %eax, %eax
cmpl $0x0, 0x5c(%rsp)
movb %al, 0xf(%rsp)
jne 0x681e0
movq 0x70(%rsp), %rdi
movq 0x80(%rsp), %r8
leaq 0x20(%rsp), %rsi
leaq 0x18(%rsp), %rdx
leaq 0x28(%rsp), %rcx
callq 0x111ab0
movl %eax, 0x58(%rsp)
cmpl $0x0, %eax
setne %al
movb %al, 0xf(%rsp)
movb 0xf(%rsp), %al
testb $0x1, %al
jne 0x681ed
jmp 0x682f8
cmpl $0x0, 0x58(%rsp)
jge 0x68201
movl $0xffffffff, 0x5c(%rsp) # imm = 0xFFFFFFFF
jmp 0x682f8
cmpq $0x3, 0x18(%rsp)
jae 0x68226
movq 0x28(%rsp), %rsi
leaq 0x4c222e(%rip), %rdi    # 0x52a443
movl $0x3, %edx
movb $0x0, %al
callq 0x1267d0
jmp 0x682f3
movq 0x78(%rsp), %rdi
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rdx
movq 0x28(%rsp), %rcx
leaq 0x30(%rsp), %r8
movq 0x80(%rsp), %rax
xorl %r9d, %r9d
movq %rax, (%rsp)
callq 0x68350
movl %eax, 0x5c(%rsp)
cmpl $0x0, 0x5c(%rsp)
jne 0x682f1
movq 0x78(%rsp), %rax
testb $0x1, 0x18(%rax)
je 0x682f1
movq 0x20(%rsp), %rdi
movq 0x18(%rsp), %rsi
callq 0xa2e50
movq %rax, 0x10(%rsp)
movq 0x10(%rsp), %rdi
movq 0x18(%rsp), %rsi
movq 0x80(%rsp), %rdx
callq 0x1cb4f0
movl %eax, 0x5c(%rsp)
cmpl $0x0, 0x5c(%rsp)
jne 0x682db
movq 0x78(%rsp), %rdi
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
movq 0x28(%rsp), %rcx
leaq 0x30(%rsp), %r8
movq 0x80(%rsp), %rax
movl $0x1, %r9d
movq %rax, (%rsp)
callq 0x68350
movl %eax, 0x5c(%rsp)
movq 0x10(%rsp), %rdi
leaq 0x4c205f(%rip), %rsi    # 0x52a346
movl $0xc5, %edx
callq 0xe88c0
jmp 0x682f3
jmp 0x681a4
jmp 0x682fa
movq 0x30(%rsp), %rdi
callq 0x11f560
movq 0x38(%rsp), %rdi
callq 0x11f560
movq 0x40(%rsp), %rdi
callq 0x11f560
movq 0x60(%rsp), %rdi
callq 0x11fd20
movq 0x70(%rsp), %rdi
callq 0x111c10
movq 0x68(%rsp), %rdi
callq 0x113bf0
movl 0x5c(%rsp), %eax
addq $0xa8, %rsp
retq
nopw %cs:(%rax,%rax)