#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 *);
int /*<<< orphan*/ strcmp(char *, char *);
int processArguments(int argc, char *argv[]) {
  if (argc > 1) {
    if (!strcmp(argv[1], "-h") || !strcmp(argv[1], "--help")) {
      printf("Use the mouse to change the state of a cell.\nUse the 'n' key to "
             "compute the next generation.\nUse the 'c' key to reset the state "
             "of all cells.\nUse the 'e' key to get back to the main menu.\n");
      return 0;
    }
  } else {
    printf("Use the -h or --help argument to print the key bindings.\n");
  }
  return 1;
}


x86 assembly (clang, -O0):
<processArguments>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %edi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
cmpl   $0x1,-0x8(%rbp)
jle    1190 <processArguments+0x70>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xeb8(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
je     1173 <processArguments+0x53>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xe9e(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%eax
jne    118b <processArguments+0x6b>
lea    0xe90(%rip),%rdi
call   1030 <printf@plt>
movl   $0x0,-0x4(%rbp)
jmp    11a3 <processArguments+0x83>
jmp    119c <processArguments+0x7c>
lea    0xf30(%rip),%rdi
call   1030 <printf@plt>
movl   $0x1,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<processArguments>:
push   %rbp
push   %r14
push   %rbx
cmp    $0x2,%edi
jl     1165 <processArguments+0x45>
mov    0x8(%rsi),%r14
lea    0xecc(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
xor    %ebp,%ebp
lea    0xefe(%rip),%rbx
test   %eax,%eax
je     1171 <processArguments+0x51>
lea    0xeb3(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
mov    %eax,%ecx
mov    $0x1,%eax
test   %ecx,%ecx
jne    117b <processArguments+0x5b>
jmp    1171 <processArguments+0x51>
mov    $0x1,%ebp
lea    0xe99(%rip),%rbx
mov    %rbx,%rdi
call   1030 <puts@plt>
mov    %ebp,%eax
pop    %rbx
pop    %r14
pop    %rbp
ret

LLVM IR (-O0):
@.str = [3 x i8] c"-h\00"
@.str.1 = [7 x i8] c"--help\00"
@.str.2 = [189 x i8] c"Use the mouse to change the state of a cell.\0AUse the 'n' key to compute the next generation.\0AUse the 'c' key to reset the state of all cells.\0AUse the 'e' key to get back to the main menu.\0A\00"
@.str.3 = [58 x i8] c"Use the -h or --help argument to print the key bindings.\0A\00"
define i32 @processArguments(i32 %0, i8** %1) {
%3 = alloca i32
%4 = alloca i32
%5 = alloca i8**
store i32 %0, i32* %4
store i8** %1, i8*** %5
%6 = load i32, i32* %4
%7 = icmp sgt i32 %6, 1
br i1 %7, label %8, label %23
8: ; preds = %2
%9 = load i8**, i8*** %5
%10 = getelementptr inbounds i8*, i8** %9, i64 1
%11 = load i8*, i8** %10
%12 = call i32 @strcmp(i8* %11, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0))
%13 = icmp ne i32 %12, 0
br i1 %13, label %14, label %20
14: ; preds = %8
%15 = load i8**, i8*** %5
%16 = getelementptr inbounds i8*, i8** %15, i64 1
%17 = load i8*, i8** %16
%18 = call i32 @strcmp(i8* %17, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.1, i64 0, i64 0))
%19 = icmp ne i32 %18, 0
br i1 %19, label %22, label %20
20: ; preds = %14, %8
%21 = call i32 @printf(i8* getelementptr inbounds ([189 x i8], [189 x i8]* @.str.2, i64 0, i64 0))
store i32 0, i32* %3
br label %26
22: ; preds = %14
br label %25
23: ; preds = %2
%24 = call i32 @printf(i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.3, i64 0, i64 0))
br label %25
25: ; preds = %23, %22
store i32 1, i32* %3
br label %26
26: ; preds = %25, %20
%27 = load i32, i32* %3
ret i32 %27
}

LLVM IR (-O2):
@.str = [3 x i8] c"-h\00"
@.str.1 = [7 x i8] c"--help\00"
@str = [57 x i8] c"Use the -h or --help argument to print the key bindings.\00"
@str.4 = [188 x i8] c"Use the mouse to change the state of a cell.\0AUse the 'n' key to compute the next generation.\0AUse the 'c' key to reset the state of all cells.\0AUse the 'e' key to get back to the main menu.\00"
define i32 @processArguments(i32 %0, i8** nocapture %1) {
%3 = icmp sgt i32 %0, 1
br i1 %3, label %4, label %12
4: ; preds = %2
%5 = getelementptr inbounds i8*, i8** %1, i64 1
%6 = load i8*, i8** %5
%7 = tail call i32 @strcmp(i8* dereferenceable(1) %6, i8* dereferenceable(3) getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0))
%8 = icmp eq i32 %7, 0
br i1 %8, label %12, label %9
9: ; preds = %4
%10 = tail call i32 @strcmp(i8* dereferenceable(1) %6, i8* dereferenceable(7) getelementptr inbounds ([7 x i8], [7 x i8]* @.str.1, i64 0, i64 0))
%11 = icmp eq i32 %10, 0
br i1 %11, label %12, label %16
12: ; preds = %2, %4, %9
%13 = phi i8* [ getelementptr inbounds ([188 x i8], [188 x i8]* @str.4, i64 0, i64 0), %9 ], [ getelementptr inbounds ([188 x i8], [188 x i8]* @str.4, i64 0, i64 0), %4 ], [ getelementptr inbounds ([57 x i8], [57 x i8]* @str, i64 0, i64 0), %2 ]
%14 = phi i32 [ 0, %9 ], [ 0, %4 ], [ 1, %2 ]
%15 = tail call i32 @puts(i8* dereferenceable(1) %13)
br label %16
16: ; preds = %12, %9
%17 = phi i32 [ 1, %9 ], [ %14, %12 ]
ret i32 %17
}