// File: /workspace/github_c_makefile_star2_O3/genometools[P]genometools/src/tools/gt_readjoiner_prefilter.c
// Function: gt_readjoiner_prefilter_runner
static int gt_readjoiner_prefilter_runner(GT_UNUSED int argc,
    GT_UNUSED const char **argv, GT_UNUSED int parsed_args,
    void *tool_arguments, GtError *err)
{
  GtReadjoinerPrefilterArguments *arguments = tool_arguments;
  int had_err = 0;
  bool varlen;
  GtUword i;
  GtUword nofreads_valid, nofreads_invalid, nofreads_input,
                nofreads_output,
                tlen_valid, tlen_invalid, tlen_input;
  GtLogger *default_logger, *verbose_logger;
  GtReads2Twobit *r2t;

  default_logger =
    gt_logger_new(!arguments->quiet, GT_LOGGER_DEFLT_PREFIX, stdout);
  verbose_logger =
    gt_logger_new(arguments->verbose, GT_LOGGER_DEFLT_PREFIX, stdout);

  gt_logger_log(default_logger,
      "gt readjoiner prefilter (version "GT_READJOINER_VERSION")");

  /* default readset name: first db argument */
  if (gt_str_length(arguments->readset) == 0)
    gt_str_append_cstr(arguments->readset, gt_str_array_get(arguments->db, 0));
  gt_logger_log(verbose_logger, "readset name = %s",
      gt_str_get(arguments->readset));

  if (arguments->verbose)
    gt_readjoiner_prefilter_list_input_files(arguments, verbose_logger);

  r2t = gt_reads2twobit_new(arguments->readset);

  if (arguments->phred64)
    gt_reads2twobit_use_phred64(r2t);

  if (arguments->maxlow != GT_UNDEF_UWORD)
    gt_reads2twobit_set_quality_filter(r2t, arguments->maxlow,
        (char)arguments->lowqual);

  if (arguments->des)
    gt_reads2twobit_enable_descs(r2t, arguments->clipdes, arguments->memdes);

  for (i = 0; i < gt_str_array_size(arguments->db) && !had_err; i++)
  {
    GtStr *dbentry = gt_str_array_get_str(arguments->db, i);
    had_err = gt_reads2twobit_add_library(r2t, dbentry, err);
  }

  if (!had_err)
    had_err = gt_reads2twobit_encode(r2t, err);

  if (!had_err)
  {
    nofreads_valid = gt_reads2twobit_nofseqs(r2t);
    nofreads_invalid = gt_reads2twobit_nof_invalid_seqs(r2t);
    nofreads_input = nofreads_valid + nofreads_invalid;
    tlen_valid = gt_reads2twobit_total_seqlength(r2t) -
      gt_reads2twobit_nofseqs(r2t);
    tlen_invalid = gt_reads2twobit_invalid_seqs_totallength(r2t);
    tlen_input = tlen_valid + tlen_invalid;

    gt_logger_log(default_logger,
                  "number of reads in complete readset = "GT_WU"",
                  nofreads_input);

    varlen = (gt_reads2twobit_seqlen_eqlen(r2t) == 0);
    if (varlen)
      gt_logger_log(verbose_logger, "read length = variable ["GT_WU".."GT_WU"]",
          gt_reads2twobit_seqlen_min(r2t), gt_reads2twobit_seqlen_max(r2t));
    else
      gt_logger_log(verbose_logger, "read length = "GT_WU"",
          gt_reads2twobit_seqlen_eqlen(r2t) - 1UL);

    gt_logger_log(verbose_logger, "total length of complete readset = "GT_WU"",
        tlen_input);
    gt_logger_log(verbose_logger, "low-quality reads = "GT_WU" "
        "[%.2f %% of input]", nofreads_invalid, (float)nofreads_invalid * 100 /
        (float)nofreads_input);
    if (!arguments->verbose)
      gt_logger_log(default_logger, "low-quality reads = "GT_WU"",
          nofreads_invalid);
    nofreads_output = nofreads_valid;
    if (arguments->encodeonly)
    {
      if (!had_err && arguments->fasta)
      {
        GtStr *fn;
        fn = gt_str_new_cstr(gt_str_get(arguments->readset));
        gt_str_append_cstr(fn, GT_READJOINER_SUFFIX_PREFILTERED_FAS);
        had_err = gt_reads2twobit_write_fasta(r2t, gt_str_get(fn), NULL, err);
        gt_logger_log(verbose_logger, "readset saved: %s", gt_str_get(fn));
        gt_str_delete(fn);
      }
      if (!had_err && arguments->encseq)
      {
        had_err = gt_reads2twobit_write_encseq(r2t, err);
        gt_logger_log(verbose_logger, "readset saved: %s.%s",
            gt_str_get(arguments->readset), varlen ? "(esq|ssp)" : "esq");
        if (!had_err && arguments->des)
        {
          had_err = gt_reads2twobit_write_descriptions(r2t, NULL, err);
          gt_logger_log(verbose_logger,
              "descriptions saved: %s.(des|sds)",
              gt_str_get(arguments->readset));
        }
      }
      gt_logger_log(default_logger,
                    "number of reads in output readset = "GT_WU"",
                    nofreads_output);
    }
    else
    {
      GtContfinder *contfinder;
      GtUword nofreads_contained, nofreads_matesofc;
      contfinder = gt_contfinder_new(r2t);
      gt_contfinder_run(contfinder, !arguments->singlestrand,
          arguments->copynum);

      nofreads_contained = gt_contfinder_nofcontained(contfinder);
      nofreads_output -= nofreads_contained;

      gt_logger_log(verbose_logger,
                    "contained reads = "GT_WU" [%.2f %% of input]",
                    nofreads_contained, (float)nofreads_contained * 100 /
                    (float)nofreads_input);
      if (!arguments->verbose)
        gt_logger_log(default_logger, "contained reads = "GT_WU"",
            nofreads_contained);

      if (gt_reads2twobit_has_paired(r2t))
      {
        nofreads_matesofc = gt_reads2twobit_mark_mates_of_contained(r2t,
            gt_contfinder_contained(contfinder));
        nofreads_output -= nofreads_matesofc;

        gt_logger_log(verbose_logger,
            "mates of contained reads = "GT_WU" [%.2f %% of input]",
            nofreads_matesofc, (float)nofreads_matesofc * 100 /
            (float)nofreads_input);
        if (!arguments->verbose)
          gt_logger_log(default_logger, "mates of contained reads = "GT_WU"",
              nofreads_matesofc);
      }

      gt_logger_log(default_logger,
                    "number of reads in filtered readset = "GT_WU"",
                    nofreads_output);

      if (!had_err && arguments->cntlist)
      {
        GT_READJOINER_PREFILTER_CF_OUTPUT(gt_contfinder_write_cntlist,
            GT_READJOINER_SUFFIX_CNTLIST, "contained reads list saved");
      }
      if (!had_err && arguments->copynum)
      {
        GT_READJOINER_PREFILTER_CF_OUTPUT(gt_contfinder_write_copynum,
            GT_READJOINER_SUFFIX_READSCOPYNUM, "reads copy number saved");
      }
      if (!had_err && arguments->seqnums)
      {
        GT_READJOINER_PREFILTER_CF_OUTPUT(gt_contfinder_write_sorted_seqnums,
            GT_READJOINER_SUFFIX_SEQNUMS, "sorted sequence numbers "
            "saved");
      }
      if (!had_err && arguments->fasta)
      {
        GtStr *fn;
        fn = gt_str_new_cstr(gt_str_get(arguments->readset));
        gt_str_append_cstr(fn, GT_READJOINER_SUFFIX_PREFILTERED_FAS);
        had_err = gt_reads2twobit_write_fasta(r2t, gt_str_get(fn),
            gt_contfinder_contained(contfinder), err);
        gt_logger_log(verbose_logger, "suffix-prefix-free readset saved: %s",
            gt_str_get(fn));
        gt_str_delete(fn);
      }
      if (!had_err && arguments->encseq)
      {
        gt_reads2twobit_delete_sequences(r2t,
            gt_contfinder_contained(contfinder));
        if (nofreads_output > 0)
        {
          had_err = gt_reads2twobit_write_encseq(r2t, err);
          gt_logger_log(verbose_logger,
              "suffix-prefix-free readset saved: %s.%s",
              gt_str_get(arguments->readset),
              varlen ? "(esq|ssp)" : "esq");
          if (!had_err && arguments->des)
          {
            had_err = gt_reads2twobit_write_descriptions(r2t,
                gt_contfinder_contained(contfinder), err);
            gt_logger_log(verbose_logger,
                "descriptions saved: %s.(des|sds)",
                gt_str_get(arguments->readset));
          }
        }
        else
        {
          gt_logger_log(default_logger,
              "no readset saved as no sequence passed the filters");
        }
      }
      if (arguments->testrs)
      {
        gt_contfinder_radixsort_str_eqlen_tester(contfinder,
            !arguments->singlestrand,
            arguments->testrs_depth, arguments->testrs_maxdepth,
            arguments->testrs_print);
      }
      gt_contfinder_delete(contfinder);
    }
    if (!had_err && arguments->libtable && nofreads_output > 0)
    {
      GtStr *fn;
      FILE *rlt_fp;
      fn = gt_str_new_cstr(gt_str_get(arguments->readset));
      gt_str_append_cstr(fn, GT_READJOINER_SUFFIX_READSLIBRARYTABLE);
      rlt_fp = gt_fa_fopen(gt_str_get(fn), "w", err);
      if (rlt_fp == NULL)
        had_err = -1;
      else
      {
        gt_reads2twobit_write_libraries_table(r2t, rlt_fp);
        gt_logger_log(verbose_logger, "reads library table saved: %s",
            gt_str_get(fn));
        gt_fa_fclose(rlt_fp);
      }
      gt_str_delete(fn);
    }
  }
  gt_reads2twobit_delete(r2t);
  gt_logger_delete(verbose_logger);
  gt_logger_delete(default_logger);
  return had_err;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x38, %rsp
movq %r8, %r15
movq %rcx, %r12
movzbl 0x1(%rcx), %edi
movq 0x3fe868(%rip), %r14    # 0x4b8ed8
movq (%r14), %rdx
xorl $0x1, %edi
leaq 0x28c257(%rip), %rbx    # 0x3468d4
movq %rbx, %rsi
callq 0x103e40
movq %rax, %r13
movzbl (%r12), %edi
movq (%r14), %rdx
movq %rbx, %rsi
callq 0x103e40
movq %rax, %r14
leaq 0x29a214(%rip), %rsi    # 0x3548b6
movq %r13, 0x10(%rsp)
movq %r13, %rdi
xorl %eax, %eax
callq 0x103fe1
movq 0x10(%r12), %rdi
callq 0x11b0ca
testq %rax, %rax
jne 0xba6dc
movq 0x10(%r12), %rbx
movq 0x18(%r12), %rdi
xorl %esi, %esi
callq 0x11bfb3
movq %rbx, %rdi
movq %rax, %rsi
callq 0x11acf3
movq 0x10(%r12), %rdi
callq 0x11b0a1
leaq 0x2980af(%rip), %rsi    # 0x35279c
movq %r14, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x103fe1
cmpb $0x1, (%r12)
jne 0xba794
movq %r14, %rbp
callq 0x11ac6c
movq %rax, %rbx
movq 0x18(%r12), %rdi
callq 0x11c131
testq %rax, %rax
je 0xba76d
xorl %r14d, %r14d
leaq 0x2eaed8(%rip), %r13    # 0x3a5601
movq 0x18(%r12), %rdi
movq %r14, %rsi
callq 0x11bfb3
movq %rbx, %rdi
movq %rax, %rsi
callq 0x11acf3
incq %r14
movq 0x18(%r12), %rdi
callq 0x11c131
cmpq %rax, %r14
jae 0xba75e
movq %rbx, %rdi
movq %r13, %rsi
callq 0x11acf3
movq 0x18(%r12), %rdi
callq 0x11c131
cmpq %rax, %r14
jb 0xba729
movq %rbx, %rdi
callq 0x11b0a1
leaq 0x29a3c0(%rip), %rsi    # 0x354b3c
movq %rbp, %r14
movq %rbp, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x103fe1
movq %rbx, %rdi
callq 0x11bdbf
movq 0x10(%r12), %rdi
callq 0x1dafec
movq %rax, %r13
cmpb $0x1, 0xa(%r12)
jne 0xba7b1
movq %r13, %rdi
callq 0x1db576
movq 0x38(%r12), %rsi
cmpq $-0x1, %rsi
je 0xba7ca
movsbl 0x40(%r12), %edx
movq %r13, %rdi
callq 0x1db589
cmpb $0x1, 0xb(%r12)
jne 0xba7e6
movzbl 0xc(%r12), %esi
movzbl 0xd(%r12), %edx
movq %r13, %rdi
callq 0x1de254
movq 0x18(%r12), %rdi
callq 0x11c131
testq %rax, %rax
je 0xba836
movl $0x1, %ebx
leaq -0x1(%rbx), %rsi
movq 0x18(%r12), %rdi
callq 0x11bfee
movq %r13, %rdi
movq %rax, %rsi
movq %r15, %rdx
callq 0x1db253
movl %eax, %ebp
movq 0x18(%r12), %rdi
callq 0x11c131
cmpq %rax, %rbx
jae 0xba82e
incq %rbx
testl %ebp, %ebp
je 0xba7fa
testl %ebp, %ebp
jne 0xbafe9
movq %r13, %rdi
movq %r15, %rsi
callq 0x1db597
testl %eax, %eax
je 0xba84c
movl %eax, %ebp
jmp 0xbafe9
movq %r14, 0x28(%rsp)
movq %r13, %rdi
callq 0x1de154
movq %rax, %rbx
movq %r13, %rdi
callq 0x1de134
movq %rbx, 0x20(%rsp)
movq %rax, 0x8(%rsp)
addq %rax, %rbx
movq %r13, %rdi
callq 0x1de194
movq %rax, %rbp
movq %r13, %rdi
callq 0x1de154
subq %rax, %rbp
movq %r13, %rdi
callq 0x1de144
movq %rax, %r14
addq %rbp, %r14
leaq 0x29a040(%rip), %rsi    # 0x3548dc
movq 0x10(%rsp), %rdi
movq %rbx, %rdx
xorl %eax, %eax
callq 0x103fe1
movq %r13, %rdi
callq 0x1de164
movq %rax, 0x30(%rsp)
movq %r13, %rdi
testq %rax, %rax
je 0xba8e1
callq 0x1de164
leaq -0x1(%rax), %rdx
leaq 0x29852b(%rip), %rsi    # 0x352dfb
movq 0x28(%rsp), %rbp
movq %rbp, %rdi
xorl %eax, %eax
callq 0x103fe1
jmp 0xba911
callq 0x1de184
movq %rax, 0x18(%rsp)
movq %r13, %rdi
callq 0x1de174
leaq 0x29a00c(%rip), %rsi    # 0x354906
movq 0x28(%rsp), %rbp
movq %rbp, %rdi
movq 0x18(%rsp), %rdx
movq %rax, %rcx
xorl %eax, %eax
callq 0x103fe1
leaq 0x29a010(%rip), %rsi    # 0x354928
movq %rbp, %rdi
movq %r14, %rdx
xorl %eax, %eax
callq 0x103fe1
movq 0x8(%rsp), %rbp
testq %rbp, %rbp
js 0xba936
cvtsi2ss %rbp, %xmm0
jmp 0xba94d
movq %rbp, %rax
shrq %rax
movl %ebp, %ecx
andl $0x1, %ecx
orq %rax, %rcx
cvtsi2ss %rcx, %xmm0
addss %xmm0, %xmm0
mulss 0x299963(%rip), %xmm0   # 0x3542b8
testq %rbx, %rbx
movq 0x28(%rsp), %r14
js 0xba966
cvtsi2ss %rbx, %xmm1
jmp 0xba97b
movq %rbx, %rax
shrq %rax
andl $0x1, %ebx
orq %rax, %rbx
cvtsi2ss %rbx, %xmm1
addss %xmm1, %xmm1
movss %xmm1, 0x18(%rsp)
divss %xmm1, %xmm0
cvtss2sd %xmm0, %xmm0
leaq 0x299fbf(%rip), %rsi    # 0x35494f
movq %r14, %rdi
movq %rbp, %rdx
movb $0x1, %al
callq 0x103fe1
cmpb $0x0, (%r12)
jne 0xba9ba
leaq 0x299fcf(%rip), %rsi    # 0x35497a
movq 0x10(%rsp), %rdi
movq %rbp, %rdx
xorl %eax, %eax
callq 0x103fe1
cmpb $0x1, 0x3(%r12)
jne 0xbaa9a
cmpb $0x1, 0x7(%r12)
jne 0xbaa38
movq 0x10(%r12), %rdi
callq 0x11b0a1
movq %rax, %rdi
callq 0x11acc9
movq %rax, %rbx
leaq 0x299fa8(%rip), %rsi    # 0x354992
movq %rax, %rdi
callq 0x11acf3
movq %rbx, %rdi
callq 0x11b0a1
movq %r13, %rdi
movq %rax, %rsi
xorl %edx, %edx
movq %r15, %rcx
callq 0x1dd18d
movl %eax, %ebp
movq %rbx, %rdi
callq 0x11b0a1
leaq 0x29a096(%rip), %rsi    # 0x354ab1
movq %r14, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x103fe1
movq %rbx, %rdi
callq 0x11bdbf
testl %ebp, %ebp
jne 0xbae85
xorl %ebp, %ebp
cmpb $0x1, 0x5(%r12)
jne 0xbae85
movq %r13, %rdi
movq %r15, %rsi
callq 0x1ddad9
movl %eax, %ebx
movq 0x10(%r12), %rdi
callq 0x11b0a1
cmpq $0x0, 0x30(%rsp)
leaq 0x299f2f(%rip), %rdx    # 0x354999
leaq 0x29eacd(%rip), %rcx    # 0x35953e
cmoveq %rdx, %rcx
leaq 0x29a05a(%rip), %rsi    # 0x354ad6
xorl %ebp, %ebp
movq %r14, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x103fe1
testl %ebx, %ebx
je 0xbae50
movl %ebx, %ebp
jmp 0xbae85
movq %r13, %rdi
callq 0x1c5183
movq %rax, %rbx
movzbl 0x2(%r12), %esi
movzbl 0x8(%r12), %edx
xorl $0x1, %esi
movq %rax, %rdi
callq 0x1c3fd9
movq %rbx, 0x8(%rsp)
movq %rbx, %rdi
callq 0x1c3f88
movq %rax, %rbx
testq %rax, %rax
js 0xbaadb
xorps %xmm0, %xmm0
cvtsi2ss %rbx, %xmm0
jmp 0xbaaf5
movq %rbx, %rax
shrq %rax
movl %ebx, %ecx
andl $0x1, %ecx
orq %rax, %rcx
xorps %xmm0, %xmm0
cvtsi2ss %rcx, %xmm0
addss %xmm0, %xmm0
movss 0x18(%rsp), %xmm1
mulss 0x2997b5(%rip), %xmm0   # 0x3542b8
divss %xmm1, %xmm0
cvtss2sd %xmm0, %xmm0
leaq 0x299ee3(%rip), %rsi    # 0x3549f5
movq %r14, %rdi
movq %rbx, %rdx
movb $0x1, %al
callq 0x103fe1
cmpb $0x0, (%r12)
jne 0xbab3c
leaq 0x299efa(%rip), %rsi    # 0x354a27
movq 0x10(%rsp), %rdi
movq %rbx, %rdx
xorl %eax, %eax
callq 0x103fe1
subq %rbx, 0x20(%rsp)
movq %r13, %rdi
callq 0x1db170
testb %al, %al
je 0xbabde
movq 0x8(%rsp), %rdi
callq 0x1c3fc9
movq %r13, %rdi
movq %rax, %rsi
callq 0x1dd413
movq %rax, %rbx
testq %rax, %rax
js 0xbab78
xorps %xmm0, %xmm0
cvtsi2ss %rbx, %xmm0
jmp 0xbab92
movq %rbx, %rax
shrq %rax
movl %ebx, %ecx
andl $0x1, %ecx
orq %rax, %rcx
xorps %xmm0, %xmm0
cvtsi2ss %rcx, %xmm0
addss %xmm0, %xmm0
movss 0x18(%rsp), %xmm1
subq %rbx, 0x20(%rsp)
mulss 0x299713(%rip), %xmm0   # 0x3542b8
divss %xmm1, %xmm0
cvtss2sd %xmm0, %xmm0
leaq 0x299e38(%rip), %rsi    # 0x3549ec
movq %r14, %rdi
movq %rbx, %rdx
movb $0x1, %al
callq 0x103fe1
cmpb $0x0, (%r12)
jne 0xbabde
leaq 0x299e4f(%rip), %rsi    # 0x354a1e
movq 0x10(%rsp), %rdi
movq %rbx, %rdx
xorl %eax, %eax
callq 0x103fe1
leaq 0x2981c5(%rip), %rsi    # 0x352daa
movq 0x10(%rsp), %rdi
movq 0x20(%rsp), %rdx
xorl %eax, %eax
callq 0x103fe1
cmpb $0x1, 0x4(%r12)
jne 0xbac68
movq 0x10(%r12), %rdi
callq 0x11b0a1
movq %rax, %rdi
callq 0x11acc9
movq %rax, %rbx
leaq 0x297bcc(%rip), %rsi    # 0x3527e6
movq %rax, %rdi
callq 0x11acf3
movq %rbx, %rdi
callq 0x11b0a1
movq 0x8(%rsp), %rdi
movq %rax, %rsi
movq %r15, %rdx
callq 0x1c3e85
movl %eax, %ebp
movq %rbx, %rdi
callq 0x11b0a1
leaq 0x299df2(%rip), %rsi    # 0x354a3d
movq %r14, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x103fe1
movq %rbx, %rdi
callq 0x11bdbf
testl %ebp, %ebp
jne 0xbaef9
cmpb $0x1, 0x8(%r12)
jne 0xbacda
movq 0x10(%r12), %rdi
callq 0x11b0a1
movq %rax, %rdi
callq 0x11acc9
movq %rax, %rbx
leaq 0x299b7a(%rip), %rsi    # 0x354806
movq %rax, %rdi
callq 0x11acf3
movq %rbx, %rdi
callq 0x11b0a1
movq 0x8(%rsp), %rdi
movq %rax, %rsi
movq %r15, %rdx
callq 0x1c3e9f
movl %eax, %ebp
movq %rbx, %rdi
callq 0x11b0a1
leaq 0x299d9f(%rip), %rsi    # 0x354a5c
movq %r14, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x103fe1
movq %rbx, %rdi
callq 0x11bdbf
testl %ebp, %ebp
jne 0xbaef9
cmpb $0x1, 0x6(%r12)
jne 0xbad4c
movq 0x10(%r12), %rdi
callq 0x11b0a1
movq %rax, %rdi
callq 0x11acc9
movq %rax, %rbx
leaq 0x299d7a(%rip), %rsi    # 0x354a78
movq %rax, %rdi
callq 0x11acf3
movq %rbx, %rdi
callq 0x11b0a1
movq 0x8(%rsp), %rdi
movq %rax, %rsi
movq %r15, %rdx
callq 0x1c3e3c
movl %eax, %ebp
movq %rbx, %rdi
callq 0x11b0a1
leaq 0x299d4d(%rip), %rsi    # 0x354a7c
movq %r14, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x103fe1
movq %rbx, %rdi
callq 0x11bdbf
testl %ebp, %ebp
jne 0xbaef9
cmpb $0x1, 0x7(%r12)
jne 0xbadd1
movq 0x10(%r12), %rdi
callq 0x11b0a1
movq %rax, %rdi
callq 0x11acc9
movq %rax, %rbx
leaq 0x299c22(%rip), %rsi    # 0x354992
movq %rax, %rdi
callq 0x11acf3
movq %rbx, %rdi
callq 0x11b0a1
movq %rax, %r14
movq 0x8(%rsp), %rdi
callq 0x1c3fc9
movq %r13, %rdi
movq %r14, %rsi
movq 0x28(%rsp), %r14
movq %rax, %rdx
movq %r15, %rcx
callq 0x1dd18d
movl %eax, %ebp
movq %rbx, %rdi
callq 0x11b0a1
leaq 0x299cea(%rip), %rsi    # 0x354a9e
movq %r14, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x103fe1
movq %rbx, %rdi
callq 0x11bdbf
testl %ebp, %ebp
jne 0xbaef9
xorl %ebp, %ebp
cmpb $0x1, 0x5(%r12)
jne 0xbaef9
movq 0x8(%rsp), %rdi
callq 0x1c3fc9
movq %r13, %rdi
movq %rax, %rsi
callq 0x1dd500
cmpq $0x0, 0x20(%rsp)
je 0xbaea2
movq %r13, %rdi
movq %r15, %rsi
callq 0x1ddad9
movl %eax, %ebx
movq 0x10(%r12), %rdi
callq 0x11b0a1
cmpq $0x0, 0x30(%rsp)
leaq 0x299b75(%rip), %rdx    # 0x354999
leaq 0x29e713(%rip), %rcx    # 0x35953e
cmoveq %rdx, %rcx
leaq 0x299c8d(%rip), %rsi    # 0x354ac3
xorl %ebp, %ebp
movq %r14, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x103fe1
testl %ebx, %ebx
je 0xbaeb9
movl %ebx, %ebp
jmp 0xbaef9
cmpb $0x1, 0xb(%r12)
jne 0xbae85
movq %r13, %rdi
xorl %esi, %esi
movq %r15, %rdx
callq 0x1dd831
movl %eax, %ebp
movq 0x10(%r12), %rdi
callq 0x11b0a1
leaq 0x299b2b(%rip), %rsi    # 0x3549a3
movq %r14, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x103fe1
leaq 0x299b38(%rip), %rsi    # 0x3549c4
movq 0x10(%rsp), %rdi
movq 0x20(%rsp), %rdx
xorl %eax, %eax
callq 0x103fe1
jmp 0xbaf2e
leaq 0x299c42(%rip), %rsi    # 0x354aeb
xorl %ebp, %ebp
movq 0x10(%rsp), %rdi
xorl %eax, %eax
callq 0x103fe1
jmp 0xbaef9
cmpb $0x1, 0xb(%r12)
jne 0xbaef9
movq 0x8(%rsp), %rdi
callq 0x1c3fc9
movq %r13, %rdi
movq %rax, %rsi
movq %r15, %rdx
callq 0x1dd831
movl %eax, %ebp
movq 0x10(%r12), %rdi
callq 0x11b0a1
leaq 0x299ab7(%rip), %rsi    # 0x3549a3
movq %r14, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x103fe1
cmpb $0x1, 0x20(%r12)
jne 0xbaf24
movzbl 0x2(%r12), %esi
movq 0x28(%r12), %rdx
movq 0x30(%r12), %rcx
movzbl 0x21(%r12), %r8d
xorl $0x1, %esi
movq 0x8(%rsp), %rdi
callq 0x1c51f0
movq 0x8(%rsp), %rdi
callq 0x1c5125
testl %ebp, %ebp
jne 0xbafe9
xorl %ebp, %ebp
cmpb $0x1, 0x9(%r12)
jne 0xbafe9
cmpq $0x0, 0x20(%rsp)
je 0xbafe9
movq 0x10(%r12), %rdi
callq 0x11b0a1
movq %rax, %rdi
callq 0x11acc9
movq %rax, %rbx
leaq 0x2983f0(%rip), %rsi    # 0x35335c
movq %rax, %rdi
callq 0x11acf3
movq %rbx, %rdi
callq 0x11b0a1
leaq 0x2d8632(%rip), %rsi    # 0x3935b5
leaq 0x299332(%rip), %rdx    # 0x3542bc
movq %rax, %rdi
movl $0x1ee, %ecx            # imm = 0x1EE
movq %r15, %r8
callq 0xfcdbb
testq %rax, %rax
je 0xbafd7
movq %rax, %r14
movq %r13, %rdi
movq %rax, %rsi
callq 0x1de1a4
movq %rbx, %rdi
callq 0x11b0a1
leaq 0x299b62(%rip), %rsi    # 0x354b1e
xorl %ebp, %ebp
movq 0x28(%rsp), %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x103fe1
movq %r14, %rdi
callq 0xfd018
jmp 0xbafdc
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
movq %rbx, %rdi
callq 0x11bdbf
movq 0x28(%rsp), %r14
movq %r13, %rdi
callq 0x1db0a7
movq %r14, %rdi
callq 0x1040e0
movq 0x10(%rsp), %rdi
callq 0x1040e0
movl %ebp, %eax
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq