// File: /workspace/github_c_makefile_star2_O0/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:
subq $0x48, %rsp
movq %rdi, 0x40(%rsp)
movq 0x40(%rsp), %rax
movq %rax, 0x38(%rsp)
cmpq $0x0, 0x38(%rsp)
jne 0x22ff3
movq 0x618fde(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x4f3047(%rip), %rsi    # 0x516013
leaq 0x557b8c(%rip), %rdx    # 0x57ab5f
leaq 0x4f5dbd(%rip), %rcx    # 0x518d97
leaq 0x4f5d97(%rip), %r8     # 0x518d78
movl $0x89, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x22ff5
leaq 0x4f5dc0(%rip), %rdi    # 0x518dbc
leaq 0x4f5de3(%rip), %rsi    # 0x518de6
callq 0xf1420
movq %rax, 0x30(%rsp)
movq 0x38(%rsp), %rax
movq 0x10(%rax), %rdi
movq 0x30(%rsp), %rsi
callq 0x148ae0
movq 0x38(%rsp), %rdx
addq $0x4d, %rdx
leaq 0x526e46(%rip), %rdi    # 0x549e76
leaq 0x4f5e0a(%rip), %rsi    # 0x518e41
xorl %ecx, %ecx
callq 0xf5f20
movq %rax, (%rsp)
movq 0x38(%rsp), %rdx
addq $0x4c, %rdx
leaq 0x526e52(%rip), %rdi    # 0x549ea4
leaq 0x4f5dfe(%rip), %rsi    # 0x518e57
xorl %ecx, %ecx
callq 0xf5f20
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rdi
movq (%rsp), %rsi
callq 0xf6cf0
movq (%rsp), %rdi
movq 0x8(%rsp), %rsi
callq 0xf7320
movq 0x30(%rsp), %rdi
movq (%rsp), %rsi
callq 0xf1600
movq 0x30(%rsp), %rdi
movq 0x8(%rsp), %rsi
callq 0xf1600
movq 0x38(%rsp), %rdx
addq $0x30, %rdx
leaq 0x5579bd(%rip), %rdi    # 0x57aa6b
leaq 0x4f5de1(%rip), %rsi    # 0x518e96
movl $0x1e, %ecx
callq 0xf5fe0
movq %rax, 0x20(%rsp)
movq 0x30(%rsp), %rdi
movq 0x20(%rsp), %rsi
callq 0xf1600
movq 0x38(%rsp), %rdx
addq $0x38, %rdx
leaq 0x51e35c(%rip), %rdi    # 0x54143f
leaq 0x4f5ddf(%rip), %rsi    # 0x518ec9
movsd 0x4f5c66(%rip), %xmm0   # 0x518d58
callq 0xf6160
movq %rax, 0x18(%rsp)
movq 0x30(%rsp), %rdi
movq 0x18(%rsp), %rsi
callq 0xf1600
movq 0x38(%rsp), %rdx
addq $0x40, %rdx
leaq 0x57635d(%rip), %rdi    # 0x599478
leaq 0x4f5dce(%rip), %rsi    # 0x518ef0
movsd 0x4f5c26(%rip), %xmm0   # 0x518d50
callq 0xf6160
movq %rax, 0x10(%rsp)
movq 0x10(%rsp), %rdi
callq 0xf7400
movq 0x30(%rsp), %rdi
movq 0x10(%rsp), %rsi
callq 0xf1600
movq 0x20(%rsp), %rdi
movq 0x18(%rsp), %rsi
callq 0xf7320
movq 0x20(%rsp), %rdi
movq 0x10(%rsp), %rsi
callq 0xf7320
movq 0x38(%rsp), %rax
movq 0x18(%rax), %rdx
leaq 0x53ee49(%rip), %rdi    # 0x561fc4
leaq 0x4f5dc5(%rip), %rsi    # 0x518f47
callq 0xf6aa0
movq %rax, 0x28(%rsp)
movq 0x28(%rsp), %rdi
callq 0xf6ca0
movq 0x30(%rsp), %rdi
movq 0x28(%rsp), %rsi
callq 0xf1600
movq 0x38(%rsp), %rdx
addq $0x48, %rdx
leaq 0x4f5dab(%rip), %rdi    # 0x518f60
leaq 0x4f5db1(%rip), %rsi    # 0x518f6d
movl $0x8, %ecx
movl $0x1, %r8d
callq 0xf6370
movq %rax, 0x28(%rsp)
movq 0x28(%rsp), %rdi
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
callq 0xf7150
movq 0x30(%rsp), %rdi
movq 0x28(%rsp), %rsi
callq 0xf1600
movq 0x38(%rsp), %rdx
addq $0x4e, %rdx
leaq 0x4f5d8c(%rip), %rdi    # 0x518f8f
leaq 0x4f5d8f(%rip), %rsi    # 0x518f99
movl $0x1, %ecx
callq 0xf5f20
movq %rax, 0x28(%rsp)
movq 0x30(%rsp), %rdi
movq 0x28(%rsp), %rsi
callq 0xf1600
movq 0x38(%rsp), %rax
movq 0x20(%rax), %rdx
leaq 0x4f5da7(%rip), %rdi    # 0x518fdf
leaq 0x4f5da4(%rip), %rsi    # 0x518fe3
callq 0xf6aa0
movq %rax, 0x28(%rsp)
movq 0x30(%rsp), %rdi
movq 0x28(%rsp), %rsi
callq 0xf1600
movq 0x38(%rsp), %rax
movq 0x8(%rax), %rdi
movq 0x30(%rsp), %rsi
movq 0x38(%rsp), %rdx
callq 0xf7d50
movq 0x38(%rsp), %rax
movq 0x28(%rax), %rdx
leaq 0x4f5d9f(%rip), %rdi    # 0x51901f
leaq 0x4f5da2(%rip), %rsi    # 0x519029
xorl %eax, %eax
movl %eax, %ecx
callq 0xf69f0
movq %rax, 0x28(%rsp)
movq 0x28(%rsp), %rdi
callq 0xf6ff0
movq 0x30(%rsp), %rdi
movq 0x28(%rsp), %rsi
callq 0xf1600
movq 0x30(%rsp), %rax
addq $0x48, %rsp
retq
nopl (%rax,%rax)