// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/tools/gt_readjoiner_graph.c
// Function: gt_readjoiner_graph_option_parser_new
static GtOptionParser* gt_readjoiner_graph_option_parser_new(
    void *tool_arguments)
{
  GtReadjoinerGraphArguments *arguments = tool_arguments;
  GtOptionParser *op;
  GtOption *option, *errors_option, *deadend_option, *v_option,
           *q_option, *bubble_option, *deadend_depth_option,
           *subgraph_option, *sother_option, *from_option,
           *to_option, *fromb_option, *tob_option;
  gt_assert(arguments);

  /* init */
  op = gt_option_parser_new("[option ...]",
      "Collect information or further process the string graph.");

  /* -readset */
  option = gt_option_new_string("readset", "specify the readset name",
      arguments->readset, NULL);
  gt_option_parser_add_option(op, option);
  gt_option_is_mandatory(option);

  /* -dot */
  option = gt_option_new_bool("dot",
      "output the string graph as bidirected graph "
      "in GraphViz format\n"
      "(<readset>"GT_READJOINER_SUFFIX_SG_BI_DOT")",
      &arguments->dot, false);
  gt_option_parser_add_option(op, option);

  /* -mdot */
  option = gt_option_new_bool("mdot",
      "output the string graph as monodirected graph "
      "(B/E vertices) in GraphViz format\n"
      "(<readset>"GT_READJOINER_SUFFIX_SG_MONO_DOT")",
      &arguments->mdot, false);
  gt_option_parser_add_option(op, option);

  /* -subgraph */
  subgraph_option = gt_option_new_string_array("subgraph",
      "output subgraph for the specified reads "
      "in GraphViz format\n"
      "(<readset>"GT_READJOINER_SUFFIX_SG_SUB_DOT")",
      arguments->subgraph);
  gt_option_parser_add_option(op, subgraph_option);

  /* -sdepth */
  option = gt_option_new_uword("sdepth", "subgraph depth\n"
      "(use 0 for infinite depth == whole connected component)",
      &(arguments->subgraph_depth), 1UL);
  gt_option_imply(option, subgraph_option);
  gt_option_parser_add_option(op, option);

  /* -sextend */
  option = gt_option_new_bool("sextend", "extend subgraph "
      "beyond depth along internal vertices",
      &arguments->subgraph_extend, false);
  gt_option_imply(option, subgraph_option);
  gt_option_parser_add_option(op, option);

  /* -smono */
  option = gt_option_new_bool("smono", "subgraph shall be "
      "output as monodirectional graph",
      &arguments->subgraph_mono, false);
  gt_option_imply(option, subgraph_option);
  gt_option_parser_add_option(op, option);

  /* -sother */
  sother_option = gt_option_new_string_array("sother",
      "also add specified reads to subgraph, but coloring "
      "them differently\n"
      "(<readset>"GT_READJOINER_SUFFIX_SG_SUB_DOT")",
      arguments->subgraph_other);
  gt_option_imply(sother_option, subgraph_option);
  gt_option_parser_add_option(op, sother_option);

  /* -spm */
  option = gt_option_new_bool("spm",
      "reconstruct SPM list from string graph\n"
      "(<readset>"GT_READJOINER_SUFFIX_SG_SPMLIST")",
      &arguments->spm, false);
  gt_option_parser_add_option(op, option);

  /* -adj */
  option = gt_option_new_bool("adj",
      "output graph adjacence list\n"
      "(<readset>"GT_READJOINER_SUFFIX_SG_ADJLIST")",
      &arguments->adj, false);
  gt_option_parser_add_option(op, option);

  /* -eld */
  option = gt_option_new_bool("eld", "output edges lenght"
      "distribution\n"
      "(<readset>"GT_READJOINER_SUFFIX_SG_ELEN_DISTRI")",
      &arguments->eld, false);
  gt_option_parser_add_option(op, option);

  /* -redtrans */
  option = gt_option_new_bool("redtrans", "reduce transitive edges",
      &arguments->redtrans, false);
  gt_option_parser_add_option(op, option);

  /* -errors */
  errors_option = gt_option_new_bool("errors",
      "run error correction algorithms",
      &arguments->errors, false);
  gt_option_parser_add_option(op, errors_option);

  /* -bubble */
  bubble_option = gt_option_new_uint("bubble", "number of rounds of p-bubble "
      "removal to perform", &arguments->bubble, 3U);
  gt_option_is_extended_option(bubble_option);
  gt_option_imply(bubble_option, errors_option);
  gt_option_parser_add_option(op, bubble_option);

  /* -from/-to */
  from_option = gt_option_new_uword("from", "find connecting path from->to\n"
      "requires -to; optional -minlen/-maxlen/-firstonly",
      &(arguments->from), 0);
  to_option = gt_option_new_uword("to", "find connecting path from->to\n"
      "requires -from; optional -minlen/-maxlen/-firstonly",
      &(arguments->to), 0);
  gt_option_imply(to_option, from_option);
  gt_option_imply(from_option, to_option);
  gt_option_parser_add_option(op, from_option);
  gt_option_parser_add_option(op, to_option);

  /* -fromB */
  fromb_option = gt_option_new_bool("fromB",
      "use only B vertex of origin read\n"
      "requires -from", &arguments->fromB, false);
  gt_option_imply(fromb_option, from_option);
  gt_option_parser_add_option(op, fromb_option);

  /* -fromE */
  option = gt_option_new_bool("fromE",
      "use only E vertex of origin read\n"
      "requires -from", &arguments->fromE, false);
  gt_option_imply(option, from_option);
  gt_option_exclude(option, fromb_option);
  gt_option_parser_add_option(op, option);

  /* -toB */
  tob_option = gt_option_new_bool("toB",
      "use only B vertex of origin read\n"
      "requires -to", &arguments->toB, false);
  gt_option_imply(tob_option, to_option);
  gt_option_parser_add_option(op, tob_option);

  /* -toE */
  option = gt_option_new_bool("toE",
      "use only E vertex of origin read\n"
      "requires -to", &arguments->toE, false);
  gt_option_imply(option, to_option);
  gt_option_exclude(option, tob_option);
  gt_option_parser_add_option(op, option);

  /* -minlen */
  option = gt_option_new_uword("minlen",
      "minimum string length of path from->to\n"
      "requires -from and -to",
      &(arguments->minlen), 0);
  gt_option_imply(option, from_option);
  gt_option_parser_add_option(op, option);

  /* -maxlen */
  option = gt_option_new_uword("maxlen",
      "maximum string length of path from->to\n"
      "requires -from and -to",
      &(arguments->maxlen), 1000);
  gt_option_imply(option, from_option);
  gt_option_parser_add_option(op, option);

  /* -firstonly */
  option = gt_option_new_bool("firstonly",
      "output only first path from->to",
      &arguments->firstonly, false);
  gt_option_parser_add_option(op, option);

  /* -deadend */
  deadend_option = gt_option_new_uint("deadend", "number of rounds of "
      "dead end removal to perform a dead end",
      &arguments->deadend, 10U);
  gt_option_is_extended_option(deadend_option);
  gt_option_imply(deadend_option, errors_option);
  gt_option_parser_add_option(op, deadend_option);

  /* -deadend-depth */
  deadend_depth_option = gt_option_new_uint_min("deadend-depth", "specify the "
      "maximal depth of a path to an end-vertex by which the path shall be "
      "considered a dead end",
      &arguments->deadend_depth, 10U, 1U);
  gt_option_is_extended_option(deadend_depth_option);
  gt_option_imply(deadend_depth_option, errors_option);
  gt_option_parser_add_option(op, deadend_depth_option);

  /* -save */
  option = gt_option_new_bool("save", "replace the string graph file "
      "after processing",
      &arguments->save, false);
  gt_option_parser_add_option(op, option);

  /* -limits */
  option = gt_option_new_bool("limits", "show compilation-specific limits",
      &arguments->limits, false);
  gt_option_is_development_option(option);
  gt_option_parser_add_option(op, option);

  /* -v */
  v_option = gt_option_new_verbose(&arguments->verbose);
  gt_option_parser_add_option(op, v_option);

  /* -q */
  q_option = gt_option_new_bool("q", "suppress standard output messages",
      &arguments->quiet, false);
  gt_option_exclude(q_option, v_option);
  gt_option_parser_add_option(op, q_option);

  gt_option_parser_set_max_args(op, 0);

  return op;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
testq %rdi, %rdi
je 0x3c0f2
movq %rdi, %r14
leaq 0x2bc2ee(%rip), %rdi    # 0x2f7e72
leaq 0x2b7d3b(%rip), %rsi    # 0x2f38c6
callq 0x97df5
movq %rax, %rbx
movq (%r14), %rdx
leaq 0x2b6aa7(%rip), %rdi    # 0x2f2644
leaq 0x2b6aa8(%rip), %rsi    # 0x2f264c
xorl %ecx, %ecx
callq 0x9ad12
movq %rax, %r15
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
movq %r15, %rdi
callq 0x9ae37
leaq 0xf(%r14), %rdx
leaq 0x2b82b2(%rip), %rdi    # 0x2f3e7e
leaq 0x2b7d2c(%rip), %rsi    # 0x2f38ff
xorl %ecx, %ecx
callq 0x9a997
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
leaq 0x10(%r14), %rdx
leaq 0x2b7d60(%rip), %rdi    # 0x2f3950
leaq 0x2b7d5e(%rip), %rsi    # 0x2f3955
xorl %ecx, %ecx
callq 0x9a997
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
movq 0x28(%r14), %rdx
leaq 0x2b831f(%rip), %rdi    # 0x2f3f33
leaq 0x2b7d9c(%rip), %rsi    # 0x2f39b7
callq 0x9ad43
movq %rax, %r15
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
leaq 0x38(%r14), %rdx
leaq 0x2b76a5(%rip), %rdi    # 0x2f32de
leaq 0x2b76a5(%rip), %rsi    # 0x2f32e5
pushq $0x1
popq %rcx
callq 0x9a9e6
movq %rax, %r12
movq %rax, %rdi
movq %r15, %rsi
callq 0x9b14d
movq %rbx, %rdi
movq %r12, %rsi
callq 0x97f31
leaq 0x14(%r14), %rdx
leaq 0x3215c5(%rip), %rdi    # 0x35d231
leaq 0x2b7d93(%rip), %rsi    # 0x2f3a06
xorl %ecx, %ecx
callq 0x9a997
movq %rax, %r12
movq %rax, %rdi
movq %r15, %rsi
callq 0x9b14d
movq %rbx, %rdi
movq %r12, %rsi
callq 0x97f31
leaq 0x13(%r14), %rdx
leaq 0x2b7d9d(%rip), %rdi    # 0x2f3a3b
leaq 0x2b7d9c(%rip), %rsi    # 0x2f3a41
xorl %ecx, %ecx
callq 0x9a997
movq %rax, %r12
movq %rax, %rdi
movq %r15, %rsi
callq 0x9b14d
movq %rbx, %rdi
movq %r12, %rsi
callq 0x97f31
movq 0x30(%r14), %rdx
leaq 0x2b7da3(%rip), %rdi    # 0x2f3a73
leaq 0x2b7da3(%rip), %rsi    # 0x2f3a7a
callq 0x9ad43
movq %rax, %r12
movq %rax, %rdi
movq %r15, %rsi
callq 0x9b14d
movq %rbx, %rdi
movq %r12, %rsi
callq 0x97f31
leaq 0x12(%r14), %rdx
leaq 0x2aed77(%rip), %rdi    # 0x2eaa77
leaq 0x2b7dcb(%rip), %rsi    # 0x2f3ad2
xorl %ecx, %ecx
callq 0x9a997
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
leaq 0x11(%r14), %rdx
leaq 0x2b81b9(%rip), %rdi    # 0x2f3edd
leaq 0x2b7de1(%rip), %rsi    # 0x2f3b0c
xorl %ecx, %ecx
callq 0x9a997
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
leaq 0xd(%r14), %rdx
leaq 0x33a597(%rip), %rdi    # 0x3762df
leaq 0x2b7de9(%rip), %rsi    # 0x2f3b38
xorl %ecx, %ecx
callq 0x9a997
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
leaq 0xc(%r14), %rdx
leaq 0x313f6e(%rip), %rdi    # 0x34fcda
leaq 0x2b6c5d(%rip), %rsi    # 0x2f29d0
xorl %ecx, %ecx
callq 0x9a997
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
leaq 0xb(%r14), %rdx
leaq 0x2b70b7(%rip), %rdi    # 0x2f2e47
leaq 0x2b7dd4(%rip), %rsi    # 0x2f3b6b
xorl %ecx, %ecx
callq 0x9a997
movq %rax, %r15
movq %rbx, %rdi
movq %rax, %rsi
movq %rax, (%rsp)
callq 0x97f31
leaq 0x20(%r14), %rdx
leaq 0x2b6c7e(%rip), %rdi    # 0x2f2a39
leaq 0x2b6c7e(%rip), %rsi    # 0x2f2a40
pushq $0x3
popq %rcx
callq 0x9abcd
movq %rax, %r12
movq %rax, %rdi
callq 0x9b0c7
movq %r12, %rdi
movq %r15, %rsi
callq 0x9b14d
movq %rbx, %rdi
movq %r12, %rsi
callq 0x97f31
leaq 0x40(%r14), %rdx
leaq 0x2b7e68(%rip), %rdi    # 0x2f3c5e
leaq 0x2b7d8e(%rip), %rsi    # 0x2f3b8b
xorl %ecx, %ecx
callq 0x9a9e6
movq %rax, %r12
leaq 0x48(%r14), %rdx
leaq 0x34848f(%rip), %rdi    # 0x3842a1
leaq 0x2b7dc2(%rip), %rsi    # 0x2f3bdb
xorl %ecx, %ecx
callq 0x9a9e6
movq %rax, %r13
movq %rax, %rdi
movq %r12, %rsi
callq 0x9b14d
movq %r12, %rdi
movq %r13, %rsi
callq 0x9b14d
movq %rbx, %rdi
movq %r12, %rsi
callq 0x97f31
movq %rbx, %rdi
movq %r13, %rsi
callq 0x97f31
leaq 0x16(%r14), %rdx
leaq 0x2b7dd3(%rip), %rdi    # 0x2f3c2d
leaq 0x2b7dd2(%rip), %rsi    # 0x2f3c33
xorl %ecx, %ecx
callq 0x9a997
movq %rax, %rbp
movq %rax, %rdi
movq %r12, %rsi
callq 0x9b14d
movq %rbx, %rdi
movq %rbp, %rsi
callq 0x97f31
leaq 0x18(%r14), %rdx
leaq 0x2b7dd7(%rip), %rdi    # 0x2f3c63
leaq 0x2b7dd6(%rip), %rsi    # 0x2f3c69
xorl %ecx, %ecx
callq 0x9a997
movq %rax, %r15
movq %rax, %rdi
movq %r12, %rsi
callq 0x9b14d
movq %r15, %rdi
movq %rbp, %rsi
callq 0x9b38d
movq %rbx, %rdi
movq %r15, %rsi
callq 0x97f31
leaq 0x17(%r14), %rdx
leaq 0x2b7dd0(%rip), %rdi    # 0x2f3c99
leaq 0x2b7dcd(%rip), %rsi    # 0x2f3c9d
xorl %ecx, %ecx
callq 0x9a997
movq %rax, %r15
movq %rax, %rdi
movq %r13, %rsi
callq 0x9b14d
movq %rbx, %rdi
movq %r15, %rsi
callq 0x97f31
leaq 0x19(%r14), %rdx
leaq 0x2b7dd0(%rip), %rdi    # 0x2f3ccb
leaq 0x2b7dcd(%rip), %rsi    # 0x2f3ccf
xorl %ecx, %ecx
callq 0x9a997
movq %rax, %rbp
movq %rax, %rdi
movq %r13, %rsi
callq 0x9b14d
movq %rbp, %rdi
movq %r15, %rsi
callq 0x9b38d
movq %rbx, %rdi
movq %rbp, %rsi
callq 0x97f31
leaq 0x50(%r14), %rdx
leaq 0x2b480d(%rip), %rdi    # 0x2f0745
leaq 0x2b7dbe(%rip), %rsi    # 0x2f3cfd
xorl %ecx, %ecx
callq 0x9a9e6
movq %rax, %r15
movq %rax, %rdi
movq %r12, %rsi
callq 0x9b14d
movq %rbx, %rdi
movq %r15, %rsi
callq 0x97f31
leaq 0x58(%r14), %rdx
leaq 0x2dd811(%rip), %rdi    # 0x31977b
leaq 0x2b7dca(%rip), %rsi    # 0x2f3d3b
movl $0x3e8, %ecx            # imm = 0x3E8
callq 0x9a9e6
movq %rax, %r15
movq %rax, %rdi
movq %r12, %rsi
callq 0x9b14d
movq %rbx, %rdi
movq %r15, %rsi
callq 0x97f31
leaq 0x15(%r14), %rdx
leaq 0x2b7c84(%rip), %rdi    # 0x2f3c23
leaq 0x2b7dd3(%rip), %rsi    # 0x2f3d79
xorl %ecx, %ecx
callq 0x9a997
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
leaq 0x1c(%r14), %rdx
leaq 0x2b6aad(%rip), %rdi    # 0x2f2a70
leaq 0x2b6aae(%rip), %rsi    # 0x2f2a78
pushq $0xa
popq %rbp
movl %ebp, %ecx
callq 0x9abcd
movq %rax, %r15
movq %rax, %rdi
callq 0x9b0c7
movq %r15, %rdi
movq (%rsp), %r12
movq %r12, %rsi
callq 0x9b14d
movq %rbx, %rdi
movq %r15, %rsi
callq 0x97f31
leaq 0x24(%r14), %rdx
leaq 0x2b6aaf(%rip), %rdi    # 0x2f2ab3
leaq 0x2b6ab6(%rip), %rsi    # 0x2f2ac1
pushq $0x1
popq %r8
movl %ebp, %ecx
callq 0x9abef
movq %rax, %r15
movq %rax, %rdi
callq 0x9b0c7
movq %r15, %rdi
movq %r12, %rsi
callq 0x9b14d
movq %rbx, %rdi
movq %r15, %rsi
callq 0x97f31
leaq 0xe(%r14), %rdx
leaq 0x2f480e(%rip), %rdi    # 0x330850
leaq 0x2b7d50(%rip), %rsi    # 0x2f3d99
xorl %ecx, %ecx
callq 0x9a997
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
leaq 0x8(%r14), %rdx
leaq 0x2b7d7c(%rip), %rdi    # 0x2f3de2
leaq 0x2b7d5b(%rip), %rsi    # 0x2f3dc8
xorl %ecx, %ecx
callq 0x9a997
movq %rax, %r15
movq %rax, %rdi
callq 0x9b10a
movq %rbx, %rdi
movq %r15, %rsi
callq 0x97f31
leaq 0x9(%r14), %rdi
callq 0x9a9b6
movq %rax, %r15
movq %rbx, %rdi
movq %rax, %rsi
callq 0x97f31
addq $0xa, %r14
leaq 0x2ea99c(%rip), %rdi    # 0x326a48
leaq 0x2b6691(%rip), %rsi    # 0x2f2744
movq %r14, %rdx
xorl %ecx, %ecx
callq 0x9a997
movq %rax, %r14
movq %rax, %rdi
movq %r15, %rsi
callq 0x9b38d
movq %rbx, %rdi
movq %r14, %rsi
callq 0x97f31
movq %rbx, %rdi
xorl %esi, %esi
callq 0x98c29
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x3fbe6f(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x2a8f10(%rip), %rsi    # 0x2e5013
leaq 0x30c549(%rip), %rdx    # 0x348653
leaq 0x2b778f(%rip), %rcx    # 0x2f38a0
leaq 0x2b7768(%rip), %r8     # 0x2f3880
pushq $0x49
popq %r9
xorl %eax, %eax
callq 0x17a50
callq 0x17390