#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 */
typedef double GLfloat;

/* Variables and functions */
int /*<<< orphan*/ GL_AMBIENT;
int /*<<< orphan*/ GL_CONSTANT_ATTENUATION;
int /*<<< orphan*/ GL_DEPTH_TEST;
int /*<<< orphan*/ GL_DIFFUSE;
int /*<<< orphan*/ GL_FRONT;
int /*<<< orphan*/ GL_LIGHT0;
int /*<<< orphan*/ GL_LIGHT1;
int /*<<< orphan*/ GL_LIGHTING;
int /*<<< orphan*/ GL_LIGHT_MODEL_AMBIENT;
int /*<<< orphan*/ GL_POSITION;
int /*<<< orphan*/ GL_QUADRATIC_ATTENUATION;
int /*<<< orphan*/ GL_SHININESS;
int /*<<< orphan*/ GL_SMOOTH;
int /*<<< orphan*/ GL_SPECULAR;
int /*<<< orphan*/ GL_SPOT_CUTOFF;
int /*<<< orphan*/ GL_SPOT_DIRECTION;
int /*<<< orphan*/ GL_SPOT_EXPONENT;
int /*<<< orphan*/ glClearColor(double, double, double, double);
int /*<<< orphan*/ glEnable(int /*<<< orphan*/);
int /*<<< orphan*/ glLightModelfv(int /*<<< orphan*/, double *);
int /*<<< orphan*/ glLightf(int /*<<< orphan*/, int /*<<< orphan*/, double);
int /*<<< orphan*/ glLightfv(int /*<<< orphan*/, int /*<<< orphan*/, double *);
int /*<<< orphan*/ glMaterialfv(int /*<<< orphan*/, int /*<<< orphan*/,
                                double *);
int /*<<< orphan*/ glShadeModel(int /*<<< orphan*/);
void init() {
  GLfloat mat_specular[] = {1.0, 1.0, 1.0, 1.0};
  GLfloat mat_shineness[] = {50.0};
  GLfloat light0_position[] = {1.0, 1.0, 1.0, 0.0};
  GLfloat white_light[] = {1.0, 1.0, 1.0, 1.0};
  GLfloat lmodel_ambient[] = {0.1, 0.1, 0.1, 1.0};
  glClearColor(0.0, 0.0, 0.0, 0.0);
  glShadeModel(GL_SMOOTH);
  glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular);
  glMaterialfv(GL_FRONT, GL_SHININESS, mat_shineness);
  glLightfv(GL_LIGHT0, GL_POSITION, light0_position);
  glLightfv(GL_LIGHT0, GL_DIFFUSE, white_light);
  glLightfv(GL_LIGHT0, GL_SPECULAR, white_light);
  GLfloat light1_ambient[] = {0.2, 0.2, 0.2, 1.0};
  GLfloat light1_diffuse[] = {0.5, 1.0, 1.0, 1.0};
  GLfloat light1_specular[] = {0.5, 1.0, 1.0, 1.0};
  GLfloat light1_position[] = {-2.0, -2.0, 1.0, 1.0};
  GLfloat spot_direction[] = {1.0, 1.0, 0.0};
  glLightfv(GL_LIGHT1, GL_AMBIENT, light1_ambient);
  glLightfv(GL_LIGHT1, GL_DIFFUSE, light1_diffuse);
  glLightfv(GL_LIGHT1, GL_SPECULAR, light1_specular);
  glLightfv(GL_LIGHT1, GL_POSITION, light1_position);
  glLightf(GL_LIGHT1, GL_CONSTANT_ATTENUATION, 1.5);
  glLightf(GL_LIGHT1, GL_LIGHT_MODEL_AMBIENT, 0.2);
  glLightf(GL_LIGHT1, GL_QUADRATIC_ATTENUATION, 0.2);
  glLightf(GL_LIGHT1, GL_SPOT_CUTOFF, 45.0);
  glLightfv(GL_LIGHT1, GL_SPOT_DIRECTION, spot_direction);
  glLightf(GL_LIGHT1, GL_SPOT_EXPONENT, 2.0);
  glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient);
  glEnable(GL_LIGHTING);
  glEnable(GL_LIGHT0);
  glEnable(GL_LIGHT1);
  glEnable(GL_DEPTH_TEST);
}


x86 assembly (clang, -O0):
<init>:
push   %rbp
mov    %rsp,%rbp
sub    $0x130,%rsp
mov    0xeae(%rip),%rax
mov    %rax,-0x20(%rbp)
mov    0xeab(%rip),%rax
mov    %rax,-0x18(%rbp)
mov    0xea8(%rip),%rax
mov    %rax,-0x10(%rbp)
mov    0xea5(%rip),%rax
mov    %rax,-0x8(%rbp)
mov    0xe72(%rip),%rax
mov    %rax,-0x28(%rbp)
mov    0xe97(%rip),%rax
mov    %rax,-0x50(%rbp)
mov    0xe94(%rip),%rax
mov    %rax,-0x48(%rbp)
mov    0xe91(%rip),%rax
mov    %rax,-0x40(%rbp)
mov    0xe8e(%rip),%rax
mov    %rax,-0x38(%rbp)
mov    0xe4b(%rip),%rax
mov    %rax,-0x70(%rbp)
mov    0xe48(%rip),%rax
mov    %rax,-0x68(%rbp)
mov    0xe45(%rip),%rax
mov    %rax,-0x60(%rbp)
mov    0xe42(%rip),%rax
mov    %rax,-0x58(%rbp)
mov    0xe5f(%rip),%rax
mov    %rax,-0x90(%rbp)
mov    0xe59(%rip),%rax
mov    %rax,-0x88(%rbp)
mov    0xe53(%rip),%rax
mov    %rax,-0x80(%rbp)
mov    0xe50(%rip),%rax
mov    %rax,-0x78(%rbp)
xorps  %xmm3,%xmm3
movaps %xmm3,%xmm0
movaps %xmm3,%xmm1
movaps %xmm3,%xmm2
call   1060 <glClearColor@plt>
mov    0x2d24(%rip),%rax
mov    (%rax),%edi
call   1080 <glShadeModel@plt>
mov    0x2d66(%rip),%rax
mov    (%rax),%edi
mov    0x2d6d(%rip),%rax
mov    (%rax),%esi
lea    -0x20(%rbp),%rdx
call   1090 <glMaterialfv@plt>
mov    0x2d4b(%rip),%rax
mov    (%rax),%edi
mov    0x2d5a(%rip),%rax
mov    (%rax),%esi
lea    -0x28(%rbp),%rdx
call   1090 <glMaterialfv@plt>
mov    0x2d10(%rip),%rax
mov    (%rax),%edi
mov    0x2cf7(%rip),%rax
mov    (%rax),%esi
lea    -0x50(%rbp),%rdx
call   1030 <glLightfv@plt>
mov    0x2cf5(%rip),%rax
mov    (%rax),%edi
mov    0x2cc4(%rip),%rax
mov    (%rax),%esi
lea    -0x70(%rbp),%rdx
call   1030 <glLightfv@plt>
mov    0x2cda(%rip),%rax
mov    (%rax),%edi
mov    0x2d01(%rip),%rax
mov    (%rax),%esi
lea    -0x70(%rbp),%rdx
call   1030 <glLightfv@plt>
mov    0xda7(%rip),%rax
mov    %rax,-0xb0(%rbp)
mov    0xda1(%rip),%rax
mov    %rax,-0xa8(%rbp)
mov    0xd9b(%rip),%rax
mov    %rax,-0xa0(%rbp)
mov    0xd95(%rip),%rax
mov    %rax,-0x98(%rbp)
mov    0xd8f(%rip),%rax
mov    %rax,-0xd0(%rbp)
mov    0xd89(%rip),%rax
mov    %rax,-0xc8(%rbp)
mov    0xd83(%rip),%rax
mov    %rax,-0xc0(%rbp)
mov    0xd7d(%rip),%rax
mov    %rax,-0xb8(%rbp)
mov    0xd57(%rip),%rax
mov    %rax,-0xf0(%rbp)
mov    0xd51(%rip),%rax
mov    %rax,-0xe8(%rbp)
mov    0xd4b(%rip),%rax
mov    %rax,-0xe0(%rbp)
mov    0xd45(%rip),%rax
mov    %rax,-0xd8(%rbp)
mov    0xd3f(%rip),%rax
mov    %rax,-0x110(%rbp)
mov    0xd39(%rip),%rax
mov    %rax,-0x108(%rbp)
mov    0xd33(%rip),%rax
mov    %rax,-0x100(%rbp)
mov    0xd2d(%rip),%rax
mov    %rax,-0xf8(%rbp)
mov    0xd27(%rip),%rax
mov    %rax,-0x130(%rbp)
mov    0xd21(%rip),%rax
mov    %rax,-0x128(%rbp)
mov    0xd1b(%rip),%rax
mov    %rax,-0x120(%rbp)
mov    0x2b6d(%rip),%rax
mov    (%rax),%edi
mov    0x2bf4(%rip),%rax
mov    (%rax),%esi
lea    -0xb0(%rbp),%rdx
call   1030 <glLightfv@plt>
mov    0x2b4f(%rip),%rax
mov    (%rax),%edi
mov    0x2b66(%rip),%rax
mov    (%rax),%esi
lea    -0xd0(%rbp),%rdx
call   1030 <glLightfv@plt>
mov    0x2b31(%rip),%rax
mov    (%rax),%edi
mov    0x2ba0(%rip),%rax
mov    (%rax),%esi
lea    -0xf0(%rbp),%rdx
call   1030 <glLightfv@plt>
mov    0x2b13(%rip),%rax
mov    (%rax),%edi
mov    0x2b42(%rip),%rax
mov    (%rax),%esi
lea    -0x110(%rbp),%rdx
call   1030 <glLightfv@plt>
mov    0x2af5(%rip),%rax
mov    (%rax),%edi
mov    0x2af4(%rip),%rax
mov    (%rax),%esi
movsd  0xb9a(%rip),%xmm0
call   1070 <glLightf@plt>
mov    0x2ad6(%rip),%rax
mov    (%rax),%edi
mov    0x2b2d(%rip),%rax
mov    (%rax),%esi
movsd  0xb73(%rip),%xmm0
call   1070 <glLightf@plt>
mov    0x2ab7(%rip),%rax
mov    (%rax),%edi
mov    0x2ad6(%rip),%rax
mov    (%rax),%esi
movsd  0xb54(%rip),%xmm0
call   1070 <glLightf@plt>
mov    0x2a98(%rip),%rax
mov    (%rax),%edi
mov    0x2b17(%rip),%rax
mov    (%rax),%esi
movsd  0xb2d(%rip),%xmm0
call   1070 <glLightf@plt>
mov    0x2a79(%rip),%rax
mov    (%rax),%edi
mov    0x2ac0(%rip),%rax
mov    (%rax),%esi
lea    -0x130(%rbp),%rdx
call   1030 <glLightfv@plt>
mov    0x2a5b(%rip),%rax
mov    (%rax),%edi
mov    0x2aaa(%rip),%rax
mov    (%rax),%esi
movsd  0xae8(%rip),%xmm0
call   1070 <glLightf@plt>
mov    0x2a9c(%rip),%rax
mov    (%rax),%edi
lea    -0x90(%rbp),%rsi
call   1040 <glLightModelfv@plt>
mov    0x2a57(%rip),%rax
mov    (%rax),%edi
call   1050 <glEnable@plt>
mov    0x2a61(%rip),%rax
mov    (%rax),%edi
call   1050 <glEnable@plt>
mov    0x2a0b(%rip),%rax
mov    (%rax),%edi
call   1050 <glEnable@plt>
mov    0x2a0d(%rip),%rax
mov    (%rax),%edi
call   1050 <glEnable@plt>
add    $0x130,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<init>:
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x130,%rsp
movaps 0xec9(%rip),%xmm0
movaps %xmm0,0x120(%rsp)
movaps 0xeaa(%rip),%xmm1
movaps %xmm1,0x110(%rsp)
movabs $0x4049000000000000,%rax
mov    %rax,0x8(%rsp)
movaps 0xe7c(%rip),%xmm2
movaps %xmm2,0x100(%rsp)
movaps 0xe5d(%rip),%xmm2
movaps %xmm2,0xf0(%rsp)
movaps %xmm0,0xe0(%rsp)
movaps %xmm1,0xd0(%rsp)
movaps 0xe8e(%rip),%xmm0
movaps %xmm0,0xc0(%rsp)
movaps 0xe6f(%rip),%xmm0
movaps %xmm0,0xb0(%rsp)
xorps  %xmm0,%xmm0
xorps  %xmm1,%xmm1
xorps  %xmm2,%xmm2
xorps  %xmm3,%xmm3
call   1060 <glClearColor@plt>
mov    0x2d67(%rip),%rax
mov    (%rax),%edi
call   1080 <glShadeModel@plt>
mov    0x2da9(%rip),%rbx
mov    (%rbx),%edi
mov    0x2db0(%rip),%r15
mov    (%r15),%esi
lea    0x110(%rsp),%rdx
call   1090 <glMaterialfv@plt>
mov    (%rbx),%edi
mov    0x2d9f(%rip),%rax
mov    (%rax),%esi
lea    0x8(%rsp),%rdx
call   1090 <glMaterialfv@plt>
mov    0x2d54(%rip),%r14
mov    (%r14),%edi
mov    0x2d3a(%rip),%r12
mov    (%r12),%esi
lea    0xf0(%rsp),%rdx
call   1030 <glLightfv@plt>
mov    (%r14),%edi
mov    0x2d07(%rip),%r13
mov    0x0(%r13),%esi
lea    0xd0(%rsp),%rbx
mov    %rbx,%rdx
call   1030 <glLightfv@plt>
mov    (%r14),%edi
mov    (%r15),%esi
mov    %rbx,%rdx
call   1030 <glLightfv@plt>
movaps 0xdee(%rip),%xmm0
movaps %xmm0,0xa0(%rsp)
movaps 0xdcf(%rip),%xmm0
movaps %xmm0,0x90(%rsp)
movaps 0xdf0(%rip),%xmm0
movaps %xmm0,0x80(%rsp)
movaps 0xdd1(%rip),%xmm1
movaps %xmm1,0x70(%rsp)
movaps %xmm0,0x60(%rsp)
movaps %xmm1,0x50(%rsp)
movaps 0xdeb(%rip),%xmm0
movaps %xmm0,0x40(%rsp)
movaps 0xdcf(%rip),%xmm0
movaps %xmm0,0x30(%rsp)
mov    0xdf3(%rip),%rax
mov    %rax,0x20(%rsp)
movaps 0xdd7(%rip),%xmm0
movaps %xmm0,0x10(%rsp)
mov    0x2c4b(%rip),%rbx
mov    (%rbx),%edi
mov    0x2cd2(%rip),%rax
mov    (%rax),%esi
lea    0x90(%rsp),%rdx
call   1030 <glLightfv@plt>
mov    (%rbx),%edi
mov    0x0(%r13),%esi
lea    0x70(%rsp),%rdx
call   1030 <glLightfv@plt>
mov    (%rbx),%edi
mov    (%r15),%esi
lea    0x50(%rsp),%rdx
call   1030 <glLightfv@plt>
mov    (%rbx),%edi
mov    (%r12),%esi
lea    0x30(%rsp),%rdx
call   1030 <glLightfv@plt>
mov    (%rbx),%edi
mov    0x2c03(%rip),%rax
mov    (%rax),%esi
movsd  0xc91(%rip),%xmm0
call   1070 <glLightf@plt>
mov    (%rbx),%edi
mov    0x2c43(%rip),%r15
mov    (%r15),%esi
movsd  0xc80(%rip),%xmm0
call   1070 <glLightf@plt>
mov    (%rbx),%edi
mov    0x2bf2(%rip),%rax
mov    (%rax),%esi
movsd  0xc68(%rip),%xmm0
call   1070 <glLightf@plt>
mov    (%rbx),%edi
mov    0x2c3a(%rip),%rax
mov    (%rax),%esi
movsd  0xc58(%rip),%xmm0
call   1070 <glLightf@plt>
mov    (%rbx),%edi
mov    0x2bea(%rip),%rax
mov    (%rax),%esi
lea    0x10(%rsp),%rdx
call   1030 <glLightfv@plt>
mov    (%rbx),%edi
mov    0x2bdd(%rip),%rax
mov    (%rax),%esi
movsd  0xc33(%rip),%xmm0
call   1070 <glLightf@plt>
mov    (%r15),%edi
lea    0xb0(%rsp),%rsi
call   1040 <glLightModelfv@plt>
mov    0x2b8f(%rip),%rax
mov    (%rax),%edi
call   1050 <glEnable@plt>
mov    (%r14),%edi
call   1050 <glEnable@plt>
mov    (%rbx),%edi
call   1050 <glEnable@plt>
mov    0x2b52(%rip),%rax
mov    (%rax),%edi
call   1050 <glEnable@plt>
add    $0x130,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
ret

LLVM IR (-O0):
@__const.init.mat_specular = [4 x double] [double 1.000000e+00, double 1.000000e+00, double 1.000000e+00, double 1.000000e+00]
@__const.init.mat_shineness = [1 x double] [double 5.000000e+01]
@__const.init.light0_position = [4 x double] [double 1.000000e+00, double 1.000000e+00, double 1.000000e+00, double 0.000000e+00]
@__const.init.white_light = [4 x double] [double 1.000000e+00, double 1.000000e+00, double 1.000000e+00, double 1.000000e+00]
@__const.init.lmodel_ambient = [4 x double] [double 1.000000e-01, double 1.000000e-01, double 1.000000e-01, double 1.000000e+00]
@GL_SMOOTH = global i32 0
@GL_FRONT = global i32 0
@GL_SPECULAR = global i32 0
@GL_SHININESS = global i32 0
@GL_LIGHT0 = global i32 0
@GL_POSITION = global i32 0
@GL_DIFFUSE = global i32 0
@__const.init.light1_ambient = [4 x double] [double 2.000000e-01, double 2.000000e-01, double 2.000000e-01, double 1.000000e+00]
@__const.init.light1_diffuse = [4 x double] [double 5.000000e-01, double 1.000000e+00, double 1.000000e+00, double 1.000000e+00]
@__const.init.light1_specular = [4 x double] [double 5.000000e-01, double 1.000000e+00, double 1.000000e+00, double 1.000000e+00]
@__const.init.light1_position = [4 x double] [double -2.000000e+00, double -2.000000e+00, double 1.000000e+00, double 1.000000e+00]
@__const.init.spot_direction = [3 x double] [double 1.000000e+00, double 1.000000e+00, double 0.000000e+00]
@GL_LIGHT1 = global i32 0
@GL_AMBIENT = global i32 0
@GL_CONSTANT_ATTENUATION = global i32 0
@GL_LIGHT_MODEL_AMBIENT = global i32 0
@GL_QUADRATIC_ATTENUATION = global i32 0
@GL_SPOT_CUTOFF = global i32 0
@GL_SPOT_DIRECTION = global i32 0
@GL_SPOT_EXPONENT = global i32 0
@GL_LIGHTING = global i32 0
@GL_DEPTH_TEST = global i32 0
define void @init() {
%1 = alloca [4 x double]
%2 = alloca [1 x double]
%3 = alloca [4 x double]
%4 = alloca [4 x double]
%5 = alloca [4 x double]
%6 = alloca [4 x double]
%7 = alloca [4 x double]
%8 = alloca [4 x double]
%9 = alloca [4 x double]
%10 = alloca [3 x double]
%11 = bitcast [4 x double]* %1 to i8*
%12 = bitcast [1 x double]* %2 to i8*
%13 = bitcast [4 x double]* %3 to i8*
%14 = bitcast [4 x double]* %4 to i8*
%15 = bitcast [4 x double]* %5 to i8*
%16 = call i32 @glClearColor(double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00)
%17 = load i32, i32* @GL_SMOOTH
%18 = call i32 @glShadeModel(i32 %17)
%19 = load i32, i32* @GL_FRONT
%20 = load i32, i32* @GL_SPECULAR
%21 = getelementptr inbounds [4 x double], [4 x double]* %1, i64 0, i64 0
%22 = call i32 @glMaterialfv(i32 %19, i32 %20, double* %21)
%23 = load i32, i32* @GL_FRONT
%24 = load i32, i32* @GL_SHININESS
%25 = getelementptr inbounds [1 x double], [1 x double]* %2, i64 0, i64 0
%26 = call i32 @glMaterialfv(i32 %23, i32 %24, double* %25)
%27 = load i32, i32* @GL_LIGHT0
%28 = load i32, i32* @GL_POSITION
%29 = getelementptr inbounds [4 x double], [4 x double]* %3, i64 0, i64 0
%30 = call i32 @glLightfv(i32 %27, i32 %28, double* %29)
%31 = load i32, i32* @GL_LIGHT0
%32 = load i32, i32* @GL_DIFFUSE
%33 = getelementptr inbounds [4 x double], [4 x double]* %4, i64 0, i64 0
%34 = call i32 @glLightfv(i32 %31, i32 %32, double* %33)
%35 = load i32, i32* @GL_LIGHT0
%36 = load i32, i32* @GL_SPECULAR
%37 = getelementptr inbounds [4 x double], [4 x double]* %4, i64 0, i64 0
%38 = call i32 @glLightfv(i32 %35, i32 %36, double* %37)
%39 = bitcast [4 x double]* %6 to i8*
%40 = bitcast [4 x double]* %7 to i8*
%41 = bitcast [4 x double]* %8 to i8*
%42 = bitcast [4 x double]* %9 to i8*
%43 = bitcast [3 x double]* %10 to i8*
%44 = load i32, i32* @GL_LIGHT1
%45 = load i32, i32* @GL_AMBIENT
%46 = getelementptr inbounds [4 x double], [4 x double]* %6, i64 0, i64 0
%47 = call i32 @glLightfv(i32 %44, i32 %45, double* %46)
%48 = load i32, i32* @GL_LIGHT1
%49 = load i32, i32* @GL_DIFFUSE
%50 = getelementptr inbounds [4 x double], [4 x double]* %7, i64 0, i64 0
%51 = call i32 @glLightfv(i32 %48, i32 %49, double* %50)
%52 = load i32, i32* @GL_LIGHT1
%53 = load i32, i32* @GL_SPECULAR
%54 = getelementptr inbounds [4 x double], [4 x double]* %8, i64 0, i64 0
%55 = call i32 @glLightfv(i32 %52, i32 %53, double* %54)
%56 = load i32, i32* @GL_LIGHT1
%57 = load i32, i32* @GL_POSITION
%58 = getelementptr inbounds [4 x double], [4 x double]* %9, i64 0, i64 0
%59 = call i32 @glLightfv(i32 %56, i32 %57, double* %58)
%60 = load i32, i32* @GL_LIGHT1
%61 = load i32, i32* @GL_CONSTANT_ATTENUATION
%62 = call i32 @glLightf(i32 %60, i32 %61, double 1.500000e+00)
%63 = load i32, i32* @GL_LIGHT1
%64 = load i32, i32* @GL_LIGHT_MODEL_AMBIENT
%65 = call i32 @glLightf(i32 %63, i32 %64, double 2.000000e-01)
%66 = load i32, i32* @GL_LIGHT1
%67 = load i32, i32* @GL_QUADRATIC_ATTENUATION
%68 = call i32 @glLightf(i32 %66, i32 %67, double 2.000000e-01)
%69 = load i32, i32* @GL_LIGHT1
%70 = load i32, i32* @GL_SPOT_CUTOFF
%71 = call i32 @glLightf(i32 %69, i32 %70, double 4.500000e+01)
%72 = load i32, i32* @GL_LIGHT1
%73 = load i32, i32* @GL_SPOT_DIRECTION
%74 = getelementptr inbounds [3 x double], [3 x double]* %10, i64 0, i64 0
%75 = call i32 @glLightfv(i32 %72, i32 %73, double* %74)
%76 = load i32, i32* @GL_LIGHT1
%77 = load i32, i32* @GL_SPOT_EXPONENT
%78 = call i32 @glLightf(i32 %76, i32 %77, double 2.000000e+00)
%79 = load i32, i32* @GL_LIGHT_MODEL_AMBIENT
%80 = getelementptr inbounds [4 x double], [4 x double]* %5, i64 0, i64 0
%81 = call i32 @glLightModelfv(i32 %79, double* %80)
%82 = load i32, i32* @GL_LIGHTING
%83 = call i32 @glEnable(i32 %82)
%84 = load i32, i32* @GL_LIGHT0
%85 = call i32 @glEnable(i32 %84)
%86 = load i32, i32* @GL_LIGHT1
%87 = call i32 @glEnable(i32 %86)
%88 = load i32, i32* @GL_DEPTH_TEST
%89 = call i32 @glEnable(i32 %88)
ret void
}

LLVM IR (-O2):
@__const.init.light0_position = [4 x double] [double 1.000000e+00, double 1.000000e+00, double 1.000000e+00, double 0.000000e+00]
@__const.init.white_light = [4 x double] [double 1.000000e+00, double 1.000000e+00, double 1.000000e+00, double 1.000000e+00]
@__const.init.lmodel_ambient = [4 x double] [double 1.000000e-01, double 1.000000e-01, double 1.000000e-01, double 1.000000e+00]
@GL_SMOOTH = global i32 0
@GL_FRONT = global i32 0
@GL_SPECULAR = global i32 0
@GL_SHININESS = global i32 0
@GL_LIGHT0 = global i32 0
@GL_POSITION = global i32 0
@GL_DIFFUSE = global i32 0
@__const.init.light1_ambient = [4 x double] [double 2.000000e-01, double 2.000000e-01, double 2.000000e-01, double 1.000000e+00]
@__const.init.light1_specular = [4 x double] [double 5.000000e-01, double 1.000000e+00, double 1.000000e+00, double 1.000000e+00]
@__const.init.light1_position = [4 x double] [double -2.000000e+00, double -2.000000e+00, double 1.000000e+00, double 1.000000e+00]
@__const.init.spot_direction = [3 x double] [double 1.000000e+00, double 1.000000e+00, double 0.000000e+00]
@GL_LIGHT1 = global i32 0
@GL_AMBIENT = global i32 0
@GL_CONSTANT_ATTENUATION = global i32 0
@GL_LIGHT_MODEL_AMBIENT = global i32 0
@GL_QUADRATIC_ATTENUATION = global i32 0
@GL_SPOT_CUTOFF = global i32 0
@GL_SPOT_DIRECTION = global i32 0
@GL_SPOT_EXPONENT = global i32 0
@GL_LIGHTING = global i32 0
@GL_DEPTH_TEST = global i32 0
define void @init() {
%1 = alloca [4 x double]
%2 = alloca [1 x double]
%3 = alloca [4 x double]
%4 = alloca [4 x double]
%5 = alloca [4 x double]
%6 = alloca [4 x double]
%7 = alloca [4 x double]
%8 = alloca [4 x double]
%9 = alloca [4 x double]
%10 = alloca [3 x double]
%11 = bitcast [4 x double]* %1 to i8*
%12 = bitcast [1 x double]* %2 to i8*
%13 = bitcast [1 x double]* %2 to i64*
store i64 4632233691727265792, i64* %13
%14 = bitcast [4 x double]* %3 to i8*
%15 = bitcast [4 x double]* %4 to i8*
%16 = bitcast [4 x double]* %5 to i8*
%17 = tail call i32 @glClearColor(double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00)
%18 = load i32, i32* @GL_SMOOTH
%19 = tail call i32 @glShadeModel(i32 %18)
%20 = load i32, i32* @GL_FRONT
%21 = load i32, i32* @GL_SPECULAR
%22 = getelementptr inbounds [4 x double], [4 x double]* %1, i64 0, i64 0
%23 = call i32 @glMaterialfv(i32 %20, i32 %21, double* %22)
%24 = load i32, i32* @GL_FRONT
%25 = load i32, i32* @GL_SHININESS
%26 = getelementptr inbounds [1 x double], [1 x double]* %2, i64 0, i64 0
%27 = call i32 @glMaterialfv(i32 %24, i32 %25, double* %26)
%28 = load i32, i32* @GL_LIGHT0
%29 = load i32, i32* @GL_POSITION
%30 = getelementptr inbounds [4 x double], [4 x double]* %3, i64 0, i64 0
%31 = call i32 @glLightfv(i32 %28, i32 %29, double* %30)
%32 = load i32, i32* @GL_LIGHT0
%33 = load i32, i32* @GL_DIFFUSE
%34 = getelementptr inbounds [4 x double], [4 x double]* %4, i64 0, i64 0
%35 = call i32 @glLightfv(i32 %32, i32 %33, double* %34)
%36 = load i32, i32* @GL_LIGHT0
%37 = load i32, i32* @GL_SPECULAR
%38 = call i32 @glLightfv(i32 %36, i32 %37, double* %34)
%39 = bitcast [4 x double]* %6 to i8*
%40 = bitcast [4 x double]* %7 to i8*
%41 = bitcast [4 x double]* %8 to i8*
%42 = bitcast [4 x double]* %9 to i8*
%43 = bitcast [3 x double]* %10 to i8*
%44 = load i32, i32* @GL_LIGHT1
%45 = load i32, i32* @GL_AMBIENT
%46 = getelementptr inbounds [4 x double], [4 x double]* %6, i64 0, i64 0
%47 = call i32 @glLightfv(i32 %44, i32 %45, double* %46)
%48 = load i32, i32* @GL_LIGHT1
%49 = load i32, i32* @GL_DIFFUSE
%50 = getelementptr inbounds [4 x double], [4 x double]* %7, i64 0, i64 0
%51 = call i32 @glLightfv(i32 %48, i32 %49, double* %50)
%52 = load i32, i32* @GL_LIGHT1
%53 = load i32, i32* @GL_SPECULAR
%54 = getelementptr inbounds [4 x double], [4 x double]* %8, i64 0, i64 0
%55 = call i32 @glLightfv(i32 %52, i32 %53, double* %54)
%56 = load i32, i32* @GL_LIGHT1
%57 = load i32, i32* @GL_POSITION
%58 = getelementptr inbounds [4 x double], [4 x double]* %9, i64 0, i64 0
%59 = call i32 @glLightfv(i32 %56, i32 %57, double* %58)
%60 = load i32, i32* @GL_LIGHT1
%61 = load i32, i32* @GL_CONSTANT_ATTENUATION
%62 = call i32 @glLightf(i32 %60, i32 %61, double 1.500000e+00)
%63 = load i32, i32* @GL_LIGHT1
%64 = load i32, i32* @GL_LIGHT_MODEL_AMBIENT
%65 = call i32 @glLightf(i32 %63, i32 %64, double 2.000000e-01)
%66 = load i32, i32* @GL_LIGHT1
%67 = load i32, i32* @GL_QUADRATIC_ATTENUATION
%68 = call i32 @glLightf(i32 %66, i32 %67, double 2.000000e-01)
%69 = load i32, i32* @GL_LIGHT1
%70 = load i32, i32* @GL_SPOT_CUTOFF
%71 = call i32 @glLightf(i32 %69, i32 %70, double 4.500000e+01)
%72 = load i32, i32* @GL_LIGHT1
%73 = load i32, i32* @GL_SPOT_DIRECTION
%74 = getelementptr inbounds [3 x double], [3 x double]* %10, i64 0, i64 0
%75 = call i32 @glLightfv(i32 %72, i32 %73, double* %74)
%76 = load i32, i32* @GL_LIGHT1
%77 = load i32, i32* @GL_SPOT_EXPONENT
%78 = call i32 @glLightf(i32 %76, i32 %77, double 2.000000e+00)
%79 = load i32, i32* @GL_LIGHT_MODEL_AMBIENT
%80 = getelementptr inbounds [4 x double], [4 x double]* %5, i64 0, i64 0
%81 = call i32 @glLightModelfv(i32 %79, double* %80)
%82 = load i32, i32* @GL_LIGHTING
%83 = call i32 @glEnable(i32 %82)
%84 = load i32, i32* @GL_LIGHT0
%85 = call i32 @glEnable(i32 %84)
%86 = load i32, i32* @GL_LIGHT1
%87 = call i32 @glEnable(i32 %86)
%88 = load i32, i32* @GL_DEPTH_TEST
%89 = call i32 @glEnable(i32 %88)
ret void
}