#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*/ HelpFilterVariables();
int /*<<< orphan*/ fprintf(int /*<<< orphan*/, char *, char *, char *);
int /*<<< orphan*/ stderr;
void HelpFilter(void) {
  HelpFilterVariables();
  fprintf(
      stderr,
      "\nFilter Syntax:\n  numbers:\n     variables:\n	anything from the "
      "above table with a prefix of either 'c_' meaning\n        the one for "
      "the Client or 's_' meaning the value for the Server.  If\n	the "
      "prefix is omitted, it means \"either one\" (effectively "
      "becoming\n	\"c_VAR OR s_VAR)\").  As shorthand for a conjunction "
      "instead, you can\n	use the syntax 'b_' (as in b_mss>100), meaning "
      "'B'oth, (effectively\n	becoming \"c_VAR AND s_VAR)\").  For "
      "completeness, 'e_' means 'E'ither,\n	which is the normal default "
      "with no prefix.\n     constant:\n	strings:	anything in "
      "double quotes\n	booleans:	TRUE FALSE\n	numbers:	signed "
      "or unsigned constants\n  arithmetic operations: \n     any of the "
      "operators + - * / %% \n     performed on 'numbers'.  Normal operator "
      "precedence\n        is maintained (or use parens)\n  relational "
      "operators\n     any of < > = != >= <= applied to 'numbers'\n  boolean "
      "operators\n     AND, OR, NOT applied to the relational operators "
      "above\n  misc\n     use parens if you're not sure of the precedence\n   "
      "  use parens anyway, you might be smarter than I am! :-)\n     you'll "
      "probably need to put the '-fexpr' expression in single quotes\n     "
      "matched connection numbers are saved in file %s for later "
      "processing\n	with '-o%s' (for graphing, for example).  This is "
      "helpful, because\n	all the work is done in one pass of the file, "
      "so if you graph while\n	using a filter, you'll get ALL graphs, not "
      "just the ones you want.\n        Just filter on a first pass, then use "
      "the \"-oPF\" flag with graphing\n	on the second pass\n     most "
      "common synonyms for NOT, AND, and OR also work (!,&&,||,-a,-o)\n	(for "
      "those of us with very poor memories\nExamples\n  tcptrace '-fsegs>10' "
      "file\n  tcptrace '-fc_segs>10 OR s_segs>20 ' file\n  tcptrace '-f "
      "c_segs+10 > s_segs ' file\n  tcptrace -f'thruput>10000 and segs > 100' "
      "file\n  tcptrace '-fb_segs>10' file\n",
      "PF", "PF");
}


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

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

LLVM IR (-O0):
@stderr = global i32 0
@.str = [1819 x i8] c"\0AFilter Syntax:\0A numbers:\0A variables:\0A\09anything from the above table with a prefix of either 'c_' meaning\0A the one for the Client or 's_' meaning the value for the Server. If\0A\09the prefix is omitted, it means \22either one\22 (effectively becoming\0A\09\22c_VAR OR s_VAR)\22). As shorthand for a conjunction instead, you can\0A\09use the syntax 'b_' (as in b_mss>100), meaning 'B'oth, (effectively\0A\09becoming \22c_VAR AND s_VAR)\22). For completeness, 'e_' means 'E'ither,\0A\09which is the normal default with no prefix.\0A constant:\0A\09strings:\09anything in double quotes\0A\09booleans:\09TRUE FALSE\0A\09numbers:\09signed or unsigned constants\0A arithmetic operations: \0A any of the operators + - * / %% \0A performed on 'numbers'. Normal operator precedence\0A is maintained (or use parens)\0A relational operators\0A any of < > = != >= <= applied to 'numbers'\0A boolean operators\0A AND, OR, NOT applied to the relational operators above\0A misc\0A use parens if you're not sure of the precedence\0A use parens anyway, you might be smarter than I am! :-)\0A you'll probably need to put the '-fexpr' expression in single quotes\0A matched connection numbers are saved in file %s for later processing\0A\09with '-o%s' (for graphing, for example). This is helpful, because\0A\09all the work is done in one pass of the file, so if you graph while\0A\09using a filter, you'll get ALL graphs, not just the ones you want.\0A Just filter on a first pass, then use the \22-oPF\22 flag with graphing\0A\09on the second pass\0A most common synonyms for NOT, AND, and OR also work (!,&&,||,-a,-o)\0A\09(for those of us with very poor memories\0AExamples\0A tcptrace '-fsegs>10' file\0A tcptrace '-fc_segs>10 OR s_segs>20 ' file\0A tcptrace '-f c_segs+10 > s_segs ' file\0A tcptrace -f'thruput>10000 and segs > 100' file\0A tcptrace '-fb_segs>10' file\0A\00"
@.str.1 = [3 x i8] c"PF\00"
define void @HelpFilter() {
%1 = call i32 (...) @HelpFilterVariables()
%2 = load i32, i32* @stderr
%3 = call i32 @fprintf(i32 %2, i8* getelementptr inbounds ([1819 x i8], [1819 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [1819 x i8] c"\0AFilter Syntax:\0A numbers:\0A variables:\0A\09anything from the above table with a prefix of either 'c_' meaning\0A the one for the Client or 's_' meaning the value for the Server. If\0A\09the prefix is omitted, it means \22either one\22 (effectively becoming\0A\09\22c_VAR OR s_VAR)\22). As shorthand for a conjunction instead, you can\0A\09use the syntax 'b_' (as in b_mss>100), meaning 'B'oth, (effectively\0A\09becoming \22c_VAR AND s_VAR)\22). For completeness, 'e_' means 'E'ither,\0A\09which is the normal default with no prefix.\0A constant:\0A\09strings:\09anything in double quotes\0A\09booleans:\09TRUE FALSE\0A\09numbers:\09signed or unsigned constants\0A arithmetic operations: \0A any of the operators + - * / %% \0A performed on 'numbers'. Normal operator precedence\0A is maintained (or use parens)\0A relational operators\0A any of < > = != >= <= applied to 'numbers'\0A boolean operators\0A AND, OR, NOT applied to the relational operators above\0A misc\0A use parens if you're not sure of the precedence\0A use parens anyway, you might be smarter than I am! :-)\0A you'll probably need to put the '-fexpr' expression in single quotes\0A matched connection numbers are saved in file %s for later processing\0A\09with '-o%s' (for graphing, for example). This is helpful, because\0A\09all the work is done in one pass of the file, so if you graph while\0A\09using a filter, you'll get ALL graphs, not just the ones you want.\0A Just filter on a first pass, then use the \22-oPF\22 flag with graphing\0A\09on the second pass\0A most common synonyms for NOT, AND, and OR also work (!,&&,||,-a,-o)\0A\09(for those of us with very poor memories\0AExamples\0A tcptrace '-fsegs>10' file\0A tcptrace '-fc_segs>10 OR s_segs>20 ' file\0A tcptrace '-f c_segs+10 > s_segs ' file\0A tcptrace -f'thruput>10000 and segs > 100' file\0A tcptrace '-fb_segs>10' file\0A\00"
@.str.1 = [3 x i8] c"PF\00"
define void @HelpFilter() {
%1 = tail call i32 (...) @HelpFilterVariables()
%2 = load i32, i32* @stderr
%3 = tail call i32 @fprintf(i32 %2, i8* getelementptr inbounds ([1819 x i8], [1819 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0))
ret void
}