#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*/ fprintf(int /*<<< orphan*/, char *);
int /*<<< orphan*/ stdout;
void usage(void) {
  fprintf(stdout,
          "'speedway' Hardware Abstractor\n"
          "\n"
          "usage: speedway [OPTIONS] TARGET\n"
          "\n"
          " -?,-h,--help                 Show this help.\n"
          " -i,--id <ID>                 Set the HAB-ID to ID (hostname)\n"
          " -d,--gpi-delay <milli>       After a GPI1 event, wait N "
          "milliseconds before\n"
          "                              starting to scan for tags (0)\n"
          " -p,--gpi-polarity <N>        Trigger a tag scan when the value of "
          "GPI1 becomes N.\n"
          "                              Valid values are 0 and 1 (1)\n"
          " -n,--num-scans <N>           After a GPI trigger, do a sequence of "
          "N scans (1)\n"
          " -r,--rfsensitivity <N>       Set the RF Sensitivity to index N in "
          "dB (0)\n"
          " -l,--scan-idle <N>           Terminate scan early after N "
          "milliseconds without no\n"
          "                              new tag (3000)\n"
          " -t,--scan-timeout <N>        Stop scanning after N milliseconds "
          "(5000)\n"
          " -c,--immediate-trigger       Enables immediate trigger. Defaults "
          "to on.\n"
          " -u,--null-trigger            Enables null trigger, so it starts "
          "when we tell it to.\n"
          " -g,--gpi-trigger             Enables GPI trigger, so it starts "
          "when we push a button.\n"
          " -m,--show-messages           Printing all messages between the HAB "
          "and the Speedway device\n"
          " -S,--simple-report           Enable simple reports\n"
          " -a,--antenna-id <N>          Select antenna N, default all (0)\n"
          " -C,--disable-scrub           Disable scrubbing the reader "
          "configuration\n"
          " -T,--txpower-index <N>       Set the TX Power Index (61)\n"
          " -A,--antenna-squelch         Enable squelching of the antenna-id "
          "boolean resource\n"
          "                              causing new datapoints only to be "
          "published when the state\n"
          "                              of the resource changes.\n"
          " -P,--peak-rssi-squelch <N>   Set the Peak RSSI squelch value. "
          "Datapoint updates will not be\n"
          "                              published until a threshold of N is "
          "reached.\n"
          " -f,--peak-rssi-frequency <N> Minimum frequency for Peak RSSI to be "
          "pulished (seconds).\n"
          "                              Causes Peak RSSI datapoint updates to "
          "be published if N seconds\n"
          "                              have expired since last datapoint "
          "even if the squench value is\n"
          "                              not reached.\n"
          " -l,--lost-tag-timeout <N>    Wait N seconds before reporting the "
          "tag as lost.\n"
          " -s,--security-dir <dir>      Directory containing security "
          "certificates\n"
          " -v,--version                 Print version number\n"
          "\n"
          "TARGET is the hostname or IP of a Speedway device.\n");
}


x86 assembly (clang, -O0):
<usage>:
push   %rbp
mov    %rsp,%rbp
mov    0x2ec5(%rip),%rax
mov    (%rax),%edi
lea    0xedc(%rip),%rsi
call   1030 <fprintf@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<usage>:
mov    0x2ec9(%rip),%rax
mov    (%rax),%edi
lea    0xee0(%rip),%rsi
jmp    1030 <fprintf@plt>

LLVM IR (-O0):
@stdout = global i32 0
@.str = [2360 x i8] c"'speedway' Hardware Abstractor\0A\0Ausage: speedway [OPTIONS] TARGET\0A\0A -?,-h,--help Show this help.\0A -i,--id <ID> Set the HAB-ID to ID (hostname)\0A -d,--gpi-delay <milli> After a GPI1 event, wait N milliseconds before\0A starting to scan for tags (0)\0A -p,--gpi-polarity <N> Trigger a tag scan when the value of GPI1 becomes N.\0A Valid values are 0 and 1 (1)\0A -n,--num-scans <N> After a GPI trigger, do a sequence of N scans (1)\0A -r,--rfsensitivity <N> Set the RF Sensitivity to index N in dB (0)\0A -l,--scan-idle <N> Terminate scan early after N milliseconds without no\0A new tag (3000)\0A -t,--scan-timeout <N> Stop scanning after N milliseconds (5000)\0A -c,--immediate-trigger Enables immediate trigger. Defaults to on.\0A -u,--null-trigger Enables null trigger, so it starts when we tell it to.\0A -g,--gpi-trigger Enables GPI trigger, so it starts when we push a button.\0A -m,--show-messages Printing all messages between the HAB and the Speedway device\0A -S,--simple-report Enable simple reports\0A -a,--antenna-id <N> Select antenna N, default all (0)\0A -C,--disable-scrub Disable scrubbing the reader configuration\0A -T,--txpower-index <N> Set the TX Power Index (61)\0A -A,--antenna-squelch Enable squelching of the antenna-id boolean resource\0A causing new datapoints only to be published when the state\0A of the resource changes.\0A -P,--peak-rssi-squelch <N> Set the Peak RSSI squelch value. Datapoint updates will not be\0A published until a threshold of N is reached.\0A -f,--peak-rssi-frequency <N> Minimum frequency for Peak RSSI to be pulished (seconds).\0A Causes Peak RSSI datapoint updates to be published if N seconds\0A have expired since last datapoint even if the squench value is\0A not reached.\0A -l,--lost-tag-timeout <N> Wait N seconds before reporting the tag as lost.\0A -s,--security-dir <dir> Directory containing security certificates\0A -v,--version Print version number\0A\0ATARGET is the hostname or IP of a Speedway device.\0A\00"
define void @usage() {
%1 = load i32, i32* @stdout
%2 = call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([2360 x i8], [2360 x i8]* @.str, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@stdout = global i32 0
@.str = [2360 x i8] c"'speedway' Hardware Abstractor\0A\0Ausage: speedway [OPTIONS] TARGET\0A\0A -?,-h,--help Show this help.\0A -i,--id <ID> Set the HAB-ID to ID (hostname)\0A -d,--gpi-delay <milli> After a GPI1 event, wait N milliseconds before\0A starting to scan for tags (0)\0A -p,--gpi-polarity <N> Trigger a tag scan when the value of GPI1 becomes N.\0A Valid values are 0 and 1 (1)\0A -n,--num-scans <N> After a GPI trigger, do a sequence of N scans (1)\0A -r,--rfsensitivity <N> Set the RF Sensitivity to index N in dB (0)\0A -l,--scan-idle <N> Terminate scan early after N milliseconds without no\0A new tag (3000)\0A -t,--scan-timeout <N> Stop scanning after N milliseconds (5000)\0A -c,--immediate-trigger Enables immediate trigger. Defaults to on.\0A -u,--null-trigger Enables null trigger, so it starts when we tell it to.\0A -g,--gpi-trigger Enables GPI trigger, so it starts when we push a button.\0A -m,--show-messages Printing all messages between the HAB and the Speedway device\0A -S,--simple-report Enable simple reports\0A -a,--antenna-id <N> Select antenna N, default all (0)\0A -C,--disable-scrub Disable scrubbing the reader configuration\0A -T,--txpower-index <N> Set the TX Power Index (61)\0A -A,--antenna-squelch Enable squelching of the antenna-id boolean resource\0A causing new datapoints only to be published when the state\0A of the resource changes.\0A -P,--peak-rssi-squelch <N> Set the Peak RSSI squelch value. Datapoint updates will not be\0A published until a threshold of N is reached.\0A -f,--peak-rssi-frequency <N> Minimum frequency for Peak RSSI to be pulished (seconds).\0A Causes Peak RSSI datapoint updates to be published if N seconds\0A have expired since last datapoint even if the squench value is\0A not reached.\0A -l,--lost-tag-timeout <N> Wait N seconds before reporting the tag as lost.\0A -s,--security-dir <dir> Directory containing security certificates\0A -v,--version Print version number\0A\0ATARGET is the hostname or IP of a Speedway device.\0A\00"
define void @usage() {
%1 = load i32, i32* @stdout
%2 = tail call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([2360 x i8], [2360 x i8]* @.str, i64 0, i64 0))
ret void
}