#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*/ glNormal3f(int, int, int);
int /*<<< orphan*/ glTexCoord2f(double, double);
int /*<<< orphan*/ glVertex3f(float, float, float);
void drawPrism(float x, float z, float y, float height, float width,
               float length) {
  glNormal3f(-1, 0, 0);
  glTexCoord2f(0.0, 0.0);
  glVertex3f(x, y, z);
  glTexCoord2f(0.0, 1.0);
  glVertex3f(x, y, z + width);
  glTexCoord2f(1.0, 1.0);
  glVertex3f(x, y + height, z + width);
  glTexCoord2f(1.0, 0.0);
  glVertex3f(x, y + height, z);
  glNormal3f(0, 0, 1);
  glTexCoord2f(0.0, 0.0);
  glVertex3f(x, y, z + width);
  glTexCoord2f(0.0, 1.0);
  glVertex3f(x + length, y, z + width);
  glTexCoord2f(1.0, 1.0);
  glVertex3f(x + length, y + height, z + width);
  glTexCoord2f(1.0, 0.0);
  glVertex3f(x, y + height, z + width);
  glNormal3f(1, 0, 0);
  glTexCoord2f(0.0, 0.0);
  glVertex3f(x + length, y, z + width);
  glTexCoord2f(0.0, 1.0);
  glVertex3f(x + length, y, z);
  glTexCoord2f(1.0, 1.0);
  glVertex3f(x + length, y + height, z);
  glTexCoord2f(1.0, 0.0);
  glVertex3f(x + length, y + height, z + width);
  glNormal3f(0, 0, -1);
  glTexCoord2f(0.0, 0.0);
  glVertex3f(x + length, y, z);
  glTexCoord2f(0.0, 1.0);
  glVertex3f(x, y, z);
  glTexCoord2f(1.0, 1.0);
  glVertex3f(x, y + height, z);
  glTexCoord2f(1.0, 0.0);
  glVertex3f(x + length, y + height, z);
  glNormal3f(0, 1, 0);
  glTexCoord2f(0.0, 0.0);
  glVertex3f(x, y + height, z);
  glTexCoord2f(0.0, 1.0);
  glVertex3f(x, y + height, z + width);
  glTexCoord2f(1.0, 1.0);
  glVertex3f(x + length, y + height, z + width);
  glTexCoord2f(1.0, 0.0);
  glVertex3f(x + length, y + height, z);
  glNormal3f(0, -1, 0);
  glTexCoord2f(0.0, 0.0);
  glVertex3f(x, y, z);
  glTexCoord2f(0.0, 1.0);
  glVertex3f(x, y, z + width);
  glTexCoord2f(1.0, 1.0);
  glVertex3f(x + length, y, z + width);
  glTexCoord2f(1.0, 0.0);
  glVertex3f(x + length, y, z);
}


x86 assembly (clang, -O0):
<drawPrism>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
movss  %xmm0,-0x4(%rbp)
movss  %xmm1,-0x8(%rbp)
movss  %xmm2,-0xc(%rbp)
movss  %xmm3,-0x10(%rbp)
movss  %xmm4,-0x14(%rbp)
movss  %xmm5,-0x18(%rbp)
mov    $0xffffffff,%edi
xor    %edx,%edx
mov    %edx,%esi
call   1050 <glNormal3f@plt>
xorps  %xmm1,%xmm1
movaps %xmm1,%xmm0
call   1040 <glTexCoord2f@plt>
movss  -0x4(%rbp),%xmm0
movss  -0xc(%rbp),%xmm1
movss  -0x8(%rbp),%xmm2
call   1030 <glVertex3f@plt>
xorps  %xmm0,%xmm0
movsd  0xe72(%rip),%xmm1
call   1040 <glTexCoord2f@plt>
movss  -0x4(%rbp),%xmm0
movss  -0xc(%rbp),%xmm1
movss  -0x8(%rbp),%xmm2
addss  -0x14(%rbp),%xmm2
call   1030 <glVertex3f@plt>
movsd  0xe4c(%rip),%xmm1
movaps %xmm1,%xmm0
call   1040 <glTexCoord2f@plt>
movss  -0x4(%rbp),%xmm0
movss  -0xc(%rbp),%xmm1
addss  -0x10(%rbp),%xmm1
movss  -0x8(%rbp),%xmm2
addss  -0x14(%rbp),%xmm2
call   1030 <glVertex3f@plt>
movsd  0xe1e(%rip),%xmm0
xorps  %xmm1,%xmm1
call   1040 <glTexCoord2f@plt>
movss  -0x4(%rbp),%xmm0
movss  -0xc(%rbp),%xmm1
addss  -0x10(%rbp),%xmm1
movss  -0x8(%rbp),%xmm2
call   1030 <glVertex3f@plt>
xor    %esi,%esi
mov    $0x1,%edx
mov    %esi,%edi
call   1050 <glNormal3f@plt>
xorps  %xmm1,%xmm1
movaps %xmm1,%xmm0
call   1040 <glTexCoord2f@plt>
movss  -0x4(%rbp),%xmm0
movss  -0xc(%rbp),%xmm1
movss  -0x8(%rbp),%xmm2
addss  -0x14(%rbp),%xmm2
call   1030 <glVertex3f@plt>
xorps  %xmm0,%xmm0
movsd  0xdc0(%rip),%xmm1
call   1040 <glTexCoord2f@plt>
movss  -0x4(%rbp),%xmm0
addss  -0x18(%rbp),%xmm0
movss  -0xc(%rbp),%xmm1
movss  -0x8(%rbp),%xmm2
addss  -0x14(%rbp),%xmm2
call   1030 <glVertex3f@plt>
movsd  0xd95(%rip),%xmm1
movaps %xmm1,%xmm0
call   1040 <glTexCoord2f@plt>
movss  -0x4(%rbp),%xmm0
addss  -0x18(%rbp),%xmm0
movss  -0xc(%rbp),%xmm1
addss  -0x10(%rbp),%xmm1
movss  -0x8(%rbp),%xmm2
addss  -0x14(%rbp),%xmm2
call   1030 <glVertex3f@plt>
movsd  0xd62(%rip),%xmm0
xorps  %xmm1,%xmm1
call   1040 <glTexCoord2f@plt>
movss  -0x4(%rbp),%xmm0
movss  -0xc(%rbp),%xmm1
addss  -0x10(%rbp),%xmm1
movss  -0x8(%rbp),%xmm2
addss  -0x14(%rbp),%xmm2
call   1030 <glVertex3f@plt>
mov    $0x1,%edi
xor    %edx,%edx
mov    %edx,%esi
call   1050 <glNormal3f@plt>
xorps  %xmm1,%xmm1
movaps %xmm1,%xmm0
call   1040 <glTexCoord2f@plt>
movss  -0x4(%rbp),%xmm0
addss  -0x18(%rbp),%xmm0
movss  -0xc(%rbp),%xmm1
movss  -0x8(%rbp),%xmm2
addss  -0x14(%rbp),%xmm2
call   1030 <glVertex3f@plt>
xorps  %xmm0,%xmm0
movsd  0xcfa(%rip),%xmm1
call   1040 <glTexCoord2f@plt>
movss  -0x4(%rbp),%xmm0
addss  -0x18(%rbp),%xmm0
movss  -0xc(%rbp),%xmm1
movss  -0x8(%rbp),%xmm2
call   1030 <glVertex3f@plt>
movsd  0xcd4(%rip),%xmm1
movaps %xmm1,%xmm0
call   1040 <glTexCoord2f@plt>
movss  -0x4(%rbp),%xmm0
addss  -0x18(%rbp),%xmm0
movss  -0xc(%rbp),%xmm1
addss  -0x10(%rbp),%xmm1
movss  -0x8(%rbp),%xmm2
call   1030 <glVertex3f@plt>
movsd  0xca6(%rip),%xmm0
xorps  %xmm1,%xmm1
call   1040 <glTexCoord2f@plt>
movss  -0x4(%rbp),%xmm0
addss  -0x18(%rbp),%xmm0
movss  -0xc(%rbp),%xmm1
addss  -0x10(%rbp),%xmm1
movss  -0x8(%rbp),%xmm2
addss  -0x14(%rbp),%xmm2
call   1030 <glVertex3f@plt>
xor    %esi,%esi
mov    $0xffffffff,%edx
mov    %esi,%edi
call   1050 <glNormal3f@plt>
xorps  %xmm1,%xmm1
movaps %xmm1,%xmm0
call   1040 <glTexCoord2f@plt>
movss  -0x4(%rbp),%xmm0
addss  -0x18(%rbp),%xmm0
movss  -0xc(%rbp),%xmm1
movss  -0x8(%rbp),%xmm2
call   1030 <glVertex3f@plt>
xorps  %xmm0,%xmm0
movsd  0xc3e(%rip),%xmm1
call   1040 <glTexCoord2f@plt>
movss  -0x4(%rbp),%xmm0
movss  -0xc(%rbp),%xmm1
movss  -0x8(%rbp),%xmm2
call   1030 <glVertex3f@plt>
movsd  0xc1d(%rip),%xmm1
movaps %xmm1,%xmm0
call   1040 <glTexCoord2f@plt>
movss  -0x4(%rbp),%xmm0
movss  -0xc(%rbp),%xmm1
addss  -0x10(%rbp),%xmm1
movss  -0x8(%rbp),%xmm2
call   1030 <glVertex3f@plt>
movsd  0xbf4(%rip),%xmm0
xorps  %xmm1,%xmm1
call   1040 <glTexCoord2f@plt>
movss  -0x4(%rbp),%xmm0
addss  -0x18(%rbp),%xmm0
movss  -0xc(%rbp),%xmm1
addss  -0x10(%rbp),%xmm1
movss  -0x8(%rbp),%xmm2
call   1030 <glVertex3f@plt>
xor    %edx,%edx
mov    $0x1,%esi
mov    %edx,%edi
call   1050 <glNormal3f@plt>
xorps  %xmm1,%xmm1
movaps %xmm1,%xmm0
call   1040 <glTexCoord2f@plt>
movss  -0x4(%rbp),%xmm0
movss  -0xc(%rbp),%xmm1
addss  -0x10(%rbp),%xmm1
movss  -0x8(%rbp),%xmm2
call   1030 <glVertex3f@plt>
xorps  %xmm0,%xmm0
movsd  0xb91(%rip),%xmm1
call   1040 <glTexCoord2f@plt>
movss  -0x4(%rbp),%xmm0
movss  -0xc(%rbp),%xmm1
addss  -0x10(%rbp),%xmm1
movss  -0x8(%rbp),%xmm2
addss  -0x14(%rbp),%xmm2
call   1030 <glVertex3f@plt>
movsd  0xb66(%rip),%xmm1
movaps %xmm1,%xmm0
call   1040 <glTexCoord2f@plt>
movss  -0x4(%rbp),%xmm0
addss  -0x18(%rbp),%xmm0
movss  -0xc(%rbp),%xmm1
addss  -0x10(%rbp),%xmm1
movss  -0x8(%rbp),%xmm2
addss  -0x14(%rbp),%xmm2
call   1030 <glVertex3f@plt>
movsd  0xb33(%rip),%xmm0
xorps  %xmm1,%xmm1
call   1040 <glTexCoord2f@plt>
movss  -0x4(%rbp),%xmm0
addss  -0x18(%rbp),%xmm0
movss  -0xc(%rbp),%xmm1
addss  -0x10(%rbp),%xmm1
movss  -0x8(%rbp),%xmm2
call   1030 <glVertex3f@plt>
xor    %edx,%edx
mov    $0xffffffff,%esi
mov    %edx,%edi
call   1050 <glNormal3f@plt>
xorps  %xmm1,%xmm1
movaps %xmm1,%xmm0
call   1040 <glTexCoord2f@plt>
movss  -0x4(%rbp),%xmm0
movss  -0xc(%rbp),%xmm1
movss  -0x8(%rbp),%xmm2
call   1030 <glVertex3f@plt>
xorps  %xmm0,%xmm0
movsd  0xad5(%rip),%xmm1
call   1040 <glTexCoord2f@plt>
movss  -0x4(%rbp),%xmm0
movss  -0xc(%rbp),%xmm1
movss  -0x8(%rbp),%xmm2
addss  -0x14(%rbp),%xmm2
call   1030 <glVertex3f@plt>
movsd  0xaaf(%rip),%xmm1
movaps %xmm1,%xmm0
call   1040 <glTexCoord2f@plt>
movss  -0x4(%rbp),%xmm0
addss  -0x18(%rbp),%xmm0
movss  -0xc(%rbp),%xmm1
movss  -0x8(%rbp),%xmm2
addss  -0x14(%rbp),%xmm2
call   1030 <glVertex3f@plt>
movsd  0xa81(%rip),%xmm0
xorps  %xmm1,%xmm1
call   1040 <glTexCoord2f@plt>
movss  -0x4(%rbp),%xmm0
addss  -0x18(%rbp),%xmm0
movss  -0xc(%rbp),%xmm1
movss  -0x8(%rbp),%xmm2
call   1030 <glVertex3f@plt>
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<drawPrism>:
sub    $0x18,%rsp
movss  %xmm5,0x4(%rsp)
movss  %xmm4,0x8(%rsp)
movss  %xmm3,(%rsp)
movss  %xmm2,0x10(%rsp)
movss  %xmm1,0x14(%rsp)
movss  %xmm0,0xc(%rsp)
mov    $0xffffffff,%edi
xor    %esi,%esi
xor    %edx,%edx
call   1050 <glNormal3f@plt>
xorps  %xmm0,%xmm0
xorps  %xmm1,%xmm1
call   1040 <glTexCoord2f@plt>
movss  0xc(%rsp),%xmm0
movss  0x10(%rsp),%xmm1
movss  0x14(%rsp),%xmm2
call   1030 <glVertex3f@plt>
movsd  0xe71(%rip),%xmm1
xorps  %xmm0,%xmm0
call   1040 <glTexCoord2f@plt>
movss  0x8(%rsp),%xmm2
addss  0x14(%rsp),%xmm2
movss  %xmm2,0x8(%rsp)
movss  0xc(%rsp),%xmm0
movss  0x10(%rsp),%xmm1
call   1030 <glVertex3f@plt>
movsd  0xe3e(%rip),%xmm0
movaps %xmm0,%xmm1
call   1040 <glTexCoord2f@plt>
movss  (%rsp),%xmm1
addss  0x10(%rsp),%xmm1
movss  %xmm1,(%rsp)
movss  0xc(%rsp),%xmm0
movss  0x8(%rsp),%xmm2
call   1030 <glVertex3f@plt>
xorps  %xmm1,%xmm1
movsd  0xe0a(%rip),%xmm0
call   1040 <glTexCoord2f@plt>
movss  0xc(%rsp),%xmm0
movss  (%rsp),%xmm1
movss  0x14(%rsp),%xmm2
call   1030 <glVertex3f@plt>
xor    %edi,%edi
xor    %esi,%esi
mov    $0x1,%edx
call   1050 <glNormal3f@plt>
xorps  %xmm0,%xmm0
xorps  %xmm1,%xmm1
call   1040 <glTexCoord2f@plt>
movss  0xc(%rsp),%xmm0
movss  0x10(%rsp),%xmm1
movss  0x8(%rsp),%xmm2
call   1030 <glVertex3f@plt>
xorps  %xmm0,%xmm0
movsd  0xdb4(%rip),%xmm1
call   1040 <glTexCoord2f@plt>
movss  0x4(%rsp),%xmm0
addss  0xc(%rsp),%xmm0
movss  %xmm0,0x4(%rsp)
movss  0x10(%rsp),%xmm1
movss  0x8(%rsp),%xmm2
call   1030 <glVertex3f@plt>
movsd  0xd84(%rip),%xmm0
movaps %xmm0,%xmm1
call   1040 <glTexCoord2f@plt>
movss  0x4(%rsp),%xmm0
movss  (%rsp),%xmm1
movss  0x8(%rsp),%xmm2
call   1030 <glVertex3f@plt>
xorps  %xmm1,%xmm1
movsd  0xd5b(%rip),%xmm0
call   1040 <glTexCoord2f@plt>
movss  0xc(%rsp),%xmm0
movss  (%rsp),%xmm1
movss  0x8(%rsp),%xmm2
call   1030 <glVertex3f@plt>
mov    $0x1,%edi
xor    %esi,%esi
xor    %edx,%edx
call   1050 <glNormal3f@plt>
xorps  %xmm0,%xmm0
xorps  %xmm1,%xmm1
call   1040 <glTexCoord2f@plt>
movss  0x4(%rsp),%xmm0
movss  0x10(%rsp),%xmm1
movss  0x8(%rsp),%xmm2
call   1030 <glVertex3f@plt>
xorps  %xmm0,%xmm0
movsd  0xd05(%rip),%xmm1
call   1040 <glTexCoord2f@plt>
movss  0x4(%rsp),%xmm0
movss  0x10(%rsp),%xmm1
movss  0x14(%rsp),%xmm2
call   1030 <glVertex3f@plt>
movsd  0xce1(%rip),%xmm0
movaps %xmm0,%xmm1
call   1040 <glTexCoord2f@plt>
movss  0x4(%rsp),%xmm0
movss  (%rsp),%xmm1
movss  0x14(%rsp),%xmm2
call   1030 <glVertex3f@plt>
xorps  %xmm1,%xmm1
movsd  0xcb8(%rip),%xmm0
call   1040 <glTexCoord2f@plt>
movss  0x4(%rsp),%xmm0
movss  (%rsp),%xmm1
movss  0x8(%rsp),%xmm2
call   1030 <glVertex3f@plt>
xor    %edi,%edi
xor    %esi,%esi
mov    $0xffffffff,%edx
call   1050 <glNormal3f@plt>
xorps  %xmm0,%xmm0
xorps  %xmm1,%xmm1
call   1040 <glTexCoord2f@plt>
movss  0x4(%rsp),%xmm0
movss  0x10(%rsp),%xmm1
movss  0x14(%rsp),%xmm2
call   1030 <glVertex3f@plt>
xorps  %xmm0,%xmm0
movsd  0xc62(%rip),%xmm1
call   1040 <glTexCoord2f@plt>
movss  0xc(%rsp),%xmm0
movss  0x10(%rsp),%xmm1
movss  0x14(%rsp),%xmm2
call   1030 <glVertex3f@plt>
movsd  0xc3e(%rip),%xmm0
movaps %xmm0,%xmm1
call   1040 <glTexCoord2f@plt>
movss  0xc(%rsp),%xmm0
movss  (%rsp),%xmm1
movss  0x14(%rsp),%xmm2
call   1030 <glVertex3f@plt>
xorps  %xmm1,%xmm1
movsd  0xc15(%rip),%xmm0
call   1040 <glTexCoord2f@plt>
movss  0x4(%rsp),%xmm0
movss  (%rsp),%xmm1
movss  0x14(%rsp),%xmm2
call   1030 <glVertex3f@plt>
xor    %edi,%edi
mov    $0x1,%esi
xor    %edx,%edx
call   1050 <glNormal3f@plt>
xorps  %xmm0,%xmm0
xorps  %xmm1,%xmm1
call   1040 <glTexCoord2f@plt>
movss  0xc(%rsp),%xmm0
movss  (%rsp),%xmm1
movss  0x14(%rsp),%xmm2
call   1030 <glVertex3f@plt>
xorps  %xmm0,%xmm0
movsd  0xbc0(%rip),%xmm1
call   1040 <glTexCoord2f@plt>
movss  0xc(%rsp),%xmm0
movss  (%rsp),%xmm1
movss  0x8(%rsp),%xmm2
call   1030 <glVertex3f@plt>
movsd  0xb9d(%rip),%xmm0
movaps %xmm0,%xmm1
call   1040 <glTexCoord2f@plt>
movss  0x4(%rsp),%xmm0
movss  (%rsp),%xmm1
movss  0x8(%rsp),%xmm2
call   1030 <glVertex3f@plt>
xorps  %xmm1,%xmm1
movsd  0xb74(%rip),%xmm0
call   1040 <glTexCoord2f@plt>
movss  0x4(%rsp),%xmm0
movss  (%rsp),%xmm1
movss  0x14(%rsp),%xmm2
call   1030 <glVertex3f@plt>
xor    %edi,%edi
mov    $0xffffffff,%esi
xor    %edx,%edx
call   1050 <glNormal3f@plt>
xorps  %xmm0,%xmm0
xorps  %xmm1,%xmm1
call   1040 <glTexCoord2f@plt>
movss  0xc(%rsp),%xmm0
movss  0x10(%rsp),%xmm1
movss  0x14(%rsp),%xmm2
call   1030 <glVertex3f@plt>
xorps  %xmm0,%xmm0
movsd  0xb1e(%rip),%xmm1
call   1040 <glTexCoord2f@plt>
movss  0xc(%rsp),%xmm0
movss  0x10(%rsp),%xmm1
movss  0x8(%rsp),%xmm2
call   1030 <glVertex3f@plt>
movsd  0xafa(%rip),%xmm0
movaps %xmm0,%xmm1
call   1040 <glTexCoord2f@plt>
movss  0x4(%rsp),%xmm0
movss  0x10(%rsp),%xmm1
movss  0x8(%rsp),%xmm2
call   1030 <glVertex3f@plt>
xorps  %xmm1,%xmm1
movsd  0xad0(%rip),%xmm0
call   1040 <glTexCoord2f@plt>
movss  0x4(%rsp),%xmm0
movss  0x10(%rsp),%xmm1
movss  0x14(%rsp),%xmm2
add    $0x18,%rsp
jmp    1030 <glVertex3f@plt>

LLVM IR (-O0):
define void @drawPrism(float %0, float %1, float %2, float %3, float %4, float %5) {
%7 = alloca float
%8 = alloca float
%9 = alloca float
%10 = alloca float
%11 = alloca float
%12 = alloca float
store float %0, float* %7
store float %1, float* %8
store float %2, float* %9
store float %3, float* %10
store float %4, float* %11
store float %5, float* %12
%13 = call i32 @glNormal3f(i32 -1, i32 0, i32 0)
%14 = call i32 @glTexCoord2f(double 0.000000e+00, double 0.000000e+00)
%15 = load float, float* %7
%16 = load float, float* %9
%17 = load float, float* %8
%18 = call i32 @glVertex3f(float %15, float %16, float %17)
%19 = call i32 @glTexCoord2f(double 0.000000e+00, double 1.000000e+00)
%20 = load float, float* %7
%21 = load float, float* %9
%22 = load float, float* %8
%23 = load float, float* %11
%24 = fadd float %22, %23
%25 = call i32 @glVertex3f(float %20, float %21, float %24)
%26 = call i32 @glTexCoord2f(double 1.000000e+00, double 1.000000e+00)
%27 = load float, float* %7
%28 = load float, float* %9
%29 = load float, float* %10
%30 = fadd float %28, %29
%31 = load float, float* %8
%32 = load float, float* %11
%33 = fadd float %31, %32
%34 = call i32 @glVertex3f(float %27, float %30, float %33)
%35 = call i32 @glTexCoord2f(double 1.000000e+00, double 0.000000e+00)
%36 = load float, float* %7
%37 = load float, float* %9
%38 = load float, float* %10
%39 = fadd float %37, %38
%40 = load float, float* %8
%41 = call i32 @glVertex3f(float %36, float %39, float %40)
%42 = call i32 @glNormal3f(i32 0, i32 0, i32 1)
%43 = call i32 @glTexCoord2f(double 0.000000e+00, double 0.000000e+00)
%44 = load float, float* %7
%45 = load float, float* %9
%46 = load float, float* %8
%47 = load float, float* %11
%48 = fadd float %46, %47
%49 = call i32 @glVertex3f(float %44, float %45, float %48)
%50 = call i32 @glTexCoord2f(double 0.000000e+00, double 1.000000e+00)
%51 = load float, float* %7
%52 = load float, float* %12
%53 = fadd float %51, %52
%54 = load float, float* %9
%55 = load float, float* %8
%56 = load float, float* %11
%57 = fadd float %55, %56
%58 = call i32 @glVertex3f(float %53, float %54, float %57)
%59 = call i32 @glTexCoord2f(double 1.000000e+00, double 1.000000e+00)
%60 = load float, float* %7
%61 = load float, float* %12
%62 = fadd float %60, %61
%63 = load float, float* %9
%64 = load float, float* %10
%65 = fadd float %63, %64
%66 = load float, float* %8
%67 = load float, float* %11
%68 = fadd float %66, %67
%69 = call i32 @glVertex3f(float %62, float %65, float %68)
%70 = call i32 @glTexCoord2f(double 1.000000e+00, double 0.000000e+00)
%71 = load float, float* %7
%72 = load float, float* %9
%73 = load float, float* %10
%74 = fadd float %72, %73
%75 = load float, float* %8
%76 = load float, float* %11
%77 = fadd float %75, %76
%78 = call i32 @glVertex3f(float %71, float %74, float %77)
%79 = call i32 @glNormal3f(i32 1, i32 0, i32 0)
%80 = call i32 @glTexCoord2f(double 0.000000e+00, double 0.000000e+00)
%81 = load float, float* %7
%82 = load float, float* %12
%83 = fadd float %81, %82
%84 = load float, float* %9
%85 = load float, float* %8
%86 = load float, float* %11
%87 = fadd float %85, %86
%88 = call i32 @glVertex3f(float %83, float %84, float %87)
%89 = call i32 @glTexCoord2f(double 0.000000e+00, double 1.000000e+00)
%90 = load float, float* %7
%91 = load float, float* %12
%92 = fadd float %90, %91
%93 = load float, float* %9
%94 = load float, float* %8
%95 = call i32 @glVertex3f(float %92, float %93, float %94)
%96 = call i32 @glTexCoord2f(double 1.000000e+00, double 1.000000e+00)
%97 = load float, float* %7
%98 = load float, float* %12
%99 = fadd float %97, %98
%100 = load float, float* %9
%101 = load float, float* %10
%102 = fadd float %100, %101
%103 = load float, float* %8
%104 = call i32 @glVertex3f(float %99, float %102, float %103)
%105 = call i32 @glTexCoord2f(double 1.000000e+00, double 0.000000e+00)
%106 = load float, float* %7
%107 = load float, float* %12
%108 = fadd float %106, %107
%109 = load float, float* %9
%110 = load float, float* %10
%111 = fadd float %109, %110
%112 = load float, float* %8
%113 = load float, float* %11
%114 = fadd float %112, %113
%115 = call i32 @glVertex3f(float %108, float %111, float %114)
%116 = call i32 @glNormal3f(i32 0, i32 0, i32 -1)
%117 = call i32 @glTexCoord2f(double 0.000000e+00, double 0.000000e+00)
%118 = load float, float* %7
%119 = load float, float* %12
%120 = fadd float %118, %119
%121 = load float, float* %9
%122 = load float, float* %8
%123 = call i32 @glVertex3f(float %120, float %121, float %122)
%124 = call i32 @glTexCoord2f(double 0.000000e+00, double 1.000000e+00)
%125 = load float, float* %7
%126 = load float, float* %9
%127 = load float, float* %8
%128 = call i32 @glVertex3f(float %125, float %126, float %127)
%129 = call i32 @glTexCoord2f(double 1.000000e+00, double 1.000000e+00)
%130 = load float, float* %7
%131 = load float, float* %9
%132 = load float, float* %10
%133 = fadd float %131, %132
%134 = load float, float* %8
%135 = call i32 @glVertex3f(float %130, float %133, float %134)
%136 = call i32 @glTexCoord2f(double 1.000000e+00, double 0.000000e+00)
%137 = load float, float* %7
%138 = load float, float* %12
%139 = fadd float %137, %138
%140 = load float, float* %9
%141 = load float, float* %10
%142 = fadd float %140, %141
%143 = load float, float* %8
%144 = call i32 @glVertex3f(float %139, float %142, float %143)
%145 = call i32 @glNormal3f(i32 0, i32 1, i32 0)
%146 = call i32 @glTexCoord2f(double 0.000000e+00, double 0.000000e+00)
%147 = load float, float* %7
%148 = load float, float* %9
%149 = load float, float* %10
%150 = fadd float %148, %149
%151 = load float, float* %8
%152 = call i32 @glVertex3f(float %147, float %150, float %151)
%153 = call i32 @glTexCoord2f(double 0.000000e+00, double 1.000000e+00)
%154 = load float, float* %7
%155 = load float, float* %9
%156 = load float, float* %10
%157 = fadd float %155, %156
%158 = load float, float* %8
%159 = load float, float* %11
%160 = fadd float %158, %159
%161 = call i32 @glVertex3f(float %154, float %157, float %160)
%162 = call i32 @glTexCoord2f(double 1.000000e+00, double 1.000000e+00)
%163 = load float, float* %7
%164 = load float, float* %12
%165 = fadd float %163, %164
%166 = load float, float* %9
%167 = load float, float* %10
%168 = fadd float %166, %167
%169 = load float, float* %8
%170 = load float, float* %11
%171 = fadd float %169, %170
%172 = call i32 @glVertex3f(float %165, float %168, float %171)
%173 = call i32 @glTexCoord2f(double 1.000000e+00, double 0.000000e+00)
%174 = load float, float* %7
%175 = load float, float* %12
%176 = fadd float %174, %175
%177 = load float, float* %9
%178 = load float, float* %10
%179 = fadd float %177, %178
%180 = load float, float* %8
%181 = call i32 @glVertex3f(float %176, float %179, float %180)
%182 = call i32 @glNormal3f(i32 0, i32 -1, i32 0)
%183 = call i32 @glTexCoord2f(double 0.000000e+00, double 0.000000e+00)
%184 = load float, float* %7
%185 = load float, float* %9
%186 = load float, float* %8
%187 = call i32 @glVertex3f(float %184, float %185, float %186)
%188 = call i32 @glTexCoord2f(double 0.000000e+00, double 1.000000e+00)
%189 = load float, float* %7
%190 = load float, float* %9
%191 = load float, float* %8
%192 = load float, float* %11
%193 = fadd float %191, %192
%194 = call i32 @glVertex3f(float %189, float %190, float %193)
%195 = call i32 @glTexCoord2f(double 1.000000e+00, double 1.000000e+00)
%196 = load float, float* %7
%197 = load float, float* %12
%198 = fadd float %196, %197
%199 = load float, float* %9
%200 = load float, float* %8
%201 = load float, float* %11
%202 = fadd float %200, %201
%203 = call i32 @glVertex3f(float %198, float %199, float %202)
%204 = call i32 @glTexCoord2f(double 1.000000e+00, double 0.000000e+00)
%205 = load float, float* %7
%206 = load float, float* %12
%207 = fadd float %205, %206
%208 = load float, float* %9
%209 = load float, float* %8
%210 = call i32 @glVertex3f(float %207, float %208, float %209)
ret void
}

LLVM IR (-O2):
define void @drawPrism(float %0, float %1, float %2, float %3, float %4, float %5) {
%7 = tail call i32 @glNormal3f(i32 -1, i32 0, i32 0)
%8 = tail call i32 @glTexCoord2f(double 0.000000e+00, double 0.000000e+00)
%9 = tail call i32 @glVertex3f(float %0, float %2, float %1)
%10 = tail call i32 @glTexCoord2f(double 0.000000e+00, double 1.000000e+00)
%11 = fadd float %1, %4
%12 = tail call i32 @glVertex3f(float %0, float %2, float %11)
%13 = tail call i32 @glTexCoord2f(double 1.000000e+00, double 1.000000e+00)
%14 = fadd float %2, %3
%15 = tail call i32 @glVertex3f(float %0, float %14, float %11)
%16 = tail call i32 @glTexCoord2f(double 1.000000e+00, double 0.000000e+00)
%17 = tail call i32 @glVertex3f(float %0, float %14, float %1)
%18 = tail call i32 @glNormal3f(i32 0, i32 0, i32 1)
%19 = tail call i32 @glTexCoord2f(double 0.000000e+00, double 0.000000e+00)
%20 = tail call i32 @glVertex3f(float %0, float %2, float %11)
%21 = tail call i32 @glTexCoord2f(double 0.000000e+00, double 1.000000e+00)
%22 = fadd float %0, %5
%23 = tail call i32 @glVertex3f(float %22, float %2, float %11)
%24 = tail call i32 @glTexCoord2f(double 1.000000e+00, double 1.000000e+00)
%25 = tail call i32 @glVertex3f(float %22, float %14, float %11)
%26 = tail call i32 @glTexCoord2f(double 1.000000e+00, double 0.000000e+00)
%27 = tail call i32 @glVertex3f(float %0, float %14, float %11)
%28 = tail call i32 @glNormal3f(i32 1, i32 0, i32 0)
%29 = tail call i32 @glTexCoord2f(double 0.000000e+00, double 0.000000e+00)
%30 = tail call i32 @glVertex3f(float %22, float %2, float %11)
%31 = tail call i32 @glTexCoord2f(double 0.000000e+00, double 1.000000e+00)
%32 = tail call i32 @glVertex3f(float %22, float %2, float %1)
%33 = tail call i32 @glTexCoord2f(double 1.000000e+00, double 1.000000e+00)
%34 = tail call i32 @glVertex3f(float %22, float %14, float %1)
%35 = tail call i32 @glTexCoord2f(double 1.000000e+00, double 0.000000e+00)
%36 = tail call i32 @glVertex3f(float %22, float %14, float %11)
%37 = tail call i32 @glNormal3f(i32 0, i32 0, i32 -1)
%38 = tail call i32 @glTexCoord2f(double 0.000000e+00, double 0.000000e+00)
%39 = tail call i32 @glVertex3f(float %22, float %2, float %1)
%40 = tail call i32 @glTexCoord2f(double 0.000000e+00, double 1.000000e+00)
%41 = tail call i32 @glVertex3f(float %0, float %2, float %1)
%42 = tail call i32 @glTexCoord2f(double 1.000000e+00, double 1.000000e+00)
%43 = tail call i32 @glVertex3f(float %0, float %14, float %1)
%44 = tail call i32 @glTexCoord2f(double 1.000000e+00, double 0.000000e+00)
%45 = tail call i32 @glVertex3f(float %22, float %14, float %1)
%46 = tail call i32 @glNormal3f(i32 0, i32 1, i32 0)
%47 = tail call i32 @glTexCoord2f(double 0.000000e+00, double 0.000000e+00)
%48 = tail call i32 @glVertex3f(float %0, float %14, float %1)
%49 = tail call i32 @glTexCoord2f(double 0.000000e+00, double 1.000000e+00)
%50 = tail call i32 @glVertex3f(float %0, float %14, float %11)
%51 = tail call i32 @glTexCoord2f(double 1.000000e+00, double 1.000000e+00)
%52 = tail call i32 @glVertex3f(float %22, float %14, float %11)
%53 = tail call i32 @glTexCoord2f(double 1.000000e+00, double 0.000000e+00)
%54 = tail call i32 @glVertex3f(float %22, float %14, float %1)
%55 = tail call i32 @glNormal3f(i32 0, i32 -1, i32 0)
%56 = tail call i32 @glTexCoord2f(double 0.000000e+00, double 0.000000e+00)
%57 = tail call i32 @glVertex3f(float %0, float %2, float %1)
%58 = tail call i32 @glTexCoord2f(double 0.000000e+00, double 1.000000e+00)
%59 = tail call i32 @glVertex3f(float %0, float %2, float %11)
%60 = tail call i32 @glTexCoord2f(double 1.000000e+00, double 1.000000e+00)
%61 = tail call i32 @glVertex3f(float %22, float %2, float %11)
%62 = tail call i32 @glTexCoord2f(double 1.000000e+00, double 0.000000e+00)
%63 = tail call i32 @glVertex3f(float %22, float %2, float %1)
ret void
}