#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 *);
int /*<<< orphan*/ stderr;
void usage(void) {
  fprintf(stderr,
          "usage:  abx [-v] File_A File_B\n"
          "\n"
          "File_A and File_B loaded and played. File_A should be the "
          "better/reference\n"
          "file, File_B the other. You can press the following keys:\n"
          "\n"
          "  a/A:    Listen to File A\n"
          "  b/B:    Listen to File B\n"
          "  x/X:    Listen to the randomly selected File X, which is A or B\n"
          "  Ctrl-A: You vote for X=A\n"
          "  Ctrl-B: You vote for X=B\n"
          "  m:      Alternating playing A and B. Fast switching\n"
          "  M:      Alternating playing A and B. Slow switching\n"
          "  d/D/Ctrl-D/Alt-d/Alt-D:\n"
          "          Listen to the difference A-B (+0 dB...+40 dB)\n"
          "  o/p:    Chunk select\n"
          "  hjkl:   Chunk fine adjust (hj: start, kl: stop)\n"
          "  Space:  Chunk deselect\n"
          "  0...9:  Listen to B, but difference A-B is amplified by 0-9 dB\n"
          "  Q:      Quit the program\n"
          "\n");
}


x86 assembly (clang, -O0):
<usage>:
push   %rbp
mov    %rsp,%rbp
mov    0x2ec5(%rip),%rax
mov    (%rax),%edi
lea    0xedc(%rip),%rsi
call   1030 <fprintf@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<usage>:
mov    0x2ec9(%rip),%rax
mov    (%rax),%edi
lea    0xee0(%rip),%rsi
jmp    1030 <fprintf@plt>

LLVM IR (-O0):
@stderr = global i32 0
@.str = [722 x i8] c"usage: abx [-v] File_A File_B\0A\0AFile_A and File_B loaded and played. File_A should be the better/reference\0Afile, File_B the other. You can press the following keys:\0A\0A a/A: Listen to File A\0A b/B: Listen to File B\0A x/X: Listen to the randomly selected File X, which is A or B\0A Ctrl-A: You vote for X=A\0A Ctrl-B: You vote for X=B\0A m: Alternating playing A and B. Fast switching\0A M: Alternating playing A and B. Slow switching\0A d/D/Ctrl-D/Alt-d/Alt-D:\0A Listen to the difference A-B (+0 dB...+40 dB)\0A o/p: Chunk select\0A hjkl: Chunk fine adjust (hj: start, kl: stop)\0A Space: Chunk deselect\0A 0...9: Listen to B, but difference A-B is amplified by 0-9 dB\0A Q: Quit the program\0A\0A\00"
define void @usage() {
%1 = load i32, i32* @stderr
%2 = call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([722 x i8], [722 x i8]* @.str, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [722 x i8] c"usage: abx [-v] File_A File_B\0A\0AFile_A and File_B loaded and played. File_A should be the better/reference\0Afile, File_B the other. You can press the following keys:\0A\0A a/A: Listen to File A\0A b/B: Listen to File B\0A x/X: Listen to the randomly selected File X, which is A or B\0A Ctrl-A: You vote for X=A\0A Ctrl-B: You vote for X=B\0A m: Alternating playing A and B. Fast switching\0A M: Alternating playing A and B. Slow switching\0A d/D/Ctrl-D/Alt-d/Alt-D:\0A Listen to the difference A-B (+0 dB...+40 dB)\0A o/p: Chunk select\0A hjkl: Chunk fine adjust (hj: start, kl: stop)\0A Space: Chunk deselect\0A 0...9: Listen to B, but difference A-B is amplified by 0-9 dB\0A Q: Quit the program\0A\0A\00"
define void @usage() {
%1 = load i32, i32* @stderr
%2 = tail call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([722 x i8], [722 x i8]* @.str, i64 0, i64 0))
ret void
}