// File: /workspace/github_c_makefile_star2_O3/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 0x9cec5
movq %rdi, %r14
leaq 0x2ab0d1(%rip), %rdi    # 0x347d6c
leaq 0x2ab0f4(%rip), %rsi    # 0x347d96
callq 0x107bfe
movq %rax, %rbx
movq 0x10(%r14), %rdi
movq %rax, %rsi
callq 0x130d71
leaq 0x4d(%r14), %rdx
leaq 0x2daef1(%rip), %rdi    # 0x377bb2
leaq 0x2ab129(%rip), %rsi    # 0x347df1
xorl %ecx, %ecx
callq 0x10a235
movq %rax, %r15
movq %rax, (%rsp)
leaq 0x4c(%r14), %rdx
leaq 0x2daeff(%rip), %rdi    # 0x377be0
leaq 0x2ab11f(%rip), %rsi    # 0x347e07
xorl %ecx, %ecx
callq 0x10a235
movq %rax, %r12
movq %rax, %rdi
movq %r15, %rsi
callq 0x10a88b
movq %r15, %rdi
movq %r12, %rsi
callq 0x10ab96
movq %rbx, %rdi
movq %r15, %rsi
callq 0x107cc0
movq %rbx, %rdi
movq %r12, %rsi
callq 0x107cc0
leaq 0x30(%r14), %rdx
leaq 0x30b4a3(%rip), %rdi    # 0x3a81cc
leaq 0x2ab116(%rip), %rsi    # 0x347e46
movl $0x1e, %ecx
callq 0x10a2ab
movq %rax, %r13
movq %rbx, %rdi
movq %rax, %rsi
callq 0x107cc0
leaq 0x38(%r14), %rdx
leaq 0x2d2782(%rip), %rdi    # 0x36f4d5
leaq 0x2ab11f(%rip), %rsi    # 0x347e79
movsd 0x2aafa6(%rip), %xmm0   # 0x347d08
callq 0x10a346
movq %rax, %rbp
movq %rbx, %rdi
movq %rax, %rsi
callq 0x107cc0
leaq 0x40(%r14), %rdx
leaq 0x329360(%rip), %rdi    # 0x3c60e0
leaq 0x2ab119(%rip), %rsi    # 0x347ea0
movsd 0x2aaf81(%rip), %xmm0   # 0x347d10
callq 0x10a346
movq %rax, %r15
movq %rax, %rdi
callq 0x10ac1f
movq %rbx, %rdi
movq %r15, %rsi
callq 0x107cc0
movq %r13, %rdi
movq %rbp, %rsi
callq 0x10ab96
movq %r13, %rdi
movq %r15, %rsi
callq 0x10ab96
movq 0x18(%r14), %rdx
leaq 0x2f2a08(%rip), %rdi    # 0x38f7d3
leaq 0x2ab125(%rip), %rsi    # 0x347ef7
callq 0x10a7af
movq %rax, %r15
movq %rax, %rdi
callq 0x10a87b
movq %rbx, %rdi
movq %r15, %rsi
callq 0x107cc0
leaq 0x48(%r14), %rdx
leaq 0x2ab118(%rip), %rdi    # 0x347f10
leaq 0x2ab11e(%rip), %rsi    # 0x347f1d
movl $0x8, %ecx
movl $0x1, %r8d
callq 0x10a46f
movq %rax, %r15
movq %rax, %rdi
movq (%rsp), %rsi
movq %r12, %rdx
callq 0x10aa54
movq %rbx, %rdi
movq %r15, %rsi
callq 0x107cc0
leaq 0x4e(%r14), %rdx
leaq 0x2ab108(%rip), %rdi    # 0x347f3f
leaq 0x2ab10b(%rip), %rsi    # 0x347f49
movl $0x1, %ecx
callq 0x10a235
movq %rbx, %rdi
movq %rax, %rsi
callq 0x107cc0
movq 0x20(%r14), %rdx
leaq 0x2ab131(%rip), %rdi    # 0x347f8f
leaq 0x2ab12e(%rip), %rsi    # 0x347f93
callq 0x10a7af
movq %rbx, %rdi
movq %rax, %rsi
callq 0x107cc0
movq 0x8(%r14), %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x10ad87
movq 0x28(%r14), %rdx
leaq 0x2ab140(%rip), %rdi    # 0x347fcf
leaq 0x2ab143(%rip), %rsi    # 0x347fd9
xorl %ecx, %ecx
callq 0x10a770
movq %rax, %r14
movq %rax, %rdi
callq 0x10a9c4
movq %rbx, %rdi
movq %r14, %rsi
callq 0x107cc0
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0x18ea6