// File: /workspace/github_c_makefile_star2_O3/genometools[P]genometools/src/tools/gt_orffinder.c
// Function: gt_orffinder_option_parser_new
static GtOptionParser* gt_orffinder_option_parser_new(void *tool_arguments)
{
  GtOrffinderArguments *arguments = tool_arguments;
  GtOptionParser *op;
  GtOption *option, *optiontypes;
  gt_assert(arguments);

  /* init */
  op = gt_option_parser_new("[option ...] [indexname] [GFF3_file ...]",
                            "Identifies ORFs (open reading frames) in "
                            "sequences.");

  /* types */
  optiontypes = gt_option_new_string_array("types",
                                           "Specify regions which should be "
                                           "searched for open reading frames,\n"
                                           "e.g. 'LTR_retrotransposon'",
                                           arguments->types);
  gt_option_parser_add_option(op, optiontypes);

  /* -allorfs */
  option = gt_option_new_bool("allorfs", "search for all ORFs "
                              "instead of only the longest",
                              &arguments->allorfs, false);
  gt_option_parser_add_option(op, option);

  /* -min */
  option = gt_option_new_uint_min("min", "minimum length of ORF",
                                  &arguments->min, 30, 30);
  gt_option_parser_add_option(op, option);

  /* -max */
  option = gt_option_new_uint_max("max", "maximum length of ORF",
                                  &arguments->max, 10000, 1000000);
  gt_option_parser_add_option(op, option);

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

  gt_output_file_info_register_options(arguments->ofi, op, &arguments->outfp);

  /* region mapping and sequence source options */

  gt_seqid2file_register_options_ext(op, arguments->s2fi, false, false);

  return op;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
testq %rdi, %rdi
je 0xb16b9
movq %rdi, %rbx
leaq 0x29fc8f(%rip), %rdi    # 0x35125b
leaq 0x29fcb1(%rip), %rsi    # 0x351284
callq 0x107bfe
movq %rax, %r14
movq 0x10(%rbx), %rdx
leaq 0x2b1810(%rip), %rdi    # 0x362df6
leaq 0x29fccb(%rip), %rsi    # 0x3512b8
callq 0x10a7a1
movq %r14, %rdi
movq %rax, %rsi
callq 0x107cc0
leaq 0x20(%rbx), %rdx
leaq 0x29fd0d(%rip), %rdi    # 0x351315
leaq 0x29fd0e(%rip), %rsi    # 0x35131d
xorl %ecx, %ecx
callq 0x10a235
movq %r14, %rdi
movq %rax, %rsi
callq 0x107cc0
leaq 0x8(%rbx), %rdx
leaq 0x2dcc16(%rip), %rdi    # 0x38e242
leaq 0x29fd1a(%rip), %rsi    # 0x35134d
movl $0x1e, %ecx
movl $0x1e, %r8d
callq 0x10a51f
movq %r14, %rdi
movq %rax, %rsi
callq 0x107cc0
leaq 0xc(%rbx), %rdx
leaq 0x310852(%rip), %rdi    # 0x3c1eab
leaq 0x29fd03(%rip), %rsi    # 0x351363
movl $0x2710, %ecx           # imm = 0x2710
movl $0xf4240, %r8d          # imm = 0xF4240
callq 0x10a548
movq %r14, %rdi
movq %rax, %rsi
callq 0x107cc0
leaq 0x21(%rbx), %rdi
callq 0x10a257
movq %r14, %rdi
movq %rax, %rsi
callq 0x107cc0
movq 0x18(%rbx), %rdi
movq %r14, %rsi
movq %rbx, %rdx
callq 0x10ad87
movq 0x28(%rbx), %rsi
movq %r14, %rdi
xorl %edx, %edx
xorl %ecx, %ecx
callq 0x172cc9
movq %r14, %rax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
callq 0x1cbfe