// File: /workspace/github_c_makefile_star2_O0/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:
subq $0x78, %rsp
movq %rdi, 0x70(%rsp)
movq 0x70(%rsp), %rax
movq %rax, 0x68(%rsp)
cmpq $0x0, 0x68(%rsp)
jne 0x5ac43
movq 0x5e138e(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x4bb3f7(%rip), %rsi    # 0x516013
leaq 0x4bc661(%rip), %rdx    # 0x517284
leaq 0x4cbcfa(%rip), %rcx    # 0x526924
leaq 0x4cbcdf(%rip), %r8     # 0x526910
movl $0x4c, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x5ac45
leaq 0x4c0aae(%rip), %rdi    # 0x51b6fa
leaq 0x4cbceb(%rip), %rsi    # 0x52693e
callq 0xf1420
movq %rax, 0x60(%rsp)
movq 0x60(%rsp), %rdi
leaq 0x4bc67b(%rip), %rsi    # 0x5172e4
callq 0xf1a10
movq 0x68(%rsp), %rax
movq 0x10(%rax), %rdx
leaq 0x4cf9d6(%rip), %rdi    # 0x52a654
leaq 0x4cbcec(%rip), %rsi    # 0x526971
xorl %eax, %eax
movl %eax, %ecx
callq 0xf69f0
movq %rax, 0x50(%rsp)
movq 0x60(%rsp), %rdi
movq 0x50(%rsp), %rsi
callq 0xf1600
movq 0x60(%rsp), %rdi
movq 0x68(%rsp), %rax
movq 0x28(%rax), %rsi
callq 0xd73c0
movq 0x68(%rsp), %rdx
addq $0x2, %rdx
leaq 0x52e64e(%rip), %rdi    # 0x589313
leaq 0x4cbcb9(%rip), %rsi    # 0x526985
xorl %ecx, %ecx
callq 0xf5f20
movq %rax, 0x20(%rsp)
movq 0x60(%rsp), %rdi
movq 0x20(%rsp), %rsi
callq 0xf1600
movq 0x68(%rsp), %rdx
addq $0x3, %rdx
leaq 0x52fed3(%rip), %rdi    # 0x58abca
leaq 0x4cbc98(%rip), %rsi    # 0x526996
xorl %ecx, %ecx
callq 0xf5f20
movq %rax, 0x18(%rsp)
movq 0x60(%rsp), %rdi
movq 0x18(%rsp), %rsi
callq 0xf1600
movq 0x68(%rsp), %rax
movq 0x18(%rax), %rdx
leaq 0x4bfbdb(%rip), %rdi    # 0x51a904
leaq 0x4cbc8f(%rip), %rsi    # 0x5269bf
xorl %eax, %eax
movl %eax, %ecx
callq 0xf69f0
movq %rax, 0x48(%rsp)
movq 0x60(%rsp), %rdi
movq 0x48(%rsp), %rsi
callq 0xf1600
movq 0x68(%rsp), %rax
movq 0x20(%rax), %rdx
leaq 0x4f111b(%rip), %rdi    # 0x54be78
leaq 0x4cbc6c(%rip), %rsi    # 0x5269d0
xorl %eax, %eax
movl %eax, %ecx
callq 0xf69f0
movq %rax, 0x38(%rsp)
movq 0x60(%rsp), %rdi
movq 0x38(%rsp), %rsi
callq 0xf1600
movq 0x68(%rsp), %rdx
addq $0x6, %rdx
leaq 0x4c63b1(%rip), %rdi    # 0x521142
leaq 0x4cbc44(%rip), %rsi    # 0x5269dc
xorl %ecx, %ecx
callq 0xf5f20
movq %rax, 0x30(%rsp)
movq 0x60(%rsp), %rdi
movq 0x30(%rsp), %rsi
callq 0xf1600
movq 0x68(%rsp), %rdx
addq $0x7, %rdx
leaq 0x4c5e4e(%rip), %rdi    # 0x520c11
leaq 0x4cbc23(%rip), %rsi    # 0x5269ed
xorl %ecx, %ecx
callq 0xf5f20
movq %rax, 0x28(%rsp)
movq 0x60(%rsp), %rdi
movq 0x28(%rsp), %rsi
callq 0xf1600
movq 0x68(%rsp), %rax
movq 0x30(%rax), %rdx
leaq 0x4dbc72(%rip), %rdi    # 0x536a67
leaq 0x4cbc06(%rip), %rsi    # 0x526a02
xorl %eax, %eax
movl %eax, %ecx
callq 0xf69f0
movq %rax, 0x10(%rsp)
movq 0x60(%rsp), %rdi
movq 0x10(%rsp), %rsi
callq 0xf1600
movq 0x68(%rsp), %rdx
leaq 0x4cbbf5(%rip), %rdi    # 0x526a1a
leaq 0x4cbbf5(%rip), %rsi    # 0x526a21
xorl %ecx, %ecx
callq 0xf5f20
movq %rax, 0x58(%rsp)
movq 0x60(%rsp), %rdi
movq 0x58(%rsp), %rsi
callq 0xf1600
movq 0x68(%rsp), %rdx
addq $0x5, %rdx
leaq 0x4eb767(%rip), %rdi    # 0x5465be
leaq 0x4cbbeb(%rip), %rsi    # 0x526a49
xorl %ecx, %ecx
callq 0xf5f20
movq %rax, 0x40(%rsp)
movq 0x60(%rsp), %rdi
movq 0x40(%rsp), %rsi
callq 0xf1600
movq 0x68(%rsp), %rdx
addq $0x1, %rdx
leaq 0x4cfae6(%rip), %rdi    # 0x52a96f
leaq 0x4cbbf0(%rip), %rsi    # 0x526a80
xorl %ecx, %ecx
callq 0xf5f20
movq %rax, 0x58(%rsp)
movq 0x60(%rsp), %rdi
movq 0x58(%rsp), %rsi
callq 0xf1600
movq 0x68(%rsp), %rdx
addq $0x8, %rdx
leaq 0x4fea37(%rip), %rdi    # 0x5598f2
leaq 0x4cbbda(%rip), %rsi    # 0x526a9c
xorl %ecx, %ecx
callq 0xf5f20
movq %rax, 0x58(%rsp)
movq 0x60(%rsp), %rdi
movq 0x58(%rsp), %rsi
callq 0xf1600
movq 0x68(%rsp), %rdx
addq $0x9, %rdx
leaq 0x4cbcb4(%rip), %rdi    # 0x526ba1
leaq 0x4cbbcb(%rip), %rsi    # 0x526abf
xorl %ecx, %ecx
callq 0xf5f20
movq %rax, 0x8(%rsp)
movq 0x60(%rsp), %rdi
movq 0x8(%rsp), %rsi
callq 0xf1600
movq 0x68(%rsp), %rdi
addq $0x4, %rdi
callq 0xf5f90
movq %rax, 0x58(%rsp)
movq 0x60(%rsp), %rdi
movq 0x58(%rsp), %rsi
callq 0xf1600
movq 0x50(%rsp), %rdi
movq 0x48(%rsp), %rsi
callq 0xf7320
movq 0x50(%rsp), %rdi
movq 0x38(%rsp), %rsi
callq 0xf7320
movq 0x48(%rsp), %rdi
movq 0x38(%rsp), %rsi
callq 0xf7320
movq 0x38(%rsp), %rdi
movq 0x40(%rsp), %rsi
callq 0xf7320
movq 0x30(%rsp), %rdi
movq 0x28(%rsp), %rsi
callq 0xf7320
movq 0x30(%rsp), %rdi
movq 0x10(%rsp), %rsi
callq 0xf7320
movq 0x28(%rsp), %rdi
movq 0x10(%rsp), %rsi
callq 0xf7320
movq 0x30(%rsp), %rdi
movq 0x38(%rsp), %rsi
callq 0xf7090
movq 0x18(%rsp), %rdi
movq 0x20(%rsp), %rsi
callq 0xf7090
movq 0x28(%rsp), %rdi
movq 0x38(%rsp), %rsi
callq 0xf7090
movq 0x10(%rsp), %rdi
movq 0x38(%rsp), %rsi
callq 0xf7090
movq 0x8(%rsp), %rdi
movq 0x38(%rsp), %rsi
movq 0x48(%rsp), %rdx
callq 0xf7150
movq 0x60(%rsp), %rax
addq $0x78, %rsp
retq
nopw %cs:(%rax,%rax)