// File: /workspace/github_c_makefile_star2_O3/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 0xcdce2
movq %rdi, %rbx
leaq 0x28e959(%rip), %rdi    # 0x35c33d
leaq 0x28e97d(%rip), %rsi    # 0x35c368
callq 0x107bfe
movq %rax, %r14
leaq 0x2788d2(%rip), %rsi    # 0x3462cc
movq %rax, %rdi
callq 0x107e5c
movq (%rbx), %rdx
leaq 0x2b8c3c(%rip), %rdi    # 0x386648
leaq 0x28e97d(%rip), %rsi    # 0x35c390
callq 0x10a7df
movq %rax, %r15
movq %r14, %rdi
movq %rax, %rsi
callq 0x107cc0
movq %r15, %rdi
callq 0x10a87b
leaq 0x48(%rbx), %rdx
leaq 0x2a3ec6(%rip), %rdi    # 0x3718ff
leaq 0x28e981(%rip), %rsi    # 0x35c3c1
movq $-0x1, %rcx
callq 0x10a5ad
movq %r14, %rdi
movq %rax, %rsi
callq 0x107cc0
movq 0x10(%rbx), %rdx
leaq 0x28c1c3(%rip), %rdi    # 0x359c25
leaq 0x27c28d(%rip), %rsi    # 0x349cf6
xorl %ecx, %ecx
callq 0x10a770
movq %rax, %r15
movq %r14, %rdi
movq %rax, %rsi
callq 0x107cc0
movq %r15, %rdi
callq 0x107bec
movq %rax, 0x20(%rbx)
movq 0x10(%rbx), %rdx
leaq 0x27fd19(%rip), %rdi    # 0x34d7ae
leaq 0x27c280(%rip), %rsi    # 0x349d1c
xorl %ecx, %ecx
callq 0x10a770
movq %rax, %r12
movq %r14, %rdi
movq %rax, %rsi
callq 0x107cc0
movq %r12, %rdi
callq 0x107bec
movq %rax, 0x28(%rbx)
movq %r15, %rdi
movq %r12, %rsi
callq 0x10ab96
movq %r15, %rdi
movq %r12, %rsi
callq 0x10a88b
leaq 0x50(%rbx), %rdx
leaq 0x29a01e(%rip), %rdi    # 0x367afc
leaq 0x28e92a(%rip), %rsi    # 0x35c40f
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
callq 0x10a44d
movq %rax, %r15
movq %r14, %rdi
movq %rax, %rsi
callq 0x107cc0
movq %r15, %rdi
callq 0x10a9d4
leaq 0x3a(%rbx), %rdx
leaq 0x281741(%rip), %rdi    # 0x34f251
leaq 0x281741(%rip), %rsi    # 0x34f258
xorl %ecx, %ecx
callq 0x10a235
movq %rax, %r15
movq %r14, %rdi
movq %rax, %rsi
callq 0x107cc0
movq %r15, %rdi
callq 0x10a9d4
leaq 0x3b(%rbx), %rdx
leaq 0x29d320(%rip), %rdi    # 0x36ae5f
leaq 0x27c220(%rip), %rsi    # 0x349d66
xorl %ecx, %ecx
callq 0x10a235
movq %rax, %r12
movq %r14, %rdi
movq %rax, %rsi
callq 0x107cc0
movq %r15, %rdi
movq %r12, %rsi
callq 0x10ab96
movq %r12, %rdi
callq 0x10a9d4
leaq 0x3c(%rbx), %rdx
leaq 0x28e8eb(%rip), %rdi    # 0x35c464
leaq 0x28e8e7(%rip), %rsi    # 0x35c467
xorl %ecx, %ecx
callq 0x10a235
movq %rax, %r13
movq %r14, %rdi
movq %rax, %rsi
callq 0x107cc0
movq %r13, %rdi
callq 0x10a9d4
leaq 0x3d(%rbx), %rdx
leaq 0x28e8e6(%rip), %rdi    # 0x35c48e
leaq 0x28e8e3(%rip), %rsi    # 0x35c492
xorl %ecx, %ecx
callq 0x10a235
movq %r14, %rdi
movq %rax, %rsi
callq 0x107cc0
leaq 0x3e(%rbx), %rdx
leaq 0x28e8e4(%rip), %rdi    # 0x35c4b0
leaq 0x28e8e1(%rip), %rsi    # 0x35c4b4
xorl %ecx, %ecx
callq 0x10a235
movq %r14, %rdi
movq %rax, %rsi
callq 0x107cc0
leaq 0x41(%rbx), %rdx
leaq 0x2f1758(%rip), %rdi    # 0x3bf348
leaq 0x28e908(%rip), %rsi    # 0x35c4ff
xorl %ecx, %ecx
callq 0x10a235
movq %rax, %r13
movq %r14, %rdi
movq %rax, %rsi
callq 0x107cc0
movq %r15, %rdi
movq %r13, %rsi
callq 0x10ab96
movq %r12, %rdi
movq %r13, %rsi
callq 0x10ab96
leaq 0x58(%rbx), %rdx
leaq 0x28e91f(%rip), %rdi    # 0x35c54c
leaq 0x28e91f(%rip), %rsi    # 0x35c553
movl $0x1, %r8d
xorl %ecx, %ecx
callq 0x10a5d1
movq %r14, %rdi
movq %rax, %rsi
callq 0x107cc0
leaq 0x40(%rbx), %rdx
leaq 0x28e924(%rip), %rdi    # 0x35c57b
leaq 0x28e922(%rip), %rsi    # 0x35c580
xorl %ecx, %ecx
callq 0x10a235
movq %r14, %rdi
movq %rax, %rsi
callq 0x107cc0
leaq 0x3f(%rbx), %rdx
leaq 0x28e931(%rip), %rdi    # 0x35c5ac
leaq 0x28e938(%rip), %rsi    # 0x35c5ba
movl $0x1, %ecx
callq 0x10a235
movq %r14, %rdi
movq %rax, %rsi
callq 0x107cc0
movq 0x18(%rbx), %rdi
callq 0x11b0a1
movq 0x8(%rbx), %rdx
leaq 0x29e37c(%rip), %rdi    # 0x36c027
movq %rax, %rsi
callq 0x10a7a1
movq %r14, %rdi
movq %rax, %rsi
callq 0x107cc0
addq $0x38, %rbx
movq %rbx, %rdi
callq 0x10a257
movq %r14, %rdi
movq %rax, %rsi
callq 0x107cc0
movq %r14, %rax
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
callq 0x2141f