#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 *);
void usage() {
  printf(
      "Usage: nf_tbf_ctl [OPTIONS] [COMMAND]\nOptions:\n  --configfs PATH\n    "
      "  Path to the configfs mount point (defaults to `%s').\n  --version\n   "
      "   Print the program version and exit.\n  --help\n      Print this "
      "message and exit.\nCommands:\n  list, ls              - List buckets.\n "
      " add [OPTIONS] BUCKET  - Add a new bucket.\n    Options:\n      -l, "
      "--limit BYTES\n          Maximum queue size.\n      -L, --latency MS\n  "
      "        Maximum amount of time a (high priority) packet can be held\n   "
      "       in the queue.\n      -b, --burst BYTES\n          Number of "
      "bytes that can be sent instantaneously.\n      -r, --rate RATE\n        "
      "  Maximum speed.\n  rm, del BUCKET         - Remove the bucket.\n  "
      "exists BUCKET          - Test if the bucket exists\n  configured BUCKET "
      "     - Test if the bucket is configured\n  info [OPTIONS] BUCKET  - "
      "Print the bucket configuration\n    Options:\n      -h, "
      "--human-readable\n          Print configuration in human readable "
      "format (default).\n      -c, --columns[=SETTINGS]\n          Print "
      "values of settings in SETTINGS separated by spaces.\n          SETTINGS "
      "defaults to `limit,latency,burst,rate'.\n  cfg [OPTIONS] BUCKET   - "
      "Reconfigure the bucket\n    Options:\n      -l, --limit BYTES\n         "
      " Maximum queue size.\n      -L, --latency MS\n          Maximum amount "
      "of time a (high priority) packet can be held\n          in the queue.\n "
      "     -b, --burst BYTES\n          Number of bytes that can be sent "
      "instantaneously.\n      -r, --rate RATE\n          Maximum speed.\n  "
      "stats [OPTIONS] BUCKET - Print the bucket counters\n    Options:\n      "
      "-h, --human-readable\n          Print counters in human readable format "
      "(default).\n      -c, --columns[=COUNTERS]\n          Print values of "
      "counters in COUNTERS separated by spaces.\n          COUNTERS defaults "
      "to `first_pkt_ts,pkts_bursted,bytes_bursted,\n          "
      "pkts_queued,bytes_queued,pkts_dropped,bytes_dropped,\n          "
      "pkts_nomem,bytes_nomem'.\n",
      "/sys/kernel/config");
}


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

x86 assembly (clang, -O2):
<usage>:
lea    0xee9(%rip),%rdi
lea    0x1650(%rip),%rsi
jmp    1030 <printf@plt>

LLVM IR (-O0):
@.str = [1902 x i8] c"Usage: nf_tbf_ctl [OPTIONS] [COMMAND]\0AOptions:\0A --configfs PATH\0A Path to the configfs mount point (defaults to `%s').\0A --version\0A Print the program version and exit.\0A --help\0A Print this message and exit.\0ACommands:\0A list, ls - List buckets.\0A add [OPTIONS] BUCKET - Add a new bucket.\0A Options:\0A -l, --limit BYTES\0A Maximum queue size.\0A -L, --latency MS\0A Maximum amount of time a (high priority) packet can be held\0A in the queue.\0A -b, --burst BYTES\0A Number of bytes that can be sent instantaneously.\0A -r, --rate RATE\0A Maximum speed.\0A rm, del BUCKET - Remove the bucket.\0A exists BUCKET - Test if the bucket exists\0A configured BUCKET - Test if the bucket is configured\0A info [OPTIONS] BUCKET - Print the bucket configuration\0A Options:\0A -h, --human-readable\0A Print configuration in human readable format (default).\0A -c, --columns[=SETTINGS]\0A Print values of settings in SETTINGS separated by spaces.\0A SETTINGS defaults to `limit,latency,burst,rate'.\0A cfg [OPTIONS] BUCKET - Reconfigure the bucket\0A Options:\0A -l, --limit BYTES\0A Maximum queue size.\0A -L, --latency MS\0A Maximum amount of time a (high priority) packet can be held\0A in the queue.\0A -b, --burst BYTES\0A Number of bytes that can be sent instantaneously.\0A -r, --rate RATE\0A Maximum speed.\0A stats [OPTIONS] BUCKET - Print the bucket counters\0A Options:\0A -h, --human-readable\0A Print counters in human readable format (default).\0A -c, --columns[=COUNTERS]\0A Print values of counters in COUNTERS separated by spaces.\0A COUNTERS defaults to `first_pkt_ts,pkts_bursted,bytes_bursted,\0A pkts_queued,bytes_queued,pkts_dropped,bytes_dropped,\0A pkts_nomem,bytes_nomem'.\0A\00"
@.str.1 = [19 x i8] c"/sys/kernel/config\00"
define void @usage() {
%1 = call i32 @printf(i8* getelementptr inbounds ([1902 x i8], [1902 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.1, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@.str = [1902 x i8] c"Usage: nf_tbf_ctl [OPTIONS] [COMMAND]\0AOptions:\0A --configfs PATH\0A Path to the configfs mount point (defaults to `%s').\0A --version\0A Print the program version and exit.\0A --help\0A Print this message and exit.\0ACommands:\0A list, ls - List buckets.\0A add [OPTIONS] BUCKET - Add a new bucket.\0A Options:\0A -l, --limit BYTES\0A Maximum queue size.\0A -L, --latency MS\0A Maximum amount of time a (high priority) packet can be held\0A in the queue.\0A -b, --burst BYTES\0A Number of bytes that can be sent instantaneously.\0A -r, --rate RATE\0A Maximum speed.\0A rm, del BUCKET - Remove the bucket.\0A exists BUCKET - Test if the bucket exists\0A configured BUCKET - Test if the bucket is configured\0A info [OPTIONS] BUCKET - Print the bucket configuration\0A Options:\0A -h, --human-readable\0A Print configuration in human readable format (default).\0A -c, --columns[=SETTINGS]\0A Print values of settings in SETTINGS separated by spaces.\0A SETTINGS defaults to `limit,latency,burst,rate'.\0A cfg [OPTIONS] BUCKET - Reconfigure the bucket\0A Options:\0A -l, --limit BYTES\0A Maximum queue size.\0A -L, --latency MS\0A Maximum amount of time a (high priority) packet can be held\0A in the queue.\0A -b, --burst BYTES\0A Number of bytes that can be sent instantaneously.\0A -r, --rate RATE\0A Maximum speed.\0A stats [OPTIONS] BUCKET - Print the bucket counters\0A Options:\0A -h, --human-readable\0A Print counters in human readable format (default).\0A -c, --columns[=COUNTERS]\0A Print values of counters in COUNTERS separated by spaces.\0A COUNTERS defaults to `first_pkt_ts,pkts_bursted,bytes_bursted,\0A pkts_queued,bytes_queued,pkts_dropped,bytes_dropped,\0A pkts_nomem,bytes_nomem'.\0A\00"
@.str.1 = [19 x i8] c"/sys/kernel/config\00"
define void @usage() {
%1 = tail call i32 @printf(i8* getelementptr inbounds ([1902 x i8], [1902 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.1, i64 0, i64 0))
ret void
}