#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*/ dump_registers(char *);
int /*<<< orphan*/ enable_tvout(int);
int /*<<< orphan*/ get_settings();
int /*<<< orphan*/ help(int);
int /*<<< orphan*/ inc_dec_cmd(int, char *);
int /*<<< orphan*/ inc_dec_ffolat(int);
int /*<<< orphan*/ printf(char *, char *);
int /*<<< orphan*/ reset_defaults();
scalar_t__ strcmp(char *, char *);
int /*<<< orphan*/ tv_standard(char *);
int /*<<< orphan*/ vga_mode(char *);
int /*<<< orphan*/ write_register(char *);
int /*<<< orphan*/ xy_cmd(int, char *);
void execute_cmd(char *in) {
  if (*in == 'b')
    inc_dec_cmd(2, in + 1);
  else if (*in == 'c')
    inc_dec_cmd(3, in + 1);
  else if (strcmp(in, "d") == 0)
    enable_tvout(0);
  else if (strcmp(in, "def") == 0)
    reset_defaults();
  else if (strcmp(in, "e") == 0)
    enable_tvout(1);
  else if (*in == 'f')
    inc_dec_cmd(1, in + 1);
  else if (strcmp(in, "g") == 0)
    get_settings();
  else if (*in == 'h')
    xy_cmd(3, in + 1);
  else if (*in == 'l')
    xy_cmd(0, in + 1);
  else if (*in == 'm')
    vga_mode(in + 1);
  else if (*in == 'o')
    inc_dec_cmd(4, in + 1);
  else if (*in == 'r')
    dump_registers(in + 1);
  else if (*in == 'R')
    write_register(in + 1);
  else if (*in == 'n')
    inc_dec_cmd(0, in + 1);
  else if (*in == 's')
    tv_standard(in + 1);
  else if (*in == 't')
    xy_cmd(1, in + 1);
  else if (*in == 'w')
    xy_cmd(2, in + 1);
  else if (strcmp(in, "?") == 0)
    help(0);
  else if (strcmp(in, "??") == 0)
    help(1);
  else if (strcmp(in, ">") == 0)
    inc_dec_ffolat(1);
  else if (strcmp(in, "<") == 0)
    inc_dec_ffolat(-1);
  else
    printf("unknown command %s\n", in);
}


x86 assembly (clang, -O0):
<execute_cmd>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %rdi,-0x8(%rbp)
mov    -0x8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x62,%eax
jne    1203 <execute_cmd+0x33>
mov    -0x8(%rbp),%rsi
add    $0x1,%rsi
mov    $0x2,%edi
call   1040 <inc_dec_cmd@plt>
jmp    156d <execute_cmd+0x39d>
mov    -0x8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x63,%eax
jne    122a <execute_cmd+0x5a>
mov    -0x8(%rbp),%rsi
add    $0x1,%rsi
mov    $0x3,%edi
call   1040 <inc_dec_cmd@plt>
jmp    1568 <execute_cmd+0x398>
mov    -0x8(%rbp),%rdi
lea    0xdcb(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x0,%rax
jne    1250 <execute_cmd+0x80>
xor    %edi,%edi
call   1030 <enable_tvout@plt>
jmp    1563 <execute_cmd+0x393>
mov    -0x8(%rbp),%rdi
lea    0xda7(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x0,%rax
jne    1276 <execute_cmd+0xa6>
mov    $0x0,%al
call   10d0 <reset_defaults@plt>
jmp    155e <execute_cmd+0x38e>
mov    -0x8(%rbp),%rdi
lea    0xd85(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x0,%rax
jne    129f <execute_cmd+0xcf>
mov    $0x1,%edi
call   1030 <enable_tvout@plt>
jmp    1559 <execute_cmd+0x389>
mov    -0x8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x66,%eax
jne    12c6 <execute_cmd+0xf6>
mov    -0x8(%rbp),%rsi
add    $0x1,%rsi
mov    $0x1,%edi
call   1040 <inc_dec_cmd@plt>
jmp    1554 <execute_cmd+0x384>
mov    -0x8(%rbp),%rdi
lea    0xd37(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x0,%rax
jne    12ec <execute_cmd+0x11c>
mov    $0x0,%al
call   1080 <get_settings@plt>
jmp    154f <execute_cmd+0x37f>
mov    -0x8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x68,%eax
jne    1313 <execute_cmd+0x143>
mov    -0x8(%rbp),%rsi
add    $0x1,%rsi
mov    $0x3,%edi
call   10a0 <xy_cmd@plt>
jmp    154a <execute_cmd+0x37a>
mov    -0x8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x6c,%eax
jne    1337 <execute_cmd+0x167>
mov    -0x8(%rbp),%rsi
add    $0x1,%rsi
xor    %edi,%edi
call   10a0 <xy_cmd@plt>
jmp    1545 <execute_cmd+0x375>
mov    -0x8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x6d,%eax
jne    1359 <execute_cmd+0x189>
mov    -0x8(%rbp),%rdi
add    $0x1,%rdi
call   10f0 <vga_mode@plt>
jmp    1540 <execute_cmd+0x370>
mov    -0x8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x6f,%eax
jne    1380 <execute_cmd+0x1b0>
mov    -0x8(%rbp),%rsi
add    $0x1,%rsi
mov    $0x4,%edi
call   1040 <inc_dec_cmd@plt>
jmp    153b <execute_cmd+0x36b>
mov    -0x8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x72,%eax
jne    13a2 <execute_cmd+0x1d2>
mov    -0x8(%rbp),%rdi
add    $0x1,%rdi
call   10b0 <dump_registers@plt>
jmp    1536 <execute_cmd+0x366>
mov    -0x8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x52,%eax
jne    13c4 <execute_cmd+0x1f4>
mov    -0x8(%rbp),%rdi
add    $0x1,%rdi
call   10c0 <write_register@plt>
jmp    1531 <execute_cmd+0x361>
mov    -0x8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x6e,%eax
jne    13e8 <execute_cmd+0x218>
mov    -0x8(%rbp),%rsi
add    $0x1,%rsi
xor    %edi,%edi
call   1040 <inc_dec_cmd@plt>
jmp    152c <execute_cmd+0x35c>
mov    -0x8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x73,%eax
jne    140a <execute_cmd+0x23a>
mov    -0x8(%rbp),%rdi
add    $0x1,%rdi
call   1060 <tv_standard@plt>
jmp    1527 <execute_cmd+0x357>
mov    -0x8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x74,%eax
jne    1431 <execute_cmd+0x261>
mov    -0x8(%rbp),%rsi
add    $0x1,%rsi
mov    $0x1,%edi
call   10a0 <xy_cmd@plt>
jmp    1522 <execute_cmd+0x352>
mov    -0x8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x77,%eax
jne    1458 <execute_cmd+0x288>
mov    -0x8(%rbp),%rsi
add    $0x1,%rsi
mov    $0x2,%edi
call   10a0 <xy_cmd@plt>
jmp    151d <execute_cmd+0x34d>
mov    -0x8(%rbp),%rdi
lea    0xba8(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x0,%rax
jne    147e <execute_cmd+0x2ae>
xor    %edi,%edi
call   10e0 <help@plt>
jmp    1518 <execute_cmd+0x348>
mov    -0x8(%rbp),%rdi
lea    0xb81(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x0,%rax
jne    14a7 <execute_cmd+0x2d7>
mov    $0x1,%edi
call   10e0 <help@plt>
jmp    1513 <execute_cmd+0x343>
mov    -0x8(%rbp),%rdi
lea    0xb5b(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x0,%rax
jne    14d0 <execute_cmd+0x300>
mov    $0x1,%edi
call   1050 <inc_dec_ffolat@plt>
jmp    150e <execute_cmd+0x33e>
mov    -0x8(%rbp),%rdi
lea    0xb34(%rip),%rsi
call   1090 <strcmp@plt>
cmp    $0x0,%rax
jne    14f9 <execute_cmd+0x329>
mov    $0xffffffff,%edi
call   1050 <inc_dec_ffolat@plt>
jmp    1509 <execute_cmd+0x339>
mov    -0x8(%rbp),%rsi
lea    0xb0d(%rip),%rdi
call   1070 <printf@plt>
jmp    150e <execute_cmd+0x33e>
jmp    1513 <execute_cmd+0x343>
jmp    1518 <execute_cmd+0x348>
jmp    151d <execute_cmd+0x34d>
jmp    1522 <execute_cmd+0x352>
jmp    1527 <execute_cmd+0x357>
jmp    152c <execute_cmd+0x35c>
jmp    1531 <execute_cmd+0x361>
jmp    1536 <execute_cmd+0x366>
jmp    153b <execute_cmd+0x36b>
jmp    1540 <execute_cmd+0x370>
jmp    1545 <execute_cmd+0x375>
jmp    154a <execute_cmd+0x37a>
jmp    154f <execute_cmd+0x37f>
jmp    1554 <execute_cmd+0x384>
jmp    1559 <execute_cmd+0x389>
jmp    155e <execute_cmd+0x38e>
jmp    1563 <execute_cmd+0x393>
jmp    1568 <execute_cmd+0x398>
jmp    156d <execute_cmd+0x39d>
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<execute_cmd>:
push   %rbx
mov    %rdi,%rbx
mov    (%rdi),%al
cmp    $0x63,%al
je     11e9 <execute_cmd+0x19>
cmp    $0x62,%al
jne    11fb <execute_cmd+0x2b>
add    $0x1,%rbx
mov    $0x2,%edi
jmp    11f2 <execute_cmd+0x22>
add    $0x1,%rbx
mov    $0x3,%edi
mov    %rbx,%rsi
pop    %rbx
jmp    1040 <inc_dec_cmd@plt>
lea    0xe96(%rip),%rsi
mov    %rbx,%rdi
call   1090 <strcmp@plt>
test   %rax,%rax
je     1247 <execute_cmd+0x77>
lea    0xe84(%rip),%rsi
mov    %rbx,%rdi
call   1090 <strcmp@plt>
test   %rax,%rax
je     124f <execute_cmd+0x7f>
lea    0xe74(%rip),%rsi
mov    %rbx,%rdi
call   1090 <strcmp@plt>
test   %rax,%rax
je     1257 <execute_cmd+0x87>
cmpb   $0x66,(%rbx)
jne    1262 <execute_cmd+0x92>
add    $0x1,%rbx
mov    $0x1,%edi
jmp    11f2 <execute_cmd+0x22>
xor    %edi,%edi
pop    %rbx
jmp    1030 <enable_tvout@plt>
xor    %eax,%eax
pop    %rbx
jmp    10d0 <reset_defaults@plt>
mov    $0x1,%edi
pop    %rbx
jmp    1030 <enable_tvout@plt>
lea    0xe37(%rip),%rsi
mov    %rbx,%rdi
call   1090 <strcmp@plt>
test   %rax,%rax
je     129e <execute_cmd+0xce>
mov    (%rbx),%al
add    $0xae,%al
cmp    $0x25,%al
ja     12a6 <execute_cmd+0xd6>
movzbl %al,%eax
lea    0xd78(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
add    $0x1,%rbx
mov    %rbx,%rdi
pop    %rbx
jmp    10c0 <write_register@plt>
xor    %eax,%eax
pop    %rbx
jmp    1080 <get_settings@plt>
lea    0xdf6(%rip),%rsi
mov    %rbx,%rdi
call   1090 <strcmp@plt>
test   %rax,%rax
je     1386 <execute_cmd+0x1b6>
lea    0xddd(%rip),%rsi
mov    %rbx,%rdi
call   1090 <strcmp@plt>
test   %rax,%rax
je     138e <execute_cmd+0x1be>
lea    0xdc8(%rip),%rsi
mov    %rbx,%rdi
call   1090 <strcmp@plt>
test   %rax,%rax
je     1399 <execute_cmd+0x1c9>
lea    0xdb2(%rip),%rsi
mov    %rbx,%rdi
call   1090 <strcmp@plt>
test   %rax,%rax
je     13a4 <execute_cmd+0x1d4>
lea    0xd9c(%rip),%rdi
mov    %rbx,%rsi
pop    %rbx
jmp    1070 <printf@plt>
add    $0x1,%rbx
mov    $0x3,%edi
jmp    137d <execute_cmd+0x1ad>
add    $0x1,%rbx
xor    %edi,%edi
jmp    137d <execute_cmd+0x1ad>
add    $0x1,%rbx
mov    %rbx,%rdi
pop    %rbx
jmp    10f0 <vga_mode@plt>
add    $0x1,%rbx
xor    %edi,%edi
jmp    11f2 <execute_cmd+0x22>
add    $0x1,%rbx
mov    $0x4,%edi
jmp    11f2 <execute_cmd+0x22>
add    $0x1,%rbx
mov    %rbx,%rdi
pop    %rbx
jmp    10b0 <dump_registers@plt>
add    $0x1,%rbx
mov    %rbx,%rdi
pop    %rbx
jmp    1060 <tv_standard@plt>
add    $0x1,%rbx
mov    $0x1,%edi
jmp    137d <execute_cmd+0x1ad>
add    $0x1,%rbx
mov    $0x2,%edi
mov    %rbx,%rsi
pop    %rbx
jmp    10a0 <xy_cmd@plt>
xor    %edi,%edi
pop    %rbx
jmp    10e0 <help@plt>
mov    $0x1,%edi
pop    %rbx
jmp    10e0 <help@plt>
mov    $0x1,%edi
pop    %rbx
jmp    1050 <inc_dec_ffolat@plt>
mov    $0xffffffff,%edi
pop    %rbx
jmp    1050 <inc_dec_ffolat@plt>

LLVM IR (-O0):
@.str = [2 x i8] c"d\00"
@.str.1 = [4 x i8] c"def\00"
@.str.2 = [2 x i8] c"e\00"
@.str.3 = [2 x i8] c"g\00"
@.str.4 = [2 x i8] c"?\00"
@.str.5 = [3 x i8] c"??\00"
@.str.6 = [2 x i8] c">\00"
@.str.7 = [2 x i8] c"<\00"
@.str.8 = [20 x i8] c"unknown command %s\0A\00"
define void @execute_cmd(i8* %0) {
%2 = alloca i8*
store i8* %0, i8** %2
%3 = load i8*, i8** %2
%4 = load i8, i8* %3
%5 = sext i8 %4 to i32
%6 = icmp eq i32 %5, 98
br i1 %6, label %7, label %11
7: ; preds = %1
%8 = load i8*, i8** %2
%9 = getelementptr inbounds i8, i8* %8, i64 1
%10 = call i32 @inc_dec_cmd(i32 2, i8* %9)
br label %190
11: ; preds = %1
%12 = load i8*, i8** %2
%13 = load i8, i8* %12
%14 = sext i8 %13 to i32
%15 = icmp eq i32 %14, 99
br i1 %15, label %16, label %20
16: ; preds = %11
%17 = load i8*, i8** %2
%18 = getelementptr inbounds i8, i8* %17, i64 1
%19 = call i32 @inc_dec_cmd(i32 3, i8* %18)
br label %189
20: ; preds = %11
%21 = load i8*, i8** %2
%22 = call i64 @strcmp(i8* %21, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
%23 = icmp eq i64 %22, 0
br i1 %23, label %24, label %26
24: ; preds = %20
%25 = call i32 @enable_tvout(i32 0)
br label %188
26: ; preds = %20
%27 = load i8*, i8** %2
%28 = call i64 @strcmp(i8* %27, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.1, i64 0, i64 0))
%29 = icmp eq i64 %28, 0
br i1 %29, label %30, label %32
30: ; preds = %26
%31 = call i32 (...) @reset_defaults()
br label %187
32: ; preds = %26
%33 = load i8*, i8** %2
%34 = call i64 @strcmp(i8* %33, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0))
%35 = icmp eq i64 %34, 0
br i1 %35, label %36, label %38
36: ; preds = %32
%37 = call i32 @enable_tvout(i32 1)
br label %186
38: ; preds = %32
%39 = load i8*, i8** %2
%40 = load i8, i8* %39
%41 = sext i8 %40 to i32
%42 = icmp eq i32 %41, 102
br i1 %42, label %43, label %47
43: ; preds = %38
%44 = load i8*, i8** %2
%45 = getelementptr inbounds i8, i8* %44, i64 1
%46 = call i32 @inc_dec_cmd(i32 1, i8* %45)
br label %185
47: ; preds = %38
%48 = load i8*, i8** %2
%49 = call i64 @strcmp(i8* %48, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.3, i64 0, i64 0))
%50 = icmp eq i64 %49, 0
br i1 %50, label %51, label %53
51: ; preds = %47
%52 = call i32 (...) @get_settings()
br label %184
53: ; preds = %47
%54 = load i8*, i8** %2
%55 = load i8, i8* %54
%56 = sext i8 %55 to i32
%57 = icmp eq i32 %56, 104
br i1 %57, label %58, label %62
58: ; preds = %53
%59 = load i8*, i8** %2
%60 = getelementptr inbounds i8, i8* %59, i64 1
%61 = call i32 @xy_cmd(i32 3, i8* %60)
br label %183
62: ; preds = %53
%63 = load i8*, i8** %2
%64 = load i8, i8* %63
%65 = sext i8 %64 to i32
%66 = icmp eq i32 %65, 108
br i1 %66, label %67, label %71
67: ; preds = %62
%68 = load i8*, i8** %2
%69 = getelementptr inbounds i8, i8* %68, i64 1
%70 = call i32 @xy_cmd(i32 0, i8* %69)
br label %182
71: ; preds = %62
%72 = load i8*, i8** %2
%73 = load i8, i8* %72
%74 = sext i8 %73 to i32
%75 = icmp eq i32 %74, 109
br i1 %75, label %76, label %80
76: ; preds = %71
%77 = load i8*, i8** %2
%78 = getelementptr inbounds i8, i8* %77, i64 1
%79 = call i32 @vga_mode(i8* %78)
br label %181
80: ; preds = %71
%81 = load i8*, i8** %2
%82 = load i8, i8* %81
%83 = sext i8 %82 to i32
%84 = icmp eq i32 %83, 111
br i1 %84, label %85, label %89
85: ; preds = %80
%86 = load i8*, i8** %2
%87 = getelementptr inbounds i8, i8* %86, i64 1
%88 = call i32 @inc_dec_cmd(i32 4, i8* %87)
br label %180
89: ; preds = %80
%90 = load i8*, i8** %2
%91 = load i8, i8* %90
%92 = sext i8 %91 to i32
%93 = icmp eq i32 %92, 114
br i1 %93, label %94, label %98
94: ; preds = %89
%95 = load i8*, i8** %2
%96 = getelementptr inbounds i8, i8* %95, i64 1
%97 = call i32 @dump_registers(i8* %96)
br label %179
98: ; preds = %89
%99 = load i8*, i8** %2
%100 = load i8, i8* %99
%101 = sext i8 %100 to i32
%102 = icmp eq i32 %101, 82
br i1 %102, label %103, label %107
103: ; preds = %98
%104 = load i8*, i8** %2
%105 = getelementptr inbounds i8, i8* %104, i64 1
%106 = call i32 @write_register(i8* %105)
br label %178
107: ; preds = %98
%108 = load i8*, i8** %2
%109 = load i8, i8* %108
%110 = sext i8 %109 to i32
%111 = icmp eq i32 %110, 110
br i1 %111, label %112, label %116
112: ; preds = %107
%113 = load i8*, i8** %2
%114 = getelementptr inbounds i8, i8* %113, i64 1
%115 = call i32 @inc_dec_cmd(i32 0, i8* %114)
br label %177
116: ; preds = %107
%117 = load i8*, i8** %2
%118 = load i8, i8* %117
%119 = sext i8 %118 to i32
%120 = icmp eq i32 %119, 115
br i1 %120, label %121, label %125
121: ; preds = %116
%122 = load i8*, i8** %2
%123 = getelementptr inbounds i8, i8* %122, i64 1
%124 = call i32 @tv_standard(i8* %123)
br label %176
125: ; preds = %116
%126 = load i8*, i8** %2
%127 = load i8, i8* %126
%128 = sext i8 %127 to i32
%129 = icmp eq i32 %128, 116
br i1 %129, label %130, label %134
130: ; preds = %125
%131 = load i8*, i8** %2
%132 = getelementptr inbounds i8, i8* %131, i64 1
%133 = call i32 @xy_cmd(i32 1, i8* %132)
br label %175
134: ; preds = %125
%135 = load i8*, i8** %2
%136 = load i8, i8* %135
%137 = sext i8 %136 to i32
%138 = icmp eq i32 %137, 119
br i1 %138, label %139, label %143
139: ; preds = %134
%140 = load i8*, i8** %2
%141 = getelementptr inbounds i8, i8* %140, i64 1
%142 = call i32 @xy_cmd(i32 2, i8* %141)
br label %174
143: ; preds = %134
%144 = load i8*, i8** %2
%145 = call i64 @strcmp(i8* %144, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.4, i64 0, i64 0))
%146 = icmp eq i64 %145, 0
br i1 %146, label %147, label %149
147: ; preds = %143
%148 = call i32 @help(i32 0)
br label %173
149: ; preds = %143
%150 = load i8*, i8** %2
%151 = call i64 @strcmp(i8* %150, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0))
%152 = icmp eq i64 %151, 0
br i1 %152, label %153, label %155
153: ; preds = %149
%154 = call i32 @help(i32 1)
br label %172
155: ; preds = %149
%156 = load i8*, i8** %2
%157 = call i64 @strcmp(i8* %156, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.6, i64 0, i64 0))
%158 = icmp eq i64 %157, 0
br i1 %158, label %159, label %161
159: ; preds = %155
%160 = call i32 @inc_dec_ffolat(i32 1)
br label %171
161: ; preds = %155
%162 = load i8*, i8** %2
%163 = call i64 @strcmp(i8* %162, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.7, i64 0, i64 0))
%164 = icmp eq i64 %163, 0
br i1 %164, label %165, label %167
165: ; preds = %161
%166 = call i32 @inc_dec_ffolat(i32 -1)
br label %170
167: ; preds = %161
%168 = load i8*, i8** %2
%169 = call i32 @printf(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.8, i64 0, i64 0), i8* %168)
br label %170
170: ; preds = %167, %165
br label %171
171: ; preds = %170, %159
br label %172
172: ; preds = %171, %153
br label %173
173: ; preds = %172, %147
br label %174
174: ; preds = %173, %139
br label %175
175: ; preds = %174, %130
br label %176
176: ; preds = %175, %121
br label %177
177: ; preds = %176, %112
br label %178
178: ; preds = %177, %103
br label %179
179: ; preds = %178, %94
br label %180
180: ; preds = %179, %85
br label %181
181: ; preds = %180, %76
br label %182
182: ; preds = %181, %67
br label %183
183: ; preds = %182, %58
br label %184
184: ; preds = %183, %51
br label %185
185: ; preds = %184, %43
br label %186
186: ; preds = %185, %36
br label %187
187: ; preds = %186, %30
br label %188
188: ; preds = %187, %24
br label %189
189: ; preds = %188, %16
br label %190
190: ; preds = %189, %7
ret void
}

LLVM IR (-O2):
@.str = [2 x i8] c"d\00"
@.str.1 = [4 x i8] c"def\00"
@.str.2 = [2 x i8] c"e\00"
@.str.3 = [2 x i8] c"g\00"
@.str.4 = [2 x i8] c"?\00"
@.str.5 = [3 x i8] c"??\00"
@.str.6 = [2 x i8] c">\00"
@.str.7 = [2 x i8] c"<\00"
@.str.8 = [20 x i8] c"unknown command %s\0A\00"
define void @execute_cmd(i8* %0) {
%2 = load i8, i8* %0
switch i8 %2, label %9 [
i8 98, label %3
i8 99, label %6
]
3: ; preds = %1
%4 = getelementptr inbounds i8, i8* %0, i64 1
%5 = tail call i32 @inc_dec_cmd(i32 2, i8* %4)
br label %89
6: ; preds = %1
%7 = getelementptr inbounds i8, i8* %0, i64 1
%8 = tail call i32 @inc_dec_cmd(i32 3, i8* %7)
br label %89
9: ; preds = %1
%10 = tail call i64 @strcmp(i8* %0, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
%11 = icmp eq i64 %10, 0
br i1 %11, label %12, label %14
12: ; preds = %9
%13 = tail call i32 @enable_tvout(i32 0)
br label %89
14: ; preds = %9
%15 = tail call i64 @strcmp(i8* %0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.1, i64 0, i64 0))
%16 = icmp eq i64 %15, 0
br i1 %16, label %17, label %19
17: ; preds = %14
%18 = tail call i32 (...) @reset_defaults()
br label %89
19: ; preds = %14
%20 = tail call i64 @strcmp(i8* %0, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0))
%21 = icmp eq i64 %20, 0
br i1 %21, label %22, label %24
22: ; preds = %19
%23 = tail call i32 @enable_tvout(i32 1)
br label %89
24: ; preds = %19
%25 = load i8, i8* %0
%26 = icmp eq i8 %25, 102
br i1 %26, label %27, label %30
27: ; preds = %24
%28 = getelementptr inbounds i8, i8* %0, i64 1
%29 = tail call i32 @inc_dec_cmd(i32 1, i8* %28)
br label %89
30: ; preds = %24
%31 = tail call i64 @strcmp(i8* %0, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.3, i64 0, i64 0))
%32 = icmp eq i64 %31, 0
br i1 %32, label %33, label %35
33: ; preds = %30
%34 = tail call i32 (...) @get_settings()
br label %89
35: ; preds = %30
%36 = load i8, i8* %0
switch i8 %36, label %67 [
i8 104, label %37
i8 108, label %40
i8 109, label %43
i8 111, label %46
i8 114, label %49
i8 82, label %52
i8 110, label %55
i8 115, label %58
i8 116, label %61
i8 119, label %64
]
37: ; preds = %35
%38 = getelementptr inbounds i8, i8* %0, i64 1
%39 = tail call i32 @xy_cmd(i32 3, i8* %38)
br label %89
40: ; preds = %35
%41 = getelementptr inbounds i8, i8* %0, i64 1
%42 = tail call i32 @xy_cmd(i32 0, i8* %41)
br label %89
43: ; preds = %35
%44 = getelementptr inbounds i8, i8* %0, i64 1
%45 = tail call i32 @vga_mode(i8* %44)
br label %89
46: ; preds = %35
%47 = getelementptr inbounds i8, i8* %0, i64 1
%48 = tail call i32 @inc_dec_cmd(i32 4, i8* %47)
br label %89
49: ; preds = %35
%50 = getelementptr inbounds i8, i8* %0, i64 1
%51 = tail call i32 @dump_registers(i8* %50)
br label %89
52: ; preds = %35
%53 = getelementptr inbounds i8, i8* %0, i64 1
%54 = tail call i32 @write_register(i8* %53)
br label %89
55: ; preds = %35
%56 = getelementptr inbounds i8, i8* %0, i64 1
%57 = tail call i32 @inc_dec_cmd(i32 0, i8* %56)
br label %89
58: ; preds = %35
%59 = getelementptr inbounds i8, i8* %0, i64 1
%60 = tail call i32 @tv_standard(i8* %59)
br label %89
61: ; preds = %35
%62 = getelementptr inbounds i8, i8* %0, i64 1
%63 = tail call i32 @xy_cmd(i32 1, i8* %62)
br label %89
64: ; preds = %35
%65 = getelementptr inbounds i8, i8* %0, i64 1
%66 = tail call i32 @xy_cmd(i32 2, i8* %65)
br label %89
67: ; preds = %35
%68 = tail call i64 @strcmp(i8* %0, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.4, i64 0, i64 0))
%69 = icmp eq i64 %68, 0
br i1 %69, label %70, label %72
70: ; preds = %67
%71 = tail call i32 @help(i32 0)
br label %89
72: ; preds = %67
%73 = tail call i64 @strcmp(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0))
%74 = icmp eq i64 %73, 0
br i1 %74, label %75, label %77
75: ; preds = %72
%76 = tail call i32 @help(i32 1)
br label %89
77: ; preds = %72
%78 = tail call i64 @strcmp(i8* %0, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.6, i64 0, i64 0))
%79 = icmp eq i64 %78, 0
br i1 %79, label %80, label %82
80: ; preds = %77
%81 = tail call i32 @inc_dec_ffolat(i32 1)
br label %89
82: ; preds = %77
%83 = tail call i64 @strcmp(i8* %0, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.7, i64 0, i64 0))
%84 = icmp eq i64 %83, 0
br i1 %84, label %85, label %87
85: ; preds = %82
%86 = tail call i32 @inc_dec_ffolat(i32 -1)
br label %89
87: ; preds = %82
%88 = tail call i32 @printf(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.8, i64 0, i64 0), i8* %0)
br label %89
89: ; preds = %6, %17, %27, %37, %43, %49, %55, %61, %70, %80, %87, %85, %75, %64, %58, %52, %46, %40, %33, %22, %12, %3
ret void
}