#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 */
char getchar();
int /*<<< orphan*/ printf(char *);
int /*<<< orphan*/ strcmp(char *, char *);
int main(int argc, char *argv[]) {
  printf("\nWinFutureX PRESENTS - PLAGUEIS / REACH THE MAN v1.1\n\n");
  for (int i = 1; i < argc; ++i) {
    if (!strcmp(argv[1], "-secret") || !strcmp(argv[1], "-s") ||
        !strcmp(argv[1], "-S") || !strcmp(argv[1], "/S") ||
        !strcmp(argv[1], "/s")) {
      printf("This is your own masterpiece\n");
    } else if (!strcmp(argv[1], "-backstroke") || !strcmp(argv[1], "-b") ||
               !strcmp(argv[1], "-B") || !strcmp(argv[1], "/B") ||
               !strcmp(argv[1], "/b")) {
      printf("Did you heard of the tragedy that reach the man? I think to be "
             "too is not. I\n");
      printf("think that the hopeless situation elder also can't. That is a "
             "legend. Reaching\n");
      printf("the man cloth space is the emperor. He is so strong and big he "
             "even can use the\n");
      printf("original dint to create life. He is very deep to black influence "
             "understanding.\n");
      printf("The black influence can the matter that many supermans. But "
             "other people thinks\n");
      printf("that these are what can't attains. He become more and more "
             "strong and big. Lost\n");
      printf("his power afterwards afterwards he died. In fact he teaches own "
             "the whole skills\n");
      printf("all to disciple. Then his land killed him to let him going to "
             "bed. Satirizing\n");
      printf("the meaning is he can let other people, but is incapable for "
             "dint to the\n");
      printf("oneself.\n");
    } else {
      printf("special options:\n\n");
      printf("-secret (/s or -s): does exactly what it says\n");
      printf("-backstroke (/b or -b): same thing\n");
      printf("\n");
    }
    return 0;
  }
  printf("Did you ever hear the tragedy of Darth Plagueis the wise?\n");
  printf("(Please answer with 'Y' or 'N'.)\n");
  char answer = getchar();
  if (answer == 'Y' || answer == 'y') {
    printf("\nWe will watch your career with great interest.\n");
  } else if (answer == 'N' || answer == 'n') {
    printf("\nI thought not. It's not a story the Jedi would tell you. It's a "
           "Sith legend.\n");
    printf("Darth Plagueis was a Dark Lord of the Sith, so powerful and so "
           "wise he could\n");
    printf("use the Force to influence the midichlorians to create life... He "
           "had such a\n");
    printf("knowledge of the dark side that he could even keep the ones he "
           "cared about from\n");
    printf("dying. The dark side of the Force is a pathway to many abilities "
           "some consider\n");
    printf("to be unnatural. He became so powerful... the only thing he was "
           "afraid of was\n");
    printf("losing his power, which eventually, of course, he did. "
           "Unfortunately, he taught\n");
    printf("his apprentice everything he knew, then his apprentice killed him "
           "in his sleep.\n");
    printf("Ironic. He could save others from death, but not himself.\n");
  } else if (answer == 'B' || answer == 'b') {
    printf("\nnote: launch with \"-backstroke\" option next time\n");
  } else {
    printf("\nSo uncivilised.\n");
    printf("\n");
    return 1;
  }
  printf("\n");
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
movl   $0x0,-0x4(%rbp)
mov    %edi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
lea    0xeb3(%rip),%rdi
call   1030 <printf@plt>
movl   $0x1,-0x14(%rbp)
mov    -0x14(%rbp),%eax
cmp    -0x8(%rbp),%eax
jge    1356 <main+0x226>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xec3(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
je     11f6 <main+0xc6>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xeae(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
je     11f6 <main+0xc6>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xe94(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
je     11f6 <main+0xc6>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xe7a(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
je     11f6 <main+0xc6>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xe60(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    1207 <main+0xd7>
lea    0xe4e(%rip),%rdi
call   1030 <printf@plt>
jmp    134a <main+0x21a>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xe53(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
je     1298 <main+0x168>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xe42(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
je     1298 <main+0x168>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xe28(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
je     1298 <main+0x168>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xe0e(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
je     1298 <main+0x168>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xdf4(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    1315 <main+0x1e5>
lea    0xde2(%rip),%rdi
call   1030 <printf@plt>
lea    0xe24(%rip),%rdi
call   1030 <printf@plt>
lea    0xe68(%rip),%rdi
call   1030 <printf@plt>
lea    0xead(%rip),%rdi
call   1030 <printf@plt>
lea    0xef2(%rip),%rdi
call   1030 <printf@plt>
lea    0xf37(%rip),%rdi
call   1030 <printf@plt>
lea    0xf7c(%rip),%rdi
call   1030 <printf@plt>
lea    0xfc2(%rip),%rdi
call   1030 <printf@plt>
lea    0x1005(%rip),%rdi
call   1030 <printf@plt>
lea    0x1043(%rip),%rdi
call   1030 <printf@plt>
jmp    1345 <main+0x215>
lea    0x103c(%rip),%rdi
call   1030 <printf@plt>
lea    0x1043(%rip),%rdi
call   1030 <printf@plt>
lea    0x1066(%rip),%rdi
call   1030 <printf@plt>
lea    0xcf5(%rip),%rdi
call   1030 <printf@plt>
jmp    134a <main+0x21a>
movl   $0x0,-0x4(%rbp)
jmp    149a <main+0x36a>
lea    0x1061(%rip),%rdi
call   1030 <printf@plt>
lea    0x1090(%rip),%rdi
call   1030 <printf@plt>
mov    $0x0,%al
call   1050 <getchar@plt>
mov    %al,-0x15(%rbp)
movsbl -0x15(%rbp),%eax
cmp    $0x59,%eax
je     1392 <main+0x262>
movsbl -0x15(%rbp),%eax
cmp    $0x79,%eax
jne    13a3 <main+0x273>
lea    0x1082(%rip),%rdi
call   1030 <printf@plt>
jmp    1487 <main+0x357>
movsbl -0x15(%rbp),%eax
cmp    $0x4e,%eax
je     13bd <main+0x28d>
movsbl -0x15(%rbp),%eax
cmp    $0x6e,%eax
jne    142e <main+0x2fe>
lea    0x1088(%rip),%rdi
call   1030 <printf@plt>
lea    0x10cb(%rip),%rdi
call   1030 <printf@plt>
lea    0x110d(%rip),%rdi
call   1030 <printf@plt>
lea    0x114f(%rip),%rdi
call   1030 <printf@plt>
lea    0x1194(%rip),%rdi
call   1030 <printf@plt>
lea    0x11d8(%rip),%rdi
call   1030 <printf@plt>
lea    0x121b(%rip),%rdi
call   1030 <printf@plt>
lea    0x1260(%rip),%rdi
call   1030 <printf@plt>
lea    0x12a5(%rip),%rdi
call   1030 <printf@plt>
jmp    1482 <main+0x352>
movsbl -0x15(%rbp),%eax
cmp    $0x42,%eax
je     1448 <main+0x318>
movsbl -0x15(%rbp),%eax
cmp    $0x62,%eax
jne    1459 <main+0x329>
lea    0x12b5(%rip),%rdi
call   1030 <printf@plt>
jmp    147d <main+0x34d>
lea    0x12d7(%rip),%rdi
call   1030 <printf@plt>
lea    0xbc9(%rip),%rdi
call   1030 <printf@plt>
movl   $0x1,-0x4(%rbp)
jmp    149a <main+0x36a>
jmp    1482 <main+0x352>
jmp    1487 <main+0x357>
lea    0xba7(%rip),%rdi
call   1030 <printf@plt>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %rbx
push   %rax
mov    %rsi,%rbx
mov    %edi,%ebp
lea    0xedd(%rip),%rdi
call   1040 <puts@plt>
cmp    $0x2,%ebp
jl     126b <main+0x12b>
mov    0x8(%rbx),%rbx
lea    0xe98(%rip),%rsi
mov    %rbx,%rdi
call   1050 <strcmp@plt>
test   %eax,%eax
je     130d <main+0x1cd>
lea    0xe89(%rip),%rsi
mov    %rbx,%rdi
call   1050 <strcmp@plt>
test   %eax,%eax
je     130d <main+0x1cd>
lea    0xe75(%rip),%rsi
mov    %rbx,%rdi
call   1050 <strcmp@plt>
test   %eax,%eax
je     130d <main+0x1cd>
lea    0xe61(%rip),%rsi
mov    %rbx,%rdi
call   1050 <strcmp@plt>
test   %eax,%eax
je     130d <main+0x1cd>
lea    0xe4d(%rip),%rsi
mov    %rbx,%rdi
call   1050 <strcmp@plt>
test   %eax,%eax
je     130d <main+0x1cd>
lea    0xe39(%rip),%rsi
mov    %rbx,%rdi
call   1050 <strcmp@plt>
test   %eax,%eax
je     1360 <main+0x220>
lea    0xe2e(%rip),%rsi
mov    %rbx,%rdi
call   1050 <strcmp@plt>
test   %eax,%eax
je     1360 <main+0x220>
lea    0xe1a(%rip),%rsi
mov    %rbx,%rdi
call   1050 <strcmp@plt>
test   %eax,%eax
je     1360 <main+0x220>
lea    0xe06(%rip),%rsi
mov    %rbx,%rdi
call   1050 <strcmp@plt>
test   %eax,%eax
je     1360 <main+0x220>
lea    0xdf2(%rip),%rsi
mov    %rbx,%rdi
call   1050 <strcmp@plt>
test   %eax,%eax
je     1360 <main+0x220>
lea    0x147b(%rip),%rdi
call   1040 <puts@plt>
lea    0x1481(%rip),%rdi
call   1040 <puts@plt>
lea    0x14a3(%rip),%rdi
jmp    132b <main+0x1eb>
lea    0xdf0(%rip),%rdi
call   1040 <puts@plt>
lea    0xe1e(%rip),%rdi
call   1040 <puts@plt>
xor    %eax,%eax
call   1060 <getchar@plt>
and    $0xdf,%al
cmp    $0x42,%al
je     131b <main+0x1db>
cmp    $0x59,%al
je     1324 <main+0x1e4>
cmp    $0x4e,%al
jne    1343 <main+0x203>
lea    0xe55(%rip),%rdi
call   1040 <puts@plt>
lea    0xe97(%rip),%rdi
call   1040 <puts@plt>
lea    0xed8(%rip),%rdi
call   1040 <puts@plt>
lea    0xf19(%rip),%rdi
call   1040 <puts@plt>
lea    0xf5d(%rip),%rdi
call   1040 <puts@plt>
lea    0xfa0(%rip),%rdi
call   1040 <puts@plt>
lea    0xfe2(%rip),%rdi
call   1040 <puts@plt>
lea    0x1026(%rip),%rdi
call   1040 <puts@plt>
lea    0x106a(%rip),%rdi
jmp    132b <main+0x1eb>
lea    0x10cb(%rip),%rdi
call   1040 <puts@plt>
jmp    133a <main+0x1fa>
lea    0xdac(%rip),%rdi
jmp    132b <main+0x1eb>
lea    0x1084(%rip),%rdi
call   1040 <puts@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
xor    %eax,%eax
add    $0x8,%rsp
pop    %rbx
pop    %rbp
ret
lea    0xd73(%rip),%rdi
call   1040 <puts@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    $0x1,%eax
jmp    133c <main+0x1fc>
lea    0x1095(%rip),%rdi
call   1040 <puts@plt>
lea    0x10d6(%rip),%rdi
call   1040 <puts@plt>
lea    0x1119(%rip),%rdi
call   1040 <puts@plt>
lea    0x115d(%rip),%rdi
call   1040 <puts@plt>
lea    0x11a1(%rip),%rdi
call   1040 <puts@plt>
lea    0x11e5(%rip),%rdi
call   1040 <puts@plt>
lea    0x1229(%rip),%rdi
call   1040 <puts@plt>
lea    0x126e(%rip),%rdi
call   1040 <puts@plt>
lea    0x12b0(%rip),%rdi
call   1040 <puts@plt>
lea    0x12ed(%rip),%rdi
call   1040 <puts@plt>
jmp    133a <main+0x1fa>

LLVM IR (-O0):
@.str = [55 x i8] c"\0AWinFutureX PRESENTS - PLAGUEIS / REACH THE MAN v1.1\0A\0A\00"
@.str.1 = [8 x i8] c"-secret\00"
@.str.2 = [3 x i8] c"-s\00"
@.str.3 = [3 x i8] c"-S\00"
@.str.4 = [3 x i8] c"/S\00"
@.str.5 = [3 x i8] c"/s\00"
@.str.6 = [30 x i8] c"This is your own masterpiece\0A\00"
@.str.7 = [12 x i8] c"-backstroke\00"
@.str.8 = [3 x i8] c"-b\00"
@.str.9 = [3 x i8] c"-B\00"
@.str.10 = [3 x i8] c"/B\00"
@.str.11 = [3 x i8] c"/b\00"
@.str.12 = [78 x i8] c"Did you heard of the tragedy that reach the man? I think to be too is not. I\0A\00"
@.str.13 = [80 x i8] c"think that the hopeless situation elder also can't. That is a legend. Reaching\0A\00"
@.str.14 = [81 x i8] c"the man cloth space is the emperor. He is so strong and big he even can use the\0A\00"
@.str.15 = [81 x i8] c"original dint to create life. He is very deep to black influence understanding.\0A\00"
@.str.16 = [81 x i8] c"The black influence can the matter that many supermans. But other people thinks\0A\00"
@.str.17 = [81 x i8] c"that these are what can't attains. He become more and more strong and big. Lost\0A\00"
@.str.18 = [82 x i8] c"his power afterwards afterwards he died. In fact he teaches own the whole skills\0A\00"
@.str.19 = [79 x i8] c"all to disciple. Then his land killed him to let him going to bed. Satirizing\0A\00"
@.str.20 = [74 x i8] c"the meaning is he can let other people, but is incapable for dint to the\0A\00"
@.str.21 = [10 x i8] c"oneself.\0A\00"
@.str.22 = [19 x i8] c"special options:\0A\0A\00"
@.str.23 = [47 x i8] c"-secret (/s or -s): does exactly what it says\0A\00"
@.str.24 = [36 x i8] c"-backstroke (/b or -b): same thing\0A\00"
@.str.25 = [2 x i8] c"\0A\00"
@.str.26 = [59 x i8] c"Did you ever hear the tragedy of Darth Plagueis the wise?\0A\00"
@.str.27 = [34 x i8] c"(Please answer with 'Y' or 'N'.)\0A\00"
@.str.28 = [49 x i8] c"\0AWe will watch your career with great interest.\0A\00"
@.str.29 = [79 x i8] c"\0AI thought not. It's not a story the Jedi would tell you. It's a Sith legend.\0A\00"
@.str.30 = [78 x i8] c"Darth Plagueis was a Dark Lord of the Sith, so powerful and so wise he could\0A\00"
@.str.31 = [78 x i8] c"use the Force to influence the midichlorians to create life... He had such a\0A\00"
@.str.32 = [81 x i8] c"knowledge of the dark side that he could even keep the ones he cared about from\0A\00"
@.str.33 = [80 x i8] c"dying. The dark side of the Force is a pathway to many abilities some consider\0A\00"
@.str.34 = [79 x i8] c"to be unnatural. He became so powerful... the only thing he was afraid of was\0A\00"
@.str.35 = [81 x i8] c"losing his power, which eventually, of course, he did. Unfortunately, he taught\0A\00"
@.str.36 = [81 x i8] c"his apprentice everything he knew, then his apprentice killed him in his sleep.\0A\00"
@.str.37 = [59 x i8] c"Ironic. He could save others from death, but not himself.\0A\00"
@.str.38 = [51 x i8] c"\0Anote: launch with \22-backstroke\22 option next time\0A\00"
@.str.39 = [18 x i8] c"\0ASo uncivilised.\0A\00"
define i32 @main(i32 %0, i8** %1) {
%3 = alloca i32
%4 = alloca i32
%5 = alloca i8**
%6 = alloca i32
%7 = alloca i8
store i32 0, i32* %3
store i32 %0, i32* %4
store i8** %1, i8*** %5
%8 = call i32 @printf(i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str, i64 0, i64 0))
store i32 1, i32* %6
br label %9
9: ; preds = %93, %2
%10 = load i32, i32* %6
%11 = load i32, i32* %4
%12 = icmp slt i32 %10, %11
br i1 %12, label %13, label %96
13: ; preds = %9
%14 = load i8**, i8*** %5
%15 = getelementptr inbounds i8*, i8** %14, i64 1
%16 = load i8*, i8** %15
%17 = call i32 @strcmp(i8* %16, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.1, i64 0, i64 0))
%18 = icmp ne i32 %17, 0
br i1 %18, label %19, label %43
19: ; preds = %13
%20 = load i8**, i8*** %5
%21 = getelementptr inbounds i8*, i8** %20, i64 1
%22 = load i8*, i8** %21
%23 = call i32 @strcmp(i8* %22, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0))
%24 = icmp ne i32 %23, 0
br i1 %24, label %25, label %43
25: ; preds = %19
%26 = load i8**, i8*** %5
%27 = getelementptr inbounds i8*, i8** %26, i64 1
%28 = load i8*, i8** %27
%29 = call i32 @strcmp(i8* %28, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.3, i64 0, i64 0))
%30 = icmp ne i32 %29, 0
br i1 %30, label %31, label %43
31: ; preds = %25
%32 = load i8**, i8*** %5
%33 = getelementptr inbounds i8*, i8** %32, i64 1
%34 = load i8*, i8** %33
%35 = call i32 @strcmp(i8* %34, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0))
%36 = icmp ne i32 %35, 0
br i1 %36, label %37, label %43
37: ; preds = %31
%38 = load i8**, i8*** %5
%39 = getelementptr inbounds i8*, i8** %38, i64 1
%40 = load i8*, i8** %39
%41 = call i32 @strcmp(i8* %40, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0))
%42 = icmp ne i32 %41, 0
br i1 %42, label %45, label %43
43: ; preds = %37, %31, %25, %19, %13
%44 = call i32 @printf(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.6, i64 0, i64 0))
br label %92
45: ; preds = %37
%46 = load i8**, i8*** %5
%47 = getelementptr inbounds i8*, i8** %46, i64 1
%48 = load i8*, i8** %47
%49 = call i32 @strcmp(i8* %48, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.7, i64 0, i64 0))
%50 = icmp ne i32 %49, 0
br i1 %50, label %51, label %75
51: ; preds = %45
%52 = load i8**, i8*** %5
%53 = getelementptr inbounds i8*, i8** %52, i64 1
%54 = load i8*, i8** %53
%55 = call i32 @strcmp(i8* %54, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.8, i64 0, i64 0))
%56 = icmp ne i32 %55, 0
br i1 %56, label %57, label %75
57: ; preds = %51
%58 = load i8**, i8*** %5
%59 = getelementptr inbounds i8*, i8** %58, i64 1
%60 = load i8*, i8** %59
%61 = call i32 @strcmp(i8* %60, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0))
%62 = icmp ne i32 %61, 0
br i1 %62, label %63, label %75
63: ; preds = %57
%64 = load i8**, i8*** %5
%65 = getelementptr inbounds i8*, i8** %64, i64 1
%66 = load i8*, i8** %65
%67 = call i32 @strcmp(i8* %66, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.10, i64 0, i64 0))
%68 = icmp ne i32 %67, 0
br i1 %68, label %69, label %75
69: ; preds = %63
%70 = load i8**, i8*** %5
%71 = getelementptr inbounds i8*, i8** %70, i64 1
%72 = load i8*, i8** %71
%73 = call i32 @strcmp(i8* %72, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.11, i64 0, i64 0))
%74 = icmp ne i32 %73, 0
br i1 %74, label %86, label %75
75: ; preds = %69, %63, %57, %51, %45
%76 = call i32 @printf(i8* getelementptr inbounds ([78 x i8], [78 x i8]* @.str.12, i64 0, i64 0))
%77 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.13, i64 0, i64 0))
%78 = call i32 @printf(i8* getelementptr inbounds ([81 x i8], [81 x i8]* @.str.14, i64 0, i64 0))
%79 = call i32 @printf(i8* getelementptr inbounds ([81 x i8], [81 x i8]* @.str.15, i64 0, i64 0))
%80 = call i32 @printf(i8* getelementptr inbounds ([81 x i8], [81 x i8]* @.str.16, i64 0, i64 0))
%81 = call i32 @printf(i8* getelementptr inbounds ([81 x i8], [81 x i8]* @.str.17, i64 0, i64 0))
%82 = call i32 @printf(i8* getelementptr inbounds ([82 x i8], [82 x i8]* @.str.18, i64 0, i64 0))
%83 = call i32 @printf(i8* getelementptr inbounds ([79 x i8], [79 x i8]* @.str.19, i64 0, i64 0))
%84 = call i32 @printf(i8* getelementptr inbounds ([74 x i8], [74 x i8]* @.str.20, i64 0, i64 0))
%85 = call i32 @printf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.21, i64 0, i64 0))
br label %91
86: ; preds = %69
%87 = call i32 @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.22, i64 0, i64 0))
%88 = call i32 @printf(i8* getelementptr inbounds ([47 x i8], [47 x i8]* @.str.23, i64 0, i64 0))
%89 = call i32 @printf(i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.24, i64 0, i64 0))
%90 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.25, i64 0, i64 0))
br label %91
91: ; preds = %86, %75
br label %92
92: ; preds = %91, %43
store i32 0, i32* %3
br label %144
93: ; No predecessors!
%94 = load i32, i32* %6
%95 = add nsw i32 %94, 1
store i32 %95, i32* %6
br label %9
96: ; preds = %9
%97 = call i32 @printf(i8* getelementptr inbounds ([59 x i8], [59 x i8]* @.str.26, i64 0, i64 0))
%98 = call i32 @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.27, i64 0, i64 0))
%99 = call signext i8 (...) @getchar()
store i8 %99, i8* %7
%100 = load i8, i8* %7
%101 = sext i8 %100 to i32
%102 = icmp eq i32 %101, 89
br i1 %102, label %107, label %103
103: ; preds = %96
%104 = load i8, i8* %7
%105 = sext i8 %104 to i32
%106 = icmp eq i32 %105, 121
br i1 %106, label %107, label %109
107: ; preds = %103, %96
%108 = call i32 @printf(i8* getelementptr inbounds ([49 x i8], [49 x i8]* @.str.28, i64 0, i64 0))
br label %142
109: ; preds = %103
%110 = load i8, i8* %7
%111 = sext i8 %110 to i32
%112 = icmp eq i32 %111, 78
br i1 %112, label %117, label %113
113: ; preds = %109
%114 = load i8, i8* %7
%115 = sext i8 %114 to i32
%116 = icmp eq i32 %115, 110
br i1 %116, label %117, label %127
117: ; preds = %113, %109
%118 = call i32 @printf(i8* getelementptr inbounds ([79 x i8], [79 x i8]* @.str.29, i64 0, i64 0))
%119 = call i32 @printf(i8* getelementptr inbounds ([78 x i8], [78 x i8]* @.str.30, i64 0, i64 0))
%120 = call i32 @printf(i8* getelementptr inbounds ([78 x i8], [78 x i8]* @.str.31, i64 0, i64 0))
%121 = call i32 @printf(i8* getelementptr inbounds ([81 x i8], [81 x i8]* @.str.32, i64 0, i64 0))
%122 = call i32 @printf(i8* getelementptr inbounds ([80 x i8], [80 x i8]* @.str.33, i64 0, i64 0))
%123 = call i32 @printf(i8* getelementptr inbounds ([79 x i8], [79 x i8]* @.str.34, i64 0, i64 0))
%124 = call i32 @printf(i8* getelementptr inbounds ([81 x i8], [81 x i8]* @.str.35, i64 0, i64 0))
%125 = call i32 @printf(i8* getelementptr inbounds ([81 x i8], [81 x i8]* @.str.36, i64 0, i64 0))
%126 = call i32 @printf(i8* getelementptr inbounds ([59 x i8], [59 x i8]* @.str.37, i64 0, i64 0))
br label %141
127: ; preds = %113
%128 = load i8, i8* %7
%129 = sext i8 %128 to i32
%130 = icmp eq i32 %129, 66
br i1 %130, label %135, label %131
131: ; preds = %127
%132 = load i8, i8* %7
%133 = sext i8 %132 to i32
%134 = icmp eq i32 %133, 98
br i1 %134, label %135, label %137
135: ; preds = %131, %127
%136 = call i32 @printf(i8* getelementptr inbounds ([51 x i8], [51 x i8]* @.str.38, i64 0, i64 0))
br label %140
137: ; preds = %131
%138 = call i32 @printf(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.39, i64 0, i64 0))
%139 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.25, i64 0, i64 0))
store i32 1, i32* %3
br label %144
140: ; preds = %135
br label %141
141: ; preds = %140, %117
br label %142
142: ; preds = %141, %107
%143 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.25, i64 0, i64 0))
store i32 0, i32* %3
br label %144
144: ; preds = %142, %137, %92
%145 = load i32, i32* %3
ret i32 %145
}

LLVM IR (-O2):
@.str.1 = [8 x i8] c"-secret\00"
@.str.2 = [3 x i8] c"-s\00"
@.str.3 = [3 x i8] c"-S\00"
@.str.4 = [3 x i8] c"/S\00"
@.str.5 = [3 x i8] c"/s\00"
@.str.7 = [12 x i8] c"-backstroke\00"
@.str.8 = [3 x i8] c"-b\00"
@.str.9 = [3 x i8] c"-B\00"
@.str.10 = [3 x i8] c"/B\00"
@.str.11 = [3 x i8] c"/b\00"
@str = [54 x i8] c"\0AWinFutureX PRESENTS - PLAGUEIS / REACH THE MAN v1.1\0A\00"
@str.40 = [58 x i8] c"Did you ever hear the tragedy of Darth Plagueis the wise?\00"
@str.41 = [33 x i8] c"(Please answer with 'Y' or 'N'.)\00"
@str.42 = [17 x i8] c"\0ASo uncivilised.\00"
@str.43 = [50 x i8] c"\0Anote: launch with \22-backstroke\22 option next time\00"
@str.44 = [78 x i8] c"\0AI thought not. It's not a story the Jedi would tell you. It's a Sith legend.\00"
@str.45 = [77 x i8] c"Darth Plagueis was a Dark Lord of the Sith, so powerful and so wise he could\00"
@str.46 = [77 x i8] c"use the Force to influence the midichlorians to create life... He had such a\00"
@str.47 = [80 x i8] c"knowledge of the dark side that he could even keep the ones he cared about from\00"
@str.48 = [79 x i8] c"dying. The dark side of the Force is a pathway to many abilities some consider\00"
@str.49 = [78 x i8] c"to be unnatural. He became so powerful... the only thing he was afraid of was\00"
@str.50 = [80 x i8] c"losing his power, which eventually, of course, he did. Unfortunately, he taught\00"
@str.51 = [80 x i8] c"his apprentice everything he knew, then his apprentice killed him in his sleep.\00"
@str.52 = [58 x i8] c"Ironic. He could save others from death, but not himself.\00"
@str.53 = [48 x i8] c"\0AWe will watch your career with great interest.\00"
@str.54 = [29 x i8] c"This is your own masterpiece\00"
@str.55 = [77 x i8] c"Did you heard of the tragedy that reach the man? I think to be too is not. I\00"
@str.56 = [79 x i8] c"think that the hopeless situation elder also can't. That is a legend. Reaching\00"
@str.57 = [80 x i8] c"the man cloth space is the emperor. He is so strong and big he even can use the\00"
@str.58 = [80 x i8] c"original dint to create life. He is very deep to black influence understanding.\00"
@str.59 = [80 x i8] c"The black influence can the matter that many supermans. But other people thinks\00"
@str.60 = [80 x i8] c"that these are what can't attains. He become more and more strong and big. Lost\00"
@str.61 = [81 x i8] c"his power afterwards afterwards he died. In fact he teaches own the whole skills\00"
@str.62 = [78 x i8] c"all to disciple. Then his land killed him to let him going to bed. Satirizing\00"
@str.63 = [73 x i8] c"the meaning is he can let other people, but is incapable for dint to the\00"
@str.64 = [9 x i8] c"oneself.\00"
@str.65 = [18 x i8] c"special options:\0A\00"
@str.66 = [46 x i8] c"-secret (/s or -s): does exactly what it says\00"
@str.67 = [35 x i8] c"-backstroke (/b or -b): same thing\00"
define i32 @main(i32 %0, i8** nocapture %1) {
%3 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([54 x i8], [54 x i8]* @str, i64 0, i64 0))
%4 = icmp sgt i32 %0, 1
br i1 %4, label %5, label %55
5: ; preds = %2
%6 = getelementptr inbounds i8*, i8** %1, i64 1
%7 = load i8*, i8** %6
%8 = tail call i32 @strcmp(i8* dereferenceable(1) %7, i8* dereferenceable(8) getelementptr inbounds ([8 x i8], [8 x i8]* @.str.1, i64 0, i64 0))
%9 = icmp eq i32 %8, 0
br i1 %9, label %22, label %10
10: ; preds = %5
%11 = tail call i32 @strcmp(i8* dereferenceable(1) %7, i8* dereferenceable(3) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0))
%12 = icmp eq i32 %11, 0
br i1 %12, label %22, label %13
13: ; preds = %10
%14 = tail call i32 @strcmp(i8* dereferenceable(1) %7, i8* dereferenceable(3) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.3, i64 0, i64 0))
%15 = icmp eq i32 %14, 0
br i1 %15, label %22, label %16
16: ; preds = %13
%17 = tail call i32 @strcmp(i8* dereferenceable(1) %7, i8* dereferenceable(3) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0))
%18 = icmp eq i32 %17, 0
br i1 %18, label %22, label %19
19: ; preds = %16
%20 = tail call i32 @strcmp(i8* dereferenceable(1) %7, i8* dereferenceable(3) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0))
%21 = icmp eq i32 %20, 0
br i1 %21, label %22, label %24
22: ; preds = %19, %16, %13, %10, %5
%23 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([29 x i8], [29 x i8]* @str.54, i64 0, i64 0))
br label %77
24: ; preds = %19
%25 = tail call i32 @strcmp(i8* dereferenceable(1) %7, i8* dereferenceable(12) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.7, i64 0, i64 0))
%26 = icmp eq i32 %25, 0
br i1 %26, label %39, label %27
27: ; preds = %24
%28 = tail call i32 @strcmp(i8* dereferenceable(1) %7, i8* dereferenceable(3) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.8, i64 0, i64 0))
%29 = icmp eq i32 %28, 0
br i1 %29, label %39, label %30
30: ; preds = %27
%31 = tail call i32 @strcmp(i8* dereferenceable(1) %7, i8* dereferenceable(3) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0))
%32 = icmp eq i32 %31, 0
br i1 %32, label %39, label %33
33: ; preds = %30
%34 = tail call i32 @strcmp(i8* dereferenceable(1) %7, i8* dereferenceable(3) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.10, i64 0, i64 0))
%35 = icmp eq i32 %34, 0
br i1 %35, label %39, label %36
36: ; preds = %33
%37 = tail call i32 @strcmp(i8* dereferenceable(1) %7, i8* dereferenceable(3) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.11, i64 0, i64 0))
%38 = icmp eq i32 %37, 0
br i1 %38, label %39, label %50
39: ; preds = %36, %33, %30, %27, %24
%40 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([77 x i8], [77 x i8]* @str.55, i64 0, i64 0))
%41 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.56, i64 0, i64 0))
%42 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([80 x i8], [80 x i8]* @str.57, i64 0, i64 0))
%43 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([80 x i8], [80 x i8]* @str.58, i64 0, i64 0))
%44 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([80 x i8], [80 x i8]* @str.59, i64 0, i64 0))
%45 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([80 x i8], [80 x i8]* @str.60, i64 0, i64 0))
%46 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([81 x i8], [81 x i8]* @str.61, i64 0, i64 0))
%47 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([78 x i8], [78 x i8]* @str.62, i64 0, i64 0))
%48 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([73 x i8], [73 x i8]* @str.63, i64 0, i64 0))
%49 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @str.64, i64 0, i64 0))
br label %77
50: ; preds = %36
%51 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([18 x i8], [18 x i8]* @str.65, i64 0, i64 0))
%52 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([46 x i8], [46 x i8]* @str.66, i64 0, i64 0))
%53 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([35 x i8], [35 x i8]* @str.67, i64 0, i64 0))
%54 = tail call i32 @putchar(i32 10)
br label %77
55: ; preds = %2
%56 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([58 x i8], [58 x i8]* @str.40, i64 0, i64 0))
%57 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([33 x i8], [33 x i8]* @str.41, i64 0, i64 0))
%58 = tail call signext i8 (...) @getchar()
%59 = and i8 %58, -33
switch i8 %59, label %70 [
i8 89, label %73
i8 78, label %60
i8 66, label %69
]
60: ; preds = %55
%61 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([78 x i8], [78 x i8]* @str.44, i64 0, i64 0))
%62 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([77 x i8], [77 x i8]* @str.45, i64 0, i64 0))
%63 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([77 x i8], [77 x i8]* @str.46, i64 0, i64 0))
%64 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([80 x i8], [80 x i8]* @str.47, i64 0, i64 0))
%65 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([79 x i8], [79 x i8]* @str.48, i64 0, i64 0))
%66 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([78 x i8], [78 x i8]* @str.49, i64 0, i64 0))
%67 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([80 x i8], [80 x i8]* @str.50, i64 0, i64 0))
%68 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([80 x i8], [80 x i8]* @str.51, i64 0, i64 0))
br label %73
69: ; preds = %55
br label %73
70: ; preds = %55
%71 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([17 x i8], [17 x i8]* @str.42, i64 0, i64 0))
%72 = tail call i32 @putchar(i32 10)
br label %77
73: ; preds = %55, %60, %69
%74 = phi i8* [ getelementptr inbounds ([58 x i8], [58 x i8]* @str.52, i64 0, i64 0), %60 ], [ getelementptr inbounds ([50 x i8], [50 x i8]* @str.43, i64 0, i64 0), %69 ], [ getelementptr inbounds ([48 x i8], [48 x i8]* @str.53, i64 0, i64 0), %55 ]
%75 = tail call i32 @puts(i8* dereferenceable(1) %74)
%76 = tail call i32 @putchar(i32 10)
br label %77
77: ; preds = %22, %50, %39, %70, %73
%78 = phi i32 [ 0, %73 ], [ 1, %70 ], [ 0, %39 ], [ 0, %50 ], [ 0, %22 ]
ret i32 %78
}