int main(int argc, char **argv) {
  int i, j;
  int n = 10;
  int ***X;
  X = (int ***)malloc(n * sizeof(int **));
  for (i = 0; i < n; i++) {
    X[i] = (int **)malloc(n * sizeof(int *));
    for (j = 0; j < n; j++) {
      X[i][j] = (int *)malloc(n * sizeof(int));
    }
  }
  int k;
  for (i = 0; i < n; i++)
    for (j = 0; j < n; j++)
      for (k = 0; k < n; k++)
        X[i][j][k] = i;
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      free(X[i][j]);
    }
    free(X[i]);
  }
  free(X);
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
movl   $0x0,-0x4(%rbp)
mov    %edi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
movl   $0xa,-0x1c(%rbp)
movslq -0x1c(%rbp),%rdi
shl    $0x3,%rdi
call   1040 <malloc@plt>
mov    %rax,-0x28(%rbp)
movl   $0x0,-0x14(%rbp)
mov    -0x14(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jge    11d5 <main+0xb5>
movslq -0x1c(%rbp),%rdi
shl    $0x3,%rdi
call   1040 <malloc@plt>
mov    %rax,%rdx
mov    -0x28(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    %rdx,(%rax,%rcx,8)
movl   $0x0,-0x18(%rbp)
mov    -0x18(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jge    11c2 <main+0xa2>
movslq -0x1c(%rbp),%rdi
shl    $0x2,%rdi
call   1040 <malloc@plt>
mov    %rax,%rdx
mov    -0x28(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x18(%rbp),%rcx
mov    %rdx,(%rax,%rcx,8)
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    1184 <main+0x64>
jmp    11c7 <main+0xa7>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    1155 <main+0x35>
movl   $0x0,-0x14(%rbp)
mov    -0x14(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jge    1260 <main+0x140>
movl   $0x0,-0x18(%rbp)
mov    -0x18(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jge    124d <main+0x12d>
movl   $0x0,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jge    123a <main+0x11a>
mov    -0x14(%rbp),%edx
mov    -0x28(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x18(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x2c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    1202 <main+0xe2>
jmp    123f <main+0x11f>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    11ef <main+0xcf>
jmp    1252 <main+0x132>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    11dc <main+0xbc>
movl   $0x0,-0x14(%rbp)
mov    -0x14(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jge    12cc <main+0x1ac>
movl   $0x0,-0x18(%rbp)
mov    -0x18(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jge    12ad <main+0x18d>
mov    -0x28(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x18(%rbp),%rcx
mov    (%rax,%rcx,8),%rdi
call   1030 <free@plt>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    127a <main+0x15a>
mov    -0x28(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rdi
call   1030 <free@plt>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    1267 <main+0x147>
mov    -0x28(%rbp),%rdi
call   1030 <free@plt>
xor    %eax,%eax
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %r15
push   %r14
push   %rbx
mov    $0x50,%edi
call   1040 <malloc@plt>
mov    %rax,%r14
xor    %r15d,%r15d
cs nopw 0x0(%rax,%rax,1)
nop
mov    $0x50,%edi
call   1040 <malloc@plt>
mov    %rax,%rbx
mov    %rax,(%r14,%r15,8)
mov    $0x28,%edi
call   1040 <malloc@plt>
mov    %rax,(%rbx)
mov    $0x28,%edi
call   1040 <malloc@plt>
mov    %rax,0x8(%rbx)
mov    $0x28,%edi
call   1040 <malloc@plt>
mov    %rax,0x10(%rbx)
mov    $0x28,%edi
call   1040 <malloc@plt>
mov    %rax,0x18(%rbx)
mov    $0x28,%edi
call   1040 <malloc@plt>
mov    %rax,0x20(%rbx)
mov    $0x28,%edi
call   1040 <malloc@plt>
mov    %rax,0x28(%rbx)
mov    $0x28,%edi
call   1040 <malloc@plt>
mov    %rax,0x30(%rbx)
mov    $0x28,%edi
call   1040 <malloc@plt>
mov    %rax,0x38(%rbx)
mov    $0x28,%edi
call   1040 <malloc@plt>
mov    %rax,0x40(%rbx)
mov    $0x28,%edi
call   1040 <malloc@plt>
mov    %rax,0x48(%rbx)
add    $0x1,%r15
cmp    $0xa,%r15
jne    1140 <main+0x20>
xor    %eax,%eax
nopl   0x0(%rax)
mov    (%r14,%rax,8),%rcx
mov    (%rcx),%rdx
mov    %eax,(%rdx)
mov    %eax,0x4(%rdx)
mov    %eax,0x8(%rdx)
mov    %eax,0xc(%rdx)
mov    %eax,0x10(%rdx)
mov    %eax,0x14(%rdx)
mov    %eax,0x18(%rdx)
mov    %eax,0x1c(%rdx)
mov    %eax,0x20(%rdx)
mov    %eax,0x24(%rdx)
mov    0x8(%rcx),%rdx
mov    %eax,(%rdx)
mov    %eax,0x4(%rdx)
mov    %eax,0x8(%rdx)
mov    %eax,0xc(%rdx)
mov    %eax,0x10(%rdx)
mov    %eax,0x14(%rdx)
mov    %eax,0x18(%rdx)
mov    %eax,0x1c(%rdx)
mov    %eax,0x20(%rdx)
mov    %eax,0x24(%rdx)
mov    0x10(%rcx),%rdx
mov    %eax,(%rdx)
mov    %eax,0x4(%rdx)
mov    %eax,0x8(%rdx)
mov    %eax,0xc(%rdx)
mov    %eax,0x10(%rdx)
mov    %eax,0x14(%rdx)
mov    %eax,0x18(%rdx)
mov    %eax,0x1c(%rdx)
mov    %eax,0x20(%rdx)
mov    %eax,0x24(%rdx)
mov    0x18(%rcx),%rdx
mov    %eax,(%rdx)
mov    %eax,0x4(%rdx)
mov    %eax,0x8(%rdx)
mov    %eax,0xc(%rdx)
mov    %eax,0x10(%rdx)
mov    %eax,0x14(%rdx)
mov    %eax,0x18(%rdx)
mov    %eax,0x1c(%rdx)
mov    %eax,0x20(%rdx)
mov    %eax,0x24(%rdx)
mov    0x20(%rcx),%rdx
mov    %eax,(%rdx)
mov    %eax,0x4(%rdx)
mov    %eax,0x8(%rdx)
mov    %eax,0xc(%rdx)
mov    %eax,0x10(%rdx)
mov    %eax,0x14(%rdx)
mov    %eax,0x18(%rdx)
mov    %eax,0x1c(%rdx)
mov    %eax,0x20(%rdx)
mov    %eax,0x24(%rdx)
mov    0x28(%rcx),%rdx
mov    %eax,(%rdx)
mov    %eax,0x4(%rdx)
mov    %eax,0x8(%rdx)
mov    %eax,0xc(%rdx)
mov    %eax,0x10(%rdx)
mov    %eax,0x14(%rdx)
mov    %eax,0x18(%rdx)
mov    %eax,0x1c(%rdx)
mov    %eax,0x20(%rdx)
mov    %eax,0x24(%rdx)
mov    0x30(%rcx),%rdx
mov    %eax,(%rdx)
mov    %eax,0x4(%rdx)
mov    %eax,0x8(%rdx)
mov    %eax,0xc(%rdx)
mov    %eax,0x10(%rdx)
mov    %eax,0x14(%rdx)
mov    %eax,0x18(%rdx)
mov    %eax,0x1c(%rdx)
mov    %eax,0x20(%rdx)
mov    %eax,0x24(%rdx)
mov    0x38(%rcx),%rdx
mov    %eax,(%rdx)
mov    %eax,0x4(%rdx)
mov    %eax,0x8(%rdx)
mov    %eax,0xc(%rdx)
mov    %eax,0x10(%rdx)
mov    %eax,0x14(%rdx)
mov    %eax,0x18(%rdx)
mov    %eax,0x1c(%rdx)
mov    %eax,0x20(%rdx)
mov    %eax,0x24(%rdx)
mov    0x40(%rcx),%rdx
mov    %eax,(%rdx)
mov    %eax,0x4(%rdx)
mov    %eax,0x8(%rdx)
mov    %eax,0xc(%rdx)
mov    %eax,0x10(%rdx)
mov    %eax,0x14(%rdx)
mov    %eax,0x18(%rdx)
mov    %eax,0x1c(%rdx)
mov    %eax,0x20(%rdx)
mov    %eax,0x24(%rdx)
mov    0x48(%rcx),%rcx
mov    %eax,(%rcx)
mov    %eax,0x4(%rcx)
mov    %eax,0x8(%rcx)
mov    %eax,0xc(%rcx)
mov    %eax,0x10(%rcx)
mov    %eax,0x14(%rcx)
mov    %eax,0x18(%rcx)
mov    %eax,0x1c(%rcx)
mov    %eax,0x20(%rcx)
mov    %eax,0x24(%rcx)
add    $0x1,%rax
cmp    $0xa,%rax
jne    11f0 <main+0xd0>
xor    %r15d,%r15d
xchg   %ax,%ax
mov    (%r14,%r15,8),%rbx
mov    (%rbx),%rdi
call   1030 <free@plt>
mov    0x8(%rbx),%rdi
call   1030 <free@plt>
mov    0x10(%rbx),%rdi
call   1030 <free@plt>
mov    0x18(%rbx),%rdi
call   1030 <free@plt>
mov    0x20(%rbx),%rdi
call   1030 <free@plt>
mov    0x28(%rbx),%rdi
call   1030 <free@plt>
mov    0x30(%rbx),%rdi
call   1030 <free@plt>
mov    0x38(%rbx),%rdi
call   1030 <free@plt>
mov    0x40(%rbx),%rdi
call   1030 <free@plt>
mov    0x48(%rbx),%rdi
call   1030 <free@plt>
mov    %rbx,%rdi
call   1030 <free@plt>
add    $0x1,%r15
cmp    $0xa,%r15
jne    1350 <main+0x230>
mov    %r14,%rdi
call   1030 <free@plt>
xor    %eax,%eax
pop    %rbx
pop    %r14
pop    %r15
ret

LLVM IR (-O0):
define i32 @main(i32 %0, i8** %1) {
%3 = alloca i32
%4 = alloca i32
%5 = alloca i8**
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32***
%10 = alloca i32
store i32 0, i32* %3
store i32 %0, i32* %4
store i8** %1, i8*** %5
store i32 10, i32* %8
%11 = load i32, i32* %8
%12 = sext i32 %11 to i64
%13 = mul i64 %12, 8
%14 = call i8* @malloc(i64 %13)
%15 = bitcast i8* %14 to i32***
store i32*** %15, i32**** %9
store i32 0, i32* %6
br label %16
16: ; preds = %52, %2
%17 = load i32, i32* %6
%18 = load i32, i32* %8
%19 = icmp slt i32 %17, %18
br i1 %19, label %20, label %55
20: ; preds = %16
%21 = load i32, i32* %8
%22 = sext i32 %21 to i64
%23 = mul i64 %22, 8
%24 = call i8* @malloc(i64 %23)
%25 = bitcast i8* %24 to i32**
%26 = load i32***, i32**** %9
%27 = load i32, i32* %6
%28 = sext i32 %27 to i64
%29 = getelementptr inbounds i32**, i32*** %26, i64 %28
store i32** %25, i32*** %29
store i32 0, i32* %7
br label %30
30: ; preds = %48, %20
%31 = load i32, i32* %7
%32 = load i32, i32* %8
%33 = icmp slt i32 %31, %32
br i1 %33, label %34, label %51
34: ; preds = %30
%35 = load i32, i32* %8
%36 = sext i32 %35 to i64
%37 = mul i64 %36, 4
%38 = call i8* @malloc(i64 %37)
%39 = bitcast i8* %38 to i32*
%40 = load i32***, i32**** %9
%41 = load i32, i32* %6
%42 = sext i32 %41 to i64
%43 = getelementptr inbounds i32**, i32*** %40, i64 %42
%44 = load i32**, i32*** %43
%45 = load i32, i32* %7
%46 = sext i32 %45 to i64
%47 = getelementptr inbounds i32*, i32** %44, i64 %46
store i32* %39, i32** %47
br label %48
48: ; preds = %34
%49 = load i32, i32* %7
%50 = add nsw i32 %49, 1
store i32 %50, i32* %7
br label %30
51: ; preds = %30
br label %52
52: ; preds = %51
%53 = load i32, i32* %6
%54 = add nsw i32 %53, 1
store i32 %54, i32* %6
br label %16
55: ; preds = %16
store i32 0, i32* %6
br label %56
56: ; preds = %92, %55
%57 = load i32, i32* %6
%58 = load i32, i32* %8
%59 = icmp slt i32 %57, %58
br i1 %59, label %60, label %95
60: ; preds = %56
store i32 0, i32* %7
br label %61
61: ; preds = %88, %60
%62 = load i32, i32* %7
%63 = load i32, i32* %8
%64 = icmp slt i32 %62, %63
br i1 %64, label %65, label %91
65: ; preds = %61
store i32 0, i32* %10
br label %66
66: ; preds = %84, %65
%67 = load i32, i32* %10
%68 = load i32, i32* %8
%69 = icmp slt i32 %67, %68
br i1 %69, label %70, label %87
70: ; preds = %66
%71 = load i32, i32* %6
%72 = load i32***, i32**** %9
%73 = load i32, i32* %6
%74 = sext i32 %73 to i64
%75 = getelementptr inbounds i32**, i32*** %72, i64 %74
%76 = load i32**, i32*** %75
%77 = load i32, i32* %7
%78 = sext i32 %77 to i64
%79 = getelementptr inbounds i32*, i32** %76, i64 %78
%80 = load i32*, i32** %79
%81 = load i32, i32* %10
%82 = sext i32 %81 to i64
%83 = getelementptr inbounds i32, i32* %80, i64 %82
store i32 %71, i32* %83
br label %84
84: ; preds = %70
%85 = load i32, i32* %10
%86 = add nsw i32 %85, 1
store i32 %86, i32* %10
br label %66
87: ; preds = %66
br label %88
88: ; preds = %87
%89 = load i32, i32* %7
%90 = add nsw i32 %89, 1
store i32 %90, i32* %7
br label %61
91: ; preds = %61
br label %92
92: ; preds = %91
%93 = load i32, i32* %6
%94 = add nsw i32 %93, 1
store i32 %94, i32* %6
br label %56
95: ; preds = %56
store i32 0, i32* %6
br label %96
96: ; preds = %126, %95
%97 = load i32, i32* %6
%98 = load i32, i32* %8
%99 = icmp slt i32 %97, %98
br i1 %99, label %100, label %129
100: ; preds = %96
store i32 0, i32* %7
br label %101
101: ; preds = %116, %100
%102 = load i32, i32* %7
%103 = load i32, i32* %8
%104 = icmp slt i32 %102, %103
br i1 %104, label %105, label %119
105: ; preds = %101
%106 = load i32***, i32**** %9
%107 = load i32, i32* %6
%108 = sext i32 %107 to i64
%109 = getelementptr inbounds i32**, i32*** %106, i64 %108
%110 = load i32**, i32*** %109
%111 = load i32, i32* %7
%112 = sext i32 %111 to i64
%113 = getelementptr inbounds i32*, i32** %110, i64 %112
%114 = load i32*, i32** %113
%115 = bitcast i32* %114 to i8*
br label %116
116: ; preds = %105
%117 = load i32, i32* %7
%118 = add nsw i32 %117, 1
store i32 %118, i32* %7
br label %101
119: ; preds = %101
%120 = load i32***, i32**** %9
%121 = load i32, i32* %6
%122 = sext i32 %121 to i64
%123 = getelementptr inbounds i32**, i32*** %120, i64 %122
%124 = load i32**, i32*** %123
%125 = bitcast i32** %124 to i8*
br label %126
126: ; preds = %119
%127 = load i32, i32* %6
%128 = add nsw i32 %127, 1
store i32 %128, i32* %6
br label %96
129: ; preds = %96
%130 = load i32***, i32**** %9
%131 = bitcast i32*** %130 to i8*
ret i32 0
}

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