#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*/ 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 goalHeight = 1650;
  int encoder00 = 250;
  int encoder0 = 950;
  int encoder1 = 162;
  int encoder3 = 400;
  int encoder4 = 200;
  int encoder5 = 360;
  int encoder6 = 900;
  int encoder7 = 90;
  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    $0x30,%rsp
movl   $0x12c,-0x4(%rbp)
movl   $0x672,-0x8(%rbp)
movl   $0xfa,-0xc(%rbp)
movl   $0x3b6,-0x10(%rbp)
movl   $0xa2,-0x14(%rbp)
movl   $0x190,-0x18(%rbp)
movl   $0xc8,-0x1c(%rbp)
movl   $0x168,-0x20(%rbp)
movl   $0x384,-0x24(%rbp)
movl   $0x5a,-0x28(%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    -0xc(%rbp),%edi
call   1140 <driveBack@plt>
mov    $0x0,%al
call   10a0 <intakeDead@plt>
mov    -0x10(%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    -0x14(%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    -0x18(%rbp),%edi
call   1140 <driveBack@plt>
mov    $0x0,%al
call   1170 <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    -0x1c(%rbp),%edi
call   1130 <driveBackSlow@plt>
mov    -0x20(%rbp),%edi
call   10e0 <turnLeft@plt>
mov    -0x4(%rbp),%edi
call   1110 <armDown@plt>
mov    $0x0,%al
call   1060 <armDownTrim@plt>
mov    -0x24(%rbp),%edi
call   1180 <driveForward@plt>
mov    -0x8(%rbp),%edi
call   1150 <armUp@plt>
mov    -0x28(%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   1190 <outtake@plt>
mov    $0x0,%al
call   1050 <stopAll@plt>
add    $0x30,%rsp
pop    %rbp
ret

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

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