void test(long *bits, long n, double one, double *p, double *q) {
  double x_00 = p[0];
  double x_01 = p[1];
  double x_02 = p[2];
  double x_03 = p[3];
  double x_04 = p[4];
  double x_05 = p[5];
  double x_06 = p[6];
  double x_07 = p[7];
  double x_08 = p[8];
  double x_09 = p[9];
  double x_10 = p[10];
  double x_11 = p[11];
  double x_12 = p[12];
  double x_13 = p[13];
  double x_14 = p[14];
  double x_15 = p[15];
  double x_16 = p[16];
  double x_17 = p[17];
  double x_18 = p[18];
  double x_19 = p[19];
  double x_20 = p[20];
  double x_21 = p[21];
  double x_22 = p[22];
  double x_23 = p[23];
  double x_24 = p[24];
  double x_25 = p[25];
  double x_26 = p[26];
  double x_27 = p[27];
  double x_28 = p[28];
  double x_29 = p[29];
  double x_30 = p[30];
  double x_31 = p[31];
  double x_32 = p[32];
  double x_33 = p[33];
  double x_34 = p[34];
  double x_35 = p[35];
  double x_36 = p[36];
  double x_37 = p[37];
  double x_38 = p[38];
  double x_39 = p[39];
  double x_40 = p[40];
  double x_41 = p[41];
  double x_42 = p[42];
  double x_43 = p[43];
  double x_44 = p[44];
  double x_45 = p[45];
  double x_46 = p[46];
  double x_47 = p[47];
  double x_48 = p[48];
  double x_49 = p[49];
  long i;
  for (i = 0; i < n; i++) {
    long bit = (bits[i]);
    if ((bit & ((long)1) << 0) != 0)
      x_00 += one;
    if ((bit & ((long)1) << 1) != 0)
      x_01 += one;
    if ((bit & ((long)1) << 2) != 0)
      x_02 += one;
    if ((bit & ((long)1) << 3) != 0)
      x_03 += one;
    if ((bit & ((long)1) << 4) != 0)
      x_04 += one;
    if ((bit & ((long)1) << 5) != 0)
      x_05 += one;
    if ((bit & ((long)1) << 6) != 0)
      x_06 += one;
    if ((bit & ((long)1) << 7) != 0)
      x_07 += one;
    if ((bit & ((long)1) << 8) != 0)
      x_08 += one;
    if ((bit & ((long)1) << 9) != 0)
      x_09 += one;
    if ((bit & ((long)1) << 10) != 0)
      x_10 += one;
    if ((bit & ((long)1) << 11) != 0)
      x_11 += one;
    if ((bit & ((long)1) << 12) != 0)
      x_12 += one;
    if ((bit & ((long)1) << 13) != 0)
      x_13 += one;
    if ((bit & ((long)1) << 14) != 0)
      x_14 += one;
    if ((bit & ((long)1) << 15) != 0)
      x_15 += one;
    if ((bit & ((long)1) << 16) != 0)
      x_16 += one;
    if ((bit & ((long)1) << 17) != 0)
      x_17 += one;
    if ((bit & ((long)1) << 18) != 0)
      x_18 += one;
    if ((bit & ((long)1) << 19) != 0)
      x_19 += one;
    if ((bit & ((long)1) << 20) != 0)
      x_20 += one;
    if ((bit & ((long)1) << 21) != 0)
      x_21 += one;
    if ((bit & ((long)1) << 22) != 0)
      x_22 += one;
    if ((bit & ((long)1) << 23) != 0)
      x_23 += one;
    if ((bit & ((long)1) << 24) != 0)
      x_24 += one;
    if ((bit & ((long)1) << 25) != 0)
      x_25 += one;
    if ((bit & ((long)1) << 26) != 0)
      x_26 += one;
    if ((bit & ((long)1) << 27) != 0)
      x_27 += one;
    if ((bit & ((long)1) << 28) != 0)
      x_28 += one;
    if ((bit & ((long)1) << 29) != 0)
      x_29 += one;
    if ((bit & ((long)1) << 30) != 0)
      x_30 += one;
    if ((bit & ((long)1) << 31) != 0)
      x_31 += one;
    if ((bit & ((long)1) << 32) != 0)
      x_32 += one;
    if ((bit & ((long)1) << 33) != 0)
      x_33 += one;
    if ((bit & ((long)1) << 34) != 0)
      x_34 += one;
    if ((bit & ((long)1) << 35) != 0)
      x_35 += one;
    if ((bit & ((long)1) << 36) != 0)
      x_36 += one;
    if ((bit & ((long)1) << 37) != 0)
      x_37 += one;
    if ((bit & ((long)1) << 38) != 0)
      x_38 += one;
    if ((bit & ((long)1) << 39) != 0)
      x_39 += one;
    if ((bit & ((long)1) << 40) != 0)
      x_40 += one;
    if ((bit & ((long)1) << 41) != 0)
      x_41 += one;
    if ((bit & ((long)1) << 42) != 0)
      x_42 += one;
    if ((bit & ((long)1) << 43) != 0)
      x_43 += one;
    if ((bit & ((long)1) << 44) != 0)
      x_44 += one;
    if ((bit & ((long)1) << 45) != 0)
      x_45 += one;
    if ((bit & ((long)1) << 46) != 0)
      x_46 += one;
    if ((bit & ((long)1) << 47) != 0)
      x_47 += one;
    if ((bit & ((long)1) << 48) != 0)
      x_48 += one;
    if ((bit & ((long)1) << 49) != 0)
      x_49 += one;
  }
  q[0] = x_00;
  q[1] = x_01;
  q[2] = x_02;
  q[3] = x_03;
  q[4] = x_04;
  q[5] = x_05;
  q[6] = x_06;
  q[7] = x_07;
  q[8] = x_08;
  q[9] = x_09;
  q[10] = x_10;
  q[11] = x_11;
  q[12] = x_12;
  q[13] = x_13;
  q[14] = x_14;
  q[15] = x_15;
  q[16] = x_16;
  q[17] = x_17;
  q[18] = x_18;
  q[19] = x_19;
  q[20] = x_20;
  q[21] = x_21;
  q[22] = x_22;
  q[23] = x_23;
  q[24] = x_24;
  q[25] = x_25;
  q[26] = x_26;
  q[27] = x_27;
  q[28] = x_28;
  q[29] = x_29;
  q[30] = x_30;
  q[31] = x_31;
  q[32] = x_32;
  q[33] = x_33;
  q[34] = x_34;
  q[35] = x_35;
  q[36] = x_36;
  q[37] = x_37;
  q[38] = x_38;
  q[39] = x_39;
  q[40] = x_40;
  q[41] = x_41;
  q[42] = x_42;
  q[43] = x_43;
  q[44] = x_44;
  q[45] = x_45;
  q[46] = x_46;
  q[47] = x_47;
  q[48] = x_48;
  q[49] = x_49;
}


x86 assembly (clang, -O0):
<test>:
push   %rbp
mov    %rsp,%rbp
sub    $0x148,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
movsd  %xmm0,-0x18(%rbp)
mov    %rdx,-0x20(%rbp)
mov    %rcx,-0x28(%rbp)
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x30(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x38(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x28(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x30(%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x38(%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x40(%rax),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x48(%rax),%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x50(%rax),%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x58(%rax),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x60(%rax),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x68(%rax),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x70(%rax),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x78(%rax),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x80(%rax),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x88(%rax),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x90(%rax),%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x98(%rax),%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0xa0(%rax),%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0xa8(%rax),%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0xb0(%rax),%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0xb8(%rax),%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0xc0(%rax),%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0xc8(%rax),%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0xd0(%rax),%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0xd8(%rax),%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0xe0(%rax),%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0xe8(%rax),%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0xf0(%rax),%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0xf8(%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x100(%rax),%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x108(%rax),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x110(%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x118(%rax),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x120(%rax),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x128(%rax),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x130(%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x138(%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x140(%rax),%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x148(%rax),%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x150(%rax),%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x158(%rax),%xmm0
movsd  %xmm0,-0x188(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x160(%rax),%xmm0
movsd  %xmm0,-0x190(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x168(%rax),%xmm0
movsd  %xmm0,-0x198(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x170(%rax),%xmm0
movsd  %xmm0,-0x1a0(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x178(%rax),%xmm0
movsd  %xmm0,-0x1a8(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x180(%rax),%xmm0
movsd  %xmm0,-0x1b0(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x188(%rax),%xmm0
movsd  %xmm0,-0x1b8(%rbp)
ff
movq   $0x0,-0x1c0(%rbp)
mov    -0x1c0(%rbp),%rax
cmp    -0x10(%rbp),%rax
jge    1d98 <test+0xc98>
mov    -0x8(%rbp),%rax
mov    -0x1c0(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    %rax,-0x1c8(%rbp)
mov    -0x1c8(%rbp),%rax
and    $0x1,%rax
cmp    $0x0,%rax
je     150c <test+0x40c>
movsd  -0x18(%rbp),%xmm0
addsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x30(%rbp)
mov    -0x1c8(%rbp),%rax
and    $0x2,%rax
cmp    $0x0,%rax
je     1530 <test+0x430>
movsd  -0x18(%rbp),%xmm0
addsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x38(%rbp)
mov    -0x1c8(%rbp),%rax
and    $0x4,%rax
cmp    $0x0,%rax
je     1554 <test+0x454>
movsd  -0x18(%rbp),%xmm0
addsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x1c8(%rbp),%rax
and    $0x8,%rax
cmp    $0x0,%rax
je     1578 <test+0x478>
movsd  -0x18(%rbp),%xmm0
addsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x1c8(%rbp),%rax
and    $0x10,%rax
cmp    $0x0,%rax
je     159c <test+0x49c>
movsd  -0x18(%rbp),%xmm0
addsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x1c8(%rbp),%rax
and    $0x20,%rax
cmp    $0x0,%rax
je     15c0 <test+0x4c0>
movsd  -0x18(%rbp),%xmm0
addsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x1c8(%rbp),%rax
and    $0x40,%rax
cmp    $0x0,%rax
je     15e4 <test+0x4e4>
movsd  -0x18(%rbp),%xmm0
addsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x1c8(%rbp),%rax
and    $0x80,%rax
cmp    $0x0,%rax
je     160a <test+0x50a>
movsd  -0x18(%rbp),%xmm0
addsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x1c8(%rbp),%rax
and    $0x100,%rax
cmp    $0x0,%rax
je     1630 <test+0x530>
movsd  -0x18(%rbp),%xmm0
addsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x1c8(%rbp),%rax
and    $0x200,%rax
cmp    $0x0,%rax
je     1656 <test+0x556>
movsd  -0x18(%rbp),%xmm0
addsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    -0x1c8(%rbp),%rax
and    $0x400,%rax
cmp    $0x0,%rax
je     167c <test+0x57c>
movsd  -0x18(%rbp),%xmm0
addsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    -0x1c8(%rbp),%rax
and    $0x800,%rax
cmp    $0x0,%rax
je     16a8 <test+0x5a8>
movsd  -0x18(%rbp),%xmm0
addsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0x88(%rbp)
ff
mov    -0x1c8(%rbp),%rax
and    $0x1000,%rax
cmp    $0x0,%rax
je     16d4 <test+0x5d4>
movsd  -0x18(%rbp),%xmm0
addsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x1c8(%rbp),%rax
and    $0x2000,%rax
cmp    $0x0,%rax
je     1700 <test+0x600>
movsd  -0x18(%rbp),%xmm0
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x1c8(%rbp),%rax
and    $0x4000,%rax
cmp    $0x0,%rax
je     172c <test+0x62c>
movsd  -0x18(%rbp),%xmm0
addsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
mov    -0x1c8(%rbp),%rax
and    $0x8000,%rax
cmp    $0x0,%rax
je     1758 <test+0x658>
movsd  -0x18(%rbp),%xmm0
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x1c8(%rbp),%rax
and    $0x10000,%rax
cmp    $0x0,%rax
je     1784 <test+0x684>
movsd  -0x18(%rbp),%xmm0
addsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x1c8(%rbp),%rax
and    $0x20000,%rax
cmp    $0x0,%rax
je     17b0 <test+0x6b0>
movsd  -0x18(%rbp),%xmm0
addsd  -0xb8(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
mov    -0x1c8(%rbp),%rax
and    $0x40000,%rax
cmp    $0x0,%rax
je     17dc <test+0x6dc>
movsd  -0x18(%rbp),%xmm0
addsd  -0xc0(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
mov    -0x1c8(%rbp),%rax
and    $0x80000,%rax
cmp    $0x0,%rax
je     1808 <test+0x708>
movsd  -0x18(%rbp),%xmm0
addsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
mov    -0x1c8(%rbp),%rax
and    $0x100000,%rax
cmp    $0x0,%rax
je     1834 <test+0x734>
movsd  -0x18(%rbp),%xmm0
addsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
mov    -0x1c8(%rbp),%rax
and    $0x200000,%rax
cmp    $0x0,%rax
je     1860 <test+0x760>
movsd  -0x18(%rbp),%xmm0
addsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0xd8(%rbp)
ff
mov    -0x1c8(%rbp),%rax
and    $0x400000,%rax
cmp    $0x0,%rax
je     188c <test+0x78c>
movsd  -0x18(%rbp),%xmm0
addsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0xe0(%rbp)
ff
mov    -0x1c8(%rbp),%rax
and    $0x800000,%rax
cmp    $0x0,%rax
je     18b8 <test+0x7b8>
movsd  -0x18(%rbp),%xmm0
addsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xe8(%rbp)
ff
mov    -0x1c8(%rbp),%rax
and    $0x1000000,%rax
cmp    $0x0,%rax
je     18e4 <test+0x7e4>
movsd  -0x18(%rbp),%xmm0
addsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0xf0(%rbp)
ff
mov    -0x1c8(%rbp),%rax
and    $0x2000000,%rax
cmp    $0x0,%rax
je     1910 <test+0x810>
movsd  -0x18(%rbp),%xmm0
addsd  -0xf8(%rbp),%xmm0
ff
movsd  %xmm0,-0xf8(%rbp)
ff
mov    -0x1c8(%rbp),%rax
and    $0x4000000,%rax
cmp    $0x0,%rax
je     193c <test+0x83c>
movsd  -0x18(%rbp),%xmm0
addsd  -0x100(%rbp),%xmm0
ff
movsd  %xmm0,-0x100(%rbp)
ff
mov    -0x1c8(%rbp),%rax
and    $0x8000000,%rax
cmp    $0x0,%rax
je     1968 <test+0x868>
movsd  -0x18(%rbp),%xmm0
addsd  -0x108(%rbp),%xmm0
ff
movsd  %xmm0,-0x108(%rbp)
ff
mov    -0x1c8(%rbp),%rax
and    $0x10000000,%rax
cmp    $0x0,%rax
je     1994 <test+0x894>
movsd  -0x18(%rbp),%xmm0
addsd  -0x110(%rbp),%xmm0
ff
movsd  %xmm0,-0x110(%rbp)
ff
mov    -0x1c8(%rbp),%rax
and    $0x20000000,%rax
cmp    $0x0,%rax
je     19c0 <test+0x8c0>
movsd  -0x18(%rbp),%xmm0
addsd  -0x118(%rbp),%xmm0
ff
movsd  %xmm0,-0x118(%rbp)
ff
mov    -0x1c8(%rbp),%rax
and    $0x40000000,%rax
cmp    $0x0,%rax
je     19ec <test+0x8ec>
movsd  -0x18(%rbp),%xmm0
addsd  -0x120(%rbp),%xmm0
ff
movsd  %xmm0,-0x120(%rbp)
ff
movabs $0x80000000,%rax
and    -0x1c8(%rbp),%rax
cmp    $0x0,%rax
je     1a1c <test+0x91c>
movsd  -0x18(%rbp),%xmm0
addsd  -0x128(%rbp),%xmm0
ff
movsd  %xmm0,-0x128(%rbp)
ff
movabs $0x100000000,%rax
and    -0x1c8(%rbp),%rax
cmp    $0x0,%rax
je     1a4c <test+0x94c>
movsd  -0x18(%rbp),%xmm0
addsd  -0x130(%rbp),%xmm0
ff
movsd  %xmm0,-0x130(%rbp)
ff
movabs $0x200000000,%rax
and    -0x1c8(%rbp),%rax
cmp    $0x0,%rax
je     1a7c <test+0x97c>
movsd  -0x18(%rbp),%xmm0
addsd  -0x138(%rbp),%xmm0
ff
movsd  %xmm0,-0x138(%rbp)
ff
movabs $0x400000000,%rax
and    -0x1c8(%rbp),%rax
cmp    $0x0,%rax
je     1aac <test+0x9ac>
movsd  -0x18(%rbp),%xmm0
addsd  -0x140(%rbp),%xmm0
ff
movsd  %xmm0,-0x140(%rbp)
ff
movabs $0x800000000,%rax
and    -0x1c8(%rbp),%rax
cmp    $0x0,%rax
je     1adc <test+0x9dc>
movsd  -0x18(%rbp),%xmm0
addsd  -0x148(%rbp),%xmm0
ff
movsd  %xmm0,-0x148(%rbp)
ff
movabs $0x1000000000,%rax
and    -0x1c8(%rbp),%rax
cmp    $0x0,%rax
je     1b0c <test+0xa0c>
movsd  -0x18(%rbp),%xmm0
addsd  -0x150(%rbp),%xmm0
ff
movsd  %xmm0,-0x150(%rbp)
ff
movabs $0x2000000000,%rax
and    -0x1c8(%rbp),%rax
cmp    $0x0,%rax
je     1b3c <test+0xa3c>
movsd  -0x18(%rbp),%xmm0
addsd  -0x158(%rbp),%xmm0
ff
movsd  %xmm0,-0x158(%rbp)
ff
movabs $0x4000000000,%rax
and    -0x1c8(%rbp),%rax
cmp    $0x0,%rax
je     1b6c <test+0xa6c>
movsd  -0x18(%rbp),%xmm0
addsd  -0x160(%rbp),%xmm0
ff
movsd  %xmm0,-0x160(%rbp)
ff
movabs $0x8000000000,%rax
and    -0x1c8(%rbp),%rax
cmp    $0x0,%rax
je     1b9c <test+0xa9c>
movsd  -0x18(%rbp),%xmm0
addsd  -0x168(%rbp),%xmm0
ff
movsd  %xmm0,-0x168(%rbp)
ff
movabs $0x10000000000,%rax
and    -0x1c8(%rbp),%rax
cmp    $0x0,%rax
je     1bcc <test+0xacc>
movsd  -0x18(%rbp),%xmm0
addsd  -0x170(%rbp),%xmm0
ff
movsd  %xmm0,-0x170(%rbp)
ff
movabs $0x20000000000,%rax
and    -0x1c8(%rbp),%rax
cmp    $0x0,%rax
je     1bfc <test+0xafc>
movsd  -0x18(%rbp),%xmm0
addsd  -0x178(%rbp),%xmm0
ff
movsd  %xmm0,-0x178(%rbp)
ff
movabs $0x40000000000,%rax
and    -0x1c8(%rbp),%rax
cmp    $0x0,%rax
je     1c2c <test+0xb2c>
movsd  -0x18(%rbp),%xmm0
addsd  -0x180(%rbp),%xmm0
ff
movsd  %xmm0,-0x180(%rbp)
ff
movabs $0x80000000000,%rax
and    -0x1c8(%rbp),%rax
cmp    $0x0,%rax
je     1c5c <test+0xb5c>
movsd  -0x18(%rbp),%xmm0
addsd  -0x188(%rbp),%xmm0
ff
movsd  %xmm0,-0x188(%rbp)
ff
movabs $0x100000000000,%rax
and    -0x1c8(%rbp),%rax
cmp    $0x0,%rax
je     1c8c <test+0xb8c>
movsd  -0x18(%rbp),%xmm0
addsd  -0x190(%rbp),%xmm0
ff
movsd  %xmm0,-0x190(%rbp)
ff
movabs $0x200000000000,%rax
and    -0x1c8(%rbp),%rax
cmp    $0x0,%rax
je     1cbc <test+0xbbc>
movsd  -0x18(%rbp),%xmm0
addsd  -0x198(%rbp),%xmm0
ff
movsd  %xmm0,-0x198(%rbp)
ff
movabs $0x400000000000,%rax
and    -0x1c8(%rbp),%rax
cmp    $0x0,%rax
je     1cec <test+0xbec>
movsd  -0x18(%rbp),%xmm0
addsd  -0x1a0(%rbp),%xmm0
ff
movsd  %xmm0,-0x1a0(%rbp)
ff
movabs $0x800000000000,%rax
and    -0x1c8(%rbp),%rax
cmp    $0x0,%rax
je     1d1c <test+0xc1c>
movsd  -0x18(%rbp),%xmm0
addsd  -0x1a8(%rbp),%xmm0
ff
movsd  %xmm0,-0x1a8(%rbp)
ff
movabs $0x1000000000000,%rax
and    -0x1c8(%rbp),%rax
cmp    $0x0,%rax
je     1d4c <test+0xc4c>
movsd  -0x18(%rbp),%xmm0
addsd  -0x1b0(%rbp),%xmm0
ff
movsd  %xmm0,-0x1b0(%rbp)
ff
movabs $0x2000000000000,%rax
and    -0x1c8(%rbp),%rax
cmp    $0x0,%rax
je     1d7c <test+0xc7c>
movsd  -0x18(%rbp),%xmm0
addsd  -0x1b8(%rbp),%xmm0
ff
movsd  %xmm0,-0x1b8(%rbp)
ff
jmp    1d81 <test+0xc81>
mov    -0x1c0(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x1c0(%rbp)
jmp    14c1 <test+0x3c1>
movsd  -0x30(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x38(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0x40(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x10(%rax)
movsd  -0x48(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x18(%rax)
movsd  -0x50(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x20(%rax)
movsd  -0x58(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x28(%rax)
movsd  -0x60(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x30(%rax)
movsd  -0x68(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x38(%rax)
movsd  -0x70(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x40(%rax)
movsd  -0x78(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x48(%rax)
movsd  -0x80(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x50(%rax)
movsd  -0x88(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x58(%rax)
movsd  -0x90(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x60(%rax)
movsd  -0x98(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x68(%rax)
movsd  -0xa0(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x70(%rax)
movsd  -0xa8(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x78(%rax)
movsd  -0xb0(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x80(%rax)
movsd  -0xb8(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x88(%rax)
movsd  -0xc0(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x90(%rax)
movsd  -0xc8(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x98(%rax)
movsd  -0xd0(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0xa0(%rax)
movsd  -0xd8(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0xa8(%rax)
movsd  -0xe0(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0xb0(%rax)
movsd  -0xe8(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0xb8(%rax)
movsd  -0xf0(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0xc0(%rax)
movsd  -0xf8(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0xc8(%rax)
movsd  -0x100(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0xd0(%rax)
movsd  -0x108(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0xd8(%rax)
movsd  -0x110(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0xe0(%rax)
movsd  -0x118(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0xe8(%rax)
movsd  -0x120(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0xf0(%rax)
movsd  -0x128(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0xf8(%rax)
movsd  -0x130(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x100(%rax)
movsd  -0x138(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x108(%rax)
movsd  -0x140(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x110(%rax)
movsd  -0x148(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x118(%rax)
movsd  -0x150(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x120(%rax)
movsd  -0x158(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x128(%rax)
movsd  -0x160(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x130(%rax)
movsd  -0x168(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x138(%rax)
movsd  -0x170(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x140(%rax)
movsd  -0x178(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x148(%rax)
movsd  -0x180(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x150(%rax)
movsd  -0x188(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x158(%rax)
movsd  -0x190(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x160(%rax)
movsd  -0x198(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x168(%rax)
movsd  -0x1a0(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x170(%rax)
movsd  -0x1a8(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x178(%rax)
movsd  -0x1b0(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x180(%rax)
movsd  -0x1b8(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x188(%rax)
add    $0x148,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<test>:
sub    $0x290,%rsp
movsd  (%rdx),%xmm1
movsd  %xmm1,-0x20(%rsp)
movsd  0x8(%rdx),%xmm1
movsd  %xmm1,-0x28(%rsp)
movsd  0x10(%rdx),%xmm1
movsd  %xmm1,-0x30(%rsp)
movsd  0x18(%rdx),%xmm1
movsd  %xmm1,-0x38(%rsp)
movsd  0x20(%rdx),%xmm1
movsd  %xmm1,-0x40(%rsp)
movsd  0x28(%rdx),%xmm1
movsd  %xmm1,-0x48(%rsp)
movsd  0x30(%rdx),%xmm1
movsd  %xmm1,-0x50(%rsp)
movsd  0x38(%rdx),%xmm1
movsd  %xmm1,-0x58(%rsp)
movsd  0x40(%rdx),%xmm1
movsd  %xmm1,-0x60(%rsp)
movsd  0x48(%rdx),%xmm1
movsd  %xmm1,-0x70(%rsp)
movsd  0x50(%rdx),%xmm1
movsd  %xmm1,-0x78(%rsp)
movsd  0x58(%rdx),%xmm1
movsd  %xmm1,-0x18(%rsp)
movsd  0x60(%rdx),%xmm1
movsd  %xmm1,0x70(%rsp)
movsd  0x68(%rdx),%xmm1
movsd  %xmm1,0xa0(%rsp)
movsd  0x70(%rdx),%xmm1
movsd  %xmm1,0x98(%rsp)
movsd  0x78(%rdx),%xmm1
movsd  %xmm1,0x90(%rsp)
movsd  0x80(%rdx),%xmm1
movsd  %xmm1,0x88(%rsp)
movsd  0x88(%rdx),%xmm1
movsd  %xmm1,0x80(%rsp)
movsd  0x90(%rdx),%xmm2
movsd  %xmm2,0x78(%rsp)
movsd  0x98(%rdx),%xmm1
movsd  %xmm1,-0x68(%rsp)
movsd  0xa0(%rdx),%xmm1
movsd  %xmm1,-0x80(%rsp)
movsd  0xa8(%rdx),%xmm1
movsd  %xmm1,0x68(%rsp)
movsd  0xb0(%rdx),%xmm1
movsd  %xmm1,0x60(%rsp)
movsd  0xb8(%rdx),%xmm3
movsd  %xmm3,0x58(%rsp)
movsd  0xc0(%rdx),%xmm1
movsd  %xmm1,0x50(%rsp)
movsd  0xc8(%rdx),%xmm1
movsd  %xmm1,0x48(%rsp)
movsd  0xd0(%rdx),%xmm1
movsd  %xmm1,0x40(%rsp)
movsd  0xd8(%rdx),%xmm1
movsd  %xmm1,0x38(%rsp)
movsd  0xe0(%rdx),%xmm1
movsd  %xmm1,0x30(%rsp)
movsd  0xe8(%rdx),%xmm1
movsd  %xmm1,0x28(%rsp)
movsd  0xf0(%rdx),%xmm1
movsd  %xmm1,0x20(%rsp)
movsd  0xf8(%rdx),%xmm3
movsd  %xmm3,0x18(%rsp)
movsd  0x100(%rdx),%xmm1
movsd  %xmm1,0x10(%rsp)
movsd  0x108(%rdx),%xmm1
movsd  %xmm1,0x8(%rsp)
movsd  0x110(%rdx),%xmm15
movsd  0x118(%rdx),%xmm8
movsd  0x120(%rdx),%xmm12
movsd  0x128(%rdx),%xmm13
movsd  0x130(%rdx),%xmm14
movsd  0x138(%rdx),%xmm3
movsd  %xmm3,(%rsp)
movsd  0x140(%rdx),%xmm9
movsd  0x148(%rdx),%xmm11
movsd  0x150(%rdx),%xmm1
movsd  0x158(%rdx),%xmm4
movsd  0x160(%rdx),%xmm5
movsd  0x168(%rdx),%xmm6
movsd  0x170(%rdx),%xmm2
movsd  0x178(%rdx),%xmm3
movsd  %xmm3,-0x8(%rsp)
movsd  0x180(%rdx),%xmm7
movsd  0x188(%rdx),%xmm3
movsd  %xmm3,-0x10(%rsp)
test   %rsi,%rsi
jle    1d23 <test+0xc23>
xor    %r8d,%r8d
movsd  0xc93(%rip),%xmm3
jmp    177a <test+0x67a>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movsd  -0x10(%rsp),%xmm14
addsd  %xmm1,%xmm14
movsd  %xmm14,-0x10(%rsp)
movsd  -0x20(%rsp),%xmm1
addsd  %xmm10,%xmm1
movsd  %xmm1,-0x20(%rsp)
addsd  0x1e8(%rsp),%xmm4
movsd  %xmm4,-0x28(%rsp)
addsd  0x1e0(%rsp),%xmm5
movsd  %xmm5,-0x30(%rsp)
addsd  0x1d8(%rsp),%xmm6
movsd  %xmm6,-0x38(%rsp)
addsd  0x1d0(%rsp),%xmm7
movsd  %xmm7,-0x40(%rsp)
addsd  0x1c8(%rsp),%xmm8
movsd  %xmm8,-0x48(%rsp)
addsd  0x1c0(%rsp),%xmm9
movsd  %xmm9,-0x50(%rsp)
addsd  0x1b8(%rsp),%xmm15
movsd  %xmm15,-0x58(%rsp)
addsd  0x1b0(%rsp),%xmm11
movsd  %xmm11,-0x60(%rsp)
addsd  0x1a8(%rsp),%xmm12
movsd  %xmm12,-0x70(%rsp)
addsd  0x1a0(%rsp),%xmm13
movsd  %xmm13,-0x78(%rsp)
movsd  -0x18(%rsp),%xmm1
addsd  0x198(%rsp),%xmm1
movsd  %xmm1,-0x18(%rsp)
movsd  0x70(%rsp),%xmm1
addsd  0x190(%rsp),%xmm1
movsd  %xmm1,0x70(%rsp)
movsd  0xa0(%rsp),%xmm1
addsd  0x188(%rsp),%xmm1
movsd  %xmm1,0xa0(%rsp)
movsd  0x98(%rsp),%xmm1
addsd  0x180(%rsp),%xmm1
movsd  %xmm1,0x98(%rsp)
movsd  0x90(%rsp),%xmm1
addsd  0x178(%rsp),%xmm1
movsd  %xmm1,0x90(%rsp)
movsd  0x88(%rsp),%xmm1
addsd  0x170(%rsp),%xmm1
movsd  %xmm1,0x88(%rsp)
movsd  0x80(%rsp),%xmm1
addsd  0x168(%rsp),%xmm1
movsd  %xmm1,0x80(%rsp)
movsd  0x78(%rsp),%xmm5
addsd  0x160(%rsp),%xmm5
movsd  %xmm5,0x78(%rsp)
addsd  0x158(%rsp),%xmm2
movsd  %xmm2,-0x68(%rsp)
movsd  -0x80(%rsp),%xmm1
addsd  0x150(%rsp),%xmm1
movsd  %xmm1,-0x80(%rsp)
movsd  0x68(%rsp),%xmm1
addsd  0x148(%rsp),%xmm1
movsd  %xmm1,0x68(%rsp)
movsd  0x60(%rsp),%xmm1
addsd  0x140(%rsp),%xmm1
movsd  %xmm1,0x60(%rsp)
movsd  0x58(%rsp),%xmm9
addsd  0x138(%rsp),%xmm9
movsd  %xmm9,0x58(%rsp)
movsd  0x50(%rsp),%xmm1
addsd  0x130(%rsp),%xmm1
movsd  %xmm1,0x50(%rsp)
movsd  0x48(%rsp),%xmm1
addsd  0x128(%rsp),%xmm1
movsd  %xmm1,0x48(%rsp)
movsd  0x40(%rsp),%xmm1
addsd  0x120(%rsp),%xmm1
movsd  %xmm1,0x40(%rsp)
movsd  0x38(%rsp),%xmm1
addsd  0x118(%rsp),%xmm1
movsd  %xmm1,0x38(%rsp)
movsd  0x30(%rsp),%xmm1
addsd  0x110(%rsp),%xmm1
movsd  %xmm1,0x30(%rsp)
movsd  0x28(%rsp),%xmm1
addsd  0x108(%rsp),%xmm1
movsd  %xmm1,0x28(%rsp)
movsd  0x20(%rsp),%xmm1
addsd  0x100(%rsp),%xmm1
movsd  %xmm1,0x20(%rsp)
movsd  0x18(%rsp),%xmm10
addsd  0xf8(%rsp),%xmm10
movsd  %xmm10,0x18(%rsp)
movsd  0x10(%rsp),%xmm1
addsd  0xf0(%rsp),%xmm1
movsd  %xmm1,0x10(%rsp)
movsd  0x8(%rsp),%xmm1
addsd  0xe8(%rsp),%xmm1
movsd  %xmm1,0x8(%rsp)
movsd  0x288(%rsp),%xmm15
addsd  0xe0(%rsp),%xmm15
movsd  0x280(%rsp),%xmm8
addsd  0xd8(%rsp),%xmm8
movsd  0x278(%rsp),%xmm12
addsd  0xd0(%rsp),%xmm12
movsd  0x270(%rsp),%xmm13
addsd  0xc8(%rsp),%xmm13
movsd  0x268(%rsp),%xmm14
addsd  0xc0(%rsp),%xmm14
movsd  (%rsp),%xmm9
addsd  0xb8(%rsp),%xmm9
movsd  %xmm9,(%rsp)
movsd  0x260(%rsp),%xmm9
addsd  0xb0(%rsp),%xmm9
movsd  0x258(%rsp),%xmm11
addsd  0xa8(%rsp),%xmm11
movsd  0x250(%rsp),%xmm1
addsd  0x220(%rsp),%xmm1
movsd  0x248(%rsp),%xmm4
addsd  0x218(%rsp),%xmm4
movsd  0x240(%rsp),%xmm5
addsd  0x210(%rsp),%xmm5
movsd  0x238(%rsp),%xmm6
addsd  0x208(%rsp),%xmm6
movsd  0x230(%rsp),%xmm2
addsd  0x200(%rsp),%xmm2
movsd  -0x8(%rsp),%xmm10
addsd  0x1f8(%rsp),%xmm10
movsd  %xmm10,-0x8(%rsp)
movsd  0x228(%rsp),%xmm7
addsd  0x1f0(%rsp),%xmm7
add    $0x1,%r8
cmp    %r8,%rsi
je     1d23 <test+0xc23>
mov    (%rdi,%r8,8),%rdx
movapd %xmm3,%xmm10
test   $0x1,%dl
je     178d <test+0x68d>
movapd %xmm0,%xmm10
movsd  %xmm3,0x1e8(%rsp)
test   $0x2,%dl
je     17a4 <test+0x6a4>
movsd  %xmm0,0x1e8(%rsp)
movsd  %xmm3,0x1e0(%rsp)
test   $0x4,%dl
je     17bb <test+0x6bb>
movsd  %xmm0,0x1e0(%rsp)
movsd  %xmm3,0x1d8(%rsp)
test   $0x8,%dl
je     17d2 <test+0x6d2>
movsd  %xmm0,0x1d8(%rsp)
movsd  %xmm3,0x1d0(%rsp)
test   $0x10,%dl
je     17e9 <test+0x6e9>
movsd  %xmm0,0x1d0(%rsp)
movsd  %xmm3,0x1c8(%rsp)
test   $0x20,%dl
je     1800 <test+0x700>
movsd  %xmm0,0x1c8(%rsp)
movsd  %xmm3,0x1c0(%rsp)
test   $0x40,%dl
je     1817 <test+0x717>
movsd  %xmm0,0x1c0(%rsp)
movsd  %xmm3,0x1b8(%rsp)
test   $0x80,%edx
je     1831 <test+0x731>
movsd  %xmm0,0x1b8(%rsp)
movsd  %xmm3,0x1b0(%rsp)
test   $0x100,%edx
je     184b <test+0x74b>
movsd  %xmm0,0x1b0(%rsp)
movsd  %xmm3,0x1a8(%rsp)
test   $0x200,%edx
je     1865 <test+0x765>
movsd  %xmm0,0x1a8(%rsp)
movsd  %xmm3,0x1a0(%rsp)
test   $0x400,%edx
je     187f <test+0x77f>
movsd  %xmm0,0x1a0(%rsp)
movsd  %xmm3,0x198(%rsp)
test   $0x800,%edx
je     1899 <test+0x799>
movsd  %xmm0,0x198(%rsp)
movsd  %xmm3,0x190(%rsp)
test   $0x1000,%edx
je     18b3 <test+0x7b3>
movsd  %xmm0,0x190(%rsp)
movsd  %xmm3,0x188(%rsp)
test   $0x2000,%edx
je     18cd <test+0x7cd>
movsd  %xmm0,0x188(%rsp)
movsd  %xmm3,0x180(%rsp)
test   $0x4000,%edx
je     18e7 <test+0x7e7>
movsd  %xmm0,0x180(%rsp)
movsd  %xmm3,0x178(%rsp)
test   $0x8000,%edx
je     1901 <test+0x801>
movsd  %xmm0,0x178(%rsp)
movsd  %xmm3,0x170(%rsp)
test   $0x10000,%edx
je     191b <test+0x81b>
movsd  %xmm0,0x170(%rsp)
movsd  %xmm3,0x168(%rsp)
test   $0x20000,%edx
je     1935 <test+0x835>
movsd  %xmm0,0x168(%rsp)
movsd  %xmm3,0x160(%rsp)
test   $0x40000,%edx
je     194f <test+0x84f>
movsd  %xmm0,0x160(%rsp)
movsd  %xmm3,0x158(%rsp)
test   $0x80000,%edx
je     1969 <test+0x869>
movsd  %xmm0,0x158(%rsp)
movsd  %xmm3,0x150(%rsp)
test   $0x100000,%edx
je     1983 <test+0x883>
movsd  %xmm0,0x150(%rsp)
movsd  %xmm3,0x148(%rsp)
test   $0x200000,%edx
je     199d <test+0x89d>
movsd  %xmm0,0x148(%rsp)
movsd  %xmm3,0x140(%rsp)
test   $0x400000,%edx
je     19b7 <test+0x8b7>
movsd  %xmm0,0x140(%rsp)
movsd  %xmm3,0x138(%rsp)
test   $0x800000,%edx
je     19d1 <test+0x8d1>
movsd  %xmm0,0x138(%rsp)
movsd  %xmm3,0x130(%rsp)
test   $0x1000000,%edx
je     19eb <test+0x8eb>
movsd  %xmm0,0x130(%rsp)
movsd  %xmm3,0x128(%rsp)
test   $0x2000000,%edx
je     1a05 <test+0x905>
movsd  %xmm0,0x128(%rsp)
movsd  %xmm3,0x120(%rsp)
test   $0x4000000,%edx
je     1a1f <test+0x91f>
movsd  %xmm0,0x120(%rsp)
movsd  %xmm3,0x118(%rsp)
test   $0x8000000,%edx
je     1a39 <test+0x939>
movsd  %xmm0,0x118(%rsp)
movsd  %xmm3,0x110(%rsp)
test   $0x10000000,%edx
je     1a53 <test+0x953>
movsd  %xmm0,0x110(%rsp)
movsd  %xmm3,0x108(%rsp)
test   $0x20000000,%edx
je     1a6d <test+0x96d>
movsd  %xmm0,0x108(%rsp)
movsd  %xmm3,0x100(%rsp)
test   $0x40000000,%edx
je     1a87 <test+0x987>
movsd  %xmm0,0x100(%rsp)
mov    %edx,%eax
and    $0x80000000,%eax
movsd  %xmm3,0xf8(%rsp)
test   %rax,%rax
je     1aa5 <test+0x9a5>
movsd  %xmm0,0xf8(%rsp)
bt     $0x20,%rdx
movsd  %xmm3,0xf0(%rsp)
jae    1abe <test+0x9be>
movsd  %xmm0,0xf0(%rsp)
bt     $0x21,%rdx
movsd  %xmm3,0xe8(%rsp)
jae    1ad7 <test+0x9d7>
movsd  %xmm0,0xe8(%rsp)
bt     $0x22,%rdx
movsd  %xmm3,0xe0(%rsp)
jae    1af0 <test+0x9f0>
movsd  %xmm0,0xe0(%rsp)
bt     $0x23,%rdx
movsd  %xmm3,0xd8(%rsp)
jae    1b09 <test+0xa09>
movsd  %xmm0,0xd8(%rsp)
bt     $0x24,%rdx
movsd  %xmm3,0xd0(%rsp)
jae    1b22 <test+0xa22>
movsd  %xmm0,0xd0(%rsp)
bt     $0x25,%rdx
movsd  %xmm3,0xc8(%rsp)
jae    1b3b <test+0xa3b>
movsd  %xmm0,0xc8(%rsp)
bt     $0x26,%rdx
movsd  %xmm3,0xc0(%rsp)
jae    1b54 <test+0xa54>
movsd  %xmm0,0xc0(%rsp)
bt     $0x27,%rdx
movsd  %xmm3,0xb8(%rsp)
jae    1b6d <test+0xa6d>
movsd  %xmm0,0xb8(%rsp)
bt     $0x28,%rdx
movsd  %xmm3,0xb0(%rsp)
jae    1b86 <test+0xa86>
movsd  %xmm0,0xb0(%rsp)
bt     $0x29,%rdx
movsd  %xmm3,0xa8(%rsp)
jae    1b9f <test+0xa9f>
movsd  %xmm0,0xa8(%rsp)
movsd  %xmm7,0x228(%rsp)
movsd  %xmm2,0x230(%rsp)
movsd  %xmm6,0x238(%rsp)
movsd  %xmm5,0x240(%rsp)
movsd  %xmm4,0x248(%rsp)
movsd  %xmm1,0x250(%rsp)
movsd  %xmm11,0x258(%rsp)
movsd  %xmm9,0x260(%rsp)
movsd  %xmm14,0x268(%rsp)
movsd  %xmm13,0x270(%rsp)
movsd  %xmm12,0x278(%rsp)
movsd  %xmm8,0x280(%rsp)
movsd  %xmm15,0x288(%rsp)
bt     $0x2a,%rdx
movapd %xmm3,%xmm1
jae    1c2a <test+0xb2a>
movapd %xmm0,%xmm1
movsd  -0x78(%rsp),%xmm13
movsd  -0x70(%rsp),%xmm12
movsd  -0x60(%rsp),%xmm11
movsd  -0x58(%rsp),%xmm15
movsd  -0x50(%rsp),%xmm9
bt     $0x2b,%rdx
movapd %xmm3,%xmm2
jae    1c5c <test+0xb5c>
movapd %xmm0,%xmm2
movsd  -0x48(%rsp),%xmm8
bt     $0x2c,%rdx
movapd %xmm3,%xmm4
jae    1c72 <test+0xb72>
movapd %xmm0,%xmm4
movsd  %xmm2,0x218(%rsp)
movsd  -0x40(%rsp),%xmm7
bt     $0x2d,%rdx
movapd %xmm3,%xmm2
jae    1c90 <test+0xb90>
movapd %xmm0,%xmm2
movsd  %xmm2,0x208(%rsp)
movsd  -0x68(%rsp),%xmm2
movsd  -0x38(%rsp),%xmm6
bt     $0x2e,%rdx
movapd %xmm3,%xmm5
jae    1cb4 <test+0xbb4>
movapd %xmm0,%xmm5
movsd  %xmm5,0x200(%rsp)
movsd  %xmm4,0x210(%rsp)
movsd  -0x30(%rsp),%xmm5
bt     $0x2f,%rdx
movapd %xmm3,%xmm4
jae    1cdb <test+0xbdb>
movapd %xmm0,%xmm4
movsd  %xmm4,0x1f8(%rsp)
movsd  %xmm1,0x220(%rsp)
movsd  -0x28(%rsp),%xmm4
bt     $0x30,%rdx
movapd %xmm3,%xmm1
jae    1d02 <test+0xc02>
movapd %xmm0,%xmm1
movsd  %xmm1,0x1f0(%rsp)
bt     $0x31,%rdx
movapd %xmm3,%xmm1
jae    1380 <test+0x280>
movapd %xmm0,%xmm1
jmp    1380 <test+0x280>
movsd  -0x20(%rsp),%xmm0
movsd  %xmm0,(%rcx)
movsd  -0x28(%rsp),%xmm0
movsd  %xmm0,0x8(%rcx)
movsd  -0x30(%rsp),%xmm0
movsd  %xmm0,0x10(%rcx)
movsd  -0x38(%rsp),%xmm0
movsd  %xmm0,0x18(%rcx)
movsd  -0x40(%rsp),%xmm0
movsd  %xmm0,0x20(%rcx)
movsd  -0x48(%rsp),%xmm0
movsd  %xmm0,0x28(%rcx)
movsd  -0x50(%rsp),%xmm0
movsd  %xmm0,0x30(%rcx)
movsd  -0x58(%rsp),%xmm0
movsd  %xmm0,0x38(%rcx)
movsd  -0x60(%rsp),%xmm0
movsd  %xmm0,0x40(%rcx)
movsd  -0x70(%rsp),%xmm0
movsd  %xmm0,0x48(%rcx)
movsd  -0x78(%rsp),%xmm0
movsd  %xmm0,0x50(%rcx)
movsd  -0x18(%rsp),%xmm0
movsd  %xmm0,0x58(%rcx)
movsd  0x70(%rsp),%xmm0
movsd  %xmm0,0x60(%rcx)
movsd  0xa0(%rsp),%xmm0
movsd  %xmm0,0x68(%rcx)
movsd  0x98(%rsp),%xmm0
movsd  %xmm0,0x70(%rcx)
movsd  0x90(%rsp),%xmm0
movsd  %xmm0,0x78(%rcx)
movsd  0x88(%rsp),%xmm0
movsd  %xmm0,0x80(%rcx)
movsd  0x80(%rsp),%xmm0
movsd  %xmm0,0x88(%rcx)
movsd  0x78(%rsp),%xmm0
movsd  %xmm0,0x90(%rcx)
movsd  -0x68(%rsp),%xmm0
movsd  %xmm0,0x98(%rcx)
movsd  -0x80(%rsp),%xmm0
movsd  %xmm0,0xa0(%rcx)
movsd  0x68(%rsp),%xmm0
movsd  %xmm0,0xa8(%rcx)
movsd  0x60(%rsp),%xmm0
movsd  %xmm0,0xb0(%rcx)
movsd  0x58(%rsp),%xmm0
movsd  %xmm0,0xb8(%rcx)
movsd  0x50(%rsp),%xmm0
movsd  %xmm0,0xc0(%rcx)
movsd  0x48(%rsp),%xmm0
movsd  %xmm0,0xc8(%rcx)
movsd  0x40(%rsp),%xmm0
movsd  %xmm0,0xd0(%rcx)
movsd  0x38(%rsp),%xmm0
movsd  %xmm0,0xd8(%rcx)
movsd  0x30(%rsp),%xmm0
movsd  %xmm0,0xe0(%rcx)
movsd  0x28(%rsp),%xmm0
movsd  %xmm0,0xe8(%rcx)
movsd  0x20(%rsp),%xmm0
movsd  %xmm0,0xf0(%rcx)
movsd  0x18(%rsp),%xmm0
movsd  %xmm0,0xf8(%rcx)
movsd  0x10(%rsp),%xmm0
movsd  %xmm0,0x100(%rcx)
movsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x108(%rcx)
movsd  %xmm15,0x110(%rcx)
movsd  %xmm8,0x118(%rcx)
movsd  %xmm12,0x120(%rcx)
movsd  %xmm13,0x128(%rcx)
movsd  %xmm14,0x130(%rcx)
movsd  (%rsp),%xmm0
movsd  %xmm0,0x138(%rcx)
movsd  %xmm9,0x140(%rcx)
movsd  %xmm11,0x148(%rcx)
movsd  %xmm1,0x150(%rcx)
movsd  %xmm4,0x158(%rcx)
movsd  %xmm5,0x160(%rcx)
movsd  %xmm6,0x168(%rcx)
movsd  %xmm2,0x170(%rcx)
movsd  -0x8(%rsp),%xmm0
movsd  %xmm0,0x178(%rcx)
movsd  %xmm7,0x180(%rcx)
movsd  -0x10(%rsp),%xmm0
movsd  %xmm0,0x188(%rcx)
add    $0x290,%rsp
ret

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

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