#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);
int /*<<< orphan*/ fprintf(int /*<<< orphan*/, char *);
int /*<<< orphan*/ stderr;
void usage(void) {
  fprintf(stderr,
          "Usage: entcheck [options]\n"
          "    -N numBits    -- Use N previous bits to predict the next bit\n"
          "    -s numStreams -- Use s streams to predict the next bit\n"
          "\n"
          "entcheck simply uses the previous N bits (16 by default) to predict "
          "the next bit.\n"
          "It estimates the entropy based on 'surprise', or log2 of the "
          "probability of seeing\n"
          "the string of 0's and 1's.  Sometimes some bits are special, such "
          "as the output of\n"
          "an 8 bit DAC, where we want different tables depending on which bit "
          "we're predicting.\n"
          "Set numStreams to the DAC width in this case.\n");
  exit(1);
}


x86 assembly (clang, -O0):
<usage>:
push   %rbp
mov    %rsp,%rbp
mov    0x2eb5(%rip),%rax
mov    (%rax),%edi
lea    0xecc(%rip),%rsi
call   1030 <fprintf@plt>
mov    $0x1,%edi
call   1040 <exit@plt>

x86 assembly (clang, -O2):
<usage>:
push   %rax
mov    0x2eb8(%rip),%rax
mov    (%rax),%edi
lea    0xecf(%rip),%rsi
call   1030 <fprintf@plt>
mov    $0x1,%edi
call   1040 <exit@plt>

LLVM IR (-O0):
@stderr = global i32 0
@.str = [532 x i8] c"Usage: entcheck [options]\0A -N numBits -- Use N previous bits to predict the next bit\0A -s numStreams -- Use s streams to predict the next bit\0A\0Aentcheck simply uses the previous N bits (16 by default) to predict the next bit.\0AIt estimates the entropy based on 'surprise', or log2 of the probability of seeing\0Athe string of 0's and 1's. Sometimes some bits are special, such as the output of\0Aan 8 bit DAC, where we want different tables depending on which bit we're predicting.\0ASet numStreams to the DAC width in this case.\0A\00"
define void @usage() {
%1 = load i32, i32* @stderr
%2 = call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([532 x i8], [532 x i8]* @.str, i64 0, i64 0))
%3 = call i32 @exit(i32 1)
unreachable
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [532 x i8] c"Usage: entcheck [options]\0A -N numBits -- Use N previous bits to predict the next bit\0A -s numStreams -- Use s streams to predict the next bit\0A\0Aentcheck simply uses the previous N bits (16 by default) to predict the next bit.\0AIt estimates the entropy based on 'surprise', or log2 of the probability of seeing\0Athe string of 0's and 1's. Sometimes some bits are special, such as the output of\0Aan 8 bit DAC, where we want different tables depending on which bit we're predicting.\0ASet numStreams to the DAC width in this case.\0A\00"
define void @usage() {
%1 = load i32, i32* @stderr
%2 = tail call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([532 x i8], [532 x i8]* @.str, i64 0, i64 0))
%3 = tail call i32 @exit(i32 1)
unreachable
}