#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 *);
void Summary(void) {
  printf("\nHDMan Command Summary\n\n");
  printf(
      "AS A B ...   - append silence models A, B, etc to each pronunciation\n");
  printf(
      "CR X A Y B   - replace phone Y in the context of A_B by X.  Contexts\n");
  printf(
      "               may include '*' [any] or defined context set (see DC)\n");
  printf("DC X A B ... - define set A B .... as context X\n");
  printf("DD X A B ... - delete definition for word X starting with phones A B "
         "...\n");
  printf("DP A B C ... - delete any occurrences of phones A or B or C ...\n");
  printf("DS A         - delete pron from source A unless it is only one\n");
  printf("DW X Y Z ... - delete words (& definitions) X,Y,Z\n");
  printf("FW X Y Z ... - define X Y Z as function words and change\n");
  printf("               each phone in the definition to a function word\n");
  printf("               specific phone. In word W phone A becomes W.A etc.\n");
  printf("IR           - select raw input mode.  Each input word is single "
         "white\n");
  printf("               space delimited string (',\" and \\ not treated "
         "specially).\n");
  printf(
      "LC [X]       - convert phones to Left-context dependent. If X given\n");
  printf("               then 1st phone in word -> X-a otherwise it is "
         "unchanged\n");
  printf("LP           - convert all phones to lowercase\n");
  printf("LW           - convert all words to lowercase\n");
  printf("MP X A B ... - merge any sequence of phones A B .. by X\n");
  printf(
      "RC [X]       - convert phones to riGht-context dependent. If X given\n");
  printf("               then last phone in word -> z+X otherwise it is "
         "unchanged\n");
  printf("RP X A B ... - replace all occurrences of phones A or B .. by X\n");
  printf("RS system    - remove stress marking: system = cmu\n");
  printf("RW X A B ... - replace all occurrences of word A or B .. by X\n");
  printf("SP X A B ... - split phone X into sequence A B C ...\n");
  printf(
      "TC [X [Y]]   - convert phones to Triphones. If X is given then 1st\n");
  printf("               phone -> X-a+b otherwise it is unchanged. If Y is "
         "given\n");
  printf("               last phone -> y-z+Y otherwise if X is given\n");
  printf("               then it -> y-z+X otherwise it is unchanged.\n");
  printf("UP           - convert all phones to uppercase\n");
  printf("UW           - convert all words to uppercase\n\n");
  Exit(0);
}


x86 assembly (clang, -O0):
<Summary>:
push   %rbp
mov    %rsp,%rbp
lea    0xed5(%rip),%rdi
call   1030 <printf@plt>
lea    0xee2(%rip),%rdi
call   1030 <printf@plt>
lea    0xf1c(%rip),%rdi
call   1030 <printf@plt>
lea    0xf56(%rip),%rdi
call   1030 <printf@plt>
lea    0xf90(%rip),%rdi
call   1030 <printf@plt>
lea    0xfb5(%rip),%rdi
call   1030 <printf@plt>
lea    0xff3(%rip),%rdi
call   1030 <printf@plt>
lea    0x1028(%rip),%rdi
call   1030 <printf@plt>
lea    0x105c(%rip),%rdi
call   1030 <printf@plt>
lea    0x1083(%rip),%rdi
call   1030 <printf@plt>
lea    0x10b1(%rip),%rdi
call   1030 <printf@plt>
lea    0x10e5(%rip),%rdi
call   1030 <printf@plt>
lea    0x111c(%rip),%rdi
call   1030 <printf@plt>
lea    0x1158(%rip),%rdi
call   1030 <printf@plt>
lea    0x1196(%rip),%rdi
call   1030 <printf@plt>
lea    0x11cf(%rip),%rdi
call   1030 <printf@plt>
lea    0x120b(%rip),%rdi
call   1030 <printf@plt>
lea    0x122f(%rip),%rdi
call   1030 <printf@plt>
lea    0x1252(%rip),%rdi
call   1030 <printf@plt>
lea    0x127f(%rip),%rdi
call   1030 <printf@plt>
lea    0x12b9(%rip),%rdi
call   1030 <printf@plt>
lea    0x12f6(%rip),%rdi
call   1030 <printf@plt>
lea    0x132b(%rip),%rdi
call   1030 <printf@plt>
lea    0x1353(%rip),%rdi
call   1030 <printf@plt>
lea    0x1386(%rip),%rdi
call   1030 <printf@plt>
lea    0x13b0(%rip),%rdi
call   1030 <printf@plt>
lea    0x13e8(%rip),%rdi
call   1030 <printf@plt>
lea    0x1424(%rip),%rdi
call   1030 <printf@plt>
lea    0x1454(%rip),%rdi
call   1030 <printf@plt>
lea    0x1484(%rip),%rdi
call   1030 <printf@plt>
lea    0x14a8(%rip),%rdi
call   1030 <printf@plt>
xor    %edi,%edi
call   1040 <Exit@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<Summary>:
push   %rax
lea    0xed8(%rip),%rdi
call   1030 <puts@plt>
lea    0xee4(%rip),%rdi
call   1030 <puts@plt>
lea    0xf1d(%rip),%rdi
call   1030 <puts@plt>
lea    0xf56(%rip),%rdi
call   1030 <puts@plt>
lea    0xf8f(%rip),%rdi
call   1030 <puts@plt>
lea    0xfb3(%rip),%rdi
call   1030 <puts@plt>
lea    0xff0(%rip),%rdi
call   1030 <puts@plt>
lea    0x1024(%rip),%rdi
call   1030 <puts@plt>
lea    0x1057(%rip),%rdi
call   1030 <puts@plt>
lea    0x107d(%rip),%rdi
call   1030 <puts@plt>
lea    0x10aa(%rip),%rdi
call   1030 <puts@plt>
lea    0x10dd(%rip),%rdi
call   1030 <puts@plt>
lea    0x1113(%rip),%rdi
call   1030 <puts@plt>
lea    0x114e(%rip),%rdi
call   1030 <puts@plt>
lea    0x118b(%rip),%rdi
call   1030 <puts@plt>
lea    0x11c3(%rip),%rdi
call   1030 <puts@plt>
lea    0x11fe(%rip),%rdi
call   1030 <puts@plt>
lea    0x1221(%rip),%rdi
call   1030 <puts@plt>
lea    0x1243(%rip),%rdi
call   1030 <puts@plt>
lea    0x126f(%rip),%rdi
call   1030 <puts@plt>
lea    0x12a8(%rip),%rdi
call   1030 <puts@plt>
lea    0x12e4(%rip),%rdi
call   1030 <puts@plt>
lea    0x1318(%rip),%rdi
call   1030 <puts@plt>
lea    0x133f(%rip),%rdi
call   1030 <puts@plt>
lea    0x1371(%rip),%rdi
call   1030 <puts@plt>
lea    0x139a(%rip),%rdi
call   1030 <puts@plt>
lea    0x13d1(%rip),%rdi
call   1030 <puts@plt>
lea    0x140c(%rip),%rdi
call   1030 <puts@plt>
lea    0x143b(%rip),%rdi
call   1030 <puts@plt>
lea    0x146a(%rip),%rdi
call   1030 <puts@plt>
lea    0x148d(%rip),%rdi
call   1030 <puts@plt>
xor    %edi,%edi
pop    %rax
jmp    1040 <Exit@plt>

LLVM IR (-O0):
@.str = [25 x i8] c"\0AHDMan Command Summary\0A\0A\00"
@.str.1 = [70 x i8] c"AS A B ... - append silence models A, B, etc to each pronunciation\0A\00"
@.str.2 = [70 x i8] c"CR X A Y B - replace phone Y in the context of A_B by X. Contexts\0A\00"
@.str.3 = [70 x i8] c" may include '*' [any] or defined context set (see DC)\0A\00"
@.str.4 = [49 x i8] c"DC X A B ... - define set A B .... as context X\0A\00"
@.str.5 = [74 x i8] c"DD X A B ... - delete definition for word X starting with phones A B ...\0A\00"
@.str.6 = [65 x i8] c"DP A B C ... - delete any occurrences of phones A or B or C ...\0A\00"
@.str.7 = [64 x i8] c"DS A - delete pron from source A unless it is only one\0A\00"
@.str.8 = [51 x i8] c"DW X Y Z ... - delete words (& definitions) X,Y,Z\0A\00"
@.str.9 = [58 x i8] c"FW X Y Z ... - define X Y Z as function words and change\0A\00"
@.str.10 = [64 x i8] c" each phone in the definition to a function word\0A\00"
@.str.11 = [67 x i8] c" specific phone. In word W phone A becomes W.A etc.\0A\00"
@.str.12 = [72 x i8] c"IR - select raw input mode. Each input word is single white\0A\00"
@.str.13 = [74 x i8] c" space delimited string (',\22 and \\ not treated specially).\0A\00"
@.str.14 = [69 x i8] c"LC [X] - convert phones to Left-context dependent. If X given\0A\00"
@.str.15 = [72 x i8] c" then 1st phone in word -> X-a otherwise it is unchanged\0A\00"
@.str.16 = [48 x i8] c"LP - convert all phones to lowercase\0A\00"
@.str.17 = [47 x i8] c"LW - convert all words to lowercase\0A\00"
@.str.18 = [57 x i8] c"MP X A B ... - merge any sequence of phones A B .. by X\0A\00"
@.str.19 = [70 x i8] c"RC [X] - convert phones to riGht-context dependent. If X given\0A\00"
@.str.20 = [73 x i8] c" then last phone in word -> z+X otherwise it is unchanged\0A\00"
@.str.21 = [65 x i8] c"RP X A B ... - replace all occurrences of phones A or B .. by X\0A\00"
@.str.22 = [52 x i8] c"RS system - remove stress marking: system = cmu\0A\00"
@.str.23 = [63 x i8] c"RW X A B ... - replace all occurrences of word A or B .. by X\0A\00"
@.str.24 = [54 x i8] c"SP X A B ... - split phone X into sequence A B C ...\0A\00"
@.str.25 = [68 x i8] c"TC [X [Y]] - convert phones to Triphones. If X is given then 1st\0A\00"
@.str.26 = [72 x i8] c" phone -> X-a+b otherwise it is unchanged. If Y is given\0A\00"
@.str.27 = [60 x i8] c" last phone -> y-z+Y otherwise if X is given\0A\00"
@.str.28 = [60 x i8] c" then it -> y-z+X otherwise it is unchanged.\0A\00"
@.str.29 = [48 x i8] c"UP - convert all phones to uppercase\0A\00"
@.str.30 = [48 x i8] c"UW - convert all words to uppercase\0A\0A\00"
define void @Summary() {
%1 = call i32 @printf(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str, i64 0, i64 0))
%2 = call i32 @printf(i8* getelementptr inbounds ([70 x i8], [70 x i8]* @.str.1, i64 0, i64 0))
%3 = call i32 @printf(i8* getelementptr inbounds ([70 x i8], [70 x i8]* @.str.2, i64 0, i64 0))
%4 = call i32 @printf(i8* getelementptr inbounds ([70 x i8], [70 x i8]* @.str.3, i64 0, i64 0))
%5 = call i32 @printf(i8* getelementptr inbounds ([49 x i8], [49 x i8]* @.str.4, i64 0, i64 0))
%6 = call i32 @printf(i8* getelementptr inbounds ([74 x i8], [74 x i8]* @.str.5, i64 0, i64 0))
%7 = call i32 @printf(i8* getelementptr inbounds ([65 x i8], [65 x i8]* @.str.6, i64 0, i64 0))
%8 = call i32 @printf(i8* getelementptr inbounds ([64 x i8], [64 x i8]* @.str.7, i64 0, i64 0))
%9 = call i32 @printf(i8* getelementptr inbounds ([51 x i8], [51 x i8]* @.str.8, i64 0, i64 0))
%10 = call i32 @printf(i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.9, i64 0, i64 0))
%11 = call i32 @printf(i8* getelementptr inbounds ([64 x i8], [64 x i8]* @.str.10, i64 0, i64 0))
%12 = call i32 @printf(i8* getelementptr inbounds ([67 x i8], [67 x i8]* @.str.11, i64 0, i64 0))
%13 = call i32 @printf(i8* getelementptr inbounds ([72 x i8], [72 x i8]* @.str.12, i64 0, i64 0))
%14 = call i32 @printf(i8* getelementptr inbounds ([74 x i8], [74 x i8]* @.str.13, i64 0, i64 0))
%15 = call i32 @printf(i8* getelementptr inbounds ([69 x i8], [69 x i8]* @.str.14, i64 0, i64 0))
%16 = call i32 @printf(i8* getelementptr inbounds ([72 x i8], [72 x i8]* @.str.15, i64 0, i64 0))
%17 = call i32 @printf(i8* getelementptr inbounds ([48 x i8], [48 x i8]* @.str.16, i64 0, i64 0))
%18 = call i32 @printf(i8* getelementptr inbounds ([47 x i8], [47 x i8]* @.str.17, i64 0, i64 0))
%19 = call i32 @printf(i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str.18, i64 0, i64 0))
%20 = call i32 @printf(i8* getelementptr inbounds ([70 x i8], [70 x i8]* @.str.19, i64 0, i64 0))
%21 = call i32 @printf(i8* getelementptr inbounds ([73 x i8], [73 x i8]* @.str.20, i64 0, i64 0))
%22 = call i32 @printf(i8* getelementptr inbounds ([65 x i8], [65 x i8]* @.str.21, i64 0, i64 0))
%23 = call i32 @printf(i8* getelementptr inbounds ([52 x i8], [52 x i8]* @.str.22, i64 0, i64 0))
%24 = call i32 @printf(i8* getelementptr inbounds ([63 x i8], [63 x i8]* @.str.23, i64 0, i64 0))
%25 = call i32 @printf(i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.24, i64 0, i64 0))
%26 = call i32 @printf(i8* getelementptr inbounds ([68 x i8], [68 x i8]* @.str.25, i64 0, i64 0))
%27 = call i32 @printf(i8* getelementptr inbounds ([72 x i8], [72 x i8]* @.str.26, i64 0, i64 0))
%28 = call i32 @printf(i8* getelementptr inbounds ([60 x i8], [60 x i8]* @.str.27, i64 0, i64 0))
%29 = call i32 @printf(i8* getelementptr inbounds ([60 x i8], [60 x i8]* @.str.28, i64 0, i64 0))
%30 = call i32 @printf(i8* getelementptr inbounds ([48 x i8], [48 x i8]* @.str.29, i64 0, i64 0))
%31 = call i32 @printf(i8* getelementptr inbounds ([48 x i8], [48 x i8]* @.str.30, i64 0, i64 0))
%32 = call i32 @Exit(i32 0)
ret void
}

LLVM IR (-O2):
@str = [24 x i8] c"\0AHDMan Command Summary\0A\00"
@str.31 = [69 x i8] c"AS A B ... - append silence models A, B, etc to each pronunciation\00"
@str.32 = [69 x i8] c"CR X A Y B - replace phone Y in the context of A_B by X. Contexts\00"
@str.33 = [69 x i8] c" may include '*' [any] or defined context set (see DC)\00"
@str.34 = [48 x i8] c"DC X A B ... - define set A B .... as context X\00"
@str.35 = [73 x i8] c"DD X A B ... - delete definition for word X starting with phones A B ...\00"
@str.36 = [64 x i8] c"DP A B C ... - delete any occurrences of phones A or B or C ...\00"
@str.37 = [63 x i8] c"DS A - delete pron from source A unless it is only one\00"
@str.38 = [50 x i8] c"DW X Y Z ... - delete words (& definitions) X,Y,Z\00"
@str.39 = [57 x i8] c"FW X Y Z ... - define X Y Z as function words and change\00"
@str.40 = [63 x i8] c" each phone in the definition to a function word\00"
@str.41 = [66 x i8] c" specific phone. In word W phone A becomes W.A etc.\00"
@str.42 = [71 x i8] c"IR - select raw input mode. Each input word is single white\00"
@str.43 = [73 x i8] c" space delimited string (',\22 and \\ not treated specially).\00"
@str.44 = [68 x i8] c"LC [X] - convert phones to Left-context dependent. If X given\00"
@str.45 = [71 x i8] c" then 1st phone in word -> X-a otherwise it is unchanged\00"
@str.46 = [47 x i8] c"LP - convert all phones to lowercase\00"
@str.47 = [46 x i8] c"LW - convert all words to lowercase\00"
@str.48 = [56 x i8] c"MP X A B ... - merge any sequence of phones A B .. by X\00"
@str.49 = [69 x i8] c"RC [X] - convert phones to riGht-context dependent. If X given\00"
@str.50 = [72 x i8] c" then last phone in word -> z+X otherwise it is unchanged\00"
@str.51 = [64 x i8] c"RP X A B ... - replace all occurrences of phones A or B .. by X\00"
@str.52 = [51 x i8] c"RS system - remove stress marking: system = cmu\00"
@str.53 = [62 x i8] c"RW X A B ... - replace all occurrences of word A or B .. by X\00"
@str.54 = [53 x i8] c"SP X A B ... - split phone X into sequence A B C ...\00"
@str.55 = [67 x i8] c"TC [X [Y]] - convert phones to Triphones. If X is given then 1st\00"
@str.56 = [71 x i8] c" phone -> X-a+b otherwise it is unchanged. If Y is given\00"
@str.57 = [59 x i8] c" last phone -> y-z+Y otherwise if X is given\00"
@str.58 = [59 x i8] c" then it -> y-z+X otherwise it is unchanged.\00"
@str.59 = [47 x i8] c"UP - convert all phones to uppercase\00"
@str.60 = [47 x i8] c"UW - convert all words to uppercase\0A\00"
define void @Summary() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([24 x i8], [24 x i8]* @str, i64 0, i64 0))
%2 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([69 x i8], [69 x i8]* @str.31, i64 0, i64 0))
%3 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([69 x i8], [69 x i8]* @str.32, i64 0, i64 0))
%4 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([69 x i8], [69 x i8]* @str.33, i64 0, i64 0))
%5 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([48 x i8], [48 x i8]* @str.34, i64 0, i64 0))
%6 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([73 x i8], [73 x i8]* @str.35, i64 0, i64 0))
%7 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([64 x i8], [64 x i8]* @str.36, i64 0, i64 0))
%8 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([63 x i8], [63 x i8]* @str.37, i64 0, i64 0))
%9 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([50 x i8], [50 x i8]* @str.38, i64 0, i64 0))
%10 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([57 x i8], [57 x i8]* @str.39, i64 0, i64 0))
%11 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([63 x i8], [63 x i8]* @str.40, i64 0, i64 0))
%12 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([66 x i8], [66 x i8]* @str.41, i64 0, i64 0))
%13 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([71 x i8], [71 x i8]* @str.42, i64 0, i64 0))
%14 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([73 x i8], [73 x i8]* @str.43, i64 0, i64 0))
%15 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([68 x i8], [68 x i8]* @str.44, i64 0, i64 0))
%16 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([71 x i8], [71 x i8]* @str.45, i64 0, i64 0))
%17 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([47 x i8], [47 x i8]* @str.46, i64 0, i64 0))
%18 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([46 x i8], [46 x i8]* @str.47, i64 0, i64 0))
%19 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([56 x i8], [56 x i8]* @str.48, i64 0, i64 0))
%20 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([69 x i8], [69 x i8]* @str.49, i64 0, i64 0))
%21 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([72 x i8], [72 x i8]* @str.50, i64 0, i64 0))
%22 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([64 x i8], [64 x i8]* @str.51, i64 0, i64 0))
%23 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([51 x i8], [51 x i8]* @str.52, i64 0, i64 0))
%24 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([62 x i8], [62 x i8]* @str.53, i64 0, i64 0))
%25 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([53 x i8], [53 x i8]* @str.54, i64 0, i64 0))
%26 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([67 x i8], [67 x i8]* @str.55, i64 0, i64 0))
%27 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([71 x i8], [71 x i8]* @str.56, i64 0, i64 0))
%28 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([59 x i8], [59 x i8]* @str.57, i64 0, i64 0))
%29 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([59 x i8], [59 x i8]* @str.58, i64 0, i64 0))
%30 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([47 x i8], [47 x i8]* @str.59, i64 0, i64 0))
%31 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([47 x i8], [47 x i8]* @str.60, i64 0, i64 0))
%32 = tail call i32 @Exit(i32 0)
ret void
}