// File: /workspace/github_c_makefile_star2_O1/genometools[P]genometools/src/tools/gt_readjoiner_assembly.c
// Function: gt_readjoiner_assembly_runner
static int gt_readjoiner_assembly_runner(GT_UNUSED int argc,
    GT_UNUSED const char **argv, GT_UNUSED int parsed_args,
    void *tool_arguments, GtError *err)
{
  GtReadjoinerAssemblyArguments *arguments = tool_arguments;
  GtLogger *verbose_logger, *default_logger;
  GtEncseqLoader *el;
  GtEncseq *reads;
  GtTimer *timer = NULL;
  GtStrgraph *strgraph = NULL;
  GtBitsequence *contained = NULL;
  const char *readset = gt_str_get(arguments->readset);
  bool eqlen = true;
  GtUword nreads, tlen, rlen;
  int had_err = 0;

  gt_assert(arguments);
  gt_error_check(err);
  default_logger = gt_logger_new(!arguments->quiet, GT_LOGGER_DEFLT_PREFIX,
      stdout);
  gt_logger_log(default_logger,
      "gt readjoiner assembly (version "GT_READJOINER_VERSION")");
  verbose_logger = gt_logger_new(arguments->verbose, GT_LOGGER_DEFLT_PREFIX,
      stdout);
  gt_logger_log(verbose_logger, "verbose output activated");
  gt_logger_log(verbose_logger, "readset name = %s", readset);
  if (gt_showtime_enabled())
  {
    timer = gt_timer_new_with_progress_description(
        GT_READJOINER_ASSEMBLY_MSG_COUNTSPM);
    gt_timer_start(timer);
    gt_timer_show_cpu_time_by_progress(timer);
  }

  if (!arguments->paths2seq)
  {
    el = gt_encseq_loader_new();
    gt_encseq_loader_drop_description_support(el);
    gt_encseq_loader_disable_autosupport(el);
    reads = gt_encseq_loader_load(el, readset, err);
    if (reads == NULL)
    {
      had_err = -1;
    }
    if (had_err == 0)
    {
      eqlen = gt_encseq_accesstype_get(reads) == GT_ACCESS_TYPE_EQUALLENGTH;
      nreads = gt_encseq_num_of_sequences(reads);
      gt_logger_log(default_logger, "number of reads in filtered readset = "
                    GT_WU, nreads);
      tlen = gt_encseq_total_length(reads) - nreads + 1;
      gt_logger_log(verbose_logger, "total length of filtered readset = " GT_WU,
          tlen);

      if (eqlen)
      {
        rlen = gt_encseq_seqlength(reads, 0);
        gt_logger_log(verbose_logger, "read length = " GT_WU, rlen);
        gt_encseq_delete(reads);
        reads = NULL;
      }
      else
      {
        had_err = gt_readjoiner_assembly_build_contained_reads_list(
          arguments, &contained, err);
        rlen = 0;
        gt_logger_log(verbose_logger, "read length = variable");
        gt_assert(reads != NULL);
      }
    }

    if (had_err == 0)
    {
      if (!arguments->load)
      {
        had_err = gt_readjoiner_assembly_build_graph(arguments, &strgraph,
            reads, readset, eqlen, rlen, nreads, contained, default_logger,
            verbose_logger, timer, err);
      }
      else
      {
        gt_readjoiner_assembly_load_graph(&strgraph, reads, readset, rlen,
            default_logger, timer);
      }
    }

    if (!eqlen && reads != NULL && !arguments->errors)
    {
      gt_encseq_delete(reads);
      reads = NULL;
      if (had_err == 0)
        gt_strgraph_set_encseq(strgraph, NULL);
    }

    if (had_err == 0 && arguments->redtrans)
    {
      if (gt_showtime_enabled())
        gt_timer_show_progress(timer, GT_READJOINER_ASSEMBLY_MSG_REDTRANS,
            stdout);
      gt_strgraph_sort_edges_by_len(strgraph, false);
      (void)gt_strgraph_redtrans(strgraph, false);
      (void)gt_strgraph_redself(strgraph, false);
      (void)gt_strgraph_redwithrc(strgraph, false);
      gt_strgraph_log_stats(strgraph, verbose_logger);
    }

    if (had_err == 0 && arguments->errors)
    {
      if (gt_showtime_enabled())
        gt_timer_show_progress(timer, GT_READJOINER_ASSEMBLY_MSG_CLEANSG,
            stdout);
      gt_logger_log(default_logger, GT_READJOINER_ASSEMBLY_MSG_CLEANSG);
      had_err = gt_readjoiner_assembly_error_correction(strgraph,
          arguments->bubble, arguments->deadend, arguments->deadend_depth,
          verbose_logger);
    }

    if (had_err == 0 && arguments->save)
    {
      if (gt_showtime_enabled())
        gt_timer_show_progress(timer, GT_READJOINER_ASSEMBLY_MSG_SAVESG,
            stdout);
      gt_logger_log(default_logger, GT_READJOINER_ASSEMBLY_MSG_SAVESG);
      gt_strgraph_show(strgraph, GT_STRGRAPH_BIN,
          gt_str_get(arguments->readset), GT_READJOINER_SUFFIX_SG, false);
    }

    if (!eqlen && reads != NULL)
    {
      gt_encseq_delete(reads);
      reads = NULL;
      if (had_err == 0)
        gt_strgraph_set_encseq(strgraph, NULL);
    }

    if (had_err == 0)
    {
      if (gt_showtime_enabled())
        gt_timer_show_progress(timer, GT_READJOINER_ASSEMBLY_MSG_TRAVERSESG,
            stdout);
      gt_logger_log(default_logger, GT_READJOINER_ASSEMBLY_MSG_TRAVERSESG);
      gt_readjoiner_assembly_show_current_space("(before traversal)");
      gt_strgraph_spell(strgraph, (GtUword)arguments->depthcutoff,
          (GtUword)arguments->lengthcutoff, arguments->vd, readset,
          GT_READJOINER_SUFFIX_CONTIG_PATHS, NULL, true,
          arguments->show_contigs_info, false, verbose_logger);
    }

    if (contained != NULL)
      gt_free(contained);
    gt_strgraph_delete(strgraph);
    strgraph = NULL;
    gt_assert(reads == NULL);
    gt_encseq_loader_delete(el);
  }

  if (had_err == 0)
  {
    gt_readjoiner_assembly_show_current_space("(before paths2seq)");
    had_err = gt_readjoiner_assembly_paths2seq(readset,
        (GtUword)arguments->lengthcutoff, arguments->vd,
        arguments->astat, arguments->coverage, arguments->copynum,
        arguments->buffersize, default_logger, &timer, err);
  }

  if (gt_showtime_enabled())
  {
    gt_timer_show_progress_final(timer, stdout);
    gt_timer_delete(timer);
  }
  gt_logger_delete(default_logger);
  gt_logger_delete(verbose_logger);
  return had_err;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xa8, %rsp
movq %r8, %rbx
movq %rcx, %r13
movq $0x0, 0x58(%rsp)
movq 0x10(%rcx), %rdi
callq 0x120d23
testq %r13, %r13
je 0xb8783
movq %rax, 0x10(%rsp)
testq %rbx, %rbx
je 0xb7934
movq %rbx, %rdi
callq 0x101a9a
testb %al, %al
jne 0xb878d
movq %rbx, 0x38(%rsp)
movzbl 0x1(%r13), %edi
movq 0x40c5a3(%rip), %r15    # 0x4c3ee8
movq (%r15), %rdx
xorl $0x1, %edi
leaq 0x297f82(%rip), %rbx    # 0x34f8d4
movq %rbx, %rsi
callq 0x108ed0
movq %rax, %r14
leaq 0x2a4433(%rip), %rsi    # 0x35bd97
xorl %r12d, %r12d
movq %rax, %rdi
xorl %eax, %eax
callq 0x10906e
movzbl (%r13), %edi
movq (%r15), %rdx
movq %rbx, %rsi
callq 0x108ed0
movq %rax, %rbp
leaq 0x2a3e30(%rip), %rsi    # 0x35b7bb
movq %rax, %rdi
xorl %eax, %eax
callq 0x10906e
leaq 0x2a3e38(%rip), %rsi    # 0x35b7d4
movq %rbp, %rdi
movq 0x10(%rsp), %rbx
movq %rbx, %rdx
xorl %eax, %eax
callq 0x10906e
callq 0x11ed94
testb %al, %al
movq %r13, 0x20(%rsp)
je 0xb79e7
leaq 0x2a43f9(%rip), %rdi    # 0x35bdbc
callq 0x1226d6
movq %rax, %r13
movq %rax, %rdi
callq 0x122733
movq %r13, 0x18(%rsp)
movq %r13, %rdi
movq 0x20(%rsp), %r13
callq 0x122d69
jmp 0xb79f0
movq $0x0, 0x18(%rsp)
cmpb $0x0, 0x21(%r13)
jne 0xb84a1
callq 0xf36ef
movq %rax, %r12
movq %rax, %rdi
callq 0xf6920
movq %r12, %rdi
callq 0xf69cc
movq %r12, 0x78(%rsp)
movq %r12, %rdi
movq %rbx, %rsi
movq 0x38(%rsp), %rdx
callq 0xf374b
movq %rax, %rdi
movb $0x1, %al
movq %rax, 0x28(%rsp)
testq %rdi, %rdi
movq %r14, 0x50(%rsp)
je 0xb7ad8
movq %rdi, %r15
callq 0xfac0f
movl %eax, %ebx
movq %r15, %rdi
callq 0xec1e8
movq %r14, %rdi
movq %rax, %r14
leaq 0x2a4383(%rip), %rsi    # 0x35bde2
xorl %r12d, %r12d
movq %rax, %rdx
xorl %eax, %eax
callq 0x10906e
movq %r15, %rdi
callq 0xec1d8
movq %r14, (%rsp)
subq %r14, %rax
leaq 0x1(%rax), %rdx
leaq 0x2a4386(%rip), %rsi    # 0x35be0c
movq %rbp, %rdi
xorl %eax, %eax
callq 0x10906e
cmpl $0x2, %ebx
jne 0xb7ae3
movq %r15, %rdi
xorl %esi, %esi
callq 0xeffd3
leaq 0x2a438d(%rip), %rsi    # 0x35be33
movq %rbp, %rdi
movq %rax, 0x60(%rsp)
movq %rax, %rdx
xorl %eax, %eax
callq 0x10906e
movq %r15, %rdi
callq 0xee90c
xorl %edi, %edi
movq 0x10(%rsp), %rbx
movq 0x40c41a(%rip), %r15    # 0x4c3ee8
movq 0x50(%rsp), %r14
jmp 0xb7c3c
movl $0xffffffff, %r12d      # imm = 0xFFFFFFFF
jmp 0xb7c3c
movq %r15, 0x8(%rsp)
movq %rbp, 0x40(%rsp)
movq 0x10(%r13), %rdi
callq 0x120e13
movq 0x38(%rsp), %r15
movq %rax, %r14
leaq 0x2a3d17(%rip), %rsi    # 0x35b81c
movq %rax, %rdi
callq 0x12097f
movq %r14, %rdi
callq 0x120d23
leaq 0x58(%rsp), %rdx
leaq 0x88(%rsp), %rcx
movq %rax, %rdi
movl $0x1, %esi
movq %r15, %rbx
movq %r15, %r8
callq 0x1caf4e
movl %eax, %r12d
cmpl $0x2, 0x48(%r13)
jb 0xb7bf1
testl %r12d, %r12d
movq 0x20(%rsp), %r13
jne 0xb7bf6
movl $0x2, %r15d
leal -0x1(%r15), %ebp
movq %r14, %rdi
callq 0x120db4
movq 0x10(%r13), %rsi
movq %r14, %rdi
callq 0x120a43
movq %r14, %rdi
movl $0x2e, %esi
callq 0x120ba5
movq %r14, %rdi
movl %ebp, %esi
callq 0x120cd6
movq %r14, %rdi
leaq 0x2a3c8e(%rip), %rsi    # 0x35b81e
callq 0x12097f
movq %r14, %rdi
callq 0x120d23
movq %rax, %rdi
xorl %esi, %esi
leaq 0x58(%rsp), %rdx
leaq 0x80(%rsp), %rcx
movq %rbx, %r8
callq 0x1caf4e
movl %eax, %r12d
testl %eax, %eax
jne 0xb7bd4
movq 0x88(%rsp), %rax
cmpq 0x80(%rsp), %rax
jne 0xb8788
testl %r12d, %r12d
jne 0xb7bf1
leal 0x1(%r15), %eax
movq 0x20(%rsp), %r13
cmpl 0x48(%r13), %r15d
movl %eax, %r15d
jb 0xb7b57
jmp 0xb7bf6
movq 0x20(%rsp), %r13
movq %r14, %rdi
callq 0x121b03
leaq 0x2a4240(%rip), %rsi    # 0x35be45
movq $0x0, 0x28(%rsp)
movq 0x40(%rsp), %rbp
movq %rbp, %rdi
xorl %eax, %eax
callq 0x10906e
movq $0x0, 0x60(%rsp)
movq 0x50(%rsp), %r14
movq 0x40c2b6(%rip), %r15    # 0x4c3ee8
movq 0x10(%rsp), %rbx
movq 0x8(%rsp), %rdi
testl %r12d, %r12d
je 0xb7c4e
movq $0x0, (%rsp)
jmp 0xb80b0
cmpb $0x0, 0x24(%r13)
movq %rdi, 0x8(%rsp)
je 0xb7d53
leaq 0x2a422b(%rip), %rcx    # 0x35be90
movq 0x60(%rsp), %rsi
movq %rbx, %rdx
callq 0x1d834a
movq %rax, (%rsp)
callq 0x11ed94
testb %al, %al
je 0xb7c93
movq (%r15), %rdx
leaq 0x2a434c(%rip), %rsi    # 0x35bfd5
movq 0x18(%rsp), %rdi
callq 0x1229c8
leaq 0x2a433b(%rip), %rsi    # 0x35bfd5
xorl %r12d, %r12d
movq %r14, %rdi
xorl %eax, %eax
callq 0x10906e
callq 0x10989a
testb %al, %al
je 0xb80ab
callq 0x10978b
movq %rax, %rbx
callq 0x102df2
leaq (%rax,%rbx), %rcx
movq %rcx, %xmm1
movq 0x298c0e(%rip), %xmm2   # 0x3508e0
punpckldq %xmm2, %xmm1    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0x298c12(%rip), %xmm3   # 0x3508f0
subpd %xmm3, %xmm1
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
movsd 0x298c0a(%rip), %xmm4   # 0x350900
mulsd %xmm4, %xmm0
movq %rbx, %xmm5
movq 0x10(%rsp), %rbx
punpckldq %xmm2, %xmm5    # xmm5 = xmm5[0],xmm2[0],xmm5[1],xmm2[1]
subpd %xmm3, %xmm5
movapd %xmm5, %xmm1
unpckhpd %xmm5, %xmm1            # xmm1 = xmm1[1],xmm5[1]
addsd %xmm5, %xmm1
mulsd %xmm4, %xmm1
movq %rax, %xmm5
punpckldq %xmm2, %xmm5    # xmm5 = xmm5[0],xmm2[0],xmm5[1],xmm2[1]
subpd %xmm3, %xmm5
movapd %xmm5, %xmm2
unpckhpd %xmm5, %xmm2            # xmm2 = xmm2[1],xmm5[1]
addsd %xmm5, %xmm2
mulsd %xmm4, %xmm2
leaq 0x2a4393(%rip), %rdi    # 0x35c0d3
leaq 0x2a42aa(%rip), %rsi    # 0x35bff1
movb $0x3, %al
callq 0x108e02
jmp 0xb80ab
movq 0x58(%rsp), %r15
movq (%rsp), %rdi
callq 0x1d7927
movq %rax, (%rsp)
movl 0x4(%r13), %edx
testl %edx, %edx
je 0xb7d7e
leaq 0x2a3a72(%rip), %rsi    # 0x35b7e6
movq %rbp, %rdi
xorl %eax, %eax
callq 0x10906e
movl 0x4(%r13), %eax
movq %rax, 0x70(%rsp)
movl 0x48(%r13), %eax
movl %eax, 0x30(%rsp)
callq 0x1208f8
movq %rax, %r13
leaq 0x2a401e(%rip), %rsi    # 0x35bdbc
xorl %r12d, %r12d
movq %r14, %rdi
xorl %eax, %eax
callq 0x10906e
cmpb $0x0, 0x28(%rsp)
jne 0xb7de1
leaq 0x120c16(%rip), %rax    # 0x1d89cf
movq %rax, 0x90(%rsp)
movq %r15, 0x88(%rsp)
movq (%rsp), %rax
movq %rax, 0x98(%rsp)
movq $0x0, 0xa0(%rsp)
movq %r15, 0x68(%rsp)
cmpl $0x0, 0x30(%rsp)
je 0xb7e9b
movq %rbp, 0x40(%rsp)
leaq 0x11f791(%rip), %rax    # 0x1d758e
cmpb $0x0, 0x28(%rsp)
cmovneq 0x40c10e(%rip), %rax    # 0x4c3f18
movq %rax, 0x48(%rsp)
leaq 0x88(%rsp), %rbx
cmovneq (%rsp), %rbx
xorl %ebp, %ebp
movq 0x38(%rsp), %r15
movq 0x70(%rsp), %r14
movq %r13, %rdi
movq 0x10(%rsp), %rsi
callq 0x12097f
movq %r13, %rdi
movl $0x2e, %esi
callq 0x120ba5
movq %r13, %rdi
movl %ebp, %esi
callq 0x120cd6
movq %r13, %rdi
leaq 0x2a50d1(%rip), %rsi    # 0x35cf27
callq 0x12097f
movq %r13, %rdi
callq 0x120d23
movq %rax, %rdi
movq %r14, %rsi
movq 0x48(%rsp), %rdx
movq %rbx, %rcx
movq %r15, %r8
callq 0x1d5b40
movl %eax, %r12d
movq %r13, %rdi
callq 0x120db4
incl %ebp
cmpl %ebp, 0x30(%rsp)
jne 0xb7e28
movq 0x50(%rsp), %r14
movq 0x40(%rsp), %rbp
movq 0x10(%rsp), %rbx
movq %r13, %rdi
callq 0x121b03
callq 0x10989a
testb %al, %al
je 0xb7f4a
callq 0x10978b
movq %rax, %rbx
callq 0x102df2
leaq (%rax,%rbx), %rcx
movq %rcx, %xmm1
movq 0x298a12(%rip), %xmm2   # 0x3508e0
punpckldq %xmm2, %xmm1    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0x298a16(%rip), %xmm3   # 0x3508f0
subpd %xmm3, %xmm1
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
movsd 0x298a0e(%rip), %xmm4   # 0x350900
mulsd %xmm4, %xmm0
movq %rbx, %xmm5
movq 0x10(%rsp), %rbx
punpckldq %xmm2, %xmm5    # xmm5 = xmm5[0],xmm2[0],xmm5[1],xmm2[1]
subpd %xmm3, %xmm5
movapd %xmm5, %xmm1
unpckhpd %xmm5, %xmm1            # xmm1 = xmm1[1],xmm5[1]
addsd %xmm5, %xmm1
mulsd %xmm4, %xmm1
movq %rax, %xmm5
punpckldq %xmm2, %xmm5    # xmm5 = xmm5[0],xmm2[0],xmm5[1],xmm2[1]
subpd %xmm3, %xmm5
movapd %xmm5, %xmm2
unpckhpd %xmm5, %xmm2            # xmm2 = xmm2[1],xmm5[1]
addsd %xmm5, %xmm2
mulsd %xmm4, %xmm2
leaq 0x2a4197(%rip), %rdi    # 0x35c0d3
leaq 0x2a3feb(%rip), %rsi    # 0x35bf2e
movb $0x3, %al
callq 0x108e02
callq 0x11ed94
testb %al, %al
movq 0x40bf90(%rip), %r15    # 0x4c3ee8
movq 0x20(%rsp), %r13
je 0xb7f73
movq (%r15), %rdx
leaq 0x2a3fd5(%rip), %rsi    # 0x35bf3e
movq 0x18(%rsp), %rdi
callq 0x1229c8
leaq 0x2a3fc4(%rip), %rsi    # 0x35bf3e
movq %r14, %rdi
xorl %eax, %eax
callq 0x10906e
testl %r12d, %r12d
jne 0xb80ab
movq 0x60(%rsp), %rsi
testq %rsi, %rsi
setne %al
movq 0x8(%rsp), %rdx
testq %rdx, %rdx
sete %cl
andb %al, %cl
testb %cl, 0x28(%rsp)
jne 0xb7fca
testq %rdx, %rdx
je 0xb87a1
testq %rsi, %rsi
jne 0xb87a1
movq 0x28(%rsp), %rax
xorb $0x1, %al
je 0xb87a1
movq (%rsp), %rdi
callq 0x1d79f2
callq 0x10989a
testb %al, %al
je 0xb807a
callq 0x10978b
movq %rax, %rbx
callq 0x102df2
leaq (%rax,%rbx), %rcx
movq %rcx, %xmm1
movq 0x2988e2(%rip), %xmm2   # 0x3508e0
punpckldq %xmm2, %xmm1    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0x2988e6(%rip), %xmm3   # 0x3508f0
subpd %xmm3, %xmm1
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
movsd 0x2988de(%rip), %xmm4   # 0x350900
mulsd %xmm4, %xmm0
movq %rbx, %xmm5
movq 0x10(%rsp), %rbx
punpckldq %xmm2, %xmm5    # xmm5 = xmm5[0],xmm2[0],xmm5[1],xmm2[1]
subpd %xmm3, %xmm5
movapd %xmm5, %xmm1
unpckhpd %xmm5, %xmm1            # xmm1 = xmm1[1],xmm5[1]
addsd %xmm5, %xmm1
mulsd %xmm4, %xmm1
movq %rax, %xmm5
punpckldq %xmm2, %xmm5    # xmm5 = xmm5[0],xmm2[0],xmm5[1],xmm2[1]
subpd %xmm3, %xmm5
movapd %xmm5, %xmm2
unpckhpd %xmm5, %xmm2            # xmm2 = xmm2[1],xmm5[1]
addsd %xmm5, %xmm2
mulsd %xmm4, %xmm2
leaq 0x2a4067(%rip), %rdi    # 0x35c0d3
leaq 0x2a3f50(%rip), %rsi    # 0x35bfc3
movb $0x3, %al
callq 0x108e02
movl 0x4(%r13), %esi
movl 0x48(%r13), %r9d
movzbl 0x22(%r13), %edx
leaq 0x2a4e99(%rip), %rax    # 0x35cf27
movq (%rsp), %rdi
movq 0x68(%rsp), %rcx
movq %rbx, %r8
pushq 0x38(%rsp)
pushq %rax
callq 0x1d8eed
addq $0x10, %rsp
movl %eax, %r12d
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
sete %al
orb 0x28(%rsp), %al
jne 0xb80da
cmpb $0x0, 0x20(%r13)
jne 0xb80da
callq 0xee90c
testl %r12d, %r12d
jne 0xb80d8
movq (%rsp), %rdi
xorl %esi, %esi
callq 0x1d9490
xorl %edi, %edi
testl %r12d, %r12d
jne 0xb82b4
cmpb $0x1, 0x22(%r13)
movq %rdi, 0x8(%rsp)
jne 0xb814f
movq %r15, %r12
callq 0x11ed94
testb %al, %al
je 0xb8110
movq (%r12), %rdx
leaq 0x2a38f2(%rip), %rsi    # 0x35b9f8
movq 0x18(%rsp), %rdi
callq 0x1229c8
movq (%rsp), %r15
movq %r15, %rdi
xorl %esi, %esi
callq 0x1d98fe
movq %r15, %rdi
xorl %esi, %esi
callq 0x1dac89
movq %r15, %rdi
xorl %esi, %esi
callq 0x1da126
movq %r15, %rdi
xorl %esi, %esi
callq 0x1da797
movq %r15, %rdi
movq %rbp, %rsi
callq 0x1e1383
movq 0x8(%rsp), %rdi
movq %r12, %r15
xorl %r12d, %r12d
cmpb $0x1, 0x20(%r13)
jne 0xb82b4
callq 0x11ed94
testb %al, %al
je 0xb817a
movq (%r15), %rdx
leaq 0x2a3cec(%rip), %rsi    # 0x35be5c
movq 0x18(%rsp), %rdi
callq 0x1229c8
leaq 0x2a3cdb(%rip), %rsi    # 0x35be5c
xorl %r13d, %r13d
movq %r14, %rdi
xorl %eax, %eax
callq 0x10906e
movq 0x20(%rsp), %rax
movl 0x2c(%rax), %ecx
movl %ecx, 0x48(%rsp)
movl 0x30(%rax), %r12d
movl 0x34(%rax), %eax
movq %rax, 0x30(%rsp)
leaq 0x2a3e53(%rip), %rsi    # 0x35c000
movq %rbp, %r15
movq %rbp, %rdi
xorl %eax, %eax
callq 0x10906e
testl %r12d, %r12d
je 0xb8200
xorl %r14d, %r14d
xorl %ebx, %ebx
movl $0x1, %edx
movq (%rsp), %rdi
xorl %esi, %esi
xorl %ecx, %ecx
callq 0x1dd144
movq %rax, %rbp
addq %rax, %r14
incl %ebx
movq %r15, %rdi
leaq 0x2a3e29(%rip), %rsi    # 0x35c011
movl %ebx, %edx
movq %rax, %rcx
xorl %eax, %eax
callq 0x10906e
cmpl %r12d, %ebx
jae 0xb8205
testq %rbp, %rbp
jne 0xb81c4
jmp 0xb8205
xorl %ebx, %ebx
xorl %r14d, %r14d
leaq 0x2a3e2d(%rip), %rsi    # 0x35c039
movq %r15, %rbp
movq %r15, %rdi
movl %ebx, %edx
movq %r14, %rcx
xorl %eax, %eax
callq 0x10906e
leaq 0x2a3e3d(%rip), %rsi    # 0x35c062
movq %r15, %rdi
xorl %eax, %eax
callq 0x10906e
movl 0x48(%rsp), %r12d
testl %r12d, %r12d
je 0xb827d
leaq 0x2a3e38(%rip), %r14    # 0x35c078
xorl %ebx, %ebx
xorl %r13d, %r13d
movq (%rsp), %rdi
movq 0x30(%rsp), %rsi
xorl %edx, %edx
callq 0x1dc65a
movq %rax, %r15
addq %rax, %rbx
incl %r13d
movq %rbp, %rdi
movq %r14, %rsi
movl %r13d, %edx
movq %rax, %rcx
xorl %eax, %eax
callq 0x10906e
cmpl %r12d, %r13d
jae 0xb827f
testq %r15, %r15
jne 0xb8245
jmp 0xb827f
xorl %ebx, %ebx
leaq 0x2a3e1f(%rip), %rsi    # 0x35c0a5
xorl %r12d, %r12d
movq %rbp, %rdi
movl %r13d, %edx
movq %rbx, %rcx
xorl %eax, %eax
callq 0x10906e
movq 0x50(%rsp), %r14
movq 0x40bc43(%rip), %r15    # 0x4c3ee8
movq 0x10(%rsp), %rbx
movq 0x20(%rsp), %r13
movq 0x8(%rsp), %rdi
testl %r12d, %r12d
jne 0xb831c
cmpb $0x1, 0x23(%r13)
jne 0xb831c
movq %rdi, 0x8(%rsp)
callq 0x11ed94
testb %al, %al
je 0xb82e2
movq (%r15), %rdx
leaq 0x2a3b9e(%rip), %rsi    # 0x35be76
movq 0x18(%rsp), %rdi
callq 0x1229c8
leaq 0x2a3b8d(%rip), %rsi    # 0x35be76
movq %r14, %rdi
xorl %eax, %eax
callq 0x10906e
movq 0x10(%r13), %rdi
callq 0x120d23
leaq 0x2a3b8d(%rip), %rcx    # 0x35be90
movq (%rsp), %rdi
movl $0x4, %esi
movq %rax, %rdx
xorl %r8d, %r8d
callq 0x1de74e
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
sete %al
movq 0x28(%rsp), %rcx
orb %al, %cl
je 0xb8330
movq %rdi, %r15
jmp 0xb8348
callq 0xee90c
xorl %r15d, %r15d
testl %r12d, %r12d
jne 0xb8348
movq (%rsp), %rdi
xorl %esi, %esi
callq 0x1d9490
testl %r12d, %r12d
jne 0xb8463
callq 0x11ed94
testb %al, %al
je 0xb8375
movq 0x40bb87(%rip), %rax    # 0x4c3ee8
movq (%rax), %rdx
leaq 0x2a3b29(%rip), %rsi    # 0x35be94
movq 0x18(%rsp), %rdi
callq 0x1229c8
leaq 0x2a3b18(%rip), %rsi    # 0x35be94
movq %r14, %rdi
xorl %eax, %eax
callq 0x10906e
callq 0x10989a
testb %al, %al
je 0xb842d
callq 0x10978b
movq %rax, %rbx
callq 0x102df2
leaq (%rax,%rbx), %rcx
movq %rcx, %xmm1
movq 0x29852f(%rip), %xmm2   # 0x3508e0
punpckldq %xmm2, %xmm1    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0x298533(%rip), %xmm3   # 0x3508f0
subpd %xmm3, %xmm1
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
movsd 0x29852b(%rip), %xmm4   # 0x350900
mulsd %xmm4, %xmm0
movq %rbx, %xmm5
movq 0x10(%rsp), %rbx
punpckldq %xmm2, %xmm5    # xmm5 = xmm5[0],xmm2[0],xmm5[1],xmm2[1]
subpd %xmm3, %xmm5
movapd %xmm5, %xmm1
unpckhpd %xmm5, %xmm1            # xmm1 = xmm1[1],xmm5[1]
addsd %xmm5, %xmm1
mulsd %xmm4, %xmm1
movq %rax, %xmm5
punpckldq %xmm2, %xmm5    # xmm5 = xmm5[0],xmm2[0],xmm5[1],xmm2[1]
subpd %xmm3, %xmm5
movapd %xmm5, %xmm2
unpckhpd %xmm5, %xmm2            # xmm2 = xmm2[1],xmm5[1]
addsd %xmm5, %xmm2
mulsd %xmm4, %xmm2
leaq 0x2a3cb4(%rip), %rdi    # 0x35c0d3
leaq 0x2a3a80(%rip), %rsi    # 0x35bea6
movb $0x3, %al
callq 0x108e02
movl 0x8(%r13), %edx
movl 0xc(%r13), %esi
movzbl 0x25(%r13), %ecx
movzbl 0x28(%r13), %eax
subq $0x8, %rsp
leaq 0x2a3f93(%rip), %r9     # 0x35c3dd
movq 0x8(%rsp), %rdi
movq %rbx, %r8
pushq %rbp
pushq $0x0
pushq %rax
pushq $0x1
pushq $0x0
callq 0x1e147f
addq $0x30, %rsp
movq 0x58(%rsp), %rdi
testq %rdi, %rdi
je 0xb847e
leaq 0x2a349d(%rip), %rsi    # 0x35b911
movl $0x274, %edx            # imm = 0x274
callq 0x109670
movq (%rsp), %rdi
callq 0x1d7dbc
testq %r15, %r15
jne 0xb8792
movq 0x78(%rsp), %rdi
callq 0xf424d
movq 0x40ba47(%rip), %r15    # 0x4c3ee8
testl %r12d, %r12d
jne 0xb873d
callq 0x10989a
testb %al, %al
je 0xb854c
callq 0x10978b
movq %rax, %rbx
callq 0x102df2
leaq (%rax,%rbx), %rcx
movq %rcx, %xmm1
movq 0x29840b(%rip), %xmm2   # 0x3508e0
punpckldq %xmm2, %xmm1    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0x29840f(%rip), %xmm3   # 0x3508f0
subpd %xmm3, %xmm1
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
movsd 0x298407(%rip), %xmm4   # 0x350900
mulsd %xmm4, %xmm0
movq %rbx, %xmm5
punpckldq %xmm2, %xmm5    # xmm5 = xmm5[0],xmm2[0],xmm5[1],xmm2[1]
subpd %xmm3, %xmm5
movapd %xmm5, %xmm1
unpckhpd %xmm5, %xmm1            # xmm1 = xmm1[1],xmm5[1]
addsd %xmm5, %xmm1
mulsd %xmm4, %xmm1
movq %rax, %xmm5
punpckldq %xmm2, %xmm5    # xmm5 = xmm5[0],xmm2[0],xmm5[1],xmm2[1]
subpd %xmm3, %xmm5
movapd %xmm5, %xmm2
unpckhpd %xmm5, %xmm2            # xmm2 = xmm2[1],xmm5[1]
addsd %xmm5, %xmm2
mulsd %xmm4, %xmm2
leaq 0x2a3b95(%rip), %rdi    # 0x35c0d3
leaq 0x2a3982(%rip), %rsi    # 0x35bec7
movb $0x3, %al
callq 0x108e02
movl 0x8(%r13), %eax
movq %rax, 0x20(%rsp)
movb 0x25(%r13), %al
movb %al, 0x48(%rsp)
movb 0x26(%r13), %al
movb %al, 0x28(%rsp)
movsd 0x50(%r13), %xmm0
movsd %xmm0, 0x30(%rsp)
movb 0x27(%r13), %al
movb %al, 0x8(%rsp)
movq 0x40(%r13), %rax
movq %rax, (%rsp)
callq 0xf36ef
movq %rax, %rbx
callq 0x11ed94
testb %al, %al
movq %rbp, 0x40(%rsp)
je 0xb85d6
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0xb85b2
movq (%r15), %rdx
leaq 0x2a3b7b(%rip), %rsi    # 0x35c126
callq 0x1229c8
jmp 0xb85d6
leaq 0x2a3b6d(%rip), %rdi    # 0x35c126
callq 0x1226d6
movq %rax, %r12
movq %rax, %rdi
callq 0x122d69
movq %r12, 0x18(%rsp)
movq %r12, %rdi
callq 0x122733
movq %r15, %rbp
leaq 0x2a3b46(%rip), %rsi    # 0x35c126
movq %r14, %r12
movq %r14, %rdi
xorl %eax, %eax
callq 0x10906e
movq %rbx, %rdi
callq 0xf6920
movq %rbx, %rdi
callq 0xf69cc
movq %rbx, %rdi
callq 0xf69bc
movq %rbx, %rdi
movq 0x10(%rsp), %rsi
movq 0x38(%rsp), %rdx
callq 0xf374b
testq %rax, %rax
je 0xb8797
movq %rax, %r13
movq %rax, %rdi
callq 0xf1c71
movq %rax, %r14
movq %r13, %rdi
callq 0xec1d8
movq %rax, %r15
movq %r13, %rdi
callq 0xfac80
leaq -0x1(%r15), %rcx
movq %rcx, %rdx
shrq %rdx
xorl %esi, %esi
cmpq $0x40, %rcx
setb %sil
xorl %ecx, %ecx
cmpq $0x20, %r15
setb %cl
testb %al, %al
cmoveq %r15, %rdx
cmovel %ecx, %esi
decq %rdx
shrq $0x5, %rdx
addq $0x2, %rdx
testb %sil, %sil
movl $0x2, %eax
cmoveq %rdx, %rax
xorl %esi, %esi
xorl %ecx, %ecx
addq (%r14,%rcx,8), %rsi
incq %rcx
cmpq %rcx, %rax
jne 0xb8682
testq %rsi, %rsi
je 0xb879c
movq %rbp, %r15
leaq 0x2a3aee(%rip), %rdi    # 0x35c18f
xorl %eax, %eax
callq 0x108e02
callq 0x11ed94
testb %al, %al
movq %r12, %r14
movq 0x40(%rsp), %rbp
je 0xb86cd
movq (%r15), %rdx
leaq 0x2a3a7d(%rip), %rsi    # 0x35c140
movq 0x18(%rsp), %rdi
callq 0x1229c8
leaq 0x2a3a6c(%rip), %rsi    # 0x35c140
movq %r14, %rdi
xorl %eax, %eax
callq 0x10906e
subq $0x8, %rsp
movzbl 0x10(%rsp), %eax
movzbl 0x30(%rsp), %r10d
movzbl 0x50(%rsp), %r9d
leaq 0x2a3ce3(%rip), %rsi    # 0x35c3dd
leaq 0x2a347a(%rip), %rdx    # 0x35bb7b
movq 0x18(%rsp), %rdi
movq %r13, %rcx
movq 0x28(%rsp), %r8
movsd 0x38(%rsp), %xmm0
pushq 0x40(%rsp)
pushq %r14
pushq 0x18(%rsp)
pushq %rax
pushq %r10
callq 0x1cef4c
addq $0x30, %rsp
movl %eax, %r12d
movq %r13, %rdi
callq 0xee90c
movq %rbx, %rdi
callq 0xf424d
callq 0x11ed94
testb %al, %al
je 0xb875e
movq (%r15), %rsi
movq 0x18(%rsp), %rbx
movq %rbx, %rdi
callq 0x122c67
movq %rbx, %rdi
callq 0x122d79
movq %r14, %rdi
callq 0x10916a
movq %rbp, %rdi
callq 0x10916a
movl %r12d, %eax
addq $0xa8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0x1da50
callq 0x1d933
callq 0x1d8fa
callq 0x1d9a5
callq 0x1da17
callq 0x1d9de
callq 0x1d96c
nop