// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/tools/gt_readjoiner_spmtest.c
// Function: gt_readjoiner_spmtest_runner
static int gt_readjoiner_spmtest_runner(GT_UNUSED int argc,
    GT_UNUSED const char **argv, GT_UNUSED int parsed_args,
    void *tool_arguments, GT_UNUSED GtError *err)
{
  GtReadjoinerSpmtestArguments *arguments = tool_arguments;
  GtEncseqLoader *el = NULL;
  GtEncseq *reads = NULL;
  GtLogger *verbose_logger;
  int had_err = 0;

  gt_error_check(err);
  gt_assert(arguments);

  if (arguments->test == GT_READJOINER_SPMTEST_SHOWLIST)
  {
    GtStr *fn = NULL;
    fn = gt_str_clone(arguments->readset);
    gt_str_append_cstr(fn, GT_READJOINER_SUFFIX_SPMLIST);
    had_err = gt_spmlist_parse(gt_str_get(fn), 0, gt_spmproc_show_ascii,
        NULL, err);
    gt_str_delete(fn);
    return had_err;
  }
  verbose_logger = gt_logger_new(arguments->verbose, GT_LOGGER_DEFLT_PREFIX,
      stderr);
  el = gt_encseq_loader_new();
  gt_encseq_loader_drop_description_support(el);
  gt_encseq_loader_disable_autosupport(el);
  if (!arguments->singlestrand)
    gt_encseq_loader_mirror(el);
  reads = gt_encseq_loader_load(el, gt_str_get(arguments->readset), err);
  if (reads == NULL)
    had_err = -1;
  else
  {
    Sequentialsuffixarrayreader *ssar = NULL;
    switch (arguments->test)
    {
      case GT_READJOINER_SPMTEST_BRUTEFORCE:
        gt_rdj_pairwise_exact(GT_OVLFIND_SPM, reads, !arguments->singlestrand,
            false, false, (GtUword)arguments->minmatchlength, true,
            gt_spmproc_show_ascii, NULL, false, NULL, NULL, NULL);
        break;
      case GT_READJOINER_SPMTEST_KMP:
        gt_rdj_pairwise_exact(GT_OVLFIND_SPM, reads, !arguments->singlestrand,
            false, true, (GtUword)arguments->minmatchlength, true,
            gt_spmproc_show_ascii, NULL, false, NULL, NULL, NULL);
        break;
      case GT_READJOINER_SPMTEST_GUSFIELD:
        ssar = gt_newSequentialsuffixarrayreaderfromfile(gt_str_get(
              arguments->readset), SARR_LCPTAB | SARR_SUFTAB | SARR_SSPTAB |
            SARR_ESQTAB, false, verbose_logger, err);
        if (gt_error_is_set(err))
          had_err = -1;
        else
          gt_rdj_gusfield(ssar, (GtUword)arguments->minmatchlength, true,
              true, arguments->singlestrand ? 0 :
              GT_DIV2(gt_encseq_num_of_sequences(reads)), gt_spmproc_show_ascii,
              NULL);
        if (ssar != NULL)
          gt_freeSequentialsuffixarrayreader(&ssar);
        break;
      default:
        gt_assert(false);
    }
    gt_encseq_delete(reads);
  }
  gt_encseq_loader_delete(el);
  gt_logger_delete(verbose_logger);
  return had_err;
}

// Assembly:
subq $0xc8, %rsp
movl %edi, 0xc0(%rsp)
movq %rsi, 0xb8(%rsp)
movl %edx, 0xb4(%rsp)
movq %rcx, 0xa8(%rsp)
movq %r8, 0xa0(%rsp)
movq 0xa8(%rsp), %rax
movq %rax, 0x98(%rsp)
movq $0x0, 0x90(%rsp)
movq $0x0, 0x88(%rsp)
movl $0x0, 0x7c(%rsp)
cmpq $0x0, 0xa0(%rsp)
je 0x56c33
movq 0xa0(%rsp), %rdi
callq 0xd8a60
testb $0x1, %al
jne 0x56bfb
jmp 0x56c33
movq 0x5e539e(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x4bf407(%rip), %rsi    # 0x516013
leaq 0x4bf5ac(%rip), %rdx    # 0x5161bf
leaq 0x4cf1d7(%rip), %rcx    # 0x525df1
leaq 0x4cf00c(%rip), %r8     # 0x525c2d
movl $0x95, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x56c35
jmp 0x56c37
cmpq $0x0, 0x98(%rsp)
jne 0x56c7a
movq 0x5e5357(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x4bf3c0(%rip), %rsi    # 0x516013
leaq 0x523f05(%rip), %rdx    # 0x57ab5f
leaq 0x4cf190(%rip), %rcx    # 0x525df1
leaq 0x4cefc5(%rip), %r8     # 0x525c2d
movl $0x96, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x56c7c
movq 0x98(%rsp), %rax
cmpl $0x0, 0x10(%rax)
jne 0x56cff
movq $0x0, 0x70(%rsp)
movq 0x98(%rsp), %rax
movq (%rax), %rdi
callq 0x11e280
movq %rax, 0x70(%rsp)
movq 0x70(%rsp), %rdi
leaq 0x4ce31c(%rip), %rsi    # 0x524fd0
callq 0x11d550
movq 0x70(%rsp), %rdi
callq 0x11dee0
movq %rax, %rdi
movq 0xa0(%rsp), %r8
xorl %eax, %eax
movl %eax, %ecx
leaq 0x235537(%rip), %rdx    # 0x28c210
movq %rcx, %rsi
callq 0x28bd10
movl %eax, 0x7c(%rsp)
movq 0x70(%rsp), %rdi
callq 0x11f560
movl 0x7c(%rsp), %eax
movl %eax, 0xc4(%rsp)
jmp 0x57037
movq 0x98(%rsp), %rax
movb 0x19(%rax), %al
movq 0x5e528f(%rip), %rcx    # 0x63bfa0
movq (%rcx), %rdx
leaq 0x4c0bd1(%rip), %rsi    # 0x5178ec
andb $0x1, %al
movzbl %al, %edi
callq 0xe7870
movq %rax, 0x80(%rsp)
callq 0xb7a40
movq %rax, 0x90(%rsp)
movq 0x90(%rsp), %rdi
callq 0xba570
movq 0x90(%rsp), %rdi
callq 0xba760
movq 0x98(%rsp), %rax
testb $0x1, 0x18(%rax)
jne 0x56d6f
movq 0x90(%rsp), %rdi
callq 0xba710
movq 0x90(%rsp), %rax
movq %rax, 0x60(%rsp)
movq 0x98(%rsp), %rax
movq (%rax), %rdi
callq 0x11dee0
movq 0x60(%rsp), %rdi
movq %rax, %rsi
movq 0xa0(%rsp), %rdx
callq 0xb7aa0
movq %rax, 0x88(%rsp)
cmpq $0x0, 0x88(%rsp)
jne 0x56dc1
movl $0xffffffff, 0x7c(%rsp) # imm = 0xFFFFFFFF
jmp 0x57012
movq $0x0, 0x68(%rsp)
movq 0x98(%rsp), %rax
movl 0x10(%rax), %eax
movl %eax, 0x5c(%rsp)
subl $0x1, %eax
je 0x56e01
jmp 0x56de0
movl 0x5c(%rsp), %eax
subl $0x2, %eax
je 0x56e7a
jmp 0x56def
movl 0x5c(%rsp), %eax
subl $0x3, %eax
je 0x56ef4
jmp 0x56fcb
movq 0x88(%rsp), %rsi
movq 0x98(%rsp), %rax
movb 0x18(%rax), %al
xorb $-0x1, %al
movq 0x98(%rsp), %rcx
movl 0x14(%rcx), %ecx
movl %ecx, %r9d
xorl %ecx, %ecx
leaq 0x2353e3(%rip), %rdx    # 0x28c210
movq %rsp, %rcx
movq %rdx, 0x8(%rcx)
movq $0x0, 0x30(%rcx)
movq $0x0, 0x28(%rcx)
movq $0x0, 0x20(%rcx)
movl $0x0, 0x18(%rcx)
movq $0x0, 0x10(%rcx)
movl $0x1, (%rcx)
movzbl %al, %edx
andl $0x1, %edx
xorl %r8d, %r8d
movl %r8d, %edi
movl %r8d, %ecx
callq 0x2862f0
jmp 0x57005
movq 0x88(%rsp), %rsi
movq 0x98(%rsp), %rax
movb 0x18(%rax), %al
xorb $-0x1, %al
movq 0x98(%rsp), %rcx
movl 0x14(%rcx), %ecx
movl %ecx, %r9d
xorl %ecx, %ecx
leaq 0x23536a(%rip), %rdx    # 0x28c210
movq %rsp, %rcx
movq %rdx, 0x8(%rcx)
movq $0x0, 0x30(%rcx)
movq $0x0, 0x28(%rcx)
movq $0x0, 0x20(%rcx)
movl $0x0, 0x18(%rcx)
movq $0x0, 0x10(%rcx)
movl $0x1, (%rcx)
movzbl %al, %edx
andl $0x1, %edx
xorl %ecx, %ecx
movl $0x1, %r8d
movl %ecx, %edi
callq 0x2862f0
jmp 0x57005
movq 0x98(%rsp), %rax
movq (%rax), %rdi
callq 0x11dee0
movq %rax, %rdi
movq 0x80(%rsp), %rcx
movq 0xa0(%rsp), %r8
movl $0x87, %esi
xorl %edx, %edx
callq 0x23b3e0
movq %rax, 0x68(%rsp)
movq 0xa0(%rsp), %rdi
callq 0xd8a60
testb $0x1, %al
jne 0x56f3b
jmp 0x56f45
movl $0xffffffff, 0x7c(%rsp) # imm = 0xFFFFFFFF
jmp 0x56fb7
movq 0x68(%rsp), %rax
movq %rax, 0x48(%rsp)
movq 0x98(%rsp), %rax
movl 0x14(%rax), %eax
movq %rax, 0x50(%rsp)
movq 0x98(%rsp), %rax
testb $0x1, 0x18(%rax)
je 0x56f76
xorl %eax, %eax
movq %rax, 0x40(%rsp)
jmp 0x56f8b
movq 0x88(%rsp), %rdi
callq 0xa9d50
shrq %rax
movq %rax, 0x40(%rsp)
movq 0x50(%rsp), %rsi
movq 0x48(%rsp), %rdi
movq 0x40(%rsp), %r8
movl $0x1, %ecx
leaq 0x23526a(%rip), %r9     # 0x28c210
xorl %eax, %eax
movl %ecx, %edx
movq $0x0, (%rsp)
callq 0x284960
cmpq $0x0, 0x68(%rsp)
je 0x56fc9
leaq 0x68(%rsp), %rdi
callq 0x23b5e0
jmp 0x57005
jmp 0x56fcd
movq 0x5e4fcc(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x4bf035(%rip), %rsi    # 0x516013
leaq 0x501d7e(%rip), %rdx    # 0x558d63
leaq 0x4cee05(%rip), %rcx    # 0x525df1
leaq 0x4cec3a(%rip), %r8     # 0x525c2d
movl $0xca, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
movq 0x88(%rsp), %rdi
callq 0xae070
movq 0x90(%rsp), %rdi
callq 0xb7e50
movq 0x80(%rsp), %rdi
callq 0xe7ed0
movl 0x7c(%rsp), %eax
movl %eax, 0xc4(%rsp)
movl 0xc4(%rsp), %eax
addq $0xc8, %rsp
retq
nopw %cs:(%rax,%rax)