; LLVM IR from bondhugula/pluto :: test (jacobi-3d-25pt)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

@u = external dso_local global [2 x [1003 x [1003 x [1003 x i32]]]], align 16

; Function Attrs: nounwind uwtable
define dso_local i32 @main() #0 {
  %1 = alloca i32, align 4
  %2 = alloca i32, align 4
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  store i32 0, ptr %1, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr %2) #2
  store i32 1000, ptr %2, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %3) #2
  store i32 1000, ptr %3, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %4) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #2
  store i32 1, ptr %6, align 4, !tbaa !5
  br label %8

8:                                                ; preds = %480, %0
  %9 = load i32, ptr %6, align 4, !tbaa !5
  %10 = load i32, ptr %3, align 4, !tbaa !5
  %11 = sub nsw i32 %10, 1
  %12 = icmp sle i32 %9, %11
  br i1 %12, label %13, label %483

13:                                               ; preds = %8
  store i32 4, ptr %4, align 4, !tbaa !5
  br label %14

14:                                               ; preds = %476, %13
  %15 = load i32, ptr %4, align 4, !tbaa !5
  %16 = load i32, ptr %2, align 4, !tbaa !5
  %17 = sub nsw i32 %16, 1
  %18 = icmp sle i32 %15, %17
  br i1 %18, label %19, label %479

19:                                               ; preds = %14
  store i32 4, ptr %5, align 4, !tbaa !5
  br label %20

20:                                               ; preds = %472, %19
  %21 = load i32, ptr %5, align 4, !tbaa !5
  %22 = load i32, ptr %2, align 4, !tbaa !5
  %23 = sub nsw i32 %22, 1
  %24 = icmp sle i32 %21, %23
  br i1 %24, label %25, label %475

25:                                               ; preds = %20
  store i32 4, ptr %7, align 4, !tbaa !5
  br label %26

26:                                               ; preds = %468, %25
  %27 = load i32, ptr %7, align 4, !tbaa !5
  %28 = load i32, ptr %2, align 4, !tbaa !5
  %29 = sub nsw i32 %28, 1
  %30 = icmp sle i32 %27, %29
  br i1 %30, label %31, label %471

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

468:                                              ; preds = %31
  %469 = load i32, ptr %7, align 4, !tbaa !5
  %470 = add nsw i32 %469, 1
  store i32 %470, ptr %7, align 4, !tbaa !5
  br label %26, !llvm.loop !9

471:                                              ; preds = %26
  br label %472

472:                                              ; preds = %471
  %473 = load i32, ptr %5, align 4, !tbaa !5
  %474 = add nsw i32 %473, 1
  store i32 %474, ptr %5, align 4, !tbaa !5
  br label %20, !llvm.loop !11

475:                                              ; preds = %20
  br label %476

476:                                              ; preds = %475
  %477 = load i32, ptr %4, align 4, !tbaa !5
  %478 = add nsw i32 %477, 1
  store i32 %478, ptr %4, align 4, !tbaa !5
  br label %14, !llvm.loop !12

479:                                              ; preds = %14
  br label %480

480:                                              ; preds = %479
  %481 = load i32, ptr %6, align 4, !tbaa !5
  %482 = add nsw i32 %481, 1
  store i32 %482, ptr %6, align 4, !tbaa !5
  br label %8, !llvm.loop !13

483:                                              ; preds = %8
  %484 = load i32, ptr %3, align 4, !tbaa !5
  %485 = sub nsw i32 %484, 1
  %486 = sext i32 %485 to i64
  %487 = getelementptr inbounds [2 x [1003 x [1003 x [1003 x i32]]]], ptr @u, i64 0, i64 %486
  %488 = getelementptr inbounds [1003 x [1003 x [1003 x i32]]], ptr %487, i64 0, i64 1
  %489 = getelementptr inbounds [1003 x [1003 x i32]], ptr %488, i64 0, i64 1
  %490 = getelementptr inbounds [1003 x i32], ptr %489, i64 0, i64 1
  %491 = load i32, ptr %490, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %2) #2
  ret i32 %491
}

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = distinct !{!9, !10}
!10 = !{!"llvm.loop.mustprogress"}
!11 = distinct !{!11, !10}
!12 = distinct !{!12, !10}
!13 = distinct !{!13, !10}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

@u = external dso_local local_unnamed_addr global [2 x [1003 x [1003 x [1003 x i32]]]], align 16

; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, argmem: none, inaccessiblemem: none) uwtable
define dso_local i32 @main() local_unnamed_addr #0 {
  br label %.preheader121

.preheader121:                                    ; preds = %0, %167
  %indvar = phi i1 [ false, %0 ], [ %indvar.next, %167 ]
  %.0117125 = phi i32 [ 1, %0 ], [ %168, %167 ]
  %1 = select i1 %indvar, i64 0, i64 4036108108
  %2 = select i1 %indvar, i64 4036108108, i64 0
  %3 = add nuw nsw i64 %1, 12072108
  %4 = sub nsw i64 %3, %2
  %5 = add nsw i64 %1, -8048072
  %6 = sub nsw i64 %5, %2
  %7 = add nsw i64 %1, -4024036
  %8 = sub nsw i64 %7, %2
  %9 = add nuw nsw i64 %1, 12036
  %10 = sub nsw i64 %9, %2
  %11 = add nuw nsw i64 %1, 8024
  %12 = sub nsw i64 %11, %2
  %13 = add nuw nsw i64 %1, 4012
  %14 = sub nsw i64 %13, %2
  %15 = add nsw i64 %1, -4012
  %16 = sub nsw i64 %15, %2
  %17 = add nsw i64 %1, -8
  %18 = sub nsw i64 %17, %2
  %19 = add nuw nsw i64 %1, 4
  %20 = sub nsw i64 %19, %2
  %21 = and i32 %.0117125, 1
  %.urem = xor i32 %21, 1
  %22 = zext nneg i32 %.urem to i64
  %23 = and i32 %.0117125, 1
  %24 = zext nneg i32 %23 to i64
  %diff.check145 = icmp ult i64 %4, 16
  %diff.check151 = icmp ult i64 %6, 16
  %conflict.rdx152 = or i1 %diff.check145, %diff.check151
  %diff.check155 = icmp ult i64 %8, 16
  %conflict.rdx156 = or i1 %conflict.rdx152, %diff.check155
  %diff.check161 = icmp ult i64 %10, 16
  %conflict.rdx162 = or i1 %conflict.rdx156, %diff.check161
  %diff.check165 = icmp ult i64 %12, 16
  %conflict.rdx166 = or i1 %conflict.rdx162, %diff.check165
  %diff.check169 = icmp ult i64 %14, 16
  %conflict.rdx170 = or i1 %conflict.rdx166, %diff.check169
  %diff.check171 = icmp ult i64 %16, 16
  %conflict.rdx172 = or i1 %conflict.rdx170, %diff.check171
  %diff.check175 = icmp ult i64 %18, 16
  %conflict.rdx176 = or i1 %conflict.rdx172, %diff.check175
  %diff.check177 = icmp ult i64 %20, 16
  %conflict.rdx178 = or i1 %conflict.rdx176, %diff.check177
  br label %.preheader120

.preheader120:                                    ; preds = %.preheader121, %166
  %indvars.iv131 = phi i64 [ 4, %.preheader121 ], [ %indvars.iv.next132, %166 ]
  %25 = add nsw i64 %indvars.iv131, -4
  %26 = add nuw nsw i64 %indvars.iv131, 4
  %27 = add nsw i64 %indvars.iv131, -3
  %28 = add nuw nsw i64 %indvars.iv131, 3
  %29 = add nsw i64 %indvars.iv131, -2
  %30 = add nuw nsw i64 %indvars.iv131, 2
  %31 = add nsw i64 %indvars.iv131, -1
  %indvars.iv.next132 = add nuw nsw i64 %indvars.iv131, 1
  br label %.preheader

.preheader:                                       ; preds = %.preheader120, %middle.block
  %indvars.iv127 = phi i64 [ 4, %.preheader120 ], [ %indvars.iv.next128, %middle.block ]
  %32 = add nsw i64 %indvars.iv127, -4
  %33 = add nuw nsw i64 %indvars.iv127, 4
  %34 = add nsw i64 %indvars.iv127, -3
  %35 = add nuw nsw i64 %indvars.iv127, 3
  %36 = add nsw i64 %indvars.iv127, -2
  %37 = add nuw nsw i64 %indvars.iv127, 2
  %38 = add nsw i64 %indvars.iv127, -1
  %indvars.iv.next128 = add nuw nsw i64 %indvars.iv127, 1
  %.phi.trans.insert = getelementptr inbounds [2 x [1003 x [1003 x [1003 x i32]]]], ptr @u, i64 0, i64 %22, i64 %indvars.iv131, i64 %indvars.iv127, i64 0
  %.pre = load i32, ptr %.phi.trans.insert, align 4, !tbaa !5
  %.phi.trans.insert136 = getelementptr inbounds [2 x [1003 x [1003 x [1003 x i32]]]], ptr @u, i64 0, i64 %22, i64 %indvars.iv131, i64 %indvars.iv127, i64 1
  %.pre137 = load i32, ptr %.phi.trans.insert136, align 4, !tbaa !5
  %.phi.trans.insert138 = getelementptr inbounds [2 x [1003 x [1003 x [1003 x i32]]]], ptr @u, i64 0, i64 %22, i64 %indvars.iv131, i64 %indvars.iv127, i64 7
  %.pre139 = load i32, ptr %.phi.trans.insert138, align 4, !tbaa !5
  %.phi.trans.insert140 = getelementptr inbounds [2 x [1003 x [1003 x [1003 x i32]]]], ptr @u, i64 0, i64 %22, i64 %indvars.iv131, i64 %indvars.iv127, i64 2
  %.pre141 = load i32, ptr %.phi.trans.insert140, align 4, !tbaa !5
  %.phi.trans.insert142 = getelementptr inbounds [2 x [1003 x [1003 x [1003 x i32]]]], ptr @u, i64 0, i64 %22, i64 %indvars.iv131, i64 %indvars.iv127, i64 5
  %.pre143 = load i32, ptr %.phi.trans.insert142, align 4, !tbaa !5
  br i1 %conflict.rdx178, label %scalar.ph, label %vector.ph

vector.ph:                                        ; preds = %.preheader
  %vector.recur.init = insertelement <4 x i32> poison, i32 %.pre143, i64 3
  %vector.recur.init181 = insertelement <4 x i32> poison, i32 %.pre141, i64 3
  %vector.recur.init183 = insertelement <4 x i32> poison, i32 %.pre139, i64 3
  %vector.recur.init185 = insertelement <4 x i32> poison, i32 %.pre137, i64 3
  %vector.recur.init187 = insertelement <4 x i32> poison, i32 %.pre, i64 3
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %vector.recur = phi <4 x i32> [ %vector.recur.init, %vector.ph ], [ %wide.load205, %vector.body ]
  %vector.recur182 = phi <4 x i32> [ %vector.recur.init181, %vector.ph ], [ %wide.load206, %vector.body ]
  %vector.recur184 = phi <4 x i32> [ %vector.recur.init183, %vector.ph ], [ %wide.load204, %vector.body ]
  %vector.recur186 = phi <4 x i32> [ %vector.recur.init185, %vector.ph ], [ %78, %vector.body ]
  %vector.recur188 = phi <4 x i32> [ %vector.recur.init187, %vector.ph ], [ %79, %vector.body ]
  %offset.idx = add i64 %index, 4
  %39 = getelementptr inbounds [2 x [1003 x [1003 x [1003 x i32]]]], ptr @u, i64 0, i64 %22, i64 %25, i64 %indvars.iv127, i64 %offset.idx
  %wide.load = load <4 x i32>, ptr %39, align 4, !tbaa !5
  %40 = getelementptr inbounds [2 x [1003 x [1003 x [1003 x i32]]]], ptr @u, i64 0, i64 %22, i64 %26, i64 %indvars.iv127, i64 %offset.idx
  %wide.load189 = load <4 x i32>, ptr %40, align 4, !tbaa !5
  %41 = add nsw <4 x i32> %wide.load189, %wide.load
  %42 = getelementptr inbounds [2 x [1003 x [1003 x [1003 x i32]]]], ptr @u, i64 0, i64 %22, i64 %27, i64 %indvars.iv127, i64 %offset.idx
  %wide.load190 = load <4 x i32>, ptr %42, align 4, !tbaa !5
  %43 = add nsw <4 x i32> %41, %wide.load190
  %44 = getelementptr inbounds [2 x [1003 x [1003 x [1003 x i32]]]], ptr @u, i64 0, i64 %22, i64 %28, i64 %indvars.iv127, i64 %offset.idx
  %wide.load191 = load <4 x i32>, ptr %44, align 4, !tbaa !5
  %45 = add nsw <4 x i32> %43, %wide.load191
  %46 = getelementptr inbounds [2 x [1003 x [1003 x [1003 x i32]]]], ptr @u, i64 0, i64 %22, i64 %29, i64 %indvars.iv127, i64 %offset.idx
  %wide.load192 = load <4 x i32>, ptr %46, align 4, !tbaa !5
  %47 = add nsw <4 x i32> %45, %wide.load192
  %48 = getelementptr inbounds [2 x [1003 x [1003 x [1003 x i32]]]], ptr @u, i64 0, i64 %22, i64 %30, i64 %indvars.iv127, i64 %offset.idx
  %wide.load193 = load <4 x i32>, ptr %48, align 4, !tbaa !5
  %49 = add nsw <4 x i32> %47, %wide.load193
  %50 = getelementptr inbounds [2 x [1003 x [1003 x [1003 x i32]]]], ptr @u, i64 0, i64 %22, i64 %31, i64 %indvars.iv127, i64 %offset.idx
  %wide.load194 = load <4 x i32>, ptr %50, align 4, !tbaa !5
  %51 = add nsw <4 x i32> %49, %wide.load194
  %52 = getelementptr inbounds [2 x [1003 x [1003 x [1003 x i32]]]], ptr @u, i64 0, i64 %22, i64 %indvars.iv.next132, i64 %indvars.iv127, i64 %offset.idx
  %wide.load195 = load <4 x i32>, ptr %52, align 4, !tbaa !5
  %53 = add nsw <4 x i32> %51, %wide.load195
  %54 = getelementptr inbounds [2 x [1003 x [1003 x [1003 x i32]]]], ptr @u, i64 0, i64 %22, i64 %indvars.iv131, i64 %32, i64 %offset.idx
  %wide.load196 = load <4 x i32>, ptr %54, align 4, !tbaa !5
  %55 = add nsw <4 x i32> %53, %wide.load196
  %56 = getelementptr inbounds [2 x [1003 x [1003 x [1003 x i32]]]], ptr @u, i64 0, i64 %22, i64 %indvars.iv131, i64 %33, i64 %offset.idx
  %wide.load197 = load <4 x i32>, ptr %56, align 4, !tbaa !5
  %57 = add nsw <4 x i32> %55, %wide.load197
  %58 = getelementptr inbounds [2 x [1003 x [1003 x [1003 x i32]]]], ptr @u, i64 0, i64 %22, i64 %indvars.iv131, i64 %34, i64 %offset.idx
  %wide.load198 = load <4 x i32>, ptr %58, align 4, !tbaa !5
  %59 = add nsw <4 x i32> %57, %wide.load198
  %60 = getelementptr inbounds [2 x [1003 x [1003 x [1003 x i32]]]], ptr @u, i64 0, i64 %22, i64 %indvars.iv131, i64 %35, i64 %offset.idx
  %wide.load199 = load <4 x i32>, ptr %60, align 4, !tbaa !5
  %61 = add nsw <4 x i32> %59, %wide.load199
  %62 = getelementptr inbounds [2 x [1003 x [1003 x [1003 x i32]]]], ptr @u, i64 0, i64 %22, i64 %indvars.iv131, i64 %36, i64 %offset.idx
  %wide.load200 = load <4 x i32>, ptr %62, align 4, !tbaa !5
  %63 = add nsw <4 x i32> %61, %wide.load200
  %64 = getelementptr inbounds [2 x [1003 x [1003 x [1003 x i32]]]], ptr @u, i64 0, i64 %22, i64 %indvars.iv131, i64 %37, i64 %offset.idx
  %wide.load201 = load <4 x i32>, ptr %64, align 4, !tbaa !5
  %65 = add nsw <4 x i32> %63, %wide.load201
  %66 = getelementptr inbounds [2 x [1003 x [1003 x [1003 x i32]]]], ptr @u, i64 0, i64 %22, i64 %indvars.iv131, i64 %38, i64 %offset.idx
  %wide.load202 = load <4 x i32>, ptr %66, align 4, !tbaa !5
  %67 = add nsw <4 x i32> %65, %wide.load202
  %68 = getelementptr inbounds [2 x [1003 x [1003 x [1003 x i32]]]], ptr @u, i64 0, i64 %22, i64 %indvars.iv131, i64 %indvars.iv.next128, i64 %offset.idx
  %wide.load203 = load <4 x i32>, ptr %68, align 4, !tbaa !5
  %69 = add nsw <4 x i32> %67, %wide.load203
  %70 = add i64 %index, 8
  %71 = getelementptr inbounds [2 x [1003 x [1003 x [1003 x i32]]]], ptr @u, i64 0, i64 %22, i64 %indvars.iv131, i64 %indvars.iv127, i64 %70
  %wide.load204 = load <4 x i32>, ptr %71, align 4, !tbaa !5
  %72 = shufflevector <4 x i32> %vector.recur184, <4 x i32> %wide.load204, <4 x i32> <i32 3, i32 4, i32 5, i32 6>
  %73 = add i64 %index, 6
  %74 = getelementptr inbounds [2 x [1003 x [1003 x [1003 x i32]]]], ptr @u, i64 0, i64 %22, i64 %indvars.iv131, i64 %indvars.iv127, i64 %73
  %wide.load205 = load <4 x i32>, ptr %74, align 4, !tbaa !5
  %75 = shufflevector <4 x i32> %vector.recur, <4 x i32> %wide.load205, <4 x i32> <i32 3, i32 4, i32 5, i32 6>
  %76 = or disjoint i64 %index, 3
  %77 = getelementptr inbounds [2 x [1003 x [1003 x [1003 x i32]]]], ptr @u, i64 0, i64 %22, i64 %indvars.iv131, i64 %indvars.iv127, i64 %76
  %wide.load206 = load <4 x i32>, ptr %77, align 4, !tbaa !5
  %78 = shufflevector <4 x i32> %vector.recur182, <4 x i32> %wide.load206, <4 x i32> <i32 3, i32 4, i32 5, i32 6>
  %79 = shufflevector <4 x i32> %vector.recur186, <4 x i32> %78, <4 x i32> <i32 3, i32 4, i32 5, i32 6>
  %80 = shufflevector <4 x i32> %vector.recur188, <4 x i32> %79, <4 x i32> <i32 3, i32 4, i32 5, i32 6>
  %81 = add nsw <4 x i32> %69, %80
  %82 = add nsw <4 x i32> %81, %wide.load204
  %83 = add nsw <4 x i32> %82, %79
  %84 = add nsw <4 x i32> %83, %72
  %85 = add nsw <4 x i32> %84, %78
  %86 = add nsw <4 x i32> %85, %wide.load205
  %87 = add nsw <4 x i32> %86, %wide.load206
  %88 = add nsw <4 x i32> %87, %75
  %89 = getelementptr inbounds [2 x [1003 x [1003 x [1003 x i32]]]], ptr @u, i64 0, i64 %22, i64 %indvars.iv131, i64 %indvars.iv127, i64 %offset.idx
  %wide.load207 = load <4 x i32>, ptr %89, align 4, !tbaa !5
  %90 = add nsw <4 x i32> %88, %wide.load207
  %91 = getelementptr inbounds [2 x [1003 x [1003 x [1003 x i32]]]], ptr @u, i64 0, i64 %24, i64 %indvars.iv131, i64 %indvars.iv127, i64 %offset.idx
  store <4 x i32> %90, ptr %91, align 4, !tbaa !5
  %index.next = add nuw i64 %index, 4
  %92 = icmp eq i64 %index.next, 996
  br i1 %92, label %middle.block, label %vector.body, !llvm.loop !9

scalar.ph:                                        ; preds = %.preheader, %scalar.ph
  %93 = phi i32 [ %155, %scalar.ph ], [ %.pre143, %.preheader ]
  %94 = phi i32 [ %159, %scalar.ph ], [ %.pre141, %.preheader ]
  %95 = phi i32 [ %148, %scalar.ph ], [ %.pre139, %.preheader ]
  %96 = phi i32 [ %94, %scalar.ph ], [ %.pre137, %.preheader ]
  %97 = phi i32 [ %96, %scalar.ph ], [ %.pre, %.preheader ]
  %indvars.iv = phi i64 [ %indvars.iv.next, %scalar.ph ], [ 4, %.preheader ]
  %98 = getelementptr inbounds [2 x [1003 x [1003 x [1003 x i32]]]], ptr @u, i64 0, i64 %22, i64 %25, i64 %indvars.iv127, i64 %indvars.iv
  %99 = load i32, ptr %98, align 4, !tbaa !5
  %100 = getelementptr inbounds [2 x [1003 x [1003 x [1003 x i32]]]], ptr @u, i64 0, i64 %22, i64 %26, i64 %indvars.iv127, i64 %indvars.iv
  %101 = load i32, ptr %100, align 4, !tbaa !5
  %102 = add nsw i32 %101, %99
  %103 = getelementptr inbounds [2 x [1003 x [1003 x [1003 x i32]]]], ptr @u, i64 0, i64 %22, i64 %27, i64 %indvars.iv127, i64 %indvars.iv
  %104 = load i32, ptr %103, align 4, !tbaa !5
  %105 = add nsw i32 %102, %104
  %106 = getelementptr inbounds [2 x [1003 x [1003 x [1003 x i32]]]], ptr @u, i64 0, i64 %22, i64 %28, i64 %indvars.iv127, i64 %indvars.iv
  %107 = load i32, ptr %106, align 4, !tbaa !5
  %108 = add nsw i32 %105, %107
  %109 = getelementptr inbounds [2 x [1003 x [1003 x [1003 x i32]]]], ptr @u, i64 0, i64 %22, i64 %29, i64 %indvars.iv127, i64 %indvars.iv
  %110 = load i32, ptr %109, align 4, !tbaa !5
  %111 = add nsw i32 %108, %110
  %112 = getelementptr inbounds [2 x [1003 x [1003 x [1003 x i32]]]], ptr @u, i64 0, i64 %22, i64 %30, i64 %indvars.iv127, i64 %indvars.iv
  %113 = load i32, ptr %112, align 4, !tbaa !5
  %114 = add nsw i32 %111, %113
  %115 = getelementptr inbounds [2 x [1003 x [1003 x [1003 x i32]]]], ptr @u, i64 0, i64 %22, i64 %31, i64 %indvars.iv127, i64 %indvars.iv
  %116 = load i32, ptr %115, align 4, !tbaa !5
  %117 = add nsw i32 %114, %116
  %118 = getelementptr inbounds [2 x [1003 x [1003 x [1003 x i32]]]], ptr @u, i64 0, i64 %22, i64 %indvars.iv.next132, i64 %indvars.iv127, i64 %indvars.iv
  %119 = load i32, ptr %118, align 4, !tbaa !5
  %120 = add nsw i32 %117, %119
  %121 = getelementptr inbounds [2 x [1003 x [1003 x [1003 x i32]]]], ptr @u, i64 0, i64 %22, i64 %indvars.iv131, i64 %32, i64 %indvars.iv
  %122 = load i32, ptr %121, align 4, !tbaa !5
  %123 = add nsw i32 %120, %122
  %124 = getelementptr inbounds [2 x [1003 x [1003 x [1003 x i32]]]], ptr @u, i64 0, i64 %22, i64 %indvars.iv131, i64 %33, i64 %indvars.iv
  %125 = load i32, ptr %124, align 4, !tbaa !5
  %126 = add nsw i32 %123, %125
  %127 = getelementptr inbounds [2 x [1003 x [1003 x [1003 x i32]]]], ptr @u, i64 0, i64 %22, i64 %indvars.iv131, i64 %34, i64 %indvars.iv
  %128 = load i32, ptr %127, align 4, !tbaa !5
  %129 = add nsw i32 %126, %128
  %130 = getelementptr inbounds [2 x [1003 x [1003 x [1003 x i32]]]], ptr @u, i64 0, i64 %22, i64 %indvars.iv131, i64 %35, i64 %indvars.iv
  %131 = load i32, ptr %130, align 4, !tbaa !5
  %132 = add nsw i32 %129, %131
  %133 = getelementptr inbounds [2 x [1003 x [1003 x [1003 x i32]]]], ptr @u, i64 0, i64 %22, i64 %indvars.iv131, i64 %36, i64 %indvars.iv
  %134 = load i32, ptr %133, align 4, !tbaa !5
  %135 = add nsw i32 %132, %134
  %136 = getelementptr inbounds [2 x [1003 x [1003 x [1003 x i32]]]], ptr @u, i64 0, i64 %22, i64 %indvars.iv131, i64 %37, i64 %indvars.iv
  %137 = load i32, ptr %136, align 4, !tbaa !5
  %138 = add nsw i32 %135, %137
  %139 = getelementptr inbounds [2 x [1003 x [1003 x [1003 x i32]]]], ptr @u, i64 0, i64 %22, i64 %indvars.iv131, i64 %38, i64 %indvars.iv
  %140 = load i32, ptr %139, align 4, !tbaa !5
  %141 = add nsw i32 %138, %140
  %142 = getelementptr inbounds [2 x [1003 x [1003 x [1003 x i32]]]], ptr @u, i64 0, i64 %22, i64 %indvars.iv131, i64 %indvars.iv.next128, i64 %indvars.iv
  %143 = load i32, ptr %142, align 4, !tbaa !5
  %144 = add nsw i32 %141, %143
  %145 = add nsw i32 %144, %97
  %146 = add nuw nsw i64 %indvars.iv, 4
  %147 = getelementptr inbounds [2 x [1003 x [1003 x [1003 x i32]]]], ptr @u, i64 0, i64 %22, i64 %indvars.iv131, i64 %indvars.iv127, i64 %146
  %148 = load i32, ptr %147, align 4, !tbaa !5
  %149 = add nsw i32 %145, %148
  %150 = add nsw i32 %149, %96
  %151 = add nsw i32 %150, %95
  %152 = add nsw i32 %151, %94
  %153 = add nuw nsw i64 %indvars.iv, 2
  %154 = getelementptr inbounds [2 x [1003 x [1003 x [1003 x i32]]]], ptr @u, i64 0, i64 %22, i64 %indvars.iv131, i64 %indvars.iv127, i64 %153
  %155 = load i32, ptr %154, align 4, !tbaa !5
  %156 = add nsw i32 %152, %155
  %157 = add nsw i64 %indvars.iv, -1
  %158 = getelementptr inbounds [2 x [1003 x [1003 x [1003 x i32]]]], ptr @u, i64 0, i64 %22, i64 %indvars.iv131, i64 %indvars.iv127, i64 %157
  %159 = load i32, ptr %158, align 4, !tbaa !5
  %160 = add nsw i32 %156, %159
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %161 = add nsw i32 %160, %93
  %162 = getelementptr inbounds [2 x [1003 x [1003 x [1003 x i32]]]], ptr @u, i64 0, i64 %22, i64 %indvars.iv131, i64 %indvars.iv127, i64 %indvars.iv
  %163 = load i32, ptr %162, align 4, !tbaa !5
  %164 = add nsw i32 %161, %163
  %165 = getelementptr inbounds [2 x [1003 x [1003 x [1003 x i32]]]], ptr @u, i64 0, i64 %24, i64 %indvars.iv131, i64 %indvars.iv127, i64 %indvars.iv
  store i32 %164, ptr %165, align 4, !tbaa !5
  %exitcond.not = icmp eq i64 %indvars.iv.next, 1000
  br i1 %exitcond.not, label %middle.block, label %scalar.ph, !llvm.loop !13

middle.block:                                     ; preds = %vector.body, %scalar.ph
  %exitcond130.not = icmp eq i64 %indvars.iv.next128, 1000
  br i1 %exitcond130.not, label %166, label %.preheader, !llvm.loop !14

166:                                              ; preds = %middle.block
  %exitcond134.not = icmp eq i64 %indvars.iv.next132, 1000
  br i1 %exitcond134.not, label %167, label %.preheader120, !llvm.loop !15

167:                                              ; preds = %166
  %168 = add nuw nsw i32 %.0117125, 1
  %exitcond135.not = icmp eq i32 %168, 1000
  %indvar.next = xor i1 %indvar, true
  br i1 %exitcond135.not, label %169, label %.preheader121, !llvm.loop !16

169:                                              ; preds = %167
  %170 = load i32, ptr getelementptr inbounds (i8, ptr @u, i64 4032076027944), align 8, !tbaa !5
  ret i32 %170
}

attributes #0 = { nofree norecurse nosync nounwind memory(readwrite, argmem: none, inaccessiblemem: none) uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = distinct !{!9, !10, !11, !12}
!10 = !{!"llvm.loop.mustprogress"}
!11 = !{!"llvm.loop.isvectorized", i32 1}
!12 = !{!"llvm.loop.unroll.runtime.disable"}
!13 = distinct !{!13, !10, !11}
!14 = distinct !{!14, !10}
!15 = distinct !{!15, !10}
!16 = distinct !{!16, !10}


; Effective O3 passes: BDCEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,LICMPass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass