int main() {
  int i, j, b, c = 0;
  i = 4;
  j = 4;
  b = 7;
#pragma omp simd linear(b : 2) reduction(+ : c)
  for (i = 0; i < 64; i++) {
    c = c + (b != 7 + 2 * i);
    b = b + 2;
  }
  if (c || i != 64 || b != 7 + 64 * 2)
    __builtin_abort();
  i = 4;
  j = 4;
  b = 7;
#pragma omp simd linear(b : 3) reduction(+ : c)
  for (i = 0; i < 64; i += 4) {
    c = c + (b != 7 + i / 4 * 3);
    b = b + 3;
  }
  if (c || i != 64 || b != 7 + 16 * 3)
    __builtin_abort();
  i = 4;
  j = 4;
  b = 7;
#pragma omp simd linear(i) linear(b : 2) reduction(+ : c)
  for (i = 0; i < 64; i++) {
    c = c + (b != 7 + 2 * i);
    b = b + 2;
  }
  if (c || i != 64 || b != 7 + 64 * 2)
    __builtin_abort();
  i = 4;
  j = 4;
  b = 7;
#pragma omp simd linear(i : 4) linear(b : 3) reduction(+ : c)
  for (i = 0; i < 64; i += 4) {
    c = c + (b != 7 + i / 4 * 3);
    b = b + 3;
  }
  if (c || i != 64 || b != 7 + 16 * 3)
    __builtin_abort();
  i = 4;
  j = 4;
  b = 7;
#pragma omp simd collapse(2) linear(b : 2) reduction(+ : c)
  for (i = 0; i < 8; i++)
    for (j = 0; j < 8; j++) {
      c = c + (b != 7 + 2 * j + 2 * 8 * i);
      b = b + 2;
    }
  if (c || i != 8 || j != 8 || b != 7 + 64 * 2)
    __builtin_abort();
  i = 4;
  j = 4;
  b = 7;
#pragma omp simd collapse(2) lastprivate(i, j) linear(b : 2) reduction(+ : c)
  for (i = 0; i < 8; i++)
    for (j = 0; j < 8; j++) {
      c = c + (b != 7 + 2 * j + 2 * 8 * i);
      b = b + 2;
    }
  if (c || i != 8 || j != 8 || b != 7 + 64 * 2)
    __builtin_abort();
  i = 4;
  j = 4;
  b = 7;
#pragma omp parallel for simd schedule(static, 4) linear(b : 2) reduction(+ : c)
  for (i = 0; i < 64; i++) {
    c = c + (b != 7 + 2 * i);
    b = b + 2;
  }
  if (c || i != 64 || b != 7 + 64 * 2)
    __builtin_abort();
  i = 4;
  j = 4;
  b = 7;
#pragma omp parallel for simd schedule(static, 4) linear(b : 3) reduction(+ : c)
  for (i = 0; i < 64; i += 4) {
    c = c + (b != 7 + i / 4 * 3);
    b = b + 3;
  }
  if (c || i != 64 || b != 7 + 16 * 3)
    __builtin_abort();
  i = 4;
  j = 4;
  b = 7;
#pragma omp parallel for simd schedule (static, 4) linear(i) linear(b:2) reduction(+:c)
  for (i = 0; i < 64; i++) {
    c = c + (b != 7 + 2 * i);
    b = b + 2;
  }
  if (c || i != 64 || b != 7 + 64 * 2)
    __builtin_abort();
  i = 4;
  j = 4;
  b = 7;
#pragma omp parallel for simd schedule (static, 4) linear(i:4) linear(b:3) reduction(+:c)
  for (i = 0; i < 64; i += 4) {
    c = c + (b != 7 + i / 4 * 3);
    b = b + 3;
  }
  if (c || i != 64 || b != 7 + 16 * 3)
    __builtin_abort();
  i = 4;
  j = 4;
  b = 7;
#pragma omp parallel for simd lastprivate (i, j) collapse (2) schedule (static, 4) linear(b:2) reduction(+:c)
  for (i = 0; i < 8; i++)
    for (j = 0; j < 8; j++) {
      c = c + (b != 7 + 2 * j + 2 * 8 * i);
      b = b + 2;
    }
  if (c || i != 8 || j != 8 || b != 7 + 64 * 2)
    __builtin_abort();
  i = 4;
  j = 4;
  b = 7;
#pragma omp parallel for simd collapse (2) schedule (static, 4) linear(b:2) reduction(+:c)
  for (i = 0; i < 8; i++)
    for (j = 0; j < 8; j++) {
      c = c + (b != 7 + 2 * j + 2 * 8 * i);
      b = b + 2;
    }
  if (c || i != 8 || j != 8 || b != 7 + 64 * 2)
    __builtin_abort();
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
movl   $0x0,-0x4(%rbp)
movl   $0x0,-0x14(%rbp)
movl   $0x4,-0x8(%rbp)
movl   $0x4,-0xc(%rbp)
movl   $0x7,-0x10(%rbp)
movl   $0x0,-0x8(%rbp)
cmpl   $0x40,-0x8(%rbp)
jge    1182 <main+0x72>
mov    -0x14(%rbp),%eax
mov    -0x10(%rbp),%ecx
mov    -0x8(%rbp),%edx
shl    $0x1,%edx
add    $0x7,%edx
cmp    %edx,%ecx
setne  %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    %eax,-0x14(%rbp)
mov    -0x10(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x10(%rbp)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1142 <main+0x32>
cmpl   $0x0,-0x14(%rbp)
jne    11a3 <main+0x93>
cmpl   $0x40,-0x8(%rbp)
jne    11a3 <main+0x93>
cmpl   $0x87,-0x10(%rbp)
je     11a8 <main+0x98>
call   1030 <abort@plt>
movl   $0x4,-0x8(%rbp)
movl   $0x4,-0xc(%rbp)
movl   $0x7,-0x10(%rbp)
movl   $0x0,-0x8(%rbp)
cmpl   $0x40,-0x8(%rbp)
jge    1214 <main+0x104>
mov    -0x14(%rbp),%eax
mov    %eax,-0x18(%rbp)
mov    -0x10(%rbp),%ecx
mov    -0x8(%rbp),%eax
mov    $0x4,%esi
cltd
idiv   %esi
mov    %eax,%edx
mov    -0x18(%rbp),%eax
imul   $0x3,%edx,%edx
add    $0x7,%edx
cmp    %edx,%ecx
setne  %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    %eax,-0x14(%rbp)
mov    -0x10(%rbp),%eax
add    $0x3,%eax
mov    %eax,-0x10(%rbp)
mov    -0x8(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0x8(%rbp)
jmp    11c4 <main+0xb4>
cmpl   $0x0,-0x14(%rbp)
jne    1232 <main+0x122>
cmpl   $0x40,-0x8(%rbp)
jne    1232 <main+0x122>
cmpl   $0x37,-0x10(%rbp)
je     1237 <main+0x127>
call   1030 <abort@plt>
movl   $0x4,-0x8(%rbp)
movl   $0x4,-0xc(%rbp)
movl   $0x7,-0x10(%rbp)
movl   $0x0,-0x8(%rbp)
cmpl   $0x40,-0x8(%rbp)
jge    1293 <main+0x183>
mov    -0x14(%rbp),%eax
mov    -0x10(%rbp),%ecx
mov    -0x8(%rbp),%edx
shl    $0x1,%edx
add    $0x7,%edx
cmp    %edx,%ecx
setne  %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    %eax,-0x14(%rbp)
mov    -0x10(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x10(%rbp)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1253 <main+0x143>
cmpl   $0x0,-0x14(%rbp)
jne    12b4 <main+0x1a4>
cmpl   $0x40,-0x8(%rbp)
jne    12b4 <main+0x1a4>
cmpl   $0x87,-0x10(%rbp)
je     12b9 <main+0x1a9>
call   1030 <abort@plt>
movl   $0x4,-0x8(%rbp)
movl   $0x4,-0xc(%rbp)
movl   $0x7,-0x10(%rbp)
movl   $0x0,-0x8(%rbp)
cmpl   $0x40,-0x8(%rbp)
jge    1325 <main+0x215>
mov    -0x14(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x10(%rbp),%ecx
mov    -0x8(%rbp),%eax
mov    $0x4,%esi
cltd
idiv   %esi
mov    %eax,%edx
mov    -0x1c(%rbp),%eax
imul   $0x3,%edx,%edx
add    $0x7,%edx
cmp    %edx,%ecx
setne  %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    %eax,-0x14(%rbp)
mov    -0x10(%rbp),%eax
add    $0x3,%eax
mov    %eax,-0x10(%rbp)
mov    -0x8(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0x8(%rbp)
jmp    12d5 <main+0x1c5>
cmpl   $0x0,-0x14(%rbp)
jne    1343 <main+0x233>
cmpl   $0x40,-0x8(%rbp)
jne    1343 <main+0x233>
cmpl   $0x37,-0x10(%rbp)
je     1348 <main+0x238>
call   1030 <abort@plt>
movl   $0x4,-0x8(%rbp)
movl   $0x4,-0xc(%rbp)
movl   $0x7,-0x10(%rbp)
movl   $0x0,-0x8(%rbp)
cmpl   $0x8,-0x8(%rbp)
jge    13d0 <main+0x2c0>
movl   $0x0,-0xc(%rbp)
cmpl   $0x8,-0xc(%rbp)
jge    13bd <main+0x2ad>
mov    -0x14(%rbp),%eax
mov    -0x10(%rbp),%ecx
mov    -0xc(%rbp),%edx
shl    $0x1,%edx
add    $0x7,%edx
mov    -0x8(%rbp),%esi
shl    $0x4,%esi
add    %esi,%edx
cmp    %edx,%ecx
setne  %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    %eax,-0x14(%rbp)
mov    -0x10(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x10(%rbp)
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    1375 <main+0x265>
jmp    13c2 <main+0x2b2>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1364 <main+0x254>
cmpl   $0x0,-0x14(%rbp)
jne    13fb <main+0x2eb>
cmpl   $0x8,-0x8(%rbp)
jne    13fb <main+0x2eb>
cmpl   $0x8,-0xc(%rbp)
jne    13fb <main+0x2eb>
cmpl   $0x87,-0x10(%rbp)
je     1400 <main+0x2f0>
call   1030 <abort@plt>
movl   $0x4,-0x8(%rbp)
movl   $0x4,-0xc(%rbp)
movl   $0x7,-0x10(%rbp)
movl   $0x0,-0x8(%rbp)
cmpl   $0x8,-0x8(%rbp)
jge    1488 <main+0x378>
movl   $0x0,-0xc(%rbp)
cmpl   $0x8,-0xc(%rbp)
jge    1475 <main+0x365>
mov    -0x14(%rbp),%eax
mov    -0x10(%rbp),%ecx
mov    -0xc(%rbp),%edx
shl    $0x1,%edx
add    $0x7,%edx
mov    -0x8(%rbp),%esi
shl    $0x4,%esi
add    %esi,%edx
cmp    %edx,%ecx
setne  %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    %eax,-0x14(%rbp)
mov    -0x10(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x10(%rbp)
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    142d <main+0x31d>
jmp    147a <main+0x36a>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    141c <main+0x30c>
cmpl   $0x0,-0x14(%rbp)
jne    14b3 <main+0x3a3>
cmpl   $0x8,-0x8(%rbp)
jne    14b3 <main+0x3a3>
cmpl   $0x8,-0xc(%rbp)
jne    14b3 <main+0x3a3>
cmpl   $0x87,-0x10(%rbp)
je     14b8 <main+0x3a8>
call   1030 <abort@plt>
movl   $0x4,-0x8(%rbp)
movl   $0x4,-0xc(%rbp)
movl   $0x7,-0x10(%rbp)
movl   $0x0,-0x8(%rbp)
cmpl   $0x40,-0x8(%rbp)
jge    1514 <main+0x404>
mov    -0x14(%rbp),%eax
mov    -0x10(%rbp),%ecx
mov    -0x8(%rbp),%edx
shl    $0x1,%edx
add    $0x7,%edx
cmp    %edx,%ecx
setne  %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    %eax,-0x14(%rbp)
mov    -0x10(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x10(%rbp)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    14d4 <main+0x3c4>
cmpl   $0x0,-0x14(%rbp)
jne    1535 <main+0x425>
cmpl   $0x40,-0x8(%rbp)
jne    1535 <main+0x425>
cmpl   $0x87,-0x10(%rbp)
je     153a <main+0x42a>
call   1030 <abort@plt>
movl   $0x4,-0x8(%rbp)
movl   $0x4,-0xc(%rbp)
movl   $0x7,-0x10(%rbp)
movl   $0x0,-0x8(%rbp)
cmpl   $0x40,-0x8(%rbp)
jge    15a6 <main+0x496>
mov    -0x14(%rbp),%eax
mov    %eax,-0x20(%rbp)
mov    -0x10(%rbp),%ecx
mov    -0x8(%rbp),%eax
mov    $0x4,%esi
cltd
idiv   %esi
mov    %eax,%edx
mov    -0x20(%rbp),%eax
imul   $0x3,%edx,%edx
add    $0x7,%edx
cmp    %edx,%ecx
setne  %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    %eax,-0x14(%rbp)
mov    -0x10(%rbp),%eax
add    $0x3,%eax
mov    %eax,-0x10(%rbp)
mov    -0x8(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0x8(%rbp)
jmp    1556 <main+0x446>
cmpl   $0x0,-0x14(%rbp)
jne    15c4 <main+0x4b4>
cmpl   $0x40,-0x8(%rbp)
jne    15c4 <main+0x4b4>
cmpl   $0x37,-0x10(%rbp)
je     15c9 <main+0x4b9>
call   1030 <abort@plt>
movl   $0x4,-0x8(%rbp)
movl   $0x4,-0xc(%rbp)
movl   $0x7,-0x10(%rbp)
movl   $0x0,-0x8(%rbp)
cmpl   $0x40,-0x8(%rbp)
jge    1625 <main+0x515>
mov    -0x14(%rbp),%eax
mov    -0x10(%rbp),%ecx
mov    -0x8(%rbp),%edx
shl    $0x1,%edx
add    $0x7,%edx
cmp    %edx,%ecx
setne  %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    %eax,-0x14(%rbp)
mov    -0x10(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x10(%rbp)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    15e5 <main+0x4d5>
cmpl   $0x0,-0x14(%rbp)
jne    1646 <main+0x536>
cmpl   $0x40,-0x8(%rbp)
jne    1646 <main+0x536>
cmpl   $0x87,-0x10(%rbp)
je     164b <main+0x53b>
call   1030 <abort@plt>
movl   $0x4,-0x8(%rbp)
movl   $0x4,-0xc(%rbp)
movl   $0x7,-0x10(%rbp)
movl   $0x0,-0x8(%rbp)
cmpl   $0x40,-0x8(%rbp)
jge    16b7 <main+0x5a7>
mov    -0x14(%rbp),%eax
mov    %eax,-0x24(%rbp)
mov    -0x10(%rbp),%ecx
mov    -0x8(%rbp),%eax
mov    $0x4,%esi
cltd
idiv   %esi
mov    %eax,%edx
mov    -0x24(%rbp),%eax
imul   $0x3,%edx,%edx
add    $0x7,%edx
cmp    %edx,%ecx
setne  %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    %eax,-0x14(%rbp)
mov    -0x10(%rbp),%eax
add    $0x3,%eax
mov    %eax,-0x10(%rbp)
mov    -0x8(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0x8(%rbp)
jmp    1667 <main+0x557>
cmpl   $0x0,-0x14(%rbp)
jne    16d5 <main+0x5c5>
cmpl   $0x40,-0x8(%rbp)
jne    16d5 <main+0x5c5>
cmpl   $0x37,-0x10(%rbp)
je     16da <main+0x5ca>
call   1030 <abort@plt>
movl   $0x4,-0x8(%rbp)
movl   $0x4,-0xc(%rbp)
movl   $0x7,-0x10(%rbp)
movl   $0x0,-0x8(%rbp)
cmpl   $0x8,-0x8(%rbp)
jge    1762 <main+0x652>
movl   $0x0,-0xc(%rbp)
cmpl   $0x8,-0xc(%rbp)
jge    174f <main+0x63f>
mov    -0x14(%rbp),%eax
mov    -0x10(%rbp),%ecx
mov    -0xc(%rbp),%edx
shl    $0x1,%edx
add    $0x7,%edx
mov    -0x8(%rbp),%esi
shl    $0x4,%esi
add    %esi,%edx
cmp    %edx,%ecx
setne  %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    %eax,-0x14(%rbp)
mov    -0x10(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x10(%rbp)
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    1707 <main+0x5f7>
jmp    1754 <main+0x644>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    16f6 <main+0x5e6>
cmpl   $0x0,-0x14(%rbp)
jne    178d <main+0x67d>
cmpl   $0x8,-0x8(%rbp)
jne    178d <main+0x67d>
cmpl   $0x8,-0xc(%rbp)
jne    178d <main+0x67d>
cmpl   $0x87,-0x10(%rbp)
je     1792 <main+0x682>
call   1030 <abort@plt>
movl   $0x4,-0x8(%rbp)
movl   $0x4,-0xc(%rbp)
movl   $0x7,-0x10(%rbp)
movl   $0x0,-0x8(%rbp)
cmpl   $0x8,-0x8(%rbp)
jge    181a <main+0x70a>
movl   $0x0,-0xc(%rbp)
cmpl   $0x8,-0xc(%rbp)
jge    1807 <main+0x6f7>
mov    -0x14(%rbp),%eax
mov    -0x10(%rbp),%ecx
mov    -0xc(%rbp),%edx
shl    $0x1,%edx
add    $0x7,%edx
mov    -0x8(%rbp),%esi
shl    $0x4,%esi
add    %esi,%edx
cmp    %edx,%ecx
setne  %cl
and    $0x1,%cl
movzbl %cl,%ecx
add    %ecx,%eax
mov    %eax,-0x14(%rbp)
mov    -0x10(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x10(%rbp)
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    17bf <main+0x6af>
jmp    180c <main+0x6fc>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    17ae <main+0x69e>
cmpl   $0x0,-0x14(%rbp)
jne    1845 <main+0x735>
cmpl   $0x8,-0x8(%rbp)
jne    1845 <main+0x735>
cmpl   $0x8,-0xc(%rbp)
jne    1845 <main+0x735>
cmpl   $0x87,-0x10(%rbp)
je     184a <main+0x73a>
call   1030 <abort@plt>
xor    %eax,%eax
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
xor    %eax,%eax
ret

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

LLVM IR (-O2):
define i32 @main() {
ret i32 0
}