// File: /workspace/github_c_makefile_star2_O3/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 0xb8b8f
movq %rdi, %r14
leaq 0x29f84a(%rip), %rdi    # 0x357e62
leaq 0x29b297(%rip), %rsi    # 0x3538b6
callq 0x107bfe
movq %rax, %rbx
movq (%r14), %rdx
leaq 0x29a003(%rip), %rdi    # 0x352634
leaq 0x29a004(%rip), %rsi    # 0x35263c
xorl %ecx, %ecx
callq 0x10a770
movq %rax, %r15
movq %rbx, %rdi
movq %rax, %rsi
callq 0x107cc0
movq %r15, %rdi
callq 0x10a87b
leaq 0xf(%r14), %rdx
leaq 0x29b80e(%rip), %rdi    # 0x353e6e
leaq 0x29b288(%rip), %rsi    # 0x3538ef
xorl %ecx, %ecx
callq 0x10a235
movq %rbx, %rdi
movq %rax, %rsi
callq 0x107cc0
leaq 0x10(%r14), %rdx
leaq 0x29b2bc(%rip), %rdi    # 0x353940
leaq 0x29b2ba(%rip), %rsi    # 0x353945
xorl %ecx, %ecx
callq 0x10a235
movq %rbx, %rdi
movq %rax, %rsi
callq 0x107cc0
movq 0x28(%r14), %rdx
leaq 0x29b87b(%rip), %rdi    # 0x353f23
leaq 0x29b2f8(%rip), %rsi    # 0x3539a7
callq 0x10a7a1
movq %rax, %r15
movq %rbx, %rdi
movq %rax, %rsi
callq 0x107cc0
leaq 0x38(%r14), %rdx
leaq 0x29ac01(%rip), %rdi    # 0x3532ce
leaq 0x29ac01(%rip), %rsi    # 0x3532d5
movl $0x1, %ecx
callq 0x10a2ab
movq %rax, %r12
movq %rax, %rdi
movq %r15, %rsi
callq 0x10a9e4
movq %rbx, %rdi
movq %r12, %rsi
callq 0x107cc0
leaq 0x14(%r14), %rdx
leaq 0x3046db(%rip), %rdi    # 0x3bcddd
leaq 0x29b2ed(%rip), %rsi    # 0x3539f6
xorl %ecx, %ecx
callq 0x10a235
movq %rax, %r12
movq %rax, %rdi
movq %r15, %rsi
callq 0x10a9e4
movq %rbx, %rdi
movq %r12, %rsi
callq 0x107cc0
leaq 0x13(%r14), %rdx
leaq 0x29b2f7(%rip), %rdi    # 0x353a2b
leaq 0x29b2f6(%rip), %rsi    # 0x353a31
xorl %ecx, %ecx
callq 0x10a235
movq %rax, %r12
movq %rax, %rdi
movq %r15, %rsi
callq 0x10a9e4
movq %rbx, %rdi
movq %r12, %rsi
callq 0x107cc0
movq 0x30(%r14), %rdx
leaq 0x29b2fd(%rip), %rdi    # 0x353a63
leaq 0x29b2fd(%rip), %rsi    # 0x353a6a
callq 0x10a7a1
movq %rax, %r12
movq %rax, %rdi
movq %r15, %rsi
callq 0x10a9e4
movq %rbx, %rdi
movq %r12, %rsi
callq 0x107cc0
leaq 0x12(%r14), %rdx
leaq 0x2922e1(%rip), %rdi    # 0x34aa77
leaq 0x29b325(%rip), %rsi    # 0x353ac2
xorl %ecx, %ecx
callq 0x10a235
movq %rbx, %rdi
movq %rax, %rsi
callq 0x107cc0
leaq 0x11(%r14), %rdx
leaq 0x29b713(%rip), %rdi    # 0x353ecd
leaq 0x29b33b(%rip), %rsi    # 0x353afc
xorl %ecx, %ecx
callq 0x10a235
movq %rbx, %rdi
movq %rax, %rsi
callq 0x107cc0
leaq 0xd(%r14), %rdx
leaq 0x31d6e1(%rip), %rdi    # 0x3d5ebf
leaq 0x29b343(%rip), %rsi    # 0x353b28
xorl %ecx, %ecx
callq 0x10a235
movq %rbx, %rdi
movq %rax, %rsi
callq 0x107cc0
leaq 0xc(%r14), %rdx
leaq 0x2f7090(%rip), %rdi    # 0x3af892
leaq 0x29a1b7(%rip), %rsi    # 0x3529c0
xorl %ecx, %ecx
callq 0x10a235
movq %rbx, %rdi
movq %rax, %rsi
callq 0x107cc0
leaq 0xb(%r14), %rdx
leaq 0x29a611(%rip), %rdi    # 0x352e37
leaq 0x29b32e(%rip), %rsi    # 0x353b5b
xorl %ecx, %ecx
callq 0x10a235
movq %rax, %r15
movq %rbx, %rdi
movq %rax, %rsi
movq %rax, (%rsp)
callq 0x107cc0
leaq 0x20(%r14), %rdx
leaq 0x29a1d8(%rip), %rdi    # 0x352a29
leaq 0x29a1d8(%rip), %rsi    # 0x352a30
movl $0x3, %ecx
callq 0x10a4fd
movq %rax, %r12
movq %rax, %rdi
callq 0x10a9c4
movq %r12, %rdi
movq %r15, %rsi
callq 0x10a9e4
movq %rbx, %rdi
movq %r12, %rsi
callq 0x107cc0
leaq 0x40(%r14), %rdx
leaq 0x29b3c0(%rip), %rdi    # 0x353c4e
leaq 0x29b2e6(%rip), %rsi    # 0x353b7b
xorl %ecx, %ecx
callq 0x10a2ab
movq %rax, %r12
leaq 0x48(%r14), %rdx
leaq 0x32b617(%rip), %rdi    # 0x3e3ec1
leaq 0x29b31a(%rip), %rsi    # 0x353bcb
xorl %ecx, %ecx
callq 0x10a2ab
movq %rax, %r13
movq %rax, %rdi
movq %r12, %rsi
callq 0x10a9e4
movq %r12, %rdi
movq %r13, %rsi
callq 0x10a9e4
movq %rbx, %rdi
movq %r12, %rsi
callq 0x107cc0
movq %rbx, %rdi
movq %r13, %rsi
callq 0x107cc0
leaq 0x16(%r14), %rdx
leaq 0x29b32b(%rip), %rdi    # 0x353c1d
leaq 0x29b32a(%rip), %rsi    # 0x353c23
xorl %ecx, %ecx
callq 0x10a235
movq %rax, %rbp
movq %rax, %rdi
movq %r12, %rsi
callq 0x10a9e4
movq %rbx, %rdi
movq %rbp, %rsi
callq 0x107cc0
leaq 0x18(%r14), %rdx
leaq 0x29b32f(%rip), %rdi    # 0x353c53
leaq 0x29b32e(%rip), %rsi    # 0x353c59
xorl %ecx, %ecx
callq 0x10a235
movq %rax, %r15
movq %rax, %rdi
movq %r12, %rsi
callq 0x10a9e4
movq %r15, %rdi
movq %rbp, %rsi
callq 0x10ab96
movq %rbx, %rdi
movq %r15, %rsi
callq 0x107cc0
leaq 0x17(%r14), %rdx
leaq 0x29b328(%rip), %rdi    # 0x353c89
leaq 0x29b325(%rip), %rsi    # 0x353c8d
xorl %ecx, %ecx
callq 0x10a235
movq %rax, %r15
movq %rax, %rdi
movq %r13, %rsi
callq 0x10a9e4
movq %rbx, %rdi
movq %r15, %rsi
callq 0x107cc0
leaq 0x19(%r14), %rdx
leaq 0x29b328(%rip), %rdi    # 0x353cbb
leaq 0x29b325(%rip), %rsi    # 0x353cbf
xorl %ecx, %ecx
callq 0x10a235
movq %rax, %rbp
movq %rax, %rdi
movq %r13, %rsi
callq 0x10a9e4
movq %rbp, %rdi
movq %r15, %rsi
callq 0x10ab96
movq %rbx, %rdi
movq %rbp, %rsi
callq 0x107cc0
leaq 0x50(%r14), %rdx
leaq 0x297d6d(%rip), %rdi    # 0x35073d
leaq 0x29b316(%rip), %rsi    # 0x353ced
xorl %ecx, %ecx
callq 0x10a2ab
movq %rax, %r15
movq %rax, %rdi
movq %r12, %rsi
callq 0x10a9e4
movq %rbx, %rdi
movq %r15, %rsi
callq 0x107cc0
leaq 0x58(%r14), %rdx
leaq 0x2c0a2b(%rip), %rdi    # 0x37942d
leaq 0x29b322(%rip), %rsi    # 0x353d2b
movl $0x3e8, %ecx            # imm = 0x3E8
callq 0x10a2ab
movq %rax, %r15
movq %rax, %rdi
movq %r12, %rsi
callq 0x10a9e4
movq %rbx, %rdi
movq %r15, %rsi
callq 0x107cc0
leaq 0x15(%r14), %rdx
leaq 0x29b1dc(%rip), %rdi    # 0x353c13
leaq 0x29b32b(%rip), %rsi    # 0x353d69
xorl %ecx, %ecx
callq 0x10a235
movq %rbx, %rdi
movq %rax, %rsi
callq 0x107cc0
leaq 0x1c(%r14), %rdx
leaq 0x29a005(%rip), %rdi    # 0x352a60
leaq 0x29a006(%rip), %rsi    # 0x352a68
movl $0xa, %ecx
callq 0x10a4fd
movq %rax, %r15
movq %rax, %rdi
callq 0x10a9c4
movq %r15, %rdi
movq (%rsp), %r12
movq %r12, %rsi
callq 0x10a9e4
movq %rbx, %rdi
movq %r15, %rsi
callq 0x107cc0
leaq 0x24(%r14), %rdx
leaq 0x29a007(%rip), %rdi    # 0x352aa3
leaq 0x29a00e(%rip), %rsi    # 0x352ab1
movl $0xa, %ecx
movl $0x1, %r8d
callq 0x10a51f
movq %rax, %r15
movq %rax, %rdi
callq 0x10a9c4
movq %r15, %rdi
movq %r12, %rsi
callq 0x10a9e4
movq %rbx, %rdi
movq %r15, %rsi
callq 0x107cc0
leaq 0xe(%r14), %rdx
leaq 0x2d7a33(%rip), %rdi    # 0x390512
leaq 0x29b2a3(%rip), %rsi    # 0x353d89
xorl %ecx, %ecx
callq 0x10a235
movq %rbx, %rdi
movq %rax, %rsi
callq 0x107cc0
leaq 0x8(%r14), %rdx
leaq 0x29b2cf(%rip), %rdi    # 0x353dd2
leaq 0x29b2ae(%rip), %rsi    # 0x353db8
xorl %ecx, %ecx
callq 0x10a235
movq %rax, %r15
movq %rax, %rdi
callq 0x10a9d4
movq %rbx, %rdi
movq %r15, %rsi
callq 0x107cc0
leaq 0x9(%r14), %rdi
callq 0x10a257
movq %rax, %r15
movq %rbx, %rdi
movq %rax, %rsi
callq 0x107cc0
addq $0xa, %r14
leaq 0x2cdaff(%rip), %rdi    # 0x386648
leaq 0x299be4(%rip), %rsi    # 0x352734
movq %r14, %rdx
xorl %ecx, %ecx
callq 0x10a235
movq %rax, %r14
movq %rax, %rdi
movq %r15, %rsi
callq 0x10ab96
movq %rbx, %rdi
movq %r14, %rsi
callq 0x107cc0
movq %rbx, %rdi
xorl %esi, %esi
callq 0x10873c
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0x1db1e