#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*/ breakApartArgs(char **, char *);
int /*<<< orphan*/ clearCommand(char **);
int /*<<< orphan*/ copyCommand(char **);
int /*<<< orphan*/ createCommand(char **);
int /*<<< orphan*/ deleteCommand(char **);
int /*<<< orphan*/ dirCommand(char **);
int /*<<< orphan*/ editCommand(char **);
int /*<<< orphan*/ executeCommand(char **);
int /*<<< orphan*/ executeForegroundCommand(char **);
int /*<<< orphan*/ helpCommand(char **);
int /*<<< orphan*/ interrupt(int, int /*<<< orphan*/, char *,
                             int /*<<< orphan*/, int /*<<< orphan*/);
int /*<<< orphan*/ killCommand(char **);
int /*<<< orphan*/ listProcessCommand(char **);
scalar_t__ match(char *, char *);
int /*<<< orphan*/ quitCommand(char **);
int /*<<< orphan*/ typeCommand(char **);
void matchCommand(char *line) {
  char *args[100];
  breakApartArgs(args, line);
  if (match(args[0], "type\0")) {
    typeCommand(args);
  } else if (match(args[0], "execute\0")) {
    executeCommand(args);
  } else if (match(args[0], "delete\0")) {
    deleteCommand(args);
  } else if (match(args[0], "copy\0")) {
    copyCommand(args);
  } else if (match(args[0], "dir\0")) {
    dirCommand(args);
  } else if (match(args[0], "create\0")) {
    createCommand(args);
  } else if (match(args[0], "kill\0")) {
    killCommand(args);
  } else if (match(args[0], "clear\0")) {
    clearCommand(args);
  } else if (match(args[0], "quit\0")) {
    quitCommand(args);
  } else if (match(args[0], "executeforeground\0")) {
    executeForegroundCommand(args);
  } else if (match(args[0], "edit\0")) {
    editCommand(args);
  } else if (match(args[0], "top\0")) {
    listProcessCommand(args);
  } else if (match(args[0], "help\0")) {
    helpCommand(args);
  } else {
    interrupt(0x21, 0, "Bad Command!\r\n", 0, 0);
  }
  return;
}


x86 assembly (clang, -O0):
<matchCommand>:
push   %rbp
mov    %rsp,%rbp
sub    $0x330,%rsp
mov    %rdi,-0x8(%rbp)
lea    -0x330(%rbp),%rdi
mov    -0x8(%rbp),%rsi
call   10f0 <breakApartArgs@plt>
mov    -0x330(%rbp),%rdi
lea    0xdd3(%rip),%rsi
call   10c0 <match@plt>
cmp    $0x0,%rax
je     124d <matchCommand+0x4d>
lea    -0x330(%rbp),%rdi
call   10b0 <typeCommand@plt>
jmp    14cb <matchCommand+0x2cb>
mov    -0x330(%rbp),%rdi
lea    0xdab(%rip),%rsi
call   10c0 <match@plt>
cmp    $0x0,%rax
je     127b <matchCommand+0x7b>
lea    -0x330(%rbp),%rdi
call   1050 <executeCommand@plt>
jmp    14c6 <matchCommand+0x2c6>
mov    -0x330(%rbp),%rdi
lea    0xdc8(%rip),%rsi
call   10c0 <match@plt>
cmp    $0x0,%rax
je     12a9 <matchCommand+0xa9>
lea    -0x330(%rbp),%rdi
call   10a0 <deleteCommand@plt>
jmp    14c1 <matchCommand+0x2c1>
mov    -0x330(%rbp),%rdi
lea    0xd58(%rip),%rsi
call   10c0 <match@plt>
cmp    $0x0,%rax
je     12d7 <matchCommand+0xd7>
lea    -0x330(%rbp),%rdi
call   1110 <copyCommand@plt>
jmp    14bc <matchCommand+0x2bc>
mov    -0x330(%rbp),%rdi
lea    0xd30(%rip),%rsi
call   10c0 <match@plt>
cmp    $0x0,%rax
je     1305 <matchCommand+0x105>
lea    -0x330(%rbp),%rdi
call   10e0 <dirCommand@plt>
jmp    14b7 <matchCommand+0x2b7>
mov    -0x330(%rbp),%rdi
lea    0xd46(%rip),%rsi
call   10c0 <match@plt>
cmp    $0x0,%rax
je     1333 <matchCommand+0x133>
lea    -0x330(%rbp),%rdi
call   1100 <createCommand@plt>
jmp    14b2 <matchCommand+0x2b2>
mov    -0x330(%rbp),%rdi
lea    0xcd9(%rip),%rsi
call   10c0 <match@plt>
cmp    $0x0,%rax
je     1361 <matchCommand+0x161>
lea    -0x330(%rbp),%rdi
call   1120 <killCommand@plt>
jmp    14ad <matchCommand+0x2ad>
mov    -0x330(%rbp),%rdi
lea    0xcb1(%rip),%rsi
call   10c0 <match@plt>
cmp    $0x0,%rax
je     138f <matchCommand+0x18f>
lea    -0x330(%rbp),%rdi
call   10d0 <clearCommand@plt>
jmp    14a8 <matchCommand+0x2a8>
mov    -0x330(%rbp),%rdi
lea    0xc8a(%rip),%rsi
call   10c0 <match@plt>
cmp    $0x0,%rax
je     13bd <matchCommand+0x1bd>
lea    -0x330(%rbp),%rdi
call   1040 <quitCommand@plt>
jmp    14a3 <matchCommand+0x2a3>
mov    -0x330(%rbp),%rdi
lea    0xc62(%rip),%rsi
call   10c0 <match@plt>
cmp    $0x0,%rax
je     13eb <matchCommand+0x1eb>
lea    -0x330(%rbp),%rdi
call   1080 <executeForegroundCommand@plt>
jmp    149e <matchCommand+0x29e>
mov    -0x330(%rbp),%rdi
lea    0xc47(%rip),%rsi
call   10c0 <match@plt>
cmp    $0x0,%rax
je     1419 <matchCommand+0x219>
lea    -0x330(%rbp),%rdi
call   1060 <editCommand@plt>
jmp    1499 <matchCommand+0x299>
mov    -0x330(%rbp),%rdi
lea    0xc1f(%rip),%rsi
call   10c0 <match@plt>
cmp    $0x0,%rax
je     1447 <matchCommand+0x247>
lea    -0x330(%rbp),%rdi
call   1070 <listProcessCommand@plt>
jmp    1494 <matchCommand+0x294>
mov    -0x330(%rbp),%rdi
lea    0xbf6(%rip),%rsi
call   10c0 <match@plt>
cmp    $0x0,%rax
je     1475 <matchCommand+0x275>
lea    -0x330(%rbp),%rdi
call   1030 <helpCommand@plt>
jmp    148f <matchCommand+0x28f>
mov    $0x21,%edi
xor    %r8d,%r8d
lea    0xbdd(%rip),%rdx
mov    %r8d,%esi
mov    %r8d,%ecx
call   1090 <interrupt@plt>
jmp    1494 <matchCommand+0x294>
jmp    1499 <matchCommand+0x299>
jmp    149e <matchCommand+0x29e>
jmp    14a3 <matchCommand+0x2a3>
jmp    14a8 <matchCommand+0x2a8>
jmp    14ad <matchCommand+0x2ad>
jmp    14b2 <matchCommand+0x2b2>
jmp    14b7 <matchCommand+0x2b7>
jmp    14bc <matchCommand+0x2bc>
jmp    14c1 <matchCommand+0x2c1>
jmp    14c6 <matchCommand+0x2c6>
jmp    14cb <matchCommand+0x2cb>
add    $0x330,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<matchCommand>:
sub    $0x328,%rsp
mov    %rdi,%rsi
mov    %rsp,%rdi
call   10f0 <breakApartArgs@plt>
mov    (%rsp),%rdi
lea    0xde3(%rip),%rsi
call   10c0 <match@plt>
test   %rax,%rax
je     1237 <matchCommand+0x37>
mov    %rsp,%rdi
call   10b0 <typeCommand@plt>
add    $0x328,%rsp
ret
mov    (%rsp),%rdi
lea    0xdc4(%rip),%rsi
call   10c0 <match@plt>
test   %rax,%rax
je     125c <matchCommand+0x5c>
mov    %rsp,%rdi
call   1050 <executeCommand@plt>
add    $0x328,%rsp
ret
mov    (%rsp),%rdi
lea    0xdea(%rip),%rsi
call   10c0 <match@plt>
test   %rax,%rax
je     1281 <matchCommand+0x81>
mov    %rsp,%rdi
call   10a0 <deleteCommand@plt>
add    $0x328,%rsp
ret
mov    (%rsp),%rdi
lea    0xd83(%rip),%rsi
call   10c0 <match@plt>
test   %rax,%rax
je     12a6 <matchCommand+0xa6>
mov    %rsp,%rdi
call   1110 <copyCommand@plt>
add    $0x328,%rsp
ret
mov    (%rsp),%rdi
lea    0xd64(%rip),%rsi
call   10c0 <match@plt>
test   %rax,%rax
je     12cb <matchCommand+0xcb>
mov    %rsp,%rdi
call   10e0 <dirCommand@plt>
add    $0x328,%rsp
ret
mov    (%rsp),%rdi
lea    0xd83(%rip),%rsi
call   10c0 <match@plt>
test   %rax,%rax
je     12f0 <matchCommand+0xf0>
mov    %rsp,%rdi
call   1100 <createCommand@plt>
add    $0x328,%rsp
ret
mov    (%rsp),%rdi
lea    0xd1f(%rip),%rsi
call   10c0 <match@plt>
test   %rax,%rax
je     1315 <matchCommand+0x115>
mov    %rsp,%rdi
call   1120 <killCommand@plt>
add    $0x328,%rsp
ret
mov    (%rsp),%rdi
lea    0xd00(%rip),%rsi
call   10c0 <match@plt>
test   %rax,%rax
je     133a <matchCommand+0x13a>
mov    %rsp,%rdi
call   10d0 <clearCommand@plt>
add    $0x328,%rsp
ret
mov    (%rsp),%rdi
lea    0xce2(%rip),%rsi
call   10c0 <match@plt>
test   %rax,%rax
je     135f <matchCommand+0x15f>
mov    %rsp,%rdi
call   1040 <quitCommand@plt>
add    $0x328,%rsp
ret
mov    (%rsp),%rdi
lea    0xcc3(%rip),%rsi
call   10c0 <match@plt>
test   %rax,%rax
je     1384 <matchCommand+0x184>
mov    %rsp,%rdi
call   1080 <executeForegroundCommand@plt>
add    $0x328,%rsp
ret
mov    (%rsp),%rdi
lea    0xcb1(%rip),%rsi
call   10c0 <match@plt>
test   %rax,%rax
je     13a9 <matchCommand+0x1a9>
mov    %rsp,%rdi
call   1060 <editCommand@plt>
add    $0x328,%rsp
ret
mov    (%rsp),%rdi
lea    0xc92(%rip),%rsi
call   10c0 <match@plt>
test   %rax,%rax
je     13ce <matchCommand+0x1ce>
mov    %rsp,%rdi
call   1070 <listProcessCommand@plt>
add    $0x328,%rsp
ret
mov    (%rsp),%rdi
lea    0xc72(%rip),%rsi
call   10c0 <match@plt>
test   %rax,%rax
je     13f3 <matchCommand+0x1f3>
mov    %rsp,%rdi
call   1030 <helpCommand@plt>
add    $0x328,%rsp
ret
lea    0xc67(%rip),%rdx
mov    $0x21,%edi
xor    %esi,%esi
xor    %ecx,%ecx
xor    %r8d,%r8d
call   1090 <interrupt@plt>
add    $0x328,%rsp
ret

LLVM IR (-O0):
@.str = [6 x i8] c"type\00\00"
@.str.1 = [9 x i8] c"execute\00\00"
@.str.2 = [8 x i8] c"delete\00\00"
@.str.3 = [6 x i8] c"copy\00\00"
@.str.4 = [5 x i8] c"dir\00\00"
@.str.5 = [8 x i8] c"create\00\00"
@.str.6 = [6 x i8] c"kill\00\00"
@.str.7 = [7 x i8] c"clear\00\00"
@.str.8 = [6 x i8] c"quit\00\00"
@.str.9 = [19 x i8] c"executeforeground\00\00"
@.str.10 = [6 x i8] c"edit\00\00"
@.str.11 = [5 x i8] c"top\00\00"
@.str.12 = [6 x i8] c"help\00\00"
@.str.13 = [15 x i8] c"Bad Command!\0D\0A\00"
define void @matchCommand(i8* %0) {
%2 = alloca i8*
%3 = alloca [100 x i8*]
store i8* %0, i8** %2
%4 = getelementptr inbounds [100 x i8*], [100 x i8*]* %3, i64 0, i64 0
%5 = load i8*, i8** %2
%6 = call i32 @breakApartArgs(i8** %4, i8* %5)
%7 = getelementptr inbounds [100 x i8*], [100 x i8*]* %3, i64 0, i64 0
%8 = load i8*, i8** %7
%9 = call i64 @match(i8* %8, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str, i64 0, i64 0))
%10 = icmp ne i64 %9, 0
br i1 %10, label %11, label %14
11: ; preds = %1
%12 = getelementptr inbounds [100 x i8*], [100 x i8*]* %3, i64 0, i64 0
%13 = call i32 @typeCommand(i8** %12)
br label %124
14: ; preds = %1
%15 = getelementptr inbounds [100 x i8*], [100 x i8*]* %3, i64 0, i64 0
%16 = load i8*, i8** %15
%17 = call i64 @match(i8* %16, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.1, i64 0, i64 0))
%18 = icmp ne i64 %17, 0
br i1 %18, label %19, label %22
19: ; preds = %14
%20 = getelementptr inbounds [100 x i8*], [100 x i8*]* %3, i64 0, i64 0
%21 = call i32 @executeCommand(i8** %20)
br label %123
22: ; preds = %14
%23 = getelementptr inbounds [100 x i8*], [100 x i8*]* %3, i64 0, i64 0
%24 = load i8*, i8** %23
%25 = call i64 @match(i8* %24, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.2, i64 0, i64 0))
%26 = icmp ne i64 %25, 0
br i1 %26, label %27, label %30
27: ; preds = %22
%28 = getelementptr inbounds [100 x i8*], [100 x i8*]* %3, i64 0, i64 0
%29 = call i32 @deleteCommand(i8** %28)
br label %122
30: ; preds = %22
%31 = getelementptr inbounds [100 x i8*], [100 x i8*]* %3, i64 0, i64 0
%32 = load i8*, i8** %31
%33 = call i64 @match(i8* %32, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.3, i64 0, i64 0))
%34 = icmp ne i64 %33, 0
br i1 %34, label %35, label %38
35: ; preds = %30
%36 = getelementptr inbounds [100 x i8*], [100 x i8*]* %3, i64 0, i64 0
%37 = call i32 @copyCommand(i8** %36)
br label %121
38: ; preds = %30
%39 = getelementptr inbounds [100 x i8*], [100 x i8*]* %3, i64 0, i64 0
%40 = load i8*, i8** %39
%41 = call i64 @match(i8* %40, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.4, i64 0, i64 0))
%42 = icmp ne i64 %41, 0
br i1 %42, label %43, label %46
43: ; preds = %38
%44 = getelementptr inbounds [100 x i8*], [100 x i8*]* %3, i64 0, i64 0
%45 = call i32 @dirCommand(i8** %44)
br label %120
46: ; preds = %38
%47 = getelementptr inbounds [100 x i8*], [100 x i8*]* %3, i64 0, i64 0
%48 = load i8*, i8** %47
%49 = call i64 @match(i8* %48, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.5, i64 0, i64 0))
%50 = icmp ne i64 %49, 0
br i1 %50, label %51, label %54
51: ; preds = %46
%52 = getelementptr inbounds [100 x i8*], [100 x i8*]* %3, i64 0, i64 0
%53 = call i32 @createCommand(i8** %52)
br label %119
54: ; preds = %46
%55 = getelementptr inbounds [100 x i8*], [100 x i8*]* %3, i64 0, i64 0
%56 = load i8*, i8** %55
%57 = call i64 @match(i8* %56, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.6, i64 0, i64 0))
%58 = icmp ne i64 %57, 0
br i1 %58, label %59, label %62
59: ; preds = %54
%60 = getelementptr inbounds [100 x i8*], [100 x i8*]* %3, i64 0, i64 0
%61 = call i32 @killCommand(i8** %60)
br label %118
62: ; preds = %54
%63 = getelementptr inbounds [100 x i8*], [100 x i8*]* %3, i64 0, i64 0
%64 = load i8*, i8** %63
%65 = call i64 @match(i8* %64, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.7, i64 0, i64 0))
%66 = icmp ne i64 %65, 0
br i1 %66, label %67, label %70
67: ; preds = %62
%68 = getelementptr inbounds [100 x i8*], [100 x i8*]* %3, i64 0, i64 0
%69 = call i32 @clearCommand(i8** %68)
br label %117
70: ; preds = %62
%71 = getelementptr inbounds [100 x i8*], [100 x i8*]* %3, i64 0, i64 0
%72 = load i8*, i8** %71
%73 = call i64 @match(i8* %72, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.8, i64 0, i64 0))
%74 = icmp ne i64 %73, 0
br i1 %74, label %75, label %78
75: ; preds = %70
%76 = getelementptr inbounds [100 x i8*], [100 x i8*]* %3, i64 0, i64 0
%77 = call i32 @quitCommand(i8** %76)
br label %116
78: ; preds = %70
%79 = getelementptr inbounds [100 x i8*], [100 x i8*]* %3, i64 0, i64 0
%80 = load i8*, i8** %79
%81 = call i64 @match(i8* %80, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.9, i64 0, i64 0))
%82 = icmp ne i64 %81, 0
br i1 %82, label %83, label %86
83: ; preds = %78
%84 = getelementptr inbounds [100 x i8*], [100 x i8*]* %3, i64 0, i64 0
%85 = call i32 @executeForegroundCommand(i8** %84)
br label %115
86: ; preds = %78
%87 = getelementptr inbounds [100 x i8*], [100 x i8*]* %3, i64 0, i64 0
%88 = load i8*, i8** %87
%89 = call i64 @match(i8* %88, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.10, i64 0, i64 0))
%90 = icmp ne i64 %89, 0
br i1 %90, label %91, label %94
91: ; preds = %86
%92 = getelementptr inbounds [100 x i8*], [100 x i8*]* %3, i64 0, i64 0
%93 = call i32 @editCommand(i8** %92)
br label %114
94: ; preds = %86
%95 = getelementptr inbounds [100 x i8*], [100 x i8*]* %3, i64 0, i64 0
%96 = load i8*, i8** %95
%97 = call i64 @match(i8* %96, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.11, i64 0, i64 0))
%98 = icmp ne i64 %97, 0
br i1 %98, label %99, label %102
99: ; preds = %94
%100 = getelementptr inbounds [100 x i8*], [100 x i8*]* %3, i64 0, i64 0
%101 = call i32 @listProcessCommand(i8** %100)
br label %113
102: ; preds = %94
%103 = getelementptr inbounds [100 x i8*], [100 x i8*]* %3, i64 0, i64 0
%104 = load i8*, i8** %103
%105 = call i64 @match(i8* %104, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.12, i64 0, i64 0))
%106 = icmp ne i64 %105, 0
br i1 %106, label %107, label %110
107: ; preds = %102
%108 = getelementptr inbounds [100 x i8*], [100 x i8*]* %3, i64 0, i64 0
%109 = call i32 @helpCommand(i8** %108)
br label %112
110: ; preds = %102
%111 = call i32 @interrupt(i32 33, i32 0, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.13, i64 0, i64 0), i32 0, i32 0)
br label %112
112: ; preds = %110, %107
br label %113
113: ; preds = %112, %99
br label %114
114: ; preds = %113, %91
br label %115
115: ; preds = %114, %83
br label %116
116: ; preds = %115, %75
br label %117
117: ; preds = %116, %67
br label %118
118: ; preds = %117, %59
br label %119
119: ; preds = %118, %51
br label %120
120: ; preds = %119, %43
br label %121
121: ; preds = %120, %35
br label %122
122: ; preds = %121, %27
br label %123
123: ; preds = %122, %19
br label %124
124: ; preds = %123, %11
ret void
}

LLVM IR (-O2):
@.str = [6 x i8] c"type\00\00"
@.str.1 = [9 x i8] c"execute\00\00"
@.str.2 = [8 x i8] c"delete\00\00"
@.str.3 = [6 x i8] c"copy\00\00"
@.str.4 = [5 x i8] c"dir\00\00"
@.str.5 = [8 x i8] c"create\00\00"
@.str.6 = [6 x i8] c"kill\00\00"
@.str.7 = [7 x i8] c"clear\00\00"
@.str.8 = [6 x i8] c"quit\00\00"
@.str.9 = [19 x i8] c"executeforeground\00\00"
@.str.10 = [6 x i8] c"edit\00\00"
@.str.11 = [5 x i8] c"top\00\00"
@.str.12 = [6 x i8] c"help\00\00"
@.str.13 = [15 x i8] c"Bad Command!\0D\0A\00"
define void @matchCommand(i8* %0) {
%2 = alloca [100 x i8*]
%3 = bitcast [100 x i8*]* %2 to i8*
%4 = getelementptr inbounds [100 x i8*], [100 x i8*]* %2, i64 0, i64 0
%5 = call i32 @breakApartArgs(i8** %4, i8* %0)
%6 = load i8*, i8** %4
%7 = call i64 @match(i8* %6, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str, i64 0, i64 0))
%8 = icmp eq i64 %7, 0
br i1 %8, label %11, label %9
9: ; preds = %1
%10 = call i32 @typeCommand(i8** %4)
br label %85
11: ; preds = %1
%12 = load i8*, i8** %4
%13 = call i64 @match(i8* %12, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.1, i64 0, i64 0))
%14 = icmp eq i64 %13, 0
br i1 %14, label %17, label %15
15: ; preds = %11
%16 = call i32 @executeCommand(i8** %4)
br label %85
17: ; preds = %11
%18 = load i8*, i8** %4
%19 = call i64 @match(i8* %18, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.2, i64 0, i64 0))
%20 = icmp eq i64 %19, 0
br i1 %20, label %23, label %21
21: ; preds = %17
%22 = call i32 @deleteCommand(i8** %4)
br label %85
23: ; preds = %17
%24 = load i8*, i8** %4
%25 = call i64 @match(i8* %24, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.3, i64 0, i64 0))
%26 = icmp eq i64 %25, 0
br i1 %26, label %29, label %27
27: ; preds = %23
%28 = call i32 @copyCommand(i8** %4)
br label %85
29: ; preds = %23
%30 = load i8*, i8** %4
%31 = call i64 @match(i8* %30, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.4, i64 0, i64 0))
%32 = icmp eq i64 %31, 0
br i1 %32, label %35, label %33
33: ; preds = %29
%34 = call i32 @dirCommand(i8** %4)
br label %85
35: ; preds = %29
%36 = load i8*, i8** %4
%37 = call i64 @match(i8* %36, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.5, i64 0, i64 0))
%38 = icmp eq i64 %37, 0
br i1 %38, label %41, label %39
39: ; preds = %35
%40 = call i32 @createCommand(i8** %4)
br label %85
41: ; preds = %35
%42 = load i8*, i8** %4
%43 = call i64 @match(i8* %42, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.6, i64 0, i64 0))
%44 = icmp eq i64 %43, 0
br i1 %44, label %47, label %45
45: ; preds = %41
%46 = call i32 @killCommand(i8** %4)
br label %85
47: ; preds = %41
%48 = load i8*, i8** %4
%49 = call i64 @match(i8* %48, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.7, i64 0, i64 0))
%50 = icmp eq i64 %49, 0
br i1 %50, label %53, label %51
51: ; preds = %47
%52 = call i32 @clearCommand(i8** %4)
br label %85
53: ; preds = %47
%54 = load i8*, i8** %4
%55 = call i64 @match(i8* %54, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.8, i64 0, i64 0))
%56 = icmp eq i64 %55, 0
br i1 %56, label %59, label %57
57: ; preds = %53
%58 = call i32 @quitCommand(i8** %4)
br label %85
59: ; preds = %53
%60 = load i8*, i8** %4
%61 = call i64 @match(i8* %60, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.9, i64 0, i64 0))
%62 = icmp eq i64 %61, 0
br i1 %62, label %65, label %63
63: ; preds = %59
%64 = call i32 @executeForegroundCommand(i8** %4)
br label %85
65: ; preds = %59
%66 = load i8*, i8** %4
%67 = call i64 @match(i8* %66, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.10, i64 0, i64 0))
%68 = icmp eq i64 %67, 0
br i1 %68, label %71, label %69
69: ; preds = %65
%70 = call i32 @editCommand(i8** %4)
br label %85
71: ; preds = %65
%72 = load i8*, i8** %4
%73 = call i64 @match(i8* %72, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.11, i64 0, i64 0))
%74 = icmp eq i64 %73, 0
br i1 %74, label %77, label %75
75: ; preds = %71
%76 = call i32 @listProcessCommand(i8** %4)
br label %85
77: ; preds = %71
%78 = load i8*, i8** %4
%79 = call i64 @match(i8* %78, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.12, i64 0, i64 0))
%80 = icmp eq i64 %79, 0
br i1 %80, label %83, label %81
81: ; preds = %77
%82 = call i32 @helpCommand(i8** %4)
br label %85
83: ; preds = %77
%84 = call i32 @interrupt(i32 33, i32 0, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.13, i64 0, i64 0), i32 0, i32 0)
br label %85
85: ; preds = %15, %27, %39, %51, %63, %75, %83, %81, %69, %57, %45, %33, %21, %9
ret void
}