#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 */
scalar_t__ ceil(int);
scalar_t__ floor(int);
int /*<<< orphan*/ pixSetRGB(int, int, double, double, double);
int /*<<< orphan*/ printf(char *);
void triRender(double a0, double a1, double b0, double b1, double c0, double c1,
               double r, double g, double b) {
  double vectorA[2];
  double vectorB[2];
  double vectorC[2];
  if (a0 < b0 && a0 < c0) {
    vectorA[0] = a0;
    vectorA[1] = a1;
    vectorB[0] = b0;
    vectorB[1] = b1;
    vectorC[0] = c0;
    vectorC[1] = c1;
  } else if (b0 < a0 && b0 < c0) {
    vectorA[0] = b0;
    vectorA[1] = b1;
    vectorB[0] = c0;
    vectorB[1] = c1;
    vectorC[0] = a0;
    vectorC[1] = a1;
  } else if (c0 < a0 && c0 < b0) {
    vectorA[0] = c0;
    vectorA[1] = c1;
    vectorB[0] = a0;
    vectorB[1] = a1;
    vectorC[0] = b0;
    vectorC[1] = b1;
  } else {
    printf("The vertices have to make a triangle");
  }
  a0 = vectorA[0];
  a1 = vectorA[1];
  b0 = vectorB[0];
  b1 = vectorB[1];
  c0 = vectorC[0];
  c1 = vectorC[1];
  if (c0 <= b0) {
    if (a0 == c0) {
      int x0;
      for (x0 = (int)ceil(a0); x0 <= (int)floor(b0); x0++) {
        int x1_low;
        int x1_high;
        x1_low = a1 + (b1 - a1) / (b0 - a0) * (x0 - a0);
        x1_high = c1 + (b1 - c1) / (b0 - c0) * (x0 - c0);
        int x1;
        for (x1 = (int)ceil(x1_low); x1 <= (int)floor(x1_high); x1++) {
          pixSetRGB(x0, x1, r, g, b);
        }
      }
    } else if (c0 == b0) {
      int x0;
      for (x0 = (int)ceil(a0); x0 <= (int)floor(b0); x0++) {
        int x1_low;
        int x1_high;
        x1_low = a1 + (b1 - a1) / (b0 - a0) * (x0 - a0);
        x1_high = a1 + (c1 - a1) / (c0 - a0) * (x0 - a0);
        int x1;
        for (x1 = (int)ceil(x1_low); x1 <= (int)floor(x1_high); x1++) {
          pixSetRGB(x0, x1, r, g, b);
        }
      }
    } else {
      int x0;
      for (x0 = (int)ceil(a0); x0 <= (int)floor(c0); x0++) {
        int x1_low;
        int x1_high;
        x1_low = a1 + (b1 - a1) / (b0 - a0) * (x0 - a0);
        x1_high = a1 + (c1 - a1) / (c0 - a0) * (x0 - a0);
        int x1;
        for (x1 = (int)ceil(x1_low); x1 <= (int)floor(x1_high); x1++) {
          pixSetRGB(x0, x1, r, g, b);
        }
      }
      for (x0 = (int)floor(c0) + 1; x0 <= (int)floor(b0); x0++) {
        int x1_low;
        int x1_high;
        x1_low = a1 + (b1 - a1) / (b0 - a0) * (x0 - a0);
        x1_high = c1 + (b1 - c1) / (b0 - c0) * (x0 - c0);
        int x1;
        for (x1 = (int)ceil(x1_low); x1 <= (int)floor(x1_high); x1++) {
          pixSetRGB(x0, x1, r, g, b);
        }
      }
    }
  } else {
    int x0;
    for (x0 = (int)ceil(a0); x0 <= (int)floor(b0); x0++) {
      int x1_low;
      int x1_high;
      x1_low = a1 + (b1 - a1) / (b0 - a0) * (x0 - a0);
      x1_high = a1 + (c1 - a1) / (c0 - a0) * (x0 - a0);
      int x1;
      for (x1 = (int)ceil(x1_low); x1 <= (int)floor(x1_high); x1++) {
        pixSetRGB(x0, x1, r, g, b);
      }
    }
    for (x0 = (int)floor(b0) + 1; x0 <= (int)floor(c0); x0++) {
      int x1_low;
      int x1_high;
      x1_low = b1 + (c1 - b1) / (c0 - b0) * (x0 - b0);
      x1_high = a1 + (c1 - a1) / (c0 - a0) * (x0 - a0);
      int x1;
      for (x1 = (int)ceil(x1_low); x1 <= (int)floor(x1_high); x1++) {
        pixSetRGB(x0, x1, r, g, b);
      }
    }
  }
}


x86 assembly (clang, -O0):
<triRender>:
push   %rbp
mov    %rsp,%rbp
sub    $0x100,%rsp
movsd  0x10(%rbp),%xmm8
movsd  %xmm0,-0x8(%rbp)
movsd  %xmm1,-0x10(%rbp)
movsd  %xmm2,-0x18(%rbp)
movsd  %xmm3,-0x20(%rbp)
movsd  %xmm4,-0x28(%rbp)
movsd  %xmm5,-0x30(%rbp)
movsd  %xmm6,-0x38(%rbp)
movsd  %xmm7,-0x40(%rbp)
movsd  -0x8(%rbp),%xmm1
movsd  -0x18(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    11e2 <triRender+0xa2>
movsd  -0x8(%rbp),%xmm1
movsd  -0x28(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    11e2 <triRender+0xa2>
movsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x68(%rbp)
jmp    12ca <triRender+0x18a>
movsd  -0x18(%rbp),%xmm1
movsd  -0x8(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    124b <triRender+0x10b>
movsd  -0x18(%rbp),%xmm1
movsd  -0x28(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    124b <triRender+0x10b>
movsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x68(%rbp)
jmp    12c5 <triRender+0x185>
movsd  -0x28(%rbp),%xmm1
movsd  -0x8(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    12b4 <triRender+0x174>
movsd  -0x28(%rbp),%xmm1
movsd  -0x18(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    12b4 <triRender+0x174>
movsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x68(%rbp)
jmp    12c0 <triRender+0x180>
lea    0xd45(%rip),%rdi
call   1040 <printf@plt>
jmp    12c5 <triRender+0x185>
jmp    12ca <triRender+0x18a>
movsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
movsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  -0x28(%rbp),%xmm1
movsd  -0x18(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jb     1806 <triRender+0x6c6>
movsd  -0x8(%rbp),%xmm0
ucomisd -0x28(%rbp),%xmm0
jne    143a <triRender+0x2fa>
jp     143a <triRender+0x2fa>
cvttsd2si -0x8(%rbp),%edi
call   1030 <ceil@plt>
mov    %eax,-0x74(%rbp)
mov    -0x74(%rbp),%eax
mov    %eax,-0xcc(%rbp)
cvttsd2si -0x18(%rbp),%edi
call   1060 <floor@plt>
mov    %rax,%rcx
mov    -0xcc(%rbp),%eax
cmp    %ecx,%eax
jg     1435 <triRender+0x2f5>
movsd  -0x10(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm0
subsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm2
subsd  -0x8(%rbp),%xmm2
divsd  %xmm2,%xmm0
cvtsi2sdl -0x74(%rbp),%xmm2
subsd  -0x8(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x78(%rbp)
movsd  -0x30(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm0
subsd  -0x30(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm2
subsd  -0x28(%rbp),%xmm2
divsd  %xmm2,%xmm0
cvtsi2sdl -0x74(%rbp),%xmm2
subsd  -0x28(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x7c(%rbp)
mov    -0x78(%rbp),%edi
call   1030 <ceil@plt>
mov    %eax,-0x80(%rbp)
mov    -0x80(%rbp),%eax
mov    %eax,-0xd0(%rbp)
mov    -0x7c(%rbp),%edi
call   1060 <floor@plt>
mov    %rax,%rcx
mov    -0xd0(%rbp),%eax
cmp    %ecx,%eax
jg     1422 <triRender+0x2e2>
mov    -0x74(%rbp),%edi
mov    -0x80(%rbp),%esi
movsd  -0x38(%rbp),%xmm0
movsd  -0x40(%rbp),%xmm1
movsd  0x10(%rbp),%xmm2
call   1050 <pixSetRGB@plt>
mov    -0x80(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x80(%rbp)
jmp    13d8 <triRender+0x298>
jmp    1427 <triRender+0x2e7>
mov    -0x74(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x74(%rbp)
jmp    133d <triRender+0x1fd>
jmp    1801 <triRender+0x6c1>
movsd  -0x28(%rbp),%xmm0
ucomisd -0x18(%rbp),%xmm0
jne    158a <triRender+0x44a>
jp     158a <triRender+0x44a>
cvttsd2si -0x8(%rbp),%edi
call   1030 <ceil@plt>
mov    %eax,-0x84(%rbp)
mov    -0x84(%rbp),%eax
mov    %eax,-0xd4(%rbp)
cvttsd2si -0x18(%rbp),%edi
call   1060 <floor@plt>
mov    %rax,%rcx
mov    -0xd4(%rbp),%eax
cmp    %ecx,%eax
jg     1585 <triRender+0x445>
movsd  -0x10(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm0
subsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm2
subsd  -0x8(%rbp),%xmm2
divsd  %xmm2,%xmm0
cvtsi2sdl -0x84(%rbp),%xmm2
ff
subsd  -0x8(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x88(%rbp)
movsd  -0x10(%rbp),%xmm1
movsd  -0x30(%rbp),%xmm0
subsd  -0x10(%rbp),%xmm0
movsd  -0x28(%rbp),%xmm2
subsd  -0x8(%rbp),%xmm2
divsd  %xmm2,%xmm0
cvtsi2sdl -0x84(%rbp),%xmm2
ff
subsd  -0x8(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x8c(%rbp)
mov    -0x88(%rbp),%edi
call   1030 <ceil@plt>
mov    %eax,-0x90(%rbp)
mov    -0x90(%rbp),%eax
mov    %eax,-0xd8(%rbp)
mov    -0x8c(%rbp),%edi
call   1060 <floor@plt>
mov    %rax,%rcx
mov    -0xd8(%rbp),%eax
cmp    %ecx,%eax
jg     156c <triRender+0x42c>
mov    -0x84(%rbp),%edi
mov    -0x90(%rbp),%esi
movsd  -0x38(%rbp),%xmm0
movsd  -0x40(%rbp),%xmm1
movsd  0x10(%rbp),%xmm2
call   1050 <pixSetRGB@plt>
mov    -0x90(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x90(%rbp)
jmp    1510 <triRender+0x3d0>
jmp    1571 <triRender+0x431>
mov    -0x84(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x84(%rbp)
jmp    1460 <triRender+0x320>
jmp    17fc <triRender+0x6bc>
cvttsd2si -0x8(%rbp),%edi
call   1030 <ceil@plt>
mov    %eax,-0x94(%rbp)
mov    -0x94(%rbp),%eax
mov    %eax,-0xdc(%rbp)
cvttsd2si -0x28(%rbp),%edi
call   1060 <floor@plt>
mov    %rax,%rcx
mov    -0xdc(%rbp),%eax
cmp    %ecx,%eax
jg     16bf <triRender+0x57f>
movsd  -0x10(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm0
subsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm2
subsd  -0x8(%rbp),%xmm2
divsd  %xmm2,%xmm0
cvtsi2sdl -0x94(%rbp),%xmm2
ff
subsd  -0x8(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x98(%rbp)
movsd  -0x10(%rbp),%xmm1
movsd  -0x30(%rbp),%xmm0
subsd  -0x10(%rbp),%xmm0
movsd  -0x28(%rbp),%xmm2
subsd  -0x8(%rbp),%xmm2
divsd  %xmm2,%xmm0
cvtsi2sdl -0x94(%rbp),%xmm2
ff
subsd  -0x8(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x9c(%rbp)
mov    -0x98(%rbp),%edi
call   1030 <ceil@plt>
mov    %eax,-0xa0(%rbp)
mov    -0xa0(%rbp),%eax
mov    %eax,-0xe0(%rbp)
mov    -0x9c(%rbp),%edi
call   1060 <floor@plt>
mov    %rax,%rcx
mov    -0xe0(%rbp),%eax
cmp    %ecx,%eax
jg     16a6 <triRender+0x566>
mov    -0x94(%rbp),%edi
mov    -0xa0(%rbp),%esi
movsd  -0x38(%rbp),%xmm0
movsd  -0x40(%rbp),%xmm1
movsd  0x10(%rbp),%xmm2
call   1050 <pixSetRGB@plt>
mov    -0xa0(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xa0(%rbp)
jmp    164a <triRender+0x50a>
jmp    16ab <triRender+0x56b>
mov    -0x94(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x94(%rbp)
jmp    159a <triRender+0x45a>
cvttsd2si -0x28(%rbp),%edi
call   1060 <floor@plt>
add    $0x1,%eax
mov    %eax,-0x94(%rbp)
mov    -0x94(%rbp),%eax
mov    %eax,-0xe4(%rbp)
cvttsd2si -0x18(%rbp),%edi
call   1060 <floor@plt>
mov    %rax,%rcx
mov    -0xe4(%rbp),%eax
cmp    %ecx,%eax
jg     17f7 <triRender+0x6b7>
movsd  -0x10(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm0
subsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm2
subsd  -0x8(%rbp),%xmm2
divsd  %xmm2,%xmm0
cvtsi2sdl -0x94(%rbp),%xmm2
ff
subsd  -0x8(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0xa4(%rbp)
movsd  -0x30(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm0
subsd  -0x30(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm2
subsd  -0x28(%rbp),%xmm2
divsd  %xmm2,%xmm0
cvtsi2sdl -0x94(%rbp),%xmm2
ff
subsd  -0x28(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0xa8(%rbp)
mov    -0xa4(%rbp),%edi
call   1030 <ceil@plt>
mov    %eax,-0xac(%rbp)
mov    -0xac(%rbp),%eax
mov    %eax,-0xe8(%rbp)
mov    -0xa8(%rbp),%edi
call   1060 <floor@plt>
mov    %rax,%rcx
mov    -0xe8(%rbp),%eax
cmp    %ecx,%eax
jg     17de <triRender+0x69e>
mov    -0x94(%rbp),%edi
mov    -0xac(%rbp),%esi
movsd  -0x38(%rbp),%xmm0
movsd  -0x40(%rbp),%xmm1
movsd  0x10(%rbp),%xmm2
call   1050 <pixSetRGB@plt>
mov    -0xac(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xac(%rbp)
jmp    1782 <triRender+0x642>
jmp    17e3 <triRender+0x6a3>
mov    -0x94(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x94(%rbp)
jmp    16d2 <triRender+0x592>
jmp    17fc <triRender+0x6bc>
jmp    1801 <triRender+0x6c1>
jmp    1a78 <triRender+0x938>
cvttsd2si -0x8(%rbp),%edi
call   1030 <ceil@plt>
mov    %eax,-0xb0(%rbp)
mov    -0xb0(%rbp),%eax
mov    %eax,-0xec(%rbp)
cvttsd2si -0x18(%rbp),%edi
call   1060 <floor@plt>
mov    %rax,%rcx
mov    -0xec(%rbp),%eax
cmp    %ecx,%eax
jg     193b <triRender+0x7fb>
movsd  -0x10(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm0
subsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm2
subsd  -0x8(%rbp),%xmm2
divsd  %xmm2,%xmm0
cvtsi2sdl -0xb0(%rbp),%xmm2
ff
subsd  -0x8(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0xb4(%rbp)
movsd  -0x10(%rbp),%xmm1
movsd  -0x30(%rbp),%xmm0
subsd  -0x10(%rbp),%xmm0
movsd  -0x28(%rbp),%xmm2
subsd  -0x8(%rbp),%xmm2
divsd  %xmm2,%xmm0
cvtsi2sdl -0xb0(%rbp),%xmm2
ff
subsd  -0x8(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0xb8(%rbp)
mov    -0xb4(%rbp),%edi
call   1030 <ceil@plt>
mov    %eax,-0xbc(%rbp)
mov    -0xbc(%rbp),%eax
mov    %eax,-0xf0(%rbp)
mov    -0xb8(%rbp),%edi
call   1060 <floor@plt>
mov    %rax,%rcx
mov    -0xf0(%rbp),%eax
cmp    %ecx,%eax
jg     1922 <triRender+0x7e2>
mov    -0xb0(%rbp),%edi
mov    -0xbc(%rbp),%esi
movsd  -0x38(%rbp),%xmm0
movsd  -0x40(%rbp),%xmm1
movsd  0x10(%rbp),%xmm2
call   1050 <pixSetRGB@plt>
mov    -0xbc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xbc(%rbp)
jmp    18c6 <triRender+0x786>
jmp    1927 <triRender+0x7e7>
mov    -0xb0(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xb0(%rbp)
jmp    1816 <triRender+0x6d6>
cvttsd2si -0x18(%rbp),%edi
call   1060 <floor@plt>
add    $0x1,%eax
mov    %eax,-0xb0(%rbp)
mov    -0xb0(%rbp),%eax
mov    %eax,-0xf4(%rbp)
cvttsd2si -0x28(%rbp),%edi
call   1060 <floor@plt>
mov    %rax,%rcx
mov    -0xf4(%rbp),%eax
cmp    %ecx,%eax
jg     1a73 <triRender+0x933>
movsd  -0x20(%rbp),%xmm1
movsd  -0x30(%rbp),%xmm0
subsd  -0x20(%rbp),%xmm0
movsd  -0x28(%rbp),%xmm2
subsd  -0x18(%rbp),%xmm2
divsd  %xmm2,%xmm0
cvtsi2sdl -0xb0(%rbp),%xmm2
ff
subsd  -0x18(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0xc0(%rbp)
movsd  -0x10(%rbp),%xmm1
movsd  -0x30(%rbp),%xmm0
subsd  -0x10(%rbp),%xmm0
movsd  -0x28(%rbp),%xmm2
subsd  -0x8(%rbp),%xmm2
divsd  %xmm2,%xmm0
cvtsi2sdl -0xb0(%rbp),%xmm2
ff
subsd  -0x8(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0xc4(%rbp)
mov    -0xc0(%rbp),%edi
call   1030 <ceil@plt>
mov    %eax,-0xc8(%rbp)
mov    -0xc8(%rbp),%eax
mov    %eax,-0xf8(%rbp)
mov    -0xc4(%rbp),%edi
call   1060 <floor@plt>
mov    %rax,%rcx
mov    -0xf8(%rbp),%eax
cmp    %ecx,%eax
jg     1a5a <triRender+0x91a>
mov    -0xb0(%rbp),%edi
mov    -0xc8(%rbp),%esi
movsd  -0x38(%rbp),%xmm0
movsd  -0x40(%rbp),%xmm1
movsd  0x10(%rbp),%xmm2
call   1050 <pixSetRGB@plt>
mov    -0xc8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc8(%rbp)
jmp    19fe <triRender+0x8be>
jmp    1a5f <triRender+0x91f>
mov    -0xb0(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xb0(%rbp)
jmp    194e <triRender+0x80e>
jmp    1a78 <triRender+0x938>
add    $0x100,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<triRender>:
push   %rbp
push   %r15
push   %r14
push   %r12
push   %rbx
sub    $0x50,%rsp
movsd  %xmm7,0x40(%rsp)
movsd  %xmm6,0x20(%rsp)
movsd  %xmm5,(%rsp)
ucomisd %xmm0,%xmm2
jbe    118d <triRender+0x4d>
ucomisd %xmm0,%xmm4
jbe    118d <triRender+0x4d>
movapd %xmm4,%xmm5
movsd  (%rsp),%xmm4
movsd  %xmm4,0x10(%rsp)
movapd %xmm2,%xmm6
movsd  %xmm3,0x8(%rsp)
movapd %xmm0,%xmm4
movsd  %xmm1,(%rsp)
jmp    11e5 <triRender+0xa5>
ucomisd %xmm2,%xmm0
jbe    11bd <triRender+0x7d>
ucomisd %xmm2,%xmm4
jbe    11bd <triRender+0x7d>
movapd %xmm0,%xmm5
movsd  %xmm1,0x10(%rsp)
movapd %xmm4,%xmm6
movsd  (%rsp),%xmm0
movsd  %xmm0,0x8(%rsp)
movapd %xmm2,%xmm4
movsd  %xmm3,(%rsp)
jmp    11e5 <triRender+0xa5>
ucomisd %xmm4,%xmm0
jbe    1469 <triRender+0x329>
ucomisd %xmm4,%xmm2
movapd %xmm2,%xmm5
movsd  %xmm3,0x10(%rsp)
movapd %xmm0,%xmm6
movsd  %xmm1,0x8(%rsp)
jbe    1469 <triRender+0x329>
movsd  %xmm6,0x28(%rsp)
ucomisd %xmm5,%xmm6
movsd  %xmm5,0x30(%rsp)
jb     1475 <triRender+0x335>
ucomisd %xmm5,%xmm4
movsd  %xmm4,0x18(%rsp)
cvttsd2si %xmm4,%edi
jne    1339 <triRender+0x1f9>
jp     1339 <triRender+0x1f9>
call   1030 <ceil@plt>
mov    %rax,%r15
cvttsd2si 0x28(%rsp),%r14d
mov    %r14d,%edi
call   1060 <floor@plt>
cmp    %eax,%r15d
jg     17e9 <triRender+0x6a9>
movsd  0x8(%rsp),%xmm1
movapd %xmm1,%xmm3
subsd  (%rsp),%xmm3
movsd  0x28(%rsp),%xmm2
movapd %xmm2,%xmm0
subsd  0x18(%rsp),%xmm0
divsd  %xmm0,%xmm3
movsd  %xmm3,0x38(%rsp)
subsd  0x10(%rsp),%xmm1
subsd  0x30(%rsp),%xmm2
divsd  %xmm2,%xmm1
movsd  %xmm1,0x8(%rsp)
jmp    1298 <triRender+0x158>
cs nopw 0x0(%rax,%rax,1)
lea    0x1(%r15),%ebx
mov    %r14d,%edi
call   1060 <floor@plt>
cmp    %eax,%r15d
mov    %ebx,%r15d
jge    17e9 <triRender+0x6a9>
xorps  %xmm0,%xmm0
cvtsi2sd %r15d,%xmm0
movapd %xmm0,%xmm1
subsd  0x18(%rsp),%xmm1
mulsd  0x38(%rsp),%xmm1
addsd  (%rsp),%xmm1
cvttsd2si %xmm1,%edi
subsd  0x30(%rsp),%xmm0
mulsd  0x8(%rsp),%xmm0
addsd  0x10(%rsp),%xmm0
cvttsd2si %xmm0,%r12d
call   1030 <ceil@plt>
mov    %rax,%rbx
mov    %r12d,%edi
call   1060 <floor@plt>
cmp    %eax,%ebx
movsd  0x20(%rsp),%xmm3
movsd  0x80(%rsp),%xmm2
jg     1280 <triRender+0x140>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    %r15d,%edi
mov    %ebx,%esi
movapd %xmm3,%xmm0
movsd  0x40(%rsp),%xmm1
call   1050 <pixSetRGB@plt>
lea    0x1(%rbx),%ebp
mov    %r12d,%edi
call   1060 <floor@plt>
movsd  0x80(%rsp),%xmm2
movsd  0x20(%rsp),%xmm3
cmp    %eax,%ebx
mov    %ebp,%ebx
jl     1300 <triRender+0x1c0>
jmp    1280 <triRender+0x140>
call   1030 <ceil@plt>
mov    %rax,%r15
movsd  0x28(%rsp),%xmm1
movsd  0x30(%rsp),%xmm0
ucomisd %xmm1,%xmm0
jne    16b9 <triRender+0x579>
jp     16b9 <triRender+0x579>
cvttsd2si %xmm1,%r14d
mov    %r14d,%edi
call   1060 <floor@plt>
cmp    %eax,%r15d
jg     17e9 <triRender+0x6a9>
movsd  (%rsp),%xmm0
movsd  0x8(%rsp),%xmm2
subsd  %xmm0,%xmm2
movsd  0x18(%rsp),%xmm1
movsd  0x28(%rsp),%xmm3
subsd  %xmm1,%xmm3
divsd  %xmm3,%xmm2
movsd  %xmm2,0x8(%rsp)
movsd  0x10(%rsp),%xmm2
subsd  %xmm0,%xmm2
movsd  0x30(%rsp),%xmm0
subsd  %xmm1,%xmm0
divsd  %xmm0,%xmm2
movsd  %xmm2,0x10(%rsp)
jmp    13d8 <triRender+0x298>
nopl   0x0(%rax)
lea    0x1(%r15),%ebx
mov    %r14d,%edi
call   1060 <floor@plt>
cmp    %eax,%r15d
mov    %ebx,%r15d
jge    17e9 <triRender+0x6a9>
xorps  %xmm0,%xmm0
cvtsi2sd %r15d,%xmm0
subsd  0x18(%rsp),%xmm0
movsd  0x8(%rsp),%xmm1
mulsd  %xmm0,%xmm1
movsd  (%rsp),%xmm2
addsd  %xmm2,%xmm1
cvttsd2si %xmm1,%edi
mulsd  0x10(%rsp),%xmm0
addsd  %xmm2,%xmm0
cvttsd2si %xmm0,%r12d
call   1030 <ceil@plt>
mov    %rax,%rbx
mov    %r12d,%edi
call   1060 <floor@plt>
cmp    %eax,%ebx
movsd  0x20(%rsp),%xmm3
movsd  0x80(%rsp),%xmm2
jg     13c0 <triRender+0x280>
nop
mov    %r15d,%edi
mov    %ebx,%esi
movapd %xmm3,%xmm0
movsd  0x40(%rsp),%xmm1
call   1050 <pixSetRGB@plt>
lea    0x1(%rbx),%ebp
mov    %r12d,%edi
call   1060 <floor@plt>
movsd  0x80(%rsp),%xmm2
movsd  0x20(%rsp),%xmm3
cmp    %eax,%ebx
mov    %ebp,%ebx
jl     1430 <triRender+0x2f0>
jmp    13c0 <triRender+0x280>
lea    0xb90(%rip),%rdi
call   1040 <printf@plt>
movsd  %xmm4,0x18(%rsp)
cvttsd2si %xmm4,%edi
call   1030 <ceil@plt>
mov    %rax,%r15
cvttsd2si 0x28(%rsp),%r14d
mov    %r14d,%edi
call   1060 <floor@plt>
cmp    %eax,%r15d
jle    15b9 <triRender+0x479>
mov    %r14d,%edi
call   1060 <floor@plt>
mov    %rax,%r15
cvttsd2si 0x30(%rsp),%r14d
mov    %r14d,%edi
call   1060 <floor@plt>
cmp    %eax,%r15d
jge    17e9 <triRender+0x6a9>
movsd  0x10(%rsp),%xmm1
movapd %xmm1,%xmm3
subsd  0x8(%rsp),%xmm3
movsd  0x30(%rsp),%xmm2
movapd %xmm2,%xmm0
subsd  0x28(%rsp),%xmm0
divsd  %xmm0,%xmm3
movsd  %xmm3,0x38(%rsp)
subsd  (%rsp),%xmm1
subsd  0x18(%rsp),%xmm2
divsd  %xmm2,%xmm1
movsd  %xmm1,0x10(%rsp)
jmp    1521 <triRender+0x3e1>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    %r14d,%edi
call   1060 <floor@plt>
cmp    %eax,%r15d
jge    17e9 <triRender+0x6a9>
add    $0x1,%r15d
xorps  %xmm0,%xmm0
cvtsi2sd %r15d,%xmm0
movapd %xmm0,%xmm1
subsd  0x28(%rsp),%xmm1
mulsd  0x38(%rsp),%xmm1
addsd  0x8(%rsp),%xmm1
cvttsd2si %xmm1,%edi
subsd  0x18(%rsp),%xmm0
mulsd  0x10(%rsp),%xmm0
addsd  (%rsp),%xmm0
cvttsd2si %xmm0,%r12d
call   1030 <ceil@plt>
mov    %rax,%rbx
mov    %r12d,%edi
call   1060 <floor@plt>
cmp    %eax,%ebx
movsd  0x20(%rsp),%xmm3
movsd  0x80(%rsp),%xmm2
jg     1510 <triRender+0x3d0>
mov    %r15d,%edi
mov    %ebx,%esi
movapd %xmm3,%xmm0
movsd  0x40(%rsp),%xmm1
call   1050 <pixSetRGB@plt>
lea    0x1(%rbx),%ebp
mov    %r12d,%edi
call   1060 <floor@plt>
movsd  0x80(%rsp),%xmm2
movsd  0x20(%rsp),%xmm3
cmp    %eax,%ebx
mov    %ebp,%ebx
jl     1580 <triRender+0x440>
jmp    1510 <triRender+0x3d0>
movsd  0x8(%rsp),%xmm3
movsd  (%rsp),%xmm1
subsd  %xmm1,%xmm3
movsd  0x28(%rsp),%xmm0
movsd  0x18(%rsp),%xmm2
subsd  %xmm2,%xmm0
divsd  %xmm0,%xmm3
movsd  %xmm3,0x38(%rsp)
movsd  0x10(%rsp),%xmm3
subsd  %xmm1,%xmm3
movsd  0x30(%rsp),%xmm0
subsd  %xmm2,%xmm0
divsd  %xmm0,%xmm3
movsd  %xmm3,0x48(%rsp)
jmp    1628 <triRender+0x4e8>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
lea    0x1(%r15),%ebx
mov    %r14d,%edi
call   1060 <floor@plt>
cmp    %eax,%r15d
mov    %ebx,%r15d
jge    149f <triRender+0x35f>
xorps  %xmm0,%xmm0
cvtsi2sd %r15d,%xmm0
subsd  0x18(%rsp),%xmm0
movsd  0x38(%rsp),%xmm1
mulsd  %xmm0,%xmm1
movsd  (%rsp),%xmm2
addsd  %xmm2,%xmm1
cvttsd2si %xmm1,%edi
mulsd  0x48(%rsp),%xmm0
addsd  %xmm2,%xmm0
cvttsd2si %xmm0,%r12d
call   1030 <ceil@plt>
mov    %rax,%rbp
mov    %r12d,%edi
call   1060 <floor@plt>
cmp    %eax,%ebp
movsd  0x20(%rsp),%xmm3
movsd  0x80(%rsp),%xmm2
jg     1610 <triRender+0x4d0>
nop
mov    %r15d,%edi
mov    %ebp,%esi
movapd %xmm3,%xmm0
movsd  0x40(%rsp),%xmm1
call   1050 <pixSetRGB@plt>
lea    0x1(%rbp),%ebx
mov    %r12d,%edi
call   1060 <floor@plt>
movsd  0x80(%rsp),%xmm2
movsd  0x20(%rsp),%xmm3
cmp    %eax,%ebp
mov    %ebx,%ebp
jl     1680 <triRender+0x540>
jmp    1610 <triRender+0x4d0>
cvttsd2si %xmm0,%r14d
mov    %r14d,%edi
call   1060 <floor@plt>
cmp    %eax,%r15d
jle    17f6 <triRender+0x6b6>
mov    %r14d,%edi
call   1060 <floor@plt>
mov    %rax,%r15
cvttsd2si 0x28(%rsp),%r14d
mov    %r14d,%edi
call   1060 <floor@plt>
cmp    %eax,%r15d
jge    17e9 <triRender+0x6a9>
movsd  0x8(%rsp),%xmm1
movapd %xmm1,%xmm3
subsd  (%rsp),%xmm3
movsd  0x28(%rsp),%xmm2
movapd %xmm2,%xmm0
subsd  0x18(%rsp),%xmm0
divsd  %xmm0,%xmm3
movsd  %xmm3,0x38(%rsp)
subsd  0x10(%rsp),%xmm1
subsd  0x30(%rsp),%xmm2
divsd  %xmm2,%xmm1
movsd  %xmm1,0x8(%rsp)
jmp    1751 <triRender+0x611>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    %r14d,%edi
call   1060 <floor@plt>
cmp    %eax,%r15d
jge    17e9 <triRender+0x6a9>
add    $0x1,%r15d
xorps  %xmm0,%xmm0
cvtsi2sd %r15d,%xmm0
movapd %xmm0,%xmm1
subsd  0x18(%rsp),%xmm1
mulsd  0x38(%rsp),%xmm1
addsd  (%rsp),%xmm1
cvttsd2si %xmm1,%edi
subsd  0x30(%rsp),%xmm0
mulsd  0x8(%rsp),%xmm0
addsd  0x10(%rsp),%xmm0
cvttsd2si %xmm0,%r12d
call   1030 <ceil@plt>
mov    %rax,%rbx
mov    %r12d,%edi
call   1060 <floor@plt>
cmp    %eax,%ebx
movsd  0x20(%rsp),%xmm3
movsd  0x80(%rsp),%xmm2
jg     1740 <triRender+0x600>
mov    %r15d,%edi
mov    %ebx,%esi
movapd %xmm3,%xmm0
movsd  0x40(%rsp),%xmm1
call   1050 <pixSetRGB@plt>
lea    0x1(%rbx),%ebp
mov    %r12d,%edi
call   1060 <floor@plt>
movsd  0x80(%rsp),%xmm2
movsd  0x20(%rsp),%xmm3
cmp    %eax,%ebx
mov    %ebp,%ebx
jl     17b0 <triRender+0x670>
jmp    1740 <triRender+0x600>
add    $0x50,%rsp
pop    %rbx
pop    %r12
pop    %r14
pop    %r15
pop    %rbp
ret
movsd  0x8(%rsp),%xmm3
movsd  (%rsp),%xmm1
subsd  %xmm1,%xmm3
movsd  0x28(%rsp),%xmm0
movsd  0x18(%rsp),%xmm2
subsd  %xmm2,%xmm0
divsd  %xmm0,%xmm3
movsd  %xmm3,0x38(%rsp)
movsd  0x10(%rsp),%xmm3
subsd  %xmm1,%xmm3
movsd  0x30(%rsp),%xmm0
subsd  %xmm2,%xmm0
divsd  %xmm0,%xmm3
movsd  %xmm3,0x48(%rsp)
jmp    1858 <triRender+0x718>
nop
lea    0x1(%r15),%ebx
mov    %r14d,%edi
call   1060 <floor@plt>
cmp    %eax,%r15d
mov    %ebx,%r15d
jge    16cf <triRender+0x58f>
xorps  %xmm0,%xmm0
cvtsi2sd %r15d,%xmm0
subsd  0x18(%rsp),%xmm0
movsd  0x38(%rsp),%xmm1
mulsd  %xmm0,%xmm1
movsd  (%rsp),%xmm2
addsd  %xmm2,%xmm1
cvttsd2si %xmm1,%edi
mulsd  0x48(%rsp),%xmm0
addsd  %xmm2,%xmm0
cvttsd2si %xmm0,%r12d
call   1030 <ceil@plt>
mov    %rax,%rbx
mov    %r12d,%edi
call   1060 <floor@plt>
cmp    %eax,%ebx
movsd  0x20(%rsp),%xmm3
movsd  0x80(%rsp),%xmm2
jg     1840 <triRender+0x700>
nop
mov    %r15d,%edi
mov    %ebx,%esi
movapd %xmm3,%xmm0
movsd  0x40(%rsp),%xmm1
call   1050 <pixSetRGB@plt>
lea    0x1(%rbx),%ebp
mov    %r12d,%edi
call   1060 <floor@plt>
movsd  0x80(%rsp),%xmm2
movsd  0x20(%rsp),%xmm3
cmp    %eax,%ebx
mov    %ebp,%ebx
jl     18b0 <triRender+0x770>
jmp    1840 <triRender+0x700>

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

LLVM IR (-O2):
@.str = [37 x i8] c"The vertices have to make a triangle\00"
define void @triRender(double %0, double %1, double %2, double %3, double %4, double %5, double %6, double %7, double %8) {
%10 = fcmp olt double %0, %2
%11 = fcmp olt double %0, %4
%12 = and i1 %10, %11
br i1 %12, label %23, label %13
13: ; preds = %9
%14 = fcmp olt double %2, %0
%15 = fcmp olt double %2, %4
%16 = and i1 %14, %15
br i1 %16, label %23, label %17
17: ; preds = %13
%18 = fcmp olt double %4, %0
%19 = fcmp olt double %4, %2
%20 = and i1 %18, %19
br i1 %20, label %23, label %21
21: ; preds = %17
%22 = tail call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([37 x i8], [37 x i8]* @.str, i64 0, i64 0))
br label %193
23: ; preds = %17, %13, %9
%24 = phi double [ %4, %9 ], [ %0, %13 ], [ %2, %17 ]
%25 = phi double [ %5, %9 ], [ %1, %13 ], [ %3, %17 ]
%26 = phi double [ %2, %9 ], [ %4, %13 ], [ %0, %17 ]
%27 = phi double [ %3, %9 ], [ %5, %13 ], [ %1, %17 ]
%28 = phi double [ %0, %9 ], [ %2, %13 ], [ %4, %17 ]
%29 = phi double [ %1, %9 ], [ %3, %13 ], [ %5, %17 ]
%30 = fcmp ugt double %24, %26
br i1 %30, label %193, label %31
31: ; preds = %23
%32 = fcmp oeq double %28, %24
br i1 %32, label %33, label %74
33: ; preds = %31
%34 = fptosi double %28 to i32
%35 = tail call i64 @ceil(i32 %34)
%36 = trunc i64 %35 to i32
%37 = fptosi double %26 to i32
%38 = tail call i64 @floor(i32 %37)
%39 = trunc i64 %38 to i32
%40 = icmp sgt i32 %36, %39
br i1 %40, label %279, label %41
41: ; preds = %33
%42 = fsub double %27, %29
%43 = fsub double %26, %28
%44 = fdiv double %42, %43
%45 = fsub double %27, %25
%46 = fsub double %26, %24
%47 = fdiv double %45, %46
br label %48
48: ; preds = %41, %69
%49 = phi i32 [ %36, %41 ], [ %70, %69 ]
%50 = sitofp i32 %49 to double
%51 = fsub double %50, %28
%52 = tail call double @llvm.fmuladd.f64(double %44, double %51, double %29)
%53 = fptosi double %52 to i32
%54 = fsub double %50, %24
%55 = tail call double @llvm.fmuladd.f64(double %47, double %54, double %25)
%56 = fptosi double %55 to i32
%57 = tail call i64 @ceil(i32 %53)
%58 = trunc i64 %57 to i32
%59 = tail call i64 @floor(i32 %56)
%60 = trunc i64 %59 to i32
%61 = icmp sgt i32 %58, %60
br i1 %61, label %69, label %62
62: ; preds = %48, %62
%63 = phi i32 [ %65, %62 ], [ %58, %48 ]
%64 = tail call i32 @pixSetRGB(i32 %49, i32 %63, double %6, double %7, double %8)
%65 = add nsw i32 %63, 1
%66 = tail call i64 @floor(i32 %56)
%67 = trunc i64 %66 to i32
%68 = icmp slt i32 %63, %67
br i1 %68, label %62, label %69
69: ; preds = %62, %48
%70 = add nsw i32 %49, 1
%71 = tail call i64 @floor(i32 %37)
%72 = trunc i64 %71 to i32
%73 = icmp slt i32 %49, %72
br i1 %73, label %48, label %279
74: ; preds = %31
%75 = fcmp oeq double %24, %26
%76 = fptosi double %28 to i32
%77 = tail call i64 @ceil(i32 %76)
%78 = trunc i64 %77 to i32
br i1 %75, label %79, label %116
79: ; preds = %74
%80 = fptosi double %26 to i32
%81 = tail call i64 @floor(i32 %80)
%82 = trunc i64 %81 to i32
%83 = icmp sgt i32 %78, %82
br i1 %83, label %279, label %84
84: ; preds = %79
%85 = fsub double %27, %29
%86 = fsub double %26, %28
%87 = fdiv double %85, %86
%88 = fsub double %25, %29
%89 = fsub double %24, %28
%90 = fdiv double %88, %89
br label %91
91: ; preds = %84, %111
%92 = phi i32 [ %78, %84 ], [ %112, %111 ]
%93 = sitofp i32 %92 to double
%94 = fsub double %93, %28
%95 = tail call double @llvm.fmuladd.f64(double %87, double %94, double %29)
%96 = fptosi double %95 to i32
%97 = tail call double @llvm.fmuladd.f64(double %90, double %94, double %29)
%98 = fptosi double %97 to i32
%99 = tail call i64 @ceil(i32 %96)
%100 = trunc i64 %99 to i32
%101 = tail call i64 @floor(i32 %98)
%102 = trunc i64 %101 to i32
%103 = icmp sgt i32 %100, %102
br i1 %103, label %111, label %104
104: ; preds = %91, %104
%105 = phi i32 [ %107, %104 ], [ %100, %91 ]
%106 = tail call i32 @pixSetRGB(i32 %92, i32 %105, double %6, double %7, double %8)
%107 = add nsw i32 %105, 1
%108 = tail call i64 @floor(i32 %98)
%109 = trunc i64 %108 to i32
%110 = icmp slt i32 %105, %109
br i1 %110, label %104, label %111
111: ; preds = %104, %91
%112 = add nsw i32 %92, 1
%113 = tail call i64 @floor(i32 %80)
%114 = trunc i64 %113 to i32
%115 = icmp slt i32 %92, %114
br i1 %115, label %91, label %279
116: ; preds = %74
%117 = fptosi double %24 to i32
%118 = tail call i64 @floor(i32 %117)
%119 = trunc i64 %118 to i32
%120 = icmp sgt i32 %78, %119
br i1 %120, label %153, label %121
121: ; preds = %116
%122 = fsub double %27, %29
%123 = fsub double %26, %28
%124 = fdiv double %122, %123
%125 = fsub double %25, %29
%126 = fsub double %24, %28
%127 = fdiv double %125, %126
br label %128
128: ; preds = %121, %148
%129 = phi i32 [ %78, %121 ], [ %149, %148 ]
%130 = sitofp i32 %129 to double
%131 = fsub double %130, %28
%132 = tail call double @llvm.fmuladd.f64(double %124, double %131, double %29)
%133 = fptosi double %132 to i32
%134 = tail call double @llvm.fmuladd.f64(double %127, double %131, double %29)
%135 = fptosi double %134 to i32
%136 = tail call i64 @ceil(i32 %133)
%137 = trunc i64 %136 to i32
%138 = tail call i64 @floor(i32 %135)
%139 = trunc i64 %138 to i32
%140 = icmp sgt i32 %137, %139
br i1 %140, label %148, label %141
141: ; preds = %128, %141
%142 = phi i32 [ %144, %141 ], [ %137, %128 ]
%143 = tail call i32 @pixSetRGB(i32 %129, i32 %142, double %6, double %7, double %8)
%144 = add nsw i32 %142, 1
%145 = tail call i64 @floor(i32 %135)
%146 = trunc i64 %145 to i32
%147 = icmp slt i32 %142, %146
br i1 %147, label %141, label %148
148: ; preds = %141, %128
%149 = add nsw i32 %129, 1
%150 = tail call i64 @floor(i32 %117)
%151 = trunc i64 %150 to i32
%152 = icmp slt i32 %129, %151
br i1 %152, label %128, label %153
153: ; preds = %148, %116
%154 = tail call i64 @floor(i32 %117)
%155 = trunc i64 %154 to i32
%156 = fptosi double %26 to i32
%157 = tail call i64 @floor(i32 %156)
%158 = trunc i64 %157 to i32
%159 = icmp slt i32 %155, %158
br i1 %159, label %160, label %279
160: ; preds = %153
%161 = fsub double %27, %29
%162 = fsub double %26, %28
%163 = fdiv double %161, %162
%164 = fsub double %27, %25
%165 = fsub double %26, %24
%166 = fdiv double %164, %165
br label %171
167: ; preds = %186, %171
%168 = tail call i64 @floor(i32 %156)
%169 = trunc i64 %168 to i32
%170 = icmp slt i32 %173, %169
br i1 %170, label %171, label %279
171: ; preds = %160, %167
%172 = phi i32 [ %155, %160 ], [ %173, %167 ]
%173 = add nsw i32 %172, 1
%174 = sitofp i32 %173 to double
%175 = fsub double %174, %28
%176 = tail call double @llvm.fmuladd.f64(double %163, double %175, double %29)
%177 = fptosi double %176 to i32
%178 = fsub double %174, %24
%179 = tail call double @llvm.fmuladd.f64(double %166, double %178, double %25)
%180 = fptosi double %179 to i32
%181 = tail call i64 @ceil(i32 %177)
%182 = trunc i64 %181 to i32
%183 = tail call i64 @floor(i32 %180)
%184 = trunc i64 %183 to i32
%185 = icmp sgt i32 %182, %184
br i1 %185, label %167, label %186
186: ; preds = %171, %186
%187 = phi i32 [ %189, %186 ], [ %182, %171 ]
%188 = tail call i32 @pixSetRGB(i32 %173, i32 %187, double %6, double %7, double %8)
%189 = add nsw i32 %187, 1
%190 = tail call i64 @floor(i32 %180)
%191 = trunc i64 %190 to i32
%192 = icmp slt i32 %187, %191
br i1 %192, label %186, label %167
193: ; preds = %21, %23
%194 = phi double [ undef, %21 ], [ %29, %23 ]
%195 = phi double [ undef, %21 ], [ %28, %23 ]
%196 = phi double [ undef, %21 ], [ %27, %23 ]
%197 = phi double [ undef, %21 ], [ %26, %23 ]
%198 = phi double [ undef, %21 ], [ %25, %23 ]
%199 = phi double [ undef, %21 ], [ %24, %23 ]
%200 = fptosi double %195 to i32
%201 = tail call i64 @ceil(i32 %200)
%202 = trunc i64 %201 to i32
%203 = fptosi double %197 to i32
%204 = tail call i64 @floor(i32 %203)
%205 = trunc i64 %204 to i32
%206 = icmp sgt i32 %202, %205
br i1 %206, label %239, label %207
207: ; preds = %193
%208 = fsub double %196, %194
%209 = fsub double %197, %195
%210 = fdiv double %208, %209
%211 = fsub double %198, %194
%212 = fsub double %199, %195
%213 = fdiv double %211, %212
br label %214
214: ; preds = %207, %234
%215 = phi i32 [ %202, %207 ], [ %235, %234 ]
%216 = sitofp i32 %215 to double
%217 = fsub double %216, %195
%218 = tail call double @llvm.fmuladd.f64(double %210, double %217, double %194)
%219 = fptosi double %218 to i32
%220 = tail call double @llvm.fmuladd.f64(double %213, double %217, double %194)
%221 = fptosi double %220 to i32
%222 = tail call i64 @ceil(i32 %219)
%223 = trunc i64 %222 to i32
%224 = tail call i64 @floor(i32 %221)
%225 = trunc i64 %224 to i32
%226 = icmp sgt i32 %223, %225
br i1 %226, label %234, label %227
227: ; preds = %214, %227
%228 = phi i32 [ %230, %227 ], [ %223, %214 ]
%229 = tail call i32 @pixSetRGB(i32 %215, i32 %228, double %6, double %7, double %8)
%230 = add nsw i32 %228, 1
%231 = tail call i64 @floor(i32 %221)
%232 = trunc i64 %231 to i32
%233 = icmp slt i32 %228, %232
br i1 %233, label %227, label %234
234: ; preds = %227, %214
%235 = add nsw i32 %215, 1
%236 = tail call i64 @floor(i32 %203)
%237 = trunc i64 %236 to i32
%238 = icmp slt i32 %215, %237
br i1 %238, label %214, label %239
239: ; preds = %234, %193
%240 = tail call i64 @floor(i32 %203)
%241 = trunc i64 %240 to i32
%242 = fptosi double %199 to i32
%243 = tail call i64 @floor(i32 %242)
%244 = trunc i64 %243 to i32
%245 = icmp slt i32 %241, %244
br i1 %245, label %246, label %279
246: ; preds = %239
%247 = fsub double %198, %196
%248 = fsub double %199, %197
%249 = fdiv double %247, %248
%250 = fsub double %198, %194
%251 = fsub double %199, %195
%252 = fdiv double %250, %251
br label %257
253: ; preds = %272, %257
%254 = tail call i64 @floor(i32 %242)
%255 = trunc i64 %254 to i32
%256 = icmp slt i32 %259, %255
br i1 %256, label %257, label %279
257: ; preds = %246, %253
%258 = phi i32 [ %241, %246 ], [ %259, %253 ]
%259 = add nsw i32 %258, 1
%260 = sitofp i32 %259 to double
%261 = fsub double %260, %197
%262 = tail call double @llvm.fmuladd.f64(double %249, double %261, double %196)
%263 = fptosi double %262 to i32
%264 = fsub double %260, %195
%265 = tail call double @llvm.fmuladd.f64(double %252, double %264, double %194)
%266 = fptosi double %265 to i32
%267 = tail call i64 @ceil(i32 %263)
%268 = trunc i64 %267 to i32
%269 = tail call i64 @floor(i32 %266)
%270 = trunc i64 %269 to i32
%271 = icmp sgt i32 %268, %270
br i1 %271, label %253, label %272
272: ; preds = %257, %272
%273 = phi i32 [ %275, %272 ], [ %268, %257 ]
%274 = tail call i32 @pixSetRGB(i32 %259, i32 %273, double %6, double %7, double %8)
%275 = add nsw i32 %273, 1
%276 = tail call i64 @floor(i32 %266)
%277 = trunc i64 %276 to i32
%278 = icmp slt i32 %273, %277
br i1 %278, label %272, label %253
279: ; preds = %167, %111, %69, %253, %153, %79, %33, %239
ret void
}