// File: /workspace/github_c_makefile_star2_O3/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, %r15
movq %rcx, %rbx
movq $0x0, 0x68(%rsp)
movq 0x10(%rcx), %rdi
callq 0x11b0a1
movq %rax, 0x38(%rsp)
testq %r15, %r15
je 0xb5833
movq %r15, %rdi
callq 0xfcc32
testb %al, %al
jne 0xb66bb
movzbl 0x1(%rbx), %edi
movq 0x40369a(%rip), %rbp    # 0x4b8ed8
movq (%rbp), %rdx
xorl $0x1, %edi
movq %rbx, %r13
leaq 0x291085(%rip), %rbx    # 0x3468d4
movq %rbx, %rsi
callq 0x103e40
movq %rax, %r14
leaq 0x29d4fe(%rip), %rsi    # 0x352d5f
xorl %r12d, %r12d
movq %rax, %rdi
xorl %eax, %eax
callq 0x103fe1
movq %r13, 0x10(%rsp)
movzbl (%r13), %edi
movq (%rbp), %rdx
movq %rbx, %rsi
callq 0x103e40
movq %rax, %r13
leaq 0x29cef5(%rip), %rsi    # 0x352783
movq %rax, %rdi
xorl %eax, %eax
callq 0x103fe1
leaq 0x29cefd(%rip), %rsi    # 0x35279c
movq %r13, %rdi
movq 0x38(%rsp), %rdx
xorl %eax, %eax
callq 0x103fe1
callq 0x119160
testb %al, %al
je 0xb58d6
leaq 0x29d4c6(%rip), %rdi    # 0x352d84
callq 0x11c986
movq %rax, %r12
movq %rax, %rdi
callq 0x11c9e3
movq %r12, %rdi
callq 0x11d044
movq 0x10(%rsp), %rax
cmpb $0x0, 0x21(%rax)
movq %r12, 0x18(%rsp)
movq %r14, 0x28(%rsp)
jne 0xb63d8
callq 0xef0cd
movq %r15, %rbx
movq %rax, %r15
movq %rax, %rdi
callq 0xf22df
movq %r15, %rdi
callq 0xf238b
movq %r15, %rdi
movq 0x38(%rsp), %rsi
movq %rbx, 0x60(%rsp)
movq %rbx, %rdx
callq 0xef129
testq %rax, %rax
je 0xb59d1
movq %rax, %rbx
movq %r15, 0x40(%rsp)
movq %rax, %rdi
callq 0xf64f6
movl %eax, %r15d
movq %rbx, %rdi
callq 0xe7bac
movq %r14, %rdi
movq %rax, %r14
leaq 0x29d45a(%rip), %rsi    # 0x352daa
movq %rax, %rdx
xorl %eax, %eax
callq 0x103fe1
movq %rbx, %rdi
callq 0xe7b9c
movq %r14, 0x30(%rsp)
subq %r14, %rax
leaq 0x1(%rax), %rdx
leaq 0x29d45f(%rip), %rsi    # 0x352dd4
movq %r13, %rdi
xorl %eax, %eax
callq 0x103fe1
movl %r15d, 0x24(%rsp)
cmpl $0x2, %r15d
sete %r15b
jne 0xb59ec
movq %rbx, %rdi
xorl %esi, %esi
callq 0xeb9d2
leaq 0x29d45c(%rip), %rsi    # 0x352dfb
movq %r13, %rdi
movq %rax, 0x70(%rsp)
movq %rax, %rdx
xorl %eax, %eax
callq 0x103fe1
movq %rbx, %rdi
callq 0xea375
movq $0x0, 0x8(%rsp)
movq 0x10(%rsp), %rbx
movq 0x28(%rsp), %r14
jmp 0xb5b5f
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
movq $0x0, 0x8(%rsp)
movq $0x0, (%rsp)
jmp 0xb6393
movq %r15, 0x48(%rsp)
movq %rbx, 0x8(%rsp)
movq 0x10(%rsp), %r15
movq 0x10(%r15), %rdi
callq 0x11b191
movq %rax, %r12
leaq 0x29cdd6(%rip), %rsi    # 0x3527e4
movq %rax, %rdi
callq 0x11acf3
movq %r12, %rdi
callq 0x11b0a1
leaq 0x68(%rsp), %rdx
leaq 0x88(%rsp), %rcx
movq %rax, %rdi
movl $0x1, %esi
movq 0x60(%rsp), %r8
callq 0x1c2117
movl %eax, %ebx
cmpl $0x2, 0x48(%r15)
jb 0xb5b10
testl %ebx, %ebx
movq 0x60(%rsp), %r15
movq 0x28(%rsp), %r14
jne 0xb5b15
movq %r13, 0x50(%rsp)
movl $0x1, %r14d
leaq 0x68(%rsp), %rbp
leaq 0x80(%rsp), %r13
movq 0x10(%rsp), %rbx
movq %r12, %rdi
callq 0x11b132
movq 0x10(%rbx), %rsi
movq %r12, %rdi
callq 0x11adc1
movq %r12, %rdi
movl $0x2e, %esi
callq 0x11af23
movq %r12, %rdi
movl %r14d, %esi
callq 0x11b054
movq %r12, %rdi
leaq 0x29cd37(%rip), %rsi    # 0x3527e6
callq 0x11acf3
movq %r12, %rdi
callq 0x11b0a1
movq %rax, %rdi
xorl %esi, %esi
movq %rbp, %rdx
movq %r13, %rcx
movq %r15, %r8
callq 0x1c2117
testl %eax, %eax
jne 0xb5afb
movq 0x88(%rsp), %rax
cmpq 0x80(%rsp), %rax
jne 0xb66ac
incl %r14d
movq 0x10(%rsp), %rbx
cmpl 0x48(%rbx), %r14d
jb 0xb5a79
xorl %ebx, %ebx
jmp 0xb5afd
movl %eax, %ebx
movq 0x28(%rsp), %r14
movq 0x4033cf(%rip), %rbp    # 0x4b8ed8
movq 0x50(%rsp), %r13
jmp 0xb5b15
movq 0x28(%rsp), %r14
movq %r12, %rdi
callq 0x11bdbf
leaq 0x29d2e9(%rip), %rsi    # 0x352e0d
movq $0x0, (%rsp)
movq %r13, %rdi
xorl %eax, %eax
callq 0x103fe1
testl %ebx, %ebx
je 0xb5b47
xorl %r15d, %r15d
movq 0x18(%rsp), %r12
jmp 0xb5fc6
movq $0x0, 0x70(%rsp)
movq 0x18(%rsp), %r12
movq 0x10(%rsp), %rbx
movq 0x48(%rsp), %r15
cmpb $0x0, 0x24(%rbx)
je 0xb5c70
leaq 0x29d2e8(%rip), %rcx    # 0x352e58
movq 0x8(%rsp), %rdi
movq 0x70(%rsp), %rsi
movq 0x38(%rsp), %rdx
callq 0x1cebf9
movq %rax, (%rsp)
callq 0x119160
testb %al, %al
je 0xb5ba4
movq (%rbp), %rdx
leaq 0x29d401(%rip), %rsi    # 0x352f9d
movq %r12, %rdi
callq 0x11cc90
leaq 0x29d3f2(%rip), %rsi    # 0x352f9d
xorl %ebx, %ebx
movq %r14, %rdi
xorl %eax, %eax
callq 0x103fe1
callq 0x104815
testb %al, %al
je 0xb5fc6
callq 0x104706
movq %r15, %rbp
movq %rax, %r15
callq 0xfdf34
leaq (%rax,%r15), %rcx
movq %rcx, %xmm1
movq 0x291cfb(%rip), %xmm2   # 0x3478e0
punpckldq %xmm2, %xmm1    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0x291cff(%rip), %xmm3   # 0x3478f0
subpd %xmm3, %xmm1
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
movsd 0x291cf7(%rip), %xmm4   # 0x347900
mulsd %xmm4, %xmm0
movq %r15, %xmm5
movq %rbp, %r15
movq 0x18(%rsp), %r12
movq 0x4032b7(%rip), %rbp    # 0x4b8ed8
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 0x29d43e(%rip), %rdi    # 0x35309b
leaq 0x29d355(%rip), %rsi    # 0x352fb9
movb $0x3, %al
callq 0x103d72
jmp 0xb5fc6
movq 0x68(%rsp), %rax
movq %rax, 0x78(%rsp)
movq 0x30(%rsp), %rdi
callq 0x1ce1d6
movq %rax, (%rsp)
movl 0x4(%rbx), %edx
testl %edx, %edx
movq %r13, 0x50(%rsp)
je 0xb5cab
leaq 0x29cb13(%rip), %rsi    # 0x3527ae
movq %r13, %rdi
xorl %eax, %eax
callq 0x103fe1
movl 0x4(%rbx), %r13d
jmp 0xb5cae
xorl %r13d, %r13d
movl 0x48(%rbx), %eax
movl %eax, 0x30(%rsp)
callq 0x11ac6c
movq %rax, %r12
leaq 0x29d0c0(%rip), %rsi    # 0x352d84
xorl %ebx, %ebx
movq %r14, %rdi
xorl %eax, %eax
callq 0x103fe1
cmpl $0x2, 0x24(%rsp)
je 0xb5d0b
leaq 0x11958b(%rip), %rax    # 0x1cf269
movq %rax, 0x90(%rsp)
movq 0x78(%rsp), %rax
movq %rax, 0x88(%rsp)
movq (%rsp), %rax
movq %rax, 0x98(%rsp)
movq $0x0, 0xa0(%rsp)
cmpl $0x0, 0x30(%rsp)
je 0xb5dbf
movq %r15, 0x48(%rsp)
cmpl $0x2, 0x24(%rsp)
leaq 0x11810b(%rip), %rax    # 0x1cde32
cmoveq 0x4031e1(%rip), %rax    # 0x4b8f10
movq %rax, 0x58(%rsp)
leaq 0x88(%rsp), %r15
cmoveq (%rsp), %r15
xorl %ebp, %ebp
movq %r13, %r14
movq 0x38(%rsp), %r13
movq %r12, %rdi
movq %r13, %rsi
callq 0x11acf3
movq %r12, %rdi
movl $0x2e, %esi
callq 0x11af23
movq %r12, %rdi
movl %ebp, %esi
callq 0x11b054
movq %r12, %rdi
leaq 0x29e178(%rip), %rsi    # 0x353eef
callq 0x11acf3
movq %r12, %rdi
callq 0x11b0a1
movq %rax, %rdi
movq %r14, %rsi
movq 0x58(%rsp), %rdx
movq %r15, %rcx
movq 0x60(%rsp), %r8
callq 0x1cc8a8
movl %eax, %ebx
movq %r12, %rdi
callq 0x11b132
incl %ebp
cmpl %ebp, 0x30(%rsp)
jne 0xb5d4b
movq 0x28(%rsp), %r14
movq 0x40311e(%rip), %rbp    # 0x4b8ed8
movq 0x48(%rsp), %r15
movq %r12, %rdi
callq 0x11bdbf
callq 0x104815
testb %al, %al
je 0xb5e6f
callq 0x104706
movq %r15, %r12
movq %rax, %r15
callq 0xfdf34
leaq (%rax,%r15), %rcx
movq %rcx, %xmm1
movq 0x291aeb(%rip), %xmm2   # 0x3478e0
punpckldq %xmm2, %xmm1    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0x291aef(%rip), %xmm3   # 0x3478f0
subpd %xmm3, %xmm1
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
movsd 0x291ae7(%rip), %xmm4   # 0x347900
mulsd %xmm4, %xmm0
movq %r15, %xmm5
movq %r12, %r15
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 0x29d23a(%rip), %rdi    # 0x35309b
leaq 0x29d08e(%rip), %rsi    # 0x352ef6
movb $0x3, %al
callq 0x103d72
callq 0x119160
testb %al, %al
movq 0x50(%rsp), %r13
movq 0x18(%rsp), %r12
je 0xb5e95
movq (%rbp), %rdx
leaq 0x29d079(%rip), %rsi    # 0x352f06
movq %r12, %rdi
callq 0x11cc90
leaq 0x29d06a(%rip), %rsi    # 0x352f06
movq %r14, %rdi
xorl %eax, %eax
callq 0x103fe1
testl %ebx, %ebx
jne 0xb5fc6
cmpl $0x2, 0x24(%rsp)
movq 0x8(%rsp), %rdx
movq 0x70(%rsp), %rsi
jne 0xb5ec9
testq %rsi, %rsi
je 0xb5ec9
testq %rdx, %rdx
je 0xb5ee6
testq %rdx, %rdx
je 0xb66c5
testq %rsi, %rsi
jne 0xb66c5
cmpl $0x2, 0x24(%rsp)
je 0xb66c5
movq (%rsp), %rdi
callq 0x1ce2a1
callq 0x104815
testb %al, %al
je 0xb5f91
callq 0x104706
movq %rax, %rbx
callq 0xfdf34
leaq (%rax,%rbx), %rcx
movq %rcx, %xmm1
movq 0x2919c6(%rip), %xmm2   # 0x3478e0
punpckldq %xmm2, %xmm1    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0x2919ca(%rip), %xmm3   # 0x3478f0
subpd %xmm3, %xmm1
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
movsd 0x2919c2(%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 0x29d118(%rip), %rdi    # 0x35309b
leaq 0x29d001(%rip), %rsi    # 0x352f8b
movb $0x3, %al
callq 0x103d72
movq 0x10(%rsp), %rax
movl 0x4(%rax), %esi
movl 0x48(%rax), %r9d
movzbl 0x22(%rax), %edx
leaq 0x29df47(%rip), %rax    # 0x353eef
movq (%rsp), %rdi
movq 0x78(%rsp), %rcx
movq 0x38(%rsp), %r8
pushq 0x60(%rsp)
pushq %rax
callq 0x1cf770
addq $0x10, %rsp
movl %eax, %ebx
cmpq $0x0, 0x8(%rsp)
sete %al
orb %r15b, %al
je 0xb5fda
testl %ebx, %ebx
jne 0xb600c
jmp 0xb602a
movq 0x10(%rsp), %rax
cmpb $0x0, 0x20(%rax)
je 0xb5ff5
testl %ebx, %ebx
je 0xb602a
movq 0x8(%rsp), %rdi
callq 0xea375
jmp 0xb6003
movq 0x8(%rsp), %rdi
callq 0xea375
testl %ebx, %ebx
je 0xb6016
movq $0x0, 0x8(%rsp)
movq 0x40(%rsp), %r15
jmp 0xb6393
movq $0x0, 0x8(%rsp)
movq (%rsp), %rdi
xorl %esi, %esi
callq 0x1cfd23
movq 0x10(%rsp), %rbx
cmpb $0x1, 0x22(%rbx)
movq %r15, 0x48(%rsp)
jne 0xb6092
callq 0x119160
testb %al, %al
je 0xb6056
movq (%rbp), %rdx
leaq 0x29c972(%rip), %rsi    # 0x3529c0
movq %r12, %rdi
callq 0x11cc90
movq (%rsp), %r15
movq %r15, %rdi
xorl %esi, %esi
callq 0x1d0191
movq %r15, %rdi
xorl %esi, %esi
callq 0x1d151c
movq %r15, %rdi
xorl %esi, %esi
callq 0x1d09b9
movq %r15, %rdi
xorl %esi, %esi
callq 0x1d102a
movq %r15, %rdi
movq %r13, %rsi
callq 0x1d7c19
movq 0x48(%rsp), %r15
cmpb $0x1, 0x20(%rbx)
jne 0xb61f0
movq %r13, %r12
callq 0x119160
testb %al, %al
je 0xb60bd
movq (%rbp), %rdx
leaq 0x29cd71(%rip), %rsi    # 0x352e24
movq 0x18(%rsp), %rdi
callq 0x11cc90
leaq 0x29cd60(%rip), %rsi    # 0x352e24
xorl %ebx, %ebx
movq %r14, %rdi
xorl %eax, %eax
callq 0x103fe1
movq 0x10(%rsp), %rax
movl 0x2c(%rax), %ecx
movl %ecx, 0x58(%rsp)
movl 0x30(%rax), %r13d
movl 0x34(%rax), %eax
movq %rax, 0x30(%rsp)
leaq 0x29ced9(%rip), %rsi    # 0x352fc8
movq %r12, %rdi
xorl %eax, %eax
callq 0x103fe1
testl %r13d, %r13d
je 0xb6142
xorl %r14d, %r14d
xorl %r15d, %r15d
movl $0x1, %edx
movq (%rsp), %rdi
xorl %esi, %esi
xorl %ecx, %ecx
callq 0x1d39dd
movq %rax, %rbp
addq %rax, %r14
incl %r15d
movq %r12, %rdi
leaq 0x29ceb0(%rip), %rsi    # 0x352fd9
movl %r15d, %edx
movq %rax, %rcx
xorl %eax, %eax
callq 0x103fe1
cmpl %r13d, %r15d
jae 0xb6148
testq %rbp, %rbp
jne 0xb6104
jmp 0xb6148
xorl %r15d, %r15d
xorl %r14d, %r14d
leaq 0x29ceb2(%rip), %rsi    # 0x353001
movq %r12, %r13
movq %r12, %rdi
movl %r15d, %edx
movq %r14, %rcx
xorl %eax, %eax
callq 0x103fe1
leaq 0x29cec1(%rip), %rsi    # 0x35302a
movq %r12, %rdi
xorl %eax, %eax
callq 0x103fe1
movl 0x58(%rsp), %ebp
testl %ebp, %ebp
je 0xb61bc
leaq 0x29cebe(%rip), %r15    # 0x353040
xorl %r14d, %r14d
xorl %ebx, %ebx
movq (%rsp), %rdi
movq 0x30(%rsp), %rsi
xorl %edx, %edx
callq 0x1d2ef3
movq %rax, %r12
addq %rax, %r14
incl %ebx
movq %r13, %rdi
movq %r15, %rsi
movl %ebx, %edx
movq %rax, %rcx
xorl %eax, %eax
callq 0x103fe1
cmpl %ebp, %ebx
jae 0xb61bf
testq %r12, %r12
jne 0xb6187
jmp 0xb61bf
xorl %r14d, %r14d
leaq 0x29cea7(%rip), %rsi    # 0x35306d
movq %r13, %rdi
movl %ebx, %edx
movq %r14, %rcx
xorl %eax, %eax
callq 0x103fe1
movq 0x28(%rsp), %r14
movq 0x402cf7(%rip), %rbp    # 0x4b8ed8
movq 0x18(%rsp), %r12
movq 0x10(%rsp), %rbx
movq 0x48(%rsp), %r15
cmpb $0x1, 0x23(%rbx)
jne 0xb6247
callq 0x119160
testb %al, %al
je 0xb6212
movq (%rbp), %rdx
leaq 0x29cc34(%rip), %rsi    # 0x352e3e
movq %r12, %rdi
callq 0x11cc90
leaq 0x29cc25(%rip), %rsi    # 0x352e3e
movq %r14, %rdi
xorl %eax, %eax
callq 0x103fe1
movq 0x10(%rbx), %rdi
callq 0x11b0a1
leaq 0x29cc25(%rip), %rcx    # 0x352e58
movq (%rsp), %rdi
movl $0x4, %esi
movq %rax, %rdx
xorl %r8d, %r8d
callq 0x1d4fe5
movq 0x8(%rsp), %rbx
testq %rbx, %rbx
sete %al
orb %al, %r15b
jne 0xb626c
movq %rbx, %rdi
callq 0xea375
xorl %ebx, %ebx
movq (%rsp), %rdi
xorl %esi, %esi
callq 0x1cfd23
movq 0x40(%rsp), %r15
movq %rbx, 0x8(%rsp)
callq 0x119160
testb %al, %al
je 0xb6292
movq (%rbp), %rdx
leaq 0x29cbd2(%rip), %rsi    # 0x352e5c
movq %r12, %rdi
callq 0x11cc90
leaq 0x29cbc3(%rip), %rsi    # 0x352e5c
xorl %ebx, %ebx
movq %r14, %rdi
xorl %eax, %eax
callq 0x103fe1
callq 0x104815
testb %al, %al
je 0xb6359
callq 0x104706
movq %r15, %r12
movq %rax, %r15
callq 0xfdf34
leaq (%rax,%r15), %rcx
movq %rcx, %xmm1
movq 0x29160d(%rip), %xmm2   # 0x3478e0
punpckldq %xmm2, %xmm1    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0x291611(%rip), %xmm3   # 0x3478f0
subpd %xmm3, %xmm1
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
movsd 0x291609(%rip), %xmm4   # 0x347900
mulsd %xmm4, %xmm0
movq %r15, %xmm5
movq %r12, %r15
movq 0x18(%rsp), %r12
movq 0x402bc9(%rip), %rbp    # 0x4b8ed8
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 0x29cd50(%rip), %rdi    # 0x35309b
leaq 0x29cb1c(%rip), %rsi    # 0x352e6e
movb $0x3, %al
callq 0x103d72
movq 0x10(%rsp), %rax
movl 0x8(%rax), %edx
movl 0xc(%rax), %esi
movzbl 0x25(%rax), %ecx
movzbl 0x28(%rax), %eax
subq $0x8, %rsp
leaq 0x29d02e(%rip), %r9     # 0x3533a5
movq 0x8(%rsp), %rdi
movq 0x40(%rsp), %r8
pushq %r13
pushq $0x0
pushq %rax
pushq $0x1
pushq $0x0
callq 0x1d7d15
addq $0x30, %rsp
movq 0x68(%rsp), %rdi
testq %rdi, %rdi
je 0xb63ae
leaq 0x29c535(%rip), %rsi    # 0x3528d9
movl $0x274, %edx            # imm = 0x274
callq 0x1045eb
movq (%rsp), %rdi
callq 0x1ce66b
cmpq $0x0, 0x8(%rsp)
jne 0xb66c0
movq %r15, %rdi
callq 0xefbe3
testl %ebx, %ebx
movq 0x60(%rsp), %r15
jne 0xb666b
callq 0x104815
testb %al, %al
je 0xb647a
callq 0x104706
movq %rax, %rbx
callq 0xfdf34
leaq (%rax,%rbx), %rcx
movq %rcx, %xmm1
movq 0x2914dd(%rip), %xmm2   # 0x3478e0
punpckldq %xmm2, %xmm1    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0x2914e1(%rip), %xmm3   # 0x3478f0
subpd %xmm3, %xmm1
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
movsd 0x2914d9(%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 0x29cc2f(%rip), %rdi    # 0x35309b
leaq 0x29ca1c(%rip), %rsi    # 0x352e8f
movb $0x3, %al
callq 0x103d72
movq 0x10(%rsp), %rax
movl 0x8(%rax), %ecx
movq %rcx, (%rsp)
movb 0x25(%rax), %cl
movb %cl, 0x58(%rsp)
movb 0x26(%rax), %cl
movb %cl, 0x8(%rsp)
movsd 0x50(%rax), %xmm0
movsd %xmm0, 0x30(%rsp)
movb 0x27(%rax), %cl
movb %cl, 0x40(%rsp)
movq 0x40(%rax), %rax
movq %rax, 0x10(%rsp)
callq 0xef0cd
movq %rax, %r12
callq 0x119160
testb %al, %al
movq %r13, 0x50(%rsp)
je 0xb6505
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0xb64e1
movq (%rbp), %rdx
leaq 0x29cc14(%rip), %rsi    # 0x3530ee
callq 0x11cc90
jmp 0xb6505
leaq 0x29cc06(%rip), %rdi    # 0x3530ee
callq 0x11c986
movq %rax, %rbx
movq %rax, %rdi
callq 0x11d044
movq %rbx, 0x18(%rsp)
movq %rbx, %rdi
callq 0x11c9e3
leaq 0x29cbe2(%rip), %rsi    # 0x3530ee
movq %r14, %rdi
xorl %eax, %eax
callq 0x103fe1
movq %r12, %rdi
callq 0xf22df
movq %r12, %rdi
callq 0xf238b
movq %r12, %rdi
callq 0xf237b
movq %r12, %rdi
movq 0x38(%rsp), %rsi
movq %r15, %rbx
movq %r15, %rdx
callq 0xef129
testq %rax, %rax
je 0xb66b1
movq %rax, %r13
movq %rax, %rdi
callq 0xed62d
movq %rax, %r14
movq %r13, %rdi
callq 0xe7b9c
movq %rax, %r15
movq %r13, %rdi
callq 0xf6567
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 0xb65ac
testq %rsi, %rsi
movq 0x38(%rsp), %r15
je 0xb66b6
leaq 0x29cb8a(%rip), %rdi    # 0x353157
xorl %eax, %eax
callq 0x103d72
callq 0x119160
testb %al, %al
movq 0x28(%rsp), %r14
je 0xb65f7
movq (%rbp), %rdx
leaq 0x29cb1b(%rip), %rsi    # 0x353108
movq 0x18(%rsp), %rdi
callq 0x11cc90
leaq 0x29cb0a(%rip), %rsi    # 0x353108
movq %r14, %rdi
xorl %eax, %eax
callq 0x103fe1
subq $0x8, %rsp
movzbl 0x48(%rsp), %eax
movzbl 0x10(%rsp), %r10d
movzbl 0x60(%rsp), %r9d
leaq 0x29cd81(%rip), %rsi    # 0x3533a5
leaq 0x29c518(%rip), %rdx    # 0x352b43
movq %r15, %rdi
movq %r13, %rcx
movq 0x8(%rsp), %r8
movsd 0x38(%rsp), %xmm0
pushq %rbx
pushq %r14
pushq 0x28(%rsp)
pushq %rax
pushq %r10
callq 0x1c5ca0
addq $0x30, %rsp
movl %eax, %ebx
movq %r13, %rdi
callq 0xea375
movq %r12, %rdi
callq 0xefbe3
movq 0x50(%rsp), %r13
movq 0x18(%rsp), %r12
callq 0x119160
testb %al, %al
je 0xb6688
movq (%rbp), %rsi
movq %r12, %rdi
callq 0x11cf39
movq %r12, %rdi
callq 0x11d054
movq %r14, %rdi
callq 0x1040e0
movq %r13, %rdi
callq 0x1040e0
movl %ebx, %eax
addq $0xa8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0x1d6fb
callq 0x1d7df
callq 0x1d7a6
callq 0x1d6c2
callq 0x1d76d
callq 0x1d734
nop