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

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ abort();
int omp_get_num_threads();
int omp_get_thread_num();
int main() {
  int i;
#pragma omp parallel
  {
    int cnt = omp_get_num_threads();
    int thr = omp_get_thread_num();
    int l = -1;
    int c = 0;
    int n = 0;
#pragma omp for nowait schedule(static, 5)
    for (i = 0; i < 73; i++) {
      if (l == -1) {
        n = 1;
        c++;
      } else if (l == i - 1)
        n++;
      else {
        if (l >= i)
          abort();
        if (cnt == 1)
          abort();
        if (n != 5)
          abort();
        n = 1;
        c++;
      }
      if (n == 1) {
        if ((i % 5) != 0)
          abort();
        if ((i / 5) % cnt != thr)
          abort();
      }
      l = i;
    }
    if (cnt == 1) {
      if (n != 73 || l != 73 - 1 || c != 1)
        abort();
    } else if (thr > 73 / 5) {
      if (l != -1 || c != 0 || n != 0)
        abort();
    } else if (thr == 73 / 5) {
      if (l != 73 - 1 || c != 1 || n != 73 % 5)
        abort();
    } else if (c == 0)
      abort();
    else if (l == 73 - 1) {
      if (thr != (73 / 5) % cnt || n != 73 % 5)
        abort();
    } else if ((n % 5) != 0)
      abort();
    l = -1;
    c = 0;
    n = 0;
#pragma omp for schedule(monotonic : static, 7) nowait
    for (i = 0; i < 73; i++) {
      if (l == -1) {
        n = 1;
        c++;
      } else if (l == i - 1)
        n++;
      else {
        if (l >= i)
          abort();
        if (cnt == 1)
          abort();
        if (n != 7)
          abort();
        n = 1;
        c++;
      }
      if (n == 1) {
        if ((i % 7) != 0)
          abort();
        if ((i / 7) % cnt != thr)
          abort();
      }
      l = i;
    }
    if (cnt == 1) {
      if (n != 73 || l != 73 - 1 || c != 1)
        abort();
    } else if (thr > 73 / 7) {
      if (l != -1 || c != 0 || n != 0)
        abort();
    } else if (thr == 73 / 7) {
      if (l != 73 - 1 || c != 1 || n != 73 % 7)
        abort();
    } else if (c == 0)
      abort();
    else if (l == 73 - 1) {
      if (thr != (73 / 7) % cnt || n != 73 % 7)
        abort();
    } else if ((n % 7) != 0)
      abort();
    l = -1;
    c = 0;
    n = 0;
#pragma omp for nowait schedule(static)
    for (i = 0; i < 73; i++) {
      if (l == -1) {
        n = 1;
        c++;
      } else if (l == i - 1)
        n++;
      else
        abort();
      l = i;
    }
    if (c > 1)
      abort();
    l = -1;
    c = 0;
    n = 0;
#pragma omp for nowait schedule(monotonic, simd : static)
    for (i = 0; i < 73; i++) {
      if (l == -1) {
        n = 1;
        c++;
      } else if (l == i - 1)
        n++;
      else
        abort();
      l = i;
    }
    if (c > 1)
      abort();
    l = -1;
    c = 0;
    n = 0;
#pragma omp for schedule(monotonic : dynamic, 5) nowait
    for (i = 0; i < 73; i++) {
      if (l == -1) {
        n = 1;
        c++;
      } else if (l == i - 1)
        n++;
      else {
        if (l >= i)
          abort();
        if ((n % 5) != 0 || n == 0)
          abort();
        n = 1;
        c++;
      }
      l = i;
    }
    if (l == 73 - 1) {
      if (n % 5 != 73 % 5)
        abort();
    } else if (l == -1) {
      if (n != 0 || c != 0)
        abort();
    } else if ((n % 5) != 0 || n == 0)
      abort();
    l = -1;
    c = 0;
    n = 0;
#pragma omp for nowait schedule(dynamic, 7) ordered(1)
    for (i = 0; i < 73; i++) {
      if (l == -1) {
        n = 1;
        c++;
      } else if (l == i - 1)
        n++;
      else {
        if (l >= i)
          abort();
        if ((n % 7) != 0 || n == 0)
          abort();
        n = 1;
        c++;
      }
#pragma omp ordered depend(source)
      if (-1 > 0) {
#pragma omp ordered depend(sink : i)
      } else {
#pragma omp ordered depend(sink : i - 1)
      }
      l = i;
    }
    if (l == 73 - 1) {
      if (n % 7 != 73 % 7)
        abort();
    } else if (l == -1) {
      if (n != 0 || c != 0)
        abort();
    } else if ((n % 7) != 0 || n == 0)
      abort();
    l = -1;
    c = 0;
    n = 0;
#pragma omp for schedule(monotonic : guided, 7) nowait
    for (i = 0; i < 73; i++) {
      if (l == -1) {
        n = 1;
        c++;
      } else if (l == i - 1)
        n++;
      else {
        if (l >= i)
          abort();
        if (n < 7)
          abort();
        n = 1;
        c++;
      }
      l = i;
    }
    l = -1;
    c = 0;
    n = 0;
#pragma omp for nowait schedule(guided, 7) ordered
    for (i = 0; i < 73; i++) {
      if (l == -1) {
        n = 1;
        c++;
      } else if (l == i - 1)
        n++;
      else {
        if (l >= i)
          abort();
        if (n < 7)
          abort();
        n = 1;
        c++;
      }
#pragma omp ordered
      l = i;
    }
  }
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
movl   $0x0,-0x4(%rbp)
mov    $0x0,%al
call   1050 <omp_get_num_threads@plt>
mov    %eax,-0xc(%rbp)
mov    $0x0,%al
call   1040 <omp_get_thread_num@plt>
mov    %eax,-0x10(%rbp)
movl   $0xffffffff,-0x14(%rbp)
movl   $0x0,-0x18(%rbp)
movl   $0x0,-0x1c(%rbp)
movl   $0x0,-0x8(%rbp)
cmpl   $0x49,-0x8(%rbp)
jge    125e <main+0x12e>
cmpl   $0xffffffff,-0x14(%rbp)
jne    1198 <main+0x68>
movl   $0x1,-0x1c(%rbp)
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    1201 <main+0xd1>
mov    -0x14(%rbp),%eax
mov    -0x8(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jne    11b7 <main+0x87>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    11fc <main+0xcc>
mov    -0x14(%rbp),%eax
cmp    -0x8(%rbp),%eax
jl     11ca <main+0x9a>
mov    $0x0,%al
call   1030 <abort@plt>
cmpl   $0x1,-0xc(%rbp)
jne    11db <main+0xab>
mov    $0x0,%al
call   1030 <abort@plt>
cmpl   $0x5,-0x1c(%rbp)
je     11ec <main+0xbc>
mov    $0x0,%al
call   1030 <abort@plt>
movl   $0x1,-0x1c(%rbp)
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    1201 <main+0xd1>
cmpl   $0x1,-0x1c(%rbp)
jne    124a <main+0x11a>
mov    -0x8(%rbp),%eax
mov    $0x5,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
je     1226 <main+0xf6>
mov    $0x0,%al
call   1030 <abort@plt>
mov    -0x8(%rbp),%eax
mov    $0x5,%ecx
cltd
idiv   %ecx
cltd
idivl  -0xc(%rbp)
cmp    -0x10(%rbp),%edx
je     1245 <main+0x115>
mov    $0x0,%al
call   1030 <abort@plt>
jmp    124a <main+0x11a>
mov    -0x8(%rbp),%eax
mov    %eax,-0x14(%rbp)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    116f <main+0x3f>
cmpl   $0x1,-0xc(%rbp)
jne    1292 <main+0x162>
cmpl   $0x49,-0x1c(%rbp)
jne    1286 <main+0x156>
cmpl   $0x48,-0x14(%rbp)
jne    1286 <main+0x156>
cmpl   $0x1,-0x18(%rbp)
je     128d <main+0x15d>
mov    $0x0,%al
call   1030 <abort@plt>
jmp    1379 <main+0x249>
cmpl   $0xe,-0x10(%rbp)
jle    12c6 <main+0x196>
cmpl   $0xffffffff,-0x14(%rbp)
jne    12ba <main+0x18a>
cmpl   $0x0,-0x18(%rbp)
jne    12ba <main+0x18a>
cmpl   $0x0,-0x1c(%rbp)
je     12c1 <main+0x191>
mov    $0x0,%al
call   1030 <abort@plt>
jmp    1374 <main+0x244>
cmpl   $0xe,-0x10(%rbp)
jne    12fa <main+0x1ca>
cmpl   $0x48,-0x14(%rbp)
jne    12ee <main+0x1be>
cmpl   $0x1,-0x18(%rbp)
jne    12ee <main+0x1be>
cmpl   $0x3,-0x1c(%rbp)
je     12f5 <main+0x1c5>
mov    $0x0,%al
call   1030 <abort@plt>
jmp    136f <main+0x23f>
cmpl   $0x0,-0x18(%rbp)
jne    130b <main+0x1db>
mov    $0x0,%al
call   1030 <abort@plt>
cmpl   $0x48,-0x14(%rbp)
jne    1345 <main+0x215>
mov    -0x10(%rbp),%eax
mov    %eax,-0x20(%rbp)
mov    $0xe,%eax
cltd
idivl  -0xc(%rbp)
mov    -0x20(%rbp),%eax
cmp    %edx,%eax
jne    1339 <main+0x209>
cmpl   $0x3,-0x1c(%rbp)
je     1340 <main+0x210>
mov    $0x0,%al
call   1030 <abort@plt>
jmp    1365 <main+0x235>
mov    -0x1c(%rbp),%eax
mov    $0x5,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
je     1360 <main+0x230>
mov    $0x0,%al
call   1030 <abort@plt>
jmp    1365 <main+0x235>
jmp    136a <main+0x23a>
jmp    136f <main+0x23f>
jmp    1374 <main+0x244>
jmp    1379 <main+0x249>
movl   $0xffffffff,-0x14(%rbp)
movl   $0x0,-0x18(%rbp)
movl   $0x0,-0x1c(%rbp)
movl   $0x0,-0x8(%rbp)
cmpl   $0x49,-0x8(%rbp)
jge    1484 <main+0x354>
cmpl   $0xffffffff,-0x14(%rbp)
jne    13be <main+0x28e>
movl   $0x1,-0x1c(%rbp)
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    1427 <main+0x2f7>
mov    -0x14(%rbp),%eax
mov    -0x8(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jne    13dd <main+0x2ad>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    1422 <main+0x2f2>
mov    -0x14(%rbp),%eax
cmp    -0x8(%rbp),%eax
jl     13f0 <main+0x2c0>
mov    $0x0,%al
call   1030 <abort@plt>
cmpl   $0x1,-0xc(%rbp)
jne    1401 <main+0x2d1>
mov    $0x0,%al
call   1030 <abort@plt>
cmpl   $0x7,-0x1c(%rbp)
je     1412 <main+0x2e2>
mov    $0x0,%al
call   1030 <abort@plt>
movl   $0x1,-0x1c(%rbp)
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    1427 <main+0x2f7>
cmpl   $0x1,-0x1c(%rbp)
jne    1470 <main+0x340>
mov    -0x8(%rbp),%eax
mov    $0x7,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
je     144c <main+0x31c>
mov    $0x0,%al
call   1030 <abort@plt>
mov    -0x8(%rbp),%eax
mov    $0x7,%ecx
cltd
idiv   %ecx
cltd
idivl  -0xc(%rbp)
cmp    -0x10(%rbp),%edx
je     146b <main+0x33b>
mov    $0x0,%al
call   1030 <abort@plt>
jmp    1470 <main+0x340>
mov    -0x8(%rbp),%eax
mov    %eax,-0x14(%rbp)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1395 <main+0x265>
cmpl   $0x1,-0xc(%rbp)
jne    14b8 <main+0x388>
cmpl   $0x49,-0x1c(%rbp)
jne    14ac <main+0x37c>
cmpl   $0x48,-0x14(%rbp)
jne    14ac <main+0x37c>
cmpl   $0x1,-0x18(%rbp)
je     14b3 <main+0x383>
mov    $0x0,%al
call   1030 <abort@plt>
jmp    159f <main+0x46f>
cmpl   $0xa,-0x10(%rbp)
jle    14ec <main+0x3bc>
cmpl   $0xffffffff,-0x14(%rbp)
jne    14e0 <main+0x3b0>
cmpl   $0x0,-0x18(%rbp)
jne    14e0 <main+0x3b0>
cmpl   $0x0,-0x1c(%rbp)
je     14e7 <main+0x3b7>
mov    $0x0,%al
call   1030 <abort@plt>
jmp    159a <main+0x46a>
cmpl   $0xa,-0x10(%rbp)
jne    1520 <main+0x3f0>
cmpl   $0x48,-0x14(%rbp)
jne    1514 <main+0x3e4>
cmpl   $0x1,-0x18(%rbp)
jne    1514 <main+0x3e4>
cmpl   $0x3,-0x1c(%rbp)
je     151b <main+0x3eb>
mov    $0x0,%al
call   1030 <abort@plt>
jmp    1595 <main+0x465>
cmpl   $0x0,-0x18(%rbp)
jne    1531 <main+0x401>
mov    $0x0,%al
call   1030 <abort@plt>
cmpl   $0x48,-0x14(%rbp)
jne    156b <main+0x43b>
mov    -0x10(%rbp),%eax
mov    %eax,-0x24(%rbp)
mov    $0xa,%eax
cltd
idivl  -0xc(%rbp)
mov    -0x24(%rbp),%eax
cmp    %edx,%eax
jne    155f <main+0x42f>
cmpl   $0x3,-0x1c(%rbp)
je     1566 <main+0x436>
mov    $0x0,%al
call   1030 <abort@plt>
jmp    158b <main+0x45b>
mov    -0x1c(%rbp),%eax
mov    $0x7,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
je     1586 <main+0x456>
mov    $0x0,%al
call   1030 <abort@plt>
jmp    158b <main+0x45b>
jmp    1590 <main+0x460>
jmp    1595 <main+0x465>
jmp    159a <main+0x46a>
jmp    159f <main+0x46f>
movl   $0xffffffff,-0x14(%rbp)
movl   $0x0,-0x18(%rbp)
movl   $0x0,-0x1c(%rbp)
movl   $0x0,-0x8(%rbp)
cmpl   $0x49,-0x8(%rbp)
jge    1623 <main+0x4f3>
cmpl   $0xffffffff,-0x14(%rbp)
jne    15e4 <main+0x4b4>
movl   $0x1,-0x1c(%rbp)
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    160f <main+0x4df>
mov    -0x14(%rbp),%eax
mov    -0x8(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jne    1603 <main+0x4d3>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    160a <main+0x4da>
mov    $0x0,%al
call   1030 <abort@plt>
jmp    160f <main+0x4df>
mov    -0x8(%rbp),%eax
mov    %eax,-0x14(%rbp)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    15bb <main+0x48b>
cmpl   $0x1,-0x18(%rbp)
jle    1634 <main+0x504>
mov    $0x0,%al
call   1030 <abort@plt>
movl   $0xffffffff,-0x14(%rbp)
movl   $0x0,-0x18(%rbp)
movl   $0x0,-0x1c(%rbp)
movl   $0x0,-0x8(%rbp)
cmpl   $0x49,-0x8(%rbp)
jge    16b8 <main+0x588>
cmpl   $0xffffffff,-0x14(%rbp)
jne    1679 <main+0x549>
movl   $0x1,-0x1c(%rbp)
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    16a4 <main+0x574>
mov    -0x14(%rbp),%eax
mov    -0x8(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jne    1698 <main+0x568>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    169f <main+0x56f>
mov    $0x0,%al
call   1030 <abort@plt>
jmp    16a4 <main+0x574>
mov    -0x8(%rbp),%eax
mov    %eax,-0x14(%rbp)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1650 <main+0x520>
cmpl   $0x1,-0x18(%rbp)
jle    16c9 <main+0x599>
mov    $0x0,%al
call   1030 <abort@plt>
movl   $0xffffffff,-0x14(%rbp)
movl   $0x0,-0x18(%rbp)
movl   $0x0,-0x1c(%rbp)
movl   $0x0,-0x8(%rbp)
cmpl   $0x49,-0x8(%rbp)
jge    178e <main+0x65e>
cmpl   $0xffffffff,-0x14(%rbp)
jne    170e <main+0x5de>
movl   $0x1,-0x1c(%rbp)
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    177a <main+0x64a>
mov    -0x14(%rbp),%eax
mov    -0x8(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jne    172d <main+0x5fd>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    1775 <main+0x645>
mov    -0x14(%rbp),%eax
cmp    -0x8(%rbp),%eax
jl     1740 <main+0x610>
mov    $0x0,%al
call   1030 <abort@plt>
mov    -0x1c(%rbp),%eax
mov    $0x5,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    175e <main+0x62e>
cmpl   $0x0,-0x1c(%rbp)
jne    1765 <main+0x635>
mov    $0x0,%al
call   1030 <abort@plt>
movl   $0x1,-0x1c(%rbp)
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    177a <main+0x64a>
mov    -0x8(%rbp),%eax
mov    %eax,-0x14(%rbp)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    16e5 <main+0x5b5>
cmpl   $0x48,-0x14(%rbp)
jne    17b8 <main+0x688>
mov    -0x1c(%rbp),%eax
mov    $0x5,%ecx
cltd
idiv   %ecx
cmp    $0x3,%edx
je     17b3 <main+0x683>
mov    $0x0,%al
call   1030 <abort@plt>
jmp    1811 <main+0x6e1>
cmpl   $0xffffffff,-0x14(%rbp)
jne    17e2 <main+0x6b2>
cmpl   $0x0,-0x1c(%rbp)
jne    17d6 <main+0x6a6>
cmpl   $0x0,-0x18(%rbp)
je     17dd <main+0x6ad>
mov    $0x0,%al
call   1030 <abort@plt>
jmp    180c <main+0x6dc>
mov    -0x1c(%rbp),%eax
mov    $0x5,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    1800 <main+0x6d0>
cmpl   $0x0,-0x1c(%rbp)
jne    1807 <main+0x6d7>
mov    $0x0,%al
call   1030 <abort@plt>
jmp    180c <main+0x6dc>
jmp    1811 <main+0x6e1>
movl   $0xffffffff,-0x14(%rbp)
movl   $0x0,-0x18(%rbp)
movl   $0x0,-0x1c(%rbp)
movl   $0x0,-0x8(%rbp)
cmpl   $0x49,-0x8(%rbp)
jge    18d6 <main+0x7a6>
cmpl   $0xffffffff,-0x14(%rbp)
jne    1856 <main+0x726>
movl   $0x1,-0x1c(%rbp)
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    18c2 <main+0x792>
mov    -0x14(%rbp),%eax
mov    -0x8(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jne    1875 <main+0x745>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    18bd <main+0x78d>
mov    -0x14(%rbp),%eax
cmp    -0x8(%rbp),%eax
jl     1888 <main+0x758>
mov    $0x0,%al
call   1030 <abort@plt>
mov    -0x1c(%rbp),%eax
mov    $0x7,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    18a6 <main+0x776>
cmpl   $0x0,-0x1c(%rbp)
jne    18ad <main+0x77d>
mov    $0x0,%al
call   1030 <abort@plt>
movl   $0x1,-0x1c(%rbp)
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    18c2 <main+0x792>
mov    -0x8(%rbp),%eax
mov    %eax,-0x14(%rbp)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    182d <main+0x6fd>
cmpl   $0x48,-0x14(%rbp)
jne    1900 <main+0x7d0>
mov    -0x1c(%rbp),%eax
mov    $0x7,%ecx
cltd
idiv   %ecx
cmp    $0x3,%edx
je     18fb <main+0x7cb>
mov    $0x0,%al
call   1030 <abort@plt>
jmp    1959 <main+0x829>
cmpl   $0xffffffff,-0x14(%rbp)
jne    192a <main+0x7fa>
cmpl   $0x0,-0x1c(%rbp)
jne    191e <main+0x7ee>
cmpl   $0x0,-0x18(%rbp)
je     1925 <main+0x7f5>
mov    $0x0,%al
call   1030 <abort@plt>
jmp    1954 <main+0x824>
mov    -0x1c(%rbp),%eax
mov    $0x7,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    1948 <main+0x818>
cmpl   $0x0,-0x1c(%rbp)
jne    194f <main+0x81f>
mov    $0x0,%al
call   1030 <abort@plt>
jmp    1954 <main+0x824>
jmp    1959 <main+0x829>
movl   $0xffffffff,-0x14(%rbp)
movl   $0x0,-0x18(%rbp)
movl   $0x0,-0x1c(%rbp)
movl   $0x0,-0x8(%rbp)
cmpl   $0x49,-0x8(%rbp)
jge    1a0a <main+0x8da>
cmpl   $0xffffffff,-0x14(%rbp)
jne    199e <main+0x86e>
movl   $0x1,-0x1c(%rbp)
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    19f6 <main+0x8c6>
mov    -0x14(%rbp),%eax
mov    -0x8(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jne    19bd <main+0x88d>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    19f1 <main+0x8c1>
mov    -0x14(%rbp),%eax
cmp    -0x8(%rbp),%eax
jl     19d0 <main+0x8a0>
mov    $0x0,%al
call   1030 <abort@plt>
cmpl   $0x7,-0x1c(%rbp)
jge    19e1 <main+0x8b1>
mov    $0x0,%al
call   1030 <abort@plt>
movl   $0x1,-0x1c(%rbp)
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    19f6 <main+0x8c6>
mov    -0x8(%rbp),%eax
mov    %eax,-0x14(%rbp)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1975 <main+0x845>
movl   $0xffffffff,-0x14(%rbp)
movl   $0x0,-0x18(%rbp)
movl   $0x0,-0x1c(%rbp)
movl   $0x0,-0x8(%rbp)
cmpl   $0x49,-0x8(%rbp)
jge    1abb <main+0x98b>
cmpl   $0xffffffff,-0x14(%rbp)
jne    1a4f <main+0x91f>
movl   $0x1,-0x1c(%rbp)
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    1aa7 <main+0x977>
mov    -0x14(%rbp),%eax
mov    -0x8(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jne    1a6e <main+0x93e>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    1aa2 <main+0x972>
mov    -0x14(%rbp),%eax
cmp    -0x8(%rbp),%eax
jl     1a81 <main+0x951>
mov    $0x0,%al
call   1030 <abort@plt>
cmpl   $0x7,-0x1c(%rbp)
jge    1a92 <main+0x962>
mov    $0x0,%al
call   1030 <abort@plt>
movl   $0x1,-0x1c(%rbp)
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    1aa7 <main+0x977>
mov    -0x8(%rbp),%eax
mov    %eax,-0x14(%rbp)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1a26 <main+0x8f6>
xor    %eax,%eax
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %rbx
push   %rax
xor    %ebx,%ebx
xor    %eax,%eax
call   1050 <omp_get_num_threads@plt>
mov    %eax,%ebp
xor    %eax,%eax
call   1040 <omp_get_thread_num@plt>
test   %eax,%eax
jne    1263 <main+0x133>
mov    %eax,%edi
mov    $0x1,%esi
mov    $0x1,%cl
jmp    116e <main+0x3e>
nopl   0x0(%rax,%rax,1)
add    $0x1,%esi
add    $0x1,%ebx
add    $0x1,%cl
cmp    $0x48,%ebx
je     11af <main+0x7f>
test   %esi,%esi
jne    1160 <main+0x30>
movzbl %cl,%eax
imul   $0xcd,%eax,%eax
shr    $0xa,%eax
lea    (%rax,%rax,4),%eax
add    $0xff,%al
cmp    %bl,%al
jne    1263 <main+0x133>
lea    0x1(%rbx),%eax
movzbl %al,%eax
imul   $0xcd,%eax,%eax
shr    $0xa,%eax
movzbl %al,%eax
xor    %edx,%edx
idiv   %ebp
mov    $0x1,%esi
cmp    %edi,%edx
je     1163 <main+0x33>
jmp    1263 <main+0x133>
cmp    $0x1,%ebp
jne    11be <main+0x8e>
cmp    $0x49,%esi
je     11ea <main+0xba>
jmp    1263 <main+0x133>
cmp    $0xf,%edi
jge    1263 <main+0x133>
cmp    $0xe,%edi
je     129b <main+0x16b>
mov    $0xe,%eax
xor    %edx,%edx
idiv   %ebp
cmp    %edx,%edi
jne    1263 <main+0x133>
cmp    $0x3,%esi
jne    1263 <main+0x133>
test   %edi,%edi
jne    1263 <main+0x133>
mov    $0x1,%ecx
xor    %esi,%esi
mov    $0x1,%bl
jmp    120e <main+0xde>
nopl   0x0(%rax)
add    $0x1,%ecx
add    $0x1,%esi
add    $0x1,%bl
cmp    $0x48,%esi
je     126a <main+0x13a>
test   %ecx,%ecx
jne    1200 <main+0xd0>
movzbl %bl,%eax
lea    (%rax,%rax,8),%ecx
lea    (%rax,%rcx,4),%ecx
shr    $0x8,%ecx
sub    %cl,%al
shr    %al
add    %cl,%al
shr    $0x2,%al
movzbl %al,%eax
lea    0x0(,%rax,8),%ecx
sub    %eax,%ecx
add    $0xff,%cl
cmp    %sil,%cl
jne    1263 <main+0x133>
lea    0x1(%rsi),%eax
movzbl %al,%eax
lea    (%rax,%rax,8),%ecx
lea    (%rax,%rcx,4),%ecx
shr    $0x8,%ecx
sub    %cl,%al
shr    %al
add    %cl,%al
shr    $0x2,%al
movzbl %al,%eax
xor    %edx,%edx
idiv   %ebp
mov    $0x1,%ecx
cmp    %edi,%edx
je     1203 <main+0xd3>
xor    %eax,%eax
call   1030 <abort@plt>
cmp    $0x1,%ebp
jne    1276 <main+0x146>
cmp    $0x49,%ecx
je     1292 <main+0x162>
jmp    1263 <main+0x133>
cmp    $0xb,%edi
jge    1263 <main+0x133>
cmp    $0xa,%edi
je     128d <main+0x15d>
mov    $0xa,%eax
xor    %edx,%edx
idiv   %ebp
cmp    %edx,%edi
jne    1263 <main+0x133>
cmp    $0x3,%ecx
jne    1263 <main+0x133>
xor    %eax,%eax
add    $0x8,%rsp
pop    %rbx
pop    %rbp
ret
cmp    $0x3,%esi
xor    %eax,%eax
call   1030 <abort@plt>

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

LLVM IR (-O2):
define i32 @main() {
%1 = tail call i32 (...) @omp_get_num_threads()
%2 = tail call i32 (...) @omp_get_thread_num()
%3 = icmp eq i32 %1, 1
%4 = icmp eq i32 %2, 0
br i1 %4, label %5, label %21
5: ; preds = %0, %23
%6 = phi i32 [ %24, %23 ], [ 1, %0 ]
%7 = phi i32 [ %25, %23 ], [ 1, %0 ]
%8 = add nsw i32 %6, 1
%9 = icmp eq i32 %6, 0
br i1 %9, label %10, label %23
10: ; preds = %5
%11 = trunc i32 %7 to i8
%12 = urem i8 %11, 5
%13 = udiv i8 %11, 5
%14 = icmp eq i8 %12, 0
br i1 %14, label %17, label %15
15: ; preds = %10
%16 = tail call i32 (...) @abort()
unreachable
17: ; preds = %10
%18 = zext i8 %13 to i32
%19 = srem i32 %18, %1
%20 = icmp eq i32 %19, %2
br i1 %20, label %23, label %21
21: ; preds = %17, %0
%22 = tail call i32 (...) @abort()
unreachable
23: ; preds = %17, %5
%24 = phi i32 [ 1, %17 ], [ %8, %5 ]
%25 = add nuw nsw i32 %7, 1
%26 = icmp eq i32 %25, 73
br i1 %26, label %27, label %5
27: ; preds = %23
br i1 %3, label %28, label %32
28: ; preds = %27
%29 = icmp eq i32 %24, 73
br i1 %29, label %49, label %30
30: ; preds = %28
%31 = tail call i32 (...) @abort()
unreachable
32: ; preds = %27
%33 = icmp sgt i32 %2, 14
br i1 %33, label %34, label %36
34: ; preds = %32
%35 = tail call i32 (...) @abort()
unreachable
36: ; preds = %32
%37 = icmp eq i32 %2, 14
br i1 %37, label %38, label %42
38: ; preds = %36
%39 = icmp eq i32 %24, 3
br i1 %39, label %67, label %40
40: ; preds = %38
%41 = tail call i32 (...) @abort()
unreachable
42: ; preds = %36
%43 = srem i32 14, %1
%44 = icmp ne i32 %2, %43
%45 = icmp ne i32 %24, 3
%46 = select i1 %44, i1 true, i1 %45
br i1 %46, label %47, label %49
47: ; preds = %42
%48 = tail call i32 (...) @abort()
unreachable
49: ; preds = %28, %42
%50 = icmp eq i32 %2, 0
br i1 %50, label %51, label %67
51: ; preds = %49, %69
%52 = phi i32 [ %70, %69 ], [ 1, %49 ]
%53 = phi i32 [ %71, %69 ], [ 1, %49 ]
%54 = add nsw i32 %52, 1
%55 = icmp eq i32 %52, 0
br i1 %55, label %56, label %69
56: ; preds = %51
%57 = trunc i32 %53 to i8
%58 = urem i8 %57, 7
%59 = udiv i8 %57, 7
%60 = icmp eq i8 %58, 0
br i1 %60, label %63, label %61
61: ; preds = %56
%62 = tail call i32 (...) @abort()
unreachable
63: ; preds = %56
%64 = zext i8 %59 to i32
%65 = srem i32 %64, %1
%66 = icmp eq i32 %65, %2
br i1 %66, label %69, label %67
67: ; preds = %63, %38, %49
%68 = tail call i32 (...) @abort()
unreachable
69: ; preds = %63, %51
%70 = phi i32 [ 1, %63 ], [ %54, %51 ]
%71 = add nuw nsw i32 %53, 1
%72 = icmp eq i32 %71, 73
br i1 %72, label %73, label %51
73: ; preds = %69
br i1 %3, label %74, label %78
74: ; preds = %73
%75 = icmp eq i32 %70, 73
br i1 %75, label %95, label %76
76: ; preds = %74
%77 = tail call i32 (...) @abort()
unreachable
78: ; preds = %73
%79 = icmp sgt i32 %2, 10
br i1 %79, label %80, label %82
80: ; preds = %78
%81 = tail call i32 (...) @abort()
unreachable
82: ; preds = %78
%83 = icmp eq i32 %2, 10
br i1 %83, label %84, label %88
84: ; preds = %82
%85 = icmp eq i32 %70, 3
br i1 %85, label %95, label %86
86: ; preds = %84
%87 = tail call i32 (...) @abort()
unreachable
88: ; preds = %82
%89 = srem i32 10, %1
%90 = icmp ne i32 %2, %89
%91 = icmp ne i32 %70, 3
%92 = select i1 %90, i1 true, i1 %91
br i1 %92, label %93, label %95
93: ; preds = %88
%94 = tail call i32 (...) @abort()
unreachable
95: ; preds = %88, %84, %74
ret i32 0
}