#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 usage(char *progname) {
  printf("usage: %s [options] target-structure\n"
         "Options:\n"
         "  --maxsteps n      do a maximum number of n steepest descent steps\n"
         "  --nprint n        print progress information every n steps\n"
         "  --kpi k           set kpi constant to k\n"
         "  --kpa k           set kpa constant to k\n"
         "  --kneg k          set kneg constant to k\n"
         "  --kpur k          set kpur constant to k\n"
         "  --khet k          set khet to k\n"
         "  --het-window w    set window that heterogeneity terms is applied "
         "to to w bases left and right\n"
         "  --wiggle w        set wiggle (initial deviation from "
         "equidistribution) to w\n"
         "  --movie           activate output that can be used to make a movie "
         "out of it\n"
         "  --seed s          set seed of random number generator to s\n",
         progname);
}


x86 assembly (clang, -O0):
<usage>:
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):
<usage>:
mov    %rdi,%rsi
lea    0xee6(%rip),%rdi
jmp    1030 <printf@plt>

LLVM IR (-O0):
@.str = [694 x i8] c"usage: %s [options] target-structure\0AOptions:\0A --maxsteps n do a maximum number of n steepest descent steps\0A --nprint n print progress information every n steps\0A --kpi k set kpi constant to k\0A --kpa k set kpa constant to k\0A --kneg k set kneg constant to k\0A --kpur k set kpur constant to k\0A --khet k set khet to k\0A --het-window w set window that heterogeneity terms is applied to to w bases left and right\0A --wiggle w set wiggle (initial deviation from equidistribution) to w\0A --movie activate output that can be used to make a movie out of it\0A --seed s set seed of random number generator to s\0A\00"
define void @usage(i8* %0) {
%2 = alloca i8*
store i8* %0, i8** %2
%3 = load i8*, i8** %2
%4 = call i32 @printf(i8* getelementptr inbounds ([694 x i8], [694 x i8]* @.str, i64 0, i64 0), i8* %3)
ret void
}

LLVM IR (-O2):
@.str = [694 x i8] c"usage: %s [options] target-structure\0AOptions:\0A --maxsteps n do a maximum number of n steepest descent steps\0A --nprint n print progress information every n steps\0A --kpi k set kpi constant to k\0A --kpa k set kpa constant to k\0A --kneg k set kneg constant to k\0A --kpur k set kpur constant to k\0A --khet k set khet to k\0A --het-window w set window that heterogeneity terms is applied to to w bases left and right\0A --wiggle w set wiggle (initial deviation from equidistribution) to w\0A --movie activate output that can be used to make a movie out of it\0A --seed s set seed of random number generator to s\0A\00"
define void @usage(i8* %0) {
%2 = tail call i32 @printf(i8* getelementptr inbounds ([694 x i8], [694 x i8]* @.str, i64 0, i64 0), i8* %0)
ret void
}