; LLVM IR from UtkarshPathrabe/Competitive-Coding :: SPOJ Solutions (BYTEFOOD)

; 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"

@.str = external hidden unnamed_addr constant [3 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [5 x i8], align 1

; Function Attrs: mustprogress norecurse uwtable
define dso_local noundef 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
  %8 = alloca [1000 x i64], align 16
  %9 = alloca [1000 x i64], align 16
  %10 = alloca [1000 x i64], align 16
  %11 = alloca [1000 x i64], align 16
  %12 = alloca [1000 x i64], align 16
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i64, align 8
  %16 = alloca i64, align 8
  %17 = alloca [1002 x i32], align 16
  %18 = alloca [1002 x i32], align 16
  %19 = alloca [1000 x i32], align 16
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca double, align 8
  %23 = alloca double, align 8
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  store i32 0, ptr %1, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr %2) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %3) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %4) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #3
  call void @llvm.lifetime.start.p0(i64 8000, ptr %8) #3
  call void @llvm.lifetime.start.p0(i64 8000, ptr %9) #3
  call void @llvm.lifetime.start.p0(i64 8000, ptr %10) #3
  call void @llvm.lifetime.start.p0(i64 8000, ptr %11) #3
  call void @llvm.lifetime.start.p0(i64 8000, ptr %12) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #3
  store i64 0, ptr %15, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #3
  call void @llvm.lifetime.start.p0(i64 4008, ptr %17) #3
  call void @llvm.lifetime.start.p0(i64 4008, ptr %18) #3
  call void @llvm.lifetime.start.p0(i64 4000, ptr %19) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #3
  %31 = call i32 (ptr, ...) @__isoc99_scanf(ptr noundef @.str, ptr noundef %2)
  store i32 1, ptr %3, align 4, !tbaa !9
  br label %32

32:                                               ; preds = %542, %0
  %33 = load i32, ptr %3, align 4, !tbaa !9
  %34 = load i32, ptr %2, align 4, !tbaa !9
  %35 = icmp sle i32 %33, %34
  br i1 %35, label %36, label %545

36:                                               ; preds = %32
  %37 = call i32 (ptr, ...) @__isoc99_scanf(ptr noundef @.str.1, ptr noundef %4, ptr noundef %5)
  store i32 0, ptr %13, align 4, !tbaa !9
  br label %38

38:                                               ; preds = %67, %36
  %39 = load i32, ptr %13, align 4, !tbaa !9
  %40 = load i32, ptr %4, align 4, !tbaa !9
  %41 = icmp slt i32 %39, %40
  br i1 %41, label %42, label %70

42:                                               ; preds = %38
  %43 = getelementptr inbounds [1000 x i64], ptr %11, i64 0, i64 0
  %44 = load i32, ptr %13, align 4, !tbaa !9
  %45 = sext i32 %44 to i64
  %46 = getelementptr inbounds i64, ptr %43, i64 %45
  %47 = getelementptr inbounds [1000 x i64], ptr %12, i64 0, i64 0
  %48 = load i32, ptr %13, align 4, !tbaa !9
  %49 = sext i32 %48 to i64
  %50 = getelementptr inbounds i64, ptr %47, i64 %49
  %51 = getelementptr inbounds [1000 x i64], ptr %8, i64 0, i64 0
  %52 = load i32, ptr %13, align 4, !tbaa !9
  %53 = sext i32 %52 to i64
  %54 = getelementptr inbounds i64, ptr %51, i64 %53
  %55 = getelementptr inbounds [1000 x i64], ptr %9, i64 0, i64 0
  %56 = load i32, ptr %13, align 4, !tbaa !9
  %57 = sext i32 %56 to i64
  %58 = getelementptr inbounds i64, ptr %55, i64 %57
  %59 = getelementptr inbounds [1000 x i64], ptr %10, i64 0, i64 0
  %60 = load i32, ptr %13, align 4, !tbaa !9
  %61 = sext i32 %60 to i64
  %62 = getelementptr inbounds i64, ptr %59, i64 %61
  %63 = call i32 (ptr, ...) @__isoc99_scanf(ptr noundef @.str.2, ptr noundef %46, ptr noundef %50, ptr noundef %54, ptr noundef %58, ptr noundef %62)
  %64 = load i32, ptr %13, align 4, !tbaa !9
  %65 = sext i32 %64 to i64
  %66 = getelementptr inbounds [1000 x i32], ptr %19, i64 0, i64 %65
  store i32 0, ptr %66, align 4, !tbaa !9
  br label %67

67:                                               ; preds = %42
  %68 = load i32, ptr %13, align 4, !tbaa !9
  %69 = add nsw i32 %68, 1
  store i32 %69, ptr %13, align 4, !tbaa !9
  br label %38, !llvm.loop !11

70:                                               ; preds = %38
  %71 = call i32 (ptr, ...) @__isoc99_scanf(ptr noundef @.str.1, ptr noundef %6, ptr noundef %7)
  store i32 0, ptr %20, align 4, !tbaa !9
  %72 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %72, ptr %24, align 4, !tbaa !9
  %73 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %73, ptr %25, align 4, !tbaa !9
  store i32 0, ptr %30, align 4, !tbaa !9
  br label %74

74:                                               ; preds = %494, %70
  br label %75

75:                                               ; preds = %74
  store i32 -1, ptr %21, align 4, !tbaa !9
  store double 0.000000e+00, ptr %22, align 8, !tbaa !13
  store i32 0, ptr %13, align 4, !tbaa !9
  br label %76

76:                                               ; preds = %364, %75
  %77 = load i32, ptr %13, align 4, !tbaa !9
  %78 = load i32, ptr %4, align 4, !tbaa !9
  %79 = icmp slt i32 %77, %78
  br i1 %79, label %80, label %367

80:                                               ; preds = %76
  %81 = load i32, ptr %13, align 4, !tbaa !9
  %82 = sext i32 %81 to i64
  %83 = getelementptr inbounds [1000 x i32], ptr %19, i64 0, i64 %82
  %84 = load i32, ptr %83, align 4, !tbaa !9
  %85 = icmp ne i32 %84, 0
  br i1 %85, label %86, label %87

86:                                               ; preds = %80
  br label %364

87:                                               ; preds = %80
  %88 = load i32, ptr %24, align 4, !tbaa !9
  %89 = sext i32 %88 to i64
  %90 = load i32, ptr %13, align 4, !tbaa !9
  %91 = sext i32 %90 to i64
  %92 = getelementptr inbounds [1000 x i64], ptr %11, i64 0, i64 %91
  %93 = load i64, ptr %92, align 8, !tbaa !5
  %94 = sub nsw i64 %89, %93
  %95 = icmp sgt i64 %94, 0
  br i1 %95, label %96, label %104

96:                                               ; preds = %87
  %97 = load i32, ptr %24, align 4, !tbaa !9
  %98 = sext i32 %97 to i64
  %99 = load i32, ptr %13, align 4, !tbaa !9
  %100 = sext i32 %99 to i64
  %101 = getelementptr inbounds [1000 x i64], ptr %11, i64 0, i64 %100
  %102 = load i64, ptr %101, align 8, !tbaa !5
  %103 = sub nsw i64 %98, %102
  br label %113

104:                                              ; preds = %87
  %105 = load i32, ptr %24, align 4, !tbaa !9
  %106 = sext i32 %105 to i64
  %107 = load i32, ptr %13, align 4, !tbaa !9
  %108 = sext i32 %107 to i64
  %109 = getelementptr inbounds [1000 x i64], ptr %11, i64 0, i64 %108
  %110 = load i64, ptr %109, align 8, !tbaa !5
  %111 = sub nsw i64 %106, %110
  %112 = sub nsw i64 0, %111
  br label %113

113:                                              ; preds = %104, %96
  %114 = phi i64 [ %103, %96 ], [ %112, %104 ]
  %115 = load i32, ptr %25, align 4, !tbaa !9
  %116 = sext i32 %115 to i64
  %117 = load i32, ptr %13, align 4, !tbaa !9
  %118 = sext i32 %117 to i64
  %119 = getelementptr inbounds [1000 x i64], ptr %12, i64 0, i64 %118
  %120 = load i64, ptr %119, align 8, !tbaa !5
  %121 = sub nsw i64 %116, %120
  %122 = icmp sgt i64 %121, 0
  br i1 %122, label %123, label %131

123:                                              ; preds = %113
  %124 = load i32, ptr %25, align 4, !tbaa !9
  %125 = sext i32 %124 to i64
  %126 = load i32, ptr %13, align 4, !tbaa !9
  %127 = sext i32 %126 to i64
  %128 = getelementptr inbounds [1000 x i64], ptr %12, i64 0, i64 %127
  %129 = load i64, ptr %128, align 8, !tbaa !5
  %130 = sub nsw i64 %125, %129
  br label %140

131:                                              ; preds = %113
  %132 = load i32, ptr %25, align 4, !tbaa !9
  %133 = sext i32 %132 to i64
  %134 = load i32, ptr %13, align 4, !tbaa !9
  %135 = sext i32 %134 to i64
  %136 = getelementptr inbounds [1000 x i64], ptr %12, i64 0, i64 %135
  %137 = load i64, ptr %136, align 8, !tbaa !5
  %138 = sub nsw i64 %133, %137
  %139 = sub nsw i64 0, %138
  br label %140

140:                                              ; preds = %131, %123
  %141 = phi i64 [ %130, %123 ], [ %139, %131 ]
  %142 = add nsw i64 %114, %141
  %143 = trunc i64 %142 to i32
  store i32 %143, ptr %26, align 4, !tbaa !9
  %144 = load i32, ptr %6, align 4, !tbaa !9
  %145 = sext i32 %144 to i64
  %146 = load i32, ptr %13, align 4, !tbaa !9
  %147 = sext i32 %146 to i64
  %148 = getelementptr inbounds [1000 x i64], ptr %11, i64 0, i64 %147
  %149 = load i64, ptr %148, align 8, !tbaa !5
  %150 = sub nsw i64 %145, %149
  %151 = icmp sgt i64 %150, 0
  br i1 %151, label %152, label %160

152:                                              ; preds = %140
  %153 = load i32, ptr %6, align 4, !tbaa !9
  %154 = sext i32 %153 to i64
  %155 = load i32, ptr %13, align 4, !tbaa !9
  %156 = sext i32 %155 to i64
  %157 = getelementptr inbounds [1000 x i64], ptr %11, i64 0, i64 %156
  %158 = load i64, ptr %157, align 8, !tbaa !5
  %159 = sub nsw i64 %154, %158
  br label %169

160:                                              ; preds = %140
  %161 = load i32, ptr %6, align 4, !tbaa !9
  %162 = sext i32 %161 to i64
  %163 = load i32, ptr %13, align 4, !tbaa !9
  %164 = sext i32 %163 to i64
  %165 = getelementptr inbounds [1000 x i64], ptr %11, i64 0, i64 %164
  %166 = load i64, ptr %165, align 8, !tbaa !5
  %167 = sub nsw i64 %162, %166
  %168 = sub nsw i64 0, %167
  br label %169

169:                                              ; preds = %160, %152
  %170 = phi i64 [ %159, %152 ], [ %168, %160 ]
  %171 = load i32, ptr %7, align 4, !tbaa !9
  %172 = sext i32 %171 to i64
  %173 = load i32, ptr %13, align 4, !tbaa !9
  %174 = sext i32 %173 to i64
  %175 = getelementptr inbounds [1000 x i64], ptr %12, i64 0, i64 %174
  %176 = load i64, ptr %175, align 8, !tbaa !5
  %177 = sub nsw i64 %172, %176
  %178 = icmp sgt i64 %177, 0
  br i1 %178, label %179, label %187

179:                                              ; preds = %169
  %180 = load i32, ptr %7, align 4, !tbaa !9
  %181 = sext i32 %180 to i64
  %182 = load i32, ptr %13, align 4, !tbaa !9
  %183 = sext i32 %182 to i64
  %184 = getelementptr inbounds [1000 x i64], ptr %12, i64 0, i64 %183
  %185 = load i64, ptr %184, align 8, !tbaa !5
  %186 = sub nsw i64 %181, %185
  br label %196

187:                                              ; preds = %169
  %188 = load i32, ptr %7, align 4, !tbaa !9
  %189 = sext i32 %188 to i64
  %190 = load i32, ptr %13, align 4, !tbaa !9
  %191 = sext i32 %190 to i64
  %192 = getelementptr inbounds [1000 x i64], ptr %12, i64 0, i64 %191
  %193 = load i64, ptr %192, align 8, !tbaa !5
  %194 = sub nsw i64 %189, %193
  %195 = sub nsw i64 0, %194
  br label %196

196:                                              ; preds = %187, %179
  %197 = phi i64 [ %186, %179 ], [ %195, %187 ]
  %198 = add nsw i64 %170, %197
  %199 = trunc i64 %198 to i32
  store i32 %199, ptr %27, align 4, !tbaa !9
  %200 = load i32, ptr %26, align 4, !tbaa !9
  %201 = add nsw i32 %200, 1
  %202 = load i32, ptr %27, align 4, !tbaa !9
  %203 = add nsw i32 %201, %202
  %204 = load i32, ptr %5, align 4, !tbaa !9
  %205 = icmp sgt i32 %203, %204
  br i1 %205, label %206, label %210

206:                                              ; preds = %196
  %207 = load i32, ptr %13, align 4, !tbaa !9
  %208 = sext i32 %207 to i64
  %209 = getelementptr inbounds [1000 x i32], ptr %19, i64 0, i64 %208
  store i32 1, ptr %209, align 4, !tbaa !9
  br label %364

210:                                              ; preds = %196
  %211 = load i32, ptr %13, align 4, !tbaa !9
  %212 = sext i32 %211 to i64
  %213 = getelementptr inbounds [1000 x i64], ptr %8, i64 0, i64 %212
  %214 = load i64, ptr %213, align 8, !tbaa !5
  %215 = load i32, ptr %30, align 4, !tbaa !9
  %216 = load i32, ptr %26, align 4, !tbaa !9
  %217 = add nsw i32 %215, %216
  %218 = sext i32 %217 to i64
  %219 = load i32, ptr %13, align 4, !tbaa !9
  %220 = sext i32 %219 to i64
  %221 = getelementptr inbounds [1000 x i64], ptr %9, i64 0, i64 %220
  %222 = load i64, ptr %221, align 8, !tbaa !5
  %223 = mul nsw i64 %218, %222
  %224 = sub nsw i64 %214, %223
  %225 = icmp sgt i64 %224, 0
  br i1 %225, label %226, label %241

226:                                              ; preds = %210
  %227 = load i32, ptr %13, align 4, !tbaa !9
  %228 = sext i32 %227 to i64
  %229 = getelementptr inbounds [1000 x i64], ptr %8, i64 0, i64 %228
  %230 = load i64, ptr %229, align 8, !tbaa !5
  %231 = load i32, ptr %30, align 4, !tbaa !9
  %232 = load i32, ptr %26, align 4, !tbaa !9
  %233 = add nsw i32 %231, %232
  %234 = sext i32 %233 to i64
  %235 = load i32, ptr %13, align 4, !tbaa !9
  %236 = sext i32 %235 to i64
  %237 = getelementptr inbounds [1000 x i64], ptr %9, i64 0, i64 %236
  %238 = load i64, ptr %237, align 8, !tbaa !5
  %239 = mul nsw i64 %234, %238
  %240 = sub nsw i64 %230, %239
  br label %242

241:                                              ; preds = %210
  br label %242

242:                                              ; preds = %241, %226
  %243 = phi i64 [ %240, %226 ], [ 0, %241 ]
  %244 = load i32, ptr %5, align 4, !tbaa !9
  %245 = load i32, ptr %26, align 4, !tbaa !9
  %246 = sub nsw i32 %244, %245
  %247 = load i32, ptr %27, align 4, !tbaa !9
  %248 = sub nsw i32 %246, %247
  %249 = sext i32 %248 to i64
  %250 = load i32, ptr %13, align 4, !tbaa !9
  %251 = sext i32 %250 to i64
  %252 = getelementptr inbounds [1000 x i64], ptr %10, i64 0, i64 %251
  %253 = load i64, ptr %252, align 8, !tbaa !5
  %254 = icmp slt i64 %249, %253
  br i1 %254, label %255, label %262

255:                                              ; preds = %242
  %256 = load i32, ptr %5, align 4, !tbaa !9
  %257 = load i32, ptr %26, align 4, !tbaa !9
  %258 = sub nsw i32 %256, %257
  %259 = load i32, ptr %27, align 4, !tbaa !9
  %260 = sub nsw i32 %258, %259
  %261 = sext i32 %260 to i64
  br label %267

262:                                              ; preds = %242
  %263 = load i32, ptr %13, align 4, !tbaa !9
  %264 = sext i32 %263 to i64
  %265 = getelementptr inbounds [1000 x i64], ptr %10, i64 0, i64 %264
  %266 = load i64, ptr %265, align 8, !tbaa !5
  br label %267

267:                                              ; preds = %262, %255
  %268 = phi i64 [ %261, %255 ], [ %266, %262 ]
  %269 = icmp slt i64 %243, %268
  br i1 %269, label %270, label %304

270:                                              ; preds = %267
  %271 = load i32, ptr %13, align 4, !tbaa !9
  %272 = sext i32 %271 to i64
  %273 = getelementptr inbounds [1000 x i64], ptr %8, i64 0, i64 %272
  %274 = load i64, ptr %273, align 8, !tbaa !5
  %275 = load i32, ptr %30, align 4, !tbaa !9
  %276 = load i32, ptr %26, align 4, !tbaa !9
  %277 = add nsw i32 %275, %276
  %278 = sext i32 %277 to i64
  %279 = load i32, ptr %13, align 4, !tbaa !9
  %280 = sext i32 %279 to i64
  %281 = getelementptr inbounds [1000 x i64], ptr %9, i64 0, i64 %280
  %282 = load i64, ptr %281, align 8, !tbaa !5
  %283 = mul nsw i64 %278, %282
  %284 = sub nsw i64 %274, %283
  %285 = icmp sgt i64 %284, 0
  br i1 %285, label %286, label %301

286:                                              ; preds = %270
  %287 = load i32, ptr %13, align 4, !tbaa !9
  %288 = sext i32 %287 to i64
  %289 = getelementptr inbounds [1000 x i64], ptr %8, i64 0, i64 %288
  %290 = load i64, ptr %289, align 8, !tbaa !5
  %291 = load i32, ptr %30, align 4, !tbaa !9
  %292 = load i32, ptr %26, align 4, !tbaa !9
  %293 = add nsw i32 %291, %292
  %294 = sext i32 %293 to i64
  %295 = load i32, ptr %13, align 4, !tbaa !9
  %296 = sext i32 %295 to i64
  %297 = getelementptr inbounds [1000 x i64], ptr %9, i64 0, i64 %296
  %298 = load i64, ptr %297, align 8, !tbaa !5
  %299 = mul nsw i64 %294, %298
  %300 = sub nsw i64 %290, %299
  br label %302

301:                                              ; preds = %270
  br label %302

302:                                              ; preds = %301, %286
  %303 = phi i64 [ %300, %286 ], [ 0, %301 ]
  br label %330

304:                                              ; preds = %267
  %305 = load i32, ptr %5, align 4, !tbaa !9
  %306 = load i32, ptr %26, align 4, !tbaa !9
  %307 = sub nsw i32 %305, %306
  %308 = load i32, ptr %27, align 4, !tbaa !9
  %309 = sub nsw i32 %307, %308
  %310 = sext i32 %309 to i64
  %311 = load i32, ptr %13, align 4, !tbaa !9
  %312 = sext i32 %311 to i64
  %313 = getelementptr inbounds [1000 x i64], ptr %10, i64 0, i64 %312
  %314 = load i64, ptr %313, align 8, !tbaa !5
  %315 = icmp slt i64 %310, %314
  br i1 %315, label %316, label %323

316:                                              ; preds = %304
  %317 = load i32, ptr %5, align 4, !tbaa !9
  %318 = load i32, ptr %26, align 4, !tbaa !9
  %319 = sub nsw i32 %317, %318
  %320 = load i32, ptr %27, align 4, !tbaa !9
  %321 = sub nsw i32 %319, %320
  %322 = sext i32 %321 to i64
  br label %328

323:                                              ; preds = %304
  %324 = load i32, ptr %13, align 4, !tbaa !9
  %325 = sext i32 %324 to i64
  %326 = getelementptr inbounds [1000 x i64], ptr %10, i64 0, i64 %325
  %327 = load i64, ptr %326, align 8, !tbaa !5
  br label %328

328:                                              ; preds = %323, %316
  %329 = phi i64 [ %322, %316 ], [ %327, %323 ]
  br label %330

330:                                              ; preds = %328, %302
  %331 = phi i64 [ %303, %302 ], [ %329, %328 ]
  %332 = trunc i64 %331 to i32
  store i32 %332, ptr %28, align 4, !tbaa !9
  %333 = load i32, ptr %28, align 4, !tbaa !9
  %334 = icmp eq i32 %333, 0
  br i1 %334, label %335, label %339

335:                                              ; preds = %330
  %336 = load i32, ptr %13, align 4, !tbaa !9
  %337 = sext i32 %336 to i64
  %338 = getelementptr inbounds [1000 x i32], ptr %19, i64 0, i64 %337
  store i32 1, ptr %338, align 4, !tbaa !9
  br label %364

339:                                              ; preds = %330
  %340 = load i32, ptr %28, align 4, !tbaa !9
  %341 = sitofp i32 %340 to double
  %342 = load i32, ptr %13, align 4, !tbaa !9
  %343 = sext i32 %342 to i64
  %344 = getelementptr inbounds [1000 x i64], ptr %9, i64 0, i64 %343
  %345 = load i64, ptr %344, align 8, !tbaa !5
  %346 = sitofp i64 %345 to double
  %347 = fmul double %341, %346
  %348 = load i32, ptr %26, align 4, !tbaa !9
  %349 = load i32, ptr %28, align 4, !tbaa !9
  %350 = add nsw i32 %348, %349
  %351 = sitofp i32 %350 to double
  %352 = fdiv double %347, %351
  store double %352, ptr %23, align 8, !tbaa !13
  %353 = load i32, ptr %21, align 4, !tbaa !9
  %354 = icmp eq i32 %353, -1
  br i1 %354, label %359, label %355

355:                                              ; preds = %339
  %356 = load double, ptr %23, align 8, !tbaa !13
  %357 = load double, ptr %22, align 8, !tbaa !13
  %358 = fcmp ogt double %356, %357
  br i1 %358, label %359, label %363

359:                                              ; preds = %355, %339
  %360 = load i32, ptr %13, align 4, !tbaa !9
  store i32 %360, ptr %21, align 4, !tbaa !9
  %361 = load double, ptr %23, align 8, !tbaa !13
  store double %361, ptr %22, align 8, !tbaa !13
  %362 = load i32, ptr %28, align 4, !tbaa !9
  store i32 %362, ptr %29, align 4, !tbaa !9
  br label %363

363:                                              ; preds = %359, %355
  br label %364

364:                                              ; preds = %363, %335, %206, %86
  %365 = load i32, ptr %13, align 4, !tbaa !9
  %366 = add nsw i32 %365, 1
  store i32 %366, ptr %13, align 4, !tbaa !9
  br label %76, !llvm.loop !15

367:                                              ; preds = %76
  %368 = load i32, ptr %21, align 4, !tbaa !9
  %369 = icmp eq i32 %368, -1
  br i1 %369, label %370, label %371

370:                                              ; preds = %367
  br label %519

371:                                              ; preds = %367
  %372 = load i32, ptr %21, align 4, !tbaa !9
  %373 = load i32, ptr %20, align 4, !tbaa !9
  %374 = sext i32 %373 to i64
  %375 = getelementptr inbounds [1002 x i32], ptr %17, i64 0, i64 %374
  store i32 %372, ptr %375, align 4, !tbaa !9
  %376 = load i32, ptr %29, align 4, !tbaa !9
  %377 = load i32, ptr %20, align 4, !tbaa !9
  %378 = sext i32 %377 to i64
  %379 = getelementptr inbounds [1002 x i32], ptr %18, i64 0, i64 %378
  store i32 %376, ptr %379, align 4, !tbaa !9
  %380 = load i32, ptr %24, align 4, !tbaa !9
  %381 = sext i32 %380 to i64
  %382 = load i32, ptr %21, align 4, !tbaa !9
  %383 = sext i32 %382 to i64
  %384 = getelementptr inbounds [1000 x i64], ptr %11, i64 0, i64 %383
  %385 = load i64, ptr %384, align 8, !tbaa !5
  %386 = sub nsw i64 %381, %385
  %387 = icmp sgt i64 %386, 0
  br i1 %387, label %388, label %396

388:                                              ; preds = %371
  %389 = load i32, ptr %24, align 4, !tbaa !9
  %390 = sext i32 %389 to i64
  %391 = load i32, ptr %21, align 4, !tbaa !9
  %392 = sext i32 %391 to i64
  %393 = getelementptr inbounds [1000 x i64], ptr %11, i64 0, i64 %392
  %394 = load i64, ptr %393, align 8, !tbaa !5
  %395 = sub nsw i64 %390, %394
  br label %405

396:                                              ; preds = %371
  %397 = load i32, ptr %24, align 4, !tbaa !9
  %398 = sext i32 %397 to i64
  %399 = load i32, ptr %21, align 4, !tbaa !9
  %400 = sext i32 %399 to i64
  %401 = getelementptr inbounds [1000 x i64], ptr %11, i64 0, i64 %400
  %402 = load i64, ptr %401, align 8, !tbaa !5
  %403 = sub nsw i64 %398, %402
  %404 = sub nsw i64 0, %403
  br label %405

405:                                              ; preds = %396, %388
  %406 = phi i64 [ %395, %388 ], [ %404, %396 ]
  %407 = load i32, ptr %25, align 4, !tbaa !9
  %408 = sext i32 %407 to i64
  %409 = load i32, ptr %21, align 4, !tbaa !9
  %410 = sext i32 %409 to i64
  %411 = getelementptr inbounds [1000 x i64], ptr %12, i64 0, i64 %410
  %412 = load i64, ptr %411, align 8, !tbaa !5
  %413 = sub nsw i64 %408, %412
  %414 = icmp sgt i64 %413, 0
  br i1 %414, label %415, label %423

415:                                              ; preds = %405
  %416 = load i32, ptr %25, align 4, !tbaa !9
  %417 = sext i32 %416 to i64
  %418 = load i32, ptr %21, align 4, !tbaa !9
  %419 = sext i32 %418 to i64
  %420 = getelementptr inbounds [1000 x i64], ptr %12, i64 0, i64 %419
  %421 = load i64, ptr %420, align 8, !tbaa !5
  %422 = sub nsw i64 %417, %421
  br label %432

423:                                              ; preds = %405
  %424 = load i32, ptr %25, align 4, !tbaa !9
  %425 = sext i32 %424 to i64
  %426 = load i32, ptr %21, align 4, !tbaa !9
  %427 = sext i32 %426 to i64
  %428 = getelementptr inbounds [1000 x i64], ptr %12, i64 0, i64 %427
  %429 = load i64, ptr %428, align 8, !tbaa !5
  %430 = sub nsw i64 %425, %429
  %431 = sub nsw i64 0, %430
  br label %432

432:                                              ; preds = %423, %415
  %433 = phi i64 [ %422, %415 ], [ %431, %423 ]
  %434 = add nsw i64 %406, %433
  %435 = load i32, ptr %29, align 4, !tbaa !9
  %436 = sext i32 %435 to i64
  %437 = add nsw i64 %434, %436
  %438 = load i32, ptr %5, align 4, !tbaa !9
  %439 = sext i32 %438 to i64
  %440 = sub nsw i64 %439, %437
  %441 = trunc i64 %440 to i32
  store i32 %441, ptr %5, align 4, !tbaa !9
  %442 = load i32, ptr %24, align 4, !tbaa !9
  %443 = sext i32 %442 to i64
  %444 = load i32, ptr %21, align 4, !tbaa !9
  %445 = sext i32 %444 to i64
  %446 = getelementptr inbounds [1000 x i64], ptr %11, i64 0, i64 %445
  %447 = load i64, ptr %446, align 8, !tbaa !5
  %448 = sub nsw i64 %443, %447
  %449 = icmp sgt i64 %448, 0
  br i1 %449, label %450, label %458

450:                                              ; preds = %432
  %451 = load i32, ptr %24, align 4, !tbaa !9
  %452 = sext i32 %451 to i64
  %453 = load i32, ptr %21, align 4, !tbaa !9
  %454 = sext i32 %453 to i64
  %455 = getelementptr inbounds [1000 x i64], ptr %11, i64 0, i64 %454
  %456 = load i64, ptr %455, align 8, !tbaa !5
  %457 = sub nsw i64 %452, %456
  br label %467

458:                                              ; preds = %432
  %459 = load i32, ptr %24, align 4, !tbaa !9
  %460 = sext i32 %459 to i64
  %461 = load i32, ptr %21, align 4, !tbaa !9
  %462 = sext i32 %461 to i64
  %463 = getelementptr inbounds [1000 x i64], ptr %11, i64 0, i64 %462
  %464 = load i64, ptr %463, align 8, !tbaa !5
  %465 = sub nsw i64 %460, %464
  %466 = sub nsw i64 0, %465
  br label %467

467:                                              ; preds = %458, %450
  %468 = phi i64 [ %457, %450 ], [ %466, %458 ]
  %469 = load i32, ptr %25, align 4, !tbaa !9
  %470 = sext i32 %469 to i64
  %471 = load i32, ptr %21, align 4, !tbaa !9
  %472 = sext i32 %471 to i64
  %473 = getelementptr inbounds [1000 x i64], ptr %12, i64 0, i64 %472
  %474 = load i64, ptr %473, align 8, !tbaa !5
  %475 = sub nsw i64 %470, %474
  %476 = icmp sgt i64 %475, 0
  br i1 %476, label %477, label %485

477:                                              ; preds = %467
  %478 = load i32, ptr %25, align 4, !tbaa !9
  %479 = sext i32 %478 to i64
  %480 = load i32, ptr %21, align 4, !tbaa !9
  %481 = sext i32 %480 to i64
  %482 = getelementptr inbounds [1000 x i64], ptr %12, i64 0, i64 %481
  %483 = load i64, ptr %482, align 8, !tbaa !5
  %484 = sub nsw i64 %479, %483
  br label %494

485:                                              ; preds = %467
  %486 = load i32, ptr %25, align 4, !tbaa !9
  %487 = sext i32 %486 to i64
  %488 = load i32, ptr %21, align 4, !tbaa !9
  %489 = sext i32 %488 to i64
  %490 = getelementptr inbounds [1000 x i64], ptr %12, i64 0, i64 %489
  %491 = load i64, ptr %490, align 8, !tbaa !5
  %492 = sub nsw i64 %487, %491
  %493 = sub nsw i64 0, %492
  br label %494

494:                                              ; preds = %485, %477
  %495 = phi i64 [ %484, %477 ], [ %493, %485 ]
  %496 = add nsw i64 %468, %495
  %497 = load i32, ptr %29, align 4, !tbaa !9
  %498 = sext i32 %497 to i64
  %499 = add nsw i64 %496, %498
  %500 = load i32, ptr %30, align 4, !tbaa !9
  %501 = sext i32 %500 to i64
  %502 = add nsw i64 %501, %499
  %503 = trunc i64 %502 to i32
  store i32 %503, ptr %30, align 4, !tbaa !9
  %504 = load i32, ptr %21, align 4, !tbaa !9
  %505 = sext i32 %504 to i64
  %506 = getelementptr inbounds [1000 x i64], ptr %11, i64 0, i64 %505
  %507 = load i64, ptr %506, align 8, !tbaa !5
  %508 = trunc i64 %507 to i32
  store i32 %508, ptr %24, align 4, !tbaa !9
  %509 = load i32, ptr %21, align 4, !tbaa !9
  %510 = sext i32 %509 to i64
  %511 = getelementptr inbounds [1000 x i64], ptr %12, i64 0, i64 %510
  %512 = load i64, ptr %511, align 8, !tbaa !5
  %513 = trunc i64 %512 to i32
  store i32 %513, ptr %25, align 4, !tbaa !9
  %514 = load i32, ptr %21, align 4, !tbaa !9
  %515 = sext i32 %514 to i64
  %516 = getelementptr inbounds [1000 x i32], ptr %19, i64 0, i64 %515
  store i32 1, ptr %516, align 4, !tbaa !9
  %517 = load i32, ptr %20, align 4, !tbaa !9
  %518 = add nsw i32 %517, 1
  store i32 %518, ptr %20, align 4, !tbaa !9
  br label %74, !llvm.loop !16

519:                                              ; preds = %370
  %520 = load i32, ptr %3, align 4, !tbaa !9
  %521 = call i32 (ptr, ...) @printf(ptr noundef @.str.3, i32 noundef %520)
  store i32 0, ptr %13, align 4, !tbaa !9
  br label %522

522:                                              ; preds = %537, %519
  %523 = load i32, ptr %13, align 4, !tbaa !9
  %524 = load i32, ptr %20, align 4, !tbaa !9
  %525 = icmp slt i32 %523, %524
  br i1 %525, label %526, label %540

526:                                              ; preds = %522
  %527 = load i32, ptr %13, align 4, !tbaa !9
  %528 = sext i32 %527 to i64
  %529 = getelementptr inbounds [1002 x i32], ptr %17, i64 0, i64 %528
  %530 = load i32, ptr %529, align 4, !tbaa !9
  %531 = add nsw i32 %530, 1
  %532 = load i32, ptr %13, align 4, !tbaa !9
  %533 = sext i32 %532 to i64
  %534 = getelementptr inbounds [1002 x i32], ptr %18, i64 0, i64 %533
  %535 = load i32, ptr %534, align 4, !tbaa !9
  %536 = call i32 (ptr, ...) @printf(ptr noundef @.str.4, i32 noundef %531, i32 noundef %535)
  br label %537

537:                                              ; preds = %526
  %538 = load i32, ptr %13, align 4, !tbaa !9
  %539 = add nsw i32 %538, 1
  store i32 %539, ptr %13, align 4, !tbaa !9
  br label %522, !llvm.loop !17

540:                                              ; preds = %522
  %541 = call i32 (ptr, ...) @printf(ptr noundef @.str.5)
  br label %542

542:                                              ; preds = %540
  %543 = load i32, ptr %3, align 4, !tbaa !9
  %544 = add nsw i32 %543, 1
  store i32 %544, ptr %3, align 4, !tbaa !9
  br label %32, !llvm.loop !18

545:                                              ; preds = %32
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #3
  call void @llvm.lifetime.end.p0(i64 4000, ptr %19) #3
  call void @llvm.lifetime.end.p0(i64 4008, ptr %18) #3
  call void @llvm.lifetime.end.p0(i64 4008, ptr %17) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #3
  call void @llvm.lifetime.end.p0(i64 8000, ptr %12) #3
  call void @llvm.lifetime.end.p0(i64 8000, ptr %11) #3
  call void @llvm.lifetime.end.p0(i64 8000, ptr %10) #3
  call void @llvm.lifetime.end.p0(i64 8000, ptr %9) #3
  call void @llvm.lifetime.end.p0(i64 8000, ptr %8) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %2) #3
  ret i32 0
}

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

declare i32 @__isoc99_scanf(ptr noundef, ...) #2

declare i32 @printf(ptr noundef, ...) #2

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

attributes #0 = { mustprogress norecurse 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 = { "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 #3 = { 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 = !{!"long long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = !{!14, !14, i64 0}
!14 = !{!"double", !7, i64 0}
!15 = distinct !{!15, !12}
!16 = distinct !{!16, !12}
!17 = distinct !{!17, !12}
!18 = distinct !{!18, !12}


; 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"

@.str = external hidden unnamed_addr constant [3 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [5 x i8], align 1

; Function Attrs: mustprogress nofree norecurse nounwind uwtable
define dso_local noundef i32 @main() local_unnamed_addr #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 [1000 x i64], align 16
  %7 = alloca [1000 x i64], align 16
  %8 = alloca [1000 x i64], align 16
  %9 = alloca [1000 x i64], align 16
  %10 = alloca [1000 x i64], align 16
  %11 = alloca [1002 x i32], align 16
  %12 = alloca [1002 x i32], align 16
  %13 = alloca [1000 x i32], align 16
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %1) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %2) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %3) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #4
  call void @llvm.lifetime.start.p0(i64 8000, ptr nonnull %6) #4
  call void @llvm.lifetime.start.p0(i64 8000, ptr nonnull %7) #4
  call void @llvm.lifetime.start.p0(i64 8000, ptr nonnull %8) #4
  call void @llvm.lifetime.start.p0(i64 8000, ptr nonnull %9) #4
  call void @llvm.lifetime.start.p0(i64 8000, ptr nonnull %10) #4
  call void @llvm.lifetime.start.p0(i64 4008, ptr nonnull %11) #4
  call void @llvm.lifetime.start.p0(i64 4008, ptr nonnull %12) #4
  call void @llvm.lifetime.start.p0(i64 4000, ptr nonnull %13) #4
  %14 = call i32 (ptr, ...) @__isoc99_scanf(ptr noundef nonnull @.str, ptr noundef nonnull %1)
  %15 = load i32, ptr %1, align 4, !tbaa !5
  %.not168 = icmp slt i32 %15, 1
  br i1 %.not168, label %._crit_edge173, label %.lr.ph172

.lr.ph172:                                        ; preds = %0, %._crit_edge167
  %.0115170 = phi i32 [ %.2.lcssa191, %._crit_edge167 ], [ undef, %0 ]
  %.0116169 = phi i32 [ %123, %._crit_edge167 ], [ 1, %0 ]
  %16 = call i32 (ptr, ...) @__isoc99_scanf(ptr noundef nonnull @.str.1, ptr noundef nonnull %2, ptr noundef nonnull %3)
  %17 = load i32, ptr %2, align 4, !tbaa !5
  %18 = icmp sgt i32 %17, 0
  br i1 %18, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %.lr.ph172, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ 0, %.lr.ph172 ]
  %19 = getelementptr inbounds i64, ptr %9, i64 %indvars.iv
  %20 = getelementptr inbounds i64, ptr %10, i64 %indvars.iv
  %21 = getelementptr inbounds i64, ptr %6, i64 %indvars.iv
  %22 = getelementptr inbounds i64, ptr %7, i64 %indvars.iv
  %23 = getelementptr inbounds i64, ptr %8, i64 %indvars.iv
  %24 = call i32 (ptr, ...) @__isoc99_scanf(ptr noundef nonnull @.str.2, ptr noundef nonnull %19, ptr noundef nonnull %20, ptr noundef nonnull %21, ptr noundef nonnull %22, ptr noundef nonnull %23)
  %25 = getelementptr inbounds [1000 x i32], ptr %13, i64 0, i64 %indvars.iv
  store i32 0, ptr %25, align 4, !tbaa !5
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %26 = load i32, ptr %2, align 4, !tbaa !5
  %27 = sext i32 %26 to i64
  %28 = icmp slt i64 %indvars.iv.next, %27
  br i1 %28, label %.lr.ph, label %._crit_edge, !llvm.loop !9

._crit_edge:                                      ; preds = %.lr.ph, %.lr.ph172
  %29 = call i32 (ptr, ...) @__isoc99_scanf(ptr noundef nonnull @.str.1, ptr noundef nonnull %4, ptr noundef nonnull %5)
  %30 = load i32, ptr %4, align 4, !tbaa !5
  %31 = load i32, ptr %5, align 4, !tbaa !5
  %32 = load i32, ptr %2, align 4, !tbaa !5
  %33 = icmp sgt i32 %32, 0
  %34 = sext i32 %30 to i64
  %35 = sext i32 %31 to i64
  %wide.trip.count = zext nneg i32 %32 to i64
  br i1 %33, label %.lr.ph161.lr.ph, label %._crit_edge162.thread

.lr.ph161.lr.ph:                                  ; preds = %._crit_edge
  %.promoted = load i32, ptr %3, align 4
  br label %.lr.ph161

.lr.ph161:                                        ; preds = %.lr.ph161.lr.ph, %93
  %.0197 = phi i32 [ 0, %.lr.ph161.lr.ph ], [ %111, %93 ]
  %.1196 = phi i32 [ %.0115170, %.lr.ph161.lr.ph ], [ %.3, %93 ]
  %.0121195 = phi i32 [ %31, %.lr.ph161.lr.ph ], [ %113, %93 ]
  %.0122194 = phi i32 [ %30, %.lr.ph161.lr.ph ], [ %112, %93 ]
  %36 = phi i32 [ %.promoted, %.lr.ph161.lr.ph ], [ %110, %93 ]
  %indvars.iv179193 = phi i64 [ 0, %.lr.ph161.lr.ph ], [ %indvars.iv.next180, %93 ]
  %indvars.iv185192 = phi i32 [ 0, %.lr.ph161.lr.ph ], [ %indvars.iv.next186, %93 ]
  %37 = sext i32 %.0122194 to i64
  %38 = sext i32 %.0121195 to i64
  br label %39

39:                                               ; preds = %.lr.ph161, %91
  %indvars.iv176 = phi i64 [ 0, %.lr.ph161 ], [ %indvars.iv.next177, %91 ]
  %.2159 = phi i32 [ %.1196, %.lr.ph161 ], [ %.3, %91 ]
  %.0123157 = phi i32 [ -1, %.lr.ph161 ], [ %.1124, %91 ]
  %.0125156 = phi double [ 0.000000e+00, %.lr.ph161 ], [ %.1126, %91 ]
  %40 = getelementptr inbounds [1000 x i32], ptr %13, i64 0, i64 %indvars.iv176
  %41 = load i32, ptr %40, align 4, !tbaa !5
  %.not150 = icmp eq i32 %41, 0
  br i1 %.not150, label %42, label %91

42:                                               ; preds = %39
  %43 = getelementptr inbounds [1000 x i64], ptr %9, i64 0, i64 %indvars.iv176
  %44 = load i64, ptr %43, align 8, !tbaa !11
  %45 = sub nsw i64 %37, %44
  %46 = call i64 @llvm.abs.i64(i64 %45, i1 true)
  %47 = getelementptr inbounds [1000 x i64], ptr %10, i64 0, i64 %indvars.iv176
  %48 = load i64, ptr %47, align 8, !tbaa !11
  %49 = sub nsw i64 %38, %48
  %50 = call i64 @llvm.abs.i64(i64 %49, i1 true)
  %51 = add nuw nsw i64 %50, %46
  %52 = trunc i64 %51 to i32
  %53 = sub nsw i64 %34, %44
  %54 = call i64 @llvm.abs.i64(i64 %53, i1 true)
  %55 = sub nsw i64 %35, %48
  %56 = call i64 @llvm.abs.i64(i64 %55, i1 true)
  %57 = add nuw nsw i64 %56, %54
  %58 = trunc i64 %57 to i32
  %59 = add i32 %58, %52
  %60 = add i32 %59, 1
  %61 = icmp sgt i32 %60, %36
  br i1 %61, label %62, label %63

62:                                               ; preds = %42
  store i32 1, ptr %40, align 4, !tbaa !5
  br label %91

63:                                               ; preds = %42
  %64 = getelementptr inbounds [1000 x i64], ptr %6, i64 0, i64 %indvars.iv176
  %65 = load i64, ptr %64, align 8, !tbaa !11
  %66 = add nsw i32 %.0197, %52
  %67 = sext i32 %66 to i64
  %68 = getelementptr inbounds [1000 x i64], ptr %7, i64 0, i64 %indvars.iv176
  %69 = load i64, ptr %68, align 8, !tbaa !11
  %70 = mul nsw i64 %69, %67
  %71 = sub nsw i64 %65, %70
  %spec.select = call i64 @llvm.smax.i64(i64 %71, i64 0)
  %72 = sub i32 %36, %59
  %73 = sext i32 %72 to i64
  %74 = getelementptr inbounds [1000 x i64], ptr %8, i64 0, i64 %indvars.iv176
  %75 = load i64, ptr %74, align 8, !tbaa !11
  %76 = call i64 @llvm.smin.i64(i64 %75, i64 %73)
  %spec.select152 = call i64 @llvm.smin.i64(i64 %spec.select, i64 %76)
  %77 = trunc i64 %spec.select152 to i32
  %78 = icmp eq i32 %77, 0
  br i1 %78, label %79, label %80

79:                                               ; preds = %63
  store i32 1, ptr %40, align 4, !tbaa !5
  br label %91

80:                                               ; preds = %63
  %81 = sitofp i32 %77 to double
  %82 = sitofp i64 %69 to double
  %83 = fmul double %82, %81
  %84 = add nsw i32 %77, %52
  %85 = sitofp i32 %84 to double
  %86 = fdiv double %83, %85
  %87 = icmp eq i32 %.0123157, -1
  %88 = fcmp ogt double %86, %.0125156
  %or.cond = select i1 %87, i1 true, i1 %88
  br i1 %or.cond, label %89, label %91

89:                                               ; preds = %80
  %90 = trunc nuw nsw i64 %indvars.iv176 to i32
  br label %91

91:                                               ; preds = %80, %89, %39, %79, %62
  %.1126 = phi double [ %.0125156, %39 ], [ %.0125156, %62 ], [ %.0125156, %79 ], [ %86, %89 ], [ %.0125156, %80 ]
  %.1124 = phi i32 [ %.0123157, %39 ], [ %.0123157, %62 ], [ %.0123157, %79 ], [ %90, %89 ], [ %.0123157, %80 ]
  %.3 = phi i32 [ %.2159, %39 ], [ %.2159, %62 ], [ %.2159, %79 ], [ %77, %89 ], [ %.2159, %80 ]
  %indvars.iv.next177 = add nuw nsw i64 %indvars.iv176, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next177, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge162, label %39, !llvm.loop !13

._crit_edge162:                                   ; preds = %91
  %92 = icmp eq i32 %.1124, -1
  br i1 %92, label %._crit_edge162.thread, label %93

93:                                               ; preds = %._crit_edge162
  %94 = getelementptr inbounds [1002 x i32], ptr %11, i64 0, i64 %indvars.iv179193
  store i32 %.1124, ptr %94, align 4, !tbaa !5
  %95 = getelementptr inbounds [1002 x i32], ptr %12, i64 0, i64 %indvars.iv179193
  store i32 %.3, ptr %95, align 4, !tbaa !5
  %96 = sext i32 %.0122194 to i64
  %97 = sext i32 %.1124 to i64
  %98 = getelementptr inbounds [1000 x i64], ptr %9, i64 0, i64 %97
  %99 = load i64, ptr %98, align 8, !tbaa !11
  %100 = sub nsw i64 %96, %99
  %101 = call i64 @llvm.abs.i64(i64 %100, i1 true)
  %102 = sext i32 %.0121195 to i64
  %103 = getelementptr inbounds [1000 x i64], ptr %10, i64 0, i64 %97
  %104 = load i64, ptr %103, align 8, !tbaa !11
  %105 = sub nsw i64 %102, %104
  %106 = call i64 @llvm.abs.i64(i64 %105, i1 true)
  %107 = add nuw nsw i64 %106, %101
  %108 = trunc i64 %107 to i32
  %109 = add i32 %.3, %108
  %110 = sub i32 %36, %109
  store i32 %110, ptr %3, align 4, !tbaa !5
  %111 = add i32 %109, %.0197
  %112 = trunc i64 %99 to i32
  %113 = trunc i64 %104 to i32
  %114 = getelementptr inbounds [1000 x i32], ptr %13, i64 0, i64 %97
  store i32 1, ptr %114, align 4, !tbaa !5
  %indvars.iv.next180 = add nuw nsw i64 %indvars.iv179193, 1
  %indvars.iv.next186 = add nuw i32 %indvars.iv185192, 1
  br i1 %33, label %.lr.ph161, label %._crit_edge162.thread, !llvm.loop !14

._crit_edge162.thread:                            ; preds = %._crit_edge162, %93, %._crit_edge
  %indvars.iv185.lcssa = phi i32 [ 0, %._crit_edge ], [ %indvars.iv185192, %._crit_edge162 ], [ %indvars.iv.next186, %93 ]
  %indvars.iv179.lcssa = phi i64 [ 0, %._crit_edge ], [ %indvars.iv179193, %._crit_edge162 ], [ 1, %93 ]
  %.2.lcssa191 = phi i32 [ %.0115170, %._crit_edge ], [ %.3, %93 ], [ %.3, %._crit_edge162 ]
  %115 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.3, i32 noundef %.0116169)
  %.not174 = icmp eq i64 %indvars.iv179.lcssa, 0
  br i1 %.not174, label %._crit_edge167, label %.lr.ph166.preheader

.lr.ph166.preheader:                              ; preds = %._crit_edge162.thread
  %wide.trip.count187 = zext i32 %indvars.iv185.lcssa to i64
  br label %.lr.ph166

.lr.ph166:                                        ; preds = %.lr.ph166.preheader, %.lr.ph166
  %indvars.iv182 = phi i64 [ 0, %.lr.ph166.preheader ], [ %indvars.iv.next183, %.lr.ph166 ]
  %116 = getelementptr inbounds [1002 x i32], ptr %11, i64 0, i64 %indvars.iv182
  %117 = load i32, ptr %116, align 4, !tbaa !5
  %118 = add nsw i32 %117, 1
  %119 = getelementptr inbounds [1002 x i32], ptr %12, i64 0, i64 %indvars.iv182
  %120 = load i32, ptr %119, align 4, !tbaa !5
  %121 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.4, i32 noundef %118, i32 noundef %120)
  %indvars.iv.next183 = add nuw nsw i64 %indvars.iv182, 1
  %exitcond188.not = icmp eq i64 %indvars.iv.next183, %wide.trip.count187
  br i1 %exitcond188.not, label %._crit_edge167, label %.lr.ph166, !llvm.loop !15

._crit_edge167:                                   ; preds = %.lr.ph166, %._crit_edge162.thread
  %122 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.5)
  %123 = add nuw nsw i32 %.0116169, 1
  %124 = load i32, ptr %1, align 4, !tbaa !5
  %.not.not = icmp slt i32 %.0116169, %124
  br i1 %.not.not, label %.lr.ph172, label %._crit_edge173, !llvm.loop !16

._crit_edge173:                                   ; preds = %._crit_edge167, %0
  call void @llvm.lifetime.end.p0(i64 4000, ptr nonnull %13) #4
  call void @llvm.lifetime.end.p0(i64 4008, ptr nonnull %12) #4
  call void @llvm.lifetime.end.p0(i64 4008, ptr nonnull %11) #4
  call void @llvm.lifetime.end.p0(i64 8000, ptr nonnull %10) #4
  call void @llvm.lifetime.end.p0(i64 8000, ptr nonnull %9) #4
  call void @llvm.lifetime.end.p0(i64 8000, ptr nonnull %8) #4
  call void @llvm.lifetime.end.p0(i64 8000, ptr nonnull %7) #4
  call void @llvm.lifetime.end.p0(i64 8000, ptr nonnull %6) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %2) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %1) #4
  ret i32 0
}

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

; Function Attrs: nofree nounwind
declare noundef i32 @__isoc99_scanf(ptr nocapture noundef readonly, ...) local_unnamed_addr #2

; Function Attrs: nofree nounwind
declare noundef i32 @printf(ptr nocapture noundef readonly, ...) local_unnamed_addr #2

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.abs.i64(i64, i1 immarg) #3

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.smax.i64(i64, i64) #3

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.smin.i64(i64, i64) #3

attributes #0 = { mustprogress nofree norecurse 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 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { nofree nounwind "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 #3 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { 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++ TBAA"}
!9 = distinct !{!9, !10}
!10 = !{!"llvm.loop.mustprogress"}
!11 = !{!12, !12, i64 0}
!12 = !{!"long long", !7, i64 0}
!13 = distinct !{!13, !10}
!14 = distinct !{!14, !10}
!15 = distinct !{!15, !10}
!16 = distinct !{!16, !10}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass