// File: /workspace/github_c_makefile_star2_O1/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 0xbac4b
movq %rdi, %r14
leaq 0x2a67e1(%rip), %rdi    # 0x360eb5
leaq 0x2a2213(%rip), %rsi    # 0x35c8ee
callq 0x10cc4e
movq %rax, %rbx
movq (%r14), %rdx
leaq 0x2a0f7f(%rip), %rdi    # 0x35b66c
leaq 0x2a0f80(%rip), %rsi    # 0x35b674
xorl %ecx, %ecx
callq 0x10f987
movq %rax, %r15
movq %rbx, %rdi
movq %rax, %rsi
callq 0x10cd10
movq %r15, %rdi
callq 0x10fa96
leaq 0xf(%r14), %rdx
leaq 0x2a278a(%rip), %rdi    # 0x35cea6
leaq 0x2a2204(%rip), %rsi    # 0x35c927
xorl %ecx, %ecx
callq 0x10f451
movq %rbx, %rdi
movq %rax, %rsi
callq 0x10cd10
leaq 0x10(%r14), %rdx
leaq 0x2a2238(%rip), %rdi    # 0x35c978
leaq 0x2a2236(%rip), %rsi    # 0x35c97d
xorl %ecx, %ecx
callq 0x10f451
movq %rbx, %rdi
movq %rax, %rsi
callq 0x10cd10
movq 0x28(%r14), %rdx
leaq 0x2a27f7(%rip), %rdi    # 0x35cf5b
leaq 0x2a2274(%rip), %rsi    # 0x35c9df
callq 0x10f9b8
movq %rax, %r15
movq %rbx, %rdi
movq %rax, %rsi
callq 0x10cd10
leaq 0x38(%r14), %rdx
leaq 0x2a1b7d(%rip), %rdi    # 0x35c306
leaq 0x2a1b7d(%rip), %rsi    # 0x35c30d
movl $0x1, %ecx
callq 0x10f4c7
movq %rax, %r12
movq %rax, %rdi
movq %r15, %rsi
callq 0x10fbff
movq %rbx, %rdi
movq %r12, %rsi
callq 0x10cd10
leaq 0x14(%r14), %rdx
leaq 0x30bca0(%rip), %rdi    # 0x3c645e
leaq 0x2a2269(%rip), %rsi    # 0x35ca2e
xorl %ecx, %ecx
callq 0x10f451
movq %rax, %r12
movq %rax, %rdi
movq %r15, %rsi
callq 0x10fbff
movq %rbx, %rdi
movq %r12, %rsi
callq 0x10cd10
leaq 0x13(%r14), %rdx
leaq 0x2a2273(%rip), %rdi    # 0x35ca63
leaq 0x2a2272(%rip), %rsi    # 0x35ca69
xorl %ecx, %ecx
callq 0x10f451
movq %rax, %r12
movq %rax, %rdi
movq %r15, %rsi
callq 0x10fbff
movq %rbx, %rdi
movq %r12, %rsi
callq 0x10cd10
movq 0x30(%r14), %rdx
leaq 0x2a2279(%rip), %rdi    # 0x35ca9b
leaq 0x2a2279(%rip), %rsi    # 0x35caa2
callq 0x10f9b8
movq %rax, %r12
movq %rax, %rdi
movq %r15, %rsi
callq 0x10fbff
movq %rbx, %rdi
movq %r12, %rsi
callq 0x10cd10
leaq 0x12(%r14), %rdx
leaq 0x299246(%rip), %rdi    # 0x353a98
leaq 0x2a22a1(%rip), %rsi    # 0x35cafa
xorl %ecx, %ecx
callq 0x10f451
movq %rbx, %rdi
movq %rax, %rsi
callq 0x10cd10
leaq 0x11(%r14), %rdx
leaq 0x2a268f(%rip), %rdi    # 0x35cf05
leaq 0x2a22b7(%rip), %rsi    # 0x35cb34
xorl %ecx, %ecx
callq 0x10f451
movq %rbx, %rdi
movq %rax, %rsi
callq 0x10cd10
leaq 0xd(%r14), %rdx
leaq 0x324d79(%rip), %rdi    # 0x3df613
leaq 0x2a22bf(%rip), %rsi    # 0x35cb60
xorl %ecx, %ecx
callq 0x10f451
movq %rbx, %rdi
movq %rax, %rsi
callq 0x10cd10
leaq 0xc(%r14), %rdx
leaq 0x2fe5d4(%rip), %rdi    # 0x3b8e92
leaq 0x2a1133(%rip), %rsi    # 0x35b9f8
xorl %ecx, %ecx
callq 0x10f451
movq %rbx, %rdi
movq %rax, %rsi
callq 0x10cd10
leaq 0xb(%r14), %rdx
leaq 0x2a158d(%rip), %rdi    # 0x35be6f
leaq 0x2a22aa(%rip), %rsi    # 0x35cb93
xorl %ecx, %ecx
callq 0x10f451
movq %rax, %r15
movq %rbx, %rdi
movq %rax, %rsi
movq %rax, (%rsp)
callq 0x10cd10
leaq 0x20(%r14), %rdx
leaq 0x2a1154(%rip), %rdi    # 0x35ba61
leaq 0x2a1154(%rip), %rsi    # 0x35ba68
movl $0x3, %ecx
callq 0x10f719
movq %rax, %r12
movq %rax, %rdi
callq 0x10fbdf
movq %r12, %rdi
movq %r15, %rsi
callq 0x10fbff
movq %rbx, %rdi
movq %r12, %rsi
callq 0x10cd10
leaq 0x40(%r14), %rdx
leaq 0x2a233c(%rip), %rdi    # 0x35cc86
leaq 0x2a2262(%rip), %rsi    # 0x35cbb3
xorl %ecx, %ecx
callq 0x10f4c7
movq %rax, %r12
leaq 0x48(%r14), %rdx
leaq 0x332d0b(%rip), %rdi    # 0x3ed671
leaq 0x2a2296(%rip), %rsi    # 0x35cc03
xorl %ecx, %ecx
callq 0x10f4c7
movq %rax, %r13
movq %rax, %rdi
movq %r12, %rsi
callq 0x10fbff
movq %r12, %rdi
movq %r13, %rsi
callq 0x10fbff
movq %rbx, %rdi
movq %r12, %rsi
callq 0x10cd10
movq %rbx, %rdi
movq %r13, %rsi
callq 0x10cd10
leaq 0x16(%r14), %rdx
leaq 0x2a22a7(%rip), %rdi    # 0x35cc55
leaq 0x2a22a6(%rip), %rsi    # 0x35cc5b
xorl %ecx, %ecx
callq 0x10f451
movq %rax, %rbp
movq %rax, %rdi
movq %r12, %rsi
callq 0x10fbff
movq %rbx, %rdi
movq %rbp, %rsi
callq 0x10cd10
leaq 0x18(%r14), %rdx
leaq 0x2a22ab(%rip), %rdi    # 0x35cc8b
leaq 0x2a22aa(%rip), %rsi    # 0x35cc91
xorl %ecx, %ecx
callq 0x10f451
movq %rax, %r15
movq %rax, %rdi
movq %r12, %rsi
callq 0x10fbff
movq %r15, %rdi
movq %rbp, %rsi
callq 0x10fd9f
movq %rbx, %rdi
movq %r15, %rsi
callq 0x10cd10
leaq 0x17(%r14), %rdx
leaq 0x2a22a4(%rip), %rdi    # 0x35ccc1
leaq 0x2a22a1(%rip), %rsi    # 0x35ccc5
xorl %ecx, %ecx
callq 0x10f451
movq %rax, %r15
movq %rax, %rdi
movq %r13, %rsi
callq 0x10fbff
movq %rbx, %rdi
movq %r15, %rsi
callq 0x10cd10
leaq 0x19(%r14), %rdx
leaq 0x2a22a4(%rip), %rdi    # 0x35ccf3
leaq 0x2a22a1(%rip), %rsi    # 0x35ccf7
xorl %ecx, %ecx
callq 0x10f451
movq %rax, %rbp
movq %rax, %rdi
movq %r13, %rsi
callq 0x10fbff
movq %rbp, %rdi
movq %r15, %rsi
callq 0x10fd9f
movq %rbx, %rdi
movq %rbp, %rsi
callq 0x10cd10
leaq 0x50(%r14), %rdx
leaq 0x29ece1(%rip), %rdi    # 0x35976d
leaq 0x2a2292(%rip), %rsi    # 0x35cd25
xorl %ecx, %ecx
callq 0x10f4c7
movq %rax, %r15
movq %rax, %rdi
movq %r12, %rsi
callq 0x10fbff
movq %rbx, %rdi
movq %r15, %rsi
callq 0x10cd10
leaq 0x58(%r14), %rdx
leaq 0x2c7c8d(%rip), %rdi    # 0x38274b
leaq 0x2a229e(%rip), %rsi    # 0x35cd63
movl $0x3e8, %ecx            # imm = 0x3E8
callq 0x10f4c7
movq %rax, %r15
movq %rax, %rdi
movq %r12, %rsi
callq 0x10fbff
movq %rbx, %rdi
movq %r15, %rsi
callq 0x10cd10
leaq 0x15(%r14), %rdx
leaq 0x2a2158(%rip), %rdi    # 0x35cc4b
leaq 0x2a22a7(%rip), %rsi    # 0x35cda1
xorl %ecx, %ecx
callq 0x10f451
movq %rbx, %rdi
movq %rax, %rsi
callq 0x10cd10
leaq 0x1c(%r14), %rdx
leaq 0x2a0f81(%rip), %rdi    # 0x35ba98
leaq 0x2a0f82(%rip), %rsi    # 0x35baa0
movl $0xa, %ecx
callq 0x10f719
movq %rax, %r15
movq %rax, %rdi
callq 0x10fbdf
movq %r15, %rdi
movq (%rsp), %r12
movq %r12, %rsi
callq 0x10fbff
movq %rbx, %rdi
movq %r15, %rsi
callq 0x10cd10
leaq 0x24(%r14), %rdx
leaq 0x2a0f83(%rip), %rdi    # 0x35badb
leaq 0x2a0f8a(%rip), %rsi    # 0x35bae9
movl $0xa, %ecx
movl $0x1, %r8d
callq 0x10f73b
movq %rax, %r15
movq %rax, %rdi
callq 0x10fbdf
movq %r15, %rdi
movq %r12, %rsi
callq 0x10fbff
movq %rbx, %rdi
movq %r15, %rsi
callq 0x10cd10
leaq 0xe(%r14), %rdx
leaq 0x2ded9f(%rip), %rdi    # 0x39993a
leaq 0x2a221f(%rip), %rsi    # 0x35cdc1
xorl %ecx, %ecx
callq 0x10f451
movq %rbx, %rdi
movq %rax, %rsi
callq 0x10cd10
leaq 0x8(%r14), %rdx
leaq 0x2a224b(%rip), %rdi    # 0x35ce0a
leaq 0x2a222a(%rip), %rsi    # 0x35cdf0
xorl %ecx, %ecx
callq 0x10f451
movq %rax, %r15
movq %rax, %rdi
callq 0x10fbef
movq %rbx, %rdi
movq %r15, %rsi
callq 0x10cd10
leaq 0x9(%r14), %rdi
callq 0x10f473
movq %rax, %r15
movq %rbx, %rdi
movq %rax, %rsi
callq 0x10cd10
addq $0xa, %r14
leaq 0x2d4e23(%rip), %rdi    # 0x38fa28
leaq 0x2a0b60(%rip), %rsi    # 0x35b76c
movq %r14, %rdx
xorl %ecx, %ecx
callq 0x10f451
movq %rax, %r14
movq %rax, %rdi
movq %r15, %rsi
callq 0x10fd9f
movq %rbx, %rdi
movq %r14, %rsi
callq 0x10cd10
movq %rbx, %rdi
xorl %esi, %esi
callq 0x10d775
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0x1de38