// File: /workspace/github_c_makefile_star2_O1/genometools[P]genometools/src/tools/gt_condenseq_blast.c
// Function: gt_condenseq_blast_option_parser_new
static GtOptionParser*
gt_condenseq_blast_option_parser_new(void *tool_arguments)
{
  GtCondenseqBlastArguments *arguments = tool_arguments;
  GtOptionParser *op;
  GtOption *option, *score_opt, *ceval_opt, *feval_opt, *blastp_opt,
           *blastn_opt;
  gt_assert(arguments);

  /* init */
  op = gt_option_parser_new("[option ...] -db <archive> -query <query>",
                            "Perform a BLASTsearch on the given compressed "
                            "database. Output similar to blast -outfmt 6.");

  gt_condenseq_search_register_options(arguments->csa, op);

  /* -blastn */
  blastn_opt = gt_option_new_bool("blastn", "perform blastn search",
                                  &arguments->blastn, false);
  /* -blastp */
  blastp_opt = gt_option_new_bool("blastp", "perform blastp search, either "
                                  "-blastn or -blastp is mandatory.",
                                  &arguments->blastp, false);
  gt_option_is_mandatory_either(blastp_opt, blastn_opt);
  gt_option_exclude(blastn_opt, blastp_opt);
  gt_option_parser_add_option(op, blastn_opt);
  gt_option_parser_add_option(op, blastp_opt);

  /* -score */
  score_opt = gt_option_new_uword("score", "bitscore threshold for BLAST(p) "
                                  "evalue calculation",
                                  &arguments->bitscore, (GtUword) 30);
  gt_option_parser_add_option(op, score_opt);

  /* -ce */
  ceval_opt = gt_option_new_double("ce",
                                   "coarse e value for coarse blast search",
                                   &arguments->ceval, 5.0);
  gt_option_parser_add_option(op, ceval_opt);

  /* -fe */
  feval_opt = gt_option_new_double("fe", "fine e value for fine blast search, "
                                   "defaults to calculated evalue from the "
                                   "given score",
                                   &arguments->feval, GT_UNDEF_DOUBLE);
  gt_option_hide_default(feval_opt);
  gt_option_parser_add_option(op, feval_opt);
  gt_option_exclude(score_opt, ceval_opt);
  gt_option_exclude(score_opt, feval_opt);

  /* -query */
  option = gt_option_new_filename("query", "path of fasta query file",
                                  arguments->querypath);
  gt_option_is_mandatory(option);
  gt_option_parser_add_option(op, option);

  /* -blastthreads */
  option = gt_option_new_int_min("blastthreads", "how many threads for blast "
                                 "to use", &arguments->blthreads, 8, 1);
  gt_option_imply_either_2(option, blastn_opt, blastp_opt);
  gt_option_parser_add_option(op, option);

  /* -create_db */
  option = gt_option_new_bool("create_db", "create blastdb from unique "
                              "sequences. Tries to use existing if false.",
                              &arguments->createdb, true);
  gt_option_parser_add_option(op, option);

  /* -gff */
  option = gt_option_new_filename("gff", "output all hits and extracted ranges "
                                  "to given file as gff3.", arguments->gff);
  gt_option_parser_add_option(op, option);

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

  /* -extraopts */
  option = gt_option_new_string("extraopts", "pass this string to blast(n|p)",
                                arguments->extraopts, NULL);
  gt_option_is_extended_option(option);

  gt_option_parser_add_option(op, option);
  return op;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
testq %rdi, %rdi
je 0x9f0a1
movq %rdi, %r14
leaq 0x2b1ef5(%rip), %rdi    # 0x350d6c
leaq 0x2b1f18(%rip), %rsi    # 0x350d96
callq 0x10cc4e
movq %rax, %rbx
movq 0x10(%r14), %rdi
movq %rax, %rsi
callq 0x136fd9
leaq 0x4d(%r14), %rdx
leaq 0x2e1fb3(%rip), %rdi    # 0x380e50
leaq 0x2b1f4d(%rip), %rsi    # 0x350df1
xorl %ecx, %ecx
callq 0x10f451
movq %rax, %r15
movq %rax, (%rsp)
leaq 0x4c(%r14), %rdx
leaq 0x2e1fc1(%rip), %rdi    # 0x380e7e
leaq 0x2b1f43(%rip), %rsi    # 0x350e07
xorl %ecx, %ecx
callq 0x10f451
movq %rax, %r12
movq %rax, %rdi
movq %r15, %rsi
callq 0x10faa6
movq %r15, %rdi
movq %r12, %rsi
callq 0x10fd9f
movq %rbx, %rdi
movq %r15, %rsi
callq 0x10cd10
movq %rbx, %rdi
movq %r12, %rsi
callq 0x10cd10
leaq 0x30(%r14), %rdx
leaq 0x312883(%rip), %rdi    # 0x3b1788
leaq 0x2b1f3a(%rip), %rsi    # 0x350e46
movl $0x1e, %ecx
callq 0x10f4c7
movq %rax, %r13
movq %rbx, %rdi
movq %rax, %rsi
callq 0x10cd10
leaq 0x38(%r14), %rdx
leaq 0x2d9816(%rip), %rdi    # 0x378745
leaq 0x2b1f43(%rip), %rsi    # 0x350e79
movsd 0x2b1dca(%rip), %xmm0   # 0x350d08
callq 0x10f562
movq %rax, %rbp
movq %rbx, %rdi
movq %rax, %rsi
callq 0x10cd10
leaq 0x40(%r14), %rdx
leaq 0x3308b4(%rip), %rdi    # 0x3cf810
leaq 0x2b1f3d(%rip), %rsi    # 0x350ea0
movsd 0x2b1da5(%rip), %xmm0   # 0x350d10
callq 0x10f562
movq %rax, %r15
movq %rax, %rdi
callq 0x10fe32
movq %rbx, %rdi
movq %r15, %rsi
callq 0x10cd10
movq %r13, %rdi
movq %rbp, %rsi
callq 0x10fd9f
movq %r13, %rdi
movq %r15, %rsi
callq 0x10fd9f
movq 0x18(%r14), %rdx
leaq 0x2f9c54(%rip), %rdi    # 0x398bfb
leaq 0x2b1f49(%rip), %rsi    # 0x350ef7
callq 0x10f9c6
movq %rax, %r15
movq %rax, %rdi
callq 0x10fa96
movq %rbx, %rdi
movq %r15, %rsi
callq 0x10cd10
leaq 0x48(%r14), %rdx
leaq 0x2b1f3c(%rip), %rdi    # 0x350f10
leaq 0x2b1f42(%rip), %rsi    # 0x350f1d
movl $0x8, %ecx
movl $0x1, %r8d
callq 0x10f68b
movq %rax, %r15
movq %rax, %rdi
movq (%rsp), %rsi
movq %r12, %rdx
callq 0x10fc6f
movq %rbx, %rdi
movq %r15, %rsi
callq 0x10cd10
leaq 0x4e(%r14), %rdx
leaq 0x2b1f2c(%rip), %rdi    # 0x350f3f
leaq 0x2b1f2f(%rip), %rsi    # 0x350f49
movl $0x1, %ecx
callq 0x10f451
movq %rbx, %rdi
movq %rax, %rsi
callq 0x10cd10
movq 0x20(%r14), %rdx
leaq 0x2b1f55(%rip), %rdi    # 0x350f8f
leaq 0x2b1f52(%rip), %rsi    # 0x350f93
callq 0x10f9c6
movq %rbx, %rdi
movq %rax, %rsi
callq 0x10cd10
movq 0x8(%r14), %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x10ffa3
movq 0x28(%r14), %rdx
leaq 0x2b1f64(%rip), %rdi    # 0x350fcf
leaq 0x2b1f67(%rip), %rsi    # 0x350fd9
xorl %ecx, %ecx
callq 0x10f987
movq %rax, %r14
movq %rax, %rdi
callq 0x10fbdf
movq %rbx, %rdi
movq %r14, %rsi
callq 0x10cd10
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0x18ea6