#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 usage(void) {
  printf("\nUsage:   base64 [options] [infile [outfile]]"
         "\n  base64 encodes binary files as text for transmission over text "
         "channels."
         "\n  base64 can also decode these encoded files to restore the "
         "original binary."
         "\n  If files are not specified, stdin & stdout are used."
         "\n  Options may appear anywhere on the command line."
         "\n  Encode is the default mode of operation."
         "\n"
         "\nOptions:"
         "\n        -d, --decode      Decode base64 encoded file"
         "\n        -e, --encode      Encode file into base64"
         "\n        -n, --noerrcheck  Do not post error messages when decoding"
         "\n        -u, --help        Print this message"
         "\n"
         "\nReturns 0 if all is well,"
         "\n        1 on file I/O error,"
         "\n        2 error opening file,"
         "\n        3 invalid command line."
         "\n"
         "\n");
}


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

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

LLVM IR (-O0):
@.str = [692 x i8] c"\0AUsage: base64 [options] [infile [outfile]]\0A base64 encodes binary files as text for transmission over text channels.\0A base64 can also decode these encoded files to restore the original binary.\0A If files are not specified, stdin & stdout are used.\0A Options may appear anywhere on the command line.\0A Encode is the default mode of operation.\0A\0AOptions:\0A -d, --decode Decode base64 encoded file\0A -e, --encode Encode file into base64\0A -n, --noerrcheck Do not post error messages when decoding\0A -u, --help Print this message\0A\0AReturns 0 if all is well,\0A 1 on file I/O error,\0A 2 error opening file,\0A 3 invalid command line.\0A\0A\00"
define void @usage() {
%1 = call i32 @printf(i8* getelementptr inbounds ([692 x i8], [692 x i8]* @.str, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@str = [691 x i8] c"\0AUsage: base64 [options] [infile [outfile]]\0A base64 encodes binary files as text for transmission over text channels.\0A base64 can also decode these encoded files to restore the original binary.\0A If files are not specified, stdin & stdout are used.\0A Options may appear anywhere on the command line.\0A Encode is the default mode of operation.\0A\0AOptions:\0A -d, --decode Decode base64 encoded file\0A -e, --encode Encode file into base64\0A -n, --noerrcheck Do not post error messages when decoding\0A -u, --help Print this message\0A\0AReturns 0 if all is well,\0A 1 on file I/O error,\0A 2 error opening file,\0A 3 invalid command line.\0A\00"
define void @usage() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([691 x i8], [691 x i8]* @str, i64 0, i64 0))
ret void
}