#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, int);
void usage() {
  printf(
      "Usage: xt_acct_ctl [OPTIONS] [COMMAND]\nOptions:\n  -4, --ipv4\n      "
      "Connect to the IPv4 kernel module (default).\n  -6, --ipv6\n      "
      "Connect to the IPv6 kernel module.\n  --procfs PATH\n      Path to "
      "procfs mount point (defaults to `/proc').\n  --configfs PATH\n      "
      "Path to configfs mount point (defaults to `/sys/kernel/config').\n  "
      "--version\n      Print the program version and exit.\n  --help\n      "
      "Print this message and exit.\nCommands:\n  list, ls            - List "
      "records pools.\n  add  [OPTIONS] POOL - Add a new pool.\n    Options:\n "
      "     -s, --size N\n          Pool size in records (defaults to %u).\n   "
      "   -i, --interval N\n          Aggregation interval in seconds "
      "(defaults to %u).\n      -r, --read-only\n          Allow to read "
      "already acquired data, but prohibit accounting of\n          new "
      "packets.\n      -w, --read-and-write\n          Allow both reading of "
      "acquired data and accounting of new packets\n          (default).\n     "
      " -e, [-E], --[no-]enable\n          Whether to enable the created pool "
      "(default is to not enable).\n  rm, del        POOL - Remove the pool.\n "
      " enable         POOL - Enabled the pool.\n  disable        POOL - "
      "Disable the pool.\n  exists         POOL - Test if the pool exists.\n  "
      "enabled        POOL - Test if the pool if enabled.\n  info [OPTIONS] "
      "POOL - Print the pool configuration.\n    Options:\n      -h, "
      "--human-readable\n          Print configuration in human readable "
      "format (default).\n      -c, --columns[=ATTRS]\n          Print values "
      "of attributes in ATTRS separated by spaces.\n          ATTRS defaults "
      "to `enabled,ro_mode,size,interval'.\n  cfg  [OPTIONS] POOL - Configure "
      "the pool.\n    Options:\n      -s, --size N\n          Pool size in "
      "records.\n      -i, --interval N\n          Aggregation interval in "
      "seconds.\n      -r, --read-only\n          Allow to read already "
      "acquired data, but prohibit accounting of\n          new packets.\n     "
      " -w, --read-and-write\n          Allow both reading of acquired data "
      "and accounting of new packets.\n      -e, [-E], --[no-]enable\n         "
      " Whether to enable the configured pool (default is to not enable).\n  "
      "stat [OPTIONS] POOL - Print the pool counters.\n    Options:\n      -h, "
      "--human-readable\n          Print conters in human readable format "
      "(default).\n      -c, --columns[=COUNTERS]\n          Print values of "
      "counters in COUNTERS separated by spaces.\n          COUNTERS defaults "
      "to 'startup_ts,pkts_acctd,bytes_acctd,\n          "
      "pkts_not_acctd,bytes_not_acctd'.\n  read [OPTIONS] POOL - Read records "
      "from the pool.\n    Options:\n      -f, [-F], --[no-]follow\n          "
      "Whether to keep trying when blocking is required.\n      -s, "
      "--proto-names\n          Print protocol names if possible (default).\n  "
      "    -n, --proto-numbers\n          Print protocol numbers.\n",
      4096, 5);
}


x86 assembly (clang, -O0):
<usage>:
push   %rbp
mov    %rsp,%rbp
lea    0xee5(%rip),%rdi
mov    $0x1000,%esi
mov    $0x5,%edx
call   1030 <printf@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<usage>:
lea    0xee9(%rip),%rdi
mov    $0x1000,%esi
mov    $0x5,%edx
jmp    1030 <printf@plt>

LLVM IR (-O0):
@.str = [2727 x i8] c"Usage: xt_acct_ctl [OPTIONS] [COMMAND]\0AOptions:\0A -4, --ipv4\0A Connect to the IPv4 kernel module (default).\0A -6, --ipv6\0A Connect to the IPv6 kernel module.\0A --procfs PATH\0A Path to procfs mount point (defaults to `/proc').\0A --configfs PATH\0A Path to configfs mount point (defaults to `/sys/kernel/config').\0A --version\0A Print the program version and exit.\0A --help\0A Print this message and exit.\0ACommands:\0A list, ls - List records pools.\0A add [OPTIONS] POOL - Add a new pool.\0A Options:\0A -s, --size N\0A Pool size in records (defaults to %u).\0A -i, --interval N\0A Aggregation interval in seconds (defaults to %u).\0A -r, --read-only\0A Allow to read already acquired data, but prohibit accounting of\0A new packets.\0A -w, --read-and-write\0A Allow both reading of acquired data and accounting of new packets\0A (default).\0A -e, [-E], --[no-]enable\0A Whether to enable the created pool (default is to not enable).\0A rm, del POOL - Remove the pool.\0A enable POOL - Enabled the pool.\0A disable POOL - Disable the pool.\0A exists POOL - Test if the pool exists.\0A enabled POOL - Test if the pool if enabled.\0A info [OPTIONS] POOL - Print the pool configuration.\0A Options:\0A -h, --human-readable\0A Print configuration in human readable format (default).\0A -c, --columns[=ATTRS]\0A Print values of attributes in ATTRS separated by spaces.\0A ATTRS defaults to `enabled,ro_mode,size,interval'.\0A cfg [OPTIONS] POOL - Configure the pool.\0A Options:\0A -s, --size N\0A Pool size in records.\0A -i, --interval N\0A Aggregation interval in seconds.\0A -r, --read-only\0A Allow to read already acquired data, but prohibit accounting of\0A new packets.\0A -w, --read-and-write\0A Allow both reading of acquired data and accounting of new packets.\0A -e, [-E], --[no-]enable\0A Whether to enable the configured pool (default is to not enable).\0A stat [OPTIONS] POOL - Print the pool counters.\0A Options:\0A -h, --human-readable\0A Print conters in human readable format (default).\0A -c, --columns[=COUNTERS]\0A Print values of counters in COUNTERS separated by spaces.\0A COUNTERS defaults to 'startup_ts,pkts_acctd,bytes_acctd,\0A pkts_not_acctd,bytes_not_acctd'.\0A read [OPTIONS] POOL - Read records from the pool.\0A Options:\0A -f, [-F], --[no-]follow\0A Whether to keep trying when blocking is required.\0A -s, --proto-names\0A Print protocol names if possible (default).\0A -n, --proto-numbers\0A Print protocol numbers.\0A\00"
define void @usage() {
%1 = call i32 @printf(i8* getelementptr inbounds ([2727 x i8], [2727 x i8]* @.str, i64 0, i64 0), i32 4096, i32 5)
ret void
}

LLVM IR (-O2):
@.str = [2727 x i8] c"Usage: xt_acct_ctl [OPTIONS] [COMMAND]\0AOptions:\0A -4, --ipv4\0A Connect to the IPv4 kernel module (default).\0A -6, --ipv6\0A Connect to the IPv6 kernel module.\0A --procfs PATH\0A Path to procfs mount point (defaults to `/proc').\0A --configfs PATH\0A Path to configfs mount point (defaults to `/sys/kernel/config').\0A --version\0A Print the program version and exit.\0A --help\0A Print this message and exit.\0ACommands:\0A list, ls - List records pools.\0A add [OPTIONS] POOL - Add a new pool.\0A Options:\0A -s, --size N\0A Pool size in records (defaults to %u).\0A -i, --interval N\0A Aggregation interval in seconds (defaults to %u).\0A -r, --read-only\0A Allow to read already acquired data, but prohibit accounting of\0A new packets.\0A -w, --read-and-write\0A Allow both reading of acquired data and accounting of new packets\0A (default).\0A -e, [-E], --[no-]enable\0A Whether to enable the created pool (default is to not enable).\0A rm, del POOL - Remove the pool.\0A enable POOL - Enabled the pool.\0A disable POOL - Disable the pool.\0A exists POOL - Test if the pool exists.\0A enabled POOL - Test if the pool if enabled.\0A info [OPTIONS] POOL - Print the pool configuration.\0A Options:\0A -h, --human-readable\0A Print configuration in human readable format (default).\0A -c, --columns[=ATTRS]\0A Print values of attributes in ATTRS separated by spaces.\0A ATTRS defaults to `enabled,ro_mode,size,interval'.\0A cfg [OPTIONS] POOL - Configure the pool.\0A Options:\0A -s, --size N\0A Pool size in records.\0A -i, --interval N\0A Aggregation interval in seconds.\0A -r, --read-only\0A Allow to read already acquired data, but prohibit accounting of\0A new packets.\0A -w, --read-and-write\0A Allow both reading of acquired data and accounting of new packets.\0A -e, [-E], --[no-]enable\0A Whether to enable the configured pool (default is to not enable).\0A stat [OPTIONS] POOL - Print the pool counters.\0A Options:\0A -h, --human-readable\0A Print conters in human readable format (default).\0A -c, --columns[=COUNTERS]\0A Print values of counters in COUNTERS separated by spaces.\0A COUNTERS defaults to 'startup_ts,pkts_acctd,bytes_acctd,\0A pkts_not_acctd,bytes_not_acctd'.\0A read [OPTIONS] POOL - Read records from the pool.\0A Options:\0A -f, [-F], --[no-]follow\0A Whether to keep trying when blocking is required.\0A -s, --proto-names\0A Print protocol names if possible (default).\0A -n, --proto-numbers\0A Print protocol numbers.\0A\00"
define void @usage() {
%1 = tail call i32 @printf(i8* getelementptr inbounds ([2727 x i8], [2727 x i8]* @.str, i64 0, i64 0), i32 4096, i32 5)
ret void
}