#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ printf(char *, ...);
double sqrt(double);
int main() {
  int divtab[256];
  double e0, e1, e2;
  double d0, d1, d2;
  int m1, m2, rf, p0, p1, p2, p3, p4;
  int i0, i1, i2, i3;
  int j0, j1, j2, j3, j4, j5, j6, j7;
  int i, j, k, n;
  e0 = 0;
  e1 = 0;
  e2 = 0;
  for (i = 0; i < 256; i++) {
    rf = 0x800000 / (1.0 + (i / 256.0));
    p0 = (rf + 127) >> 8;
    p0 = rf >> 8;
    p0 &= 0xFFFC;
    divtab[i] = p0;
  }
  for (i = 0; i < 64; i++) {
    for (j = 0; j < 4; j++) {
      printf("16'h%04X, ", divtab[i * 4 + j]);
    }
    printf("\n");
  }
  n = 16;
  for (i = 0; i < (1 << n); i++) {
    m1 = i << (23 - n);
    rf = 0x800000 / (1.0 + (i / ((1 << n) * 1.0)));
    m2 = (m1 >> 12);
    m2 = m2 * m2;
    p0 = 0x800000 - m1 + (m1 >> 1) - (m1 >> 2) + (m1 >> 3);
    p1 = 0x800000 - (m1 >> 1);
    p2 = 0x800000 - (m1 >> 1) - (m1 >> 4) - (m1 >> 6);
    p2 = 0x800000 - (m1 >> 1) - (m1 >> 2) - (m1 >> 3) + (m2 >> 1) + (m2 >> 2);
    i0 = (m1 >> (23 - 8));
    if (i0 < 0)
      i0 = 0;
    if (i0 > 255)
      i0 = 255;
    i1 = i0 - 1;
    if (i1 < 0)
      i1 = 0;
    if (i1 > 255)
      i1 = 255;
    j4 = divtab[i0];
    j5 = divtab[i1];
    j0 = j5 - j4;
    p1 = divtab[i0] << 8;
    j6 = j4 << 8;
    j7 = j5 << 8;
    i2 = (m1 >> (23 - 16)) & 255;
    j2 = divtab[i2];
    j3 = (m1 & 32767);
    j3 = j3 - (j3 >> 5) + (j3 >> 6);
    j1 = j3 >> 1;
    if ((p1 & 0xF00000) == 0x800000)
      j1 = j1 << 1;
    if ((p1 & 0xF00000) == 0x700000)
      j1 = j1 << 1;
    if ((p1 & 0xF00000) == 0x400000)
      j1 = j1 >> 1;
    p1 -= j1;
    switch ((rf >> 20) & 15) {
    case 8:
      p0 = 0x800000 - (m1 >> 1) - (m1 >> 2) - (m1 >> 3) - (m2 >> 1) + (m2 >> 4);
      break;
    case 7:
      p0 = 0x800000 - (m1 >> 1) - (m1 >> 2) - (m1 >> 3) - (m2 >> 1) + (m2 >> 4);
      break;
    case 6:
      p0 = 0x800000 - (m1 >> 1) - (m1 >> 2) - (m1 >> 3) + (m2 >> 1) + (m2 >> 2);
      break;
    case 5:
      p0 = 0x800000 - (m1 >> 1) - (m1 >> 2) - (m1 >> 3) + (m2 >> 1) + (m2 >> 2);
      break;
    case 4:
      p0 = 0x800000 - (m1 >> 1) - (m1 >> 2) - (m1 >> 3) + (m2 >> 1) + (m2 >> 2);
      break;
    }
    d0 = (p0 - rf) / 8388608.0;
    d1 = (p1 - rf) / 8388608.0;
    d2 = (p2 - rf) / 8388608.0;
    e0 += d0 * d0;
    e1 += d1 * d1;
    e2 += d2 * d2;
  }
  printf("e0=%f e1=%f e2=%f\n", sqrt(e0 / (1 << n)), sqrt(e1 / (1 << n)),
         sqrt(e2 / (1 << n)));
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x4c0,%rsp
movl   $0x0,-0x4(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x418(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x420(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x428(%rbp)
ff
movl   $0x0,-0x494(%rbp)
cmpl   $0x100,-0x494(%rbp)
jge    11fd <main+0xdd>
cvtsi2sdl -0x494(%rbp),%xmm0
ff
movsd  0xe93(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  0xe7f(%rip),%xmm1
addsd  %xmm0,%xmm1
movsd  0xe6b(%rip),%xmm0
divsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x44c(%rbp)
mov    -0x44c(%rbp),%eax
add    $0x7f,%eax
sar    $0x8,%eax
mov    %eax,-0x450(%rbp)
mov    -0x44c(%rbp),%eax
sar    $0x8,%eax
mov    %eax,-0x450(%rbp)
mov    -0x450(%rbp),%eax
and    $0xfffc,%eax
mov    %eax,-0x450(%rbp)
mov    -0x450(%rbp),%ecx
movslq -0x494(%rbp),%rax
mov    %ecx,-0x410(%rbp,%rax,4)
mov    -0x494(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x494(%rbp)
jmp    115d <main+0x3d>
movl   $0x0,-0x494(%rbp)
cmpl   $0x40,-0x494(%rbp)
jge    1287 <main+0x167>
movl   $0x0,-0x498(%rbp)
cmpl   $0x4,-0x498(%rbp)
jge    1265 <main+0x145>
mov    -0x494(%rbp),%eax
shl    $0x2,%eax
add    -0x498(%rbp),%eax
cltq
mov    -0x410(%rbp,%rax,4),%esi
lea    0xde2(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x498(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x498(%rbp)
jmp    121e <main+0xfe>
lea    0xddc(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x494(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x494(%rbp)
jmp    1207 <main+0xe7>
movl   $0x10,-0x4a0(%rbp)
movl   $0x0,-0x494(%rbp)
mov    -0x494(%rbp),%eax
mov    -0x4a0(%rbp),%ecx
mov    $0x1,%edx
shl    %cl,%edx
mov    %edx,%ecx
cmp    %ecx,%eax
jge    185e <main+0x73e>
mov    -0x494(%rbp),%eax
mov    $0x17,%ecx
sub    -0x4a0(%rbp),%ecx
shl    %cl,%eax
mov    %eax,-0x444(%rbp)
cvtsi2sdl -0x494(%rbp),%xmm0
ff
mov    -0x4a0(%rbp),%ecx
mov    $0x1,%eax
shl    %cl,%eax
cvtsi2sd %eax,%xmm1
movsd  0xd16(%rip),%xmm2
mulsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  0xd06(%rip),%xmm1
addsd  %xmm0,%xmm1
movsd  0xcf2(%rip),%xmm0
divsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x44c(%rbp)
mov    -0x444(%rbp),%eax
sar    $0xc,%eax
mov    %eax,-0x448(%rbp)
mov    -0x448(%rbp),%eax
imul   -0x448(%rbp),%eax
mov    %eax,-0x448(%rbp)
mov    $0x800000,%eax
sub    -0x444(%rbp),%eax
mov    -0x444(%rbp),%ecx
sar    $0x1,%ecx
add    %ecx,%eax
mov    -0x444(%rbp),%ecx
sar    $0x2,%ecx
sub    %ecx,%eax
mov    -0x444(%rbp),%ecx
sar    $0x3,%ecx
add    %ecx,%eax
mov    %eax,-0x450(%rbp)
mov    -0x444(%rbp),%ecx
sar    $0x1,%ecx
mov    $0x800000,%eax
sub    %ecx,%eax
mov    %eax,-0x454(%rbp)
mov    -0x444(%rbp),%ecx
sar    $0x1,%ecx
mov    $0x800000,%eax
sub    %ecx,%eax
mov    -0x444(%rbp),%ecx
sar    $0x4,%ecx
sub    %ecx,%eax
mov    -0x444(%rbp),%ecx
sar    $0x6,%ecx
sub    %ecx,%eax
mov    %eax,-0x458(%rbp)
mov    -0x444(%rbp),%ecx
sar    $0x1,%ecx
mov    $0x800000,%eax
sub    %ecx,%eax
mov    -0x444(%rbp),%ecx
sar    $0x2,%ecx
sub    %ecx,%eax
mov    -0x444(%rbp),%ecx
sar    $0x3,%ecx
sub    %ecx,%eax
mov    -0x448(%rbp),%ecx
sar    $0x1,%ecx
add    %ecx,%eax
mov    -0x448(%rbp),%ecx
sar    $0x2,%ecx
add    %ecx,%eax
mov    %eax,-0x458(%rbp)
mov    -0x444(%rbp),%eax
sar    $0xf,%eax
mov    %eax,-0x464(%rbp)
cmpl   $0x0,-0x464(%rbp)
jge    141a <main+0x2fa>
movl   $0x0,-0x464(%rbp)
cmpl   $0xff,-0x464(%rbp)
jle    1434 <main+0x314>
movl   $0xff,-0x464(%rbp)
mov    -0x464(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x468(%rbp)
cmpl   $0x0,-0x468(%rbp)
jge    145a <main+0x33a>
movl   $0x0,-0x468(%rbp)
cmpl   $0xff,-0x468(%rbp)
jle    1474 <main+0x354>
movl   $0xff,-0x468(%rbp)
movslq -0x464(%rbp),%rax
mov    -0x410(%rbp,%rax,4),%eax
mov    %eax,-0x484(%rbp)
movslq -0x468(%rbp),%rax
mov    -0x410(%rbp,%rax,4),%eax
mov    %eax,-0x488(%rbp)
mov    -0x488(%rbp),%eax
sub    -0x484(%rbp),%eax
mov    %eax,-0x474(%rbp)
movslq -0x464(%rbp),%rax
mov    -0x410(%rbp,%rax,4),%eax
shl    $0x8,%eax
mov    %eax,-0x454(%rbp)
mov    -0x484(%rbp),%eax
shl    $0x8,%eax
mov    %eax,-0x48c(%rbp)
mov    -0x488(%rbp),%eax
shl    $0x8,%eax
mov    %eax,-0x490(%rbp)
mov    -0x444(%rbp),%eax
sar    $0x7,%eax
and    $0xff,%eax
mov    %eax,-0x46c(%rbp)
movslq -0x46c(%rbp),%rax
mov    -0x410(%rbp,%rax,4),%eax
mov    %eax,-0x47c(%rbp)
mov    -0x444(%rbp),%eax
and    $0x7fff,%eax
mov    %eax,-0x480(%rbp)
mov    -0x480(%rbp),%eax
mov    -0x480(%rbp),%ecx
sar    $0x5,%ecx
sub    %ecx,%eax
mov    -0x480(%rbp),%ecx
sar    $0x6,%ecx
add    %ecx,%eax
mov    %eax,-0x480(%rbp)
mov    -0x480(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x478(%rbp)
mov    -0x454(%rbp),%eax
and    $0xf00000,%eax
cmp    $0x800000,%eax
jne    1572 <main+0x452>
mov    -0x478(%rbp),%eax
shl    $0x1,%eax
mov    %eax,-0x478(%rbp)
mov    -0x454(%rbp),%eax
and    $0xf00000,%eax
cmp    $0x700000,%eax
jne    1597 <main+0x477>
mov    -0x478(%rbp),%eax
shl    $0x1,%eax
mov    %eax,-0x478(%rbp)
mov    -0x454(%rbp),%eax
and    $0xf00000,%eax
cmp    $0x400000,%eax
jne    15bc <main+0x49c>
mov    -0x478(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x478(%rbp)
mov    -0x478(%rbp),%ecx
mov    -0x454(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x454(%rbp)
mov    -0x44c(%rbp),%eax
shr    $0x14,%eax
and    $0xf,%eax
add    $0xfffffffc,%eax
mov    %eax,%ecx
mov    %rcx,-0x4a8(%rbp)
sub    $0x4,%eax
ja     1766 <main+0x646>
mov    -0x4a8(%rbp),%rax
lea    0xa19(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    -0x444(%rbp),%ecx
sar    $0x1,%ecx
mov    $0x800000,%eax
sub    %ecx,%eax
mov    -0x444(%rbp),%ecx
sar    $0x2,%ecx
sub    %ecx,%eax
mov    -0x444(%rbp),%ecx
sar    $0x3,%ecx
sub    %ecx,%eax
mov    -0x448(%rbp),%ecx
sar    $0x1,%ecx
sub    %ecx,%eax
mov    -0x448(%rbp),%ecx
sar    $0x4,%ecx
add    %ecx,%eax
mov    %eax,-0x450(%rbp)
jmp    1766 <main+0x646>
mov    -0x444(%rbp),%ecx
sar    $0x1,%ecx
mov    $0x800000,%eax
sub    %ecx,%eax
mov    -0x444(%rbp),%ecx
sar    $0x2,%ecx
sub    %ecx,%eax
mov    -0x444(%rbp),%ecx
sar    $0x3,%ecx
sub    %ecx,%eax
mov    -0x448(%rbp),%ecx
sar    $0x1,%ecx
sub    %ecx,%eax
mov    -0x448(%rbp),%ecx
sar    $0x4,%ecx
add    %ecx,%eax
mov    %eax,-0x450(%rbp)
jmp    1766 <main+0x646>
mov    -0x444(%rbp),%ecx
sar    $0x1,%ecx
mov    $0x800000,%eax
sub    %ecx,%eax
mov    -0x444(%rbp),%ecx
sar    $0x2,%ecx
sub    %ecx,%eax
mov    -0x444(%rbp),%ecx
sar    $0x3,%ecx
sub    %ecx,%eax
mov    -0x448(%rbp),%ecx
sar    $0x1,%ecx
add    %ecx,%eax
mov    -0x448(%rbp),%ecx
sar    $0x2,%ecx
add    %ecx,%eax
mov    %eax,-0x450(%rbp)
jmp    1766 <main+0x646>
mov    -0x444(%rbp),%ecx
sar    $0x1,%ecx
mov    $0x800000,%eax
sub    %ecx,%eax
mov    -0x444(%rbp),%ecx
sar    $0x2,%ecx
sub    %ecx,%eax
mov    -0x444(%rbp),%ecx
sar    $0x3,%ecx
sub    %ecx,%eax
mov    -0x448(%rbp),%ecx
sar    $0x1,%ecx
add    %ecx,%eax
mov    -0x448(%rbp),%ecx
sar    $0x2,%ecx
add    %ecx,%eax
mov    %eax,-0x450(%rbp)
jmp    1766 <main+0x646>
mov    -0x444(%rbp),%ecx
sar    $0x1,%ecx
mov    $0x800000,%eax
sub    %ecx,%eax
mov    -0x444(%rbp),%ecx
sar    $0x2,%ecx
sub    %ecx,%eax
mov    -0x444(%rbp),%ecx
sar    $0x3,%ecx
sub    %ecx,%eax
mov    -0x448(%rbp),%ecx
sar    $0x1,%ecx
add    %ecx,%eax
mov    -0x448(%rbp),%ecx
sar    $0x2,%ecx
add    %ecx,%eax
mov    %eax,-0x450(%rbp)
mov    -0x450(%rbp),%eax
sub    -0x44c(%rbp),%eax
cvtsi2sd %eax,%xmm0
movsd  0x882(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x430(%rbp)
ff
mov    -0x454(%rbp),%eax
sub    -0x44c(%rbp),%eax
cvtsi2sd %eax,%xmm0
movsd  0x85e(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x438(%rbp)
ff
mov    -0x458(%rbp),%eax
sub    -0x44c(%rbp),%eax
cvtsi2sd %eax,%xmm0
movsd  0x83a(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x440(%rbp)
ff
movsd  -0x430(%rbp),%xmm0
ff
movsd  -0x430(%rbp),%xmm2
ff
movsd  -0x418(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x418(%rbp)
ff
movsd  -0x438(%rbp),%xmm0
ff
movsd  -0x438(%rbp),%xmm2
ff
movsd  -0x420(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x420(%rbp)
ff
movsd  -0x440(%rbp),%xmm0
ff
movsd  -0x440(%rbp),%xmm2
ff
movsd  -0x428(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x428(%rbp)
ff
mov    -0x494(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x494(%rbp)
jmp    129b <main+0x17b>
movsd  -0x418(%rbp),%xmm0
ff
mov    -0x4a0(%rbp),%ecx
mov    $0x1,%eax
shl    %cl,%eax
cvtsi2sd %eax,%xmm1
divsd  %xmm1,%xmm0
call   1040 <sqrt@plt>
movsd  %xmm0,-0x4b0(%rbp)
ff
movsd  -0x420(%rbp),%xmm0
ff
mov    -0x4a0(%rbp),%ecx
mov    $0x1,%eax
shl    %cl,%eax
cvtsi2sd %eax,%xmm1
divsd  %xmm1,%xmm0
call   1040 <sqrt@plt>
movsd  %xmm0,-0x4b8(%rbp)
ff
movsd  -0x428(%rbp),%xmm0
ff
mov    -0x4a0(%rbp),%ecx
mov    $0x1,%eax
shl    %cl,%eax
cvtsi2sd %eax,%xmm1
divsd  %xmm1,%xmm0
call   1040 <sqrt@plt>
movsd  -0x4b8(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x4b0(%rbp),%xmm0
ff
lea    0x749(%rip),%rdi
mov    $0x3,%al
call   1030 <printf@plt>
mov    -0x4(%rbp),%eax
add    $0x4c0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x428,%rsp
movdqa 0xeb7(%rip),%xmm1
xor    %eax,%eax
movapd 0xebc(%rip),%xmm11
movapd 0xec3(%rip),%xmm12
movapd 0xecb(%rip),%xmm4
movdqa 0xed2(%rip),%xmm10
movdqa 0xed9(%rip),%xmm8
movdqa 0xee0(%rip),%xmm9
cvtdq2pd %xmm1,%xmm7
pshufd $0xee,%xmm1,%xmm5
cvtdq2pd %xmm5,%xmm5
mulpd  %xmm11,%xmm5
mulpd  %xmm11,%xmm7
addpd  %xmm12,%xmm7
movapd %xmm4,%xmm3
movapd %xmm4,%xmm6
movdqa %xmm1,%xmm0
paddd  %xmm8,%xmm0
addpd  %xmm12,%xmm5
cvtdq2pd %xmm0,%xmm2
pshufd $0xee,%xmm0,%xmm0
divpd  %xmm7,%xmm6
cvtdq2pd %xmm0,%xmm0
mulpd  %xmm11,%xmm0
divpd  %xmm5,%xmm3
mulpd  %xmm11,%xmm2
addpd  %xmm12,%xmm2
cvttpd2dq %xmm6,%xmm5
addpd  %xmm12,%xmm0
movapd %xmm4,%xmm6
divpd  %xmm0,%xmm6
movapd %xmm4,%xmm0
cvttpd2dq %xmm3,%xmm3
divpd  %xmm2,%xmm0
cvttpd2dq %xmm0,%xmm0
unpcklpd %xmm3,%xmm5
psrld  $0x8,%xmm5
cvttpd2dq %xmm6,%xmm2
pand   %xmm10,%xmm5
unpcklpd %xmm2,%xmm0
psrld  $0x8,%xmm0
pand   %xmm10,%xmm0
movdqa %xmm5,0x20(%rsp,%rax,4)
movdqa %xmm0,0x30(%rsp,%rax,4)
add    $0x8,%rax
paddd  %xmm9,%xmm1
cmp    $0x100,%rax
jne    1180 <main+0x50>
lea    0xe75(%rip),%rbx
xor    %ebp,%ebp
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
mov    0x20(%rsp,%rbp,1),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    0x24(%rsp,%rbp,1),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    0x28(%rsp,%rbp,1),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    0x2c(%rsp,%rbp,1),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
add    $0x10,%rbp
cmp    $0x400,%rbp
jne    1250 <main+0x120>
xorpd  %xmm3,%xmm3
pxor   %xmm0,%xmm0
mov    $0x800000,%r11d
movsd  0xdca(%rip),%xmm8
movsd  0xdca(%rip),%xmm2
movsd  0xdc9(%rip),%xmm10
mov    $0xff,%r9d
movapd 0xd9a(%rip),%xmm9
movsd  0xdba(%rip),%xmm5
lea    0xdbb(%rip),%r10
xor    %r14d,%r14d
xor    %edi,%edi
xorpd  %xmm4,%xmm4
jmp    1364 <main+0x234>
add    $0x800000,%r8d
sub    %edx,%r8d
add    %eax,%r8d
mov    %r8d,%ecx
add    %r13d,%ebx
movd   %r12d,%xmm6
movd   %ecx,%xmm7
punpckldq %xmm6,%xmm7
movd   %ebx,%xmm6
movd   %r13d,%xmm1
punpckldq %xmm6,%xmm1
psubd  %xmm1,%xmm7
cvtdq2pd %xmm7,%xmm1
mulpd  %xmm9,%xmm1
sub    %r13d,%r15d
xorps  %xmm6,%xmm6
cvtsi2sd %r15d,%xmm6
mulsd  %xmm5,%xmm6
mulpd  %xmm1,%xmm1
addpd  %xmm1,%xmm3
mulsd  %xmm6,%xmm6
addsd  %xmm6,%xmm4
addsd  %xmm2,%xmm0
add    $0x1,%edi
sub    $0xffffff80,%r14d
add    $0xffffff90,%r11d
cmp    $0x10000,%edi
je     144b <main+0x31b>
mov    %edi,%eax
shr    $0x5,%eax
imul   %eax,%eax
mov    %eax,%edx
shr    %edx
mov    %eax,%ebp
shr    $0x2,%ebp
lea    (%r11,%rbp,1),%r15d
add    %edx,%r15d
movdqa %xmm0,%xmm6
mulsd  %xmm8,%xmm6
addsd  %xmm2,%xmm6
movapd %xmm10,%xmm7
divsd  %xmm6,%xmm7
mov    %edi,%ecx
shr    $0x8,%ecx
cmp    $0x100,%edi
mov    $0x0,%esi
cmovb  %esi,%ecx
cmp    $0xff,%ecx
cmovae %r9d,%ecx
mov    0x20(%rsp,%rcx,4),%r12d
shl    $0x8,%r12d
mov    %r14d,%ebx
and    $0x7f80,%ebx
mov    %ebx,%ecx
shr    $0x5,%ecx
mov    %ebx,%esi
sub    %ecx,%esi
shr    $0x6,%ebx
add    %esi,%ebx
mov    %r12d,%esi
and    $0xf00000,%esi
cmp    $0x800000,%esi
setne  %cl
sar    %cl,%ebx
cvttsd2si %xmm7,%r13d
cmp    $0x700000,%esi
sete   %cl
shl    %cl,%ebx
cmp    $0x400000,%esi
sete   %cl
sar    %cl,%ebx
mov    %r13d,%esi
shr    $0x14,%esi
and    $0xf,%esi
add    $0xfffffffc,%esi
cmp    $0x4,%esi
ja     1437 <main+0x307>
shr    $0x4,%eax
imul   $0xffffff90,%edi,%r8d
lea    (%rdx,%r8,1),%ecx
add    $0x800000,%ecx
add    %ebp,%ecx
movslq (%r10,%rsi,4),%rsi
add    %r10,%rsi
jmp    *%rsi
add    %r11d,%eax
sub    %edx,%eax
mov    %eax,%ecx
jmp    1300 <main+0x1d0>
mov    %edi,%eax
shl    $0x4,%eax
lea    (%rax,%rax,4),%eax
mov    $0x800000,%ecx
sub    %eax,%ecx
jmp    1300 <main+0x1d0>
movsd  0xc2d(%rip),%xmm0
mulsd  %xmm3,%xmm0
pxor   %xmm1,%xmm1
ucomisd %xmm1,%xmm0
movsd  %xmm4,(%rsp)
jb     146c <main+0x33c>
sqrtsd %xmm0,%xmm0
jmp    1481 <main+0x351>
movapd %xmm3,0x10(%rsp)
call   1050 <sqrt@plt>
xorpd  %xmm1,%xmm1
movapd 0x10(%rsp),%xmm3
movsd  %xmm0,0x8(%rsp)
unpckhpd %xmm3,%xmm3
mulsd  0xbed(%rip),%xmm3
ucomisd %xmm1,%xmm3
jb     14a2 <main+0x372>
xorps  %xmm1,%xmm1
sqrtsd %xmm3,%xmm1
jmp    14af <main+0x37f>
movapd %xmm3,%xmm0
call   1050 <sqrt@plt>
movapd %xmm0,%xmm1
movsd  (%rsp),%xmm0
mulsd  0xbc4(%rip),%xmm0
xorpd  %xmm2,%xmm2
ucomisd %xmm2,%xmm0
jb     14cf <main+0x39f>
xorps  %xmm2,%xmm2
sqrtsd %xmm0,%xmm2
jmp    14e2 <main+0x3b2>
movsd  %xmm1,(%rsp)
call   1050 <sqrt@plt>
movsd  (%rsp),%xmm1
movapd %xmm0,%xmm2
lea    0xbd6(%rip),%rdi
movsd  0x8(%rsp),%xmm0
mov    $0x3,%al
call   1040 <printf@plt>
xor    %eax,%eax
add    $0x428,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
@.str = [11 x i8] c"16'h%04X, \00"
@.str.2 = [19 x i8] c"e0=%f e1=%f e2=%f\0A\00"
define i32 @main() {
%1 = alloca [256 x i32]
%2 = bitcast [256 x i32]* %1 to i8*
br label %3
3: ; preds = %3, %0
%4 = phi i64 [ 0, %0 ], [ %26, %3 ]
%5 = phi <4 x i32> [ <i32 0, i32 1, i32 2, i32 3>, %0 ], [ %27, %3 ]
%6 = sitofp <4 x i32> %5 to <4 x double>
%7 = fmul <4 x double> %6, <double 3.906250e-03, double 3.906250e-03, double 3.906250e-03, double 3.906250e-03>
%8 = fadd <4 x double> %7, <double 1.000000e+00, double 1.000000e+00, double 1.000000e+00, double 1.000000e+00>
%9 = fdiv <4 x double> <double 0x4160000000000000, double 0x4160000000000000, double 0x4160000000000000, double 0x4160000000000000>, %8
%10 = fptosi <4 x double> %9 to <4 x i32>
%11 = lshr <4 x i32> %10, <i32 8, i32 8, i32 8, i32 8>
%12 = and <4 x i32> %11, <i32 65532, i32 65532, i32 65532, i32 65532>
%13 = getelementptr inbounds [256 x i32], [256 x i32]* %1, i64 0, i64 %4
%14 = bitcast i32* %13 to <4 x i32>*
store <4 x i32> %12, <4 x i32>* %14
%15 = or i64 %4, 4
%16 = add <4 x i32> %5, <i32 4, i32 4, i32 4, i32 4>
%17 = sitofp <4 x i32> %16 to <4 x double>
%18 = fmul <4 x double> %17, <double 3.906250e-03, double 3.906250e-03, double 3.906250e-03, double 3.906250e-03>
%19 = fadd <4 x double> %18, <double 1.000000e+00, double 1.000000e+00, double 1.000000e+00, double 1.000000e+00>
%20 = fdiv <4 x double> <double 0x4160000000000000, double 0x4160000000000000, double 0x4160000000000000, double 0x4160000000000000>, %19
%21 = fptosi <4 x double> %20 to <4 x i32>
%22 = lshr <4 x i32> %21, <i32 8, i32 8, i32 8, i32 8>
%23 = and <4 x i32> %22, <i32 65532, i32 65532, i32 65532, i32 65532>
%24 = getelementptr inbounds [256 x i32], [256 x i32]* %1, i64 0, i64 %15
%25 = bitcast i32* %24 to <4 x i32>*
store <4 x i32> %23, <4 x i32>* %25
%26 = add nuw nsw i64 %4, 8
%27 = add <4 x i32> %5, <i32 8, i32 8, i32 8, i32 8>
%28 = icmp eq i64 %26, 256
br i1 %28, label %29, label %3
29: ; preds = %3, %29
%30 = phi i64 [ %48, %29 ], [ 0, %3 ]
%31 = shl nsw i64 %30, 2
%32 = getelementptr inbounds [256 x i32], [256 x i32]* %1, i64 0, i64 %31
%33 = load i32, i32* %32
%34 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0), i32 %33)
%35 = or i64 %31, 1
%36 = getelementptr inbounds [256 x i32], [256 x i32]* %1, i64 0, i64 %35
%37 = load i32, i32* %36
%38 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0), i32 %37)
%39 = or i64 %31, 2
%40 = getelementptr inbounds [256 x i32], [256 x i32]* %1, i64 0, i64 %39
%41 = load i32, i32* %40
%42 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0), i32 %41)
%43 = or i64 %31, 3
%44 = getelementptr inbounds [256 x i32], [256 x i32]* %1, i64 0, i64 %43
%45 = load i32, i32* %44
%46 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0), i32 %45)
%47 = tail call i32 @putchar(i32 10)
%48 = add nuw nsw i64 %30, 1
%49 = icmp eq i64 %48, 64
br i1 %49, label %50, label %29
50: ; preds = %29, %107
%51 = phi i32 [ %122, %107 ], [ 0, %29 ]
%52 = phi double [ %121, %107 ], [ 0.000000e+00, %29 ]
%53 = phi <2 x double> [ %120, %107 ], [ zeroinitializer, %29 ]
%54 = shl nuw nsw i32 %51, 7
%55 = sitofp i32 %51 to double
%56 = fmul double %55, 0x3EF0000000000000
%57 = fadd double %56, 1.000000e+00
%58 = fdiv double 0x4160000000000000, %57
%59 = fptosi double %58 to i32
%60 = lshr i32 %51, 5
%61 = mul nuw nsw i32 %60, %60
%62 = mul nsw i32 %51, -80
%63 = add nsw i32 %62, 8388608
%64 = mul nsw i32 %51, -112
%65 = add nsw i32 %64, 8388608
%66 = lshr i32 %61, 1
%67 = add nuw nsw i32 %66, %65
%68 = lshr i32 %61, 2
%69 = add nuw nsw i32 %67, %68
%70 = lshr i32 %51, 8
%71 = icmp ult i32 %51, 256
%72 = select i1 %71, i32 0, i32 %70
%73 = icmp ult i32 %72, 255
%74 = select i1 %73, i32 %72, i32 255
%75 = zext i32 %74 to i64
%76 = getelementptr inbounds [256 x i32], [256 x i32]* %1, i64 0, i64 %75
%77 = load i32, i32* %76
%78 = shl i32 %77, 8
%79 = and i32 %54, 32640
%80 = lshr exact i32 %79, 5
%81 = sub nsw i32 %79, %80
%82 = lshr exact i32 %79, 6
%83 = add nsw i32 %81, %82
%84 = and i32 %78, 15728640
%85 = icmp ne i32 %84, 8388608
%86 = zext i1 %85 to i32
%87 = ashr exact i32 %83, %86
%88 = icmp eq i32 %84, 7340032
%89 = zext i1 %88 to i32
%90 = shl nsw i32 %87, %89
%91 = icmp eq i32 %84, 4194304
%92 = zext i1 %91 to i32
%93 = ashr i32 %90, %92
%94 = lshr i32 %59, 20
%95 = and i32 %94, 15
switch i32 %95, label %107 [
i32 8, label %96
i32 7, label %100
i32 6, label %104
i32 5, label %105
i32 4, label %106
]
96: ; preds = %50
%97 = sub i32 %65, %66
%98 = lshr i32 %61, 4
%99 = add nsw i32 %97, %98
br label %107
100: ; preds = %50
%101 = sub i32 %65, %66
%102 = lshr i32 %61, 4
%103 = add nsw i32 %101, %102
br label %107
104: ; preds = %50
br label %107
105: ; preds = %50
br label %107
106: ; preds = %50
br label %107
107: ; preds = %50, %106, %105, %104, %100, %96
%108 = phi i32 [ %63, %50 ], [ %69, %106 ], [ %69, %105 ], [ %69, %104 ], [ %103, %100 ], [ %99, %96 ]
%109 = add i32 %93, %59
%110 = insertelement <2 x i32> poison, i32 %108, i64 0
%111 = insertelement <2 x i32> %110, i32 %78, i64 1
%112 = insertelement <2 x i32> poison, i32 %59, i64 0
%113 = insertelement <2 x i32> %112, i32 %109, i64 1
%114 = sub <2 x i32> %111, %113
%115 = sitofp <2 x i32> %114 to <2 x double>
%116 = fmul <2 x double> %115, <double 0x3E80000000000000, double 0x3E80000000000000>
%117 = sub nsw i32 %69, %59
%118 = sitofp i32 %117 to double
%119 = fmul double %118, 0x3E80000000000000
%120 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %116, <2 x double> %116, <2 x double> %53)
%121 = tail call double @llvm.fmuladd.f64(double %119, double %119, double %52)
%122 = add nuw nsw i32 %51, 1
%123 = icmp eq i32 %122, 65536
br i1 %123, label %124, label %50
124: ; preds = %107
%125 = extractelement <2 x double> %120, i64 0
%126 = fmul double %125, 0x3EF0000000000000
%127 = tail call double @sqrt(double %126)
%128 = extractelement <2 x double> %120, i64 1
%129 = fmul double %128, 0x3EF0000000000000
%130 = tail call double @sqrt(double %129)
%131 = fmul double %121, 0x3EF0000000000000
%132 = tail call double @sqrt(double %131)
%133 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([19 x i8], [19 x i8]* @.str.2, i64 0, i64 0), double %127, double %130, double %132)
ret i32 0
}