int main(void) {
  double a[(128 * 11 / 64 + 3)], b[(128 * 11 / 64 + 3)], c[(128 * 11 / 64 + 3)],
      d[(128 * 11 / 64 + 3)];
  for (int i = 0; i < (128 * 11 / 64 + 3); ++i) {
    b[i] = i % 17;
    c[i] = i % 9 + 11;
    d[i] = i % 13 + 14;
    asm volatile("" ::: "memory");
  }
  {
    f_0(a, b, c, d);
    for (int i = 0; i < (128 * 11 / 64 + 3); ++i) {
      double mb = (0 & 1 ? -b[i] : b[i]);
      double mc = c[i];
      double md = (0 & 2 ? -d[i] : d[i]);
      double fma = __builtin_fma(mb, mc, md);
      double truev = (0 & 4 ? -fma : fma);
      if (a[i] != (i % 17 < 10 ? truev : 10.0))
        __builtin_abort();
      asm volatile("" ::: "memory");
    }
  }
  {
    f_1(a, b, c, d);
    for (int i = 0; i < (128 * 11 / 64 + 3); ++i) {
      double mb = (1 & 1 ? -b[i] : b[i]);
      double mc = c[i];
      double md = (1 & 2 ? -d[i] : d[i]);
      double fma = __builtin_fma(mb, mc, md);
      double truev = (1 & 4 ? -fma : fma);
      if (a[i] != (i % 17 < 10 ? truev : 10.0))
        __builtin_abort();
      asm volatile("" ::: "memory");
    }
  }
  {
    f_2(a, b, c, d);
    for (int i = 0; i < (128 * 11 / 64 + 3); ++i) {
      double mb = (2 & 1 ? -b[i] : b[i]);
      double mc = c[i];
      double md = (2 & 2 ? -d[i] : d[i]);
      double fma = __builtin_fma(mb, mc, md);
      double truev = (2 & 4 ? -fma : fma);
      if (a[i] != (i % 17 < 10 ? truev : 10.0))
        __builtin_abort();
      asm volatile("" ::: "memory");
    }
  }
  {
    f_3(a, b, c, d);
    for (int i = 0; i < (128 * 11 / 64 + 3); ++i) {
      double mb = (3 & 1 ? -b[i] : b[i]);
      double mc = c[i];
      double md = (3 & 2 ? -d[i] : d[i]);
      double fma = __builtin_fma(mb, mc, md);
      double truev = (3 & 4 ? -fma : fma);
      if (a[i] != (i % 17 < 10 ? truev : 10.0))
        __builtin_abort();
      asm volatile("" ::: "memory");
    }
  }
  {
    f_4(a, b, c, d);
    for (int i = 0; i < (128 * 11 / 64 + 3); ++i) {
      double mb = (4 & 1 ? -b[i] : b[i]);
      double mc = c[i];
      double md = (4 & 2 ? -d[i] : d[i]);
      double fma = __builtin_fma(mb, mc, md);
      double truev = (4 & 4 ? -fma : fma);
      if (a[i] != (i % 17 < 10 ? truev : 10.0))
        __builtin_abort();
      asm volatile("" ::: "memory");
    }
  }
  {
    f_5(a, b, c, d);
    for (int i = 0; i < (128 * 11 / 64 + 3); ++i) {
      double mb = (5 & 1 ? -b[i] : b[i]);
      double mc = c[i];
      double md = (5 & 2 ? -d[i] : d[i]);
      double fma = __builtin_fma(mb, mc, md);
      double truev = (5 & 4 ? -fma : fma);
      if (a[i] != (i % 17 < 10 ? truev : 10.0))
        __builtin_abort();
      asm volatile("" ::: "memory");
    }
  }
  {
    f_6(a, b, c, d);
    for (int i = 0; i < (128 * 11 / 64 + 3); ++i) {
      double mb = (6 & 1 ? -b[i] : b[i]);
      double mc = c[i];
      double md = (6 & 2 ? -d[i] : d[i]);
      double fma = __builtin_fma(mb, mc, md);
      double truev = (6 & 4 ? -fma : fma);
      if (a[i] != (i % 17 < 10 ? truev : 10.0))
        __builtin_abort();
      asm volatile("" ::: "memory");
    }
  }
  {
    f_7(a, b, c, d);
    for (int i = 0; i < (128 * 11 / 64 + 3); ++i) {
      double mb = (7 & 1 ? -b[i] : b[i]);
      double mc = c[i];
      double md = (7 & 2 ? -d[i] : d[i]);
      double fma = __builtin_fma(mb, mc, md);
      double truev = (7 & 4 ? -fma : fma);
      if (a[i] != (i % 17 < 10 ? truev : 10.0))
        __builtin_abort();
      asm volatile("" ::: "memory");
    }
  }
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x540,%rsp
movl   $0x0,-0x4(%rbp)
movl   $0x0,-0x344(%rbp)
cmpl   $0x19,-0x344(%rbp)
jge    1249 <main+0xa9>
mov    -0x344(%rbp),%eax
mov    $0x11,%ecx
cltd
idiv   %ecx
cvtsi2sd %edx,%xmm0
movslq -0x344(%rbp),%rax
movsd  %xmm0,-0x1a0(%rbp,%rax,8)
ff ff
mov    -0x344(%rbp),%eax
mov    $0x9,%ecx
cltd
idiv   %ecx
add    $0xb,%edx
cvtsi2sd %edx,%xmm0
movslq -0x344(%rbp),%rax
movsd  %xmm0,-0x270(%rbp,%rax,8)
ff ff
mov    -0x344(%rbp),%eax
mov    $0xd,%ecx
cltd
idiv   %ecx
add    $0xe,%edx
cvtsi2sd %edx,%xmm0
movslq -0x344(%rbp),%rax
movsd  %xmm0,-0x340(%rbp,%rax,8)
ff ff
mov    -0x344(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x344(%rbp)
jmp    11bc <main+0x1c>
lea    -0xd0(%rbp),%rdi
lea    -0x1a0(%rbp),%rsi
lea    -0x270(%rbp),%rdx
lea    -0x340(%rbp),%rcx
mov    $0x0,%al
call   1040 <f_0@plt>
movl   $0x0,-0x348(%rbp)
cmpl   $0x19,-0x348(%rbp)
jge    1397 <main+0x1f7>
movslq -0x348(%rbp),%rax
movsd  -0x1a0(%rbp,%rax,8),%xmm0
ff ff
movsd  %xmm0,-0x350(%rbp)
ff
movslq -0x348(%rbp),%rax
movsd  -0x270(%rbp,%rax,8),%xmm0
ff ff
movsd  %xmm0,-0x358(%rbp)
ff
movslq -0x348(%rbp),%rax
movsd  -0x340(%rbp,%rax,8),%xmm0
ff ff
movsd  %xmm0,-0x360(%rbp)
ff
movsd  -0x350(%rbp),%xmm0
ff
movsd  -0x358(%rbp),%xmm1
ff
movsd  -0x360(%rbp),%xmm2
ff
call   10a0 <fma@plt>
movsd  %xmm0,-0x368(%rbp)
ff
movsd  -0x368(%rbp),%xmm0
ff
movsd  %xmm0,-0x370(%rbp)
ff
movslq -0x348(%rbp),%rax
movsd  -0xd0(%rbp,%rax,8),%xmm0
ff ff
movsd  %xmm0,-0x4c8(%rbp)
ff
mov    -0x348(%rbp),%eax
mov    $0x11,%ecx
cltd
idiv   %ecx
cmp    $0xa,%edx
jge    1344 <main+0x1a4>
movsd  -0x370(%rbp),%xmm0
ff
movsd  %xmm0,-0x4d0(%rbp)
ff
jmp    1359 <main+0x1b9>
movsd  0xcb4(%rip),%xmm0
movsd  %xmm0,-0x4d0(%rbp)
ff
jmp    1359 <main+0x1b9>
movsd  -0x4c8(%rbp),%xmm0
ff
movsd  -0x4d0(%rbp),%xmm1
ff
ucomisd %xmm1,%xmm0
jne    137e <main+0x1de>
jp     137e <main+0x1de>
jmp    1383 <main+0x1e3>
call   1050 <abort@plt>
mov    -0x348(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x348(%rbp)
jmp    1276 <main+0xd6>
lea    -0xd0(%rbp),%rdi
lea    -0x1a0(%rbp),%rsi
lea    -0x270(%rbp),%rdx
lea    -0x340(%rbp),%rcx
mov    $0x0,%al
call   1060 <f_1@plt>
movl   $0x0,-0x374(%rbp)
cmpl   $0x19,-0x374(%rbp)
jge    14fc <main+0x35c>
movslq -0x374(%rbp),%rax
movsd  -0x1a0(%rbp,%rax,8),%xmm0
ff ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x380(%rbp)
ff
movslq -0x374(%rbp),%rax
movsd  -0x270(%rbp,%rax,8),%xmm0
ff ff
movsd  %xmm0,-0x388(%rbp)
ff
movslq -0x374(%rbp),%rax
movsd  -0x340(%rbp,%rax,8),%xmm0
ff ff
movsd  %xmm0,-0x390(%rbp)
ff
movsd  -0x380(%rbp),%xmm0
ff
movsd  -0x388(%rbp),%xmm1
ff
movsd  -0x390(%rbp),%xmm2
ff
call   10a0 <fma@plt>
movsd  %xmm0,-0x398(%rbp)
ff
movsd  -0x398(%rbp),%xmm0
ff
movsd  %xmm0,-0x3a0(%rbp)
ff
movslq -0x374(%rbp),%rax
movsd  -0xd0(%rbp,%rax,8),%xmm0
ff ff
movsd  %xmm0,-0x4d8(%rbp)
ff
mov    -0x374(%rbp),%eax
mov    $0x11,%ecx
cltd
idiv   %ecx
cmp    $0xa,%edx
jge    14a9 <main+0x309>
movsd  -0x3a0(%rbp),%xmm0
ff
movsd  %xmm0,-0x4e0(%rbp)
ff
jmp    14be <main+0x31e>
movsd  0xb4f(%rip),%xmm0
movsd  %xmm0,-0x4e0(%rbp)
ff
jmp    14be <main+0x31e>
movsd  -0x4d8(%rbp),%xmm0
ff
movsd  -0x4e0(%rbp),%xmm1
ff
ucomisd %xmm1,%xmm0
jne    14e3 <main+0x343>
jp     14e3 <main+0x343>
jmp    14e8 <main+0x348>
call   1050 <abort@plt>
mov    -0x374(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x374(%rbp)
jmp    13c4 <main+0x224>
lea    -0xd0(%rbp),%rdi
lea    -0x1a0(%rbp),%rsi
lea    -0x270(%rbp),%rdx
lea    -0x340(%rbp),%rcx
mov    $0x0,%al
call   1030 <f_2@plt>
movl   $0x0,-0x3a4(%rbp)
cmpl   $0x19,-0x3a4(%rbp)
jge    1661 <main+0x4c1>
movslq -0x3a4(%rbp),%rax
movsd  -0x1a0(%rbp,%rax,8),%xmm0
ff ff
movsd  %xmm0,-0x3b0(%rbp)
ff
movslq -0x3a4(%rbp),%rax
movsd  -0x270(%rbp,%rax,8),%xmm0
ff ff
movsd  %xmm0,-0x3b8(%rbp)
ff
movslq -0x3a4(%rbp),%rax
movsd  -0x340(%rbp,%rax,8),%xmm0
ff ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x3c0(%rbp)
ff
movsd  -0x3b0(%rbp),%xmm0
ff
movsd  -0x3b8(%rbp),%xmm1
ff
movsd  -0x3c0(%rbp),%xmm2
ff
call   10a0 <fma@plt>
movsd  %xmm0,-0x3c8(%rbp)
ff
movsd  -0x3c8(%rbp),%xmm0
ff
movsd  %xmm0,-0x3d0(%rbp)
ff
movslq -0x3a4(%rbp),%rax
movsd  -0xd0(%rbp,%rax,8),%xmm0
ff ff
movsd  %xmm0,-0x4e8(%rbp)
ff
mov    -0x3a4(%rbp),%eax
mov    $0x11,%ecx
cltd
idiv   %ecx
cmp    $0xa,%edx
jge    160e <main+0x46e>
movsd  -0x3d0(%rbp),%xmm0
movsd  %xmm0,-0x4f0(%rbp)
ff
jmp    1623 <main+0x483>
movsd  0x9ea(%rip),%xmm0
movsd  %xmm0,-0x4f0(%rbp)
ff
jmp    1623 <main+0x483>
movsd  -0x4e8(%rbp),%xmm0
ff
movsd  -0x4f0(%rbp),%xmm1
ff
ucomisd %xmm1,%xmm0
jne    1648 <main+0x4a8>
jp     1648 <main+0x4a8>
jmp    164d <main+0x4ad>
call   1050 <abort@plt>
mov    -0x3a4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3a4(%rbp)
jmp    1529 <main+0x389>
lea    -0xd0(%rbp),%rdi
lea    -0x1a0(%rbp),%rsi
lea    -0x270(%rbp),%rdx
lea    -0x340(%rbp),%rcx
mov    $0x0,%al
call   1070 <f_3@plt>
movl   $0x0,-0x3d4(%rbp)
cmpl   $0x19,-0x3d4(%rbp)
jge    17dd <main+0x63d>
movslq -0x3d4(%rbp),%rax
movsd  -0x1a0(%rbp,%rax,8),%xmm0
ff ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x3e0(%rbp)
ff
movslq -0x3d4(%rbp),%rax
movsd  -0x270(%rbp,%rax,8),%xmm0
ff ff
movsd  %xmm0,-0x3e8(%rbp)
ff
movslq -0x3d4(%rbp),%rax
movsd  -0x340(%rbp,%rax,8),%xmm0
ff ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x3f0(%rbp)
ff
movsd  -0x3e0(%rbp),%xmm0
ff
movsd  -0x3e8(%rbp),%xmm1
ff
movsd  -0x3f0(%rbp),%xmm2
ff
call   10a0 <fma@plt>
movsd  %xmm0,-0x3f8(%rbp)
ff
movsd  -0x3f8(%rbp),%xmm0
ff
movsd  %xmm0,-0x400(%rbp)
ff
movslq -0x3d4(%rbp),%rax
movsd  -0xd0(%rbp,%rax,8),%xmm0
ff ff
movsd  %xmm0,-0x4f8(%rbp)
ff
mov    -0x3d4(%rbp),%eax
mov    $0x11,%ecx
cltd
idiv   %ecx
cmp    $0xa,%edx
jge    178a <main+0x5ea>
movsd  -0x400(%rbp),%xmm0
ff
movsd  %xmm0,-0x500(%rbp)
ff
jmp    179f <main+0x5ff>
movsd  0x86e(%rip),%xmm0
movsd  %xmm0,-0x500(%rbp)
ff
jmp    179f <main+0x5ff>
movsd  -0x4f8(%rbp),%xmm0
ff
movsd  -0x500(%rbp),%xmm1
ff
ucomisd %xmm1,%xmm0
jne    17c4 <main+0x624>
jp     17c4 <main+0x624>
jmp    17c9 <main+0x629>
call   1050 <abort@plt>
mov    -0x3d4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3d4(%rbp)
jmp    168e <main+0x4ee>
lea    -0xd0(%rbp),%rdi
lea    -0x1a0(%rbp),%rsi
lea    -0x270(%rbp),%rdx
lea    -0x340(%rbp),%rcx
mov    $0x0,%al
call   10b0 <f_4@plt>
movl   $0x0,-0x404(%rbp)
cmpl   $0x19,-0x404(%rbp)
jge    1942 <main+0x7a2>
movslq -0x404(%rbp),%rax
movsd  -0x1a0(%rbp,%rax,8),%xmm0
ff ff
movsd  %xmm0,-0x410(%rbp)
ff
movslq -0x404(%rbp),%rax
movsd  -0x270(%rbp,%rax,8),%xmm0
ff ff
movsd  %xmm0,-0x418(%rbp)
ff
movslq -0x404(%rbp),%rax
movsd  -0x340(%rbp,%rax,8),%xmm0
ff ff
movsd  %xmm0,-0x420(%rbp)
ff
movsd  -0x410(%rbp),%xmm0
ff
movsd  -0x418(%rbp),%xmm1
ff
movsd  -0x420(%rbp),%xmm2
ff
call   10a0 <fma@plt>
movsd  %xmm0,-0x428(%rbp)
ff
movsd  -0x428(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x430(%rbp)
ff
movslq -0x404(%rbp),%rax
movsd  -0xd0(%rbp,%rax,8),%xmm0
ff ff
movsd  %xmm0,-0x508(%rbp)
ff
mov    -0x404(%rbp),%eax
mov    $0x11,%ecx
cltd
idiv   %ecx
cmp    $0xa,%edx
jge    18ef <main+0x74f>
movsd  -0x430(%rbp),%xmm0
ff
movsd  %xmm0,-0x510(%rbp)
ff
jmp    1904 <main+0x764>
movsd  0x709(%rip),%xmm0
movsd  %xmm0,-0x510(%rbp)
ff
jmp    1904 <main+0x764>
movsd  -0x508(%rbp),%xmm0
ff
movsd  -0x510(%rbp),%xmm1
ff
ucomisd %xmm1,%xmm0
jne    1929 <main+0x789>
jp     1929 <main+0x789>
jmp    192e <main+0x78e>
call   1050 <abort@plt>
mov    -0x404(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x404(%rbp)
jmp    180a <main+0x66a>
lea    -0xd0(%rbp),%rdi
lea    -0x1a0(%rbp),%rsi
lea    -0x270(%rbp),%rdx
lea    -0x340(%rbp),%rcx
mov    $0x0,%al
call   1080 <f_5@plt>
movl   $0x0,-0x434(%rbp)
cmpl   $0x19,-0x434(%rbp)
jge    1abe <main+0x91e>
movslq -0x434(%rbp),%rax
movsd  -0x1a0(%rbp,%rax,8),%xmm0
ff ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x440(%rbp)
ff
movslq -0x434(%rbp),%rax
movsd  -0x270(%rbp,%rax,8),%xmm0
ff ff
movsd  %xmm0,-0x448(%rbp)
ff
movslq -0x434(%rbp),%rax
movsd  -0x340(%rbp,%rax,8),%xmm0
ff ff
movsd  %xmm0,-0x450(%rbp)
ff
movsd  -0x440(%rbp),%xmm0
ff
movsd  -0x448(%rbp),%xmm1
ff
movsd  -0x450(%rbp),%xmm2
ff
call   10a0 <fma@plt>
movsd  %xmm0,-0x458(%rbp)
ff
movsd  -0x458(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x460(%rbp)
ff
movslq -0x434(%rbp),%rax
movsd  -0xd0(%rbp,%rax,8),%xmm0
ff ff
movsd  %xmm0,-0x518(%rbp)
ff
mov    -0x434(%rbp),%eax
mov    $0x11,%ecx
cltd
idiv   %ecx
cmp    $0xa,%edx
jge    1a6b <main+0x8cb>
movsd  -0x460(%rbp),%xmm0
ff
movsd  %xmm0,-0x520(%rbp)
ff
jmp    1a80 <main+0x8e0>
movsd  0x58d(%rip),%xmm0
movsd  %xmm0,-0x520(%rbp)
ff
jmp    1a80 <main+0x8e0>
movsd  -0x518(%rbp),%xmm0
ff
movsd  -0x520(%rbp),%xmm1
ff
ucomisd %xmm1,%xmm0
jne    1aa5 <main+0x905>
jp     1aa5 <main+0x905>
jmp    1aaa <main+0x90a>
call   1050 <abort@plt>
mov    -0x434(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x434(%rbp)
jmp    196f <main+0x7cf>
lea    -0xd0(%rbp),%rdi
lea    -0x1a0(%rbp),%rsi
lea    -0x270(%rbp),%rdx
lea    -0x340(%rbp),%rcx
mov    $0x0,%al
call   10c0 <f_6@plt>
movl   $0x0,-0x464(%rbp)
cmpl   $0x19,-0x464(%rbp)
jge    1c3a <main+0xa9a>
movslq -0x464(%rbp),%rax
movsd  -0x1a0(%rbp,%rax,8),%xmm0
ff ff
movsd  %xmm0,-0x470(%rbp)
ff
movslq -0x464(%rbp),%rax
movsd  -0x270(%rbp,%rax,8),%xmm0
ff ff
movsd  %xmm0,-0x478(%rbp)
ff
movslq -0x464(%rbp),%rax
movsd  -0x340(%rbp,%rax,8),%xmm0
ff ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x480(%rbp)
ff
movsd  -0x470(%rbp),%xmm0
ff
movsd  -0x478(%rbp),%xmm1
ff
movsd  -0x480(%rbp),%xmm2
ff
call   10a0 <fma@plt>
movsd  %xmm0,-0x488(%rbp)
ff
movsd  -0x488(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x490(%rbp)
ff
movslq -0x464(%rbp),%rax
movsd  -0xd0(%rbp,%rax,8),%xmm0
ff ff
movsd  %xmm0,-0x528(%rbp)
ff
mov    -0x464(%rbp),%eax
mov    $0x11,%ecx
cltd
idiv   %ecx
cmp    $0xa,%edx
jge    1be7 <main+0xa47>
movsd  -0x490(%rbp),%xmm0
ff
movsd  %xmm0,-0x530(%rbp)
ff
jmp    1bfc <main+0xa5c>
movsd  0x411(%rip),%xmm0
movsd  %xmm0,-0x530(%rbp)
ff
jmp    1bfc <main+0xa5c>
movsd  -0x528(%rbp),%xmm0
ff
movsd  -0x530(%rbp),%xmm1
ff
ucomisd %xmm1,%xmm0
jne    1c21 <main+0xa81>
jp     1c21 <main+0xa81>
jmp    1c26 <main+0xa86>
call   1050 <abort@plt>
mov    -0x464(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x464(%rbp)
jmp    1aeb <main+0x94b>
lea    -0xd0(%rbp),%rdi
lea    -0x1a0(%rbp),%rsi
lea    -0x270(%rbp),%rdx
lea    -0x340(%rbp),%rcx
mov    $0x0,%al
call   1090 <f_7@plt>
movl   $0x0,-0x494(%rbp)
cmpl   $0x19,-0x494(%rbp)
jge    1dcd <main+0xc2d>
movslq -0x494(%rbp),%rax
movsd  -0x1a0(%rbp,%rax,8),%xmm0
ff ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x4a0(%rbp)
ff
movslq -0x494(%rbp),%rax
movsd  -0x270(%rbp,%rax,8),%xmm0
ff ff
movsd  %xmm0,-0x4a8(%rbp)
ff
movslq -0x494(%rbp),%rax
movsd  -0x340(%rbp,%rax,8),%xmm0
ff ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x4b0(%rbp)
ff
movsd  -0x4a0(%rbp),%xmm0
ff
movsd  -0x4a8(%rbp),%xmm1
ff
movsd  -0x4b0(%rbp),%xmm2
ff
call   10a0 <fma@plt>
movsd  %xmm0,-0x4b8(%rbp)
ff
movsd  -0x4b8(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x4c0(%rbp)
ff
movslq -0x494(%rbp),%rax
movsd  -0xd0(%rbp,%rax,8),%xmm0
ff ff
movsd  %xmm0,-0x538(%rbp)
ff
mov    -0x494(%rbp),%eax
mov    $0x11,%ecx
cltd
idiv   %ecx
cmp    $0xa,%edx
jge    1d7a <main+0xbda>
movsd  -0x4c0(%rbp),%xmm0
ff
movsd  %xmm0,-0x540(%rbp)
ff
jmp    1d8f <main+0xbef>
movsd  0x27e(%rip),%xmm0
movsd  %xmm0,-0x540(%rbp)
ff
jmp    1d8f <main+0xbef>
movsd  -0x538(%rbp),%xmm0
ff
movsd  -0x540(%rbp),%xmm1
ff
ucomisd %xmm1,%xmm0
jne    1db4 <main+0xc14>
jp     1db4 <main+0xc14>
jmp    1db9 <main+0xc19>
call   1050 <abort@plt>
mov    -0x494(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x494(%rbp)
jmp    1c67 <main+0xac7>
xor    %eax,%eax
add    $0x540,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %rbx
sub    $0x348,%rsp
xor    %eax,%eax
nopl   0x0(%rax,%rax,1)
movzbl %al,%ecx
imul   $0xf1,%ecx,%edx
shr    $0xc,%edx
mov    %edx,%esi
shl    $0x4,%esi
or     %edx,%esi
imul   $0x39,%ecx,%edx
shr    $0x9,%edx
lea    (%rdx,%rdx,8),%edx
mov    $0xb,%bl
sub    %dl,%bl
imul   $0x4f,%ecx,%ecx
shr    $0xa,%ecx
lea    (%rcx,%rcx,2),%edx
lea    (%rcx,%rdx,4),%ecx
mov    $0xe,%dl
sub    %cl,%dl
mov    %eax,%ecx
sub    %esi,%ecx
movzbl %cl,%ecx
xorps  %xmm0,%xmm0
cvtsi2sd %ecx,%xmm0
movsd  %xmm0,0x1b0(%rsp,%rax,8)
movzbl %bl,%ecx
add    %eax,%ecx
movzbl %cl,%ecx
xorps  %xmm0,%xmm0
cvtsi2sd %ecx,%xmm0
movsd  %xmm0,0xe0(%rsp,%rax,8)
movzbl %dl,%ecx
add    %eax,%ecx
movzbl %cl,%ecx
xorps  %xmm0,%xmm0
cvtsi2sd %ecx,%xmm0
movsd  %xmm0,0x10(%rsp,%rax,8)
add    $0x1,%rax
cmp    $0x19,%rax
jne    11b0 <main+0x10>
xor    %ebx,%ebx
lea    0x280(%rsp),%rdi
lea    0x1b0(%rsp),%rsi
lea    0xe0(%rsp),%rdx
lea    0x10(%rsp),%rcx
xor    %eax,%eax
call   1040 <f_0@plt>
movsd  0xda4(%rip),%xmm1
nopl   0x0(%rax)
movzbl %bl,%eax
imul   $0xf1,%eax,%eax
shr    $0xc,%eax
mov    %eax,%ecx
shl    $0x4,%ecx
or     %eax,%ecx
mov    %ebx,%eax
sub    %cl,%al
movsd  0x280(%rsp,%rbx,8),%xmm2
movapd %xmm1,%xmm0
cmp    $0x9,%al
ja     12b9 <main+0x119>
movsd  0x1b0(%rsp,%rbx,8),%xmm0
movsd  0xe0(%rsp,%rbx,8),%xmm1
movsd  %xmm2,0x8(%rsp)
movsd  0x10(%rsp,%rbx,8),%xmm2
call   10a0 <fma@plt>
movsd  0x8(%rsp),%xmm2
movsd  0xd47(%rip),%xmm1
ucomisd %xmm0,%xmm2
jne    180b <main+0x66b>
jp     180b <main+0x66b>
add    $0x1,%rbx
cmp    $0x19,%rbx
jne    1260 <main+0xc0>
xor    %ebx,%ebx
lea    0x280(%rsp),%rdi
lea    0x1b0(%rsp),%rsi
lea    0xe0(%rsp),%rdx
lea    0x10(%rsp),%rcx
xor    %eax,%eax
call   1060 <f_1@plt>
movsd  0xcff(%rip),%xmm1
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movzbl %bl,%eax
imul   $0xf1,%eax,%eax
shr    $0xc,%eax
mov    %eax,%ecx
shl    $0x4,%ecx
or     %eax,%ecx
mov    %ebx,%eax
sub    %cl,%al
movsd  0x280(%rsp,%rbx,8),%xmm2
movapd %xmm1,%xmm0
cmp    $0x9,%al
ja     1371 <main+0x1d1>
movsd  0x1b0(%rsp,%rbx,8),%xmm0
xorpd  0xcc7(%rip),%xmm0
movsd  0xe0(%rsp,%rbx,8),%xmm1
movsd  %xmm2,0x8(%rsp)
movsd  0x10(%rsp,%rbx,8),%xmm2
call   10a0 <fma@plt>
movsd  0x8(%rsp),%xmm2
movsd  0xc8f(%rip),%xmm1
ucomisd %xmm0,%xmm2
jne    180b <main+0x66b>
jp     180b <main+0x66b>
add    $0x1,%rbx
cmp    $0x19,%rbx
jne    1310 <main+0x170>
xor    %ebx,%ebx
lea    0x280(%rsp),%rdi
lea    0x1b0(%rsp),%rsi
lea    0xe0(%rsp),%rdx
lea    0x10(%rsp),%rcx
xor    %eax,%eax
call   1030 <f_2@plt>
movsd  0xc47(%rip),%xmm1
nopl   0x0(%rax)
movzbl %bl,%eax
imul   $0xf1,%eax,%eax
shr    $0xc,%eax
mov    %eax,%ecx
shl    $0x4,%ecx
or     %eax,%ecx
mov    %ebx,%eax
sub    %cl,%al
movsd  0x280(%rsp,%rbx,8),%xmm2
movapd %xmm1,%xmm0
cmp    $0x9,%al
ja     1420 <main+0x280>
movsd  0x1b0(%rsp,%rbx,8),%xmm0
movsd  0xe0(%rsp,%rbx,8),%xmm1
movsd  %xmm2,0x8(%rsp)
movsd  0x10(%rsp,%rbx,8),%xmm2
xorps  0xc03(%rip),%xmm2
call   10a0 <fma@plt>
movsd  0x8(%rsp),%xmm2
movsd  0xbe0(%rip),%xmm1
ucomisd %xmm0,%xmm2
jne    180b <main+0x66b>
jp     180b <main+0x66b>
add    $0x1,%rbx
cmp    $0x19,%rbx
jne    13c0 <main+0x220>
xor    %ebx,%ebx
lea    0x280(%rsp),%rdi
lea    0x1b0(%rsp),%rsi
lea    0xe0(%rsp),%rdx
lea    0x10(%rsp),%rcx
xor    %eax,%eax
call   1070 <f_3@plt>
movapd 0xba8(%rip),%xmm3
movsd  0xb90(%rip),%xmm1
movzbl %bl,%eax
imul   $0xf1,%eax,%eax
shr    $0xc,%eax
mov    %eax,%ecx
shl    $0x4,%ecx
or     %eax,%ecx
mov    %ebx,%eax
sub    %cl,%al
movsd  0x280(%rsp,%rbx,8),%xmm2
movapd %xmm1,%xmm0
cmp    $0x9,%al
ja     14d9 <main+0x339>
movsd  0x1b0(%rsp,%rbx,8),%xmm0
xorpd  %xmm3,%xmm0
movsd  0xe0(%rsp,%rbx,8),%xmm1
movsd  %xmm2,0x8(%rsp)
movsd  0x10(%rsp,%rbx,8),%xmm2
xorpd  %xmm3,%xmm2
call   10a0 <fma@plt>
movsd  0x8(%rsp),%xmm2
movsd  0xb2f(%rip),%xmm1
movapd 0xb37(%rip),%xmm3
ucomisd %xmm0,%xmm2
jne    180b <main+0x66b>
jp     180b <main+0x66b>
add    $0x1,%rbx
cmp    $0x19,%rbx
jne    1470 <main+0x2d0>
xor    %ebx,%ebx
lea    0x280(%rsp),%rdi
lea    0x1b0(%rsp),%rsi
lea    0xe0(%rsp),%rdx
lea    0x10(%rsp),%rcx
xor    %eax,%eax
call   10b0 <f_4@plt>
nopl   (%rax)
movzbl %bl,%eax
imul   $0xf1,%eax,%eax
shr    $0xc,%eax
mov    %eax,%ecx
shl    $0x4,%ecx
or     %eax,%ecx
mov    %ebx,%ebp
sub    %cl,%bpl
movsd  0x1b0(%rsp,%rbx,8),%xmm0
movsd  0xe0(%rsp,%rbx,8),%xmm1
movsd  0x10(%rsp,%rbx,8),%xmm2
call   10a0 <fma@plt>
cmp    $0xa,%bpl
jb     1570 <main+0x3d0>
movsd  0xa9d(%rip),%xmm0
jmp    1578 <main+0x3d8>
cs nopw 0x0(%rax,%rax,1)
nop
xorpd  0xa98(%rip),%xmm0
movsd  0x280(%rsp,%rbx,8),%xmm1
ucomisd %xmm0,%xmm1
jne    180b <main+0x66b>
jp     180b <main+0x66b>
add    $0x1,%rbx
cmp    $0x19,%rbx
jne    1520 <main+0x380>
xor    %ebx,%ebx
lea    0x280(%rsp),%rdi
lea    0x1b0(%rsp),%rsi
lea    0xe0(%rsp),%rdx
lea    0x10(%rsp),%rcx
xor    %eax,%eax
call   1080 <f_5@plt>
movapd 0xa47(%rip),%xmm2
nopl   0x0(%rax)
movzbl %bl,%eax
imul   $0xf1,%eax,%eax
shr    $0xc,%eax
mov    %eax,%ecx
shl    $0x4,%ecx
or     %eax,%ecx
mov    %ebx,%ebp
sub    %cl,%bpl
movsd  0x1b0(%rsp,%rbx,8),%xmm0
xorpd  %xmm2,%xmm0
movsd  0xe0(%rsp,%rbx,8),%xmm1
movsd  0x10(%rsp,%rbx,8),%xmm2
call   10a0 <fma@plt>
cmp    $0xa,%bpl
jb     1630 <main+0x490>
movsd  0x9e9(%rip),%xmm0
movapd 0x9f1(%rip),%xmm2
jmp    1640 <main+0x4a0>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movapd 0x9d8(%rip),%xmm1
xorpd  %xmm1,%xmm0
movapd %xmm1,%xmm2
movsd  0x280(%rsp,%rbx,8),%xmm1
ucomisd %xmm0,%xmm1
jne    180b <main+0x66b>
jp     180b <main+0x66b>
add    $0x1,%rbx
cmp    $0x19,%rbx
jne    15d0 <main+0x430>
xor    %ebx,%ebx
lea    0x280(%rsp),%rdi
lea    0x1b0(%rsp),%rsi
lea    0xe0(%rsp),%rdx
lea    0x10(%rsp),%rcx
xor    %eax,%eax
call   10c0 <f_6@plt>
movapd 0x97b(%rip),%xmm3
cs nopw 0x0(%rax,%rax,1)
nop
movzbl %bl,%eax
imul   $0xf1,%eax,%eax
shr    $0xc,%eax
mov    %eax,%ecx
shl    $0x4,%ecx
or     %eax,%ecx
mov    %ebx,%ebp
sub    %cl,%bpl
movsd  0x1b0(%rsp,%rbx,8),%xmm0
movsd  0xe0(%rsp,%rbx,8),%xmm1
movsd  0x10(%rsp,%rbx,8),%xmm2
xorpd  %xmm3,%xmm2
call   10a0 <fma@plt>
cmp    $0xa,%bpl
jb     1700 <main+0x560>
movsd  0x919(%rip),%xmm0
movapd 0x921(%rip),%xmm3
jmp    1710 <main+0x570>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movapd 0x908(%rip),%xmm1
xorpd  %xmm1,%xmm0
movapd %xmm1,%xmm3
movsd  0x280(%rsp,%rbx,8),%xmm1
ucomisd %xmm0,%xmm1
jne    180b <main+0x66b>
jp     180b <main+0x66b>
add    $0x1,%rbx
cmp    $0x19,%rbx
jne    16a0 <main+0x500>
xor    %ebx,%ebx
lea    0x280(%rsp),%rdi
lea    0x1b0(%rsp),%rsi
lea    0xe0(%rsp),%rdx
lea    0x10(%rsp),%rcx
xor    %eax,%eax
call   1090 <f_7@plt>
movapd 0x8ab(%rip),%xmm3
cs nopw 0x0(%rax,%rax,1)
nop
movzbl %bl,%eax
imul   $0xf1,%eax,%eax
shr    $0xc,%eax
mov    %eax,%ecx
shl    $0x4,%ecx
or     %eax,%ecx
mov    %ebx,%ebp
sub    %cl,%bpl
movsd  0x1b0(%rsp,%rbx,8),%xmm0
xorpd  %xmm3,%xmm0
movsd  0xe0(%rsp,%rbx,8),%xmm1
movsd  0x10(%rsp,%rbx,8),%xmm2
xorpd  %xmm3,%xmm2
call   10a0 <fma@plt>
cmp    $0xa,%bpl
jb     17d0 <main+0x630>
movsd  0x845(%rip),%xmm0
movapd 0x84d(%rip),%xmm3
jmp    17e0 <main+0x640>
cs nopw 0x0(%rax,%rax,1)
nop
movapd 0x838(%rip),%xmm1
xorpd  %xmm1,%xmm0
movapd %xmm1,%xmm3
movsd  0x280(%rsp,%rbx,8),%xmm1
ucomisd %xmm0,%xmm1
jne    180b <main+0x66b>
jp     180b <main+0x66b>
add    $0x1,%rbx
cmp    $0x19,%rbx
jne    1770 <main+0x5d0>
xor    %eax,%eax
add    $0x348,%rsp
pop    %rbx
pop    %rbp
ret
call   1050 <abort@plt>

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

LLVM IR (-O2):
define i32 @main() {
%1 = alloca [25 x double]
%2 = alloca [25 x double]
%3 = alloca [25 x double]
%4 = alloca [25 x double]
%5 = bitcast [25 x double]* %1 to i8*
%6 = bitcast [25 x double]* %2 to i8*
%7 = bitcast [25 x double]* %3 to i8*
%8 = bitcast [25 x double]* %4 to i8*
br label %15
9: ; preds = %15
%10 = getelementptr inbounds [25 x double], [25 x double]* %1, i64 0, i64 0
%11 = getelementptr inbounds [25 x double], [25 x double]* %2, i64 0, i64 0
%12 = getelementptr inbounds [25 x double], [25 x double]* %3, i64 0, i64 0
%13 = getelementptr inbounds [25 x double], [25 x double]* %4, i64 0, i64 0
%14 = call i32 (double*, double*, double*, double*, ...) bitcast (i32 (...)* @f_0 to i32 (double*, double*, double*, double*, ...)*)(double* %10, double* %11, double* %12, double* %13)
br label %33
15: ; preds = %0, %15
%16 = phi i64 [ 0, %0 ], [ %29, %15 ]
%17 = trunc i64 %16 to i8
%18 = urem i8 %17, 17
%19 = uitofp i8 %18 to double
%20 = getelementptr inbounds [25 x double], [25 x double]* %2, i64 0, i64 %16
store double %19, double* %20
%21 = urem i8 %17, 9
%22 = add nuw nsw i8 %21, 11
%23 = uitofp i8 %22 to double
%24 = getelementptr inbounds [25 x double], [25 x double]* %3, i64 0, i64 %16
store double %23, double* %24
%25 = urem i8 %17, 13
%26 = add nuw nsw i8 %25, 14
%27 = uitofp i8 %26 to double
%28 = getelementptr inbounds [25 x double], [25 x double]* %4, i64 0, i64 %16
store double %27, double* %28
tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"()
%29 = add nuw nsw i64 %16, 1
%30 = icmp eq i64 %29, 25
br i1 %30, label %9, label %15
31: ; preds = %50
%32 = call i32 (double*, double*, double*, double*, ...) bitcast (i32 (...)* @f_1 to i32 (double*, double*, double*, double*, ...)*)(double* %10, double* %11, double* %12, double* %13)
br label %55
33: ; preds = %9, %50
%34 = phi i64 [ 0, %9 ], [ %51, %50 ]
%35 = getelementptr inbounds [25 x double], [25 x double]* %2, i64 0, i64 %34
%36 = load double, double* %35
%37 = getelementptr inbounds [25 x double], [25 x double]* %3, i64 0, i64 %34
%38 = load double, double* %37
%39 = getelementptr inbounds [25 x double], [25 x double]* %4, i64 0, i64 %34
%40 = load double, double* %39
%41 = call double @llvm.fma.f64(double %36, double %38, double %40)
%42 = getelementptr inbounds [25 x double], [25 x double]* %1, i64 0, i64 %34
%43 = load double, double* %42
%44 = trunc i64 %34 to i8
%45 = urem i8 %44, 17
%46 = icmp ult i8 %45, 10
%47 = select i1 %46, double %41, double 1.000000e+01
%48 = fcmp une double %43, %47
br i1 %48, label %49, label %50
49: ; preds = %33
unreachable
50: ; preds = %33
%51 = add nuw nsw i64 %34, 1
%52 = icmp eq i64 %51, 25
br i1 %52, label %31, label %33
53: ; preds = %73
%54 = call i32 (double*, double*, double*, double*, ...) bitcast (i32 (...)* @f_2 to i32 (double*, double*, double*, double*, ...)*)(double* %10, double* %11, double* %12, double* %13)
br label %78
55: ; preds = %31, %73
%56 = phi i64 [ 0, %31 ], [ %74, %73 ]
%57 = getelementptr inbounds [25 x double], [25 x double]* %2, i64 0, i64 %56
%58 = load double, double* %57
%59 = fneg double %58
%60 = getelementptr inbounds [25 x double], [25 x double]* %3, i64 0, i64 %56
%61 = load double, double* %60
%62 = getelementptr inbounds [25 x double], [25 x double]* %4, i64 0, i64 %56
%63 = load double, double* %62
%64 = call double @llvm.fma.f64(double %59, double %61, double %63)
%65 = getelementptr inbounds [25 x double], [25 x double]* %1, i64 0, i64 %56
%66 = load double, double* %65
%67 = trunc i64 %56 to i8
%68 = urem i8 %67, 17
%69 = icmp ult i8 %68, 10
%70 = select i1 %69, double %64, double 1.000000e+01
%71 = fcmp une double %66, %70
br i1 %71, label %72, label %73
72: ; preds = %55
unreachable
73: ; preds = %55
%74 = add nuw nsw i64 %56, 1
%75 = icmp eq i64 %74, 25
br i1 %75, label %53, label %55
76: ; preds = %96
%77 = call i32 (double*, double*, double*, double*, ...) bitcast (i32 (...)* @f_3 to i32 (double*, double*, double*, double*, ...)*)(double* %10, double* %11, double* %12, double* %13)
br label %101
78: ; preds = %53, %96
%79 = phi i64 [ 0, %53 ], [ %97, %96 ]
%80 = getelementptr inbounds [25 x double], [25 x double]* %2, i64 0, i64 %79
%81 = load double, double* %80
%82 = getelementptr inbounds [25 x double], [25 x double]* %3, i64 0, i64 %79
%83 = load double, double* %82
%84 = getelementptr inbounds [25 x double], [25 x double]* %4, i64 0, i64 %79
%85 = load double, double* %84
%86 = fneg double %85
%87 = call double @llvm.fma.f64(double %81, double %83, double %86)
%88 = getelementptr inbounds [25 x double], [25 x double]* %1, i64 0, i64 %79
%89 = load double, double* %88
%90 = trunc i64 %79 to i8
%91 = urem i8 %90, 17
%92 = icmp ult i8 %91, 10
%93 = select i1 %92, double %87, double 1.000000e+01
%94 = fcmp une double %89, %93
br i1 %94, label %95, label %96
95: ; preds = %78
unreachable
96: ; preds = %78
%97 = add nuw nsw i64 %79, 1
%98 = icmp eq i64 %97, 25
br i1 %98, label %76, label %78
99: ; preds = %120
%100 = call i32 (double*, double*, double*, double*, ...) bitcast (i32 (...)* @f_4 to i32 (double*, double*, double*, double*, ...)*)(double* %10, double* %11, double* %12, double* %13)
br label %125
101: ; preds = %76, %120
%102 = phi i64 [ 0, %76 ], [ %121, %120 ]
%103 = getelementptr inbounds [25 x double], [25 x double]* %2, i64 0, i64 %102
%104 = load double, double* %103
%105 = fneg double %104
%106 = getelementptr inbounds [25 x double], [25 x double]* %3, i64 0, i64 %102
%107 = load double, double* %106
%108 = getelementptr inbounds [25 x double], [25 x double]* %4, i64 0, i64 %102
%109 = load double, double* %108
%110 = fneg double %109
%111 = call double @llvm.fma.f64(double %105, double %107, double %110)
%112 = getelementptr inbounds [25 x double], [25 x double]* %1, i64 0, i64 %102
%113 = load double, double* %112
%114 = trunc i64 %102 to i8
%115 = urem i8 %114, 17
%116 = icmp ult i8 %115, 10
%117 = select i1 %116, double %111, double 1.000000e+01
%118 = fcmp une double %113, %117
br i1 %118, label %119, label %120
119: ; preds = %101
unreachable
120: ; preds = %101
%121 = add nuw nsw i64 %102, 1
%122 = icmp eq i64 %121, 25
br i1 %122, label %99, label %101
123: ; preds = %143
%124 = call i32 (double*, double*, double*, double*, ...) bitcast (i32 (...)* @f_5 to i32 (double*, double*, double*, double*, ...)*)(double* %10, double* %11, double* %12, double* %13)
br label %148
125: ; preds = %99, %143
%126 = phi i64 [ 0, %99 ], [ %144, %143 ]
%127 = getelementptr inbounds [25 x double], [25 x double]* %2, i64 0, i64 %126
%128 = load double, double* %127
%129 = getelementptr inbounds [25 x double], [25 x double]* %3, i64 0, i64 %126
%130 = load double, double* %129
%131 = getelementptr inbounds [25 x double], [25 x double]* %4, i64 0, i64 %126
%132 = load double, double* %131
%133 = call double @llvm.fma.f64(double %128, double %130, double %132)
%134 = fneg double %133
%135 = getelementptr inbounds [25 x double], [25 x double]* %1, i64 0, i64 %126
%136 = load double, double* %135
%137 = trunc i64 %126 to i8
%138 = urem i8 %137, 17
%139 = icmp ult i8 %138, 10
%140 = select i1 %139, double %134, double 1.000000e+01
%141 = fcmp une double %136, %140
br i1 %141, label %142, label %143
142: ; preds = %125
unreachable
143: ; preds = %125
%144 = add nuw nsw i64 %126, 1
%145 = icmp eq i64 %144, 25
br i1 %145, label %123, label %125
146: ; preds = %167
%147 = call i32 (double*, double*, double*, double*, ...) bitcast (i32 (...)* @f_6 to i32 (double*, double*, double*, double*, ...)*)(double* %10, double* %11, double* %12, double* %13)
br label %172
148: ; preds = %123, %167
%149 = phi i64 [ 0, %123 ], [ %168, %167 ]
%150 = getelementptr inbounds [25 x double], [25 x double]* %2, i64 0, i64 %149
%151 = load double, double* %150
%152 = fneg double %151
%153 = getelementptr inbounds [25 x double], [25 x double]* %3, i64 0, i64 %149
%154 = load double, double* %153
%155 = getelementptr inbounds [25 x double], [25 x double]* %4, i64 0, i64 %149
%156 = load double, double* %155
%157 = call double @llvm.fma.f64(double %152, double %154, double %156)
%158 = fneg double %157
%159 = getelementptr inbounds [25 x double], [25 x double]* %1, i64 0, i64 %149
%160 = load double, double* %159
%161 = trunc i64 %149 to i8
%162 = urem i8 %161, 17
%163 = icmp ult i8 %162, 10
%164 = select i1 %163, double %158, double 1.000000e+01
%165 = fcmp une double %160, %164
br i1 %165, label %166, label %167
166: ; preds = %148
unreachable
167: ; preds = %148
%168 = add nuw nsw i64 %149, 1
%169 = icmp eq i64 %168, 25
br i1 %169, label %146, label %148
170: ; preds = %191
%171 = call i32 (double*, double*, double*, double*, ...) bitcast (i32 (...)* @f_7 to i32 (double*, double*, double*, double*, ...)*)(double* %10, double* %11, double* %12, double* %13)
br label %195
172: ; preds = %146, %191
%173 = phi i64 [ 0, %146 ], [ %192, %191 ]
%174 = getelementptr inbounds [25 x double], [25 x double]* %2, i64 0, i64 %173
%175 = load double, double* %174
%176 = getelementptr inbounds [25 x double], [25 x double]* %3, i64 0, i64 %173
%177 = load double, double* %176
%178 = getelementptr inbounds [25 x double], [25 x double]* %4, i64 0, i64 %173
%179 = load double, double* %178
%180 = fneg double %179
%181 = call double @llvm.fma.f64(double %175, double %177, double %180)
%182 = fneg double %181
%183 = getelementptr inbounds [25 x double], [25 x double]* %1, i64 0, i64 %173
%184 = load double, double* %183
%185 = trunc i64 %173 to i8
%186 = urem i8 %185, 17
%187 = icmp ult i8 %186, 10
%188 = select i1 %187, double %182, double 1.000000e+01
%189 = fcmp une double %184, %188
br i1 %189, label %190, label %191
190: ; preds = %172
unreachable
191: ; preds = %172
%192 = add nuw nsw i64 %173, 1
%193 = icmp eq i64 %192, 25
br i1 %193, label %170, label %172
194: ; preds = %215
ret i32 0
195: ; preds = %170, %215
%196 = phi i64 [ 0, %170 ], [ %216, %215 ]
%197 = getelementptr inbounds [25 x double], [25 x double]* %2, i64 0, i64 %196
%198 = load double, double* %197
%199 = fneg double %198
%200 = getelementptr inbounds [25 x double], [25 x double]* %3, i64 0, i64 %196
%201 = load double, double* %200
%202 = getelementptr inbounds [25 x double], [25 x double]* %4, i64 0, i64 %196
%203 = load double, double* %202
%204 = fneg double %203
%205 = call double @llvm.fma.f64(double %199, double %201, double %204)
%206 = fneg double %205
%207 = getelementptr inbounds [25 x double], [25 x double]* %1, i64 0, i64 %196
%208 = load double, double* %207
%209 = trunc i64 %196 to i8
%210 = urem i8 %209, 17
%211 = icmp ult i8 %210, 10
%212 = select i1 %211, double %206, double 1.000000e+01
%213 = fcmp une double %208, %212
br i1 %213, label %214, label %215
214: ; preds = %195
unreachable
215: ; preds = %195
%216 = add nuw nsw i64 %196, 1
%217 = icmp eq i64 %216, 25
br i1 %217, label %194, label %195
}