#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 *);
void print_usage(void) {
  printf("Usage: bf [OPTIONS]... [FILE]"
         "\n"
         "Run the brainfuck program in FILE and output its contents to stdout."
         "\n"
         "\n"
         "Options:"
         "\n"
         "  -h, --help  Show this help text and exit"
         "\n"
         "  -d          Enable debugging with the # character"
         "\n"
         "\n"
         "Examples:"
         "\n"
         "  bf bfScript.b    Run the brainfuck program in bfScript.b"
         "\n"
         "\n"
         "Brainfuck Commands:"
         "\n"
         "  > : increment cell pointer"
         "\n"
         "  < : decrement cell pointer"
         "\n"
         "  + : increment value at cell pointer"
         "\n"
         "  - : decrement value at cell pointer"
         "\n"
         "  , : fill the cell at pointer with ASCII byte from stdin"
         "\n"
         "  . : print ASCII value of the cell at pointer to stdout"
         "\n"
         "  [ : jump to instruction after corresponding ] if the value at "
         "pointer is 0"
         "\n"
         "  ] : jump to corrisponding ["
         "\n");
}


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

x86 assembly (clang, -O2):
<print_usage>:
lea    0xee9(%rip),%rdi
jmp    1030 <puts@plt>

LLVM IR (-O0):
@.str = [652 x i8] c"Usage: bf [OPTIONS]... [FILE]\0ARun the brainfuck program in FILE and output its contents to stdout.\0A\0AOptions:\0A -h, --help Show this help text and exit\0A -d Enable debugging with the # character\0A\0AExamples:\0A bf bfScript.b Run the brainfuck program in bfScript.b\0A\0ABrainfuck Commands:\0A > : increment cell pointer\0A < : decrement cell pointer\0A + : increment value at cell pointer\0A - : decrement value at cell pointer\0A , : fill the cell at pointer with ASCII byte from stdin\0A . : print ASCII value of the cell at pointer to stdout\0A [ : jump to instruction after corresponding ] if the value at pointer is 0\0A ] : jump to corrisponding [\0A\00"
define void @print_usage() {
%1 = call i32 @printf(i8* getelementptr inbounds ([652 x i8], [652 x i8]* @.str, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@str = [651 x i8] c"Usage: bf [OPTIONS]... [FILE]\0ARun the brainfuck program in FILE and output its contents to stdout.\0A\0AOptions:\0A -h, --help Show this help text and exit\0A -d Enable debugging with the # character\0A\0AExamples:\0A bf bfScript.b Run the brainfuck program in bfScript.b\0A\0ABrainfuck Commands:\0A > : increment cell pointer\0A < : decrement cell pointer\0A + : increment value at cell pointer\0A - : decrement value at cell pointer\0A , : fill the cell at pointer with ASCII byte from stdin\0A . : print ASCII value of the cell at pointer to stdout\0A [ : jump to instruction after corresponding ] if the value at pointer is 0\0A ] : jump to corrisponding [\00"
define void @print_usage() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([651 x i8], [651 x i8]* @str, i64 0, i64 0))
ret void
}