#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_SUCCESS;
int /*<<< orphan*/ display_version(int /*<<< orphan*/);
int /*<<< orphan*/ exit(int /*<<< orphan*/);
int /*<<< orphan*/ printf(char *);
void usage(void) {
  display_version(0);
  printf(
      "ABC to Postscript translator.\n"
      "Usage: abcm2ps [options] file [file_options] ..\n"
      "where:\n"
      " file        input ABC file, or '-'\n"
      " options and file_options:\n"
      "  .output file options:\n"
      "     -E      produce EPSF output, one tune per file\n"
      "     -g      produce SVG output, one tune per file\n"
      "     -v      produce SVG output, one page per file\n"
      "     -X      produce SVG output in one XHTML file\n"
      "     -O fff  set outfile name to fff\n"
      "     -O =    make outfile name from infile/title\n"
      "     -i      indicate where are the errors\n"
      "     -k kk   size of the PS output buffer in Kibytes\n"
      "  .output formatting:\n"
      "     -s xx   set scale factor to xx\n"
      "     -w xx   set staff width (cm/in/pt)\n"
      "     -m xx   set left margin (cm/in/pt)\n"
      "     -d xx   set staff separation (cm/in/pt)\n"
      "     -a xx   set max shrinkage to xx (between 0 and 1)\n"
      "     -F foo  read format file \"foo.fmt\"\n"
      "     -D bar  look for format files in directory \"bar\"\n"
      "  .output options:\n"
      "     -l      landscape mode\n"
      "     -I xx   indent 1st line (cm/in/pt)\n"
      "     -x      add xref numbers in titles\n"
      "     -M      don't output the lyrics\n"
      "     -N n    set page numbering mode to n=\n"
      "             0=off 1=left 2=right 3=even left,odd right 4=even "
      "right,odd left\n"
      "     -1      write one tune per page\n"
      "     -G      no slur in grace notes\n"
      "     -j n[b] number the measures every n bars (or on the left if n=0)\n"
      "             if 'b', display in a box\n"
      "     -b n    set the first measure number to n\n"
      "     -f      have flat beams\n"
      "     -T n[v]   output the tablature 'n' for voice 'v' / all voices\n"
      "  .line breaks:\n"
      "     -c      auto line break\n"
      "     -B n    break every n bars\n"
      "  .input file selection/options:\n"
      "     -e pattern\n"
      "             tune selection\n"
      "     -u      abc2ps behaviour\n"
      "  .help/configuration:\n"
      "     -V      show program version\n"
      "     -h      show this command summary\n"
      "     -H      show the format parameters\n"
      "     -S      secure mode\n"
      "     -q      quiet mode\n");
  exit(EXIT_SUCCESS);
}


x86 assembly (clang, -O0):
<usage>:
push   %rbp
mov    %rsp,%rbp
xor    %edi,%edi
call   1030 <display_version@plt>
lea    0xebe(%rip),%rdi
call   1040 <printf@plt>
mov    0x2e92(%rip),%rax
mov    (%rax),%edi
call   1050 <exit@plt>

x86 assembly (clang, -O2):
<usage>:
push   %rax
xor    %edi,%edi
call   1040 <display_version@plt>
lea    0xec1(%rip),%rdi
call   1030 <puts@plt>
mov    0x2e95(%rip),%rax
mov    (%rax),%edi
call   1050 <exit@plt>

LLVM IR (-O0):
@.str = [1869 x i8] c"ABC to Postscript translator.\0AUsage: abcm2ps [options] file [file_options] ..\0Awhere:\0A file input ABC file, or '-'\0A options and file_options:\0A .output file options:\0A -E produce EPSF output, one tune per file\0A -g produce SVG output, one tune per file\0A -v produce SVG output, one page per file\0A -X produce SVG output in one XHTML file\0A -O fff set outfile name to fff\0A -O = make outfile name from infile/title\0A -i indicate where are the errors\0A -k kk size of the PS output buffer in Kibytes\0A .output formatting:\0A -s xx set scale factor to xx\0A -w xx set staff width (cm/in/pt)\0A -m xx set left margin (cm/in/pt)\0A -d xx set staff separation (cm/in/pt)\0A -a xx set max shrinkage to xx (between 0 and 1)\0A -F foo read format file \22foo.fmt\22\0A -D bar look for format files in directory \22bar\22\0A .output options:\0A -l landscape mode\0A -I xx indent 1st line (cm/in/pt)\0A -x add xref numbers in titles\0A -M don't output the lyrics\0A -N n set page numbering mode to n=\0A 0=off 1=left 2=right 3=even left,odd right 4=even right,odd left\0A -1 write one tune per page\0A -G no slur in grace notes\0A -j n[b] number the measures every n bars (or on the left if n=0)\0A if 'b', display in a box\0A -b n set the first measure number to n\0A -f have flat beams\0A -T n[v] output the tablature 'n' for voice 'v' / all voices\0A .line breaks:\0A -c auto line break\0A -B n break every n bars\0A .input file selection/options:\0A -e pattern\0A tune selection\0A -u abc2ps behaviour\0A .help/configuration:\0A -V show program version\0A -h show this command summary\0A -H show the format parameters\0A -S secure mode\0A -q quiet mode\0A\00"
@EXIT_SUCCESS = global i32 0
define void @usage() {
%1 = call i32 @display_version(i32 0)
%2 = call i32 @printf(i8* getelementptr inbounds ([1869 x i8], [1869 x i8]* @.str, i64 0, i64 0))
%3 = load i32, i32* @EXIT_SUCCESS
%4 = call i32 @exit(i32 %3)
unreachable
}

LLVM IR (-O2):
@EXIT_SUCCESS = global i32 0
@str = [1868 x i8] c"ABC to Postscript translator.\0AUsage: abcm2ps [options] file [file_options] ..\0Awhere:\0A file input ABC file, or '-'\0A options and file_options:\0A .output file options:\0A -E produce EPSF output, one tune per file\0A -g produce SVG output, one tune per file\0A -v produce SVG output, one page per file\0A -X produce SVG output in one XHTML file\0A -O fff set outfile name to fff\0A -O = make outfile name from infile/title\0A -i indicate where are the errors\0A -k kk size of the PS output buffer in Kibytes\0A .output formatting:\0A -s xx set scale factor to xx\0A -w xx set staff width (cm/in/pt)\0A -m xx set left margin (cm/in/pt)\0A -d xx set staff separation (cm/in/pt)\0A -a xx set max shrinkage to xx (between 0 and 1)\0A -F foo read format file \22foo.fmt\22\0A -D bar look for format files in directory \22bar\22\0A .output options:\0A -l landscape mode\0A -I xx indent 1st line (cm/in/pt)\0A -x add xref numbers in titles\0A -M don't output the lyrics\0A -N n set page numbering mode to n=\0A 0=off 1=left 2=right 3=even left,odd right 4=even right,odd left\0A -1 write one tune per page\0A -G no slur in grace notes\0A -j n[b] number the measures every n bars (or on the left if n=0)\0A if 'b', display in a box\0A -b n set the first measure number to n\0A -f have flat beams\0A -T n[v] output the tablature 'n' for voice 'v' / all voices\0A .line breaks:\0A -c auto line break\0A -B n break every n bars\0A .input file selection/options:\0A -e pattern\0A tune selection\0A -u abc2ps behaviour\0A .help/configuration:\0A -V show program version\0A -h show this command summary\0A -H show the format parameters\0A -S secure mode\0A -q quiet mode\00"
define void @usage() {
%1 = tail call i32 @display_version(i32 0)
%2 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([1868 x i8], [1868 x i8]* @str, i64 0, i64 0))
%3 = load i32, i32* @EXIT_SUCCESS
%4 = tail call i32 @exit(i32 %3)
unreachable
}