#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__ max(int, int);
int /*<<< orphan*/ printf(char *, int);
int main() {
  int row1[1] = {75};
  int row2[2] = {95, 64};
  int row3[3] = {17, 47, 82};
  int row4[4] = {18, 35, 87, 10};
  int row5[5] = {20, 4, 82, 47, 65};
  int row6[6] = {19, 1, 23, 75, 3, 34};
  int row7[7] = {88, 2, 77, 73, 7, 63, 67};
  int row8[8] = {99, 65, 4, 28, 6, 16, 70, 92};
  int row9[9] = {41, 41, 26, 56, 83, 40, 80, 70, 33};
  int row10[10] = {41, 48, 72, 33, 47, 32, 37, 16, 94, 29};
  int row11[11] = {53, 71, 44, 65, 25, 43, 91, 52, 97, 51, 14};
  int row12[12] = {70, 11, 33, 28, 77, 73, 17, 78, 39, 68, 17, 57};
  int row13[13] = {91, 71, 52, 38, 17, 14, 91, 43, 58, 50, 27, 29, 48};
  int row14[14] = {63, 66, 4, 68, 89, 53, 67, 30, 73, 16, 69, 87, 40, 31};
  int row15[15] = {4, 62, 98, 27, 23, 9, 70, 98, 73, 93, 38, 53, 60, 4, 23};
  int *data[15] = {row1, row2,  row3,  row4,  row5,  row6,  row7, row8,
                   row9, row10, row11, row12, row13, row14, row15};
  int i;
  for (i = 15; i > 0; --i) {
    int j;
    for (j = 0; j < (i - 1); ++j)
      data[i - 2][j] += max(data[i - 1][j], data[i - 1][j + 1]);
  }
  printf("%d\n", data[0][0]);
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x2c0,%rsp
movl   $0x0,-0x4(%rbp)
mov    0xeb8(%rip),%eax
mov    %eax,-0x8(%rbp)
mov    0xeb2(%rip),%rax
mov    %rax,-0x10(%rbp)
mov    0xeb3(%rip),%rax
mov    %rax,-0x1c(%rbp)
mov    0xeb1(%rip),%eax
mov    %eax,-0x14(%rbp)
mov    0x108f(%rip),%rax
mov    %rax,-0x30(%rbp)
mov    0x108c(%rip),%rax
mov    %rax,-0x28(%rbp)
mov    0xe99(%rip),%rax
mov    %rax,-0x50(%rbp)
mov    0xe96(%rip),%rax
mov    %rax,-0x48(%rbp)
mov    0xe94(%rip),%eax
mov    %eax,-0x40(%rbp)
mov    0xe9a(%rip),%rax
mov    %rax,-0x70(%rbp)
mov    0xe97(%rip),%rax
mov    %rax,-0x68(%rbp)
mov    0xe94(%rip),%rax
mov    %rax,-0x60(%rbp)
mov    0xe99(%rip),%rax
mov    %rax,-0x90(%rbp)
mov    0xe93(%rip),%rax
mov    %rax,-0x88(%rbp)
mov    0xe8d(%rip),%rax
mov    %rax,-0x80(%rbp)
mov    0xe8b(%rip),%eax
mov    %eax,-0x78(%rbp)
mov    0x1019(%rip),%rax
mov    %rax,-0xb0(%rbp)
mov    0x1013(%rip),%rax
mov    %rax,-0xa8(%rbp)
mov    0x100d(%rip),%rax
mov    %rax,-0xa0(%rbp)
mov    0x1007(%rip),%rax
mov    %rax,-0x98(%rbp)
lea    -0xe0(%rbp),%rdi
lea    0xe4a(%rip),%rsi
mov    $0x24,%edx
call   1050 <memcpy@plt>
lea    -0x110(%rbp),%rdi
lea    0xe62(%rip),%rsi
mov    $0x28,%edx
call   1050 <memcpy@plt>
lea    -0x140(%rbp),%rdi
lea    0xe7a(%rip),%rsi
mov    $0x2c,%edx
call   1050 <memcpy@plt>
lea    -0x170(%rbp),%rdi
lea    0xe92(%rip),%rsi
mov    $0x30,%edx
call   1050 <memcpy@plt>
lea    -0x1b0(%rbp),%rdi
lea    0xeaa(%rip),%rsi
mov    $0x34,%edx
call   1050 <memcpy@plt>
lea    -0x1f0(%rbp),%rdi
lea    0xed2(%rip),%rsi
mov    $0x38,%edx
call   1050 <memcpy@plt>
lea    -0x230(%rbp),%rdi
lea    0xefa(%rip),%rsi
mov    $0x3c,%edx
call   1050 <memcpy@plt>
lea    -0x8(%rbp),%rax
mov    %rax,-0x2b0(%rbp)
lea    -0x10(%rbp),%rax
mov    %rax,-0x2a8(%rbp)
lea    -0x1c(%rbp),%rax
mov    %rax,-0x2a0(%rbp)
lea    -0x30(%rbp),%rax
mov    %rax,-0x298(%rbp)
lea    -0x50(%rbp),%rax
mov    %rax,-0x290(%rbp)
lea    -0x70(%rbp),%rax
mov    %rax,-0x288(%rbp)
lea    -0x90(%rbp),%rax
mov    %rax,-0x280(%rbp)
lea    -0xb0(%rbp),%rax
mov    %rax,-0x278(%rbp)
lea    -0xe0(%rbp),%rax
mov    %rax,-0x270(%rbp)
lea    -0x110(%rbp),%rax
mov    %rax,-0x268(%rbp)
lea    -0x140(%rbp),%rax
mov    %rax,-0x260(%rbp)
lea    -0x170(%rbp),%rax
mov    %rax,-0x258(%rbp)
lea    -0x1b0(%rbp),%rax
mov    %rax,-0x250(%rbp)
lea    -0x1f0(%rbp),%rax
mov    %rax,-0x248(%rbp)
lea    -0x230(%rbp),%rax
mov    %rax,-0x240(%rbp)
movl   $0xf,-0x2b4(%rbp)
cmpl   $0x0,-0x2b4(%rbp)
jle    1460 <main+0x330>
movl   $0x0,-0x2b8(%rbp)
mov    -0x2b8(%rbp),%eax
mov    -0x2b4(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jge    1447 <main+0x317>
mov    -0x2b4(%rbp),%eax
sub    $0x1,%eax
cltq
mov    -0x2b0(%rbp,%rax,8),%rax
ff
movslq -0x2b8(%rbp),%rcx
mov    (%rax,%rcx,4),%edi
mov    -0x2b4(%rbp),%eax
sub    $0x1,%eax
cltq
mov    -0x2b0(%rbp,%rax,8),%rax
ff
mov    -0x2b8(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%esi
call   1040 <max@plt>
mov    %rax,%rsi
mov    -0x2b4(%rbp),%eax
sub    $0x2,%eax
cltq
mov    -0x2b0(%rbp,%rax,8),%rax
ff
movslq -0x2b8(%rbp),%rcx
movslq (%rax,%rcx,4),%rdx
add    %rsi,%rdx
mov    %edx,(%rax,%rcx,4)
mov    -0x2b8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2b8(%rbp)
jmp    13b1 <main+0x281>
jmp    144c <main+0x31c>
mov    -0x2b4(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x2b4(%rbp)
jmp    139a <main+0x26a>
mov    -0x2b0(%rbp),%rax
mov    (%rax),%esi
lea    0xdc0(%rip),%rdi
call   1030 <printf@plt>
xor    %eax,%eax
add    $0x2c0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x2b8,%rsp
movl   $0x4b,0x4(%rsp)
movabs $0x400000005f,%rax
mov    %rax,0x18(%rsp)
mov    0xeba(%rip),%eax
mov    %eax,0x10(%rsp)
mov    0xea7(%rip),%rax
mov    %rax,0x8(%rsp)
movaps 0x108b(%rip),%xmm0
movaps %xmm0,0xe0(%rsp)
mov    0xead(%rip),%eax
mov    %eax,0x30(%rsp)
movaps 0xe92(%rip),%xmm0
movaps %xmm0,0x20(%rsp)
mov    0xeb6(%rip),%rax
mov    %rax,0xd0(%rsp)
movaps 0xe97(%rip),%xmm0
movaps %xmm0,0xc0(%rsp)
movups 0xeb4(%rip),%xmm0
movups %xmm0,0x12c(%rsp)
movaps 0xe99(%rip),%xmm0
movaps %xmm0,0x120(%rsp)
movaps 0x104a(%rip),%xmm0
movaps %xmm0,0x1c0(%rsp)
movaps 0x102b(%rip),%xmm0
movaps %xmm0,0x1b0(%rsp)
mov    0xead(%rip),%eax
mov    %eax,0x110(%rsp)
movaps 0xe8f(%rip),%xmm0
movaps %xmm0,0x100(%rsp)
movaps 0xe70(%rip),%xmm0
movaps %xmm0,0xf0(%rsp)
mov    0xeb1(%rip),%rax
mov    %rax,0x160(%rsp)
movaps 0xe92(%rip),%xmm0
movaps %xmm0,0x150(%rsp)
movaps 0xe73(%rip),%xmm0
movaps %xmm0,0x140(%rsp)
movups 0xeb0(%rip),%xmm0
movups %xmm0,0x1ec(%rsp)
movaps 0xe95(%rip),%xmm0
movaps %xmm0,0x1e0(%rsp)
movaps 0xe76(%rip),%xmm0
movaps %xmm0,0x1d0(%rsp)
movaps 0xeb7(%rip),%xmm0
movaps %xmm0,0x2a0(%rsp)
movaps 0xe98(%rip),%xmm0
movaps %xmm0,0x290(%rsp)
movaps 0xe79(%rip),%xmm0
movaps %xmm0,0x280(%rsp)
mov    0xecb(%rip),%eax
mov    %eax,0x1a0(%rsp)
movaps 0xead(%rip),%xmm0
movaps %xmm0,0x190(%rsp)
movaps 0xe8e(%rip),%xmm0
movaps %xmm0,0x180(%rsp)
movaps 0xe6f(%rip),%xmm0
movaps %xmm0,0x170(%rsp)
mov    0xed0(%rip),%rax
mov    %rax,0x230(%rsp)
movaps 0xeb1(%rip),%xmm0
movaps %xmm0,0x220(%rsp)
movaps 0xe92(%rip),%xmm0
movaps %xmm0,0x210(%rsp)
movaps 0xe73(%rip),%xmm0
movaps %xmm0,0x200(%rsp)
movups 0xed0(%rip),%xmm0
movups %xmm0,0x26c(%rsp)
movaps 0xeb5(%rip),%xmm0
movaps %xmm0,0x260(%rsp)
movaps 0xe96(%rip),%xmm0
movaps %xmm0,0x250(%rsp)
movaps 0xe77(%rip),%xmm0
movaps %xmm0,0x240(%rsp)
lea    0x4(%rsp),%rax
mov    %rax,0x40(%rsp)
lea    0x18(%rsp),%rax
mov    %rax,0x48(%rsp)
lea    0x8(%rsp),%rax
mov    %rax,0x50(%rsp)
lea    0xe0(%rsp),%rax
mov    %rax,0x58(%rsp)
lea    0x20(%rsp),%rax
mov    %rax,0x60(%rsp)
lea    0xc0(%rsp),%rax
mov    %rax,0x68(%rsp)
lea    0x120(%rsp),%rax
mov    %rax,0x70(%rsp)
lea    0x1b0(%rsp),%rax
mov    %rax,0x78(%rsp)
lea    0xf0(%rsp),%rax
mov    %rax,0x80(%rsp)
lea    0x140(%rsp),%rax
mov    %rax,0x88(%rsp)
lea    0x1d0(%rsp),%rax
mov    %rax,0x90(%rsp)
lea    0x280(%rsp),%rax
mov    %rax,0x98(%rsp)
lea    0x170(%rsp),%rax
mov    %rax,0xa0(%rsp)
lea    0x200(%rsp),%rax
mov    %rax,0xa8(%rsp)
lea    0x240(%rsp),%rax
mov    %rax,0xb0(%rsp)
mov    $0xe,%r14d
mov    $0xf,%r12d
nopl   0x0(%rax)
cmp    $0x2,%r12
jb     1470 <main+0x350>
lea    -0x1(%r12),%r15
mov    0x40(%rsp,%r15,8),%r13
xor    %ebx,%ebx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
lea    0x1(%rbx),%rbp
mov    0x0(%r13,%rbx,4),%edi
mov    0x4(%r13,%rbx,4),%esi
call   1040 <max@plt>
mov    0x30(%rsp,%r12,8),%rcx
add    %eax,(%rcx,%rbx,4)
mov    %rbp,%rbx
cmp    %rbp,%r14
jne    1440 <main+0x320>
add    $0xffffffffffffffff,%r14
cmp    $0x2,%r12
mov    %r15,%r12
jae    1420 <main+0x300>
mov    0x4(%rsp),%esi
lea    0xda5(%rip),%rdi
call   1030 <printf@plt>
xor    %eax,%eax
add    $0x2b8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@__const.main.row1 = [1 x i32] [i32 75]
@__const.main.row2 = [2 x i32] [i32 95, i32 64]
@__const.main.row3 = [3 x i32] [i32 17, i32 47, i32 82]
@__const.main.row4 = [4 x i32] [i32 18, i32 35, i32 87, i32 10]
@__const.main.row5 = [5 x i32] [i32 20, i32 4, i32 82, i32 47, i32 65]
@__const.main.row6 = [6 x i32] [i32 19, i32 1, i32 23, i32 75, i32 3, i32 34]
@__const.main.row7 = [7 x i32] [i32 88, i32 2, i32 77, i32 73, i32 7, i32 63, i32 67]
@__const.main.row8 = [8 x i32] [i32 99, i32 65, i32 4, i32 28, i32 6, i32 16, i32 70, i32 92]
@__const.main.row9 = [9 x i32] [i32 41, i32 41, i32 26, i32 56, i32 83, i32 40, i32 80, i32 70, i32 33]
@__const.main.row10 = [10 x i32] [i32 41, i32 48, i32 72, i32 33, i32 47, i32 32, i32 37, i32 16, i32 94, i32 29]
@__const.main.row11 = [11 x i32] [i32 53, i32 71, i32 44, i32 65, i32 25, i32 43, i32 91, i32 52, i32 97, i32 51, i32 14]
@__const.main.row12 = [12 x i32] [i32 70, i32 11, i32 33, i32 28, i32 77, i32 73, i32 17, i32 78, i32 39, i32 68, i32 17, i32 57]
@__const.main.row13 = [13 x i32] [i32 91, i32 71, i32 52, i32 38, i32 17, i32 14, i32 91, i32 43, i32 58, i32 50, i32 27, i32 29, i32 48]
@__const.main.row14 = [14 x i32] [i32 63, i32 66, i32 4, i32 68, i32 89, i32 53, i32 67, i32 30, i32 73, i32 16, i32 69, i32 87, i32 40, i32 31]
@__const.main.row15 = [15 x i32] [i32 4, i32 62, i32 98, i32 27, i32 23, i32 9, i32 70, i32 98, i32 73, i32 93, i32 38, i32 53, i32 60, i32 4, i32 23]
@.str = [4 x i8] c"%d\0A\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca [1 x i32]
%3 = alloca [2 x i32]
%4 = alloca [3 x i32]
%5 = alloca [4 x i32]
%6 = alloca [5 x i32]
%7 = alloca [6 x i32]
%8 = alloca [7 x i32]
%9 = alloca [8 x i32]
%10 = alloca [9 x i32]
%11 = alloca [10 x i32]
%12 = alloca [11 x i32]
%13 = alloca [12 x i32]
%14 = alloca [13 x i32]
%15 = alloca [14 x i32]
%16 = alloca [15 x i32]
%17 = alloca [15 x i32*]
%18 = alloca i32
%19 = alloca i32
store i32 0, i32* %1
%20 = bitcast [1 x i32]* %2 to i8*
%21 = bitcast [2 x i32]* %3 to i8*
%22 = bitcast [3 x i32]* %4 to i8*
%23 = bitcast [4 x i32]* %5 to i8*
%24 = bitcast [5 x i32]* %6 to i8*
%25 = bitcast [6 x i32]* %7 to i8*
%26 = bitcast [7 x i32]* %8 to i8*
%27 = bitcast [8 x i32]* %9 to i8*
%28 = bitcast [9 x i32]* %10 to i8*
%29 = bitcast [10 x i32]* %11 to i8*
%30 = bitcast [11 x i32]* %12 to i8*
%31 = bitcast [12 x i32]* %13 to i8*
%32 = bitcast [13 x i32]* %14 to i8*
%33 = bitcast [14 x i32]* %15 to i8*
%34 = bitcast [15 x i32]* %16 to i8*
%35 = getelementptr inbounds [15 x i32*], [15 x i32*]* %17, i64 0, i64 0
%36 = getelementptr inbounds [1 x i32], [1 x i32]* %2, i64 0, i64 0
store i32* %36, i32** %35
%37 = getelementptr inbounds i32*, i32** %35, i64 1
%38 = getelementptr inbounds [2 x i32], [2 x i32]* %3, i64 0, i64 0
store i32* %38, i32** %37
%39 = getelementptr inbounds i32*, i32** %37, i64 1
%40 = getelementptr inbounds [3 x i32], [3 x i32]* %4, i64 0, i64 0
store i32* %40, i32** %39
%41 = getelementptr inbounds i32*, i32** %39, i64 1
%42 = getelementptr inbounds [4 x i32], [4 x i32]* %5, i64 0, i64 0
store i32* %42, i32** %41
%43 = getelementptr inbounds i32*, i32** %41, i64 1
%44 = getelementptr inbounds [5 x i32], [5 x i32]* %6, i64 0, i64 0
store i32* %44, i32** %43
%45 = getelementptr inbounds i32*, i32** %43, i64 1
%46 = getelementptr inbounds [6 x i32], [6 x i32]* %7, i64 0, i64 0
store i32* %46, i32** %45
%47 = getelementptr inbounds i32*, i32** %45, i64 1
%48 = getelementptr inbounds [7 x i32], [7 x i32]* %8, i64 0, i64 0
store i32* %48, i32** %47
%49 = getelementptr inbounds i32*, i32** %47, i64 1
%50 = getelementptr inbounds [8 x i32], [8 x i32]* %9, i64 0, i64 0
store i32* %50, i32** %49
%51 = getelementptr inbounds i32*, i32** %49, i64 1
%52 = getelementptr inbounds [9 x i32], [9 x i32]* %10, i64 0, i64 0
store i32* %52, i32** %51
%53 = getelementptr inbounds i32*, i32** %51, i64 1
%54 = getelementptr inbounds [10 x i32], [10 x i32]* %11, i64 0, i64 0
store i32* %54, i32** %53
%55 = getelementptr inbounds i32*, i32** %53, i64 1
%56 = getelementptr inbounds [11 x i32], [11 x i32]* %12, i64 0, i64 0
store i32* %56, i32** %55
%57 = getelementptr inbounds i32*, i32** %55, i64 1
%58 = getelementptr inbounds [12 x i32], [12 x i32]* %13, i64 0, i64 0
store i32* %58, i32** %57
%59 = getelementptr inbounds i32*, i32** %57, i64 1
%60 = getelementptr inbounds [13 x i32], [13 x i32]* %14, i64 0, i64 0
store i32* %60, i32** %59
%61 = getelementptr inbounds i32*, i32** %59, i64 1
%62 = getelementptr inbounds [14 x i32], [14 x i32]* %15, i64 0, i64 0
store i32* %62, i32** %61
%63 = getelementptr inbounds i32*, i32** %61, i64 1
%64 = getelementptr inbounds [15 x i32], [15 x i32]* %16, i64 0, i64 0
store i32* %64, i32** %63
store i32 15, i32* %18
br label %65
65: ; preds = %111, %0
%66 = load i32, i32* %18
%67 = icmp sgt i32 %66, 0
br i1 %67, label %68, label %114
68: ; preds = %65
store i32 0, i32* %19
br label %69
69: ; preds = %107, %68
%70 = load i32, i32* %19
%71 = load i32, i32* %18
%72 = sub nsw i32 %71, 1
%73 = icmp slt i32 %70, %72
br i1 %73, label %74, label %110
74: ; preds = %69
%75 = load i32, i32* %18
%76 = sub nsw i32 %75, 1
%77 = sext i32 %76 to i64
%78 = getelementptr inbounds [15 x i32*], [15 x i32*]* %17, i64 0, i64 %77
%79 = load i32*, i32** %78
%80 = load i32, i32* %19
%81 = sext i32 %80 to i64
%82 = getelementptr inbounds i32, i32* %79, i64 %81
%83 = load i32, i32* %82
%84 = load i32, i32* %18
%85 = sub nsw i32 %84, 1
%86 = sext i32 %85 to i64
%87 = getelementptr inbounds [15 x i32*], [15 x i32*]* %17, i64 0, i64 %86
%88 = load i32*, i32** %87
%89 = load i32, i32* %19
%90 = add nsw i32 %89, 1
%91 = sext i32 %90 to i64
%92 = getelementptr inbounds i32, i32* %88, i64 %91
%93 = load i32, i32* %92
%94 = call i64 @max(i32 %83, i32 %93)
%95 = load i32, i32* %18
%96 = sub nsw i32 %95, 2
%97 = sext i32 %96 to i64
%98 = getelementptr inbounds [15 x i32*], [15 x i32*]* %17, i64 0, i64 %97
%99 = load i32*, i32** %98
%100 = load i32, i32* %19
%101 = sext i32 %100 to i64
%102 = getelementptr inbounds i32, i32* %99, i64 %101
%103 = load i32, i32* %102
%104 = sext i32 %103 to i64
%105 = add nsw i64 %104, %94
%106 = trunc i64 %105 to i32
store i32 %106, i32* %102
br label %107
107: ; preds = %74
%108 = load i32, i32* %19
%109 = add nsw i32 %108, 1
store i32 %109, i32* %19
br label %69
110: ; preds = %69
br label %111
111: ; preds = %110
%112 = load i32, i32* %18
%113 = add nsw i32 %112, -1
store i32 %113, i32* %18
br label %65
114: ; preds = %65
%115 = getelementptr inbounds [15 x i32*], [15 x i32*]* %17, i64 0, i64 0
%116 = load i32*, i32** %115
%117 = getelementptr inbounds i32, i32* %116, i64 0
%118 = load i32, i32* %117
%119 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %118)
ret i32 0
}

LLVM IR (-O2):
@__const.main.row3 = [3 x i32] [i32 17, i32 47, i32 82]
@__const.main.row4 = [4 x i32] [i32 18, i32 35, i32 87, i32 10]
@__const.main.row5 = [5 x i32] [i32 20, i32 4, i32 82, i32 47, i32 65]
@__const.main.row6 = [6 x i32] [i32 19, i32 1, i32 23, i32 75, i32 3, i32 34]
@__const.main.row7 = [7 x i32] [i32 88, i32 2, i32 77, i32 73, i32 7, i32 63, i32 67]
@__const.main.row8 = [8 x i32] [i32 99, i32 65, i32 4, i32 28, i32 6, i32 16, i32 70, i32 92]
@__const.main.row9 = [9 x i32] [i32 41, i32 41, i32 26, i32 56, i32 83, i32 40, i32 80, i32 70, i32 33]
@__const.main.row10 = [10 x i32] [i32 41, i32 48, i32 72, i32 33, i32 47, i32 32, i32 37, i32 16, i32 94, i32 29]
@__const.main.row11 = [11 x i32] [i32 53, i32 71, i32 44, i32 65, i32 25, i32 43, i32 91, i32 52, i32 97, i32 51, i32 14]
@__const.main.row12 = [12 x i32] [i32 70, i32 11, i32 33, i32 28, i32 77, i32 73, i32 17, i32 78, i32 39, i32 68, i32 17, i32 57]
@__const.main.row13 = [13 x i32] [i32 91, i32 71, i32 52, i32 38, i32 17, i32 14, i32 91, i32 43, i32 58, i32 50, i32 27, i32 29, i32 48]
@__const.main.row14 = [14 x i32] [i32 63, i32 66, i32 4, i32 68, i32 89, i32 53, i32 67, i32 30, i32 73, i32 16, i32 69, i32 87, i32 40, i32 31]
@__const.main.row15 = [15 x i32] [i32 4, i32 62, i32 98, i32 27, i32 23, i32 9, i32 70, i32 98, i32 73, i32 93, i32 38, i32 53, i32 60, i32 4, i32 23]
@.str = [4 x i8] c"%d\0A\00"
define i32 @main() {
%1 = alloca [1 x i32]
%2 = alloca i64
%3 = alloca [3 x i32]
%4 = alloca [4 x i32]
%5 = alloca [5 x i32]
%6 = alloca [6 x i32]
%7 = alloca [7 x i32]
%8 = alloca [8 x i32]
%9 = alloca [9 x i32]
%10 = alloca [10 x i32]
%11 = alloca [11 x i32]
%12 = alloca [12 x i32]
%13 = alloca [13 x i32]
%14 = alloca [14 x i32]
%15 = alloca [15 x i32]
%16 = alloca [15 x i32*]
%17 = bitcast [1 x i32]* %1 to i8*
%18 = getelementptr inbounds [1 x i32], [1 x i32]* %1, i64 0, i64 0
store i32 75, i32* %18
%19 = bitcast i64* %2 to i8*
store i64 274877907039, i64* %2
%20 = bitcast [3 x i32]* %3 to i8*
%21 = bitcast [4 x i32]* %4 to i8*
%22 = bitcast [5 x i32]* %5 to i8*
%23 = bitcast [6 x i32]* %6 to i8*
%24 = bitcast [7 x i32]* %7 to i8*
%25 = bitcast [8 x i32]* %8 to i8*
%26 = bitcast [9 x i32]* %9 to i8*
%27 = bitcast [10 x i32]* %10 to i8*
%28 = bitcast [11 x i32]* %11 to i8*
%29 = bitcast [12 x i32]* %12 to i8*
%30 = bitcast [13 x i32]* %13 to i8*
%31 = bitcast [14 x i32]* %14 to i8*
%32 = bitcast [15 x i32]* %15 to i8*
%33 = bitcast [15 x i32*]* %16 to i8*
%34 = getelementptr inbounds [15 x i32*], [15 x i32*]* %16, i64 0, i64 0
store i32* %18, i32** %34
%35 = getelementptr inbounds [15 x i32*], [15 x i32*]* %16, i64 0, i64 1
%36 = bitcast i32** %35 to i64**
store i64* %2, i64** %36
%37 = getelementptr inbounds [15 x i32*], [15 x i32*]* %16, i64 0, i64 2
%38 = getelementptr inbounds [3 x i32], [3 x i32]* %3, i64 0, i64 0
store i32* %38, i32** %37
%39 = getelementptr inbounds [15 x i32*], [15 x i32*]* %16, i64 0, i64 3
%40 = getelementptr inbounds [4 x i32], [4 x i32]* %4, i64 0, i64 0
store i32* %40, i32** %39
%41 = getelementptr inbounds [15 x i32*], [15 x i32*]* %16, i64 0, i64 4
%42 = getelementptr inbounds [5 x i32], [5 x i32]* %5, i64 0, i64 0
store i32* %42, i32** %41
%43 = getelementptr inbounds [15 x i32*], [15 x i32*]* %16, i64 0, i64 5
%44 = getelementptr inbounds [6 x i32], [6 x i32]* %6, i64 0, i64 0
store i32* %44, i32** %43
%45 = getelementptr inbounds [15 x i32*], [15 x i32*]* %16, i64 0, i64 6
%46 = getelementptr inbounds [7 x i32], [7 x i32]* %7, i64 0, i64 0
store i32* %46, i32** %45
%47 = getelementptr inbounds [15 x i32*], [15 x i32*]* %16, i64 0, i64 7
%48 = getelementptr inbounds [8 x i32], [8 x i32]* %8, i64 0, i64 0
store i32* %48, i32** %47
%49 = getelementptr inbounds [15 x i32*], [15 x i32*]* %16, i64 0, i64 8
%50 = getelementptr inbounds [9 x i32], [9 x i32]* %9, i64 0, i64 0
store i32* %50, i32** %49
%51 = getelementptr inbounds [15 x i32*], [15 x i32*]* %16, i64 0, i64 9
%52 = getelementptr inbounds [10 x i32], [10 x i32]* %10, i64 0, i64 0
store i32* %52, i32** %51
%53 = getelementptr inbounds [15 x i32*], [15 x i32*]* %16, i64 0, i64 10
%54 = getelementptr inbounds [11 x i32], [11 x i32]* %11, i64 0, i64 0
store i32* %54, i32** %53
%55 = getelementptr inbounds [15 x i32*], [15 x i32*]* %16, i64 0, i64 11
%56 = getelementptr inbounds [12 x i32], [12 x i32]* %12, i64 0, i64 0
store i32* %56, i32** %55
%57 = getelementptr inbounds [15 x i32*], [15 x i32*]* %16, i64 0, i64 12
%58 = getelementptr inbounds [13 x i32], [13 x i32]* %13, i64 0, i64 0
store i32* %58, i32** %57
%59 = getelementptr inbounds [15 x i32*], [15 x i32*]* %16, i64 0, i64 13
%60 = getelementptr inbounds [14 x i32], [14 x i32]* %14, i64 0, i64 0
store i32* %60, i32** %59
%61 = getelementptr inbounds [15 x i32*], [15 x i32*]* %16, i64 0, i64 14
%62 = getelementptr inbounds [15 x i32], [15 x i32]* %15, i64 0, i64 0
store i32* %62, i32** %61
br label %65
63: ; preds = %75
%64 = add nsw i64 %67, -1
br i1 %69, label %65, label %89
65: ; preds = %0, %63
%66 = phi i64 [ 15, %0 ], [ %68, %63 ]
%67 = phi i64 [ 14, %0 ], [ %64, %63 ]
%68 = add nsw i64 %66, -1
%69 = icmp ugt i64 %66, 1
br i1 %69, label %70, label %89
70: ; preds = %65
%71 = getelementptr inbounds [15 x i32*], [15 x i32*]* %16, i64 0, i64 %68
%72 = load i32*, i32** %71
%73 = add nsw i64 %66, -2
%74 = getelementptr inbounds [15 x i32*], [15 x i32*]* %16, i64 0, i64 %73
br label %75
75: ; preds = %70, %75
%76 = phi i64 [ 0, %70 ], [ %79, %75 ]
%77 = getelementptr inbounds i32, i32* %72, i64 %76
%78 = load i32, i32* %77
%79 = add nuw nsw i64 %76, 1
%80 = getelementptr inbounds i32, i32* %72, i64 %79
%81 = load i32, i32* %80
%82 = call i64 @max(i32 %78, i32 %81)
%83 = load i32*, i32** %74
%84 = getelementptr inbounds i32, i32* %83, i64 %76
%85 = load i32, i32* %84
%86 = trunc i64 %82 to i32
%87 = add i32 %85, %86
store i32 %87, i32* %84
%88 = icmp eq i64 %79, %67
br i1 %88, label %63, label %75
89: ; preds = %65, %63
%90 = load i32, i32* %18
%91 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 %90)
ret i32 0
}