// File: /workspace/github_c_makefile_star2_O1/genometools[P]genometools/src/tools/gt_simreads.c
// Function: gt_simreads_option_parser_new
static GtOptionParser* gt_simreads_option_parser_new(void *tool_arguments)
{
  GtSimreadsArguments *arguments = tool_arguments;
  GtOptionParser *op;
  GtOption *num_option, *coverage_option, *len_option,
           *minlen_option, *maxlen_option, *p_option, *v_option,
           *dl_option, *ds_option, *ss_option, *distlen_option;

  gt_assert(arguments);

  /* init */
  op = gt_option_parser_new("[option ...] <encseq>",
                         "Simulate sequencing reads from "
                         "random positions in the input sequence(s).");

  /* -num */
  num_option = gt_option_new_uword_min("num", "desired number of reads",
                                       &arguments->num, GT_UNDEF_UWORD, 1UL);
  gt_option_parser_add_option(op, num_option);

  /* -coverage */
  coverage_option = gt_option_new_uword_min("coverage",
                                            "desired coverage of the reads",
                                            &arguments->coverage,
                                            GT_UNDEF_UWORD, 1UL);
  gt_option_parser_add_option(op, coverage_option);

  /* -len */
  len_option = gt_option_new_uword_min("len", "fixed read length",
                                               &arguments->minlen,
                                               GT_UNDEF_UWORD, 1UL);
  gt_option_parser_add_option(op, len_option);

  /* -minlen */
  minlen_option = gt_option_new_uword_min("minlen",
                                          "minimal read length",
                                          &arguments->minlen,
                                          GT_UNDEF_UWORD, 1UL);
  gt_option_parser_add_option(op, minlen_option);

  /* -maxlen */
  maxlen_option = gt_option_new_uword_min("maxlen",
                                          "maximal read length",
                                          &arguments->maxlen,
                                          GT_UNDEF_UWORD, 1UL);
  gt_option_parser_add_option(op, maxlen_option);

  /* -distlen */
  distlen_option = gt_option_new_string("distlen",
      "use read length distribution file\n"
      "(in the output format of the seqstat tool)",
      arguments->distlen_filename, NULL);
  gt_option_parser_add_option(op, distlen_option);

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

  /* -p */
  p_option = gt_option_new_bool("p", "show a progress bar",
                                &arguments->show_progressbar, false);
  gt_option_parser_add_option(op, p_option);

  /* -v */
  v_option = gt_option_new_bool("v", "be verbose",
                                &arguments->verbose, false);
  gt_option_parser_add_option(op, v_option);

  /* -ds */
  ds_option = gt_option_new_string("ds", "output distribution of starting"
                                       " positions to specified file",
                                   arguments->dsfilename, NULL);
  gt_option_parser_add_option(op, ds_option);
  gt_option_is_extended_option(ds_option);

  /* -dl */
  dl_option = gt_option_new_string("dl", "output distribution of read lengths"
                                       " to specified file",
                                   arguments->dlfilename, NULL);
  gt_option_parser_add_option(op, dl_option);
  gt_option_is_extended_option(dl_option);

  /* -ss */
  ss_option = gt_option_new_bool("ss", "simulate reads in forward direction "
                                 "only", &arguments->singlestrand, false);
  gt_option_parser_add_option(op, ss_option);

  gt_option_is_mandatory_either(num_option, coverage_option);
  gt_option_is_mandatory_either_3(len_option, minlen_option, distlen_option);
  gt_option_imply(minlen_option, maxlen_option);
  gt_option_imply(maxlen_option, minlen_option);
  gt_option_exclude(maxlen_option, len_option);
  gt_option_exclude(maxlen_option, distlen_option);
  gt_option_exclude(minlen_option, len_option);
  gt_option_exclude(minlen_option, distlen_option);
  gt_option_exclude(len_option, distlen_option);
  gt_option_exclude(len_option, dl_option);

  gt_option_parser_set_min_max_args(op, 1U, 1U);

  gt_option_parser_set_mail_address(op,"<gonnella@zbh.uni-hamburg.de>");

  return op;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
testq %rdi, %rdi
je 0xcb62e
movq %rdi, %r14
leaq 0x2986c1(%rip), %rdi    # 0x363a30
leaq 0x2986d0(%rip), %rsi    # 0x363a46
callq 0x10cc4e
movq %rax, %rbx
leaq 0x2c2ec1(%rip), %rdi    # 0x38e246
leaq 0x298704(%rip), %rsi    # 0x363a90
movl $0x1, %r8d
movq %r14, %rdx
movq $-0x1, %rcx
callq 0x10f7ed
movq %rax, 0x10(%rsp)
movq %rbx, %rdi
movq %rax, %rsi
callq 0x10cd10
leaq 0x18(%r14), %rdx
leaq 0x2be5a9(%rip), %rdi    # 0x389965
leaq 0x2986e5(%rip), %rsi    # 0x363aa8
movl $0x1, %r8d
movq $-0x1, %rcx
callq 0x10f7ed
movq %rax, 0x8(%rsp)
movq %rbx, %rdi
movq %rax, %rsi
callq 0x10cd10
leaq 0x8(%r14), %r15
leaq 0x2dca45(%rip), %rdi    # 0x3a7e35
leaq 0x2986cf(%rip), %rsi    # 0x363ac6
movl $0x1, %r8d
movq %r15, %rdx
movq $-0x1, %rcx
callq 0x10f7ed
movq %rax, (%rsp)
movq %rbx, %rdi
movq %rax, %rsi
callq 0x10cd10
leaq 0x28e34b(%rip), %rdi    # 0x35976d
leaq 0x2986af(%rip), %rsi    # 0x363ad8
movl $0x1, %r8d
movq %r15, %rdx
movq $-0x1, %rcx
callq 0x10f7ed
movq %rax, %rbp
movq %rbx, %rdi
movq %rax, %rsi
callq 0x10cd10
leaq 0x10(%r14), %rdx
leaq 0x2b72f4(%rip), %rdi    # 0x38274b
leaq 0x29868e(%rip), %rsi    # 0x363aec
movl $0x1, %r8d
movq $-0x1, %rcx
callq 0x10f7ed
movq %rax, %r12
movq %rbx, %rdi
movq %rax, %rsi
callq 0x10cd10
movq 0x48(%r14), %rdx
leaq 0x296bc5(%rip), %rdi    # 0x36204e
leaq 0x298670(%rip), %rsi    # 0x363b00
xorl %ecx, %ecx
callq 0x10f987
movq %rax, %r13
movq %rbx, %rdi
movq %rax, %rsi
callq 0x10cd10
movq 0x28(%r14), %rdi
leaq 0x30(%r14), %rdx
movq %rbx, %rsi
callq 0x10ffa3
leaq 0x20(%r14), %rdx
leaq 0x2d37c5(%rip), %rdi    # 0x39ec85
leaq 0x298686(%rip), %rsi    # 0x363b4d
xorl %ecx, %ecx
callq 0x10f451
movq %rbx, %rdi
movq %rax, %rsi
callq 0x10cd10
leaq 0x21(%r14), %rdx
leaq 0x2cd776(%rip), %rdi    # 0x398c5a
leaq 0x284bff(%rip), %rsi    # 0x3500ea
xorl %ecx, %ecx
callq 0x10f451
movq %rbx, %rdi
movq %rax, %rsi
callq 0x10cd10
movq 0x38(%r14), %rdx
leaq 0x29d4ac(%rip), %rdi    # 0x3689b4
leaq 0x298652(%rip), %rsi    # 0x363b61
xorl %ecx, %ecx
callq 0x10f987
movq %rax, %r15
movq %rbx, %rdi
movq %rax, %rsi
callq 0x10cd10
movq %r15, %rdi
callq 0x10fbdf
movq 0x40(%r14), %rdx
leaq 0x298666(%rip), %rdi    # 0x363b9d
leaq 0x298662(%rip), %rsi    # 0x363ba0
xorl %ecx, %ecx
callq 0x10f987
movq %rax, %r15
movq %rbx, %rdi
movq %rax, %rsi
callq 0x10cd10
movq %r15, %rdi
callq 0x10fbdf
addq $0x24, %r14
leaq 0x31f37f(%rip), %rdi    # 0x3ea8e5
leaq 0x298669(%rip), %rsi    # 0x363bd6
movq %r14, %rdx
xorl %ecx, %ecx
callq 0x10f451
movq %rbx, %rdi
movq %rax, %rsi
callq 0x10cd10
movq 0x10(%rsp), %rdi
movq 0x8(%rsp), %rsi
callq 0x10faa6
movq (%rsp), %r14
movq %r14, %rdi
movq %rbp, %rsi
movq %r13, %rdx
callq 0x10faf4
movq %rbp, %rdi
movq %r12, %rsi
callq 0x10fbff
movq %r12, %rdi
movq %rbp, %rsi
callq 0x10fbff
movq %r12, %rdi
movq %r14, %rsi
callq 0x10fd9f
movq %r12, %rdi
movq %r13, %rsi
callq 0x10fd9f
movq %rbp, %rdi
movq %r14, %rsi
callq 0x10fd9f
movq %rbp, %rdi
movq %r13, %rsi
callq 0x10fd9f
movq %r14, %rdi
movq %r13, %rsi
callq 0x10fd9f
movq %r14, %rdi
movq %r15, %rsi
callq 0x10fd9f
movq %rbx, %rdi
movl $0x1, %esi
movl $0x1, %edx
callq 0x10d784
leaq 0x2985eb(%rip), %rsi    # 0x363bff
movq %rbx, %rdi
callq 0x10ceab
movq %rbx, %rax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0x20627