#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_3__ TYPE_1__;

/* Type definitions */
struct TYPE_3__ {
  int member_0;
  int member_1;
  int member_2;
};
typedef TYPE_1__ GLubyte;
typedef double GLfloat;

/* Variables and functions */
int GL_COLOR_BUFFER_BIT;
int /*<<< orphan*/ GL_DECAL;
int GL_DEPTH_BUFFER_BIT;
int /*<<< orphan*/ GL_DEPTH_TEST;
int /*<<< orphan*/ GL_LEQUAL;
int /*<<< orphan*/ GL_LINEAR;
int /*<<< orphan*/ GL_POLYGON;
int /*<<< orphan*/ GL_QUAD_STRIP;
int /*<<< orphan*/ GL_RGB;
int /*<<< orphan*/ GL_TEXTURE_1D;
int /*<<< orphan*/ GL_TEXTURE_ENV;
int /*<<< orphan*/ GL_TEXTURE_ENV_MODE;
int /*<<< orphan*/ GL_TEXTURE_MAG_FILTER;
int /*<<< orphan*/ GL_TEXTURE_MIN_FILTER;
int /*<<< orphan*/ GL_UNSIGNED_BYTE;
double cos(double);
int /*<<< orphan*/ glBegin(int /*<<< orphan*/);
int /*<<< orphan*/ glClear(int);
int /*<<< orphan*/ glClearColor(double, double, double, double);
int /*<<< orphan*/ glColor3f(double, double, double);
int /*<<< orphan*/ glDepthFunc(int /*<<< orphan*/);
int /*<<< orphan*/ glDisable(int /*<<< orphan*/);
int /*<<< orphan*/ glEnable(int /*<<< orphan*/);
int /*<<< orphan*/ glEnd();
int /*<<< orphan*/ glFinish();
int /*<<< orphan*/ glPopMatrix();
int /*<<< orphan*/ glPushMatrix();
int /*<<< orphan*/ glRotatef(double, double, double, double);
int /*<<< orphan*/ glTexCoord1f(double);
int /*<<< orphan*/ glTexEnvi(int /*<<< orphan*/, int /*<<< orphan*/,
                             int /*<<< orphan*/);
int /*<<< orphan*/ glTexImage1D(int /*<<< orphan*/, int /*<<< orphan*/, int,
                                int, int /*<<< orphan*/, int /*<<< orphan*/,
                                int /*<<< orphan*/, TYPE_1__ **);
int /*<<< orphan*/ glTexParameteri(int /*<<< orphan*/, int /*<<< orphan*/,
                                   int /*<<< orphan*/);
int /*<<< orphan*/ glTranslatef(double, double, double);
int /*<<< orphan*/ glVertex3f(double, double, double);
double sin(double);
void Redraw(void) {
  GLfloat x, y, z, th;
  static GLubyte roygbiv_image[8][3] = {{0x3f, 0x00, 0x3f}, {0x7f, 0x00, 0x7f},
                                        {0xbf, 0x00, 0xbf}, {0x00, 0x00, 0xff},
                                        {0x00, 0xff, 0x00}, {0xff, 0xff, 0x00},
                                        {0xff, 0x7f, 0x00}, {0xff, 0x00, 0x00}};
  glClearColor(0.5, 0.5, 1.0, 1.0);
  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
  glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
  glTexImage1D(GL_TEXTURE_1D, 0, 3, 8, 0, GL_RGB, GL_UNSIGNED_BYTE,
               roygbiv_image);
  glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);
  glDisable(GL_TEXTURE_1D);
  glEnable(GL_DEPTH_TEST);
  glDepthFunc(GL_LEQUAL);
  glPushMatrix();
  glRotatef(10.0, 0.0, 1.0, 0.0);
  glTranslatef(0.0, -40.0, -100.0);
  glColor3f(0.0, 0.8, 0.0);
  glBegin(GL_POLYGON);
  for (th = 0.0; th < (2.0 * 3.141592649); th += (0.03125 * 3.141592649)) {
    x = cos(th) * 200.0;
    z = sin(th) * 200.0;
    glVertex3f(x, 0.0, z);
  }
  glEnd();
  glEnable(GL_TEXTURE_1D);
  glBegin(GL_QUAD_STRIP);
  for (th = 0.0; th <= 3.141592649; th += (0.03125 * 3.141592649)) {
    x = cos(th) * 50.0;
    y = sin(th) * 50.0;
    z = -50.0;
    glTexCoord1f(0.0);
    glVertex3f(x, y, z);
    x = cos(th) * 55.0;
    y = sin(th) * 55.0;
    z = -50.0;
    glTexCoord1f(1.0);
    glVertex3f(x, y, z);
  }
  glEnd();
  glPopMatrix();
  glFinish();
}


x86 assembly (clang, -O0):
<Redraw>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
movsd  0xdd8(%rip),%xmm1
movsd  0xdc8(%rip),%xmm3
movaps %xmm1,%xmm0
movaps %xmm3,%xmm2
call   10a0 <glClearColor@plt>
mov    0x2d1e(%rip),%rax
mov    (%rax),%edi
mov    0x2d4d(%rip),%rax
or     (%rax),%edi
call   1030 <glClear@plt>
mov    0x2cef(%rip),%rax
mov    (%rax),%edi
mov    0x2cee(%rip),%rax
mov    (%rax),%esi
mov    0x2d35(%rip),%rax
mov    (%rax),%edx
call   1040 <glTexParameteri@plt>
mov    0x2ccf(%rip),%rax
mov    (%rax),%edi
mov    0x2d26(%rip),%rax
mov    (%rax),%esi
mov    0x2d15(%rip),%rax
mov    (%rax),%edx
call   1040 <glTexParameteri@plt>
mov    0x2caf(%rip),%rax
mov    (%rax),%edi
mov    0x2d16(%rip),%rax
mov    (%rax),%r9d
mov    0x2cbc(%rip),%rax
mov    (%rax),%r10d
xor    %r8d,%r8d
mov    $0x3,%edx
mov    $0x8,%ecx
lea    0x2de5(%rip),%rax
mov    %r8d,%esi
mov    %r10d,(%rsp)
mov    %rax,0x8(%rsp)
call   10f0 <glTexImage1D@plt>
mov    0x2cb5(%rip),%rax
mov    (%rax),%edi
mov    0x2c9c(%rip),%rax
mov    (%rax),%esi
mov    0x2ce3(%rip),%rax
mov    (%rax),%edx
call   1140 <glTexEnvi@plt>
mov    0x2c4d(%rip),%rax
mov    (%rax),%edi
call   1130 <glDisable@plt>
mov    0x2c4f(%rip),%rax
mov    (%rax),%edi
call   1060 <glEnable@plt>
mov    0x2c59(%rip),%rax
mov    (%rax),%edi
call   1080 <glDepthFunc@plt>
mov    $0x0,%al
call   10e0 <glPushMatrix@plt>
movsd  0xcc3(%rip),%xmm0
xorps  %xmm3,%xmm3
movsd  0xcc0(%rip),%xmm2
movaps %xmm3,%xmm1
call   1160 <glRotatef@plt>
xorps  %xmm0,%xmm0
movsd  0xc95(%rip),%xmm1
movsd  0xc95(%rip),%xmm2
call   1120 <glTranslatef@plt>
xorps  %xmm2,%xmm2
movsd  0xc75(%rip),%xmm1
movaps %xmm2,%xmm0
call   10d0 <glColor3f@plt>
mov    0x2c56(%rip),%rax
mov    (%rax),%edi
call   1150 <glBegin@plt>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  0xc7f(%rip),%xmm0
ucomisd -0x20(%rbp),%xmm0
jbe    141b <Redraw+0x1db>
movsd  -0x20(%rbp),%xmm0
call   1110 <cos@plt>
movsd  0xc92(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x8(%rbp)
movsd  -0x20(%rbp),%xmm0
call   10c0 <sin@plt>
movsd  0xc77(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  -0x8(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm2
xorps  %xmm1,%xmm1
call   1050 <glVertex3f@plt>
movsd  0xc4c(%rip),%xmm0
addsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x20(%rbp)
jmp    13a9 <Redraw+0x169>
mov    $0x0,%al
call   1070 <glEnd@plt>
mov    0x2b47(%rip),%rax
mov    (%rax),%edi
call   1060 <glEnable@plt>
mov    0x2b79(%rip),%rax
mov    (%rax),%edi
call   1150 <glBegin@plt>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  0xbea(%rip),%xmm0
ucomisd -0x20(%rbp),%xmm0
jb     1533 <Redraw+0x2f3>
movsd  -0x20(%rbp),%xmm0
call   1110 <cos@plt>
movsd  0xbe5(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x8(%rbp)
movsd  -0x20(%rbp),%xmm0
call   10c0 <sin@plt>
movsd  0xbca(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  0xba9(%rip),%xmm0
movsd  %xmm0,-0x18(%rbp)
xorps  %xmm0,%xmm0
call   1100 <glTexCoord1f@plt>
movsd  -0x8(%rbp),%xmm0
movsd  -0x10(%rbp),%xmm1
movsd  -0x18(%rbp),%xmm2
call   1050 <glVertex3f@plt>
movsd  -0x20(%rbp),%xmm0
call   1110 <cos@plt>
movsd  0xb7e(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x8(%rbp)
movsd  -0x20(%rbp),%xmm0
call   10c0 <sin@plt>
movsd  0xb63(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  0xb4a(%rip),%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  0xb1d(%rip),%xmm0
call   1100 <glTexCoord1f@plt>
movsd  -0x8(%rbp),%xmm0
movsd  -0x10(%rbp),%xmm1
movsd  -0x18(%rbp),%xmm2
call   1050 <glVertex3f@plt>
movsd  0xb34(%rip),%xmm0
addsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x20(%rbp)
jmp    1446 <Redraw+0x206>
mov    $0x0,%al
call   1070 <glEnd@plt>
mov    $0x0,%al
call   10b0 <glPopMatrix@plt>
mov    $0x0,%al
call   1090 <glFinish@plt>
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<Redraw>:
push   %r14
push   %rbx
sub    $0x18,%rsp
movsd  0xdb1(%rip),%xmm0
movsd  0xdb1(%rip),%xmm2
movaps %xmm0,%xmm1
movaps %xmm2,%xmm3
call   10a0 <glClearColor@plt>
mov    0x2d1f(%rip),%rax
mov    0x2d50(%rip),%rcx
mov    (%rcx),%edi
or     (%rax),%edi
call   1030 <glClear@plt>
mov    0x2cf0(%rip),%r14
mov    (%r14),%edi
mov    0x2cee(%rip),%rax
mov    (%rax),%esi
mov    0x2d35(%rip),%rbx
mov    (%rbx),%edx
call   1040 <glTexParameteri@plt>
mov    (%r14),%edi
mov    0x2d2c(%rip),%rax
mov    (%rax),%esi
mov    (%rbx),%edx
call   1040 <glTexParameteri@plt>
mov    (%r14),%edi
mov    0x2d29(%rip),%rax
mov    (%rax),%r9d
mov    0x2ccf(%rip),%rax
mov    (%rax),%eax
lea    0x2e06(%rip),%rbx
xor    %esi,%esi
mov    $0x3,%edx
mov    $0x8,%ecx
xor    %r8d,%r8d
push   %rbx
push   %rax
call   10f0 <glTexImage1D@plt>
add    $0x10,%rsp
mov    0x2ccd(%rip),%rax
mov    (%rax),%edi
mov    0x2cb4(%rip),%rax
mov    (%rax),%esi
mov    0x2cfb(%rip),%rax
mov    (%rax),%edx
call   1140 <glTexEnvi@plt>
mov    (%r14),%edi
call   1130 <glDisable@plt>
mov    0x2c6d(%rip),%rax
mov    (%rax),%edi
call   1060 <glEnable@plt>
mov    0x2c77(%rip),%rax
mov    (%rax),%edi
call   1080 <glDepthFunc@plt>
xor    %eax,%eax
call   10e0 <glPushMatrix@plt>
movsd  0xcd9(%rip),%xmm0
xorps  %xmm1,%xmm1
movsd  %xmm1,(%rsp)
xorps  %xmm1,%xmm1
xorps  %xmm3,%xmm3
movsd  0xcbb(%rip),%xmm2
call   1160 <glRotatef@plt>
movsd  0xcbe(%rip),%xmm1
movsd  0xcbe(%rip),%xmm2
xorpd  %xmm0,%xmm0
call   1120 <glTranslatef@plt>
movsd  0xcb5(%rip),%xmm1
xorpd  %xmm0,%xmm0
xorpd  %xmm2,%xmm2
call   10d0 <glColor3f@plt>
mov    0x2c69(%rip),%rax
mov    (%rax),%edi
call   1150 <glBegin@plt>
xchg   %ax,%ax
movsd  (%rsp),%xmm0
call   1110 <cos@plt>
movapd %xmm0,%xmm1
movsd  0xc8a(%rip),%xmm0
mulsd  %xmm0,%xmm1
movsd  %xmm1,0x8(%rsp)
movsd  (%rsp),%xmm0
call   10c0 <sin@plt>
movapd %xmm0,%xmm2
mulsd  0xc6a(%rip),%xmm2
xorpd  %xmm1,%xmm1
movsd  0x8(%rsp),%xmm0
call   1050 <glVertex3f@plt>
movsd  (%rsp),%xmm1
addsd  0xc56(%rip),%xmm1
movsd  %xmm1,(%rsp)
movsd  0xc51(%rip),%xmm0
ucomisd %xmm1,%xmm0
ja     1390 <Redraw+0x150>
xor    %eax,%eax
call   1070 <glEnd@plt>
mov    (%r14),%edi
call   1060 <glEnable@plt>
mov    0x2ba5(%rip),%rax
mov    (%rax),%edi
call   1150 <glBegin@plt>
xorpd  %xmm0,%xmm0
cs nopw 0x0(%rax,%rax,1)
movsd  %xmm0,(%rsp)
movsd  (%rsp),%xmm0
call   1110 <cos@plt>
movapd %xmm0,%xmm1
movsd  0xc0d(%rip),%xmm0
mulsd  %xmm0,%xmm1
movsd  %xmm1,0x8(%rsp)
movsd  (%rsp),%xmm0
call   10c0 <sin@plt>
mulsd  0xbf1(%rip),%xmm0
movsd  %xmm0,0x10(%rsp)
xorpd  %xmm0,%xmm0
call   1100 <glTexCoord1f@plt>
movsd  0x8(%rsp),%xmm0
movsd  0x10(%rsp),%xmm1
movsd  0xbd6(%rip),%xmm2
call   1050 <glVertex3f@plt>
movsd  (%rsp),%xmm0
call   1110 <cos@plt>
movapd %xmm0,%xmm1
movsd  0xbc3(%rip),%xmm0
mulsd  %xmm0,%xmm1
movsd  %xmm1,0x8(%rsp)
movsd  (%rsp),%xmm0
call   10c0 <sin@plt>
mulsd  0xba7(%rip),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0xb49(%rip),%xmm0
call   1100 <glTexCoord1f@plt>
movsd  0x8(%rsp),%xmm0
movsd  0x10(%rsp),%xmm1
movsd  0xb78(%rip),%xmm2
call   1050 <glVertex3f@plt>
movsd  (%rsp),%xmm0
addsd  0xb4e(%rip),%xmm0
movsd  0xb6e(%rip),%xmm1
ucomisd %xmm0,%xmm1
jae    1420 <Redraw+0x1e0>
xor    %eax,%eax
call   1070 <glEnd@plt>
xor    %eax,%eax
call   10b0 <glPopMatrix@plt>
xor    %eax,%eax
add    $0x18,%rsp
pop    %rbx
pop    %r14
jmp    1090 <glFinish@plt>

LLVM IR (-O0):
%struct.TYPE_3__ = type { i32, i32, i32 }
@Redraw.roygbiv_image = internal global [8 x [3 x %struct.TYPE_3__]] [[3 x %struct.TYPE_3__] [%struct.TYPE_3__ { i32 63, i32 0, i32 63 }, %struct.TYPE_3__ zeroinitializer, %struct.TYPE_3__ zeroinitializer], [3 x %struct.TYPE_3__] [%struct.TYPE_3__ { i32 127, i32 0, i32 127 }, %struct.TYPE_3__ zeroinitializer, %struct.TYPE_3__ zeroinitializer], [3 x %struct.TYPE_3__] [%struct.TYPE_3__ { i32 191, i32 0, i32 191 }, %struct.TYPE_3__ zeroinitializer, %struct.TYPE_3__ zeroinitializer], [3 x %struct.TYPE_3__] [%struct.TYPE_3__ { i32 0, i32 0, i32 255 }, %struct.TYPE_3__ zeroinitializer, %struct.TYPE_3__ zeroinitializer], [3 x %struct.TYPE_3__] [%struct.TYPE_3__ { i32 0, i32 255, i32 0 }, %struct.TYPE_3__ zeroinitializer, %struct.TYPE_3__ zeroinitializer], [3 x %struct.TYPE_3__] [%struct.TYPE_3__ { i32 255, i32 255, i32 0 }, %struct.TYPE_3__ zeroinitializer, %struct.TYPE_3__ zeroinitializer], [3 x %struct.TYPE_3__] [%struct.TYPE_3__ { i32 255, i32 127, i32 0 }, %struct.TYPE_3__ zeroinitializer, %struct.TYPE_3__ zeroinitializer], [3 x %struct.TYPE_3__] [%struct.TYPE_3__ { i32 255, i32 0, i32 0 }, %struct.TYPE_3__ zeroinitializer, %struct.TYPE_3__ zeroinitializer]]
@GL_COLOR_BUFFER_BIT = global i32 0
@GL_DEPTH_BUFFER_BIT = global i32 0
@GL_TEXTURE_1D = global i32 0
@GL_TEXTURE_MAG_FILTER = global i32 0
@GL_LINEAR = global i32 0
@GL_TEXTURE_MIN_FILTER = global i32 0
@GL_RGB = global i32 0
@GL_UNSIGNED_BYTE = global i32 0
@GL_TEXTURE_ENV = global i32 0
@GL_TEXTURE_ENV_MODE = global i32 0
@GL_DECAL = global i32 0
@GL_DEPTH_TEST = global i32 0
@GL_LEQUAL = global i32 0
@GL_POLYGON = global i32 0
@GL_QUAD_STRIP = global i32 0
define void @Redraw() {
%1 = alloca double
%2 = alloca double
%3 = alloca double
%4 = alloca double
%5 = call i32 @glClearColor(double 5.000000e-01, double 5.000000e-01, double 1.000000e+00, double 1.000000e+00)
%6 = load i32, i32* @GL_COLOR_BUFFER_BIT
%7 = load i32, i32* @GL_DEPTH_BUFFER_BIT
%8 = or i32 %6, %7
%9 = call i32 @glClear(i32 %8)
%10 = load i32, i32* @GL_TEXTURE_1D
%11 = load i32, i32* @GL_TEXTURE_MAG_FILTER
%12 = load i32, i32* @GL_LINEAR
%13 = call i32 @glTexParameteri(i32 %10, i32 %11, i32 %12)
%14 = load i32, i32* @GL_TEXTURE_1D
%15 = load i32, i32* @GL_TEXTURE_MIN_FILTER
%16 = load i32, i32* @GL_LINEAR
%17 = call i32 @glTexParameteri(i32 %14, i32 %15, i32 %16)
%18 = load i32, i32* @GL_TEXTURE_1D
%19 = load i32, i32* @GL_RGB
%20 = load i32, i32* @GL_UNSIGNED_BYTE
%21 = call i32 @glTexImage1D(i32 %18, i32 0, i32 3, i32 8, i32 0, i32 %19, i32 %20, %struct.TYPE_3__** bitcast ([8 x [3 x %struct.TYPE_3__]]* @Redraw.roygbiv_image to %struct.TYPE_3__**))
%22 = load i32, i32* @GL_TEXTURE_ENV
%23 = load i32, i32* @GL_TEXTURE_ENV_MODE
%24 = load i32, i32* @GL_DECAL
%25 = call i32 @glTexEnvi(i32 %22, i32 %23, i32 %24)
%26 = load i32, i32* @GL_TEXTURE_1D
%27 = call i32 @glDisable(i32 %26)
%28 = load i32, i32* @GL_DEPTH_TEST
%29 = call i32 @glEnable(i32 %28)
%30 = load i32, i32* @GL_LEQUAL
%31 = call i32 @glDepthFunc(i32 %30)
%32 = call i32 (...) @glPushMatrix()
%33 = call i32 @glRotatef(double 1.000000e+01, double 0.000000e+00, double 1.000000e+00, double 0.000000e+00)
%34 = call i32 @glTranslatef(double 0.000000e+00, double -4.000000e+01, double -1.000000e+02)
%35 = call i32 @glColor3f(double 0.000000e+00, double 8.000000e-01, double 0.000000e+00)
%36 = load i32, i32* @GL_POLYGON
%37 = call i32 @glBegin(i32 %36)
store double 0.000000e+00, double* %4
br label %38
38: ; preds = %51, %0
%39 = load double, double* %4
%40 = fcmp olt double %39, 0x401921FB53A678D9
br i1 %40, label %41, label %54
41: ; preds = %38
%42 = load double, double* %4
%43 = call double @cos(double %42)
%44 = fmul double %43, 2.000000e+02
store double %44, double* %1
%45 = load double, double* %4
%46 = call double @sin(double %45)
%47 = fmul double %46, 2.000000e+02
store double %47, double* %3
%48 = load double, double* %1
%49 = load double, double* %3
%50 = call i32 @glVertex3f(double %48, double 0.000000e+00, double %49)
br label %51
51: ; preds = %41
%52 = load double, double* %4
%53 = fadd double %52, 0x3FB921FB53A678D9
store double %53, double* %4
br label %38
54: ; preds = %38
%55 = call i32 (...) @glEnd()
%56 = load i32, i32* @GL_TEXTURE_1D
%57 = call i32 @glEnable(i32 %56)
%58 = load i32, i32* @GL_QUAD_STRIP
%59 = call i32 @glBegin(i32 %58)
store double 0.000000e+00, double* %4
br label %60
60: ; preds = %86, %54
%61 = load double, double* %4
%62 = fcmp ole double %61, 0x400921FB53A678D9
br i1 %62, label %63, label %89
63: ; preds = %60
%64 = load double, double* %4
%65 = call double @cos(double %64)
%66 = fmul double %65, 5.000000e+01
store double %66, double* %1
%67 = load double, double* %4
%68 = call double @sin(double %67)
%69 = fmul double %68, 5.000000e+01
store double %69, double* %2
store double -5.000000e+01, double* %3
%70 = call i32 @glTexCoord1f(double 0.000000e+00)
%71 = load double, double* %1
%72 = load double, double* %2
%73 = load double, double* %3
%74 = call i32 @glVertex3f(double %71, double %72, double %73)
%75 = load double, double* %4
%76 = call double @cos(double %75)
%77 = fmul double %76, 5.500000e+01
store double %77, double* %1
%78 = load double, double* %4
%79 = call double @sin(double %78)
%80 = fmul double %79, 5.500000e+01
store double %80, double* %2
store double -5.000000e+01, double* %3
%81 = call i32 @glTexCoord1f(double 1.000000e+00)
%82 = load double, double* %1
%83 = load double, double* %2
%84 = load double, double* %3
%85 = call i32 @glVertex3f(double %82, double %83, double %84)
br label %86
86: ; preds = %63
%87 = load double, double* %4
%88 = fadd double %87, 0x3FB921FB53A678D9
store double %88, double* %4
br label %60
89: ; preds = %60
%90 = call i32 (...) @glEnd()
%91 = call i32 (...) @glPopMatrix()
%92 = call i32 (...) @glFinish()
ret void
}

LLVM IR (-O2):
%struct.TYPE_3__ = type { i32, i32, i32 }
@Redraw.roygbiv_image = internal global [8 x [3 x %struct.TYPE_3__]] [[3 x %struct.TYPE_3__] [%struct.TYPE_3__ { i32 63, i32 0, i32 63 }, %struct.TYPE_3__ zeroinitializer, %struct.TYPE_3__ zeroinitializer], [3 x %struct.TYPE_3__] [%struct.TYPE_3__ { i32 127, i32 0, i32 127 }, %struct.TYPE_3__ zeroinitializer, %struct.TYPE_3__ zeroinitializer], [3 x %struct.TYPE_3__] [%struct.TYPE_3__ { i32 191, i32 0, i32 191 }, %struct.TYPE_3__ zeroinitializer, %struct.TYPE_3__ zeroinitializer], [3 x %struct.TYPE_3__] [%struct.TYPE_3__ { i32 0, i32 0, i32 255 }, %struct.TYPE_3__ zeroinitializer, %struct.TYPE_3__ zeroinitializer], [3 x %struct.TYPE_3__] [%struct.TYPE_3__ { i32 0, i32 255, i32 0 }, %struct.TYPE_3__ zeroinitializer, %struct.TYPE_3__ zeroinitializer], [3 x %struct.TYPE_3__] [%struct.TYPE_3__ { i32 255, i32 255, i32 0 }, %struct.TYPE_3__ zeroinitializer, %struct.TYPE_3__ zeroinitializer], [3 x %struct.TYPE_3__] [%struct.TYPE_3__ { i32 255, i32 127, i32 0 }, %struct.TYPE_3__ zeroinitializer, %struct.TYPE_3__ zeroinitializer], [3 x %struct.TYPE_3__] [%struct.TYPE_3__ { i32 255, i32 0, i32 0 }, %struct.TYPE_3__ zeroinitializer, %struct.TYPE_3__ zeroinitializer]]
@GL_COLOR_BUFFER_BIT = global i32 0
@GL_DEPTH_BUFFER_BIT = global i32 0
@GL_TEXTURE_1D = global i32 0
@GL_TEXTURE_MAG_FILTER = global i32 0
@GL_LINEAR = global i32 0
@GL_TEXTURE_MIN_FILTER = global i32 0
@GL_RGB = global i32 0
@GL_UNSIGNED_BYTE = global i32 0
@GL_TEXTURE_ENV = global i32 0
@GL_TEXTURE_ENV_MODE = global i32 0
@GL_DECAL = global i32 0
@GL_DEPTH_TEST = global i32 0
@GL_LEQUAL = global i32 0
@GL_POLYGON = global i32 0
@GL_QUAD_STRIP = global i32 0
define void @Redraw() {
%1 = tail call i32 @glClearColor(double 5.000000e-01, double 5.000000e-01, double 1.000000e+00, double 1.000000e+00)
%2 = load i32, i32* @GL_COLOR_BUFFER_BIT
%3 = load i32, i32* @GL_DEPTH_BUFFER_BIT
%4 = or i32 %3, %2
%5 = tail call i32 @glClear(i32 %4)
%6 = load i32, i32* @GL_TEXTURE_1D
%7 = load i32, i32* @GL_TEXTURE_MAG_FILTER
%8 = load i32, i32* @GL_LINEAR
%9 = tail call i32 @glTexParameteri(i32 %6, i32 %7, i32 %8)
%10 = load i32, i32* @GL_TEXTURE_1D
%11 = load i32, i32* @GL_TEXTURE_MIN_FILTER
%12 = load i32, i32* @GL_LINEAR
%13 = tail call i32 @glTexParameteri(i32 %10, i32 %11, i32 %12)
%14 = load i32, i32* @GL_TEXTURE_1D
%15 = load i32, i32* @GL_RGB
%16 = load i32, i32* @GL_UNSIGNED_BYTE
%17 = tail call i32 @glTexImage1D(i32 %14, i32 0, i32 3, i32 8, i32 0, i32 %15, i32 %16, %struct.TYPE_3__** bitcast ([8 x [3 x %struct.TYPE_3__]]* @Redraw.roygbiv_image to %struct.TYPE_3__**))
%18 = load i32, i32* @GL_TEXTURE_ENV
%19 = load i32, i32* @GL_TEXTURE_ENV_MODE
%20 = load i32, i32* @GL_DECAL
%21 = tail call i32 @glTexEnvi(i32 %18, i32 %19, i32 %20)
%22 = load i32, i32* @GL_TEXTURE_1D
%23 = tail call i32 @glDisable(i32 %22)
%24 = load i32, i32* @GL_DEPTH_TEST
%25 = tail call i32 @glEnable(i32 %24)
%26 = load i32, i32* @GL_LEQUAL
%27 = tail call i32 @glDepthFunc(i32 %26)
%28 = tail call i32 (...) @glPushMatrix()
%29 = tail call i32 @glRotatef(double 1.000000e+01, double 0.000000e+00, double 1.000000e+00, double 0.000000e+00)
%30 = tail call i32 @glTranslatef(double 0.000000e+00, double -4.000000e+01, double -1.000000e+02)
%31 = tail call i32 @glColor3f(double 0.000000e+00, double 8.000000e-01, double 0.000000e+00)
%32 = load i32, i32* @GL_POLYGON
%33 = tail call i32 @glBegin(i32 %32)
br label %34
34: ; preds = %0, %34
%35 = phi double [ 0.000000e+00, %0 ], [ %41, %34 ]
%36 = tail call double @cos(double %35)
%37 = fmul double %36, 2.000000e+02
%38 = tail call double @sin(double %35)
%39 = fmul double %38, 2.000000e+02
%40 = tail call i32 @glVertex3f(double %37, double 0.000000e+00, double %39)
%41 = fadd double %35, 0x3FB921FB53A678D9
%42 = fcmp olt double %41, 0x401921FB53A678D9
br i1 %42, label %34, label %43
43: ; preds = %34
%44 = tail call i32 (...) @glEnd()
%45 = load i32, i32* @GL_TEXTURE_1D
%46 = tail call i32 @glEnable(i32 %45)
%47 = load i32, i32* @GL_QUAD_STRIP
%48 = tail call i32 @glBegin(i32 %47)
br label %49
49: ; preds = %43, %49
%50 = phi double [ 0.000000e+00, %43 ], [ %63, %49 ]
%51 = tail call double @cos(double %50)
%52 = fmul double %51, 5.000000e+01
%53 = tail call double @sin(double %50)
%54 = fmul double %53, 5.000000e+01
%55 = tail call i32 @glTexCoord1f(double 0.000000e+00)
%56 = tail call i32 @glVertex3f(double %52, double %54, double -5.000000e+01)
%57 = tail call double @cos(double %50)
%58 = fmul double %57, 5.500000e+01
%59 = tail call double @sin(double %50)
%60 = fmul double %59, 5.500000e+01
%61 = tail call i32 @glTexCoord1f(double 1.000000e+00)
%62 = tail call i32 @glVertex3f(double %58, double %60, double -5.000000e+01)
%63 = fadd double %50, 0x3FB921FB53A678D9
%64 = fcmp ugt double %63, 0x400921FB53A678D9
br i1 %64, label %65, label %49
65: ; preds = %49
%66 = tail call i32 (...) @glEnd()
%67 = tail call i32 (...) @glPopMatrix()
%68 = tail call i32 (...) @glFinish()
ret void
}