// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/tools/gt_sain.c
// Function: gt_sain_option_parser_new
static GtOptionParser *gt_sain_option_parser_new(void *tool_arguments)
{
  GtSainArguments *arguments = tool_arguments;
  GtOptionParser *op;
  GtOption *option, *optionesq, *optionfile, *optionmmap,
           *optionfasta, *optiondnaalphabet, *optionproteinalphabet,
           *optionlcp, *optionlcpkasai, *optionsmap, *optiontistabout;

  gt_assert(arguments != NULL);

  /* init */
  op = gt_option_parser_new("[option ...] [file]", /* XXX */
                            "Compute suffix array using induced "
                            "suffix sorting.");
  gt_option_parser_set_mail_address(op,"<kurtz@zbh.uni-hamburg.de>");

  /* -esq */
  optionesq = gt_option_new_string("esq", "specify encseq file",
                             arguments->encseqfile, NULL);
  gt_option_parser_add_option(op, optionesq);

  /* -dir */
  gt_encseq_options_add_readmode_option(op, arguments->dir);

  /* -lcp */
  optionlcp = gt_option_new_bool("lcp", "output lcp table",
                                 &arguments->outlcptab, false);
  gt_option_parser_add_option(op, optionlcp);

  /* -kasai */
  optionlcpkasai = gt_option_new_bool("kasai", "use kasai algorithm to compute "
                                      "lcp table",
                                      &arguments->lcpkasai, false);
  gt_option_parser_add_option(op, optionlcpkasai);

  /* -file */
  optionfile = gt_option_new_string("file", "specify filename",
                                   arguments->plainseqfile, NULL);
  gt_option_parser_add_option(op, optionfile);

  /* -fasta */
  optionfasta = gt_option_new_string("fasta","fasta input",
                                    arguments->fastafile, NULL);
  gt_option_parser_add_option(op, optionfasta);

  /* -dna */
  optiondnaalphabet = gt_option_new_bool("dna","use DNA alphabet",
                                         &arguments->dnaalphabet, false);
  gt_option_parser_add_option(op, optiondnaalphabet);

  /* -protein */
  optionproteinalphabet = gt_option_new_bool("protein","use protein alphabet",
                                             &arguments->proteinalphabet,false);
  gt_option_parser_add_option(op, optionproteinalphabet);

  /* -smap */
  optionsmap = gt_option_new_string("smap","specify symbol map file",
                                    arguments->smap, NULL);
  gt_option_parser_add_option(op, optionsmap);

  /* -icheck */
  option = gt_option_new_bool("icheck",
                              "intermediate check of all sorted arrays",
                              &arguments->icheck, false);
  gt_option_parser_add_option(op, option);

  /* -mmap */
  optionmmap = gt_option_new_bool("mmap",
                                  "use mmap to map the input file "
                                  "(requires option -file)",
                                  &arguments->dommap, false);
  gt_option_parser_add_option(op, optionmmap);

  /* -fcheck */
  option = gt_option_new_bool("fcheck", "final check of suffix array",
                              &arguments->fcheck, false);
  gt_option_parser_add_option(op, option);

  /* -suf */
  option = gt_option_new_bool("suf","output suffix array (table suftab)",
                              &arguments->suftabout, false);
  gt_option_parser_add_option(op, option);

  /* -tis */
  optiontistabout
    = gt_option_new_bool("tis","output transformed input sequence",
                         &arguments->tistabout, false);
  gt_option_parser_add_option(op, optiontistabout);

  /* -v */
  option = gt_option_new_verbose(&arguments->verbose);
  gt_option_parser_add_option(op, option);

  gt_option_exclude(optionesq,optionfile);
  gt_option_exclude(optionesq, optionfasta);
  gt_option_exclude(optionfile, optionfasta);
  gt_option_exclude(optionfasta, optionmmap);
  gt_option_exclude(optiondnaalphabet,optionproteinalphabet);
  gt_option_exclude(optiondnaalphabet,optionsmap);
  gt_option_exclude(optionproteinalphabet,optionsmap);
  gt_option_imply(optiondnaalphabet,optionfasta);
  gt_option_imply(optionlcpkasai,optionlcp);
  gt_option_imply(optionproteinalphabet,optionfasta);
  gt_option_imply(optionsmap,optionfasta);
  gt_option_imply_either_2(optiontistabout,optionfasta,optionfile);
  return op;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x38, %rsp
testq %rdi, %rdi
je 0x4162c
movq %rdi, %r14
leaq 0x2a9363(%rip), %rdi    # 0x2ea6a1
leaq 0x2b454d(%rip), %rsi    # 0x2f5892
callq 0x97df5
movq %rax, %rbx
leaq 0x2a4f78(%rip), %rsi    # 0x2e62cc
movq %rax, %rdi
callq 0x98288
movq 0x10(%r14), %rdx
leaq 0x2b81af(%rip), %rdi    # 0x2f9516
leaq 0x2b4557(%rip), %rsi    # 0x2f58c5
xorl %ecx, %ecx
callq 0x9ad12
movq %rax, %rbp
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
movq 0x28(%r14), %rsi
movq %rbx, %rdi
callq 0x88fcd
leaq 0x2(%r14), %rdx
leaq 0x315584(%rip), %rdi    # 0x35691e
leaq 0x2b4538(%rip), %rsi    # 0x2f58d9
xorl %ecx, %ecx
callq 0x9a997
movq %rax, 0x30(%rsp)
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
leaq 0x3(%r14), %rdx
leaq 0x316cf6(%rip), %rdi    # 0x3580b9
leaq 0x2b4520(%rip), %rsi    # 0x2f58ea
xorl %ecx, %ecx
callq 0x9a997
movq %rax, 0x28(%rsp)
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
movq 0x18(%r14), %rdx
leaq 0x2a84c0(%rip), %rdi    # 0x2e98ac
leaq 0x2b4520(%rip), %rsi    # 0x2f5913
xorl %ecx, %ecx
callq 0x9ad12
movq %rax, 0x8(%rsp)
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
movq 0x20(%r14), %rdx
leaq 0x2d8a49(%rip), %rdi    # 0x319e5e
leaq 0x2b4508(%rip), %rsi    # 0x2f5924
xorl %ecx, %ecx
callq 0x9ad12
movq %rax, %r15
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
leaq 0x6(%r14), %rdx
leaq 0x2aecae(%rip), %rdi    # 0x2f00ea
leaq 0x2b44ed(%rip), %rsi    # 0x2f5930
xorl %ecx, %ecx
callq 0x9a997
movq %rax, 0x20(%rsp)
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
leaq 0x7(%r14), %rdx
leaq 0x2ae754(%rip), %rdi    # 0x2efbb9
leaq 0x2b44d5(%rip), %rsi    # 0x2f5941
xorl %ecx, %ecx
callq 0x9a997
movq %rax, 0x18(%rsp)
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
movq 0x30(%r14), %rdx
leaq 0x2c4257(%rip), %rdi    # 0x3056e5
leaq 0x2b44c1(%rip), %rsi    # 0x2f5956
xorl %ecx, %ecx
callq 0x9ad12
movq %rax, %r13
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
leaq 0x2b44bd(%rip), %rdi    # 0x2f596e
leaq 0x2b44bd(%rip), %rsi    # 0x2f5975
movq %r14, %rdx
xorl %ecx, %ecx
callq 0x9a997
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
leaq 0x5(%r14), %rdx
leaq 0x2d31c7(%rip), %rdi    # 0x31469f
leaq 0x2b44be(%rip), %rsi    # 0x2f599d
xorl %ecx, %ecx
callq 0x9a997
movq %rax, 0x10(%rsp)
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
leaq 0x1(%r14), %rdx
leaq 0x2b8330(%rip), %rdi    # 0x2f9831
leaq 0x2b44cc(%rip), %rsi    # 0x2f59d4
xorl %ecx, %ecx
callq 0x9a997
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
leaq 0x8(%r14), %rdx
leaq 0x2e6049(%rip), %rdi    # 0x32756e
leaq 0x2b44c4(%rip), %rsi    # 0x2f59f0
xorl %ecx, %ecx
callq 0x9a997
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
leaq 0x9(%r14), %rdx
leaq 0x2b45ac(%rip), %rdi    # 0x2f5af5
leaq 0x2b44c3(%rip), %rsi    # 0x2f5a13
xorl %ecx, %ecx
callq 0x9a997
movq %rax, %r12
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
addq $0x4, %r14
movq %r14, %rdi
callq 0x9a9b6
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
movq %rbp, %rdi
movq 0x8(%rsp), %r14
movq %r14, %rsi
callq 0x9b38d
movq %rbp, %rdi
movq %r15, %rsi
callq 0x9b38d
movq %r14, %rdi
movq %r15, %rsi
callq 0x9b38d
movq %r15, %rdi
movq 0x10(%rsp), %rsi
callq 0x9b38d
movq 0x20(%rsp), %rbp
movq %rbp, %rdi
movq 0x18(%rsp), %r14
movq %r14, %rsi
callq 0x9b38d
movq %rbp, %rdi
movq %r13, %rsi
callq 0x9b38d
movq %r14, %rdi
movq %r13, %rsi
callq 0x9b38d
movq %rbp, %rdi
movq %r15, %rsi
callq 0x9b14d
movq 0x28(%rsp), %rdi
movq 0x30(%rsp), %rsi
callq 0x9b14d
movq %r14, %rdi
movq %r15, %rsi
callq 0x9b14d
movq %r13, %rdi
movq %r15, %rsi
callq 0x9b14d
movq %r12, %rdi
movq %r15, %rsi
movq 0x8(%rsp), %rdx
callq 0x9b1ed
movq %rbx, %rax
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x3f6935(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x2a39d6(%rip), %rsi    # 0x2e5013
leaq 0x2a4c28(%rip), %rdx    # 0x2e626c
leaq 0x2b422d(%rip), %rcx    # 0x2f5878
leaq 0x2b420e(%rip), %r8     # 0x2f5860
pushq $0x4c
popq %r9
xorl %eax, %eax
callq 0x17a50
callq 0x17390