#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 */
scalar_t__ gang();
scalar_t__ seq();
scalar_t__ vector();
scalar_t__ worker();
int main() {
  int red = 0;
#pragma acc parallel copy(red)
  {
#pragma acc loop reduction(+ : red)
    for (int i = 0; i < 10; i++)
      red += gang();
#pragma acc loop reduction(+ : red)
    for (int i = 0; i < 10; i++)
      red += worker();
#pragma acc loop reduction(+ : red)
    for (int i = 0; i < 10; i++)
      red += vector();
#pragma acc loop gang reduction(+ : red)
    for (int i = 0; i < 10; i++)
      red += gang();
#pragma acc loop worker reduction(+ : red)
    for (int i = 0; i < 10; i++)
      red += gang();
#pragma acc loop vector reduction(+ : red)
    for (int i = 0; i < 10; i++)
      red += gang();
#pragma acc loop gang reduction(+ : red)
    for (int i = 0; i < 10; i++)
      red += worker();
#pragma acc loop worker reduction(+ : red)
    for (int i = 0; i < 10; i++)
      red += worker();
#pragma acc loop vector reduction(+ : red)
    for (int i = 0; i < 10; i++)
      red += worker();
#pragma acc loop gang reduction(+ : red)
    for (int i = 0; i < 10; i++)
      red += vector();
#pragma acc loop worker reduction(+ : red)
    for (int i = 0; i < 10; i++)
      red += vector();
#pragma acc loop vector reduction(+ : red)
    for (int i = 0; i < 10; i++)
      red += vector();
#pragma acc loop gang reduction(+ : red)
    for (int i = 0; i < 10; i++)
      red += seq();
#pragma acc loop worker reduction(+ : red)
    for (int i = 0; i < 10; i++)
      red += seq();
#pragma acc loop vector reduction(+ : red)
    for (int i = 0; i < 10; i++)
      red += seq();
  }
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x50,%rsp
movl   $0x0,-0x4(%rbp)
movl   $0x0,-0x8(%rbp)
movl   $0x0,-0xc(%rbp)
cmpl   $0xa,-0xc(%rbp)
jge    1189 <main+0x49>
mov    $0x0,%al
call   1030 <gang@plt>
mov    %rax,%rcx
movslq -0x8(%rbp),%rax
add    %rcx,%rax
mov    %eax,-0x8(%rbp)
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    115d <main+0x1d>
movl   $0x0,-0x10(%rbp)
cmpl   $0xa,-0x10(%rbp)
jge    11bc <main+0x7c>
mov    $0x0,%al
call   1040 <worker@plt>
mov    %rax,%rcx
movslq -0x8(%rbp),%rax
add    %rcx,%rax
mov    %eax,-0x8(%rbp)
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1190 <main+0x50>
movl   $0x0,-0x14(%rbp)
cmpl   $0xa,-0x14(%rbp)
jge    11ef <main+0xaf>
mov    $0x0,%al
call   1060 <vector@plt>
mov    %rax,%rcx
movslq -0x8(%rbp),%rax
add    %rcx,%rax
mov    %eax,-0x8(%rbp)
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    11c3 <main+0x83>
movl   $0x0,-0x18(%rbp)
cmpl   $0xa,-0x18(%rbp)
jge    1222 <main+0xe2>
mov    $0x0,%al
call   1030 <gang@plt>
mov    %rax,%rcx
movslq -0x8(%rbp),%rax
add    %rcx,%rax
mov    %eax,-0x8(%rbp)
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    11f6 <main+0xb6>
movl   $0x0,-0x1c(%rbp)
cmpl   $0xa,-0x1c(%rbp)
jge    1255 <main+0x115>
mov    $0x0,%al
call   1030 <gang@plt>
mov    %rax,%rcx
movslq -0x8(%rbp),%rax
add    %rcx,%rax
mov    %eax,-0x8(%rbp)
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    1229 <main+0xe9>
movl   $0x0,-0x20(%rbp)
cmpl   $0xa,-0x20(%rbp)
jge    1288 <main+0x148>
mov    $0x0,%al
call   1030 <gang@plt>
mov    %rax,%rcx
movslq -0x8(%rbp),%rax
add    %rcx,%rax
mov    %eax,-0x8(%rbp)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    125c <main+0x11c>
movl   $0x0,-0x24(%rbp)
cmpl   $0xa,-0x24(%rbp)
jge    12bb <main+0x17b>
mov    $0x0,%al
call   1040 <worker@plt>
mov    %rax,%rcx
movslq -0x8(%rbp),%rax
add    %rcx,%rax
mov    %eax,-0x8(%rbp)
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    128f <main+0x14f>
movl   $0x0,-0x28(%rbp)
cmpl   $0xa,-0x28(%rbp)
jge    12ee <main+0x1ae>
mov    $0x0,%al
call   1040 <worker@plt>
mov    %rax,%rcx
movslq -0x8(%rbp),%rax
add    %rcx,%rax
mov    %eax,-0x8(%rbp)
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    12c2 <main+0x182>
movl   $0x0,-0x2c(%rbp)
cmpl   $0xa,-0x2c(%rbp)
jge    1321 <main+0x1e1>
mov    $0x0,%al
call   1040 <worker@plt>
mov    %rax,%rcx
movslq -0x8(%rbp),%rax
add    %rcx,%rax
mov    %eax,-0x8(%rbp)
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    12f5 <main+0x1b5>
movl   $0x0,-0x30(%rbp)
cmpl   $0xa,-0x30(%rbp)
jge    1354 <main+0x214>
mov    $0x0,%al
call   1060 <vector@plt>
mov    %rax,%rcx
movslq -0x8(%rbp),%rax
add    %rcx,%rax
mov    %eax,-0x8(%rbp)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    1328 <main+0x1e8>
movl   $0x0,-0x34(%rbp)
cmpl   $0xa,-0x34(%rbp)
jge    1387 <main+0x247>
mov    $0x0,%al
call   1060 <vector@plt>
mov    %rax,%rcx
movslq -0x8(%rbp),%rax
add    %rcx,%rax
mov    %eax,-0x8(%rbp)
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    135b <main+0x21b>
movl   $0x0,-0x38(%rbp)
cmpl   $0xa,-0x38(%rbp)
jge    13ba <main+0x27a>
mov    $0x0,%al
call   1060 <vector@plt>
mov    %rax,%rcx
movslq -0x8(%rbp),%rax
add    %rcx,%rax
mov    %eax,-0x8(%rbp)
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    138e <main+0x24e>
movl   $0x0,-0x3c(%rbp)
cmpl   $0xa,-0x3c(%rbp)
jge    13ed <main+0x2ad>
mov    $0x0,%al
call   1050 <seq@plt>
mov    %rax,%rcx
movslq -0x8(%rbp),%rax
add    %rcx,%rax
mov    %eax,-0x8(%rbp)
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3c(%rbp)
jmp    13c1 <main+0x281>
movl   $0x0,-0x40(%rbp)
cmpl   $0xa,-0x40(%rbp)
jge    1420 <main+0x2e0>
mov    $0x0,%al
call   1050 <seq@plt>
mov    %rax,%rcx
movslq -0x8(%rbp),%rax
add    %rcx,%rax
mov    %eax,-0x8(%rbp)
mov    -0x40(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x40(%rbp)
jmp    13f4 <main+0x2b4>
movl   $0x0,-0x44(%rbp)
cmpl   $0xa,-0x44(%rbp)
jge    1453 <main+0x313>
mov    $0x0,%al
call   1050 <seq@plt>
mov    %rax,%rcx
movslq -0x8(%rbp),%rax
add    %rcx,%rax
mov    %eax,-0x8(%rbp)
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
jmp    1427 <main+0x2e7>
xor    %eax,%eax
add    $0x50,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rax
xor    %eax,%eax
call   1030 <gang@plt>
xor    %eax,%eax
call   1030 <gang@plt>
xor    %eax,%eax
call   1030 <gang@plt>
xor    %eax,%eax
call   1030 <gang@plt>
xor    %eax,%eax
call   1030 <gang@plt>
xor    %eax,%eax
call   1030 <gang@plt>
xor    %eax,%eax
call   1030 <gang@plt>
xor    %eax,%eax
call   1030 <gang@plt>
xor    %eax,%eax
call   1030 <gang@plt>
xor    %eax,%eax
call   1030 <gang@plt>
xor    %eax,%eax
call   1040 <worker@plt>
xor    %eax,%eax
call   1040 <worker@plt>
xor    %eax,%eax
call   1040 <worker@plt>
xor    %eax,%eax
call   1040 <worker@plt>
xor    %eax,%eax
call   1040 <worker@plt>
xor    %eax,%eax
call   1040 <worker@plt>
xor    %eax,%eax
call   1040 <worker@plt>
xor    %eax,%eax
call   1040 <worker@plt>
xor    %eax,%eax
call   1040 <worker@plt>
xor    %eax,%eax
call   1040 <worker@plt>
xor    %eax,%eax
call   1060 <vector@plt>
xor    %eax,%eax
call   1060 <vector@plt>
xor    %eax,%eax
call   1060 <vector@plt>
xor    %eax,%eax
call   1060 <vector@plt>
xor    %eax,%eax
call   1060 <vector@plt>
xor    %eax,%eax
call   1060 <vector@plt>
xor    %eax,%eax
call   1060 <vector@plt>
xor    %eax,%eax
call   1060 <vector@plt>
xor    %eax,%eax
call   1060 <vector@plt>
xor    %eax,%eax
call   1060 <vector@plt>
xor    %eax,%eax
call   1030 <gang@plt>
xor    %eax,%eax
call   1030 <gang@plt>
xor    %eax,%eax
call   1030 <gang@plt>
xor    %eax,%eax
call   1030 <gang@plt>
xor    %eax,%eax
call   1030 <gang@plt>
xor    %eax,%eax
call   1030 <gang@plt>
xor    %eax,%eax
call   1030 <gang@plt>
xor    %eax,%eax
call   1030 <gang@plt>
xor    %eax,%eax
call   1030 <gang@plt>
xor    %eax,%eax
call   1030 <gang@plt>
xor    %eax,%eax
call   1030 <gang@plt>
xor    %eax,%eax
call   1030 <gang@plt>
xor    %eax,%eax
call   1030 <gang@plt>
xor    %eax,%eax
call   1030 <gang@plt>
xor    %eax,%eax
call   1030 <gang@plt>
xor    %eax,%eax
call   1030 <gang@plt>
xor    %eax,%eax
call   1030 <gang@plt>
xor    %eax,%eax
call   1030 <gang@plt>
xor    %eax,%eax
call   1030 <gang@plt>
xor    %eax,%eax
call   1030 <gang@plt>
xor    %eax,%eax
call   1030 <gang@plt>
xor    %eax,%eax
call   1030 <gang@plt>
xor    %eax,%eax
call   1030 <gang@plt>
xor    %eax,%eax
call   1030 <gang@plt>
xor    %eax,%eax
call   1030 <gang@plt>
xor    %eax,%eax
call   1030 <gang@plt>
xor    %eax,%eax
call   1030 <gang@plt>
xor    %eax,%eax
call   1030 <gang@plt>
xor    %eax,%eax
call   1030 <gang@plt>
xor    %eax,%eax
call   1030 <gang@plt>
xor    %eax,%eax
call   1040 <worker@plt>
xor    %eax,%eax
call   1040 <worker@plt>
xor    %eax,%eax
call   1040 <worker@plt>
xor    %eax,%eax
call   1040 <worker@plt>
xor    %eax,%eax
call   1040 <worker@plt>
xor    %eax,%eax
call   1040 <worker@plt>
xor    %eax,%eax
call   1040 <worker@plt>
xor    %eax,%eax
call   1040 <worker@plt>
xor    %eax,%eax
call   1040 <worker@plt>
xor    %eax,%eax
call   1040 <worker@plt>
xor    %eax,%eax
call   1040 <worker@plt>
xor    %eax,%eax
call   1040 <worker@plt>
xor    %eax,%eax
call   1040 <worker@plt>
xor    %eax,%eax
call   1040 <worker@plt>
xor    %eax,%eax
call   1040 <worker@plt>
xor    %eax,%eax
call   1040 <worker@plt>
xor    %eax,%eax
call   1040 <worker@plt>
xor    %eax,%eax
call   1040 <worker@plt>
xor    %eax,%eax
call   1040 <worker@plt>
xor    %eax,%eax
call   1040 <worker@plt>
xor    %eax,%eax
call   1040 <worker@plt>
xor    %eax,%eax
call   1040 <worker@plt>
xor    %eax,%eax
call   1040 <worker@plt>
xor    %eax,%eax
call   1040 <worker@plt>
xor    %eax,%eax
call   1040 <worker@plt>
xor    %eax,%eax
call   1040 <worker@plt>
xor    %eax,%eax
call   1040 <worker@plt>
xor    %eax,%eax
call   1040 <worker@plt>
xor    %eax,%eax
call   1040 <worker@plt>
xor    %eax,%eax
call   1040 <worker@plt>
xor    %eax,%eax
call   1060 <vector@plt>
xor    %eax,%eax
call   1060 <vector@plt>
xor    %eax,%eax
call   1060 <vector@plt>
xor    %eax,%eax
call   1060 <vector@plt>
xor    %eax,%eax
call   1060 <vector@plt>
xor    %eax,%eax
call   1060 <vector@plt>
xor    %eax,%eax
call   1060 <vector@plt>
xor    %eax,%eax
call   1060 <vector@plt>
xor    %eax,%eax
call   1060 <vector@plt>
xor    %eax,%eax
call   1060 <vector@plt>
xor    %eax,%eax
call   1060 <vector@plt>
xor    %eax,%eax
call   1060 <vector@plt>
xor    %eax,%eax
call   1060 <vector@plt>
xor    %eax,%eax
call   1060 <vector@plt>
xor    %eax,%eax
call   1060 <vector@plt>
xor    %eax,%eax
call   1060 <vector@plt>
xor    %eax,%eax
call   1060 <vector@plt>
xor    %eax,%eax
call   1060 <vector@plt>
xor    %eax,%eax
call   1060 <vector@plt>
xor    %eax,%eax
call   1060 <vector@plt>
xor    %eax,%eax
call   1060 <vector@plt>
xor    %eax,%eax
call   1060 <vector@plt>
xor    %eax,%eax
call   1060 <vector@plt>
xor    %eax,%eax
call   1060 <vector@plt>
xor    %eax,%eax
call   1060 <vector@plt>
xor    %eax,%eax
call   1060 <vector@plt>
xor    %eax,%eax
call   1060 <vector@plt>
xor    %eax,%eax
call   1060 <vector@plt>
xor    %eax,%eax
call   1060 <vector@plt>
xor    %eax,%eax
call   1060 <vector@plt>
xor    %eax,%eax
call   1050 <seq@plt>
xor    %eax,%eax
call   1050 <seq@plt>
xor    %eax,%eax
call   1050 <seq@plt>
xor    %eax,%eax
call   1050 <seq@plt>
xor    %eax,%eax
call   1050 <seq@plt>
xor    %eax,%eax
call   1050 <seq@plt>
xor    %eax,%eax
call   1050 <seq@plt>
xor    %eax,%eax
call   1050 <seq@plt>
xor    %eax,%eax
call   1050 <seq@plt>
xor    %eax,%eax
call   1050 <seq@plt>
xor    %eax,%eax
call   1050 <seq@plt>
xor    %eax,%eax
call   1050 <seq@plt>
xor    %eax,%eax
call   1050 <seq@plt>
xor    %eax,%eax
call   1050 <seq@plt>
xor    %eax,%eax
call   1050 <seq@plt>
xor    %eax,%eax
call   1050 <seq@plt>
xor    %eax,%eax
call   1050 <seq@plt>
xor    %eax,%eax
call   1050 <seq@plt>
xor    %eax,%eax
call   1050 <seq@plt>
xor    %eax,%eax
call   1050 <seq@plt>
xor    %eax,%eax
call   1050 <seq@plt>
xor    %eax,%eax
call   1050 <seq@plt>
xor    %eax,%eax
call   1050 <seq@plt>
xor    %eax,%eax
call   1050 <seq@plt>
xor    %eax,%eax
call   1050 <seq@plt>
xor    %eax,%eax
call   1050 <seq@plt>
xor    %eax,%eax
call   1050 <seq@plt>
xor    %eax,%eax
call   1050 <seq@plt>
xor    %eax,%eax
call   1050 <seq@plt>
xor    %eax,%eax
call   1050 <seq@plt>
xor    %eax,%eax
pop    %rcx
ret

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
%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
%17 = alloca i32
store i32 0, i32* %1
store i32 0, i32* %2
store i32 0, i32* %3
br label %18
18: ; preds = %27, %0
%19 = load i32, i32* %3
%20 = icmp slt i32 %19, 10
br i1 %20, label %21, label %30
21: ; preds = %18
%22 = call i64 (...) @gang()
%23 = load i32, i32* %2
%24 = sext i32 %23 to i64
%25 = add nsw i64 %24, %22
%26 = trunc i64 %25 to i32
store i32 %26, i32* %2
br label %27
27: ; preds = %21
%28 = load i32, i32* %3
%29 = add nsw i32 %28, 1
store i32 %29, i32* %3
br label %18
30: ; preds = %18
store i32 0, i32* %4
br label %31
31: ; preds = %40, %30
%32 = load i32, i32* %4
%33 = icmp slt i32 %32, 10
br i1 %33, label %34, label %43
34: ; preds = %31
%35 = call i64 (...) @worker()
%36 = load i32, i32* %2
%37 = sext i32 %36 to i64
%38 = add nsw i64 %37, %35
%39 = trunc i64 %38 to i32
store i32 %39, i32* %2
br label %40
40: ; preds = %34
%41 = load i32, i32* %4
%42 = add nsw i32 %41, 1
store i32 %42, i32* %4
br label %31
43: ; preds = %31
store i32 0, i32* %5
br label %44
44: ; preds = %53, %43
%45 = load i32, i32* %5
%46 = icmp slt i32 %45, 10
br i1 %46, label %47, label %56
47: ; preds = %44
%48 = call i64 (...) @vector()
%49 = load i32, i32* %2
%50 = sext i32 %49 to i64
%51 = add nsw i64 %50, %48
%52 = trunc i64 %51 to i32
store i32 %52, i32* %2
br label %53
53: ; preds = %47
%54 = load i32, i32* %5
%55 = add nsw i32 %54, 1
store i32 %55, i32* %5
br label %44
56: ; preds = %44
store i32 0, i32* %6
br label %57
57: ; preds = %66, %56
%58 = load i32, i32* %6
%59 = icmp slt i32 %58, 10
br i1 %59, label %60, label %69
60: ; preds = %57
%61 = call i64 (...) @gang()
%62 = load i32, i32* %2
%63 = sext i32 %62 to i64
%64 = add nsw i64 %63, %61
%65 = trunc i64 %64 to i32
store i32 %65, i32* %2
br label %66
66: ; preds = %60
%67 = load i32, i32* %6
%68 = add nsw i32 %67, 1
store i32 %68, i32* %6
br label %57
69: ; preds = %57
store i32 0, i32* %7
br label %70
70: ; preds = %79, %69
%71 = load i32, i32* %7
%72 = icmp slt i32 %71, 10
br i1 %72, label %73, label %82
73: ; preds = %70
%74 = call i64 (...) @gang()
%75 = load i32, i32* %2
%76 = sext i32 %75 to i64
%77 = add nsw i64 %76, %74
%78 = trunc i64 %77 to i32
store i32 %78, i32* %2
br label %79
79: ; preds = %73
%80 = load i32, i32* %7
%81 = add nsw i32 %80, 1
store i32 %81, i32* %7
br label %70
82: ; preds = %70
store i32 0, i32* %8
br label %83
83: ; preds = %92, %82
%84 = load i32, i32* %8
%85 = icmp slt i32 %84, 10
br i1 %85, label %86, label %95
86: ; preds = %83
%87 = call i64 (...) @gang()
%88 = load i32, i32* %2
%89 = sext i32 %88 to i64
%90 = add nsw i64 %89, %87
%91 = trunc i64 %90 to i32
store i32 %91, i32* %2
br label %92
92: ; preds = %86
%93 = load i32, i32* %8
%94 = add nsw i32 %93, 1
store i32 %94, i32* %8
br label %83
95: ; preds = %83
store i32 0, i32* %9
br label %96
96: ; preds = %105, %95
%97 = load i32, i32* %9
%98 = icmp slt i32 %97, 10
br i1 %98, label %99, label %108
99: ; preds = %96
%100 = call i64 (...) @worker()
%101 = load i32, i32* %2
%102 = sext i32 %101 to i64
%103 = add nsw i64 %102, %100
%104 = trunc i64 %103 to i32
store i32 %104, i32* %2
br label %105
105: ; preds = %99
%106 = load i32, i32* %9
%107 = add nsw i32 %106, 1
store i32 %107, i32* %9
br label %96
108: ; preds = %96
store i32 0, i32* %10
br label %109
109: ; preds = %118, %108
%110 = load i32, i32* %10
%111 = icmp slt i32 %110, 10
br i1 %111, label %112, label %121
112: ; preds = %109
%113 = call i64 (...) @worker()
%114 = load i32, i32* %2
%115 = sext i32 %114 to i64
%116 = add nsw i64 %115, %113
%117 = trunc i64 %116 to i32
store i32 %117, i32* %2
br label %118
118: ; preds = %112
%119 = load i32, i32* %10
%120 = add nsw i32 %119, 1
store i32 %120, i32* %10
br label %109
121: ; preds = %109
store i32 0, i32* %11
br label %122
122: ; preds = %131, %121
%123 = load i32, i32* %11
%124 = icmp slt i32 %123, 10
br i1 %124, label %125, label %134
125: ; preds = %122
%126 = call i64 (...) @worker()
%127 = load i32, i32* %2
%128 = sext i32 %127 to i64
%129 = add nsw i64 %128, %126
%130 = trunc i64 %129 to i32
store i32 %130, i32* %2
br label %131
131: ; preds = %125
%132 = load i32, i32* %11
%133 = add nsw i32 %132, 1
store i32 %133, i32* %11
br label %122
134: ; preds = %122
store i32 0, i32* %12
br label %135
135: ; preds = %144, %134
%136 = load i32, i32* %12
%137 = icmp slt i32 %136, 10
br i1 %137, label %138, label %147
138: ; preds = %135
%139 = call i64 (...) @vector()
%140 = load i32, i32* %2
%141 = sext i32 %140 to i64
%142 = add nsw i64 %141, %139
%143 = trunc i64 %142 to i32
store i32 %143, i32* %2
br label %144
144: ; preds = %138
%145 = load i32, i32* %12
%146 = add nsw i32 %145, 1
store i32 %146, i32* %12
br label %135
147: ; preds = %135
store i32 0, i32* %13
br label %148
148: ; preds = %157, %147
%149 = load i32, i32* %13
%150 = icmp slt i32 %149, 10
br i1 %150, label %151, label %160
151: ; preds = %148
%152 = call i64 (...) @vector()
%153 = load i32, i32* %2
%154 = sext i32 %153 to i64
%155 = add nsw i64 %154, %152
%156 = trunc i64 %155 to i32
store i32 %156, i32* %2
br label %157
157: ; preds = %151
%158 = load i32, i32* %13
%159 = add nsw i32 %158, 1
store i32 %159, i32* %13
br label %148
160: ; preds = %148
store i32 0, i32* %14
br label %161
161: ; preds = %170, %160
%162 = load i32, i32* %14
%163 = icmp slt i32 %162, 10
br i1 %163, label %164, label %173
164: ; preds = %161
%165 = call i64 (...) @vector()
%166 = load i32, i32* %2
%167 = sext i32 %166 to i64
%168 = add nsw i64 %167, %165
%169 = trunc i64 %168 to i32
store i32 %169, i32* %2
br label %170
170: ; preds = %164
%171 = load i32, i32* %14
%172 = add nsw i32 %171, 1
store i32 %172, i32* %14
br label %161
173: ; preds = %161
store i32 0, i32* %15
br label %174
174: ; preds = %183, %173
%175 = load i32, i32* %15
%176 = icmp slt i32 %175, 10
br i1 %176, label %177, label %186
177: ; preds = %174
%178 = call i64 (...) @seq()
%179 = load i32, i32* %2
%180 = sext i32 %179 to i64
%181 = add nsw i64 %180, %178
%182 = trunc i64 %181 to i32
store i32 %182, i32* %2
br label %183
183: ; preds = %177
%184 = load i32, i32* %15
%185 = add nsw i32 %184, 1
store i32 %185, i32* %15
br label %174
186: ; preds = %174
store i32 0, i32* %16
br label %187
187: ; preds = %196, %186
%188 = load i32, i32* %16
%189 = icmp slt i32 %188, 10
br i1 %189, label %190, label %199
190: ; preds = %187
%191 = call i64 (...) @seq()
%192 = load i32, i32* %2
%193 = sext i32 %192 to i64
%194 = add nsw i64 %193, %191
%195 = trunc i64 %194 to i32
store i32 %195, i32* %2
br label %196
196: ; preds = %190
%197 = load i32, i32* %16
%198 = add nsw i32 %197, 1
store i32 %198, i32* %16
br label %187
199: ; preds = %187
store i32 0, i32* %17
br label %200
200: ; preds = %209, %199
%201 = load i32, i32* %17
%202 = icmp slt i32 %201, 10
br i1 %202, label %203, label %212
203: ; preds = %200
%204 = call i64 (...) @seq()
%205 = load i32, i32* %2
%206 = sext i32 %205 to i64
%207 = add nsw i64 %206, %204
%208 = trunc i64 %207 to i32
store i32 %208, i32* %2
br label %209
209: ; preds = %203
%210 = load i32, i32* %17
%211 = add nsw i32 %210, 1
store i32 %211, i32* %17
br label %200
212: ; preds = %200
ret i32 0
}

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