// File: /workspace/github_c_makefile_star2_O1/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 0xd0236
movq %rdi, %rbx
leaq 0x2954a5(%rip), %rdi    # 0x3653dd
leaq 0x2954c9(%rip), %rsi    # 0x365408
callq 0x10cc4e
movq %rax, %r14
leaq 0x27f37e(%rip), %rsi    # 0x34f2cc
movq %rax, %rdi
callq 0x10ceab
movq (%rbx), %rdx
leaq 0x2bfac8(%rip), %rdi    # 0x38fa28
leaq 0x2954c9(%rip), %rsi    # 0x365430
callq 0x10f9f6
movq %rax, %r15
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
movq %r15, %rdi
callq 0x10fa96
leaq 0x48(%rbx), %rdx
leaq 0x2aabf2(%rip), %rdi    # 0x37ab7f
leaq 0x2954cd(%rip), %rsi    # 0x365461
movq $-0x1, %rcx
callq 0x10f7c9
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
movq 0x10(%rbx), %rdx
leaq 0x292ccc(%rip), %rdi    # 0x362c82
leaq 0x282d49(%rip), %rsi    # 0x352d06
xorl %ecx, %ecx
callq 0x10f987
movq %rax, %r15
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
movq %r15, %rdi
callq 0x10cc3c
movq %rax, 0x20(%rbx)
movq 0x10(%rbx), %rdx
leaq 0x2867f5(%rip), %rdi    # 0x3567de
leaq 0x282d3c(%rip), %rsi    # 0x352d2c
xorl %ecx, %ecx
callq 0x10f987
movq %rax, %r12
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
movq %r12, %rdi
callq 0x10cc3c
movq %rax, 0x28(%rbx)
movq %r15, %rdi
movq %r12, %rsi
callq 0x10fd9f
movq %r15, %rdi
movq %r12, %rsi
callq 0x10faa6
leaq 0x50(%rbx), %rdx
leaq 0x2a0d01(%rip), %rdi    # 0x370d33
leaq 0x295476(%rip), %rsi    # 0x3654af
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
callq 0x10f669
movq %rax, %r15
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
movq %r15, %rdi
callq 0x10fbef
leaq 0x3a(%rbx), %rdx
leaq 0x28821d(%rip), %rdi    # 0x358281
leaq 0x28821d(%rip), %rsi    # 0x358288
xorl %ecx, %ecx
callq 0x10f451
movq %rax, %r15
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
movq %r15, %rdi
callq 0x10fbef
leaq 0x3b(%rbx), %rdx
leaq 0x2a401c(%rip), %rdi    # 0x3740af
leaq 0x282cdc(%rip), %rsi    # 0x352d76
xorl %ecx, %ecx
callq 0x10f451
movq %rax, %r12
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
movq %r15, %rdi
movq %r12, %rsi
callq 0x10fd9f
movq %r12, %rdi
callq 0x10fbef
leaq 0x3c(%rbx), %rdx
leaq 0x295437(%rip), %rdi    # 0x365504
leaq 0x295433(%rip), %rsi    # 0x365507
xorl %ecx, %ecx
callq 0x10f451
movq %rax, %r13
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
movq %r13, %rdi
callq 0x10fbef
leaq 0x3d(%rbx), %rdx
leaq 0x295432(%rip), %rdi    # 0x36552e
leaq 0x29542f(%rip), %rsi    # 0x365532
xorl %ecx, %ecx
callq 0x10f451
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
leaq 0x3e(%rbx), %rdx
leaq 0x295430(%rip), %rdi    # 0x365550
leaq 0x29542d(%rip), %rsi    # 0x365554
xorl %ecx, %ecx
callq 0x10f451
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
leaq 0x41(%rbx), %rdx
leaq 0x2f8884(%rip), %rdi    # 0x3c89c8
leaq 0x295454(%rip), %rsi    # 0x36559f
xorl %ecx, %ecx
callq 0x10f451
movq %rax, %r13
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
movq %r15, %rdi
movq %r13, %rsi
callq 0x10fd9f
movq %r12, %rdi
movq %r13, %rsi
callq 0x10fd9f
leaq 0x58(%rbx), %rdx
leaq 0x29546b(%rip), %rdi    # 0x3655ec
leaq 0x29546b(%rip), %rsi    # 0x3655f3
movl $0x1, %r8d
xorl %ecx, %ecx
callq 0x10f7ed
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
leaq 0x40(%rbx), %rdx
leaq 0x295470(%rip), %rdi    # 0x36561b
leaq 0x29546e(%rip), %rsi    # 0x365620
xorl %ecx, %ecx
callq 0x10f451
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
leaq 0x3f(%rbx), %rdx
leaq 0x29547d(%rip), %rdi    # 0x36564c
leaq 0x295484(%rip), %rsi    # 0x36565a
movl $0x1, %ecx
callq 0x10f451
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
movq 0x18(%rbx), %rdi
callq 0x120d23
movq 0x8(%rbx), %rdx
leaq 0x2a5078(%rip), %rdi    # 0x375277
movq %rax, %rsi
callq 0x10f9b8
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
addq $0x38, %rbx
movq %rbx, %rdi
callq 0x10f473
movq %r14, %rdi
movq %rax, %rsi
callq 0x10cd10
movq %r14, %rax
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
callq 0x21854