#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();
__attribute__((no)) int main1() {
  int i;
  int ia[128 + 1];
  for (i = 1; i <= 128; i++) {
    ia[i] = 5;
  }
  for (i = 1; i <= 128; i++) {
    if (ia[i] != 5)
      abort();
  }
  return 0;
}


x86 assembly (clang, -O0):
<main1>:
push   %rbp
mov    %rsp,%rbp
sub    $0x210,%rsp
movl   $0x1,-0x4(%rbp)
cmpl   $0x80,-0x4(%rbp)
jg     114c <main1+0x3c>
movslq -0x4(%rbp),%rax
movl   $0x5,-0x210(%rbp,%rax,4)
mov    -0x4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4(%rbp)
jmp    1122 <main1+0x12>
movl   $0x1,-0x4(%rbp)
cmpl   $0x80,-0x4(%rbp)
jg     118c <main1+0x7c>
movslq -0x4(%rbp),%rax
cmpl   $0x5,-0x210(%rbp,%rax,4)
05
je     1179 <main1+0x69>
mov    $0x0,%al
call   1030 <abort@plt>
jmp    117e <main1+0x6e>
mov    -0x4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4(%rbp)
jmp    1153 <main1+0x43>
xor    %eax,%eax
add    $0x210,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main1>:
sub    $0x208,%rsp
movaps 0xee2(%rip),%xmm0
movups %xmm0,0x4(%rsp)
movups %xmm0,0x14(%rsp)
movups %xmm0,0x24(%rsp)
movups %xmm0,0x34(%rsp)
movups %xmm0,0x44(%rsp)
movups %xmm0,0x54(%rsp)
movups %xmm0,0x64(%rsp)
movups %xmm0,0x74(%rsp)
movups %xmm0,0x84(%rsp)
movups %xmm0,0x94(%rsp)
movups %xmm0,0xa4(%rsp)
movups %xmm0,0xb4(%rsp)
movups %xmm0,0xc4(%rsp)
movups %xmm0,0xd4(%rsp)
movups %xmm0,0xe4(%rsp)
movups %xmm0,0xf4(%rsp)
movups %xmm0,0x104(%rsp)
movups %xmm0,0x114(%rsp)
movups %xmm0,0x124(%rsp)
movups %xmm0,0x134(%rsp)
movups %xmm0,0x144(%rsp)
movups %xmm0,0x154(%rsp)
movups %xmm0,0x164(%rsp)
movups %xmm0,0x174(%rsp)
movups %xmm0,0x184(%rsp)
movups %xmm0,0x194(%rsp)
movups %xmm0,0x1a4(%rsp)
movups %xmm0,0x1b4(%rsp)
movups %xmm0,0x1c4(%rsp)
movups %xmm0,0x1d4(%rsp)
movups %xmm0,0x1e4(%rsp)
movups %xmm0,0x1f4(%rsp)
xor    %eax,%eax
nopl   0x0(%rax,%rax,1)
cmpl   $0x5,0x4(%rsp,%rax,4)
jne    1242 <main1+0x132>
cmpl   $0x5,0x8(%rsp,%rax,4)
jne    1242 <main1+0x132>
cmpl   $0x5,0xc(%rsp,%rax,4)
jne    1242 <main1+0x132>
cmpl   $0x5,0x10(%rsp,%rax,4)
jne    1242 <main1+0x132>
add    $0x4,%rax
cmp    $0x80,%rax
jne    1210 <main1+0x100>
xor    %eax,%eax
add    $0x208,%rsp
ret
xor    %eax,%eax
call   1030 <abort@plt>

LLVM IR (-O0):
define i32 @main1() {
%1 = alloca i32
%2 = alloca [129 x i32]
store i32 1, i32* %1
br label %3
3: ; preds = %10, %0
%4 = load i32, i32* %1
%5 = icmp sle i32 %4, 128
br i1 %5, label %6, label %13
6: ; preds = %3
%7 = load i32, i32* %1
%8 = sext i32 %7 to i64
%9 = getelementptr inbounds [129 x i32], [129 x i32]* %2, i64 0, i64 %8
store i32 5, i32* %9
br label %10
10: ; preds = %6
%11 = load i32, i32* %1
%12 = add nsw i32 %11, 1
store i32 %12, i32* %1
br label %3
13: ; preds = %3
store i32 1, i32* %1
br label %14
14: ; preds = %26, %13
%15 = load i32, i32* %1
%16 = icmp sle i32 %15, 128
br i1 %16, label %17, label %29
17: ; preds = %14
%18 = load i32, i32* %1
%19 = sext i32 %18 to i64
%20 = getelementptr inbounds [129 x i32], [129 x i32]* %2, i64 0, i64 %19
%21 = load i32, i32* %20
%22 = icmp ne i32 %21, 5
br i1 %22, label %23, label %25
23: ; preds = %17
%24 = call i32 (...) @abort()
unreachable
25: ; preds = %17
br label %26
26: ; preds = %25
%27 = load i32, i32* %1
%28 = add nsw i32 %27, 1
store i32 %28, i32* %1
br label %14
29: ; preds = %14
ret i32 0
}

LLVM IR (-O2):
define i32 @main1() {
%1 = alloca [129 x i32]
%2 = bitcast [129 x i32]* %1 to i8*
%3 = getelementptr inbounds [129 x i32], [129 x i32]* %1, i64 0, i64 1
%4 = bitcast i32* %3 to <4 x i32>*
store <4 x i32> <i32 5, i32 5, i32 5, i32 5>, <4 x i32>* %4
%5 = getelementptr inbounds [129 x i32], [129 x i32]* %1, i64 0, i64 5
%6 = bitcast i32* %5 to <4 x i32>*
store <4 x i32> <i32 5, i32 5, i32 5, i32 5>, <4 x i32>* %6
%7 = getelementptr inbounds [129 x i32], [129 x i32]* %1, i64 0, i64 9
%8 = bitcast i32* %7 to <4 x i32>*
store <4 x i32> <i32 5, i32 5, i32 5, i32 5>, <4 x i32>* %8
%9 = getelementptr inbounds [129 x i32], [129 x i32]* %1, i64 0, i64 13
%10 = bitcast i32* %9 to <4 x i32>*
store <4 x i32> <i32 5, i32 5, i32 5, i32 5>, <4 x i32>* %10
%11 = getelementptr inbounds [129 x i32], [129 x i32]* %1, i64 0, i64 17
%12 = bitcast i32* %11 to <4 x i32>*
store <4 x i32> <i32 5, i32 5, i32 5, i32 5>, <4 x i32>* %12
%13 = getelementptr inbounds [129 x i32], [129 x i32]* %1, i64 0, i64 21
%14 = bitcast i32* %13 to <4 x i32>*
store <4 x i32> <i32 5, i32 5, i32 5, i32 5>, <4 x i32>* %14
%15 = getelementptr inbounds [129 x i32], [129 x i32]* %1, i64 0, i64 25
%16 = bitcast i32* %15 to <4 x i32>*
store <4 x i32> <i32 5, i32 5, i32 5, i32 5>, <4 x i32>* %16
%17 = getelementptr inbounds [129 x i32], [129 x i32]* %1, i64 0, i64 29
%18 = bitcast i32* %17 to <4 x i32>*
store <4 x i32> <i32 5, i32 5, i32 5, i32 5>, <4 x i32>* %18
%19 = getelementptr inbounds [129 x i32], [129 x i32]* %1, i64 0, i64 33
%20 = bitcast i32* %19 to <4 x i32>*
store <4 x i32> <i32 5, i32 5, i32 5, i32 5>, <4 x i32>* %20
%21 = getelementptr inbounds [129 x i32], [129 x i32]* %1, i64 0, i64 37
%22 = bitcast i32* %21 to <4 x i32>*
store <4 x i32> <i32 5, i32 5, i32 5, i32 5>, <4 x i32>* %22
%23 = getelementptr inbounds [129 x i32], [129 x i32]* %1, i64 0, i64 41
%24 = bitcast i32* %23 to <4 x i32>*
store <4 x i32> <i32 5, i32 5, i32 5, i32 5>, <4 x i32>* %24
%25 = getelementptr inbounds [129 x i32], [129 x i32]* %1, i64 0, i64 45
%26 = bitcast i32* %25 to <4 x i32>*
store <4 x i32> <i32 5, i32 5, i32 5, i32 5>, <4 x i32>* %26
%27 = getelementptr inbounds [129 x i32], [129 x i32]* %1, i64 0, i64 49
%28 = bitcast i32* %27 to <4 x i32>*
store <4 x i32> <i32 5, i32 5, i32 5, i32 5>, <4 x i32>* %28
%29 = getelementptr inbounds [129 x i32], [129 x i32]* %1, i64 0, i64 53
%30 = bitcast i32* %29 to <4 x i32>*
store <4 x i32> <i32 5, i32 5, i32 5, i32 5>, <4 x i32>* %30
%31 = getelementptr inbounds [129 x i32], [129 x i32]* %1, i64 0, i64 57
%32 = bitcast i32* %31 to <4 x i32>*
store <4 x i32> <i32 5, i32 5, i32 5, i32 5>, <4 x i32>* %32
%33 = getelementptr inbounds [129 x i32], [129 x i32]* %1, i64 0, i64 61
%34 = bitcast i32* %33 to <4 x i32>*
store <4 x i32> <i32 5, i32 5, i32 5, i32 5>, <4 x i32>* %34
%35 = getelementptr inbounds [129 x i32], [129 x i32]* %1, i64 0, i64 65
%36 = bitcast i32* %35 to <4 x i32>*
store <4 x i32> <i32 5, i32 5, i32 5, i32 5>, <4 x i32>* %36
%37 = getelementptr inbounds [129 x i32], [129 x i32]* %1, i64 0, i64 69
%38 = bitcast i32* %37 to <4 x i32>*
store <4 x i32> <i32 5, i32 5, i32 5, i32 5>, <4 x i32>* %38
%39 = getelementptr inbounds [129 x i32], [129 x i32]* %1, i64 0, i64 73
%40 = bitcast i32* %39 to <4 x i32>*
store <4 x i32> <i32 5, i32 5, i32 5, i32 5>, <4 x i32>* %40
%41 = getelementptr inbounds [129 x i32], [129 x i32]* %1, i64 0, i64 77
%42 = bitcast i32* %41 to <4 x i32>*
store <4 x i32> <i32 5, i32 5, i32 5, i32 5>, <4 x i32>* %42
%43 = getelementptr inbounds [129 x i32], [129 x i32]* %1, i64 0, i64 81
%44 = bitcast i32* %43 to <4 x i32>*
store <4 x i32> <i32 5, i32 5, i32 5, i32 5>, <4 x i32>* %44
%45 = getelementptr inbounds [129 x i32], [129 x i32]* %1, i64 0, i64 85
%46 = bitcast i32* %45 to <4 x i32>*
store <4 x i32> <i32 5, i32 5, i32 5, i32 5>, <4 x i32>* %46
%47 = getelementptr inbounds [129 x i32], [129 x i32]* %1, i64 0, i64 89
%48 = bitcast i32* %47 to <4 x i32>*
store <4 x i32> <i32 5, i32 5, i32 5, i32 5>, <4 x i32>* %48
%49 = getelementptr inbounds [129 x i32], [129 x i32]* %1, i64 0, i64 93
%50 = bitcast i32* %49 to <4 x i32>*
store <4 x i32> <i32 5, i32 5, i32 5, i32 5>, <4 x i32>* %50
%51 = getelementptr inbounds [129 x i32], [129 x i32]* %1, i64 0, i64 97
%52 = bitcast i32* %51 to <4 x i32>*
store <4 x i32> <i32 5, i32 5, i32 5, i32 5>, <4 x i32>* %52
%53 = getelementptr inbounds [129 x i32], [129 x i32]* %1, i64 0, i64 101
%54 = bitcast i32* %53 to <4 x i32>*
store <4 x i32> <i32 5, i32 5, i32 5, i32 5>, <4 x i32>* %54
%55 = getelementptr inbounds [129 x i32], [129 x i32]* %1, i64 0, i64 105
%56 = bitcast i32* %55 to <4 x i32>*
store <4 x i32> <i32 5, i32 5, i32 5, i32 5>, <4 x i32>* %56
%57 = getelementptr inbounds [129 x i32], [129 x i32]* %1, i64 0, i64 109
%58 = bitcast i32* %57 to <4 x i32>*
store <4 x i32> <i32 5, i32 5, i32 5, i32 5>, <4 x i32>* %58
%59 = getelementptr inbounds [129 x i32], [129 x i32]* %1, i64 0, i64 113
%60 = bitcast i32* %59 to <4 x i32>*
store <4 x i32> <i32 5, i32 5, i32 5, i32 5>, <4 x i32>* %60
%61 = getelementptr inbounds [129 x i32], [129 x i32]* %1, i64 0, i64 117
%62 = bitcast i32* %61 to <4 x i32>*
store <4 x i32> <i32 5, i32 5, i32 5, i32 5>, <4 x i32>* %62
%63 = getelementptr inbounds [129 x i32], [129 x i32]* %1, i64 0, i64 121
%64 = bitcast i32* %63 to <4 x i32>*
store <4 x i32> <i32 5, i32 5, i32 5, i32 5>, <4 x i32>* %64
%65 = getelementptr inbounds [129 x i32], [129 x i32]* %1, i64 0, i64 125
%66 = bitcast i32* %65 to <4 x i32>*
store <4 x i32> <i32 5, i32 5, i32 5, i32 5>, <4 x i32>* %66
br label %85
67: ; preds = %85
%68 = add nuw nsw i64 %86, 1
%69 = getelementptr inbounds [129 x i32], [129 x i32]* %1, i64 0, i64 %68
%70 = load i32, i32* %69
%71 = icmp eq i32 %70, 5
br i1 %71, label %72, label %90
72: ; preds = %67
%73 = add nuw nsw i64 %86, 2
%74 = getelementptr inbounds [129 x i32], [129 x i32]* %1, i64 0, i64 %73
%75 = load i32, i32* %74
%76 = icmp eq i32 %75, 5
br i1 %76, label %77, label %90
77: ; preds = %72
%78 = add nuw nsw i64 %86, 3
%79 = getelementptr inbounds [129 x i32], [129 x i32]* %1, i64 0, i64 %78
%80 = load i32, i32* %79
%81 = icmp eq i32 %80, 5
br i1 %81, label %82, label %90
82: ; preds = %77
%83 = add nuw nsw i64 %86, 4
%84 = icmp eq i64 %83, 129
br i1 %84, label %92, label %85
85: ; preds = %82, %0
%86 = phi i64 [ 1, %0 ], [ %83, %82 ]
%87 = getelementptr inbounds [129 x i32], [129 x i32]* %1, i64 0, i64 %86
%88 = load i32, i32* %87
%89 = icmp eq i32 %88, 5
br i1 %89, label %67, label %90
90: ; preds = %77, %72, %67, %85
%91 = tail call i32 (...) @abort()
unreachable
92: ; preds = %82
ret i32 0
}