float *update_only_a(const float *profa, const float *profb, float *newp,
                     int *path, int sipa, int sipb) {
  int i, c;
  for (i = 64; i--;) {
    newp[i] = profa[i];
  }
  profa += 64;
  profb += 64;
  newp += 64;
  c = 1;
  while (path[c] != 3) {
    if (!path[c]) {
      for (i = 64; i--;) {
        newp[i] = profa[i];
      }
      profa += 64;
      profb += 64;
    }
    if (path[c] & 1) {
      for (i = 64; i--;) {
        newp[i] = 0.0;
      }
      profb += 64;
    }
    if (path[c] & 2) {
      for (i = 64; i--;) {
        newp[i] = profa[i];
      }
      profa += 64;
    }
    newp += 64;
    c++;
  }
  for (i = 64; i--;) {
    newp[i] = profa[i];
  }
  newp -= (path[0] + 1) * 64;
  return newp;
}


x86 assembly (clang, -O0):
<update_only_a>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8d,-0x24(%rbp)
mov    %r9d,-0x28(%rbp)
movl   $0x40,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
mov    %eax,%ecx
add    $0xffffffff,%ecx
mov    %ecx,-0x2c(%rbp)
cmp    $0x0,%eax
je     1156 <update_only_a+0x56>
mov    -0x8(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
mov    -0x18(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
jmp    1123 <update_only_a+0x23>
mov    -0x8(%rbp),%rax
add    $0x100,%rax
mov    %rax,-0x8(%rbp)
mov    -0x10(%rbp),%rax
add    $0x100,%rax
mov    %rax,-0x10(%rbp)
mov    -0x18(%rbp),%rax
add    $0x100,%rax
mov    %rax,-0x18(%rbp)
movl   $0x1,-0x30(%rbp)
mov    -0x20(%rbp),%rax
movslq -0x30(%rbp),%rcx
cmpl   $0x3,(%rax,%rcx,4)
je     12d1 <update_only_a+0x1d1>
mov    -0x20(%rbp),%rax
movslq -0x30(%rbp),%rcx
cmpl   $0x0,(%rax,%rcx,4)
jne    1201 <update_only_a+0x101>
movl   $0x40,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
mov    %eax,%ecx
add    $0xffffffff,%ecx
mov    %ecx,-0x2c(%rbp)
cmp    $0x0,%eax
je     11e5 <update_only_a+0xe5>
mov    -0x8(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
mov    -0x18(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
jmp    11b2 <update_only_a+0xb2>
mov    -0x8(%rbp),%rax
add    $0x100,%rax
mov    %rax,-0x8(%rbp)
mov    -0x10(%rbp),%rax
add    $0x100,%rax
mov    %rax,-0x10(%rbp)
mov    -0x20(%rbp),%rax
movslq -0x30(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
and    $0x1,%eax
cmp    $0x0,%eax
je     1256 <update_only_a+0x156>
movl   $0x40,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
mov    %eax,%ecx
add    $0xffffffff,%ecx
mov    %ecx,-0x2c(%rbp)
cmp    $0x0,%eax
je     1248 <update_only_a+0x148>
mov    -0x18(%rbp),%rax
movslq -0x2c(%rbp),%rcx
xorps  %xmm0,%xmm0
movss  %xmm0,(%rax,%rcx,4)
jmp    121f <update_only_a+0x11f>
mov    -0x10(%rbp),%rax
add    $0x100,%rax
mov    %rax,-0x10(%rbp)
mov    -0x20(%rbp),%rax
movslq -0x30(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
and    $0x2,%eax
cmp    $0x0,%eax
je     12b5 <update_only_a+0x1b5>
movl   $0x40,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
mov    %eax,%ecx
add    $0xffffffff,%ecx
mov    %ecx,-0x2c(%rbp)
cmp    $0x0,%eax
je     12a7 <update_only_a+0x1a7>
mov    -0x8(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
mov    -0x18(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
jmp    1274 <update_only_a+0x174>
mov    -0x8(%rbp),%rax
add    $0x100,%rax
mov    %rax,-0x8(%rbp)
mov    -0x18(%rbp),%rax
add    $0x100,%rax
mov    %rax,-0x18(%rbp)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    1187 <update_only_a+0x87>
movl   $0x40,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
mov    %eax,%ecx
add    $0xffffffff,%ecx
mov    %ecx,-0x2c(%rbp)
cmp    $0x0,%eax
je     130b <update_only_a+0x20b>
mov    -0x8(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
mov    -0x18(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
jmp    12d8 <update_only_a+0x1d8>
mov    -0x20(%rbp),%rax
mov    (%rax),%ecx
add    $0x1,%ecx
shl    $0x6,%ecx
mov    -0x18(%rbp),%rax
movslq %ecx,%rdx
xor    %ecx,%ecx
sub    %rdx,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
pop    %rbp
ret

x86 assembly (clang, -O2):
<update_only_a>:
push   %r14
push   %rbx
lea    0x100(%rdi),%r10
cmp    %rdx,%r10
jbe    115d <update_only_a+0x5d>
lea    0x100(%rdx),%rax
cmp    %rdi,%rax
jbe    115d <update_only_a+0x5d>
mov    $0x3c,%eax
movss  0xc(%rdi,%rax,4),%xmm0
movss  %xmm0,0xc(%rdx,%rax,4)
movss  0x8(%rdi,%rax,4),%xmm0
movss  %xmm0,0x8(%rdx,%rax,4)
movss  0x4(%rdi,%rax,4),%xmm0
movss  %xmm0,0x4(%rdx,%rax,4)
movss  (%rdi,%rax,4),%xmm0
movss  %xmm0,(%rdx,%rax,4)
add    $0xfffffffffffffffc,%rax
cmp    $0xfffffffffffffffc,%rax
jne    1120 <update_only_a+0x20>
jmp    120b <update_only_a+0x10b>
movups 0xf0(%rdi),%xmm0
movups %xmm0,0xf0(%rdx)
movups 0xe0(%rdi),%xmm0
movups %xmm0,0xe0(%rdx)
movups 0xd0(%rdi),%xmm0
movups %xmm0,0xd0(%rdx)
movups 0xc0(%rdi),%xmm0
movups %xmm0,0xc0(%rdx)
movups 0xb0(%rdi),%xmm0
movups %xmm0,0xb0(%rdx)
movups 0xa0(%rdi),%xmm0
movups %xmm0,0xa0(%rdx)
movups 0x90(%rdi),%xmm0
movups %xmm0,0x90(%rdx)
movups 0x80(%rdi),%xmm0
movups %xmm0,0x80(%rdx)
movups 0x70(%rdi),%xmm0
movups %xmm0,0x70(%rdx)
movups 0x60(%rdi),%xmm0
movups %xmm0,0x60(%rdx)
movups 0x50(%rdi),%xmm0
movups %xmm0,0x50(%rdx)
movups 0x40(%rdi),%xmm0
movups %xmm0,0x40(%rdx)
movups 0x30(%rdi),%xmm0
movups %xmm0,0x30(%rdx)
movups 0x20(%rdi),%xmm0
movups %xmm0,0x20(%rdx)
movups 0x10(%rdi),%xmm0
movups %xmm0,0x10(%rdx)
movups (%rdi),%xmm0
movups %xmm0,(%rdx)
mov    $0x1,%r8d
xor    %r9d,%r9d
xorps  %xmm0,%xmm0
mov    %rdx,%rdi
jmp    122e <update_only_a+0x12e>
nopl   0x0(%rax)
mov    %rsi,%r10
add    $0x1,%r8
add    $0x1,%r9
mov    %rax,%rdi
lea    0x100(%rdi),%rax
mov    (%rcx,%r8,4),%r11d
test   %r11d,%r11d
je     1250 <update_only_a+0x150>
cmp    $0x3,%r11d
je     157c <update_only_a+0x47c>
mov    %r10,%rsi
jmp    13b7 <update_only_a+0x2b7>
mov    %r9,%rbx
shl    $0x6,%rbx
lea    (%rdx,%rbx,4),%r14
add    $0x100,%r14
lea    0x100(%r10),%rsi
cmp    %rsi,%r14
jae    12e0 <update_only_a+0x1e0>
lea    (%rdx,%rbx,4),%rbx
add    $0x200,%rbx
cmp    %rbx,%r10
jae    12e0 <update_only_a+0x1e0>
mov    $0x3f,%ebx
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movss  (%r10,%rbx,4),%xmm1
movss  %xmm1,0x100(%rdi,%rbx,4)
movss  -0x4(%r10,%rbx,4),%xmm1
movss  %xmm1,0xfc(%rdi,%rbx,4)
movss  -0x8(%r10,%rbx,4),%xmm1
movss  %xmm1,0xf8(%rdi,%rbx,4)
movss  -0xc(%r10,%rbx,4),%xmm1
movss  %xmm1,0xf4(%rdi,%rbx,4)
add    $0xfffffffffffffffc,%rbx
cmp    $0xffffffffffffffff,%rbx
jne    1290 <update_only_a+0x190>
jmp    13b7 <update_only_a+0x2b7>
xchg   %ax,%ax
movups 0xf0(%r10),%xmm1
movups %xmm1,0x1f0(%rdi)
movups 0xe0(%r10),%xmm1
movups %xmm1,0x1e0(%rdi)
movups 0xd0(%r10),%xmm1
movups %xmm1,0x1d0(%rdi)
movups 0xc0(%r10),%xmm1
movups %xmm1,0x1c0(%rdi)
movups 0xb0(%r10),%xmm1
movups %xmm1,0x1b0(%rdi)
movups 0xa0(%r10),%xmm1
movups %xmm1,0x1a0(%rdi)
movups 0x90(%r10),%xmm1
movups %xmm1,0x190(%rdi)
movups 0x80(%r10),%xmm1
movups %xmm1,0x180(%rdi)
movups 0x70(%r10),%xmm1
movups %xmm1,0x170(%rdi)
movups 0x60(%r10),%xmm1
movups %xmm1,0x160(%rdi)
movups 0x50(%r10),%xmm1
movups %xmm1,0x150(%rdi)
movups 0x40(%r10),%xmm1
movups %xmm1,0x140(%rdi)
movups 0x30(%r10),%xmm1
movups %xmm1,0x130(%rdi)
movups 0x20(%r10),%xmm1
movups %xmm1,0x120(%rdi)
movups 0x10(%r10),%xmm1
movups %xmm1,0x110(%rdi)
movups (%r10),%xmm1
movups %xmm1,0x100(%rdi)
mov    %r9,%r14
shl    $0x8,%r14
lea    (%r14,%rdx,1),%rbx
add    $0x100,%rbx
test   $0x1,%r11b
je     1426 <update_only_a+0x326>
movups %xmm0,0xf0(%rbx)
movups %xmm0,0xe0(%rbx)
movups %xmm0,0xd0(%rbx)
movups %xmm0,0xc0(%rbx)
movups %xmm0,0xb0(%rbx)
movups %xmm0,0xa0(%rbx)
movups %xmm0,0x90(%rbx)
movups %xmm0,0x80(%rbx)
movups %xmm0,0x70(%rbx)
movups %xmm0,0x60(%rbx)
movups %xmm0,0x50(%rbx)
movups %xmm0,0x40(%rbx)
movups %xmm0,0x30(%rbx)
movups %xmm0,0x20(%rbx)
movups %xmm0,0x10(%rbx)
movups %xmm0,(%rbx)
test   $0x2,%r11b
je     1220 <update_only_a+0x120>
lea    0x100(%rsi),%r10
cmp    %r10,%rbx
jae    14b0 <update_only_a+0x3b0>
lea    (%r14,%rdx,1),%rbx
add    $0x200,%rbx
cmp    %rbx,%rsi
jae    14b0 <update_only_a+0x3b0>
mov    $0x3f,%ebx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movss  (%rsi,%rbx,4),%xmm1
movss  %xmm1,0x100(%rdi,%rbx,4)
movss  -0x4(%rsi,%rbx,4),%xmm1
movss  %xmm1,0xfc(%rdi,%rbx,4)
movss  -0x8(%rsi,%rbx,4),%xmm1
movss  %xmm1,0xf8(%rdi,%rbx,4)
movss  -0xc(%rsi,%rbx,4),%xmm1
movss  %xmm1,0xf4(%rdi,%rbx,4)
add    $0xfffffffffffffffc,%rbx
cmp    $0xffffffffffffffff,%rbx
jne    1460 <update_only_a+0x360>
jmp    1223 <update_only_a+0x123>
nopw   0x0(%rax,%rax,1)
movups 0xf0(%rsi),%xmm1
movups %xmm1,0x1f0(%rdi)
movups 0xe0(%rsi),%xmm1
movups %xmm1,0x1e0(%rdi)
movups 0xd0(%rsi),%xmm1
movups %xmm1,0x1d0(%rdi)
movups 0xc0(%rsi),%xmm1
movups %xmm1,0x1c0(%rdi)
movups 0xb0(%rsi),%xmm1
movups %xmm1,0x1b0(%rdi)
movups 0xa0(%rsi),%xmm1
movups %xmm1,0x1a0(%rdi)
movups 0x90(%rsi),%xmm1
movups %xmm1,0x190(%rdi)
movups 0x80(%rsi),%xmm1
movups %xmm1,0x180(%rdi)
movups 0x70(%rsi),%xmm1
movups %xmm1,0x170(%rdi)
movups 0x60(%rsi),%xmm1
movups %xmm1,0x160(%rdi)
movups 0x50(%rsi),%xmm1
movups %xmm1,0x150(%rdi)
movups 0x40(%rsi),%xmm1
movups %xmm1,0x140(%rdi)
movups 0x30(%rsi),%xmm1
movups %xmm1,0x130(%rdi)
movups 0x20(%rsi),%xmm1
movups %xmm1,0x120(%rdi)
movups 0x10(%rsi),%xmm1
movups %xmm1,0x110(%rdi)
movups (%rsi),%xmm1
movups %xmm1,0x100(%rdi)
jmp    1223 <update_only_a+0x123>
cmp    %r10,%rdi
jae    15ee <update_only_a+0x4ee>
lea    0x200(%rdi),%rdx
cmp    %rdx,%r10
jae    15ee <update_only_a+0x4ee>
mov    $0x3f,%edx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movss  (%r10,%rdx,4),%xmm0
movss  %xmm0,0x100(%rdi,%rdx,4)
movss  -0x4(%r10,%rdx,4),%xmm0
movss  %xmm0,0xfc(%rdi,%rdx,4)
movss  -0x8(%r10,%rdx,4),%xmm0
movss  %xmm0,0xf8(%rdi,%rdx,4)
movss  -0xc(%r10,%rdx,4),%xmm0
movss  %xmm0,0xf4(%rdi,%rdx,4)
add    $0xfffffffffffffffc,%rdx
cmp    $0xffffffffffffffff,%rdx
jne    15a0 <update_only_a+0x4a0>
jmp    16c5 <update_only_a+0x5c5>
movups 0xf0(%r10),%xmm0
movups %xmm0,0x1f0(%rdi)
movups 0xe0(%r10),%xmm0
movups %xmm0,0x1e0(%rdi)
movups 0xd0(%r10),%xmm0
movups %xmm0,0x1d0(%rdi)
movups 0xc0(%r10),%xmm0
movups %xmm0,0x1c0(%rdi)
movups 0xb0(%r10),%xmm0
movups %xmm0,0x1b0(%rdi)
movups 0xa0(%r10),%xmm0
movups %xmm0,0x1a0(%rdi)
movups 0x90(%r10),%xmm0
movups %xmm0,0x190(%rdi)
movups 0x80(%r10),%xmm0
movups %xmm0,0x180(%rdi)
movups 0x70(%r10),%xmm0
movups %xmm0,0x170(%rdi)
movups 0x60(%r10),%xmm0
movups %xmm0,0x160(%rdi)
movups 0x50(%r10),%xmm0
movups %xmm0,0x150(%rdi)
movups 0x40(%r10),%xmm0
movups %xmm0,0x140(%rdi)
movups 0x30(%r10),%xmm0
movups %xmm0,0x130(%rdi)
movups 0x20(%r10),%xmm0
movups %xmm0,0x120(%rdi)
movups 0x10(%r10),%xmm0
movups %xmm0,0x110(%rdi)
movups (%r10),%xmm0
movups %xmm0,0x100(%rdi)
mov    (%rcx),%ecx
shl    $0x6,%ecx
add    $0x40,%ecx
movslq %ecx,%rcx
shl    $0x2,%rcx
sub    %rcx,%rax
pop    %rbx
pop    %r14
ret

LLVM IR (-O0):
define float* @update_only_a(float* %0, float* %1, float* %2, i32* %3, i32 %4, i32 %5) {
%7 = alloca float*
%8 = alloca float*
%9 = alloca float*
%10 = alloca i32*
%11 = alloca i32
%12 = alloca i32
%13 = alloca i32
%14 = alloca i32
store float* %0, float** %7
store float* %1, float** %8
store float* %2, float** %9
store i32* %3, i32** %10
store i32 %4, i32* %11
store i32 %5, i32* %12
store i32 64, i32* %13
br label %15
15: ; preds = %19, %6
%16 = load i32, i32* %13
%17 = add nsw i32 %16, -1
store i32 %17, i32* %13
%18 = icmp ne i32 %16, 0
br i1 %18, label %19, label %29
19: ; preds = %15
%20 = load float*, float** %7
%21 = load i32, i32* %13
%22 = sext i32 %21 to i64
%23 = getelementptr inbounds float, float* %20, i64 %22
%24 = load float, float* %23
%25 = load float*, float** %9
%26 = load i32, i32* %13
%27 = sext i32 %26 to i64
%28 = getelementptr inbounds float, float* %25, i64 %27
store float %24, float* %28
br label %15
29: ; preds = %15
%30 = load float*, float** %7
%31 = getelementptr inbounds float, float* %30, i64 64
store float* %31, float** %7
%32 = load float*, float** %8
%33 = getelementptr inbounds float, float* %32, i64 64
store float* %33, float** %8
%34 = load float*, float** %9
%35 = getelementptr inbounds float, float* %34, i64 64
store float* %35, float** %9
store i32 1, i32* %14
br label %36
36: ; preds = %117, %29
%37 = load i32*, i32** %10
%38 = load i32, i32* %14
%39 = sext i32 %38 to i64
%40 = getelementptr inbounds i32, i32* %37, i64 %39
%41 = load i32, i32* %40
%42 = icmp ne i32 %41, 3
br i1 %42, label %43, label %122
43: ; preds = %36
%44 = load i32*, i32** %10
%45 = load i32, i32* %14
%46 = sext i32 %45 to i64
%47 = getelementptr inbounds i32, i32* %44, i64 %46
%48 = load i32, i32* %47
%49 = icmp ne i32 %48, 0
br i1 %49, label %70, label %50
50: ; preds = %43
store i32 64, i32* %13
br label %51
51: ; preds = %55, %50
%52 = load i32, i32* %13
%53 = add nsw i32 %52, -1
store i32 %53, i32* %13
%54 = icmp ne i32 %52, 0
br i1 %54, label %55, label %65
55: ; preds = %51
%56 = load float*, float** %7
%57 = load i32, i32* %13
%58 = sext i32 %57 to i64
%59 = getelementptr inbounds float, float* %56, i64 %58
%60 = load float, float* %59
%61 = load float*, float** %9
%62 = load i32, i32* %13
%63 = sext i32 %62 to i64
%64 = getelementptr inbounds float, float* %61, i64 %63
store float %60, float* %64
br label %51
65: ; preds = %51
%66 = load float*, float** %7
%67 = getelementptr inbounds float, float* %66, i64 64
store float* %67, float** %7
%68 = load float*, float** %8
%69 = getelementptr inbounds float, float* %68, i64 64
store float* %69, float** %8
br label %70
70: ; preds = %65, %43
%71 = load i32*, i32** %10
%72 = load i32, i32* %14
%73 = sext i32 %72 to i64
%74 = getelementptr inbounds i32, i32* %71, i64 %73
%75 = load i32, i32* %74
%76 = and i32 %75, 1
%77 = icmp ne i32 %76, 0
br i1 %77, label %78, label %91
78: ; preds = %70
store i32 64, i32* %13
br label %79
79: ; preds = %83, %78
%80 = load i32, i32* %13
%81 = add nsw i32 %80, -1
store i32 %81, i32* %13
%82 = icmp ne i32 %80, 0
br i1 %82, label %83, label %88
83: ; preds = %79
%84 = load float*, float** %9
%85 = load i32, i32* %13
%86 = sext i32 %85 to i64
%87 = getelementptr inbounds float, float* %84, i64 %86
store float 0.000000e+00, float* %87
br label %79
88: ; preds = %79
%89 = load float*, float** %8
%90 = getelementptr inbounds float, float* %89, i64 64
store float* %90, float** %8
br label %91
91: ; preds = %88, %70
%92 = load i32*, i32** %10
%93 = load i32, i32* %14
%94 = sext i32 %93 to i64
%95 = getelementptr inbounds i32, i32* %92, i64 %94
%96 = load i32, i32* %95
%97 = and i32 %96, 2
%98 = icmp ne i32 %97, 0
br i1 %98, label %99, label %117
99: ; preds = %91
store i32 64, i32* %13
br label %100
100: ; preds = %104, %99
%101 = load i32, i32* %13
%102 = add nsw i32 %101, -1
store i32 %102, i32* %13
%103 = icmp ne i32 %101, 0
br i1 %103, label %104, label %114
104: ; preds = %100
%105 = load float*, float** %7
%106 = load i32, i32* %13
%107 = sext i32 %106 to i64
%108 = getelementptr inbounds float, float* %105, i64 %107
%109 = load float, float* %108
%110 = load float*, float** %9
%111 = load i32, i32* %13
%112 = sext i32 %111 to i64
%113 = getelementptr inbounds float, float* %110, i64 %112
store float %109, float* %113
br label %100
114: ; preds = %100
%115 = load float*, float** %7
%116 = getelementptr inbounds float, float* %115, i64 64
store float* %116, float** %7
br label %117
117: ; preds = %114, %91
%118 = load float*, float** %9
%119 = getelementptr inbounds float, float* %118, i64 64
store float* %119, float** %9
%120 = load i32, i32* %14
%121 = add nsw i32 %120, 1
store i32 %121, i32* %14
br label %36
122: ; preds = %36
store i32 64, i32* %13
br label %123
123: ; preds = %127, %122
%124 = load i32, i32* %13
%125 = add nsw i32 %124, -1
store i32 %125, i32* %13
%126 = icmp ne i32 %124, 0
br i1 %126, label %127, label %137
127: ; preds = %123
%128 = load float*, float** %7
%129 = load i32, i32* %13
%130 = sext i32 %129 to i64
%131 = getelementptr inbounds float, float* %128, i64 %130
%132 = load float, float* %131
%133 = load float*, float** %9
%134 = load i32, i32* %13
%135 = sext i32 %134 to i64
%136 = getelementptr inbounds float, float* %133, i64 %135
store float %132, float* %136
br label %123
137: ; preds = %123
%138 = load i32*, i32** %10
%139 = getelementptr inbounds i32, i32* %138, i64 0
%140 = load i32, i32* %139
%141 = add nsw i32 %140, 1
%142 = mul nsw i32 %141, 64
%143 = load float*, float** %9
%144 = sext i32 %142 to i64
%145 = sub i64 0, %144
%146 = getelementptr inbounds float, float* %143, i64 %145
store float* %146, float** %9
%147 = load float*, float** %9
ret float* %147
}

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