void make_cmaps(r, g, b, n, type) int n, *r, *g, *b, type;
{
  double x;
  int i, i1, i2, i3;
  double pii = 3.1415926;
  double start = .5, rots = -1.5, hue = 1.2, gamma = 1.;
  double angle, amp;
  double rr, gg, bb;
  switch (type) {
  case 0:
    for (i = 0; i < n; i++) {
      x = (double)i / ((double)n);
      r[i] = rfun(1 - x, 0) << 8;
      g[i] = gfun(1 - x, 0) << 8;
      b[i] = bfun(1 - x, 0) << 8;
    }
    break;
  case 1:
    for (i = 0; i < n; i++) {
      x = (double)i / ((double)n);
      r[i] = rfun(x, 1) << 8;
      g[i] = gfun(x, 1) << 8;
      b[i] = bfun(x, 1) << 8;
    }
    break;
  case 2:
    i1 = .375 * n;
    i2 = 2 * i1;
    i3 = n - i2;
    for (i = 0; i < i1; i++) {
      x = 256 * 255 * (double)i / ((double)i1);
      r[i] = (int)x;
      g[i] = 0;
      b[i] = 0;
      g[i + i1] = (int)x;
      b[i + i1] = 0;
    }
    for (i = i1; i < n; i++)
      r[i] = 256 * 255;
    for (i = i2; i < n; i++) {
      x = 256 * 255 * (double)(i - i2) / ((double)i3);
      g[i] = 256 * 255;
      b[i] = (int)x;
    }
    break;
  case 3:
    for (i = 0; i < n; i++) {
      x = (double)i / ((double)n);
      r[i] = (int)(256 * 255 * x);
      b[i] = (int)(256 * 255 * (1 - x));
      g[i] = 256 * 255;
    }
    break;
  case 4:
    for (i = 0; i < n; i++) {
      x = (double)i / ((double)n);
      r[i] = (int)(256 * 255 * x);
      b[i] = (int)(256 * 255 * (1 - x));
      g[i] = 0;
    }
    break;
  case 5:
    for (i = 0; i < n; i++) {
      r[i] = i * 256 * 255 / n;
      b[i] = i * 256 * 255 / n;
      g[i] = i * 256 * 255 / n;
    }
    break;
  case 6:
    for (i = 0; i < n; i++) {
      x = (double)i / ((double)n);
      angle = 2 * pii * (start / 3.0 + 1 + rots * x);
      x = pow(x, gamma);
      amp = hue * x * (1 - x) / 2.0;
      rr = x + amp * (-.14861 * cos(angle) + 1.78277 * sin(angle));
      gg = x + amp * (-.29227 * cos(angle) - .90649 * sin(angle));
      bb = x + amp * (1.97294 * cos(angle));
      if (rr < 0.0)
        rr = 0.0;
      if (rr > 1.0)
        rr = 1.0;
      if (gg < 0.0)
        gg = 0.0;
      if (gg > 1.0)
        gg = 1.0;
      if (bb < 0.0)
        bb = 0.0;
      if (bb > 1.0)
        bb = 1.0;
      r[i] = 256 * 255 * rr;
      b[i] = 256 * 255 * bb;
      g[i] = 256 * 255 * gg;
    }
    break;
  }
}


x86 assembly (clang, -O0):
<make_cmaps>:
push   %rbp
mov    %rsp,%rbp
sub    $0xd0,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %ecx,-0x1c(%rbp)
mov    %r8d,-0x20(%rbp)
movabs $0x400921fb4d12d84a,%rax
21 09 40
mov    %rax,-0x40(%rbp)
movabs $0x3fe0000000000000,%rax
mov    %rax,-0x48(%rbp)
movabs $0xbff8000000000000,%rax
mov    %rax,-0x50(%rbp)
movabs $0x3ff3333333333333,%rax
33 f3 3f
mov    %rax,-0x58(%rbp)
movabs $0x3ff0000000000000,%rax
mov    %rax,-0x60(%rbp)
mov    -0x20(%rbp),%eax
mov    %rax,-0x90(%rbp)
sub    $0x6,%rax
ja     1950 <make_cmaps+0x7f0>
mov    -0x90(%rbp),%rax
lea    0xe6a(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movl   $0x0,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jge    1295 <make_cmaps+0x135>
cvtsi2sdl -0x2c(%rbp),%xmm0
cvtsi2sdl -0x1c(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  0xe13(%rip),%xmm0
subsd  -0x28(%rbp),%xmm0
xor    %edi,%edi
mov    $0x1,%al
call   1030 <rfun@plt>
mov    %eax,%edx
shl    $0x8,%edx
mov    -0x8(%rbp),%rax
movslq -0x2c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
movsd  0xded(%rip),%xmm0
subsd  -0x28(%rbp),%xmm0
xor    %edi,%edi
mov    $0x1,%al
call   1070 <gfun@plt>
mov    %eax,%edx
shl    $0x8,%edx
mov    -0x10(%rbp),%rax
movslq -0x2c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
movsd  0xdc7(%rip),%xmm0
subsd  -0x28(%rbp),%xmm0
xor    %edi,%edi
mov    $0x1,%al
call   1050 <bfun@plt>
mov    %eax,%edx
shl    $0x8,%edx
mov    -0x18(%rbp),%rax
movslq -0x2c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    11f6 <make_cmaps+0x96>
jmp    1950 <make_cmaps+0x7f0>
movl   $0x0,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jge    1331 <make_cmaps+0x1d1>
cvtsi2sdl -0x2c(%rbp),%xmm0
cvtsi2sdl -0x1c(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  -0x28(%rbp),%xmm0
mov    $0x1,%edi
mov    $0x1,%al
call   1030 <rfun@plt>
mov    %eax,%edx
shl    $0x8,%edx
mov    -0x8(%rbp),%rax
movslq -0x2c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
movsd  -0x28(%rbp),%xmm0
mov    $0x1,%edi
mov    $0x1,%al
call   1070 <gfun@plt>
mov    %eax,%edx
shl    $0x8,%edx
mov    -0x10(%rbp),%rax
movslq -0x2c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
movsd  -0x28(%rbp),%xmm0
mov    $0x1,%edi
mov    $0x1,%al
call   1050 <bfun@plt>
mov    %eax,%edx
shl    $0x8,%edx
mov    -0x18(%rbp),%rax
movslq -0x2c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    12a1 <make_cmaps+0x141>
jmp    1950 <make_cmaps+0x7f0>
cvtsi2sdl -0x1c(%rbp),%xmm1
movsd  0xd05(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x30(%rbp)
mov    -0x30(%rbp),%eax
shl    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x1c(%rbp),%eax
sub    -0x34(%rbp),%eax
mov    %eax,-0x38(%rbp)
movl   $0x0,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
cmp    -0x30(%rbp),%eax
jge    13f7 <make_cmaps+0x297>
cvtsi2sdl -0x2c(%rbp),%xmm1
movsd  0xcc0(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvtsi2sdl -0x30(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x28(%rbp)
cvttsd2si -0x28(%rbp),%edx
mov    -0x8(%rbp),%rax
movslq -0x2c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x10(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movl   $0x0,(%rax,%rcx,4)
mov    -0x18(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movl   $0x0,(%rax,%rcx,4)
cvttsd2si -0x28(%rbp),%edx
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    -0x30(%rbp),%ecx
movslq %ecx,%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x18(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    -0x30(%rbp),%ecx
movslq %ecx,%rcx
movl   $0x0,(%rax,%rcx,4)
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    1367 <make_cmaps+0x207>
mov    -0x30(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jge    1426 <make_cmaps+0x2c6>
mov    -0x8(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movl   $0xff00,(%rax,%rcx,4)
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    13fd <make_cmaps+0x29d>
mov    -0x34(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jge    1489 <make_cmaps+0x329>
mov    -0x2c(%rbp),%eax
sub    -0x34(%rbp),%eax
cvtsi2sd %eax,%xmm1
movsd  0xbf6(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvtsi2sdl -0x38(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x28(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movl   $0xff00,(%rax,%rcx,4)
cvttsd2si -0x28(%rbp),%edx
mov    -0x18(%rbp),%rax
movslq -0x2c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    142c <make_cmaps+0x2cc>
jmp    1950 <make_cmaps+0x7f0>
movl   $0x0,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jge    1515 <make_cmaps+0x3b5>
cvtsi2sdl -0x2c(%rbp),%xmm0
cvtsi2sdl -0x1c(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  0xb84(%rip),%xmm0
mulsd  -0x28(%rbp),%xmm0
cvttsd2si %xmm0,%edx
mov    -0x8(%rbp),%rax
movslq -0x2c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
movsd  0xb58(%rip),%xmm1
subsd  -0x28(%rbp),%xmm1
movsd  0xb5b(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edx
mov    -0x18(%rbp),%rax
movslq -0x2c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x10(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movl   $0xff00,(%rax,%rcx,4)
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    1495 <make_cmaps+0x335>
jmp    1950 <make_cmaps+0x7f0>
movl   $0x0,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jge    15a1 <make_cmaps+0x441>
cvtsi2sdl -0x2c(%rbp),%xmm0
cvtsi2sdl -0x1c(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  0xaf8(%rip),%xmm0
mulsd  -0x28(%rbp),%xmm0
cvttsd2si %xmm0,%edx
mov    -0x8(%rbp),%rax
movslq -0x2c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
movsd  0xacc(%rip),%xmm1
subsd  -0x28(%rbp),%xmm1
movsd  0xacf(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edx
mov    -0x18(%rbp),%rax
movslq -0x2c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x10(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movl   $0x0,(%rax,%rcx,4)
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    1521 <make_cmaps+0x3c1>
jmp    1950 <make_cmaps+0x7f0>
movl   $0x0,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jge    161e <make_cmaps+0x4be>
mov    -0x2c(%rbp),%eax
shl    $0x8,%eax
imul   $0xff,%eax,%eax
cltd
idivl  -0x1c(%rbp)
mov    %eax,%edx
mov    -0x8(%rbp),%rax
movslq -0x2c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x2c(%rbp),%eax
shl    $0x8,%eax
imul   $0xff,%eax,%eax
cltd
idivl  -0x1c(%rbp)
mov    %eax,%edx
mov    -0x18(%rbp),%rax
movslq -0x2c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x2c(%rbp),%eax
shl    $0x8,%eax
imul   $0xff,%eax,%eax
cltd
idivl  -0x1c(%rbp)
mov    %eax,%edx
mov    -0x10(%rbp),%rax
movslq -0x2c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    15ad <make_cmaps+0x44d>
jmp    1950 <make_cmaps+0x7f0>
movl   $0x0,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jge    194b <make_cmaps+0x7eb>
cvtsi2sdl -0x2c(%rbp),%xmm0
cvtsi2sdl -0x1c(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  0x9d7(%rip),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  0x9d5(%rip),%xmm1
divsd  %xmm1,%xmm2
movsd  0x9c1(%rip),%xmm1
addsd  %xmm1,%xmm2
movsd  -0x50(%rbp),%xmm1
movsd  -0x28(%rbp),%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x28(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm1
call   1080 <pow@plt>
movsd  %xmm0,-0x28(%rbp)
movsd  -0x58(%rbp),%xmm0
mulsd  -0x28(%rbp),%xmm0
movsd  0x97c(%rip),%xmm1
subsd  -0x28(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x963(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
call   1060 <cos@plt>
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
call   1040 <sin@plt>
movsd  -0xd0(%rbp),%xmm2
ff
movsd  -0xc8(%rbp),%xmm1
ff
movaps %xmm0,%xmm4
movsd  -0xc0(%rbp),%xmm0
ff
movsd  0x8f9(%rip),%xmm3
mulsd  %xmm4,%xmm3
movsd  0x8e5(%rip),%xmm4
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
call   1060 <cos@plt>
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
call   1040 <sin@plt>
movsd  -0xb8(%rbp),%xmm2
ff
movsd  -0xb0(%rbp),%xmm1
ff
movaps %xmm0,%xmm4
movsd  -0xa8(%rbp),%xmm0
ff
movsd  0x86f(%rip),%xmm3
mulsd  %xmm4,%xmm3
movq   %xmm3,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm3
movsd  0x844(%rip),%xmm4
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
call   1060 <cos@plt>
movsd  -0xa0(%rbp),%xmm1
ff
movaps %xmm0,%xmm3
movsd  -0x98(%rbp),%xmm0
ff
movsd  0x7e8(%rip),%xmm2
mulsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
xorps  %xmm0,%xmm0
ucomisd -0x78(%rbp),%xmm0
jbe    1842 <make_cmaps+0x6e2>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x78(%rbp),%xmm0
movsd  0x7e1(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1866 <make_cmaps+0x706>
movsd  0x7cf(%rip),%xmm0
movsd  %xmm0,-0x78(%rbp)
xorps  %xmm0,%xmm0
ucomisd -0x80(%rbp),%xmm0
jbe    187c <make_cmaps+0x71c>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x80(%rbp),%xmm0
movsd  0x7a7(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    18a0 <make_cmaps+0x740>
movsd  0x795(%rip),%xmm0
movsd  %xmm0,-0x80(%rbp)
xorps  %xmm0,%xmm0
ucomisd -0x88(%rbp),%xmm0
ff
jbe    18bc <make_cmaps+0x75c>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
movsd  0x764(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    18e6 <make_cmaps+0x786>
movsd  0x752(%rip),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  0x752(%rip),%xmm0
mulsd  -0x78(%rbp),%xmm0
cvttsd2si %xmm0,%edx
mov    -0x8(%rbp),%rax
movslq -0x2c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
movsd  0x736(%rip),%xmm0
mulsd  -0x88(%rbp),%xmm0
ff
cvttsd2si %xmm0,%edx
mov    -0x18(%rbp),%rax
movslq -0x2c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
movsd  0x717(%rip),%xmm0
mulsd  -0x80(%rbp),%xmm0
cvttsd2si %xmm0,%edx
mov    -0x10(%rbp),%rax
movslq -0x2c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    162a <make_cmaps+0x4ca>
jmp    1950 <make_cmaps+0x7f0>
add    $0xd0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<make_cmaps>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x88,%rsp
cmp    $0x6,%r8d
ja     1da2 <make_cmaps+0xc52>
mov    %rdx,%r14
mov    %rsi,%r15
mov    %rdi,%r13
mov    %r8d,%eax
lea    0xf62(%rip),%rdx
movslq (%rdx,%rax,4),%rax
add    %rdx,%rax
jmp    *%rax
test   %ecx,%ecx
jle    1da2 <make_cmaps+0xc52>
cvtsi2sd %ecx,%xmm0
movsd  %xmm0,0x20(%rsp)
mov    %ecx,%r12d
xor    %ebx,%ebx
xchg   %ax,%ax
xorps  %xmm0,%xmm0
cvtsi2sd %ebx,%xmm0
divsd  0x20(%rsp),%xmm0
movsd  0xe6b(%rip),%xmm1
subsd  %xmm0,%xmm1
movsd  %xmm1,0x10(%rsp)
movapd %xmm1,%xmm0
xor    %edi,%edi
mov    $0x1,%al
call   1030 <rfun@plt>
shl    $0x8,%eax
mov    %eax,0x0(%r13,%rbx,4)
movsd  0x10(%rsp),%xmm0
xor    %edi,%edi
mov    $0x1,%al
call   1070 <gfun@plt>
shl    $0x8,%eax
mov    %eax,(%r15,%rbx,4)
movsd  0x10(%rsp),%xmm0
xor    %edi,%edi
mov    $0x1,%al
call   1050 <bfun@plt>
shl    $0x8,%eax
mov    %eax,(%r14,%rbx,4)
add    $0x1,%rbx
cmp    %rbx,%r12
jne    11a0 <make_cmaps+0x50>
jmp    1da2 <make_cmaps+0xc52>
test   %ecx,%ecx
jle    1da2 <make_cmaps+0xc52>
cvtsi2sd %ecx,%xmm0
movsd  %xmm0,0x20(%rsp)
mov    %ecx,%r12d
xor    %ebx,%ebx
cs nopw 0x0(%rax,%rax,1)
nop
xorps  %xmm0,%xmm0
cvtsi2sd %ebx,%xmm0
divsd  0x20(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
mov    $0x1,%edi
mov    $0x1,%al
call   1030 <rfun@plt>
shl    $0x8,%eax
mov    %eax,0x0(%r13,%rbx,4)
movsd  0x10(%rsp),%xmm0
mov    $0x1,%edi
mov    $0x1,%al
call   1070 <gfun@plt>
shl    $0x8,%eax
mov    %eax,(%r15,%rbx,4)
movsd  0x10(%rsp),%xmm0
mov    $0x1,%edi
mov    $0x1,%al
call   1050 <bfun@plt>
shl    $0x8,%eax
mov    %eax,(%r14,%rbx,4)
add    $0x1,%rbx
cmp    %rbx,%r12
jne    1230 <make_cmaps+0xe0>
jmp    1da2 <make_cmaps+0xc52>
cvtsi2sd %ecx,%xmm0
mulsd  0xd9d(%rip),%xmm0
cvttsd2si %xmm0,%r9d
test   %r9d,%r9d
jle    16f1 <make_cmaps+0x5a1>
xorps  %xmm0,%xmm0
cvtsi2sd %r9d,%xmm0
mov    %r9d,%r12d
cmp    $0x4,%r9d
jae    14e4 <make_cmaps+0x394>
xor    %r8d,%r8d
jmp    1678 <make_cmaps+0x528>
test   %ecx,%ecx
jle    1da2 <make_cmaps+0xc52>
cvtsi2sd %ecx,%xmm0
mov    %ecx,%eax
cmp    $0x4,%ecx
jae    1740 <make_cmaps+0x5f0>
xor    %ecx,%ecx
jmp    1859 <make_cmaps+0x709>
test   %ecx,%ecx
jle    1da2 <make_cmaps+0xc52>
cvtsi2sd %ecx,%xmm0
mov    %ecx,%eax
cmp    $0x4,%ecx
jae    18b2 <make_cmaps+0x762>
xor    %ecx,%ecx
jmp    19c9 <make_cmaps+0x879>
test   %ecx,%ecx
jle    1da2 <make_cmaps+0xc52>
mov    %ecx,%r8d
cmp    $0x1,%ecx
jne    1a22 <make_cmaps+0x8d2>
xor    %edi,%edi
jmp    1a69 <make_cmaps+0x919>
test   %ecx,%ecx
jle    1da2 <make_cmaps+0xc52>
cvtsi2sd %ecx,%xmm0
movsd  %xmm0,0x38(%rsp)
mov    %ecx,%r12d
xor    %ebx,%ebx
movsd  0xcdc(%rip),%xmm4
jmp    13be <make_cmaps+0x26e>
cs nopw 0x0(%rax,%rax,1)
movapd 0x50(%rsp),%xmm5
mulsd  %xmm0,%xmm5
addsd  0x20(%rsp),%xmm5
movsd  0xcb8(%rip),%xmm4
movapd %xmm4,%xmm0
minsd  %xmm2,%xmm0
movapd %xmm4,%xmm2
minsd  %xmm3,%xmm2
maxsd  %xmm5,%xmm1
movapd %xmm4,%xmm3
movsd  0xcb0(%rip),%xmm5
mulsd  %xmm5,%xmm0
cvttsd2si %xmm0,%eax
minsd  %xmm1,%xmm3
mulsd  %xmm5,%xmm3
cvttsd2si %xmm3,%ecx
mov    %eax,0x0(%r13,%rbx,4)
mulsd  %xmm5,%xmm2
cvttsd2si %xmm2,%eax
mov    %ecx,(%r14,%rbx,4)
mov    %eax,(%r15,%rbx,4)
add    $0x1,%rbx
cmp    %rbx,%r12
je     1da2 <make_cmaps+0xc52>
xorps  %xmm1,%xmm1
cvtsi2sd %ebx,%xmm1
divsd  0x38(%rsp),%xmm1
movapd %xmm1,0x20(%rsp)
movapd %xmm1,%xmm0
mulsd  0xc23(%rip),%xmm0
addsd  0xc23(%rip),%xmm0
mulsd  0xc23(%rip),%xmm0
movapd %xmm0,0x10(%rsp)
movapd %xmm1,%xmm2
mulsd  0xc19(%rip),%xmm2
subsd  %xmm1,%xmm4
mulsd  %xmm2,%xmm4
mulsd  0xc19(%rip),%xmm4
movapd %xmm4,0x50(%rsp)
call   1060 <cos@plt>
movapd %xmm0,0x40(%rsp)
movaps 0x10(%rsp),%xmm0
call   1040 <sin@plt>
movaps %xmm0,0x70(%rsp)
movaps 0x10(%rsp),%xmm0
call   1060 <cos@plt>
movaps %xmm0,0x60(%rsp)
movapd 0x10(%rsp),%xmm0
call   1040 <sin@plt>
unpcklpd 0x70(%rsp),%xmm0
mulpd  0xbf9(%rip),%xmm0
movapd 0x60(%rsp),%xmm1
unpcklpd 0x40(%rsp),%xmm1
mulpd  0xbf5(%rip),%xmm1
addpd  %xmm0,%xmm1
movapd 0x50(%rsp),%xmm0
unpcklpd %xmm0,%xmm0
mulpd  %xmm1,%xmm0
movapd 0x20(%rsp),%xmm1
unpcklpd %xmm1,%xmm1
addpd  %xmm0,%xmm1
movapd %xmm1,0x40(%rsp)
movapd 0x10(%rsp),%xmm0
call   1060 <cos@plt>
movapd 0x40(%rsp),%xmm4
mulsd  0xb86(%rip),%xmm0
movapd %xmm4,%xmm1
cmpltpd 0xc19(%rip),%xmm1
movmskpd %xmm1,%eax
xorpd  %xmm1,%xmm1
xorpd  %xmm2,%xmm2
test   $0x2,%al
jne    14cf <make_cmaps+0x37f>
movapd %xmm4,%xmm2
unpckhpd %xmm4,%xmm2
xorpd  %xmm3,%xmm3
test   $0x1,%al
jne    1350 <make_cmaps+0x200>
movapd %xmm4,%xmm3
jmp    1350 <make_cmaps+0x200>
lea    0x0(,%r12,4),%rsi
add    %r13,%rsi
lea    (%r15,%r12,4),%rdi
lea    (%r15,%r12,8),%rbp
lea    (%r14,%r12,4),%rbx
lea    (%r14,%r12,8),%rdx
cmp    %r13,%rbp
seta   0x10(%rsp)
cmp    %r13,%r15
setb   0x20(%rsp)
cmp    %r13,%rdi
seta   %al
cmp    %r15,%rsi
seta   0x50(%rsp)
cmp    %r13,%rdx
seta   %r11b
cmp    %r13,%r14
setb   0x40(%rsp)
cmp    %r13,%rbx
seta   %r10b
cmp    %r14,%rsi
seta   0x70(%rsp)
cmp    %rdx,%rdi
setb   %sil
cmp    %rbp,%rbx
setb   0x60(%rsp)
cmp    %r14,%r15
setb   0x38(%rsp)
cmp    %r14,%rbp
seta   0xf(%rsp)
cmp    %r15,%rdx
seta   %bpl
cmp    %r15,%r14
setb   0xe(%rsp)
cmp    %r15,%rbx
seta   0xd(%rsp)
cmp    %r14,%rdi
seta   0xc(%rsp)
xor    %r8d,%r8d
mov    0x20(%rsp),%dl
test   %dl,0x10(%rsp)
jne    1678 <make_cmaps+0x528>
and    0x50(%rsp),%al
jne    1678 <make_cmaps+0x528>
and    0x40(%rsp),%r11b
jne    1678 <make_cmaps+0x528>
and    0x70(%rsp),%r10b
jne    1678 <make_cmaps+0x528>
and    0x60(%rsp),%sil
jne    1678 <make_cmaps+0x528>
mov    0xf(%rsp),%al
and    %al,0x38(%rsp)
jne    1678 <make_cmaps+0x528>
and    0xe(%rsp),%bpl
jne    1678 <make_cmaps+0x528>
mov    0xc(%rsp),%al
and    %al,0xd(%rsp)
jne    1678 <make_cmaps+0x528>
mov    %r12d,%r8d
and    $0xfffffffc,%r8d
movapd %xmm0,%xmm1
unpcklpd %xmm0,%xmm1
lea    0x0(,%r12,4),%rax
and    $0xfffffffffffffff0,%rax
movdqa 0xa71(%rip),%xmm2
xor    %edx,%edx
movapd 0xa77(%rip),%xmm3
xorpd  %xmm4,%xmm4
movdqa 0xa8b(%rip),%xmm5
cs nopw 0x0(%rax,%rax,1)
nop
pshufd $0xee,%xmm2,%xmm6
cvtdq2pd %xmm6,%xmm6
cvtdq2pd %xmm2,%xmm7
mulpd  %xmm3,%xmm7
mulpd  %xmm3,%xmm6
divpd  %xmm1,%xmm7
cvttpd2dq %xmm7,%xmm7
divpd  %xmm1,%xmm6
cvttpd2dq %xmm6,%xmm6
unpcklpd %xmm6,%xmm7
movupd %xmm7,0x0(%r13,%rdx,1)
movupd %xmm4,(%r15,%rdx,1)
movupd %xmm4,(%r14,%rdx,1)
movupd %xmm7,(%rdi,%rdx,1)
movupd %xmm4,(%rbx,%rdx,1)
paddd  %xmm5,%xmm2
add    $0x10,%rdx
cmp    %rdx,%rax
jne    1620 <make_cmaps+0x4d0>
cmp    %r12,%r8
je     16f1 <make_cmaps+0x5a1>
lea    (%r8,%r12,1),%rax
lea    (%r15,%rax,4),%r10
lea    (%r14,%rax,4),%r11
lea    (%r14,%r8,4),%rdi
lea    (%r15,%r8,4),%rbx
lea    0x0(,%r8,4),%rbp
add    %r13,%rbp
mov    %r8,%rsi
sub    %r12,%rsi
xor    %eax,%eax
movsd  0x991(%rip),%xmm1
nopw   0x0(%rax,%rax,1)
lea    (%r8,%rax,1),%edx
xorps  %xmm2,%xmm2
cvtsi2sd %edx,%xmm2
mulsd  %xmm1,%xmm2
divsd  %xmm0,%xmm2
cvttsd2si %xmm2,%edx
mov    %edx,0x0(%rbp,%rax,4)
movl   $0x0,(%rbx,%rax,4)
movl   $0x0,(%rdi,%rax,4)
mov    %edx,(%r10,%rax,4)
movl   $0x0,(%r11,%rax,4)
add    $0x1,%rax
mov    %rsi,%rdx
add    %rax,%rdx
jne    16b0 <make_cmaps+0x560>
lea    (%r9,%r9,1),%r12d
cmp    %ecx,%r9d
jge    1b42 <make_cmaps+0x9f2>
movslq %r9d,%rdx
movslq %ecx,%rsi
mov    %rsi,%r9
sub    %rdx,%r9
cmp    $0x8,%r9
jb     1b30 <make_cmaps+0x9e0>
mov    %r9,%r8
and    $0xfffffffffffffff8,%r8
lea    -0x8(%r8),%rdi
mov    %rdi,%rax
shr    $0x3,%rax
add    $0x1,%rax
mov    %eax,%ebx
and    $0x3,%ebx
cmp    $0x18,%rdi
jae    1a8e <make_cmaps+0x93e>
xor    %edi,%edi
jmp    1aea <make_cmaps+0x99a>
lea    (%r14,%rax,4),%rcx
cmp    %r13,%rcx
seta   %r8b
lea    0x0(,%rax,4),%rsi
add    %r13,%rsi
cmp    %r14,%rsi
seta   %r9b
lea    (%r15,%rax,4),%rdi
cmp    %r13,%rdi
seta   %dl
cmp    %r15,%rsi
seta   %sil
cmp    %r14,%rdi
seta   %bl
cmp    %r15,%rcx
seta   %dil
xor    %ecx,%ecx
test   %r9b,%r8b
jne    1859 <make_cmaps+0x709>
and    %sil,%dl
jne    1859 <make_cmaps+0x709>
and    %dil,%bl
jne    1859 <make_cmaps+0x709>
mov    %eax,%ecx
and    $0xfffffffc,%ecx
movapd %xmm0,%xmm1
unpcklpd %xmm0,%xmm1
lea    0x0(,%rax,4),%rdx
and    $0xfffffffffffffff0,%rdx
movdqa 0x8b7(%rip),%xmm2
xor    %esi,%esi
movapd 0x8bd(%rip),%xmm3
movapd 0x8c4(%rip),%xmm10
movdqa 0x8db(%rip),%xmm8
movdqa 0x8c2(%rip),%xmm9
xchg   %ax,%ax
pshufd $0xee,%xmm2,%xmm7
cvtdq2pd %xmm7,%xmm7
cvtdq2pd %xmm2,%xmm5
divpd  %xmm1,%xmm5
divpd  %xmm1,%xmm7
movapd %xmm10,%xmm4
subpd  %xmm7,%xmm4
mulpd  %xmm3,%xmm7
movapd %xmm10,%xmm6
subpd  %xmm5,%xmm6
mulpd  %xmm3,%xmm5
cvttpd2dq %xmm5,%xmm5
cvttpd2dq %xmm7,%xmm7
unpcklpd %xmm7,%xmm5
movupd %xmm5,0x0(%r13,%rsi,1)
mulpd  %xmm3,%xmm4
mulpd  %xmm3,%xmm6
cvttpd2dq %xmm6,%xmm5
cvttpd2dq %xmm4,%xmm4
unpcklpd %xmm4,%xmm5
movupd %xmm5,(%r14,%rsi,1)
movdqu %xmm8,(%r15,%rsi,1)
paddd  %xmm9,%xmm2
add    $0x10,%rsi
cmp    %rsi,%rdx
jne    17e0 <make_cmaps+0x690>
cmp    %rax,%rcx
je     1da2 <make_cmaps+0xc52>
movsd  0x7d7(%rip),%xmm1
movsd  0x7b7(%rip),%xmm2
nopl   0x0(%rax)
xorps  %xmm3,%xmm3
cvtsi2sd %ecx,%xmm3
divsd  %xmm0,%xmm3
movapd %xmm2,%xmm4
subsd  %xmm3,%xmm4
mulsd  %xmm1,%xmm3
cvttsd2si %xmm3,%edx
mov    %edx,0x0(%r13,%rcx,4)
mulsd  %xmm1,%xmm4
cvttsd2si %xmm4,%edx
mov    %edx,(%r14,%rcx,4)
movl   $0xff00,(%r15,%rcx,4)
add    $0x1,%rcx
cmp    %rcx,%rax
jne    1870 <make_cmaps+0x720>
jmp    1da2 <make_cmaps+0xc52>
lea    (%r14,%rax,4),%rcx
cmp    %r13,%rcx
seta   %r8b
lea    0x0(,%rax,4),%rsi
add    %r13,%rsi
cmp    %r14,%rsi
seta   %r9b
lea    (%r15,%rax,4),%rdi
cmp    %r13,%rdi
seta   %dl
cmp    %r15,%rsi
seta   %sil
cmp    %r14,%rdi
seta   %bl
cmp    %r15,%rcx
seta   %dil
xor    %ecx,%ecx
test   %r9b,%r8b
jne    19c9 <make_cmaps+0x879>
and    %sil,%dl
jne    19c9 <make_cmaps+0x879>
and    %dil,%bl
jne    19c9 <make_cmaps+0x879>
mov    %eax,%ecx
and    $0xfffffffc,%ecx
movapd %xmm0,%xmm1
unpcklpd %xmm0,%xmm1
lea    0x0(,%rax,4),%rdx
and    $0xfffffffffffffff0,%rdx
movdqa 0x745(%rip),%xmm2
xor    %esi,%esi
movapd 0x74b(%rip),%xmm3
movapd 0x752(%rip),%xmm10
pxor   %xmm8,%xmm8
movdqa 0x754(%rip),%xmm9
nopl   0x0(%rax)
pshufd $0xee,%xmm2,%xmm7
cvtdq2pd %xmm7,%xmm7
cvtdq2pd %xmm2,%xmm5
divpd  %xmm1,%xmm5
divpd  %xmm1,%xmm7
movapd %xmm10,%xmm4
subpd  %xmm7,%xmm4
mulpd  %xmm3,%xmm7
movapd %xmm10,%xmm6
subpd  %xmm5,%xmm6
mulpd  %xmm3,%xmm5
cvttpd2dq %xmm5,%xmm5
cvttpd2dq %xmm7,%xmm7
unpcklpd %xmm7,%xmm5
movupd %xmm5,0x0(%r13,%rsi,1)
mulpd  %xmm3,%xmm4
mulpd  %xmm3,%xmm6
cvttpd2dq %xmm6,%xmm5
cvttpd2dq %xmm4,%xmm4
unpcklpd %xmm4,%xmm5
movupd %xmm5,(%r14,%rsi,1)
movdqu %xmm8,(%r15,%rsi,1)
paddd  %xmm9,%xmm2
add    $0x10,%rsi
cmp    %rsi,%rdx
jne    1950 <make_cmaps+0x800>
cmp    %rax,%rcx
je     1da2 <make_cmaps+0xc52>
movsd  0x667(%rip),%xmm1
movsd  0x647(%rip),%xmm2
nopl   0x0(%rax)
xorps  %xmm3,%xmm3
cvtsi2sd %ecx,%xmm3
divsd  %xmm0,%xmm3
movapd %xmm2,%xmm4
subsd  %xmm3,%xmm4
mulsd  %xmm1,%xmm3
cvttsd2si %xmm3,%edx
mov    %edx,0x0(%r13,%rcx,4)
mulsd  %xmm1,%xmm4
cvttsd2si %xmm4,%edx
mov    %edx,(%r14,%rcx,4)
movl   $0x0,(%r15,%rcx,4)
add    $0x1,%rcx
cmp    %rcx,%rax
jne    19e0 <make_cmaps+0x890>
jmp    1da2 <make_cmaps+0xc52>
mov    %r8d,%ebx
and    $0xfffffffe,%ebx
mov    $0xff00,%esi
xor    %edi,%edi
nop
lea    -0xff00(%rsi),%eax
cltd
idiv   %ecx
mov    %eax,0x0(%r13,%rdi,4)
mov    %eax,(%r14,%rdi,4)
mov    %eax,(%r15,%rdi,4)
mov    %esi,%eax
cltd
idiv   %ecx
mov    %eax,0x4(%r13,%rdi,4)
mov    %eax,0x4(%r14,%rdi,4)
mov    %eax,0x4(%r15,%rdi,4)
add    $0x2,%rdi
add    $0x1fe00,%esi
cmp    %rdi,%rbx
jne    1a30 <make_cmaps+0x8e0>
test   $0x1,%r8b
je     1da2 <make_cmaps+0xc52>
imul   $0xff00,%edi,%eax
cltd
idiv   %ecx
mov    %eax,0x0(%r13,%rdi,4)
mov    %eax,(%r14,%rdi,4)
mov    %eax,(%r15,%rdi,4)
jmp    1da2 <make_cmaps+0xc52>
and    $0xfffffffffffffffc,%rax
lea    0x70(,%rdx,4),%rbp
add    %r13,%rbp
xor    %edi,%edi
movapd 0x609(%rip),%xmm0
nopw   0x0(%rax,%rax,1)
movupd %xmm0,-0x70(%rbp,%rdi,4)
movupd %xmm0,-0x60(%rbp,%rdi,4)
movupd %xmm0,-0x50(%rbp,%rdi,4)
movupd %xmm0,-0x40(%rbp,%rdi,4)
movupd %xmm0,-0x30(%rbp,%rdi,4)
movupd %xmm0,-0x20(%rbp,%rdi,4)
movupd %xmm0,-0x10(%rbp,%rdi,4)
movupd %xmm0,0x0(%rbp,%rdi,4)
add    $0x20,%rdi
add    $0xfffffffffffffffc,%rax
jne    1ab0 <make_cmaps+0x960>
test   %rbx,%rbx
je     1b24 <make_cmaps+0x9d4>
add    %rdx,%rdi
lea    0x10(,%rdi,4),%rax
add    %r13,%rax
shl    $0x5,%rbx
xor    %edi,%edi
movapd 0x5a5(%rip),%xmm0
nopl   0x0(%rax,%rax,1)
movupd %xmm0,-0x10(%rax,%rdi,1)
movupd %xmm0,(%rax,%rdi,1)
add    $0x20,%rdi
cmp    %rdi,%rbx
jne    1b10 <make_cmaps+0x9c0>
cmp    %r8,%r9
je     1b42 <make_cmaps+0x9f2>
add    %r8,%rdx
nopl   0x0(%rax)
movl   $0xff00,0x0(%r13,%rdx,4)
add    $0x1,%rdx
cmp    %rdx,%rsi
jne    1b30 <make_cmaps+0x9e0>
cmp    %ecx,%r12d
jge    1da2 <make_cmaps+0xc52>
mov    %ecx,%eax
sub    %r12d,%eax
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movslq %r12d,%rdx
movslq %ecx,%r11
mov    %r11,%r10
sub    %rdx,%r10
cmp    $0x4,%r10
jb     1cfa <make_cmaps+0xbaa>
lea    (%r15,%rdx,4),%rax
lea    (%r14,%r11,4),%rsi
cmp    %rsi,%rax
jae    1b8b <make_cmaps+0xa3b>
lea    (%r15,%r11,4),%rax
lea    (%r14,%rdx,4),%rsi
cmp    %rax,%rsi
jb     1cfa <make_cmaps+0xbaa>
mov    %r10,%r8
and    $0xfffffffffffffffc,%r8
movd   %r12d,%xmm1
pshufd $0x0,%xmm1,%xmm10
movdqa 0x4cb(%rip),%xmm6
paddd  %xmm10,%xmm6
movapd %xmm0,%xmm1
unpcklpd %xmm0,%xmm1
lea    -0x4(%r8),%rax
mov    %rax,%r9
shr    $0x2,%r9
add    $0x1,%r9
test   %rax,%rax
je     1c9b <make_cmaps+0xb4b>
mov    %r9,%rdi
and    $0xfffffffffffffffe,%rdi
lea    (%r14,%rdx,4),%rsi
add    $0x10,%rsi
lea    (%r15,%rdx,4),%rax
add    $0x10,%rax
xor    %ebx,%ebx
movapd 0x495(%rip),%xmm4
movdqa 0x4bd(%rip),%xmm5
movdqa 0x4a4(%rip),%xmm8
movdqa 0x4bb(%rip),%xmm9
cs nopw 0x0(%rax,%rax,1)
nop
movdqa %xmm6,%xmm2
psubd  %xmm10,%xmm2
pshufd $0xee,%xmm2,%xmm7
cvtdq2pd %xmm7,%xmm7
cvtdq2pd %xmm2,%xmm3
mulpd  %xmm4,%xmm3
mulpd  %xmm4,%xmm7
divpd  %xmm1,%xmm7
divpd  %xmm1,%xmm3
movdqu %xmm5,-0x10(%rax,%rbx,4)
cvttpd2dq %xmm3,%xmm3
cvttpd2dq %xmm7,%xmm7
unpcklpd %xmm7,%xmm3
movupd %xmm3,-0x10(%rsi,%rbx,4)
paddd  %xmm8,%xmm2
pshufd $0xee,%xmm2,%xmm3
cvtdq2pd %xmm3,%xmm3
cvtdq2pd %xmm2,%xmm2
mulpd  %xmm4,%xmm2
mulpd  %xmm4,%xmm3
divpd  %xmm1,%xmm3
divpd  %xmm1,%xmm2
cvttpd2dq %xmm2,%xmm2
movdqu %xmm5,(%rax,%rbx,4)
cvttpd2dq %xmm3,%xmm3
unpcklpd %xmm3,%xmm2
movupd %xmm2,(%rsi,%rbx,4)
add    $0x8,%rbx
paddd  %xmm9,%xmm6
add    $0xfffffffffffffffe,%rdi
jne    1c10 <make_cmaps+0xac0>
jmp    1c9d <make_cmaps+0xb4d>
xor    %ebx,%ebx
test   $0x1,%r9b
je     1cee <make_cmaps+0xb9e>
psubd  %xmm10,%xmm6
pshufd $0xee,%xmm6,%xmm2
cvtdq2pd %xmm2,%xmm2
add    %rdx,%rbx
cvtdq2pd %xmm6,%xmm3
movapd 0x3c0(%rip),%xmm4
mulpd  %xmm4,%xmm3
mulpd  %xmm4,%xmm2
divpd  %xmm1,%xmm2
divpd  %xmm1,%xmm3
movaps 0x3d9(%rip),%xmm1
movups %xmm1,(%r15,%rbx,4)
cvttpd2dq %xmm3,%xmm1
cvttpd2dq %xmm2,%xmm2
unpcklpd %xmm2,%xmm1
movupd %xmm1,(%r14,%rbx,4)
cmp    %r8,%r10
je     1da2 <make_cmaps+0xc52>
add    %r8,%rdx
sub    %edx,%ecx
mov    %rdx,%rax
not    %rax
test   $0x1,%cl
je     1d33 <make_cmaps+0xbe3>
mov    %edx,%ecx
sub    %r12d,%ecx
xorps  %xmm1,%xmm1
cvtsi2sd %ecx,%xmm1
mulsd  0x31d(%rip),%xmm1
divsd  %xmm0,%xmm1
movl   $0xff00,(%r15,%rdx,4)
cvttsd2si %xmm1,%ecx
mov    %ecx,(%r14,%rdx,4)
add    $0x1,%rdx
add    %r11,%rax
je     1da2 <make_cmaps+0xc52>
neg    %r12d
movsd  0x2f5(%rip),%xmm1
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
lea    (%r12,%rdx,1),%eax
xorps  %xmm2,%xmm2
cvtsi2sd %eax,%xmm2
mulsd  %xmm1,%xmm2
divsd  %xmm0,%xmm2
movl   $0xff00,(%r15,%rdx,4)
cvttsd2si %xmm2,%eax
mov    %eax,(%r14,%rdx,4)
lea    0x1(%r12,%rdx,1),%eax
xorps  %xmm2,%xmm2
cvtsi2sd %eax,%xmm2
mulsd  %xmm1,%xmm2
divsd  %xmm0,%xmm2
cvttsd2si %xmm2,%eax
movl   $0xff00,0x4(%r15,%rdx,4)
mov    %eax,0x4(%r14,%rdx,4)
add    $0x2,%rdx
cmp    %rdx,%r11
jne    1d50 <make_cmaps+0xc00>
add    $0x88,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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