// File: /workspace/github_c_makefile_star2_O2/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 0x1defe
movq %rdi, %r14
leaq 0x2ca091(%rip), %rdi    # 0x2e7d6c
leaq 0x2ca0b4(%rip), %rsi    # 0x2e7d96
callq 0x97df5
movq %rax, %rbx
movq 0x10(%r14), %rdi
movq %rax, %rsi
callq 0xc6dab
leaq 0x4d(%r14), %rdx
leaq 0x2fa1c1(%rip), %rdi    # 0x317ec2
leaq 0x2ca0e9(%rip), %rsi    # 0x2e7df1
xorl %ecx, %ecx
callq 0x9a997
movq %rax, %r15
movq %rax, (%rsp)
leaq 0x4c(%r14), %rdx
leaq 0x2fa1cf(%rip), %rdi    # 0x317ef0
leaq 0x2ca0df(%rip), %rsi    # 0x2e7e07
xorl %ecx, %ecx
callq 0x9a997
movq %rax, %r12
movq %rax, %rdi
movq %r15, %rsi
callq 0x9ae7a
movq %r15, %rdi
movq %r12, %rsi
callq 0x9b38d
movq %rbx, %rdi
movq %r15, %rsi
callq 0x97f31
movq %rbx, %rdi
movq %r12, %rsi
callq 0x97f31
leaq 0x30(%r14), %rdx
leaq 0x32a7f6(%rip), %rdi    # 0x34855f
leaq 0x2ca0d6(%rip), %rsi    # 0x2e7e46
pushq $0x1e
popq %rcx
callq 0x9a9e6
movq %rax, %r13
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
leaq 0x38(%r14), %rdx
leaq 0x2f1a5c(%rip), %rdi    # 0x30f7ed
leaq 0x2ca0e1(%rip), %rsi    # 0x2e7e79
movsd 0x2c9f68(%rip), %xmm0   # 0x2e7d08
callq 0x9aad7
movq %rax, %rbp
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
leaq 0x40(%r14), %rdx
leaq 0x348732(%rip), %rdi    # 0x3664f0
leaq 0x2ca0db(%rip), %rsi    # 0x2e7ea0
movsd 0x2c9f43(%rip), %xmm0   # 0x2e7d10
callq 0x9aad7
movq %rax, %r15
movq %rax, %rdi
callq 0x9b445
movq %rbx, %rdi
movq %r15, %rsi
callq 0x97f31
movq %r13, %rdi
movq %rbp, %rsi
callq 0x9b38d
movq %r13, %rdi
movq %r15, %rsi
callq 0x9b38d
movq 0x18(%r14), %rdx
leaq 0x311d08(%rip), %rdi    # 0x32fb11
leaq 0x2ca0e7(%rip), %rsi    # 0x2e7ef7
callq 0x9ad51
movq %rax, %r15
movq %rax, %rdi
callq 0x9ae37
movq %rbx, %rdi
movq %r15, %rsi
callq 0x97f31
leaq 0x48(%r14), %rdx
leaq 0x2ca0da(%rip), %rdi    # 0x2e7f10
leaq 0x2ca0e0(%rip), %rsi    # 0x2e7f1d
pushq $0x8
popq %rcx
pushq $0x1
popq %rbp
movl %ebp, %r8d
callq 0x9ab88
movq %rax, %r15
movq %rax, %rdi
movq (%rsp), %rsi
movq %r12, %rdx
callq 0x9b1ed
movq %rbx, %rdi
movq %r15, %rsi
callq 0x97f31
leaq 0x4e(%r14), %rdx
leaq 0x2ca0cc(%rip), %rdi    # 0x2e7f3f
leaq 0x2ca0cf(%rip), %rsi    # 0x2e7f49
movl %ebp, %ecx
callq 0x9a997
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
movq 0x20(%r14), %rdx
leaq 0x2ca0f8(%rip), %rdi    # 0x2e7f8f
leaq 0x2ca0f5(%rip), %rsi    # 0x2e7f93
callq 0x9ad51
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
movq 0x8(%r14), %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x9b6d7
movq 0x28(%r14), %rdx
leaq 0x2ca107(%rip), %rdi    # 0x2e7fcf
leaq 0x2ca10a(%rip), %rsi    # 0x2e7fd9
xorl %ecx, %ecx
callq 0x9ad12
movq %rax, %r14
movq %rax, %rdi
callq 0x9b0c7
movq %rbx, %rdi
movq %r14, %rsi
callq 0x97f31
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x41a063(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x2c7104(%rip), %rsi    # 0x2e5013
leaq 0x32a73d(%rip), %rdx    # 0x348653
leaq 0x2c9e2a(%rip), %rcx    # 0x2e7d47
leaq 0x2c9e04(%rip), %r8     # 0x2e7d28
movl $0x89, %r9d
xorl %eax, %eax
callq 0x17a50
callq 0x17390