#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*/ exit(int);
int /*<<< orphan*/ printf(char *);
void Usage(void) {
  printf(
      "usage: propeller-load\n         [ -b <type> ]     select target board "
      "(default is 'default:default')\n         [ -p <port> ]     serial port "
      "(default is to auto-detect the port)\n         [ -P ]            list "
      "serial ports with Propeller chips\n         [ -Q ]            list "
      "available serial ports\n         [ -I <path> ]     add a directory to "
      "the include path\n         [ -D var=value ]  define a board "
      "configuration variable\n         [ -e ]            write the program "
      "into EEPROM\n         [ -r ]            run the program after loading\n "
      "        [ -g ]            set up the program for debugging after "
      "loading\n         [ -s ]            write a spin .binary file for use "
      "with the Propeller Tool\n         [ -x ]            write a .pex binary "
      "file for use with the SD loader or SD cache\n         [ -l ]            "
      "write a program to the sd card and use the SD loader\n         [ -z ]   "
      "         write a program to the sd card and use the SD cache\n         "
      "[ -f ]            write a file to the SD card\n         [ -t ]          "
      "  enter terminal mode after running the program\n         [ -t<baud> ]  "
      "    enter terminal mode with a different baud rate\n         [ -T ]     "
      "       enter pst terminal mode after running the program\n         [ "
      "-T<baud> ]      enter pst terminal mode with a different baud rate\n    "
      "     [ -q ]            quit on the exit sequence (0xff, 0x00, status)\n "
      "        [ -v ]            verbose output\n         [ -S ]            "
      "slow down the loader by adding 5 microseconds delay\n         [ -S<n> ] "
      "        slow down the loader by adding <n> microseconds delay\n         "
      "[ -? ]            display a usage message and exit\n         <name>     "
      "       elf or spin binary file to load\n\nTarget board type can be "
      "either a single identifier like 'propboe' in which case the "
      "subtype\ndefaults to 'default' or it can be of the form "
      "<type>:<subtype> like 'c3:ram'.\n\nVariables that can be set with -D "
      "are:\n  clkfreq clkmode baudrate reset rxpin txpin tvpin\n  "
      "cache-driver cache-size cache-param1 cache-param2\n  sd-driver sdspi-do "
      "sdspi-clk sdspi-di sdspi-cs\n  sdspi-clr sdspi-inc sdspi-start "
      "sdspi-width spdspi-addr\n  sdspi-config1 sdspi-config2 "
      "eeprom-first\n\nValue expressions for -D can include:\n  rcfast rcslow "
      "xinput xtal1 xtal2 xtal3 pll1x pll2x pll4x pll8x pll16x k m mhz true "
      "false\n  an integer or two operands with a binary operator + - * / %% & "
      "| or unary + or -\n  all operators have the same precedence\n\nThe -b "
      "option defaults to the value of the environment variable "
      "PROPELLER_LOAD_BOARD.\nThe -p option defaults to the value of the "
      "environment variable PROPELLER_LOAD_PORT\nif it is set. If not the port "
      "will be auto-detected.\n\nThe 'sd loader' loads AUTORUN.PEX from an SD "
      "card into external memory.\nIt requires a board with either external "
      "RAM or ROM.\n\nThe 'sd cache' arranges to run AUTORUN.PEX directly from "
      "the SD card.\nIt can be used on any board with an SD card slot.\n");
  exit(1);
}


x86 assembly (clang, -O0):
<Usage>:
push   %rbp
mov    %rsp,%rbp
lea    0xed5(%rip),%rdi
call   1030 <printf@plt>
mov    $0x1,%edi
call   1040 <exit@plt>

x86 assembly (clang, -O2):
<Usage>:
push   %rax
lea    0xed8(%rip),%rdi
call   1030 <printf@plt>
mov    $0x1,%edi
call   1040 <exit@plt>

LLVM IR (-O0):
@.str = [2892 x i8] c"usage: propeller-load\0A [ -b <type> ] select target board (default is 'default:default')\0A [ -p <port> ] serial port (default is to auto-detect the port)\0A [ -P ] list serial ports with Propeller chips\0A [ -Q ] list available serial ports\0A [ -I <path> ] add a directory to the include path\0A [ -D var=value ] define a board configuration variable\0A [ -e ] write the program into EEPROM\0A [ -r ] run the program after loading\0A [ -g ] set up the program for debugging after loading\0A [ -s ] write a spin .binary file for use with the Propeller Tool\0A [ -x ] write a .pex binary file for use with the SD loader or SD cache\0A [ -l ] write a program to the sd card and use the SD loader\0A [ -z ] write a program to the sd card and use the SD cache\0A [ -f ] write a file to the SD card\0A [ -t ] enter terminal mode after running the program\0A [ -t<baud> ] enter terminal mode with a different baud rate\0A [ -T ] enter pst terminal mode after running the program\0A [ -T<baud> ] enter pst terminal mode with a different baud rate\0A [ -q ] quit on the exit sequence (0xff, 0x00, status)\0A [ -v ] verbose output\0A [ -S ] slow down the loader by adding 5 microseconds delay\0A [ -S<n> ] slow down the loader by adding <n> microseconds delay\0A [ -? ] display a usage message and exit\0A <name> elf or spin binary file to load\0A\0ATarget board type can be either a single identifier like 'propboe' in which case the subtype\0Adefaults to 'default' or it can be of the form <type>:<subtype> like 'c3:ram'.\0A\0AVariables that can be set with -D are:\0A clkfreq clkmode baudrate reset rxpin txpin tvpin\0A cache-driver cache-size cache-param1 cache-param2\0A sd-driver sdspi-do sdspi-clk sdspi-di sdspi-cs\0A sdspi-clr sdspi-inc sdspi-start sdspi-width spdspi-addr\0A sdspi-config1 sdspi-config2 eeprom-first\0A\0AValue expressions for -D can include:\0A rcfast rcslow xinput xtal1 xtal2 xtal3 pll1x pll2x pll4x pll8x pll16x k m mhz true false\0A an integer or two operands with a binary operator + - * / %% & | or unary + or -\0A all operators have the same precedence\0A\0AThe -b option defaults to the value of the environment variable PROPELLER_LOAD_BOARD.\0AThe -p option defaults to the value of the environment variable PROPELLER_LOAD_PORT\0Aif it is set. If not the port will be auto-detected.\0A\0AThe 'sd loader' loads AUTORUN.PEX from an SD card into external memory.\0AIt requires a board with either external RAM or ROM.\0A\0AThe 'sd cache' arranges to run AUTORUN.PEX directly from the SD card.\0AIt can be used on any board with an SD card slot.\0A\00"
define void @Usage() {
%1 = call i32 @printf(i8* getelementptr inbounds ([2892 x i8], [2892 x i8]* @.str, i64 0, i64 0))
%2 = call i32 @exit(i32 1)
unreachable
}

LLVM IR (-O2):
@.str = [2892 x i8] c"usage: propeller-load\0A [ -b <type> ] select target board (default is 'default:default')\0A [ -p <port> ] serial port (default is to auto-detect the port)\0A [ -P ] list serial ports with Propeller chips\0A [ -Q ] list available serial ports\0A [ -I <path> ] add a directory to the include path\0A [ -D var=value ] define a board configuration variable\0A [ -e ] write the program into EEPROM\0A [ -r ] run the program after loading\0A [ -g ] set up the program for debugging after loading\0A [ -s ] write a spin .binary file for use with the Propeller Tool\0A [ -x ] write a .pex binary file for use with the SD loader or SD cache\0A [ -l ] write a program to the sd card and use the SD loader\0A [ -z ] write a program to the sd card and use the SD cache\0A [ -f ] write a file to the SD card\0A [ -t ] enter terminal mode after running the program\0A [ -t<baud> ] enter terminal mode with a different baud rate\0A [ -T ] enter pst terminal mode after running the program\0A [ -T<baud> ] enter pst terminal mode with a different baud rate\0A [ -q ] quit on the exit sequence (0xff, 0x00, status)\0A [ -v ] verbose output\0A [ -S ] slow down the loader by adding 5 microseconds delay\0A [ -S<n> ] slow down the loader by adding <n> microseconds delay\0A [ -? ] display a usage message and exit\0A <name> elf or spin binary file to load\0A\0ATarget board type can be either a single identifier like 'propboe' in which case the subtype\0Adefaults to 'default' or it can be of the form <type>:<subtype> like 'c3:ram'.\0A\0AVariables that can be set with -D are:\0A clkfreq clkmode baudrate reset rxpin txpin tvpin\0A cache-driver cache-size cache-param1 cache-param2\0A sd-driver sdspi-do sdspi-clk sdspi-di sdspi-cs\0A sdspi-clr sdspi-inc sdspi-start sdspi-width spdspi-addr\0A sdspi-config1 sdspi-config2 eeprom-first\0A\0AValue expressions for -D can include:\0A rcfast rcslow xinput xtal1 xtal2 xtal3 pll1x pll2x pll4x pll8x pll16x k m mhz true false\0A an integer or two operands with a binary operator + - * / %% & | or unary + or -\0A all operators have the same precedence\0A\0AThe -b option defaults to the value of the environment variable PROPELLER_LOAD_BOARD.\0AThe -p option defaults to the value of the environment variable PROPELLER_LOAD_PORT\0Aif it is set. If not the port will be auto-detected.\0A\0AThe 'sd loader' loads AUTORUN.PEX from an SD card into external memory.\0AIt requires a board with either external RAM or ROM.\0A\0AThe 'sd cache' arranges to run AUTORUN.PEX directly from the SD card.\0AIt can be used on any board with an SD card slot.\0A\00"
define void @Usage() {
%1 = tail call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([2892 x i8], [2892 x i8]* @.str, i64 0, i64 0))
%2 = tail call i32 @exit(i32 1)
unreachable
}