// File: /workspace/github_c_makefile_star2_O2/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 %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
testq %rdi, %rdi
je 0x3dc6a
movq %rdi, %r14
leaq 0x2ba68e(%rip), %rdi    # 0x2f7e72
leaq 0x2b6b2f(%rip), %rsi    # 0x2f431a
callq 0x97df5
movq %rax, %rbx
movq 0x10(%r14), %rdx
leaq 0x2b4e46(%rip), %rdi    # 0x2f2644
leaq 0x2b6b64(%rip), %rsi    # 0x2f4369
xorl %ecx, %ecx
callq 0x9ad12
movq %rax, %r15
movq %rax, %rdi
callq 0x9b445
movq %rbx, %rdi
movq %r15, %rsi
callq 0x97f31
movq 0x18(%r14), %rdx
leaq 0x2d7fdc(%rip), %rdi    # 0x315809
leaq 0x2b6b7d(%rip), %rsi    # 0x2f43b1
callq 0x9ad7e
movq %rax, %r15
movq %rax, %rdi
callq 0x9b445
movq %r15, %rdi
callq 0x9ae37
movq %rbx, %rdi
movq %r15, %rsi
callq 0x97f31
movq %r14, %rdi
callq 0x9a9b6
movq %rax, %r15
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
leaq 0x1(%r14), %rdx
leaq 0x2e91d0(%rip), %rdi    # 0x326a48
leaq 0x2b4ec5(%rip), %rsi    # 0x2f2744
xorl %ecx, %ecx
callq 0x9a997
movq %rax, %r12
movq %rax, %rdi
movq %r15, %rsi
callq 0x9b38d
movq %rbx, %rdi
movq %r12, %rsi
callq 0x97f31
leaq 0xb(%r14), %rdx
leaq 0x2a917c(%rip), %rdi    # 0x2e6a26
leaq 0x2b6c90(%rip), %rsi    # 0x2f4541
xorl %ecx, %ecx
callq 0x9a997
movq %rax, %r15
movq %rax, %rdi
callq 0x9b0c7
movq %rbx, %rdi
movq %r15, %rsi
callq 0x97f31
leaq 0xc(%r14), %rdx
leaq 0x2b6cdc(%rip), %rdi    # 0x2f45b5
leaq 0x2b6cdd(%rip), %rsi    # 0x2f45bd
pushq $0x1
popq %rbp
movl %ebp, %ecx
callq 0x9a997
movq %rax, %r12
movq %rax, %rdi
callq 0x9b0c7
movq %rbx, %rdi
movq %r12, %rsi
callq 0x97f31
leaq 0xd(%r14), %rdx
leaq 0x2b6d09(%rip), %rdi    # 0x2f4614
leaq 0x2b6d09(%rip), %rsi    # 0x2f461b
xorl %ecx, %ecx
callq 0x9a997
movq %rax, %r12
movq %rax, %rdi
callq 0x9b0c7
movq %r12, %rdi
callq 0x9b445
movq %rbx, %rdi
movq %r12, %rsi
callq 0x97f31
leaq 0x38(%r14), %rdx
leaq 0x2b6d23(%rip), %rdi    # 0x2f4665
leaq 0x2b6d23(%rip), %rsi    # 0x2f466c
pushq $-0x1
popq %rcx
callq 0x9a9e6
movq %rax, %r12
movq %rax, %rdi
callq 0x9b445
movq %r12, %rdi
callq 0x9b0c7
movq %rbx, %rdi
movq %r12, %rsi
callq 0x97f31
leaq 0x40(%r14), %rdx
leaq 0x2b6d36(%rip), %rdi    # 0x2f46b0
leaq 0x2b6d37(%rip), %rsi    # 0x2f46b8
pushq $0x3
popq %rcx
pushq $0x7f
popq %r8
callq 0x9ac01
movq %rax, %r13
movq %rax, %rdi
callq 0x9b0c7
movq %r13, %rdi
movq %r12, %rsi
callq 0x9b14d
movq %rbx, %rdi
movq %r13, %rsi
callq 0x97f31
leaq 0xa(%r14), %rdx
leaq 0x314e68(%rip), %rdi    # 0x352821
leaq 0x2b6d34(%rip), %rsi    # 0x2f46f4
xorl %ecx, %ecx
callq 0x9a997
movq %rax, %r12
movq %rax, %rdi
callq 0x9b0c7
movq %rbx, %rdi
movq %r12, %rsi
callq 0x97f31
leaq 0x2(%r14), %rdx
leaq 0x2acdd5(%rip), %rdi    # 0x2ea7bd
leaq 0x2b662a(%rip), %rsi    # 0x2f4019
xorl %ecx, %ecx
callq 0x9a997
movq %rax, %r12
movq %rax, %rdi
callq 0x9b10a
movq %rbx, %rdi
movq %r12, %rsi
callq 0x97f31
leaq 0x3(%r14), %rdx
leaq 0x2b6d01(%rip), %rdi    # 0x2f4718
leaq 0x2b6d05(%rip), %rsi    # 0x2f4723
xorl %ecx, %ecx
callq 0x9a997
movq %rax, %r12
movq %rax, %rdi
callq 0x9b10a
movq %rbx, %rdi
movq %r12, %rsi
callq 0x97f31
leaq 0x5(%r14), %rdx
leaq 0x2e9bac(%rip), %rdi    # 0x3275f2
leaq 0x2b6cf4(%rip), %rsi    # 0x2f4741
movl %ebp, %ecx
callq 0x9a997
movq %rax, %r13
movq %rax, %rdi
callq 0x9b10a
movq %rbx, %rdi
movq %r13, %rsi
callq 0x97f31
leaq 0x9(%r14), %rdx
leaq 0x2b6cec(%rip), %rdi    # 0x2f4761
leaq 0x2b6cee(%rip), %rsi    # 0x2f476a
movl %ebp, %ecx
callq 0x9a997
movq %rax, %r13
movq %rax, %rdi
callq 0x9b10a
movq %rbx, %rdi
movq %r13, %rsi
callq 0x97f31
leaq 0x7(%r14), %rdx
leaq 0x2dc3ba(%rip), %rdi    # 0x319e5e
leaq 0x2b6cdc(%rip), %rsi    # 0x2f4787
xorl %ecx, %ecx
callq 0x9a997
movq %rax, %r13
movq %rax, %rdi
callq 0x9b10a
movq %r13, %rdi
movq %r15, %rsi
callq 0x9b38d
movq %rbx, %rdi
movq %r13, %rsi
callq 0x97f31
leaq 0x4(%r14), %rdx
leaq 0x2b4d19(%rip), %rdi    # 0x2f27f7
leaq 0x2b6cc4(%rip), %rsi    # 0x2f47a9
xorl %ecx, %ecx
callq 0x9a997
movq %rax, %r15
movq %rax, %rdi
callq 0x9b10a
movq %r12, %rdi
movq %r15, %rsi
callq 0x9b38d
movq %rbx, %rdi
movq %r15, %rsi
callq 0x97f31
leaq 0x6(%r14), %rdx
leaq 0x2bb1fb(%rip), %rdi    # 0x2f8d13
leaq 0x2b6ca6(%rip), %rsi    # 0x2f47c5
xorl %ecx, %ecx
callq 0x9a997
movq %rax, %r15
movq %rax, %rdi
callq 0x9b10a
movq %r12, %rdi
movq %r15, %rsi
callq 0x9b38d
movq %rbx, %rdi
movq %r15, %rsi
callq 0x97f31
leaq 0x8(%r14), %rdx
leaq 0x30f801(%rip), %rdi    # 0x34d353
leaq 0x2b6c8b(%rip), %rsi    # 0x2f47e4
xorl %ecx, %ecx
callq 0x9a997
movq %rax, %r15
movq %rax, %rdi
callq 0x9b10a
movq %r12, %rdi
movq %r15, %rsi
callq 0x9b38d
movq %rbx, %rdi
movq %r15, %rsi
callq 0x97f31
leaq 0x20(%r14), %rdx
leaq 0x2b6c8f(%rip), %rdi    # 0x2f481b
leaq 0x2b6c8f(%rip), %rsi    # 0x2f4822
xorl %ecx, %ecx
callq 0x9a997
movq %rax, %r15
movq %rax, %rdi
callq 0x9b10a
movq %rbx, %rdi
movq %r15, %rsi
callq 0x97f31
leaq 0x21(%r14), %rdx
leaq 0x2b6c9c(%rip), %rdi    # 0x2f4857
leaq 0x2b6ca2(%rip), %rsi    # 0x2f4864
movl %ebp, %ecx
callq 0x9a997
movq %rax, %r15
movq %rax, %rdi
callq 0x9b10a
movq %rbx, %rdi
movq %r15, %rsi
callq 0x97f31
leaq 0x28(%r14), %rdx
leaq 0x2b6c9f(%rip), %rdi    # 0x2f4889
leaq 0x2b6ca5(%rip), %r15    # 0x2f4896
movq %r15, %rsi
xorl %ecx, %ecx
callq 0x9a9e6
movq %rax, %r12
movq %rax, %rdi
callq 0x9b10a
movq %rbx, %rdi
movq %r12, %rsi
callq 0x97f31
addq $0x30, %r14
leaq 0x2b6c9a(%rip), %rdi    # 0x2f48b6
movq %r15, %rsi
movq %r14, %rdx
xorl %ecx, %ecx
callq 0x9a9e6
movq %rax, %r14
movq %rax, %rdi
callq 0x9b10a
movq %rbx, %rdi
movq %r14, %rsi
callq 0x97f31
leaq 0x14aa7e(%rip), %rsi    # 0x1886c4
movq %rbx, %rdi
callq 0x9808c
movq %rbx, %rdi
xorl %esi, %esi
callq 0x98c29
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x3fa2f7(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x2a7398(%rip), %rsi    # 0x2e5013
leaq 0x30a9d1(%rip), %rdx    # 0x348653
leaq 0x2b6667(%rip), %rcx    # 0x2f42f0
leaq 0x2b663c(%rip), %r8     # 0x2f42cc
pushq $0x4c
popq %r9
xorl %eax, %eax
callq 0x17a50
callq 0x17390