// File: /workspace/github_c_makefile_star2_O0/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:
subq $0x58, %rsp
movq %rdi, 0x50(%rsp)
movq 0x50(%rsp), %rax
movq %rax, 0x48(%rsp)
cmpq $0x0, 0x48(%rsp)
jne 0x785a3
movq 0x5c3a2e(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x49da97(%rip), %rsi    # 0x516013
leaq 0x49ed01(%rip), %rdx    # 0x517284
leaq 0x4b4ee1(%rip), %rcx    # 0x52d46b
leaq 0x4b4d57(%rip), %r8     # 0x52d2e8
movl $0x57, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x785a5
leaq 0x4b4ede(%rip), %rdi    # 0x52d48a
leaq 0x4b4f02(%rip), %rsi    # 0x52d4b5
callq 0xf1420
movq %rax, 0x40(%rsp)
movq 0x40(%rsp), %rdi
leaq 0x49ed1b(%rip), %rsi    # 0x5172e4
callq 0xf1a10
movq 0x48(%rsp), %rax
movq (%rax), %rdx
leaq 0x4e07e2(%rip), %rdi    # 0x558dbf
leaq 0x4b4ef9(%rip), %rsi    # 0x52d4dd
callq 0xf6b00
movq %rax, 0x38(%rsp)
movq 0x40(%rsp), %rdi
movq 0x38(%rsp), %rsi
callq 0xf1600
movq 0x38(%rsp), %rdi
callq 0xf6ca0
movq 0x48(%rsp), %rdx
addq $0x48, %rdx
leaq 0x51aa91(%rip), %rdi    # 0x5930a8
leaq 0x4b4ef0(%rip), %rsi    # 0x52d50e
movq $-0x1, %rcx
callq 0xf6650
movq %rax, 0x38(%rsp)
movq 0x40(%rsp), %rdi
movq 0x38(%rsp), %rsi
callq 0xf1600
movq 0x48(%rsp), %rax
movq 0x10(%rax), %rdx
leaq 0x4b26fa(%rip), %rdi    # 0x52ad48
leaq 0x4a26fc(%rip), %rsi    # 0x51ad51
xorl %eax, %eax
movl %eax, %ecx
callq 0xf69f0
movq %rax, 0x18(%rsp)
movq 0x40(%rsp), %rdi
movq 0x18(%rsp), %rsi
callq 0xf1600
movq 0x18(%rsp), %rdi
callq 0xf13c0
movq %rax, %rcx
movq 0x48(%rsp), %rax
movq %rcx, 0x20(%rax)
movq 0x48(%rsp), %rax
movq 0x10(%rax), %rdx
leaq 0x4a61b6(%rip), %rdi    # 0x51e84e
leaq 0x4a26d8(%rip), %rsi    # 0x51ad77
xorl %eax, %eax
movl %eax, %ecx
callq 0xf69f0
movq %rax, 0x10(%rsp)
movq 0x40(%rsp), %rdi
movq 0x10(%rsp), %rsi
callq 0xf1600
movq 0x10(%rsp), %rdi
callq 0xf13c0
movq %rax, %rcx
movq 0x48(%rsp), %rax
movq %rcx, 0x28(%rax)
movq 0x18(%rsp), %rdi
movq 0x10(%rsp), %rsi
callq 0xf7320
movq 0x18(%rsp), %rdi
movq 0x10(%rsp), %rsi
callq 0xf6cf0
movq 0x48(%rsp), %rdx
addq $0x50, %rdx
leaq 0x4c0790(%rip), %rdi    # 0x538e90
leaq 0x4b4e55(%rip), %rsi    # 0x52d55c
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
callq 0xf6310
movq %rax, 0x8(%rsp)
movq 0x40(%rsp), %rdi
movq 0x8(%rsp), %rsi
callq 0xf1600
movq 0x8(%rsp), %rdi
callq 0xf7040
movq 0x48(%rsp), %rdx
addq $0x3a, %rdx
leaq 0x4a7ba2(%rip), %rdi    # 0x5202e1
leaq 0x4a7ba2(%rip), %rsi    # 0x5202e8
xorl %ecx, %ecx
callq 0xf5f20
movq %rax, 0x28(%rsp)
movq 0x40(%rsp), %rdi
movq 0x28(%rsp), %rsi
callq 0xf1600
movq 0x28(%rsp), %rdi
callq 0xf7040
movq 0x48(%rsp), %rdx
addq $0x3b, %rdx
leaq 0x4c3d24(%rip), %rdi    # 0x53c49f
leaq 0x4a263f(%rip), %rsi    # 0x51adc1
xorl %ecx, %ecx
callq 0xf5f20
movq %rax, 0x20(%rsp)
movq 0x40(%rsp), %rdi
movq 0x20(%rsp), %rsi
callq 0xf1600
movq 0x28(%rsp), %rdi
movq 0x20(%rsp), %rsi
callq 0xf7320
movq 0x20(%rsp), %rdi
callq 0xf7040
movq 0x48(%rsp), %rdx
addq $0x3c, %rdx
leaq 0x4b4deb(%rip), %rdi    # 0x52d5b1
leaq 0x4b4de7(%rip), %rsi    # 0x52d5b4
xorl %ecx, %ecx
callq 0xf5f20
movq %rax, 0x30(%rsp)
movq 0x40(%rsp), %rdi
movq 0x30(%rsp), %rsi
callq 0xf1600
movq 0x30(%rsp), %rdi
callq 0xf7040
movq 0x48(%rsp), %rdx
addq $0x3d, %rdx
leaq 0x4b4dd9(%rip), %rdi    # 0x52d5db
leaq 0x4b4dd6(%rip), %rsi    # 0x52d5df
xorl %ecx, %ecx
callq 0xf5f20
movq %rax, 0x38(%rsp)
movq 0x40(%rsp), %rdi
movq 0x38(%rsp), %rsi
callq 0xf1600
movq 0x48(%rsp), %rdx
addq $0x3e, %rdx
leaq 0x4b4dc9(%rip), %rdi    # 0x52d5fd
leaq 0x4b4dc6(%rip), %rsi    # 0x52d601
xorl %ecx, %ecx
callq 0xf5f20
movq %rax, 0x38(%rsp)
movq 0x40(%rsp), %rdi
movq 0x38(%rsp), %rsi
callq 0xf1600
movq 0x48(%rsp), %rdx
addq $0x41, %rdx
leaq 0x4e8465(%rip), %rdi    # 0x560ccb
leaq 0x4b4ddf(%rip), %rsi    # 0x52d64c
xorl %ecx, %ecx
callq 0xf5f20
movq %rax, (%rsp)
movq 0x40(%rsp), %rdi
movq (%rsp), %rsi
callq 0xf1600
movq 0x28(%rsp), %rdi
movq (%rsp), %rsi
callq 0xf7320
movq 0x20(%rsp), %rdi
movq (%rsp), %rsi
callq 0xf7320
movq 0x48(%rsp), %rdx
addq $0x58, %rdx
leaq 0x4b4de7(%rip), %rdi    # 0x52d699
leaq 0x4b4de7(%rip), %rsi    # 0x52d6a0
xorl %eax, %eax
movl %eax, %ecx
movl $0x1, %r8d
callq 0xf66b0
movq %rax, 0x38(%rsp)
movq 0x40(%rsp), %rdi
movq 0x38(%rsp), %rsi
callq 0xf1600
movq 0x48(%rsp), %rdx
addq $0x40, %rdx
leaq 0x4b4ddc(%rip), %rdi    # 0x52d6c8
leaq 0x4b4dda(%rip), %rsi    # 0x52d6cd
xorl %ecx, %ecx
callq 0xf5f20
movq %rax, 0x38(%rsp)
movq 0x40(%rsp), %rdi
movq 0x38(%rsp), %rsi
callq 0xf1600
movq 0x48(%rsp), %rdx
addq $0x3f, %rdx
leaq 0x4b4ddb(%rip), %rdi    # 0x52d6f9
leaq 0x4b4de2(%rip), %rsi    # 0x52d707
movl $0x1, %ecx
callq 0xf5f20
movq %rax, 0x38(%rsp)
movq 0x40(%rsp), %rdi
movq 0x38(%rsp), %rsi
callq 0xf1600
movq 0x48(%rsp), %rax
movq 0x18(%rax), %rdi
callq 0x11dee0
movq %rax, %rsi
movq 0x48(%rsp), %rax
movq 0x8(%rax), %rdx
leaq 0x4c531b(%rip), %rdi    # 0x53dc7f
callq 0xf6a50
movq %rax, 0x38(%rsp)
movq 0x40(%rsp), %rdi
movq 0x38(%rsp), %rsi
callq 0xf1600
movq 0x48(%rsp), %rdi
addq $0x38, %rdi
callq 0xf5f90
movq %rax, 0x38(%rsp)
movq 0x40(%rsp), %rdi
movq 0x38(%rsp), %rsi
callq 0xf1600
movq 0x40(%rsp), %rax
addq $0x58, %rsp
retq
nopl (%rax)