// File: /workspace/github_c_makefile_star2_O3/genometools[P]genometools/src/tools/gt_encseq2spm.c
// Function: gt_encseq2spm_option_parser_new
static GtOptionParser* gt_encseq2spm_option_parser_new(void *tool_arguments)
{
  GtEncseq2spmArguments *arguments = tool_arguments;
  GtOptionParser *op;
  GtOption *option, *optionparts, *optionmemlimit;

  gt_assert(arguments);

  /* init */
  op = gt_option_parser_new("[option ...] [file]",
                            "Compute suffix prefix matches "
                            "from encoded sequence.");

  /* -l */
  option = gt_option_new_uint_min("l", "specify the minimum length",
                                  &arguments->minmatchlength, 0, 1U);
  gt_option_parser_add_option(op, option);
  gt_option_is_mandatory(option);

  /* -parts */
  optionparts = gt_option_new_uint("parts", "specify the number of parts",
                                  &arguments->numofparts, 0U);
  gt_option_parser_add_option(op, optionparts);

  /* -memlimit */
  optionmemlimit = gt_option_new_string("memlimit",
                       "specify maximal amount of memory to be used during "
                       "index construction (in bytes, the keywords 'MB' "
                       "and 'GB' are allowed)",
                       arguments->memlimitarg, NULL);
  gt_option_parser_add_option(op, optionmemlimit);
  gt_option_exclude(optionmemlimit, optionparts);
  arguments->refoptionmemlimit = gt_option_ref(optionmemlimit);

  /* -checksuftab */
  option = gt_option_new_bool("checksuftab", "check the suffix table",
                             &arguments->checksuftab, false);
  gt_option_parser_add_option(op, option);
  gt_option_is_development_option(option);

  /* -singlestrand */
  option = gt_option_new_bool("singlestrand", "use only the forward strand "
                              "of the sequence",
                              &arguments->singlestrand, false);
  gt_option_parser_add_option(op, option);

  /* -spm */
  option = gt_option_new_string("spm", "specify output for spms",
                                arguments->spmspec, NULL);
  gt_option_parser_add_option(op, option);

  /* -ii */
  option = gt_option_new_string("ii", "specify the input sequence",
                                arguments->encseqinput, NULL);
  gt_option_parser_add_option(op, option);
  gt_option_is_mandatory(option);

  /* -onlyaccum */
  option = gt_option_new_bool("onlyaccum", "only accumulate codes",
                             &arguments->onlyaccum, false);
  gt_option_parser_add_option(op, option);
  gt_option_is_development_option(option);

  /* -onlyallfirstcodes */
  option = gt_option_new_bool("onlyallfirstcodes", "only determines allcodes",
                              &arguments->onlyallfirstcodes, false);
  gt_option_parser_add_option(op, option);
  gt_option_is_development_option(option);

  /* -addbscachedepth */
  option = gt_option_new_uint("addbscachedepth", "only determines allcodes",
                              &arguments->addbscache_depth, 5U);
  gt_option_parser_add_option(op, option);
  gt_option_is_development_option(option);

  /* -phase2extra */
  option = gt_option_new_string("phase2extra",
                       "specify  amount of additional space required for "
                       "the second phase of the computation involving the "
                       "processing of the intervals (in bytes, "
                       "the keywords 'MB' and 'GB' are allowed)",
                       arguments->phase2extraarg, NULL);
  gt_option_parser_add_option(op, option);
  arguments->refoptionphase2extra = gt_option_ref(option);
  gt_option_is_development_option(option);

  /* -radixlarge */
  option = gt_option_new_bool("radixlarge", "use large tables for radixsort",
                              &arguments->radixlarge, false);
  gt_option_parser_add_option(op, option);
  gt_option_is_development_option(option);

  /* -radixparts */
  option = gt_option_new_uint("radixparts", "specify the number of parts "
                              "for radixsort",
                              &arguments->radixparts, 1U);
  gt_option_parser_add_option(op, option);
  gt_option_is_development_option(option);

  /* -singlescan */
  option = gt_option_new_uint("singlescan", "run a single scan: 1=fast; "
                              "2=fast with check; 3=fast with output; "
                              "4=sfx-mapped4-version",
                              &arguments->singlescan, 0);
  gt_option_parser_add_option(op, option);
  gt_option_is_development_option(option);

  /* -forcek */
  option = gt_option_new_uint("forcek", "specify the value of k",
                              &arguments->forcek, 0);
  gt_option_is_development_option(option);
  gt_option_parser_add_option(op, option);

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

  return op;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
testq %rdi, %rdi
je 0xa29c7
movq %rdi, %rbx
leaq 0x2a7fd7(%rip), %rdi    # 0x34a6a1
leaq 0x2a7fe4(%rip), %rsi    # 0x34a6b5
callq 0x107bfe
movq %rax, %r14
leaq 0x8(%rbx), %rdx
leaq 0x2e5499(%rip), %rdi    # 0x387b7d
leaq 0x2a7fff(%rip), %rsi    # 0x34a6ea
xorl %ecx, %ecx
movl $0x1, %r8d
callq 0x10a51f
movq %rax, %r15
movq %r14, %rdi
movq %rax, %rsi
callq 0x107cc0
movq %r15, %rdi
callq 0x10a87b
leaq 0xc(%rbx), %rdx
leaq 0x2b42ce(%rip), %rdi    # 0x3569e7
leaq 0x2a7fe5(%rip), %rsi    # 0x34a705
xorl %ecx, %ecx
callq 0x10a4fd
movq %rax, %r15
movq %r14, %rdi
movq %rax, %rsi
callq 0x107cc0
movq 0x40(%rbx), %rdx
leaq 0x342408(%rip), %rdi    # 0x3e4b48
leaq 0x2a7fda(%rip), %rsi    # 0x34a721
xorl %ecx, %ecx
callq 0x10a770
movq %rax, %r12
movq %r14, %rdi
movq %rax, %rsi
callq 0x107cc0
movq %r12, %rdi
movq %r15, %rsi
callq 0x10ab96
movq %r12, %rdi
callq 0x107bec
movq %rax, 0x50(%rbx)
leaq 0x2a8020(%rip), %rdi    # 0x34a79a
leaq 0x2a8025(%rip), %rsi    # 0x34a7a6
movq %rbx, %rdx
xorl %ecx, %ecx
callq 0x10a235
movq %rax, %r15
movq %r14, %rdi
movq %rax, %rsi
callq 0x107cc0
movq %r15, %rdi
callq 0x10a9d4
leaq 0x1(%rbx), %rdx
leaq 0x2a8011(%rip), %rdi    # 0x34a7bd
leaq 0x2a8017(%rip), %rsi    # 0x34a7ca
xorl %ecx, %ecx
callq 0x10a235
movq %r14, %rdi
movq %rax, %rsi
callq 0x107cc0
movq 0x38(%rbx), %rdx
leaq 0x2a82a7(%rip), %rdi    # 0x34aa77
leaq 0x2a801f(%rip), %rsi    # 0x34a7f6
xorl %ecx, %ecx
callq 0x10a770
movq %r14, %rdi
movq %rax, %rsi
callq 0x107cc0
movq 0x30(%rbx), %rdx
leaq 0x310c7f(%rip), %rdi    # 0x3b3473
leaq 0x2a8013(%rip), %rsi    # 0x34a80e
xorl %ecx, %ecx
callq 0x10a770
movq %rax, %r15
movq %r14, %rdi
movq %rax, %rsi
callq 0x107cc0
movq %r15, %rdi
callq 0x10a87b
leaq 0x4(%rbx), %rdx
leaq 0x2a8006(%rip), %rdi    # 0x34a829
leaq 0x2a8009(%rip), %rsi    # 0x34a833
xorl %ecx, %ecx
callq 0x10a235
movq %rax, %r15
movq %r14, %rdi
movq %rax, %rsi
callq 0x107cc0
movq %r15, %rdi
callq 0x10a9d4
leaq 0x5(%rbx), %rdx
leaq 0x2a7ff7(%rip), %rdi    # 0x34a849
leaq 0x2a8002(%rip), %r15    # 0x34a85b
movq %r15, %rsi
xorl %ecx, %ecx
callq 0x10a235
movq %rax, %r12
movq %r14, %rdi
movq %rax, %rsi
callq 0x107cc0
movq %r12, %rdi
callq 0x10a9d4
leaq 0x18(%rbx), %rdx
leaq 0x2a7ff0(%rip), %rdi    # 0x34a874
movq %r15, %rsi
movl $0x5, %ecx
callq 0x10a4fd
movq %rax, %r15
movq %r14, %rdi
movq %rax, %rsi
callq 0x107cc0
movq %r15, %rdi
callq 0x10a9d4
movq 0x48(%rbx), %rdx
leaq 0x2a7fd2(%rip), %rdi    # 0x34a884
leaq 0x2a7fd7(%rip), %rsi    # 0x34a890
xorl %ecx, %ecx
callq 0x10a770
movq %rax, %r15
movq %r14, %rdi
movq %rax, %rsi
callq 0x107cc0
movq %r15, %rdi
callq 0x107bec
movq %rax, 0x58(%rbx)
movq %r15, %rdi
callq 0x10a9d4
leaq 0x6(%rbx), %rdx
leaq 0x2a8055(%rip), %rdi    # 0x34a942
leaq 0x2a8059(%rip), %rsi    # 0x34a94d
xorl %ecx, %ecx
callq 0x10a235
movq %rax, %r15
movq %r14, %rdi
movq %rax, %rsi
callq 0x107cc0
movq %r15, %rdi
callq 0x10a9d4
leaq 0x10(%rbx), %rdx
leaq 0x2a8050(%rip), %rdi    # 0x34a96c
leaq 0x2a8054(%rip), %rsi    # 0x34a977
movl $0x1, %ecx
callq 0x10a4fd
movq %rax, %r15
movq %r14, %rdi
movq %rax, %rsi
callq 0x107cc0
movq %r15, %rdi
callq 0x10a9d4
leaq 0x14(%rbx), %rdx
leaq 0x2a8053(%rip), %rdi    # 0x34a9a1
leaq 0x2a8057(%rip), %rsi    # 0x34a9ac
xorl %ecx, %ecx
callq 0x10a4fd
movq %rax, %r15
movq %r14, %rdi
movq %rax, %rsi
callq 0x107cc0
movq %r15, %rdi
callq 0x10a9d4
leaq 0x1c(%rbx), %rdx
leaq 0x2a8087(%rip), %rdi    # 0x34aa04
leaq 0x2a8087(%rip), %rsi    # 0x34aa0b
xorl %ecx, %ecx
callq 0x10a4fd
movq %rax, %r15
movq %rax, %rdi
callq 0x10a9d4
movq %r14, %rdi
movq %r15, %rsi
callq 0x107cc0
addq $0x2, %rbx
movq %rbx, %rdi
callq 0x10a257
movq %r14, %rdi
movq %rax, %rsi
callq 0x107cc0
movq %r14, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
callq 0x19dbb