// File: /workspace/github_c_makefile_star2_O1/genometools[P]genometools/src/tools/gt_readjoiner_prefilter.c
// Function: gt_readjoiner_prefilter_option_parser_new
static GtOptionParser* gt_readjoiner_prefilter_option_parser_new(
    void *tool_arguments)
{
  GtReadjoinerPrefilterArguments *arguments = tool_arguments;
  GtOptionParser *op;
  GtOption *singlestrand_option, *encodeonly_option, *cntlist_option,
           *fasta_option, *seqnums_option, *encseq_option, *readset_option,
           *v_option, *q_option, *db_option, *copynum_option, *libtable_option,
           *testrs_option, *testrs_depth_option, *testrs_print_option,
           *testrs_maxdepth_option, *phred64_option, *maxlow_option,
           *lowqual_option, *des_option, *clipdes_option, *memdes_option;

  gt_assert(arguments);

  op = gt_option_parser_new("[option ...]",
                            "Remove contained and low-quality reads "
                            "and encode read set in GtEncseq format.");

  /* -readset */
  readset_option = gt_option_new_string("readset",
      "specify the readset name\n"
      "default: filename of first input sequence_file",
      arguments->readset, NULL);
  gt_option_hide_default(readset_option);
  gt_option_parser_add_option(op, readset_option);

  /* -db */
  db_option = gt_option_new_filename_array("db",
      GT_READS2TWOBIT_LIBSPEC_HELPMSG, arguments->db);
  gt_option_hide_default(db_option);
  gt_option_is_mandatory(db_option);
  gt_option_parser_add_option(op, db_option);

  /* -v */
  v_option = gt_option_new_verbose(&arguments->verbose);
  gt_option_parser_add_option(op, v_option);

  /* -q */
  q_option = gt_option_new_bool("q",
      "suppress standard output messages",
      &arguments->quiet, false);
  gt_option_exclude(q_option, v_option);
  gt_option_parser_add_option(op, q_option);

  /* -des */
  des_option = gt_option_new_bool("des",
      "store Fasta IDs (or entire descriptions"
      "if used together with -clipdes no)\n"
      "warning: increases the memory requirement",
      &arguments->des, false);
  gt_option_is_extended_option(des_option);
  gt_option_parser_add_option(op, des_option);

  /* -clipdes */
  clipdes_option = gt_option_new_bool("clipdes",
      "clip Fasta descriptions after first space\n"
      "set to false if you need entire descriptions",
      &arguments->clipdes, true);
  gt_option_is_extended_option(clipdes_option);
  gt_option_parser_add_option(op, clipdes_option);

  /* -memdes */
  memdes_option = gt_option_new_bool("memdes",
      "use memory storage for descriptions\n"
      "(default: use temporary disk storage)",
      &arguments->memdes, false);
  gt_option_is_extended_option(memdes_option);
  gt_option_hide_default(memdes_option);
  gt_option_parser_add_option(op, memdes_option);

  /* -maxlow */
  maxlow_option = gt_option_new_uword("maxlow",
      "maximal number of low-quality positions in a read\n"
      "default: infinite",
      &arguments->maxlow, GT_UNDEF_UWORD);
  gt_option_hide_default(maxlow_option);
  gt_option_is_extended_option(maxlow_option);
  gt_option_parser_add_option(op, maxlow_option);

  /* -lowqual */
  lowqual_option = gt_option_new_uint_max("lowqual",
      "maximal quality for a position to be considered low-quality",
      &arguments->lowqual, 3U, 127U);
  gt_option_is_extended_option(lowqual_option);
  gt_option_imply(lowqual_option, maxlow_option);
  gt_option_parser_add_option(op, lowqual_option);

  /* -phred64 */
  phred64_option = gt_option_new_bool("phred64",
      "use phred64 scores for FastQ format",
      &arguments->phred64, false);
  gt_option_is_extended_option(phred64_option);
  gt_option_parser_add_option(op, phred64_option);

  /* -singlestrand */
  singlestrand_option = gt_option_new_bool("singlestrand",
      "do not use reverse complements of the reads",
      &arguments->singlestrand, false);
  gt_option_is_development_option(singlestrand_option);
  gt_option_parser_add_option(op, singlestrand_option);

  /* -encodeonly */
  encodeonly_option = gt_option_new_bool("encodeonly",
      "do not remove contained reads",
      &arguments->encodeonly, false);
  gt_option_is_development_option(encodeonly_option);
  gt_option_parser_add_option(op, encodeonly_option);

  /* -encseq */
  encseq_option = gt_option_new_bool("encseq",
      "output reads in GtEncseq format",
      &arguments->encseq, true);
  gt_option_is_development_option(encseq_option);
  gt_option_parser_add_option(op, encseq_option);

  /* -libtable */
  libtable_option = gt_option_new_bool("libtable",
      "output reads libraries table",
      &arguments->libtable, true);
  gt_option_is_development_option(libtable_option);
  gt_option_parser_add_option(op, libtable_option);

  /* -fasta */
  fasta_option = gt_option_new_bool("fasta",
      "output reads in MultiFasta format",
      &arguments->fasta, false);
  gt_option_is_development_option(fasta_option);
  gt_option_exclude(fasta_option, des_option);
  gt_option_parser_add_option(op, fasta_option);

  /* -cnt */
  cntlist_option = gt_option_new_bool("cnt",
      "output contained reads list",
      &arguments->cntlist, false);
  gt_option_is_development_option(cntlist_option);
  gt_option_exclude(encodeonly_option, cntlist_option);
  gt_option_parser_add_option(op, cntlist_option);

  /* -seqnums */
  seqnums_option = gt_option_new_bool("seqnums",
      "output sorted sequence numbers",
      &arguments->seqnums, false);
  gt_option_is_development_option(seqnums_option);
  gt_option_exclude(encodeonly_option, seqnums_option);
  gt_option_parser_add_option(op, seqnums_option);

  /* -copynum */
  copynum_option = gt_option_new_bool("copynum",
      "[eqlen only] output reads copy number to <readset>"
      GT_READJOINER_SUFFIX_READSCOPYNUM,
      &arguments->copynum, false);
  gt_option_is_development_option(copynum_option);
  gt_option_exclude(encodeonly_option, copynum_option);
  gt_option_parser_add_option(op, copynum_option);

  /* -testrs */
  testrs_option = gt_option_new_bool("testrs",
      "run gt_radixsort_str test (match/radixsort_str.[ch])",
      &arguments->testrs, false);
  gt_option_is_development_option(testrs_option);
  gt_option_parser_add_option(op, testrs_option);

  /* -testrs-print */
  testrs_print_option = gt_option_new_bool("testrs-print",
      "printf gt_radixsort_str test results",
      &arguments->testrs_print, true);
  gt_option_is_development_option(testrs_print_option);
  gt_option_parser_add_option(op, testrs_print_option);

  /* -testrs-depth */
  testrs_depth_option = gt_option_new_uword("testrs-depth",
      "depth for gt_radixsort_str test",
      &arguments->testrs_depth, 0);
  gt_option_is_development_option(testrs_depth_option);
  gt_option_parser_add_option(op, testrs_depth_option);

  /* -testrs-maxdepth */
  testrs_maxdepth_option = gt_option_new_uword("testrs-maxdepth",
      "depth for gt_radixsort_str test",
      &arguments->testrs_maxdepth, 0);
  gt_option_is_development_option(testrs_maxdepth_option);
  gt_option_parser_add_option(op, testrs_maxdepth_option);

  gt_option_parser_set_version_func(op, gt_readjoiner_show_version);
  gt_option_parser_set_max_args(op, 0U);
  return op;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
testq %rdi, %rdi
je 0xbc6c4
movq %rdi, %r14
leaq 0x2a4c83(%rip), %rdi    # 0x360eb5
leaq 0x2a1109(%rip), %rsi    # 0x35d342
callq 0x10cc4e
movq %rax, %rbx
movq 0x10(%r14), %rdx
leaq 0x29f420(%rip), %rdi    # 0x35b66c
leaq 0x2a113e(%rip), %rsi    # 0x35d391
xorl %ecx, %ecx
callq 0x10f987
movq %rax, %r15
movq %rax, %rdi
callq 0x10fe32
movq %rbx, %rdi
movq %r15, %rsi
callq 0x10cd10
movq 0x18(%r14), %rdx
leaq 0x2c24fe(%rip), %rdi    # 0x37e779
leaq 0x2a1157(%rip), %rsi    # 0x35d3d9
callq 0x10f9f6
movq %rax, %r15
movq %rax, %rdi
callq 0x10fe32
movq %r15, %rdi
callq 0x10fa96
movq %rbx, %rdi
movq %r15, %rsi
callq 0x10cd10
movq %r14, %rdi
callq 0x10f473
movq %rax, %r15
movq %rbx, %rdi
movq %rax, %rsi
callq 0x10cd10
leaq 0x1(%r14), %rdx
leaq 0x2d3762(%rip), %rdi    # 0x38fa28
leaq 0x29f49f(%rip), %rsi    # 0x35b76c
xorl %ecx, %ecx
callq 0x10f451
movq %rax, %r12
movq %rax, %rdi
movq %r15, %rsi
callq 0x10fd9f
movq %rbx, %rdi
movq %r12, %rsi
callq 0x10cd10
leaq 0xb(%r14), %rdx
leaq 0x29372e(%rip), %rdi    # 0x34fa26
leaq 0x2a126a(%rip), %rsi    # 0x35d569
xorl %ecx, %ecx
callq 0x10f451
movq %rax, %r15
movq %rax, %rdi
callq 0x10fbdf
movq %rbx, %rdi
movq %r15, %rsi
callq 0x10cd10
leaq 0xc(%r14), %rdx
leaq 0x2a12b6(%rip), %rdi    # 0x35d5dd
leaq 0x2a12b7(%rip), %rsi    # 0x35d5e5
movl $0x1, %ecx
callq 0x10f451
movq %rax, %r12
movq %rax, %rdi
callq 0x10fbdf
movq %rbx, %rdi
movq %r12, %rsi
callq 0x10cd10
leaq 0xd(%r14), %rdx
leaq 0x2a12e3(%rip), %rdi    # 0x35d63c
leaq 0x2a12e3(%rip), %rsi    # 0x35d643
xorl %ecx, %ecx
callq 0x10f451
movq %rax, %r12
movq %rax, %rdi
callq 0x10fbdf
movq %r12, %rdi
callq 0x10fe32
movq %rbx, %rdi
movq %r12, %rsi
callq 0x10cd10
leaq 0x38(%r14), %rdx
leaq 0x2a12fd(%rip), %rdi    # 0x35d68d
leaq 0x2a12fd(%rip), %rsi    # 0x35d694
movq $-0x1, %rcx
callq 0x10f4c7
movq %rax, %r12
movq %rax, %rdi
callq 0x10fe32
movq %r12, %rdi
callq 0x10fbdf
movq %rbx, %rdi
movq %r12, %rsi
callq 0x10cd10
leaq 0x40(%r14), %rdx
leaq 0x2a130c(%rip), %rdi    # 0x35d6d8
leaq 0x2a130d(%rip), %rsi    # 0x35d6e0
movl $0x3, %ecx
movl $0x7f, %r8d
callq 0x10f764
movq %rax, %r13
movq %rax, %rdi
callq 0x10fbdf
movq %r13, %rdi
movq %r12, %rsi
callq 0x10fbff
movq %rbx, %rdi
movq %r13, %rsi
callq 0x10cd10
leaq 0xa(%r14), %rdx
leaq 0x2ff5b0(%rip), %rdi    # 0x3bb9bf
leaq 0x2a1306(%rip), %rsi    # 0x35d71c
xorl %ecx, %ecx
callq 0x10f451
movq %rax, %r12
movq %rax, %rdi
callq 0x10fbdf
movq %rbx, %rdi
movq %r12, %rsi
callq 0x10cd10
leaq 0x2(%r14), %rdx
leaq 0x2973a0(%rip), %rdi    # 0x3537de
leaq 0x2a0bfc(%rip), %rsi    # 0x35d041
xorl %ecx, %ecx
callq 0x10f451
movq %rax, %r12
movq %rax, %rdi
callq 0x10fbef
movq %rbx, %rdi
movq %r12, %rsi
callq 0x10cd10
leaq 0x3(%r14), %rdx
leaq 0x2a12d3(%rip), %rdi    # 0x35d740
leaq 0x2a12d7(%rip), %rsi    # 0x35d74b
xorl %ecx, %ecx
callq 0x10f451
movq %rax, %r12
movq %rax, %rdi
callq 0x10fbef
movq %rbx, %rdi
movq %r12, %rsi
callq 0x10cd10
leaq 0x5(%r14), %rdx
leaq 0x2d413a(%rip), %rdi    # 0x3905d6
leaq 0x2a12c6(%rip), %rsi    # 0x35d769
movl $0x1, %ecx
callq 0x10f451
movq %rax, %r13
movq %rax, %rdi
callq 0x10fbef
movq %rbx, %rdi
movq %r13, %rsi
callq 0x10cd10
leaq 0x9(%r14), %rdx
leaq 0x2a12bb(%rip), %rdi    # 0x35d789
leaq 0x2a12bd(%rip), %rsi    # 0x35d792
movl $0x1, %ecx
callq 0x10f451
movq %rax, %r13
movq %rax, %rdi
callq 0x10fbef
movq %rbx, %rdi
movq %r13, %rsi
callq 0x10cd10
leaq 0x7(%r14), %rdx
leaq 0x2c692e(%rip), %rdi    # 0x382e2e
leaq 0x2a12a8(%rip), %rsi    # 0x35d7af
xorl %ecx, %ecx
callq 0x10f451
movq %rax, %r13
movq %rax, %rdi
callq 0x10fbef
movq %r13, %rdi
movq %r15, %rsi
callq 0x10fd9f
movq %rbx, %rdi
movq %r13, %rsi
callq 0x10cd10
leaq 0x4(%r14), %rdx
leaq 0x29f2e5(%rip), %rdi    # 0x35b81f
leaq 0x2a1290(%rip), %rsi    # 0x35d7d1
xorl %ecx, %ecx
callq 0x10f451
movq %rax, %r15
movq %rax, %rdi
callq 0x10fbef
movq %r12, %rdi
movq %r15, %rsi
callq 0x10fd9f
movq %rbx, %rdi
movq %r15, %rsi
callq 0x10cd10
leaq 0x6(%r14), %rdx
leaq 0x2a5817(%rip), %rdi    # 0x361d8b
leaq 0x2a1272(%rip), %rsi    # 0x35d7ed
xorl %ecx, %ecx
callq 0x10f451
movq %rax, %r15
movq %rax, %rdi
callq 0x10fbef
movq %r12, %rdi
movq %r15, %rsi
callq 0x10fd9f
movq %rbx, %rdi
movq %r15, %rsi
callq 0x10cd10
leaq 0x8(%r14), %rdx
leaq 0x2fa055(%rip), %rdi    # 0x3b6603
leaq 0x2a1257(%rip), %rsi    # 0x35d80c
xorl %ecx, %ecx
callq 0x10f451
movq %rax, %r15
movq %rax, %rdi
callq 0x10fbef
movq %r12, %rdi
movq %r15, %rsi
callq 0x10fd9f
movq %rbx, %rdi
movq %r15, %rsi
callq 0x10cd10
leaq 0x20(%r14), %rdx
leaq 0x2a125b(%rip), %rdi    # 0x35d843
leaq 0x2a125b(%rip), %rsi    # 0x35d84a
xorl %ecx, %ecx
callq 0x10f451
movq %rax, %r15
movq %rax, %rdi
callq 0x10fbef
movq %rbx, %rdi
movq %r15, %rsi
callq 0x10cd10
leaq 0x21(%r14), %rdx
leaq 0x2a1268(%rip), %rdi    # 0x35d87f
leaq 0x2a126e(%rip), %rsi    # 0x35d88c
movl $0x1, %ecx
callq 0x10f451
movq %rax, %r15
movq %rax, %rdi
callq 0x10fbef
movq %rbx, %rdi
movq %r15, %rsi
callq 0x10cd10
leaq 0x28(%r14), %rdx
leaq 0x2a1268(%rip), %rdi    # 0x35d8b1
leaq 0x2a126e(%rip), %r15    # 0x35d8be
movq %r15, %rsi
xorl %ecx, %ecx
callq 0x10f4c7
movq %rax, %r12
movq %rax, %rdi
callq 0x10fbef
movq %rbx, %rdi
movq %r12, %rsi
callq 0x10cd10
addq $0x30, %r14
leaq 0x2a1263(%rip), %rdi    # 0x35d8de
movq %r15, %rsi
movq %r14, %rdx
xorl %ecx, %ecx
callq 0x10f4c7
movq %rax, %r14
movq %rax, %rdi
callq 0x10fbef
movq %rbx, %rdi
movq %r14, %rsi
callq 0x10cd10
leaq 0x1280d3(%rip), %rsi    # 0x1e4778
movq %rbx, %rdi
callq 0x10cda1
movq %rbx, %rdi
xorl %esi, %esi
callq 0x10d775
movq %rbx, %rax
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
callq 0x1e06e