#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*/ printf(char *, char *, char *, char *);
void show_usage() {
  printf("usage: bmz-test [options] [string...]\n%s%s%s",
         "--help                        show this help\n"
         "--verbose[=level]             set verbose level\n"
         "--file        <file>          use <file as input\n"
         "--offset      <number>        set bm offset\n"
         "--fp-len      <number>        set bm fingerprint length\n"
         "--hash                        compute hash value only\n"
         "--b1          <number>        hash param b1\n"
         "--b2          <number>        hash param b2\n"
         "--m           <number>        hash param m\n",
         "--m1          <number>        hash param m1\n"
         "--m2          <number>        hash param m2\n"
         "--hash-mod                    use hash-mod\n"
         "--hash-mod16x2                use hash-mod16x2\n"
         "--hash-mask16x2               use hash-mask16x2\n"
         "--hash-mask                   use hash-mask\n",
         "--hash-mask32x2               use hash-mask32x2\n"
         "--bench-hash                  bechmarks for builtin hashes\n"
         "--check-hash                  verify rolling hashes\n"
         "--bench-lut                   benchmarks for lookup table\n"
         "--times       <number>        number of repeats for the test\n");
  exit(0);
}


x86 assembly (clang, -O0):
<show_usage>:
push   %rbp
mov    %rsp,%rbp
lea    0xed5(%rip),%rdi
lea    0xefb(%rip),%rsi
lea    0x10a0(%rip),%rdx
lea    0x11a8(%rip),%rcx
call   1030 <printf@plt>
xor    %edi,%edi
call   1040 <exit@plt>

x86 assembly (clang, -O2):
<show_usage>:
push   %rax
lea    0xed8(%rip),%rdi
lea    0xefe(%rip),%rsi
lea    0x10a3(%rip),%rdx
lea    0x11ab(%rip),%rcx
call   1030 <printf@plt>
xor    %edi,%edi
call   1040 <exit@plt>

LLVM IR (-O0):
@.str = [45 x i8] c"usage: bmz-test [options] [string...]\0A%s%s%s\00"
@.str.1 = [428 x i8] c"--help show this help\0A--verbose[=level] set verbose level\0A--file <file> use <file as input\0A--offset <number> set bm offset\0A--fp-len <number> set bm fingerprint length\0A--hash compute hash value only\0A--b1 <number> hash param b1\0A--b2 <number> hash param b2\0A--m <number> hash param m\0A\00"
@.str.2 = [271 x i8] c"--m1 <number> hash param m1\0A--m2 <number> hash param m2\0A--hash-mod use hash-mod\0A--hash-mod16x2 use hash-mod16x2\0A--hash-mask16x2 use hash-mask16x2\0A--hash-mask use hash-mask\0A\00"
@.str.3 = [279 x i8] c"--hash-mask32x2 use hash-mask32x2\0A--bench-hash bechmarks for builtin hashes\0A--check-hash verify rolling hashes\0A--bench-lut benchmarks for lookup table\0A--times <number> number of repeats for the test\0A\00"
define void @show_usage() {
%1 = call i32 @printf(i8* getelementptr inbounds ([45 x i8], [45 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([428 x i8], [428 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([271 x i8], [271 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([279 x i8], [279 x i8]* @.str.3, i64 0, i64 0))
%2 = call i32 @exit(i32 0)
unreachable
}

LLVM IR (-O2):
@.str = [45 x i8] c"usage: bmz-test [options] [string...]\0A%s%s%s\00"
@.str.1 = [428 x i8] c"--help show this help\0A--verbose[=level] set verbose level\0A--file <file> use <file as input\0A--offset <number> set bm offset\0A--fp-len <number> set bm fingerprint length\0A--hash compute hash value only\0A--b1 <number> hash param b1\0A--b2 <number> hash param b2\0A--m <number> hash param m\0A\00"
@.str.2 = [271 x i8] c"--m1 <number> hash param m1\0A--m2 <number> hash param m2\0A--hash-mod use hash-mod\0A--hash-mod16x2 use hash-mod16x2\0A--hash-mask16x2 use hash-mask16x2\0A--hash-mask use hash-mask\0A\00"
@.str.3 = [279 x i8] c"--hash-mask32x2 use hash-mask32x2\0A--bench-hash bechmarks for builtin hashes\0A--check-hash verify rolling hashes\0A--bench-lut benchmarks for lookup table\0A--times <number> number of repeats for the test\0A\00"
define void @show_usage() {
%1 = tail call i32 @printf(i8* getelementptr inbounds ([45 x i8], [45 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([428 x i8], [428 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([271 x i8], [271 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([279 x i8], [279 x i8]* @.str.3, i64 0, i64 0))
%2 = tail call i32 @exit(i32 0)
unreachable
}