// File: /workspace/github_c_makefile_star2_O1/genometools[P]genometools/src/tools/gt_readjoiner_asqg.c
// Function: gt_readjoiner_asqg_runner
static int gt_readjoiner_asqg_runner(GT_UNUSED int argc,
    GT_UNUSED const char **argv, GT_UNUSED int parsed_args,
    void *tool_arguments, GtError *err)
{
  GtReadjoinerAsqgArguments *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;
  GtUword nreads;
  int had_err = 0;

  if (gt_showtime_enabled())
  {
    timer = gt_timer_new_with_progress_description(
        GT_READJOINER_ASQG_MSG_INIT);
    gt_timer_start(timer);
    gt_timer_show_cpu_time_by_progress(timer);
  }
  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 asqg");
  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 (arguments->minmatchlength > 0)
    gt_logger_log(verbose_logger, "SPM length cutoff = %u",
        arguments->minmatchlength);

  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);
  nreads = gt_encseq_num_of_sequences(reads);
  gt_assert(reads != NULL);
  eqlen = gt_encseq_accesstype_get(reads) == GT_ACCESS_TYPE_EQUALLENGTH;
  gt_readjoiner_asqg_show_current_space(GT_READJOINER_ASQG_MSG_INIT);
  if (!eqlen)
  {
    unsigned int i;
    GtUword nofreads;
    GtStr *filename = gt_str_clone(arguments->readset);
    if (gt_showtime_enabled())
      gt_timer_show_progress(timer, GT_READJOINER_ASQG_MSG_CNT, stdout);
    gt_logger_log(default_logger, GT_READJOINER_ASQG_MSG_CNT);
    gt_str_append_cstr(filename, ".0" GT_READJOINER_SUFFIX_CNTLIST);
    had_err = gt_cntlist_parse(gt_str_get(filename), true, &contained,
        &nofreads, err);
    for (i = 1U; i < arguments->nspmfiles && had_err == 0; i++)
    {
      GtUword nofreads_i;
      gt_str_reset(filename);
      gt_str_append_str(filename, arguments->readset);
      gt_str_append_char(filename, '.');
      gt_str_append_uint(filename, i);
      gt_str_append_cstr(filename, GT_READJOINER_SUFFIX_CNTLIST);
      had_err = gt_cntlist_parse(gt_str_get(filename), false, &contained,
          &nofreads_i, err);
      gt_assert(nofreads == nofreads_i);
    }
    gt_str_delete(filename);
    gt_readjoiner_asqg_show_current_space(GT_READJOINER_ASQG_MSG_CNT);
  }
  if (!arguments->sg)
  {
    GtStr *filename = NULL;
    GtFile *file = NULL;
    GtAsqgWriter *aw = NULL;
    if (had_err == 0)
    {
      filename = gt_str_clone(arguments->readset);
      gt_str_append_cstr(filename, arguments->gz ?
          GT_READJOINER_SUFFIX_SG_ASQG_GZ : GT_READJOINER_SUFFIX_SG_ASQG);
      file = gt_file_open(arguments->gz ? GT_FILE_MODE_GZIP :
          GT_FILE_MODE_UNCOMPRESSED, gt_str_get(filename), "w", err);
      if (file == NULL)
        had_err = -1;
    }
    if (had_err == 0)
    {
      aw = gt_asqg_writer_new(file, reads);
      if (gt_showtime_enabled())
        gt_timer_show_progress(timer, GT_READJOINER_ASQG_MSG_VERTICES,
            stdout);
      gt_logger_log(default_logger, GT_READJOINER_ASQG_MSG_VERTICES);
      had_err = gt_asqg_writer_show_header(aw, 0.0,
          (GtUword)arguments->minmatchlength,
          gt_str_get(arguments->readset), false, false, err);
    }
    if (had_err == 0)
    {
      had_err = gt_asqg_writer_show_vertices(aw, err);
      gt_readjoiner_asqg_show_current_space(GT_READJOINER_ASQG_MSG_VERTICES);
    }
    if (had_err == 0)
    {
      if (gt_showtime_enabled())
        gt_timer_show_progress(timer, GT_READJOINER_ASQG_MSG_EDGES, stdout);
      gt_logger_log(default_logger, GT_READJOINER_ASQG_MSG_EDGES);
      had_err = gt_readjoiner_asqg_use_spmfiles(gt_spmproc_show_asqg,
          aw, readset, arguments->minmatchlength, arguments->nspmfiles,
          contained, err);
      gt_readjoiner_asqg_show_current_space(GT_READJOINER_ASQG_MSG_EDGES);
    }
    gt_str_delete(filename);
    gt_file_delete(file);
    gt_asqg_writer_delete(aw);
  }
  else
  {
    if (had_err == 0)
    {
      if (gt_showtime_enabled())
        gt_timer_show_progress(timer, GT_READJOINER_ASQG_MSG_COUNT, stdout);
      gt_logger_log(default_logger, GT_READJOINER_ASQG_MSG_COUNT);
      strgraph = gt_strgraph_new(nreads);
      had_err = gt_readjoiner_asqg_use_spmfiles(gt_spmproc_strgraph_count,
          strgraph, readset, arguments->minmatchlength, arguments->nspmfiles,
          contained, err);
      gt_readjoiner_asqg_show_current_space(GT_READJOINER_ASQG_MSG_COUNT);
    }
    if (had_err == 0)
    {
      if (gt_showtime_enabled())
        gt_timer_show_progress(timer, GT_READJOINER_ASQG_MSG_INSERT, stdout);
      gt_logger_log(default_logger, GT_READJOINER_ASQG_MSG_INSERT);
      gt_strgraph_allocate_graph(strgraph,
          eqlen ? gt_encseq_seqlength(reads, 0) : 0,
          eqlen ? NULL : reads);
      had_err = gt_strgraph_load_spm_from_file(strgraph,
          (GtUword)arguments->minmatchlength, false,
          contained, readset, arguments->nspmfiles,
          GT_READJOINER_SUFFIX_SPMLIST, err);
      gt_readjoiner_asqg_show_current_space(GT_READJOINER_ASQG_MSG_INSERT);
    }
    if (had_err == 0)
    {
      if (gt_showtime_enabled())
        gt_timer_show_progress(timer, GT_READJOINER_ASQG_MSG_OUTPUT, stdout);
      gt_logger_log(default_logger, GT_READJOINER_ASQG_MSG_OUTPUT);
      gt_strgraph_set_encseq(strgraph, reads);
      gt_strgraph_show(strgraph, arguments->gz ? GT_STRGRAPH_ASQG_GZ :
          GT_STRGRAPH_ASQG, gt_str_get(arguments->readset),
          arguments->gz ? GT_READJOINER_SUFFIX_SG_ASQG_GZ :
          GT_READJOINER_SUFFIX_SG_ASQG, false);
      gt_readjoiner_asqg_show_current_space(GT_READJOINER_ASQG_MSG_OUTPUT);
    }
  }
  if (gt_showtime_enabled())
  {
    gt_timer_show_progress_final(timer, stdout);
    gt_timer_delete(timer);
  }
  gt_free(contained);
  gt_strgraph_delete(strgraph);
  gt_encseq_loader_delete(el);
  gt_encseq_delete(reads);
  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 $0x78, %rsp
movq %r8, %rbx
movq %rcx, %r12
movq $0x0, 0x28(%rsp)
movq 0x8(%rcx), %rdi
callq 0x120d23
movq %rax, 0x30(%rsp)
callq 0x11ed94
testb %al, %al
je 0xb67b4
leaq 0x2aa9b4(%rip), %rdi    # 0x36114e
callq 0x1226d6
movq %rax, %r13
movq %rax, %rdi
callq 0x122733
movq %r13, %rdi
callq 0x122d69
jmp 0xb67b7
xorl %r13d, %r13d
testq %r12, %r12
je 0xb7261
testq %rbx, %rbx
je 0xb67d5
movq %rbx, %rdi
callq 0x101a9a
testb %al, %al
jne 0xb726b
movq %rbx, 0x18(%rsp)
movzbl 0x1(%r12), %edi
movq 0x40d701(%rip), %r14    # 0x4c3ee8
movq (%r14), %rdx
xorl $0x1, %edi
leaq 0x2990e0(%rip), %rbx    # 0x34f8d4
movq %rbx, %rsi
callq 0x108ed0
movq %rax, %rbp
leaq 0x2a4fa2(%rip), %rsi    # 0x35b7a8
movq %rax, %rdi
xorl %eax, %eax
callq 0x10906e
movzbl (%r12), %edi
movq (%r14), %rdx
movq %rbx, %rsi
callq 0x108ed0
movq %rax, %r15
leaq 0x2a4f91(%rip), %rsi    # 0x35b7bb
movq %rax, %rdi
xorl %eax, %eax
callq 0x10906e
leaq 0x2a4f99(%rip), %rsi    # 0x35b7d4
movq %r15, %rdi
movq 0x30(%rsp), %rdx
xorl %eax, %eax
callq 0x10906e
movl 0x4(%r12), %edx
testl %edx, %edx
je 0xb6864
leaq 0x2a4f8c(%rip), %rsi    # 0x35b7e6
movq %r15, %rdi
xorl %eax, %eax
callq 0x10906e
callq 0xf36ef
movq %rax, %rbx
movq %rax, %rdi
callq 0xf6920
movq %rbx, %rdi
callq 0xf69cc
movq %rbx, 0x60(%rsp)
movq %rbx, %rdi
movq 0x30(%rsp), %rsi
movq 0x18(%rsp), %rdx
callq 0xf374b
movq %rax, %r14
movq %rax, %rdi
callq 0xec1e8
movq %rax, 0x58(%rsp)
testq %r14, %r14
je 0xb7266
movq %r14, %rdi
callq 0xfac0f
movl %eax, 0x40(%rsp)
callq 0x10989a
testb %al, %al
je 0xb695a
callq 0x10978b
movq %rax, %rbx
callq 0x102df2
leaq (%rax,%rbx), %rcx
movq %rcx, %xmm1
movq 0x299ffd(%rip), %xmm2   # 0x3508e0
punpckldq %xmm2, %xmm1    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0x29a001(%rip), %xmm3   # 0x3508f0
subpd %xmm3, %xmm1
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
movsd 0x299ff9(%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 0x2a4f8d(%rip), %rdi    # 0x35b8d9
leaq 0x2aa7fb(%rip), %rsi    # 0x36114e
movb $0x3, %al
callq 0x108e02
xorl %ebx, %ebx
cmpl $0x2, 0x40(%rsp)
movq %r14, 0x10(%rsp)
movq %r12, 0x20(%rsp)
movq %r15, 0x48(%rsp)
je 0xb6b5b
movq 0x8(%r12), %rdi
callq 0x120e13
movq %rax, %r12
callq 0x11ed94
testb %al, %al
je 0xb69a5
movq 0x40d555(%rip), %rax    # 0x4c3ee8
movq (%rax), %rdx
leaq 0x2a4e60(%rip), %rsi    # 0x35b7fd
movq %r13, %rdi
callq 0x1229c8
movq %r13, 0x38(%rsp)
leaq 0x2a4e4c(%rip), %rsi    # 0x35b7fd
movq %rbp, 0x50(%rsp)
movq %rbp, %rdi
xorl %eax, %eax
callq 0x10906e
leaq 0x2a4e55(%rip), %rsi    # 0x35b81c
movq %r12, %rdi
callq 0x12097f
movq %r12, %rdi
callq 0x120d23
leaq 0x28(%rsp), %rdx
leaq 0x70(%rsp), %rcx
movq %rax, %rdi
movl $0x1, %esi
movq 0x18(%rsp), %r8
callq 0x1caf4e
movl %eax, %ebx
movq 0x20(%rsp), %rax
cmpl $0x2, 0x14(%rax)
jb 0xb6a98
testl %ebx, %ebx
jne 0xb6a98
movl $0x2, %ebp
leaq 0x28(%rsp), %r13
leaq 0x68(%rsp), %r14
movq 0x20(%rsp), %r15
leal -0x1(%rbp), %ebx
movq %r12, %rdi
callq 0x120db4
movq 0x8(%r15), %rsi
movq %r12, %rdi
callq 0x120a43
movq %r12, %rdi
movl $0x2e, %esi
callq 0x120ba5
movq %r12, %rdi
movl %ebx, %esi
callq 0x120cd6
movq %r12, %rdi
leaq 0x2a4dc6(%rip), %rsi    # 0x35b81e
callq 0x12097f
movq %r12, %rdi
callq 0x120d23
movq %rax, %rdi
xorl %esi, %esi
movq %r13, %rdx
movq %r14, %rcx
movq 0x18(%rsp), %r8
callq 0x1caf4e
movl %eax, %ebx
movq 0x70(%rsp), %rax
cmpq 0x68(%rsp), %rax
jne 0xb725c
cmpl 0x14(%r15), %ebp
jae 0xb6a98
incl %ebp
testl %ebx, %ebx
je 0xb6a20
movq %r12, %rdi
callq 0x121b03
callq 0x10989a
testb %al, %al
je 0xb6b42
callq 0x10978b
movq %rax, %r14
callq 0x102df2
leaq (%rax,%r14), %rcx
movq %rcx, %xmm1
movq 0x299e15(%rip), %xmm2   # 0x3508e0
punpckldq %xmm2, %xmm1    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0x299e19(%rip), %xmm3   # 0x3508f0
subpd %xmm3, %xmm1
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
movsd 0x299e11(%rip), %xmm4   # 0x350900
mulsd %xmm4, %xmm0
movq %r14, %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 0x2a4da5(%rip), %rdi    # 0x35b8d9
leaq 0x2a4cc2(%rip), %rsi    # 0x35b7fd
movb $0x3, %al
callq 0x108e02
movq 0x38(%rsp), %r13
movq 0x50(%rsp), %rbp
movq 0x48(%rsp), %r15
movq 0x10(%rsp), %r14
movq 0x20(%rsp), %r12
cmpb $0x0, 0x11(%r12)
je 0xb6b6f
testl %ebx, %ebx
je 0xb6b81
xorl %r12d, %r12d
jmp 0xb6c98
xorl %r15d, %r15d
testl %ebx, %ebx
je 0xb6f15
xorl %eax, %eax
jmp 0xb6f78
callq 0x11ed94
testb %al, %al
je 0xb6ba3
movq 0x40d357(%rip), %rax    # 0x4c3ee8
movq (%rax), %rdx
leaq 0x2a4cd2(%rip), %rsi    # 0x35b86d
movq %r13, %rdi
callq 0x1229c8
leaq 0x2a4cc3(%rip), %rsi    # 0x35b86d
movq %rbp, %rdi
xorl %eax, %eax
callq 0x10906e
movq 0x58(%rsp), %rdi
callq 0x1d7927
movq %rax, %r12
movq 0x20(%rsp), %rax
movl 0x4(%rax), %ecx
movl 0x14(%rax), %r8d
movq 0x28(%rsp), %r9
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
leaq 0x121ded(%rip), %rdi    # 0x1d89cf
movq %r12, %rsi
movq 0x30(%rsp), %rdx
callq 0xb7270
movl %eax, %ebx
callq 0x10989a
testb %al, %al
je 0xb6c98
callq 0x10978b
movq %rax, %r14
callq 0x102df2
leaq (%rax,%r14), %rcx
movq %rcx, %xmm1
movq 0x299cc4(%rip), %xmm2   # 0x3508e0
punpckldq %xmm2, %xmm1    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0x299cc8(%rip), %xmm3   # 0x3508f0
subpd %xmm3, %xmm1
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
movsd 0x299cc0(%rip), %xmm4   # 0x350900
mulsd %xmm4, %xmm0
movq %r14, %xmm5
movq 0x10(%rsp), %r14
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 0x2a4c4f(%rip), %rdi    # 0x35b8d9
leaq 0x2a4bdc(%rip), %rsi    # 0x35b86d
movb $0x3, %al
callq 0x108e02
testl %ebx, %ebx
jne 0xb6dd8
callq 0x11ed94
testb %al, %al
je 0xb6cc2
movq 0x40d238(%rip), %rax    # 0x4c3ee8
movq (%rax), %rdx
leaq 0x2a4bd7(%rip), %rsi    # 0x35b891
movq %r13, %rdi
callq 0x1229c8
leaq 0x2a4bc8(%rip), %rsi    # 0x35b891
xorl %ebx, %ebx
movq %rbp, %rdi
xorl %eax, %eax
callq 0x10906e
cmpl $0x2, 0x40(%rsp)
jne 0xb6cec
movq %r14, %rdi
xorl %r14d, %r14d
xorl %esi, %esi
callq 0xeffd3
movq %rax, %rbx
movq %r12, %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x1d79f2
movq 0x20(%rsp), %rax
movl 0x4(%rax), %esi
movl 0x14(%rax), %r9d
movq 0x28(%rsp), %rcx
movq 0x18(%rsp), %rax
movq %rax, 0x8(%rsp)
leaq 0x2a620b(%rip), %rax    # 0x35cf27
movq %rax, (%rsp)
movq %r12, %rdi
xorl %edx, %edx
movq 0x30(%rsp), %r8
callq 0x1d8eed
movl %eax, %ebx
callq 0x10989a
testb %al, %al
je 0xb6dd3
callq 0x10978b
movq %rax, %r14
callq 0x102df2
leaq (%rax,%r14), %rcx
movq %rcx, %xmm1
movq 0x299b84(%rip), %xmm2   # 0x3508e0
punpckldq %xmm2, %xmm1    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0x299b88(%rip), %xmm3   # 0x3508f0
subpd %xmm3, %xmm1
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
movsd 0x299b80(%rip), %xmm4   # 0x350900
mulsd %xmm4, %xmm0
movq %r14, %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 0x2a4b14(%rip), %rdi    # 0x35b8d9
leaq 0x2a4ac5(%rip), %rsi    # 0x35b891
movb $0x3, %al
callq 0x108e02
movq 0x10(%rsp), %r14
testl %ebx, %ebx
jne 0xb71e8
callq 0x11ed94
testb %al, %al
je 0xb6e02
movq 0x40d0f8(%rip), %rax    # 0x4c3ee8
movq (%rax), %rdx
leaq 0x2a4abc(%rip), %rsi    # 0x35b8b6
movq %r13, %rdi
callq 0x1229c8
movq %r13, 0x38(%rsp)
leaq 0x2a4aa8(%rip), %rsi    # 0x35b8b6
xorl %ebx, %ebx
movq %rbp, %rdi
xorl %eax, %eax
callq 0x10906e
movq %r12, %rdi
movq %r14, %rsi
callq 0x1d9490
movq 0x20(%rsp), %r13
movzbl 0x10(%r13), %r14d
addl $0x5, %r14d
movq 0x8(%r13), %rdi
callq 0x120d23
leaq 0x2a49e0(%rip), %rdx    # 0x35b823
leaq 0x2a49e2(%rip), %rcx    # 0x35b82c
cmpb $0x0, 0x10(%r13)
cmovneq %rdx, %rcx
movq %r12, %rdi
movl %r14d, %esi
movq %rax, %rdx
xorl %r8d, %r8d
callq 0x1de74e
callq 0x10989a
testb %al, %al
je 0xb6f06
callq 0x10978b
movq %rax, %r14
callq 0x102df2
leaq (%rax,%r14), %rcx
movq %rcx, %xmm1
movq 0x299a51(%rip), %xmm2   # 0x3508e0
punpckldq %xmm2, %xmm1    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0x299a55(%rip), %xmm3   # 0x3508f0
subpd %xmm3, %xmm1
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
movsd 0x299a4d(%rip), %xmm4   # 0x350900
mulsd %xmm4, %xmm0
movq %r14, %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 0x2a49e1(%rip), %rdi    # 0x35b8d9
leaq 0x2a49b7(%rip), %rsi    # 0x35b8b6
movb $0x3, %al
callq 0x108e02
movq 0x10(%rsp), %r14
movq 0x38(%rsp), %r13
jmp 0xb71e8
movq 0x8(%r12), %rdi
callq 0x120e13
movq %rax, %r14
leaq 0x2a48fa(%rip), %rax    # 0x35b823
leaq 0x2a48fc(%rip), %rsi    # 0x35b82c
cmpb $0x0, 0x10(%r12)
cmovneq %rax, %rsi
movq %r14, %rdi
callq 0x12097f
movzbl 0x10(%r12), %ebx
movq %r14, %rdi
callq 0x120d23
leaq 0x2e5ada(%rip), %rdx    # 0x39ca31
movl %ebx, %edi
movq %rax, %rsi
movq 0x18(%rsp), %rcx
callq 0x1039a2
cmpq $0x1, %rax
sbbl %r15d, %r15d
movl %r15d, %ebx
movq %r14, %r15
movq 0x10(%rsp), %r14
testl %ebx, %ebx
movq %rax, 0x40(%rsp)
je 0xb6f86
xorl %r12d, %r12d
jmp 0xb6ff6
movq %rax, %rdi
movq %r14, %rsi
callq 0x192ab4
movq %rax, %r12
callq 0x11ed94
testb %al, %al
je 0xb6fb6
movq 0x40cf44(%rip), %rax    # 0x4c3ee8
movq (%rax), %rdx
leaq 0x2a4884(%rip), %rsi    # 0x35b832
movq %r13, %rdi
callq 0x1229c8
leaq 0x2a4875(%rip), %rsi    # 0x35b832
movq %rbp, %rdi
xorl %eax, %eax
callq 0x10906e
movq 0x20(%rsp), %rax
movl 0x4(%rax), %ebx
movq 0x8(%rax), %rdi
callq 0x120d23
xorpd %xmm0, %xmm0
movq %r12, %rdi
movq %rbx, %rsi
movq %rax, %rdx
xorl %ecx, %ecx
xorl %r8d, %r8d
movq 0x18(%rsp), %r9
callq 0x192ae3
movl %eax, %ebx
testl %ebx, %ebx
jne 0xb70b4
movq %r12, %rdi
movq 0x18(%rsp), %rsi
callq 0x192b2a
movl %eax, %ebx
callq 0x10989a
testb %al, %al
je 0xb70b4
callq 0x10978b
movq %rax, %r14
callq 0x102df2
leaq (%rax,%r14), %rcx
movq %rcx, %xmm1
movq 0x2998a8(%rip), %xmm2   # 0x3508e0
punpckldq %xmm2, %xmm1    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0x2998ac(%rip), %xmm3   # 0x3508f0
subpd %xmm3, %xmm1
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
movsd 0x2998a4(%rip), %xmm4   # 0x350900
mulsd %xmm4, %xmm0
movq %r14, %xmm5
movq 0x10(%rsp), %r14
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 0x2a4833(%rip), %rdi    # 0x35b8d9
leaq 0x2a4785(%rip), %rsi    # 0x35b832
movb $0x3, %al
callq 0x108e02
testl %ebx, %ebx
jne 0xb71c6
callq 0x11ed94
testb %al, %al
je 0xb70de
movq 0x40ce1c(%rip), %rax    # 0x4c3ee8
movq (%rax), %rdx
leaq 0x2a477b(%rip), %rsi    # 0x35b851
movq %r13, %rdi
callq 0x1229c8
leaq 0x2a476c(%rip), %rsi    # 0x35b851
movq %rbp, %rdi
xorl %eax, %eax
callq 0x10906e
movq 0x20(%rsp), %rax
movl 0x4(%rax), %ecx
movl 0x14(%rax), %r8d
movq 0x28(%rsp), %r9
movq 0x18(%rsp), %rax
movq %rax, (%rsp)
leaq 0xdbb87(%rip), %rdi     # 0x192c97
movq %r12, %rsi
movq 0x30(%rsp), %rdx
callq 0xb7270
movl %eax, %ebx
callq 0x10989a
testb %al, %al
je 0xb71c6
callq 0x10978b
movq %rax, %r14
callq 0x102df2
leaq (%rax,%r14), %rcx
movq %rcx, %xmm1
movq 0x299796(%rip), %xmm2   # 0x3508e0
punpckldq %xmm2, %xmm1    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0x29979a(%rip), %xmm3   # 0x3508f0
subpd %xmm3, %xmm1
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
movsd 0x299792(%rip), %xmm4   # 0x350900
mulsd %xmm4, %xmm0
movq %r14, %xmm5
movq 0x10(%rsp), %r14
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 0x2a4721(%rip), %rdi    # 0x35b8d9
leaq 0x2a4692(%rip), %rsi    # 0x35b851
movb $0x3, %al
callq 0x108e02
movq %r15, %rdi
callq 0x121b03
movq 0x40(%rsp), %rdi
callq 0x1040fc
movq %r12, %rdi
callq 0x192d38
xorl %r12d, %r12d
movq 0x48(%rsp), %r15
callq 0x11ed94
testb %al, %al
je 0xb720b
movq 0x40ccf0(%rip), %rax    # 0x4c3ee8
movq (%rax), %rsi
movq %r13, %rdi
callq 0x122c67
movq %r13, %rdi
callq 0x122d79
movq 0x28(%rsp), %rdi
leaq 0x2a43e9(%rip), %rsi    # 0x35b600
movl $0x156, %edx            # imm = 0x156
callq 0x109670
movq %r12, %rdi
callq 0x1d7dbc
movq 0x60(%rsp), %rdi
callq 0xf424d
movq %r14, %rdi
callq 0xee90c
movq %rbp, %rdi
callq 0x10916a
movq %r15, %rdi
callq 0x10916a
movl %ebx, %eax
addq $0x78, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0x1d7df
callq 0x1d851
callq 0x1d818
callq 0x1d7a6