#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 *, ...);
int /*<<< orphan*/ strcmp(char *, char *);
void HelpAGS(char *s) {
  if (!strcmp(s, "HELP")) {
    printf("\n"
           "Unless otherwise specified, all numbers are in octal notation.\n"
           "Addresses are a single octal number (like 130 or 4655). Input\n"
           "ports are prefixed with I (like I1, I5) and output ports are\n"
           "prefixed with O (like O2, O4).\n"
           "\n"
           "For information on specific topics, use one of the following:\n"
           "\thelp backtrace\n"
           "\thelp backtraces\n"
           "\thelp break\n"
           "\thelp breakpoints\n"
           "\thelp cont\n"
           "\thelp cont-til-new\n"
           "\thelp delete\n"
           "\thelp disassemble\n"
           "\thelp dump\n"
           "\thelp edit\n"
           "\thelp files\n"
           "\thelp list\n"
           "\thelp pattern\n"
           "\thelp print\n"
           "\thelp quit\n"
           "\thelp step\n"
           "\thelp sym-dump\n"
           "\thelp symbol-file\n"
           "\thelp watch\n"
           "\thelp whatis"
           "\n");
  } else if (!strcmp(s, "HELP BACKTRACE")) {
    printf("\n"
           "backtrace N\n"
           "\tJump to a given backtrace point, as identified by the\n"
           "\tindex numbers shown in the \'backtraces\' command.\n"
           "\tIndex 0 is the most recent backtrace point, index 1\n"
           "\tthe next-most-recent, and so on.  This restores all\n"
           "\terasable memory and i/o channels.  However, any\n"
           "\tperipherals (such as a DSKY) will not necessarily\n"
           "\treturn to their previous states.\n"
           "\n");
  } else if (!strcmp(s, "HELP BACKTRACES")) {
    printf("\n"
           "backtraces\n"
           "\tDisplays the most recent backtrace points.\n"
           "\n");
  } else if (!strcmp(s, "HELP BREAK")) {
    printf(
        "\n"
        "break A\n"
        "\tSet a breakpoint at A, where A is:\n"
        "\t  LABEL:    set a breakpoint at the label\n"
        "\t  LINE:     set a breakpoint in the current file at a line number\n"
        "\t  *ADDRESS: set a breakpoint at address A.\n"
        "\n");
  } else if (!strcmp(s, "HELP BREAKPOINTS")) {
    printf("\n"
           "breakpoints\n"
           "\tList the defined breakpoints, watchpoints, and patterns.\n"
           "\n");
  } else if (!strcmp(s, "HELP CONT")) {
    printf("\n"
           "cont\n"
           "\tContinue execution.  The program will continue executing\n"
           "\tuntil a breakpoint is reached or, in Linux or (for versions\n"
           "\t20040810 or later) Win32, until you hit the carriage-return\n"
           "\tkey.\n"
           "\n");
  } else if (!strcmp(s, "HELP CONT-TIL-NEW")) {
    printf("\n"
           "cont-til-new\n"
           "\tContinue execution until a new type of instruction is reached.\n"
           "\n");
  } else if (!strcmp(s, "HELP DELETE")) {
    printf("\n"
           "delete [A]\n"
           "\tDelete the breakpoint or watchpoint at address A.  If \n"
           "\tA is omitted, all breakpoints and watchpoints are deleted.\n"
           "\n"
           "delete V M\n"
           "\tDelete the pattern with value V and mask M.\n"
           "\n");
  } else if (!strcmp(s, "HELP DISASSEMBLE")) {
    printf("\n"
           "disassemble [A] <N>\n"
           "\tDisassemble N instructions beginning at address A. If\n"
           "\tN is ommitted, only a single instruction is displayed\n"
           "\n");
  } else if (!strcmp(s, "HELP DUMP")) {
    printf("\n"
           "dump [N] A\n"
           "\tDump values of N memory or i/o channel locations, from\n"
           "\taddress A.  If N is omitted, it defaults to 1.\n"
           "\n"
           "dump\n"
           "\tSimply repeat the last DUMP performed.\n"
           "\n");
  } else if (!strcmp(s, "HELP EDIT")) {
    printf("\n"
           "edit [A] V\n"
           "\tChange value of memory location or i/o channel A to V.\n"
           "\tSpecial cases of the EDIT command include:\n"
           "\tEDIT A V: Sets the Accumulator register to V\n"
           "\tEDIT Q V: Sets the Quotient register to V\n"
           "\tEDIT OVERFLOW V: Sets the Overflow register to V\n"
           "\tEDIT INDEX V: Sets the Index register to V\n"
           "\tEDIT HALT V: Sets the Halt register to V\n"
           "\tEDIT PC V: Sets the Program Counter to V\n"
           "\n");
  } else if (!strcmp(s, "HELP FILES")) {
    printf("\n"
           "files RegularExpression\n"
           "\tDumps all of the source files whose names match the specified\n"
           "\tregular expression.  For example,\n"
           "\t\tfiles not           All files containing NOT.\n"
           "\t\tfiles ^not          All files beginning with NOT.\n"
           "\t\tfiles not$          All files ending with NOT.\n"
           "\t\tfiles (^not)|(not$) Beginning or ending with NOT.\n"
           "\tThe list is arbitrarily truncated after %d files.\n",
           25);
  } else if (!strcmp(s, "HELP LIST")) {
    printf("\n"
           "list\n"
           "\tList displays lines in a source file. There are several\n"
           "\tvariants of this command\n"
           "\t  list FILENAME:LINENO, to list around a line number in a file\n"
           "\t  list LABEL, to list beginning at a label\n"
           "\t  list LINENO, to list around a line in the current file\n"
           "\t  list FROM,TO, to list a range of lines\n"
           "\t  list -, to list lines previous to the current listing\n"
           "\t  list, to list the next set of lines\n"
           "\n");
  } else if (!strcmp(s, "HELP PATTERN")) {
    printf("\n"
           "pattern V M\n"
           "\tSet a pattern with value V and mask M.  A \"pattern\"\n"
           "\tis like a breakpoint, except that instead of halting\n"
           "\tupon reaching a certain address, the program-halt occurs\n"
           "\tupon reaching a certain value (V) at the program counter.\n"
           "\tThe instruction stored at the program counter is logically\n"
           "\tbitwise ANDed with the mask M before comparing it to V.\n"
           "\tThis can be used (for example) to select a given instruction\n"
           "\ttype.  V and M are both in octal.\n"
           "\n");
  } else if (!strcmp(s, "HELP PRINT")) {
    printf("\n"
           "print S\n"
           "\tPrints out the value of the symbol S\n");
  } else if (!strcmp(s, "HELP QUIT")) {
    printf("\n"
           "quit (or exit)\n"
           "\tEnd the program.\n"
           "\n");
  } else if (!strcmp(s, "HELP STEP")) {
    printf("\n"
           "step [N] (or next [N])\n"
           "\tStep through N instructions.  If omitted, N defaults to 1.\n"
           "\tYou can also use just the first letter, as shorthand.\n"
           "\n");
  } else if (!strcmp(s, "HELP SYM-DUMP")) {
    printf("\n"
           "sym-dump RegularExpression\n"
           "\tDumps all of the symbols whose names match the specified\n"
           "\tregular expression.  For example,\n"
           "\t\tsym-dump not           All symbols containing NOT.\n"
           "\t\tsym-dump ^not          All symbols beginning with NOT.\n"
           "\t\tsym-dump not$          All symbols ending with NOT.\n"
           "\t\tsym-dump (^not)|(not$) Beginning or ending with NOT.\n"
           "\tThe list is arbitrarily truncated after %d symbols.\n",
           25);
  } else if (!strcmp(s, "HELP SYMBOL-FILE")) {
    printf("\n"
           "symbol-file FILE\n"
           "\tLoads the FILE as the symbol table\n"
           "\n");
  } else if (!strcmp(s, "HELP WATCH")) {
    printf("\n"
           "watch A\n"
           "\tHalt execution when a value is written to the address A.\n"
           "\tThe break occurs AFTER the value is changed, but the\n"
           "\t\"before\" and \"after\" values stored at the address\n"
           "\tare displayed after execution stops.  The address\n"
           "\tobviously has to be in erasable memory or i/o-channel memory.\n"
           "\tNote that the value stored at the address has to CHANGE to\n"
           "\ttrigger the break.\n"
           "\n");
  } else if (!strcmp(s, "HELP WHATIS")) {
    printf("\n"
           "whatis S\n"
           "\tPrints information about the symbol S\n"
           "\n");
  }
}


x86 assembly (clang, -O0):
<HelpAGS>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %rdi,-0x8(%rbp)
mov    -0x8(%rbp),%rdi
lea    0xec9(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    1158 <HelpAGS+0x38>
lea    0xeb9(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1531 <HelpAGS+0x411>
mov    -0x8(%rbp),%rdi
lea    0x10cf(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    1184 <HelpAGS+0x64>
lea    0x10c9(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    152c <HelpAGS+0x40c>
mov    -0x8(%rbp),%rdi
lea    0x121a(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    11b0 <HelpAGS+0x90>
lea    0x1215(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1527 <HelpAGS+0x407>
mov    -0x8(%rbp),%rdi
lea    0x1238(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    11dc <HelpAGS+0xbc>
lea    0x122e(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1522 <HelpAGS+0x402>
mov    -0x8(%rbp),%rdi
lea    0x12e0(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    1208 <HelpAGS+0xe8>
lea    0x12dc(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    151d <HelpAGS+0x3fd>
mov    -0x8(%rbp),%rdi
lea    0x130e(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    1234 <HelpAGS+0x114>
lea    0x1303(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1518 <HelpAGS+0x3f8>
mov    -0x8(%rbp),%rdi
lea    0x13ae(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    1260 <HelpAGS+0x140>
lea    0x13ab(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1513 <HelpAGS+0x3f3>
mov    -0x8(%rbp),%rdi
lea    0x13e4(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    128c <HelpAGS+0x16c>
lea    0x13db(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    150e <HelpAGS+0x3ee>
mov    -0x8(%rbp),%rdi
lea    0x147f(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    12b8 <HelpAGS+0x198>
lea    0x147b(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1509 <HelpAGS+0x3e9>
mov    -0x8(%rbp),%rdi
lea    0x14e9(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    12e4 <HelpAGS+0x1c4>
lea    0x14de(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    1504 <HelpAGS+0x3e4>
mov    -0x8(%rbp),%rdi
lea    0x156b(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    1310 <HelpAGS+0x1f0>
lea    0x1560(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14ff <HelpAGS+0x3df>
mov    -0x8(%rbp),%rdi
lea    0x16c6(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    1341 <HelpAGS+0x221>
lea    0x16bc(%rip),%rdi
mov    $0x19,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14fa <HelpAGS+0x3da>
mov    -0x8(%rbp),%rdi
lea    0x1818(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    136d <HelpAGS+0x24d>
lea    0x180d(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14f5 <HelpAGS+0x3d5>
mov    -0x8(%rbp),%rdi
lea    0x1981(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    1399 <HelpAGS+0x279>
lea    0x1979(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14f0 <HelpAGS+0x3d0>
mov    -0x8(%rbp),%rdi
lea    0x1b27(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    13c5 <HelpAGS+0x2a5>
lea    0x1b1d(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14eb <HelpAGS+0x3cb>
mov    -0x8(%rbp),%rdi
lea    0x1b36(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    13f1 <HelpAGS+0x2d1>
lea    0x1b2b(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14e6 <HelpAGS+0x3c6>
mov    -0x8(%rbp),%rdi
lea    0x1b38(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    141d <HelpAGS+0x2fd>
lea    0x1b2d(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14e1 <HelpAGS+0x3c1>
mov    -0x8(%rbp),%rdi
lea    0x1ba3(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    144e <HelpAGS+0x32e>
lea    0x1b9c(%rip),%rdi
mov    $0x19,%esi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14dc <HelpAGS+0x3bc>
mov    -0x8(%rbp),%rdi
lea    0x1d0a(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    147a <HelpAGS+0x35a>
lea    0x1d06(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14d7 <HelpAGS+0x3b7>
mov    -0x8(%rbp),%rdi
lea    0x1d27(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    14a6 <HelpAGS+0x386>
lea    0x1d1d(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14d2 <HelpAGS+0x3b2>
mov    -0x8(%rbp),%rdi
lea    0x1e76(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    14cd <HelpAGS+0x3ad>
lea    0x1e6d(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14d2 <HelpAGS+0x3b2>
jmp    14d7 <HelpAGS+0x3b7>
jmp    14dc <HelpAGS+0x3bc>
jmp    14e1 <HelpAGS+0x3c1>
jmp    14e6 <HelpAGS+0x3c6>
jmp    14eb <HelpAGS+0x3cb>
jmp    14f0 <HelpAGS+0x3d0>
jmp    14f5 <HelpAGS+0x3d5>
jmp    14fa <HelpAGS+0x3da>
jmp    14ff <HelpAGS+0x3df>
jmp    1504 <HelpAGS+0x3e4>
jmp    1509 <HelpAGS+0x3e9>
jmp    150e <HelpAGS+0x3ee>
jmp    1513 <HelpAGS+0x3f3>
jmp    1518 <HelpAGS+0x3f8>
jmp    151d <HelpAGS+0x3fd>
jmp    1522 <HelpAGS+0x402>
jmp    1527 <HelpAGS+0x407>
jmp    152c <HelpAGS+0x40c>
jmp    1531 <HelpAGS+0x411>
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<HelpAGS>:
push   %rbx
mov    %rdi,%rbx
lea    0xec5(%rip),%rsi
call   1050 <strcmp@plt>
test   %eax,%eax
je     1316 <HelpAGS+0x1e6>
lea    0xeb6(%rip),%rsi
mov    %rbx,%rdi
call   1050 <strcmp@plt>
test   %eax,%eax
je     1323 <HelpAGS+0x1f3>
lea    0xeae(%rip),%rsi
mov    %rbx,%rdi
call   1050 <strcmp@plt>
test   %eax,%eax
je     1330 <HelpAGS+0x200>
lea    0xea7(%rip),%rsi
mov    %rbx,%rdi
call   1050 <strcmp@plt>
test   %eax,%eax
je     133d <HelpAGS+0x20d>
lea    0xe9b(%rip),%rsi
mov    %rbx,%rdi
call   1050 <strcmp@plt>
test   %eax,%eax
je     134a <HelpAGS+0x21a>
lea    0xe95(%rip),%rsi
mov    %rbx,%rdi
call   1050 <strcmp@plt>
test   %eax,%eax
je     1357 <HelpAGS+0x227>
lea    0xe88(%rip),%rsi
mov    %rbx,%rdi
call   1050 <strcmp@plt>
test   %eax,%eax
je     1364 <HelpAGS+0x234>
lea    0xe83(%rip),%rsi
mov    %rbx,%rdi
call   1050 <strcmp@plt>
test   %eax,%eax
je     1371 <HelpAGS+0x241>
lea    0xe78(%rip),%rsi
mov    %rbx,%rdi
call   1050 <strcmp@plt>
test   %eax,%eax
je     137e <HelpAGS+0x24e>
lea    0xe72(%rip),%rsi
mov    %rbx,%rdi
call   1050 <strcmp@plt>
test   %eax,%eax
je     138b <HelpAGS+0x25b>
lea    0xe65(%rip),%rsi
mov    %rbx,%rdi
call   1050 <strcmp@plt>
test   %eax,%eax
je     1398 <HelpAGS+0x268>
lea    0xe58(%rip),%rsi
mov    %rbx,%rdi
call   1050 <strcmp@plt>
test   %eax,%eax
je     13a5 <HelpAGS+0x275>
lea    0xfc4(%rip),%rsi
mov    %rbx,%rdi
call   1050 <strcmp@plt>
test   %eax,%eax
je     13b9 <HelpAGS+0x289>
lea    0xfb7(%rip),%rsi
mov    %rbx,%rdi
call   1050 <strcmp@plt>
test   %eax,%eax
je     13c6 <HelpAGS+0x296>
lea    0xfad(%rip),%rsi
mov    %rbx,%rdi
call   1050 <strcmp@plt>
test   %eax,%eax
je     13d3 <HelpAGS+0x2a3>
lea    0xfa1(%rip),%rsi
mov    %rbx,%rdi
call   1050 <strcmp@plt>
test   %eax,%eax
je     13e0 <HelpAGS+0x2b0>
lea    0xf94(%rip),%rsi
mov    %rbx,%rdi
call   1050 <strcmp@plt>
test   %eax,%eax
je     13ed <HelpAGS+0x2bd>
lea    0xf87(%rip),%rsi
mov    %rbx,%rdi
call   1050 <strcmp@plt>
test   %eax,%eax
je     13fa <HelpAGS+0x2ca>
lea    0x1108(%rip),%rsi
mov    %rbx,%rdi
call   1050 <strcmp@plt>
test   %eax,%eax
je     1403 <HelpAGS+0x2d3>
lea    0x1102(%rip),%rsi
mov    %rbx,%rdi
call   1050 <strcmp@plt>
test   %eax,%eax
je     1410 <HelpAGS+0x2e0>
lea    0x10f6(%rip),%rsi
mov    %rbx,%rdi
call   1050 <strcmp@plt>
test   %eax,%eax
je     141d <HelpAGS+0x2ed>
pop    %rbx
ret
lea    0x10e9(%rip),%rdi
pop    %rbx
jmp    1030 <puts@plt>
lea    0x1308(%rip),%rdi
pop    %rbx
jmp    1030 <puts@plt>
lea    0x1462(%rip),%rdi
pop    %rbx
jmp    1030 <puts@plt>
lea    0x148e(%rip),%rdi
pop    %rbx
jmp    1030 <puts@plt>
lea    0x1549(%rip),%rdi
pop    %rbx
jmp    1030 <puts@plt>
lea    0x1584(%rip),%rdi
pop    %rbx
jmp    1030 <puts@plt>
lea    0x1638(%rip),%rdi
pop    %rbx
jmp    1030 <puts@plt>
lea    0x167a(%rip),%rdi
pop    %rbx
jmp    1030 <puts@plt>
lea    0x1727(%rip),%rdi
pop    %rbx
jmp    1030 <puts@plt>
lea    0x179e(%rip),%rdi
pop    %rbx
jmp    1030 <puts@plt>
lea    0x1834(%rip),%rdi
pop    %rbx
jmp    1030 <puts@plt>
lea    0xcec(%rip),%rdi
mov    $0x19,%esi
xor    %eax,%eax
pop    %rbx
jmp    1040 <printf@plt>
lea    0x198f(%rip),%rdi
pop    %rbx
jmp    1030 <puts@plt>
lea    0x1b0c(%rip),%rdi
pop    %rbx
jmp    1030 <puts@plt>
lea    0x1cc3(%rip),%rdi
pop    %rbx
jmp    1030 <puts@plt>
lea    0x1ce5(%rip),%rdi
pop    %rbx
jmp    1030 <puts@plt>
lea    0x1cfb(%rip),%rdi
pop    %rbx
jmp    1030 <puts@plt>
lea    0xe53(%rip),%rdi
jmp    13ac <HelpAGS+0x27c>
lea    0x1d71(%rip),%rdi
pop    %rbx
jmp    1030 <puts@plt>
lea    0x1d9b(%rip),%rdi
pop    %rbx
jmp    1030 <puts@plt>
lea    0x1efd(%rip),%rdi
pop    %rbx
jmp    1030 <puts@plt>

LLVM IR (-O0):
@.str = [5 x i8] c"HELP\00"
@.str.1 = [557 x i8] c"\0AUnless otherwise specified, all numbers are in octal notation.\0AAddresses are a single octal number (like 130 or 4655). Input\0Aports are prefixed with I (like I1, I5) and output ports are\0Aprefixed with O (like O2, O4).\0A\0AFor information on specific topics, use one of the following:\0A\09help backtrace\0A\09help backtraces\0A\09help break\0A\09help breakpoints\0A\09help cont\0A\09help cont-til-new\0A\09help delete\0A\09help disassemble\0A\09help dump\0A\09help edit\0A\09help files\0A\09help list\0A\09help pattern\0A\09help print\0A\09help quit\0A\09help step\0A\09help sym-dump\0A\09help symbol-file\0A\09help watch\0A\09help whatis\0A\00"
@.str.2 = [15 x i8] c"HELP BACKTRACE\00"
@.str.3 = [360 x i8] c"\0Abacktrace N\0A\09Jump to a given backtrace point, as identified by the\0A\09index numbers shown in the 'backtraces' command.\0A\09Index 0 is the most recent backtrace point, index 1\0A\09the next-most-recent, and so on. This restores all\0A\09erasable memory and i/o channels. However, any\0A\09peripherals (such as a DSKY) will not necessarily\0A\09return to their previous states.\0A\0A\00"
@.str.4 = [16 x i8] c"HELP BACKTRACES\00"
@.str.5 = [58 x i8] c"\0Abacktraces\0A\09Displays the most recent backtrace points.\0A\0A\00"
@.str.6 = [11 x i8] c"HELP BREAK\00"
@.str.7 = [201 x i8] c"\0Abreak A\0A\09Set a breakpoint at A, where A is:\0A\09 LABEL: set a breakpoint at the label\0A\09 LINE: set a breakpoint in the current file at a line number\0A\09 *ADDRESS: set a breakpoint at address A.\0A\0A\00"
@.str.8 = [17 x i8] c"HELP BREAKPOINTS\00"
@.str.9 = [73 x i8] c"\0Abreakpoints\0A\09List the defined breakpoints, watchpoints, and patterns.\0A\0A\00"
@.str.10 = [10 x i8] c"HELP CONT\00"
@.str.11 = [194 x i8] c"\0Acont\0A\09Continue execution. The program will continue executing\0A\09until a breakpoint is reached or, in Linux or (for versions\0A\0920040810 or later) Win32, until you hit the carriage-return\0A\09key.\0A\0A\00"
@.str.12 = [18 x i8] c"HELP CONT-TIL-NEW\00"
@.str.13 = [80 x i8] c"\0Acont-til-new\0A\09Continue execution until a new type of instruction is reached.\0A\0A\00"
@.str.14 = [12 x i8] c"HELP DELETE\00"
@.str.15 = [187 x i8] c"\0Adelete [A]\0A\09Delete the breakpoint or watchpoint at address A. If \0A\09A is omitted, all breakpoints and watchpoints are deleted.\0A\0Adelete V M\0A\09Delete the pattern with value V and mask M.\0A\0A\00"
@.str.16 = [17 x i8] c"HELP DISASSEMBLE\00"
@.str.17 = [133 x i8] c"\0Adisassemble [A] <N>\0A\09Disassemble N instructions beginning at address A. If\0A\09N is ommitted, only a single instruction is displayed\0A\0A\00"
@.str.18 = [10 x i8] c"HELP DUMP\00"
@.str.19 = [164 x i8] c"\0Adump [N] A\0A\09Dump values of N memory or i/o channel locations, from\0A\09address A. If N is omitted, it defaults to 1.\0A\0Adump\0A\09Simply repeat the last DUMP performed.\0A\0A\00"
@.str.20 = [10 x i8] c"HELP EDIT\00"
@.str.21 = [381 x i8] c"\0Aedit [A] V\0A\09Change value of memory location or i/o channel A to V.\0A\09Special cases of the EDIT command include:\0A\09EDIT A V: Sets the Accumulator register to V\0A\09EDIT Q V: Sets the Quotient register to V\0A\09EDIT OVERFLOW V: Sets the Overflow register to V\0A\09EDIT INDEX V: Sets the Index register to V\0A\09EDIT HALT V: Sets the Halt register to V\0A\09EDIT PC V: Sets the Program Counter to V\0A\0A\00"
@.str.22 = [11 x i8] c"HELP FILES\00"
@.str.23 = [376 x i8] c"\0Afiles RegularExpression\0A\09Dumps all of the source files whose names match the specified\0A\09regular expression. For example,\0A\09\09files not All files containing NOT.\0A\09\09files ^not All files beginning with NOT.\0A\09\09files not$ All files ending with NOT.\0A\09\09files (^not)|(not$) Beginning or ending with NOT.\0A\09The list is arbitrarily truncated after %d files.\0A\00"
@.str.24 = [10 x i8] c"HELP LIST\00"
@.str.25 = [395 x i8] c"\0Alist\0A\09List displays lines in a source file. There are several\0A\09variants of this command\0A\09 list FILENAME:LINENO, to list around a line number in a file\0A\09 list LABEL, to list beginning at a label\0A\09 list LINENO, to list around a line in the current file\0A\09 list FROM,TO, to list a range of lines\0A\09 list -, to list lines previous to the current listing\0A\09 list, to list the next set of lines\0A\0A\00"
@.str.26 = [13 x i8] c"HELP PATTERN\00"
@.str.27 = [453 x i8] c"\0Apattern V M\0A\09Set a pattern with value V and mask M. A \22pattern\22\0A\09is like a breakpoint, except that instead of halting\0A\09upon reaching a certain address, the program-halt occurs\0A\09upon reaching a certain value (V) at the program counter.\0A\09The instruction stored at the program counter is logically\0A\09bitwise ANDed with the mask M before comparing it to V.\0A\09This can be used (for example) to select a given instruction\0A\09type. V and M are both in octal.\0A\0A\00"
@.str.28 = [11 x i8] c"HELP PRINT\00"
@.str.29 = [48 x i8] c"\0Aprint S\0A\09Prints out the value of the symbol S\0A\00"
@.str.30 = [10 x i8] c"HELP QUIT\00"
@.str.31 = [36 x i8] c"\0Aquit (or exit)\0A\09End the program.\0A\0A\00"
@.str.32 = [10 x i8] c"HELP STEP\00"
@.str.33 = [141 x i8] c"\0Astep [N] (or next [N])\0A\09Step through N instructions. If omitted, N defaults to 1.\0A\09You can also use just the first letter, as shorthand.\0A\0A\00"
@.str.34 = [14 x i8] c"HELP SYM-DUMP\00"
@.str.35 = [394 x i8] c"\0Asym-dump RegularExpression\0A\09Dumps all of the symbols whose names match the specified\0A\09regular expression. For example,\0A\09\09sym-dump not All symbols containing NOT.\0A\09\09sym-dump ^not All symbols beginning with NOT.\0A\09\09sym-dump not$ All symbols ending with NOT.\0A\09\09sym-dump (^not)|(not$) Beginning or ending with NOT.\0A\09The list is arbitrarily truncated after %d symbols.\0A\00"
@.str.36 = [17 x i8] c"HELP SYMBOL-FILE\00"
@.str.37 = [56 x i8] c"\0Asymbol-file FILE\0A\09Loads the FILE as the symbol table\0A\0A\00"
@.str.38 = [11 x i8] c"HELP WATCH\00"
@.str.39 = [368 x i8] c"\0Awatch A\0A\09Halt execution when a value is written to the address A.\0A\09The break occurs AFTER the value is changed, but the\0A\09\22before\22 and \22after\22 values stored at the address\0A\09are displayed after execution stops. The address\0A\09obviously has to be in erasable memory or i/o-channel memory.\0A\09Note that the value stored at the address has to CHANGE to\0A\09trigger the break.\0A\0A\00"
@.str.40 = [12 x i8] c"HELP WHATIS\00"
@.str.41 = [51 x i8] c"\0Awhatis S\0A\09Prints information about the symbol S\0A\0A\00"
define void @HelpAGS(i8* %0) {
%2 = alloca i8*
store i8* %0, i8** %2
%3 = load i8*, i8** %2
%4 = call i32 @strcmp(i8* %3, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0))
%5 = icmp ne i32 %4, 0
br i1 %5, label %8, label %6
6: ; preds = %1
%7 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([557 x i8], [557 x i8]* @.str.1, i64 0, i64 0))
br label %148
8: ; preds = %1
%9 = load i8*, i8** %2
%10 = call i32 @strcmp(i8* %9, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.2, i64 0, i64 0))
%11 = icmp ne i32 %10, 0
br i1 %11, label %14, label %12
12: ; preds = %8
%13 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([360 x i8], [360 x i8]* @.str.3, i64 0, i64 0))
br label %147
14: ; preds = %8
%15 = load i8*, i8** %2
%16 = call i32 @strcmp(i8* %15, i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.4, i64 0, i64 0))
%17 = icmp ne i32 %16, 0
br i1 %17, label %20, label %18
18: ; preds = %14
%19 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.5, i64 0, i64 0))
br label %146
20: ; preds = %14
%21 = load i8*, i8** %2
%22 = call i32 @strcmp(i8* %21, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.6, i64 0, i64 0))
%23 = icmp ne i32 %22, 0
br i1 %23, label %26, label %24
24: ; preds = %20
%25 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([201 x i8], [201 x i8]* @.str.7, i64 0, i64 0))
br label %145
26: ; preds = %20
%27 = load i8*, i8** %2
%28 = call i32 @strcmp(i8* %27, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.8, i64 0, i64 0))
%29 = icmp ne i32 %28, 0
br i1 %29, label %32, label %30
30: ; preds = %26
%31 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([73 x i8], [73 x i8]* @.str.9, i64 0, i64 0))
br label %144
32: ; preds = %26
%33 = load i8*, i8** %2
%34 = call i32 @strcmp(i8* %33, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.10, i64 0, i64 0))
%35 = icmp ne i32 %34, 0
br i1 %35, label %38, label %36
36: ; preds = %32
%37 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([194 x i8], [194 x i8]* @.str.11, i64 0, i64 0))
br label %143
38: ; preds = %32
%39 = load i8*, i8** %2
%40 = call i32 @strcmp(i8* %39, i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.12, i64 0, i64 0))
%41 = icmp ne i32 %40, 0
br i1 %41, label %44, label %42
42: ; preds = %38
%43 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.13, i64 0, i64 0))
br label %142
44: ; preds = %38
%45 = load i8*, i8** %2
%46 = call i32 @strcmp(i8* %45, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.14, i64 0, i64 0))
%47 = icmp ne i32 %46, 0
br i1 %47, label %50, label %48
48: ; preds = %44
%49 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([187 x i8], [187 x i8]* @.str.15, i64 0, i64 0))
br label %141
50: ; preds = %44
%51 = load i8*, i8** %2
%52 = call i32 @strcmp(i8* %51, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.16, i64 0, i64 0))
%53 = icmp ne i32 %52, 0
br i1 %53, label %56, label %54
54: ; preds = %50
%55 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([133 x i8], [133 x i8]* @.str.17, i64 0, i64 0))
br label %140
56: ; preds = %50
%57 = load i8*, i8** %2
%58 = call i32 @strcmp(i8* %57, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.18, i64 0, i64 0))
%59 = icmp ne i32 %58, 0
br i1 %59, label %62, label %60
60: ; preds = %56
%61 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([164 x i8], [164 x i8]* @.str.19, i64 0, i64 0))
br label %139
62: ; preds = %56
%63 = load i8*, i8** %2
%64 = call i32 @strcmp(i8* %63, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.20, i64 0, i64 0))
%65 = icmp ne i32 %64, 0
br i1 %65, label %68, label %66
66: ; preds = %62
%67 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([381 x i8], [381 x i8]* @.str.21, i64 0, i64 0))
br label %138
68: ; preds = %62
%69 = load i8*, i8** %2
%70 = call i32 @strcmp(i8* %69, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.22, i64 0, i64 0))
%71 = icmp ne i32 %70, 0
br i1 %71, label %74, label %72
72: ; preds = %68
%73 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([376 x i8], [376 x i8]* @.str.23, i64 0, i64 0), i32 25)
br label %137
74: ; preds = %68
%75 = load i8*, i8** %2
%76 = call i32 @strcmp(i8* %75, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.24, i64 0, i64 0))
%77 = icmp ne i32 %76, 0
br i1 %77, label %80, label %78
78: ; preds = %74
%79 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([395 x i8], [395 x i8]* @.str.25, i64 0, i64 0))
br label %136
80: ; preds = %74
%81 = load i8*, i8** %2
%82 = call i32 @strcmp(i8* %81, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.26, i64 0, i64 0))
%83 = icmp ne i32 %82, 0
br i1 %83, label %86, label %84
84: ; preds = %80
%85 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([453 x i8], [453 x i8]* @.str.27, i64 0, i64 0))
br label %135
86: ; preds = %80
%87 = load i8*, i8** %2
%88 = call i32 @strcmp(i8* %87, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.28, i64 0, i64 0))
%89 = icmp ne i32 %88, 0
br i1 %89, label %92, label %90
90: ; preds = %86
%91 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([48 x i8], [48 x i8]* @.str.29, i64 0, i64 0))
br label %134
92: ; preds = %86
%93 = load i8*, i8** %2
%94 = call i32 @strcmp(i8* %93, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.30, i64 0, i64 0))
%95 = icmp ne i32 %94, 0
br i1 %95, label %98, label %96
96: ; preds = %92
%97 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.31, i64 0, i64 0))
br label %133
98: ; preds = %92
%99 = load i8*, i8** %2
%100 = call i32 @strcmp(i8* %99, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.32, i64 0, i64 0))
%101 = icmp ne i32 %100, 0
br i1 %101, label %104, label %102
102: ; preds = %98
%103 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([141 x i8], [141 x i8]* @.str.33, i64 0, i64 0))
br label %132
104: ; preds = %98
%105 = load i8*, i8** %2
%106 = call i32 @strcmp(i8* %105, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.34, i64 0, i64 0))
%107 = icmp ne i32 %106, 0
br i1 %107, label %110, label %108
108: ; preds = %104
%109 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([394 x i8], [394 x i8]* @.str.35, i64 0, i64 0), i32 25)
br label %131
110: ; preds = %104
%111 = load i8*, i8** %2
%112 = call i32 @strcmp(i8* %111, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.36, i64 0, i64 0))
%113 = icmp ne i32 %112, 0
br i1 %113, label %116, label %114
114: ; preds = %110
%115 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([56 x i8], [56 x i8]* @.str.37, i64 0, i64 0))
br label %130
116: ; preds = %110
%117 = load i8*, i8** %2
%118 = call i32 @strcmp(i8* %117, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.38, i64 0, i64 0))
%119 = icmp ne i32 %118, 0
br i1 %119, label %122, label %120
120: ; preds = %116
%121 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([368 x i8], [368 x i8]* @.str.39, i64 0, i64 0))
br label %129
122: ; preds = %116
%123 = load i8*, i8** %2
%124 = call i32 @strcmp(i8* %123, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.40, i64 0, i64 0))
%125 = icmp ne i32 %124, 0
br i1 %125, label %128, label %126
126: ; preds = %122
%127 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([51 x i8], [51 x i8]* @.str.41, i64 0, i64 0))
br label %128
128: ; preds = %126, %122
br label %129
129: ; preds = %128, %120
br label %130
130: ; preds = %129, %114
br label %131
131: ; preds = %130, %108
br label %132
132: ; preds = %131, %102
br label %133
133: ; preds = %132, %96
br label %134
134: ; preds = %133, %90
br label %135
135: ; preds = %134, %84
br label %136
136: ; preds = %135, %78
br label %137
137: ; preds = %136, %72
br label %138
138: ; preds = %137, %66
br label %139
139: ; preds = %138, %60
br label %140
140: ; preds = %139, %54
br label %141
141: ; preds = %140, %48
br label %142
142: ; preds = %141, %42
br label %143
143: ; preds = %142, %36
br label %144
144: ; preds = %143, %30
br label %145
145: ; preds = %144, %24
br label %146
146: ; preds = %145, %18
br label %147
147: ; preds = %146, %12
br label %148
148: ; preds = %147, %6
ret void
}

LLVM IR (-O2):
@.str = [5 x i8] c"HELP\00"
@.str.2 = [15 x i8] c"HELP BACKTRACE\00"
@.str.4 = [16 x i8] c"HELP BACKTRACES\00"
@.str.6 = [11 x i8] c"HELP BREAK\00"
@.str.8 = [17 x i8] c"HELP BREAKPOINTS\00"
@.str.10 = [10 x i8] c"HELP CONT\00"
@.str.12 = [18 x i8] c"HELP CONT-TIL-NEW\00"
@.str.14 = [12 x i8] c"HELP DELETE\00"
@.str.16 = [17 x i8] c"HELP DISASSEMBLE\00"
@.str.18 = [10 x i8] c"HELP DUMP\00"
@.str.20 = [10 x i8] c"HELP EDIT\00"
@.str.22 = [11 x i8] c"HELP FILES\00"
@.str.23 = [376 x i8] c"\0Afiles RegularExpression\0A\09Dumps all of the source files whose names match the specified\0A\09regular expression. For example,\0A\09\09files not All files containing NOT.\0A\09\09files ^not All files beginning with NOT.\0A\09\09files not$ All files ending with NOT.\0A\09\09files (^not)|(not$) Beginning or ending with NOT.\0A\09The list is arbitrarily truncated after %d files.\0A\00"
@.str.24 = [10 x i8] c"HELP LIST\00"
@.str.26 = [13 x i8] c"HELP PATTERN\00"
@.str.28 = [11 x i8] c"HELP PRINT\00"
@.str.30 = [10 x i8] c"HELP QUIT\00"
@.str.32 = [10 x i8] c"HELP STEP\00"
@.str.34 = [14 x i8] c"HELP SYM-DUMP\00"
@.str.35 = [394 x i8] c"\0Asym-dump RegularExpression\0A\09Dumps all of the symbols whose names match the specified\0A\09regular expression. For example,\0A\09\09sym-dump not All symbols containing NOT.\0A\09\09sym-dump ^not All symbols beginning with NOT.\0A\09\09sym-dump not$ All symbols ending with NOT.\0A\09\09sym-dump (^not)|(not$) Beginning or ending with NOT.\0A\09The list is arbitrarily truncated after %d symbols.\0A\00"
@.str.36 = [17 x i8] c"HELP SYMBOL-FILE\00"
@.str.38 = [11 x i8] c"HELP WATCH\00"
@.str.40 = [12 x i8] c"HELP WHATIS\00"
@str = [556 x i8] c"\0AUnless otherwise specified, all numbers are in octal notation.\0AAddresses are a single octal number (like 130 or 4655). Input\0Aports are prefixed with I (like I1, I5) and output ports are\0Aprefixed with O (like O2, O4).\0A\0AFor information on specific topics, use one of the following:\0A\09help backtrace\0A\09help backtraces\0A\09help break\0A\09help breakpoints\0A\09help cont\0A\09help cont-til-new\0A\09help delete\0A\09help disassemble\0A\09help dump\0A\09help edit\0A\09help files\0A\09help list\0A\09help pattern\0A\09help print\0A\09help quit\0A\09help step\0A\09help sym-dump\0A\09help symbol-file\0A\09help watch\0A\09help whatis\00"
@str.42 = [359 x i8] c"\0Abacktrace N\0A\09Jump to a given backtrace point, as identified by the\0A\09index numbers shown in the 'backtraces' command.\0A\09Index 0 is the most recent backtrace point, index 1\0A\09the next-most-recent, and so on. This restores all\0A\09erasable memory and i/o channels. However, any\0A\09peripherals (such as a DSKY) will not necessarily\0A\09return to their previous states.\0A\00"
@str.43 = [57 x i8] c"\0Abacktraces\0A\09Displays the most recent backtrace points.\0A\00"
@str.44 = [200 x i8] c"\0Abreak A\0A\09Set a breakpoint at A, where A is:\0A\09 LABEL: set a breakpoint at the label\0A\09 LINE: set a breakpoint in the current file at a line number\0A\09 *ADDRESS: set a breakpoint at address A.\0A\00"
@str.45 = [72 x i8] c"\0Abreakpoints\0A\09List the defined breakpoints, watchpoints, and patterns.\0A\00"
@str.46 = [193 x i8] c"\0Acont\0A\09Continue execution. The program will continue executing\0A\09until a breakpoint is reached or, in Linux or (for versions\0A\0920040810 or later) Win32, until you hit the carriage-return\0A\09key.\0A\00"
@str.47 = [79 x i8] c"\0Acont-til-new\0A\09Continue execution until a new type of instruction is reached.\0A\00"
@str.48 = [186 x i8] c"\0Adelete [A]\0A\09Delete the breakpoint or watchpoint at address A. If \0A\09A is omitted, all breakpoints and watchpoints are deleted.\0A\0Adelete V M\0A\09Delete the pattern with value V and mask M.\0A\00"
@str.49 = [132 x i8] c"\0Adisassemble [A] <N>\0A\09Disassemble N instructions beginning at address A. If\0A\09N is ommitted, only a single instruction is displayed\0A\00"
@str.50 = [163 x i8] c"\0Adump [N] A\0A\09Dump values of N memory or i/o channel locations, from\0A\09address A. If N is omitted, it defaults to 1.\0A\0Adump\0A\09Simply repeat the last DUMP performed.\0A\00"
@str.51 = [380 x i8] c"\0Aedit [A] V\0A\09Change value of memory location or i/o channel A to V.\0A\09Special cases of the EDIT command include:\0A\09EDIT A V: Sets the Accumulator register to V\0A\09EDIT Q V: Sets the Quotient register to V\0A\09EDIT OVERFLOW V: Sets the Overflow register to V\0A\09EDIT INDEX V: Sets the Index register to V\0A\09EDIT HALT V: Sets the Halt register to V\0A\09EDIT PC V: Sets the Program Counter to V\0A\00"
@str.52 = [394 x i8] c"\0Alist\0A\09List displays lines in a source file. There are several\0A\09variants of this command\0A\09 list FILENAME:LINENO, to list around a line number in a file\0A\09 list LABEL, to list beginning at a label\0A\09 list LINENO, to list around a line in the current file\0A\09 list FROM,TO, to list a range of lines\0A\09 list -, to list lines previous to the current listing\0A\09 list, to list the next set of lines\0A\00"
@str.53 = [452 x i8] c"\0Apattern V M\0A\09Set a pattern with value V and mask M. A \22pattern\22\0A\09is like a breakpoint, except that instead of halting\0A\09upon reaching a certain address, the program-halt occurs\0A\09upon reaching a certain value (V) at the program counter.\0A\09The instruction stored at the program counter is logically\0A\09bitwise ANDed with the mask M before comparing it to V.\0A\09This can be used (for example) to select a given instruction\0A\09type. V and M are both in octal.\0A\00"
@str.54 = [47 x i8] c"\0Aprint S\0A\09Prints out the value of the symbol S\00"
@str.55 = [35 x i8] c"\0Aquit (or exit)\0A\09End the program.\0A\00"
@str.56 = [140 x i8] c"\0Astep [N] (or next [N])\0A\09Step through N instructions. If omitted, N defaults to 1.\0A\09You can also use just the first letter, as shorthand.\0A\00"
@str.57 = [55 x i8] c"\0Asymbol-file FILE\0A\09Loads the FILE as the symbol table\0A\00"
@str.58 = [367 x i8] c"\0Awatch A\0A\09Halt execution when a value is written to the address A.\0A\09The break occurs AFTER the value is changed, but the\0A\09\22before\22 and \22after\22 values stored at the address\0A\09are displayed after execution stops. The address\0A\09obviously has to be in erasable memory or i/o-channel memory.\0A\09Note that the value stored at the address has to CHANGE to\0A\09trigger the break.\0A\00"
@str.59 = [50 x i8] c"\0Awhatis S\0A\09Prints information about the symbol S\0A\00"
define void @HelpAGS(i8* %0) {
%2 = tail call i32 @strcmp(i8* dereferenceable(1) %0, i8* dereferenceable(5) getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0))
%3 = icmp eq i32 %2, 0
br i1 %3, label %4, label %6
4: ; preds = %1
%5 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([556 x i8], [556 x i8]* @str, i64 0, i64 0))
br label %106
6: ; preds = %1
%7 = tail call i32 @strcmp(i8* dereferenceable(1) %0, i8* dereferenceable(15) getelementptr inbounds ([15 x i8], [15 x i8]* @.str.2, i64 0, i64 0))
%8 = icmp eq i32 %7, 0
br i1 %8, label %9, label %11
9: ; preds = %6
%10 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([359 x i8], [359 x i8]* @str.42, i64 0, i64 0))
br label %106
11: ; preds = %6
%12 = tail call i32 @strcmp(i8* dereferenceable(1) %0, i8* dereferenceable(16) getelementptr inbounds ([16 x i8], [16 x i8]* @.str.4, i64 0, i64 0))
%13 = icmp eq i32 %12, 0
br i1 %13, label %14, label %16
14: ; preds = %11
%15 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([57 x i8], [57 x i8]* @str.43, i64 0, i64 0))
br label %106
16: ; preds = %11
%17 = tail call i32 @strcmp(i8* dereferenceable(1) %0, i8* dereferenceable(11) getelementptr inbounds ([11 x i8], [11 x i8]* @.str.6, i64 0, i64 0))
%18 = icmp eq i32 %17, 0
br i1 %18, label %19, label %21
19: ; preds = %16
%20 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([200 x i8], [200 x i8]* @str.44, i64 0, i64 0))
br label %106
21: ; preds = %16
%22 = tail call i32 @strcmp(i8* dereferenceable(1) %0, i8* dereferenceable(17) getelementptr inbounds ([17 x i8], [17 x i8]* @.str.8, i64 0, i64 0))
%23 = icmp eq i32 %22, 0
br i1 %23, label %24, label %26
24: ; preds = %21
%25 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([72 x i8], [72 x i8]* @str.45, i64 0, i64 0))
br label %106
26: ; preds = %21
%27 = tail call i32 @strcmp(i8* dereferenceable(1) %0, i8* dereferenceable(10) getelementptr inbounds ([10 x i8], [10 x i8]* @.str.10, i64 0, i64 0))
%28 = icmp eq i32 %27, 0
br i1 %28, label %29, label %31
29: ; preds = %26
%30 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([193 x i8], [193 x i8]* @str.46, i64 0, i64 0))
br label %106
31: ; preds = %26
%32 = tail call i32 @strcmp(i8* dereferenceable(1) %0, i8* dereferenceable(18) getelementptr inbounds ([18 x i8], [18 x i8]* @.str.12, i64 0, i64 0))
%33 = icmp eq i32 %32, 0
br i1 %33, label %34, label %36
34: ; preds = %31
%35 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.47, i64 0, i64 0))
br label %106
36: ; preds = %31
%37 = tail call i32 @strcmp(i8* dereferenceable(1) %0, i8* dereferenceable(12) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.14, i64 0, i64 0))
%38 = icmp eq i32 %37, 0
br i1 %38, label %39, label %41
39: ; preds = %36
%40 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([186 x i8], [186 x i8]* @str.48, i64 0, i64 0))
br label %106
41: ; preds = %36
%42 = tail call i32 @strcmp(i8* dereferenceable(1) %0, i8* dereferenceable(17) getelementptr inbounds ([17 x i8], [17 x i8]* @.str.16, i64 0, i64 0))
%43 = icmp eq i32 %42, 0
br i1 %43, label %44, label %46
44: ; preds = %41
%45 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([132 x i8], [132 x i8]* @str.49, i64 0, i64 0))
br label %106
46: ; preds = %41
%47 = tail call i32 @strcmp(i8* dereferenceable(1) %0, i8* dereferenceable(10) getelementptr inbounds ([10 x i8], [10 x i8]* @.str.18, i64 0, i64 0))
%48 = icmp eq i32 %47, 0
br i1 %48, label %49, label %51
49: ; preds = %46
%50 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([163 x i8], [163 x i8]* @str.50, i64 0, i64 0))
br label %106
51: ; preds = %46
%52 = tail call i32 @strcmp(i8* dereferenceable(1) %0, i8* dereferenceable(10) getelementptr inbounds ([10 x i8], [10 x i8]* @.str.20, i64 0, i64 0))
%53 = icmp eq i32 %52, 0
br i1 %53, label %54, label %56
54: ; preds = %51
%55 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([380 x i8], [380 x i8]* @str.51, i64 0, i64 0))
br label %106
56: ; preds = %51
%57 = tail call i32 @strcmp(i8* dereferenceable(1) %0, i8* dereferenceable(11) getelementptr inbounds ([11 x i8], [11 x i8]* @.str.22, i64 0, i64 0))
%58 = icmp eq i32 %57, 0
br i1 %58, label %59, label %61
59: ; preds = %56
%60 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([376 x i8], [376 x i8]* @.str.23, i64 0, i64 0), i32 25)
br label %106
61: ; preds = %56
%62 = tail call i32 @strcmp(i8* dereferenceable(1) %0, i8* dereferenceable(10) getelementptr inbounds ([10 x i8], [10 x i8]* @.str.24, i64 0, i64 0))
%63 = icmp eq i32 %62, 0
br i1 %63, label %64, label %66
64: ; preds = %61
%65 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([394 x i8], [394 x i8]* @str.52, i64 0, i64 0))
br label %106
66: ; preds = %61
%67 = tail call i32 @strcmp(i8* dereferenceable(1) %0, i8* dereferenceable(13) getelementptr inbounds ([13 x i8], [13 x i8]* @.str.26, i64 0, i64 0))
%68 = icmp eq i32 %67, 0
br i1 %68, label %69, label %71
69: ; preds = %66
%70 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([452 x i8], [452 x i8]* @str.53, i64 0, i64 0))
br label %106
71: ; preds = %66
%72 = tail call i32 @strcmp(i8* dereferenceable(1) %0, i8* dereferenceable(11) getelementptr inbounds ([11 x i8], [11 x i8]* @.str.28, i64 0, i64 0))
%73 = icmp eq i32 %72, 0
br i1 %73, label %74, label %76
74: ; preds = %71
%75 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([47 x i8], [47 x i8]* @str.54, i64 0, i64 0))
br label %106
76: ; preds = %71
%77 = tail call i32 @strcmp(i8* dereferenceable(1) %0, i8* dereferenceable(10) getelementptr inbounds ([10 x i8], [10 x i8]* @.str.30, i64 0, i64 0))
%78 = icmp eq i32 %77, 0
br i1 %78, label %79, label %81
79: ; preds = %76
%80 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([35 x i8], [35 x i8]* @str.55, i64 0, i64 0))
br label %106
81: ; preds = %76
%82 = tail call i32 @strcmp(i8* dereferenceable(1) %0, i8* dereferenceable(10) getelementptr inbounds ([10 x i8], [10 x i8]* @.str.32, i64 0, i64 0))
%83 = icmp eq i32 %82, 0
br i1 %83, label %84, label %86
84: ; preds = %81
%85 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([140 x i8], [140 x i8]* @str.56, i64 0, i64 0))
br label %106
86: ; preds = %81
%87 = tail call i32 @strcmp(i8* dereferenceable(1) %0, i8* dereferenceable(14) getelementptr inbounds ([14 x i8], [14 x i8]* @.str.34, i64 0, i64 0))
%88 = icmp eq i32 %87, 0
br i1 %88, label %89, label %91
89: ; preds = %86
%90 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([394 x i8], [394 x i8]* @.str.35, i64 0, i64 0), i32 25)
br label %106
91: ; preds = %86
%92 = tail call i32 @strcmp(i8* dereferenceable(1) %0, i8* dereferenceable(17) getelementptr inbounds ([17 x i8], [17 x i8]* @.str.36, i64 0, i64 0))
%93 = icmp eq i32 %92, 0
br i1 %93, label %94, label %96
94: ; preds = %91
%95 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([55 x i8], [55 x i8]* @str.57, i64 0, i64 0))
br label %106
96: ; preds = %91
%97 = tail call i32 @strcmp(i8* dereferenceable(1) %0, i8* dereferenceable(11) getelementptr inbounds ([11 x i8], [11 x i8]* @.str.38, i64 0, i64 0))
%98 = icmp eq i32 %97, 0
br i1 %98, label %99, label %101
99: ; preds = %96
%100 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([367 x i8], [367 x i8]* @str.58, i64 0, i64 0))
br label %106
101: ; preds = %96
%102 = tail call i32 @strcmp(i8* dereferenceable(1) %0, i8* dereferenceable(12) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.40, i64 0, i64 0))
%103 = icmp eq i32 %102, 0
br i1 %103, label %104, label %106
104: ; preds = %101
%105 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([50 x i8], [50 x i8]* @str.59, i64 0, i64 0))
br label %106
106: ; preds = %9, %19, %29, %39, %49, %59, %69, %79, %89, %99, %104, %101, %94, %84, %74, %64, %54, %44, %34, %24, %14, %4
ret void
}