// File: /workspace/github_c_makefile_star2_O3/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 0xc93de
movq %rdi, %r14
leaq 0x29189d(%rip), %rdi    # 0x35a9bc
leaq 0x2918ac(%rip), %rsi    # 0x35a9d2
callq 0x107bfe
movq %rax, %rbx
leaq 0x2bbd3e(%rip), %rdi    # 0x384e73
leaq 0x2918e0(%rip), %rsi    # 0x35aa1c
movl $0x1, %r8d
movq %r14, %rdx
movq $-0x1, %rcx
callq 0x10a5d1
movq %rax, 0x10(%rsp)
movq %rbx, %rdi
movq %rax, %rsi
callq 0x107cc0
leaq 0x18(%r14), %rdx
leaq 0x2b743b(%rip), %rdi    # 0x3805a7
leaq 0x2918c1(%rip), %rsi    # 0x35aa34
movl $0x1, %r8d
movq $-0x1, %rcx
callq 0x10a5d1
movq %rax, 0x8(%rsp)
movq %rbx, %rdi
movq %rax, %rsi
callq 0x107cc0
leaq 0x8(%r14), %r15
leaq 0x2d579d(%rip), %rdi    # 0x39e93d
leaq 0x2918ab(%rip), %rsi    # 0x35aa52
movl $0x1, %r8d
movq %r15, %rdx
movq $-0x1, %rcx
callq 0x10a5d1
movq %rax, (%rsp)
movq %rbx, %rdi
movq %rax, %rsi
callq 0x107cc0
leaq 0x28756b(%rip), %rdi    # 0x35073d
leaq 0x29188b(%rip), %rsi    # 0x35aa64
movl $0x1, %r8d
movq %r15, %rdx
movq $-0x1, %rcx
callq 0x10a5d1
movq %rax, %rbp
movq %rbx, %rdi
movq %rax, %rsi
callq 0x107cc0
leaq 0x10(%r14), %rdx
leaq 0x2b0226(%rip), %rdi    # 0x37942d
leaq 0x29186a(%rip), %rsi    # 0x35aa78
movl $0x1, %r8d
movq $-0x1, %rcx
callq 0x10a5d1
movq %rax, %r12
movq %rbx, %rdi
movq %rax, %rsi
callq 0x107cc0
movq 0x48(%r14), %rdx
leaq 0x28fdc5(%rip), %rdi    # 0x358ffe
leaq 0x29184c(%rip), %rsi    # 0x35aa8c
xorl %ecx, %ecx
callq 0x10a770
movq %rax, %r13
movq %rbx, %rdi
movq %rax, %rsi
callq 0x107cc0
movq 0x28(%r14), %rdi
leaq 0x30(%r14), %rdx
movq %rbx, %rsi
callq 0x10ad87
leaq 0x20(%r14), %rdx
leaq 0x2cc565(%rip), %rdi    # 0x3957d5
leaq 0x291862(%rip), %rsi    # 0x35aad9
xorl %ecx, %ecx
callq 0x10a235
movq %rbx, %rdi
movq %rax, %rsi
callq 0x107cc0
leaq 0x21(%r14), %rdx
leaq 0x2c659e(%rip), %rdi    # 0x38f832
leaq 0x27de4f(%rip), %rsi    # 0x3470ea
xorl %ecx, %ecx
callq 0x10a235
movq %rbx, %rdi
movq %rax, %rsi
callq 0x107cc0
movq 0x38(%r14), %rdx
leaq 0x2965fc(%rip), %rdi    # 0x35f8b4
leaq 0x29182e(%rip), %rsi    # 0x35aaed
xorl %ecx, %ecx
callq 0x10a770
movq %rax, %r15
movq %rbx, %rdi
movq %rax, %rsi
callq 0x107cc0
movq %r15, %rdi
callq 0x10a9c4
movq 0x40(%r14), %rdx
leaq 0x291842(%rip), %rdi    # 0x35ab29
leaq 0x29183e(%rip), %rsi    # 0x35ab2c
xorl %ecx, %ecx
callq 0x10a770
movq %rax, %r15
movq %rbx, %rdi
movq %rax, %rsi
callq 0x107cc0
movq %r15, %rdi
callq 0x10a9c4
addq $0x24, %r14
leaq 0x317edf(%rip), %rdi    # 0x3e11f5
leaq 0x291845(%rip), %rsi    # 0x35ab62
movq %r14, %rdx
xorl %ecx, %ecx
callq 0x10a235
movq %rbx, %rdi
movq %rax, %rsi
callq 0x107cc0
movq 0x10(%rsp), %rdi
movq 0x8(%rsp), %rsi
callq 0x10a88b
movq (%rsp), %r14
movq %r14, %rdi
movq %rbp, %rsi
movq %r13, %rdx
callq 0x10a8d9
movq %rbp, %rdi
movq %r12, %rsi
callq 0x10a9e4
movq %r12, %rdi
movq %rbp, %rsi
callq 0x10a9e4
movq %r12, %rdi
movq %r14, %rsi
callq 0x10ab96
movq %r12, %rdi
movq %r13, %rsi
callq 0x10ab96
movq %rbp, %rdi
movq %r14, %rsi
callq 0x10ab96
movq %rbp, %rdi
movq %r13, %rsi
callq 0x10ab96
movq %r14, %rdi
movq %r13, %rsi
callq 0x10ab96
movq %r14, %rdi
movq %r15, %rsi
callq 0x10ab96
movq %rbx, %rdi
movl $0x1, %esi
movl $0x1, %edx
callq 0x10874b
leaq 0x2917c7(%rip), %rsi    # 0x35ab8b
movq %rbx, %rdi
callq 0x107e5c
movq %rbx, %rax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0x2022b