// File: /workspace/github_c_makefile_star2_O2/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 0x3fa1f1(%rip), %r14    # 0x437eb0
movq (%r14), %rdx
xorl $0x1, %edi
leaq 0x2a8c08(%rip), %rbx    # 0x2e68d4
movq %rbx, %rsi
callq 0x92b50
movq %rax, %r13
movzbl (%r12), %edi
movq (%r14), %rdx
movq %rbx, %rsi
callq 0x92b50
movq %rax, %r14
leaq 0x2b6bd5(%rip), %rsi    # 0x2f48c6
movq %r13, 0x18(%rsp)
movq %r13, %rdi
xorl %eax, %eax
callq 0x92e71
movq 0x10(%r12), %rdi
callq 0xad289
testq %rax, %rax
jne 0x3dd2b
movq 0x10(%r12), %rbx
movq 0x18(%r12), %rdi
xorl %esi, %esi
callq 0xae386
movq %rbx, %rdi
movq %rax, %rsi
callq 0xacbfb
movq 0x10(%r12), %rdi
callq 0xad1fa
leaq 0x2b4a70(%rip), %rsi    # 0x2f27ac
movq %r14, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x92e71
cmpb $0x1, (%r12)
jne 0x3ddde
movq %r14, 0x10(%rsp)
pushq $0x1
popq %rbp
callq 0xacb84
movq %rax, %rbx
leaq 0x307c16(%rip), %r14    # 0x345981
leaq -0x1(%rbp), %r13
movq 0x18(%r12), %rdi
callq 0xae61c
cmpq %rax, %r13
jae 0x3ddb5
movq 0x18(%r12), %rdi
movq %r13, %rsi
callq 0xae386
movq %rbx, %rdi
movq %rax, %rsi
callq 0xacbfb
movq 0x18(%r12), %rdi
callq 0xae61c
cmpq %rax, %rbp
jae 0x3ddb0
movq %rbx, %rdi
movq %r14, %rsi
callq 0xacbfb
incq %rbp
jmp 0x3dd6b
movq %rbx, %rdi
callq 0xad1fa
leaq 0x2b6d88(%rip), %rsi    # 0x2f4b4c
movq 0x10(%rsp), %r14
movq %r14, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x92e71
movq %rbx, %rdi
callq 0xae103
movq 0x10(%r12), %rdi
callq 0x18875c
movq %rax, %r13
cmpb $0x1, 0xa(%r12)
jne 0x3ddfb
movq %r13, %rdi
callq 0x188e30
movq 0x38(%r12), %rsi
cmpq $-0x1, %rsi
je 0x3de14
movsbl 0x40(%r12), %edx
movq %r13, %rdi
callq 0x188e76
cmpb $0x1, 0xb(%r12)
jne 0x3de30
movzbl 0xc(%r12), %esi
movzbl 0xd(%r12), %edx
movq %r13, %rdi
callq 0x18bf14
xorl %ebx, %ebx
xorl %ebp, %ebp
movq 0x18(%r12), %rdi
callq 0xae61c
cmpq %rax, %rbx
jae 0x3de69
testl %ebp, %ebp
jne 0x3de69
movq 0x18(%r12), %rdi
movq %rbx, %rsi
callq 0xae3f2
movq %r13, %rdi
movq %rax, %rsi
movq %r15, %rdx
callq 0x188a9d
movl %eax, %ebp
incq %rbx
jmp 0x3de34
testl %ebp, %ebp
jne 0x3e615
movq %r13, %rdi
movq %r15, %rsi
callq 0x188e84
movl %eax, %ebp
testl %eax, %eax
jne 0x3e615
movq %r14, 0x10(%rsp)
movq %r13, %rdi
callq 0x18bc5b
movq %rax, %rbx
movq %r13, %rdi
callq 0x18bbd5
movq %rbx, 0x28(%rsp)
movq %rax, 0x8(%rsp)
addq %rax, %rbx
movq %r13, %rdi
callq 0x18bd67
movq %rax, %rbp
movq %r13, %rdi
callq 0x18bc5b
subq %rax, %rbp
movq %r13, %rdi
callq 0x18bc18
movq %rax, %r14
addq %rbp, %r14
leaq 0x2b6a16(%rip), %rsi    # 0x2f48ec
movq 0x18(%rsp), %rdi
movq %rbx, %rdx
xorl %eax, %eax
callq 0x92e71
movq %r13, %rdi
callq 0x18bc9e
movq %rax, 0x30(%rsp)
movq %r13, %rdi
testq %rax, %rax
je 0x3df1b
callq 0x18bc9e
leaq -0x1(%rax), %rdx
leaq 0x2b4f01(%rip), %rsi    # 0x2f2e0b
movq 0x10(%rsp), %rbp
movq %rbp, %rdi
xorl %eax, %eax
callq 0x92e71
jmp 0x3df4b
callq 0x18bd24
movq %rax, 0x20(%rsp)
movq %r13, %rdi
callq 0x18bce1
leaq 0x2b69e2(%rip), %rsi    # 0x2f4916
movq 0x10(%rsp), %rbp
movq %rbp, %rdi
movq 0x20(%rsp), %rdx
movq %rax, %rcx
xorl %eax, %eax
callq 0x92e71
leaq 0x2b69e6(%rip), %rsi    # 0x2f4938
movq %rbp, %rdi
movq %r14, %rdx
xorl %eax, %eax
callq 0x92e71
movq 0x8(%rsp), %rbp
testq %rbp, %rbp
js 0x3df70
cvtsi2ss %rbp, %xmm0
jmp 0x3df87
movq %rbp, %rax
shrq %rax
movl %ebp, %ecx
andl $0x1, %ecx
orq %rax, %rcx
cvtsi2ss %rcx, %xmm0
addss %xmm0, %xmm0
mulss 0x2b6339(%rip), %xmm0   # 0x2f42c8
testq %rbx, %rbx
movq 0x10(%rsp), %r14
js 0x3dfa0
cvtsi2ss %rbx, %xmm1
jmp 0x3dfb5
movq %rbx, %rax
shrq %rax
andl $0x1, %ebx
orq %rax, %rbx
cvtsi2ss %rbx, %xmm1
addss %xmm1, %xmm1
movss %xmm1, 0x20(%rsp)
divss %xmm1, %xmm0
cvtss2sd %xmm0, %xmm0
leaq 0x2b6995(%rip), %rsi    # 0x2f495f
movq %r14, %rdi
movq %rbp, %rdx
movb $0x1, %al
callq 0x92e71
cmpb $0x0, (%r12)
jne 0x3dff4
leaq 0x2b69a5(%rip), %rsi    # 0x2f498a
movq 0x18(%rsp), %rdi
movq %rbp, %rdx
xorl %eax, %eax
callq 0x92e71
cmpb $0x1, 0x3(%r12)
jne 0x3e0d4
cmpb $0x1, 0x7(%r12)
jne 0x3e072
movq 0x10(%r12), %rdi
callq 0xad1fa
movq %rax, %rdi
callq 0xacbd1
movq %rax, %rbx
leaq 0x2b697e(%rip), %rsi    # 0x2f49a2
movq %rax, %rdi
callq 0xacbfb
movq %rbx, %rdi
callq 0xad1fa
movq %r13, %rdi
movq %rax, %rsi
xorl %edx, %edx
movq %r15, %rcx
callq 0x18aa18
movl %eax, %ebp
movq %rbx, %rdi
callq 0xad1fa
leaq 0x2b6a6c(%rip), %rsi    # 0x2f4ac1
movq %r14, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x92e71
movq %rbx, %rdi
callq 0xae103
testl %ebp, %ebp
jne 0x3e4b3
xorl %ebp, %ebp
cmpb $0x1, 0x5(%r12)
jne 0x3e4b3
movq %r13, %rdi
movq %r15, %rsi
callq 0x18b4d6
movl %eax, %ebx
movq 0x10(%r12), %rdi
callq 0xad1fa
cmpq $0x0, 0x30(%rsp)
leaq 0x2b6905(%rip), %rdx    # 0x2f49a9
leaq 0x2bb46b(%rip), %rcx    # 0x2f9516
cmoveq %rdx, %rcx
leaq 0x2b6a30(%rip), %rsi    # 0x2f4ae6
xorl %ebp, %ebp
movq %r14, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x92e71
testl %ebx, %ebx
je 0x3e47e
movl %ebx, %ebp
jmp 0x3e4b3
movq %r13, %rdi
callq 0x1753a5
movq %rax, %rbx
movzbl 0x2(%r12), %esi
movzbl 0x8(%r12), %edx
xorl $0x1, %esi
movq %rax, %rdi
callq 0x17446a
movq %rbx, 0x8(%rsp)
movq %rbx, %rdi
callq 0x1743e4
movq %rax, %rbx
testq %rax, %rax
js 0x3e112
cvtsi2ss %rbx, %xmm0
jmp 0x3e129
movq %rbx, %rax
shrq %rax
movl %ebx, %ecx
andl $0x1, %ecx
orq %rax, %rcx
cvtsi2ss %rcx, %xmm0
addss %xmm0, %xmm0
movss 0x20(%rsp), %xmm1
mulss 0x2b6191(%rip), %xmm0   # 0x2f42c8
divss %xmm1, %xmm0
cvtss2sd %xmm0, %xmm0
leaq 0x2b68bf(%rip), %rsi    # 0x2f4a05
movq %r14, %rdi
movq %rbx, %rdx
movb $0x1, %al
callq 0x92e71
cmpb $0x0, (%r12)
jne 0x3e170
leaq 0x2b68d6(%rip), %rsi    # 0x2f4a37
movq 0x18(%rsp), %rdi
movq %rbx, %rdx
xorl %eax, %eax
callq 0x92e71
subq %rbx, 0x28(%rsp)
movq %r13, %rdi
callq 0x188930
testb %al, %al
je 0x3e20c
movq 0x8(%rsp), %rdi
callq 0x174427
movq %r13, %rdi
movq %rax, %rsi
callq 0x18ac87
movq %rax, %rbx
testq %rax, %rax
js 0x3e1a9
cvtsi2ss %rbx, %xmm0
jmp 0x3e1c0
movq %rbx, %rax
shrq %rax
movl %ebx, %ecx
andl $0x1, %ecx
orq %rax, %rcx
cvtsi2ss %rcx, %xmm0
addss %xmm0, %xmm0
movss 0x20(%rsp), %xmm1
subq %rbx, 0x28(%rsp)
mulss 0x2b60f5(%rip), %xmm0   # 0x2f42c8
divss %xmm1, %xmm0
cvtss2sd %xmm0, %xmm0
leaq 0x2b681a(%rip), %rsi    # 0x2f49fc
movq %r14, %rdi
movq %rbx, %rdx
movb $0x1, %al
callq 0x92e71
cmpb $0x0, (%r12)
jne 0x3e20c
leaq 0x2b6831(%rip), %rsi    # 0x2f4a2e
movq 0x18(%rsp), %rdi
movq %rbx, %rdx
xorl %eax, %eax
callq 0x92e71
leaq 0x2b4ba7(%rip), %rsi    # 0x2f2dba
movq 0x18(%rsp), %rdi
movq 0x28(%rsp), %rdx
xorl %eax, %eax
callq 0x92e71
cmpb $0x1, 0x4(%r12)
jne 0x3e296
movq 0x10(%r12), %rdi
callq 0xad1fa
movq %rax, %rdi
callq 0xacbd1
movq %rax, %rbx
leaq 0x2b45ae(%rip), %rsi    # 0x2f27f6
movq %rax, %rdi
callq 0xacbfb
movq %rbx, %rdi
callq 0xad1fa
movq 0x8(%rsp), %rdi
movq %rax, %rsi
movq %r15, %rdx
callq 0x1742a1
movl %eax, %ebp
movq %rbx, %rdi
callq 0xad1fa
leaq 0x2b67d4(%rip), %rsi    # 0x2f4a4d
movq %r14, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x92e71
movq %rbx, %rdi
callq 0xae103
testl %ebp, %ebp
jne 0x3e527
cmpb $0x1, 0x8(%r12)
jne 0x3e308
movq 0x10(%r12), %rdi
callq 0xad1fa
movq %rax, %rdi
callq 0xacbd1
movq %rax, %rbx
leaq 0x2b655c(%rip), %rsi    # 0x2f4816
movq %rax, %rdi
callq 0xacbfb
movq %rbx, %rdi
callq 0xad1fa
movq 0x8(%rsp), %rdi
movq %rax, %rsi
movq %r15, %rdx
callq 0x1742b9
movl %eax, %ebp
movq %rbx, %rdi
callq 0xad1fa
leaq 0x2b6781(%rip), %rsi    # 0x2f4a6c
movq %r14, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x92e71
movq %rbx, %rdi
callq 0xae103
testl %ebp, %ebp
jne 0x3e527
cmpb $0x1, 0x6(%r12)
jne 0x3e37a
movq 0x10(%r12), %rdi
callq 0xad1fa
movq %rax, %rdi
callq 0xacbd1
movq %rax, %rbx
leaq 0x2b675c(%rip), %rsi    # 0x2f4a88
movq %rax, %rdi
callq 0xacbfb
movq %rbx, %rdi
callq 0xad1fa
movq 0x8(%rsp), %rdi
movq %rax, %rsi
movq %r15, %rdx
callq 0x17425c
movl %eax, %ebp
movq %rbx, %rdi
callq 0xad1fa
leaq 0x2b672f(%rip), %rsi    # 0x2f4a8c
movq %r14, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x92e71
movq %rbx, %rdi
callq 0xae103
testl %ebp, %ebp
jne 0x3e527
cmpb $0x1, 0x7(%r12)
jne 0x3e3ff
movq 0x10(%r12), %rdi
callq 0xad1fa
movq %rax, %rdi
callq 0xacbd1
movq %rax, %rbx
leaq 0x2b6604(%rip), %rsi    # 0x2f49a2
movq %rax, %rdi
callq 0xacbfb
movq %rbx, %rdi
callq 0xad1fa
movq %rax, %r14
movq 0x8(%rsp), %rdi
callq 0x174427
movq %r13, %rdi
movq %r14, %rsi
movq 0x10(%rsp), %r14
movq %rax, %rdx
movq %r15, %rcx
callq 0x18aa18
movl %eax, %ebp
movq %rbx, %rdi
callq 0xad1fa
leaq 0x2b66cc(%rip), %rsi    # 0x2f4aae
movq %r14, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x92e71
movq %rbx, %rdi
callq 0xae103
testl %ebp, %ebp
jne 0x3e527
xorl %ebp, %ebp
cmpb $0x1, 0x5(%r12)
jne 0x3e527
movq 0x8(%rsp), %rdi
callq 0x174427
movq %r13, %rdi
movq %rax, %rsi
callq 0x18ad9e
cmpq $0x0, 0x28(%rsp)
je 0x3e4d0
movq %r13, %rdi
movq %r15, %rsi
callq 0x18b4d6
movl %eax, %ebx
movq 0x10(%r12), %rdi
callq 0xad1fa
cmpq $0x0, 0x30(%rsp)
leaq 0x2b6557(%rip), %rdx    # 0x2f49a9
leaq 0x2bb0bd(%rip), %rcx    # 0x2f9516
cmoveq %rdx, %rcx
leaq 0x2b666f(%rip), %rsi    # 0x2f4ad3
xorl %ebp, %ebp
movq %r14, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x92e71
testl %ebx, %ebx
je 0x3e4e7
movl %ebx, %ebp
jmp 0x3e527
cmpb $0x1, 0xb(%r12)
jne 0x3e4b3
movq %r13, %rdi
xorl %esi, %esi
movq %r15, %rdx
callq 0x18b1c3
movl %eax, %ebp
movq 0x10(%r12), %rdi
callq 0xad1fa
leaq 0x2b650d(%rip), %rsi    # 0x2f49b3
movq %r14, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x92e71
leaq 0x2b651a(%rip), %rsi    # 0x2f49d4
movq 0x18(%rsp), %rdi
movq 0x28(%rsp), %rdx
xorl %eax, %eax
callq 0x92e71
jmp 0x3e55c
leaq 0x2b6624(%rip), %rsi    # 0x2f4afb
xorl %ebp, %ebp
movq 0x18(%rsp), %rdi
xorl %eax, %eax
callq 0x92e71
jmp 0x3e527
cmpb $0x1, 0xb(%r12)
jne 0x3e527
movq 0x8(%rsp), %rdi
callq 0x174427
movq %r13, %rdi
movq %rax, %rsi
movq %r15, %rdx
callq 0x18b1c3
movl %eax, %ebp
movq 0x10(%r12), %rdi
callq 0xad1fa
leaq 0x2b6499(%rip), %rsi    # 0x2f49b3
movq %r14, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x92e71
cmpb $0x1, 0x20(%r12)
jne 0x3e552
movzbl 0x2(%r12), %esi
movq 0x28(%r12), %rdx
movq 0x30(%r12), %rcx
movzbl 0x21(%r12), %r8d
xorl $0x1, %esi
movq 0x8(%rsp), %rdi
callq 0x17540d
movq 0x8(%rsp), %rdi
callq 0x175347
testl %ebp, %ebp
jne 0x3e615
xorl %ebp, %ebp
cmpb $0x1, 0x9(%r12)
jne 0x3e615
cmpq $0x0, 0x28(%rsp)
je 0x3e615
movq 0x10(%r12), %rdi
callq 0xad1fa
movq %rax, %rdi
callq 0xacbd1
movq %rax, %rbx
leaq 0x2b4dd2(%rip), %rsi    # 0x2f336c
movq %rax, %rdi
callq 0xacbfb
movq %rbx, %rdi
callq 0xad1fa
leaq 0x2f535d(%rip), %rsi    # 0x33390e
leaq 0x2b5d14(%rip), %rdx    # 0x2f42cc
movq %rax, %rdi
movl $0x1ee, %ecx            # imm = 0x1EE
movq %r15, %r8
callq 0x8a156
testq %rax, %rax
je 0x3e605
movq %rax, %r14
movq %r13, %rdi
movq %rax, %rsi
callq 0x18bdaa
movq %rbx, %rdi
callq 0xad1fa
leaq 0x2b6544(%rip), %rsi    # 0x2f4b2e
xorl %ebp, %ebp
movq 0x10(%rsp), %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x92e71
movq %r14, %rdi
callq 0x8a4fd
jmp 0x3e608
pushq $-0x1
popq %rbp
movq %rbx, %rdi
callq 0xae103
movq 0x10(%rsp), %r14
movq %r13, %rdi
callq 0x18886e
movq %r14, %rdi
callq 0x92fd0
movq 0x18(%rsp), %rdi
callq 0x92fd0
movl %ebp, %eax
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq