#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*/ fprintf(int /*<<< orphan*/, char *, char const *,
                           char const *);
int /*<<< orphan*/ stderr;
void usage(const char *prog_name) {
  fprintf(
      stderr,
      "Usage:\n"
      "  %s [-wh] [-v <version>] [-l <filename>] [-a <directory>] <test_dir> "
      "[test_dir...]\n"
      "  %s [-wh] [-v <version>] [-l <filename>] [-a <directory>] -s "
      "<test_dir>\n"
      "\n"
      "Options:\n"
      "  -l <filename>  Specify the name of the log file.  One log file will "
      "be\n"
      "                 created for each test directory in that test "
      "directory\n"
      "                 using the given name.  The default filename is\n"
      "                 asttest.log.\n"
      "  -a <directory> Specify the directory asterisk has been installed in.\n"
      "                 This option is roughly equivalent to the value of\n"
      "                 --prefix at configure time.  The actually asterisk "
      "binary\n"
      "                 is expected to be located at "
      "<directory>/sbin/asterisk.\n"
      "                 The default is 'asterisk'.\n"
      "  -w             warn if tests were skipped because of errors.  This\n"
      "                 option will cause a warning to print instead of an\n"
      "                 error being generated if any tests fail because of\n"
      "                 errors.  This is ignored in single test mode.\n"
      "  -h             print this help message\n"
      "  -s <directory> Run in single test mode.  The given directory should "
      "contain a\n"
      "                 test.lua test script.  Single test mode will also "
      "cause test\n"
      "                 output to be sent to stdout instead of a log file and "
      "will\n"
      "                 cause the program to exit with a non zero return code "
      "in if\n"
      "                 the test fails.\n"
      "  -v <version>   Specify the version of asterisk we are testing "
      "against.  If\n"
      "                 not specified, the version.h file from the specified "
      "asterisk\n"
      "                 path will be usedi to determine the version number.\n"
      "\n",
      prog_name, prog_name);
}


x86 assembly (clang, -O0):
<usage>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %rdi,-0x8(%rbp)
mov    0x2ebd(%rip),%rax
mov    (%rax),%edi
mov    -0x8(%rbp),%rdx
mov    -0x8(%rbp),%rcx
lea    0xecc(%rip),%rsi
call   1030 <fprintf@plt>
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<usage>:
mov    %rdi,%rcx
mov    0x2ec6(%rip),%rax
mov    (%rax),%edi
lea    0xedd(%rip),%rsi
mov    %rcx,%rdx
jmp    1030 <fprintf@plt>

LLVM IR (-O0):
@stderr = global i32 0
@.str = [1623 x i8] c"Usage:\0A %s [-wh] [-v <version>] [-l <filename>] [-a <directory>] <test_dir> [test_dir...]\0A %s [-wh] [-v <version>] [-l <filename>] [-a <directory>] -s <test_dir>\0A\0AOptions:\0A -l <filename> Specify the name of the log file. One log file will be\0A created for each test directory in that test directory\0A using the given name. The default filename is\0A asttest.log.\0A -a <directory> Specify the directory asterisk has been installed in.\0A This option is roughly equivalent to the value of\0A --prefix at configure time. The actually asterisk binary\0A is expected to be located at <directory>/sbin/asterisk.\0A The default is 'asterisk'.\0A -w warn if tests were skipped because of errors. This\0A option will cause a warning to print instead of an\0A error being generated if any tests fail because of\0A errors. This is ignored in single test mode.\0A -h print this help message\0A -s <directory> Run in single test mode. The given directory should contain a\0A test.lua test script. Single test mode will also cause test\0A output to be sent to stdout instead of a log file and will\0A cause the program to exit with a non zero return code in if\0A the test fails.\0A -v <version> Specify the version of asterisk we are testing against. If\0A not specified, the version.h file from the specified asterisk\0A path will be usedi to determine the version number.\0A\0A\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 ([1623 x i8], [1623 x i8]* @.str, i64 0, i64 0), i8* %4, i8* %5)
ret void
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [1623 x i8] c"Usage:\0A %s [-wh] [-v <version>] [-l <filename>] [-a <directory>] <test_dir> [test_dir...]\0A %s [-wh] [-v <version>] [-l <filename>] [-a <directory>] -s <test_dir>\0A\0AOptions:\0A -l <filename> Specify the name of the log file. One log file will be\0A created for each test directory in that test directory\0A using the given name. The default filename is\0A asttest.log.\0A -a <directory> Specify the directory asterisk has been installed in.\0A This option is roughly equivalent to the value of\0A --prefix at configure time. The actually asterisk binary\0A is expected to be located at <directory>/sbin/asterisk.\0A The default is 'asterisk'.\0A -w warn if tests were skipped because of errors. This\0A option will cause a warning to print instead of an\0A error being generated if any tests fail because of\0A errors. This is ignored in single test mode.\0A -h print this help message\0A -s <directory> Run in single test mode. The given directory should contain a\0A test.lua test script. Single test mode will also cause test\0A output to be sent to stdout instead of a log file and will\0A cause the program to exit with a non zero return code in if\0A the test fails.\0A -v <version> Specify the version of asterisk we are testing against. If\0A not specified, the version.h file from the specified asterisk\0A path will be usedi to determine the version number.\0A\0A\00"
define void @usage(i8* %0) {
%2 = load i32, i32* @stderr
%3 = tail call i32 @fprintf(i32 %2, i8* getelementptr inbounds ([1623 x i8], [1623 x i8]* @.str, i64 0, i64 0), i8* %0, i8* %0)
ret void
}