// File: /workspace/github_c_makefile_star2_O3/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, %r15
movq %rcx, %r14
movq (%rcx), %rdi
callq 0x11b0a1
movq %rax, %rbx
testq %r15, %r15
je 0xb8bc8
movq %r15, %rdi
callq 0xfcc32
testb %al, %al
jne 0xb9501
movq %r15, 0x30(%rsp)
movzbl 0xa(%r14), %edi
movq 0x4002ff(%rip), %r15    # 0x4b8ed8
movq (%r15), %rdx
xorl $0x1, %edi
movq %r14, 0x18(%rsp)
leaq 0x28dce9(%rip), %r14    # 0x3468d4
movq %r14, %rsi
callq 0x103e40
leaq 0x29b1fa(%rip), %rsi    # 0x353df4
movq %rax, 0x10(%rsp)
movq %rax, %rdi
xorl %eax, %eax
callq 0x103fe1
movq 0x18(%rsp), %rax
movzbl 0x9(%rax), %edi
movq (%r15), %rdx
movq %r14, %rsi
callq 0x103e40
movq %rax, %rbp
leaq 0x299b5c(%rip), %rsi    # 0x352783
movq %rax, %rdi
xorl %eax, %eax
callq 0x103fe1
leaq 0x299b64(%rip), %rsi    # 0x35279c
movq %rbp, %rdi
movq %rbx, %rdx
xorl %eax, %eax
callq 0x103fe1
movq 0x18(%rsp), %rax
cmpb $0x1, 0x8(%rax)
jne 0xb8c55
callq 0x1cdfc1
callq 0x119160
testb %al, %al
je 0xb8c7f
leaq 0x29a338(%rip), %rdi    # 0x352f9d
callq 0x11c986
movq %rax, %r13
movq %rax, %rdi
callq 0x11c9e3
movq %r13, %rdi
callq 0x11d044
jmp 0xb8c82
xorl %r13d, %r13d
movq 0x30(%rsp), %r15
callq 0xef0cd
movq %rax, %r14
movq %rax, %rdi
callq 0xf22df
movq %r14, %rdi
callq 0xf238b
movq %r14, 0x38(%rsp)
movq %r14, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0xef129
testq %rax, %rax
je 0xb94fc
movq %rax, %r15
movq %rax, %rdi
callq 0xf64f6
movl %eax, %r12d
movq %r15, %rdi
callq 0xe7bac
movq %rax, %r14
leaq 0x29a0cf(%rip), %rsi    # 0x352daa
movq 0x10(%rsp), %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x103fe1
movq %r15, %rdi
callq 0xe7b9c
subq %r14, %rax
leaq 0x1(%rax), %rdx
leaq 0x29a0d4(%rip), %rsi    # 0x352dd4
movq %rbp, %rdi
xorl %eax, %eax
callq 0x103fe1
movl %r12d, 0x2c(%rsp)
cmpl $0x2, %r12d
jne 0xb8d42
movq %r15, %rdi
xorl %esi, %esi
callq 0xeb9d2
movq %rax, %r14
leaq 0x29a0d2(%rip), %rsi    # 0x352dfb
movq %rbp, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x103fe1
movq %r15, %rdi
callq 0xea375
xorl %edi, %edi
jmp 0xb8d59
leaq 0x29a0c4(%rip), %rsi    # 0x352e0d
xorl %r14d, %r14d
movq %rbp, %rdi
xorl %eax, %eax
callq 0x103fe1
movq %r15, %rdi
movq %r13, %r12
leaq 0x29a0f5(%rip), %rcx    # 0x352e58
movq %rdi, %r15
movq %r14, %rsi
movq %rbx, %rdx
callq 0x1cebf9
movq %rax, 0x8(%rsp)
callq 0x119160
testb %al, %al
je 0xb8d98
movq 0x400152(%rip), %rax    # 0x4b8ed8
movq (%rax), %rdx
leaq 0x29a20d(%rip), %rsi    # 0x352f9d
movq %r12, %rdi
callq 0x11cc90
leaq 0x29a1fe(%rip), %rsi    # 0x352f9d
movq 0x10(%rsp), %rdi
xorl %eax, %eax
callq 0x103fe1
callq 0x104815
testb %al, %al
je 0xb8e4d
callq 0x104706
movq %rax, %r14
callq 0xfdf34
leaq (%rax,%r14), %rcx
movq %rcx, %xmm1
movq 0x28eb0a(%rip), %xmm2   # 0x3478e0
punpckldq %xmm2, %xmm1    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0x28eb0e(%rip), %xmm3   # 0x3478f0
subpd %xmm3, %xmm1
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
movsd 0x28eb06(%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 0x29a25c(%rip), %rdi    # 0x35309b
leaq 0x29a173(%rip), %rsi    # 0x352fb9
movb $0x3, %al
callq 0x103d72
movq 0x18(%rsp), %r14
cmpb $0x1, 0xd(%r14)
jne 0xb8e6d
leaq 0x29afa8(%rip), %rdx    # 0x353e08
movq 0x8(%rsp), %rdi
movq %rbx, %rsi
callq 0x1d6be2
movq 0x8(%rsp), %r13
movq %r13, %rdi
movq %rbp, %rsi
callq 0x1d7c19
movq %r13, %rdi
callq 0x1d7897
cmpq $0x0, 0x40(%r14)
je 0xb8f1a
cmpl $0x2, 0x2c(%rsp)
sete %al
testq %r15, %r15
setne %cl
orb %al, %cl
je 0xb9506
movq %r15, %rdi
movq 0x30(%rsp), %rsi
callq 0xf24ac
xorl %r8d, %r8d
cmpb $0x0, 0x16(%r14)
movl $0x0, %edx
jne 0xb8ece
movzbl 0x18(%r14), %eax
movl $0x2, %edx
subl %eax, %edx
cmpb $0x0, 0x17(%r14)
jne 0xb8ee3
movzbl 0x19(%r14), %eax
movl $0x2, %r8d
subl %eax, %r8d
movq 0x40(%r14), %rsi
movq 0x48(%r14), %rcx
movq 0x50(%r14), %r9
movzbl 0x15(%r14), %eax
leaq 0x29af2e(%rip), %r10    # 0x353e29
movq 0x8(%rsp), %rdi
pushq 0x30(%rsp)
pushq %rbp
pushq %r10
pushq %rbx
pushq %rax
pushq 0x58(%r14)
callq 0x1d473d
addq $0x30, %rsp
movl %eax, %ebx
jmp 0xb8f1c
xorl %ebx, %ebx
movq %r15, %rdi
cmpl $0x2, 0x2c(%rsp)
sete %al
testq %r15, %r15
sete %cl
orb %al, %cl
movq 0x3fffa2(%rip), %r15    # 0x4b8ed8
jne 0xb8f3f
cmpb $0x0, 0xb(%r14)
je 0xb8f4f
testl %ebx, %ebx
je 0xb8f7f
movq %rbp, 0x20(%rsp)
xorl %ebp, %ebp
jmp 0xb938b
callq 0xea375
testl %ebx, %ebx
je 0xb8f71
movq 0x8(%rsp), %rdi
callq 0x1ce66b
movq 0x38(%rsp), %rdi
callq 0xefbe3
jmp 0xb94bd
movq 0x8(%rsp), %rdi
xorl %esi, %esi
callq 0x1cfd23
xorl %edi, %edi
movq %rdi, 0x40(%rsp)
cmpb $0x1, 0xc(%r14)
jne 0xb8fde
callq 0x119160
testb %al, %al
je 0xb8fa6
movq (%r15), %rdx
leaq 0x299a22(%rip), %rsi    # 0x3529c0
movq %r12, %rdi
callq 0x11cc90
movq 0x8(%rsp), %rbx
movq %rbx, %rdi
xorl %esi, %esi
callq 0x1d0191
movq %rbx, %rdi
xorl %esi, %esi
callq 0x1d151c
movq %rbx, %rdi
xorl %esi, %esi
callq 0x1d09b9
movq %rbx, %rdi
xorl %esi, %esi
callq 0x1d102a
movq %rbx, %rdi
movq %rbp, %rsi
callq 0x1d7c19
cmpb $0x1, 0xb(%r14)
movq %r12, 0x48(%rsp)
jne 0xb913c
callq 0x119160
testb %al, %al
je 0xb9009
movq (%r15), %rdx
leaq 0x299e23(%rip), %rsi    # 0x352e24
movq %r12, %rdi
callq 0x11cc90
leaq 0x299e14(%rip), %rsi    # 0x352e24
xorl %ebx, %ebx
movq 0x10(%rsp), %rdi
xorl %eax, %eax
callq 0x103fe1
movl 0x1c(%r14), %eax
movl %eax, 0x20(%rsp)
movl 0x20(%r14), %r15d
movl 0x24(%r14), %eax
movq %rax, 0x50(%rsp)
leaq 0x299f8e(%rip), %rsi    # 0x352fc8
movq %rbp, %r13
movq %rbp, %rdi
xorl %eax, %eax
callq 0x103fe1
testl %r15d, %r15d
je 0xb9090
xorl %ebp, %ebp
xorl %r14d, %r14d
movl $0x1, %edx
movq 0x8(%rsp), %rdi
xorl %esi, %esi
xorl %ecx, %ecx
callq 0x1d39dd
movq %rax, %r12
addq %rax, %rbp
incl %r14d
movq %r13, %rdi
leaq 0x299f62(%rip), %rsi    # 0x352fd9
movl %r14d, %edx
movq %rax, %rcx
xorl %eax, %eax
callq 0x103fe1
cmpl %r15d, %r14d
jae 0xb9095
testq %r12, %r12
jne 0xb9051
jmp 0xb9095
xorl %r14d, %r14d
xorl %ebp, %ebp
leaq 0x299f65(%rip), %rsi    # 0x353001
movq %r13, %rdi
movl %r14d, %edx
movq %rbp, %rcx
movq %r13, %rbp
xorl %eax, %eax
callq 0x103fe1
leaq 0x299f74(%rip), %rsi    # 0x35302a
movq %r13, %rdi
xorl %eax, %eax
callq 0x103fe1
cmpl $0x0, 0x20(%rsp)
je 0xb9112
leaq 0x299f72(%rip), %r13    # 0x353040
xorl %r14d, %r14d
xorl %ebx, %ebx
movq 0x3ffdfe(%rip), %r15    # 0x4b8ed8
movq 0x8(%rsp), %rdi
movq 0x50(%rsp), %rsi
xorl %edx, %edx
callq 0x1d2ef3
movq %rax, %r12
addq %rax, %r14
incl %ebx
movq %rbp, %rdi
movq %r13, %rsi
movl %ebx, %edx
movq %rax, %rcx
xorl %eax, %eax
callq 0x103fe1
cmpl 0x20(%rsp), %ebx
jae 0xb911c
testq %r12, %r12
jne 0xb90da
jmp 0xb911c
xorl %r14d, %r14d
movq 0x3ffdbc(%rip), %r15    # 0x4b8ed8
leaq 0x299f4a(%rip), %rsi    # 0x35306d
movq %rbp, %rdi
movl %ebx, %edx
movq %r14, %rcx
xorl %eax, %eax
callq 0x103fe1
movq 0x48(%rsp), %r12
movq 0x18(%rsp), %r14
cmpb $0x1, 0xe(%r14)
jne 0xb9195
callq 0x119160
testb %al, %al
je 0xb915e
movq (%r15), %rdx
leaq 0x299ce8(%rip), %rsi    # 0x352e3e
movq %r12, %rdi
callq 0x11cc90
leaq 0x299cd9(%rip), %rsi    # 0x352e3e
movq 0x10(%rsp), %rdi
xorl %eax, %eax
callq 0x103fe1
movq (%r14), %rdi
callq 0x11b0a1
leaq 0x299cd8(%rip), %rcx    # 0x352e58
movq 0x8(%rsp), %rdi
movl $0x4, %esi
movq %rax, %rdx
xorl %r8d, %r8d
callq 0x1d4fe5
cmpb $0x1, 0xf(%r14)
jne 0xb91ee
callq 0x119160
testb %al, %al
je 0xb91b7
movq (%r15), %rdx
leaq 0x29ac87(%rip), %rsi    # 0x353e36
movq %r12, %rdi
callq 0x11cc90
leaq 0x29ac78(%rip), %rsi    # 0x353e36
movq 0x10(%rsp), %rdi
xorl %eax, %eax
callq 0x103fe1
movq (%r14), %rdi
callq 0x11b0a1
leaq 0x29ac92(%rip), %rcx    # 0x353e6b
movq 0x8(%rsp), %rdi
movl $0x1, %esi
movq %rax, %rdx
xorl %r8d, %r8d
callq 0x1d4fe5
cmpb $0x1, 0x10(%r14)
jne 0xb9244
callq 0x119160
testb %al, %al
je 0xb9210
movq (%r15), %rdx
leaq 0x29ac6a(%rip), %rsi    # 0x353e72
movq %r12, %rdi
callq 0x11cc90
leaq 0x29ac5b(%rip), %rsi    # 0x353e72
movq 0x10(%rsp), %rdi
xorl %eax, %eax
callq 0x103fe1
movq (%r14), %rdi
callq 0x11b0a1
leaq 0x29ac77(%rip), %rcx    # 0x353ea9
movq 0x8(%rsp), %rdi
xorl %esi, %esi
movq %rax, %rdx
xorl %r8d, %r8d
callq 0x1d4fe5
movq %rbp, 0x20(%rsp)
movq 0x28(%r14), %rdi
callq 0x11c131
testq %rax, %rax
je 0xb92cd
movq (%r14), %rdi
movq 0x28(%r14), %rbx
movq 0x18(%rsp), %rax
movq 0x30(%rax), %r14
movq %r15, %r13
movq 0x18(%rsp), %rax
movq 0x38(%rax), %r15
movq 0x18(%rsp), %rax
movzbl 0x13(%rax), %ebp
movq 0x18(%rsp), %rax
movzbl 0x14(%rax), %r12d
callq 0x11b0a1
movq 0x8(%rsp), %rdi
movq %rbx, %rsi
movq %r14, %rdx
movq 0x18(%rsp), %r14
movq %r15, %rcx
movq %r13, %r15
movl %ebp, %r8d
movl %r12d, %r9d
movq 0x48(%rsp), %r12
pushq 0x30(%rsp)
pushq %r12
pushq 0x20(%rsp)
pushq %rax
callq 0xb9510
addq $0x20, %rsp
testl %eax, %eax
je 0xb92cd
movl %eax, %ebx
xorl %ebp, %ebp
jmp 0xb9386
cmpb $0x1, 0x11(%r14)
jne 0xb9326
callq 0x119160
testb %al, %al
je 0xb92ef
movq (%r15), %rdx
leaq 0x29abc9(%rip), %rsi    # 0x353eb0
movq %r12, %rdi
callq 0x11cc90
leaq 0x29abba(%rip), %rsi    # 0x353eb0
movq 0x10(%rsp), %rdi
xorl %eax, %eax
callq 0x103fe1
movq (%r14), %rdi
callq 0x11b0a1
leaq 0x29abbb(%rip), %rcx    # 0x353ecc
movq 0x8(%rsp), %rdi
movl $0x3, %esi
movq %rax, %rdx
xorl %r8d, %r8d
callq 0x1d4fe5
xorl %ebx, %ebx
movb $0x1, %bpl
cmpb $0x1, 0x12(%r14)
jne 0xb9386
callq 0x119160
testb %al, %al
je 0xb934d
movq (%r15), %rdx
leaq 0x29ab8c(%rip), %rsi    # 0x353ed1
movq %r12, %rdi
callq 0x11cc90
leaq 0x29ab7d(%rip), %rsi    # 0x353ed1
xorl %ebx, %ebx
movq 0x10(%rsp), %rdi
xorl %eax, %eax
callq 0x103fe1
movq (%r14), %rdi
callq 0x11b0a1
leaq 0x29ab7b(%rip), %rcx    # 0x353eec
movq 0x8(%rsp), %rdi
movl $0x2, %esi
movq %rax, %rdx
xorl %r8d, %r8d
callq 0x1d4fe5
movq 0x40(%rsp), %rdi
cmpl $0x2, 0x2c(%rsp)
sete %al
testq %rdi, %rdi
sete %cl
orb %al, %cl
je 0xb93cc
movq %rdi, %r14
movq 0x8(%rsp), %rdi
callq 0x1ce66b
testq %r14, %r14
jne 0xb950b
movq 0x38(%rsp), %rdi
callq 0xefbe3
testb %bpl, %bpl
movq 0x20(%rsp), %rbp
jne 0xb9400
jmp 0xb94bd
callq 0xea375
testb %bpl, %bpl
je 0xb94a4
movq 0x8(%rsp), %r14
movq %r14, %rdi
xorl %esi, %esi
callq 0x1cfd23
movq %r14, %rdi
callq 0x1ce66b
movq 0x38(%rsp), %rdi
callq 0xefbe3
movq 0x20(%rsp), %rbp
callq 0x104815
testb %al, %al
je 0xb94bd
callq 0x104706
movq %rax, %r14
callq 0xfdf34
leaq (%rax,%r14), %rcx
movq %rcx, %xmm1
movq 0x28e4b5(%rip), %xmm2   # 0x3478e0
punpckldq %xmm2, %xmm1    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0x28e4b9(%rip), %xmm3   # 0x3478f0
subpd %xmm3, %xmm1
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
movsd 0x28e4b1(%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 0x299c07(%rip), %rdi    # 0x35309b
leaq 0x29aa59(%rip), %rsi    # 0x353ef4
movb $0x3, %al
callq 0x103d72
jmp 0xb94bd
movq 0x8(%rsp), %rdi
callq 0x1ce66b
movq 0x38(%rsp), %rdi
callq 0xefbe3
movq 0x20(%rsp), %rbp
callq 0x119160
testb %al, %al
je 0xb94d9
movq (%r15), %rsi
movq %r12, %rdi
callq 0x11cf39
movq %r12, %rdi
callq 0x11d054
movq 0x10(%rsp), %rdi
callq 0x1040e0
movq %rbp, %rdi
callq 0x1040e0
movl %ebx, %eax
addq $0x58, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0x1dc00
callq 0x1db55
callq 0x1db8e
callq 0x1dbc7