#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 analogRead(int);
int /*<<< orphan*/ armDown(int);
int /*<<< orphan*/ armDownTrim();
int /*<<< orphan*/ armUp(int);
int /*<<< orphan*/ armUpDead();
int /*<<< orphan*/ delay(int);
int /*<<< orphan*/ driveBack(int);
int /*<<< orphan*/ driveBackDead();
int /*<<< orphan*/ driveBackSlow(int);
int /*<<< orphan*/ driveBackSlowDead();
int /*<<< orphan*/ driveForward(int);
int /*<<< orphan*/ driveForwardDead();
int /*<<< orphan*/ driveForwardSlowDead();
int /*<<< orphan*/ findLineRight();
int /*<<< orphan*/ followLine(int);
int /*<<< orphan*/ intake(int);
int /*<<< orphan*/ intakeDead();
int /*<<< orphan*/ outtake(int);
int /*<<< orphan*/ stopAll();
int /*<<< orphan*/ stopArm();
int /*<<< orphan*/ stopDrive();
int /*<<< orphan*/ stopIntake();
int /*<<< orphan*/ turnLeft(int);
int /*<<< orphan*/ turnRight(int);
void kakitRed() {
  int armMin = 300;
  int wallHeight = 1000;
  int goalHeight = 1650;
  int pot = analogRead(8);
  int encoder00 = 250;
  int encoder0 = 950;
  int encoder1 = 162;
  int encoder2 = 150;
  int encoder3 = 400;
  int encoder4 = 200;
  int encoder5 = 360;
  int encoder6 = 900;
  int encoder7 = 90;
  int encoder8 = 200;
  int encoder9 = 75;
  intake(300);
  armDownTrim();
  driveForwardDead();
  delay(1500);
  stopDrive();
  delay(500);
  driveBack(encoder00);
  intakeDead();
  turnLeft(encoder0);
  driveBackDead();
  delay(1300);
  stopDrive();
  delay(500);
  turnRight(encoder1);
  intakeDead();
  followLine(300);
  driveForwardSlowDead();
  delay(500);
  stopDrive();
  delay(600);
  driveForwardDead();
  delay(200);
  stopDrive();
  delay(600);
  stopIntake();
  driveBack(encoder3);
  armUpDead();
  delay(50);
  stopArm();
  stopIntake();
  driveBackSlowDead();
  delay(300);
  stopDrive();
  delay(500);
  driveBackDead();
  delay(1000);
  stopDrive();
  delay(500);
  driveForwardSlowDead();
  delay(800);
  stopDrive();
  delay(500);
  driveBackSlow(encoder4);
  turnLeft(encoder5);
  armDown(armMin);
  armDownTrim();
  driveForward(encoder6);
  armUp(goalHeight);
  turnRight(encoder7);
  findLineRight();
  followLine(300);
  driveForwardSlowDead();
  delay(700);
  stopDrive();
  outtake(7000);
  stopAll();
}


x86 assembly (clang, -O0):
<kakitRed>:
push   %rbp
mov    %rsp,%rbp
sub    $0x40,%rsp
movl   $0x12c,-0x4(%rbp)
movl   $0x3e8,-0x8(%rbp)
movl   $0x672,-0xc(%rbp)
mov    $0x8,%edi
call   1170 <analogRead@plt>
mov    %eax,-0x10(%rbp)
movl   $0xfa,-0x14(%rbp)
movl   $0x3b6,-0x18(%rbp)
movl   $0xa2,-0x1c(%rbp)
movl   $0x96,-0x20(%rbp)
movl   $0x190,-0x24(%rbp)
movl   $0xc8,-0x28(%rbp)
movl   $0x168,-0x2c(%rbp)
movl   $0x384,-0x30(%rbp)
movl   $0x5a,-0x34(%rbp)
movl   $0xc8,-0x38(%rbp)
movl   $0x4b,-0x3c(%rbp)
mov    $0x12c,%edi
call   1040 <intake@plt>
mov    $0x0,%al
call   1060 <armDownTrim@plt>
mov    $0x0,%al
call   1090 <driveForwardDead@plt>
mov    $0x5dc,%edi
call   1070 <delay@plt>
mov    $0x0,%al
call   10c0 <stopDrive@plt>
mov    $0x1f4,%edi
call   1070 <delay@plt>
mov    -0x14(%rbp),%edi
call   1140 <driveBack@plt>
mov    $0x0,%al
call   10a0 <intakeDead@plt>
mov    -0x18(%rbp),%edi
call   10e0 <turnLeft@plt>
mov    $0x0,%al
call   10d0 <driveBackDead@plt>
mov    $0x514,%edi
call   1070 <delay@plt>
mov    $0x0,%al
call   10c0 <stopDrive@plt>
mov    $0x1f4,%edi
call   1070 <delay@plt>
mov    -0x1c(%rbp),%edi
call   10b0 <turnRight@plt>
mov    $0x0,%al
call   10a0 <intakeDead@plt>
mov    $0x12c,%edi
call   10f0 <followLine@plt>
mov    $0x0,%al
call   1100 <driveForwardSlowDead@plt>
mov    $0x1f4,%edi
call   1070 <delay@plt>
mov    $0x0,%al
call   10c0 <stopDrive@plt>
mov    $0x258,%edi
call   1070 <delay@plt>
mov    $0x0,%al
call   1090 <driveForwardDead@plt>
mov    $0xc8,%edi
call   1070 <delay@plt>
mov    $0x0,%al
call   10c0 <stopDrive@plt>
mov    $0x258,%edi
call   1070 <delay@plt>
mov    $0x0,%al
call   1080 <stopIntake@plt>
mov    -0x24(%rbp),%edi
call   1140 <driveBack@plt>
mov    $0x0,%al
call   1180 <armUpDead@plt>
mov    $0x32,%edi
call   1070 <delay@plt>
mov    $0x0,%al
call   1120 <stopArm@plt>
mov    $0x0,%al
call   1080 <stopIntake@plt>
mov    $0x0,%al
call   1160 <driveBackSlowDead@plt>
mov    $0x12c,%edi
call   1070 <delay@plt>
mov    $0x0,%al
call   10c0 <stopDrive@plt>
mov    $0x1f4,%edi
call   1070 <delay@plt>
mov    $0x0,%al
call   10d0 <driveBackDead@plt>
mov    $0x3e8,%edi
call   1070 <delay@plt>
mov    $0x0,%al
call   10c0 <stopDrive@plt>
mov    $0x1f4,%edi
call   1070 <delay@plt>
mov    $0x0,%al
call   1100 <driveForwardSlowDead@plt>
mov    $0x320,%edi
call   1070 <delay@plt>
mov    $0x0,%al
call   10c0 <stopDrive@plt>
mov    $0x1f4,%edi
call   1070 <delay@plt>
mov    -0x28(%rbp),%edi
call   1130 <driveBackSlow@plt>
mov    -0x2c(%rbp),%edi
call   10e0 <turnLeft@plt>
mov    -0x4(%rbp),%edi
call   1110 <armDown@plt>
mov    $0x0,%al
call   1060 <armDownTrim@plt>
mov    -0x30(%rbp),%edi
call   1190 <driveForward@plt>
mov    -0xc(%rbp),%edi
call   1150 <armUp@plt>
mov    -0x34(%rbp),%edi
call   10b0 <turnRight@plt>
mov    $0x0,%al
call   1030 <findLineRight@plt>
mov    $0x12c,%edi
call   10f0 <followLine@plt>
mov    $0x0,%al
call   1100 <driveForwardSlowDead@plt>
mov    $0x2bc,%edi
call   1070 <delay@plt>
mov    $0x0,%al
call   10c0 <stopDrive@plt>
mov    $0x1b58,%edi
call   11a0 <outtake@plt>
mov    $0x0,%al
call   1050 <stopAll@plt>
add    $0x40,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<kakitRed>:
push   %rax
mov    $0x8,%edi
call   1170 <analogRead@plt>
mov    $0x12c,%edi
call   1040 <intake@plt>
xor    %eax,%eax
call   1060 <armDownTrim@plt>
xor    %eax,%eax
call   1090 <driveForwardDead@plt>
mov    $0x5dc,%edi
call   1070 <delay@plt>
xor    %eax,%eax
call   10c0 <stopDrive@plt>
mov    $0x1f4,%edi
call   1070 <delay@plt>
mov    $0xfa,%edi
call   1140 <driveBack@plt>
xor    %eax,%eax
call   10a0 <intakeDead@plt>
mov    $0x3b6,%edi
call   10e0 <turnLeft@plt>
xor    %eax,%eax
call   10d0 <driveBackDead@plt>
mov    $0x514,%edi
call   1070 <delay@plt>
xor    %eax,%eax
call   10c0 <stopDrive@plt>
mov    $0x1f4,%edi
call   1070 <delay@plt>
mov    $0xa2,%edi
call   10b0 <turnRight@plt>
xor    %eax,%eax
call   10a0 <intakeDead@plt>
mov    $0x12c,%edi
call   10f0 <followLine@plt>
xor    %eax,%eax
call   1100 <driveForwardSlowDead@plt>
mov    $0x1f4,%edi
call   1070 <delay@plt>
xor    %eax,%eax
call   10c0 <stopDrive@plt>
mov    $0x258,%edi
call   1070 <delay@plt>
xor    %eax,%eax
call   1090 <driveForwardDead@plt>
mov    $0xc8,%edi
call   1070 <delay@plt>
xor    %eax,%eax
call   10c0 <stopDrive@plt>
mov    $0x258,%edi
call   1070 <delay@plt>
xor    %eax,%eax
call   1080 <stopIntake@plt>
mov    $0x190,%edi
call   1140 <driveBack@plt>
xor    %eax,%eax
call   1180 <armUpDead@plt>
mov    $0x32,%edi
call   1070 <delay@plt>
xor    %eax,%eax
call   1120 <stopArm@plt>
xor    %eax,%eax
call   1080 <stopIntake@plt>
xor    %eax,%eax
call   1160 <driveBackSlowDead@plt>
mov    $0x12c,%edi
call   1070 <delay@plt>
xor    %eax,%eax
call   10c0 <stopDrive@plt>
mov    $0x1f4,%edi
call   1070 <delay@plt>
xor    %eax,%eax
call   10d0 <driveBackDead@plt>
mov    $0x3e8,%edi
call   1070 <delay@plt>
xor    %eax,%eax
call   10c0 <stopDrive@plt>
mov    $0x1f4,%edi
call   1070 <delay@plt>
xor    %eax,%eax
call   1100 <driveForwardSlowDead@plt>
mov    $0x320,%edi
call   1070 <delay@plt>
xor    %eax,%eax
call   10c0 <stopDrive@plt>
mov    $0x1f4,%edi
call   1070 <delay@plt>
mov    $0xc8,%edi
call   1130 <driveBackSlow@plt>
mov    $0x168,%edi
call   10e0 <turnLeft@plt>
mov    $0x12c,%edi
call   1110 <armDown@plt>
xor    %eax,%eax
call   1060 <armDownTrim@plt>
mov    $0x384,%edi
call   1190 <driveForward@plt>
mov    $0x672,%edi
call   1150 <armUp@plt>
mov    $0x5a,%edi
call   10b0 <turnRight@plt>
xor    %eax,%eax
call   1030 <findLineRight@plt>
mov    $0x12c,%edi
call   10f0 <followLine@plt>
xor    %eax,%eax
call   1100 <driveForwardSlowDead@plt>
mov    $0x2bc,%edi
call   1070 <delay@plt>
xor    %eax,%eax
call   10c0 <stopDrive@plt>
mov    $0x1b58,%edi
call   11a0 <outtake@plt>
xor    %eax,%eax
pop    %rcx
jmp    1050 <stopAll@plt>

LLVM IR (-O0):
define void @kakitRed() {
%1 = alloca i32
%2 = alloca i32
%3 = alloca i32
%4 = alloca i32
%5 = alloca i32
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32
%12 = alloca i32
%13 = alloca i32
%14 = alloca i32
%15 = alloca i32
store i32 300, i32* %1
store i32 1000, i32* %2
store i32 1650, i32* %3
%16 = call i32 @analogRead(i32 8)
store i32 %16, i32* %4
store i32 250, i32* %5
store i32 950, i32* %6
store i32 162, i32* %7
store i32 150, i32* %8
store i32 400, i32* %9
store i32 200, i32* %10
store i32 360, i32* %11
store i32 900, i32* %12
store i32 90, i32* %13
store i32 200, i32* %14
store i32 75, i32* %15
%17 = call i32 @intake(i32 300)
%18 = call i32 (...) @armDownTrim()
%19 = call i32 (...) @driveForwardDead()
%20 = call i32 @delay(i32 1500)
%21 = call i32 (...) @stopDrive()
%22 = call i32 @delay(i32 500)
%23 = load i32, i32* %5
%24 = call i32 @driveBack(i32 %23)
%25 = call i32 (...) @intakeDead()
%26 = load i32, i32* %6
%27 = call i32 @turnLeft(i32 %26)
%28 = call i32 (...) @driveBackDead()
%29 = call i32 @delay(i32 1300)
%30 = call i32 (...) @stopDrive()
%31 = call i32 @delay(i32 500)
%32 = load i32, i32* %7
%33 = call i32 @turnRight(i32 %32)
%34 = call i32 (...) @intakeDead()
%35 = call i32 @followLine(i32 300)
%36 = call i32 (...) @driveForwardSlowDead()
%37 = call i32 @delay(i32 500)
%38 = call i32 (...) @stopDrive()
%39 = call i32 @delay(i32 600)
%40 = call i32 (...) @driveForwardDead()
%41 = call i32 @delay(i32 200)
%42 = call i32 (...) @stopDrive()
%43 = call i32 @delay(i32 600)
%44 = call i32 (...) @stopIntake()
%45 = load i32, i32* %9
%46 = call i32 @driveBack(i32 %45)
%47 = call i32 (...) @armUpDead()
%48 = call i32 @delay(i32 50)
%49 = call i32 (...) @stopArm()
%50 = call i32 (...) @stopIntake()
%51 = call i32 (...) @driveBackSlowDead()
%52 = call i32 @delay(i32 300)
%53 = call i32 (...) @stopDrive()
%54 = call i32 @delay(i32 500)
%55 = call i32 (...) @driveBackDead()
%56 = call i32 @delay(i32 1000)
%57 = call i32 (...) @stopDrive()
%58 = call i32 @delay(i32 500)
%59 = call i32 (...) @driveForwardSlowDead()
%60 = call i32 @delay(i32 800)
%61 = call i32 (...) @stopDrive()
%62 = call i32 @delay(i32 500)
%63 = load i32, i32* %10
%64 = call i32 @driveBackSlow(i32 %63)
%65 = load i32, i32* %11
%66 = call i32 @turnLeft(i32 %65)
%67 = load i32, i32* %1
%68 = call i32 @armDown(i32 %67)
%69 = call i32 (...) @armDownTrim()
%70 = load i32, i32* %12
%71 = call i32 @driveForward(i32 %70)
%72 = load i32, i32* %3
%73 = call i32 @armUp(i32 %72)
%74 = load i32, i32* %13
%75 = call i32 @turnRight(i32 %74)
%76 = call i32 (...) @findLineRight()
%77 = call i32 @followLine(i32 300)
%78 = call i32 (...) @driveForwardSlowDead()
%79 = call i32 @delay(i32 700)
%80 = call i32 (...) @stopDrive()
%81 = call i32 @outtake(i32 7000)
%82 = call i32 (...) @stopAll()
ret void
}

LLVM IR (-O2):
define void @kakitRed() {
%1 = tail call i32 @analogRead(i32 8)
%2 = tail call i32 @intake(i32 300)
%3 = tail call i32 (...) @armDownTrim()
%4 = tail call i32 (...) @driveForwardDead()
%5 = tail call i32 @delay(i32 1500)
%6 = tail call i32 (...) @stopDrive()
%7 = tail call i32 @delay(i32 500)
%8 = tail call i32 @driveBack(i32 250)
%9 = tail call i32 (...) @intakeDead()
%10 = tail call i32 @turnLeft(i32 950)
%11 = tail call i32 (...) @driveBackDead()
%12 = tail call i32 @delay(i32 1300)
%13 = tail call i32 (...) @stopDrive()
%14 = tail call i32 @delay(i32 500)
%15 = tail call i32 @turnRight(i32 162)
%16 = tail call i32 (...) @intakeDead()
%17 = tail call i32 @followLine(i32 300)
%18 = tail call i32 (...) @driveForwardSlowDead()
%19 = tail call i32 @delay(i32 500)
%20 = tail call i32 (...) @stopDrive()
%21 = tail call i32 @delay(i32 600)
%22 = tail call i32 (...) @driveForwardDead()
%23 = tail call i32 @delay(i32 200)
%24 = tail call i32 (...) @stopDrive()
%25 = tail call i32 @delay(i32 600)
%26 = tail call i32 (...) @stopIntake()
%27 = tail call i32 @driveBack(i32 400)
%28 = tail call i32 (...) @armUpDead()
%29 = tail call i32 @delay(i32 50)
%30 = tail call i32 (...) @stopArm()
%31 = tail call i32 (...) @stopIntake()
%32 = tail call i32 (...) @driveBackSlowDead()
%33 = tail call i32 @delay(i32 300)
%34 = tail call i32 (...) @stopDrive()
%35 = tail call i32 @delay(i32 500)
%36 = tail call i32 (...) @driveBackDead()
%37 = tail call i32 @delay(i32 1000)
%38 = tail call i32 (...) @stopDrive()
%39 = tail call i32 @delay(i32 500)
%40 = tail call i32 (...) @driveForwardSlowDead()
%41 = tail call i32 @delay(i32 800)
%42 = tail call i32 (...) @stopDrive()
%43 = tail call i32 @delay(i32 500)
%44 = tail call i32 @driveBackSlow(i32 200)
%45 = tail call i32 @turnLeft(i32 360)
%46 = tail call i32 @armDown(i32 300)
%47 = tail call i32 (...) @armDownTrim()
%48 = tail call i32 @driveForward(i32 900)
%49 = tail call i32 @armUp(i32 1650)
%50 = tail call i32 @turnRight(i32 90)
%51 = tail call i32 (...) @findLineRight()
%52 = tail call i32 @followLine(i32 300)
%53 = tail call i32 (...) @driveForwardSlowDead()
%54 = tail call i32 @delay(i32 700)
%55 = tail call i32 (...) @stopDrive()
%56 = tail call i32 @outtake(i32 7000)
%57 = tail call i32 (...) @stopAll()
ret void
}