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

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ abort();
int main1() {
  int i, j;
  int ib[6] = {0, 3, 6, 9, 12, 15};
  int ia[8][5][6];
  int ic[16][16][5][6];
  for (i = 0; i < 16; i++) {
    for (j = 0; j < 4; j++) {
      ia[2][6][j] = 5;
    }
  }
  for (i = 0; i < 16; i++) {
    for (j = 0; j < 4; j++) {
      if (ia[2][6][j] != 5)
        abort();
    }
  }
  for (i = 0; i < 16; i++) {
    for (j = 0; j < 4; j++)
      ia[3][6][j + 2] = 5;
  }
  for (i = 0; i < 16; i++) {
    for (j = 2; j < 6; j++) {
      if (ia[3][6][j] != 5)
        abort();
    }
  }
  for (i = 0; i < 16; i++) {
    for (j = 0; j < 4; j++) {
      ic[2][1][6][j] = 5;
    }
  }
  for (i = 0; i < 16; i++) {
    for (j = 0; j < 4; j++) {
      if (ic[2][1][6][j] != 5)
        abort();
    }
  }
  return 0;
}


x86 assembly (clang, -O0):
<main1>:
push   %rbp
mov    %rsp,%rbp
sub    $0x7be0,%rsp
mov    0xede(%rip),%rax
mov    %rax,-0x20(%rbp)
mov    0xedb(%rip),%rax
mov    %rax,-0x18(%rbp)
mov    0xed8(%rip),%rax
mov    %rax,-0x10(%rbp)
movl   $0x0,-0x4(%rbp)
cmpl   $0x10,-0x4(%rbp)
jge    118e <main1+0x7e>
movl   $0x0,-0x8(%rbp)
cmpl   $0x4,-0x8(%rbp)
jge    117b <main1+0x6b>
movslq -0x8(%rbp),%rax
movl   $0x5,-0x260(%rbp,%rax,4)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1154 <main1+0x44>
jmp    1180 <main1+0x70>
mov    -0x4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4(%rbp)
jmp    1143 <main1+0x33>
movl   $0x0,-0x4(%rbp)
cmpl   $0x10,-0x4(%rbp)
jge    11ef <main1+0xdf>
movl   $0x0,-0x8(%rbp)
cmpl   $0x4,-0x8(%rbp)
jge    11dc <main1+0xcc>
movslq -0x8(%rbp),%rax
cmpl   $0x5,-0x260(%rbp,%rax,4)
05
je     11c9 <main1+0xb9>
mov    $0x0,%al
call   1030 <abort@plt>
jmp    11ce <main1+0xbe>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    11a6 <main1+0x96>
jmp    11e1 <main1+0xd1>
mov    -0x4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4(%rbp)
jmp    1195 <main1+0x85>
movl   $0x0,-0x4(%rbp)
cmpl   $0x10,-0x4(%rbp)
jge    1245 <main1+0x135>
movl   $0x0,-0x8(%rbp)
cmpl   $0x4,-0x8(%rbp)
jge    1232 <main1+0x122>
mov    -0x8(%rbp),%eax
add    $0x2,%eax
cltq
movl   $0x5,-0x1e8(%rbp,%rax,4)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1207 <main1+0xf7>
jmp    1237 <main1+0x127>
mov    -0x4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4(%rbp)
jmp    11f6 <main1+0xe6>
movl   $0x0,-0x4(%rbp)
cmpl   $0x10,-0x4(%rbp)
jge    12a6 <main1+0x196>
movl   $0x2,-0x8(%rbp)
cmpl   $0x6,-0x8(%rbp)
jge    1293 <main1+0x183>
movslq -0x8(%rbp),%rax
cmpl   $0x5,-0x1e8(%rbp,%rax,4)
05
je     1280 <main1+0x170>
mov    $0x0,%al
call   1030 <abort@plt>
jmp    1285 <main1+0x175>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    125d <main1+0x14d>
jmp    1298 <main1+0x188>
mov    -0x4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4(%rbp)
jmp    124c <main1+0x13c>
movl   $0x0,-0x4(%rbp)
cmpl   $0x10,-0x4(%rbp)
jge    12f8 <main1+0x1e8>
movl   $0x0,-0x8(%rbp)
cmpl   $0x4,-0x8(%rbp)
jge    12e5 <main1+0x1d5>
movslq -0x8(%rbp),%rax
movl   $0x5,-0x6bd8(%rbp,%rax,4)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    12be <main1+0x1ae>
jmp    12ea <main1+0x1da>
mov    -0x4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4(%rbp)
jmp    12ad <main1+0x19d>
movl   $0x0,-0x4(%rbp)
cmpl   $0x10,-0x4(%rbp)
jge    1359 <main1+0x249>
movl   $0x0,-0x8(%rbp)
cmpl   $0x4,-0x8(%rbp)
jge    1346 <main1+0x236>
movslq -0x8(%rbp),%rax
cmpl   $0x5,-0x6bd8(%rbp,%rax,4)
05
je     1333 <main1+0x223>
mov    $0x0,%al
call   1030 <abort@plt>
jmp    1338 <main1+0x228>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1310 <main1+0x200>
jmp    134b <main1+0x23b>
mov    -0x4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4(%rbp)
jmp    12ff <main1+0x1ef>
xor    %eax,%eax
add    $0x7be0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main1>:
xor    %eax,%eax
ret

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

LLVM IR (-O2):
define i32 @main1() {
ret i32 0
}