#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 *, char *);
void help(char *name) {
  printf("Usage: %s [options] image1 image2 image3 ...\n\n"
         "Available options:\n"
         " --help        | -h : Show this help\n"
         " --alpha       | -a : Use the alpha channel (if applicable)\n"
         " --dontclear   | -c : Do not clear the screen before and after "
         "displaying the image\n"
         " --donthide    | -u : Do not hide the cursor before and after "
         "displaying the image\n"
         " --noinfo      | -i : Supress image information\n"
         " --stretch     | -f : Strech (using a simple resizing routine) the "
         "image to fit onto screen if necessary\n"
         " --colorstretch| -k : Strech (using a 'color average' resizing "
         "routine) the image to fit onto screen if necessary\n"
         " --enlarge     | -e : Enlarge the image to fit the whole screen if "
         "necessary\n"
         " --ignore-aspect| -r : Ignore the image aspect while resizing\n"
         " --delay <d>   | -s <delay> : Slideshow, 'delay' is the slideshow "
         "delay in tenths of seconds.\n\n"
         " --dfb       | -d <framebuffer>: frame buffer device.\n\n"
         "Keys:\n"
         " r            : Redraw the image\n"
         " a, d, w, x   : Pan the image\n"
         " f            : Toggle resizing on/off\n"
         " k            : Toggle resizing quality\n"
         " e            : Toggle enlarging on/off\n"
         " i            : Toggle respecting the image aspect on/off\n"
         " n            : Rotate the image 90 degrees left\n"
         " m            : Rotate the image 90 degrees right\n"
         " p            : Disable all transformations\n"
         "Copyright (C) 2000 - 2004 Mateusz Golicz, Tomasz Sterna.\n",
         name);
}


x86 assembly (clang, -O0):
<help>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %rdi,-0x8(%rbp)
mov    -0x8(%rbp),%rsi
lea    0xed9(%rip),%rdi
call   1030 <printf@plt>
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<help>:
mov    %rdi,%rsi
lea    0xee6(%rip),%rdi
jmp    1030 <printf@plt>

LLVM IR (-O0):
@.str = [1332 x i8] c"Usage: %s [options] image1 image2 image3 ...\0A\0AAvailable options:\0A --help | -h : Show this help\0A --alpha | -a : Use the alpha channel (if applicable)\0A --dontclear | -c : Do not clear the screen before and after displaying the image\0A --donthide | -u : Do not hide the cursor before and after displaying the image\0A --noinfo | -i : Supress image information\0A --stretch | -f : Strech (using a simple resizing routine) the image to fit onto screen if necessary\0A --colorstretch| -k : Strech (using a 'color average' resizing routine) the image to fit onto screen if necessary\0A --enlarge | -e : Enlarge the image to fit the whole screen if necessary\0A --ignore-aspect| -r : Ignore the image aspect while resizing\0A --delay <d> | -s <delay> : Slideshow, 'delay' is the slideshow delay in tenths of seconds.\0A\0A --dfb | -d <framebuffer>: frame buffer device.\0A\0AKeys:\0A r : Redraw the image\0A a, d, w, x : Pan the image\0A f : Toggle resizing on/off\0A k : Toggle resizing quality\0A e : Toggle enlarging on/off\0A i : Toggle respecting the image aspect on/off\0A n : Rotate the image 90 degrees left\0A m : Rotate the image 90 degrees right\0A p : Disable all transformations\0ACopyright (C) 2000 - 2004 Mateusz Golicz, Tomasz Sterna.\0A\00"
define void @help(i8* %0) {
%2 = alloca i8*
store i8* %0, i8** %2
%3 = load i8*, i8** %2
%4 = call i32 @printf(i8* getelementptr inbounds ([1332 x i8], [1332 x i8]* @.str, i64 0, i64 0), i8* %3)
ret void
}

LLVM IR (-O2):
@.str = [1332 x i8] c"Usage: %s [options] image1 image2 image3 ...\0A\0AAvailable options:\0A --help | -h : Show this help\0A --alpha | -a : Use the alpha channel (if applicable)\0A --dontclear | -c : Do not clear the screen before and after displaying the image\0A --donthide | -u : Do not hide the cursor before and after displaying the image\0A --noinfo | -i : Supress image information\0A --stretch | -f : Strech (using a simple resizing routine) the image to fit onto screen if necessary\0A --colorstretch| -k : Strech (using a 'color average' resizing routine) the image to fit onto screen if necessary\0A --enlarge | -e : Enlarge the image to fit the whole screen if necessary\0A --ignore-aspect| -r : Ignore the image aspect while resizing\0A --delay <d> | -s <delay> : Slideshow, 'delay' is the slideshow delay in tenths of seconds.\0A\0A --dfb | -d <framebuffer>: frame buffer device.\0A\0AKeys:\0A r : Redraw the image\0A a, d, w, x : Pan the image\0A f : Toggle resizing on/off\0A k : Toggle resizing quality\0A e : Toggle enlarging on/off\0A i : Toggle respecting the image aspect on/off\0A n : Rotate the image 90 degrees left\0A m : Rotate the image 90 degrees right\0A p : Disable all transformations\0ACopyright (C) 2000 - 2004 Mateusz Golicz, Tomasz Sterna.\0A\00"
define void @help(i8* %0) {
%2 = tail call i32 @printf(i8* getelementptr inbounds ([1332 x i8], [1332 x i8]* @.str, i64 0, i64 0), i8* %0)
ret void
}