#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*/ glVertex3f(int, int, float);
void draw_line(int mask, int i, int j) {
  float x = -0.01f, y = 1.01f, z1 = 0.09f, z2 = 0.81f;
  if ((mask & (1 << 8)) == (1 << 8)) {
    glVertex3f(j + x, i + x, z1);
    glVertex3f(j + y, i + x, z1);
  }
  if ((mask & (1 << 9)) == (1 << 9)) {
    glVertex3f(j + y, i + x, z1);
    glVertex3f(j + y, i + x, z2);
  }
  if ((mask & (1 << 10)) == (1 << 10)) {
    glVertex3f(j + y, i + x, z2);
    glVertex3f(j + x, i + x, z2);
  }
  if ((mask & (1 << 11)) == (1 << 11)) {
    glVertex3f(j + x, i + x, z2);
    glVertex3f(j + x, i + x, z1);
  }
  if ((mask & (1 << 5)) == (1 << 5)) {
    glVertex3f(j + y, i + x, z1);
    glVertex3f(j + y, i + y, z1);
  }
  if ((mask & (1 << 1)) == (1 << 1)) {
    glVertex3f(j + y, i + y, z1);
    glVertex3f(j + y, i + y, z2);
  }
  if ((mask & (1 << 6)) == (1 << 6)) {
    glVertex3f(j + y, i + y, z2);
    glVertex3f(j + y, i + x, z2);
  }
  if ((mask & (1 << 9)) == (1 << 9)) {
    glVertex3f(j + y, i + x, z2);
    glVertex3f(j + y, i + x, z1);
  }
  if ((mask & (1 << 0)) == (1 << 0)) {
    glVertex3f(j + x, i + y, z1);
    glVertex3f(j + y, i + y, z1);
  }
  if ((mask & (1 << 1)) == (1 << 1)) {
    glVertex3f(j + y, i + y, z1);
    glVertex3f(j + y, i + y, z2);
  }
  if ((mask & (1 << 2)) == (1 << 2)) {
    glVertex3f(j + y, i + y, z2);
    glVertex3f(j + x, i + y, z2);
  }
  if ((mask & (1 << 3)) == (1 << 3)) {
    glVertex3f(j + x, i + y, z2);
    glVertex3f(j + x, i + y, z1);
  }
  if ((mask & (1 << 11)) == (1 << 11)) {
    glVertex3f(j + x, i + x, z1);
    glVertex3f(j + x, i + x, z2);
  }
  if ((mask & (1 << 7)) == (1 << 7)) {
    glVertex3f(j + x, i + x, z2);
    glVertex3f(j + x, i + y, z2);
  }
  if ((mask & (1 << 3)) == (1 << 3)) {
    glVertex3f(j + x, i + y, z2);
    glVertex3f(j + x, i + y, z1);
  }
  if ((mask & (1 << 4)) == (1 << 4)) {
    glVertex3f(j + x, i + y, z1);
    glVertex3f(j + x, i + x, z1);
  }
}


x86 assembly (clang, -O0):
<draw_line>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    %edx,-0xc(%rbp)
movss  0xee3(%rip),%xmm0
movss  %xmm0,-0x10(%rbp)
movss  0xed2(%rip),%xmm0
movss  %xmm0,-0x14(%rbp)
movss  0xec1(%rip),%xmm0
movss  %xmm0,-0x18(%rbp)
movss  0xeb0(%rip),%xmm0
movss  %xmm0,-0x1c(%rbp)
mov    -0x4(%rbp),%eax
and    $0x100,%eax
cmp    $0x100,%eax
jne    11b4 <draw_line+0xa4>
cvtsi2ssl -0xc(%rbp),%xmm0
addss  -0x10(%rbp),%xmm0
cvttss2si %xmm0,%edi
cvtsi2ssl -0x8(%rbp),%xmm0
addss  -0x10(%rbp),%xmm0
cvttss2si %xmm0,%esi
movss  -0x18(%rbp),%xmm0
call   1030 <glVertex3f@plt>
cvtsi2ssl -0xc(%rbp),%xmm0
addss  -0x14(%rbp),%xmm0
cvttss2si %xmm0,%edi
cvtsi2ssl -0x8(%rbp),%xmm0
addss  -0x10(%rbp),%xmm0
cvttss2si %xmm0,%esi
movss  -0x18(%rbp),%xmm0
call   1030 <glVertex3f@plt>
mov    -0x4(%rbp),%eax
and    $0x200,%eax
cmp    $0x200,%eax
jne    1213 <draw_line+0x103>
cvtsi2ssl -0xc(%rbp),%xmm0
addss  -0x14(%rbp),%xmm0
cvttss2si %xmm0,%edi
cvtsi2ssl -0x8(%rbp),%xmm0
addss  -0x10(%rbp),%xmm0
cvttss2si %xmm0,%esi
movss  -0x18(%rbp),%xmm0
call   1030 <glVertex3f@plt>
cvtsi2ssl -0xc(%rbp),%xmm0
addss  -0x14(%rbp),%xmm0
cvttss2si %xmm0,%edi
cvtsi2ssl -0x8(%rbp),%xmm0
addss  -0x10(%rbp),%xmm0
cvttss2si %xmm0,%esi
movss  -0x1c(%rbp),%xmm0
call   1030 <glVertex3f@plt>
mov    -0x4(%rbp),%eax
and    $0x400,%eax
cmp    $0x400,%eax
jne    1272 <draw_line+0x162>
cvtsi2ssl -0xc(%rbp),%xmm0
addss  -0x14(%rbp),%xmm0
cvttss2si %xmm0,%edi
cvtsi2ssl -0x8(%rbp),%xmm0
addss  -0x10(%rbp),%xmm0
cvttss2si %xmm0,%esi
movss  -0x1c(%rbp),%xmm0
call   1030 <glVertex3f@plt>
cvtsi2ssl -0xc(%rbp),%xmm0
addss  -0x10(%rbp),%xmm0
cvttss2si %xmm0,%edi
cvtsi2ssl -0x8(%rbp),%xmm0
addss  -0x10(%rbp),%xmm0
cvttss2si %xmm0,%esi
movss  -0x1c(%rbp),%xmm0
call   1030 <glVertex3f@plt>
mov    -0x4(%rbp),%eax
and    $0x800,%eax
cmp    $0x800,%eax
jne    12d1 <draw_line+0x1c1>
cvtsi2ssl -0xc(%rbp),%xmm0
addss  -0x10(%rbp),%xmm0
cvttss2si %xmm0,%edi
cvtsi2ssl -0x8(%rbp),%xmm0
addss  -0x10(%rbp),%xmm0
cvttss2si %xmm0,%esi
movss  -0x1c(%rbp),%xmm0
call   1030 <glVertex3f@plt>
cvtsi2ssl -0xc(%rbp),%xmm0
addss  -0x10(%rbp),%xmm0
cvttss2si %xmm0,%edi
cvtsi2ssl -0x8(%rbp),%xmm0
addss  -0x10(%rbp),%xmm0
cvttss2si %xmm0,%esi
movss  -0x18(%rbp),%xmm0
call   1030 <glVertex3f@plt>
mov    -0x4(%rbp),%eax
and    $0x20,%eax
cmp    $0x20,%eax
jne    132c <draw_line+0x21c>
cvtsi2ssl -0xc(%rbp),%xmm0
addss  -0x14(%rbp),%xmm0
cvttss2si %xmm0,%edi
cvtsi2ssl -0x8(%rbp),%xmm0
addss  -0x10(%rbp),%xmm0
cvttss2si %xmm0,%esi
movss  -0x18(%rbp),%xmm0
call   1030 <glVertex3f@plt>
cvtsi2ssl -0xc(%rbp),%xmm0
addss  -0x14(%rbp),%xmm0
cvttss2si %xmm0,%edi
cvtsi2ssl -0x8(%rbp),%xmm0
addss  -0x14(%rbp),%xmm0
cvttss2si %xmm0,%esi
movss  -0x18(%rbp),%xmm0
call   1030 <glVertex3f@plt>
mov    -0x4(%rbp),%eax
and    $0x2,%eax
cmp    $0x2,%eax
jne    1387 <draw_line+0x277>
cvtsi2ssl -0xc(%rbp),%xmm0
addss  -0x14(%rbp),%xmm0
cvttss2si %xmm0,%edi
cvtsi2ssl -0x8(%rbp),%xmm0
addss  -0x14(%rbp),%xmm0
cvttss2si %xmm0,%esi
movss  -0x18(%rbp),%xmm0
call   1030 <glVertex3f@plt>
cvtsi2ssl -0xc(%rbp),%xmm0
addss  -0x14(%rbp),%xmm0
cvttss2si %xmm0,%edi
cvtsi2ssl -0x8(%rbp),%xmm0
addss  -0x14(%rbp),%xmm0
cvttss2si %xmm0,%esi
movss  -0x1c(%rbp),%xmm0
call   1030 <glVertex3f@plt>
mov    -0x4(%rbp),%eax
and    $0x40,%eax
cmp    $0x40,%eax
jne    13e2 <draw_line+0x2d2>
cvtsi2ssl -0xc(%rbp),%xmm0
addss  -0x14(%rbp),%xmm0
cvttss2si %xmm0,%edi
cvtsi2ssl -0x8(%rbp),%xmm0
addss  -0x14(%rbp),%xmm0
cvttss2si %xmm0,%esi
movss  -0x1c(%rbp),%xmm0
call   1030 <glVertex3f@plt>
cvtsi2ssl -0xc(%rbp),%xmm0
addss  -0x14(%rbp),%xmm0
cvttss2si %xmm0,%edi
cvtsi2ssl -0x8(%rbp),%xmm0
addss  -0x10(%rbp),%xmm0
cvttss2si %xmm0,%esi
movss  -0x1c(%rbp),%xmm0
call   1030 <glVertex3f@plt>
mov    -0x4(%rbp),%eax
and    $0x200,%eax
cmp    $0x200,%eax
jne    1441 <draw_line+0x331>
cvtsi2ssl -0xc(%rbp),%xmm0
addss  -0x14(%rbp),%xmm0
cvttss2si %xmm0,%edi
cvtsi2ssl -0x8(%rbp),%xmm0
addss  -0x10(%rbp),%xmm0
cvttss2si %xmm0,%esi
movss  -0x1c(%rbp),%xmm0
call   1030 <glVertex3f@plt>
cvtsi2ssl -0xc(%rbp),%xmm0
addss  -0x14(%rbp),%xmm0
cvttss2si %xmm0,%edi
cvtsi2ssl -0x8(%rbp),%xmm0
addss  -0x10(%rbp),%xmm0
cvttss2si %xmm0,%esi
movss  -0x18(%rbp),%xmm0
call   1030 <glVertex3f@plt>
mov    -0x4(%rbp),%eax
and    $0x1,%eax
cmp    $0x1,%eax
jne    149c <draw_line+0x38c>
cvtsi2ssl -0xc(%rbp),%xmm0
addss  -0x10(%rbp),%xmm0
cvttss2si %xmm0,%edi
cvtsi2ssl -0x8(%rbp),%xmm0
addss  -0x14(%rbp),%xmm0
cvttss2si %xmm0,%esi
movss  -0x18(%rbp),%xmm0
call   1030 <glVertex3f@plt>
cvtsi2ssl -0xc(%rbp),%xmm0
addss  -0x14(%rbp),%xmm0
cvttss2si %xmm0,%edi
cvtsi2ssl -0x8(%rbp),%xmm0
addss  -0x14(%rbp),%xmm0
cvttss2si %xmm0,%esi
movss  -0x18(%rbp),%xmm0
call   1030 <glVertex3f@plt>
mov    -0x4(%rbp),%eax
and    $0x2,%eax
cmp    $0x2,%eax
jne    14f7 <draw_line+0x3e7>
cvtsi2ssl -0xc(%rbp),%xmm0
addss  -0x14(%rbp),%xmm0
cvttss2si %xmm0,%edi
cvtsi2ssl -0x8(%rbp),%xmm0
addss  -0x14(%rbp),%xmm0
cvttss2si %xmm0,%esi
movss  -0x18(%rbp),%xmm0
call   1030 <glVertex3f@plt>
cvtsi2ssl -0xc(%rbp),%xmm0
addss  -0x14(%rbp),%xmm0
cvttss2si %xmm0,%edi
cvtsi2ssl -0x8(%rbp),%xmm0
addss  -0x14(%rbp),%xmm0
cvttss2si %xmm0,%esi
movss  -0x1c(%rbp),%xmm0
call   1030 <glVertex3f@plt>
mov    -0x4(%rbp),%eax
and    $0x4,%eax
cmp    $0x4,%eax
jne    1552 <draw_line+0x442>
cvtsi2ssl -0xc(%rbp),%xmm0
addss  -0x14(%rbp),%xmm0
cvttss2si %xmm0,%edi
cvtsi2ssl -0x8(%rbp),%xmm0
addss  -0x14(%rbp),%xmm0
cvttss2si %xmm0,%esi
movss  -0x1c(%rbp),%xmm0
call   1030 <glVertex3f@plt>
cvtsi2ssl -0xc(%rbp),%xmm0
addss  -0x10(%rbp),%xmm0
cvttss2si %xmm0,%edi
cvtsi2ssl -0x8(%rbp),%xmm0
addss  -0x14(%rbp),%xmm0
cvttss2si %xmm0,%esi
movss  -0x1c(%rbp),%xmm0
call   1030 <glVertex3f@plt>
mov    -0x4(%rbp),%eax
and    $0x8,%eax
cmp    $0x8,%eax
jne    15ad <draw_line+0x49d>
cvtsi2ssl -0xc(%rbp),%xmm0
addss  -0x10(%rbp),%xmm0
cvttss2si %xmm0,%edi
cvtsi2ssl -0x8(%rbp),%xmm0
addss  -0x14(%rbp),%xmm0
cvttss2si %xmm0,%esi
movss  -0x1c(%rbp),%xmm0
call   1030 <glVertex3f@plt>
cvtsi2ssl -0xc(%rbp),%xmm0
addss  -0x10(%rbp),%xmm0
cvttss2si %xmm0,%edi
cvtsi2ssl -0x8(%rbp),%xmm0
addss  -0x14(%rbp),%xmm0
cvttss2si %xmm0,%esi
movss  -0x18(%rbp),%xmm0
call   1030 <glVertex3f@plt>
mov    -0x4(%rbp),%eax
and    $0x800,%eax
cmp    $0x800,%eax
jne    160c <draw_line+0x4fc>
cvtsi2ssl -0xc(%rbp),%xmm0
addss  -0x10(%rbp),%xmm0
cvttss2si %xmm0,%edi
cvtsi2ssl -0x8(%rbp),%xmm0
addss  -0x10(%rbp),%xmm0
cvttss2si %xmm0,%esi
movss  -0x18(%rbp),%xmm0
call   1030 <glVertex3f@plt>
cvtsi2ssl -0xc(%rbp),%xmm0
addss  -0x10(%rbp),%xmm0
cvttss2si %xmm0,%edi
cvtsi2ssl -0x8(%rbp),%xmm0
addss  -0x10(%rbp),%xmm0
cvttss2si %xmm0,%esi
movss  -0x1c(%rbp),%xmm0
call   1030 <glVertex3f@plt>
mov    -0x4(%rbp),%eax
and    $0x80,%eax
cmp    $0x80,%eax
jne    166b <draw_line+0x55b>
cvtsi2ssl -0xc(%rbp),%xmm0
addss  -0x10(%rbp),%xmm0
cvttss2si %xmm0,%edi
cvtsi2ssl -0x8(%rbp),%xmm0
addss  -0x10(%rbp),%xmm0
cvttss2si %xmm0,%esi
movss  -0x1c(%rbp),%xmm0
call   1030 <glVertex3f@plt>
cvtsi2ssl -0xc(%rbp),%xmm0
addss  -0x10(%rbp),%xmm0
cvttss2si %xmm0,%edi
cvtsi2ssl -0x8(%rbp),%xmm0
addss  -0x14(%rbp),%xmm0
cvttss2si %xmm0,%esi
movss  -0x1c(%rbp),%xmm0
call   1030 <glVertex3f@plt>
mov    -0x4(%rbp),%eax
and    $0x8,%eax
cmp    $0x8,%eax
jne    16c6 <draw_line+0x5b6>
cvtsi2ssl -0xc(%rbp),%xmm0
addss  -0x10(%rbp),%xmm0
cvttss2si %xmm0,%edi
cvtsi2ssl -0x8(%rbp),%xmm0
addss  -0x14(%rbp),%xmm0
cvttss2si %xmm0,%esi
movss  -0x1c(%rbp),%xmm0
call   1030 <glVertex3f@plt>
cvtsi2ssl -0xc(%rbp),%xmm0
addss  -0x10(%rbp),%xmm0
cvttss2si %xmm0,%edi
cvtsi2ssl -0x8(%rbp),%xmm0
addss  -0x14(%rbp),%xmm0
cvttss2si %xmm0,%esi
movss  -0x18(%rbp),%xmm0
call   1030 <glVertex3f@plt>
mov    -0x4(%rbp),%eax
and    $0x10,%eax
cmp    $0x10,%eax
jne    1721 <draw_line+0x611>
cvtsi2ssl -0xc(%rbp),%xmm0
addss  -0x10(%rbp),%xmm0
cvttss2si %xmm0,%edi
cvtsi2ssl -0x8(%rbp),%xmm0
addss  -0x14(%rbp),%xmm0
cvttss2si %xmm0,%esi
movss  -0x18(%rbp),%xmm0
call   1030 <glVertex3f@plt>
cvtsi2ssl -0xc(%rbp),%xmm0
addss  -0x10(%rbp),%xmm0
cvttss2si %xmm0,%edi
cvtsi2ssl -0x8(%rbp),%xmm0
addss  -0x10(%rbp),%xmm0
cvttss2si %xmm0,%esi
movss  -0x18(%rbp),%xmm0
call   1030 <glVertex3f@plt>
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<draw_line>:
push   %rbp
push   %r15
push   %r14
push   %r12
push   %rbx
sub    $0x10,%rsp
mov    %edx,%r15d
mov    %esi,%r14d
mov    %edi,%r12d
test   $0x100,%edi
jne    11e3 <draw_line+0xd3>
test   $0x200,%r12d
jne    124b <draw_line+0x13b>
test   $0x400,%r12d
jne    12a2 <draw_line+0x192>
test   $0x800,%r12d
jne    1311 <draw_line+0x201>
test   $0x20,%r12b
jne    1365 <draw_line+0x255>
test   $0x2,%r12b
jne    13d1 <draw_line+0x2c1>
test   $0x40,%r12b
jne    1425 <draw_line+0x315>
test   $0x200,%r12d
jne    1490 <draw_line+0x380>
test   $0x1,%r12b
jne    14e4 <draw_line+0x3d4>
test   $0x2,%r12b
jne    1550 <draw_line+0x440>
test   $0x4,%r12b
jne    15a4 <draw_line+0x494>
test   $0x8,%r12b
jne    160c <draw_line+0x4fc>
test   $0x800,%r12d
jne    1663 <draw_line+0x553>
test   $0x80,%r12b
jne    16b7 <draw_line+0x5a7>
test   $0x8,%r12b
jne    171f <draw_line+0x60f>
test   $0x10,%r12b
jne    1773 <draw_line+0x663>
add    $0x10,%rsp
pop    %rbx
pop    %r12
pop    %r14
pop    %r15
pop    %rbp
ret
cvtsi2ss %r15d,%xmm1
movss  %xmm1,0xc(%rsp)
movss  0xe0a(%rip),%xmm0
addss  %xmm0,%xmm1
cvttss2si %xmm1,%edi
xorps  %xmm1,%xmm1
cvtsi2ss %r14d,%xmm1
addss  %xmm0,%xmm1
cvttss2si %xmm1,%ebp
movss  0xdee(%rip),%xmm0
mov    %ebp,%esi
call   1030 <glVertex3f@plt>
movss  0xc(%rsp),%xmm0
addss  0xddd(%rip),%xmm0
cvttss2si %xmm0,%edi
mov    %ebp,%esi
movss  0xdcb(%rip),%xmm0
call   1030 <glVertex3f@plt>
test   $0x200,%r12d
je     113e <draw_line+0x2e>
xorps  %xmm0,%xmm0
cvtsi2ss %r15d,%xmm0
addss  0xdad(%rip),%xmm0
cvttss2si %xmm0,%ebp
xorps  %xmm0,%xmm0
cvtsi2ss %r14d,%xmm0
addss  0xd91(%rip),%xmm0
cvttss2si %xmm0,%ebx
movss  0xd89(%rip),%xmm0
mov    %ebp,%edi
mov    %ebx,%esi
call   1030 <glVertex3f@plt>
movss  0xd80(%rip),%xmm0
mov    %ebp,%edi
mov    %ebx,%esi
call   1030 <glVertex3f@plt>
test   $0x400,%r12d
je     114b <draw_line+0x3b>
xorps  %xmm1,%xmm1
cvtsi2ss %r15d,%xmm1
movss  %xmm1,0xc(%rsp)
movss  0xd50(%rip),%xmm0
addss  %xmm1,%xmm0
cvttss2si %xmm0,%edi
xorps  %xmm0,%xmm0
cvtsi2ss %r14d,%xmm0
addss  0xd30(%rip),%xmm0
cvttss2si %xmm0,%ebx
movss  0xd30(%rip),%xmm0
mov    %ebx,%esi
call   1030 <glVertex3f@plt>
movss  0xc(%rsp),%xmm0
addss  0xd0f(%rip),%xmm0
cvttss2si %xmm0,%edi
mov    %ebx,%esi
movss  0xd0d(%rip),%xmm0
call   1030 <glVertex3f@plt>
test   $0x800,%r12d
je     1158 <draw_line+0x48>
xorps  %xmm0,%xmm0
cvtsi2ss %r15d,%xmm0
movss  0xcdf(%rip),%xmm1
addss  %xmm1,%xmm0
cvttss2si %xmm0,%ebx
xorps  %xmm0,%xmm0
cvtsi2ss %r14d,%xmm0
addss  %xmm1,%xmm0
cvttss2si %xmm0,%ebp
movss  0xccb(%rip),%xmm0
mov    %ebx,%edi
mov    %ebp,%esi
call   1030 <glVertex3f@plt>
movss  0xcb2(%rip),%xmm0
mov    %ebx,%edi
mov    %ebp,%esi
call   1030 <glVertex3f@plt>
test   $0x20,%r12b
je     1162 <draw_line+0x52>
xorps  %xmm0,%xmm0
cvtsi2ss %r15d,%xmm0
addss  0xc93(%rip),%xmm0
cvttss2si %xmm0,%ebx
xorps  %xmm1,%xmm1
cvtsi2ss %r14d,%xmm1
movss  %xmm1,0xc(%rsp)
movss  0xc71(%rip),%xmm0
addss  %xmm1,%xmm0
cvttss2si %xmm0,%esi
movss  0xc65(%rip),%xmm0
mov    %ebx,%edi
call   1030 <glVertex3f@plt>
movss  0xc(%rsp),%xmm0
addss  0xc54(%rip),%xmm0
cvttss2si %xmm0,%esi
mov    %ebx,%edi
movss  0xc42(%rip),%xmm0
call   1030 <glVertex3f@plt>
test   $0x2,%r12b
je     116c <draw_line+0x5c>
xorps  %xmm0,%xmm0
cvtsi2ss %r15d,%xmm0
movss  0xc27(%rip),%xmm1
addss  %xmm1,%xmm0
cvttss2si %xmm0,%ebx
xorps  %xmm0,%xmm0
cvtsi2ss %r14d,%xmm0
addss  %xmm1,%xmm0
cvttss2si %xmm0,%ebp
movss  0xc03(%rip),%xmm0
mov    %ebx,%edi
mov    %ebp,%esi
call   1030 <glVertex3f@plt>
movss  0xbfa(%rip),%xmm0
mov    %ebx,%edi
mov    %ebp,%esi
call   1030 <glVertex3f@plt>
test   $0x40,%r12b
je     1176 <draw_line+0x66>
xorps  %xmm0,%xmm0
cvtsi2ss %r15d,%xmm0
movss  0xbd3(%rip),%xmm1
addss  %xmm1,%xmm0
cvttss2si %xmm0,%ebx
xorps  %xmm0,%xmm0
cvtsi2ss %r14d,%xmm0
movss  %xmm0,0xc(%rsp)
addss  %xmm0,%xmm1
cvttss2si %xmm1,%esi
movss  0xbb1(%rip),%xmm0
mov    %ebx,%edi
call   1030 <glVertex3f@plt>
movss  0xc(%rsp),%xmm0
addss  0xb90(%rip),%xmm0
cvttss2si %xmm0,%esi
mov    %ebx,%edi
movss  0xb8e(%rip),%xmm0
call   1030 <glVertex3f@plt>
test   $0x200,%r12d
je     1183 <draw_line+0x73>
xorps  %xmm0,%xmm0
cvtsi2ss %r15d,%xmm0
addss  0xb68(%rip),%xmm0
cvttss2si %xmm0,%ebx
xorps  %xmm0,%xmm0
cvtsi2ss %r14d,%xmm0
addss  0xb4c(%rip),%xmm0
cvttss2si %xmm0,%ebp
movss  0xb4c(%rip),%xmm0
mov    %ebx,%edi
mov    %ebp,%esi
call   1030 <glVertex3f@plt>
movss  0xb33(%rip),%xmm0
mov    %ebx,%edi
mov    %ebp,%esi
call   1030 <glVertex3f@plt>
test   $0x1,%r12b
je     118d <draw_line+0x7d>
xorps  %xmm1,%xmm1
cvtsi2ss %r15d,%xmm1
movss  %xmm1,0xc(%rsp)
movss  0xb06(%rip),%xmm0
addss  %xmm1,%xmm0
cvttss2si %xmm0,%edi
xorps  %xmm0,%xmm0
cvtsi2ss %r14d,%xmm0
addss  0xaf6(%rip),%xmm0
cvttss2si %xmm0,%ebx
movss  0xae6(%rip),%xmm0
mov    %ebx,%esi
call   1030 <glVertex3f@plt>
movss  0xc(%rsp),%xmm0
addss  0xad5(%rip),%xmm0
cvttss2si %xmm0,%edi
mov    %ebx,%esi
movss  0xac3(%rip),%xmm0
call   1030 <glVertex3f@plt>
test   $0x2,%r12b
je     1197 <draw_line+0x87>
xorps  %xmm0,%xmm0
cvtsi2ss %r15d,%xmm0
movss  0xaa8(%rip),%xmm1
addss  %xmm1,%xmm0
cvttss2si %xmm0,%ebx
xorps  %xmm0,%xmm0
cvtsi2ss %r14d,%xmm0
addss  %xmm1,%xmm0
cvttss2si %xmm0,%ebp
movss  0xa84(%rip),%xmm0
mov    %ebx,%edi
mov    %ebp,%esi
call   1030 <glVertex3f@plt>
movss  0xa7b(%rip),%xmm0
mov    %ebx,%edi
mov    %ebp,%esi
call   1030 <glVertex3f@plt>
test   $0x4,%r12b
je     11a1 <draw_line+0x91>
xorps  %xmm1,%xmm1
cvtsi2ss %r15d,%xmm1
movss  %xmm1,0xc(%rsp)
movss  0xa4e(%rip),%xmm0
addss  %xmm0,%xmm1
cvttss2si %xmm1,%edi
xorps  %xmm1,%xmm1
cvtsi2ss %r14d,%xmm1
addss  %xmm0,%xmm1
cvttss2si %xmm1,%ebx
movss  0xa32(%rip),%xmm0
mov    %ebx,%esi
call   1030 <glVertex3f@plt>
movss  0xc(%rsp),%xmm0
addss  0xa11(%rip),%xmm0
cvttss2si %xmm0,%edi
mov    %ebx,%esi
movss  0xa0f(%rip),%xmm0
call   1030 <glVertex3f@plt>
test   $0x8,%r12b
je     11ab <draw_line+0x9b>
xorps  %xmm0,%xmm0
cvtsi2ss %r15d,%xmm0
addss  0x9e4(%rip),%xmm0
cvttss2si %xmm0,%ebx
xorps  %xmm0,%xmm0
cvtsi2ss %r14d,%xmm0
addss  0x9d8(%rip),%xmm0
cvttss2si %xmm0,%ebp
movss  0x9d0(%rip),%xmm0
mov    %ebx,%edi
mov    %ebp,%esi
call   1030 <glVertex3f@plt>
movss  0x9b7(%rip),%xmm0
mov    %ebx,%edi
mov    %ebp,%esi
call   1030 <glVertex3f@plt>
test   $0x800,%r12d
je     11b8 <draw_line+0xa8>
xorps  %xmm0,%xmm0
cvtsi2ss %r15d,%xmm0
movss  0x98d(%rip),%xmm1
addss  %xmm1,%xmm0
cvttss2si %xmm0,%ebx
xorps  %xmm0,%xmm0
cvtsi2ss %r14d,%xmm0
addss  %xmm1,%xmm0
cvttss2si %xmm0,%ebp
movss  0x971(%rip),%xmm0
mov    %ebx,%edi
mov    %ebp,%esi
call   1030 <glVertex3f@plt>
movss  0x968(%rip),%xmm0
mov    %ebx,%edi
mov    %ebp,%esi
call   1030 <glVertex3f@plt>
test   $0x80,%r12b
je     11c2 <draw_line+0xb2>
xorps  %xmm0,%xmm0
cvtsi2ss %r15d,%xmm0
movss  0x939(%rip),%xmm1
addss  %xmm1,%xmm0
cvttss2si %xmm0,%ebx
xorps  %xmm0,%xmm0
cvtsi2ss %r14d,%xmm0
movss  %xmm0,0xc(%rsp)
addss  %xmm0,%xmm1
cvttss2si %xmm1,%esi
movss  0x91f(%rip),%xmm0
mov    %ebx,%edi
call   1030 <glVertex3f@plt>
movss  0xc(%rsp),%xmm0
addss  0x906(%rip),%xmm0
cvttss2si %xmm0,%esi
mov    %ebx,%edi
movss  0x8fc(%rip),%xmm0
call   1030 <glVertex3f@plt>
test   $0x8,%r12b
je     11cc <draw_line+0xbc>
xorps  %xmm0,%xmm0
cvtsi2ss %r15d,%xmm0
addss  0x8d1(%rip),%xmm0
cvttss2si %xmm0,%ebx
xorps  %xmm0,%xmm0
cvtsi2ss %r14d,%xmm0
addss  0x8c5(%rip),%xmm0
cvttss2si %xmm0,%ebp
movss  0x8bd(%rip),%xmm0
mov    %ebx,%edi
mov    %ebp,%esi
call   1030 <glVertex3f@plt>
movss  0x8a4(%rip),%xmm0
mov    %ebx,%edi
mov    %ebp,%esi
call   1030 <glVertex3f@plt>
test   $0x10,%r12b
je     11d6 <draw_line+0xc6>
xorps  %xmm0,%xmm0
cvtsi2ss %r15d,%xmm0
addss  0x87d(%rip),%xmm0
cvttss2si %xmm0,%ebx
xorps  %xmm1,%xmm1
cvtsi2ss %r14d,%xmm1
movss  %xmm1,0xc(%rsp)
movss  0x86b(%rip),%xmm0
addss  %xmm1,%xmm0
cvttss2si %xmm0,%esi
movss  0x857(%rip),%xmm0
mov    %ebx,%edi
call   1030 <glVertex3f@plt>
movss  0xc(%rsp),%xmm0
addss  0x83e(%rip),%xmm0
cvttss2si %xmm0,%esi
mov    %ebx,%edi
movss  0x834(%rip),%xmm0
add    $0x10,%rsp
pop    %rbx
pop    %r12
pop    %r14
pop    %r15
pop    %rbp
jmp    1030 <glVertex3f@plt>

LLVM IR (-O0):
define void @draw_line(i32 %0, i32 %1, i32 %2) {
%4 = alloca i32
%5 = alloca i32
%6 = alloca i32
%7 = alloca float
%8 = alloca float
%9 = alloca float
%10 = alloca float
store i32 %0, i32* %4
store i32 %1, i32* %5
store i32 %2, i32* %6
store float 0xBF847AE140000000, float* %7
store float 0x3FF028F5C0000000, float* %8
store float 0x3FB70A3D80000000, float* %9
store float 0x3FE9EB8520000000, float* %10
%11 = load i32, i32* %4
%12 = and i32 %11, 256
%13 = icmp eq i32 %12, 256
br i1 %13, label %14, label %39
14: ; preds = %3
%15 = load i32, i32* %6
%16 = sitofp i32 %15 to float
%17 = load float, float* %7
%18 = fadd float %16, %17
%19 = fptosi float %18 to i32
%20 = load i32, i32* %5
%21 = sitofp i32 %20 to float
%22 = load float, float* %7
%23 = fadd float %21, %22
%24 = fptosi float %23 to i32
%25 = load float, float* %9
%26 = call i32 @glVertex3f(i32 %19, i32 %24, float %25)
%27 = load i32, i32* %6
%28 = sitofp i32 %27 to float
%29 = load float, float* %8
%30 = fadd float %28, %29
%31 = fptosi float %30 to i32
%32 = load i32, i32* %5
%33 = sitofp i32 %32 to float
%34 = load float, float* %7
%35 = fadd float %33, %34
%36 = fptosi float %35 to i32
%37 = load float, float* %9
%38 = call i32 @glVertex3f(i32 %31, i32 %36, float %37)
br label %39
39: ; preds = %14, %3
%40 = load i32, i32* %4
%41 = and i32 %40, 512
%42 = icmp eq i32 %41, 512
br i1 %42, label %43, label %68
43: ; preds = %39
%44 = load i32, i32* %6
%45 = sitofp i32 %44 to float
%46 = load float, float* %8
%47 = fadd float %45, %46
%48 = fptosi float %47 to i32
%49 = load i32, i32* %5
%50 = sitofp i32 %49 to float
%51 = load float, float* %7
%52 = fadd float %50, %51
%53 = fptosi float %52 to i32
%54 = load float, float* %9
%55 = call i32 @glVertex3f(i32 %48, i32 %53, float %54)
%56 = load i32, i32* %6
%57 = sitofp i32 %56 to float
%58 = load float, float* %8
%59 = fadd float %57, %58
%60 = fptosi float %59 to i32
%61 = load i32, i32* %5
%62 = sitofp i32 %61 to float
%63 = load float, float* %7
%64 = fadd float %62, %63
%65 = fptosi float %64 to i32
%66 = load float, float* %10
%67 = call i32 @glVertex3f(i32 %60, i32 %65, float %66)
br label %68
68: ; preds = %43, %39
%69 = load i32, i32* %4
%70 = and i32 %69, 1024
%71 = icmp eq i32 %70, 1024
br i1 %71, label %72, label %97
72: ; preds = %68
%73 = load i32, i32* %6
%74 = sitofp i32 %73 to float
%75 = load float, float* %8
%76 = fadd float %74, %75
%77 = fptosi float %76 to i32
%78 = load i32, i32* %5
%79 = sitofp i32 %78 to float
%80 = load float, float* %7
%81 = fadd float %79, %80
%82 = fptosi float %81 to i32
%83 = load float, float* %10
%84 = call i32 @glVertex3f(i32 %77, i32 %82, float %83)
%85 = load i32, i32* %6
%86 = sitofp i32 %85 to float
%87 = load float, float* %7
%88 = fadd float %86, %87
%89 = fptosi float %88 to i32
%90 = load i32, i32* %5
%91 = sitofp i32 %90 to float
%92 = load float, float* %7
%93 = fadd float %91, %92
%94 = fptosi float %93 to i32
%95 = load float, float* %10
%96 = call i32 @glVertex3f(i32 %89, i32 %94, float %95)
br label %97
97: ; preds = %72, %68
%98 = load i32, i32* %4
%99 = and i32 %98, 2048
%100 = icmp eq i32 %99, 2048
br i1 %100, label %101, label %126
101: ; preds = %97
%102 = load i32, i32* %6
%103 = sitofp i32 %102 to float
%104 = load float, float* %7
%105 = fadd float %103, %104
%106 = fptosi float %105 to i32
%107 = load i32, i32* %5
%108 = sitofp i32 %107 to float
%109 = load float, float* %7
%110 = fadd float %108, %109
%111 = fptosi float %110 to i32
%112 = load float, float* %10
%113 = call i32 @glVertex3f(i32 %106, i32 %111, float %112)
%114 = load i32, i32* %6
%115 = sitofp i32 %114 to float
%116 = load float, float* %7
%117 = fadd float %115, %116
%118 = fptosi float %117 to i32
%119 = load i32, i32* %5
%120 = sitofp i32 %119 to float
%121 = load float, float* %7
%122 = fadd float %120, %121
%123 = fptosi float %122 to i32
%124 = load float, float* %9
%125 = call i32 @glVertex3f(i32 %118, i32 %123, float %124)
br label %126
126: ; preds = %101, %97
%127 = load i32, i32* %4
%128 = and i32 %127, 32
%129 = icmp eq i32 %128, 32
br i1 %129, label %130, label %155
130: ; preds = %126
%131 = load i32, i32* %6
%132 = sitofp i32 %131 to float
%133 = load float, float* %8
%134 = fadd float %132, %133
%135 = fptosi float %134 to i32
%136 = load i32, i32* %5
%137 = sitofp i32 %136 to float
%138 = load float, float* %7
%139 = fadd float %137, %138
%140 = fptosi float %139 to i32
%141 = load float, float* %9
%142 = call i32 @glVertex3f(i32 %135, i32 %140, float %141)
%143 = load i32, i32* %6
%144 = sitofp i32 %143 to float
%145 = load float, float* %8
%146 = fadd float %144, %145
%147 = fptosi float %146 to i32
%148 = load i32, i32* %5
%149 = sitofp i32 %148 to float
%150 = load float, float* %8
%151 = fadd float %149, %150
%152 = fptosi float %151 to i32
%153 = load float, float* %9
%154 = call i32 @glVertex3f(i32 %147, i32 %152, float %153)
br label %155
155: ; preds = %130, %126
%156 = load i32, i32* %4
%157 = and i32 %156, 2
%158 = icmp eq i32 %157, 2
br i1 %158, label %159, label %184
159: ; preds = %155
%160 = load i32, i32* %6
%161 = sitofp i32 %160 to float
%162 = load float, float* %8
%163 = fadd float %161, %162
%164 = fptosi float %163 to i32
%165 = load i32, i32* %5
%166 = sitofp i32 %165 to float
%167 = load float, float* %8
%168 = fadd float %166, %167
%169 = fptosi float %168 to i32
%170 = load float, float* %9
%171 = call i32 @glVertex3f(i32 %164, i32 %169, float %170)
%172 = load i32, i32* %6
%173 = sitofp i32 %172 to float
%174 = load float, float* %8
%175 = fadd float %173, %174
%176 = fptosi float %175 to i32
%177 = load i32, i32* %5
%178 = sitofp i32 %177 to float
%179 = load float, float* %8
%180 = fadd float %178, %179
%181 = fptosi float %180 to i32
%182 = load float, float* %10
%183 = call i32 @glVertex3f(i32 %176, i32 %181, float %182)
br label %184
184: ; preds = %159, %155
%185 = load i32, i32* %4
%186 = and i32 %185, 64
%187 = icmp eq i32 %186, 64
br i1 %187, label %188, label %213
188: ; preds = %184
%189 = load i32, i32* %6
%190 = sitofp i32 %189 to float
%191 = load float, float* %8
%192 = fadd float %190, %191
%193 = fptosi float %192 to i32
%194 = load i32, i32* %5
%195 = sitofp i32 %194 to float
%196 = load float, float* %8
%197 = fadd float %195, %196
%198 = fptosi float %197 to i32
%199 = load float, float* %10
%200 = call i32 @glVertex3f(i32 %193, i32 %198, float %199)
%201 = load i32, i32* %6
%202 = sitofp i32 %201 to float
%203 = load float, float* %8
%204 = fadd float %202, %203
%205 = fptosi float %204 to i32
%206 = load i32, i32* %5
%207 = sitofp i32 %206 to float
%208 = load float, float* %7
%209 = fadd float %207, %208
%210 = fptosi float %209 to i32
%211 = load float, float* %10
%212 = call i32 @glVertex3f(i32 %205, i32 %210, float %211)
br label %213
213: ; preds = %188, %184
%214 = load i32, i32* %4
%215 = and i32 %214, 512
%216 = icmp eq i32 %215, 512
br i1 %216, label %217, label %242
217: ; preds = %213
%218 = load i32, i32* %6
%219 = sitofp i32 %218 to float
%220 = load float, float* %8
%221 = fadd float %219, %220
%222 = fptosi float %221 to i32
%223 = load i32, i32* %5
%224 = sitofp i32 %223 to float
%225 = load float, float* %7
%226 = fadd float %224, %225
%227 = fptosi float %226 to i32
%228 = load float, float* %10
%229 = call i32 @glVertex3f(i32 %222, i32 %227, float %228)
%230 = load i32, i32* %6
%231 = sitofp i32 %230 to float
%232 = load float, float* %8
%233 = fadd float %231, %232
%234 = fptosi float %233 to i32
%235 = load i32, i32* %5
%236 = sitofp i32 %235 to float
%237 = load float, float* %7
%238 = fadd float %236, %237
%239 = fptosi float %238 to i32
%240 = load float, float* %9
%241 = call i32 @glVertex3f(i32 %234, i32 %239, float %240)
br label %242
242: ; preds = %217, %213
%243 = load i32, i32* %4
%244 = and i32 %243, 1
%245 = icmp eq i32 %244, 1
br i1 %245, label %246, label %271
246: ; preds = %242
%247 = load i32, i32* %6
%248 = sitofp i32 %247 to float
%249 = load float, float* %7
%250 = fadd float %248, %249
%251 = fptosi float %250 to i32
%252 = load i32, i32* %5
%253 = sitofp i32 %252 to float
%254 = load float, float* %8
%255 = fadd float %253, %254
%256 = fptosi float %255 to i32
%257 = load float, float* %9
%258 = call i32 @glVertex3f(i32 %251, i32 %256, float %257)
%259 = load i32, i32* %6
%260 = sitofp i32 %259 to float
%261 = load float, float* %8
%262 = fadd float %260, %261
%263 = fptosi float %262 to i32
%264 = load i32, i32* %5
%265 = sitofp i32 %264 to float
%266 = load float, float* %8
%267 = fadd float %265, %266
%268 = fptosi float %267 to i32
%269 = load float, float* %9
%270 = call i32 @glVertex3f(i32 %263, i32 %268, float %269)
br label %271
271: ; preds = %246, %242
%272 = load i32, i32* %4
%273 = and i32 %272, 2
%274 = icmp eq i32 %273, 2
br i1 %274, label %275, label %300
275: ; preds = %271
%276 = load i32, i32* %6
%277 = sitofp i32 %276 to float
%278 = load float, float* %8
%279 = fadd float %277, %278
%280 = fptosi float %279 to i32
%281 = load i32, i32* %5
%282 = sitofp i32 %281 to float
%283 = load float, float* %8
%284 = fadd float %282, %283
%285 = fptosi float %284 to i32
%286 = load float, float* %9
%287 = call i32 @glVertex3f(i32 %280, i32 %285, float %286)
%288 = load i32, i32* %6
%289 = sitofp i32 %288 to float
%290 = load float, float* %8
%291 = fadd float %289, %290
%292 = fptosi float %291 to i32
%293 = load i32, i32* %5
%294 = sitofp i32 %293 to float
%295 = load float, float* %8
%296 = fadd float %294, %295
%297 = fptosi float %296 to i32
%298 = load float, float* %10
%299 = call i32 @glVertex3f(i32 %292, i32 %297, float %298)
br label %300
300: ; preds = %275, %271
%301 = load i32, i32* %4
%302 = and i32 %301, 4
%303 = icmp eq i32 %302, 4
br i1 %303, label %304, label %329
304: ; preds = %300
%305 = load i32, i32* %6
%306 = sitofp i32 %305 to float
%307 = load float, float* %8
%308 = fadd float %306, %307
%309 = fptosi float %308 to i32
%310 = load i32, i32* %5
%311 = sitofp i32 %310 to float
%312 = load float, float* %8
%313 = fadd float %311, %312
%314 = fptosi float %313 to i32
%315 = load float, float* %10
%316 = call i32 @glVertex3f(i32 %309, i32 %314, float %315)
%317 = load i32, i32* %6
%318 = sitofp i32 %317 to float
%319 = load float, float* %7
%320 = fadd float %318, %319
%321 = fptosi float %320 to i32
%322 = load i32, i32* %5
%323 = sitofp i32 %322 to float
%324 = load float, float* %8
%325 = fadd float %323, %324
%326 = fptosi float %325 to i32
%327 = load float, float* %10
%328 = call i32 @glVertex3f(i32 %321, i32 %326, float %327)
br label %329
329: ; preds = %304, %300
%330 = load i32, i32* %4
%331 = and i32 %330, 8
%332 = icmp eq i32 %331, 8
br i1 %332, label %333, label %358
333: ; preds = %329
%334 = load i32, i32* %6
%335 = sitofp i32 %334 to float
%336 = load float, float* %7
%337 = fadd float %335, %336
%338 = fptosi float %337 to i32
%339 = load i32, i32* %5
%340 = sitofp i32 %339 to float
%341 = load float, float* %8
%342 = fadd float %340, %341
%343 = fptosi float %342 to i32
%344 = load float, float* %10
%345 = call i32 @glVertex3f(i32 %338, i32 %343, float %344)
%346 = load i32, i32* %6
%347 = sitofp i32 %346 to float
%348 = load float, float* %7
%349 = fadd float %347, %348
%350 = fptosi float %349 to i32
%351 = load i32, i32* %5
%352 = sitofp i32 %351 to float
%353 = load float, float* %8
%354 = fadd float %352, %353
%355 = fptosi float %354 to i32
%356 = load float, float* %9
%357 = call i32 @glVertex3f(i32 %350, i32 %355, float %356)
br label %358
358: ; preds = %333, %329
%359 = load i32, i32* %4
%360 = and i32 %359, 2048
%361 = icmp eq i32 %360, 2048
br i1 %361, label %362, label %387
362: ; preds = %358
%363 = load i32, i32* %6
%364 = sitofp i32 %363 to float
%365 = load float, float* %7
%366 = fadd float %364, %365
%367 = fptosi float %366 to i32
%368 = load i32, i32* %5
%369 = sitofp i32 %368 to float
%370 = load float, float* %7
%371 = fadd float %369, %370
%372 = fptosi float %371 to i32
%373 = load float, float* %9
%374 = call i32 @glVertex3f(i32 %367, i32 %372, float %373)
%375 = load i32, i32* %6
%376 = sitofp i32 %375 to float
%377 = load float, float* %7
%378 = fadd float %376, %377
%379 = fptosi float %378 to i32
%380 = load i32, i32* %5
%381 = sitofp i32 %380 to float
%382 = load float, float* %7
%383 = fadd float %381, %382
%384 = fptosi float %383 to i32
%385 = load float, float* %10
%386 = call i32 @glVertex3f(i32 %379, i32 %384, float %385)
br label %387
387: ; preds = %362, %358
%388 = load i32, i32* %4
%389 = and i32 %388, 128
%390 = icmp eq i32 %389, 128
br i1 %390, label %391, label %416
391: ; preds = %387
%392 = load i32, i32* %6
%393 = sitofp i32 %392 to float
%394 = load float, float* %7
%395 = fadd float %393, %394
%396 = fptosi float %395 to i32
%397 = load i32, i32* %5
%398 = sitofp i32 %397 to float
%399 = load float, float* %7
%400 = fadd float %398, %399
%401 = fptosi float %400 to i32
%402 = load float, float* %10
%403 = call i32 @glVertex3f(i32 %396, i32 %401, float %402)
%404 = load i32, i32* %6
%405 = sitofp i32 %404 to float
%406 = load float, float* %7
%407 = fadd float %405, %406
%408 = fptosi float %407 to i32
%409 = load i32, i32* %5
%410 = sitofp i32 %409 to float
%411 = load float, float* %8
%412 = fadd float %410, %411
%413 = fptosi float %412 to i32
%414 = load float, float* %10
%415 = call i32 @glVertex3f(i32 %408, i32 %413, float %414)
br label %416
416: ; preds = %391, %387
%417 = load i32, i32* %4
%418 = and i32 %417, 8
%419 = icmp eq i32 %418, 8
br i1 %419, label %420, label %445
420: ; preds = %416
%421 = load i32, i32* %6
%422 = sitofp i32 %421 to float
%423 = load float, float* %7
%424 = fadd float %422, %423
%425 = fptosi float %424 to i32
%426 = load i32, i32* %5
%427 = sitofp i32 %426 to float
%428 = load float, float* %8
%429 = fadd float %427, %428
%430 = fptosi float %429 to i32
%431 = load float, float* %10
%432 = call i32 @glVertex3f(i32 %425, i32 %430, float %431)
%433 = load i32, i32* %6
%434 = sitofp i32 %433 to float
%435 = load float, float* %7
%436 = fadd float %434, %435
%437 = fptosi float %436 to i32
%438 = load i32, i32* %5
%439 = sitofp i32 %438 to float
%440 = load float, float* %8
%441 = fadd float %439, %440
%442 = fptosi float %441 to i32
%443 = load float, float* %9
%444 = call i32 @glVertex3f(i32 %437, i32 %442, float %443)
br label %445
445: ; preds = %420, %416
%446 = load i32, i32* %4
%447 = and i32 %446, 16
%448 = icmp eq i32 %447, 16
br i1 %448, label %449, label %474
449: ; preds = %445
%450 = load i32, i32* %6
%451 = sitofp i32 %450 to float
%452 = load float, float* %7
%453 = fadd float %451, %452
%454 = fptosi float %453 to i32
%455 = load i32, i32* %5
%456 = sitofp i32 %455 to float
%457 = load float, float* %8
%458 = fadd float %456, %457
%459 = fptosi float %458 to i32
%460 = load float, float* %9
%461 = call i32 @glVertex3f(i32 %454, i32 %459, float %460)
%462 = load i32, i32* %6
%463 = sitofp i32 %462 to float
%464 = load float, float* %7
%465 = fadd float %463, %464
%466 = fptosi float %465 to i32
%467 = load i32, i32* %5
%468 = sitofp i32 %467 to float
%469 = load float, float* %7
%470 = fadd float %468, %469
%471 = fptosi float %470 to i32
%472 = load float, float* %9
%473 = call i32 @glVertex3f(i32 %466, i32 %471, float %472)
br label %474
474: ; preds = %449, %445
ret void
}

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