// File: /workspace/github_c_makefile_star2_O1/genometools[P]genometools/src/tools/gt_readjoiner_graph.c
// Function: gt_readjoiner_graph_runner
static int gt_readjoiner_graph_runner(GT_UNUSED int argc,
    GT_UNUSED const char **argv, GT_UNUSED int parsed_args,
    void *tool_arguments, GtError *err)
{
  GtReadjoinerGraphArguments *arguments = tool_arguments;
  GtLogger *verbose_logger, *default_logger;
  GtEncseqLoader *el;
  GtEncseq *reads;
  GtTimer *timer = NULL;
  GtStrgraph *strgraph = NULL;
  const char *readset = gt_str_get(arguments->readset);
  bool eqlen;
  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 graph");
  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->limits)
    gt_strgraph_show_limits();

  if (gt_showtime_enabled())
  {
    timer = gt_timer_new_with_progress_description(
        GT_READJOINER_GRAPH_MSG_LOADSG);
    gt_timer_start(timer);
    gt_timer_show_cpu_time_by_progress(timer);
  }

  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);
  gt_assert(reads != NULL);
  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
  {
    rlen = 0;
    gt_logger_log(verbose_logger, "read length = variable");
    gt_assert(reads != NULL);
  }

  if (had_err == 0)
  {
    gt_readjoiner_graph_load_graph(&strgraph, reads, readset, rlen,
        default_logger, timer);
  }

  if (had_err == 0)
  {
    if (arguments->eld)
      gt_strgraph_show_edge_lengths_distribution(strgraph, readset,
          GT_READJOINER_SUFFIX_SG_ELEN_DISTRI);
    gt_strgraph_log_stats(strgraph, verbose_logger);
    gt_strgraph_log_space(strgraph);
  }

  if (had_err == 0 && arguments->from)
  {
    GtStrgraphVtype from_vt, to_vt;
    gt_assert(eqlen || (reads != NULL));
    gt_encseq_mirror(reads, err);
    if (arguments->fromB)
      from_vt = GT_STRGRAPH_VTYPE_B;
    else if (arguments->fromE)
      from_vt = GT_STRGRAPH_VTYPE_E;
    else
      from_vt = GT_STRGRAPH_VTYPE_A;
    if (arguments->toB)
      to_vt = GT_STRGRAPH_VTYPE_B;
    else if (arguments->toE)
      to_vt = GT_STRGRAPH_VTYPE_E;
    else
      to_vt = GT_STRGRAPH_VTYPE_A;
    had_err = gt_strgraph_find_connecting_path(strgraph, arguments->from,
        from_vt, arguments->to, to_vt, arguments->minlen, arguments->maxlen,
        arguments->firstonly, readset, GT_READJOINER_SUFFIX_CONNECTING_PATHS,
        verbose_logger, err);
  }

  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_GRAPH_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_GRAPH_MSG_CLEANSG, stdout);
    gt_logger_log(default_logger, GT_READJOINER_GRAPH_MSG_CLEANSG);
    had_err = gt_readjoiner_graph_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_GRAPH_MSG_SAVESG, stdout);
    gt_logger_log(default_logger, GT_READJOINER_GRAPH_MSG_SAVESG);
    gt_strgraph_show(strgraph, GT_STRGRAPH_BIN,
        gt_str_get(arguments->readset), GT_READJOINER_SUFFIX_SG, false);
  }

  if (had_err == 0 && arguments->dot)
  {
    if (gt_showtime_enabled())
      gt_timer_show_progress(timer, GT_READJOINER_GRAPH_MSG_BDOTSG, stdout);
    gt_logger_log(default_logger, GT_READJOINER_GRAPH_MSG_BDOTSG);
    gt_strgraph_show(strgraph, GT_STRGRAPH_DOT_BI,
        gt_str_get(arguments->readset), GT_READJOINER_SUFFIX_SG_BI_DOT, false);
  }

  if (had_err == 0 && arguments->mdot)
  {
    if (gt_showtime_enabled())
      gt_timer_show_progress(timer, GT_READJOINER_GRAPH_MSG_MDOTSG, stdout);
    gt_logger_log(default_logger, GT_READJOINER_GRAPH_MSG_MDOTSG);
    gt_strgraph_show(strgraph, GT_STRGRAPH_DOT,
        gt_str_get(arguments->readset), GT_READJOINER_SUFFIX_SG_MONO_DOT,
        false);
  }

  if (had_err == 0 && gt_str_array_size(arguments->subgraph) > 0)
  {
    had_err = gt_readjoiner_graph_show_subgraph(strgraph, arguments->subgraph,
        arguments->subgraph_other, arguments->subgraph_depth,
        arguments->subgraph_mono, arguments->subgraph_extend,
        gt_str_get(arguments->readset), default_logger, timer, err);
  }

  if (had_err == 0 && arguments->adj)
  {
    if (gt_showtime_enabled())
      gt_timer_show_progress(timer, GT_READJOINER_GRAPH_MSG_ADJSG, stdout);
    gt_logger_log(default_logger, GT_READJOINER_GRAPH_MSG_ADJSG);
    gt_strgraph_show(strgraph, GT_STRGRAPH_ADJLIST,
        gt_str_get(arguments->readset), GT_READJOINER_SUFFIX_SG_ADJLIST, false);
  }

  if (had_err == 0 && arguments->spm)
  {
    if (gt_showtime_enabled())
      gt_timer_show_progress(timer, GT_READJOINER_GRAPH_MSG_SPMSG, stdout);
    gt_logger_log(default_logger, GT_READJOINER_GRAPH_MSG_SPMSG);
    gt_strgraph_show(strgraph, GT_STRGRAPH_SPM,
        gt_str_get(arguments->readset), GT_READJOINER_SUFFIX_SG_SPMLIST, false);
  }

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

  gt_strgraph_delete(strgraph);
  strgraph = NULL;
  gt_assert(reads == NULL);
  gt_encseq_loader_delete(el);

  if (had_err == 0)
  {
    gt_readjoiner_graph_show_current_space("(final)");
  }
  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 $0x58, %rsp
movq %r8, %r12
movq %rcx, %r13
movq (%rcx), %rdi
callq 0x120d23
movq %rax, %r15
testq %r12, %r12
je 0xbac84
movq %r12, %rdi
callq 0x101a9a
testb %al, %al
jne 0xbb56c
movzbl 0xa(%r13), %edi
movq 0x409258(%rip), %r14    # 0x4c3ee8
movq (%r14), %rdx
xorl $0x1, %edi
leaq 0x294c37(%rip), %rbx    # 0x34f8d4
movq %rbx, %rsi
callq 0x108ed0
leaq 0x2a2180(%rip), %rsi    # 0x35ce2c
movq %rax, 0x10(%rsp)
movq %rax, %rdi
xorl %eax, %eax
callq 0x10906e
movzbl 0x9(%r13), %edi
movq (%r14), %rdx
movq %rbx, %rsi
callq 0x108ed0
movq %rax, %rbp
leaq 0x2a0ae6(%rip), %rsi    # 0x35b7bb
movq %rax, %rdi
xorl %eax, %eax
callq 0x10906e
leaq 0x2a0aee(%rip), %rsi    # 0x35b7d4
movq %rbp, %rdi
movq %r15, %rdx
xorl %eax, %eax
callq 0x10906e
cmpb $0x1, 0x8(%r13)
jne 0xbacff
callq 0x1d771d
callq 0x11ed94
testb %al, %al
je 0xbad2e
leaq 0x2a12c6(%rip), %rdi    # 0x35bfd5
callq 0x1226d6
movq %rax, %rbx
movq %rax, %rdi
callq 0x122733
movq %rbx, 0x8(%rsp)
movq %rbx, %rdi
callq 0x122d69
jmp 0xbad37
movq $0x0, 0x8(%rsp)
callq 0xf36ef
movq %rax, %rbx
movq %rax, %rdi
callq 0xf6920
movq %rbx, %rdi
callq 0xf69cc
movq %rbx, 0x48(%rsp)
movq %rbx, %rdi
movq %r15, 0x20(%rsp)
movq %r15, %rsi
movq %r12, %rdx
callq 0xf374b
testq %rax, %rax
je 0xbb562
movq %rax, %r14
movq %rax, %rdi
callq 0xfac0f
movl %eax, %r15d
movq %r14, %rdi
callq 0xec1e8
movq %rax, %rbx
leaq 0x2a1052(%rip), %rsi    # 0x35bde2
movq 0x10(%rsp), %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x10906e
movq %r14, %rdi
callq 0xec1d8
subq %rbx, %rax
leaq 0x1(%rax), %rdx
leaq 0x2a1057(%rip), %rsi    # 0x35be0c
movq %rbp, %rdi
xorl %eax, %eax
callq 0x10906e
movl %r15d, 0x2c(%rsp)
cmpl $0x2, %r15d
movq %r12, 0x38(%rsp)
jne 0xbadfd
movq %r14, %rdi
xorl %esi, %esi
callq 0xeffd3
movq %rax, %rbx
leaq 0x2a1050(%rip), %rsi    # 0x35be33
movq %rbp, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x10906e
movq %r14, %rdi
callq 0xee90c
xorl %r14d, %r14d
jmp 0xbae10
leaq 0x2a1041(%rip), %rsi    # 0x35be45
xorl %ebx, %ebx
movq %rbp, %rdi
xorl %eax, %eax
callq 0x10906e
movq 0x20(%rsp), %rdx
leaq 0x2a1074(%rip), %rcx    # 0x35be90
movq %r14, %r12
movq %r14, %rdi
movq %rbx, %rsi
callq 0x1d834a
movq %rax, %r15
callq 0x11ed94
testb %al, %al
movq 0x4090ad(%rip), %r14    # 0x4c3ee8
je 0xbae51
movq (%r14), %rdx
leaq 0x2a118e(%rip), %rsi    # 0x35bfd5
movq 0x8(%rsp), %rdi
callq 0x1229c8
leaq 0x2a117d(%rip), %rsi    # 0x35bfd5
movq 0x10(%rsp), %rdi
xorl %eax, %eax
callq 0x10906e
callq 0x10989a
testb %al, %al
je 0xbaf06
callq 0x10978b
movq %rax, %rbx
callq 0x102df2
leaq (%rax,%rbx), %rcx
movq %rcx, %xmm1
movq 0x295a51(%rip), %xmm2   # 0x3508e0
punpckldq %xmm2, %xmm1    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0x295a55(%rip), %xmm3   # 0x3508f0
subpd %xmm3, %xmm1
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
movsd 0x295a4d(%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 0x2a11db(%rip), %rdi    # 0x35c0d3
leaq 0x2a10f2(%rip), %rsi    # 0x35bff1
movb $0x3, %al
callq 0x108e02
cmpb $0x1, 0xd(%r13)
jne 0xbaf21
leaq 0x2a1f2c(%rip), %rdx    # 0x35ce40
movq %r15, %rdi
movq 0x20(%rsp), %rsi
callq 0x1e032b
movq %r15, %rdi
movq %rbp, %rsi
callq 0x1e1383
movq %r15, %rdi
callq 0x1e1001
cmpq $0x0, 0x40(%r13)
movq %r12, %rbx
movq %r15, 0x18(%rsp)
je 0xbafd4
cmpl $0x2, 0x2c(%rsp)
sete %al
testq %rbx, %rbx
setne %cl
orb %al, %cl
movq 0x38(%rsp), %r12
je 0xbb571
movq %rbx, %rdi
movq %r12, %rsi
callq 0xf6aed
xorl %r8d, %r8d
cmpb $0x0, 0x16(%r13)
movl $0x0, %edx
jne 0xbaf88
movzbl 0x18(%r13), %eax
movl $0x2, %edx
subl %eax, %edx
cmpb $0x0, 0x17(%r13)
jne 0xbaf9d
movzbl 0x19(%r13), %eax
movl $0x2, %r8d
subl %eax, %r8d
movq 0x40(%r13), %rsi
movq 0x48(%r13), %rcx
movq 0x50(%r13), %r9
movzbl 0x15(%r13), %eax
leaq 0x2a1eac(%rip), %r10    # 0x35ce61
movq %r15, %rdi
pushq %r12
pushq %rbp
pushq %r10
pushq 0x38(%rsp)
pushq %rax
pushq 0x58(%r13)
callq 0x1ddea4
addq $0x30, %rsp
movl %eax, %r15d
jmp 0xbafd7
xorl %r15d, %r15d
cmpl $0x2, 0x2c(%rsp)
sete %al
testq %rbx, %rbx
sete %cl
orb %al, %cl
jne 0xbb00b
cmpb $0x0, 0xb(%r13)
jne 0xbb00b
movq %rbx, %rdi
callq 0xee90c
xorl %ebx, %ebx
testl %r15d, %r15d
jne 0xbb00b
movq 0x18(%rsp), %rdi
xorl %esi, %esi
callq 0x1d9490
testl %r15d, %r15d
jne 0xbb1d4
cmpb $0x1, 0xc(%r13)
jne 0xbb070
callq 0x11ed94
testb %al, %al
je 0xbb038
movq (%r14), %rdx
leaq 0x2a09ca(%rip), %rsi    # 0x35b9f8
movq 0x8(%rsp), %rdi
callq 0x1229c8
movq 0x18(%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
xorl %r15d, %r15d
cmpb $0x1, 0xb(%r13)
jne 0xbb1d4
movq %rbx, 0x30(%rsp)
callq 0x11ed94
testb %al, %al
je 0xbb0a0
movq (%r14), %rdx
leaq 0x2a0dc6(%rip), %rsi    # 0x35be5c
movq 0x8(%rsp), %rdi
callq 0x1229c8
leaq 0x2a0db5(%rip), %rsi    # 0x35be5c
xorl %ebx, %ebx
movq 0x10(%rsp), %rdi
xorl %eax, %eax
callq 0x10906e
movl 0x1c(%r13), %eax
movl %eax, 0x20(%rsp)
movl 0x20(%r13), %r15d
movq %r13, 0x40(%rsp)
movl 0x24(%r13), %eax
movq %rax, 0x50(%rsp)
leaq 0x2a0f2a(%rip), %rsi    # 0x35c000
movq %rbp, %r13
movq %rbp, %rdi
xorl %eax, %eax
callq 0x10906e
testl %r15d, %r15d
je 0xbb12a
xorl %r14d, %r14d
xorl %ebp, %ebp
movl $0x1, %edx
movq 0x18(%rsp), %rdi
xorl %esi, %esi
xorl %ecx, %ecx
callq 0x1dd144
movq %rax, %r12
addq %rax, %r14
incl %ebp
movq %r13, %rdi
leaq 0x2a0eff(%rip), %rsi    # 0x35c011
movl %ebp, %edx
movq %rax, %rcx
xorl %eax, %eax
callq 0x10906e
cmpl %r15d, %ebp
jae 0xbb12f
testq %r12, %r12
jne 0xbb0ed
jmp 0xbb12f
xorl %ebp, %ebp
xorl %r14d, %r14d
leaq 0x2a0f03(%rip), %rsi    # 0x35c039
movq %r13, %rdi
movl %ebp, %edx
movq %r13, %rbp
movq %r14, %rcx
xorl %eax, %eax
callq 0x10906e
leaq 0x2a0f13(%rip), %rsi    # 0x35c062
movq %r13, %rdi
xorl %eax, %eax
callq 0x10906e
cmpl $0x0, 0x20(%rsp)
je 0xbb1a7
leaq 0x2a0f11(%rip), %r13    # 0x35c078
xorl %r14d, %r14d
xorl %ebx, %ebx
movq 0x18(%rsp), %r15
movq %r15, %rdi
movq 0x50(%rsp), %rsi
xorl %edx, %edx
callq 0x1dc65a
movq %rax, %r12
addq %rax, %r14
incl %ebx
movq %rbp, %rdi
movq %r13, %rsi
movl %ebx, %edx
movq %rax, %rcx
xorl %eax, %eax
callq 0x10906e
cmpl 0x20(%rsp), %ebx
jae 0xbb1aa
testq %r12, %r12
jne 0xbb171
jmp 0xbb1aa
xorl %r14d, %r14d
leaq 0x2a0ef4(%rip), %rsi    # 0x35c0a5
xorl %r15d, %r15d
movq %rbp, %rdi
movl %ebx, %edx
movq %r14, %rcx
xorl %eax, %eax
callq 0x10906e
movq 0x408d1e(%rip), %r14    # 0x4c3ee8
movq 0x40(%rsp), %r13
movq 0x30(%rsp), %rbx
testl %r15d, %r15d
jne 0xbb367
cmpb $0x1, 0xe(%r13)
movq 0x18(%rsp), %r15
jne 0xbb23c
callq 0x11ed94
testb %al, %al
je 0xbb206
movq (%r14), %rdx
leaq 0x2a0c7a(%rip), %rsi    # 0x35be76
movq 0x8(%rsp), %rdi
callq 0x1229c8
leaq 0x2a0c69(%rip), %rsi    # 0x35be76
movq 0x10(%rsp), %rdi
xorl %eax, %eax
callq 0x10906e
movq (%r13), %rdi
callq 0x120d23
leaq 0x2a0c67(%rip), %rcx    # 0x35be90
movq %r15, %rdi
movl $0x4, %esi
movq %rax, %rdx
xorl %r8d, %r8d
callq 0x1de74e
cmpb $0x1, 0xf(%r13)
jne 0xbb296
callq 0x11ed94
testb %al, %al
je 0xbb260
movq (%r14), %rdx
leaq 0x2a1c18(%rip), %rsi    # 0x35ce6e
movq 0x8(%rsp), %rdi
callq 0x1229c8
leaq 0x2a1c07(%rip), %rsi    # 0x35ce6e
movq 0x10(%rsp), %rdi
xorl %eax, %eax
callq 0x10906e
movq (%r13), %rdi
callq 0x120d23
leaq 0x2a1c20(%rip), %rcx    # 0x35cea3
movq %r15, %rdi
movl $0x1, %esi
movq %rax, %rdx
xorl %r8d, %r8d
callq 0x1de74e
cmpb $0x1, 0x10(%r13)
jne 0xbb2ed
callq 0x11ed94
testb %al, %al
je 0xbb2ba
movq (%r14), %rdx
leaq 0x2a1bfa(%rip), %rsi    # 0x35ceaa
movq 0x8(%rsp), %rdi
callq 0x1229c8
leaq 0x2a1be9(%rip), %rsi    # 0x35ceaa
movq 0x10(%rsp), %rdi
xorl %eax, %eax
callq 0x10906e
movq (%r13), %rdi
callq 0x120d23
leaq 0x2a1c04(%rip), %rcx    # 0x35cee1
movq %r15, %rdi
xorl %esi, %esi
movq %rax, %rdx
xorl %r8d, %r8d
callq 0x1de74e
movq 0x28(%r13), %rdi
callq 0x121e78
testq %rax, %rax
je 0xbb364
movq (%r13), %rdi
movq %rbx, 0x30(%rsp)
movq 0x28(%r13), %rbx
movq 0x30(%r13), %r14
movq 0x38(%r13), %r15
movq %rbp, 0x20(%rsp)
movzbl 0x13(%r13), %ebp
movzbl 0x14(%r13), %r12d
callq 0x120d23
movq 0x18(%rsp), %rdi
movq %rbx, %rsi
movq 0x30(%rsp), %rbx
movq %r14, %rdx
movq 0x408bad(%rip), %r14    # 0x4c3ee8
movq %r15, %rcx
movl %ebp, %r8d
movq 0x20(%rsp), %rbp
movl %r12d, %r9d
pushq 0x38(%rsp)
pushq 0x10(%rsp)
pushq 0x20(%rsp)
pushq %rax
callq 0xbb576
addq $0x20, %rsp
movl %eax, %r15d
jmp 0xbb367
xorl %r15d, %r15d
testl %r15d, %r15d
jne 0xbb428
cmpb $0x1, 0x11(%r13)
jne 0xbb3cc
callq 0x11ed94
testb %al, %al
je 0xbb394
movq (%r14), %rdx
leaq 0x2a1b5e(%rip), %rsi    # 0x35cee8
movq 0x8(%rsp), %rdi
callq 0x1229c8
leaq 0x2a1b4d(%rip), %rsi    # 0x35cee8
movq 0x10(%rsp), %rdi
xorl %eax, %eax
callq 0x10906e
movq (%r13), %rdi
callq 0x120d23
leaq 0x2a1b4d(%rip), %rcx    # 0x35cf04
movq 0x18(%rsp), %rdi
movl $0x3, %esi
movq %rax, %rdx
xorl %r8d, %r8d
callq 0x1de74e
cmpb $0x1, 0x12(%r13)
jne 0xbb428
callq 0x11ed94
testb %al, %al
je 0xbb3f0
movq (%r14), %rdx
leaq 0x2a1b23(%rip), %rsi    # 0x35cf09
movq 0x8(%rsp), %rdi
callq 0x1229c8
leaq 0x2a1b12(%rip), %rsi    # 0x35cf09
movq 0x10(%rsp), %rdi
xorl %eax, %eax
callq 0x10906e
movq (%r13), %rdi
callq 0x120d23
leaq 0x2a1b11(%rip), %rcx    # 0x35cf24
movq 0x18(%rsp), %rdi
movl $0x2, %esi
movq %rax, %rdx
xorl %r8d, %r8d
callq 0x1de74e
cmpl $0x2, 0x2c(%rsp)
sete %al
testq %rbx, %rbx
sete %cl
orb %al, %cl
jne 0xbb455
movq %rbx, %rdi
callq 0xee90c
xorl %ebx, %ebx
testl %r15d, %r15d
jne 0xbb455
movq 0x18(%rsp), %rdi
xorl %esi, %esi
callq 0x1d9490
movq 0x18(%rsp), %rdi
callq 0x1d7dbc
testq %rbx, %rbx
jne 0xbb567
movq 0x48(%rsp), %rdi
callq 0xf424d
testl %r15d, %r15d
jne 0xbb51d
callq 0x10989a
testb %al, %al
je 0xbb51d
callq 0x10978b
movq %rax, %rbx
callq 0x102df2
leaq (%rax,%rbx), %rcx
movq %rcx, %xmm1
movq 0x29543a(%rip), %xmm2   # 0x3508e0
punpckldq %xmm2, %xmm1    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0x29543e(%rip), %xmm3   # 0x3508f0
subpd %xmm3, %xmm1
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
movsd 0x295436(%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 0x2a0bc4(%rip), %rdi    # 0x35c0d3
leaq 0x2a1a16(%rip), %rsi    # 0x35cf2c
movb $0x3, %al
callq 0x108e02
callq 0x11ed94
testb %al, %al
je 0xbb53e
movq (%r14), %rsi
movq 0x8(%rsp), %rbx
movq %rbx, %rdi
callq 0x122c67
movq %rbx, %rdi
callq 0x122d79
movq 0x10(%rsp), %rdi
callq 0x10916a
movq %rbp, %rdi
callq 0x10916a
movl %r15d, %eax
addq $0x58, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0x1df1a
callq 0x1dee1
callq 0x1de6f
callq 0x1dea8