// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/tools/gt_tagerator.c
// Function: gt_tagerator_option_parser_new
static GtOptionParser* gt_tagerator_option_parser_new(void *tool_arguments)
{
  TageratorOptions *arguments = tool_arguments;
  GtOptionParser *op;
  GtOption *option, *optionrw, *optiononline, *optioncmp, *optionesaindex,
           *optionpckindex, *optionmaxdepth, *optionbest;

  gt_assert(arguments != NULL);
  op = gt_option_parser_new("[options] -q tagfile [-esa|-pck] indexname",
                         "Map short sequence tags in given index.");
  gt_option_parser_set_mail_address(op,"<kurtz@zbh.uni-hamburg.de>");
  option = gt_option_new_filename_array("q",
                                    "Specify files containing the short "
                                    "sequence tags",
                                    arguments->tagfiles);
  gt_option_parser_add_option(op, option);
  gt_option_is_mandatory(option);

  option = gt_option_new_word("e",
                           "Specify the allowed number of differences "
                           "(replacements/insertions/deletions)",
                           &arguments->userdefinedmaxdistance,
                           -1L);
  gt_option_parser_add_option(op, 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);

  optionmaxdepth = gt_option_new_int("maxdepth",
                                  "Use the data in the .pbt file only up to "
                                  "this depth (only relevant with option -pck)",
                                  &arguments->userdefinedmaxdepth,
                                  -1);
  gt_option_parser_add_option(op, optionmaxdepth);
  gt_option_is_development_option(optionmaxdepth);

  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);
  gt_option_is_development_option(optioncmp);

  optionrw = gt_option_new_bool("rw","Replace wildcard in tag by random char",
                             &arguments->replacewildcard, false);
  gt_option_parser_add_option(op, optionrw);
  gt_option_is_development_option(optionrw);

  option = gt_option_new_bool("nod","Do not compute direct matches",
                           &arguments->nofwdmatch, false);
  gt_option_parser_add_option(op, option);

  option = gt_option_new_bool("nop","Do not compute palindromic matches "
                           "(i.e. no reverse complemented matches.)",
                             &arguments->norcmatch, false);
  gt_option_parser_add_option(op, option);

  optionbest = gt_option_new_bool("best","Compute only best matches, i.e. only "
                                  "for smallest edit distance with matches",
                                  &arguments->best, false);
  gt_option_parser_add_option(op, optionbest);
  gt_option_exclude(optiononline,optionbest);
  gt_option_exclude(optioncmp,optionbest);

  option = gt_option_new_uword_min("maxocc",
                                   "specify max number of match-occurrences",
                                   &arguments->maxintervalwidth,0,1UL);
  gt_option_parser_add_option(op, option);

  option = gt_option_new_bool("skpp",
                           "Skip prefix of pattern (only in pdiff mode)",
                           &arguments->skpp, false);
  gt_option_parser_add_option(op, option);

  option = gt_option_new_bool("withwildcards","output matches containing "
                              "wildcard characters (e.g. N); only relevant for "
                              "approximate matching",
                              &arguments->nowildcards, true);
  gt_option_parser_add_option(op, option);

  option = gt_option_new_string_array("output",
                                      gt_str_get(arguments->outputhelp),
                                      arguments->outputspec);
  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 %r13
pushq %r12
pushq %rbx
testq %rdi, %rdi
je 0x5310d
movq %rdi, %rbx
leaq 0x2a947a(%rip), %rdi    # 0x2fc293
leaq 0x2a949e(%rip), %rsi    # 0x2fc2be
callq 0x97df5
movq %rax, %r14
leaq 0x29349d(%rip), %rsi    # 0x2e62cc
movq %rax, %rdi
callq 0x98288
movq (%rbx), %rdx
leaq 0x2d3c07(%rip), %rdi    # 0x326a48
leaq 0x2a949e(%rip), %rsi    # 0x2fc2e6
callq 0x9ad7e
movq %rax, %r15
movq %r14, %rdi
movq %rax, %rsi
callq 0x97f31
movq %r15, %rdi
callq 0x9ae37
leaq 0x48(%rbx), %rdx
leaq 0x2beda1(%rip), %rdi    # 0x311c0f
leaq 0x2a94a2(%rip), %rsi    # 0x2fc317
pushq $-0x1
popq %rcx
callq 0x9ac34
movq %r14, %rdi
movq %rax, %rsi
callq 0x97f31
movq 0x10(%rbx), %rdx
leaq 0x2a6d6a(%rip), %rdi    # 0x2f9bfd
leaq 0x296e5c(%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, 0x20(%rbx)
movq 0x10(%rbx), %rdx
leaq 0x29a8e8(%rip), %rdi    # 0x2ed7ae
leaq 0x296e4f(%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, 0x28(%rbx)
movq %r15, %rdi
movq %r12, %rsi
callq 0x9b38d
movq %r15, %rdi
movq %r12, %rsi
callq 0x9ae7a
leaq 0x50(%rbx), %rdx
leaq 0x2b4b4c(%rip), %rdi    # 0x307a5b
leaq 0x2a944f(%rip), %rsi    # 0x2fc365
pushq $-0x1
popq %rcx
callq 0x9ab66
movq %rax, %r15
movq %r14, %rdi
movq %rax, %rsi
callq 0x97f31
movq %r15, %rdi
callq 0x9b10a
leaq 0x3a(%rbx), %rdx
leaq 0x29c312(%rip), %rdi    # 0x2ef251
leaq 0x29c312(%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 0x3b(%rbx), %rdx
leaq 0x2b7e51(%rip), %rdi    # 0x30adbf
leaq 0x296df1(%rip), %rsi    # 0x2e9d66
xorl %ecx, %ecx
callq 0x9a997
movq %rax, %r12
movq %r14, %rdi
movq %rax, %rsi
callq 0x97f31
movq %r15, %rdi
movq %r12, %rsi
callq 0x9b38d
movq %r12, %rdi
callq 0x9b10a
leaq 0x3c(%rbx), %rdx
leaq 0x2a9412(%rip), %rdi    # 0x2fc3ba
leaq 0x2a940e(%rip), %rsi    # 0x2fc3bd
xorl %ecx, %ecx
callq 0x9a997
movq %rax, %r13
movq %r14, %rdi
movq %rax, %rsi
callq 0x97f31
movq %r13, %rdi
callq 0x9b10a
leaq 0x3d(%rbx), %rdx
leaq 0x2a940d(%rip), %rdi    # 0x2fc3e4
leaq 0x2a940a(%rip), %rsi    # 0x2fc3e8
xorl %ecx, %ecx
callq 0x9a997
movq %r14, %rdi
movq %rax, %rsi
callq 0x97f31
leaq 0x3e(%rbx), %rdx
leaq 0x2a940b(%rip), %rdi    # 0x2fc406
leaq 0x2a9408(%rip), %rsi    # 0x2fc40a
xorl %ecx, %ecx
callq 0x9a997
movq %r14, %rdi
movq %rax, %rsi
callq 0x97f31
leaq 0x41(%rbx), %rdx
leaq 0x30c779(%rip), %rdi    # 0x35f798
leaq 0x2a942f(%rip), %rsi    # 0x2fc455
xorl %ecx, %ecx
callq 0x9a997
movq %rax, %r13
movq %r14, %rdi
movq %rax, %rsi
callq 0x97f31
movq %r15, %rdi
movq %r13, %rsi
callq 0x9b38d
movq %r12, %rdi
movq %r13, %rsi
callq 0x9b38d
leaq 0x58(%rbx), %rdx
leaq 0x2a9446(%rip), %rdi    # 0x2fc4a2
leaq 0x2a9446(%rip), %rsi    # 0x2fc4a9
pushq $0x1
popq %r8
xorl %ecx, %ecx
callq 0x9ac58
movq %r14, %rdi
movq %rax, %rsi
callq 0x97f31
leaq 0x40(%rbx), %rdx
leaq 0x2a944d(%rip), %rdi    # 0x2fc4d1
leaq 0x2a944b(%rip), %rsi    # 0x2fc4d6
xorl %ecx, %ecx
callq 0x9a997
movq %r14, %rdi
movq %rax, %rsi
callq 0x97f31
leaq 0x3f(%rbx), %rdx
leaq 0x2a945a(%rip), %rdi    # 0x2fc502
leaq 0x2a9461(%rip), %rsi    # 0x2fc510
pushq $0x1
popq %rcx
callq 0x9a997
movq %r14, %rdi
movq %rax, %rsi
callq 0x97f31
movq 0x18(%rbx), %rdi
callq 0xad1fa
movq 0x8(%rbx), %rdx
leaq 0x2b9231(%rip), %rdi    # 0x30c307
movq %rax, %rsi
callq 0x9ad43
movq %r14, %rdi
movq %rax, %rsi
callq 0x97f31
addq $0x38, %rbx
movq %rbx, %rdi
callq 0x9a9b6
movq %r14, %rdi
movq %rax, %rsi
callq 0x97f31
movq %r14, %rax
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
movq 0x3e4e54(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x291ef5(%rip), %rsi    # 0x2e5013
leaq 0x293147(%rip), %rdx    # 0x2e626c
leaq 0x2a9148(%rip), %rcx    # 0x2fc274
leaq 0x2a8fbe(%rip), %r8     # 0x2fc0f1
pushq $0x57
popq %r9
xorl %eax, %eax
callq 0x17a50
callq 0x17390