// File: /workspace/github_c_makefile_star2_O3/genometools[P]genometools/src/tools/gt_tallymer.c
// Function: gt_tyr_occratio_runner
static int gt_tyr_occratio_runner(GT_UNUSED int argc,
                                  GT_UNUSED const char **argv,
                                  GT_UNUSED int parsed_args,
                                  void *tool_arguments,
                                  GtError *err)
{
  GtLogger *logger;
  Tyr_occratio_options *arguments = tool_arguments;
  bool haserr = false;
  GtArrayuint64_t uniquedistribution,
                  nonuniquedistribution,
                  nonuniquemultidistribution;

  logger = gt_logger_new(arguments->verbose, GT_LOGGER_DEFLT_PREFIX, stdout);
  GT_INITARRAY(&uniquedistribution,uint64_t);
  GT_INITARRAY(&nonuniquedistribution,uint64_t);
  GT_INITARRAY(&nonuniquemultidistribution,uint64_t);
  if (gt_tyr_occratio_func(gt_str_get(arguments->str_inputindex),
                           arguments->scanfile,
                           arguments->minmersize,
                           arguments->maxmersize,
                           &uniquedistribution,
                           &nonuniquedistribution,
                           &nonuniquemultidistribution,
                           logger,
                           err) != 0)
  {
    haserr = true;
  }
  if (!haserr)
  {
    showoccratios(&uniquedistribution,
                  &nonuniquedistribution,
                  &nonuniquemultidistribution,
                  arguments->outputmode,
                  arguments->outputvector);
  }
  gt_logger_delete(logger);
  GT_FREEARRAY(&uniquedistribution,uint64_t);
  GT_FREEARRAY(&nonuniquedistribution,uint64_t);
  GT_FREEARRAY(&nonuniquemultidistribution,uint64_t);
  return haserr ? -1 : 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x58, %rsp
movq %r8, %rbx
movq %rcx, %r15
movzbl 0x45(%rcx), %edi
movq 0x3ea26e(%rip), %rax    # 0x4b8ed8
movq (%rax), %rdx
leaq 0x277c60(%rip), %rsi    # 0x3468d4
callq 0x103e40
movq %rax, %r14
xorps %xmm0, %xmm0
movq %rsp, %r12
movaps %xmm0, (%r12)
xorl %eax, %eax
movq %rax, 0x10(%r12)
leaq 0x20(%rsp), %r13
movaps %xmm0, (%r13)
movq %rax, 0x10(%r13)
leaq 0x40(%rsp), %rbp
movaps %xmm0, (%rbp)
movq %rax, 0x10(%rbp)
movq 0x10(%r15), %rdi
callq 0x11b0a1
movzbl 0x44(%r15), %esi
movq 0x20(%r15), %rdx
movq 0x28(%r15), %rcx
subq $0x8, %rsp
movq %rax, %rdi
movq %r12, %r8
movq %r13, %r9
pushq %rbx
pushq %r14
pushq %rbp
callq 0x202868
addq $0x20, %rsp
movl %eax, %ebx
testl %eax, %eax
jne 0xcede2
movl 0x40(%r15), %ebp
movq 0x38(%r15), %r15
testb $0x1, %bpl
je 0xced25
leaq 0x28e661(%rip), %rdi    # 0x35d359
callq 0x17bd0
testb $0x8, %bpl
jne 0xced10
movq %rsp, %rdi
movq %r15, %rsi
callq 0xcef9b
jmp 0xced25
movq %rsp, %rsi
leaq 0x20(%rsp), %rdx
movl $0x1, %edi
movq %r15, %rcx
callq 0xcee70
testb $0x2, %bpl
je 0xced61
leaq 0x28e645(%rip), %rdi    # 0x35d377
callq 0x17bd0
testb $0x8, %bpl
jne 0xced4c
leaq 0x20(%rsp), %rdi
movq %r15, %rsi
callq 0xcef9b
jmp 0xced61
movq %rsp, %rsi
leaq 0x20(%rsp), %rdx
movl $0x2, %edi
movq %r15, %rcx
callq 0xcee70
testb $0x4, %bpl
je 0xced9d
leaq 0x28e654(%rip), %rdi    # 0x35d3c2
callq 0x17bd0
testb $0x8, %bpl
jne 0xced88
leaq 0x40(%rsp), %rdi
movq %r15, %rsi
callq 0xcef9b
jmp 0xced9d
movq %rsp, %rsi
leaq 0x40(%rsp), %rdx
movl $0x2, %edi
movq %r15, %rcx
callq 0xcee70
testb $0x10, %bpl
je 0xcede2
leaq 0x28e668(%rip), %rdi    # 0x35d412
callq 0x17bd0
movq %rsp, %r12
leaq 0x20(%rsp), %rdx
xorl %edi, %edi
movq %r12, %rsi
movq %r15, %rcx
callq 0xcee70
leaq 0x28e68b(%rip), %rdi    # 0x35d456
callq 0x17bd0
leaq 0x40(%rsp), %rdx
xorl %edi, %edi
movq %r12, %rsi
movq %r15, %rcx
callq 0xcee70
movq %r14, %rdi
callq 0x1040e0
movq (%rsp), %rdi
testq %rdi, %rdi
je 0xcee14
leaq 0x28d9c9(%rip), %rsi    # 0x35c7c3
movl $0x308, %edx            # imm = 0x308
callq 0x1045eb
xorps %xmm0, %xmm0
movaps %xmm0, (%rsp)
movq $0x0, 0x10(%rsp)
movq 0x20(%rsp), %rdi
testq %rdi, %rdi
je 0xcee40
leaq 0x28d99e(%rip), %rsi    # 0x35c7c3
movl $0x309, %edx            # imm = 0x309
callq 0x1045eb
xorps %xmm0, %xmm0
movaps %xmm0, 0x20(%rsp)
movq $0x0, 0x30(%rsp)
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0xcee5b
leaq 0x28d972(%rip), %rsi    # 0x35c7c3
movl $0x30a, %edx            # imm = 0x30A
callq 0x1045eb
xorl %eax, %eax
negl %ebx
sbbl %eax, %eax
addq $0x58, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq