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

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ abort();
int /*<<< orphan*/ fbar(float *);
int /*<<< orphan*/ ibar(int *);
int /*<<< orphan*/ sbar(short *);
int foo(int n) {
  int i, j;
  float a[16];
  float e[16];
  float b[16] = {0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45};
  float c[16] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
  float d[16] = {0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30};
  short sc[16] = {0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45};
  short sb[16] = {0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45};
  short sa[16];
  int ic[16] = {0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45};
  int ib[16] = {0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45};
  int ia[16];
  int diff = 0;
  char cb[16];
  char cc[16];
  char image[16][16];
  char block[16][16];
  for (i = 0; i < n; i++) {
    a[i] = b[i];
  }
  fbar(a);
  for (i = 0; i < 16; i++) {
    ia[i] = (int)sb[i];
  }
  fbar(a);
  for (i = 0; i < 16 / 2; i++) {
    a[i] = b[2 * i + 1] * c[2 * i + 1] - b[2 * i] * c[2 * i];
    d[i] = b[2 * i] * c[2 * i + 1] + b[2 * i + 1] * c[2 * i];
  }
  fbar(a);
  for (i = 0; i < 16; i++) {
    ia[i] = ib[i] * ic[i];
  }
  ibar(ia);
  for (i = 0; i < 16; i++) {
    ia[i] = ib[i] + ic[i];
    sa[i] = sb[i] + sc[i];
  }
  ibar(ia);
  sbar(sa);
  for (i = 0; i < 16; i++) {
    a[i] = b[i] + c[i];
    a[i + 1] = b[i] + c[i];
  }
  fbar(a);
  for (i = 0; i < 16; i++) {
    a[i] = (b[i] > 0 ? b[i] : 0);
  }
  fbar(a);
  diff = 0;
  for (i = 0; i < 16; i++) {
    diff += (cb[i] - cc[i]);
  }
  ibar(&diff);
  diff = 0;
  for (i = 0; i < 16; i++) {
    for (i = 0; i < 16; i++) {
      diff += (image[i][j] - block[i][j]);
    }
  }
  ibar(&diff);
  for (i = 0; i < 16; i++) {
    a[i] = i;
  }
  fbar(a);
  for (i = 16; i > 0; i--) {
    a[16 - i] = b[i - 1];
  }
  for (i = 0; i < 16; i++) {
    if (a[i] != b[16 - 1 - i])
      abort();
  }
  return 0;
}


x86 assembly (clang, -O0):
<foo>:
push   %rbp
mov    %rsp,%rbp
sub    $0x4b0,%rsp
mov    %edi,-0x4(%rbp)
lea    -0xd0(%rbp),%rdi
lea    0xe94(%rip),%rsi
mov    $0x40,%edx
call   1050 <memcpy@plt>
lea    -0x110(%rbp),%rdi
lea    0xebc(%rip),%rsi
mov    $0x40,%edx
call   1050 <memcpy@plt>
lea    -0x150(%rbp),%rdi
lea    0xee4(%rip),%rsi
mov    $0x40,%edx
call   1050 <memcpy@plt>
mov    0xf93(%rip),%rax
mov    %rax,-0x170(%rbp)
mov    0xf8d(%rip),%rax
mov    %rax,-0x168(%rbp)
mov    0xf87(%rip),%rax
mov    %rax,-0x160(%rbp)
mov    0xf81(%rip),%rax
mov    %rax,-0x158(%rbp)
mov    0xf5b(%rip),%rax
mov    %rax,-0x190(%rbp)
mov    0xf55(%rip),%rax
mov    %rax,-0x188(%rbp)
mov    0xf4f(%rip),%rax
mov    %rax,-0x180(%rbp)
mov    0xf49(%rip),%rax
mov    %rax,-0x178(%rbp)
lea    -0x1f0(%rbp),%rdi
lea    0xe9c(%rip),%rsi
mov    $0x40,%edx
call   1050 <memcpy@plt>
lea    -0x230(%rbp),%rdi
lea    0xec4(%rip),%rsi
mov    $0x40,%edx
call   1050 <memcpy@plt>
movl   $0x0,-0x274(%rbp)
movl   $0x0,-0x8(%rbp)
mov    -0x8(%rbp),%eax
cmp    -0x4(%rbp),%eax
jge    1288 <foo+0x138>
movslq -0x8(%rbp),%rax
movss  -0xd0(%rbp,%rax,4),%xmm0
ff ff
movslq -0x8(%rbp),%rax
movss  %xmm0,-0x50(%rbp,%rax,4)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1257 <foo+0x107>
lea    -0x50(%rbp),%rdi
call   1060 <fbar@plt>
movl   $0x0,-0x8(%rbp)
cmpl   $0x10,-0x8(%rbp)
jge    12c7 <foo+0x177>
movslq -0x8(%rbp),%rax
movswl -0x190(%rbp,%rax,2),%ecx
ff
movslq -0x8(%rbp),%rax
mov    %ecx,-0x270(%rbp,%rax,4)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1298 <foo+0x148>
lea    -0x50(%rbp),%rdi
call   1060 <fbar@plt>
movl   $0x0,-0x8(%rbp)
cmpl   $0x8,-0x8(%rbp)
jge    13b7 <foo+0x267>
mov    -0x8(%rbp),%eax
shl    $0x1,%eax
add    $0x1,%eax
cltq
movss  -0xd0(%rbp,%rax,4),%xmm0
ff ff
mov    -0x8(%rbp),%eax
shl    $0x1,%eax
add    $0x1,%eax
cltq
movss  -0x110(%rbp,%rax,4),%xmm2
ff ff
mov    -0x8(%rbp),%eax
shl    $0x1,%eax
cltq
movss  -0xd0(%rbp,%rax,4),%xmm1
ff ff
mov    -0x8(%rbp),%eax
shl    $0x1,%eax
cltq
mulss  -0x110(%rbp,%rax,4),%xmm1
ff ff
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movslq -0x8(%rbp),%rax
movss  %xmm0,-0x50(%rbp,%rax,4)
mov    -0x8(%rbp),%eax
shl    $0x1,%eax
cltq
movss  -0xd0(%rbp,%rax,4),%xmm0
ff ff
mov    -0x8(%rbp),%eax
shl    $0x1,%eax
add    $0x1,%eax
cltq
movss  -0x110(%rbp,%rax,4),%xmm2
ff ff
mov    -0x8(%rbp),%eax
shl    $0x1,%eax
add    $0x1,%eax
cltq
movss  -0xd0(%rbp,%rax,4),%xmm1
ff ff
mov    -0x8(%rbp),%eax
shl    $0x1,%eax
cltq
mulss  -0x110(%rbp,%rax,4),%xmm1
ff ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movslq -0x8(%rbp),%rax
movss  %xmm0,-0x150(%rbp,%rax,4)
ff ff
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    12d7 <foo+0x187>
lea    -0x50(%rbp),%rdi
call   1060 <fbar@plt>
movl   $0x0,-0x8(%rbp)
cmpl   $0x10,-0x8(%rbp)
jge    1401 <foo+0x2b1>
movslq -0x8(%rbp),%rax
mov    -0x230(%rbp,%rax,4),%ecx
movslq -0x8(%rbp),%rax
imul   -0x1f0(%rbp,%rax,4),%ecx
ff
movslq -0x8(%rbp),%rax
mov    %ecx,-0x270(%rbp,%rax,4)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    13c7 <foo+0x277>
lea    -0x270(%rbp),%rdi
call   1070 <ibar@plt>
movl   $0x0,-0x8(%rbp)
cmpl   $0x10,-0x8(%rbp)
jge    1476 <foo+0x326>
movslq -0x8(%rbp),%rax
mov    -0x230(%rbp,%rax,4),%ecx
movslq -0x8(%rbp),%rax
add    -0x1f0(%rbp,%rax,4),%ecx
movslq -0x8(%rbp),%rax
mov    %ecx,-0x270(%rbp,%rax,4)
movslq -0x8(%rbp),%rax
movswl -0x190(%rbp,%rax,2),%eax
ff
movslq -0x8(%rbp),%rcx
movswl -0x170(%rbp,%rcx,2),%ecx
ff
add    %ecx,%eax
mov    %ax,%cx
movslq -0x8(%rbp),%rax
mov    %cx,-0x1b0(%rbp,%rax,2)
ff
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1414 <foo+0x2c4>
lea    -0x270(%rbp),%rdi
call   1070 <ibar@plt>
lea    -0x1b0(%rbp),%rdi
call   1030 <sbar@plt>
movl   $0x0,-0x8(%rbp)
cmpl   $0x10,-0x8(%rbp)
jge    14f9 <foo+0x3a9>
movslq -0x8(%rbp),%rax
movss  -0xd0(%rbp,%rax,4),%xmm0
ff ff
movslq -0x8(%rbp),%rax
addss  -0x110(%rbp,%rax,4),%xmm0
ff ff
movslq -0x8(%rbp),%rax
movss  %xmm0,-0x50(%rbp,%rax,4)
movslq -0x8(%rbp),%rax
movss  -0xd0(%rbp,%rax,4),%xmm0
ff ff
movslq -0x8(%rbp),%rax
addss  -0x110(%rbp,%rax,4),%xmm0
ff ff
mov    -0x8(%rbp),%eax
add    $0x1,%eax
cltq
movss  %xmm0,-0x50(%rbp,%rax,4)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1495 <foo+0x345>
lea    -0x50(%rbp),%rdi
call   1060 <fbar@plt>
movl   $0x0,-0x8(%rbp)
cmpl   $0x10,-0x8(%rbp)
jge    1576 <foo+0x426>
movslq -0x8(%rbp),%rax
movss  -0xd0(%rbp,%rax,4),%xmm0
ff ff
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jbe    1546 <foo+0x3f6>
movslq -0x8(%rbp),%rax
movss  -0xd0(%rbp,%rax,4),%xmm0
ff ff
movss  %xmm0,-0x4a4(%rbp)
ff
jmp    1556 <foo+0x406>
xorps  %xmm0,%xmm0
movss  %xmm0,-0x4a4(%rbp)
ff
jmp    1556 <foo+0x406>
movss  -0x4a4(%rbp),%xmm0
ff
movslq -0x8(%rbp),%rax
movss  %xmm0,-0x50(%rbp,%rax,4)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1509 <foo+0x3b9>
lea    -0x50(%rbp),%rdi
call   1060 <fbar@plt>
movl   $0x0,-0x274(%rbp)
movl   $0x0,-0x8(%rbp)
cmpl   $0x10,-0x8(%rbp)
jge    15ce <foo+0x47e>
movslq -0x8(%rbp),%rax
movsbl -0x290(%rbp,%rax,1),%eax
ff
movslq -0x8(%rbp),%rcx
movsbl -0x2a0(%rbp,%rcx,1),%ecx
ff
sub    %ecx,%eax
add    -0x274(%rbp),%eax
mov    %eax,-0x274(%rbp)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1590 <foo+0x440>
lea    -0x274(%rbp),%rdi
call   1070 <ibar@plt>
movl   $0x0,-0x274(%rbp)
movl   $0x0,-0x8(%rbp)
cmpl   $0x10,-0x8(%rbp)
jge    1669 <foo+0x519>
movl   $0x0,-0x8(%rbp)
cmpl   $0x10,-0x8(%rbp)
jge    1656 <foo+0x506>
movslq -0x8(%rbp),%rcx
lea    -0x3a0(%rbp),%rax
shl    $0x4,%rcx
add    %rcx,%rax
movslq -0xc(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
movslq -0x8(%rbp),%rdx
lea    -0x4a0(%rbp),%rcx
shl    $0x4,%rdx
add    %rdx,%rcx
movslq -0xc(%rbp),%rdx
movsbl (%rcx,%rdx,1),%ecx
sub    %ecx,%eax
add    -0x274(%rbp),%eax
mov    %eax,-0x274(%rbp)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    15fc <foo+0x4ac>
jmp    165b <foo+0x50b>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    15eb <foo+0x49b>
lea    -0x274(%rbp),%rdi
call   1070 <ibar@plt>
movl   $0x0,-0x8(%rbp)
cmpl   $0x10,-0x8(%rbp)
jge    16a3 <foo+0x553>
cvtsi2ssl -0x8(%rbp),%xmm0
movslq -0x8(%rbp),%rax
movss  %xmm0,-0x50(%rbp,%rax,4)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    167c <foo+0x52c>
lea    -0x50(%rbp),%rdi
call   1060 <fbar@plt>
movl   $0x10,-0x8(%rbp)
cmpl   $0x0,-0x8(%rbp)
jle    16ec <foo+0x59c>
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
cltq
movss  -0xd0(%rbp,%rax,4),%xmm0
ff ff
mov    $0x10,%eax
sub    -0x8(%rbp),%eax
cltq
movss  %xmm0,-0x50(%rbp,%rax,4)
mov    -0x8(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x8(%rbp)
jmp    16b3 <foo+0x563>
movl   $0x0,-0x8(%rbp)
cmpl   $0x10,-0x8(%rbp)
jge    1744 <foo+0x5f4>
movslq -0x8(%rbp),%rax
movss  -0x50(%rbp,%rax,4),%xmm0
mov    $0xf,%eax
sub    -0x8(%rbp),%eax
cltq
ucomiss -0xd0(%rbp,%rax,4),%xmm0
ff
jne    172a <foo+0x5da>
jp     172a <foo+0x5da>
jmp    1731 <foo+0x5e1>
mov    $0x0,%al
call   1040 <abort@plt>
jmp    1736 <foo+0x5e6>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    16f3 <foo+0x5a3>
xor    %eax,%eax
add    $0x4b0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<foo>:
push   %r14
push   %rbx
sub    $0xb8,%rsp
movl   $0x0,0xc(%rsp)
test   %edi,%edi
jle    116d <foo+0x2d>
mov    %edi,%edx
shl    $0x2,%rdx
lea    0xfdd(%rip),%rsi
lea    0x10(%rsp),%rdi
call   1040 <memcpy@plt>
lea    0x10(%rsp),%rbx
mov    %rbx,%rdi
call   1050 <fbar@plt>
mov    %rbx,%rdi
call   1050 <fbar@plt>
movaps 0xe77(%rip),%xmm0
movaps %xmm0,0x10(%rsp)
movaps 0xe7b(%rip),%xmm0
movaps %xmm0,0x20(%rsp)
mov    %rbx,%rdi
call   1050 <fbar@plt>
movaps 0xe77(%rip),%xmm0
movaps %xmm0,0x50(%rsp)
movaps 0xe7b(%rip),%xmm0
movaps %xmm0,0x60(%rsp)
movaps 0xe7f(%rip),%xmm0
movaps %xmm0,0x70(%rsp)
movaps 0xe83(%rip),%xmm0
movaps %xmm0,0x80(%rsp)
lea    0x50(%rsp),%rbx
mov    %rbx,%rdi
call   1060 <ibar@plt>
movaps 0xe77(%rip),%xmm0
movaps %xmm0,0x50(%rsp)
movaps 0xe7b(%rip),%xmm0
movaps %xmm0,0x90(%rsp)
movaps 0xe7c(%rip),%xmm0
movaps %xmm0,0x60(%rsp)
movaps 0xe80(%rip),%xmm0
movaps %xmm0,0x70(%rsp)
movaps 0xe84(%rip),%xmm0
movaps %xmm0,0xa0(%rsp)
movaps 0xe85(%rip),%xmm0
movaps %xmm0,0x80(%rsp)
mov    %rbx,%rdi
call   1060 <ibar@plt>
lea    0x90(%rsp),%rdi
call   1030 <sbar@plt>
xor    %eax,%eax
lea    0xeef(%rip),%rcx
lea    0xf28(%rip),%rdx
nopl   0x0(%rax,%rax,1)
movss  (%rcx,%rax,4),%xmm0
addss  (%rdx,%rax,4),%xmm0
movss  0x4(%rcx,%rax,4),%xmm1
movss  %xmm0,0x10(%rsp,%rax,4)
addss  0x4(%rdx,%rax,4),%xmm1
movss  %xmm1,0x14(%rsp,%rax,4)
movss  %xmm1,0x18(%rsp,%rax,4)
add    $0x2,%rax
cmp    $0x10,%rax
jne    1260 <foo+0x120>
lea    0x10(%rsp),%r14
mov    %r14,%rdi
call   1050 <fbar@plt>
movaps 0xe1a(%rip),%xmm0
movaps %xmm0,0x10(%rsp)
movaps 0xe1e(%rip),%xmm0
movaps %xmm0,0x20(%rsp)
movaps 0xe22(%rip),%xmm0
movaps %xmm0,0x30(%rsp)
movaps 0xe26(%rip),%xmm0
movaps %xmm0,0x40(%rsp)
mov    %r14,%rdi
call   1050 <fbar@plt>
movl   $0x0,0xc(%rsp)
lea    0xc(%rsp),%rbx
mov    %rbx,%rdi
call   1060 <ibar@plt>
movl   $0x0,0xc(%rsp)
mov    %rbx,%rdi
call   1060 <ibar@plt>
movaps 0xdfd(%rip),%xmm0
movaps %xmm0,0x10(%rsp)
movaps 0xe01(%rip),%xmm0
movaps %xmm0,0x20(%rsp)
movaps 0xe05(%rip),%xmm0
movaps %xmm0,0x30(%rsp)
movaps 0xe09(%rip),%xmm0
movaps %xmm0,0x40(%rsp)
mov    %r14,%rdi
call   1050 <fbar@plt>
xor    %eax,%eax
add    $0xb8,%rsp
pop    %rbx
pop    %r14
ret

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

LLVM IR (-O2):
@__const.foo.b = [16 x float] [float 0.000000e+00, float 3.000000e+00, float 6.000000e+00, float 9.000000e+00, float 1.200000e+01, float 1.500000e+01, float 1.800000e+01, float 2.100000e+01, float 2.400000e+01, float 2.700000e+01, float 3.000000e+01, float 3.300000e+01, float 3.600000e+01, float 3.900000e+01, float 4.200000e+01, float 4.500000e+01]
@__const.foo.c = [16 x float] [float 0.000000e+00, float 1.000000e+00, float 2.000000e+00, float 3.000000e+00, float 4.000000e+00, float 5.000000e+00, float 6.000000e+00, float 7.000000e+00, float 8.000000e+00, float 9.000000e+00, float 1.000000e+01, float 1.100000e+01, float 1.200000e+01, float 1.300000e+01, float 1.400000e+01, float 1.500000e+01]
define i32 @foo(i32 %0) {
%2 = alloca [16 x float]
%3 = bitcast [16 x float]* %2 to i8*
%4 = alloca [16 x i16]
%5 = alloca [16 x i32]
%6 = alloca i32
%7 = bitcast [16 x i16]* %4 to i8*
%8 = bitcast [16 x i32]* %5 to i8*
%9 = bitcast i32* %6 to i8*
store i32 0, i32* %6
%10 = icmp sgt i32 %0, 0
br i1 %10, label %11, label %14
11: ; preds = %1
%12 = zext i32 %0 to i64
%13 = shl nuw nsw i64 %12, 2
br label %14
14: ; preds = %11, %1
%15 = getelementptr inbounds [16 x float], [16 x float]* %2, i64 0, i64 0
%16 = call i32 @fbar(float* %15)
%17 = getelementptr inbounds [16 x i32], [16 x i32]* %5, i64 0, i64 0
%18 = getelementptr inbounds [16 x i32], [16 x i32]* %5, i64 0, i64 4
%19 = getelementptr inbounds [16 x i32], [16 x i32]* %5, i64 0, i64 8
%20 = getelementptr inbounds [16 x i32], [16 x i32]* %5, i64 0, i64 12
%21 = call i32 @fbar(float* %15)
%22 = bitcast [16 x float]* %2 to <4 x float>*
store <4 x float> <float 3.000000e+00, float 1.500000e+01, float 2.700000e+01, float 3.900000e+01>, <4 x float>* %22
%23 = getelementptr inbounds [16 x float], [16 x float]* %2, i64 0, i64 4
%24 = bitcast float* %23 to <4 x float>*
store <4 x float> <float 5.100000e+01, float 6.300000e+01, float 7.500000e+01, float 8.700000e+01>, <4 x float>* %24
%25 = call i32 @fbar(float* %15)
%26 = bitcast [16 x i32]* %5 to <4 x i32>*
store <4 x i32> <i32 0, i32 9, i32 36, i32 81>, <4 x i32>* %26
%27 = bitcast i32* %18 to <4 x i32>*
store <4 x i32> <i32 144, i32 225, i32 324, i32 441>, <4 x i32>* %27
%28 = bitcast i32* %19 to <4 x i32>*
store <4 x i32> <i32 576, i32 729, i32 900, i32 1089>, <4 x i32>* %28
%29 = bitcast i32* %20 to <4 x i32>*
store <4 x i32> <i32 1296, i32 1521, i32 1764, i32 2025>, <4 x i32>* %29
%30 = call i32 @ibar(i32* %17)
%31 = bitcast [16 x i32]* %5 to <4 x i32>*
store <4 x i32> <i32 0, i32 6, i32 12, i32 18>, <4 x i32>* %31
%32 = bitcast [16 x i16]* %4 to <4 x i16>*
store <4 x i16> <i16 0, i16 6, i16 12, i16 18>, <4 x i16>* %32
%33 = getelementptr inbounds [16 x i32], [16 x i32]* %5, i64 0, i64 4
%34 = bitcast i32* %33 to <4 x i32>*
store <4 x i32> <i32 24, i32 30, i32 36, i32 42>, <4 x i32>* %34
%35 = getelementptr inbounds [16 x i16], [16 x i16]* %4, i64 0, i64 4
%36 = bitcast i16* %35 to <4 x i16>*
store <4 x i16> <i16 24, i16 30, i16 36, i16 42>, <4 x i16>* %36
%37 = getelementptr inbounds [16 x i32], [16 x i32]* %5, i64 0, i64 8
%38 = bitcast i32* %37 to <4 x i32>*
store <4 x i32> <i32 48, i32 54, i32 60, i32 66>, <4 x i32>* %38
%39 = getelementptr inbounds [16 x i16], [16 x i16]* %4, i64 0, i64 8
%40 = bitcast i16* %39 to <4 x i16>*
store <4 x i16> <i16 48, i16 54, i16 60, i16 66>, <4 x i16>* %40
%41 = getelementptr inbounds [16 x i32], [16 x i32]* %5, i64 0, i64 12
%42 = bitcast i32* %41 to <4 x i32>*
store <4 x i32> <i32 72, i32 78, i32 84, i32 90>, <4 x i32>* %42
%43 = getelementptr inbounds [16 x i16], [16 x i16]* %4, i64 0, i64 12
%44 = bitcast i16* %43 to <4 x i16>*
store <4 x i16> <i16 72, i16 78, i16 84, i16 90>, <4 x i16>* %44
%45 = call i32 @ibar(i32* %17)
%46 = getelementptr inbounds [16 x i16], [16 x i16]* %4, i64 0, i64 0
%47 = call i32 @sbar(i16* %46)
br label %48
48: ; preds = %48, %14
%49 = phi i64 [ 0, %14 ], [ %64, %48 ]
%50 = getelementptr inbounds [16 x float], [16 x float]* @__const.foo.b, i64 0, i64 %49
%51 = load float, float* %50
%52 = getelementptr inbounds [16 x float], [16 x float]* @__const.foo.c, i64 0, i64 %49
%53 = load float, float* %52
%54 = fadd float %51, %53
%55 = getelementptr inbounds [16 x float], [16 x float]* %2, i64 0, i64 %49
store float %54, float* %55
%56 = or i64 %49, 1
%57 = getelementptr inbounds [16 x float], [16 x float]* %2, i64 0, i64 %56
store float %54, float* %57
%58 = getelementptr inbounds [16 x float], [16 x float]* @__const.foo.b, i64 0, i64 %56
%59 = load float, float* %58
%60 = getelementptr inbounds [16 x float], [16 x float]* @__const.foo.c, i64 0, i64 %56
%61 = load float, float* %60
%62 = fadd float %59, %61
%63 = getelementptr inbounds [16 x float], [16 x float]* %2, i64 0, i64 %56
store float %62, float* %63
%64 = add nuw nsw i64 %49, 2
%65 = getelementptr inbounds [16 x float], [16 x float]* %2, i64 0, i64 %64
store float %62, float* %65
%66 = icmp eq i64 %64, 16
br i1 %66, label %67, label %48
67: ; preds = %48
%68 = call i32 @fbar(float* %15)
%69 = bitcast [16 x float]* %2 to <4 x float>*
store <4 x float> <float 0.000000e+00, float 3.000000e+00, float 6.000000e+00, float 9.000000e+00>, <4 x float>* %69
%70 = bitcast float* %23 to <4 x float>*
store <4 x float> <float 1.200000e+01, float 1.500000e+01, float 1.800000e+01, float 2.100000e+01>, <4 x float>* %70
%71 = getelementptr inbounds [16 x float], [16 x float]* %2, i64 0, i64 8
%72 = bitcast float* %71 to <4 x float>*
store <4 x float> <float 2.400000e+01, float 2.700000e+01, float 3.000000e+01, float 3.300000e+01>, <4 x float>* %72
%73 = getelementptr inbounds [16 x float], [16 x float]* %2, i64 0, i64 12
%74 = bitcast float* %73 to <4 x float>*
store <4 x float> <float 3.600000e+01, float 3.900000e+01, float 4.200000e+01, float 4.500000e+01>, <4 x float>* %74
%75 = call i32 @fbar(float* %15)
store i32 0, i32* %6
%76 = call i32 @ibar(i32* %6)
store i32 0, i32* %6
%77 = call i32 @ibar(i32* %6)
%78 = bitcast [16 x float]* %2 to <4 x float>*
store <4 x float> <float 0.000000e+00, float 1.000000e+00, float 2.000000e+00, float 3.000000e+00>, <4 x float>* %78
%79 = bitcast float* %23 to <4 x float>*
store <4 x float> <float 4.000000e+00, float 5.000000e+00, float 6.000000e+00, float 7.000000e+00>, <4 x float>* %79
%80 = bitcast float* %71 to <4 x float>*
store <4 x float> <float 8.000000e+00, float 9.000000e+00, float 1.000000e+01, float 1.100000e+01>, <4 x float>* %80
%81 = bitcast float* %73 to <4 x float>*
store <4 x float> <float 1.200000e+01, float 1.300000e+01, float 1.400000e+01, float 1.500000e+01>, <4 x float>* %81
%82 = call i32 @fbar(float* %15)
ret i32 0
}