#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 *, int);
void Usage(void) {
  printf(
      "p2load - a loader for the propeller 2 - version 0.008, "
      "2013-04-23\nusage: p2load\n         [ -b baud ]               baud rate "
      "(default is %d)\n         [ -c addr[:param] ]       load a free COG "
      "with image at addr and parameter param\n         [ -c n,addr[:param] ]  "
      "   load COG n with image at addr and parameter param\n         [ -f "
      "file,faddr ]         write contents of file to flash at faddr\n         "
      "[ -f faddr,haddr,count ]  write count bytes of hub data at haddr to "
      "flash at faddr\n         [ -h ]                    cog image is at "
      "$1000 instead of $0e80\n         [ -m ]                    start the "
      "ROM monitor instead of the program\n         [ -n ]                    "
      "set stack top to $8000 for the DE0-Nano\n         [ -p port ]           "
      "    serial port (default is to auto-detect the port)\n         [ -P ]   "
      "                 list available serial ports\n         [ -r "
      "addr[:param] ]       run program in COG 0 from addr with parameter "
      "param\n         [ -r n, ]                 run program in COG n\n        "
      " [ -r n,addr[:param] ]     run program in COG n from addr with "
      "parameter param\n         [ -s ]                    strip $e80 bytes "
      "from start of the file before loading\n         [ -t ]                  "
      "  enter terminal mode after running the program\n         [ -T ]        "
      "            enter PST-compatible terminal mode\n         [ -v ]         "
      "           verbose output\n         [ -w ]                    write a "
      "bootable image to flash\n         [ -? ]                    display a "
      "usage message and exit\n         file[,addr]...            files to "
      "load\n",
      230400);
  exit(1);
}


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

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

LLVM IR (-O0):
@.str = [1566 x i8] c"p2load - a loader for the propeller 2 - version 0.008, 2013-04-23\0Ausage: p2load\0A [ -b baud ] baud rate (default is %d)\0A [ -c addr[:param] ] load a free COG with image at addr and parameter param\0A [ -c n,addr[:param] ] load COG n with image at addr and parameter param\0A [ -f file,faddr ] write contents of file to flash at faddr\0A [ -f faddr,haddr,count ] write count bytes of hub data at haddr to flash at faddr\0A [ -h ] cog image is at $1000 instead of $0e80\0A [ -m ] start the ROM monitor instead of the program\0A [ -n ] set stack top to $8000 for the DE0-Nano\0A [ -p port ] serial port (default is to auto-detect the port)\0A [ -P ] list available serial ports\0A [ -r addr[:param] ] run program in COG 0 from addr with parameter param\0A [ -r n, ] run program in COG n\0A [ -r n,addr[:param] ] run program in COG n from addr with parameter param\0A [ -s ] strip $e80 bytes from start of the file before loading\0A [ -t ] enter terminal mode after running the program\0A [ -T ] enter PST-compatible terminal mode\0A [ -v ] verbose output\0A [ -w ] write a bootable image to flash\0A [ -? ] display a usage message and exit\0A file[,addr]... files to load\0A\00"
define void @Usage() {
%1 = call i32 @printf(i8* getelementptr inbounds ([1566 x i8], [1566 x i8]* @.str, i64 0, i64 0), i32 230400)
%2 = call i32 @exit(i32 1)
unreachable
}

LLVM IR (-O2):
@.str = [1566 x i8] c"p2load - a loader for the propeller 2 - version 0.008, 2013-04-23\0Ausage: p2load\0A [ -b baud ] baud rate (default is %d)\0A [ -c addr[:param] ] load a free COG with image at addr and parameter param\0A [ -c n,addr[:param] ] load COG n with image at addr and parameter param\0A [ -f file,faddr ] write contents of file to flash at faddr\0A [ -f faddr,haddr,count ] write count bytes of hub data at haddr to flash at faddr\0A [ -h ] cog image is at $1000 instead of $0e80\0A [ -m ] start the ROM monitor instead of the program\0A [ -n ] set stack top to $8000 for the DE0-Nano\0A [ -p port ] serial port (default is to auto-detect the port)\0A [ -P ] list available serial ports\0A [ -r addr[:param] ] run program in COG 0 from addr with parameter param\0A [ -r n, ] run program in COG n\0A [ -r n,addr[:param] ] run program in COG n from addr with parameter param\0A [ -s ] strip $e80 bytes from start of the file before loading\0A [ -t ] enter terminal mode after running the program\0A [ -T ] enter PST-compatible terminal mode\0A [ -v ] verbose output\0A [ -w ] write a bootable image to flash\0A [ -? ] display a usage message and exit\0A file[,addr]... files to load\0A\00"
define void @Usage() {
%1 = tail call i32 @printf(i8* getelementptr inbounds ([1566 x i8], [1566 x i8]* @.str, i64 0, i64 0), i32 230400)
%2 = tail call i32 @exit(i32 1)
unreachable
}