void triRenderALeft(double a[2], double b[2], double c[2], double rgb[3],
                    double alpha[2], double beta[2], double gamma[2]) {
  double new_rgb[3];
  double x[2];
  double x1_low, x1_high;
  if (b[0] <= c[0]) {
    if (b[0] == c[0] && a[0] == c[0]) {
      for (x[1] = ceil(fmin(fmin(a[1], b[1]), fmin(a[1], c[1])));
           x[1] <= floor(fmax(fmax(a[1], b[1]), fmax(a[1], c[1]))); x[1]++) {
        pixSetRGB(ceil(a[0]), x[1], new_rgb[0], new_rgb[1], new_rgb[2]);
      }
    } else if (b[0] == c[0] && a[0] != c[0]) {
      for (x[0] = (int)ceil(a[0]); x[0] <= (int)floor(b[0]); x[0]++) {
        x1_low = a[1] + (b[1] - a[1]) / (b[0] - a[0]) * (x[0] - a[0]);
        x1_high = a[1] + (c[1] - a[1]) / (c[0] - a[0]) * (x[0] - a[0]);
        for (x[1] = (int)ceil(x1_low); x[1] <= (int)floor(x1_high); x[1]++) {
          interpolating(x, a, b, c, rgb, alpha, beta, gamma, new_rgb);
          pixSetRGB(x[0], x[1], new_rgb[0], new_rgb[1], new_rgb[2]);
        }
      }
    } else {
      for (x[0] = (int)ceil(b[0]); x[0] <= (int)floor(c[0]); x[0]++) {
        x1_low = c[1] + (b[1] - c[1]) / (b[0] - c[0]) * (x[0] - c[0]);
        x1_high = a[1] + (c[1] - a[1]) / (c[0] - a[0]) * (x[0] - a[0]);
        for (x[1] = (int)ceil(x1_low); x[1] <= (int)floor(x1_high); x[1]++) {
          interpolating(x, a, b, c, rgb, alpha, beta, gamma, new_rgb);
          pixSetRGB(x[0], x[1], new_rgb[0], new_rgb[1], new_rgb[2]);
        }
      }
      for (x[0] = (int)floor(a[0]) + 1; x[0] <= (int)floor(b[0]); x[0]++) {
        x1_low = a[1] + (b[1] - a[1]) / (b[0] - a[0]) * (x[0] - a[0]);
        x1_high = a[1] + (c[1] - a[1]) / (c[0] - a[0]) * (x[0] - a[0]);
        for (x[1] = (int)ceil(x1_low); x[1] <= (int)floor(x1_high); x[1]++) {
          interpolating(x, a, b, c, rgb, alpha, beta, gamma, new_rgb);
          pixSetRGB(x[0], x[1], new_rgb[0], new_rgb[1], new_rgb[2]);
        }
      }
    }
  } else {
    if (a[0] == c[0]) {
      for (x[0] = ceil(c[0]); x[0] <= floor(b[0]); x[0]++) {
        x1_low = a[1] + (b[1] - a[1]) / (b[0] - a[0]) * (x[0] - a[0]);
        x1_high = c[1] + (b[1] - c[1]) / (b[0] - c[0]) * (x[0] - c[0]);
        for (x[1] = ceil(x1_low); x[1] <= floor(x1_high); x[1]++) {
          interpolating(x, a, b, c, rgb, alpha, beta, gamma, new_rgb);
          pixSetRGB(x[0], x[1], new_rgb[0], new_rgb[1], new_rgb[2]);
        }
      }
    } else {
      for (x[0] = (int)ceil(a[0]); x[0] <= (int)floor(c[0]); x[0]++) {
        x1_low = a[1] + (b[1] - a[1]) / (b[0] - a[0]) * (x[0] - a[0]);
        x1_high = a[1] + (c[1] - a[1]) / (c[0] - a[0]) * (x[0] - a[0]);
        for (x[1] = (int)ceil(x1_low); x[1] <= (int)floor(x1_high); x[1]++) {
          interpolating(x, a, b, c, rgb, alpha, beta, gamma, new_rgb);
          pixSetRGB(x[0], x[1], new_rgb[0], new_rgb[1], new_rgb[2]);
        }
      }
      for (x[0] = (int)floor(c[0]) + 1; x[0] <= (int)floor(b[0]); x[0]++) {
        x1_low = a[1] + (b[1] - a[1]) / (b[0] - a[0]) * (x[0] - a[0]);
        x1_high = c[1] + (b[1] - c[1]) / (b[0] - c[0]) * (x[0] - c[0]);
        for (x[1] = (int)ceil(x1_low); x[1] <= (int)floor(x1_high); x[1]++) {
          interpolating(x, a, b, c, rgb, alpha, beta, gamma, new_rgb);
          pixSetRGB(x[0], x[1], new_rgb[0], new_rgb[1], new_rgb[2]);
        }
      }
    }
  }
}


x86 assembly (clang, -O0):
<triRenderALeft>:
push   %rbp
mov    %rsp,%rbp
sub    $0xf0,%rsp
mov    0x10(%rbp),%rax
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8,-0x28(%rbp)
mov    %r9,-0x30(%rbp)
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm1
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
ucomisd %xmm1,%xmm0
jb     188b <triRenderALeft+0x74b>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x18(%rbp),%rax
ucomisd (%rax),%xmm0
jne    1321 <triRenderALeft+0x1e1>
jp     1321 <triRenderALeft+0x1e1>
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x18(%rbp),%rax
ucomisd (%rax),%xmm0
jne    1321 <triRenderALeft+0x1e1>
jp     1321 <triRenderALeft+0x1e1>
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm2
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm1
movaps %xmm1,%xmm4
movaps %xmm2,%xmm3
cmpunordsd %xmm3,%xmm3
movaps %xmm3,%xmm0
pand   %xmm4,%xmm0
minsd  %xmm2,%xmm1
pandn  %xmm1,%xmm3
por    %xmm0,%xmm3
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm4
mov    -0x18(%rbp),%rax
movsd  0x8(%rax),%xmm1
movaps %xmm1,%xmm5
movaps %xmm4,%xmm2
cmpunordsd %xmm2,%xmm2
movaps %xmm2,%xmm0
pand   %xmm5,%xmm0
minsd  %xmm4,%xmm1
pandn  %xmm1,%xmm2
por    %xmm0,%xmm2
movaps %xmm2,%xmm4
movaps %xmm3,%xmm0
cmpunordsd %xmm0,%xmm0
movaps %xmm0,%xmm1
pand   %xmm4,%xmm1
minsd  %xmm3,%xmm2
pandn  %xmm2,%xmm0
por    %xmm1,%xmm0
call   1030 <ceil@plt>
movsd  %xmm0,-0x58(%rbp)
movsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm2
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm1
movaps %xmm1,%xmm4
movaps %xmm2,%xmm3
cmpunordsd %xmm3,%xmm3
movaps %xmm3,%xmm0
pand   %xmm4,%xmm0
maxsd  %xmm2,%xmm1
pandn  %xmm1,%xmm3
por    %xmm0,%xmm3
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm4
mov    -0x18(%rbp),%rax
movsd  0x8(%rax),%xmm1
movaps %xmm1,%xmm5
movaps %xmm4,%xmm2
cmpunordsd %xmm2,%xmm2
movaps %xmm2,%xmm0
pand   %xmm5,%xmm0
maxsd  %xmm4,%xmm1
pandn  %xmm1,%xmm2
por    %xmm0,%xmm2
movaps %xmm2,%xmm4
movaps %xmm3,%xmm0
cmpunordsd %xmm0,%xmm0
movaps %xmm0,%xmm1
pand   %xmm4,%xmm1
maxsd  %xmm3,%xmm2
pandn  %xmm2,%xmm0
por    %xmm1,%xmm0
call   1060 <floor@plt>
movsd  -0x78(%rbp),%xmm1
ucomisd %xmm1,%xmm0
jb     131c <triRenderALeft+0x1dc>
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm0
call   1030 <ceil@plt>
movsd  -0x58(%rbp),%xmm1
movsd  -0x50(%rbp),%xmm2
movsd  -0x48(%rbp),%xmm3
movsd  -0x40(%rbp),%xmm4
mov    $0x5,%al
call   1050 <pixSetRGB@plt>
movsd  0xcf3(%rip),%xmm0
addsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x58(%rbp)
jmp    1241 <triRenderALeft+0x101>
jmp    1886 <triRenderALeft+0x746>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x18(%rbp),%rax
ucomisd (%rax),%xmm0
jne    1511 <triRenderALeft+0x3d1>
jp     1511 <triRenderALeft+0x3d1>
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x18(%rbp),%rax
ucomisd (%rax),%xmm0
jne    135e <triRenderALeft+0x21e>
jp     135e <triRenderALeft+0x21e>
jmp    1511 <triRenderALeft+0x3d1>
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm0
call   1030 <ceil@plt>
cvttsd2si %xmm0,%eax
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
call   1060 <floor@plt>
movsd  -0x80(%rbp),%xmm1
cvttsd2si %xmm0,%eax
cvtsi2sd %eax,%xmm0
ucomisd %xmm1,%xmm0
jb     150c <triRenderALeft+0x3cc>
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x8(%rbp),%rax
subsd  0x8(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm2
mov    -0x8(%rbp),%rax
subsd  (%rax),%xmm2
divsd  %xmm2,%xmm0
movsd  -0x60(%rbp),%xmm2
mov    -0x8(%rbp),%rax
subsd  (%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm1
mov    -0x18(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x8(%rbp),%rax
subsd  0x8(%rax),%xmm0
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm2
mov    -0x8(%rbp),%rax
subsd  (%rax),%xmm2
divsd  %xmm2,%xmm0
movsd  -0x60(%rbp),%xmm2
mov    -0x8(%rbp),%rax
subsd  (%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x68(%rbp),%xmm0
call   1030 <ceil@plt>
cvttsd2si %xmm0,%eax
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
call   1060 <floor@plt>
movsd  -0x88(%rbp),%xmm1
ff
cvttsd2si %xmm0,%eax
cvtsi2sd %eax,%xmm0
ucomisd %xmm1,%xmm0
jb     14f0 <triRenderALeft+0x3b0>
lea    -0x60(%rbp),%rdi
mov    -0x8(%rbp),%rsi
mov    -0x10(%rbp),%rdx
mov    -0x18(%rbp),%rcx
mov    -0x20(%rbp),%r8
mov    -0x28(%rbp),%r9
mov    -0x30(%rbp),%r11
mov    0x10(%rbp),%r10
lea    -0x50(%rbp),%rax
mov    %r11,(%rsp)
mov    %r10,0x8(%rsp)
mov    %rax,0x10(%rsp)
mov    $0x0,%al
call   1040 <interpolating@plt>
movsd  -0x60(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
movsd  -0x50(%rbp),%xmm2
movsd  -0x48(%rbp),%xmm3
movsd  -0x40(%rbp),%xmm4
mov    $0x5,%al
call   1050 <pixSetRGB@plt>
movsd  0xb1f(%rip),%xmm0
addsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x58(%rbp)
jmp    144f <triRenderALeft+0x30f>
jmp    14f5 <triRenderALeft+0x3b5>
movsd  0xb03(%rip),%xmm0
addsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
jmp    1378 <triRenderALeft+0x238>
jmp    1881 <triRenderALeft+0x741>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
call   1030 <ceil@plt>
cvttsd2si %xmm0,%eax
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
call   1060 <floor@plt>
movsd  -0x90(%rbp),%xmm1
ff
cvttsd2si %xmm0,%eax
cvtsi2sd %eax,%xmm0
ucomisd %xmm1,%xmm0
jb     16c5 <triRenderALeft+0x585>
mov    -0x18(%rbp),%rax
movsd  0x8(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x18(%rbp),%rax
subsd  0x8(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm2
mov    -0x18(%rbp),%rax
subsd  (%rax),%xmm2
divsd  %xmm2,%xmm0
movsd  -0x60(%rbp),%xmm2
mov    -0x18(%rbp),%rax
subsd  (%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm1
mov    -0x18(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x8(%rbp),%rax
subsd  0x8(%rax),%xmm0
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm2
mov    -0x8(%rbp),%rax
subsd  (%rax),%xmm2
divsd  %xmm2,%xmm0
movsd  -0x60(%rbp),%xmm2
mov    -0x8(%rbp),%rax
subsd  (%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x68(%rbp),%xmm0
call   1030 <ceil@plt>
cvttsd2si %xmm0,%eax
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
call   1060 <floor@plt>
movsd  -0x98(%rbp),%xmm1
ff
cvttsd2si %xmm0,%eax
cvtsi2sd %eax,%xmm0
ucomisd %xmm1,%xmm0
jb     16a9 <triRenderALeft+0x569>
lea    -0x60(%rbp),%rdi
mov    -0x8(%rbp),%rsi
mov    -0x10(%rbp),%rdx
mov    -0x18(%rbp),%rcx
mov    -0x20(%rbp),%r8
mov    -0x28(%rbp),%r9
mov    -0x30(%rbp),%r11
mov    0x10(%rbp),%r10
lea    -0x50(%rbp),%rax
mov    %r11,(%rsp)
mov    %r10,0x8(%rsp)
mov    %rax,0x10(%rsp)
mov    $0x0,%al
call   1040 <interpolating@plt>
movsd  -0x60(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
movsd  -0x50(%rbp),%xmm2
movsd  -0x48(%rbp),%xmm3
movsd  -0x40(%rbp),%xmm4
mov    $0x5,%al
call   1050 <pixSetRGB@plt>
movsd  0x966(%rip),%xmm0
addsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x58(%rbp)
jmp    1608 <triRenderALeft+0x4c8>
jmp    16ae <triRenderALeft+0x56e>
movsd  0x94a(%rip),%xmm0
addsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
jmp    152b <triRenderALeft+0x3eb>
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm0
call   1060 <floor@plt>
cvttsd2si %xmm0,%eax
add    $0x1,%eax
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
call   1060 <floor@plt>
movsd  -0xa0(%rbp),%xmm1
ff
cvttsd2si %xmm0,%eax
cvtsi2sd %eax,%xmm0
ucomisd %xmm1,%xmm0
jb     187c <triRenderALeft+0x73c>
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x8(%rbp),%rax
subsd  0x8(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm2
mov    -0x8(%rbp),%rax
subsd  (%rax),%xmm2
divsd  %xmm2,%xmm0
movsd  -0x60(%rbp),%xmm2
mov    -0x8(%rbp),%rax
subsd  (%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm1
mov    -0x18(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x8(%rbp),%rax
subsd  0x8(%rax),%xmm0
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm2
mov    -0x8(%rbp),%rax
subsd  (%rax),%xmm2
divsd  %xmm2,%xmm0
movsd  -0x60(%rbp),%xmm2
mov    -0x8(%rbp),%rax
subsd  (%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x68(%rbp),%xmm0
call   1030 <ceil@plt>
cvttsd2si %xmm0,%eax
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
call   1060 <floor@plt>
movsd  -0xa8(%rbp),%xmm1
ff
cvttsd2si %xmm0,%eax
cvtsi2sd %eax,%xmm0
ucomisd %xmm1,%xmm0
jb     1860 <triRenderALeft+0x720>
lea    -0x60(%rbp),%rdi
mov    -0x8(%rbp),%rsi
mov    -0x10(%rbp),%rdx
mov    -0x18(%rbp),%rcx
mov    -0x20(%rbp),%r8
mov    -0x28(%rbp),%r9
mov    -0x30(%rbp),%r11
mov    0x10(%rbp),%r10
lea    -0x50(%rbp),%rax
mov    %r11,(%rsp)
mov    %r10,0x8(%rsp)
mov    %rax,0x10(%rsp)
mov    $0x0,%al
call   1040 <interpolating@plt>
movsd  -0x60(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
movsd  -0x50(%rbp),%xmm2
movsd  -0x48(%rbp),%xmm3
movsd  -0x40(%rbp),%xmm4
mov    $0x5,%al
call   1050 <pixSetRGB@plt>
movsd  0x7af(%rip),%xmm0
addsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x58(%rbp)
jmp    17bf <triRenderALeft+0x67f>
jmp    1865 <triRenderALeft+0x725>
movsd  0x793(%rip),%xmm0
addsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
jmp    16e2 <triRenderALeft+0x5a2>
jmp    1881 <triRenderALeft+0x741>
jmp    1886 <triRenderALeft+0x746>
jmp    1db5 <triRenderALeft+0xc75>
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x18(%rbp),%rax
ucomisd (%rax),%xmm0
jne    1a40 <triRenderALeft+0x900>
jp     1a40 <triRenderALeft+0x900>
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
call   1030 <ceil@plt>
movsd  %xmm0,-0x60(%rbp)
movsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
call   1060 <floor@plt>
movsd  -0xb0(%rbp),%xmm1
ff
ucomisd %xmm1,%xmm0
jb     1a3b <triRenderALeft+0x8fb>
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x8(%rbp),%rax
subsd  0x8(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm2
mov    -0x8(%rbp),%rax
subsd  (%rax),%xmm2
divsd  %xmm2,%xmm0
movsd  -0x60(%rbp),%xmm2
mov    -0x8(%rbp),%rax
subsd  (%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x8(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x18(%rbp),%rax
subsd  0x8(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm2
mov    -0x18(%rbp),%rax
subsd  (%rax),%xmm2
divsd  %xmm2,%xmm0
movsd  -0x60(%rbp),%xmm2
mov    -0x18(%rbp),%rax
subsd  (%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x68(%rbp),%xmm0
call   1030 <ceil@plt>
movsd  %xmm0,-0x58(%rbp)
movsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
call   1060 <floor@plt>
movsd  -0xb8(%rbp),%xmm1
ff
ucomisd %xmm1,%xmm0
jb     1a1f <triRenderALeft+0x8df>
lea    -0x60(%rbp),%rdi
mov    -0x8(%rbp),%rsi
mov    -0x10(%rbp),%rdx
mov    -0x18(%rbp),%rcx
mov    -0x20(%rbp),%r8
mov    -0x28(%rbp),%r9
mov    -0x30(%rbp),%r11
mov    0x10(%rbp),%r10
lea    -0x50(%rbp),%rax
mov    %r11,(%rsp)
mov    %r10,0x8(%rsp)
mov    %rax,0x10(%rsp)
mov    $0x0,%al
call   1040 <interpolating@plt>
movsd  -0x60(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
movsd  -0x50(%rbp),%xmm2
movsd  -0x48(%rbp),%xmm3
movsd  -0x40(%rbp),%xmm4
mov    $0x5,%al
call   1050 <pixSetRGB@plt>
movsd  0x5f0(%rip),%xmm0
addsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x58(%rbp)
jmp    1986 <triRenderALeft+0x846>
jmp    1a24 <triRenderALeft+0x8e4>
movsd  0x5d4(%rip),%xmm0
addsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
jmp    18b9 <triRenderALeft+0x779>
jmp    1db0 <triRenderALeft+0xc70>
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm0
call   1030 <ceil@plt>
cvttsd2si %xmm0,%eax
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
call   1060 <floor@plt>
movsd  -0xc0(%rbp),%xmm1
ff
cvttsd2si %xmm0,%eax
cvtsi2sd %eax,%xmm0
ucomisd %xmm1,%xmm0
jb     1bf4 <triRenderALeft+0xab4>
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x8(%rbp),%rax
subsd  0x8(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm2
mov    -0x8(%rbp),%rax
subsd  (%rax),%xmm2
divsd  %xmm2,%xmm0
movsd  -0x60(%rbp),%xmm2
mov    -0x8(%rbp),%rax
subsd  (%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm1
mov    -0x18(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x8(%rbp),%rax
subsd  0x8(%rax),%xmm0
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm2
mov    -0x8(%rbp),%rax
subsd  (%rax),%xmm2
divsd  %xmm2,%xmm0
movsd  -0x60(%rbp),%xmm2
mov    -0x8(%rbp),%rax
subsd  (%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x68(%rbp),%xmm0
call   1030 <ceil@plt>
cvttsd2si %xmm0,%eax
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
call   1060 <floor@plt>
movsd  -0xc8(%rbp),%xmm1
ff
cvttsd2si %xmm0,%eax
cvtsi2sd %eax,%xmm0
ucomisd %xmm1,%xmm0
jb     1bd8 <triRenderALeft+0xa98>
lea    -0x60(%rbp),%rdi
mov    -0x8(%rbp),%rsi
mov    -0x10(%rbp),%rdx
mov    -0x18(%rbp),%rcx
mov    -0x20(%rbp),%r8
mov    -0x28(%rbp),%r9
mov    -0x30(%rbp),%r11
mov    0x10(%rbp),%r10
lea    -0x50(%rbp),%rax
mov    %r11,(%rsp)
mov    %r10,0x8(%rsp)
mov    %rax,0x10(%rsp)
mov    $0x0,%al
call   1040 <interpolating@plt>
movsd  -0x60(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
movsd  -0x50(%rbp),%xmm2
movsd  -0x48(%rbp),%xmm3
movsd  -0x40(%rbp),%xmm4
mov    $0x5,%al
call   1050 <pixSetRGB@plt>
movsd  0x437(%rip),%xmm0
addsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x58(%rbp)
jmp    1b37 <triRenderALeft+0x9f7>
jmp    1bdd <triRenderALeft+0xa9d>
movsd  0x41b(%rip),%xmm0
addsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
jmp    1a5a <triRenderALeft+0x91a>
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
call   1060 <floor@plt>
cvttsd2si %xmm0,%eax
add    $0x1,%eax
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
call   1060 <floor@plt>
movsd  -0xd0(%rbp),%xmm1
ff
cvttsd2si %xmm0,%eax
cvtsi2sd %eax,%xmm0
ucomisd %xmm1,%xmm0
jb     1dab <triRenderALeft+0xc6b>
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x8(%rbp),%rax
subsd  0x8(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm2
mov    -0x8(%rbp),%rax
subsd  (%rax),%xmm2
divsd  %xmm2,%xmm0
movsd  -0x60(%rbp),%xmm2
mov    -0x8(%rbp),%rax
subsd  (%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x8(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x18(%rbp),%rax
subsd  0x8(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm2
mov    -0x18(%rbp),%rax
subsd  (%rax),%xmm2
divsd  %xmm2,%xmm0
movsd  -0x60(%rbp),%xmm2
mov    -0x18(%rbp),%rax
subsd  (%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x68(%rbp),%xmm0
call   1030 <ceil@plt>
cvttsd2si %xmm0,%eax
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
call   1060 <floor@plt>
movsd  -0xd8(%rbp),%xmm1
ff
cvttsd2si %xmm0,%eax
cvtsi2sd %eax,%xmm0
ucomisd %xmm1,%xmm0
jb     1d8f <triRenderALeft+0xc4f>
lea    -0x60(%rbp),%rdi
mov    -0x8(%rbp),%rsi
mov    -0x10(%rbp),%rdx
mov    -0x18(%rbp),%rcx
mov    -0x20(%rbp),%r8
mov    -0x28(%rbp),%r9
mov    -0x30(%rbp),%r11
mov    0x10(%rbp),%r10
lea    -0x50(%rbp),%rax
mov    %r11,(%rsp)
mov    %r10,0x8(%rsp)
mov    %rax,0x10(%rsp)
mov    $0x0,%al
call   1040 <interpolating@plt>
movsd  -0x60(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
movsd  -0x50(%rbp),%xmm2
movsd  -0x48(%rbp),%xmm3
movsd  -0x40(%rbp),%xmm4
mov    $0x5,%al
call   1050 <pixSetRGB@plt>
movsd  0x280(%rip),%xmm0
addsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x58(%rbp)
jmp    1cee <triRenderALeft+0xbae>
jmp    1d94 <triRenderALeft+0xc54>
movsd  0x264(%rip),%xmm0
addsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
jmp    1c11 <triRenderALeft+0xad1>
jmp    1db0 <triRenderALeft+0xc70>
jmp    1db5 <triRenderALeft+0xc75>
add    $0xf0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<triRenderALeft>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0xc8,%rsp
mov    %r9,%r12
mov    %r8,0xa8(%rsp)
mov    %rcx,%r15
mov    %rdx,%rbp
mov    %rdi,%r14
mov    %rsi,0x58(%rsp)
movsd  (%rsi),%xmm1
movsd  (%rdx),%xmm2
ucomisd %xmm1,%xmm2
mov    %rdi,0x88(%rsp)
mov    %rdx,0x80(%rsp)
jae    13ae <triRenderALeft+0x26e>
movsd  (%r14),%xmm0
ucomisd %xmm2,%xmm0
movsd  %xmm1,0x30(%rsp)
movsd  %xmm2,0x70(%rsp)
movsd  %xmm0,0x40(%rsp)
jne    155e <triRenderALeft+0x41e>
jp     155e <triRenderALeft+0x41e>
movapd %xmm2,%xmm0
call   1030 <ceil@plt>
movsd  %xmm0,0x60(%rsp)
movsd  %xmm0,0x20(%rsp)
movsd  0x30(%rsp),%xmm0
call   1060 <floor@plt>
movsd  0x60(%rsp),%xmm6
ucomisd %xmm6,%xmm0
jb     1ec8 <triRenderALeft+0xd88>
movsd  0x70(%rsp),%xmm4
mov    0x88(%rsp),%r14
mov    0x80(%rsp),%rbx
movsd  0x40(%rsp),%xmm5
nop
movsd  %xmm6,0x60(%rsp)
movsd  0x8(%r14),%xmm1
mov    0x58(%rsp),%rax
movsd  0x8(%rax),%xmm2
movapd %xmm2,%xmm3
subsd  %xmm1,%xmm3
movsd  0x30(%rsp),%xmm7
movapd %xmm7,%xmm0
movsd  %xmm7,0x30(%rsp)
subsd  %xmm5,%xmm0
divsd  %xmm0,%xmm3
movapd %xmm6,%xmm0
subsd  %xmm5,%xmm0
mulsd  %xmm3,%xmm0
addsd  %xmm1,%xmm0
movsd  0x8(%rbx),%xmm1
subsd  %xmm1,%xmm2
movapd %xmm7,%xmm3
subsd  %xmm4,%xmm3
divsd  %xmm3,%xmm2
subsd  %xmm4,%xmm6
mulsd  %xmm2,%xmm6
addsd  %xmm1,%xmm6
movsd  %xmm6,0x40(%rsp)
call   1030 <ceil@plt>
movsd  %xmm0,0x70(%rsp)
movsd  0x40(%rsp),%xmm0
call   1060 <floor@plt>
movsd  0x60(%rsp),%xmm2
movsd  0x30(%rsp),%xmm1
movapd %xmm0,%xmm3
movsd  0x70(%rsp),%xmm0
movsd  %xmm0,0x28(%rsp)
ucomisd %xmm0,%xmm3
jb     136d <triRenderALeft+0x22d>
mov    %r15,%r13
mov    0xa8(%rsp),%r15
mov    0x58(%rsp),%rbx
mov    0x100(%rsp),%rbp
movsd  %xmm3,0x40(%rsp)
nopw   0x0(%rax,%rax,1)
lea    0x90(%rsp),%rax
mov    %rax,0x10(%rsp)
mov    %rbp,0x8(%rsp)
mov    %r12,(%rsp)
lea    0x20(%rsp),%rdi
mov    %r14,%rsi
mov    %rbx,%rdx
mov    0x80(%rsp),%rcx
mov    %r13,%r8
mov    %r15,%r9
xor    %eax,%eax
call   1040 <interpolating@plt>
movsd  0x20(%rsp),%xmm0
movsd  0x28(%rsp),%xmm1
movsd  0x90(%rsp),%xmm2
movsd  0x98(%rsp),%xmm3
movsd  0xa0(%rsp),%xmm4
mov    $0x5,%al
call   1050 <pixSetRGB@plt>
movsd  0x40(%rsp),%xmm3
movsd  0x28(%rsp),%xmm0
addsd  0x1cb8(%rip),%xmm0
movsd  %xmm0,0x28(%rsp)
ucomisd %xmm0,%xmm3
jae    12d0 <triRenderALeft+0x190>
movsd  0x20(%rsp),%xmm2
movsd  (%rbx),%xmm1
mov    %r13,%r15
mov    0x80(%rsp),%rbx
addsd  0x1c8b(%rip),%xmm2
movsd  %xmm2,0x60(%rsp)
movsd  %xmm2,0x20(%rsp)
movsd  %xmm1,0x30(%rsp)
movapd %xmm1,%xmm0
call   1060 <floor@plt>
movsd  0x60(%rsp),%xmm6
ucomisd %xmm6,%xmm0
jb     1ec8 <triRenderALeft+0xd88>
movsd  (%r14),%xmm5
movsd  (%rbx),%xmm4
jmp    1200 <triRenderALeft+0xc0>
ucomisd %xmm2,%xmm1
jne    15b2 <triRenderALeft+0x472>
jp     15b2 <triRenderALeft+0x472>
movsd  (%r14),%xmm0
ucomisd %xmm2,%xmm0
jne    185a <triRenderALeft+0x71a>
jp     185a <triRenderALeft+0x71a>
movsd  0x8(%r14),%xmm1
mov    0x58(%rsp),%rax
movsd  0x8(%rax),%xmm5
movapd %xmm1,%xmm0
cmpunordsd %xmm1,%xmm0
movapd %xmm0,%xmm2
andpd  %xmm5,%xmm2
movapd %xmm5,%xmm3
minsd  %xmm1,%xmm3
andnpd %xmm3,%xmm0
orpd   %xmm2,%xmm0
movsd  0x8(%rbp),%xmm6
ucomisd %xmm1,%xmm1
movapd %xmm6,%xmm2
jp     141b <triRenderALeft+0x2db>
movapd %xmm6,%xmm2
minsd  %xmm1,%xmm2
movapd %xmm2,%xmm3
minsd  %xmm0,%xmm3
cmpunordsd %xmm0,%xmm0
movapd %xmm0,%xmm4
andnpd %xmm3,%xmm4
andpd  %xmm2,%xmm0
orpd   %xmm4,%xmm0
jp     143e <triRenderALeft+0x2fe>
maxsd  %xmm1,%xmm5
movapd %xmm5,0x30(%rsp)
jp     144a <triRenderALeft+0x30a>
maxsd  %xmm1,%xmm6
movapd %xmm6,0xb0(%rsp)
call   1030 <ceil@plt>
movsd  %xmm0,0x40(%rsp)
movapd 0x30(%rsp),%xmm2
movapd %xmm2,%xmm0
cmpunordsd %xmm2,%xmm0
movapd %xmm0,%xmm1
movapd 0xb0(%rsp),%xmm3
andpd  %xmm3,%xmm1
maxsd  %xmm2,%xmm3
andnpd %xmm3,%xmm0
orpd   %xmm1,%xmm0
call   1060 <floor@plt>
movsd  0x40(%rsp),%xmm1
ucomisd %xmm1,%xmm0
jb     1ec8 <triRenderALeft+0xd88>
mov    0x88(%rsp),%rbx
jmp    1509 <triRenderALeft+0x3c9>
nopl   0x0(%rax)
mov    0x58(%rsp),%rax
movsd  0x8(%rax),%xmm3
movapd %xmm2,%xmm0
cmpunordsd %xmm2,%xmm0
movapd %xmm0,%xmm4
andpd  %xmm3,%xmm4
maxsd  %xmm2,%xmm3
andnpd %xmm3,%xmm0
orpd   %xmm4,%xmm0
movapd %xmm1,%xmm2
maxsd  %xmm0,%xmm2
cmpunordsd %xmm0,%xmm0
movapd %xmm0,%xmm3
andnpd %xmm2,%xmm3
andpd  %xmm1,%xmm0
orpd   %xmm3,%xmm0
call   1060 <floor@plt>
movsd  0x40(%rsp),%xmm1
ucomisd %xmm1,%xmm0
jb     1ec8 <triRenderALeft+0xd88>
movsd  %xmm1,0x40(%rsp)
movsd  (%rbx),%xmm0
call   1030 <ceil@plt>
movsd  0x40(%rsp),%xmm1
mov    $0x5,%al
call   1050 <pixSetRGB@plt>
movsd  0x40(%rsp),%xmm0
addsd  0x1acd(%rip),%xmm0
movsd  %xmm0,0x40(%rsp)
movsd  0x8(%rbx),%xmm2
mov    0x80(%rsp),%rax
movsd  0x8(%rax),%xmm1
ucomisd %xmm2,%xmm2
jp     14b0 <triRenderALeft+0x370>
maxsd  %xmm2,%xmm1
jmp    14b0 <triRenderALeft+0x370>
call   1030 <ceil@plt>
movapd %xmm0,0x60(%rsp)
movsd  0x70(%rsp),%xmm0
call   1060 <floor@plt>
movapd 0x60(%rsp),%xmm1
unpcklpd %xmm0,%xmm1
cvttpd2dq %xmm1,%xmm0
cvtdq2pd %xmm0,%xmm5
movlpd %xmm5,0x20(%rsp)
movapd %xmm5,%xmm1
unpckhpd %xmm5,%xmm1
ucomisd %xmm5,%xmm1
jae    1ab2 <triRenderALeft+0x972>
pshufd $0x55,%xmm0,%xmm0
movd   %xmm0,%eax
movsd  0x30(%rsp),%xmm2
jmp    1e8f <triRenderALeft+0xd4f>
movsd  %xmm1,0x30(%rsp)
movapd %xmm1,%xmm0
movsd  %xmm2,0x70(%rsp)
call   1030 <ceil@plt>
movapd %xmm0,0x40(%rsp)
movsd  0x70(%rsp),%xmm0
call   1060 <floor@plt>
movapd 0x40(%rsp),%xmm1
unpcklpd %xmm0,%xmm1
cvttpd2dq %xmm1,%xmm0
cvtdq2pd %xmm0,%xmm5
movlpd %xmm5,0x20(%rsp)
movapd %xmm5,%xmm0
unpckhpd %xmm5,%xmm0
ucomisd %xmm5,%xmm0
mov    %r12,0xb0(%rsp)
jae    1ca0 <triRenderALeft+0xb60>
movsd  0x30(%rsp),%xmm0
movsd  %xmm0,0x30(%rsp)
mov    %rbp,%rbx
mov    %r14,%rbp
movsd  (%r14),%xmm0
movsd  %xmm0,0x40(%rsp)
call   1060 <floor@plt>
cvttsd2si %xmm0,%eax
add    $0x1,%eax
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x60(%rsp)
movsd  %xmm0,0x20(%rsp)
movsd  0x30(%rsp),%xmm0
call   1060 <floor@plt>
movsd  0x60(%rsp),%xmm4
cvttpd2dq %xmm0,%xmm0
cvtdq2pd %xmm0,%xmm0
ucomisd %xmm4,%xmm0
mov    0xb0(%rsp),%r12
jb     1ec8 <triRenderALeft+0xd88>
lea    0x20(%rsp),%r14
movsd  0x30(%rsp),%xmm2
movsd  0x70(%rsp),%xmm3
mov    %rbp,%rax
movsd  0x40(%rsp),%xmm5
nopl   0x0(%rax,%rax,1)
movsd  %xmm4,0x60(%rsp)
movsd  %xmm2,0x30(%rsp)
mov    %rax,%rbp
movsd  0x8(%rax),%xmm1
mov    0x58(%rsp),%rax
movsd  0x8(%rax),%xmm0
subsd  %xmm1,%xmm0
subsd  %xmm5,%xmm2
divsd  %xmm2,%xmm0
movapd %xmm4,%xmm2
subsd  %xmm5,%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x8(%rbx),%xmm4
subsd  %xmm1,%xmm4
subsd  %xmm5,%xmm3
divsd  %xmm3,%xmm4
mulsd  %xmm2,%xmm4
addsd  %xmm1,%xmm4
movsd  %xmm4,0x40(%rsp)
call   1030 <ceil@plt>
movapd %xmm0,0x70(%rsp)
movsd  0x40(%rsp),%xmm0
call   1060 <floor@plt>
movsd  0x60(%rsp),%xmm2
movsd  0x30(%rsp),%xmm1
movapd 0x70(%rsp),%xmm3
unpcklpd %xmm0,%xmm3
cvttpd2dq %xmm3,%xmm0
cvtdq2pd %xmm0,%xmm0
movlpd %xmm0,0x28(%rsp)
movapd %xmm0,%xmm3
unpckhpd %xmm0,%xmm3
ucomisd %xmm0,%xmm3
jb     1808 <triRenderALeft+0x6c8>
mov    %r15,%r13
mov    0xa8(%rsp),%r15
mov    0x58(%rsp),%rbx
lea    0x90(%rsp),%rbp
movapd %xmm3,0x40(%rsp)
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    %rbp,0x10(%rsp)
mov    0x100(%rsp),%rax
mov    %rax,0x8(%rsp)
mov    %r12,(%rsp)
mov    %r14,%rdi
mov    0x88(%rsp),%rsi
mov    %rbx,%rdx
mov    0x80(%rsp),%rcx
mov    %r13,%r8
mov    %r15,%r9
xor    %eax,%eax
call   1040 <interpolating@plt>
movsd  0x20(%rsp),%xmm0
movsd  0x28(%rsp),%xmm1
movsd  0x90(%rsp),%xmm2
movsd  0x98(%rsp),%xmm3
movsd  0xa0(%rsp),%xmm4
mov    $0x5,%al
call   1050 <pixSetRGB@plt>
movapd 0x40(%rsp),%xmm3
movsd  0x28(%rsp),%xmm0
addsd  0x1825(%rip),%xmm0
movsd  %xmm0,0x28(%rsp)
ucomisd %xmm0,%xmm3
jae    1760 <triRenderALeft+0x620>
movsd  0x20(%rsp),%xmm2
movsd  (%rbx),%xmm1
mov    %r13,%r15
mov    0x88(%rsp),%rbp
mov    0x80(%rsp),%rbx
addsd  0x17f0(%rip),%xmm2
movsd  %xmm2,0x60(%rsp)
movsd  %xmm2,0x20(%rsp)
movsd  %xmm1,0x30(%rsp)
movapd %xmm1,%xmm0
call   1060 <floor@plt>
movsd  0x60(%rsp),%xmm4
cvttpd2dq %xmm0,%xmm0
cvtdq2pd %xmm0,%xmm0
ucomisd %xmm4,%xmm0
jb     1ec8 <triRenderALeft+0xd88>
mov    %rbp,%rax
movsd  0x0(%rbp),%xmm5
movsd  (%rbx),%xmm3
movsd  0x30(%rsp),%xmm2
jmp    1690 <triRenderALeft+0x550>
movsd  %xmm2,0x70(%rsp)
movsd  %xmm1,0x30(%rsp)
movsd  %xmm0,0x60(%rsp)
call   1030 <ceil@plt>
movapd %xmm0,0x40(%rsp)
movsd  0x30(%rsp),%xmm0
call   1060 <floor@plt>
movapd 0x40(%rsp),%xmm1
unpcklpd %xmm0,%xmm1
cvttpd2dq %xmm1,%xmm0
cvtdq2pd %xmm0,%xmm4
movlpd %xmm4,0x20(%rsp)
movapd %xmm4,%xmm0
unpckhpd %xmm4,%xmm0
ucomisd %xmm4,%xmm0
jb     1ec8 <triRenderALeft+0xd88>
lea    0x20(%rsp),%r13
movsd  0x30(%rsp),%xmm2
movsd  0x70(%rsp),%xmm3
mov    0x88(%rsp),%r14
mov    0x80(%rsp),%rcx
movsd  0x60(%rsp),%xmm5
mov    0xa8(%rsp),%rbp
mov    0x80(%rsp),%rbx
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movapd %xmm4,0x70(%rsp)
movsd  %xmm2,0x30(%rsp)
movsd  0x8(%r14),%xmm1
mov    0x58(%rsp),%rax
movsd  0x8(%rax),%xmm0
subsd  %xmm1,%xmm0
subsd  %xmm5,%xmm2
divsd  %xmm2,%xmm0
movapd %xmm4,%xmm2
subsd  %xmm5,%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x8(%rcx),%xmm4
subsd  %xmm1,%xmm4
subsd  %xmm5,%xmm3
divsd  %xmm3,%xmm4
mulsd  %xmm2,%xmm4
addsd  %xmm1,%xmm4
movsd  %xmm4,0x40(%rsp)
call   1030 <ceil@plt>
movapd %xmm0,0x60(%rsp)
movsd  0x40(%rsp),%xmm0
call   1060 <floor@plt>
movapd 0x70(%rsp),%xmm2
movsd  0x30(%rsp),%xmm1
movapd 0x60(%rsp),%xmm3
unpcklpd %xmm0,%xmm3
cvttpd2dq %xmm3,%xmm0
cvtdq2pd %xmm0,%xmm0
movlpd %xmm0,0x28(%rsp)
movapd %xmm0,%xmm3
unpckhpd %xmm0,%xmm3
ucomisd %xmm0,%xmm3
jb     1a53 <triRenderALeft+0x913>
mov    %r12,%rax
mov    %r15,%r12
mov    %rax,%r15
movapd %xmm3,0x40(%rsp)
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
lea    0x90(%rsp),%rax
mov    %rax,0x10(%rsp)
mov    0x100(%rsp),%rax
mov    %rax,0x8(%rsp)
mov    %r15,(%rsp)
mov    %r13,%rdi
mov    %r14,%rsi
mov    0x58(%rsp),%rdx
mov    %rbx,%rcx
mov    %r12,%r8
mov    %rbp,%r9
xor    %eax,%eax
call   1040 <interpolating@plt>
movsd  0x20(%rsp),%xmm0
movsd  0x28(%rsp),%xmm1
movsd  0x90(%rsp),%xmm2
movsd  0x98(%rsp),%xmm3
movsd  0xa0(%rsp),%xmm4
mov    $0x5,%al
call   1050 <pixSetRGB@plt>
movapd 0x40(%rsp),%xmm3
movsd  0x28(%rsp),%xmm0
addsd  0x15d5(%rip),%xmm0
movsd  %xmm0,0x28(%rsp)
ucomisd %xmm0,%xmm3
jae    19b0 <triRenderALeft+0x870>
movsd  0x20(%rsp),%xmm2
mov    0x58(%rsp),%rax
movsd  (%rax),%xmm1
mov    %r15,%rax
mov    %r12,%r15
mov    %rax,%r12
addsd  0x15a5(%rip),%xmm2
movapd %xmm2,0x70(%rsp)
movsd  %xmm2,0x20(%rsp)
movsd  %xmm1,0x30(%rsp)
movapd %xmm1,%xmm0
call   1060 <floor@plt>
movapd 0x70(%rsp),%xmm4
cvttpd2dq %xmm0,%xmm0
cvtdq2pd %xmm0,%xmm0
ucomisd %xmm4,%xmm0
jb     1ec8 <triRenderALeft+0xd88>
mov    0x88(%rsp),%r14
movsd  (%r14),%xmm5
mov    0x80(%rsp),%rcx
movsd  (%rcx),%xmm3
movsd  0x30(%rsp),%xmm2
jmp    18f0 <triRenderALeft+0x7b0>
mov    %r12,%rbx
mov    0xa8(%rsp),%r12
movsd  0x30(%rsp),%xmm2
movsd  0x70(%rsp),%xmm3
movsd  0x40(%rsp),%xmm4
mov    %rbx,0xb0(%rsp)
nopw   0x0(%rax,%rax,1)
movapd %xmm5,0x30(%rsp)
movsd  %xmm3,0x70(%rsp)
movsd  0x8(%r14),%xmm1
mov    0x58(%rsp),%rax
movsd  0x8(%rax),%xmm0
subsd  %xmm1,%xmm0
subsd  %xmm4,%xmm2
divsd  %xmm2,%xmm0
movapd %xmm5,%xmm2
subsd  %xmm4,%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x8(%rbp),%xmm5
subsd  %xmm1,%xmm5
subsd  %xmm4,%xmm3
divsd  %xmm3,%xmm5
mulsd  %xmm2,%xmm5
addsd  %xmm1,%xmm5
movsd  %xmm5,0x40(%rsp)
call   1030 <ceil@plt>
movapd %xmm0,0x60(%rsp)
movsd  0x40(%rsp),%xmm0
call   1060 <floor@plt>
movapd 0x30(%rsp),%xmm2
movsd  0x70(%rsp),%xmm1
movapd 0x60(%rsp),%xmm3
unpcklpd %xmm0,%xmm3
cvttpd2dq %xmm3,%xmm0
cvtdq2pd %xmm0,%xmm0
movlpd %xmm0,0x28(%rsp)
movapd %xmm0,%xmm3
unpckhpd %xmm0,%xmm3
ucomisd %xmm0,%xmm3
jb     1c4c <triRenderALeft+0xb0c>
mov    %rbp,%rbx
mov    %r15,%r13
mov    %r12,%r15
mov    0x58(%rsp),%r12
lea    0x20(%rsp),%rbp
movapd %xmm3,0x40(%rsp)
nopl   0x0(%rax)
lea    0x90(%rsp),%rax
mov    %rax,0x10(%rsp)
mov    0x100(%rsp),%rax
mov    %rax,0x8(%rsp)
mov    0xb0(%rsp),%rax
mov    %rax,(%rsp)
mov    %rbp,%rdi
mov    %r14,%rsi
mov    %r12,%rdx
mov    %rbx,%rcx
mov    %r13,%r8
mov    %r15,%r9
xor    %eax,%eax
call   1040 <interpolating@plt>
movsd  0x20(%rsp),%xmm0
movsd  0x28(%rsp),%xmm1
movsd  0x90(%rsp),%xmm2
movsd  0x98(%rsp),%xmm3
movsd  0xa0(%rsp),%xmm4
mov    $0x5,%al
call   1050 <pixSetRGB@plt>
movapd 0x40(%rsp),%xmm3
movsd  0x28(%rsp),%xmm0
addsd  0x13df(%rip),%xmm0
movsd  %xmm0,0x28(%rsp)
ucomisd %xmm0,%xmm3
jae    1ba0 <triRenderALeft+0xa60>
movsd  0x20(%rsp),%xmm2
movsd  (%rbx),%xmm1
mov    %r15,%r12
mov    %r13,%r15
mov    %rbx,%rbp
mov    0xb0(%rsp),%rbx
addsd  0x13ac(%rip),%xmm2
movapd %xmm2,0x30(%rsp)
movsd  %xmm2,0x20(%rsp)
movsd  %xmm1,0x70(%rsp)
movapd %xmm1,%xmm0
call   1060 <floor@plt>
movapd 0x30(%rsp),%xmm5
cvttpd2dq %xmm0,%xmm1
cvtdq2pd %xmm1,%xmm1
ucomisd %xmm5,%xmm1
mov    0x58(%rsp),%rax
movsd  (%rax),%xmm2
jb     1e88 <triRenderALeft+0xd48>
movsd  (%r14),%xmm4
movsd  0x70(%rsp),%xmm3
jmp    1ae0 <triRenderALeft+0x9a0>
mov    0xa8(%rsp),%r12
lea    0x90(%rsp),%r13
movsd  0x30(%rsp),%xmm0
mov    %r15,0xc0(%rsp)
mov    0x58(%rsp),%rbx
jmp    1d10 <triRenderALeft+0xbd0>
cs nopw 0x0(%rax,%rax,1)
nop
movsd  %xmm0,0x70(%rsp)
addsd  0x1322(%rip),%xmm1
movapd %xmm1,0x30(%rsp)
movsd  %xmm1,0x20(%rsp)
call   1060 <floor@plt>
movapd 0x30(%rsp),%xmm5
cvttpd2dq %xmm0,%xmm0
cvtdq2pd %xmm0,%xmm0
ucomisd %xmm5,%xmm0
mov    0x58(%rsp),%rax
movsd  (%rax),%xmm0
jb     1610 <triRenderALeft+0x4d0>
movapd %xmm5,0x30(%rsp)
movsd  0x8(%rbp),%xmm1
mov    0x58(%rsp),%rax
movsd  0x8(%rax),%xmm2
subsd  %xmm1,%xmm2
movsd  0x70(%rsp),%xmm4
subsd  %xmm4,%xmm0
divsd  %xmm0,%xmm2
movapd %xmm5,%xmm0
subsd  %xmm4,%xmm0
movsd  %xmm4,0x70(%rsp)
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  (%r14),%xmm2
movsd  0x8(%r14),%xmm3
subsd  %xmm3,%xmm1
subsd  %xmm2,%xmm4
divsd  %xmm4,%xmm1
subsd  %xmm2,%xmm5
mulsd  %xmm1,%xmm5
addsd  %xmm3,%xmm5
movsd  %xmm5,0x40(%rsp)
call   1030 <ceil@plt>
movapd %xmm0,0x60(%rsp)
movsd  0x40(%rsp),%xmm0
call   1060 <floor@plt>
movapd 0x30(%rsp),%xmm1
movapd 0x60(%rsp),%xmm2
unpcklpd %xmm0,%xmm2
cvttpd2dq %xmm2,%xmm0
cvtdq2pd %xmm0,%xmm0
movlpd %xmm0,0x28(%rsp)
movapd %xmm0,%xmm2
unpckhpd %xmm0,%xmm2
ucomisd %xmm0,%xmm2
movsd  0x70(%rsp),%xmm0
jb     1cd0 <triRenderALeft+0xb90>
mov    %r12,%r15
mov    0xb0(%rsp),%r12
mov    0x100(%rsp),%r14
movapd %xmm2,0x40(%rsp)
nopl   0x0(%rax,%rax,1)
mov    %r13,0x10(%rsp)
mov    %r14,0x8(%rsp)
mov    %r12,(%rsp)
lea    0x20(%rsp),%rdi
mov    0x88(%rsp),%rsi
mov    %rbx,%rdx
mov    %rbp,%rcx
mov    0xc0(%rsp),%r8
mov    %r15,%r9
xor    %eax,%eax
call   1040 <interpolating@plt>
movsd  0x20(%rsp),%xmm0
movsd  0x28(%rsp),%xmm1
movsd  0x90(%rsp),%xmm2
movsd  0x98(%rsp),%xmm3
movsd  0xa0(%rsp),%xmm4
mov    $0x5,%al
call   1050 <pixSetRGB@plt>
movapd 0x40(%rsp),%xmm2
movsd  0x28(%rsp),%xmm0
addsd  0x11ab(%rip),%xmm0
movsd  %xmm0,0x28(%rsp)
ucomisd %xmm0,%xmm2
jae    1de0 <triRenderALeft+0xca0>
movsd  0x20(%rsp),%xmm1
movsd  0x0(%rbp),%xmm0
mov    %r15,%r12
mov    0xc0(%rsp),%r15
mov    0x88(%rsp),%r14
jmp    1cd0 <triRenderALeft+0xb90>
cvttsd2si %xmm0,%eax
mov    %rbx,%r12
add    $0x1,%eax
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x60(%rsp)
movsd  %xmm0,0x20(%rsp)
movsd  %xmm2,0x30(%rsp)
movapd %xmm2,%xmm0
call   1060 <floor@plt>
movsd  0x60(%rsp),%xmm7
cvttpd2dq %xmm0,%xmm0
cvtdq2pd %xmm0,%xmm0
ucomisd %xmm7,%xmm0
jae    1eda <triRenderALeft+0xd9a>
add    $0xc8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
movsd  0x30(%rsp),%xmm5
movsd  0x70(%rsp),%xmm6
mov    0x88(%rsp),%r14
mov    0x80(%rsp),%rbp
mov    0x58(%rsp),%rbx
nopl   0x0(%rax,%rax,1)
movsd  %xmm7,0x60(%rsp)
movsd  %xmm5,0x30(%rsp)
movsd  (%r14),%xmm1
movsd  0x8(%r14),%xmm2
mov    0x58(%rsp),%rax
movsd  0x8(%rax),%xmm3
movapd %xmm3,%xmm4
subsd  %xmm2,%xmm4
movapd %xmm5,%xmm0
subsd  %xmm1,%xmm0
divsd  %xmm0,%xmm4
movapd %xmm7,%xmm0
subsd  %xmm1,%xmm0
mulsd  %xmm4,%xmm0
addsd  %xmm2,%xmm0
movsd  0x8(%rbp),%xmm1
subsd  %xmm1,%xmm3
movapd %xmm5,%xmm2
subsd  %xmm6,%xmm2
divsd  %xmm2,%xmm3
subsd  %xmm6,%xmm7
mulsd  %xmm3,%xmm7
addsd  %xmm1,%xmm7
movsd  %xmm7,0x40(%rsp)
call   1030 <ceil@plt>
movapd %xmm0,0x70(%rsp)
movsd  0x40(%rsp),%xmm0
call   1060 <floor@plt>
movsd  0x60(%rsp),%xmm2
movsd  0x30(%rsp),%xmm1
movapd 0x70(%rsp),%xmm3
unpcklpd %xmm0,%xmm3
cvttpd2dq %xmm3,%xmm0
cvtdq2pd %xmm0,%xmm0
movlpd %xmm0,0x28(%rsp)
movapd %xmm0,%xmm3
unpckhpd %xmm0,%xmm3
ucomisd %xmm0,%xmm3
jb     207d <triRenderALeft+0xf3d>
mov    %r15,%r13
mov    0xa8(%rsp),%r15
mov    0x100(%rsp),%rbp
movapd %xmm3,0x40(%rsp)
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
lea    0x90(%rsp),%rax
mov    %rax,0x10(%rsp)
mov    %rbp,0x8(%rsp)
mov    %r12,(%rsp)
lea    0x20(%rsp),%rdi
mov    %r14,%rsi
mov    %rbx,%rdx
mov    0x80(%rsp),%rcx
mov    %r13,%r8
mov    %r15,%r9
xor    %eax,%eax
call   1040 <interpolating@plt>
movsd  0x20(%rsp),%xmm0
movsd  0x28(%rsp),%xmm1
movsd  0x90(%rsp),%xmm2
movsd  0x98(%rsp),%xmm3
movsd  0xa0(%rsp),%xmm4
mov    $0x5,%al
call   1050 <pixSetRGB@plt>
movapd 0x40(%rsp),%xmm3
movsd  0x28(%rsp),%xmm0
addsd  0xfa8(%rip),%xmm0
movsd  %xmm0,0x28(%rsp)
ucomisd %xmm0,%xmm3
jae    1fe0 <triRenderALeft+0xea0>
movsd  0x20(%rsp),%xmm2
movsd  (%rbx),%xmm1
mov    %r13,%r15
mov    0x80(%rsp),%rbp
addsd  0xf7b(%rip),%xmm2
movsd  %xmm2,0x60(%rsp)
movsd  %xmm2,0x20(%rsp)
movsd  %xmm1,0x30(%rsp)
movapd %xmm1,%xmm0
call   1060 <floor@plt>
movsd  0x60(%rsp),%xmm7
cvttpd2dq %xmm0,%xmm0
cvtdq2pd %xmm0,%xmm0
ucomisd %xmm7,%xmm0
jb     1ec8 <triRenderALeft+0xd88>
movsd  0x0(%rbp),%xmm6
movsd  0x30(%rsp),%xmm5
jmp    1f00 <triRenderALeft+0xdc0>

LLVM IR (-O0):
define void @triRenderALeft(double* %0, double* %1, double* %2, double* %3, double* %4, double* %5, double* %6) {
%8 = alloca double*
%9 = alloca double*
%10 = alloca double*
%11 = alloca double*
%12 = alloca double*
%13 = alloca double*
%14 = alloca double*
%15 = alloca [3 x double]
%16 = alloca [2 x double]
%17 = alloca double
%18 = alloca double
store double* %0, double** %8
store double* %1, double** %9
store double* %2, double** %10
store double* %3, double** %11
store double* %4, double** %12
store double* %5, double** %13
store double* %6, double** %14
%19 = load double*, double** %9
%20 = getelementptr inbounds double, double* %19, i64 0
%21 = load double, double* %20
%22 = load double*, double** %10
%23 = getelementptr inbounds double, double* %22, i64 0
%24 = load double, double* %23
%25 = fcmp ole double %21, %24
br i1 %25, label %26, label %459
26: ; preds = %7
%27 = load double*, double** %9
%28 = getelementptr inbounds double, double* %27, i64 0
%29 = load double, double* %28
%30 = load double*, double** %10
%31 = getelementptr inbounds double, double* %30, i64 0
%32 = load double, double* %31
%33 = fcmp oeq double %29, %32
br i1 %33, label %34, label %99
34: ; preds = %26
%35 = load double*, double** %8
%36 = getelementptr inbounds double, double* %35, i64 0
%37 = load double, double* %36
%38 = load double*, double** %10
%39 = getelementptr inbounds double, double* %38, i64 0
%40 = load double, double* %39
%41 = fcmp oeq double %37, %40
br i1 %41, label %42, label %99
42: ; preds = %34
%43 = load double*, double** %8
%44 = getelementptr inbounds double, double* %43, i64 1
%45 = load double, double* %44
%46 = load double*, double** %9
%47 = getelementptr inbounds double, double* %46, i64 1
%48 = load double, double* %47
%49 = call double @llvm.minnum.f64(double %45, double %48)
%50 = load double*, double** %8
%51 = getelementptr inbounds double, double* %50, i64 1
%52 = load double, double* %51
%53 = load double*, double** %10
%54 = getelementptr inbounds double, double* %53, i64 1
%55 = load double, double* %54
%56 = call double @llvm.minnum.f64(double %52, double %55)
%57 = call double @llvm.minnum.f64(double %49, double %56)
%58 = call double @llvm.ceil.f64(double %57)
%59 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 1
store double %58, double* %59
br label %60
60: ; preds = %94, %42
%61 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 1
%62 = load double, double* %61
%63 = load double*, double** %8
%64 = getelementptr inbounds double, double* %63, i64 1
%65 = load double, double* %64
%66 = load double*, double** %9
%67 = getelementptr inbounds double, double* %66, i64 1
%68 = load double, double* %67
%69 = call double @llvm.maxnum.f64(double %65, double %68)
%70 = load double*, double** %8
%71 = getelementptr inbounds double, double* %70, i64 1
%72 = load double, double* %71
%73 = load double*, double** %10
%74 = getelementptr inbounds double, double* %73, i64 1
%75 = load double, double* %74
%76 = call double @llvm.maxnum.f64(double %72, double %75)
%77 = call double @llvm.maxnum.f64(double %69, double %76)
%78 = call double @llvm.floor.f64(double %77)
%79 = fcmp ole double %62, %78
br i1 %79, label %80, label %98
80: ; preds = %60
%81 = load double*, double** %8
%82 = getelementptr inbounds double, double* %81, i64 0
%83 = load double, double* %82
%84 = call double @llvm.ceil.f64(double %83)
%85 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 1
%86 = load double, double* %85
%87 = getelementptr inbounds [3 x double], [3 x double]* %15, i64 0, i64 0
%88 = load double, double* %87
%89 = getelementptr inbounds [3 x double], [3 x double]* %15, i64 0, i64 1
%90 = load double, double* %89
%91 = getelementptr inbounds [3 x double], [3 x double]* %15, i64 0, i64 2
%92 = load double, double* %91
%93 = call i32 (double, double, double, double, double, ...) bitcast (i32 (...)* @pixSetRGB to i32 (double, double, double, double, double, ...)*)(double %84, double %86, double %88, double %90, double %92)
br label %94
94: ; preds = %80
%95 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 1
%96 = load double, double* %95
%97 = fadd double %96, 1.000000e+00
store double %97, double* %95
br label %60
98: ; preds = %60
br label %458
99: ; preds = %34, %26
%100 = load double*, double** %9
%101 = getelementptr inbounds double, double* %100, i64 0
%102 = load double, double* %101
%103 = load double*, double** %10
%104 = getelementptr inbounds double, double* %103, i64 0
%105 = load double, double* %104
%106 = fcmp oeq double %102, %105
br i1 %106, label %107, label %229
107: ; preds = %99
%108 = load double*, double** %8
%109 = getelementptr inbounds double, double* %108, i64 0
%110 = load double, double* %109
%111 = load double*, double** %10
%112 = getelementptr inbounds double, double* %111, i64 0
%113 = load double, double* %112
%114 = fcmp une double %110, %113
br i1 %114, label %115, label %229
115: ; preds = %107
%116 = load double*, double** %8
%117 = getelementptr inbounds double, double* %116, i64 0
%118 = load double, double* %117
%119 = call double @llvm.ceil.f64(double %118)
%120 = fptosi double %119 to i32
%121 = sitofp i32 %120 to double
%122 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 0
store double %121, double* %122
br label %123
123: ; preds = %224, %115
%124 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 0
%125 = load double, double* %124
%126 = load double*, double** %9
%127 = getelementptr inbounds double, double* %126, i64 0
%128 = load double, double* %127
%129 = call double @llvm.floor.f64(double %128)
%130 = fptosi double %129 to i32
%131 = sitofp i32 %130 to double
%132 = fcmp ole double %125, %131
br i1 %132, label %133, label %228
133: ; preds = %123
%134 = load double*, double** %8
%135 = getelementptr inbounds double, double* %134, i64 1
%136 = load double, double* %135
%137 = load double*, double** %9
%138 = getelementptr inbounds double, double* %137, i64 1
%139 = load double, double* %138
%140 = load double*, double** %8
%141 = getelementptr inbounds double, double* %140, i64 1
%142 = load double, double* %141
%143 = fsub double %139, %142
%144 = load double*, double** %9
%145 = getelementptr inbounds double, double* %144, i64 0
%146 = load double, double* %145
%147 = load double*, double** %8
%148 = getelementptr inbounds double, double* %147, i64 0
%149 = load double, double* %148
%150 = fsub double %146, %149
%151 = fdiv double %143, %150
%152 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 0
%153 = load double, double* %152
%154 = load double*, double** %8
%155 = getelementptr inbounds double, double* %154, i64 0
%156 = load double, double* %155
%157 = fsub double %153, %156
%158 = call double @llvm.fmuladd.f64(double %151, double %157, double %136)
store double %158, double* %17
%159 = load double*, double** %8
%160 = getelementptr inbounds double, double* %159, i64 1
%161 = load double, double* %160
%162 = load double*, double** %10
%163 = getelementptr inbounds double, double* %162, i64 1
%164 = load double, double* %163
%165 = load double*, double** %8
%166 = getelementptr inbounds double, double* %165, i64 1
%167 = load double, double* %166
%168 = fsub double %164, %167
%169 = load double*, double** %10
%170 = getelementptr inbounds double, double* %169, i64 0
%171 = load double, double* %170
%172 = load double*, double** %8
%173 = getelementptr inbounds double, double* %172, i64 0
%174 = load double, double* %173
%175 = fsub double %171, %174
%176 = fdiv double %168, %175
%177 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 0
%178 = load double, double* %177
%179 = load double*, double** %8
%180 = getelementptr inbounds double, double* %179, i64 0
%181 = load double, double* %180
%182 = fsub double %178, %181
%183 = call double @llvm.fmuladd.f64(double %176, double %182, double %161)
store double %183, double* %18
%184 = load double, double* %17
%185 = call double @llvm.ceil.f64(double %184)
%186 = fptosi double %185 to i32
%187 = sitofp i32 %186 to double
%188 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 1
store double %187, double* %188
br label %189
189: ; preds = %219, %133
%190 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 1
%191 = load double, double* %190
%192 = load double, double* %18
%193 = call double @llvm.floor.f64(double %192)
%194 = fptosi double %193 to i32
%195 = sitofp i32 %194 to double
%196 = fcmp ole double %191, %195
br i1 %196, label %197, label %223
197: ; preds = %189
%198 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 0
%199 = load double*, double** %8
%200 = load double*, double** %9
%201 = load double*, double** %10
%202 = load double*, double** %11
%203 = load double*, double** %12
%204 = load double*, double** %13
%205 = load double*, double** %14
%206 = getelementptr inbounds [3 x double], [3 x double]* %15, i64 0, i64 0
%207 = call i32 (double*, double*, double*, double*, double*, double*, double*, double*, double*, ...) bitcast (i32 (...)* @interpolating to i32 (double*, double*, double*, double*, double*, double*, double*, double*, double*, ...)*)(double* %198, double* %199, double* %200, double* %201, double* %202, double* %203, double* %204, double* %205, double* %206)
%208 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 0
%209 = load double, double* %208
%210 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 1
%211 = load double, double* %210
%212 = getelementptr inbounds [3 x double], [3 x double]* %15, i64 0, i64 0
%213 = load double, double* %212
%214 = getelementptr inbounds [3 x double], [3 x double]* %15, i64 0, i64 1
%215 = load double, double* %214
%216 = getelementptr inbounds [3 x double], [3 x double]* %15, i64 0, i64 2
%217 = load double, double* %216
%218 = call i32 (double, double, double, double, double, ...) bitcast (i32 (...)* @pixSetRGB to i32 (double, double, double, double, double, ...)*)(double %209, double %211, double %213, double %215, double %217)
br label %219
219: ; preds = %197
%220 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 1
%221 = load double, double* %220
%222 = fadd double %221, 1.000000e+00
store double %222, double* %220
br label %189
223: ; preds = %189
br label %224
224: ; preds = %223
%225 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 0
%226 = load double, double* %225
%227 = fadd double %226, 1.000000e+00
store double %227, double* %225
br label %123
228: ; preds = %123
br label %457
229: ; preds = %107, %99
%230 = load double*, double** %9
%231 = getelementptr inbounds double, double* %230, i64 0
%232 = load double, double* %231
%233 = call double @llvm.ceil.f64(double %232)
%234 = fptosi double %233 to i32
%235 = sitofp i32 %234 to double
%236 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 0
store double %235, double* %236
br label %237
237: ; preds = %338, %229
%238 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 0
%239 = load double, double* %238
%240 = load double*, double** %10
%241 = getelementptr inbounds double, double* %240, i64 0
%242 = load double, double* %241
%243 = call double @llvm.floor.f64(double %242)
%244 = fptosi double %243 to i32
%245 = sitofp i32 %244 to double
%246 = fcmp ole double %239, %245
br i1 %246, label %247, label %342
247: ; preds = %237
%248 = load double*, double** %10
%249 = getelementptr inbounds double, double* %248, i64 1
%250 = load double, double* %249
%251 = load double*, double** %9
%252 = getelementptr inbounds double, double* %251, i64 1
%253 = load double, double* %252
%254 = load double*, double** %10
%255 = getelementptr inbounds double, double* %254, i64 1
%256 = load double, double* %255
%257 = fsub double %253, %256
%258 = load double*, double** %9
%259 = getelementptr inbounds double, double* %258, i64 0
%260 = load double, double* %259
%261 = load double*, double** %10
%262 = getelementptr inbounds double, double* %261, i64 0
%263 = load double, double* %262
%264 = fsub double %260, %263
%265 = fdiv double %257, %264
%266 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 0
%267 = load double, double* %266
%268 = load double*, double** %10
%269 = getelementptr inbounds double, double* %268, i64 0
%270 = load double, double* %269
%271 = fsub double %267, %270
%272 = call double @llvm.fmuladd.f64(double %265, double %271, double %250)
store double %272, double* %17
%273 = load double*, double** %8
%274 = getelementptr inbounds double, double* %273, i64 1
%275 = load double, double* %274
%276 = load double*, double** %10
%277 = getelementptr inbounds double, double* %276, i64 1
%278 = load double, double* %277
%279 = load double*, double** %8
%280 = getelementptr inbounds double, double* %279, i64 1
%281 = load double, double* %280
%282 = fsub double %278, %281
%283 = load double*, double** %10
%284 = getelementptr inbounds double, double* %283, i64 0
%285 = load double, double* %284
%286 = load double*, double** %8
%287 = getelementptr inbounds double, double* %286, i64 0
%288 = load double, double* %287
%289 = fsub double %285, %288
%290 = fdiv double %282, %289
%291 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 0
%292 = load double, double* %291
%293 = load double*, double** %8
%294 = getelementptr inbounds double, double* %293, i64 0
%295 = load double, double* %294
%296 = fsub double %292, %295
%297 = call double @llvm.fmuladd.f64(double %290, double %296, double %275)
store double %297, double* %18
%298 = load double, double* %17
%299 = call double @llvm.ceil.f64(double %298)
%300 = fptosi double %299 to i32
%301 = sitofp i32 %300 to double
%302 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 1
store double %301, double* %302
br label %303
303: ; preds = %333, %247
%304 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 1
%305 = load double, double* %304
%306 = load double, double* %18
%307 = call double @llvm.floor.f64(double %306)
%308 = fptosi double %307 to i32
%309 = sitofp i32 %308 to double
%310 = fcmp ole double %305, %309
br i1 %310, label %311, label %337
311: ; preds = %303
%312 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 0
%313 = load double*, double** %8
%314 = load double*, double** %9
%315 = load double*, double** %10
%316 = load double*, double** %11
%317 = load double*, double** %12
%318 = load double*, double** %13
%319 = load double*, double** %14
%320 = getelementptr inbounds [3 x double], [3 x double]* %15, i64 0, i64 0
%321 = call i32 (double*, double*, double*, double*, double*, double*, double*, double*, double*, ...) bitcast (i32 (...)* @interpolating to i32 (double*, double*, double*, double*, double*, double*, double*, double*, double*, ...)*)(double* %312, double* %313, double* %314, double* %315, double* %316, double* %317, double* %318, double* %319, double* %320)
%322 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 0
%323 = load double, double* %322
%324 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 1
%325 = load double, double* %324
%326 = getelementptr inbounds [3 x double], [3 x double]* %15, i64 0, i64 0
%327 = load double, double* %326
%328 = getelementptr inbounds [3 x double], [3 x double]* %15, i64 0, i64 1
%329 = load double, double* %328
%330 = getelementptr inbounds [3 x double], [3 x double]* %15, i64 0, i64 2
%331 = load double, double* %330
%332 = call i32 (double, double, double, double, double, ...) bitcast (i32 (...)* @pixSetRGB to i32 (double, double, double, double, double, ...)*)(double %323, double %325, double %327, double %329, double %331)
br label %333
333: ; preds = %311
%334 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 1
%335 = load double, double* %334
%336 = fadd double %335, 1.000000e+00
store double %336, double* %334
br label %303
337: ; preds = %303
br label %338
338: ; preds = %337
%339 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 0
%340 = load double, double* %339
%341 = fadd double %340, 1.000000e+00
store double %341, double* %339
br label %237
342: ; preds = %237
%343 = load double*, double** %8
%344 = getelementptr inbounds double, double* %343, i64 0
%345 = load double, double* %344
%346 = call double @llvm.floor.f64(double %345)
%347 = fptosi double %346 to i32
%348 = add nsw i32 %347, 1
%349 = sitofp i32 %348 to double
%350 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 0
store double %349, double* %350
br label %351
351: ; preds = %452, %342
%352 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 0
%353 = load double, double* %352
%354 = load double*, double** %9
%355 = getelementptr inbounds double, double* %354, i64 0
%356 = load double, double* %355
%357 = call double @llvm.floor.f64(double %356)
%358 = fptosi double %357 to i32
%359 = sitofp i32 %358 to double
%360 = fcmp ole double %353, %359
br i1 %360, label %361, label %456
361: ; preds = %351
%362 = load double*, double** %8
%363 = getelementptr inbounds double, double* %362, i64 1
%364 = load double, double* %363
%365 = load double*, double** %9
%366 = getelementptr inbounds double, double* %365, i64 1
%367 = load double, double* %366
%368 = load double*, double** %8
%369 = getelementptr inbounds double, double* %368, i64 1
%370 = load double, double* %369
%371 = fsub double %367, %370
%372 = load double*, double** %9
%373 = getelementptr inbounds double, double* %372, i64 0
%374 = load double, double* %373
%375 = load double*, double** %8
%376 = getelementptr inbounds double, double* %375, i64 0
%377 = load double, double* %376
%378 = fsub double %374, %377
%379 = fdiv double %371, %378
%380 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 0
%381 = load double, double* %380
%382 = load double*, double** %8
%383 = getelementptr inbounds double, double* %382, i64 0
%384 = load double, double* %383
%385 = fsub double %381, %384
%386 = call double @llvm.fmuladd.f64(double %379, double %385, double %364)
store double %386, double* %17
%387 = load double*, double** %8
%388 = getelementptr inbounds double, double* %387, i64 1
%389 = load double, double* %388
%390 = load double*, double** %10
%391 = getelementptr inbounds double, double* %390, i64 1
%392 = load double, double* %391
%393 = load double*, double** %8
%394 = getelementptr inbounds double, double* %393, i64 1
%395 = load double, double* %394
%396 = fsub double %392, %395
%397 = load double*, double** %10
%398 = getelementptr inbounds double, double* %397, i64 0
%399 = load double, double* %398
%400 = load double*, double** %8
%401 = getelementptr inbounds double, double* %400, i64 0
%402 = load double, double* %401
%403 = fsub double %399, %402
%404 = fdiv double %396, %403
%405 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 0
%406 = load double, double* %405
%407 = load double*, double** %8
%408 = getelementptr inbounds double, double* %407, i64 0
%409 = load double, double* %408
%410 = fsub double %406, %409
%411 = call double @llvm.fmuladd.f64(double %404, double %410, double %389)
store double %411, double* %18
%412 = load double, double* %17
%413 = call double @llvm.ceil.f64(double %412)
%414 = fptosi double %413 to i32
%415 = sitofp i32 %414 to double
%416 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 1
store double %415, double* %416
br label %417
417: ; preds = %447, %361
%418 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 1
%419 = load double, double* %418
%420 = load double, double* %18
%421 = call double @llvm.floor.f64(double %420)
%422 = fptosi double %421 to i32
%423 = sitofp i32 %422 to double
%424 = fcmp ole double %419, %423
br i1 %424, label %425, label %451
425: ; preds = %417
%426 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 0
%427 = load double*, double** %8
%428 = load double*, double** %9
%429 = load double*, double** %10
%430 = load double*, double** %11
%431 = load double*, double** %12
%432 = load double*, double** %13
%433 = load double*, double** %14
%434 = getelementptr inbounds [3 x double], [3 x double]* %15, i64 0, i64 0
%435 = call i32 (double*, double*, double*, double*, double*, double*, double*, double*, double*, ...) bitcast (i32 (...)* @interpolating to i32 (double*, double*, double*, double*, double*, double*, double*, double*, double*, ...)*)(double* %426, double* %427, double* %428, double* %429, double* %430, double* %431, double* %432, double* %433, double* %434)
%436 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 0
%437 = load double, double* %436
%438 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 1
%439 = load double, double* %438
%440 = getelementptr inbounds [3 x double], [3 x double]* %15, i64 0, i64 0
%441 = load double, double* %440
%442 = getelementptr inbounds [3 x double], [3 x double]* %15, i64 0, i64 1
%443 = load double, double* %442
%444 = getelementptr inbounds [3 x double], [3 x double]* %15, i64 0, i64 2
%445 = load double, double* %444
%446 = call i32 (double, double, double, double, double, ...) bitcast (i32 (...)* @pixSetRGB to i32 (double, double, double, double, double, ...)*)(double %437, double %439, double %441, double %443, double %445)
br label %447
447: ; preds = %425
%448 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 1
%449 = load double, double* %448
%450 = fadd double %449, 1.000000e+00
store double %450, double* %448
br label %417
451: ; preds = %417
br label %452
452: ; preds = %451
%453 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 0
%454 = load double, double* %453
%455 = fadd double %454, 1.000000e+00
store double %455, double* %453
br label %351
456: ; preds = %351
br label %457
457: ; preds = %456, %228
br label %458
458: ; preds = %457, %98
br label %802
459: ; preds = %7
%460 = load double*, double** %8
%461 = getelementptr inbounds double, double* %460, i64 0
%462 = load double, double* %461
%463 = load double*, double** %10
%464 = getelementptr inbounds double, double* %463, i64 0
%465 = load double, double* %464
%466 = fcmp oeq double %462, %465
br i1 %466, label %467, label %573
467: ; preds = %459
%468 = load double*, double** %10
%469 = getelementptr inbounds double, double* %468, i64 0
%470 = load double, double* %469
%471 = call double @llvm.ceil.f64(double %470)
%472 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 0
store double %471, double* %472
br label %473
473: ; preds = %568, %467
%474 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 0
%475 = load double, double* %474
%476 = load double*, double** %9
%477 = getelementptr inbounds double, double* %476, i64 0
%478 = load double, double* %477
%479 = call double @llvm.floor.f64(double %478)
%480 = fcmp ole double %475, %479
br i1 %480, label %481, label %572
481: ; preds = %473
%482 = load double*, double** %8
%483 = getelementptr inbounds double, double* %482, i64 1
%484 = load double, double* %483
%485 = load double*, double** %9
%486 = getelementptr inbounds double, double* %485, i64 1
%487 = load double, double* %486
%488 = load double*, double** %8
%489 = getelementptr inbounds double, double* %488, i64 1
%490 = load double, double* %489
%491 = fsub double %487, %490
%492 = load double*, double** %9
%493 = getelementptr inbounds double, double* %492, i64 0
%494 = load double, double* %493
%495 = load double*, double** %8
%496 = getelementptr inbounds double, double* %495, i64 0
%497 = load double, double* %496
%498 = fsub double %494, %497
%499 = fdiv double %491, %498
%500 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 0
%501 = load double, double* %500
%502 = load double*, double** %8
%503 = getelementptr inbounds double, double* %502, i64 0
%504 = load double, double* %503
%505 = fsub double %501, %504
%506 = call double @llvm.fmuladd.f64(double %499, double %505, double %484)
store double %506, double* %17
%507 = load double*, double** %10
%508 = getelementptr inbounds double, double* %507, i64 1
%509 = load double, double* %508
%510 = load double*, double** %9
%511 = getelementptr inbounds double, double* %510, i64 1
%512 = load double, double* %511
%513 = load double*, double** %10
%514 = getelementptr inbounds double, double* %513, i64 1
%515 = load double, double* %514
%516 = fsub double %512, %515
%517 = load double*, double** %9
%518 = getelementptr inbounds double, double* %517, i64 0
%519 = load double, double* %518
%520 = load double*, double** %10
%521 = getelementptr inbounds double, double* %520, i64 0
%522 = load double, double* %521
%523 = fsub double %519, %522
%524 = fdiv double %516, %523
%525 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 0
%526 = load double, double* %525
%527 = load double*, double** %10
%528 = getelementptr inbounds double, double* %527, i64 0
%529 = load double, double* %528
%530 = fsub double %526, %529
%531 = call double @llvm.fmuladd.f64(double %524, double %530, double %509)
store double %531, double* %18
%532 = load double, double* %17
%533 = call double @llvm.ceil.f64(double %532)
%534 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 1
store double %533, double* %534
br label %535
535: ; preds = %563, %481
%536 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 1
%537 = load double, double* %536
%538 = load double, double* %18
%539 = call double @llvm.floor.f64(double %538)
%540 = fcmp ole double %537, %539
br i1 %540, label %541, label %567
541: ; preds = %535
%542 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 0
%543 = load double*, double** %8
%544 = load double*, double** %9
%545 = load double*, double** %10
%546 = load double*, double** %11
%547 = load double*, double** %12
%548 = load double*, double** %13
%549 = load double*, double** %14
%550 = getelementptr inbounds [3 x double], [3 x double]* %15, i64 0, i64 0
%551 = call i32 (double*, double*, double*, double*, double*, double*, double*, double*, double*, ...) bitcast (i32 (...)* @interpolating to i32 (double*, double*, double*, double*, double*, double*, double*, double*, double*, ...)*)(double* %542, double* %543, double* %544, double* %545, double* %546, double* %547, double* %548, double* %549, double* %550)
%552 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 0
%553 = load double, double* %552
%554 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 1
%555 = load double, double* %554
%556 = getelementptr inbounds [3 x double], [3 x double]* %15, i64 0, i64 0
%557 = load double, double* %556
%558 = getelementptr inbounds [3 x double], [3 x double]* %15, i64 0, i64 1
%559 = load double, double* %558
%560 = getelementptr inbounds [3 x double], [3 x double]* %15, i64 0, i64 2
%561 = load double, double* %560
%562 = call i32 (double, double, double, double, double, ...) bitcast (i32 (...)* @pixSetRGB to i32 (double, double, double, double, double, ...)*)(double %553, double %555, double %557, double %559, double %561)
br label %563
563: ; preds = %541
%564 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 1
%565 = load double, double* %564
%566 = fadd double %565, 1.000000e+00
store double %566, double* %564
br label %535
567: ; preds = %535
br label %568
568: ; preds = %567
%569 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 0
%570 = load double, double* %569
%571 = fadd double %570, 1.000000e+00
store double %571, double* %569
br label %473
572: ; preds = %473
br label %801
573: ; preds = %459
%574 = load double*, double** %8
%575 = getelementptr inbounds double, double* %574, i64 0
%576 = load double, double* %575
%577 = call double @llvm.ceil.f64(double %576)
%578 = fptosi double %577 to i32
%579 = sitofp i32 %578 to double
%580 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 0
store double %579, double* %580
br label %581
581: ; preds = %682, %573
%582 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 0
%583 = load double, double* %582
%584 = load double*, double** %10
%585 = getelementptr inbounds double, double* %584, i64 0
%586 = load double, double* %585
%587 = call double @llvm.floor.f64(double %586)
%588 = fptosi double %587 to i32
%589 = sitofp i32 %588 to double
%590 = fcmp ole double %583, %589
br i1 %590, label %591, label %686
591: ; preds = %581
%592 = load double*, double** %8
%593 = getelementptr inbounds double, double* %592, i64 1
%594 = load double, double* %593
%595 = load double*, double** %9
%596 = getelementptr inbounds double, double* %595, i64 1
%597 = load double, double* %596
%598 = load double*, double** %8
%599 = getelementptr inbounds double, double* %598, i64 1
%600 = load double, double* %599
%601 = fsub double %597, %600
%602 = load double*, double** %9
%603 = getelementptr inbounds double, double* %602, i64 0
%604 = load double, double* %603
%605 = load double*, double** %8
%606 = getelementptr inbounds double, double* %605, i64 0
%607 = load double, double* %606
%608 = fsub double %604, %607
%609 = fdiv double %601, %608
%610 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 0
%611 = load double, double* %610
%612 = load double*, double** %8
%613 = getelementptr inbounds double, double* %612, i64 0
%614 = load double, double* %613
%615 = fsub double %611, %614
%616 = call double @llvm.fmuladd.f64(double %609, double %615, double %594)
store double %616, double* %17
%617 = load double*, double** %8
%618 = getelementptr inbounds double, double* %617, i64 1
%619 = load double, double* %618
%620 = load double*, double** %10
%621 = getelementptr inbounds double, double* %620, i64 1
%622 = load double, double* %621
%623 = load double*, double** %8
%624 = getelementptr inbounds double, double* %623, i64 1
%625 = load double, double* %624
%626 = fsub double %622, %625
%627 = load double*, double** %10
%628 = getelementptr inbounds double, double* %627, i64 0
%629 = load double, double* %628
%630 = load double*, double** %8
%631 = getelementptr inbounds double, double* %630, i64 0
%632 = load double, double* %631
%633 = fsub double %629, %632
%634 = fdiv double %626, %633
%635 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 0
%636 = load double, double* %635
%637 = load double*, double** %8
%638 = getelementptr inbounds double, double* %637, i64 0
%639 = load double, double* %638
%640 = fsub double %636, %639
%641 = call double @llvm.fmuladd.f64(double %634, double %640, double %619)
store double %641, double* %18
%642 = load double, double* %17
%643 = call double @llvm.ceil.f64(double %642)
%644 = fptosi double %643 to i32
%645 = sitofp i32 %644 to double
%646 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 1
store double %645, double* %646
br label %647
647: ; preds = %677, %591
%648 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 1
%649 = load double, double* %648
%650 = load double, double* %18
%651 = call double @llvm.floor.f64(double %650)
%652 = fptosi double %651 to i32
%653 = sitofp i32 %652 to double
%654 = fcmp ole double %649, %653
br i1 %654, label %655, label %681
655: ; preds = %647
%656 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 0
%657 = load double*, double** %8
%658 = load double*, double** %9
%659 = load double*, double** %10
%660 = load double*, double** %11
%661 = load double*, double** %12
%662 = load double*, double** %13
%663 = load double*, double** %14
%664 = getelementptr inbounds [3 x double], [3 x double]* %15, i64 0, i64 0
%665 = call i32 (double*, double*, double*, double*, double*, double*, double*, double*, double*, ...) bitcast (i32 (...)* @interpolating to i32 (double*, double*, double*, double*, double*, double*, double*, double*, double*, ...)*)(double* %656, double* %657, double* %658, double* %659, double* %660, double* %661, double* %662, double* %663, double* %664)
%666 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 0
%667 = load double, double* %666
%668 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 1
%669 = load double, double* %668
%670 = getelementptr inbounds [3 x double], [3 x double]* %15, i64 0, i64 0
%671 = load double, double* %670
%672 = getelementptr inbounds [3 x double], [3 x double]* %15, i64 0, i64 1
%673 = load double, double* %672
%674 = getelementptr inbounds [3 x double], [3 x double]* %15, i64 0, i64 2
%675 = load double, double* %674
%676 = call i32 (double, double, double, double, double, ...) bitcast (i32 (...)* @pixSetRGB to i32 (double, double, double, double, double, ...)*)(double %667, double %669, double %671, double %673, double %675)
br label %677
677: ; preds = %655
%678 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 1
%679 = load double, double* %678
%680 = fadd double %679, 1.000000e+00
store double %680, double* %678
br label %647
681: ; preds = %647
br label %682
682: ; preds = %681
%683 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 0
%684 = load double, double* %683
%685 = fadd double %684, 1.000000e+00
store double %685, double* %683
br label %581
686: ; preds = %581
%687 = load double*, double** %10
%688 = getelementptr inbounds double, double* %687, i64 0
%689 = load double, double* %688
%690 = call double @llvm.floor.f64(double %689)
%691 = fptosi double %690 to i32
%692 = add nsw i32 %691, 1
%693 = sitofp i32 %692 to double
%694 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 0
store double %693, double* %694
br label %695
695: ; preds = %796, %686
%696 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 0
%697 = load double, double* %696
%698 = load double*, double** %9
%699 = getelementptr inbounds double, double* %698, i64 0
%700 = load double, double* %699
%701 = call double @llvm.floor.f64(double %700)
%702 = fptosi double %701 to i32
%703 = sitofp i32 %702 to double
%704 = fcmp ole double %697, %703
br i1 %704, label %705, label %800
705: ; preds = %695
%706 = load double*, double** %8
%707 = getelementptr inbounds double, double* %706, i64 1
%708 = load double, double* %707
%709 = load double*, double** %9
%710 = getelementptr inbounds double, double* %709, i64 1
%711 = load double, double* %710
%712 = load double*, double** %8
%713 = getelementptr inbounds double, double* %712, i64 1
%714 = load double, double* %713
%715 = fsub double %711, %714
%716 = load double*, double** %9
%717 = getelementptr inbounds double, double* %716, i64 0
%718 = load double, double* %717
%719 = load double*, double** %8
%720 = getelementptr inbounds double, double* %719, i64 0
%721 = load double, double* %720
%722 = fsub double %718, %721
%723 = fdiv double %715, %722
%724 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 0
%725 = load double, double* %724
%726 = load double*, double** %8
%727 = getelementptr inbounds double, double* %726, i64 0
%728 = load double, double* %727
%729 = fsub double %725, %728
%730 = call double @llvm.fmuladd.f64(double %723, double %729, double %708)
store double %730, double* %17
%731 = load double*, double** %10
%732 = getelementptr inbounds double, double* %731, i64 1
%733 = load double, double* %732
%734 = load double*, double** %9
%735 = getelementptr inbounds double, double* %734, i64 1
%736 = load double, double* %735
%737 = load double*, double** %10
%738 = getelementptr inbounds double, double* %737, i64 1
%739 = load double, double* %738
%740 = fsub double %736, %739
%741 = load double*, double** %9
%742 = getelementptr inbounds double, double* %741, i64 0
%743 = load double, double* %742
%744 = load double*, double** %10
%745 = getelementptr inbounds double, double* %744, i64 0
%746 = load double, double* %745
%747 = fsub double %743, %746
%748 = fdiv double %740, %747
%749 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 0
%750 = load double, double* %749
%751 = load double*, double** %10
%752 = getelementptr inbounds double, double* %751, i64 0
%753 = load double, double* %752
%754 = fsub double %750, %753
%755 = call double @llvm.fmuladd.f64(double %748, double %754, double %733)
store double %755, double* %18
%756 = load double, double* %17
%757 = call double @llvm.ceil.f64(double %756)
%758 = fptosi double %757 to i32
%759 = sitofp i32 %758 to double
%760 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 1
store double %759, double* %760
br label %761
761: ; preds = %791, %705
%762 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 1
%763 = load double, double* %762
%764 = load double, double* %18
%765 = call double @llvm.floor.f64(double %764)
%766 = fptosi double %765 to i32
%767 = sitofp i32 %766 to double
%768 = fcmp ole double %763, %767
br i1 %768, label %769, label %795
769: ; preds = %761
%770 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 0
%771 = load double*, double** %8
%772 = load double*, double** %9
%773 = load double*, double** %10
%774 = load double*, double** %11
%775 = load double*, double** %12
%776 = load double*, double** %13
%777 = load double*, double** %14
%778 = getelementptr inbounds [3 x double], [3 x double]* %15, i64 0, i64 0
%779 = call i32 (double*, double*, double*, double*, double*, double*, double*, double*, double*, ...) bitcast (i32 (...)* @interpolating to i32 (double*, double*, double*, double*, double*, double*, double*, double*, double*, ...)*)(double* %770, double* %771, double* %772, double* %773, double* %774, double* %775, double* %776, double* %777, double* %778)
%780 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 0
%781 = load double, double* %780
%782 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 1
%783 = load double, double* %782
%784 = getelementptr inbounds [3 x double], [3 x double]* %15, i64 0, i64 0
%785 = load double, double* %784
%786 = getelementptr inbounds [3 x double], [3 x double]* %15, i64 0, i64 1
%787 = load double, double* %786
%788 = getelementptr inbounds [3 x double], [3 x double]* %15, i64 0, i64 2
%789 = load double, double* %788
%790 = call i32 (double, double, double, double, double, ...) bitcast (i32 (...)* @pixSetRGB to i32 (double, double, double, double, double, ...)*)(double %781, double %783, double %785, double %787, double %789)
br label %791
791: ; preds = %769
%792 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 1
%793 = load double, double* %792
%794 = fadd double %793, 1.000000e+00
store double %794, double* %792
br label %761
795: ; preds = %761
br label %796
796: ; preds = %795
%797 = getelementptr inbounds [2 x double], [2 x double]* %16, i64 0, i64 0
%798 = load double, double* %797
%799 = fadd double %798, 1.000000e+00
store double %799, double* %797
br label %695
800: ; preds = %695
br label %801
801: ; preds = %800, %572
br label %802
802: ; preds = %801, %458
ret void
}

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