// File: /workspace/github_c_makefile_star2_O3/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 0xba64c
movq %rdi, %r14
leaq 0x29dca8(%rip), %rdi    # 0x357e62
leaq 0x29a149(%rip), %rsi    # 0x35430a
callq 0x107bfe
movq %rax, %rbx
movq 0x10(%r14), %rdx
leaq 0x298460(%rip), %rdi    # 0x352634
leaq 0x29a17e(%rip), %rsi    # 0x354359
xorl %ecx, %ecx
callq 0x10a770
movq %rax, %r15
movq %rax, %rdi
callq 0x10ac1f
movq %rbx, %rdi
movq %r15, %rsi
callq 0x107cc0
movq 0x18(%r14), %rdx
leaq 0x2bb2f6(%rip), %rdi    # 0x3754f9
leaq 0x29a197(%rip), %rsi    # 0x3543a1
callq 0x10a7df
movq %rax, %r15
movq %rax, %rdi
callq 0x10ac1f
movq %r15, %rdi
callq 0x10a87b
movq %rbx, %rdi
movq %r15, %rsi
callq 0x107cc0
movq %r14, %rdi
callq 0x10a257
movq %rax, %r15
movq %rbx, %rdi
movq %rax, %rsi
callq 0x107cc0
leaq 0x1(%r14), %rdx
leaq 0x2cc3fa(%rip), %rdi    # 0x386648
leaq 0x2984df(%rip), %rsi    # 0x352734
xorl %ecx, %ecx
callq 0x10a235
movq %rax, %r12
movq %rax, %rdi
movq %r15, %rsi
callq 0x10ab96
movq %rbx, %rdi
movq %r12, %rsi
callq 0x107cc0
leaq 0xb(%r14), %rdx
leaq 0x28c7a6(%rip), %rdi    # 0x346a26
leaq 0x29a2aa(%rip), %rsi    # 0x354531
xorl %ecx, %ecx
callq 0x10a235
movq %rax, %r15
movq %rax, %rdi
callq 0x10a9c4
movq %rbx, %rdi
movq %r15, %rsi
callq 0x107cc0
leaq 0xc(%r14), %rdx
leaq 0x29a2f6(%rip), %rdi    # 0x3545a5
leaq 0x29a2f7(%rip), %rsi    # 0x3545ad
movl $0x1, %ecx
callq 0x10a235
movq %rax, %r12
movq %rax, %rdi
callq 0x10a9c4
movq %rbx, %rdi
movq %r12, %rsi
callq 0x107cc0
leaq 0xd(%r14), %rdx
leaq 0x29a323(%rip), %rdi    # 0x354604
leaq 0x29a323(%rip), %rsi    # 0x35460b
xorl %ecx, %ecx
callq 0x10a235
movq %rax, %r12
movq %rax, %rdi
callq 0x10a9c4
movq %r12, %rdi
callq 0x10ac1f
movq %rbx, %rdi
movq %r12, %rsi
callq 0x107cc0
leaq 0x38(%r14), %rdx
leaq 0x29a33d(%rip), %rdi    # 0x354655
leaq 0x29a33d(%rip), %rsi    # 0x35465c
movq $-0x1, %rcx
callq 0x10a2ab
movq %rax, %r12
movq %rax, %rdi
callq 0x10ac1f
movq %r12, %rdi
callq 0x10a9c4
movq %rbx, %rdi
movq %r12, %rsi
callq 0x107cc0
leaq 0x40(%r14), %rdx
leaq 0x29a34c(%rip), %rdi    # 0x3546a0
leaq 0x29a34d(%rip), %rsi    # 0x3546a8
movl $0x3, %ecx
movl $0x7f, %r8d
callq 0x10a548
movq %rax, %r13
movq %rax, %rdi
callq 0x10a9c4
movq %r13, %rdi
movq %r12, %rsi
callq 0x10a9e4
movq %rbx, %rdi
movq %r13, %rsi
callq 0x107cc0
leaq 0xa(%r14), %rdx
leaq 0x2f8028(%rip), %rdi    # 0x3b23bf
leaq 0x29a346(%rip), %rsi    # 0x3546e4
xorl %ecx, %ecx
callq 0x10a235
movq %rax, %r12
movq %rax, %rdi
callq 0x10a9c4
movq %rbx, %rdi
movq %r12, %rsi
callq 0x107cc0
leaq 0x2(%r14), %rdx
leaq 0x2903f7(%rip), %rdi    # 0x34a7bd
leaq 0x299c3c(%rip), %rsi    # 0x354009
xorl %ecx, %ecx
callq 0x10a235
movq %rax, %r12
movq %rax, %rdi
callq 0x10a9d4
movq %rbx, %rdi
movq %r12, %rsi
callq 0x107cc0
leaq 0x3(%r14), %rdx
leaq 0x29a313(%rip), %rdi    # 0x354708
leaq 0x29a317(%rip), %rsi    # 0x354713
xorl %ecx, %ecx
callq 0x10a235
movq %rax, %r12
movq %rax, %rdi
callq 0x10a9d4
movq %rbx, %rdi
movq %r12, %rsi
callq 0x107cc0
leaq 0x5(%r14), %rdx
leaq 0x2ccdd9(%rip), %rdi    # 0x3871fd
leaq 0x29a306(%rip), %rsi    # 0x354731
movl $0x1, %ecx
callq 0x10a235
movq %rax, %r13
movq %rax, %rdi
callq 0x10a9d4
movq %rbx, %rdi
movq %r13, %rsi
callq 0x107cc0
leaq 0x9(%r14), %rdx
leaq 0x29a2fb(%rip), %rdi    # 0x354751
leaq 0x29a2fd(%rip), %rsi    # 0x35475a
movl $0x1, %ecx
callq 0x10a235
movq %rax, %r13
movq %rax, %rdi
callq 0x10a9d4
movq %rbx, %rdi
movq %r13, %rsi
callq 0x107cc0
leaq 0x7(%r14), %rdx
leaq 0x2bf688(%rip), %rdi    # 0x379b10
leaq 0x29a2e8(%rip), %rsi    # 0x354777
xorl %ecx, %ecx
callq 0x10a235
movq %rax, %r13
movq %rax, %rdi
callq 0x10a9d4
movq %r13, %rdi
movq %r15, %rsi
callq 0x10ab96
movq %rbx, %rdi
movq %r13, %rsi
callq 0x107cc0
leaq 0x4(%r14), %rdx
leaq 0x298325(%rip), %rdi    # 0x3527e7
leaq 0x29a2d0(%rip), %rsi    # 0x354799
xorl %ecx, %ecx
callq 0x10a235
movq %rax, %r15
movq %rax, %rdi
callq 0x10a9d4
movq %r12, %rdi
movq %r15, %rsi
callq 0x10ab96
movq %rbx, %rdi
movq %r15, %rsi
callq 0x107cc0
leaq 0x6(%r14), %rdx
leaq 0x29e83f(%rip), %rdi    # 0x358d3b
leaq 0x29a2b2(%rip), %rsi    # 0x3547b5
xorl %ecx, %ecx
callq 0x10a235
movq %rax, %r15
movq %rax, %rdi
callq 0x10a9d4
movq %r12, %rdi
movq %r15, %rsi
callq 0x10ab96
movq %rbx, %rdi
movq %r15, %rsi
callq 0x107cc0
leaq 0x8(%r14), %rdx
leaq 0x2f2acd(%rip), %rdi    # 0x3ad003
leaq 0x29a297(%rip), %rsi    # 0x3547d4
xorl %ecx, %ecx
callq 0x10a235
movq %rax, %r15
movq %rax, %rdi
callq 0x10a9d4
movq %r12, %rdi
movq %r15, %rsi
callq 0x10ab96
movq %rbx, %rdi
movq %r15, %rsi
callq 0x107cc0
leaq 0x20(%r14), %rdx
leaq 0x29a29b(%rip), %rdi    # 0x35480b
leaq 0x29a29b(%rip), %rsi    # 0x354812
xorl %ecx, %ecx
callq 0x10a235
movq %rax, %r15
movq %rax, %rdi
callq 0x10a9d4
movq %rbx, %rdi
movq %r15, %rsi
callq 0x107cc0
leaq 0x21(%r14), %rdx
leaq 0x29a2a8(%rip), %rdi    # 0x354847
leaq 0x29a2ae(%rip), %rsi    # 0x354854
movl $0x1, %ecx
callq 0x10a235
movq %rax, %r15
movq %rax, %rdi
callq 0x10a9d4
movq %rbx, %rdi
movq %r15, %rsi
callq 0x107cc0
leaq 0x28(%r14), %rdx
leaq 0x29a2a8(%rip), %rdi    # 0x354879
leaq 0x29a2ae(%rip), %r15    # 0x354886
movq %r15, %rsi
xorl %ecx, %ecx
callq 0x10a2ab
movq %rax, %r12
movq %rax, %rdi
callq 0x10a9d4
movq %rbx, %rdi
movq %r12, %rsi
callq 0x107cc0
addq $0x30, %r14
leaq 0x29a2a3(%rip), %rdi    # 0x3548a6
movq %r15, %rsi
movq %r14, %rdx
xorl %ecx, %ecx
callq 0x10a2ab
movq %rax, %r14
movq %rax, %rdi
callq 0x10a9d4
movq %rbx, %rdi
movq %r14, %rsi
callq 0x107cc0
leaq 0x120923(%rip), %rsi    # 0x1daf50
movq %rbx, %rdi
callq 0x107d51
movq %rbx, %rdi
xorl %esi, %esi
callq 0x10873c
movq %rbx, %rax
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
callq 0x1dd54