#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 */
typedef struct TYPE_11__ TYPE_2__;
typedef struct TYPE_10__ TYPE_1__;

/* Type definitions */
struct TYPE_11__ {
  double member_0;
  double member_1;
  double member_2;
  double member_3;
};
struct TYPE_10__ {
  int member_0;
  int member_1;
  int member_2;
  int member_3;
};
typedef TYPE_1__ GLubyte;
typedef TYPE_2__ GLfloat;
typedef TYPE_2__ GLdouble;

/* Variables and functions */
int /*<<< orphan*/ exit(int);
int /*<<< orphan*/ printf(char *);
void drawCube(GLdouble x0, GLdouble x1, GLdouble y0, GLdouble y1, GLdouble z0,
              GLdouble z1) {
  static GLfloat v[8][3];
  static GLfloat c[8][4] = {{0.0, 0.0, 0.0, 1.0}, {1.0, 0.0, 0.0, 1.0},
                            {0.0, 1.0, 0.0, 1.0}, {1.0, 1.0, 0.0, 1.0},
                            {0.0, 0.0, 1.0, 1.0}, {1.0, 0.0, 1.0, 1.0},
                            {0.0, 1.0, 1.0, 1.0}, {1.0, 1.0, 1.0, 1.0}};
  static GLubyte indices[6][4] = {{4, 5, 6, 7}, {2, 3, 7, 6}, {0, 4, 7, 3},
                                  {0, 1, 5, 4}, {1, 5, 6, 2}, {0, 3, 2, 1}};
  v[0][0] = v[3][0] = v[4][0] = v[7][0] = x0;
  v[1][0] = v[2][0] = v[5][0] = v[6][0] = x1;
  v[0][1] = v[1][1] = v[4][1] = v[5][1] = y0;
  v[2][1] = v[3][1] = v[6][1] = v[7][1] = y1;
  v[0][2] = v[1][2] = v[2][2] = v[3][2] = z0;
  v[4][2] = v[5][2] = v[6][2] = v[7][2] = z1;
  printf("If this is GL Version 1.0, ");
  printf("vertex arrays are not supported.\n");
  exit(1);
}


x86 assembly (clang, -O0):
<drawCube>:
push   %rbp
mov    %rsp,%rbp
lea    0xb0(%rbp),%rax
lea    0x90(%rbp),%rcx
lea    0x70(%rbp),%rdx
lea    0x50(%rbp),%rsi
lea    0x30(%rbp),%rdi
lea    0x10(%rbp),%r8
mov    (%r8),%r9
mov    %r9,0x3724(%rip)
mov    0x8(%r8),%r9
mov    %r9,0x3721(%rip)
mov    0x10(%r8),%r9
mov    %r9,0x371e(%rip)
mov    0x18(%r8),%r8
mov    %r8,0x371b(%rip)
mov    0x36fc(%rip),%r8
mov    %r8,0x35d5(%rip)
mov    0x36f6(%rip),%r8
mov    %r8,0x35cf(%rip)
mov    0x36f0(%rip),%r8
mov    %r8,0x35c9(%rip)
mov    0x36ea(%rip),%r8
mov    %r8,0x35c3(%rip)
mov    0x35a4(%rip),%r8
mov    %r8,0x353d(%rip)
mov    0x359e(%rip),%r8
mov    %r8,0x3537(%rip)
mov    0x3598(%rip),%r8
mov    %r8,0x3531(%rip)
mov    0x3592(%rip),%r8
mov    %r8,0x352b(%rip)
mov    0x350c(%rip),%r8
mov    %r8,0x33e5(%rip)
mov    0x3506(%rip),%r8
mov    %r8,0x33df(%rip)
mov    0x3500(%rip),%r8
mov    %r8,0x33d9(%rip)
mov    0x34fa(%rip),%r8
mov    %r8,0x33d3(%rip)
mov    (%rdi),%r8
mov    %r8,0x35f1(%rip)
mov    0x8(%rdi),%r8
mov    %r8,0x35ee(%rip)
mov    0x10(%rdi),%r8
mov    %r8,0x35eb(%rip)
mov    0x18(%rdi),%rdi
mov    %rdi,0x35e8(%rip)
mov    0x35c9(%rip),%rdi
mov    %rdi,0x3562(%rip)
mov    0x35c3(%rip),%rdi
mov    %rdi,0x355c(%rip)
mov    0x35bd(%rip),%rdi
mov    %rdi,0x3556(%rip)
mov    0x35b7(%rip),%rdi
mov    %rdi,0x3550(%rip)
mov    0x3531(%rip),%rdi
mov    %rdi,0x340a(%rip)
mov    0x352b(%rip),%rdi
mov    %rdi,0x3404(%rip)
mov    0x3525(%rip),%rdi
mov    %rdi,0x33fe(%rip)
mov    0x351f(%rip),%rdi
mov    %rdi,0x33f8(%rip)
mov    0x33d9(%rip),%rdi
mov    %rdi,0x3372(%rip)
mov    0x33d3(%rip),%rdi
mov    %rdi,0x336c(%rip)
mov    0x33cd(%rip),%rdi
mov    %rdi,0x3366(%rip)
mov    0x33c7(%rip),%rdi
mov    %rdi,0x3360(%rip)
mov    (%rsi),%rdi
mov    %rdi,0x34de(%rip)
mov    0x8(%rsi),%rdi
mov    %rdi,0x34db(%rip)
mov    0x10(%rsi),%rdi
mov    %rdi,0x34d8(%rip)
mov    0x18(%rsi),%rsi
mov    %rsi,0x34d5(%rip)
mov    0x34b6(%rip),%rsi
mov    %rsi,0x344f(%rip)
mov    0x34b0(%rip),%rsi
mov    %rsi,0x3449(%rip)
mov    0x34aa(%rip),%rsi
mov    %rsi,0x3443(%rip)
mov    0x34a4(%rip),%rsi
mov    %rsi,0x343d(%rip)
mov    0x341e(%rip),%rsi
mov    %rsi,0x32f7(%rip)
mov    0x3418(%rip),%rsi
mov    %rsi,0x32f1(%rip)
mov    0x3412(%rip),%rsi
mov    %rsi,0x32eb(%rip)
mov    0x340c(%rip),%rsi
mov    %rsi,0x32e5(%rip)
mov    0x32c6(%rip),%rsi
mov    %rsi,0x325f(%rip)
mov    0x32c0(%rip),%rsi
mov    %rsi,0x3259(%rip)
mov    0x32ba(%rip),%rsi
mov    %rsi,0x3253(%rip)
mov    0x32b4(%rip),%rsi
mov    %rsi,0x324d(%rip)
mov    (%rdx),%rsi
mov    %rsi,0x34cb(%rip)
mov    0x8(%rdx),%rsi
mov    %rsi,0x34c8(%rip)
mov    0x10(%rdx),%rsi
mov    %rsi,0x34c5(%rip)
mov    0x18(%rdx),%rdx
mov    %rdx,0x34c2(%rip)
mov    0x34a3(%rip),%rdx
mov    %rdx,0x343c(%rip)
mov    0x349d(%rip),%rdx
mov    %rdx,0x3436(%rip)
mov    0x3497(%rip),%rdx
mov    %rdx,0x3430(%rip)
mov    0x3491(%rip),%rdx
mov    %rdx,0x342a(%rip)
mov    0x340b(%rip),%rdx
mov    %rdx,0x32e4(%rip)
mov    0x3405(%rip),%rdx
mov    %rdx,0x32de(%rip)
mov    0x33ff(%rip),%rdx
mov    %rdx,0x32d8(%rip)
mov    0x33f9(%rip),%rdx
mov    %rdx,0x32d2(%rip)
mov    0x32b3(%rip),%rdx
mov    %rdx,0x324c(%rip)
mov    0x32ad(%rip),%rdx
mov    %rdx,0x3246(%rip)
mov    0x32a7(%rip),%rdx
mov    %rdx,0x3240(%rip)
mov    0x32a1(%rip),%rdx
mov    %rdx,0x323a(%rip)
mov    (%rcx),%rdx
mov    %rdx,0x3298(%rip)
mov    0x8(%rcx),%rdx
mov    %rdx,0x3295(%rip)
mov    0x10(%rcx),%rdx
mov    %rdx,0x3292(%rip)
mov    0x18(%rcx),%rcx
mov    %rcx,0x328f(%rip)
mov    0x3270(%rip),%rcx
mov    %rcx,0x3209(%rip)
mov    0x326a(%rip),%rcx
mov    %rcx,0x3203(%rip)
mov    0x3264(%rip),%rcx
mov    %rcx,0x31fd(%rip)
mov    0x325e(%rip),%rcx
mov    %rcx,0x31f7(%rip)
mov    0x31d8(%rip),%rcx
mov    %rcx,0x3171(%rip)
mov    0x31d2(%rip),%rcx
mov    %rcx,0x316b(%rip)
mov    0x31cc(%rip),%rcx
mov    %rcx,0x3165(%rip)
mov    0x31c6(%rip),%rcx
mov    %rcx,0x315f(%rip)
mov    0x3140(%rip),%rcx
mov    %rcx,0x30d9(%rip)
mov    0x313a(%rip),%rcx
mov    %rcx,0x30d3(%rip)
mov    0x3134(%rip),%rcx
mov    %rcx,0x30cd(%rip)
mov    0x312e(%rip),%rcx
mov    %rcx,0x30c7(%rip)
mov    (%rax),%rcx
mov    %rcx,0x3345(%rip)
mov    0x8(%rax),%rcx
mov    %rcx,0x3342(%rip)
mov    0x10(%rax),%rcx
mov    %rcx,0x333f(%rip)
mov    0x18(%rax),%rax
mov    %rax,0x333c(%rip)
mov    0x331d(%rip),%rax
mov    %rax,0x32b6(%rip)
mov    0x3317(%rip),%rax
mov    %rax,0x32b0(%rip)
mov    0x3311(%rip),%rax
mov    %rax,0x32aa(%rip)
mov    0x330b(%rip),%rax
mov    %rax,0x32a4(%rip)
mov    0x3285(%rip),%rax
mov    %rax,0x321e(%rip)
mov    0x327f(%rip),%rax
mov    %rax,0x3218(%rip)
mov    0x3279(%rip),%rax
mov    %rax,0x3212(%rip)
mov    0x3273(%rip),%rax
mov    %rax,0x320c(%rip)
mov    0x31ed(%rip),%rax
mov    %rax,0x3186(%rip)
mov    0x31e7(%rip),%rax
mov    %rax,0x3180(%rip)
mov    0x31e1(%rip),%rax
mov    %rax,0x317a(%rip)
mov    0x31db(%rip),%rax
mov    %rax,0x3174(%rip)
lea    0x9c5(%rip),%rdi
call   1030 <printf@plt>
lea    0x9d5(%rip),%rdi
call   1030 <printf@plt>
mov    $0x1,%edi
call   1040 <exit@plt>

x86 assembly (clang, -O2):
<drawCube>:
push   %rax
lea    0xec8(%rip),%rdi
call   1040 <printf@plt>
lea    0xed8(%rip),%rdi
call   1030 <puts@plt>
mov    $0x1,%edi
call   1050 <exit@plt>

LLVM IR (-O0):
%struct.TYPE_11__ = type { double, double, double, double }
%struct.TYPE_10__ = type { i32, i32, i32, i32 }
@drawCube.v = internal global [8 x [3 x %struct.TYPE_11__]] zeroinitializer
@drawCube.c = internal global [8 x [4 x %struct.TYPE_11__]] [[4 x %struct.TYPE_11__] [%struct.TYPE_11__ { double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 1.000000e+00 }, %struct.TYPE_11__ zeroinitializer, %struct.TYPE_11__ zeroinitializer, %struct.TYPE_11__ zeroinitializer], [4 x %struct.TYPE_11__] [%struct.TYPE_11__ { double 1.000000e+00, double 0.000000e+00, double 0.000000e+00, double 1.000000e+00 }, %struct.TYPE_11__ zeroinitializer, %struct.TYPE_11__ zeroinitializer, %struct.TYPE_11__ zeroinitializer], [4 x %struct.TYPE_11__] [%struct.TYPE_11__ { double 0.000000e+00, double 1.000000e+00, double 0.000000e+00, double 1.000000e+00 }, %struct.TYPE_11__ zeroinitializer, %struct.TYPE_11__ zeroinitializer, %struct.TYPE_11__ zeroinitializer], [4 x %struct.TYPE_11__] [%struct.TYPE_11__ { double 1.000000e+00, double 1.000000e+00, double 0.000000e+00, double 1.000000e+00 }, %struct.TYPE_11__ zeroinitializer, %struct.TYPE_11__ zeroinitializer, %struct.TYPE_11__ zeroinitializer], [4 x %struct.TYPE_11__] [%struct.TYPE_11__ { double 0.000000e+00, double 0.000000e+00, double 1.000000e+00, double 1.000000e+00 }, %struct.TYPE_11__ zeroinitializer, %struct.TYPE_11__ zeroinitializer, %struct.TYPE_11__ zeroinitializer], [4 x %struct.TYPE_11__] [%struct.TYPE_11__ { double 1.000000e+00, double 0.000000e+00, double 1.000000e+00, double 1.000000e+00 }, %struct.TYPE_11__ zeroinitializer, %struct.TYPE_11__ zeroinitializer, %struct.TYPE_11__ zeroinitializer], [4 x %struct.TYPE_11__] [%struct.TYPE_11__ { double 0.000000e+00, double 1.000000e+00, double 1.000000e+00, double 1.000000e+00 }, %struct.TYPE_11__ zeroinitializer, %struct.TYPE_11__ zeroinitializer, %struct.TYPE_11__ zeroinitializer], [4 x %struct.TYPE_11__] [%struct.TYPE_11__ { double 1.000000e+00, double 1.000000e+00, double 1.000000e+00, double 1.000000e+00 }, %struct.TYPE_11__ zeroinitializer, %struct.TYPE_11__ zeroinitializer, %struct.TYPE_11__ zeroinitializer]]
@drawCube.indices = internal global [6 x [4 x %struct.TYPE_10__]] [[4 x %struct.TYPE_10__] [%struct.TYPE_10__ { i32 4, i32 5, i32 6, i32 7 }, %struct.TYPE_10__ zeroinitializer, %struct.TYPE_10__ zeroinitializer, %struct.TYPE_10__ zeroinitializer], [4 x %struct.TYPE_10__] [%struct.TYPE_10__ { i32 2, i32 3, i32 7, i32 6 }, %struct.TYPE_10__ zeroinitializer, %struct.TYPE_10__ zeroinitializer, %struct.TYPE_10__ zeroinitializer], [4 x %struct.TYPE_10__] [%struct.TYPE_10__ { i32 0, i32 4, i32 7, i32 3 }, %struct.TYPE_10__ zeroinitializer, %struct.TYPE_10__ zeroinitializer, %struct.TYPE_10__ zeroinitializer], [4 x %struct.TYPE_10__] [%struct.TYPE_10__ { i32 0, i32 1, i32 5, i32 4 }, %struct.TYPE_10__ zeroinitializer, %struct.TYPE_10__ zeroinitializer, %struct.TYPE_10__ zeroinitializer], [4 x %struct.TYPE_10__] [%struct.TYPE_10__ { i32 1, i32 5, i32 6, i32 2 }, %struct.TYPE_10__ zeroinitializer, %struct.TYPE_10__ zeroinitializer, %struct.TYPE_10__ zeroinitializer], [4 x %struct.TYPE_10__] [%struct.TYPE_10__ { i32 0, i32 3, i32 2, i32 1 }, %struct.TYPE_10__ zeroinitializer, %struct.TYPE_10__ zeroinitializer, %struct.TYPE_10__ zeroinitializer]]
@.str = [28 x i8] c"If this is GL Version 1.0, \00"
@.str.1 = [34 x i8] c"vertex arrays are not supported.\0A\00"
define void @drawCube(%struct.TYPE_11__* byval(%struct.TYPE_11__) align 8 %0, %struct.TYPE_11__* byval(%struct.TYPE_11__) align 8 %1, %struct.TYPE_11__* byval(%struct.TYPE_11__) align 8 %2, %struct.TYPE_11__* byval(%struct.TYPE_11__) align 8 %3, %struct.TYPE_11__* byval(%struct.TYPE_11__) align 8 %4, %struct.TYPE_11__* byval(%struct.TYPE_11__) align 8 %5) {
%7 = bitcast %struct.TYPE_11__* %0 to i8*
%8 = bitcast %struct.TYPE_11__* %1 to i8*
%9 = bitcast %struct.TYPE_11__* %2 to i8*
%10 = bitcast %struct.TYPE_11__* %3 to i8*
%11 = bitcast %struct.TYPE_11__* %4 to i8*
%12 = bitcast %struct.TYPE_11__* %5 to i8*
%13 = call i32 @printf(i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str, i64 0, i64 0))
%14 = call i32 @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.1, i64 0, i64 0))
%15 = call i32 @exit(i32 1)
unreachable
}

LLVM IR (-O2):
%struct.TYPE_11__ = type { double, double, double, double }
@.str = [28 x i8] c"If this is GL Version 1.0, \00"
@str = [33 x i8] c"vertex arrays are not supported.\00"
define void @drawCube(%struct.TYPE_11__* nocapture byval(%struct.TYPE_11__) align 8 %0, %struct.TYPE_11__* nocapture byval(%struct.TYPE_11__) align 8 %1, %struct.TYPE_11__* nocapture byval(%struct.TYPE_11__) align 8 %2, %struct.TYPE_11__* nocapture byval(%struct.TYPE_11__) align 8 %3, %struct.TYPE_11__* nocapture byval(%struct.TYPE_11__) align 8 %4, %struct.TYPE_11__* nocapture byval(%struct.TYPE_11__) align 8 %5) {
%7 = tail call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([28 x i8], [28 x i8]* @.str, i64 0, i64 0))
%8 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([33 x i8], [33 x i8]* @str, i64 0, i64 0))
%9 = tail call i32 @exit(i32 1)
unreachable
}