int main() {
  int N = 100;
  int **a = (int **)malloc(N * sizeof(int *));
  for (int i = 0; i < N; i++) {
    a[i] = (int *)malloc(N * sizeof(int));
  }
  int **b = (int **)malloc(N * sizeof(int *));
  for (int i = 0; i < N; i++) {
    b[i] = (int *)malloc(N * sizeof(int));
  }
  int **c = (int **)malloc(N * sizeof(int *));
  for (int i = 0; i < N; i++) {
    c[i] = (int *)malloc(N * sizeof(int));
  }
  for (int i = 0; i < N; i++) {
    for (int j = 0; j < N; j++) {
      a[i][j] = 1;
      b[i][j] = 2;
    }
  }
  double startTime = omp_get_wtime();
  double endTime = 0;
  for (int i = 0; i < N; i++) {
    for (int j = 0; j < N; j++) {
      c[i][j] = a[i][j] + b[i][j];
    }
  }
  endTime = omp_get_wtime();
  printf("TIME %.16g\n", endTime - startTime);
  for (int i = 0; i < N; i++) {
    free(a[i]);
    free(b[i]);
    free(c[i]);
  }
  free(a);
  free(b);
  free(c);
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x60,%rsp
movl   $0x0,-0x4(%rbp)
movl   $0x64,-0x8(%rbp)
movslq -0x8(%rbp),%rdi
shl    $0x3,%rdi
call   1060 <malloc@plt>
mov    %rax,-0x10(%rbp)
movl   $0x0,-0x14(%rbp)
mov    -0x14(%rbp),%eax
cmp    -0x8(%rbp),%eax
jge    11a4 <main+0x64>
movslq -0x8(%rbp),%rdi
shl    $0x2,%rdi
call   1060 <malloc@plt>
mov    %rax,%rdx
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    %rdx,(%rax,%rcx,8)
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    116e <main+0x2e>
movslq -0x8(%rbp),%rdi
shl    $0x3,%rdi
call   1060 <malloc@plt>
mov    %rax,-0x20(%rbp)
movl   $0x0,-0x24(%rbp)
mov    -0x24(%rbp),%eax
cmp    -0x8(%rbp),%eax
jge    11f2 <main+0xb2>
movslq -0x8(%rbp),%rdi
shl    $0x2,%rdi
call   1060 <malloc@plt>
mov    %rax,%rdx
mov    -0x20(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    %rdx,(%rax,%rcx,8)
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    11bc <main+0x7c>
movslq -0x8(%rbp),%rdi
shl    $0x3,%rdi
call   1060 <malloc@plt>
mov    %rax,-0x30(%rbp)
movl   $0x0,-0x34(%rbp)
mov    -0x34(%rbp),%eax
cmp    -0x8(%rbp),%eax
jge    1240 <main+0x100>
movslq -0x8(%rbp),%rdi
shl    $0x2,%rdi
call   1060 <malloc@plt>
mov    %rax,%rdx
mov    -0x30(%rbp),%rax
movslq -0x34(%rbp),%rcx
mov    %rdx,(%rax,%rcx,8)
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    120a <main+0xca>
movl   $0x0,-0x38(%rbp)
mov    -0x38(%rbp),%eax
cmp    -0x8(%rbp),%eax
jge    12b5 <main+0x175>
movl   $0x0,-0x3c(%rbp)
mov    -0x3c(%rbp),%eax
cmp    -0x8(%rbp),%eax
jge    12a2 <main+0x162>
mov    -0x10(%rbp),%rax
movslq -0x38(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x3c(%rbp),%rcx
movl   $0x1,(%rax,%rcx,4)
mov    -0x20(%rbp),%rax
movslq -0x38(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x3c(%rbp),%rcx
movl   $0x2,(%rax,%rcx,4)
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3c(%rbp)
jmp    125a <main+0x11a>
jmp    12a7 <main+0x167>
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    1247 <main+0x107>
mov    $0x0,%al
call   1040 <omp_get_wtime@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x48(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x50(%rbp)
movl   $0x0,-0x54(%rbp)
mov    -0x54(%rbp),%eax
cmp    -0x8(%rbp),%eax
jge    134d <main+0x20d>
movl   $0x0,-0x58(%rbp)
mov    -0x58(%rbp),%eax
cmp    -0x8(%rbp),%eax
jge    133a <main+0x1fa>
mov    -0x10(%rbp),%rax
movslq -0x54(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x58(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
mov    -0x20(%rbp),%rax
movslq -0x54(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x58(%rbp),%rcx
add    (%rax,%rcx,4),%edx
mov    -0x30(%rbp),%rax
movslq -0x54(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x58(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x58(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x58(%rbp)
jmp    12e7 <main+0x1a7>
jmp    133f <main+0x1ff>
mov    -0x54(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x54(%rbp)
jmp    12d4 <main+0x194>
mov    $0x0,%al
call   1040 <omp_get_wtime@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x50(%rbp),%xmm0
subsd  -0x48(%rbp),%xmm0
lea    0xc92(%rip),%rdi
mov    $0x1,%al
call   1050 <printf@plt>
movl   $0x0,-0x5c(%rbp)
mov    -0x5c(%rbp),%eax
cmp    -0x8(%rbp),%eax
jge    13c9 <main+0x289>
mov    -0x10(%rbp),%rax
movslq -0x5c(%rbp),%rcx
mov    (%rax,%rcx,8),%rdi
call   1030 <free@plt>
mov    -0x20(%rbp),%rax
movslq -0x5c(%rbp),%rcx
mov    (%rax,%rcx,8),%rdi
call   1030 <free@plt>
mov    -0x30(%rbp),%rax
movslq -0x5c(%rbp),%rcx
mov    (%rax,%rcx,8),%rdi
call   1030 <free@plt>
mov    -0x5c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x5c(%rbp)
jmp    137c <main+0x23c>
mov    -0x10(%rbp),%rdi
call   1030 <free@plt>
mov    -0x20(%rbp),%rdi
call   1030 <free@plt>
mov    -0x30(%rbp),%rdi
call   1030 <free@plt>
xor    %eax,%eax
add    $0x60,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x10,%rsp
mov    $0x320,%edi
call   1060 <malloc@plt>
mov    %rax,%r14
xor    %ebx,%ebx
nopl   0x0(%rax)
mov    $0x190,%edi
call   1060 <malloc@plt>
mov    %rax,(%r14,%rbx,8)
add    $0x1,%rbx
cmp    $0x64,%rbx
jne    1160 <main+0x20>
mov    $0x320,%edi
call   1060 <malloc@plt>
mov    %rax,%r12
xor    %ebx,%ebx
nopw   0x0(%rax,%rax,1)
mov    $0x190,%edi
call   1060 <malloc@plt>
mov    %rax,(%r12,%rbx,8)
add    $0x1,%rbx
cmp    $0x64,%rbx
jne    1190 <main+0x50>
mov    $0x320,%edi
call   1060 <malloc@plt>
mov    %rax,%r15
xor    %ebx,%ebx
nopw   0x0(%rax,%rax,1)
mov    $0x190,%edi
call   1060 <malloc@plt>
mov    %rax,(%r15,%rbx,8)
add    $0x1,%rbx
cmp    $0x64,%rbx
jne    11c0 <main+0x80>
xor    %eax,%eax
movdqa 0xe1e(%rip),%xmm0
movdqa 0xe26(%rip),%xmm1
jmp    135c <main+0x21c>
nop
movdqu %xmm0,(%rcx)
movdqu %xmm1,(%rdx)
movdqu %xmm0,0x10(%rcx)
movdqu %xmm1,0x10(%rdx)
movdqu %xmm0,0x20(%rcx)
movdqu %xmm1,0x20(%rdx)
movdqu %xmm0,0x30(%rcx)
movdqu %xmm1,0x30(%rdx)
movdqu %xmm0,0x40(%rcx)
movdqu %xmm1,0x40(%rdx)
movdqu %xmm0,0x50(%rcx)
movdqu %xmm1,0x50(%rdx)
movdqu %xmm0,0x60(%rcx)
movdqu %xmm1,0x60(%rdx)
movdqu %xmm0,0x70(%rcx)
movdqu %xmm1,0x70(%rdx)
movdqu %xmm0,0x80(%rcx)
movdqu %xmm1,0x80(%rdx)
movdqu %xmm0,0x90(%rcx)
movdqu %xmm1,0x90(%rdx)
movdqu %xmm0,0xa0(%rcx)
movdqu %xmm1,0xa0(%rdx)
movdqu %xmm0,0xb0(%rcx)
movdqu %xmm1,0xb0(%rdx)
movdqu %xmm0,0xc0(%rcx)
movdqu %xmm1,0xc0(%rdx)
movdqu %xmm0,0xd0(%rcx)
movdqu %xmm1,0xd0(%rdx)
movdqu %xmm0,0xe0(%rcx)
movdqu %xmm1,0xe0(%rdx)
movdqu %xmm0,0xf0(%rcx)
movdqu %xmm1,0xf0(%rdx)
movdqu %xmm0,0x100(%rcx)
movdqu %xmm1,0x100(%rdx)
movdqu %xmm0,0x110(%rcx)
movdqu %xmm1,0x110(%rdx)
movdqu %xmm0,0x120(%rcx)
movdqu %xmm1,0x120(%rdx)
movdqu %xmm0,0x130(%rcx)
movdqu %xmm1,0x130(%rdx)
movdqu %xmm0,0x140(%rcx)
movdqu %xmm1,0x140(%rdx)
movdqu %xmm0,0x150(%rcx)
movdqu %xmm1,0x150(%rdx)
movdqu %xmm0,0x160(%rcx)
movdqu %xmm1,0x160(%rdx)
movdqu %xmm0,0x170(%rcx)
movdqu %xmm1,0x170(%rdx)
movdqu %xmm0,0x180(%rcx)
movdqu %xmm1,0x180(%rdx)
add    $0x1,%rax
cmp    $0x64,%rax
je     13ed <main+0x2ad>
mov    (%r14,%rax,8),%rcx
mov    (%r12,%rax,8),%rdx
lea    0x190(%rdx),%rsi
cmp    %rsi,%rcx
jae    11f0 <main+0xb0>
lea    0x190(%rcx),%rsi
cmp    %rsi,%rdx
jae    11f0 <main+0xb0>
mov    $0x4,%esi
nopl   0x0(%rax)
movl   $0x1,-0x10(%rcx,%rsi,4)
movl   $0x2,-0x10(%rdx,%rsi,4)
movl   $0x1,-0xc(%rcx,%rsi,4)
movl   $0x2,-0xc(%rdx,%rsi,4)
movl   $0x1,-0x8(%rcx,%rsi,4)
movl   $0x2,-0x8(%rdx,%rsi,4)
movl   $0x1,-0x4(%rcx,%rsi,4)
movl   $0x2,-0x4(%rdx,%rsi,4)
movl   $0x1,(%rcx,%rsi,4)
movl   $0x2,(%rdx,%rsi,4)
add    $0x5,%rsi
cmp    $0x68,%rsi
jne    1390 <main+0x250>
jmp    134e <main+0x20e>
xor    %r13d,%r13d
xor    %eax,%eax
call   1040 <omp_get_wtime@plt>
jmp    167f <main+0x53f>
nopl   0x0(%rax)
movdqu (%rdx),%xmm0
movdqu (%rsi),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,(%rcx)
movdqu 0x10(%rdx),%xmm0
movdqu 0x10(%rsi),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x10(%rcx)
movdqu 0x20(%rdx),%xmm0
movdqu 0x20(%rsi),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x20(%rcx)
movdqu 0x30(%rdx),%xmm0
movdqu 0x30(%rsi),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x30(%rcx)
movdqu 0x40(%rdx),%xmm0
movdqu 0x40(%rsi),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x40(%rcx)
movdqu 0x50(%rdx),%xmm0
movdqu 0x50(%rsi),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x50(%rcx)
movdqu 0x60(%rdx),%xmm0
movdqu 0x60(%rsi),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x60(%rcx)
movdqu 0x70(%rdx),%xmm0
movdqu 0x70(%rsi),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x70(%rcx)
movdqu 0x80(%rdx),%xmm0
movdqu 0x80(%rsi),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x80(%rcx)
movdqu 0x90(%rdx),%xmm0
movdqu 0x90(%rsi),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x90(%rcx)
movdqu 0xa0(%rdx),%xmm0
movdqu 0xa0(%rsi),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0xa0(%rcx)
movdqu 0xb0(%rdx),%xmm0
movdqu 0xb0(%rsi),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0xb0(%rcx)
movdqu 0xc0(%rdx),%xmm0
movdqu 0xc0(%rsi),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0xc0(%rcx)
movdqu 0xd0(%rdx),%xmm0
movdqu 0xd0(%rsi),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0xd0(%rcx)
movdqu 0xe0(%rdx),%xmm0
movdqu 0xe0(%rsi),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0xe0(%rcx)
movdqu 0xf0(%rdx),%xmm0
movdqu 0xf0(%rsi),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0xf0(%rcx)
movdqu 0x100(%rdx),%xmm0
movdqu 0x100(%rsi),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x100(%rcx)
movdqu 0x110(%rdx),%xmm0
movdqu 0x110(%rsi),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x110(%rcx)
movdqu 0x120(%rdx),%xmm0
movdqu 0x120(%rsi),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x120(%rcx)
movdqu 0x130(%rdx),%xmm0
movdqu 0x130(%rsi),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x130(%rcx)
movdqu 0x140(%rdx),%xmm0
movdqu 0x140(%rsi),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x140(%rcx)
movdqu 0x150(%rdx),%xmm0
movdqu 0x150(%rsi),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x150(%rcx)
movdqu 0x160(%rdx),%xmm0
movdqu 0x160(%rsi),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x160(%rcx)
movdqu 0x170(%rdx),%xmm0
movdqu 0x170(%rsi),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x170(%rcx)
movdqu 0x180(%rdx),%xmm0
movdqu 0x180(%rsi),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x180(%rcx)
add    $0x1,%r13
cmp    $0x64,%r13
je     170c <main+0x5cc>
mov    (%r14,%r13,8),%rdx
mov    (%r12,%r13,8),%rsi
mov    (%r15,%r13,8),%rcx
lea    0x190(%rcx),%rdi
lea    0x190(%rdx),%rbx
lea    0x190(%rsi),%r8
cmp    %rbx,%rcx
setb   %r9b
cmp    %rdi,%rdx
setb   %r10b
cmp    %r8,%rcx
setb   %bl
cmp    %rdi,%rsi
setb   %dil
test   %r10b,%r9b
jne    16c9 <main+0x589>
and    %dil,%bl
je     1400 <main+0x2c0>
mov    $0x3,%edi
xchg   %ax,%ax
mov    -0xc(%rsi,%rdi,4),%ebx
add    -0xc(%rdx,%rdi,4),%ebx
mov    %ebx,-0xc(%rcx,%rdi,4)
mov    -0x8(%rsi,%rdi,4),%ebx
add    -0x8(%rdx,%rdi,4),%ebx
mov    %ebx,-0x8(%rcx,%rdi,4)
mov    -0x4(%rsi,%rdi,4),%ebx
add    -0x4(%rdx,%rdi,4),%ebx
mov    %ebx,-0x4(%rcx,%rdi,4)
mov    (%rsi,%rdi,4),%ebx
add    (%rdx,%rdi,4),%ebx
mov    %ebx,(%rcx,%rdi,4)
add    $0x4,%rdi
cmp    $0x67,%rdi
jne    16d0 <main+0x590>
jmp    1671 <main+0x531>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x8(%rsp)
xor    %ebx,%ebx
xor    %eax,%eax
call   1040 <omp_get_wtime@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
subsd  0x8(%rsp),%xmm0
lea    0x8ea(%rip),%rdi
mov    $0x1,%al
call   1050 <printf@plt>
nopl   (%rax)
mov    (%r14,%rbx,8),%rdi
call   1030 <free@plt>
mov    (%r12,%rbx,8),%rdi
call   1030 <free@plt>
mov    (%r15,%rbx,8),%rdi
call   1030 <free@plt>
add    $0x1,%rbx
cmp    $0x64,%rbx
jne    1740 <main+0x600>
mov    %r14,%rdi
call   1030 <free@plt>
mov    %r12,%rdi
call   1030 <free@plt>
mov    %r15,%rdi
call   1030 <free@plt>
xor    %eax,%eax
add    $0x10,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
ret

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

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