#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*/ exit(int /*<<< orphan*/);
int /*<<< orphan*/ fprintf(int /*<<< orphan*/, char *, char *, char *);
int /*<<< orphan*/ stderr;
void usage(char *name) {
  fprintf(
      stderr,
      "	Usage: %s [OPTIONS]\n 	Simulates a Polya's Urn model of population "
      "growth, with population fissioning (each individual leaves with pr = "
      "0.5), and the following parameters: \n	\n	Transition Rates "
      "\n	-b   Birth rate (b * n; default: 1) \n	-d   Death rate (d * "
      "n; default: 0.5) \n	-m   out-migration rate (m * n; default: 0.01) "
      "\n	-i   Absolute in-migration rate (phi) (default: m*M*.75) "
      "\n	-q   In-migrating altruist proporiton (default: 0.5) \n	"
      "\n	Constants \n	-M   Size at which population fissions "
      "(default: 1000) \n	-K   Carrying capacity, for dynamic birth or "
      "death rates (default: 1050) \n	-T   Number of events (turns) to "
      "simulate (default: 100000) \n	-N   Number of populations to simulate "
      "(default: 1000) \n	\n	Simulation variants \n	-S   Sim. "
      "type:\n	         0: static birth and death rates (default)\n	       "
      "  1: frequency dependent death rate: b*n/k\n	         2: frequency "
      "dependent birth rate: 1-((1-d)*n/k)\n	\n	Initialisation "
      "\n	-n   Initial size of each population (default: 500) \n	-a   "
      "Initial number of altruists in each population (default: 250) \n	"
      "\n	Example: %s -t 1 -d 1 -m 0.05 -q .2 -N 100 -T 1000000	",
      name, name);
  exit(0);
}


x86 assembly (clang, -O0):
<usage>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %rdi,-0x8(%rbp)
mov    0x2ead(%rip),%rax
mov    (%rax),%edi
mov    -0x8(%rbp),%rdx
mov    -0x8(%rbp),%rcx
lea    0xebc(%rip),%rsi
call   1030 <fprintf@plt>
xor    %edi,%edi
call   1040 <exit@plt>

x86 assembly (clang, -O2):
<usage>:
push   %rax
mov    %rdi,%rcx
mov    0x2eb5(%rip),%rax
mov    (%rax),%edi
lea    0xecc(%rip),%rsi
mov    %rcx,%rdx
call   1030 <fprintf@plt>
xor    %edi,%edi
call   1040 <exit@plt>

LLVM IR (-O0):
@stderr = global i32 0
@.str = [1103 x i8] c"\09Usage: %s [OPTIONS]\0A \09Simulates a Polya's Urn model of population growth, with population fissioning (each individual leaves with pr = 0.5), and the following parameters: \0A\09\0A\09Transition Rates \0A\09-b Birth rate (b * n; default: 1) \0A\09-d Death rate (d * n; default: 0.5) \0A\09-m out-migration rate (m * n; default: 0.01) \0A\09-i Absolute in-migration rate (phi) (default: m*M*.75) \0A\09-q In-migrating altruist proporiton (default: 0.5) \0A\09\0A\09Constants \0A\09-M Size at which population fissions (default: 1000) \0A\09-K Carrying capacity, for dynamic birth or death rates (default: 1050) \0A\09-T Number of events (turns) to simulate (default: 100000) \0A\09-N Number of populations to simulate (default: 1000) \0A\09\0A\09Simulation variants \0A\09-S Sim. type:\0A\09 0: static birth and death rates (default)\0A\09 1: frequency dependent death rate: b*n/k\0A\09 2: frequency dependent birth rate: 1-((1-d)*n/k)\0A\09\0A\09Initialisation \0A\09-n Initial size of each population (default: 500) \0A\09-a Initial number of altruists in each population (default: 250) \0A\09\0A\09Example: %s -t 1 -d 1 -m 0.05 -q .2 -N 100 -T 1000000\09\00"
define void @usage(i8* %0) {
%2 = alloca i8*
store i8* %0, i8** %2
%3 = load i32, i32* @stderr
%4 = load i8*, i8** %2
%5 = load i8*, i8** %2
%6 = call i32 @fprintf(i32 %3, i8* getelementptr inbounds ([1103 x i8], [1103 x i8]* @.str, i64 0, i64 0), i8* %4, i8* %5)
%7 = call i32 @exit(i32 0)
unreachable
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [1103 x i8] c"\09Usage: %s [OPTIONS]\0A \09Simulates a Polya's Urn model of population growth, with population fissioning (each individual leaves with pr = 0.5), and the following parameters: \0A\09\0A\09Transition Rates \0A\09-b Birth rate (b * n; default: 1) \0A\09-d Death rate (d * n; default: 0.5) \0A\09-m out-migration rate (m * n; default: 0.01) \0A\09-i Absolute in-migration rate (phi) (default: m*M*.75) \0A\09-q In-migrating altruist proporiton (default: 0.5) \0A\09\0A\09Constants \0A\09-M Size at which population fissions (default: 1000) \0A\09-K Carrying capacity, for dynamic birth or death rates (default: 1050) \0A\09-T Number of events (turns) to simulate (default: 100000) \0A\09-N Number of populations to simulate (default: 1000) \0A\09\0A\09Simulation variants \0A\09-S Sim. type:\0A\09 0: static birth and death rates (default)\0A\09 1: frequency dependent death rate: b*n/k\0A\09 2: frequency dependent birth rate: 1-((1-d)*n/k)\0A\09\0A\09Initialisation \0A\09-n Initial size of each population (default: 500) \0A\09-a Initial number of altruists in each population (default: 250) \0A\09\0A\09Example: %s -t 1 -d 1 -m 0.05 -q .2 -N 100 -T 1000000\09\00"
define void @usage(i8* %0) {
%2 = load i32, i32* @stderr
%3 = tail call i32 @fprintf(i32 %2, i8* getelementptr inbounds ([1103 x i8], [1103 x i8]* @.str, i64 0, i64 0), i8* %0, i8* %0)
%4 = tail call i32 @exit(i32 0)
unreachable
}