// File: /workspace/github_c_makefile_star2_O0/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:
subq $0xc8, %rsp
movq %rdi, 0xc0(%rsp)
movq 0xc0(%rsp), %rax
movq %rax, 0xb8(%rsp)
cmpq $0x0, 0xb8(%rsp)
jne 0x54e32
movq 0x5e719f(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x4c1208(%rip), %rsi    # 0x516013
leaq 0x525d4d(%rip), %rdx    # 0x57ab5f
leaq 0x4d05a7(%rip), %rcx    # 0x5253c0
leaq 0x4d057c(%rip), %r8     # 0x52539c
movl $0x4c, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x54e34
leaq 0x4d4122(%rip), %rdi    # 0x528f5d
leaq 0x4d05a8(%rip), %rsi    # 0x5253ea
callq 0xf1420
movq %rax, 0xb0(%rsp)
movq 0xb8(%rsp), %rax
movq 0x10(%rax), %rdx
leaq 0x4ce852(%rip), %rdi    # 0x5236b4
leaq 0x4d05d0(%rip), %rsi    # 0x525439
xorl %eax, %eax
movl %eax, %ecx
callq 0xf69f0
movq %rax, 0x78(%rsp)
movq 0x78(%rsp), %rdi
callq 0xf7400
movq 0xb0(%rsp), %rdi
movq 0x78(%rsp), %rsi
callq 0xf1600
movq 0xb8(%rsp), %rax
movq 0x18(%rax), %rdx
leaq 0x4f289b(%rip), %rdi    # 0x547741
leaq 0x4d05d4(%rip), %rsi    # 0x525481
callq 0xf6b00
movq %rax, 0x60(%rsp)
movq 0x60(%rsp), %rdi
callq 0xf7400
movq 0x60(%rsp), %rdi
callq 0xf6ca0
movq 0xb0(%rsp), %rdi
movq 0x60(%rsp), %rsi
callq 0xf1600
movq 0xb8(%rsp), %rdi
callq 0xf5f90
movq %rax, 0x70(%rsp)
movq 0xb0(%rsp), %rdi
movq 0x70(%rsp), %rsi
callq 0xf1600
movq 0xb8(%rsp), %rdx
addq $0x1, %rdx
leaq 0x503eab(%rip), %rdi    # 0x558dbf
leaq 0x4ce899(%rip), %rsi    # 0x5237b4
xorl %ecx, %ecx
callq 0xf5f20
movq %rax, 0x68(%rsp)
movq 0x68(%rsp), %rdi
movq 0x70(%rsp), %rsi
callq 0xf7320
movq 0xb0(%rsp), %rdi
movq 0x68(%rsp), %rsi
callq 0xf1600
movq 0xb8(%rsp), %rdx
addq $0xb, %rdx
leaq 0x4c2ae3(%rip), %rdi    # 0x517a3e
leaq 0x4d06af(%rip), %rsi    # 0x525611
xorl %ecx, %ecx
callq 0xf5f20
movq %rax, 0x10(%rsp)
movq 0x10(%rsp), %rdi
callq 0xf6ff0
movq 0xb0(%rsp), %rdi
movq 0x10(%rsp), %rsi
callq 0xf1600
movq 0xb8(%rsp), %rdx
addq $0xc, %rdx
leaq 0x4d06e8(%rip), %rdi    # 0x525685
leaq 0x4d06e9(%rip), %rsi    # 0x52568d
movl $0x1, %ecx
callq 0xf5f20
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rdi
callq 0xf6ff0
movq 0xb0(%rsp), %rdi
movq 0x8(%rsp), %rsi
callq 0xf1600
movq 0xb8(%rsp), %rdx
addq $0xd, %rdx
leaq 0x4d0702(%rip), %rdi    # 0x5256e4
leaq 0x4d0702(%rip), %rsi    # 0x5256eb
xorl %ecx, %ecx
callq 0xf5f20
movq %rax, (%rsp)
movq (%rsp), %rdi
callq 0xf6ff0
movq (%rsp), %rdi
callq 0xf7400
movq 0xb0(%rsp), %rdi
movq (%rsp), %rsi
callq 0xf1600
movq 0xb8(%rsp), %rdx
addq $0x38, %rdx
leaq 0x4d070b(%rip), %rdi    # 0x525735
leaq 0x4d070b(%rip), %rsi    # 0x52573c
movq $-0x1, %rcx
callq 0xf5fe0
movq %rax, 0x20(%rsp)
movq 0x20(%rsp), %rdi
callq 0xf7400
movq 0x20(%rsp), %rdi
callq 0xf6ff0
movq 0xb0(%rsp), %rdi
movq 0x20(%rsp), %rsi
callq 0xf1600
movq 0xb8(%rsp), %rdx
addq $0x40, %rdx
leaq 0x4d0705(%rip), %rdi    # 0x525780
leaq 0x4d0706(%rip), %rsi    # 0x525788
movl $0x3, %ecx
movl $0x7f, %r8d
callq 0xf6570
movq %rax, 0x18(%rsp)
movq 0x18(%rsp), %rdi
callq 0xf6ff0
movq 0x18(%rsp), %rdi
movq 0x20(%rsp), %rsi
callq 0xf7090
movq 0xb0(%rsp), %rdi
movq 0x18(%rsp), %rsi
callq 0xf1600
movq 0xb8(%rsp), %rdx
addq $0xa, %rdx
leaq 0x5300a6(%rip), %rdi    # 0x58517b
leaq 0x4d06e8(%rip), %rsi    # 0x5257c4
xorl %ecx, %ecx
callq 0xf5f20
movq %rax, 0x28(%rsp)
movq 0x28(%rsp), %rdi
callq 0xf6ff0
movq 0xb0(%rsp), %rdi
movq 0x28(%rsp), %rsi
callq 0xf1600
movq 0xb8(%rsp), %rdx
addq $0x2, %rdx
leaq 0x4c66ff(%rip), %rdi    # 0x51b816
leaq 0x4cffcc(%rip), %rsi    # 0x5250ea
xorl %ecx, %ecx
callq 0xf5f20
movq %rax, 0xa8(%rsp)
movq 0xa8(%rsp), %rdi
callq 0xf7040
movq 0xb0(%rsp), %rdi
movq 0xa8(%rsp), %rsi
callq 0xf1600
movq 0xb8(%rsp), %rdx
addq $0x3, %rdx
leaq 0x4d0686(%rip), %rdi    # 0x5257e8
leaq 0x4d068a(%rip), %rsi    # 0x5257f3
xorl %ecx, %ecx
callq 0xf5f20
movq %rax, 0xa0(%rsp)
movq 0xa0(%rsp), %rdi
callq 0xf7040
movq 0xb0(%rsp), %rdi
movq 0xa0(%rsp), %rsi
callq 0xf1600
movq 0xb8(%rsp), %rdx
addq $0x5, %rdx
leaq 0x5047c9(%rip), %rdi    # 0x559976
leaq 0x4d065d(%rip), %rsi    # 0x525811
movl $0x1, %ecx
callq 0xf5f20
movq %rax, 0x80(%rsp)
movq 0x80(%rsp), %rdi
callq 0xf7040
movq 0xb0(%rsp), %rdi
movq 0x80(%rsp), %rsi
callq 0xf1600
movq 0xb8(%rsp), %rdx
addq $0x9, %rdx
leaq 0x4d0636(%rip), %rdi    # 0x525831
leaq 0x4d0638(%rip), %rsi    # 0x52583a
movl $0x1, %ecx
callq 0xf5f20
movq %rax, 0x50(%rsp)
movq 0x50(%rsp), %rdi
callq 0xf7040
movq 0xb0(%rsp), %rdi
movq 0x50(%rsp), %rsi
callq 0xf1600
movq 0xb8(%rsp), %rdx
addq $0x7, %rdx
leaq 0x4f6c38(%rip), %rdi    # 0x54be78
leaq 0x4d0610(%rip), %rsi    # 0x525857
xorl %ecx, %ecx
callq 0xf5f20
movq %rax, 0x90(%rsp)
movq 0x90(%rsp), %rdi
callq 0xf7040
movq 0x90(%rsp), %rdi
movq 0x10(%rsp), %rsi
callq 0xf7320
movq 0xb0(%rsp), %rdi
movq 0x90(%rsp), %rsi
callq 0xf1600
movq 0xb8(%rsp), %rdx
addq $0x4, %rdx
leaq 0x4ce5ca(%rip), %rdi    # 0x523867
leaq 0x4d05d5(%rip), %rsi    # 0x525879
xorl %ecx, %ecx
callq 0xf5f20
movq %rax, 0x98(%rsp)
movq 0x98(%rsp), %rdi
callq 0xf7040
movq 0xa0(%rsp), %rdi
movq 0x98(%rsp), %rsi
callq 0xf7320
movq 0xb0(%rsp), %rdi
movq 0x98(%rsp), %rsi
callq 0xf1600
movq 0xb8(%rsp), %rdx
addq $0x6, %rdx
leaq 0x4d4b19(%rip), %rdi    # 0x529e16
leaq 0x4d0591(%rip), %rsi    # 0x525895
xorl %ecx, %ecx
callq 0xf5f20
movq %rax, 0x88(%rsp)
movq 0x88(%rsp), %rdi
callq 0xf7040
movq 0xa0(%rsp), %rdi
movq 0x88(%rsp), %rsi
callq 0xf7320
movq 0xb0(%rsp), %rdi
movq 0x88(%rsp), %rsi
callq 0xf1600
movq 0xb8(%rsp), %rdx
addq $0x8, %rdx
leaq 0x52a763(%rip), %rdi    # 0x57fac0
leaq 0x4d0550(%rip), %rsi    # 0x5258b4
xorl %ecx, %ecx
callq 0xf5f20
movq %rax, 0x58(%rsp)
movq 0x58(%rsp), %rdi
callq 0xf7040
movq 0xa0(%rsp), %rdi
movq 0x58(%rsp), %rsi
callq 0xf7320
movq 0xb0(%rsp), %rdi
movq 0x58(%rsp), %rsi
callq 0xf1600
movq 0xb8(%rsp), %rdx
addq $0x20, %rdx
leaq 0x4d053a(%rip), %rdi    # 0x5258eb
leaq 0x4d053a(%rip), %rsi    # 0x5258f2
xorl %ecx, %ecx
callq 0xf5f20
movq %rax, 0x48(%rsp)
movq 0x48(%rsp), %rdi
callq 0xf7040
movq 0xb0(%rsp), %rdi
movq 0x48(%rsp), %rsi
callq 0xf1600
movq 0xb8(%rsp), %rdx
addq $0x21, %rdx
leaq 0x4d0534(%rip), %rdi    # 0x525927
leaq 0x4d053a(%rip), %rsi    # 0x525934
movl $0x1, %ecx
callq 0xf5f20
movq %rax, 0x38(%rsp)
movq 0x38(%rsp), %rdi
callq 0xf7040
movq 0xb0(%rsp), %rdi
movq 0x38(%rsp), %rsi
callq 0xf1600
movq 0xb8(%rsp), %rdx
addq $0x28, %rdx
leaq 0x4d0521(%rip), %rdi    # 0x525959
leaq 0x4d0527(%rip), %rsi    # 0x525966
xorl %eax, %eax
movl %eax, %ecx
callq 0xf5fe0
movq %rax, 0x40(%rsp)
movq 0x40(%rsp), %rdi
callq 0xf7040
movq 0xb0(%rsp), %rdi
movq 0x40(%rsp), %rsi
callq 0xf1600
movq 0xb8(%rsp), %rdx
addq $0x30, %rdx
leaq 0x4d050a(%rip), %rdi    # 0x525986
leaq 0x4d04e3(%rip), %rsi    # 0x525966
xorl %eax, %eax
movl %eax, %ecx
callq 0xf5fe0
movq %rax, 0x30(%rsp)
movq 0x30(%rsp), %rdi
callq 0xf7040
movq 0xb0(%rsp), %rdi
movq 0x30(%rsp), %rsi
callq 0xf1600
movq 0xb0(%rsp), %rdi
leaq 0x24b074(%rip), %rsi    # 0x2a0530
callq 0xf17f0
movq 0xb0(%rsp), %rdi
xorl %esi, %esi
callq 0xf29e0
movq 0xb0(%rsp), %rax
addq $0xc8, %rsp
retq