// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/tools/gt_idxlocali.c
// Function: gt_idxlocali_option_parser_new
static GtOptionParser *gt_idxlocali_option_parser_new(void *tool_arguments)
{
  IdxlocaliOptions *arguments = tool_arguments;
  GtOptionParser *op;
  GtOption *option, *optionesaindex, *optionpckindex, *optiononline, *optioncmp;

  gt_assert(arguments != NULL);
  arguments->indexname = gt_str_new ();
  arguments->queryfiles = gt_str_array_new ();

  op = gt_option_parser_new
    ("[options] -q query-file-names [-esa|-pck] indexname",
     "Find all local alignments using suffix tree.");

  gt_option_parser_set_mail_address(op, "<kurtz@zbh.uni-hamburg.de>");
  option = gt_option_new_filename_array("q","Specify files containing the "
                                            "query sequences",
                                        arguments->queryfiles);
  gt_option_parser_add_option (op, option);

  option = gt_option_new_word("match",
                              "Specify match score",
                              &arguments->matchscore, 1L);
  gt_option_parser_add_option(op, option);

  option = gt_option_new_word("mismatch",
                              "Specify mismatch score",
                              &arguments->mismatchscore, -3L);
  gt_option_parser_add_option(op, option);

  option = gt_option_new_word("gapstart",
                              "Specify gap start score",
                              &arguments->gapstart, -5L);
  gt_option_parser_add_option(op, option);

  option = gt_option_new_word("gapextend",
                              "Specify gap extension score",
                              &arguments->gapextend, -2L);
  gt_option_parser_add_option(op, option);

  option = gt_option_new_uword_min("th",
                                   "Specify the threshold",
                                    &arguments->threshold, 0, 1UL);
  gt_option_parser_add_option(op, option);
  gt_option_is_mandatory(option);

  optionesaindex = gt_option_new_string("esa",
                                        "Specify index "
                                        "(enhanced suffix array)",
                                        arguments->indexname, NULL);
  gt_option_parser_add_option(op, optionesaindex);
  arguments->refoptionesaindex = gt_option_ref(optionesaindex);

  optionpckindex = gt_option_new_string("pck",
                                        "Specify index (packed index)",
                                        arguments->indexname, NULL);
  gt_option_parser_add_option(op, optionpckindex);
  arguments->refoptionpckindex = gt_option_ref (optionpckindex);
  gt_option_exclude (optionesaindex, optionpckindex);
  gt_option_is_mandatory_either(optionesaindex, optionpckindex);

  optiononline = gt_option_new_bool("online","Perform online searches",
                                    &arguments->doonline, false);
  gt_option_parser_add_option(op, optiononline);
  gt_option_is_development_option(optiononline);

  optioncmp = gt_option_new_bool("cmp","Compare results of offline and online "
                                 "searches",
                                 &arguments->docompare, false);
  gt_option_parser_add_option(op,optioncmp);
  gt_option_exclude(optiononline,optioncmp);

  option = gt_option_new_bool("s",
                              "Show alignments",
                              &arguments->showalignment, false);
  gt_option_parser_add_option(op, option);

  option = gt_option_new_verbose(&arguments->verbose);
  gt_option_parser_add_option(op, option);
  return op;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
testq %rdi, %rdi
je 0x2f3fe
movq %rdi, %rbx
callq 0xacb84
movq %rax, 0x8(%rbx)
callq 0xae154
movq %rax, (%rbx)
leaq 0x2bffa4(%rip), %rdi    # 0x2ef172
leaq 0x2bffd1(%rip), %rsi    # 0x2ef1a6
callq 0x97df5
movq %rax, %r14
leaq 0x2b70e8(%rip), %rsi    # 0x2e62cc
movq %rax, %rdi
callq 0x98288
movq (%rbx), %rdx
leaq 0x2f7852(%rip), %rdi    # 0x326a48
leaq 0x2bab3c(%rip), %rsi    # 0x2e9d39
callq 0x9ad7e
movq %r14, %rdi
movq %rax, %rsi
callq 0x97f31
leaq 0x30(%rbx), %rdx
leaq 0x2f7de0(%rip), %rdi    # 0x326ff8
leaq 0x2bffb4(%rip), %rsi    # 0x2ef1d3
pushq $0x1
popq %r15
movq %r15, %rcx
callq 0x9ac34
movq %r14, %rdi
movq %rax, %rsi
callq 0x97f31
leaq 0x38(%rbx), %rdx
leaq 0x340f19(%rip), %rdi    # 0x37015a
leaq 0x2bff9f(%rip), %rsi    # 0x2ef1e7
pushq $-0x3
popq %rcx
callq 0x9ac34
movq %r14, %rdi
movq %rax, %rsi
callq 0x97f31
leaq 0x40(%rbx), %rdx
leaq 0x2bff98(%rip), %rdi    # 0x2ef1fe
leaq 0x2bff9a(%rip), %rsi    # 0x2ef207
pushq $-0x5
popq %rcx
callq 0x9ac34
movq %r14, %rdi
movq %rax, %rsi
callq 0x97f31
leaq 0x48(%rbx), %rdx
leaq 0x2e8dd7(%rip), %rdi    # 0x318062
leaq 0x2bff8d(%rip), %rsi    # 0x2ef21f
pushq $-0x2
popq %rcx
callq 0x9ac34
movq %r14, %rdi
movq %rax, %rsi
callq 0x97f31
leaq 0x28(%rbx), %rdx
leaq 0x30343c(%rip), %rdi    # 0x3326ec
leaq 0x2bff84(%rip), %rsi    # 0x2ef23b
xorl %ecx, %ecx
movq %r15, %r8
callq 0x9ac58
movq %rax, %r15
movq %r14, %rdi
movq %rax, %rsi
callq 0x97f31
movq %r15, %rdi
callq 0x9ae37
movq 0x8(%rbx), %rdx
leaq 0x2ca91b(%rip), %rdi    # 0x2f9bfd
leaq 0x2baa0d(%rip), %rsi    # 0x2e9cf6
xorl %ecx, %ecx
callq 0x9ad12
movq %rax, %r15
movq %r14, %rdi
movq %rax, %rsi
callq 0x97f31
movq %r15, %rdi
callq 0x97db0
movq %rax, 0x10(%rbx)
movq 0x8(%rbx), %rdx
leaq 0x2be499(%rip), %rdi    # 0x2ed7ae
leaq 0x2baa00(%rip), %rsi    # 0x2e9d1c
xorl %ecx, %ecx
callq 0x9ad12
movq %rax, %r12
movq %r14, %rdi
movq %rax, %rsi
callq 0x97f31
movq %r12, %rdi
callq 0x97db0
movq %rax, 0x18(%rbx)
movq %r15, %rdi
movq %r12, %rsi
callq 0x9b38d
movq %r15, %rdi
movq %r12, %rsi
callq 0x9ae7a
leaq 0x23(%rbx), %rdx
leaq 0x2bfef3(%rip), %rdi    # 0x2ef251
leaq 0x2bfef3(%rip), %rsi    # 0x2ef258
xorl %ecx, %ecx
callq 0x9a997
movq %rax, %r15
movq %r14, %rdi
movq %rax, %rsi
callq 0x97f31
movq %r15, %rdi
callq 0x9b10a
leaq 0x24(%rbx), %rdx
leaq 0x2dba32(%rip), %rdi    # 0x30adbf
leaq 0x2bfedc(%rip), %rsi    # 0x2ef270
xorl %ecx, %ecx
callq 0x9a997
movq %rax, %r12
movq %r14, %rdi
movq %rax, %rsi
callq 0x97f31
movq %r15, %rdi
movq %r12, %rsi
callq 0x9b38d
leaq 0x22(%rbx), %rdx
leaq 0x2cc2aa(%rip), %rdi    # 0x2fb669
leaq 0x2bfed9(%rip), %rsi    # 0x2ef29f
xorl %ecx, %ecx
callq 0x9a997
movq %r14, %rdi
movq %rax, %rsi
callq 0x97f31
addq $0x21, %rbx
movq %rbx, %rdi
callq 0x9a9b6
movq %r14, %rdi
movq %rax, %rsi
callq 0x97f31
movq %r14, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
movq 0x408b63(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x2b5c04(%rip), %rsi    # 0x2e5013
leaq 0x2b6e56(%rip), %rdx    # 0x2e626c
leaq 0x2bfd36(%rip), %rcx    # 0x2ef153
leaq 0x2bfd16(%rip), %r8     # 0x2ef13a
pushq $0x35
popq %r9
xorl %eax, %eax
callq 0x17a50
callq 0x17390