// File: /workspace/github_c_makefile_star2_O3/genometools[P]genometools/src/tools/gt_readjoiner_gfa.c
// Function: gt_readjoiner_gfa_runner
static int gt_readjoiner_gfa_runner(GT_UNUSED int argc,
    GT_UNUSED const char **argv, GT_UNUSED int parsed_args,
    void *tool_arguments, GtError *err)
{
  GtReadjoinerGfaArguments *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_GFA_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 gfa");
  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);
  if (arguments->gfa1)
    gt_logger_log(verbose_logger, "GFA version = 1.0");
  else
    gt_logger_log(verbose_logger, "GFA version = 2.0");

  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_gfa_show_current_space(GT_READJOINER_GFA_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_GFA_MSG_CNT, stdout);
    gt_logger_log(default_logger, GT_READJOINER_GFA_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_gfa_show_current_space(GT_READJOINER_GFA_MSG_CNT);
  }
  if (!arguments->sg)
  {
    GtStr *filename = NULL;
    GtFile *file = NULL;
    GtGfaWriter *gw = NULL;
    if (had_err == 0)
    {
      filename = gt_str_clone(arguments->readset);
      gt_str_append_cstr(filename, arguments->gz ?
          GT_READJOINER_SUFFIX_SG_GFA_GZ : GT_READJOINER_SUFFIX_SG_GFA);
      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)
    {
      gw = gt_gfa_writer_new(file, reads, arguments->gfa1 ?
          GT_GFA_VERSION_1_0 : GT_GFA_VERSION_2_0);
      if (gt_showtime_enabled())
        gt_timer_show_progress(timer, GT_READJOINER_GFA_MSG_VERTICES,
            stdout);
      gt_logger_log(default_logger, GT_READJOINER_GFA_MSG_VERTICES);
      had_err = gt_gfa_writer_show_header(gw,
          (GtUword)arguments->minmatchlength,
          gt_str_get(arguments->readset), false, false, err);
    }
    if (had_err == 0)
    {
      had_err = gt_gfa_writer_show_segments(gw, err);
      gt_readjoiner_gfa_show_current_space(GT_READJOINER_GFA_MSG_VERTICES);
    }
    if (had_err == 0)
    {
      if (gt_showtime_enabled())
        gt_timer_show_progress(timer, GT_READJOINER_GFA_MSG_EDGES, stdout);
      gt_logger_log(default_logger, GT_READJOINER_GFA_MSG_EDGES);
      had_err = gt_readjoiner_gfa_use_spmfiles(gt_spmproc_show_gfa,
          gw, readset, arguments->minmatchlength, arguments->nspmfiles,
          contained, err);
      gt_readjoiner_gfa_show_current_space(GT_READJOINER_GFA_MSG_EDGES);
    }
    gt_str_delete(filename);
    gt_file_delete(file);
    gt_gfa_writer_delete(gw);
  }
  else
  {
    if (had_err == 0)
    {
      if (gt_showtime_enabled())
        gt_timer_show_progress(timer, GT_READJOINER_GFA_MSG_COUNT, stdout);
      gt_logger_log(default_logger, GT_READJOINER_GFA_MSG_COUNT);
      strgraph = gt_strgraph_new(nreads);
      had_err = gt_readjoiner_gfa_use_spmfiles(gt_spmproc_strgraph_count,
          strgraph, readset, arguments->minmatchlength, arguments->nspmfiles,
          contained, err);
      gt_readjoiner_gfa_show_current_space(GT_READJOINER_GFA_MSG_COUNT);
    }
    if (had_err == 0)
    {
      if (gt_showtime_enabled())
        gt_timer_show_progress(timer, GT_READJOINER_GFA_MSG_INSERT, stdout);
      gt_logger_log(default_logger, GT_READJOINER_GFA_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_gfa_show_current_space(GT_READJOINER_GFA_MSG_INSERT);
    }
    if (had_err == 0)
    {
      if (gt_showtime_enabled())
        gt_timer_show_progress(timer, GT_READJOINER_GFA_MSG_OUTPUT, stdout);
      gt_logger_log(default_logger, GT_READJOINER_GFA_MSG_OUTPUT);
      gt_strgraph_set_encseq(strgraph, reads);
      gt_strgraph_show(strgraph,
          arguments->gfa1 ?
           (arguments->gz ? GT_STRGRAPH_GFA1_GZ : GT_STRGRAPH_GFA1) :
           (arguments->gz ? GT_STRGRAPH_GFA2_GZ : GT_STRGRAPH_GFA2),
          gt_str_get(arguments->readset),
          arguments->gz ? GT_READJOINER_SUFFIX_SG_GFA_GZ :
          GT_READJOINER_SUFFIX_SG_GFA, false);
      gt_readjoiner_gfa_show_current_space(GT_READJOINER_GFA_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, %r15
movq %rcx, %r12
movq $0x0, 0x38(%rsp)
movq 0x8(%rcx), %rdi
callq 0x11b0a1
movq %rax, %r13
callq 0x119160
testb %al, %al
je 0xb78f2
leaq 0x2a0828(%rip), %rdi    # 0x3580fb
callq 0x11c986
movq %rax, %rbx
movq %rax, %rdi
callq 0x11c9e3
movq %rbx, 0x28(%rsp)
movq %rbx, %rdi
callq 0x11d044
jmp 0xb78fb
movq $0x0, 0x28(%rsp)
testq %r15, %r15
je 0xb7910
movq %r15, %rdi
callq 0xfcc32
testb %al, %al
jne 0xb845b
movzbl 0x1(%r12), %edi
movq 0x4015bb(%rip), %r14    # 0x4b8ed8
movq (%r14), %rdx
xorl $0x1, %edi
leaq 0x28efaa(%rip), %rbx    # 0x3468d4
movq %rbx, %rsi
callq 0x103e40
movq %rax, %rbp
leaq 0x29be96(%rip), %rsi    # 0x3537d2
movq %rax, %rdi
xorl %eax, %eax
callq 0x103fe1
movzbl (%r12), %edi
movq (%r14), %rdx
movq %rbx, %rsi
callq 0x103e40
movq %rax, %r14
leaq 0x29ae23(%rip), %rsi    # 0x352783
movq %rax, %rdi
xorl %eax, %eax
callq 0x103fe1
leaq 0x29ae2b(%rip), %rsi    # 0x35279c
movq %r14, %rdi
movq %r13, %rdx
xorl %eax, %eax
callq 0x103fe1
movl 0x4(%r12), %edx
testl %edx, %edx
je 0xb7998
leaq 0x29ae20(%rip), %rsi    # 0x3527ae
movq %r14, %rdi
xorl %eax, %eax
callq 0x103fe1
leaq 0x29be45(%rip), %rax    # 0x3537e4
leaq 0x29be50(%rip), %rsi    # 0x3537f6
cmpb $0x0, 0x18(%r12)
cmovneq %rax, %rsi
movq %r14, %rdi
xorl %eax, %eax
callq 0x103fe1
callq 0xef0cd
movq %rax, %rbx
movq %rax, %rdi
callq 0xf22df
movq %rbx, %rdi
callq 0xf238b
movq %rbx, 0x60(%rsp)
movq %rbx, %rdi
movq %r13, %rsi
movq %r15, 0x30(%rsp)
movq %r15, %rdx
callq 0xef129
movq %rax, %r15
movq %rax, %rdi
callq 0xe7bac
movq %rax, 0x18(%rsp)
testq %r15, %r15
je 0xb8456
movq %r15, %rdi
callq 0xf64f6
movl %eax, 0x40(%rsp)
callq 0x104815
testb %al, %al
je 0xb7ab1
callq 0x104706
movq %rax, %rbx
callq 0xfdf34
leaq (%rax,%rbx), %rcx
movq %rcx, %xmm1
movq 0x28fea6(%rip), %xmm2   # 0x3478e0
punpckldq %xmm2, %xmm1    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0x28feaa(%rip), %xmm3   # 0x3478f0
subpd %xmm3, %xmm1
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
movsd 0x28fea2(%rip), %xmm4   # 0x347900
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 0x29adfe(%rip), %rdi    # 0x3528a1
leaq 0x2a0651(%rip), %rsi    # 0x3580fb
movb $0x3, %al
callq 0x103d72
cmpl $0x2, 0x40(%rsp)
movq %r12, 0x48(%rsp)
movq %r15, 0x20(%rsp)
jne 0xb7ad3
cmpb $0x0, 0x11(%r12)
je 0xb7e84
jmp 0xb7cd6
movq 0x8(%r12), %rdi
callq 0x11b191
movq %rax, %r15
callq 0x119160
testb %al, %al
je 0xb7b04
movq 0x4013e8(%rip), %rax    # 0x4b8ed8
movq (%rax), %rdx
leaq 0x29accb(%rip), %rsi    # 0x3527c5
movq 0x28(%rsp), %rdi
callq 0x11cc90
movq %r13, 0x50(%rsp)
movq %r14, 0x10(%rsp)
leaq 0x29acb0(%rip), %rsi    # 0x3527c5
movq %rbp, 0x58(%rsp)
movq %rbp, %rdi
xorl %eax, %eax
callq 0x103fe1
leaq 0x29acb9(%rip), %rsi    # 0x3527e4
movq %r15, %rdi
callq 0x11acf3
movq %r15, %rdi
callq 0x11b0a1
leaq 0x38(%rsp), %rdx
leaq 0x70(%rsp), %rcx
movq %rax, %rdi
movl $0x1, %esi
movq 0x30(%rsp), %r8
callq 0x1c2117
movl %eax, %ebx
cmpl $0x2, 0x14(%r12)
jb 0xb7bfb
testl %ebx, %ebx
jne 0xb7bfb
movl $0x2, %ebp
leaq 0x38(%rsp), %r13
leaq 0x68(%rsp), %r14
movq 0x48(%rsp), %r12
leal -0x1(%rbp), %ebx
movq %r15, %rdi
callq 0x11b132
movq 0x8(%r12), %rsi
movq %r15, %rdi
callq 0x11adc1
movq %r15, %rdi
movl $0x2e, %esi
callq 0x11af23
movq %r15, %rdi
movl %ebx, %esi
callq 0x11b054
movq %r15, %rdi
leaq 0x29ac2c(%rip), %rsi    # 0x3527e6
callq 0x11acf3
movq %r15, %rdi
callq 0x11b0a1
movq %rax, %rdi
xorl %esi, %esi
movq %r13, %rdx
movq %r14, %rcx
movq 0x30(%rsp), %r8
callq 0x1c2117
movl %eax, %ebx
movq 0x70(%rsp), %rax
cmpq 0x68(%rsp), %rax
jne 0xb8451
cmpl 0x14(%r12), %ebp
jae 0xb7bfb
incl %ebp
testl %ebx, %ebx
je 0xb7b81
movq %r15, %rdi
callq 0x11bdbf
callq 0x104815
testb %al, %al
je 0xb7ca5
callq 0x104706
movq %rax, %r14
callq 0xfdf34
leaq (%rax,%r14), %rcx
movq %rcx, %xmm1
movq 0x28fcb2(%rip), %xmm2   # 0x3478e0
punpckldq %xmm2, %xmm1    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0x28fcb6(%rip), %xmm3   # 0x3478f0
subpd %xmm3, %xmm1
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
movsd 0x28fcae(%rip), %xmm4   # 0x347900
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 0x29ac0a(%rip), %rdi    # 0x3528a1
leaq 0x29ab27(%rip), %rsi    # 0x3527c5
movb $0x3, %al
callq 0x103d72
movq 0x48(%rsp), %r12
cmpb $0x0, 0x11(%r12)
movq 0x20(%rsp), %r15
movq 0x50(%rsp), %r13
je 0xb7e6b
testl %ebx, %ebx
movq 0x58(%rsp), %rbp
movq 0x10(%rsp), %r14
je 0xb7cd6
xorl %r13d, %r13d
jmp 0xb817e
callq 0x119160
testb %al, %al
je 0xb7cfa
movq 0x4011f2(%rip), %rax    # 0x4b8ed8
movq (%rax), %rdx
leaq 0x29ab45(%rip), %rsi    # 0x352835
movq 0x28(%rsp), %rdi
callq 0x11cc90
leaq 0x29ab34(%rip), %rsi    # 0x352835
movq %rbp, %rdi
xorl %eax, %eax
callq 0x103fe1
movq 0x18(%rsp), %rdi
callq 0x1ce1d6
movq %rax, %rsi
movl 0x4(%r12), %ecx
movl 0x14(%r12), %r8d
movq 0x38(%rsp), %r9
movq 0x30(%rsp), %rax
movq %rax, (%rsp)
leaq 0x117532(%rip), %rdi    # 0x1cf269
movq %rsi, 0x18(%rsp)
movq %r13, %rdx
callq 0xb8460
movl %eax, %ebx
callq 0x104815
testb %al, %al
je 0xb7e05
callq 0x104706
movq %rbp, %r12
movq %r13, %rbp
movq %r15, %r13
movq %r14, %r15
movq %rax, %r14
callq 0xfdf34
leaq (%rax,%r14), %rcx
movq %rcx, %xmm1
movq 0x28fb63(%rip), %xmm2   # 0x3478e0
punpckldq %xmm2, %xmm1    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0x28fb67(%rip), %xmm3   # 0x3478f0
subpd %xmm3, %xmm1
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
movsd 0x28fb5f(%rip), %xmm4   # 0x347900
mulsd %xmm4, %xmm0
movq %r14, %xmm5
movq %r15, %r14
movq %r13, %r15
movq %rbp, %r13
movq %r12, %rbp
movq 0x48(%rsp), %r12
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 0x29aaaa(%rip), %rdi    # 0x3528a1
leaq 0x29aa37(%rip), %rsi    # 0x352835
movb $0x3, %al
callq 0x103d72
testl %ebx, %ebx
jne 0xb8179
callq 0x119160
testb %al, %al
je 0xb7e31
movq 0x4010bb(%rip), %rax    # 0x4b8ed8
movq (%rax), %rdx
leaq 0x29aa32(%rip), %rsi    # 0x352859
movq 0x28(%rsp), %rdi
callq 0x11cc90
movq %r14, 0x10(%rsp)
leaq 0x29aa1c(%rip), %rsi    # 0x352859
xorl %ebx, %ebx
movq %rbp, %rdi
xorl %eax, %eax
callq 0x103fe1
cmpl $0x2, 0x40(%rsp)
jne 0xb807a
xorl %r14d, %r14d
movq 0x20(%rsp), %rdi
xorl %esi, %esi
callq 0xeb9d2
movq %rax, %rbx
jmp 0xb807f
testl %ebx, %ebx
movq 0x58(%rsp), %rbp
movq 0x10(%rsp), %r14
je 0xb7e84
xorl %r15d, %r15d
xorl %r13d, %r13d
jmp 0xb7f7d
movq %r13, 0x50(%rsp)
movq 0x8(%r12), %rdi
callq 0x11b191
movq %rax, %r13
leaq 0x29b96b(%rip), %rax    # 0x353808
leaq 0x29b96c(%rip), %rsi    # 0x353810
cmpb $0x0, 0x10(%r12)
cmovneq %rax, %rsi
movq %r13, %rdi
callq 0x11acf3
movzbl 0x10(%r12), %ebx
movq %r13, %rdi
callq 0x11b0a1
leaq 0x2db6ea(%rip), %rdx    # 0x3935b5
movl %ebx, %edi
movq %rax, %rsi
movq 0x30(%rsp), %rcx
callq 0xfead5
testq %rax, %rax
je 0xb7f75
movq %rax, %r15
movq %r13, 0x40(%rsp)
movzbl 0x18(%r12), %edx
xorl $0x1, %edx
movq %rax, %rdi
movq 0x20(%rsp), %rsi
callq 0x1b01ec
movq %rax, %r13
callq 0x119160
testb %al, %al
je 0xb7f28
movq 0x400fc4(%rip), %rax    # 0x4b8ed8
movq (%rax), %rdx
leaq 0x29b8f7(%rip), %rsi    # 0x353815
movq 0x28(%rsp), %rdi
callq 0x11cc90
leaq 0x29b8e6(%rip), %rsi    # 0x353815
movq %rbp, %rdi
xorl %eax, %eax
callq 0x103fe1
movq 0x48(%rsp), %rax
movl 0x4(%rax), %ebx
movq 0x8(%rax), %rdi
callq 0x11b0a1
movq %r13, %rdi
movq %rbx, %rsi
movq %rax, %rdx
xorl %ecx, %ecx
xorl %r8d, %r8d
movq 0x30(%rsp), %r12
movq %r12, %r9
callq 0x1b0242
testl %eax, %eax
je 0xb7fa5
movl %eax, %ebx
movq %r13, %r12
movq 0x40(%rsp), %r13
jmp 0xb7f80
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
xorl %r15d, %r15d
xorl %r12d, %r12d
movq %r13, %rdi
callq 0x11bdbf
movq %r15, %rdi
callq 0xff22c
movq %r12, %rdi
callq 0x1b0561
xorl %r13d, %r13d
movq 0x20(%rsp), %r15
jmp 0xb817e
movq %r13, 0x18(%rsp)
movq %r13, %rdi
movq %r12, %rsi
callq 0x1b02a4
movl %eax, %ebx
callq 0x104815
testb %al, %al
je 0xb8063
callq 0x104706
movq %r14, 0x10(%rsp)
movq %rax, %r14
callq 0xfdf34
leaq (%rax,%r14), %rcx
movq %rcx, %xmm1
movq 0x28f8f9(%rip), %xmm2   # 0x3478e0
punpckldq %xmm2, %xmm1    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0x28f8fd(%rip), %xmm3   # 0x3478f0
subpd %xmm3, %xmm1
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
movsd 0x28f8f5(%rip), %xmm4   # 0x347900
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 0x29a84c(%rip), %rdi    # 0x3528a1
leaq 0x29b7b9(%rip), %rsi    # 0x353815
movb $0x3, %al
callq 0x103d72
testl %ebx, %ebx
movq 0x40(%rsp), %r13
je 0xb8336
movq 0x18(%rsp), %r12
jmp 0xb7f80
movq 0x20(%rsp), %r14
movq 0x18(%rsp), %r15
movq %r15, %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x1ce2a1
movl 0x4(%r12), %esi
movl 0x14(%r12), %r9d
movq 0x38(%rsp), %rcx
movq 0x30(%rsp), %rax
movq %rax, 0x8(%rsp)
leaq 0x29be3d(%rip), %rax    # 0x353eef
movq %rax, (%rsp)
movq %r15, %rdi
xorl %edx, %edx
movq %r13, %r8
callq 0x1cf770
movl %eax, %ebx
callq 0x104815
testb %al, %al
je 0xb8167
callq 0x104706
movq %rax, %r14
callq 0xfdf34
leaq (%rax,%r14), %rcx
movq %rcx, %xmm1
movq 0x28f7f0(%rip), %xmm2   # 0x3478e0
punpckldq %xmm2, %xmm1    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0x28f7f4(%rip), %xmm3   # 0x3478f0
subpd %xmm3, %xmm1
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
movsd 0x28f7ec(%rip), %xmm4   # 0x347900
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 0x29a748(%rip), %rdi    # 0x3528a1
leaq 0x29a6f9(%rip), %rsi    # 0x352859
movb $0x3, %al
callq 0x103d72
testl %ebx, %ebx
je 0xb81f7
movq 0x10(%rsp), %r14
movq 0x20(%rsp), %r15
movq 0x18(%rsp), %r13
callq 0x119160
testb %al, %al
je 0xb81a6
movq 0x400d4a(%rip), %rax    # 0x4b8ed8
movq (%rax), %rsi
movq 0x28(%rsp), %r12
movq %r12, %rdi
callq 0x11cf39
movq %r12, %rdi
callq 0x11d054
movq 0x38(%rsp), %rdi
leaq 0x29b530(%rip), %rsi    # 0x3536e2
movl $0x165, %edx            # imm = 0x165
callq 0x1045eb
movq %r13, %rdi
callq 0x1ce66b
movq 0x60(%rsp), %rdi
callq 0xefbe3
movq %r15, %rdi
callq 0xea375
movq %rbp, %rdi
callq 0x1040e0
movq %r14, %rdi
callq 0x1040e0
movl %ebx, %eax
addq $0x78, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0x119160
testb %al, %al
movq 0x18(%rsp), %r13
je 0xb8220
movq 0x400ccc(%rip), %rax    # 0x4b8ed8
movq (%rax), %rdx
leaq 0x29b638(%rip), %rsi    # 0x35384e
movq 0x28(%rsp), %rdi
callq 0x11cc90
leaq 0x29b627(%rip), %rsi    # 0x35384e
xorl %ebx, %ebx
movq %rbp, %rdi
xorl %eax, %eax
callq 0x103fe1
movq %r13, %rdi
movq 0x20(%rsp), %rsi
callq 0x1cfd23
movzbl 0x18(%r12), %eax
movzbl 0x10(%r12), %ecx
xorl $0x1, %eax
leal (%rcx,%rax,2), %r14d
addl $0x7, %r14d
movq 0x8(%r12), %rdi
callq 0x11b0a1
leaq 0x29b5a0(%rip), %rdx    # 0x353808
leaq 0x29b5a1(%rip), %rcx    # 0x353810
cmpb $0x0, 0x10(%r12)
cmovneq %rdx, %rcx
movq %r13, %rdi
movl %r14d, %esi
movq %rax, %rdx
xorl %r8d, %r8d
callq 0x1d4fe5
callq 0x104815
testb %al, %al
je 0xb832c
callq 0x104706
movq %rax, %r14
callq 0xfdf34
leaq (%rax,%r14), %rcx
movq %rcx, %xmm1
movq 0x28f62b(%rip), %xmm2   # 0x3478e0
punpckldq %xmm2, %xmm1    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0x28f62f(%rip), %xmm3   # 0x3478f0
subpd %xmm3, %xmm1
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
movsd 0x28f627(%rip), %xmm4   # 0x347900
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 0x29a583(%rip), %rdi    # 0x3528a1
leaq 0x29b529(%rip), %rsi    # 0x35384e
movb $0x3, %al
callq 0x103d72
movq 0x10(%rsp), %r14
jmp 0xb7f9b
callq 0x119160
testb %al, %al
movq 0x18(%rsp), %r12
je 0xb835f
movq 0x400b8d(%rip), %rax    # 0x4b8ed8
movq (%rax), %rdx
leaq 0x29b4de(%rip), %rsi    # 0x353833
movq 0x28(%rsp), %rdi
callq 0x11cc90
leaq 0x29b4cd(%rip), %rsi    # 0x353833
movq %rbp, %rdi
xorl %eax, %eax
callq 0x103fe1
movq 0x48(%rsp), %rax
movl 0x4(%rax), %ecx
movl 0x14(%rax), %r8d
movq 0x38(%rsp), %r9
movq 0x30(%rsp), %rax
movq %rax, (%rsp)
leaq 0xf80ac(%rip), %rdi     # 0x1b043d
movq %r12, %rsi
movq 0x50(%rsp), %rdx
callq 0xb8460
movl %eax, %ebx
callq 0x104815
testb %al, %al
je 0xb7f80
callq 0x104706
movq %r14, 0x10(%rsp)
movq %rax, %r14
callq 0xfdf34
leaq (%rax,%r14), %rcx
movq %rcx, %xmm1
movq 0x28f510(%rip), %xmm2   # 0x3478e0
punpckldq %xmm2, %xmm1    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0x28f514(%rip), %xmm3   # 0x3478f0
subpd %xmm3, %xmm1
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
movsd 0x28f50c(%rip), %xmm4   # 0x347900
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 0x29a463(%rip), %rdi    # 0x3528a1
leaq 0x29b3ee(%rip), %rsi    # 0x353833
movb $0x3, %al
callq 0x103d72
jmp 0xb7f80
callq 0x1daac
callq 0x1dae5
callq 0x1da73