// File: /workspace/github_c_makefile_star2_O2/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 0x4e05b
movq %rdi, %r14
leaq 0x2acbd8(%rip), %rdi    # 0x2fa994
leaq 0x2acbe7(%rip), %rsi    # 0x2fa9aa
callq 0x97df5
movq %rax, %rbx
leaq 0x2d74bc(%rip), %rdi    # 0x32528e
leaq 0x2acc1b(%rip), %rsi    # 0x2fa9f4
pushq $-0x1
popq %r15
pushq $0x1
popq %r12
movq %r14, %rdx
movq %r15, %rcx
movq %r12, %r8
callq 0x9ac58
movq %rax, 0x10(%rsp)
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
leaq 0x18(%r14), %rdx
leaq 0x2d2bad(%rip), %rdi    # 0x3209b7
leaq 0x2acbfb(%rip), %rsi    # 0x2faa0c
movq %r15, %rcx
movq %r12, %r8
callq 0x9ac58
movq %rax, 0x8(%rsp)
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
leaq 0x8(%r14), %r13
leaq 0x2f0e79(%rip), %rdi    # 0x33ecb0
leaq 0x2acbec(%rip), %rsi    # 0x2faa2a
movq %r13, %rdx
movq %r15, %rcx
movq %r12, %r8
callq 0x9ac58
movq %rax, (%rsp)
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
leaq 0x2a28e3(%rip), %rdi    # 0x2f0745
leaq 0x2acbd3(%rip), %rsi    # 0x2faa3c
movq %r13, %rdx
movq %r15, %rcx
movq %r12, %r8
callq 0x9ac58
movq %rax, %r13
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
leaq 0x10(%r14), %rdx
leaq 0x2cb8eb(%rip), %rdi    # 0x31977b
leaq 0x2acbb9(%rip), %rsi    # 0x2faa50
movq %r15, %rcx
movq %r12, %r8
callq 0x9ac58
movq %rax, %r12
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
movq 0x48(%r14), %rdx
leaq 0x2ab11b(%rip), %rdi    # 0x2f8fd6
leaq 0x2acba2(%rip), %rsi    # 0x2faa64
xorl %ecx, %ecx
callq 0x9ad12
movq %rax, %rbp
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
movq 0x28(%r14), %rdi
leaq 0x30(%r14), %rdx
movq %rbx, %rsi
callq 0x9b6d7
leaq 0x20(%r14), %rdx
leaq 0x2e7c3c(%rip), %rdi    # 0x335b2e
leaq 0x2acbb8(%rip), %rsi    # 0x2faab1
xorl %ecx, %ecx
callq 0x9a997
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
leaq 0x21(%r14), %rdx
leaq 0x2e1c5a(%rip), %rdi    # 0x32fb70
leaq 0x2991cd(%rip), %rsi    # 0x2e70ea
xorl %ecx, %ecx
callq 0x9a997
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
movq 0x38(%r14), %rdx
leaq 0x2b18df(%rip), %rdi    # 0x2ff819
leaq 0x2acb84(%rip), %rsi    # 0x2faac5
xorl %ecx, %ecx
callq 0x9ad12
movq %rax, %r15
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
movq %r15, %rdi
callq 0x9b0c7
movq 0x40(%r14), %rdx
leaq 0x2acb98(%rip), %rdi    # 0x2fab01
leaq 0x2acb94(%rip), %rsi    # 0x2fab04
xorl %ecx, %ecx
callq 0x9ad12
movq %rax, %r15
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
movq %r15, %rdi
callq 0x9b0c7
addq $0x24, %r14
leaq 0x33360d(%rip), %rdi    # 0x3815a5
leaq 0x2acb9b(%rip), %rsi    # 0x2fab3a
movq %r14, %rdx
xorl %ecx, %ecx
callq 0x9a997
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
movq 0x10(%rsp), %rdi
movq 0x8(%rsp), %rsi
callq 0x9ae7a
movq (%rsp), %r14
movq %r14, %rdi
movq %r13, %rsi
movq %rbp, %rdx
callq 0x9af22
movq %r13, %rdi
movq %r12, %rsi
callq 0x9b14d
movq %r12, %rdi
movq %r13, %rsi
callq 0x9b14d
movq %r12, %rdi
movq %r14, %rsi
callq 0x9b38d
movq %r12, %rdi
movq %rbp, %rsi
callq 0x9b38d
movq %r13, %rdi
movq %r14, %rsi
callq 0x9b38d
movq %r13, %rdi
movq %rbp, %rsi
callq 0x9b38d
movq %r14, %rdi
movq %rbp, %rsi
callq 0x9b38d
movq %r14, %rdi
movq %r15, %rsi
callq 0x9b38d
pushq $0x1
popq %rdx
movq %rbx, %rdi
movl %edx, %esi
callq 0x98c6b
leaq 0x2acb22(%rip), %rsi    # 0x2fab63
movq %rbx, %rdi
callq 0x98288
movq %rbx, %rax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x3e9f06(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x296fa7(%rip), %rsi    # 0x2e5013
leaq 0x2fa5e0(%rip), %rdx    # 0x348653
leaq 0x2ac8fc(%rip), %rcx    # 0x2fa976
leaq 0x2ac8dd(%rip), %r8     # 0x2fa95e
pushq $0x4e
popq %r9
xorl %eax, %eax
callq 0x17a50
callq 0x17390