// File: /workspace/github_c_makefile_star2_O1/genometools[P]genometools/src/ltr/gt_ltrdigest.c
// Function: gt_ltrdigest_option_parser_new
static GtOptionParser* gt_ltrdigest_option_parser_new(void *tool_arguments)
{
  GtLTRdigestOptions *arguments = tool_arguments;
  GtOptionParser *op;
  GtOption *o, *ot, *oto;
  GtOption *oh, *oc, *oeval;
  static const char *cutoffs[] = {"NONE", "GA", "TC", NULL};
  static GtRange pptlen_defaults           = { 8UL, 30UL},
                 uboxlen_defaults          = { 3UL, 30UL},
                 pbsalilen_defaults        = {11UL, 30UL},
                 pbsoffsetlen_defaults     = { 0UL,  5UL},
                 pbstrnaoffsetlen_defaults = { 0UL,  5UL};
  gt_assert(arguments);

  /* init */
  op = gt_option_parser_new("[option ...] gff3_file",
                            "Identifies and annotates sequence features in LTR "
                            "retrotransposon candidates.");

  /* Output files */

  oto = gt_option_new_string("outfileprefix",
                             "prefix for output files (e.g. 'foo' will create "
                             "files called 'foo_*.csv' and 'foo_*.fas')\n"
                             "Omit this option for GFF3 output only.",
                             arguments->prefix,
                             NULL);
  gt_option_parser_add_option(op, oto);
  gt_option_hide_default(oto);

  o = gt_option_new_bool("metadata",
                         "output metadata (run conditions) to separate file",
                         &arguments->print_metadata,
                         true);
  gt_option_parser_add_option(op, o);
  gt_option_imply(o, oto);

  o = gt_option_new_uint("seqnamelen",
                         "set maximal length of sequence names in FASTA headers"
                         " (e.g. for clustalw or similar tools)",
                         &arguments->seqnamelen,
                         20U);
  gt_option_parser_add_option(op, o);

  /* PPT search options */

  o = gt_option_new_range("pptlen",
                          "required PPT length range",
                          &arguments->ppt_len,
                          &pptlen_defaults);
  gt_option_parser_add_option(op, o);

  o = gt_option_new_range("uboxlen",
                          "required U-box length range",
                          &arguments->ubox_len,
                          &uboxlen_defaults);
  gt_option_parser_add_option(op, o);

  o = gt_option_new_uint("uboxdist",
                         "allowed U-box distance range from PPT",
                         &arguments->max_ubox_dist, 0);
  gt_option_parser_add_option(op, o);

  o = gt_option_new_uint("pptradius",
                         "radius around beginning of 3' LTR "
                         "to search for PPT",
                         &arguments->ppt_radius,
                         30U);
  gt_option_parser_add_option(op, o);

  o = gt_option_new_probability("pptrprob",
                                "purine emission probability inside PPT",
                                &arguments->ppt_purine_prob,
                                PPT_PURINE_PROB);
  gt_option_parser_add_option(op, o);
  gt_option_is_extended_option(o);

  o = gt_option_new_probability("pptyprob",
                                "pyrimidine emission probability inside PPT",
                                &arguments->ppt_pyrimidine_prob,
                                PPT_PYRIMIDINE_PROB);
  gt_option_parser_add_option(op, o);
  gt_option_is_extended_option(o);

  o = gt_option_new_probability("pptgprob",
                                "background G emission probability outside PPT",
                                &arguments->bkg_g_prob,
                                BKG_G_PROB);
  gt_option_parser_add_option(op, o);
  gt_option_is_extended_option(o);

  o = gt_option_new_probability("pptcprob",
                                "background C emission probability outside PPT",
                                &arguments->bkg_c_prob,
                                BKG_C_PROB);
  gt_option_parser_add_option(op, o);
  gt_option_is_extended_option(o);

  o = gt_option_new_probability("pptaprob",
                                "background A emission probability outside PPT",
                                &arguments->bkg_a_prob,
                                BKG_A_PROB);
  gt_option_parser_add_option(op, o);
  gt_option_is_extended_option(o);

  o = gt_option_new_probability("ppttprob",
                                "background T emission probability outside PPT",
                                &arguments->bkg_t_prob,
                                BKG_T_PROB);
  gt_option_parser_add_option(op, o);
  gt_option_is_extended_option(o);

  o = gt_option_new_probability("pptuprob",
                                "U/T emission probability inside U-box",
                                &arguments->ubox_u_prob,
                                UBOX_U_PROB);
  gt_option_parser_add_option(op, o);
  gt_option_is_extended_option(o);

  /* PBS search options */

  ot = gt_option_new_filename("trnas",
                              "tRNA library in multiple FASTA format for PBS "
                              "detection\n"
                              "Omit this option to disable PBS search.",
                              arguments->trna_lib);
  gt_option_parser_add_option(op, ot);
  gt_option_hide_default(ot);

  o = gt_option_new_range("pbsalilen",
                          "required PBS/tRNA alignment length range",
                          &arguments->alilen,
                          &pbsalilen_defaults);
  gt_option_parser_add_option(op, o);
  gt_option_imply(o, ot);

  o = gt_option_new_range("pbsoffset",
                          "allowed PBS offset from LTR boundary range",
                          &arguments->offsetlen,
                          &pbsoffsetlen_defaults);
  gt_option_parser_add_option(op, o);
  gt_option_imply(o, ot);

  o = gt_option_new_range("pbstrnaoffset",
                          "allowed PBS/tRNA 3' end alignment offset range",
                          &arguments->trnaoffsetlen,
                          &pbstrnaoffsetlen_defaults);
  gt_option_parser_add_option(op, o);
  gt_option_imply(o, ot);

  o = gt_option_new_uint("pbsmaxedist",
                         "maximal allowed PBS/tRNA alignment unit "
                         "edit distance",
                         &arguments->max_edist,
                         1U);
  gt_option_parser_add_option(op, o);
  gt_option_imply(o, ot);

  o = gt_option_new_uint("pbsradius",
                         "radius around end of 5' LTR "
                         "to search for PBS",
                         &arguments->pbs_radius,
                         30U);
  gt_option_parser_add_option(op, o);
  gt_option_imply(o, ot);

 /* Protein domain search options */

  oh = gt_option_new_filename_array("hmms",
                                    "profile HMM models for domain detection "
                                    "(separate by spaces, finish with --) in "
                                    "HMMER3 format\n"
                                    "Omit this option to disable pHMM search.",
                                    arguments->hmm_files);
  gt_option_parser_add_option(op, oh);

  oeval = gt_option_new_probability("pdomevalcutoff",
                                    "global E-value cutoff for pHMM search\n"
                                    "default 1E-6",
                                    &arguments->evalue_cutoff,
                                    0.000001);
  gt_option_parser_add_option(op, oeval);
  gt_option_is_extended_option(oeval);
  gt_option_hide_default(oeval);
  gt_option_imply(oeval, oh);

  oc = gt_option_new_choice("pdomcutoff", "model-specific score cutoff\n"
                                       "choose from TC (trusted cutoff) | "
                                       "GA (gathering cutoff) | "
                                       "NONE (no cutoffs)",
                             arguments->cutoffs, cutoffs[0], cutoffs);
  gt_option_parser_add_option(op, oc);
  gt_option_is_extended_option(oeval);
  gt_option_imply(oeval, oh);

  o = gt_option_new_bool("aliout",
                         "output pHMM to amino acid sequence alignments",
                         &arguments->write_alignments,
                         false);
  gt_option_parser_add_option(op, o);
  gt_option_imply(o, oh);
  gt_option_imply(o, oto);

  o = gt_option_new_bool("aaout",
                         "output amino acid sequences for protein domain "
                         "hits",
                         &arguments->write_aaseqs,
                         false);
  gt_option_parser_add_option(op, o);
  gt_option_imply(o, oh);
  gt_option_imply(o, oto);

  o = gt_option_new_bool("allchains",
                           "output features from all chains and unchained "
                           "features, labeled with chain numbers",
                           &arguments->output_all_chains,
                           false);
  gt_option_parser_add_option(op, o);
  gt_option_imply(o, oh);

  o = gt_option_new_uint("maxgaplen",
                         "maximal allowed gap size between fragments (in amino "
                         "acids) when chaining pHMM hits for a protein domain",
                         &arguments->chain_max_gap_length,
                         50U);
  gt_option_parser_add_option(op, o);
  gt_option_is_extended_option(o);
  gt_option_imply(o, oh);

  o = gt_option_new_uword("threads",
                          "DEPRECATED, only included for compatibility reasons!"
                          " Use the -j parameter of the 'gt' call instead.",
                          &arguments->nthreads,
                          0);
  gt_option_parser_add_option(op, o);
  gt_option_is_development_option(o);

  o = gt_option_new_bool("force_recreate",
                         "force recreation of hmmpressed profiles",
                         &arguments->force_recreate,
                         false);
  gt_option_parser_add_option(op, o);

  /* Extended PBS options */

  o = gt_option_new_int("pbsmatchscore",
                        "match score for PBS/tRNA alignments",
                        &arguments->ali_score_match,
                        5);
  gt_option_parser_add_option(op, o);
  gt_option_is_extended_option(o);
  gt_option_imply(o, ot);

  o = gt_option_new_int("pbsmismatchscore",
                        "mismatch score for PBS/tRNA alignments",
                        &arguments->ali_score_mismatch,
                        -10);
  gt_option_parser_add_option(op, o);
  gt_option_is_extended_option(o);
  gt_option_imply(o, ot);

  o = gt_option_new_int("pbsinsertionscore",
                        "insertion score for PBS/tRNA alignments",
                        &arguments->ali_score_insertion,
                        -20);
  gt_option_parser_add_option(op, o);
  gt_option_is_extended_option(o);
  gt_option_imply(o, ot);

  o = gt_option_new_int("pbsdeletionscore",
                        "deletion score for PBS/tRNA alignments",
                        &arguments->ali_score_deletion,
                        -20);
  gt_option_parser_add_option(op, o);
  gt_option_is_extended_option(o);
  gt_option_imply(o, ot);

  /* verbosity */

  o = gt_option_new_verbose(&arguments->verbose);
  gt_option_parser_add_option(op, o);

  /* output file options */

  gt_output_file_info_register_options(arguments->ofi, op, &arguments->outfp);

  /* region mapping and sequence source options */

  gt_seqid2file_register_options_ext(op, arguments->s2fi, false, false);

  return op;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
testq %rdi, %rdi
je 0x20e8f9
movq %rdi, %rbx
leaq 0x1b9939(%rip), %rdi    # 0x3c7af1
leaq 0x1b9949(%rip), %rsi    # 0x3c7b08
callq 0x10cc4e
movq %rax, %r14
movq 0x8(%rbx), %rdx
leaq 0x1b9984(%rip), %rdi    # 0x3c7b56
leaq 0x1b998b(%rip), %rsi    # 0x3c7b64
xorl %ecx, %ecx
callq 0x10f987
movq %rax, %r15
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
movq %r15, %rdi
callq 0x10fe32
leaq 0x1c(%rbx), %rdx
leaq 0x1baf58(%rip), %rdi    # 0x3c9159
leaq 0x1b99dd(%rip), %rsi    # 0x3c7be5
movl $0x1, %ecx
callq 0x10f451
movq %rax, %r12
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
movq %r12, %rdi
movq %r15, %rsi
callq 0x10fbff
leaq 0x5c(%rbx), %rdx
leaq 0x1b99e1(%rip), %rdi    # 0x3c7c17
leaq 0x1b99e5(%rip), %rsi    # 0x3c7c22
movl $0x14, %ecx
callq 0x10f719
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
leaq 0x60(%rbx), %rdx
leaq 0x1b9a20(%rip), %rdi    # 0x3c7c7d
leaq 0x1b9a20(%rip), %rsi    # 0x3c7c84
leaq 0x2b79e5(%rip), %rcx    # 0x4c5c50
callq 0x10f913
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
leaq 0x70(%rbx), %rdx
leaq 0x1b9a18(%rip), %rdi    # 0x3c7c9e
leaq 0x1b9a19(%rip), %rsi    # 0x3c7ca6
leaq 0x2b79cc(%rip), %rcx    # 0x4c5c60
callq 0x10f913
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
leaq 0xbc(%rbx), %rdx
leaq 0x1b9a10(%rip), %rdi    # 0x3c7cc2
leaq 0x1b9a12(%rip), %rsi    # 0x3c7ccb
xorl %ecx, %ecx
callq 0x10f719
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
leaq 0xb8(%rbx), %rdx
leaq 0x1b9a18(%rip), %rdi    # 0x3c7cf1
leaq 0x1b9a1b(%rip), %rsi    # 0x3c7cfb
movl $0x1e, %ecx
callq 0x10f719
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
leaq 0x88(%rbx), %rdx
leaq 0x1b9a2c(%rip), %rdi    # 0x3c7d2f
leaq 0x1b9a2e(%rip), %rsi    # 0x3c7d38
movsd 0x1b96fe(%rip), %xmm0   # 0x3c7a10
callq 0x10f627
movq %rax, %r12
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
movq %r12, %rdi
callq 0x10fbdf
leaq 0x80(%rbx), %rdx
leaq 0x1b9a24(%rip), %rdi    # 0x3c7d5f
leaq 0x1b9a26(%rip), %rsi    # 0x3c7d68
movsd 0x1b96ce(%rip), %xmm0   # 0x3c7a18
callq 0x10f627
movq %rax, %r12
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
movq %r12, %rdi
callq 0x10fbdf
leaq 0x98(%rbx), %rdx
leaq 0x1b9a20(%rip), %rdi    # 0x3c7d93
leaq 0x1b9a22(%rip), %rsi    # 0x3c7d9c
movsd 0x14c38e(%rip), %xmm0   # 0x35a710
callq 0x10f627
movq %rax, %r12
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
movq %r12, %rdi
callq 0x10fbdf
leaq 0xa8(%rbx), %rdx
leaq 0x1b9a1f(%rip), %rdi    # 0x3c7dca
leaq 0x1b9a21(%rip), %rsi    # 0x3c7dd3
movsd 0x14c356(%rip), %xmm0   # 0x35a710
callq 0x10f627
movq %rax, %r12
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
movq %r12, %rdi
callq 0x10fbdf
leaq 0x90(%rbx), %rdx
leaq 0x1b9a1e(%rip), %rdi    # 0x3c7e01
leaq 0x1b9a20(%rip), %rsi    # 0x3c7e0a
movsd 0x14c31e(%rip), %xmm0   # 0x35a710
callq 0x10f627
movq %rax, %r12
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
movq %r12, %rdi
callq 0x10fbdf
leaq 0xa0(%rbx), %rdx
leaq 0x1b9a1d(%rip), %rdi    # 0x3c7e38
leaq 0x1b9a1f(%rip), %rsi    # 0x3c7e41
movsd 0x14c2e6(%rip), %xmm0   # 0x35a710
callq 0x10f627
movq %rax, %r12
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
movq %r12, %rdi
callq 0x10fbdf
leaq 0xb0(%rbx), %rdx
leaq 0x1b9a1c(%rip), %rdi    # 0x3c7e6f
leaq 0x1b9a1e(%rip), %rsi    # 0x3c7e78
movsd 0x1b95be(%rip), %xmm0   # 0x3c7a20
callq 0x10f627
movq %rax, %r12
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
movq %r12, %rdi
callq 0x10fbdf
movq (%rbx), %rdx
leaq 0x1b9a17(%rip), %rdi    # 0x3c7e9e
leaq 0x1b9a16(%rip), %rsi    # 0x3c7ea4
callq 0x10f9c6
movq %rax, %r12
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
movq %r12, %rdi
callq 0x10fe32
leaq 0xc8(%rbx), %rdx
leaq 0x1b9a4d(%rip), %rdi    # 0x3c7f04
leaq 0x1b9a50(%rip), %rsi    # 0x3c7f0e
leaq 0x2b77ab(%rip), %rcx    # 0x4c5c70
callq 0x10f913
movq %rax, %r13
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
movq %r13, %rdi
movq %r12, %rsi
callq 0x10fbff
leaq 0xd8(%rbx), %rdx
leaq 0x1b9a46(%rip), %rdi    # 0x3c7f37
leaq 0x1b9a49(%rip), %rsi    # 0x3c7f41
leaq 0x2b7781(%rip), %rcx    # 0x4c5c80
callq 0x10f913
movq %rax, %r13
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
movq %r13, %rdi
movq %r12, %rsi
callq 0x10fbff
leaq 0xe8(%rbx), %rdx
leaq 0x1b9a41(%rip), %rdi    # 0x3c7f6c
leaq 0x1b9a48(%rip), %rsi    # 0x3c7f7a
leaq 0x2b7757(%rip), %rcx    # 0x4c5c90
callq 0x10f913
movq %rax, %r13
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
movq %r13, %rdi
movq %r12, %rsi
callq 0x10fbff
leaq 0xc4(%rbx), %rdx
leaq 0x1b9a44(%rip), %rdi    # 0x3c7fa9
leaq 0x1b9a49(%rip), %rsi    # 0x3c7fb5
movl $0x1, %ecx
callq 0x10f719
movq %rax, %r13
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
movq %r13, %rdi
movq %r12, %rsi
callq 0x10fbff
leaq 0xc0(%rbx), %rdx
leaq 0x1b9a4e(%rip), %rdi    # 0x3c7feb
leaq 0x1b9a51(%rip), %rsi    # 0x3c7ff5
movl $0x1e, %ecx
callq 0x10f719
movq %rax, %r13
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
movq %r13, %rdi
movq %r12, %rsi
callq 0x10fbff
movq 0x30(%rbx), %rdx
leaq 0x15846b(%rip), %rdi    # 0x366a3d
leaq 0x158469(%rip), %rsi    # 0x366a42
callq 0x10f9f6
movq %rax, %r13
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
leaq 0x48(%rbx), %rdx
leaq 0x1584d2(%rip), %rdi    # 0x366ac9
leaq 0x1584da(%rip), %rsi    # 0x366ad8
movsd 0x15804a(%rip), %xmm0   # 0x366650
callq 0x10f627
movq %rax, %rbp
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
movq %rbp, %rdi
callq 0x10fbdf
movq %rbp, %rdi
callq 0x10fe32
movq %rbp, %rdi
movq %r13, %rsi
callq 0x10fbff
movq 0x10(%rbx), %rdx
movq 0x2b75f1(%rip), %rcx    # 0x4c5c30
leaq 0x2b75ea(%rip), %r8     # 0x4c5c30
leaq 0x1584be(%rip), %rdi    # 0x366b0b
leaq 0x1584c2(%rip), %rsi    # 0x366b16
callq 0x10fa04
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
movq %rbp, %rdi
callq 0x10fbdf
movq %rbp, %rdi
movq %r13, %rsi
callq 0x10fbff
leaq 0x19(%rbx), %rdx
leaq 0x1b99a1(%rip), %rdi    # 0x3c8023
leaq 0x1b99a1(%rip), %rsi    # 0x3c802a
xorl %ecx, %ecx
callq 0x10f451
movq %rax, %rbp
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
movq %rbp, %rdi
movq %r13, %rsi
callq 0x10fbff
movq %rbp, %rdi
movq %r15, %rsi
callq 0x10fbff
leaq 0x1a(%rbx), %rdx
leaq 0x1b9999(%rip), %rdi    # 0x3c8058
leaq 0x1b9998(%rip), %rsi    # 0x3c805e
xorl %ecx, %ecx
callq 0x10f451
movq %rax, %rbp
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
movq %rbp, %rdi
movq %r13, %rsi
callq 0x10fbff
movq %rbp, %rdi
movq %r15, %rsi
callq 0x10fbff
leaq 0x1b(%rbx), %rdx
leaq 0x1b9996(%rip), %rdi    # 0x3c8092
leaq 0x1b9999(%rip), %rsi    # 0x3c809c
xorl %ecx, %ecx
callq 0x10f451
movq %rax, %r15
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
movq %r15, %rdi
movq %r13, %rsi
callq 0x10fbff
leaq 0x58(%rbx), %rdx
leaq 0x158450(%rip), %rdi    # 0x366b7e
leaq 0x158453(%rip), %rsi    # 0x366b88
movl $0x32, %ecx
callq 0x10f719
movq %rax, %r15
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
movq %r15, %rdi
callq 0x10fbdf
movq %r15, %rdi
movq %r13, %rsi
callq 0x10fbff
leaq 0x50(%rbx), %rdx
leaq 0x1e05aa(%rip), %rdi    # 0x3eed15
leaq 0x1b997d(%rip), %rsi    # 0x3c80ef
xorl %ecx, %ecx
callq 0x10f4c7
movq %rax, %r15
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
movq %r15, %rdi
callq 0x10fbef
leaq 0x1d(%rbx), %rdx
leaq 0x1b99b9(%rip), %rdi    # 0x3c8153
leaq 0x1b99c1(%rip), %rsi    # 0x3c8162
xorl %ecx, %ecx
callq 0x10f451
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
leaq 0xf8(%rbx), %rdx
leaq 0x1b99c9(%rip), %rdi    # 0x3c818a
leaq 0x1b99e4(%rip), %rsi    # 0x3c81ac
movl $0x5, %ecx
callq 0x10f669
movq %rax, %r15
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
movq %r15, %rdi
callq 0x10fbdf
movq %r15, %rdi
movq %r12, %rsi
callq 0x10fbff
leaq 0xfc(%rbx), %rdx
leaq 0x1b9997(%rip), %rdi    # 0x3c8198
leaq 0x1b99a1(%rip), %rsi    # 0x3c81a9
movl $0xfffffff6, %ecx       # imm = 0xFFFFFFF6
callq 0x10f669
movq %rax, %r15
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
movq %r15, %rdi
callq 0x10fbdf
movq %r15, %rdi
movq %r12, %rsi
callq 0x10fbff
leaq 0x100(%rbx), %rdx
leaq 0x1b998f(%rip), %rdi    # 0x3c81d0
leaq 0x1b999a(%rip), %rsi    # 0x3c81e2
movl $0xffffffec, %ecx       # imm = 0xFFFFFFEC
callq 0x10f669
movq %rax, %r15
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
movq %r15, %rdi
callq 0x10fbdf
movq %r15, %rdi
movq %r12, %rsi
callq 0x10fbff
leaq 0x104(%rbx), %rdx
leaq 0x1b9989(%rip), %rdi    # 0x3c820a
leaq 0x1b9993(%rip), %rsi    # 0x3c821b
movl $0xffffffec, %ecx       # imm = 0xFFFFFFEC
callq 0x10f669
movq %rax, %r15
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
movq %r15, %rdi
callq 0x10fbdf
movq %r15, %rdi
movq %r12, %rsi
callq 0x10fbff
leaq 0x18(%rbx), %rdi
callq 0x10f473
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
movq 0x20(%rbx), %rdi
leaq 0x28(%rbx), %rdx
movq %r14, %rsi
callq 0x10ffa3
movq 0x38(%rbx), %rsi
movq %r14, %rdi
xorl %edx, %edx
xorl %ecx, %ecx
callq 0x17b0a9
movq %r14, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0x81df6