// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/tools/gt_seq.c
// Function: gt_seq_option_parser_new
static GtOptionParser* gt_seq_option_parser_new(void *tool_arguments)
{
  SeqArguments *arguments = tool_arguments;
  GtOption *option, *option_recreate, *option_showfasta, *option_showseqnum,
           *option_width, *option_stat, *option_showseqnum_inputfile,
           *option_seqnum_from_0, *option_showseqlength;
  GtOptionParser *op;
  gt_assert(arguments);

  op = gt_option_parser_new("[option ...] sequence_file [...]",
                            "Parse the given sequence file(s) and construct "
                            "the corresponding index files.");

  /* -recreate */
  option_recreate = gt_option_new_bool("recreate", "recreate index files, even "
                                       "if they exist already",
                                       &arguments->recreate, false);
  gt_option_parser_add_option(op, option_recreate);

  /* -showfasta */
  option_showfasta = gt_option_new_bool("showfasta", "show all sequences (in "
                                        "FASTA format)", &arguments->showfasta,
                                        false);
  gt_option_parser_add_option(op, option_showfasta);

  /* -showseqnum */
#define GT_COMMENT_COUNTED_FROM_0\
        "(sequences are counted from 1 unless -seqnum_from_0 is specified)"
  option_showseqnum = gt_option_new_uword_min("showseqnum",
                      "show sequence with given number "
                      GT_COMMENT_COUNTED_FROM_0,
                      &arguments->showseqnum,
                      GT_UNDEF_UWORD, 0);
  gt_option_parser_add_option(op, option_showseqnum);

  option_showseqlength = gt_option_new_uword_min("showseqlength",
                      "show length of sequence with given number "
                      GT_COMMENT_COUNTED_FROM_0,
                      &arguments->showseqlength,
                      GT_UNDEF_UWORD, 0);
  gt_option_parser_add_option(op, option_showseqlength);

  /* -showseqnum_inputfile */
  option_showseqnum_inputfile = gt_option_new_filename("showseqnum_inputfile",
                                "show sequence with given numbers "
                                "specified line by line in given file "
                                GT_COMMENT_COUNTED_FROM_0,
                                arguments->showseqnum_inputfile);
  gt_option_parser_add_option(op, option_showseqnum_inputfile);

  /* -seqnum_from_0 */
  option_seqnum_from_0 = gt_option_new_bool("seqnum_from_0",
                        "for options -showseqnum and -showseqnum_inputfile: "
                        "count sequence numbers from 0 instead of 1",
                        &arguments->seqnum_from_0, false);
  gt_option_parser_add_option(op, option_seqnum_from_0);

  /* -gc-content */
  option = gt_option_new_bool("gc-content", "print GC-content (for DNA files)",
                              &arguments->gc_content, false);
  gt_option_parser_add_option(op, option);

  /* -stat */
  option_stat = gt_option_new_bool("stat", "show sequence statistics",
                                   &arguments->stat, false);
  gt_option_parser_add_option(op, option_stat);

  /* -seqlengthdistri */
  option = gt_option_new_bool("seqlengthdistri", "show sequence length "
                              "distribution", &arguments->seqlengthdistri,
                              false);
  gt_option_parser_add_option(op, option);

  /* -width */

  option_width = gt_option_new_width(&arguments->width);
  gt_option_parser_add_option(op, option_width);

  /* output file options */
  gt_output_file_info_register_options(arguments->ofi, op, &arguments->outfp);

  /* option implications */
  gt_option_imply_either_3(option_width, option_showfasta, option_showseqnum,
                           option_showseqnum_inputfile);
  gt_option_imply_either_3(option_seqnum_from_0, option_showseqnum,
                           option_showseqlength,
                           option_showseqnum_inputfile);

  /* option exclusions */
  gt_option_exclude(option_showfasta, option_stat);
  gt_option_exclude(option_showfasta, option_showseqnum);
  gt_option_exclude(option_showseqnum, option_stat);
  gt_option_exclude(option_showseqnum, option_showseqnum_inputfile);
  gt_option_exclude(option_showseqlength, option_stat);
  gt_option_exclude(option_showseqlength, option_showseqnum);
  gt_option_exclude(option_showseqlength, option_showseqnum_inputfile);

  /* set minimal arguments */
  gt_option_parser_set_min_args(op, 1);

  return op;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
testq %rdi, %rdi
je 0x45525
movq %rdi, %r14
leaq 0x2b2670(%rip), %rdi    # 0x2f7961
leaq 0x2b268a(%rip), %rsi    # 0x2f7982
callq 0x97df5
movq %rax, %rbx
leaq 0x319c22(%rip), %rdi    # 0x35ef29
leaq 0x2b26c2(%rip), %rsi    # 0x2f79d0
movq %r14, %rdx
xorl %ecx, %ecx
callq 0x9a997
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
leaq 0x1(%r14), %rdx
leaq 0x2b26d3(%rip), %rdi    # 0x2f7a01
leaq 0x2b26d6(%rip), %rsi    # 0x2f7a0b
xorl %ecx, %ecx
callq 0x9a997
movq %rax, 0x10(%rsp)
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
leaq 0x8(%r14), %rdx
leaq 0x2b26d9(%rip), %rdi    # 0x2f7a30
leaq 0x2b26dd(%rip), %rsi    # 0x2f7a3b
pushq $-0x1
popq %r12
movq %r12, %rcx
xorl %r8d, %r8d
callq 0x9ac58
movq %rax, %r15
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
leaq 0x10(%r14), %rdx
leaq 0x2b2717(%rip), %rdi    # 0x2f7a9d
leaq 0x2b271e(%rip), %rsi    # 0x2f7aab
movq %r12, %rcx
xorl %r8d, %r8d
callq 0x9ac58
movq %rax, 0x8(%rsp)
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
movq 0x20(%r14), %rdx
leaq 0x2b2764(%rip), %rdi    # 0x2f7b17
leaq 0x2b2772(%rip), %rsi    # 0x2f7b2c
callq 0x9ad51
movq %rax, %rbp
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
leaq 0x5(%r14), %rdx
leaq 0x2b27dc(%rip), %rdi    # 0x2f7bb4
leaq 0x2b27e3(%rip), %rsi    # 0x2f7bc2
xorl %ecx, %ecx
callq 0x9a997
movq %rax, (%rsp)
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
leaq 0x2(%r14), %rdx
leaq 0x2b2820(%rip), %rdi    # 0x2f7c20
leaq 0x2b2824(%rip), %rsi    # 0x2f7c2b
xorl %ecx, %ecx
callq 0x9a997
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
leaq 0x3(%r14), %rdx
leaq 0x334595(%rip), %rdi    # 0x3799b9
leaq 0x2b2821(%rip), %rsi    # 0x2f7c4c
xorl %ecx, %ecx
callq 0x9a997
movq %rax, %r12
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
leaq 0x4(%r14), %rdx
leaq 0x2ba189(%rip), %rdi    # 0x2ff5d4
leaq 0x2b2813(%rip), %rsi    # 0x2f7c65
xorl %ecx, %ecx
callq 0x9a997
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
leaq 0x18(%r14), %rdi
callq 0x9a9ce
movq %rax, %r13
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
movq 0x28(%r14), %rdi
addq $0x30, %r14
movq %rbx, %rsi
movq %r14, %rdx
callq 0x9b6d7
movq %r13, %rdi
movq 0x10(%rsp), %r14
movq %r14, %rsi
movq %r15, %rdx
movq %rbp, %rcx
callq 0x9b2af
movq (%rsp), %rdi
movq %r15, %rsi
movq 0x8(%rsp), %r13
movq %r13, %rdx
movq %rbp, %rcx
callq 0x9b2af
movq %r14, %rdi
movq %r12, %rsi
callq 0x9b38d
movq %r14, %rdi
movq %r15, %rsi
callq 0x9b38d
movq %r15, %rdi
movq %r12, %rsi
callq 0x9b38d
movq %r15, %rdi
movq %rbp, %rsi
callq 0x9b38d
movq %r13, %rdi
movq %r12, %rsi
callq 0x9b38d
movq %r13, %rdi
movq %r15, %rsi
callq 0x9b38d
movq %r13, %rdi
movq %rbp, %rsi
callq 0x9b38d
pushq $0x1
popq %rsi
movq %rbx, %rdi
callq 0x98be7
movq %rbx, %rax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x3f2a3c(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x29fadd(%rip), %rsi    # 0x2e5013
leaq 0x303116(%rip), %rdx    # 0x348653
leaq 0x2b2404(%rip), %rcx    # 0x2f7948
leaq 0x2b23ea(%rip), %r8     # 0x2f7935
pushq $0x43
popq %r9
xorl %eax, %eax
callq 0x17a50
callq 0x17390