#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 */
void btof(const void *p, float *f, size_t n, int b, int g) {
  size_t i;
  if (b == 8 && g == 0)
    for (i = 0; i < n; ++i)
      f[i] = ((unsigned char *)p)[i] / 255.f;
  else if (b == 16 && g == 0)
    for (i = 0; i < n; ++i)
      f[i] = ((unsigned short *)p)[i] / 65535.f;
  else if (b == 8 && g == 1)
    for (i = 0; i < n; ++i)
      f[i] = ((char *)p)[i] / 127.f;
  else if (b == 16 && g == 1)
    for (i = 0; i < n; ++i)
      f[i] = ((short *)p)[i] / 32767.f;
  else if (b == 32)
    for (i = 0; i < n; ++i)
      f[i] = ((float *)p)[i];
}


x86 assembly (clang, -O0):
<btof>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %ecx,-0x1c(%rbp)
mov    %r8d,-0x20(%rbp)
cmpl   $0x8,-0x1c(%rbp)
jne    1180 <btof+0x80>
cmpl   $0x0,-0x20(%rbp)
jne    1180 <btof+0x80>
movq   $0x0,-0x28(%rbp)
mov    -0x28(%rbp),%rax
cmp    -0x18(%rbp),%rax
jae    117b <btof+0x7b>
mov    -0x8(%rbp),%rax
mov    -0x28(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
cvtsi2ss %eax,%xmm0
movss  0xeb3(%rip),%xmm1
divss  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
jmp    1133 <btof+0x33>
jmp    131f <btof+0x21f>
cmpl   $0x10,-0x1c(%rbp)
jne    11e9 <btof+0xe9>
cmpl   $0x0,-0x20(%rbp)
jne    11e9 <btof+0xe9>
movq   $0x0,-0x28(%rbp)
mov    -0x28(%rbp),%rax
cmp    -0x18(%rbp),%rax
jae    11e4 <btof+0xe4>
mov    -0x8(%rbp),%rax
mov    -0x28(%rbp),%rcx
movzwl (%rax,%rcx,2),%eax
cvtsi2ss %eax,%xmm0
movss  0xe46(%rip),%xmm1
divss  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
jmp    119c <btof+0x9c>
jmp    131a <btof+0x21a>
cmpl   $0x8,-0x1c(%rbp)
jne    1252 <btof+0x152>
cmpl   $0x1,-0x20(%rbp)
jne    1252 <btof+0x152>
movq   $0x0,-0x28(%rbp)
mov    -0x28(%rbp),%rax
cmp    -0x18(%rbp),%rax
jae    124d <btof+0x14d>
mov    -0x8(%rbp),%rax
mov    -0x28(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cvtsi2ss %eax,%xmm0
movss  0xdd9(%rip),%xmm1
divss  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
jmp    1205 <btof+0x105>
jmp    1315 <btof+0x215>
cmpl   $0x10,-0x1c(%rbp)
jne    12bb <btof+0x1bb>
cmpl   $0x1,-0x20(%rbp)
jne    12bb <btof+0x1bb>
movq   $0x0,-0x28(%rbp)
mov    -0x28(%rbp),%rax
cmp    -0x18(%rbp),%rax
jae    12b6 <btof+0x1b6>
mov    -0x8(%rbp),%rax
mov    -0x28(%rbp),%rcx
movswl (%rax,%rcx,2),%eax
cvtsi2ss %eax,%xmm0
movss  0xd6c(%rip),%xmm1
divss  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
jmp    126e <btof+0x16e>
jmp    1310 <btof+0x210>
cmpl   $0x20,-0x1c(%rbp)
jne    130b <btof+0x20b>
movq   $0x0,-0x28(%rbp)
mov    -0x28(%rbp),%rax
cmp    -0x18(%rbp),%rax
jae    1306 <btof+0x206>
mov    -0x8(%rbp),%rax
mov    -0x28(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x28(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x28(%rbp)
jmp    12cd <btof+0x1cd>
jmp    130b <btof+0x20b>
jmp    1310 <btof+0x210>
jmp    1315 <btof+0x215>
jmp    131a <btof+0x21a>
jmp    131f <btof+0x21f>
pop    %rbp
ret

x86 assembly (clang, -O2):
<btof>:
cmp    $0x8,%ecx
jne    11b8 <btof+0xb8>
test   %r8d,%r8d
jne    11b8 <btof+0xb8>
test   %rdx,%rdx
je     169d <btof+0x59d>
cmp    $0x4,%rdx
jb     113b <btof+0x3b>
lea    (%rdi,%rdx,1),%rax
cmp    %rsi,%rax
jbe    12c5 <btof+0x1c5>
lea    (%rsi,%rdx,4),%rax
cmp    %rdi,%rax
jbe    12c5 <btof+0x1c5>
xor    %eax,%eax
mov    %rax,%r8
not    %r8
test   $0x1,%dl
je     1164 <btof+0x64>
movzbl (%rdi,%rax,1),%ecx
xorps  %xmm0,%xmm0
cvtsi2ss %ecx,%xmm0
divss  0xef1(%rip),%xmm0
movss  %xmm0,(%rsi,%rax,4)
or     $0x1,%rax
add    %rdx,%r8
je     169d <btof+0x59d>
movss  0xed7(%rip),%xmm0
cs nopw 0x0(%rax,%rax,1)
nop
movzbl (%rdi,%rax,1),%ecx
xorps  %xmm1,%xmm1
cvtsi2ss %ecx,%xmm1
divss  %xmm0,%xmm1
movss  %xmm1,(%rsi,%rax,4)
movzbl 0x1(%rdi,%rax,1),%ecx
xorps  %xmm1,%xmm1
cvtsi2ss %ecx,%xmm1
divss  %xmm0,%xmm1
movss  %xmm1,0x4(%rsi,%rax,4)
add    $0x2,%rax
cmp    %rax,%rdx
jne    1180 <btof+0x80>
jmp    169d <btof+0x59d>
cmp    $0x10,%ecx
jne    11dc <btof+0xdc>
test   %r8d,%r8d
jne    11dc <btof+0xdc>
test   %rdx,%rdx
je     169d <btof+0x59d>
cmp    $0x4,%rdx
jae    136c <btof+0x26c>
xor    %eax,%eax
jmp    13fb <btof+0x2fb>
cmp    $0x8,%ecx
jne    1298 <btof+0x198>
cmp    $0x1,%r8d
jne    1298 <btof+0x198>
test   %rdx,%rdx
je     169d <btof+0x59d>
cmp    $0x4,%rdx
jb     1218 <btof+0x118>
lea    (%rdi,%rdx,1),%rax
cmp    %rsi,%rax
jbe    14fe <btof+0x3fe>
lea    (%rsi,%rdx,4),%rax
cmp    %rdi,%rax
jbe    14fe <btof+0x3fe>
xor    %eax,%eax
mov    %rax,%r8
not    %r8
test   $0x1,%dl
je     1241 <btof+0x141>
movsbl (%rdi,%rax,1),%ecx
xorps  %xmm0,%xmm0
cvtsi2ss %ecx,%xmm0
divss  0xe0c(%rip),%xmm0
movss  %xmm0,(%rsi,%rax,4)
or     $0x1,%rax
add    %rdx,%r8
je     169d <btof+0x59d>
movss  0xdf2(%rip),%xmm0
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movsbl (%rdi,%rax,1),%ecx
xorps  %xmm1,%xmm1
cvtsi2ss %ecx,%xmm1
divss  %xmm0,%xmm1
movss  %xmm1,(%rsi,%rax,4)
movsbl 0x1(%rdi,%rax,1),%ecx
xorps  %xmm1,%xmm1
cvtsi2ss %ecx,%xmm1
divss  %xmm0,%xmm1
movss  %xmm1,0x4(%rsi,%rax,4)
add    $0x2,%rax
cmp    %rax,%rdx
jne    1260 <btof+0x160>
jmp    169d <btof+0x59d>
cmp    $0x10,%ecx
jne    1432 <btof+0x332>
cmp    $0x1,%r8d
jne    1432 <btof+0x332>
test   %rdx,%rdx
je     169d <btof+0x59d>
cmp    $0x4,%rdx
jae    1579 <btof+0x479>
xor    %eax,%eax
jmp    1677 <btof+0x577>
mov    %rdx,%rax
and    $0xfffffffffffffffc,%rax
lea    -0x4(%rax),%rcx
mov    %rcx,%r8
shr    $0x2,%r8
add    $0x1,%r8
test   %rcx,%rcx
je     14dc <btof+0x3dc>
mov    %r8,%r9
and    $0xfffffffffffffffe,%r9
xor    %ecx,%ecx
pxor   %xmm0,%xmm0
movaps 0xd38(%rip),%xmm1
nopl   0x0(%rax,%rax,1)
movd   (%rdi,%rcx,1),%xmm2
punpcklbw %xmm0,%xmm2
punpcklwd %xmm0,%xmm2
cvtdq2ps %xmm2,%xmm2
divps  %xmm1,%xmm2
movups %xmm2,(%rsi,%rcx,4)
movd   0x4(%rdi,%rcx,1),%xmm2
punpcklbw %xmm0,%xmm2
punpcklwd %xmm0,%xmm2
cvtdq2ps %xmm2,%xmm2
divps  %xmm1,%xmm2
movups %xmm2,0x10(%rsi,%rcx,4)
add    $0x8,%rcx
add    $0xfffffffffffffffe,%r9
jne    1300 <btof+0x200>
test   $0x1,%r8b
je     135e <btof+0x25e>
movd   (%rdi,%rcx,1),%xmm0
xorps  %xmm1,%xmm1
punpcklbw %xmm1,%xmm0
punpcklwd %xmm1,%xmm0
cvtdq2ps %xmm0,%xmm0
divps  0xcd6(%rip),%xmm0
movups %xmm0,(%rsi,%rcx,4)
cmp    %rdx,%rax
je     169d <btof+0x59d>
jmp    113d <btof+0x3d>
mov    %rdx,%rax
and    $0xfffffffffffffffc,%rax
lea    -0x4(%rax),%rcx
mov    %rcx,%r8
shr    $0x2,%r8
add    $0x1,%r8
test   %rcx,%rcx
je     14ed <btof+0x3ed>
mov    %r8,%r9
and    $0xfffffffffffffffe,%r9
xor    %ecx,%ecx
pxor   %xmm0,%xmm0
movaps 0xc81(%rip),%xmm1
nop
movq   (%rdi,%rcx,2),%xmm2
punpcklwd %xmm0,%xmm2
cvtdq2ps %xmm2,%xmm2
divps  %xmm1,%xmm2
movups %xmm2,(%rsi,%rcx,4)
movq   0x8(%rdi,%rcx,2),%xmm2
punpcklwd %xmm0,%xmm2
cvtdq2ps %xmm2,%xmm2
divps  %xmm1,%xmm2
movups %xmm2,0x10(%rsi,%rcx,4)
add    $0x8,%rcx
add    $0xfffffffffffffffe,%r9
jne    13a0 <btof+0x2a0>
test   $0x1,%r8b
je     13f2 <btof+0x2f2>
movq   (%rdi,%rcx,2),%xmm0
xorps  %xmm1,%xmm1
punpcklwd %xmm1,%xmm0
cvtdq2ps %xmm0,%xmm0
divps  0xc32(%rip),%xmm0
movups %xmm0,(%rsi,%rcx,4)
cmp    %rdx,%rax
je     169d <btof+0x59d>
movss  0xc45(%rip),%xmm0
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movzwl (%rdi,%rax,2),%ecx
xorps  %xmm1,%xmm1
cvtsi2ss %ecx,%xmm1
divss  %xmm0,%xmm1
movss  %xmm1,(%rsi,%rax,4)
add    $0x1,%rax
cmp    %rax,%rdx
jne    1410 <btof+0x310>
jmp    169d <btof+0x59d>
cmp    $0x20,%ecx
jne    169d <btof+0x59d>
test   %rdx,%rdx
je     169d <btof+0x59d>
cmp    $0x8,%rdx
jb     1464 <btof+0x364>
lea    (%rdi,%rdx,4),%rax
cmp    %rsi,%rax
jbe    15ee <btof+0x4ee>
lea    (%rsi,%rdx,4),%rax
cmp    %rdi,%rax
jbe    15ee <btof+0x4ee>
xor    %eax,%eax
mov    %rax,%r8
not    %r8
add    %rdx,%r8
mov    %rdx,%rcx
and    $0x3,%rcx
je     1494 <btof+0x394>
nopl   0x0(%rax,%rax,1)
movss  (%rdi,%rax,4),%xmm0
movss  %xmm0,(%rsi,%rax,4)
add    $0x1,%rax
add    $0xffffffffffffffff,%rcx
jne    1480 <btof+0x380>
cmp    $0x3,%r8
jb     169d <btof+0x59d>
xchg   %ax,%ax
movss  (%rdi,%rax,4),%xmm0
movss  %xmm0,(%rsi,%rax,4)
movss  0x4(%rdi,%rax,4),%xmm0
movss  %xmm0,0x4(%rsi,%rax,4)
movss  0x8(%rdi,%rax,4),%xmm0
movss  %xmm0,0x8(%rsi,%rax,4)
movss  0xc(%rdi,%rax,4),%xmm0
movss  %xmm0,0xc(%rsi,%rax,4)
add    $0x4,%rax
cmp    %rax,%rdx
jne    14a0 <btof+0x3a0>
jmp    169d <btof+0x59d>
xor    %ecx,%ecx
test   $0x1,%r8b
jne    1340 <btof+0x240>
jmp    135e <btof+0x25e>
xor    %ecx,%ecx
test   $0x1,%r8b
jne    13d8 <btof+0x2d8>
jmp    13f2 <btof+0x2f2>
mov    %rdx,%rax
and    $0xfffffffffffffffc,%rax
lea    -0x4(%rax),%rcx
mov    %rcx,%r8
shr    $0x2,%r8
add    $0x1,%r8
test   %rcx,%rcx
je     161c <btof+0x51c>
mov    %r8,%r9
and    $0xfffffffffffffffe,%r9
xor    %ecx,%ecx
movaps 0xae3(%rip),%xmm0
nopl   (%rax)
movd   (%rdi,%rcx,1),%xmm1
punpcklbw %xmm1,%xmm1
punpcklwd %xmm1,%xmm1
psrad  $0x18,%xmm1
cvtdq2ps %xmm1,%xmm1
divps  %xmm0,%xmm1
movups %xmm1,(%rsi,%rcx,4)
movd   0x4(%rdi,%rcx,1),%xmm1
punpcklbw %xmm1,%xmm1
punpcklwd %xmm1,%xmm1
psrad  $0x18,%xmm1
cvtdq2ps %xmm1,%xmm1
divps  %xmm0,%xmm1
movups %xmm1,0x10(%rsi,%rcx,4)
add    $0x8,%rcx
add    $0xfffffffffffffffe,%r9
jne    1530 <btof+0x430>
jmp    161e <btof+0x51e>
mov    %rdx,%rax
and    $0xfffffffffffffffc,%rax
lea    -0x4(%rax),%rcx
mov    %rcx,%r8
shr    $0x2,%r8
add    $0x1,%r8
test   %rcx,%rcx
je     164e <btof+0x54e>
mov    %r8,%r9
and    $0xfffffffffffffffe,%r9
xor    %ecx,%ecx
movaps 0xa58(%rip),%xmm0
nopl   0x0(%rax,%rax,1)
movq   (%rdi,%rcx,2),%xmm1
punpcklwd %xmm1,%xmm1
psrad  $0x10,%xmm1
cvtdq2ps %xmm1,%xmm1
divps  %xmm0,%xmm1
movups %xmm1,(%rsi,%rcx,4)
movq   0x8(%rdi,%rcx,2),%xmm1
punpcklwd %xmm1,%xmm1
psrad  $0x10,%xmm1
cvtdq2ps %xmm1,%xmm1
divps  %xmm0,%xmm1
movups %xmm1,0x10(%rsi,%rcx,4)
add    $0x8,%rcx
add    $0xfffffffffffffffe,%r9
jne    15b0 <btof+0x4b0>
jmp    1650 <btof+0x550>
mov    %rdx,%rax
and    $0xfffffffffffffff8,%rax
lea    -0x8(%rax),%rcx
mov    %rcx,%r9
shr    $0x3,%r9
add    $0x1,%r9
mov    %r9d,%r8d
and    $0x3,%r8d
cmp    $0x18,%rcx
jae    169e <btof+0x59e>
xor    %ecx,%ecx
jmp    16fc <btof+0x5fc>
xor    %ecx,%ecx
test   $0x1,%r8b
je     1644 <btof+0x544>
movd   (%rdi,%rcx,1),%xmm0
punpcklbw %xmm0,%xmm0
punpcklwd %xmm0,%xmm0
psrad  $0x18,%xmm0
cvtdq2ps %xmm0,%xmm0
divps  0x9d0(%rip),%xmm0
movups %xmm0,(%rsi,%rcx,4)
cmp    %rdx,%rax
je     169d <btof+0x59d>
jmp    121a <btof+0x11a>
xor    %ecx,%ecx
test   $0x1,%r8b
je     1672 <btof+0x572>
movq   (%rdi,%rcx,2),%xmm0
punpcklwd %xmm0,%xmm0
psrad  $0x10,%xmm0
cvtdq2ps %xmm0,%xmm0
divps  0x992(%rip),%xmm0
movups %xmm0,(%rsi,%rcx,4)
cmp    %rdx,%rax
je     169d <btof+0x59d>
movss  0x9c1(%rip),%xmm0
nop
movswl (%rdi,%rax,2),%ecx
xorps  %xmm1,%xmm1
cvtsi2ss %ecx,%xmm1
divss  %xmm0,%xmm1
movss  %xmm1,(%rsi,%rax,4)
add    $0x1,%rax
cmp    %rax,%rdx
jne    1680 <btof+0x580>
ret
and    $0xfffffffffffffffc,%r9
xor    %ecx,%ecx
movups (%rdi,%rcx,4),%xmm0
movups 0x10(%rdi,%rcx,4),%xmm1
movups %xmm0,(%rsi,%rcx,4)
movups %xmm1,0x10(%rsi,%rcx,4)
movups 0x20(%rdi,%rcx,4),%xmm0
movups 0x30(%rdi,%rcx,4),%xmm1
movups %xmm0,0x20(%rsi,%rcx,4)
movups %xmm1,0x30(%rsi,%rcx,4)
movups 0x40(%rdi,%rcx,4),%xmm0
movups 0x50(%rdi,%rcx,4),%xmm1
movups %xmm0,0x40(%rsi,%rcx,4)
movups %xmm1,0x50(%rsi,%rcx,4)
movups 0x60(%rdi,%rcx,4),%xmm0
movups 0x70(%rdi,%rcx,4),%xmm1
movups %xmm0,0x60(%rsi,%rcx,4)
movups %xmm1,0x70(%rsi,%rcx,4)
add    $0x20,%rcx
add    $0xfffffffffffffffc,%r9
jne    16a4 <btof+0x5a4>
test   %r8,%r8
je     1736 <btof+0x636>
lea    (%rsi,%rcx,4),%r9
add    $0x10,%r9
lea    (%rdi,%rcx,4),%r10
add    $0x10,%r10
shl    $0x5,%r8
xor    %ecx,%ecx
movups -0x10(%r10,%rcx,1),%xmm0
movups (%r10,%rcx,1),%xmm1
movups %xmm0,-0x10(%r9,%rcx,1)
movups %xmm1,(%r9,%rcx,1)
add    $0x20,%rcx
cmp    %rcx,%r8
jne    1717 <btof+0x617>
cmp    %rdx,%rax
je     169d <btof+0x59d>
jmp    1466 <btof+0x366>

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

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