#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*/ driveDist(int, int, ...);
int /*<<< orphan*/ liftDist(int, int);
int /*<<< orphan*/ wait1Msec(int);
void cubeLeft() {
  driveDist(500, 70);
  wait1Msec(300);
  driveDist(300, 100);
  wait1Msec(500);
  liftDist(500, 127);
  driveDist(250, 80, -80);
  wait1Msec(500);
  driveDist(-400, -100);
  wait1Msec(500);
  liftDist(450, 127);
}


x86 assembly (clang, -O0):
<cubeLeft>:
push   %rbp
mov    %rsp,%rbp
mov    $0x1f4,%edi
mov    $0x46,%esi
mov    $0x0,%al
call   1040 <driveDist@plt>
mov    $0x12c,%edi
call   1030 <wait1Msec@plt>
mov    $0x12c,%edi
mov    $0x64,%esi
mov    $0x0,%al
call   1040 <driveDist@plt>
mov    $0x1f4,%edi
call   1030 <wait1Msec@plt>
mov    $0x1f4,%edi
mov    $0x7f,%esi
call   1050 <liftDist@plt>
mov    $0xfa,%edi
mov    $0x50,%esi
mov    $0xffffffb0,%edx
mov    $0x0,%al
call   1040 <driveDist@plt>
mov    $0x1f4,%edi
call   1030 <wait1Msec@plt>
mov    $0xfffffe70,%edi
mov    $0xffffff9c,%esi
mov    $0x0,%al
call   1040 <driveDist@plt>
mov    $0x1f4,%edi
call   1030 <wait1Msec@plt>
mov    $0x1c2,%edi
mov    $0x7f,%esi
call   1050 <liftDist@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<cubeLeft>:
push   %rax
mov    $0x1f4,%edi
mov    $0x46,%esi
xor    %eax,%eax
call   1040 <driveDist@plt>
mov    $0x12c,%edi
call   1030 <wait1Msec@plt>
mov    $0x12c,%edi
mov    $0x64,%esi
xor    %eax,%eax
call   1040 <driveDist@plt>
mov    $0x1f4,%edi
call   1030 <wait1Msec@plt>
mov    $0x1f4,%edi
mov    $0x7f,%esi
call   1050 <liftDist@plt>
mov    $0xfa,%edi
mov    $0x50,%esi
mov    $0xffffffb0,%edx
xor    %eax,%eax
call   1040 <driveDist@plt>
mov    $0x1f4,%edi
call   1030 <wait1Msec@plt>
mov    $0xfffffe70,%edi
mov    $0xffffff9c,%esi
xor    %eax,%eax
call   1040 <driveDist@plt>
mov    $0x1f4,%edi
call   1030 <wait1Msec@plt>
mov    $0x1c2,%edi
mov    $0x7f,%esi
pop    %rax
jmp    1050 <liftDist@plt>

LLVM IR (-O0):
define void @cubeLeft() {
%1 = call i32 (i32, i32, ...) @driveDist(i32 500, i32 70)
%2 = call i32 @wait1Msec(i32 300)
%3 = call i32 (i32, i32, ...) @driveDist(i32 300, i32 100)
%4 = call i32 @wait1Msec(i32 500)
%5 = call i32 @liftDist(i32 500, i32 127)
%6 = call i32 (i32, i32, ...) @driveDist(i32 250, i32 80, i32 -80)
%7 = call i32 @wait1Msec(i32 500)
%8 = call i32 (i32, i32, ...) @driveDist(i32 -400, i32 -100)
%9 = call i32 @wait1Msec(i32 500)
%10 = call i32 @liftDist(i32 450, i32 127)
ret void
}

LLVM IR (-O2):
define void @cubeLeft() {
%1 = tail call i32 (i32, i32, ...) @driveDist(i32 500, i32 70)
%2 = tail call i32 @wait1Msec(i32 300)
%3 = tail call i32 (i32, i32, ...) @driveDist(i32 300, i32 100)
%4 = tail call i32 @wait1Msec(i32 500)
%5 = tail call i32 @liftDist(i32 500, i32 127)
%6 = tail call i32 (i32, i32, ...) @driveDist(i32 250, i32 80, i32 -80)
%7 = tail call i32 @wait1Msec(i32 500)
%8 = tail call i32 (i32, i32, ...) @driveDist(i32 -400, i32 -100)
%9 = tail call i32 @wait1Msec(i32 500)
%10 = tail call i32 @liftDist(i32 450, i32 127)
ret void
}