#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"
      "  --seq-constraints-hard    hard sequence constraints\n"
      "  --timestep t              timestep t for integration\n"
      "  --T-start T               starting temperature T\n"
      "  --time-total t            total simulation time t\n"
      "  --time-print t            print system status every t time units\n"
      "  --time-cool t             start cooling the system at time t\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"
      "  --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"
      "  --cooling-type            can be either exponential or linear, "
      "default is linear\n"
      "  --time-pur t              start purification at time t\n"
      "  --kpur-end k              ending value for kpur\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 = [1032 x i8] c"usage: %s [options] target-structure\0AOptions:\0A --seq-constraints-hard hard sequence constraints\0A --timestep t timestep t for integration\0A --T-start T starting temperature T\0A --time-total t total simulation time t\0A --time-print t print system status every t time units\0A --time-cool t start cooling the system at time t\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 --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 --cooling-type can be either exponential or linear, default is linear\0A --time-pur t start purification at time t\0A --kpur-end k ending value for kpur\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 ([1032 x i8], [1032 x i8]* @.str, i64 0, i64 0), i8* %3)
ret void
}

LLVM IR (-O2):
@.str = [1032 x i8] c"usage: %s [options] target-structure\0AOptions:\0A --seq-constraints-hard hard sequence constraints\0A --timestep t timestep t for integration\0A --T-start T starting temperature T\0A --time-total t total simulation time t\0A --time-print t print system status every t time units\0A --time-cool t start cooling the system at time t\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 --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 --cooling-type can be either exponential or linear, default is linear\0A --time-pur t start purification at time t\0A --kpur-end k ending value for kpur\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 ([1032 x i8], [1032 x i8]* @.str, i64 0, i64 0), i8* %0)
ret void
}