// File: /workspace/github_c_makefile_star2_O0/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:
subq $0x88, %rsp
movq %rdi, 0x80(%rsp)
movq 0x80(%rsp), %rax
movq %rax, 0x78(%rsp)
cmpq $0x0, 0x78(%rsp)
jne 0x51fac
movq 0x5ea025(%rip), %rax    # 0x63bfa0
movq (%rax), %rdi
leaq 0x4c408e(%rip), %rsi    # 0x516013
leaq 0x528bd3(%rip), %rdx    # 0x57ab5f
leaq 0x4d29de(%rip), %rcx    # 0x524971
leaq 0x4d29b7(%rip), %r8     # 0x524951
movl $0x49, %r9d
movb $0x0, %al
callq 0x199f0
callq 0x19370
jmp 0x51fae
leaq 0x4d6fa8(%rip), %rdi    # 0x528f5d
leaq 0x4d29db(%rip), %rsi    # 0x524997
callq 0xf1420
movq %rax, 0x70(%rsp)
movq 0x78(%rsp), %rax
movq (%rax), %rdx
leaq 0x4d16df(%rip), %rdi    # 0x5236b4
leaq 0x4d16e0(%rip), %rsi    # 0x5236bc
xorl %eax, %eax
movl %eax, %ecx
callq 0xf69f0
movq %rax, 0x68(%rsp)
movq 0x70(%rsp), %rdi
movq 0x68(%rsp), %rsi
callq 0xf1600
movq 0x68(%rsp), %rdi
callq 0xf6ca0
movq 0x78(%rsp), %rdx
addq $0xf, %rdx
leaq 0x4d2f3c(%rip), %rdi    # 0x524f4f
leaq 0x4d29b6(%rip), %rsi    # 0x5249d0
xorl %ecx, %ecx
callq 0xf5f20
movq %rax, 0x68(%rsp)
movq 0x70(%rsp), %rdi
movq 0x68(%rsp), %rsi
callq 0xf1600
movq 0x78(%rsp), %rdx
addq $0x10, %rdx
leaq 0x4d29dc(%rip), %rdi    # 0x524a21
leaq 0x4d29da(%rip), %rsi    # 0x524a26
xorl %ecx, %ecx
callq 0xf5f20
movq %rax, 0x68(%rsp)
movq 0x70(%rsp), %rdi
movq 0x68(%rsp), %rsi
callq 0xf1600
movq 0x78(%rsp), %rax
movq 0x28(%rax), %rdx
leaq 0x4d2f8d(%rip), %rdi    # 0x525004
leaq 0x4d2a0a(%rip), %rsi    # 0x524a88
callq 0xf6a50
movq %rax, 0x30(%rsp)
movq 0x70(%rsp), %rdi
movq 0x30(%rsp), %rsi
callq 0xf1600
movq 0x78(%rsp), %rdx
addq $0x38, %rdx
leaq 0x4d2308(%rip), %rdi    # 0x5243af
leaq 0x4d2308(%rip), %rsi    # 0x5243b6
movl $0x1, %ecx
callq 0xf5fe0
movq %rax, 0x68(%rsp)
movq 0x68(%rsp), %rdi
movq 0x30(%rsp), %rsi
callq 0xf7090
movq 0x70(%rsp), %rdi
movq 0x68(%rsp), %rsi
callq 0xf1600
movq 0x78(%rsp), %rdx
addq $0x14, %rdx
leaq 0x53de56(%rip), %rdi    # 0x58ff41
leaq 0x4d29e5(%rip), %rsi    # 0x524ad7
xorl %ecx, %ecx
callq 0xf5f20
movq %rax, 0x68(%rsp)
movq 0x68(%rsp), %rdi
movq 0x30(%rsp), %rsi
callq 0xf7090
movq 0x70(%rsp), %rdi
movq 0x68(%rsp), %rsi
callq 0xf1600
movq 0x78(%rsp), %rdx
addq $0x13, %rdx
leaq 0x4d29e0(%rip), %rdi    # 0x524b0c
leaq 0x4d29df(%rip), %rsi    # 0x524b12
xorl %ecx, %ecx
callq 0xf5f20
movq %rax, 0x68(%rsp)
movq 0x68(%rsp), %rdi
movq 0x30(%rsp), %rsi
callq 0xf7090
movq 0x70(%rsp), %rdi
movq 0x68(%rsp), %rsi
callq 0xf1600
movq 0x78(%rsp), %rax
movq 0x30(%rax), %rdx
leaq 0x4d29d7(%rip), %rdi    # 0x524b44
leaq 0x4d29d7(%rip), %rsi    # 0x524b4b
callq 0xf6a50
movq %rax, 0x28(%rsp)
movq 0x28(%rsp), %rdi
movq 0x30(%rsp), %rsi
callq 0xf7090
movq 0x70(%rsp), %rdi
movq 0x28(%rsp), %rsi
callq 0xf1600
movq 0x78(%rsp), %rdx
addq $0x12, %rdx
leaq 0x4c9924(%rip), %rdi    # 0x51bad0
leaq 0x4d29f0(%rip), %rsi    # 0x524ba3
xorl %ecx, %ecx
callq 0xf5f20
movq %rax, 0x68(%rsp)
movq 0x70(%rsp), %rdi
movq 0x68(%rsp), %rsi
callq 0xf1600
movq 0x78(%rsp), %rdx
addq $0x11, %rdx
leaq 0x4d2dd0(%rip), %rdi    # 0x524fae
leaq 0x4d29f8(%rip), %rsi    # 0x524bdd
xorl %ecx, %ecx
callq 0xf5f20
movq %rax, 0x68(%rsp)
movq 0x70(%rsp), %rdi
movq 0x68(%rsp), %rsi
callq 0xf1600
movq 0x78(%rsp), %rdx
addq $0xd, %rdx
leaq 0x559143(%rip), %rdi    # 0x5ab353
leaq 0x4d29f2(%rip), %rsi    # 0x524c09
xorl %ecx, %ecx
callq 0xf5f20
movq %rax, 0x68(%rsp)
movq 0x70(%rsp), %rdi
movq 0x68(%rsp), %rsi
callq 0xf1600
movq 0x78(%rsp), %rdx
addq $0xc, %rdx
leaq 0x5303a2(%rip), %rdi    # 0x5825e4
leaq 0x4d17f7(%rip), %rsi    # 0x523a40
xorl %ecx, %ecx
callq 0xf5f20
movq %rax, 0x68(%rsp)
movq 0x70(%rsp), %rdi
movq 0x68(%rsp), %rsi
callq 0xf1600
movq 0x78(%rsp), %rdx
addq $0xb, %rdx
leaq 0x4d1c43(%rip), %rdi    # 0x523eb7
leaq 0x4d29c1(%rip), %rsi    # 0x524c3c
xorl %ecx, %ecx
callq 0xf5f20
movq %rax, 0x60(%rsp)
movq 0x70(%rsp), %rdi
movq 0x60(%rsp), %rsi
callq 0xf1600
movq 0x78(%rsp), %rdx
addq $0x20, %rdx
leaq 0x4d1803(%rip), %rdi    # 0x523aa9
leaq 0x4d1803(%rip), %rsi    # 0x523ab0
movl $0x3, %ecx
callq 0xf64b0
movq %rax, 0x40(%rsp)
movq 0x40(%rsp), %rdi
callq 0xf6ff0
movq 0x40(%rsp), %rdi
movq 0x60(%rsp), %rsi
callq 0xf7090
movq 0x70(%rsp), %rdi
movq 0x40(%rsp), %rsi
callq 0xf1600
movq 0x78(%rsp), %rdx
addq $0x40, %rdx
leaq 0x4d2a3b(%rip), %rdi    # 0x524d2f
leaq 0x4d2961(%rip), %rsi    # 0x524c5c
xorl %eax, %eax
movl %eax, %ecx
callq 0xf5fe0
movq %rax, 0x20(%rsp)
movq 0x78(%rsp), %rdx
addq $0x48, %rdx
leaq 0x5673c8(%rip), %rdi    # 0x5b96e1
leaq 0x4d298c(%rip), %rsi    # 0x524cac
xorl %eax, %eax
movl %eax, %ecx
callq 0xf5fe0
movq %rax, 0x18(%rsp)
movq 0x18(%rsp), %rdi
movq 0x20(%rsp), %rsi
callq 0xf7090
movq 0x20(%rsp), %rdi
movq 0x18(%rsp), %rsi
callq 0xf7090
movq 0x70(%rsp), %rdi
movq 0x20(%rsp), %rsi
callq 0xf1600
movq 0x70(%rsp), %rdi
movq 0x18(%rsp), %rsi
callq 0xf1600
movq 0x78(%rsp), %rdx
addq $0x16, %rdx
leaq 0x4d2984(%rip), %rdi    # 0x524cfe
leaq 0x4d2983(%rip), %rsi    # 0x524d04
xorl %ecx, %ecx
callq 0xf5f20
movq %rax, 0x10(%rsp)
movq 0x10(%rsp), %rdi
movq 0x20(%rsp), %rsi
callq 0xf7090
movq 0x70(%rsp), %rdi
movq 0x10(%rsp), %rsi
callq 0xf1600
movq 0x78(%rsp), %rdx
addq $0x18, %rdx
leaq 0x4d2979(%rip), %rdi    # 0x524d34
leaq 0x4d2978(%rip), %rsi    # 0x524d3a
xorl %ecx, %ecx
callq 0xf5f20
movq %rax, 0x68(%rsp)
movq 0x68(%rsp), %rdi
movq 0x20(%rsp), %rsi
callq 0xf7090
movq 0x68(%rsp), %rdi
movq 0x10(%rsp), %rsi
callq 0xf7320
movq 0x70(%rsp), %rdi
movq 0x68(%rsp), %rsi
callq 0xf1600
movq 0x78(%rsp), %rdx
addq $0x17, %rdx
leaq 0x4d295f(%rip), %rdi    # 0x524d6a
leaq 0x4d295c(%rip), %rsi    # 0x524d6e
xorl %ecx, %ecx
callq 0xf5f20
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rdi
movq 0x18(%rsp), %rsi
callq 0xf7090
movq 0x70(%rsp), %rdi
movq 0x8(%rsp), %rsi
callq 0xf1600
movq 0x78(%rsp), %rdx
addq $0x19, %rdx
leaq 0x4d2950(%rip), %rdi    # 0x524d9c
leaq 0x4d294d(%rip), %rsi    # 0x524da0
xorl %ecx, %ecx
callq 0xf5f20
movq %rax, 0x68(%rsp)
movq 0x68(%rsp), %rdi
movq 0x18(%rsp), %rsi
callq 0xf7090
movq 0x68(%rsp), %rdi
movq 0x8(%rsp), %rsi
callq 0xf7320
movq 0x70(%rsp), %rdi
movq 0x68(%rsp), %rsi
callq 0xf1600
movq 0x78(%rsp), %rdx
addq $0x50, %rdx
leaq 0x4cf314(%rip), %rdi    # 0x5217b0
leaq 0x4d292b(%rip), %rsi    # 0x524dce
xorl %eax, %eax
movl %eax, %ecx
callq 0xf5fe0
movq %rax, 0x68(%rsp)
movq 0x68(%rsp), %rdi
movq 0x20(%rsp), %rsi
callq 0xf7090
movq 0x70(%rsp), %rdi
movq 0x68(%rsp), %rsi
callq 0xf1600
movq 0x78(%rsp), %rdx
addq $0x58, %rdx
leaq 0x4f926c(%rip), %rdi    # 0x54b74b
leaq 0x4d2926(%rip), %rsi    # 0x524e0c
movl $0x3e8, %ecx            # imm = 0x3E8
callq 0xf5fe0
movq %rax, 0x68(%rsp)
movq 0x68(%rsp), %rdi
movq 0x20(%rsp), %rsi
callq 0xf7090
movq 0x70(%rsp), %rdi
movq 0x68(%rsp), %rsi
callq 0xf1600
movq 0x78(%rsp), %rdx
addq $0x15, %rdx
leaq 0x4d27d1(%rip), %rdi    # 0x524cf4
leaq 0x4d2920(%rip), %rsi    # 0x524e4a
xorl %ecx, %ecx
callq 0xf5f20
movq %rax, 0x68(%rsp)
movq 0x70(%rsp), %rdi
movq 0x68(%rsp), %rsi
callq 0xf1600
movq 0x78(%rsp), %rdx
addq $0x1c, %rdx
leaq 0x4d158b(%rip), %rdi    # 0x523ae0
leaq 0x4d158c(%rip), %rsi    # 0x523ae8
movl $0xa, %ecx
callq 0xf64b0
movq %rax, 0x58(%rsp)
movq 0x58(%rsp), %rdi
callq 0xf6ff0
movq 0x58(%rsp), %rdi
movq 0x60(%rsp), %rsi
callq 0xf7090
movq 0x70(%rsp), %rdi
movq 0x58(%rsp), %rsi
callq 0xf1600
movq 0x78(%rsp), %rdx
addq $0x24, %rdx
leaq 0x4d1580(%rip), %rdi    # 0x523b23
leaq 0x4d1587(%rip), %rsi    # 0x523b31
movl $0xa, %ecx
movl $0x1, %r8d
callq 0xf6510
movq %rax, 0x38(%rsp)
movq 0x38(%rsp), %rdi
callq 0xf6ff0
movq 0x38(%rsp), %rdi
movq 0x60(%rsp), %rsi
callq 0xf7090
movq 0x70(%rsp), %rdi
movq 0x38(%rsp), %rsi
callq 0xf1600
movq 0x78(%rsp), %rdx
addq $0xe, %rdx
leaq 0x51072b(%rip), %rdi    # 0x562d22
leaq 0x4d286c(%rip), %rsi    # 0x524e6a
xorl %ecx, %ecx
callq 0xf5f20
movq %rax, 0x68(%rsp)
movq 0x70(%rsp), %rdi
movq 0x68(%rsp), %rsi
callq 0xf1600
movq 0x78(%rsp), %rdx
addq $0x8, %rdx
leaq 0x4d288a(%rip), %rdi    # 0x524eb3
leaq 0x4d2869(%rip), %rsi    # 0x524e99
xorl %ecx, %ecx
callq 0xf5f20
movq %rax, 0x68(%rsp)
movq 0x68(%rsp), %rdi
callq 0xf7040
movq 0x70(%rsp), %rdi
movq 0x68(%rsp), %rsi
callq 0xf1600
movq 0x78(%rsp), %rdi
addq $0x9, %rdi
callq 0xf5f90
movq %rax, 0x50(%rsp)
movq 0x70(%rsp), %rdi
movq 0x50(%rsp), %rsi
callq 0xf1600
movq 0x78(%rsp), %rdx
addq $0xa, %rdx
leaq 0x506738(%rip), %rdi    # 0x558dbf
leaq 0x4d1126(%rip), %rsi    # 0x5237b4
xorl %ecx, %ecx
callq 0xf5f20
movq %rax, 0x48(%rsp)
movq 0x48(%rsp), %rdi
movq 0x50(%rsp), %rsi
callq 0xf7320
movq 0x70(%rsp), %rdi
movq 0x48(%rsp), %rsi
callq 0xf1600
movq 0x70(%rsp), %rdi
xorl %esi, %esi
callq 0xf29e0
movq 0x70(%rsp), %rax
addq $0x88, %rsp
retq
nopw %cs:(%rax,%rax)