#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 *);
void print_help(void) {
  printf("Usage: asap2wav [OPTIONS] INPUTFILE...\n"
         "Each INPUTFILE must be in a supported format:\n"
         "SAP, CMC, CM3, CMR, CMS, DMC, DLT, MPT, MPD, RMT, TMC, TM8 or TM2.\n"
         "Options:\n"
         "-o FILE     --output=FILE      Set output file name\n"
         "-o -        --output=-         Write to standard output\n"
         "-s SONG     --song=SONG        Select subsong number (zero-based)\n"
         "-t TIME     --time=TIME        Set output length (MM:SS format)\n"
         "-b          --byte-samples     Output 8-bit samples\n"
         "-w          --word-samples     Output 16-bit samples (default)\n"
         "            --raw              Output raw audio (no WAV header)\n"
         "-m CHANNELS --mute=CHANNELS    Mute POKEY channels (1-8)\n"
         "-h          --help             Display this information\n"
         "-v          --version          Display version information\n");
}


x86 assembly (clang, -O0):
<print_help>:
push   %rbp
mov    %rsp,%rbp
lea    0xee5(%rip),%rdi
call   1030 <printf@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<print_help>:
lea    0xee9(%rip),%rdi
jmp    1030 <puts@plt>

LLVM IR (-O0):
@.str = [751 x i8] c"Usage: asap2wav [OPTIONS] INPUTFILE...\0AEach INPUTFILE must be in a supported format:\0ASAP, CMC, CM3, CMR, CMS, DMC, DLT, MPT, MPD, RMT, TMC, TM8 or TM2.\0AOptions:\0A-o FILE --output=FILE Set output file name\0A-o - --output=- Write to standard output\0A-s SONG --song=SONG Select subsong number (zero-based)\0A-t TIME --time=TIME Set output length (MM:SS format)\0A-b --byte-samples Output 8-bit samples\0A-w --word-samples Output 16-bit samples (default)\0A --raw Output raw audio (no WAV header)\0A-m CHANNELS --mute=CHANNELS Mute POKEY channels (1-8)\0A-h --help Display this information\0A-v --version Display version information\0A\00"
define void @print_help() {
%1 = call i32 @printf(i8* getelementptr inbounds ([751 x i8], [751 x i8]* @.str, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@str = [750 x i8] c"Usage: asap2wav [OPTIONS] INPUTFILE...\0AEach INPUTFILE must be in a supported format:\0ASAP, CMC, CM3, CMR, CMS, DMC, DLT, MPT, MPD, RMT, TMC, TM8 or TM2.\0AOptions:\0A-o FILE --output=FILE Set output file name\0A-o - --output=- Write to standard output\0A-s SONG --song=SONG Select subsong number (zero-based)\0A-t TIME --time=TIME Set output length (MM:SS format)\0A-b --byte-samples Output 8-bit samples\0A-w --word-samples Output 16-bit samples (default)\0A --raw Output raw audio (no WAV header)\0A-m CHANNELS --mute=CHANNELS Mute POKEY channels (1-8)\0A-h --help Display this information\0A-v --version Display version information\00"
define void @print_help() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([750 x i8], [750 x i8]* @str, i64 0, i64 0))
ret void
}