#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*/ ScreenSep();
int /*<<< orphan*/ fprintf(int /*<<< orphan*/, char *);
int /*<<< orphan*/ stdout;
void HelpScreen5(void) {
  ScreenSep();
  fprintf(
      stdout,
      "--rule "
      "'RuleName,((LabA:m:M&LabB:m:M)|(LabC:m:M&LabD:m:M))|(LabE:m:M),window'\n"
      "               explicitly selects named patterns (<16) from a REBASE "
      "file with\n"
      "               per pattern min/Max limits. 'RuleName' = name for the "
      "pattern\n"
      "               len<=11 (unless #define changed), 'window' = sliding "
      "window \n"
      "               within which the rule must be true.\n"
      "               Parens () enforce logic; otherwise expressions are "
      "eval'd\n"
      "               L->R. LabX = Pat name; 'm' = min; M = Max; '&' = logical "
      "AND;\n"
      "               '|' = OR; '^' = XOR.  Enclosing single 'quotes' are "
      "REQUIRED.\n"
      "               Valid patterns are logged to file 'tacg.patterns' in "
      "current dir\n"
      "               for re-use. See manpage for info, examples\n"
      "--rulefile '/path/to/rulefile'\n"
      "              loads a series of complex rules like those described in "
      "--rule\n"
      "              above.  Format is as in the single quotes above : \n"
      "                 RuleName,(rulestring, as above),window \n"
      "-r (--regex) {'Label:RegexPat'} search for RegexPat; use 'Label' for "
      "naming;\n"
      "    translates IUPAC characters into std regex notation: \n"
      "                gy(tt|gc)nc{2,3}m -> g[ct](tt|gc).c{2,3}[ca] \n"
      "tacg uses Phil Hazel's pcre library and therefore perl syntax\n"
      "NB: regex-matching is incompatible with regular IUPAC and "
      "matrix-matching.\n"
      "-r (--regex) {'FILE:FileOfRegexPats'} open the FILE 'FileOfRegexPats' "
      "and search\n"
      "    for all Regex pat's in it; 'FILE' must be in CAPS to trigger this "
      "behavior.\n"
      "NB: -r REQUIRES the ':' separator and single quotes ' to enclose "
      "options.\n"
      "-R {alt pattern file} specifies alternative REBASE file in GCG format\n"
      "               OR use it to specify the MATRIX data file in TRANSFAC "
      "format.\n"
      "--raw          ANYTHING on STDIN is raw sequence; same behavior as "
      "pre-SEQIO.\n"
      "-s             summary - print Table of Zero Cutters, # hits of each "
      "Enzyme.\n"
      "-S {1*|2}      Sites - prints the the actual cut Sites in tabular "
      "form.\n"
      "               1* = sites noted as + offsets; fine for restriction "
      "mapping.\n"
      "               2  = note nonpals on bottom strand with '-' offsets.\n"
      "\n");
}


x86 assembly (clang, -O0):
<HelpScreen5>:
push   %rbp
mov    %rsp,%rbp
mov    $0x0,%al
call   1040 <ScreenSep@plt>
mov    0x2eae(%rip),%rax
mov    (%rax),%edi
lea    0xec5(%rip),%rsi
call   1030 <fprintf@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<HelpScreen5>:
push   %rax
xor    %eax,%eax
call   1040 <ScreenSep@plt>
mov    0x2eb1(%rip),%rax
mov    (%rax),%edi
lea    0xec8(%rip),%rsi
pop    %rax
jmp    1030 <fprintf@plt>

LLVM IR (-O0):
@stdout = global i32 0
@.str = [2045 x i8] c"--rule 'RuleName,((LabA:m:M&LabB:m:M)|(LabC:m:M&LabD:m:M))|(LabE:m:M),window'\0A explicitly selects named patterns (<16) from a REBASE file with\0A per pattern min/Max limits. 'RuleName' = name for the pattern\0A len<=11 (unless #define changed), 'window' = sliding window \0A within which the rule must be true.\0A Parens () enforce logic; otherwise expressions are eval'd\0A L->R. LabX = Pat name; 'm' = min; M = Max; '&' = logical AND;\0A '|' = OR; '^' = XOR. Enclosing single 'quotes' are REQUIRED.\0A Valid patterns are logged to file 'tacg.patterns' in current dir\0A for re-use. See manpage for info, examples\0A--rulefile '/path/to/rulefile'\0A loads a series of complex rules like those described in --rule\0A above. Format is as in the single quotes above : \0A RuleName,(rulestring, as above),window \0A-r (--regex) {'Label:RegexPat'} search for RegexPat; use 'Label' for naming;\0A translates IUPAC characters into std regex notation: \0A gy(tt|gc)nc{2,3}m -> g[ct](tt|gc).c{2,3}[ca] \0Atacg uses Phil Hazel's pcre library and therefore perl syntax\0ANB: regex-matching is incompatible with regular IUPAC and matrix-matching.\0A-r (--regex) {'FILE:FileOfRegexPats'} open the FILE 'FileOfRegexPats' and search\0A for all Regex pat's in it; 'FILE' must be in CAPS to trigger this behavior.\0ANB: -r REQUIRES the ':' separator and single quotes ' to enclose options.\0A-R {alt pattern file} specifies alternative REBASE file in GCG format\0A OR use it to specify the MATRIX data file in TRANSFAC format.\0A--raw ANYTHING on STDIN is raw sequence; same behavior as pre-SEQIO.\0A-s summary - print Table of Zero Cutters, # hits of each Enzyme.\0A-S {1*|2} Sites - prints the the actual cut Sites in tabular form.\0A 1* = sites noted as + offsets; fine for restriction mapping.\0A 2 = note nonpals on bottom strand with '-' offsets.\0A\0A\00"
define void @HelpScreen5() {
%1 = call i32 (...) @ScreenSep()
%2 = load i32, i32* @stdout
%3 = call i32 @fprintf(i32 %2, i8* getelementptr inbounds ([2045 x i8], [2045 x i8]* @.str, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@stdout = global i32 0
@.str = [2045 x i8] c"--rule 'RuleName,((LabA:m:M&LabB:m:M)|(LabC:m:M&LabD:m:M))|(LabE:m:M),window'\0A explicitly selects named patterns (<16) from a REBASE file with\0A per pattern min/Max limits. 'RuleName' = name for the pattern\0A len<=11 (unless #define changed), 'window' = sliding window \0A within which the rule must be true.\0A Parens () enforce logic; otherwise expressions are eval'd\0A L->R. LabX = Pat name; 'm' = min; M = Max; '&' = logical AND;\0A '|' = OR; '^' = XOR. Enclosing single 'quotes' are REQUIRED.\0A Valid patterns are logged to file 'tacg.patterns' in current dir\0A for re-use. See manpage for info, examples\0A--rulefile '/path/to/rulefile'\0A loads a series of complex rules like those described in --rule\0A above. Format is as in the single quotes above : \0A RuleName,(rulestring, as above),window \0A-r (--regex) {'Label:RegexPat'} search for RegexPat; use 'Label' for naming;\0A translates IUPAC characters into std regex notation: \0A gy(tt|gc)nc{2,3}m -> g[ct](tt|gc).c{2,3}[ca] \0Atacg uses Phil Hazel's pcre library and therefore perl syntax\0ANB: regex-matching is incompatible with regular IUPAC and matrix-matching.\0A-r (--regex) {'FILE:FileOfRegexPats'} open the FILE 'FileOfRegexPats' and search\0A for all Regex pat's in it; 'FILE' must be in CAPS to trigger this behavior.\0ANB: -r REQUIRES the ':' separator and single quotes ' to enclose options.\0A-R {alt pattern file} specifies alternative REBASE file in GCG format\0A OR use it to specify the MATRIX data file in TRANSFAC format.\0A--raw ANYTHING on STDIN is raw sequence; same behavior as pre-SEQIO.\0A-s summary - print Table of Zero Cutters, # hits of each Enzyme.\0A-S {1*|2} Sites - prints the the actual cut Sites in tabular form.\0A 1* = sites noted as + offsets; fine for restriction mapping.\0A 2 = note nonpals on bottom strand with '-' offsets.\0A\0A\00"
define void @HelpScreen5() {
%1 = tail call i32 (...) @ScreenSep()
%2 = load i32, i32* @stdout
%3 = tail call i32 @fprintf(i32 %2, i8* getelementptr inbounds ([2045 x i8], [2045 x i8]* @.str, i64 0, i64 0))
ret void
}