// File: /workspace/github_c_makefile_star2_O1/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 0x407800(%rip), %r14    # 0x4c3ee8
movq (%r14), %rdx
xorl $0x1, %edi
leaq 0x2931df(%rip), %rbx    # 0x34f8d4
movq %rbx, %rsi
callq 0x108ed0
movq %rax, %r13
movzbl (%r12), %edi
movq (%r14), %rdx
movq %rbx, %rsi
callq 0x108ed0
movq %rax, %r14
leaq 0x2a11d4(%rip), %rsi    # 0x35d8ee
movq %r13, 0x10(%rsp)
movq %r13, %rdi
xorl %eax, %eax
callq 0x10906e
movq 0x10(%r12), %rdi
callq 0x120d4c
testq %rax, %rax
jne 0xbc754
movq 0x10(%r12), %rbx
movq 0x18(%r12), %rdi
xorl %esi, %esi
callq 0x121cfa
movq %rbx, %rdi
movq %rax, %rsi
callq 0x12097f
movq 0x10(%r12), %rdi
callq 0x120d23
leaq 0x29f06f(%rip), %rsi    # 0x35b7d4
movq %r14, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x10906e
cmpb $0x1, (%r12)
jne 0xbc80c
movq %r14, %rbp
callq 0x1208f8
movq %rax, %rbx
movq 0x18(%r12), %rdi
callq 0x121e78
testq %rax, %rax
je 0xbc7e5
xorl %r14d, %r14d
leaq 0x2f2402(%rip), %r13    # 0x3aeba3
movq 0x18(%r12), %rdi
movq %r14, %rsi
callq 0x121cfa
movq %rbx, %rdi
movq %rax, %rsi
callq 0x12097f
incq %r14
movq 0x18(%r12), %rdi
callq 0x121e78
cmpq %rax, %r14
jae 0xbc7d6
movq %rbx, %rdi
movq %r13, %rsi
callq 0x12097f
movq 0x18(%r12), %rdi
callq 0x121e78
cmpq %rax, %r14
jb 0xbc7a1
movq %rbx, %rdi
callq 0x120d23
leaq 0x2a1380(%rip), %rsi    # 0x35db74
movq %rbp, %r14
movq %rbp, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x10906e
movq %rbx, %rdi
callq 0x121b03
movq 0x10(%r12), %rdi
callq 0x1e4814
movq %rax, %r13
cmpb $0x1, 0xa(%r12)
jne 0xbc829
movq %r13, %rdi
callq 0x1e4d99
movq 0x38(%r12), %rsi
cmpq $-0x1, %rsi
je 0xbc842
movsbl 0x40(%r12), %edx
movq %r13, %rdi
callq 0x1e4dac
cmpb $0x1, 0xb(%r12)
jne 0xbc85e
movzbl 0xc(%r12), %esi
movzbl 0xd(%r12), %edx
movq %r13, %rdi
callq 0x1e7a80
movq 0x18(%r12), %rdi
callq 0x121e78
testq %rax, %rax
je 0xbc8ad
movl $0x1, %ebx
leaq -0x1(%rbx), %rsi
movq 0x18(%r12), %rdi
callq 0x121d35
movq %r13, %rdi
movq %rax, %rsi
movq %r15, %rdx
callq 0x1e4a75
movl %eax, %ebp
movq 0x18(%r12), %rdi
callq 0x121e78
testl %ebp, %ebp
sete %cl
cmpq %rax, %rbx
jae 0xbc8b1
incq %rbx
testl %ebp, %ebp
je 0xbc872
jmp 0xbc8b1
movb $0x1, %cl
xorl %ebp, %ebp
testb %cl, %cl
je 0xbc8c2
movq %r13, %rdi
movq %r15, %rsi
callq 0x1e4dba
movl %eax, %ebp
testl %ebp, %ebp
jne 0xbd059
movq %r14, 0x28(%rsp)
movq %r13, %rdi
callq 0x1e7980
movq %rax, %rbx
movq %r13, %rdi
callq 0x1e7960
movq %rbx, 0x20(%rsp)
movq %rax, 0x8(%rsp)
addq %rax, %rbx
movq %r13, %rdi
callq 0x1e79c0
movq %rax, %rbp
movq %r13, %rdi
callq 0x1e7980
subq %rax, %rbp
movq %r13, %rdi
callq 0x1e7970
movq %rax, %r14
addq %rbp, %r14
leaq 0x2a0ffa(%rip), %rsi    # 0x35d914
movq 0x10(%rsp), %rdi
movq %rbx, %rdx
xorl %eax, %eax
callq 0x10906e
movq %r13, %rdi
callq 0x1e7990
movq %rax, 0x30(%rsp)
movq %r13, %rdi
testq %rax, %rax
je 0xbc95f
callq 0x1e7990
leaq -0x1(%rax), %rdx
leaq 0x29f4e5(%rip), %rsi    # 0x35be33
movq 0x28(%rsp), %rbp
movq %rbp, %rdi
xorl %eax, %eax
callq 0x10906e
jmp 0xbc98f
callq 0x1e79b0
movq %rax, 0x18(%rsp)
movq %r13, %rdi
callq 0x1e79a0
leaq 0x2a0fc6(%rip), %rsi    # 0x35d93e
movq 0x28(%rsp), %rbp
movq %rbp, %rdi
movq 0x18(%rsp), %rdx
movq %rax, %rcx
xorl %eax, %eax
callq 0x10906e
leaq 0x2a0fca(%rip), %rsi    # 0x35d960
movq %rbp, %rdi
movq %r14, %rdx
xorl %eax, %eax
callq 0x10906e
movq 0x8(%rsp), %rbp
testq %rbp, %rbp
js 0xbc9b4
cvtsi2ss %rbp, %xmm0
jmp 0xbc9cb
movq %rbp, %rax
shrq %rax
movl %ebp, %ecx
andl $0x1, %ecx
orq %rax, %rcx
cvtsi2ss %rcx, %xmm0
addss %xmm0, %xmm0
mulss 0x2a091d(%rip), %xmm0   # 0x35d2f0
testq %rbx, %rbx
movq 0x28(%rsp), %r14
js 0xbc9e4
cvtsi2ss %rbx, %xmm1
jmp 0xbc9f9
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 0x2a0f79(%rip), %rsi    # 0x35d987
movq %r14, %rdi
movq %rbp, %rdx
movb $0x1, %al
callq 0x10906e
cmpb $0x0, (%r12)
jne 0xbca38
leaq 0x2a0f89(%rip), %rsi    # 0x35d9b2
movq 0x10(%rsp), %rdi
movq %rbp, %rdx
xorl %eax, %eax
callq 0x10906e
cmpb $0x1, 0x3(%r12)
jne 0xbcb64
xorl %ebp, %ebp
cmpb $0x1, 0x7(%r12)
jne 0xbcab0
movq 0x10(%r12), %rdi
callq 0x120d23
movq %rax, %rdi
callq 0x120955
movq %rax, %rbx
leaq 0x2a0f60(%rip), %rsi    # 0x35d9ca
movq %rax, %rdi
callq 0x12097f
movq %rbx, %rdi
callq 0x120d23
movq %r13, %rdi
movq %rax, %rsi
xorl %edx, %edx
movq %r15, %rcx
callq 0x1e69d9
movl %eax, %ebp
movq %rbx, %rdi
callq 0x120d23
leaq 0x2a104e(%rip), %rsi    # 0x35dae9
movq %r14, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x10906e
movq %rbx, %rdi
callq 0x121b03
testl %ebp, %ebp
jne 0xbcb47
xorl %ebp, %ebp
cmpb $0x1, 0x5(%r12)
jne 0xbcb47
movq %r13, %rdi
movq %r15, %rsi
callq 0x1e732a
movl %eax, %ebp
movq 0x10(%r12), %rdi
callq 0x120d23
cmpq $0x0, 0x30(%rsp)
leaq 0x2a0ee7(%rip), %rdx    # 0x35d9d1
leaq 0x2a5a9d(%rip), %rcx    # 0x36258e
cmoveq %rdx, %rcx
leaq 0x2a1012(%rip), %rsi    # 0x35db0e
movq %r14, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x10906e
testl %ebp, %ebp
jne 0xbcb47
cmpb $0x1, 0xb(%r12)
movl $0x0, %ebp
jne 0xbcb47
movq %r13, %rdi
xorl %esi, %esi
movq %r15, %rdx
callq 0x1e705f
movl %eax, %ebp
movq 0x10(%r12), %rdi
callq 0x120d23
leaq 0x2a0ea1(%rip), %rsi    # 0x35d9db
movq %r14, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x10906e
leaq 0x2a0eae(%rip), %rsi    # 0x35d9fc
movq 0x10(%rsp), %rdi
movq 0x20(%rsp), %rdx
xorl %eax, %eax
callq 0x10906e
jmp 0xbcf9e
movq %r13, %rdi
callq 0x1ce33b
movq %rax, %rbx
movzbl 0x2(%r12), %esi
movzbl 0x8(%r12), %edx
xorl $0x1, %esi
movq %rax, %rdi
callq 0x1cd112
movq %rbx, 0x8(%rsp)
movq %rbx, %rdi
callq 0x1cd0be
movq %rax, %rbx
testq %rax, %rax
js 0xbcba5
xorps %xmm0, %xmm0
cvtsi2ss %rbx, %xmm0
jmp 0xbcbbf
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 0x2a0723(%rip), %xmm0   # 0x35d2f0
divss %xmm1, %xmm0
cvtss2sd %xmm0, %xmm0
leaq 0x2a0e51(%rip), %rsi    # 0x35da2d
movq %r14, %rdi
movq %rbx, %rdx
movb $0x1, %al
callq 0x10906e
cmpb $0x0, (%r12)
jne 0xbcc06
leaq 0x2a0e68(%rip), %rsi    # 0x35da5f
movq 0x10(%rsp), %rdi
movq %rbx, %rdx
xorl %eax, %eax
callq 0x10906e
subq %rbx, 0x20(%rsp)
movq %r13, %rdi
callq 0x1e4998
testb %al, %al
je 0xbcca8
movq 0x8(%rsp), %rdi
callq 0x1cd102
movq %r13, %rdi
movq %rax, %rsi
callq 0x1e6c4e
movq %rax, %rbx
testq %rax, %rax
js 0xbcc42
xorps %xmm0, %xmm0
cvtsi2ss %rbx, %xmm0
jmp 0xbcc5c
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 0x2a0681(%rip), %xmm0   # 0x35d2f0
divss %xmm1, %xmm0
cvtss2sd %xmm0, %xmm0
leaq 0x2a0da6(%rip), %rsi    # 0x35da24
movq %r14, %rdi
movq %rbx, %rdx
movb $0x1, %al
callq 0x10906e
cmpb $0x0, (%r12)
jne 0xbcca8
leaq 0x2a0dbd(%rip), %rsi    # 0x35da56
movq 0x10(%rsp), %rdi
movq %rbx, %rdx
xorl %eax, %eax
callq 0x10906e
leaq 0x29f133(%rip), %rsi    # 0x35bde2
xorl %ebp, %ebp
movq 0x10(%rsp), %rdi
movq 0x20(%rsp), %rdx
xorl %eax, %eax
callq 0x10906e
cmpb $0x1, 0x4(%r12)
jne 0xbcd2c
movq 0x10(%r12), %rdi
callq 0x120d23
movq %rax, %rdi
callq 0x120955
movq %rax, %rbx
leaq 0x29eb38(%rip), %rsi    # 0x35b81e
movq %rax, %rdi
callq 0x12097f
movq %rbx, %rdi
callq 0x120d23
movq 0x8(%rsp), %rdi
movq %rax, %rsi
movq %r15, %rdx
callq 0x1ccfb6
movl %eax, %ebp
movq %rbx, %rdi
callq 0x120d23
leaq 0x2a0d5e(%rip), %rsi    # 0x35da75
movq %r14, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x10906e
movq %rbx, %rdi
callq 0x121b03
testl %ebp, %ebp
jne 0xbcd9c
xorl %ebp, %ebp
cmpb $0x1, 0x8(%r12)
jne 0xbcd9c
movq 0x10(%r12), %rdi
callq 0x120d23
movq %rax, %rdi
callq 0x120955
movq %rax, %rbx
leaq 0x2a0ae8(%rip), %rsi    # 0x35d83e
movq %rax, %rdi
callq 0x12097f
movq %rbx, %rdi
callq 0x120d23
movq 0x8(%rsp), %rdi
movq %rax, %rsi
movq %r15, %rdx
callq 0x1ccfd0
movl %eax, %ebp
movq %rbx, %rdi
callq 0x120d23
leaq 0x2a0d0d(%rip), %rsi    # 0x35da94
movq %r14, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x10906e
movq %rbx, %rdi
callq 0x121b03
testl %ebp, %ebp
jne 0xbce0c
xorl %ebp, %ebp
cmpb $0x1, 0x6(%r12)
jne 0xbce0c
movq 0x10(%r12), %rdi
callq 0x120d23
movq %rax, %rdi
callq 0x120955
movq %rax, %rbx
leaq 0x2a0cea(%rip), %rsi    # 0x35dab0
movq %rax, %rdi
callq 0x12097f
movq %rbx, %rdi
callq 0x120d23
movq 0x8(%rsp), %rdi
movq %rax, %rsi
movq %r15, %rdx
callq 0x1ccf6d
movl %eax, %ebp
movq %rbx, %rdi
callq 0x120d23
leaq 0x2a0cbd(%rip), %rsi    # 0x35dab4
movq %r14, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x10906e
movq %rbx, %rdi
callq 0x121b03
testl %ebp, %ebp
jne 0xbce8f
xorl %ebp, %ebp
cmpb $0x1, 0x7(%r12)
jne 0xbce8f
movq 0x10(%r12), %rdi
callq 0x120d23
movq %rax, %rdi
callq 0x120955
movq %rax, %rbx
leaq 0x2a0b94(%rip), %rsi    # 0x35d9ca
movq %rax, %rdi
callq 0x12097f
movq %rbx, %rdi
callq 0x120d23
movq %rax, %r14
movq 0x8(%rsp), %rdi
callq 0x1cd102
movq %r13, %rdi
movq %r14, %rsi
movq 0x28(%rsp), %r14
movq %rax, %rdx
movq %r15, %rcx
callq 0x1e69d9
movl %eax, %ebp
movq %rbx, %rdi
callq 0x120d23
leaq 0x2a0c5c(%rip), %rsi    # 0x35dad6
movq %r14, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x10906e
movq %rbx, %rdi
callq 0x121b03
testl %ebp, %ebp
jne 0xbcf69
xorl %ebp, %ebp
cmpb $0x1, 0x5(%r12)
jne 0xbcf69
movq 0x8(%rsp), %rdi
callq 0x1cd102
movq %r13, %rdi
movq %rax, %rsi
callq 0x1e6d47
cmpq $0x0, 0x20(%rsp)
je 0xbcf54
movq %r13, %rdi
movq %r15, %rsi
callq 0x1e732a
movl %eax, %ebp
movq 0x10(%r12), %rdi
callq 0x120d23
cmpq $0x0, 0x30(%rsp)
leaq 0x2a0ae7(%rip), %rdx    # 0x35d9d1
leaq 0x2a569d(%rip), %rcx    # 0x36258e
cmoveq %rdx, %rcx
leaq 0x2a0bff(%rip), %rsi    # 0x35dafb
movq %r14, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x10906e
testl %ebp, %ebp
jne 0xbcf69
cmpb $0x1, 0xb(%r12)
movl $0x0, %ebp
jne 0xbcf69
movq 0x8(%rsp), %rdi
callq 0x1cd102
movq %r13, %rdi
movq %rax, %rsi
movq %r15, %rdx
callq 0x1e705f
movl %eax, %ebp
movq 0x10(%r12), %rdi
callq 0x120d23
leaq 0x2a0a96(%rip), %rsi    # 0x35d9db
movq %r14, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x10906e
jmp 0xbcf69
leaq 0x2a0bc8(%rip), %rsi    # 0x35db23
xorl %ebp, %ebp
movq 0x10(%rsp), %rdi
xorl %eax, %eax
callq 0x10906e
cmpb $0x1, 0x20(%r12)
jne 0xbcf94
movzbl 0x2(%r12), %esi
movq 0x28(%r12), %rdx
movq 0x30(%r12), %rcx
movzbl 0x21(%r12), %r8d
xorl $0x1, %esi
movq 0x8(%rsp), %rdi
callq 0x1ce3a8
movq 0x8(%rsp), %rdi
callq 0x1ce2dd
testl %ebp, %ebp
jne 0xbd059
xorl %ebp, %ebp
cmpb $0x1, 0x9(%r12)
jne 0xbd059
cmpq $0x0, 0x20(%rsp)
je 0xbd059
movq 0x10(%r12), %rdi
callq 0x120d23
movq %rax, %rdi
callq 0x120955
movq %rax, %rbx
leaq 0x29f3b8(%rip), %rsi    # 0x35c394
movq %rax, %rdi
callq 0x12097f
movq %rbx, %rdi
callq 0x120d23
leaq 0x2dfa3e(%rip), %rsi    # 0x39ca31
leaq 0x2a02fa(%rip), %rdx    # 0x35d2f4
movq %rax, %rdi
movl $0x1ee, %ecx            # imm = 0x1EE
movq %r15, %r8
callq 0x101c23
testq %rax, %rax
je 0xbd047
movq %rax, %r14
movq %r13, %rdi
movq %rax, %rsi
callq 0x1e79d0
movq %rbx, %rdi
callq 0x120d23
leaq 0x2a0b2a(%rip), %rsi    # 0x35db56
xorl %ebp, %ebp
movq 0x28(%rsp), %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x10906e
movq %r14, %rdi
callq 0x101e80
jmp 0xbd04c
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
movq %rbx, %rdi
callq 0x121b03
movq 0x28(%rsp), %r14
movq %r13, %rdi
callq 0x1e48cf
movq %r14, %rdi
callq 0x10916a
movq 0x10(%rsp), %rdi
callq 0x10916a
movl %ebp, %eax
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq