#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*/ check_offloading();
int foo(int);
scalar_t__ foo_aligned(int *);
scalar_t__ foo_inbranch(int *, int);
scalar_t__ foo_linear(int *);
scalar_t__ foo_notinbranch(int *, int);
int foo_simdlen(int);
scalar_t__ foo_uniform(int *, int);
int /*<<< orphan*/ printf(char *, ...);
int main() {
  check_offloading();
  int a[100], aa[100], b[100];
  int i, fail = 0;
  for (i = 0; i < 100; i++)
    aa[i] = a[i] = -1;
#pragma omp target map(tofrom : a [0:100])
  {
    int k;
#pragma omp simd
    for (k = 0; k < 100; k++)
      a[k] = foo(k);
  }
  for (i = 0; i < 100; i++)
    aa[i] = i + 1;
  for (i = 0; i < 100; i++) {
    if (a[i] != aa[i]) {
      printf("%d: a %d != %d\n", i, a[i], aa[i]);
      fail = 1;
    }
  }
  if (fail)
    printf("failed\n");
  else
    printf("success\n");
  fail = 0;
  for (i = 0; i < 100; i++)
    aa[i] = a[i] = -1;
#pragma omp target map(tofrom : a [0:100])
  {
    int k;
#pragma omp simd
    for (k = 0; k < 100; k++)
      a[k] = foo_simdlen(k);
  }
  for (i = 0; i < 100; i++)
    aa[i] = i + 1;
  for (i = 0; i < 100; i++) {
    if (a[i] != aa[i]) {
      printf("%d: a %d != %d\n", i, a[i], aa[i]);
      fail = 1;
    }
  }
  if (fail)
    printf("failed\n");
  else
    printf("success\n");
  fail = 0;
  for (i = 0; i < 100; i++) {
    aa[i] = a[i] = -1;
    b[i] = i;
  }
#pragma omp target map(tofrom : a [0:100]) map(to : b[:100])
  {
    int k;
#pragma omp simd
    for (k = 0; k < 100; k++) {
      a[k] += foo_linear(&b[k]);
    }
  }
  for (i = 0; i < 100; i++)
    aa[i] = i;
  for (i = 0; i < 100; i++) {
    if (a[i] != aa[i]) {
      printf("%d: a %d != %d\n", i, a[i], aa[i]);
      fail = 1;
    }
  }
  if (fail)
    printf("failed\n");
  else
    printf("success\n");
  fail = 0;
  for (i = 0; i < 100; i++) {
    aa[i] = a[i] = -1;
    b[i] = i;
  }
#pragma omp target map(tofrom : a [0:100]) map(to : b[:100])
  {
    int k;
#pragma omp simd
    for (k = 0; k < 100; k++) {
      a[k] += foo_aligned(&b[k]);
    }
  }
  for (i = 0; i < 100; i++)
    aa[i] = i;
  for (i = 0; i < 100; i++) {
    if (a[i] != aa[i]) {
      printf("%d: a %d != %d\n", i, a[i], aa[i]);
      fail = 1;
    }
  }
  if (fail)
    printf("failed\n");
  else
    printf("success\n");
  fail = 0;
  for (i = 0; i < 100; i++) {
    aa[i] = a[i] = -1;
    b[i] = i;
  }
#pragma omp target map(tofrom : a [0:100]) map(to : b[:100])
  {
    int k;
    int c = 3;
#pragma omp simd
    for (k = 0; k < 100; k++) {
      a[k] += foo_uniform(&b[k], c);
    }
  }
  for (i = 0; i < 100; i++)
    aa[i] = i + 2;
  for (i = 0; i < 100; i++) {
    if (a[i] != aa[i]) {
      printf("%d: a %d != %d\n", i, a[i], aa[i]);
      fail = 1;
    }
  }
  if (fail)
    printf("failed\n");
  else
    printf("success\n");
  fail = 0;
  for (i = 0; i < 100; i++) {
    aa[i] = a[i] = -1;
    b[i] = i;
  }
#pragma omp target map(tofrom : a [0:100]) map(to : b[:100])
  {
    int k;
    int c = 3;
#pragma omp simd
    for (k = 0; k < 100; k++) {
      if (k % 2 == 0)
        a[k] += foo_inbranch(&b[k], c);
    }
  }
  for (i = 0; i < 100; i++)
    if (i % 2 == 0)
      aa[i] = i + 2;
  for (i = 0; i < 100; i++) {
    if (a[i] != aa[i]) {
      printf("%d: a %d != %d\n", i, a[i], aa[i]);
      fail = 1;
    }
  }
  if (fail)
    printf("failed\n");
  else
    printf("success\n");
  fail = 0;
  for (i = 0; i < 100; i++) {
    aa[i] = a[i] = -1;
    b[i] = i;
  }
#pragma omp target map(tofrom : a [0:100]) map(to : b[:100])
  {
    int k;
    int c = 3;
#pragma omp simd
    for (k = 0; k < 100; k++) {
      a[k] += foo_notinbranch(&b[k], c);
    }
  }
  for (i = 0; i < 100; i++)
    aa[i] = i + 2;
  for (i = 0; i < 100; i++) {
    if (a[i] != aa[i]) {
      printf("%d: a %d != %d\n", i, a[i], aa[i]);
      fail = 1;
    }
  }
  if (fail)
    printf("failed\n");
  else
    printf("success\n");
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x4f0,%rsp
movl   $0x0,-0x4(%rbp)
mov    $0x0,%al
call   1090 <check_offloading@plt>
movl   $0x0,-0x4c8(%rbp)
movl   $0x0,-0x4c4(%rbp)
cmpl   $0x64,-0x4c4(%rbp)
jge    1202 <main+0x72>
movslq -0x4c4(%rbp),%rax
movl   $0xffffffff,-0x1a0(%rbp,%rax,4)
ff ff ff ff
movslq -0x4c4(%rbp),%rax
movl   $0xffffffff,-0x330(%rbp,%rax,4)
ff ff ff ff
mov    -0x4c4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c4(%rbp)
jmp    11bd <main+0x2d>
movl   $0x0,-0x4cc(%rbp)
cmpl   $0x64,-0x4cc(%rbp)
jge    1248 <main+0xb8>
mov    -0x4cc(%rbp),%edi
call   1070 <foo@plt>
mov    %eax,%ecx
movslq -0x4cc(%rbp),%rax
mov    %ecx,-0x1a0(%rbp,%rax,4)
mov    -0x4cc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4cc(%rbp)
jmp    120c <main+0x7c>
movl   $0x0,-0x4c4(%rbp)
cmpl   $0x64,-0x4c4(%rbp)
jge    128a <main+0xfa>
mov    -0x4c4(%rbp),%ecx
add    $0x1,%ecx
movslq -0x4c4(%rbp),%rax
mov    %ecx,-0x330(%rbp,%rax,4)
mov    -0x4c4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c4(%rbp)
jmp    1252 <main+0xc2>
movl   $0x0,-0x4c4(%rbp)
cmpl   $0x64,-0x4c4(%rbp)
jge    1316 <main+0x186>
movslq -0x4c4(%rbp),%rax
mov    -0x1a0(%rbp,%rax,4),%eax
movslq -0x4c4(%rbp),%rcx
cmp    -0x330(%rbp,%rcx,4),%eax
je     12fd <main+0x16d>
mov    -0x4c4(%rbp),%esi
movslq -0x4c4(%rbp),%rax
mov    -0x1a0(%rbp,%rax,4),%edx
movslq -0x4c4(%rbp),%rax
mov    -0x330(%rbp,%rax,4),%ecx
lea    0xd14(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x1,-0x4c8(%rbp)
jmp    1302 <main+0x172>
mov    -0x4c4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c4(%rbp)
jmp    1294 <main+0x104>
cmpl   $0x0,-0x4c8(%rbp)
je     1336 <main+0x1a6>
lea    0xce6(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    1344 <main+0x1b4>
lea    0xcdb(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x0,-0x4c8(%rbp)
movl   $0x0,-0x4c4(%rbp)
cmpl   $0x64,-0x4c4(%rbp)
jge    139d <main+0x20d>
movslq -0x4c4(%rbp),%rax
movl   $0xffffffff,-0x1a0(%rbp,%rax,4)
ff ff ff ff
movslq -0x4c4(%rbp),%rax
movl   $0xffffffff,-0x330(%rbp,%rax,4)
ff ff ff ff
mov    -0x4c4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c4(%rbp)
jmp    1358 <main+0x1c8>
movl   $0x0,-0x4d0(%rbp)
cmpl   $0x64,-0x4d0(%rbp)
jge    13e3 <main+0x253>
mov    -0x4d0(%rbp),%edi
call   1040 <foo_simdlen@plt>
mov    %eax,%ecx
movslq -0x4d0(%rbp),%rax
mov    %ecx,-0x1a0(%rbp,%rax,4)
mov    -0x4d0(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4d0(%rbp)
jmp    13a7 <main+0x217>
movl   $0x0,-0x4c4(%rbp)
cmpl   $0x64,-0x4c4(%rbp)
jge    1425 <main+0x295>
mov    -0x4c4(%rbp),%ecx
add    $0x1,%ecx
movslq -0x4c4(%rbp),%rax
mov    %ecx,-0x330(%rbp,%rax,4)
mov    -0x4c4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c4(%rbp)
jmp    13ed <main+0x25d>
movl   $0x0,-0x4c4(%rbp)
cmpl   $0x64,-0x4c4(%rbp)
jge    14b1 <main+0x321>
movslq -0x4c4(%rbp),%rax
mov    -0x1a0(%rbp,%rax,4),%eax
movslq -0x4c4(%rbp),%rcx
cmp    -0x330(%rbp,%rcx,4),%eax
je     1498 <main+0x308>
mov    -0x4c4(%rbp),%esi
movslq -0x4c4(%rbp),%rax
mov    -0x1a0(%rbp,%rax,4),%edx
movslq -0x4c4(%rbp),%rax
mov    -0x330(%rbp,%rax,4),%ecx
lea    0xb79(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x1,-0x4c8(%rbp)
jmp    149d <main+0x30d>
mov    -0x4c4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c4(%rbp)
jmp    142f <main+0x29f>
cmpl   $0x0,-0x4c8(%rbp)
je     14d1 <main+0x341>
lea    0xb4b(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    14df <main+0x34f>
lea    0xb40(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x0,-0x4c8(%rbp)
movl   $0x0,-0x4c4(%rbp)
cmpl   $0x64,-0x4c4(%rbp)
jge    154c <main+0x3bc>
movslq -0x4c4(%rbp),%rax
movl   $0xffffffff,-0x1a0(%rbp,%rax,4)
ff ff ff ff
movslq -0x4c4(%rbp),%rax
movl   $0xffffffff,-0x330(%rbp,%rax,4)
ff ff ff ff
mov    -0x4c4(%rbp),%ecx
movslq -0x4c4(%rbp),%rax
mov    %ecx,-0x4c0(%rbp,%rax,4)
mov    -0x4c4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c4(%rbp)
jmp    14f3 <main+0x363>
movl   $0x0,-0x4d4(%rbp)
cmpl   $0x64,-0x4d4(%rbp)
jge    15ad <main+0x41d>
movslq -0x4d4(%rbp),%rax
lea    -0x4c0(%rbp),%rdi
shl    $0x2,%rax
add    %rax,%rdi
call   1030 <foo_linear@plt>
mov    %rax,%rdx
movslq -0x4d4(%rbp),%rax
movslq -0x1a0(%rbp,%rax,4),%rcx
ff
add    %rdx,%rcx
mov    %ecx,-0x1a0(%rbp,%rax,4)
mov    -0x4d4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4d4(%rbp)
jmp    1556 <main+0x3c6>
movl   $0x0,-0x4c4(%rbp)
cmpl   $0x64,-0x4c4(%rbp)
jge    15ec <main+0x45c>
mov    -0x4c4(%rbp),%ecx
movslq -0x4c4(%rbp),%rax
mov    %ecx,-0x330(%rbp,%rax,4)
mov    -0x4c4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c4(%rbp)
jmp    15b7 <main+0x427>
movl   $0x0,-0x4c4(%rbp)
cmpl   $0x64,-0x4c4(%rbp)
jge    1678 <main+0x4e8>
movslq -0x4c4(%rbp),%rax
mov    -0x1a0(%rbp,%rax,4),%eax
movslq -0x4c4(%rbp),%rcx
cmp    -0x330(%rbp,%rcx,4),%eax
je     165f <main+0x4cf>
mov    -0x4c4(%rbp),%esi
movslq -0x4c4(%rbp),%rax
mov    -0x1a0(%rbp,%rax,4),%edx
movslq -0x4c4(%rbp),%rax
mov    -0x330(%rbp,%rax,4),%ecx
lea    0x9b2(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x1,-0x4c8(%rbp)
jmp    1664 <main+0x4d4>
mov    -0x4c4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c4(%rbp)
jmp    15f6 <main+0x466>
cmpl   $0x0,-0x4c8(%rbp)
je     1698 <main+0x508>
lea    0x984(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    16a6 <main+0x516>
lea    0x979(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x0,-0x4c8(%rbp)
movl   $0x0,-0x4c4(%rbp)
cmpl   $0x64,-0x4c4(%rbp)
jge    1713 <main+0x583>
movslq -0x4c4(%rbp),%rax
movl   $0xffffffff,-0x1a0(%rbp,%rax,4)
ff ff ff ff
movslq -0x4c4(%rbp),%rax
movl   $0xffffffff,-0x330(%rbp,%rax,4)
ff ff ff ff
mov    -0x4c4(%rbp),%ecx
movslq -0x4c4(%rbp),%rax
mov    %ecx,-0x4c0(%rbp,%rax,4)
mov    -0x4c4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c4(%rbp)
jmp    16ba <main+0x52a>
movl   $0x0,-0x4d8(%rbp)
cmpl   $0x64,-0x4d8(%rbp)
jge    1774 <main+0x5e4>
movslq -0x4d8(%rbp),%rax
lea    -0x4c0(%rbp),%rdi
shl    $0x2,%rax
add    %rax,%rdi
call   10a0 <foo_aligned@plt>
mov    %rax,%rdx
movslq -0x4d8(%rbp),%rax
movslq -0x1a0(%rbp,%rax,4),%rcx
ff
add    %rdx,%rcx
mov    %ecx,-0x1a0(%rbp,%rax,4)
mov    -0x4d8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4d8(%rbp)
jmp    171d <main+0x58d>
movl   $0x0,-0x4c4(%rbp)
cmpl   $0x64,-0x4c4(%rbp)
jge    17b3 <main+0x623>
mov    -0x4c4(%rbp),%ecx
movslq -0x4c4(%rbp),%rax
mov    %ecx,-0x330(%rbp,%rax,4)
mov    -0x4c4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c4(%rbp)
jmp    177e <main+0x5ee>
movl   $0x0,-0x4c4(%rbp)
cmpl   $0x64,-0x4c4(%rbp)
jge    183f <main+0x6af>
movslq -0x4c4(%rbp),%rax
mov    -0x1a0(%rbp,%rax,4),%eax
movslq -0x4c4(%rbp),%rcx
cmp    -0x330(%rbp,%rcx,4),%eax
je     1826 <main+0x696>
mov    -0x4c4(%rbp),%esi
movslq -0x4c4(%rbp),%rax
mov    -0x1a0(%rbp,%rax,4),%edx
movslq -0x4c4(%rbp),%rax
mov    -0x330(%rbp,%rax,4),%ecx
lea    0x7eb(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x1,-0x4c8(%rbp)
jmp    182b <main+0x69b>
mov    -0x4c4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c4(%rbp)
jmp    17bd <main+0x62d>
cmpl   $0x0,-0x4c8(%rbp)
je     185f <main+0x6cf>
lea    0x7bd(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    186d <main+0x6dd>
lea    0x7b2(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x0,-0x4c8(%rbp)
movl   $0x0,-0x4c4(%rbp)
cmpl   $0x64,-0x4c4(%rbp)
jge    18da <main+0x74a>
movslq -0x4c4(%rbp),%rax
movl   $0xffffffff,-0x1a0(%rbp,%rax,4)
ff ff ff ff
movslq -0x4c4(%rbp),%rax
movl   $0xffffffff,-0x330(%rbp,%rax,4)
ff ff ff ff
mov    -0x4c4(%rbp),%ecx
movslq -0x4c4(%rbp),%rax
mov    %ecx,-0x4c0(%rbp,%rax,4)
mov    -0x4c4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c4(%rbp)
jmp    1881 <main+0x6f1>
movl   $0x3,-0x4e0(%rbp)
movl   $0x0,-0x4dc(%rbp)
cmpl   $0x64,-0x4dc(%rbp)
jge    194b <main+0x7bb>
movslq -0x4dc(%rbp),%rax
lea    -0x4c0(%rbp),%rdi
shl    $0x2,%rax
add    %rax,%rdi
mov    -0x4e0(%rbp),%esi
call   10b0 <foo_uniform@plt>
mov    %rax,%rdx
movslq -0x4dc(%rbp),%rax
movslq -0x1a0(%rbp,%rax,4),%rcx
ff
add    %rdx,%rcx
mov    %ecx,-0x1a0(%rbp,%rax,4)
mov    -0x4dc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4dc(%rbp)
jmp    18ee <main+0x75e>
movl   $0x0,-0x4c4(%rbp)
cmpl   $0x64,-0x4c4(%rbp)
jge    198d <main+0x7fd>
mov    -0x4c4(%rbp),%ecx
add    $0x2,%ecx
movslq -0x4c4(%rbp),%rax
mov    %ecx,-0x330(%rbp,%rax,4)
mov    -0x4c4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c4(%rbp)
jmp    1955 <main+0x7c5>
movl   $0x0,-0x4c4(%rbp)
cmpl   $0x64,-0x4c4(%rbp)
jge    1a19 <main+0x889>
movslq -0x4c4(%rbp),%rax
mov    -0x1a0(%rbp,%rax,4),%eax
movslq -0x4c4(%rbp),%rcx
cmp    -0x330(%rbp,%rcx,4),%eax
je     1a00 <main+0x870>
mov    -0x4c4(%rbp),%esi
movslq -0x4c4(%rbp),%rax
mov    -0x1a0(%rbp,%rax,4),%edx
movslq -0x4c4(%rbp),%rax
mov    -0x330(%rbp,%rax,4),%ecx
lea    0x611(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x1,-0x4c8(%rbp)
jmp    1a05 <main+0x875>
mov    -0x4c4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c4(%rbp)
jmp    1997 <main+0x807>
cmpl   $0x0,-0x4c8(%rbp)
je     1a39 <main+0x8a9>
lea    0x5e3(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    1a47 <main+0x8b7>
lea    0x5d8(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x0,-0x4c8(%rbp)
movl   $0x0,-0x4c4(%rbp)
cmpl   $0x64,-0x4c4(%rbp)
jge    1ab4 <main+0x924>
movslq -0x4c4(%rbp),%rax
movl   $0xffffffff,-0x1a0(%rbp,%rax,4)
ff ff ff ff
movslq -0x4c4(%rbp),%rax
movl   $0xffffffff,-0x330(%rbp,%rax,4)
ff ff ff ff
mov    -0x4c4(%rbp),%ecx
movslq -0x4c4(%rbp),%rax
mov    %ecx,-0x4c0(%rbp,%rax,4)
mov    -0x4c4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c4(%rbp)
jmp    1a5b <main+0x8cb>
movl   $0x3,-0x4e8(%rbp)
movl   $0x0,-0x4e4(%rbp)
cmpl   $0x64,-0x4e4(%rbp)
jge    1b41 <main+0x9b1>
mov    -0x4e4(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    1b28 <main+0x998>
movslq -0x4e4(%rbp),%rax
lea    -0x4c0(%rbp),%rdi
shl    $0x2,%rax
add    %rax,%rdi
mov    -0x4e8(%rbp),%esi
call   1060 <foo_inbranch@plt>
mov    %rax,%rdx
movslq -0x4e4(%rbp),%rax
movslq -0x1a0(%rbp,%rax,4),%rcx
ff
add    %rdx,%rcx
mov    %ecx,-0x1a0(%rbp,%rax,4)
jmp    1b2d <main+0x99d>
mov    -0x4e4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4e4(%rbp)
jmp    1ac8 <main+0x938>
movl   $0x0,-0x4c4(%rbp)
cmpl   $0x64,-0x4c4(%rbp)
jge    1b9f <main+0xa0f>
mov    -0x4c4(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    1b86 <main+0x9f6>
mov    -0x4c4(%rbp),%ecx
add    $0x2,%ecx
movslq -0x4c4(%rbp),%rax
mov    %ecx,-0x330(%rbp,%rax,4)
jmp    1b8b <main+0x9fb>
mov    -0x4c4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c4(%rbp)
jmp    1b4b <main+0x9bb>
movl   $0x0,-0x4c4(%rbp)
cmpl   $0x64,-0x4c4(%rbp)
jge    1c2b <main+0xa9b>
movslq -0x4c4(%rbp),%rax
mov    -0x1a0(%rbp,%rax,4),%eax
movslq -0x4c4(%rbp),%rcx
cmp    -0x330(%rbp,%rcx,4),%eax
je     1c12 <main+0xa82>
mov    -0x4c4(%rbp),%esi
movslq -0x4c4(%rbp),%rax
mov    -0x1a0(%rbp,%rax,4),%edx
movslq -0x4c4(%rbp),%rax
mov    -0x330(%rbp,%rax,4),%ecx
lea    0x3ff(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x1,-0x4c8(%rbp)
jmp    1c17 <main+0xa87>
mov    -0x4c4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c4(%rbp)
jmp    1ba9 <main+0xa19>
cmpl   $0x0,-0x4c8(%rbp)
je     1c4b <main+0xabb>
lea    0x3d1(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    1c59 <main+0xac9>
lea    0x3c6(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x0,-0x4c8(%rbp)
movl   $0x0,-0x4c4(%rbp)
cmpl   $0x64,-0x4c4(%rbp)
jge    1cc6 <main+0xb36>
movslq -0x4c4(%rbp),%rax
movl   $0xffffffff,-0x1a0(%rbp,%rax,4)
ff ff ff ff
movslq -0x4c4(%rbp),%rax
movl   $0xffffffff,-0x330(%rbp,%rax,4)
ff ff ff ff
mov    -0x4c4(%rbp),%ecx
movslq -0x4c4(%rbp),%rax
mov    %ecx,-0x4c0(%rbp,%rax,4)
mov    -0x4c4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c4(%rbp)
jmp    1c6d <main+0xadd>
movl   $0x3,-0x4f0(%rbp)
movl   $0x0,-0x4ec(%rbp)
cmpl   $0x64,-0x4ec(%rbp)
jge    1d37 <main+0xba7>
movslq -0x4ec(%rbp),%rax
lea    -0x4c0(%rbp),%rdi
shl    $0x2,%rax
add    %rax,%rdi
mov    -0x4f0(%rbp),%esi
call   1080 <foo_notinbranch@plt>
mov    %rax,%rdx
movslq -0x4ec(%rbp),%rax
movslq -0x1a0(%rbp,%rax,4),%rcx
ff
add    %rdx,%rcx
mov    %ecx,-0x1a0(%rbp,%rax,4)
mov    -0x4ec(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4ec(%rbp)
jmp    1cda <main+0xb4a>
movl   $0x0,-0x4c4(%rbp)
cmpl   $0x64,-0x4c4(%rbp)
jge    1d79 <main+0xbe9>
mov    -0x4c4(%rbp),%ecx
add    $0x2,%ecx
movslq -0x4c4(%rbp),%rax
mov    %ecx,-0x330(%rbp,%rax,4)
mov    -0x4c4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c4(%rbp)
jmp    1d41 <main+0xbb1>
movl   $0x0,-0x4c4(%rbp)
cmpl   $0x64,-0x4c4(%rbp)
jge    1e05 <main+0xc75>
movslq -0x4c4(%rbp),%rax
mov    -0x1a0(%rbp,%rax,4),%eax
movslq -0x4c4(%rbp),%rcx
cmp    -0x330(%rbp,%rcx,4),%eax
je     1dec <main+0xc5c>
mov    -0x4c4(%rbp),%esi
movslq -0x4c4(%rbp),%rax
mov    -0x1a0(%rbp,%rax,4),%edx
movslq -0x4c4(%rbp),%rax
mov    -0x330(%rbp,%rax,4),%ecx
lea    0x225(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x1,-0x4c8(%rbp)
jmp    1df1 <main+0xc61>
mov    -0x4c4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c4(%rbp)
jmp    1d83 <main+0xbf3>
cmpl   $0x0,-0x4c8(%rbp)
je     1e25 <main+0xc95>
lea    0x1f7(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    1e33 <main+0xca3>
lea    0x1ec(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
xor    %eax,%eax
add    $0x4f0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %r15
push   %r14
push   %rbx
sub    $0x4b0,%rsp
xor    %ebx,%ebx
xor    %eax,%eax
call   10b0 <check_offloading@plt>
lea    0x320(%rsp),%rdi
mov    $0x190,%edx
mov    $0xff,%esi
call   1070 <memset@plt>
mov    %rsp,%rdi
mov    $0x190,%edx
mov    $0xff,%esi
call   1070 <memset@plt>
xchg   %ax,%ax
mov    %ebx,%edi
call   1090 <foo@plt>
mov    %eax,0x320(%rsp,%rbx,4)
add    $0x1,%rbx
cmp    $0x64,%rbx
jne    11f0 <main+0x40>
movaps 0x1df1(%rip),%xmm0
movaps %xmm0,(%rsp)
movaps 0x1df6(%rip),%xmm0
movaps %xmm0,0x10(%rsp)
movaps 0x1dfa(%rip),%xmm0
movaps %xmm0,0x20(%rsp)
movaps 0x1dfe(%rip),%xmm0
movaps %xmm0,0x30(%rsp)
movaps 0x1e02(%rip),%xmm0
movaps %xmm0,0x40(%rsp)
movaps 0x1e06(%rip),%xmm0
movaps %xmm0,0x50(%rsp)
movaps 0x1e0a(%rip),%xmm0
movaps %xmm0,0x60(%rsp)
movaps 0x1e0e(%rip),%xmm0
movaps %xmm0,0x70(%rsp)
movaps 0x1e12(%rip),%xmm0
movaps %xmm0,0x80(%rsp)
movaps 0x1e13(%rip),%xmm0
movaps %xmm0,0x90(%rsp)
movaps 0x1e14(%rip),%xmm0
movaps %xmm0,0xa0(%rsp)
movaps 0x1e15(%rip),%xmm0
movaps %xmm0,0xb0(%rsp)
movaps 0x1e16(%rip),%xmm0
movaps %xmm0,0xc0(%rsp)
movaps 0x1e17(%rip),%xmm0
movaps %xmm0,0xd0(%rsp)
movaps 0x1e18(%rip),%xmm0
movaps %xmm0,0xe0(%rsp)
movaps 0x1e19(%rip),%xmm0
movaps %xmm0,0xf0(%rsp)
movaps 0x1e1a(%rip),%xmm0
movaps %xmm0,0x100(%rsp)
movaps 0x1e1b(%rip),%xmm0
movaps %xmm0,0x110(%rsp)
movaps 0x1e1c(%rip),%xmm0
movaps %xmm0,0x120(%rsp)
movaps 0x1e1d(%rip),%xmm0
movaps %xmm0,0x130(%rsp)
movaps 0x1e1e(%rip),%xmm0
movaps %xmm0,0x140(%rsp)
movaps 0x1e1f(%rip),%xmm0
movaps %xmm0,0x150(%rsp)
movaps 0x1e20(%rip),%xmm0
movaps %xmm0,0x160(%rsp)
movaps 0x1e21(%rip),%xmm0
movaps %xmm0,0x170(%rsp)
movaps 0x1e22(%rip),%xmm0
movaps %xmm0,0x180(%rsp)
lea    0x2153(%rip),%rax
lea    0x213c(%rip),%r14
lea    0x214d(%rip),%r15
xor    %ebx,%ebx
add    $0x1,%rbx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
mov    0x31c(%rsp,%rbx,4),%edx
mov    -0x4(%rsp,%rbx,4),%ecx
cmp    %ecx,%edx
jne    13b0 <main+0x200>
add    $0x1,%rbx
cmp    $0x65,%rbx
jne    1390 <main+0x1e0>
jmp    13c8 <main+0x218>
nopl   0x0(%rax,%rax,1)
lea    -0x1(%rbx),%esi
mov    %r14,%rdi
xor    %eax,%eax
call   1060 <printf@plt>
mov    %r15,%rax
cmp    $0x64,%rbx
jne    137d <main+0x1cd>
jmp    13cb <main+0x21b>
mov    %rax,%r15
mov    %r15,%rdi
call   1040 <puts@plt>
lea    0x320(%rsp),%rdi
mov    $0x190,%edx
mov    $0xff,%esi
call   1070 <memset@plt>
mov    %rsp,%rdi
mov    $0x190,%edx
mov    $0xff,%esi
call   1070 <memset@plt>
xor    %ebx,%ebx
xchg   %ax,%ax
mov    %ebx,%edi
call   1050 <foo_simdlen@plt>
mov    %eax,0x320(%rsp,%rbx,4)
add    $0x1,%rbx
cmp    $0x64,%rbx
jne    1400 <main+0x250>
movaps 0x1be1(%rip),%xmm0
movaps %xmm0,(%rsp)
movaps 0x1be6(%rip),%xmm0
movaps %xmm0,0x10(%rsp)
movaps 0x1bea(%rip),%xmm0
movaps %xmm0,0x20(%rsp)
movaps 0x1bee(%rip),%xmm0
movaps %xmm0,0x30(%rsp)
movaps 0x1bf2(%rip),%xmm0
movaps %xmm0,0x40(%rsp)
movaps 0x1bf6(%rip),%xmm0
movaps %xmm0,0x50(%rsp)
movaps 0x1bfa(%rip),%xmm0
movaps %xmm0,0x60(%rsp)
movaps 0x1bfe(%rip),%xmm0
movaps %xmm0,0x70(%rsp)
movaps 0x1c02(%rip),%xmm0
movaps %xmm0,0x80(%rsp)
movaps 0x1c03(%rip),%xmm0
movaps %xmm0,0x90(%rsp)
movaps 0x1c04(%rip),%xmm0
movaps %xmm0,0xa0(%rsp)
movaps 0x1c05(%rip),%xmm0
movaps %xmm0,0xb0(%rsp)
movaps 0x1c06(%rip),%xmm0
movaps %xmm0,0xc0(%rsp)
movaps 0x1c07(%rip),%xmm0
movaps %xmm0,0xd0(%rsp)
movaps 0x1c08(%rip),%xmm0
movaps %xmm0,0xe0(%rsp)
movaps 0x1c09(%rip),%xmm0
movaps %xmm0,0xf0(%rsp)
movaps 0x1c0a(%rip),%xmm0
movaps %xmm0,0x100(%rsp)
movaps 0x1c0b(%rip),%xmm0
movaps %xmm0,0x110(%rsp)
movaps 0x1c0c(%rip),%xmm0
movaps %xmm0,0x120(%rsp)
movaps 0x1c0d(%rip),%xmm0
movaps %xmm0,0x130(%rsp)
movaps 0x1c0e(%rip),%xmm0
movaps %xmm0,0x140(%rsp)
movaps 0x1c0f(%rip),%xmm0
movaps %xmm0,0x150(%rsp)
movaps 0x1c10(%rip),%xmm0
movaps %xmm0,0x160(%rsp)
movaps 0x1c11(%rip),%xmm0
movaps %xmm0,0x170(%rsp)
movaps 0x1c12(%rip),%xmm0
movaps %xmm0,0x180(%rsp)
lea    0x1f43(%rip),%rax
lea    0x1f2c(%rip),%r14
lea    0x1f3d(%rip),%r15
xor    %ebx,%ebx
add    $0x1,%rbx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
mov    0x31c(%rsp,%rbx,4),%edx
mov    -0x4(%rsp,%rbx,4),%ecx
cmp    %ecx,%edx
jne    15c0 <main+0x410>
add    $0x1,%rbx
cmp    $0x65,%rbx
jne    15a0 <main+0x3f0>
jmp    15d8 <main+0x428>
nopl   0x0(%rax,%rax,1)
lea    -0x1(%rbx),%esi
mov    %r14,%rdi
xor    %eax,%eax
call   1060 <printf@plt>
mov    %r15,%rax
cmp    $0x64,%rbx
jne    158d <main+0x3dd>
jmp    15db <main+0x42b>
mov    %rax,%r15
mov    %r15,%rdi
call   1040 <puts@plt>
lea    0x320(%rsp),%rdi
mov    $0x190,%edx
mov    $0xff,%esi
call   1070 <memset@plt>
mov    %rsp,%rdi
mov    $0x190,%edx
mov    $0xff,%esi
call   1070 <memset@plt>
movaps 0x1b7d(%rip),%xmm0
movaps %xmm0,0x190(%rsp)
movaps 0x1b7e(%rip),%xmm0
movaps %xmm0,0x1a0(%rsp)
movaps 0x1b7f(%rip),%xmm0
movaps %xmm0,0x1b0(%rsp)
movaps 0x1b80(%rip),%xmm0
movaps %xmm0,0x1c0(%rsp)
movaps 0x1b81(%rip),%xmm0
movaps %xmm0,0x1d0(%rsp)
movaps 0x1b82(%rip),%xmm0
movaps %xmm0,0x1e0(%rsp)
movaps 0x1b83(%rip),%xmm0
movaps %xmm0,0x1f0(%rsp)
movaps 0x1b84(%rip),%xmm0
movaps %xmm0,0x200(%rsp)
movaps 0x1b85(%rip),%xmm0
movaps %xmm0,0x210(%rsp)
movaps 0x1b86(%rip),%xmm0
movaps %xmm0,0x220(%rsp)
movaps 0x1b87(%rip),%xmm0
movaps %xmm0,0x230(%rsp)
movaps 0x1b88(%rip),%xmm0
movaps %xmm0,0x240(%rsp)
movaps 0x1b89(%rip),%xmm0
movaps %xmm0,0x250(%rsp)
movaps 0x1b8a(%rip),%xmm0
movaps %xmm0,0x260(%rsp)
movaps 0x1b8b(%rip),%xmm0
movaps %xmm0,0x270(%rsp)
movaps 0x1b8c(%rip),%xmm0
movaps %xmm0,0x280(%rsp)
movaps 0x1b8d(%rip),%xmm0
movaps %xmm0,0x290(%rsp)
movaps 0x1b8e(%rip),%xmm0
movaps %xmm0,0x2a0(%rsp)
movaps 0x1b8f(%rip),%xmm0
movaps %xmm0,0x2b0(%rsp)
movaps 0x1b90(%rip),%xmm0
movaps %xmm0,0x2c0(%rsp)
movaps 0x1b91(%rip),%xmm0
movaps %xmm0,0x2d0(%rsp)
movaps 0x1b92(%rip),%xmm0
movaps %xmm0,0x2e0(%rsp)
movaps 0x1b93(%rip),%xmm0
movaps %xmm0,0x2f0(%rsp)
movaps 0x1b94(%rip),%xmm0
movaps %xmm0,0x300(%rsp)
movaps 0x1b95(%rip),%xmm0
movaps %xmm0,0x310(%rsp)
xor    %ebx,%ebx
cs nopw 0x0(%rax,%rax,1)
nop
lea    (%rsp,%rbx,1),%rdi
add    $0x190,%rdi
call   1030 <foo_linear@plt>
add    %eax,0x320(%rsp,%rbx,1)
add    $0x4,%rbx
cmp    $0x190,%rbx
jne    1790 <main+0x5e0>
movaps 0x19d5(%rip),%xmm0
movaps %xmm0,(%rsp)
movaps 0x19da(%rip),%xmm0
movaps %xmm0,0x10(%rsp)
movaps 0x19de(%rip),%xmm0
movaps %xmm0,0x20(%rsp)
movaps 0x19e2(%rip),%xmm0
movaps %xmm0,0x30(%rsp)
movaps 0x19e6(%rip),%xmm0
movaps %xmm0,0x40(%rsp)
movaps 0x19ea(%rip),%xmm0
movaps %xmm0,0x50(%rsp)
movaps 0x19ee(%rip),%xmm0
movaps %xmm0,0x60(%rsp)
movaps 0x19f2(%rip),%xmm0
movaps %xmm0,0x70(%rsp)
movaps 0x19f6(%rip),%xmm0
movaps %xmm0,0x80(%rsp)
movaps 0x19f7(%rip),%xmm0
movaps %xmm0,0x90(%rsp)
movaps 0x19f8(%rip),%xmm0
movaps %xmm0,0xa0(%rsp)
movaps 0x19f9(%rip),%xmm0
movaps %xmm0,0xb0(%rsp)
movaps 0x19fa(%rip),%xmm0
movaps %xmm0,0xc0(%rsp)
movaps 0x19fb(%rip),%xmm0
movaps %xmm0,0xd0(%rsp)
movaps 0x19fc(%rip),%xmm0
movaps %xmm0,0xe0(%rsp)
movaps 0x19fd(%rip),%xmm0
movaps %xmm0,0xf0(%rsp)
movaps 0x19fe(%rip),%xmm0
movaps %xmm0,0x100(%rsp)
movaps 0x19ff(%rip),%xmm0
movaps %xmm0,0x110(%rsp)
movaps 0x1a00(%rip),%xmm0
movaps %xmm0,0x120(%rsp)
movaps 0x1a01(%rip),%xmm0
movaps %xmm0,0x130(%rsp)
movaps 0x1a02(%rip),%xmm0
movaps %xmm0,0x140(%rsp)
movaps 0x1a03(%rip),%xmm0
movaps %xmm0,0x150(%rsp)
movaps 0x1a04(%rip),%xmm0
movaps %xmm0,0x160(%rsp)
movaps 0x1a05(%rip),%xmm0
movaps %xmm0,0x170(%rsp)
movaps 0x1a06(%rip),%xmm0
movaps %xmm0,0x180(%rsp)
lea    0x1ba7(%rip),%rax
lea    0x1b90(%rip),%r14
lea    0x1ba1(%rip),%r15
xor    %ebx,%ebx
add    $0x1,%rbx
nopl   (%rax)
mov    0x31c(%rsp,%rbx,4),%edx
mov    -0x4(%rsp,%rbx,4),%ecx
cmp    %ecx,%edx
jne    1950 <main+0x7a0>
add    $0x1,%rbx
cmp    $0x65,%rbx
jne    1930 <main+0x780>
jmp    1968 <main+0x7b8>
nopl   0x0(%rax,%rax,1)
lea    -0x1(%rbx),%esi
mov    %r14,%rdi
xor    %eax,%eax
call   1060 <printf@plt>
mov    %r15,%rax
cmp    $0x64,%rbx
jne    1929 <main+0x779>
jmp    196b <main+0x7bb>
mov    %rax,%r15
mov    %r15,%rdi
call   1040 <puts@plt>
lea    0x320(%rsp),%rdi
mov    $0x190,%edx
mov    $0xff,%esi
call   1070 <memset@plt>
mov    %rsp,%rdi
mov    $0x190,%edx
mov    $0xff,%esi
call   1070 <memset@plt>
movaps 0x17ed(%rip),%xmm0
movaps %xmm0,0x190(%rsp)
movaps 0x17ee(%rip),%xmm0
movaps %xmm0,0x1a0(%rsp)
movaps 0x17ef(%rip),%xmm0
movaps %xmm0,0x1b0(%rsp)
movaps 0x17f0(%rip),%xmm0
movaps %xmm0,0x1c0(%rsp)
movaps 0x17f1(%rip),%xmm0
movaps %xmm0,0x1d0(%rsp)
movaps 0x17f2(%rip),%xmm0
movaps %xmm0,0x1e0(%rsp)
movaps 0x17f3(%rip),%xmm0
movaps %xmm0,0x1f0(%rsp)
movaps 0x17f4(%rip),%xmm0
movaps %xmm0,0x200(%rsp)
movaps 0x17f5(%rip),%xmm0
movaps %xmm0,0x210(%rsp)
movaps 0x17f6(%rip),%xmm0
movaps %xmm0,0x220(%rsp)
movaps 0x17f7(%rip),%xmm0
movaps %xmm0,0x230(%rsp)
movaps 0x17f8(%rip),%xmm0
movaps %xmm0,0x240(%rsp)
movaps 0x17f9(%rip),%xmm0
movaps %xmm0,0x250(%rsp)
movaps 0x17fa(%rip),%xmm0
movaps %xmm0,0x260(%rsp)
movaps 0x17fb(%rip),%xmm0
movaps %xmm0,0x270(%rsp)
movaps 0x17fc(%rip),%xmm0
movaps %xmm0,0x280(%rsp)
movaps 0x17fd(%rip),%xmm0
movaps %xmm0,0x290(%rsp)
movaps 0x17fe(%rip),%xmm0
movaps %xmm0,0x2a0(%rsp)
movaps 0x17ff(%rip),%xmm0
movaps %xmm0,0x2b0(%rsp)
movaps 0x1800(%rip),%xmm0
movaps %xmm0,0x2c0(%rsp)
movaps 0x1801(%rip),%xmm0
movaps %xmm0,0x2d0(%rsp)
movaps 0x1802(%rip),%xmm0
movaps %xmm0,0x2e0(%rsp)
movaps 0x1803(%rip),%xmm0
movaps %xmm0,0x2f0(%rsp)
movaps 0x1804(%rip),%xmm0
movaps %xmm0,0x300(%rsp)
movaps 0x1805(%rip),%xmm0
movaps %xmm0,0x310(%rsp)
xor    %ebx,%ebx
cs nopw 0x0(%rax,%rax,1)
nop
lea    (%rsp,%rbx,1),%rdi
add    $0x190,%rdi
call   10c0 <foo_aligned@plt>
add    %eax,0x320(%rsp,%rbx,1)
add    $0x4,%rbx
cmp    $0x190,%rbx
jne    1b20 <main+0x970>
movaps 0x1645(%rip),%xmm0
movaps %xmm0,(%rsp)
movaps 0x164a(%rip),%xmm0
movaps %xmm0,0x10(%rsp)
movaps 0x164e(%rip),%xmm0
movaps %xmm0,0x20(%rsp)
movaps 0x1652(%rip),%xmm0
movaps %xmm0,0x30(%rsp)
movaps 0x1656(%rip),%xmm0
movaps %xmm0,0x40(%rsp)
movaps 0x165a(%rip),%xmm0
movaps %xmm0,0x50(%rsp)
movaps 0x165e(%rip),%xmm0
movaps %xmm0,0x60(%rsp)
movaps 0x1662(%rip),%xmm0
movaps %xmm0,0x70(%rsp)
movaps 0x1666(%rip),%xmm0
movaps %xmm0,0x80(%rsp)
movaps 0x1667(%rip),%xmm0
movaps %xmm0,0x90(%rsp)
movaps 0x1668(%rip),%xmm0
movaps %xmm0,0xa0(%rsp)
movaps 0x1669(%rip),%xmm0
movaps %xmm0,0xb0(%rsp)
movaps 0x166a(%rip),%xmm0
movaps %xmm0,0xc0(%rsp)
movaps 0x166b(%rip),%xmm0
movaps %xmm0,0xd0(%rsp)
movaps 0x166c(%rip),%xmm0
movaps %xmm0,0xe0(%rsp)
movaps 0x166d(%rip),%xmm0
movaps %xmm0,0xf0(%rsp)
movaps 0x166e(%rip),%xmm0
movaps %xmm0,0x100(%rsp)
movaps 0x166f(%rip),%xmm0
movaps %xmm0,0x110(%rsp)
movaps 0x1670(%rip),%xmm0
movaps %xmm0,0x120(%rsp)
movaps 0x1671(%rip),%xmm0
movaps %xmm0,0x130(%rsp)
movaps 0x1672(%rip),%xmm0
movaps %xmm0,0x140(%rsp)
movaps 0x1673(%rip),%xmm0
movaps %xmm0,0x150(%rsp)
movaps 0x1674(%rip),%xmm0
movaps %xmm0,0x160(%rsp)
movaps 0x1675(%rip),%xmm0
movaps %xmm0,0x170(%rsp)
movaps 0x1676(%rip),%xmm0
movaps %xmm0,0x180(%rsp)
lea    0x1817(%rip),%rax
lea    0x1800(%rip),%r14
lea    0x1811(%rip),%r15
xor    %ebx,%ebx
add    $0x1,%rbx
nopl   (%rax)
mov    0x31c(%rsp,%rbx,4),%edx
mov    -0x4(%rsp,%rbx,4),%ecx
cmp    %ecx,%edx
jne    1ce0 <main+0xb30>
add    $0x1,%rbx
cmp    $0x65,%rbx
jne    1cc0 <main+0xb10>
jmp    1cf8 <main+0xb48>
nopl   0x0(%rax,%rax,1)
lea    -0x1(%rbx),%esi
mov    %r14,%rdi
xor    %eax,%eax
call   1060 <printf@plt>
mov    %r15,%rax
cmp    $0x64,%rbx
jne    1cb9 <main+0xb09>
jmp    1cfb <main+0xb4b>
mov    %rax,%r15
mov    %r15,%rdi
call   1040 <puts@plt>
lea    0x320(%rsp),%rdi
mov    $0x190,%edx
mov    $0xff,%esi
call   1070 <memset@plt>
mov    %rsp,%rdi
mov    $0x190,%edx
mov    $0xff,%esi
call   1070 <memset@plt>
movaps 0x145d(%rip),%xmm0
movaps %xmm0,0x190(%rsp)
movaps 0x145e(%rip),%xmm0
movaps %xmm0,0x1a0(%rsp)
movaps 0x145f(%rip),%xmm0
movaps %xmm0,0x1b0(%rsp)
movaps 0x1460(%rip),%xmm0
movaps %xmm0,0x1c0(%rsp)
movaps 0x1461(%rip),%xmm0
movaps %xmm0,0x1d0(%rsp)
movaps 0x1462(%rip),%xmm0
movaps %xmm0,0x1e0(%rsp)
movaps 0x1463(%rip),%xmm0
movaps %xmm0,0x1f0(%rsp)
movaps 0x1464(%rip),%xmm0
movaps %xmm0,0x200(%rsp)
movaps 0x1465(%rip),%xmm0
movaps %xmm0,0x210(%rsp)
movaps 0x1466(%rip),%xmm0
movaps %xmm0,0x220(%rsp)
movaps 0x1467(%rip),%xmm0
movaps %xmm0,0x230(%rsp)
movaps 0x1468(%rip),%xmm0
movaps %xmm0,0x240(%rsp)
movaps 0x1469(%rip),%xmm0
movaps %xmm0,0x250(%rsp)
movaps 0x146a(%rip),%xmm0
movaps %xmm0,0x260(%rsp)
movaps 0x146b(%rip),%xmm0
movaps %xmm0,0x270(%rsp)
movaps 0x146c(%rip),%xmm0
movaps %xmm0,0x280(%rsp)
movaps 0x146d(%rip),%xmm0
movaps %xmm0,0x290(%rsp)
movaps 0x146e(%rip),%xmm0
movaps %xmm0,0x2a0(%rsp)
movaps 0x146f(%rip),%xmm0
movaps %xmm0,0x2b0(%rsp)
movaps 0x1470(%rip),%xmm0
movaps %xmm0,0x2c0(%rsp)
movaps 0x1471(%rip),%xmm0
movaps %xmm0,0x2d0(%rsp)
movaps 0x1472(%rip),%xmm0
movaps %xmm0,0x2e0(%rsp)
movaps 0x1473(%rip),%xmm0
movaps %xmm0,0x2f0(%rsp)
movaps 0x1474(%rip),%xmm0
movaps %xmm0,0x300(%rsp)
movaps 0x1475(%rip),%xmm0
movaps %xmm0,0x310(%rsp)
xor    %ebx,%ebx
cs nopw 0x0(%rax,%rax,1)
nop
lea    (%rsp,%rbx,1),%rdi
add    $0x190,%rdi
mov    $0x3,%esi
call   10d0 <foo_uniform@plt>
add    %eax,0x320(%rsp,%rbx,1)
add    $0x4,%rbx
cmp    $0x190,%rbx
jne    1eb0 <main+0xd00>
movaps 0x1440(%rip),%xmm0
movaps %xmm0,(%rsp)
movaps 0x1445(%rip),%xmm0
movaps %xmm0,0x10(%rsp)
movaps 0x1449(%rip),%xmm0
movaps %xmm0,0x20(%rsp)
movaps 0x144d(%rip),%xmm0
movaps %xmm0,0x30(%rsp)
movaps 0x1451(%rip),%xmm0
movaps %xmm0,0x40(%rsp)
movaps 0x1455(%rip),%xmm0
movaps %xmm0,0x50(%rsp)
movaps 0x1459(%rip),%xmm0
movaps %xmm0,0x60(%rsp)
movaps 0x145d(%rip),%xmm0
movaps %xmm0,0x70(%rsp)
movaps 0x1461(%rip),%xmm0
movaps %xmm0,0x80(%rsp)
movaps 0x1462(%rip),%xmm0
movaps %xmm0,0x90(%rsp)
movaps 0x1463(%rip),%xmm0
movaps %xmm0,0xa0(%rsp)
movaps 0x1464(%rip),%xmm0
movaps %xmm0,0xb0(%rsp)
movaps 0x1465(%rip),%xmm0
movaps %xmm0,0xc0(%rsp)
movaps 0x1466(%rip),%xmm0
movaps %xmm0,0xd0(%rsp)
movaps 0x1467(%rip),%xmm0
movaps %xmm0,0xe0(%rsp)
movaps 0x1468(%rip),%xmm0
movaps %xmm0,0xf0(%rsp)
movaps 0x1469(%rip),%xmm0
movaps %xmm0,0x100(%rsp)
movaps 0x146a(%rip),%xmm0
movaps %xmm0,0x110(%rsp)
movaps 0x146b(%rip),%xmm0
movaps %xmm0,0x120(%rsp)
movaps 0x146c(%rip),%xmm0
movaps %xmm0,0x130(%rsp)
movaps 0x146d(%rip),%xmm0
movaps %xmm0,0x140(%rsp)
movaps 0x146e(%rip),%xmm0
movaps %xmm0,0x150(%rsp)
movaps 0x146f(%rip),%xmm0
movaps %xmm0,0x160(%rsp)
movaps 0x1470(%rip),%xmm0
movaps %xmm0,0x170(%rsp)
movaps 0x1471(%rip),%xmm0
movaps %xmm0,0x180(%rsp)
lea    0x1482(%rip),%rax
lea    0x146b(%rip),%r14
lea    0x147c(%rip),%r15
xor    %ebx,%ebx
add    $0x1,%rbx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
mov    0x31c(%rsp,%rbx,4),%edx
mov    -0x4(%rsp,%rbx,4),%ecx
cmp    %ecx,%edx
jne    2080 <main+0xed0>
add    $0x1,%rbx
cmp    $0x65,%rbx
jne    2060 <main+0xeb0>
jmp    2098 <main+0xee8>
nopl   0x0(%rax,%rax,1)
lea    -0x1(%rbx),%esi
mov    %r14,%rdi
xor    %eax,%eax
call   1060 <printf@plt>
mov    %r15,%rax
cmp    $0x64,%rbx
jne    204e <main+0xe9e>
jmp    209b <main+0xeeb>
mov    %rax,%r15
mov    %r15,%rdi
call   1040 <puts@plt>
lea    0x320(%rsp),%rdi
mov    $0x190,%edx
mov    $0xff,%esi
call   1070 <memset@plt>
mov    %rsp,%rdi
mov    $0x190,%edx
mov    $0xff,%esi
call   1070 <memset@plt>
movaps 0x10bd(%rip),%xmm0
movaps %xmm0,0x190(%rsp)
movaps 0x10be(%rip),%xmm0
movaps %xmm0,0x1a0(%rsp)
movaps 0x10bf(%rip),%xmm0
movaps %xmm0,0x1b0(%rsp)
movaps 0x10c0(%rip),%xmm0
movaps %xmm0,0x1c0(%rsp)
movaps 0x10c1(%rip),%xmm0
movaps %xmm0,0x1d0(%rsp)
movaps 0x10c2(%rip),%xmm0
movaps %xmm0,0x1e0(%rsp)
movaps 0x10c3(%rip),%xmm0
movaps %xmm0,0x1f0(%rsp)
movaps 0x10c4(%rip),%xmm0
movaps %xmm0,0x200(%rsp)
movaps 0x10c5(%rip),%xmm0
movaps %xmm0,0x210(%rsp)
movaps 0x10c6(%rip),%xmm0
movaps %xmm0,0x220(%rsp)
movaps 0x10c7(%rip),%xmm0
movaps %xmm0,0x230(%rsp)
movaps 0x10c8(%rip),%xmm0
movaps %xmm0,0x240(%rsp)
movaps 0x10c9(%rip),%xmm0
movaps %xmm0,0x250(%rsp)
movaps 0x10ca(%rip),%xmm0
movaps %xmm0,0x260(%rsp)
movaps 0x10cb(%rip),%xmm0
movaps %xmm0,0x270(%rsp)
movaps 0x10cc(%rip),%xmm0
movaps %xmm0,0x280(%rsp)
movaps 0x10cd(%rip),%xmm0
movaps %xmm0,0x290(%rsp)
movaps 0x10ce(%rip),%xmm0
movaps %xmm0,0x2a0(%rsp)
movaps 0x10cf(%rip),%xmm0
movaps %xmm0,0x2b0(%rsp)
movaps 0x10d0(%rip),%xmm0
movaps %xmm0,0x2c0(%rsp)
movaps 0x10d1(%rip),%xmm0
movaps %xmm0,0x2d0(%rsp)
movaps 0x10d2(%rip),%xmm0
movaps %xmm0,0x2e0(%rsp)
movaps 0x10d3(%rip),%xmm0
movaps %xmm0,0x2f0(%rsp)
movaps 0x10d4(%rip),%xmm0
movaps %xmm0,0x300(%rsp)
movaps 0x10d5(%rip),%xmm0
movaps %xmm0,0x310(%rsp)
lea    0x190(%rsp),%r14
xor    %ebx,%ebx
jmp    225e <main+0x10ae>
nop
add    $0x1,%rbx
add    $0x4,%r14
cmp    $0x64,%rbx
je     2279 <main+0x10c9>
test   $0x1,%bl
jne    2250 <main+0x10a0>
mov    %r14,%rdi
mov    $0x3,%esi
call   1080 <foo_inbranch@plt>
add    %eax,0x320(%rsp,%rbx,4)
jmp    2250 <main+0x10a0>
xor    %eax,%eax
nopl   0x0(%rax,%rax,1)
lea    0x2(%rax),%rcx
mov    %ecx,(%rsp,%rax,4)
mov    %rcx,%rax
cmp    $0x64,%rcx
jne    2280 <main+0x10d0>
lea    0x1229(%rip),%rax
lea    0x1212(%rip),%r14
lea    0x1223(%rip),%r15
xor    %ebx,%ebx
add    $0x1,%rbx
nopl   0x0(%rax,%rax,1)
mov    0x31c(%rsp,%rbx,4),%edx
mov    -0x4(%rsp,%rbx,4),%ecx
cmp    %ecx,%edx
jne    22d0 <main+0x1120>
add    $0x1,%rbx
cmp    $0x65,%rbx
jne    22b0 <main+0x1100>
jmp    22e8 <main+0x1138>
nopl   0x0(%rax,%rax,1)
lea    -0x1(%rbx),%esi
mov    %r14,%rdi
xor    %eax,%eax
call   1060 <printf@plt>
mov    %r15,%rax
cmp    $0x64,%rbx
jne    22a7 <main+0x10f7>
jmp    22eb <main+0x113b>
mov    %rax,%r15
mov    %r15,%rdi
call   1040 <puts@plt>
lea    0x320(%rsp),%rdi
mov    $0x190,%edx
mov    $0xff,%esi
call   1070 <memset@plt>
mov    %rsp,%rdi
mov    $0x190,%edx
mov    $0xff,%esi
call   1070 <memset@plt>
movaps 0xe6d(%rip),%xmm0
movaps %xmm0,0x190(%rsp)
movaps 0xe6e(%rip),%xmm0
movaps %xmm0,0x1a0(%rsp)
movaps 0xe6f(%rip),%xmm0
movaps %xmm0,0x1b0(%rsp)
movaps 0xe70(%rip),%xmm0
movaps %xmm0,0x1c0(%rsp)
movaps 0xe71(%rip),%xmm0
movaps %xmm0,0x1d0(%rsp)
movaps 0xe72(%rip),%xmm0
movaps %xmm0,0x1e0(%rsp)
movaps 0xe73(%rip),%xmm0
movaps %xmm0,0x1f0(%rsp)
movaps 0xe74(%rip),%xmm0
movaps %xmm0,0x200(%rsp)
movaps 0xe75(%rip),%xmm0
movaps %xmm0,0x210(%rsp)
movaps 0xe76(%rip),%xmm0
movaps %xmm0,0x220(%rsp)
movaps 0xe77(%rip),%xmm0
movaps %xmm0,0x230(%rsp)
movaps 0xe78(%rip),%xmm0
movaps %xmm0,0x240(%rsp)
movaps 0xe79(%rip),%xmm0
movaps %xmm0,0x250(%rsp)
movaps 0xe7a(%rip),%xmm0
movaps %xmm0,0x260(%rsp)
movaps 0xe7b(%rip),%xmm0
movaps %xmm0,0x270(%rsp)
movaps 0xe7c(%rip),%xmm0
movaps %xmm0,0x280(%rsp)
movaps 0xe7d(%rip),%xmm0
movaps %xmm0,0x290(%rsp)
movaps 0xe7e(%rip),%xmm0
movaps %xmm0,0x2a0(%rsp)
movaps 0xe7f(%rip),%xmm0
movaps %xmm0,0x2b0(%rsp)
movaps 0xe80(%rip),%xmm0
movaps %xmm0,0x2c0(%rsp)
movaps 0xe81(%rip),%xmm0
movaps %xmm0,0x2d0(%rsp)
movaps 0xe82(%rip),%xmm0
movaps %xmm0,0x2e0(%rsp)
movaps 0xe83(%rip),%xmm0
movaps %xmm0,0x2f0(%rsp)
movaps 0xe84(%rip),%xmm0
movaps %xmm0,0x300(%rsp)
movaps 0xe85(%rip),%xmm0
movaps %xmm0,0x310(%rsp)
xor    %ebx,%ebx
cs nopw 0x0(%rax,%rax,1)
nop
lea    (%rsp,%rbx,1),%rdi
add    $0x190,%rdi
mov    $0x3,%esi
call   10a0 <foo_notinbranch@plt>
add    %eax,0x320(%rsp,%rbx,1)
add    $0x4,%rbx
cmp    $0x190,%rbx
jne    24a0 <main+0x12f0>
movaps 0xe50(%rip),%xmm0
movaps %xmm0,(%rsp)
movaps 0xe55(%rip),%xmm0
movaps %xmm0,0x10(%rsp)
movaps 0xe59(%rip),%xmm0
movaps %xmm0,0x20(%rsp)
movaps 0xe5d(%rip),%xmm0
movaps %xmm0,0x30(%rsp)
movaps 0xe61(%rip),%xmm0
movaps %xmm0,0x40(%rsp)
movaps 0xe65(%rip),%xmm0
movaps %xmm0,0x50(%rsp)
movaps 0xe69(%rip),%xmm0
movaps %xmm0,0x60(%rsp)
movaps 0xe6d(%rip),%xmm0
movaps %xmm0,0x70(%rsp)
movaps 0xe71(%rip),%xmm0
movaps %xmm0,0x80(%rsp)
movaps 0xe72(%rip),%xmm0
movaps %xmm0,0x90(%rsp)
movaps 0xe73(%rip),%xmm0
movaps %xmm0,0xa0(%rsp)
movaps 0xe74(%rip),%xmm0
movaps %xmm0,0xb0(%rsp)
movaps 0xe75(%rip),%xmm0
movaps %xmm0,0xc0(%rsp)
movaps 0xe76(%rip),%xmm0
movaps %xmm0,0xd0(%rsp)
movaps 0xe77(%rip),%xmm0
movaps %xmm0,0xe0(%rsp)
movaps 0xe78(%rip),%xmm0
movaps %xmm0,0xf0(%rsp)
movaps 0xe79(%rip),%xmm0
movaps %xmm0,0x100(%rsp)
movaps 0xe7a(%rip),%xmm0
movaps %xmm0,0x110(%rsp)
movaps 0xe7b(%rip),%xmm0
movaps %xmm0,0x120(%rsp)
movaps 0xe7c(%rip),%xmm0
movaps %xmm0,0x130(%rsp)
movaps 0xe7d(%rip),%xmm0
movaps %xmm0,0x140(%rsp)
movaps 0xe7e(%rip),%xmm0
movaps %xmm0,0x150(%rsp)
movaps 0xe7f(%rip),%xmm0
movaps %xmm0,0x160(%rsp)
movaps 0xe80(%rip),%xmm0
movaps %xmm0,0x170(%rsp)
movaps 0xe81(%rip),%xmm0
movaps %xmm0,0x180(%rsp)
lea    0xe92(%rip),%rax
lea    0xe7b(%rip),%r14
lea    0xe8c(%rip),%r15
xor    %ebx,%ebx
add    $0x1,%rbx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
mov    0x31c(%rsp,%rbx,4),%edx
mov    -0x4(%rsp,%rbx,4),%ecx
cmp    %ecx,%edx
jne    2670 <main+0x14c0>
add    $0x1,%rbx
cmp    $0x65,%rbx
jne    2650 <main+0x14a0>
jmp    2688 <main+0x14d8>
nopl   0x0(%rax,%rax,1)
lea    -0x1(%rbx),%esi
mov    %r14,%rdi
xor    %eax,%eax
call   1060 <printf@plt>
mov    %r15,%rax
cmp    $0x64,%rbx
jne    263e <main+0x148e>
jmp    268b <main+0x14db>
mov    %rax,%r15
mov    %r15,%rdi
call   1040 <puts@plt>
xor    %eax,%eax
add    $0x4b0,%rsp
pop    %rbx
pop    %r14
pop    %r15
ret

LLVM IR (-O0):
@.str = [16 x i8] c"%d: a %d != %d\0A\00"
@.str.1 = [8 x i8] c"failed\0A\00"
@.str.2 = [9 x i8] c"success\0A\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca [100 x i32]
%3 = alloca [100 x i32]
%4 = alloca [100 x i32]
%5 = alloca i32
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32
%12 = alloca i32
%13 = alloca i32
%14 = alloca i32
%15 = alloca i32
%16 = alloca i32
store i32 0, i32* %1
%17 = call i32 (...) @check_offloading()
store i32 0, i32* %6
store i32 0, i32* %5
br label %18
18: ; preds = %28, %0
%19 = load i32, i32* %5
%20 = icmp slt i32 %19, 100
br i1 %20, label %21, label %31
21: ; preds = %18
%22 = load i32, i32* %5
%23 = sext i32 %22 to i64
%24 = getelementptr inbounds [100 x i32], [100 x i32]* %2, i64 0, i64 %23
store i32 -1, i32* %24
%25 = load i32, i32* %5
%26 = sext i32 %25 to i64
%27 = getelementptr inbounds [100 x i32], [100 x i32]* %3, i64 0, i64 %26
store i32 -1, i32* %27
br label %28
28: ; preds = %21
%29 = load i32, i32* %5
%30 = add nsw i32 %29, 1
store i32 %30, i32* %5
br label %18
31: ; preds = %18
store i32 0, i32* %7
br label %32
32: ; preds = %41, %31
%33 = load i32, i32* %7
%34 = icmp slt i32 %33, 100
br i1 %34, label %35, label %44
35: ; preds = %32
%36 = load i32, i32* %7
%37 = call i32 @foo(i32 %36)
%38 = load i32, i32* %7
%39 = sext i32 %38 to i64
%40 = getelementptr inbounds [100 x i32], [100 x i32]* %2, i64 0, i64 %39
store i32 %37, i32* %40
br label %41
41: ; preds = %35
%42 = load i32, i32* %7
%43 = add nsw i32 %42, 1
store i32 %43, i32* %7
br label %32
44: ; preds = %32
store i32 0, i32* %5
br label %45
45: ; preds = %54, %44
%46 = load i32, i32* %5
%47 = icmp slt i32 %46, 100
br i1 %47, label %48, label %57
48: ; preds = %45
%49 = load i32, i32* %5
%50 = add nsw i32 %49, 1
%51 = load i32, i32* %5
%52 = sext i32 %51 to i64
%53 = getelementptr inbounds [100 x i32], [100 x i32]* %3, i64 0, i64 %52
store i32 %50, i32* %53
br label %54
54: ; preds = %48
%55 = load i32, i32* %5
%56 = add nsw i32 %55, 1
store i32 %56, i32* %5
br label %45
57: ; preds = %45
store i32 0, i32* %5
br label %58
58: ; preds = %83, %57
%59 = load i32, i32* %5
%60 = icmp slt i32 %59, 100
br i1 %60, label %61, label %86
61: ; preds = %58
%62 = load i32, i32* %5
%63 = sext i32 %62 to i64
%64 = getelementptr inbounds [100 x i32], [100 x i32]* %2, i64 0, i64 %63
%65 = load i32, i32* %64
%66 = load i32, i32* %5
%67 = sext i32 %66 to i64
%68 = getelementptr inbounds [100 x i32], [100 x i32]* %3, i64 0, i64 %67
%69 = load i32, i32* %68
%70 = icmp ne i32 %65, %69
br i1 %70, label %71, label %82
71: ; preds = %61
%72 = load i32, i32* %5
%73 = load i32, i32* %5
%74 = sext i32 %73 to i64
%75 = getelementptr inbounds [100 x i32], [100 x i32]* %2, i64 0, i64 %74
%76 = load i32, i32* %75
%77 = load i32, i32* %5
%78 = sext i32 %77 to i64
%79 = getelementptr inbounds [100 x i32], [100 x i32]* %3, i64 0, i64 %78
%80 = load i32, i32* %79
%81 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str, i64 0, i64 0), i32 %72, i32 %76, i32 %80)
store i32 1, i32* %6
br label %82
82: ; preds = %71, %61
br label %83
83: ; preds = %82
%84 = load i32, i32* %5
%85 = add nsw i32 %84, 1
store i32 %85, i32* %5
br label %58
86: ; preds = %58
%87 = load i32, i32* %6
%88 = icmp ne i32 %87, 0
br i1 %88, label %89, label %91
89: ; preds = %86
%90 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.1, i64 0, i64 0))
br label %93
91: ; preds = %86
%92 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.2, i64 0, i64 0))
br label %93
93: ; preds = %91, %89
store i32 0, i32* %6
store i32 0, i32* %5
br label %94
94: ; preds = %104, %93
%95 = load i32, i32* %5
%96 = icmp slt i32 %95, 100
br i1 %96, label %97, label %107
97: ; preds = %94
%98 = load i32, i32* %5
%99 = sext i32 %98 to i64
%100 = getelementptr inbounds [100 x i32], [100 x i32]* %2, i64 0, i64 %99
store i32 -1, i32* %100
%101 = load i32, i32* %5
%102 = sext i32 %101 to i64
%103 = getelementptr inbounds [100 x i32], [100 x i32]* %3, i64 0, i64 %102
store i32 -1, i32* %103
br label %104
104: ; preds = %97
%105 = load i32, i32* %5
%106 = add nsw i32 %105, 1
store i32 %106, i32* %5
br label %94
107: ; preds = %94
store i32 0, i32* %8
br label %108
108: ; preds = %117, %107
%109 = load i32, i32* %8
%110 = icmp slt i32 %109, 100
br i1 %110, label %111, label %120
111: ; preds = %108
%112 = load i32, i32* %8
%113 = call i32 @foo_simdlen(i32 %112)
%114 = load i32, i32* %8
%115 = sext i32 %114 to i64
%116 = getelementptr inbounds [100 x i32], [100 x i32]* %2, i64 0, i64 %115
store i32 %113, i32* %116
br label %117
117: ; preds = %111
%118 = load i32, i32* %8
%119 = add nsw i32 %118, 1
store i32 %119, i32* %8
br label %108
120: ; preds = %108
store i32 0, i32* %5
br label %121
121: ; preds = %130, %120
%122 = load i32, i32* %5
%123 = icmp slt i32 %122, 100
br i1 %123, label %124, label %133
124: ; preds = %121
%125 = load i32, i32* %5
%126 = add nsw i32 %125, 1
%127 = load i32, i32* %5
%128 = sext i32 %127 to i64
%129 = getelementptr inbounds [100 x i32], [100 x i32]* %3, i64 0, i64 %128
store i32 %126, i32* %129
br label %130
130: ; preds = %124
%131 = load i32, i32* %5
%132 = add nsw i32 %131, 1
store i32 %132, i32* %5
br label %121
133: ; preds = %121
store i32 0, i32* %5
br label %134
134: ; preds = %159, %133
%135 = load i32, i32* %5
%136 = icmp slt i32 %135, 100
br i1 %136, label %137, label %162
137: ; preds = %134
%138 = load i32, i32* %5
%139 = sext i32 %138 to i64
%140 = getelementptr inbounds [100 x i32], [100 x i32]* %2, i64 0, i64 %139
%141 = load i32, i32* %140
%142 = load i32, i32* %5
%143 = sext i32 %142 to i64
%144 = getelementptr inbounds [100 x i32], [100 x i32]* %3, i64 0, i64 %143
%145 = load i32, i32* %144
%146 = icmp ne i32 %141, %145
br i1 %146, label %147, label %158
147: ; preds = %137
%148 = load i32, i32* %5
%149 = load i32, i32* %5
%150 = sext i32 %149 to i64
%151 = getelementptr inbounds [100 x i32], [100 x i32]* %2, i64 0, i64 %150
%152 = load i32, i32* %151
%153 = load i32, i32* %5
%154 = sext i32 %153 to i64
%155 = getelementptr inbounds [100 x i32], [100 x i32]* %3, i64 0, i64 %154
%156 = load i32, i32* %155
%157 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str, i64 0, i64 0), i32 %148, i32 %152, i32 %156)
store i32 1, i32* %6
br label %158
158: ; preds = %147, %137
br label %159
159: ; preds = %158
%160 = load i32, i32* %5
%161 = add nsw i32 %160, 1
store i32 %161, i32* %5
br label %134
162: ; preds = %134
%163 = load i32, i32* %6
%164 = icmp ne i32 %163, 0
br i1 %164, label %165, label %167
165: ; preds = %162
%166 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.1, i64 0, i64 0))
br label %169
167: ; preds = %162
%168 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.2, i64 0, i64 0))
br label %169
169: ; preds = %167, %165
store i32 0, i32* %6
store i32 0, i32* %5
br label %170
170: ; preds = %184, %169
%171 = load i32, i32* %5
%172 = icmp slt i32 %171, 100
br i1 %172, label %173, label %187
173: ; preds = %170
%174 = load i32, i32* %5
%175 = sext i32 %174 to i64
%176 = getelementptr inbounds [100 x i32], [100 x i32]* %2, i64 0, i64 %175
store i32 -1, i32* %176
%177 = load i32, i32* %5
%178 = sext i32 %177 to i64
%179 = getelementptr inbounds [100 x i32], [100 x i32]* %3, i64 0, i64 %178
store i32 -1, i32* %179
%180 = load i32, i32* %5
%181 = load i32, i32* %5
%182 = sext i32 %181 to i64
%183 = getelementptr inbounds [100 x i32], [100 x i32]* %4, i64 0, i64 %182
store i32 %180, i32* %183
br label %184
184: ; preds = %173
%185 = load i32, i32* %5
%186 = add nsw i32 %185, 1
store i32 %186, i32* %5
br label %170
187: ; preds = %170
store i32 0, i32* %9
br label %188
188: ; preds = %203, %187
%189 = load i32, i32* %9
%190 = icmp slt i32 %189, 100
br i1 %190, label %191, label %206
191: ; preds = %188
%192 = load i32, i32* %9
%193 = sext i32 %192 to i64
%194 = getelementptr inbounds [100 x i32], [100 x i32]* %4, i64 0, i64 %193
%195 = call i64 @foo_linear(i32* %194)
%196 = load i32, i32* %9
%197 = sext i32 %196 to i64
%198 = getelementptr inbounds [100 x i32], [100 x i32]* %2, i64 0, i64 %197
%199 = load i32, i32* %198
%200 = sext i32 %199 to i64
%201 = add nsw i64 %200, %195
%202 = trunc i64 %201 to i32
store i32 %202, i32* %198
br label %203
203: ; preds = %191
%204 = load i32, i32* %9
%205 = add nsw i32 %204, 1
store i32 %205, i32* %9
br label %188
206: ; preds = %188
store i32 0, i32* %5
br label %207
207: ; preds = %215, %206
%208 = load i32, i32* %5
%209 = icmp slt i32 %208, 100
br i1 %209, label %210, label %218
210: ; preds = %207
%211 = load i32, i32* %5
%212 = load i32, i32* %5
%213 = sext i32 %212 to i64
%214 = getelementptr inbounds [100 x i32], [100 x i32]* %3, i64 0, i64 %213
store i32 %211, i32* %214
br label %215
215: ; preds = %210
%216 = load i32, i32* %5
%217 = add nsw i32 %216, 1
store i32 %217, i32* %5
br label %207
218: ; preds = %207
store i32 0, i32* %5
br label %219
219: ; preds = %244, %218
%220 = load i32, i32* %5
%221 = icmp slt i32 %220, 100
br i1 %221, label %222, label %247
222: ; preds = %219
%223 = load i32, i32* %5
%224 = sext i32 %223 to i64
%225 = getelementptr inbounds [100 x i32], [100 x i32]* %2, i64 0, i64 %224
%226 = load i32, i32* %225
%227 = load i32, i32* %5
%228 = sext i32 %227 to i64
%229 = getelementptr inbounds [100 x i32], [100 x i32]* %3, i64 0, i64 %228
%230 = load i32, i32* %229
%231 = icmp ne i32 %226, %230
br i1 %231, label %232, label %243
232: ; preds = %222
%233 = load i32, i32* %5
%234 = load i32, i32* %5
%235 = sext i32 %234 to i64
%236 = getelementptr inbounds [100 x i32], [100 x i32]* %2, i64 0, i64 %235
%237 = load i32, i32* %236
%238 = load i32, i32* %5
%239 = sext i32 %238 to i64
%240 = getelementptr inbounds [100 x i32], [100 x i32]* %3, i64 0, i64 %239
%241 = load i32, i32* %240
%242 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str, i64 0, i64 0), i32 %233, i32 %237, i32 %241)
store i32 1, i32* %6
br label %243
243: ; preds = %232, %222
br label %244
244: ; preds = %243
%245 = load i32, i32* %5
%246 = add nsw i32 %245, 1
store i32 %246, i32* %5
br label %219
247: ; preds = %219
%248 = load i32, i32* %6
%249 = icmp ne i32 %248, 0
br i1 %249, label %250, label %252
250: ; preds = %247
%251 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.1, i64 0, i64 0))
br label %254
252: ; preds = %247
%253 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.2, i64 0, i64 0))
br label %254
254: ; preds = %252, %250
store i32 0, i32* %6
store i32 0, i32* %5
br label %255
255: ; preds = %269, %254
%256 = load i32, i32* %5
%257 = icmp slt i32 %256, 100
br i1 %257, label %258, label %272
258: ; preds = %255
%259 = load i32, i32* %5
%260 = sext i32 %259 to i64
%261 = getelementptr inbounds [100 x i32], [100 x i32]* %2, i64 0, i64 %260
store i32 -1, i32* %261
%262 = load i32, i32* %5
%263 = sext i32 %262 to i64
%264 = getelementptr inbounds [100 x i32], [100 x i32]* %3, i64 0, i64 %263
store i32 -1, i32* %264
%265 = load i32, i32* %5
%266 = load i32, i32* %5
%267 = sext i32 %266 to i64
%268 = getelementptr inbounds [100 x i32], [100 x i32]* %4, i64 0, i64 %267
store i32 %265, i32* %268
br label %269
269: ; preds = %258
%270 = load i32, i32* %5
%271 = add nsw i32 %270, 1
store i32 %271, i32* %5
br label %255
272: ; preds = %255
store i32 0, i32* %10
br label %273
273: ; preds = %288, %272
%274 = load i32, i32* %10
%275 = icmp slt i32 %274, 100
br i1 %275, label %276, label %291
276: ; preds = %273
%277 = load i32, i32* %10
%278 = sext i32 %277 to i64
%279 = getelementptr inbounds [100 x i32], [100 x i32]* %4, i64 0, i64 %278
%280 = call i64 @foo_aligned(i32* %279)
%281 = load i32, i32* %10
%282 = sext i32 %281 to i64
%283 = getelementptr inbounds [100 x i32], [100 x i32]* %2, i64 0, i64 %282
%284 = load i32, i32* %283
%285 = sext i32 %284 to i64
%286 = add nsw i64 %285, %280
%287 = trunc i64 %286 to i32
store i32 %287, i32* %283
br label %288
288: ; preds = %276
%289 = load i32, i32* %10
%290 = add nsw i32 %289, 1
store i32 %290, i32* %10
br label %273
291: ; preds = %273
store i32 0, i32* %5
br label %292
292: ; preds = %300, %291
%293 = load i32, i32* %5
%294 = icmp slt i32 %293, 100
br i1 %294, label %295, label %303
295: ; preds = %292
%296 = load i32, i32* %5
%297 = load i32, i32* %5
%298 = sext i32 %297 to i64
%299 = getelementptr inbounds [100 x i32], [100 x i32]* %3, i64 0, i64 %298
store i32 %296, i32* %299
br label %300
300: ; preds = %295
%301 = load i32, i32* %5
%302 = add nsw i32 %301, 1
store i32 %302, i32* %5
br label %292
303: ; preds = %292
store i32 0, i32* %5
br label %304
304: ; preds = %329, %303
%305 = load i32, i32* %5
%306 = icmp slt i32 %305, 100
br i1 %306, label %307, label %332
307: ; preds = %304
%308 = load i32, i32* %5
%309 = sext i32 %308 to i64
%310 = getelementptr inbounds [100 x i32], [100 x i32]* %2, i64 0, i64 %309
%311 = load i32, i32* %310
%312 = load i32, i32* %5
%313 = sext i32 %312 to i64
%314 = getelementptr inbounds [100 x i32], [100 x i32]* %3, i64 0, i64 %313
%315 = load i32, i32* %314
%316 = icmp ne i32 %311, %315
br i1 %316, label %317, label %328
317: ; preds = %307
%318 = load i32, i32* %5
%319 = load i32, i32* %5
%320 = sext i32 %319 to i64
%321 = getelementptr inbounds [100 x i32], [100 x i32]* %2, i64 0, i64 %320
%322 = load i32, i32* %321
%323 = load i32, i32* %5
%324 = sext i32 %323 to i64
%325 = getelementptr inbounds [100 x i32], [100 x i32]* %3, i64 0, i64 %324
%326 = load i32, i32* %325
%327 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str, i64 0, i64 0), i32 %318, i32 %322, i32 %326)
store i32 1, i32* %6
br label %328
328: ; preds = %317, %307
br label %329
329: ; preds = %328
%330 = load i32, i32* %5
%331 = add nsw i32 %330, 1
store i32 %331, i32* %5
br label %304
332: ; preds = %304
%333 = load i32, i32* %6
%334 = icmp ne i32 %333, 0
br i1 %334, label %335, label %337
335: ; preds = %332
%336 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.1, i64 0, i64 0))
br label %339
337: ; preds = %332
%338 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.2, i64 0, i64 0))
br label %339
339: ; preds = %337, %335
store i32 0, i32* %6
store i32 0, i32* %5
br label %340
340: ; preds = %354, %339
%341 = load i32, i32* %5
%342 = icmp slt i32 %341, 100
br i1 %342, label %343, label %357
343: ; preds = %340
%344 = load i32, i32* %5
%345 = sext i32 %344 to i64
%346 = getelementptr inbounds [100 x i32], [100 x i32]* %2, i64 0, i64 %345
store i32 -1, i32* %346
%347 = load i32, i32* %5
%348 = sext i32 %347 to i64
%349 = getelementptr inbounds [100 x i32], [100 x i32]* %3, i64 0, i64 %348
store i32 -1, i32* %349
%350 = load i32, i32* %5
%351 = load i32, i32* %5
%352 = sext i32 %351 to i64
%353 = getelementptr inbounds [100 x i32], [100 x i32]* %4, i64 0, i64 %352
store i32 %350, i32* %353
br label %354
354: ; preds = %343
%355 = load i32, i32* %5
%356 = add nsw i32 %355, 1
store i32 %356, i32* %5
br label %340
357: ; preds = %340
store i32 3, i32* %12
store i32 0, i32* %11
br label %358
358: ; preds = %374, %357
%359 = load i32, i32* %11
%360 = icmp slt i32 %359, 100
br i1 %360, label %361, label %377
361: ; preds = %358
%362 = load i32, i32* %11
%363 = sext i32 %362 to i64
%364 = getelementptr inbounds [100 x i32], [100 x i32]* %4, i64 0, i64 %363
%365 = load i32, i32* %12
%366 = call i64 @foo_uniform(i32* %364, i32 %365)
%367 = load i32, i32* %11
%368 = sext i32 %367 to i64
%369 = getelementptr inbounds [100 x i32], [100 x i32]* %2, i64 0, i64 %368
%370 = load i32, i32* %369
%371 = sext i32 %370 to i64
%372 = add nsw i64 %371, %366
%373 = trunc i64 %372 to i32
store i32 %373, i32* %369
br label %374
374: ; preds = %361
%375 = load i32, i32* %11
%376 = add nsw i32 %375, 1
store i32 %376, i32* %11
br label %358
377: ; preds = %358
store i32 0, i32* %5
br label %378
378: ; preds = %387, %377
%379 = load i32, i32* %5
%380 = icmp slt i32 %379, 100
br i1 %380, label %381, label %390
381: ; preds = %378
%382 = load i32, i32* %5
%383 = add nsw i32 %382, 2
%384 = load i32, i32* %5
%385 = sext i32 %384 to i64
%386 = getelementptr inbounds [100 x i32], [100 x i32]* %3, i64 0, i64 %385
store i32 %383, i32* %386
br label %387
387: ; preds = %381
%388 = load i32, i32* %5
%389 = add nsw i32 %388, 1
store i32 %389, i32* %5
br label %378
390: ; preds = %378
store i32 0, i32* %5
br label %391
391: ; preds = %416, %390
%392 = load i32, i32* %5
%393 = icmp slt i32 %392, 100
br i1 %393, label %394, label %419
394: ; preds = %391
%395 = load i32, i32* %5
%396 = sext i32 %395 to i64
%397 = getelementptr inbounds [100 x i32], [100 x i32]* %2, i64 0, i64 %396
%398 = load i32, i32* %397
%399 = load i32, i32* %5
%400 = sext i32 %399 to i64
%401 = getelementptr inbounds [100 x i32], [100 x i32]* %3, i64 0, i64 %400
%402 = load i32, i32* %401
%403 = icmp ne i32 %398, %402
br i1 %403, label %404, label %415
404: ; preds = %394
%405 = load i32, i32* %5
%406 = load i32, i32* %5
%407 = sext i32 %406 to i64
%408 = getelementptr inbounds [100 x i32], [100 x i32]* %2, i64 0, i64 %407
%409 = load i32, i32* %408
%410 = load i32, i32* %5
%411 = sext i32 %410 to i64
%412 = getelementptr inbounds [100 x i32], [100 x i32]* %3, i64 0, i64 %411
%413 = load i32, i32* %412
%414 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str, i64 0, i64 0), i32 %405, i32 %409, i32 %413)
store i32 1, i32* %6
br label %415
415: ; preds = %404, %394
br label %416
416: ; preds = %415
%417 = load i32, i32* %5
%418 = add nsw i32 %417, 1
store i32 %418, i32* %5
br label %391
419: ; preds = %391
%420 = load i32, i32* %6
%421 = icmp ne i32 %420, 0
br i1 %421, label %422, label %424
422: ; preds = %419
%423 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.1, i64 0, i64 0))
br label %426
424: ; preds = %419
%425 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.2, i64 0, i64 0))
br label %426
426: ; preds = %424, %422
store i32 0, i32* %6
store i32 0, i32* %5
br label %427
427: ; preds = %441, %426
%428 = load i32, i32* %5
%429 = icmp slt i32 %428, 100
br i1 %429, label %430, label %444
430: ; preds = %427
%431 = load i32, i32* %5
%432 = sext i32 %431 to i64
%433 = getelementptr inbounds [100 x i32], [100 x i32]* %2, i64 0, i64 %432
store i32 -1, i32* %433
%434 = load i32, i32* %5
%435 = sext i32 %434 to i64
%436 = getelementptr inbounds [100 x i32], [100 x i32]* %3, i64 0, i64 %435
store i32 -1, i32* %436
%437 = load i32, i32* %5
%438 = load i32, i32* %5
%439 = sext i32 %438 to i64
%440 = getelementptr inbounds [100 x i32], [100 x i32]* %4, i64 0, i64 %439
store i32 %437, i32* %440
br label %441
441: ; preds = %430
%442 = load i32, i32* %5
%443 = add nsw i32 %442, 1
store i32 %443, i32* %5
br label %427
444: ; preds = %427
store i32 3, i32* %14
store i32 0, i32* %13
br label %445
445: ; preds = %466, %444
%446 = load i32, i32* %13
%447 = icmp slt i32 %446, 100
br i1 %447, label %448, label %469
448: ; preds = %445
%449 = load i32, i32* %13
%450 = srem i32 %449, 2
%451 = icmp eq i32 %450, 0
br i1 %451, label %452, label %465
452: ; preds = %448
%453 = load i32, i32* %13
%454 = sext i32 %453 to i64
%455 = getelementptr inbounds [100 x i32], [100 x i32]* %4, i64 0, i64 %454
%456 = load i32, i32* %14
%457 = call i64 @foo_inbranch(i32* %455, i32 %456)
%458 = load i32, i32* %13
%459 = sext i32 %458 to i64
%460 = getelementptr inbounds [100 x i32], [100 x i32]* %2, i64 0, i64 %459
%461 = load i32, i32* %460
%462 = sext i32 %461 to i64
%463 = add nsw i64 %462, %457
%464 = trunc i64 %463 to i32
store i32 %464, i32* %460
br label %465
465: ; preds = %452, %448
br label %466
466: ; preds = %465
%467 = load i32, i32* %13
%468 = add nsw i32 %467, 1
store i32 %468, i32* %13
br label %445
469: ; preds = %445
store i32 0, i32* %5
br label %470
470: ; preds = %484, %469
%471 = load i32, i32* %5
%472 = icmp slt i32 %471, 100
br i1 %472, label %473, label %487
473: ; preds = %470
%474 = load i32, i32* %5
%475 = srem i32 %474, 2
%476 = icmp eq i32 %475, 0
br i1 %476, label %477, label %483
477: ; preds = %473
%478 = load i32, i32* %5
%479 = add nsw i32 %478, 2
%480 = load i32, i32* %5
%481 = sext i32 %480 to i64
%482 = getelementptr inbounds [100 x i32], [100 x i32]* %3, i64 0, i64 %481
store i32 %479, i32* %482
br label %483
483: ; preds = %477, %473
br label %484
484: ; preds = %483
%485 = load i32, i32* %5
%486 = add nsw i32 %485, 1
store i32 %486, i32* %5
br label %470
487: ; preds = %470
store i32 0, i32* %5
br label %488
488: ; preds = %513, %487
%489 = load i32, i32* %5
%490 = icmp slt i32 %489, 100
br i1 %490, label %491, label %516
491: ; preds = %488
%492 = load i32, i32* %5
%493 = sext i32 %492 to i64
%494 = getelementptr inbounds [100 x i32], [100 x i32]* %2, i64 0, i64 %493
%495 = load i32, i32* %494
%496 = load i32, i32* %5
%497 = sext i32 %496 to i64
%498 = getelementptr inbounds [100 x i32], [100 x i32]* %3, i64 0, i64 %497
%499 = load i32, i32* %498
%500 = icmp ne i32 %495, %499
br i1 %500, label %501, label %512
501: ; preds = %491
%502 = load i32, i32* %5
%503 = load i32, i32* %5
%504 = sext i32 %503 to i64
%505 = getelementptr inbounds [100 x i32], [100 x i32]* %2, i64 0, i64 %504
%506 = load i32, i32* %505
%507 = load i32, i32* %5
%508 = sext i32 %507 to i64
%509 = getelementptr inbounds [100 x i32], [100 x i32]* %3, i64 0, i64 %508
%510 = load i32, i32* %509
%511 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str, i64 0, i64 0), i32 %502, i32 %506, i32 %510)
store i32 1, i32* %6
br label %512
512: ; preds = %501, %491
br label %513
513: ; preds = %512
%514 = load i32, i32* %5
%515 = add nsw i32 %514, 1
store i32 %515, i32* %5
br label %488
516: ; preds = %488
%517 = load i32, i32* %6
%518 = icmp ne i32 %517, 0
br i1 %518, label %519, label %521
519: ; preds = %516
%520 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.1, i64 0, i64 0))
br label %523
521: ; preds = %516
%522 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.2, i64 0, i64 0))
br label %523
523: ; preds = %521, %519
store i32 0, i32* %6
store i32 0, i32* %5
br label %524
524: ; preds = %538, %523
%525 = load i32, i32* %5
%526 = icmp slt i32 %525, 100
br i1 %526, label %527, label %541
527: ; preds = %524
%528 = load i32, i32* %5
%529 = sext i32 %528 to i64
%530 = getelementptr inbounds [100 x i32], [100 x i32]* %2, i64 0, i64 %529
store i32 -1, i32* %530
%531 = load i32, i32* %5
%532 = sext i32 %531 to i64
%533 = getelementptr inbounds [100 x i32], [100 x i32]* %3, i64 0, i64 %532
store i32 -1, i32* %533
%534 = load i32, i32* %5
%535 = load i32, i32* %5
%536 = sext i32 %535 to i64
%537 = getelementptr inbounds [100 x i32], [100 x i32]* %4, i64 0, i64 %536
store i32 %534, i32* %537
br label %538
538: ; preds = %527
%539 = load i32, i32* %5
%540 = add nsw i32 %539, 1
store i32 %540, i32* %5
br label %524
541: ; preds = %524
store i32 3, i32* %16
store i32 0, i32* %15
br label %542
542: ; preds = %558, %541
%543 = load i32, i32* %15
%544 = icmp slt i32 %543, 100
br i1 %544, label %545, label %561
545: ; preds = %542
%546 = load i32, i32* %15
%547 = sext i32 %546 to i64
%548 = getelementptr inbounds [100 x i32], [100 x i32]* %4, i64 0, i64 %547
%549 = load i32, i32* %16
%550 = call i64 @foo_notinbranch(i32* %548, i32 %549)
%551 = load i32, i32* %15
%552 = sext i32 %551 to i64
%553 = getelementptr inbounds [100 x i32], [100 x i32]* %2, i64 0, i64 %552
%554 = load i32, i32* %553
%555 = sext i32 %554 to i64
%556 = add nsw i64 %555, %550
%557 = trunc i64 %556 to i32
store i32 %557, i32* %553
br label %558
558: ; preds = %545
%559 = load i32, i32* %15
%560 = add nsw i32 %559, 1
store i32 %560, i32* %15
br label %542
561: ; preds = %542
store i32 0, i32* %5
br label %562
562: ; preds = %571, %561
%563 = load i32, i32* %5
%564 = icmp slt i32 %563, 100
br i1 %564, label %565, label %574
565: ; preds = %562
%566 = load i32, i32* %5
%567 = add nsw i32 %566, 2
%568 = load i32, i32* %5
%569 = sext i32 %568 to i64
%570 = getelementptr inbounds [100 x i32], [100 x i32]* %3, i64 0, i64 %569
store i32 %567, i32* %570
br label %571
571: ; preds = %565
%572 = load i32, i32* %5
%573 = add nsw i32 %572, 1
store i32 %573, i32* %5
br label %562
574: ; preds = %562
store i32 0, i32* %5
br label %575
575: ; preds = %600, %574
%576 = load i32, i32* %5
%577 = icmp slt i32 %576, 100
br i1 %577, label %578, label %603
578: ; preds = %575
%579 = load i32, i32* %5
%580 = sext i32 %579 to i64
%581 = getelementptr inbounds [100 x i32], [100 x i32]* %2, i64 0, i64 %580
%582 = load i32, i32* %581
%583 = load i32, i32* %5
%584 = sext i32 %583 to i64
%585 = getelementptr inbounds [100 x i32], [100 x i32]* %3, i64 0, i64 %584
%586 = load i32, i32* %585
%587 = icmp ne i32 %582, %586
br i1 %587, label %588, label %599
588: ; preds = %578
%589 = load i32, i32* %5
%590 = load i32, i32* %5
%591 = sext i32 %590 to i64
%592 = getelementptr inbounds [100 x i32], [100 x i32]* %2, i64 0, i64 %591
%593 = load i32, i32* %592
%594 = load i32, i32* %5
%595 = sext i32 %594 to i64
%596 = getelementptr inbounds [100 x i32], [100 x i32]* %3, i64 0, i64 %595
%597 = load i32, i32* %596
%598 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str, i64 0, i64 0), i32 %589, i32 %593, i32 %597)
store i32 1, i32* %6
br label %599
599: ; preds = %588, %578
br label %600
600: ; preds = %599
%601 = load i32, i32* %5
%602 = add nsw i32 %601, 1
store i32 %602, i32* %5
br label %575
603: ; preds = %575
%604 = load i32, i32* %6
%605 = icmp ne i32 %604, 0
br i1 %605, label %606, label %608
606: ; preds = %603
%607 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.1, i64 0, i64 0))
br label %610
608: ; preds = %603
%609 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.2, i64 0, i64 0))
br label %610
610: ; preds = %608, %606
ret i32 0
}

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