#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ printf(char *, char *, char *, char *, char *, char *,
                          char *);
void help(char *argv[]) {
  printf(
      "Displays a tree as a graph, as text or SVG.\n"
      "\n"
      "Synopsis\n"
      "--------\n"
      "\n"
      "%s [-aAbcdhiIlLrRsuUvwW] <tree filename|->\n"
      "\n"
      "Input\n"
      "-----\n"
      "\n"
      "Argument is the name of the file containing one or more trees,\n"
      "or '-' (in which case the tree is read on stdin).\n"
      "\n"
      "Output\n"
      "------\n"
      "\n"
      "Outputs a graph representing the tree, either as text (default) or\n"
      "as SVG (option -s). Underscores in labels are replaced with spaces.\n"
      "Trees with no branch lengths are taken to be cladograms and are\n"
      "drawn with leaves aligned. Otherwise, the tree is assumed to be a\n"
      "phylogram: branch lengths are honored and a scale bar is drawn.\n"
      "\n"
      "SVG graphics can be converted to other formats with converters\n"
      "such as Inkscape (e.g. to PDF) or ImageMagick (e.g. to PNG or JPEG).\n"
      "Inkscape is available from www.inkscape.org and ImageMagick from\n"
      "www.imagemagick.org.\n"
      "\n"
      "Options\n"
      "-------\n"
      "\n"
      "    -a <number>: rotate all labels by this amount (radians, default: "
      "0)\n"
      "       [only SVG radial]\n"
      "    -A <number>: rotate left-side labels by this amount (radians,\n"
      "       default: 0.0349 (=~ 2°)) [only SVG radial]\n"
      "    -b <string>: CSS for branch length labels. [only SVG]\n"
      "       Default: 'font-size:small;font-family:sans'.\n"
      "       setting 'opacity:0' disables printing of branch lengths.\n"
      "    -c <filename>: use specified file as CSS map [only SVG]. A CSS map\n"
      "       is a text file which specifies a style (CSS) for a clade.\n"
      "       Each line has the following structure:\n"
      "       <CSS> <flag> <label>+\n"
      "       <CSS> is a valid CSS style specification (no spaces allowed)\n"
      "       e.g. 'font-size:small;font-family:italics;stroke:green'.\n"
      "       <flag> is either 'Individual' or 'Clade' (case is not important, "
      "can\n"
      "       be abbreviated down to 'I' or 'C'). If set to 'Clade', the style "
      "is\n"
      "       applied to the clade defined by the labels. If 'Individual', "
      "the\n"
      "       style is applied to each node individually.\n"
      "       <label>+ is a nonempty, whitespace-separated list of Newick "
      "labels\n"
      "       (spaces are allowed IFF the label is enclosed in ''). If a "
      "label\n"
      "       matches more than one node, all matching nodes are used.\n"
      "       Default: no CSS map, whole tree is black (unless specified "
      "otherwise\n"
      "       via option -d).\n"
      "       <CSS>, <flag>, and <labels>+ are separated by whitespace.\n"
      "       The following specifies red stroke for a clade defined by A, B "
      "and C;\n"
      "       and 2-pixel wide, blue stroke for individual nodes D, E, and F:\n"
      "       stroke:red			Clade	A B C\n"
      "       stroke:blue;stroke-width:2	I	D E F\n"
      "       If no colormap is specified, the default is (but see option "
      "-d):\n"
      "       stroke:black;fill:none;stroke-width:1;stroke-linecap:round\n"
      "    -d <string>: CSS for 'plain' tree nodes (i.e., unless overridden by "
      "-c)\n"
      "       [only SVG]\n"
      "       Default: "
      "stroke:black;fill:none;stroke-width:1;stroke-linecap:round\n"
      "    -h: prints this message and exits\n"
      "    -i <string>: CSS for inner node labels. [only SVG]\n"
      "       Default: 'font-size:small;font-family:sans'.\n"
      "       setting 'visibility:hidden' disables printing of inner node "
      "labels.\n"
      "    -I <char> sets the position of the inner node label. Valid options "
      "are\n"
      "       'l' (near the leaves), 'm' (middle) or 'r' (near the root). "
      "Default\n"
      "       is 'l'.\n"
      "    -l <string>: CSS for leaf node labels. [only SVG]\n"
      "       Default: 'font-size:medium;font-family:sans'.\n"
      "       setting 'visibility:hidden' disables printing of leaf node "
      "labels.\n"
      "       Note: if you change this, you will probably need to adjust the\n"
      "       space allocated to leaf labels - see option -W.\n"
      "    -o <filename>: use specified file as ornament map. Works like the "
      "CSS\n"
      "       map (see option -c), except that it specifies arbitrary SVG "
      "snippets\n"
      "       instead of CSS styles. For example, the following\n"
      "       \"<circle style='fill:red' r='5'>\" Clade A B C\n"
      "       will draw a red circle of radius 5 at the root of the clade "
      "defined\n"
      "       by nodes A, B, and C. Keyword 'Individual' is also accepted and\n"
      "       works like for CSS.\n"
      "    -R <integer>: use that many pixels for the root [only SVG]\n"
      "    -r: draw a radial tree (default: orthogonal) [only SVG]\n"
      "    -s: output graph as SVG (default: ASCII graphics). All output is "
      "on\n"
      "       stdout, so if there is more than one tree, stdout will be a\n"
      "       concatenation of SVG documents. These can be split into "
      "individual\n"
      "       files with the csplit(1) command:\n"
      "\n"
      "       $ nw_display -s many_trees.nw > multiple_svg\n"
      "       $ csplit -zs -f tree_ -b '%%02d.svg' multiple_svg '/<?xml/' {*}\n"
      "\n"
      "       will generate as many SVG files as there are Newick trees in\n"
      "       many_trees.nw. The files will be named tree_01.svg, tree_02.svg, "
      "etc.\n"
      "    -S: suppress scale bar (ignored for cladograms)\n"
      "    -t: set the zero of the scale at the maximum depth instead of the "
      "root.\n"
      "       This is useful when the branch lengths are in time units: zero "
      "marks\n"
      "       the present, and the scale shows the age of the ancestral "
      "nodes.\n"
      "    -u <string>: string is used as unit name for scale bar (ignored\n"
      "       if no scale bar is drawn).\n"
      "    -U <URL_filename>: use specified URL map [only SVG]. A URL map\n"
      "       is a text file which specifies a URL for a label.\n"
      "       Each line has the following structure:\n"
      "       <label> <URL>\n"
      "       Clicking on a label will follow the link (if any).\n"
      "    -v <number>: number of pixels between leaves (default: 40) [only "
      "SVG\n"
      "       orthogonal]\n"
      "    -w <number>: graph should be no wider than <number>, measured in\n"
      "       characters for text and pixels for SVG. Defaults: 80 (text),\n"
      "       300 (SVG)\n"
      "    -W <number>: use this as an estimate of the width of a leaf label\n"
      "       character (in pixels) [only SVG]. This affects the space left "
      "for\n"
      "       the tree nodes. Default: 5.0 You will probably need this if you\n"
      "       change the leaf label font properties (option -l), especially "
      "size.\n"
      "       You will probably need trial and error to find the right value.\n"
      "\n"
      "Examples\n"
      "--------\n"
      "\n"
      "# display tree as ASCII\n"
      "$ %s data/catarrhini\n"
      "\n"
      "# display tree as SVG, using a color map\n"
      "$ %s -s -c data/color.map data/catarrhini\n"
      "\n"
      "# ditto, convert to other graphics formats\n"
      "$ %s -s -c data/color.map data/catarrhini > catarrhini.svg\n"
      "$ convert catarrhini.svg catarrhini.png	# PNG, with ImageMagick\n"
      "$ convert catarrhini.svg catarrhini.jpeg	# JPEG, with ImageMagick\n"
      "$ inkscape -z -f catarrhini.svg -A catarrhini.pdf # PDF, with Inkscape\n"
      "\n"
      "# the same; no branch lengths\n"
      "$ %s -s -b 'visibility:hidden' -c data/color.map data/catarrhini\n"
      "\n"
      "# radial tree, leaf labels in italics\n"
      "$ %s -s -r -l 'font-style:italics' data/catarrhini\n",
      argv[0], argv[0], argv[0], argv[0], argv[0], argv[0]);
}


x86 assembly (clang, -O0):
<help>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %rdi,-0x8(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%rsi
mov    -0x8(%rbp),%rax
mov    (%rax),%rdx
mov    -0x8(%rbp),%rax
mov    (%rax),%rcx
mov    -0x8(%rbp),%rax
mov    (%rax),%r8
mov    -0x8(%rbp),%rax
mov    (%rax),%r9
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
lea    0xeb3(%rip),%rdi
mov    %rax,(%rsp)
call   1030 <printf@plt>
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<help>:
push   %rax
mov    (%rdi),%rcx
mov    %rcx,(%rsp)
lea    0xee1(%rip),%rdi
mov    %rcx,%rsi
mov    %rcx,%rdx
mov    %rcx,%r8
mov    %rcx,%r9
call   1030 <printf@plt>
pop    %rax
ret

LLVM IR (-O0):
@.str = [6368 x i8] c"Displays a tree as a graph, as text or SVG.\0A\0ASynopsis\0A--------\0A\0A%s [-aAbcdhiIlLrRsuUvwW] <tree filename|->\0A\0AInput\0A-----\0A\0AArgument is the name of the file containing one or more trees,\0Aor '-' (in which case the tree is read on stdin).\0A\0AOutput\0A------\0A\0AOutputs a graph representing the tree, either as text (default) or\0Aas SVG (option -s). Underscores in labels are replaced with spaces.\0ATrees with no branch lengths are taken to be cladograms and are\0Adrawn with leaves aligned. Otherwise, the tree is assumed to be a\0Aphylogram: branch lengths are honored and a scale bar is drawn.\0A\0ASVG graphics can be converted to other formats with converters\0Asuch as Inkscape (e.g. to PDF) or ImageMagick (e.g. to PNG or JPEG).\0AInkscape is available from www.inkscape.org and ImageMagick from\0Awww.imagemagick.org.\0A\0AOptions\0A-------\0A\0A -a <number>: rotate all labels by this amount (radians, default: 0)\0A [only SVG radial]\0A -A <number>: rotate left-side labels by this amount (radians,\0A default: 0.0349 (=~ 2\C2\B0)) [only SVG radial]\0A -b <string>: CSS for branch length labels. [only SVG]\0A Default: 'font-size:small;font-family:sans'.\0A setting 'opacity:0' disables printing of branch lengths.\0A -c <filename>: use specified file as CSS map [only SVG]. A CSS map\0A is a text file which specifies a style (CSS) for a clade.\0A Each line has the following structure:\0A <CSS> <flag> <label>+\0A <CSS> is a valid CSS style specification (no spaces allowed)\0A e.g. 'font-size:small;font-family:italics;stroke:green'.\0A <flag> is either 'Individual' or 'Clade' (case is not important, can\0A be abbreviated down to 'I' or 'C'). If set to 'Clade', the style is\0A applied to the clade defined by the labels. If 'Individual', the\0A style is applied to each node individually.\0A <label>+ is a nonempty, whitespace-separated list of Newick labels\0A (spaces are allowed IFF the label is enclosed in ''). If a label\0A matches more than one node, all matching nodes are used.\0A Default: no CSS map, whole tree is black (unless specified otherwise\0A via option -d).\0A <CSS>, <flag>, and <labels>+ are separated by whitespace.\0A The following specifies red stroke for a clade defined by A, B and C;\0A and 2-pixel wide, blue stroke for individual nodes D, E, and F:\0A stroke:red\09\09\09Clade\09A B C\0A stroke:blue;stroke-width:2\09I\09D E F\0A If no colormap is specified, the default is (but see option -d):\0A stroke:black;fill:none;stroke-width:1;stroke-linecap:round\0A -d <string>: CSS for 'plain' tree nodes (i.e., unless overridden by -c)\0A [only SVG]\0A Default: stroke:black;fill:none;stroke-width:1;stroke-linecap:round\0A -h: prints this message and exits\0A -i <string>: CSS for inner node labels. [only SVG]\0A Default: 'font-size:small;font-family:sans'.\0A setting 'visibility:hidden' disables printing of inner node labels.\0A -I <char> sets the position of the inner node label. Valid options are\0A 'l' (near the leaves), 'm' (middle) or 'r' (near the root). Default\0A is 'l'.\0A -l <string>: CSS for leaf node labels. [only SVG]\0A Default: 'font-size:medium;font-family:sans'.\0A setting 'visibility:hidden' disables printing of leaf node labels.\0A Note: if you change this, you will probably need to adjust the\0A space allocated to leaf labels - see option -W.\0A -o <filename>: use specified file as ornament map. Works like the CSS\0A map (see option -c), except that it specifies arbitrary SVG snippets\0A instead of CSS styles. For example, the following\0A \22<circle style='fill:red' r='5'>\22 Clade A B C\0A will draw a red circle of radius 5 at the root of the clade defined\0A by nodes A, B, and C. Keyword 'Individual' is also accepted and\0A works like for CSS.\0A -R <integer>: use that many pixels for the root [only SVG]\0A -r: draw a radial tree (default: orthogonal) [only SVG]\0A -s: output graph as SVG (default: ASCII graphics). All output is on\0A stdout, so if there is more than one tree, stdout will be a\0A concatenation of SVG documents. These can be split into individual\0A files with the csplit(1) command:\0A\0A $ nw_display -s many_trees.nw > multiple_svg\0A $ csplit -zs -f tree_ -b '%%02d.svg' multiple_svg '/<?xml/' {*}\0A\0A will generate as many SVG files as there are Newick trees in\0A many_trees.nw. The files will be named tree_01.svg, tree_02.svg, etc.\0A -S: suppress scale bar (ignored for cladograms)\0A -t: set the zero of the scale at the maximum depth instead of the root.\0A This is useful when the branch lengths are in time units: zero marks\0A the present, and the scale shows the age of the ancestral nodes.\0A -u <string>: string is used as unit name for scale bar (ignored\0A if no scale bar is drawn).\0A -U <URL_filename>: use specified URL map [only SVG]. A URL map\0A is a text file which specifies a URL for a label.\0A Each line has the following structure:\0A <label> <URL>\0A Clicking on a label will follow the link (if any).\0A -v <number>: number of pixels between leaves (default: 40) [only SVG\0A orthogonal]\0A -w <number>: graph should be no wider than <number>, measured in\0A characters for text and pixels for SVG. Defaults: 80 (text),\0A 300 (SVG)\0A -W <number>: use this as an estimate of the width of a leaf label\0A character (in pixels) [only SVG]. This affects the space left for\0A the tree nodes. Default: 5.0 You will probably need this if you\0A change the leaf label font properties (option -l), especially size.\0A You will probably need trial and error to find the right value.\0A\0AExamples\0A--------\0A\0A# display tree as ASCII\0A$ %s data/catarrhini\0A\0A# display tree as SVG, using a color map\0A$ %s -s -c data/color.map data/catarrhini\0A\0A# ditto, convert to other graphics formats\0A$ %s -s -c data/color.map data/catarrhini > catarrhini.svg\0A$ convert catarrhini.svg catarrhini.png\09# PNG, with ImageMagick\0A$ convert catarrhini.svg catarrhini.jpeg\09# JPEG, with ImageMagick\0A$ inkscape -z -f catarrhini.svg -A catarrhini.pdf # PDF, with Inkscape\0A\0A# the same; no branch lengths\0A$ %s -s -b 'visibility:hidden' -c data/color.map data/catarrhini\0A\0A# radial tree, leaf labels in italics\0A$ %s -s -r -l 'font-style:italics' data/catarrhini\0A\00"
define void @help(i8** %0) {
%2 = alloca i8**
store i8** %0, i8*** %2
%3 = load i8**, i8*** %2
%4 = getelementptr inbounds i8*, i8** %3, i64 0
%5 = load i8*, i8** %4
%6 = load i8**, i8*** %2
%7 = getelementptr inbounds i8*, i8** %6, i64 0
%8 = load i8*, i8** %7
%9 = load i8**, i8*** %2
%10 = getelementptr inbounds i8*, i8** %9, i64 0
%11 = load i8*, i8** %10
%12 = load i8**, i8*** %2
%13 = getelementptr inbounds i8*, i8** %12, i64 0
%14 = load i8*, i8** %13
%15 = load i8**, i8*** %2
%16 = getelementptr inbounds i8*, i8** %15, i64 0
%17 = load i8*, i8** %16
%18 = load i8**, i8*** %2
%19 = getelementptr inbounds i8*, i8** %18, i64 0
%20 = load i8*, i8** %19
%21 = call i32 @printf(i8* getelementptr inbounds ([6368 x i8], [6368 x i8]* @.str, i64 0, i64 0), i8* %5, i8* %8, i8* %11, i8* %14, i8* %17, i8* %20)
ret void
}

LLVM IR (-O2):
@.str = [6368 x i8] c"Displays a tree as a graph, as text or SVG.\0A\0ASynopsis\0A--------\0A\0A%s [-aAbcdhiIlLrRsuUvwW] <tree filename|->\0A\0AInput\0A-----\0A\0AArgument is the name of the file containing one or more trees,\0Aor '-' (in which case the tree is read on stdin).\0A\0AOutput\0A------\0A\0AOutputs a graph representing the tree, either as text (default) or\0Aas SVG (option -s). Underscores in labels are replaced with spaces.\0ATrees with no branch lengths are taken to be cladograms and are\0Adrawn with leaves aligned. Otherwise, the tree is assumed to be a\0Aphylogram: branch lengths are honored and a scale bar is drawn.\0A\0ASVG graphics can be converted to other formats with converters\0Asuch as Inkscape (e.g. to PDF) or ImageMagick (e.g. to PNG or JPEG).\0AInkscape is available from www.inkscape.org and ImageMagick from\0Awww.imagemagick.org.\0A\0AOptions\0A-------\0A\0A -a <number>: rotate all labels by this amount (radians, default: 0)\0A [only SVG radial]\0A -A <number>: rotate left-side labels by this amount (radians,\0A default: 0.0349 (=~ 2\C2\B0)) [only SVG radial]\0A -b <string>: CSS for branch length labels. [only SVG]\0A Default: 'font-size:small;font-family:sans'.\0A setting 'opacity:0' disables printing of branch lengths.\0A -c <filename>: use specified file as CSS map [only SVG]. A CSS map\0A is a text file which specifies a style (CSS) for a clade.\0A Each line has the following structure:\0A <CSS> <flag> <label>+\0A <CSS> is a valid CSS style specification (no spaces allowed)\0A e.g. 'font-size:small;font-family:italics;stroke:green'.\0A <flag> is either 'Individual' or 'Clade' (case is not important, can\0A be abbreviated down to 'I' or 'C'). If set to 'Clade', the style is\0A applied to the clade defined by the labels. If 'Individual', the\0A style is applied to each node individually.\0A <label>+ is a nonempty, whitespace-separated list of Newick labels\0A (spaces are allowed IFF the label is enclosed in ''). If a label\0A matches more than one node, all matching nodes are used.\0A Default: no CSS map, whole tree is black (unless specified otherwise\0A via option -d).\0A <CSS>, <flag>, and <labels>+ are separated by whitespace.\0A The following specifies red stroke for a clade defined by A, B and C;\0A and 2-pixel wide, blue stroke for individual nodes D, E, and F:\0A stroke:red\09\09\09Clade\09A B C\0A stroke:blue;stroke-width:2\09I\09D E F\0A If no colormap is specified, the default is (but see option -d):\0A stroke:black;fill:none;stroke-width:1;stroke-linecap:round\0A -d <string>: CSS for 'plain' tree nodes (i.e., unless overridden by -c)\0A [only SVG]\0A Default: stroke:black;fill:none;stroke-width:1;stroke-linecap:round\0A -h: prints this message and exits\0A -i <string>: CSS for inner node labels. [only SVG]\0A Default: 'font-size:small;font-family:sans'.\0A setting 'visibility:hidden' disables printing of inner node labels.\0A -I <char> sets the position of the inner node label. Valid options are\0A 'l' (near the leaves), 'm' (middle) or 'r' (near the root). Default\0A is 'l'.\0A -l <string>: CSS for leaf node labels. [only SVG]\0A Default: 'font-size:medium;font-family:sans'.\0A setting 'visibility:hidden' disables printing of leaf node labels.\0A Note: if you change this, you will probably need to adjust the\0A space allocated to leaf labels - see option -W.\0A -o <filename>: use specified file as ornament map. Works like the CSS\0A map (see option -c), except that it specifies arbitrary SVG snippets\0A instead of CSS styles. For example, the following\0A \22<circle style='fill:red' r='5'>\22 Clade A B C\0A will draw a red circle of radius 5 at the root of the clade defined\0A by nodes A, B, and C. Keyword 'Individual' is also accepted and\0A works like for CSS.\0A -R <integer>: use that many pixels for the root [only SVG]\0A -r: draw a radial tree (default: orthogonal) [only SVG]\0A -s: output graph as SVG (default: ASCII graphics). All output is on\0A stdout, so if there is more than one tree, stdout will be a\0A concatenation of SVG documents. These can be split into individual\0A files with the csplit(1) command:\0A\0A $ nw_display -s many_trees.nw > multiple_svg\0A $ csplit -zs -f tree_ -b '%%02d.svg' multiple_svg '/<?xml/' {*}\0A\0A will generate as many SVG files as there are Newick trees in\0A many_trees.nw. The files will be named tree_01.svg, tree_02.svg, etc.\0A -S: suppress scale bar (ignored for cladograms)\0A -t: set the zero of the scale at the maximum depth instead of the root.\0A This is useful when the branch lengths are in time units: zero marks\0A the present, and the scale shows the age of the ancestral nodes.\0A -u <string>: string is used as unit name for scale bar (ignored\0A if no scale bar is drawn).\0A -U <URL_filename>: use specified URL map [only SVG]. A URL map\0A is a text file which specifies a URL for a label.\0A Each line has the following structure:\0A <label> <URL>\0A Clicking on a label will follow the link (if any).\0A -v <number>: number of pixels between leaves (default: 40) [only SVG\0A orthogonal]\0A -w <number>: graph should be no wider than <number>, measured in\0A characters for text and pixels for SVG. Defaults: 80 (text),\0A 300 (SVG)\0A -W <number>: use this as an estimate of the width of a leaf label\0A character (in pixels) [only SVG]. This affects the space left for\0A the tree nodes. Default: 5.0 You will probably need this if you\0A change the leaf label font properties (option -l), especially size.\0A You will probably need trial and error to find the right value.\0A\0AExamples\0A--------\0A\0A# display tree as ASCII\0A$ %s data/catarrhini\0A\0A# display tree as SVG, using a color map\0A$ %s -s -c data/color.map data/catarrhini\0A\0A# ditto, convert to other graphics formats\0A$ %s -s -c data/color.map data/catarrhini > catarrhini.svg\0A$ convert catarrhini.svg catarrhini.png\09# PNG, with ImageMagick\0A$ convert catarrhini.svg catarrhini.jpeg\09# JPEG, with ImageMagick\0A$ inkscape -z -f catarrhini.svg -A catarrhini.pdf # PDF, with Inkscape\0A\0A# the same; no branch lengths\0A$ %s -s -b 'visibility:hidden' -c data/color.map data/catarrhini\0A\0A# radial tree, leaf labels in italics\0A$ %s -s -r -l 'font-style:italics' data/catarrhini\0A\00"
define void @help(i8** nocapture %0) {
%2 = load i8*, i8** %0
%3 = tail call i32 @printf(i8* getelementptr inbounds ([6368 x i8], [6368 x i8]* @.str, i64 0, i64 0), i8* %2, i8* %2, i8* %2, i8* %2, i8* %2, i8* %2)
ret void
}