#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*/ Ankle1Add();
int /*<<< orphan*/ Ankle1Subtract();
int /*<<< orphan*/ Ankle2Add();
int /*<<< orphan*/ Ankle2Subtract();
int /*<<< orphan*/ Heel1Add();
int /*<<< orphan*/ Heel1Subtract();
int /*<<< orphan*/ Heel2Add();
int /*<<< orphan*/ Heel2Subtract();
int /*<<< orphan*/ LightBackwards();
int /*<<< orphan*/ LightForwards();
int /*<<< orphan*/ LightTurnLeft();
int /*<<< orphan*/ LightTurnRight();
int /*<<< orphan*/ LowerLeg1Backwards();
int /*<<< orphan*/ LowerLeg1Inwards();
int /*<<< orphan*/ LowerLeg2Backwards();
int /*<<< orphan*/ LowerLeg2Inwards();
int /*<<< orphan*/ MechTiltAdd();
int /*<<< orphan*/ MechTiltSubtract();
int /*<<< orphan*/ RaiseLeg1Forward();
int /*<<< orphan*/ RaiseLeg1Outwards();
int /*<<< orphan*/ RaiseLeg2Forward();
int /*<<< orphan*/ RaiseLeg2Outwards();
int /*<<< orphan*/ RotateAdd();
int /*<<< orphan*/ RotateSubtract();
int /*<<< orphan*/ elbow1Add();
int /*<<< orphan*/ elbow1Subtract();
int /*<<< orphan*/ elbow2Add();
int /*<<< orphan*/ elbow2Subtract();
int /*<<< orphan*/ glutPostRedisplay();
int /*<<< orphan*/ lat1Lower();
int /*<<< orphan*/ lat1Raise();
int /*<<< orphan*/ lat2Lower();
int /*<<< orphan*/ lat2Raise();
int /*<<< orphan*/ shoulder1Add();
int /*<<< orphan*/ shoulder1Subtract();
int /*<<< orphan*/ shoulder2Add();
int /*<<< orphan*/ shoulder2Subtract();
int /*<<< orphan*/ shoulder3Add();
int /*<<< orphan*/ shoulder3Subtract();
int /*<<< orphan*/ shoulder4Add();
int /*<<< orphan*/ shoulder4Subtract();
void keyboard(unsigned char key, int x, int y) {
  int i = 0;
  switch (key) {
  case 'q': {
    shoulder2Subtract();
    i++;
  } break;
  case 'a': {
    shoulder2Add();
    i++;
  } break;
  case 'w': {
    shoulder1Subtract();
    i++;
  } break;
  case 's': {
    shoulder1Add();
    i++;
  } break;
  case '2': {
    shoulder3Add();
    i++;
  } break;
  case '1': {
    shoulder4Add();
    i++;
  } break;
  case '4': {
    shoulder3Subtract();
    i++;
  } break;
  case '3': {
    shoulder4Subtract();
    i++;
  } break;
  case 'z': {
    lat2Raise();
    i++;
  } break;
  case 'Z': {
    lat2Lower();
    i++;
  } break;
  case 'x': {
    lat1Raise();
    i++;
  } break;
  case 'X': {
    lat1Lower();
    i++;
  } break;
  case 'A': {
    elbow2Add();
    i++;
  } break;
  case 'Q': {
    elbow2Subtract();
    i++;
  } break;
  case 'S': {
    elbow1Add();
    i++;
  } break;
  case 'W': {
    elbow1Subtract();
    i++;
  } break;
  case 'd': {
    RotateAdd();
    i++;
  } break;
  case 'g': {
    RotateSubtract();
    i++;
  } break;
  case 'r': {
    MechTiltAdd();
    i++;
  } break;
  case 'f': {
    MechTiltSubtract();
    i++;
  } break;
  case 'h': {
    RaiseLeg2Forward();
    i++;
  } break;
  case 'y': {
    LowerLeg2Backwards();
    i++;
  } break;
  case 'Y': {
    RaiseLeg2Outwards();
    i++;
  } break;
  case 'H': {
    LowerLeg2Inwards();
    i++;
  } break;
  case 'j': {
    RaiseLeg1Forward();
    i++;
  } break;
  case 'u': {
    LowerLeg1Backwards();
    i++;
  } break;
  case 'U': {
    RaiseLeg1Outwards();
    i++;
  } break;
  case 'J': {
    LowerLeg1Inwards();
    i++;
  } break;
  case 'N': {
    Heel2Add();
    i++;
  } break;
  case 'n': {
    Heel2Subtract();
    i++;
  } break;
  case 'M': {
    Heel1Add();
    i++;
  } break;
  case 'm': {
    Heel1Subtract();
    i++;
  } break;
  case 'k': {
    Ankle2Add();
    i++;
  } break;
  case 'K': {
    Ankle2Subtract();
    i++;
  } break;
  case 'l': {
    Ankle1Add();
    i++;
  } break;
  case 'L': {
    Ankle1Subtract();
    i++;
  } break;
  case 'p': {
    LightTurnRight();
    i++;
  } break;
  case 'i': {
    LightTurnLeft();
    i++;
  } break;
  case 'o': {
    LightForwards();
    i++;
  } break;
  case '9': {
    LightBackwards();
    i++;
  } break;
  }
  if (i)
    glutPostRedisplay();
}


x86 assembly (clang, -O0):
<keyboard>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
mov    %dil,%al
mov    %al,-0x1(%rbp)
mov    %esi,-0x8(%rbp)
mov    %edx,-0xc(%rbp)
movl   $0x0,-0x10(%rbp)
movzbl -0x1(%rbp),%eax
add    $0xffffffcf,%eax
mov    %eax,%ecx
mov    %rcx,-0x18(%rbp)
sub    $0x49,%eax
ja     1718 <keyboard+0x388>
mov    -0x18(%rbp),%rax
lea    0xc34(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    $0x0,%al
call   12b0 <shoulder2Subtract@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1718 <keyboard+0x388>
mov    $0x0,%al
call   1240 <shoulder2Add@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1718 <keyboard+0x388>
mov    $0x0,%al
call   1070 <shoulder1Subtract@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1718 <keyboard+0x388>
mov    $0x0,%al
call   1200 <shoulder1Add@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1718 <keyboard+0x388>
mov    $0x0,%al
call   11e0 <shoulder3Add@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1718 <keyboard+0x388>
mov    $0x0,%al
call   11f0 <shoulder4Add@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1718 <keyboard+0x388>
mov    $0x0,%al
call   1090 <shoulder3Subtract@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1718 <keyboard+0x388>
mov    $0x0,%al
call   11a0 <shoulder4Subtract@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1718 <keyboard+0x388>
mov    $0x0,%al
call   1100 <lat2Raise@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1718 <keyboard+0x388>
mov    $0x0,%al
call   10a0 <lat2Lower@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1718 <keyboard+0x388>
mov    $0x0,%al
call   1040 <lat1Raise@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1718 <keyboard+0x388>
mov    $0x0,%al
call   1180 <lat1Lower@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1718 <keyboard+0x388>
mov    $0x0,%al
call   1160 <elbow2Add@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1718 <keyboard+0x388>
mov    $0x0,%al
call   1050 <elbow2Subtract@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1718 <keyboard+0x388>
mov    $0x0,%al
call   1220 <elbow1Add@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1718 <keyboard+0x388>
mov    $0x0,%al
call   1080 <elbow1Subtract@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1718 <keyboard+0x388>
mov    $0x0,%al
call   1170 <RotateAdd@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1718 <keyboard+0x388>
mov    $0x0,%al
call   1110 <RotateSubtract@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1718 <keyboard+0x388>
mov    $0x0,%al
call   10c0 <MechTiltAdd@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1718 <keyboard+0x388>
mov    $0x0,%al
call   1290 <MechTiltSubtract@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1718 <keyboard+0x388>
mov    $0x0,%al
call   1190 <RaiseLeg2Forward@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1718 <keyboard+0x388>
mov    $0x0,%al
call   1030 <LowerLeg2Backwards@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1718 <keyboard+0x388>
mov    $0x0,%al
call   10d0 <RaiseLeg2Outwards@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1718 <keyboard+0x388>
mov    $0x0,%al
call   10b0 <LowerLeg2Inwards@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1718 <keyboard+0x388>
mov    $0x0,%al
call   1150 <RaiseLeg1Forward@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1718 <keyboard+0x388>
mov    $0x0,%al
call   1250 <LowerLeg1Backwards@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1718 <keyboard+0x388>
mov    $0x0,%al
call   10f0 <RaiseLeg1Outwards@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1718 <keyboard+0x388>
mov    $0x0,%al
call   1270 <LowerLeg1Inwards@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1718 <keyboard+0x388>
mov    $0x0,%al
call   10e0 <Heel2Add@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1718 <keyboard+0x388>
mov    $0x0,%al
call   1120 <Heel2Subtract@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1718 <keyboard+0x388>
mov    $0x0,%al
call   11c0 <Heel1Add@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1718 <keyboard+0x388>
mov    $0x0,%al
call   1230 <Heel1Subtract@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1718 <keyboard+0x388>
mov    $0x0,%al
call   1280 <Ankle2Add@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1718 <keyboard+0x388>
mov    $0x0,%al
call   1260 <Ankle2Subtract@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1718 <keyboard+0x388>
mov    $0x0,%al
call   1210 <Ankle1Add@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1718 <keyboard+0x388>
mov    $0x0,%al
call   1130 <Ankle1Subtract@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1718 <keyboard+0x388>
mov    $0x0,%al
call   11b0 <LightTurnRight@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1718 <keyboard+0x388>
mov    $0x0,%al
call   1060 <LightTurnLeft@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1718 <keyboard+0x388>
mov    $0x0,%al
call   12a0 <LightForwards@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1718 <keyboard+0x388>
mov    $0x0,%al
call   11d0 <LightBackwards@plt>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
cmpl   $0x0,-0x10(%rbp)
je     1729 <keyboard+0x399>
mov    $0x0,%al
call   1140 <glutPostRedisplay@plt>
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<keyboard>:
push   %rax
add    $0xcf,%dil
cmp    $0x49,%dil
ja     13df <keyboard+0x4f>
movzbl %dil,%eax
lea    0xc5a(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
xor    %eax,%eax
call   11f0 <shoulder4Add@plt>
jmp    1562 <keyboard+0x1d2>
xor    %eax,%eax
call   11e0 <shoulder3Add@plt>
jmp    1562 <keyboard+0x1d2>
xor    %eax,%eax
call   11a0 <shoulder4Subtract@plt>
jmp    1562 <keyboard+0x1d2>
xor    %eax,%eax
call   1090 <shoulder3Subtract@plt>
jmp    1562 <keyboard+0x1d2>
pop    %rax
ret
xor    %eax,%eax
call   11d0 <LightBackwards@plt>
jmp    1562 <keyboard+0x1d2>
xor    %eax,%eax
call   1160 <elbow2Add@plt>
jmp    1562 <keyboard+0x1d2>
xor    %eax,%eax
call   10b0 <LowerLeg2Inwards@plt>
jmp    1562 <keyboard+0x1d2>
xor    %eax,%eax
call   1270 <LowerLeg1Inwards@plt>
jmp    1562 <keyboard+0x1d2>
xor    %eax,%eax
call   1260 <Ankle2Subtract@plt>
jmp    1562 <keyboard+0x1d2>
xor    %eax,%eax
call   1130 <Ankle1Subtract@plt>
jmp    1562 <keyboard+0x1d2>
xor    %eax,%eax
call   11c0 <Heel1Add@plt>
jmp    1562 <keyboard+0x1d2>
xor    %eax,%eax
call   10e0 <Heel2Add@plt>
jmp    1562 <keyboard+0x1d2>
xor    %eax,%eax
call   1050 <elbow2Subtract@plt>
jmp    1562 <keyboard+0x1d2>
xor    %eax,%eax
call   1220 <elbow1Add@plt>
jmp    1562 <keyboard+0x1d2>
xor    %eax,%eax
call   10f0 <RaiseLeg1Outwards@plt>
jmp    1562 <keyboard+0x1d2>
xor    %eax,%eax
call   1080 <elbow1Subtract@plt>
jmp    1562 <keyboard+0x1d2>
xor    %eax,%eax
call   1180 <lat1Lower@plt>
jmp    1562 <keyboard+0x1d2>
xor    %eax,%eax
call   10d0 <RaiseLeg2Outwards@plt>
jmp    1562 <keyboard+0x1d2>
xor    %eax,%eax
call   10a0 <lat2Lower@plt>
jmp    1562 <keyboard+0x1d2>
xor    %eax,%eax
call   1240 <shoulder2Add@plt>
jmp    1562 <keyboard+0x1d2>
xor    %eax,%eax
call   1170 <RotateAdd@plt>
jmp    1562 <keyboard+0x1d2>
xor    %eax,%eax
call   1290 <MechTiltSubtract@plt>
jmp    1562 <keyboard+0x1d2>
xor    %eax,%eax
call   1110 <RotateSubtract@plt>
jmp    1562 <keyboard+0x1d2>
xor    %eax,%eax
call   1190 <RaiseLeg2Forward@plt>
jmp    1562 <keyboard+0x1d2>
xor    %eax,%eax
call   1060 <LightTurnLeft@plt>
jmp    1562 <keyboard+0x1d2>
xor    %eax,%eax
call   1150 <RaiseLeg1Forward@plt>
jmp    1562 <keyboard+0x1d2>
xor    %eax,%eax
call   1280 <Ankle2Add@plt>
jmp    1562 <keyboard+0x1d2>
xor    %eax,%eax
call   1210 <Ankle1Add@plt>
jmp    1562 <keyboard+0x1d2>
xor    %eax,%eax
call   1230 <Heel1Subtract@plt>
jmp    1562 <keyboard+0x1d2>
xor    %eax,%eax
call   1120 <Heel2Subtract@plt>
jmp    1562 <keyboard+0x1d2>
xor    %eax,%eax
call   12a0 <LightForwards@plt>
jmp    1562 <keyboard+0x1d2>
xor    %eax,%eax
call   11b0 <LightTurnRight@plt>
jmp    1562 <keyboard+0x1d2>
xor    %eax,%eax
call   12b0 <shoulder2Subtract@plt>
jmp    1562 <keyboard+0x1d2>
xor    %eax,%eax
call   10c0 <MechTiltAdd@plt>
jmp    1562 <keyboard+0x1d2>
xor    %eax,%eax
call   1200 <shoulder1Add@plt>
jmp    1562 <keyboard+0x1d2>
xor    %eax,%eax
call   1250 <LowerLeg1Backwards@plt>
jmp    1562 <keyboard+0x1d2>
xor    %eax,%eax
call   1070 <shoulder1Subtract@plt>
jmp    1562 <keyboard+0x1d2>
xor    %eax,%eax
call   1040 <lat1Raise@plt>
jmp    1562 <keyboard+0x1d2>
xor    %eax,%eax
call   1030 <LowerLeg2Backwards@plt>
jmp    1562 <keyboard+0x1d2>
xor    %eax,%eax
call   1100 <lat2Raise@plt>
xor    %eax,%eax
pop    %rcx
jmp    1140 <glutPostRedisplay@plt>

LLVM IR (-O0):
define void @keyboard(i8 zeroext %0, i32 %1, i32 %2) {
%4 = alloca i8
%5 = alloca i32
%6 = alloca i32
%7 = alloca i32
store i8 %0, i8* %4
store i32 %1, i32* %5
store i32 %2, i32* %6
store i32 0, i32* %7
%8 = load i8, i8* %4
%9 = zext i8 %8 to i32
switch i32 %9, label %170 [
i32 113, label %10
i32 97, label %14
i32 119, label %18
i32 115, label %22
i32 50, label %26
i32 49, label %30
i32 52, label %34
i32 51, label %38
i32 122, label %42
i32 90, label %46
i32 120, label %50
i32 88, label %54
i32 65, label %58
i32 81, label %62
i32 83, label %66
i32 87, label %70
i32 100, label %74
i32 103, label %78
i32 114, label %82
i32 102, label %86
i32 104, label %90
i32 121, label %94
i32 89, label %98
i32 72, label %102
i32 106, label %106
i32 117, label %110
i32 85, label %114
i32 74, label %118
i32 78, label %122
i32 110, label %126
i32 77, label %130
i32 109, label %134
i32 107, label %138
i32 75, label %142
i32 108, label %146
i32 76, label %150
i32 112, label %154
i32 105, label %158
i32 111, label %162
i32 57, label %166
]
10: ; preds = %3
%11 = call i32 (...) @shoulder2Subtract()
%12 = load i32, i32* %7
%13 = add nsw i32 %12, 1
store i32 %13, i32* %7
br label %170
14: ; preds = %3
%15 = call i32 (...) @shoulder2Add()
%16 = load i32, i32* %7
%17 = add nsw i32 %16, 1
store i32 %17, i32* %7
br label %170
18: ; preds = %3
%19 = call i32 (...) @shoulder1Subtract()
%20 = load i32, i32* %7
%21 = add nsw i32 %20, 1
store i32 %21, i32* %7
br label %170
22: ; preds = %3
%23 = call i32 (...) @shoulder1Add()
%24 = load i32, i32* %7
%25 = add nsw i32 %24, 1
store i32 %25, i32* %7
br label %170
26: ; preds = %3
%27 = call i32 (...) @shoulder3Add()
%28 = load i32, i32* %7
%29 = add nsw i32 %28, 1
store i32 %29, i32* %7
br label %170
30: ; preds = %3
%31 = call i32 (...) @shoulder4Add()
%32 = load i32, i32* %7
%33 = add nsw i32 %32, 1
store i32 %33, i32* %7
br label %170
34: ; preds = %3
%35 = call i32 (...) @shoulder3Subtract()
%36 = load i32, i32* %7
%37 = add nsw i32 %36, 1
store i32 %37, i32* %7
br label %170
38: ; preds = %3
%39 = call i32 (...) @shoulder4Subtract()
%40 = load i32, i32* %7
%41 = add nsw i32 %40, 1
store i32 %41, i32* %7
br label %170
42: ; preds = %3
%43 = call i32 (...) @lat2Raise()
%44 = load i32, i32* %7
%45 = add nsw i32 %44, 1
store i32 %45, i32* %7
br label %170
46: ; preds = %3
%47 = call i32 (...) @lat2Lower()
%48 = load i32, i32* %7
%49 = add nsw i32 %48, 1
store i32 %49, i32* %7
br label %170
50: ; preds = %3
%51 = call i32 (...) @lat1Raise()
%52 = load i32, i32* %7
%53 = add nsw i32 %52, 1
store i32 %53, i32* %7
br label %170
54: ; preds = %3
%55 = call i32 (...) @lat1Lower()
%56 = load i32, i32* %7
%57 = add nsw i32 %56, 1
store i32 %57, i32* %7
br label %170
58: ; preds = %3
%59 = call i32 (...) @elbow2Add()
%60 = load i32, i32* %7
%61 = add nsw i32 %60, 1
store i32 %61, i32* %7
br label %170
62: ; preds = %3
%63 = call i32 (...) @elbow2Subtract()
%64 = load i32, i32* %7
%65 = add nsw i32 %64, 1
store i32 %65, i32* %7
br label %170
66: ; preds = %3
%67 = call i32 (...) @elbow1Add()
%68 = load i32, i32* %7
%69 = add nsw i32 %68, 1
store i32 %69, i32* %7
br label %170
70: ; preds = %3
%71 = call i32 (...) @elbow1Subtract()
%72 = load i32, i32* %7
%73 = add nsw i32 %72, 1
store i32 %73, i32* %7
br label %170
74: ; preds = %3
%75 = call i32 (...) @RotateAdd()
%76 = load i32, i32* %7
%77 = add nsw i32 %76, 1
store i32 %77, i32* %7
br label %170
78: ; preds = %3
%79 = call i32 (...) @RotateSubtract()
%80 = load i32, i32* %7
%81 = add nsw i32 %80, 1
store i32 %81, i32* %7
br label %170
82: ; preds = %3
%83 = call i32 (...) @MechTiltAdd()
%84 = load i32, i32* %7
%85 = add nsw i32 %84, 1
store i32 %85, i32* %7
br label %170
86: ; preds = %3
%87 = call i32 (...) @MechTiltSubtract()
%88 = load i32, i32* %7
%89 = add nsw i32 %88, 1
store i32 %89, i32* %7
br label %170
90: ; preds = %3
%91 = call i32 (...) @RaiseLeg2Forward()
%92 = load i32, i32* %7
%93 = add nsw i32 %92, 1
store i32 %93, i32* %7
br label %170
94: ; preds = %3
%95 = call i32 (...) @LowerLeg2Backwards()
%96 = load i32, i32* %7
%97 = add nsw i32 %96, 1
store i32 %97, i32* %7
br label %170
98: ; preds = %3
%99 = call i32 (...) @RaiseLeg2Outwards()
%100 = load i32, i32* %7
%101 = add nsw i32 %100, 1
store i32 %101, i32* %7
br label %170
102: ; preds = %3
%103 = call i32 (...) @LowerLeg2Inwards()
%104 = load i32, i32* %7
%105 = add nsw i32 %104, 1
store i32 %105, i32* %7
br label %170
106: ; preds = %3
%107 = call i32 (...) @RaiseLeg1Forward()
%108 = load i32, i32* %7
%109 = add nsw i32 %108, 1
store i32 %109, i32* %7
br label %170
110: ; preds = %3
%111 = call i32 (...) @LowerLeg1Backwards()
%112 = load i32, i32* %7
%113 = add nsw i32 %112, 1
store i32 %113, i32* %7
br label %170
114: ; preds = %3
%115 = call i32 (...) @RaiseLeg1Outwards()
%116 = load i32, i32* %7
%117 = add nsw i32 %116, 1
store i32 %117, i32* %7
br label %170
118: ; preds = %3
%119 = call i32 (...) @LowerLeg1Inwards()
%120 = load i32, i32* %7
%121 = add nsw i32 %120, 1
store i32 %121, i32* %7
br label %170
122: ; preds = %3
%123 = call i32 (...) @Heel2Add()
%124 = load i32, i32* %7
%125 = add nsw i32 %124, 1
store i32 %125, i32* %7
br label %170
126: ; preds = %3
%127 = call i32 (...) @Heel2Subtract()
%128 = load i32, i32* %7
%129 = add nsw i32 %128, 1
store i32 %129, i32* %7
br label %170
130: ; preds = %3
%131 = call i32 (...) @Heel1Add()
%132 = load i32, i32* %7
%133 = add nsw i32 %132, 1
store i32 %133, i32* %7
br label %170
134: ; preds = %3
%135 = call i32 (...) @Heel1Subtract()
%136 = load i32, i32* %7
%137 = add nsw i32 %136, 1
store i32 %137, i32* %7
br label %170
138: ; preds = %3
%139 = call i32 (...) @Ankle2Add()
%140 = load i32, i32* %7
%141 = add nsw i32 %140, 1
store i32 %141, i32* %7
br label %170
142: ; preds = %3
%143 = call i32 (...) @Ankle2Subtract()
%144 = load i32, i32* %7
%145 = add nsw i32 %144, 1
store i32 %145, i32* %7
br label %170
146: ; preds = %3
%147 = call i32 (...) @Ankle1Add()
%148 = load i32, i32* %7
%149 = add nsw i32 %148, 1
store i32 %149, i32* %7
br label %170
150: ; preds = %3
%151 = call i32 (...) @Ankle1Subtract()
%152 = load i32, i32* %7
%153 = add nsw i32 %152, 1
store i32 %153, i32* %7
br label %170
154: ; preds = %3
%155 = call i32 (...) @LightTurnRight()
%156 = load i32, i32* %7
%157 = add nsw i32 %156, 1
store i32 %157, i32* %7
br label %170
158: ; preds = %3
%159 = call i32 (...) @LightTurnLeft()
%160 = load i32, i32* %7
%161 = add nsw i32 %160, 1
store i32 %161, i32* %7
br label %170
162: ; preds = %3
%163 = call i32 (...) @LightForwards()
%164 = load i32, i32* %7
%165 = add nsw i32 %164, 1
store i32 %165, i32* %7
br label %170
166: ; preds = %3
%167 = call i32 (...) @LightBackwards()
%168 = load i32, i32* %7
%169 = add nsw i32 %168, 1
store i32 %169, i32* %7
br label %170
170: ; preds = %3, %166, %162, %158, %154, %150, %146, %142, %138, %134, %130, %126, %122, %118, %114, %110, %106, %102, %98, %94, %90, %86, %82, %78, %74, %70, %66, %62, %58, %54, %50, %46, %42, %38, %34, %30, %26, %22, %18, %14, %10
%171 = load i32, i32* %7
%172 = icmp ne i32 %171, 0
br i1 %172, label %173, label %175
173: ; preds = %170
%174 = call i32 (...) @glutPostRedisplay()
br label %175
175: ; preds = %173, %170
ret void
}

LLVM IR (-O2):
define void @keyboard(i8 zeroext %0, i32 %1, i32 %2) {
switch i8 %0, label %86 [
i8 113, label %4
i8 97, label %6
i8 119, label %8
i8 115, label %10
i8 50, label %12
i8 49, label %14
i8 52, label %16
i8 51, label %18
i8 122, label %20
i8 90, label %22
i8 120, label %24
i8 88, label %26
i8 65, label %28
i8 81, label %30
i8 83, label %32
i8 87, label %34
i8 100, label %36
i8 103, label %38
i8 114, label %40
i8 102, label %42
i8 104, label %44
i8 121, label %46
i8 89, label %48
i8 72, label %50
i8 106, label %52
i8 117, label %54
i8 85, label %56
i8 74, label %58
i8 78, label %60
i8 110, label %62
i8 77, label %64
i8 109, label %66
i8 107, label %68
i8 75, label %70
i8 108, label %72
i8 76, label %74
i8 112, label %76
i8 105, label %78
i8 111, label %80
i8 57, label %82
]
4: ; preds = %3
%5 = tail call i32 (...) @shoulder2Subtract()
br label %84
6: ; preds = %3
%7 = tail call i32 (...) @shoulder2Add()
br label %84
8: ; preds = %3
%9 = tail call i32 (...) @shoulder1Subtract()
br label %84
10: ; preds = %3
%11 = tail call i32 (...) @shoulder1Add()
br label %84
12: ; preds = %3
%13 = tail call i32 (...) @shoulder3Add()
br label %84
14: ; preds = %3
%15 = tail call i32 (...) @shoulder4Add()
br label %84
16: ; preds = %3
%17 = tail call i32 (...) @shoulder3Subtract()
br label %84
18: ; preds = %3
%19 = tail call i32 (...) @shoulder4Subtract()
br label %84
20: ; preds = %3
%21 = tail call i32 (...) @lat2Raise()
br label %84
22: ; preds = %3
%23 = tail call i32 (...) @lat2Lower()
br label %84
24: ; preds = %3
%25 = tail call i32 (...) @lat1Raise()
br label %84
26: ; preds = %3
%27 = tail call i32 (...) @lat1Lower()
br label %84
28: ; preds = %3
%29 = tail call i32 (...) @elbow2Add()
br label %84
30: ; preds = %3
%31 = tail call i32 (...) @elbow2Subtract()
br label %84
32: ; preds = %3
%33 = tail call i32 (...) @elbow1Add()
br label %84
34: ; preds = %3
%35 = tail call i32 (...) @elbow1Subtract()
br label %84
36: ; preds = %3
%37 = tail call i32 (...) @RotateAdd()
br label %84
38: ; preds = %3
%39 = tail call i32 (...) @RotateSubtract()
br label %84
40: ; preds = %3
%41 = tail call i32 (...) @MechTiltAdd()
br label %84
42: ; preds = %3
%43 = tail call i32 (...) @MechTiltSubtract()
br label %84
44: ; preds = %3
%45 = tail call i32 (...) @RaiseLeg2Forward()
br label %84
46: ; preds = %3
%47 = tail call i32 (...) @LowerLeg2Backwards()
br label %84
48: ; preds = %3
%49 = tail call i32 (...) @RaiseLeg2Outwards()
br label %84
50: ; preds = %3
%51 = tail call i32 (...) @LowerLeg2Inwards()
br label %84
52: ; preds = %3
%53 = tail call i32 (...) @RaiseLeg1Forward()
br label %84
54: ; preds = %3
%55 = tail call i32 (...) @LowerLeg1Backwards()
br label %84
56: ; preds = %3
%57 = tail call i32 (...) @RaiseLeg1Outwards()
br label %84
58: ; preds = %3
%59 = tail call i32 (...) @LowerLeg1Inwards()
br label %84
60: ; preds = %3
%61 = tail call i32 (...) @Heel2Add()
br label %84
62: ; preds = %3
%63 = tail call i32 (...) @Heel2Subtract()
br label %84
64: ; preds = %3
%65 = tail call i32 (...) @Heel1Add()
br label %84
66: ; preds = %3
%67 = tail call i32 (...) @Heel1Subtract()
br label %84
68: ; preds = %3
%69 = tail call i32 (...) @Ankle2Add()
br label %84
70: ; preds = %3
%71 = tail call i32 (...) @Ankle2Subtract()
br label %84
72: ; preds = %3
%73 = tail call i32 (...) @Ankle1Add()
br label %84
74: ; preds = %3
%75 = tail call i32 (...) @Ankle1Subtract()
br label %84
76: ; preds = %3
%77 = tail call i32 (...) @LightTurnRight()
br label %84
78: ; preds = %3
%79 = tail call i32 (...) @LightTurnLeft()
br label %84
80: ; preds = %3
%81 = tail call i32 (...) @LightForwards()
br label %84
82: ; preds = %3
%83 = tail call i32 (...) @LightBackwards()
br label %84
84: ; preds = %4, %6, %8, %10, %12, %14, %16, %18, %20, %22, %24, %26, %28, %30, %32, %34, %36, %38, %40, %42, %44, %46, %48, %50, %52, %54, %56, %58, %60, %62, %64, %66, %68, %70, %72, %74, %76, %78, %80, %82
%85 = tail call i32 (...) @glutPostRedisplay()
br label %86
86: ; preds = %3, %84
ret void
}