// File: /workspace/github_c_makefile_star2_O2/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 0x34dc8
movq %rdi, %rbx
leaq 0x2bc58e(%rip), %rdi    # 0x2f126e
leaq 0x2bc5b0(%rip), %rsi    # 0x2f1297
callq 0x97df5
movq %rax, %r14
movq 0x10(%rbx), %rdx
leaq 0x2ce02c(%rip), %rdi    # 0x302d26
leaq 0x2bc5ca(%rip), %rsi    # 0x2f12cb
callq 0x9ad43
movq %r14, %rdi
movq %rax, %rsi
callq 0x97f31
leaq 0x20(%rbx), %rdx
leaq 0x2bc60c(%rip), %rdi    # 0x2f1328
leaq 0x2bc60d(%rip), %rsi    # 0x2f1330
xorl %ecx, %ecx
callq 0x9a997
movq %r14, %rdi
movq %rax, %rsi
callq 0x97f31
leaq 0x8(%rbx), %rdx
leaq 0x2f98f2(%rip), %rdi    # 0x32e632
leaq 0x2bc619(%rip), %rsi    # 0x2f1360
pushq $0x1e
popq %rcx
movl %ecx, %r8d
callq 0x9abef
movq %r14, %rdi
movq %rax, %rsi
callq 0x97f31
leaq 0xc(%rbx), %rdx
leaq 0x32d553(%rip), %rdi    # 0x3622bb
leaq 0x2bc607(%rip), %rsi    # 0x2f1376
movl $0x2710, %ecx           # imm = 0x2710
movl $0xf4240, %r8d          # imm = 0xF4240
callq 0x9ac01
movq %r14, %rdi
movq %rax, %rsi
callq 0x97f31
leaq 0x21(%rbx), %rdi
callq 0x9a9b6
movq %r14, %rdi
movq %rax, %rsi
callq 0x97f31
movq 0x18(%rbx), %rdi
movq %r14, %rsi
movq %rbx, %rdx
callq 0x9b6d7
movq 0x28(%rbx), %rsi
movq %r14, %rdi
xorl %edx, %edx
xorl %ecx, %ecx
callq 0x1167a5
movq %r14, %rax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
movq 0x403199(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x2b023a(%rip), %rsi    # 0x2e5013
leaq 0x313873(%rip), %rdx    # 0x348653
leaq 0x2bc468(%rip), %rcx    # 0x2f124f
leaq 0x2bc448(%rip), %r8     # 0x2f1236
pushq $0x4f
popq %r9
xorl %eax, %eax
callq 0x17a50
callq 0x17390