; LLVM IR from VastoLorde95/Competitive-Programming :: Codeforces/248 Division 2/Problem D (D)

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

@n = external dso_local global i32, align 4
@m = external dso_local global i32, align 4
@q = external dso_local global i32, align 4
@l = external dso_local global [1002 x [1002 x i32]], align 16
@r = external dso_local global [1002 x [1002 x i32]], align 16
@u = external dso_local global [1002 x [1002 x i32]], align 16
@d = external dso_local global [1002 x [1002 x i32]], align 16
@g = external dso_local global [1002 x [1002 x i32]], align 16
@op = external dso_local global i32, align 4
@x = external dso_local global i32, align 4
@y = external dso_local global i32, align 4
@.str = external hidden unnamed_addr constant [7 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [4 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 i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %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
  store i32 0, ptr %1, align 4
  %30 = call i32 (ptr, ...) @__isoc99_scanf(ptr noundef @.str, ptr noundef @n, ptr noundef @m, ptr noundef @q)
  call void @llvm.lifetime.start.p0(i64 4, ptr %2) #4
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %31

31:                                               ; preds = %54, %0
  %32 = load i32, ptr %2, align 4, !tbaa !5
  %33 = load i32, ptr @n, align 4, !tbaa !5
  %34 = icmp sle i32 %32, %33
  br i1 %34, label %36, label %35

35:                                               ; preds = %31
  store i32 2, ptr %3, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %2) #4
  br label %57

36:                                               ; preds = %31
  call void @llvm.lifetime.start.p0(i64 4, ptr %4) #4
  store i32 1, ptr %4, align 4, !tbaa !5
  br label %37

37:                                               ; preds = %50, %36
  %38 = load i32, ptr %4, align 4, !tbaa !5
  %39 = load i32, ptr @m, align 4, !tbaa !5
  %40 = icmp sle i32 %38, %39
  br i1 %40, label %42, label %41

41:                                               ; preds = %37
  store i32 5, ptr %3, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #4
  br label %53

42:                                               ; preds = %37
  %43 = load i32, ptr %2, align 4, !tbaa !5
  %44 = sext i32 %43 to i64
  %45 = getelementptr inbounds [1002 x [1002 x i32]], ptr @g, i64 0, i64 %44
  %46 = load i32, ptr %4, align 4, !tbaa !5
  %47 = sext i32 %46 to i64
  %48 = getelementptr inbounds [1002 x i32], ptr %45, i64 0, i64 %47
  %49 = call i32 (ptr, ...) @__isoc99_scanf(ptr noundef @.str.1, ptr noundef %48)
  br label %50

50:                                               ; preds = %42
  %51 = load i32, ptr %4, align 4, !tbaa !5
  %52 = add nsw i32 %51, 1
  store i32 %52, ptr %4, align 4, !tbaa !5
  br label %37, !llvm.loop !9

53:                                               ; preds = %41
  br label %54

54:                                               ; preds = %53
  %55 = load i32, ptr %2, align 4, !tbaa !5
  %56 = add nsw i32 %55, 1
  store i32 %56, ptr %2, align 4, !tbaa !5
  br label %31, !llvm.loop !11

57:                                               ; preds = %35
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #4
  store i32 1, ptr %5, align 4, !tbaa !5
  br label %58

58:                                               ; preds = %128, %57
  %59 = load i32, ptr %5, align 4, !tbaa !5
  %60 = load i32, ptr @n, align 4, !tbaa !5
  %61 = icmp sle i32 %59, %60
  br i1 %61, label %63, label %62

62:                                               ; preds = %58
  store i32 8, ptr %3, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #4
  br label %131

63:                                               ; preds = %58
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #4
  store i32 1, ptr %6, align 4, !tbaa !5
  br label %64

64:                                               ; preds = %124, %63
  %65 = load i32, ptr %6, align 4, !tbaa !5
  %66 = load i32, ptr @m, align 4, !tbaa !5
  %67 = icmp sle i32 %65, %66
  br i1 %67, label %69, label %68

68:                                               ; preds = %64
  store i32 11, ptr %3, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #4
  br label %127

69:                                               ; preds = %64
  %70 = load i32, ptr %5, align 4, !tbaa !5
  %71 = sext i32 %70 to i64
  %72 = getelementptr inbounds [1002 x [1002 x i32]], ptr @g, i64 0, i64 %71
  %73 = load i32, ptr %6, align 4, !tbaa !5
  %74 = sext i32 %73 to i64
  %75 = getelementptr inbounds [1002 x i32], ptr %72, i64 0, i64 %74
  %76 = load i32, ptr %75, align 4, !tbaa !5
  %77 = icmp eq i32 %76, 1
  br i1 %77, label %78, label %88

78:                                               ; preds = %69
  %79 = load i32, ptr %5, align 4, !tbaa !5
  %80 = sext i32 %79 to i64
  %81 = getelementptr inbounds [1002 x [1002 x i32]], ptr @l, i64 0, i64 %80
  %82 = load i32, ptr %6, align 4, !tbaa !5
  %83 = sub nsw i32 %82, 1
  %84 = sext i32 %83 to i64
  %85 = getelementptr inbounds [1002 x i32], ptr %81, i64 0, i64 %84
  %86 = load i32, ptr %85, align 4, !tbaa !5
  %87 = add nsw i32 %86, 1
  br label %89

88:                                               ; preds = %69
  br label %89

89:                                               ; preds = %88, %78
  %90 = phi i32 [ %87, %78 ], [ 0, %88 ]
  %91 = load i32, ptr %5, align 4, !tbaa !5
  %92 = sext i32 %91 to i64
  %93 = getelementptr inbounds [1002 x [1002 x i32]], ptr @l, i64 0, i64 %92
  %94 = load i32, ptr %6, align 4, !tbaa !5
  %95 = sext i32 %94 to i64
  %96 = getelementptr inbounds [1002 x i32], ptr %93, i64 0, i64 %95
  store i32 %90, ptr %96, align 4, !tbaa !5
  %97 = load i32, ptr %5, align 4, !tbaa !5
  %98 = sext i32 %97 to i64
  %99 = getelementptr inbounds [1002 x [1002 x i32]], ptr @g, i64 0, i64 %98
  %100 = load i32, ptr %6, align 4, !tbaa !5
  %101 = sext i32 %100 to i64
  %102 = getelementptr inbounds [1002 x i32], ptr %99, i64 0, i64 %101
  %103 = load i32, ptr %102, align 4, !tbaa !5
  %104 = icmp eq i32 %103, 1
  br i1 %104, label %105, label %115

105:                                              ; preds = %89
  %106 = load i32, ptr %5, align 4, !tbaa !5
  %107 = sub nsw i32 %106, 1
  %108 = sext i32 %107 to i64
  %109 = getelementptr inbounds [1002 x [1002 x i32]], ptr @u, i64 0, i64 %108
  %110 = load i32, ptr %6, align 4, !tbaa !5
  %111 = sext i32 %110 to i64
  %112 = getelementptr inbounds [1002 x i32], ptr %109, i64 0, i64 %111
  %113 = load i32, ptr %112, align 4, !tbaa !5
  %114 = add nsw i32 %113, 1
  br label %116

115:                                              ; preds = %89
  br label %116

116:                                              ; preds = %115, %105
  %117 = phi i32 [ %114, %105 ], [ 0, %115 ]
  %118 = load i32, ptr %5, align 4, !tbaa !5
  %119 = sext i32 %118 to i64
  %120 = getelementptr inbounds [1002 x [1002 x i32]], ptr @u, i64 0, i64 %119
  %121 = load i32, ptr %6, align 4, !tbaa !5
  %122 = sext i32 %121 to i64
  %123 = getelementptr inbounds [1002 x i32], ptr %120, i64 0, i64 %122
  store i32 %117, ptr %123, align 4, !tbaa !5
  br label %124

124:                                              ; preds = %116
  %125 = load i32, ptr %6, align 4, !tbaa !5
  %126 = add nsw i32 %125, 1
  store i32 %126, ptr %6, align 4, !tbaa !5
  br label %64, !llvm.loop !12

127:                                              ; preds = %68
  br label %128

128:                                              ; preds = %127
  %129 = load i32, ptr %5, align 4, !tbaa !5
  %130 = add nsw i32 %129, 1
  store i32 %130, ptr %5, align 4, !tbaa !5
  br label %58, !llvm.loop !13

131:                                              ; preds = %62
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #4
  %132 = load i32, ptr @n, align 4, !tbaa !5
  store i32 %132, ptr %7, align 4, !tbaa !5
  br label %133

133:                                              ; preds = %202, %131
  %134 = load i32, ptr %7, align 4, !tbaa !5
  %135 = icmp sge i32 %134, 1
  br i1 %135, label %137, label %136

136:                                              ; preds = %133
  store i32 14, ptr %3, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #4
  br label %205

137:                                              ; preds = %133
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #4
  %138 = load i32, ptr @m, align 4, !tbaa !5
  store i32 %138, ptr %8, align 4, !tbaa !5
  br label %139

139:                                              ; preds = %198, %137
  %140 = load i32, ptr %8, align 4, !tbaa !5
  %141 = icmp sge i32 %140, 1
  br i1 %141, label %143, label %142

142:                                              ; preds = %139
  store i32 17, ptr %3, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #4
  br label %201

143:                                              ; preds = %139
  %144 = load i32, ptr %7, align 4, !tbaa !5
  %145 = sext i32 %144 to i64
  %146 = getelementptr inbounds [1002 x [1002 x i32]], ptr @g, i64 0, i64 %145
  %147 = load i32, ptr %8, align 4, !tbaa !5
  %148 = sext i32 %147 to i64
  %149 = getelementptr inbounds [1002 x i32], ptr %146, i64 0, i64 %148
  %150 = load i32, ptr %149, align 4, !tbaa !5
  %151 = icmp eq i32 %150, 1
  br i1 %151, label %152, label %162

152:                                              ; preds = %143
  %153 = load i32, ptr %7, align 4, !tbaa !5
  %154 = sext i32 %153 to i64
  %155 = getelementptr inbounds [1002 x [1002 x i32]], ptr @r, i64 0, i64 %154
  %156 = load i32, ptr %8, align 4, !tbaa !5
  %157 = add nsw i32 %156, 1
  %158 = sext i32 %157 to i64
  %159 = getelementptr inbounds [1002 x i32], ptr %155, i64 0, i64 %158
  %160 = load i32, ptr %159, align 4, !tbaa !5
  %161 = add nsw i32 %160, 1
  br label %163

162:                                              ; preds = %143
  br label %163

163:                                              ; preds = %162, %152
  %164 = phi i32 [ %161, %152 ], [ 0, %162 ]
  %165 = load i32, ptr %7, align 4, !tbaa !5
  %166 = sext i32 %165 to i64
  %167 = getelementptr inbounds [1002 x [1002 x i32]], ptr @r, i64 0, i64 %166
  %168 = load i32, ptr %8, align 4, !tbaa !5
  %169 = sext i32 %168 to i64
  %170 = getelementptr inbounds [1002 x i32], ptr %167, i64 0, i64 %169
  store i32 %164, ptr %170, align 4, !tbaa !5
  %171 = load i32, ptr %7, align 4, !tbaa !5
  %172 = sext i32 %171 to i64
  %173 = getelementptr inbounds [1002 x [1002 x i32]], ptr @g, i64 0, i64 %172
  %174 = load i32, ptr %8, align 4, !tbaa !5
  %175 = sext i32 %174 to i64
  %176 = getelementptr inbounds [1002 x i32], ptr %173, i64 0, i64 %175
  %177 = load i32, ptr %176, align 4, !tbaa !5
  %178 = icmp eq i32 %177, 1
  br i1 %178, label %179, label %189

179:                                              ; preds = %163
  %180 = load i32, ptr %7, align 4, !tbaa !5
  %181 = add nsw i32 %180, 1
  %182 = sext i32 %181 to i64
  %183 = getelementptr inbounds [1002 x [1002 x i32]], ptr @d, i64 0, i64 %182
  %184 = load i32, ptr %8, align 4, !tbaa !5
  %185 = sext i32 %184 to i64
  %186 = getelementptr inbounds [1002 x i32], ptr %183, i64 0, i64 %185
  %187 = load i32, ptr %186, align 4, !tbaa !5
  %188 = add nsw i32 %187, 1
  br label %190

189:                                              ; preds = %163
  br label %190

190:                                              ; preds = %189, %179
  %191 = phi i32 [ %188, %179 ], [ 0, %189 ]
  %192 = load i32, ptr %7, align 4, !tbaa !5
  %193 = sext i32 %192 to i64
  %194 = getelementptr inbounds [1002 x [1002 x i32]], ptr @d, i64 0, i64 %193
  %195 = load i32, ptr %8, align 4, !tbaa !5
  %196 = sext i32 %195 to i64
  %197 = getelementptr inbounds [1002 x i32], ptr %194, i64 0, i64 %196
  store i32 %191, ptr %197, align 4, !tbaa !5
  br label %198

198:                                              ; preds = %190
  %199 = load i32, ptr %8, align 4, !tbaa !5
  %200 = add nsw i32 %199, -1
  store i32 %200, ptr %8, align 4, !tbaa !5
  br label %139, !llvm.loop !14

201:                                              ; preds = %142
  br label %202

202:                                              ; preds = %201
  %203 = load i32, ptr %7, align 4, !tbaa !5
  %204 = add nsw i32 %203, -1
  store i32 %204, ptr %7, align 4, !tbaa !5
  br label %133, !llvm.loop !15

205:                                              ; preds = %136
  br label %206

206:                                              ; preds = %871, %382, %205
  %207 = load i32, ptr @q, align 4, !tbaa !5
  %208 = add nsw i32 %207, -1
  store i32 %208, ptr @q, align 4, !tbaa !5
  %209 = icmp ne i32 %207, 0
  br i1 %209, label %210, label %872

210:                                              ; preds = %206
  %211 = call i32 (ptr, ...) @__isoc99_scanf(ptr noundef @.str, ptr noundef @op, ptr noundef @x, ptr noundef @y)
  %212 = load i32, ptr @op, align 4, !tbaa !5
  %213 = icmp eq i32 %212, 1
  br i1 %213, label %214, label %373

214:                                              ; preds = %210
  %215 = load i32, ptr @x, align 4, !tbaa !5
  %216 = sext i32 %215 to i64
  %217 = getelementptr inbounds [1002 x [1002 x i32]], ptr @g, i64 0, i64 %216
  %218 = load i32, ptr @y, align 4, !tbaa !5
  %219 = sext i32 %218 to i64
  %220 = getelementptr inbounds [1002 x i32], ptr %217, i64 0, i64 %219
  %221 = load i32, ptr %220, align 4, !tbaa !5
  %222 = xor i32 %221, 1
  store i32 %222, ptr %220, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #4
  %223 = load i32, ptr @x, align 4, !tbaa !5
  store i32 %223, ptr %9, align 4, !tbaa !5
  br label %224

224:                                              ; preds = %257, %214
  %225 = load i32, ptr %9, align 4, !tbaa !5
  %226 = load i32, ptr @n, align 4, !tbaa !5
  %227 = icmp sle i32 %225, %226
  br i1 %227, label %229, label %228

228:                                              ; preds = %224
  store i32 22, ptr %3, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #4
  br label %260

229:                                              ; preds = %224
  %230 = load i32, ptr %9, align 4, !tbaa !5
  %231 = sext i32 %230 to i64
  %232 = getelementptr inbounds [1002 x [1002 x i32]], ptr @g, i64 0, i64 %231
  %233 = load i32, ptr @y, align 4, !tbaa !5
  %234 = sext i32 %233 to i64
  %235 = getelementptr inbounds [1002 x i32], ptr %232, i64 0, i64 %234
  %236 = load i32, ptr %235, align 4, !tbaa !5
  %237 = icmp eq i32 %236, 1
  br i1 %237, label %238, label %248

238:                                              ; preds = %229
  %239 = load i32, ptr %9, align 4, !tbaa !5
  %240 = sub nsw i32 %239, 1
  %241 = sext i32 %240 to i64
  %242 = getelementptr inbounds [1002 x [1002 x i32]], ptr @u, i64 0, i64 %241
  %243 = load i32, ptr @y, align 4, !tbaa !5
  %244 = sext i32 %243 to i64
  %245 = getelementptr inbounds [1002 x i32], ptr %242, i64 0, i64 %244
  %246 = load i32, ptr %245, align 4, !tbaa !5
  %247 = add nsw i32 %246, 1
  br label %249

248:                                              ; preds = %229
  br label %249

249:                                              ; preds = %248, %238
  %250 = phi i32 [ %247, %238 ], [ 0, %248 ]
  %251 = load i32, ptr %9, align 4, !tbaa !5
  %252 = sext i32 %251 to i64
  %253 = getelementptr inbounds [1002 x [1002 x i32]], ptr @u, i64 0, i64 %252
  %254 = load i32, ptr @y, align 4, !tbaa !5
  %255 = sext i32 %254 to i64
  %256 = getelementptr inbounds [1002 x i32], ptr %253, i64 0, i64 %255
  store i32 %250, ptr %256, align 4, !tbaa !5
  br label %257

257:                                              ; preds = %249
  %258 = load i32, ptr %9, align 4, !tbaa !5
  %259 = add nsw i32 %258, 1
  store i32 %259, ptr %9, align 4, !tbaa !5
  br label %224, !llvm.loop !16

260:                                              ; preds = %228
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #4
  %261 = load i32, ptr @x, align 4, !tbaa !5
  store i32 %261, ptr %10, align 4, !tbaa !5
  br label %262

262:                                              ; preds = %294, %260
  %263 = load i32, ptr %10, align 4, !tbaa !5
  %264 = icmp sge i32 %263, 1
  br i1 %264, label %266, label %265

265:                                              ; preds = %262
  store i32 25, ptr %3, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #4
  br label %297

266:                                              ; preds = %262
  %267 = load i32, ptr %10, align 4, !tbaa !5
  %268 = sext i32 %267 to i64
  %269 = getelementptr inbounds [1002 x [1002 x i32]], ptr @g, i64 0, i64 %268
  %270 = load i32, ptr @y, align 4, !tbaa !5
  %271 = sext i32 %270 to i64
  %272 = getelementptr inbounds [1002 x i32], ptr %269, i64 0, i64 %271
  %273 = load i32, ptr %272, align 4, !tbaa !5
  %274 = icmp eq i32 %273, 1
  br i1 %274, label %275, label %285

275:                                              ; preds = %266
  %276 = load i32, ptr %10, align 4, !tbaa !5
  %277 = add nsw i32 %276, 1
  %278 = sext i32 %277 to i64
  %279 = getelementptr inbounds [1002 x [1002 x i32]], ptr @d, i64 0, i64 %278
  %280 = load i32, ptr @y, align 4, !tbaa !5
  %281 = sext i32 %280 to i64
  %282 = getelementptr inbounds [1002 x i32], ptr %279, i64 0, i64 %281
  %283 = load i32, ptr %282, align 4, !tbaa !5
  %284 = add nsw i32 %283, 1
  br label %286

285:                                              ; preds = %266
  br label %286

286:                                              ; preds = %285, %275
  %287 = phi i32 [ %284, %275 ], [ 0, %285 ]
  %288 = load i32, ptr %10, align 4, !tbaa !5
  %289 = sext i32 %288 to i64
  %290 = getelementptr inbounds [1002 x [1002 x i32]], ptr @d, i64 0, i64 %289
  %291 = load i32, ptr @y, align 4, !tbaa !5
  %292 = sext i32 %291 to i64
  %293 = getelementptr inbounds [1002 x i32], ptr %290, i64 0, i64 %292
  store i32 %287, ptr %293, align 4, !tbaa !5
  br label %294

294:                                              ; preds = %286
  %295 = load i32, ptr %10, align 4, !tbaa !5
  %296 = add nsw i32 %295, -1
  store i32 %296, ptr %10, align 4, !tbaa !5
  br label %262, !llvm.loop !17

297:                                              ; preds = %265
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #4
  %298 = load i32, ptr @y, align 4, !tbaa !5
  store i32 %298, ptr %11, align 4, !tbaa !5
  br label %299

299:                                              ; preds = %332, %297
  %300 = load i32, ptr %11, align 4, !tbaa !5
  %301 = load i32, ptr @m, align 4, !tbaa !5
  %302 = icmp sle i32 %300, %301
  br i1 %302, label %304, label %303

303:                                              ; preds = %299
  store i32 28, ptr %3, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #4
  br label %335

304:                                              ; preds = %299
  %305 = load i32, ptr @x, align 4, !tbaa !5
  %306 = sext i32 %305 to i64
  %307 = getelementptr inbounds [1002 x [1002 x i32]], ptr @g, i64 0, i64 %306
  %308 = load i32, ptr %11, align 4, !tbaa !5
  %309 = sext i32 %308 to i64
  %310 = getelementptr inbounds [1002 x i32], ptr %307, i64 0, i64 %309
  %311 = load i32, ptr %310, align 4, !tbaa !5
  %312 = icmp eq i32 %311, 1
  br i1 %312, label %313, label %323

313:                                              ; preds = %304
  %314 = load i32, ptr @x, align 4, !tbaa !5
  %315 = sext i32 %314 to i64
  %316 = getelementptr inbounds [1002 x [1002 x i32]], ptr @l, i64 0, i64 %315
  %317 = load i32, ptr %11, align 4, !tbaa !5
  %318 = sub nsw i32 %317, 1
  %319 = sext i32 %318 to i64
  %320 = getelementptr inbounds [1002 x i32], ptr %316, i64 0, i64 %319
  %321 = load i32, ptr %320, align 4, !tbaa !5
  %322 = add nsw i32 %321, 1
  br label %324

323:                                              ; preds = %304
  br label %324

324:                                              ; preds = %323, %313
  %325 = phi i32 [ %322, %313 ], [ 0, %323 ]
  %326 = load i32, ptr @x, align 4, !tbaa !5
  %327 = sext i32 %326 to i64
  %328 = getelementptr inbounds [1002 x [1002 x i32]], ptr @l, i64 0, i64 %327
  %329 = load i32, ptr %11, align 4, !tbaa !5
  %330 = sext i32 %329 to i64
  %331 = getelementptr inbounds [1002 x i32], ptr %328, i64 0, i64 %330
  store i32 %325, ptr %331, align 4, !tbaa !5
  br label %332

332:                                              ; preds = %324
  %333 = load i32, ptr %11, align 4, !tbaa !5
  %334 = add nsw i32 %333, 1
  store i32 %334, ptr %11, align 4, !tbaa !5
  br label %299, !llvm.loop !18

335:                                              ; preds = %303
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #4
  %336 = load i32, ptr @y, align 4, !tbaa !5
  store i32 %336, ptr %12, align 4, !tbaa !5
  br label %337

337:                                              ; preds = %369, %335
  %338 = load i32, ptr %12, align 4, !tbaa !5
  %339 = icmp sge i32 %338, 1
  br i1 %339, label %341, label %340

340:                                              ; preds = %337
  store i32 31, ptr %3, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #4
  br label %372

341:                                              ; preds = %337
  %342 = load i32, ptr @x, align 4, !tbaa !5
  %343 = sext i32 %342 to i64
  %344 = getelementptr inbounds [1002 x [1002 x i32]], ptr @g, i64 0, i64 %343
  %345 = load i32, ptr %12, align 4, !tbaa !5
  %346 = sext i32 %345 to i64
  %347 = getelementptr inbounds [1002 x i32], ptr %344, i64 0, i64 %346
  %348 = load i32, ptr %347, align 4, !tbaa !5
  %349 = icmp eq i32 %348, 1
  br i1 %349, label %350, label %360

350:                                              ; preds = %341
  %351 = load i32, ptr @x, align 4, !tbaa !5
  %352 = sext i32 %351 to i64
  %353 = getelementptr inbounds [1002 x [1002 x i32]], ptr @r, i64 0, i64 %352
  %354 = load i32, ptr %12, align 4, !tbaa !5
  %355 = add nsw i32 %354, 1
  %356 = sext i32 %355 to i64
  %357 = getelementptr inbounds [1002 x i32], ptr %353, i64 0, i64 %356
  %358 = load i32, ptr %357, align 4, !tbaa !5
  %359 = add nsw i32 %358, 1
  br label %361

360:                                              ; preds = %341
  br label %361

361:                                              ; preds = %360, %350
  %362 = phi i32 [ %359, %350 ], [ 0, %360 ]
  %363 = load i32, ptr @x, align 4, !tbaa !5
  %364 = sext i32 %363 to i64
  %365 = getelementptr inbounds [1002 x [1002 x i32]], ptr @r, i64 0, i64 %364
  %366 = load i32, ptr %12, align 4, !tbaa !5
  %367 = sext i32 %366 to i64
  %368 = getelementptr inbounds [1002 x i32], ptr %365, i64 0, i64 %367
  store i32 %362, ptr %368, align 4, !tbaa !5
  br label %369

369:                                              ; preds = %361
  %370 = load i32, ptr %12, align 4, !tbaa !5
  %371 = add nsw i32 %370, -1
  store i32 %371, ptr %12, align 4, !tbaa !5
  br label %337, !llvm.loop !19

372:                                              ; preds = %340
  br label %871

373:                                              ; preds = %210
  %374 = load i32, ptr @x, align 4, !tbaa !5
  %375 = sext i32 %374 to i64
  %376 = getelementptr inbounds [1002 x [1002 x i32]], ptr @g, i64 0, i64 %375
  %377 = load i32, ptr @y, align 4, !tbaa !5
  %378 = sext i32 %377 to i64
  %379 = getelementptr inbounds [1002 x i32], ptr %376, i64 0, i64 %378
  %380 = load i32, ptr %379, align 4, !tbaa !5
  %381 = icmp eq i32 %380, 0
  br i1 %381, label %382, label %384

382:                                              ; preds = %373
  %383 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  br label %206, !llvm.loop !20

384:                                              ; preds = %373
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #4
  store i32 0, ptr %13, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #4
  %385 = load i32, ptr @y, align 4, !tbaa !5
  store i32 %385, ptr %14, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #4
  %386 = load i32, ptr @y, align 4, !tbaa !5
  store i32 %386, ptr %15, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #4
  %387 = load i32, ptr @x, align 4, !tbaa !5
  %388 = sext i32 %387 to i64
  %389 = getelementptr inbounds [1002 x [1002 x i32]], ptr @u, i64 0, i64 %388
  %390 = load i32, ptr @y, align 4, !tbaa !5
  %391 = sext i32 %390 to i64
  %392 = getelementptr inbounds [1002 x i32], ptr %389, i64 0, i64 %391
  %393 = load i32, ptr %392, align 4, !tbaa !5
  store i32 %393, ptr %16, align 4, !tbaa !5
  br label %394

394:                                              ; preds = %504, %384
  br label %395

395:                                              ; preds = %411, %394
  %396 = load i32, ptr %15, align 4, !tbaa !5
  %397 = load i32, ptr @m, align 4, !tbaa !5
  %398 = icmp sle i32 %396, %397
  br i1 %398, label %399, label %409

399:                                              ; preds = %395
  %400 = load i32, ptr @x, align 4, !tbaa !5
  %401 = sext i32 %400 to i64
  %402 = getelementptr inbounds [1002 x [1002 x i32]], ptr @u, i64 0, i64 %401
  %403 = load i32, ptr %15, align 4, !tbaa !5
  %404 = sext i32 %403 to i64
  %405 = getelementptr inbounds [1002 x i32], ptr %402, i64 0, i64 %404
  %406 = load i32, ptr %405, align 4, !tbaa !5
  %407 = load i32, ptr %16, align 4, !tbaa !5
  %408 = icmp sge i32 %406, %407
  br label %409

409:                                              ; preds = %399, %395
  %410 = phi i1 [ false, %395 ], [ %408, %399 ]
  br i1 %410, label %411, label %414

411:                                              ; preds = %409
  %412 = load i32, ptr %15, align 4, !tbaa !5
  %413 = add nsw i32 %412, 1
  store i32 %413, ptr %15, align 4, !tbaa !5
  br label %395, !llvm.loop !21

414:                                              ; preds = %409
  br label %415

415:                                              ; preds = %430, %414
  %416 = load i32, ptr %14, align 4, !tbaa !5
  %417 = icmp sge i32 %416, 1
  br i1 %417, label %418, label %428

418:                                              ; preds = %415
  %419 = load i32, ptr @x, align 4, !tbaa !5
  %420 = sext i32 %419 to i64
  %421 = getelementptr inbounds [1002 x [1002 x i32]], ptr @u, i64 0, i64 %420
  %422 = load i32, ptr %14, align 4, !tbaa !5
  %423 = sext i32 %422 to i64
  %424 = getelementptr inbounds [1002 x i32], ptr %421, i64 0, i64 %423
  %425 = load i32, ptr %424, align 4, !tbaa !5
  %426 = load i32, ptr %16, align 4, !tbaa !5
  %427 = icmp sge i32 %425, %426
  br label %428

428:                                              ; preds = %418, %415
  %429 = phi i1 [ false, %415 ], [ %427, %418 ]
  br i1 %429, label %430, label %433

430:                                              ; preds = %428
  %431 = load i32, ptr %14, align 4, !tbaa !5
  %432 = add nsw i32 %431, -1
  store i32 %432, ptr %14, align 4, !tbaa !5
  br label %415, !llvm.loop !22

433:                                              ; preds = %428
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #4
  %434 = load i32, ptr %16, align 4, !tbaa !5
  %435 = load i32, ptr %15, align 4, !tbaa !5
  %436 = load i32, ptr %14, align 4, !tbaa !5
  %437 = sub nsw i32 %435, %436
  %438 = sub nsw i32 %437, 1
  %439 = mul nsw i32 %434, %438
  store i32 %439, ptr %17, align 4, !tbaa !5
  %440 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %13, ptr noundef nonnull align 4 dereferenceable(4) %17)
  %441 = load i32, ptr %440, align 4, !tbaa !5
  store i32 %441, ptr %13, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #4
  %442 = load i32, ptr %14, align 4, !tbaa !5
  %443 = icmp sge i32 %442, 1
  br i1 %443, label %444, label %490

444:                                              ; preds = %433
  %445 = load i32, ptr %15, align 4, !tbaa !5
  %446 = load i32, ptr @m, align 4, !tbaa !5
  %447 = icmp sle i32 %445, %446
  br i1 %447, label %448, label %481

448:                                              ; preds = %444
  %449 = load i32, ptr @x, align 4, !tbaa !5
  %450 = sext i32 %449 to i64
  %451 = getelementptr inbounds [1002 x [1002 x i32]], ptr @u, i64 0, i64 %450
  %452 = load i32, ptr %14, align 4, !tbaa !5
  %453 = sext i32 %452 to i64
  %454 = getelementptr inbounds [1002 x i32], ptr %451, i64 0, i64 %453
  %455 = load i32, ptr %454, align 4, !tbaa !5
  %456 = load i32, ptr @x, align 4, !tbaa !5
  %457 = sext i32 %456 to i64
  %458 = getelementptr inbounds [1002 x [1002 x i32]], ptr @u, i64 0, i64 %457
  %459 = load i32, ptr %15, align 4, !tbaa !5
  %460 = sext i32 %459 to i64
  %461 = getelementptr inbounds [1002 x i32], ptr %458, i64 0, i64 %460
  %462 = load i32, ptr %461, align 4, !tbaa !5
  %463 = icmp sge i32 %455, %462
  br i1 %463, label %464, label %472

464:                                              ; preds = %448
  %465 = load i32, ptr @x, align 4, !tbaa !5
  %466 = sext i32 %465 to i64
  %467 = getelementptr inbounds [1002 x [1002 x i32]], ptr @u, i64 0, i64 %466
  %468 = load i32, ptr %14, align 4, !tbaa !5
  %469 = sext i32 %468 to i64
  %470 = getelementptr inbounds [1002 x i32], ptr %467, i64 0, i64 %469
  %471 = load i32, ptr %470, align 4, !tbaa !5
  store i32 %471, ptr %16, align 4, !tbaa !5
  br label %480

472:                                              ; preds = %448
  %473 = load i32, ptr @x, align 4, !tbaa !5
  %474 = sext i32 %473 to i64
  %475 = getelementptr inbounds [1002 x [1002 x i32]], ptr @u, i64 0, i64 %474
  %476 = load i32, ptr %15, align 4, !tbaa !5
  %477 = sext i32 %476 to i64
  %478 = getelementptr inbounds [1002 x i32], ptr %475, i64 0, i64 %477
  %479 = load i32, ptr %478, align 4, !tbaa !5
  store i32 %479, ptr %16, align 4, !tbaa !5
  br label %480

480:                                              ; preds = %472, %464
  br label %489

481:                                              ; preds = %444
  %482 = load i32, ptr @x, align 4, !tbaa !5
  %483 = sext i32 %482 to i64
  %484 = getelementptr inbounds [1002 x [1002 x i32]], ptr @u, i64 0, i64 %483
  %485 = load i32, ptr %14, align 4, !tbaa !5
  %486 = sext i32 %485 to i64
  %487 = getelementptr inbounds [1002 x i32], ptr %484, i64 0, i64 %486
  %488 = load i32, ptr %487, align 4, !tbaa !5
  store i32 %488, ptr %16, align 4, !tbaa !5
  br label %489

489:                                              ; preds = %481, %480
  br label %504

490:                                              ; preds = %433
  %491 = load i32, ptr %15, align 4, !tbaa !5
  %492 = load i32, ptr @m, align 4, !tbaa !5
  %493 = icmp sle i32 %491, %492
  br i1 %493, label %494, label %502

494:                                              ; preds = %490
  %495 = load i32, ptr @x, align 4, !tbaa !5
  %496 = sext i32 %495 to i64
  %497 = getelementptr inbounds [1002 x [1002 x i32]], ptr @u, i64 0, i64 %496
  %498 = load i32, ptr %15, align 4, !tbaa !5
  %499 = sext i32 %498 to i64
  %500 = getelementptr inbounds [1002 x i32], ptr %497, i64 0, i64 %499
  %501 = load i32, ptr %500, align 4, !tbaa !5
  store i32 %501, ptr %16, align 4, !tbaa !5
  br label %503

502:                                              ; preds = %490
  store i32 34, ptr %3, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #4
  br label %505

503:                                              ; preds = %494
  br label %504

504:                                              ; preds = %503, %489
  br label %394, !llvm.loop !23

505:                                              ; preds = %502
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #4
  %506 = load i32, ptr @y, align 4, !tbaa !5
  store i32 %506, ptr %18, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #4
  %507 = load i32, ptr @y, align 4, !tbaa !5
  store i32 %507, ptr %19, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #4
  %508 = load i32, ptr @x, align 4, !tbaa !5
  %509 = sext i32 %508 to i64
  %510 = getelementptr inbounds [1002 x [1002 x i32]], ptr @d, i64 0, i64 %509
  %511 = load i32, ptr @y, align 4, !tbaa !5
  %512 = sext i32 %511 to i64
  %513 = getelementptr inbounds [1002 x i32], ptr %510, i64 0, i64 %512
  %514 = load i32, ptr %513, align 4, !tbaa !5
  store i32 %514, ptr %20, align 4, !tbaa !5
  br label %515

515:                                              ; preds = %625, %505
  br label %516

516:                                              ; preds = %532, %515
  %517 = load i32, ptr %19, align 4, !tbaa !5
  %518 = load i32, ptr @m, align 4, !tbaa !5
  %519 = icmp sle i32 %517, %518
  br i1 %519, label %520, label %530

520:                                              ; preds = %516
  %521 = load i32, ptr @x, align 4, !tbaa !5
  %522 = sext i32 %521 to i64
  %523 = getelementptr inbounds [1002 x [1002 x i32]], ptr @d, i64 0, i64 %522
  %524 = load i32, ptr %19, align 4, !tbaa !5
  %525 = sext i32 %524 to i64
  %526 = getelementptr inbounds [1002 x i32], ptr %523, i64 0, i64 %525
  %527 = load i32, ptr %526, align 4, !tbaa !5
  %528 = load i32, ptr %20, align 4, !tbaa !5
  %529 = icmp sge i32 %527, %528
  br label %530

530:                                              ; preds = %520, %516
  %531 = phi i1 [ false, %516 ], [ %529, %520 ]
  br i1 %531, label %532, label %535

532:                                              ; preds = %530
  %533 = load i32, ptr %19, align 4, !tbaa !5
  %534 = add nsw i32 %533, 1
  store i32 %534, ptr %19, align 4, !tbaa !5
  br label %516, !llvm.loop !24

535:                                              ; preds = %530
  br label %536

536:                                              ; preds = %551, %535
  %537 = load i32, ptr %18, align 4, !tbaa !5
  %538 = icmp sge i32 %537, 1
  br i1 %538, label %539, label %549

539:                                              ; preds = %536
  %540 = load i32, ptr @x, align 4, !tbaa !5
  %541 = sext i32 %540 to i64
  %542 = getelementptr inbounds [1002 x [1002 x i32]], ptr @d, i64 0, i64 %541
  %543 = load i32, ptr %18, align 4, !tbaa !5
  %544 = sext i32 %543 to i64
  %545 = getelementptr inbounds [1002 x i32], ptr %542, i64 0, i64 %544
  %546 = load i32, ptr %545, align 4, !tbaa !5
  %547 = load i32, ptr %20, align 4, !tbaa !5
  %548 = icmp sge i32 %546, %547
  br label %549

549:                                              ; preds = %539, %536
  %550 = phi i1 [ false, %536 ], [ %548, %539 ]
  br i1 %550, label %551, label %554

551:                                              ; preds = %549
  %552 = load i32, ptr %18, align 4, !tbaa !5
  %553 = add nsw i32 %552, -1
  store i32 %553, ptr %18, align 4, !tbaa !5
  br label %536, !llvm.loop !25

554:                                              ; preds = %549
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #4
  %555 = load i32, ptr %20, align 4, !tbaa !5
  %556 = load i32, ptr %19, align 4, !tbaa !5
  %557 = load i32, ptr %18, align 4, !tbaa !5
  %558 = sub nsw i32 %556, %557
  %559 = sub nsw i32 %558, 1
  %560 = mul nsw i32 %555, %559
  store i32 %560, ptr %21, align 4, !tbaa !5
  %561 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %13, ptr noundef nonnull align 4 dereferenceable(4) %21)
  %562 = load i32, ptr %561, align 4, !tbaa !5
  store i32 %562, ptr %13, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #4
  %563 = load i32, ptr %18, align 4, !tbaa !5
  %564 = icmp sge i32 %563, 1
  br i1 %564, label %565, label %611

565:                                              ; preds = %554
  %566 = load i32, ptr %19, align 4, !tbaa !5
  %567 = load i32, ptr @m, align 4, !tbaa !5
  %568 = icmp sle i32 %566, %567
  br i1 %568, label %569, label %602

569:                                              ; preds = %565
  %570 = load i32, ptr @x, align 4, !tbaa !5
  %571 = sext i32 %570 to i64
  %572 = getelementptr inbounds [1002 x [1002 x i32]], ptr @d, i64 0, i64 %571
  %573 = load i32, ptr %18, align 4, !tbaa !5
  %574 = sext i32 %573 to i64
  %575 = getelementptr inbounds [1002 x i32], ptr %572, i64 0, i64 %574
  %576 = load i32, ptr %575, align 4, !tbaa !5
  %577 = load i32, ptr @x, align 4, !tbaa !5
  %578 = sext i32 %577 to i64
  %579 = getelementptr inbounds [1002 x [1002 x i32]], ptr @d, i64 0, i64 %578
  %580 = load i32, ptr %19, align 4, !tbaa !5
  %581 = sext i32 %580 to i64
  %582 = getelementptr inbounds [1002 x i32], ptr %579, i64 0, i64 %581
  %583 = load i32, ptr %582, align 4, !tbaa !5
  %584 = icmp sge i32 %576, %583
  br i1 %584, label %585, label %593

585:                                              ; preds = %569
  %586 = load i32, ptr @x, align 4, !tbaa !5
  %587 = sext i32 %586 to i64
  %588 = getelementptr inbounds [1002 x [1002 x i32]], ptr @d, i64 0, i64 %587
  %589 = load i32, ptr %18, align 4, !tbaa !5
  %590 = sext i32 %589 to i64
  %591 = getelementptr inbounds [1002 x i32], ptr %588, i64 0, i64 %590
  %592 = load i32, ptr %591, align 4, !tbaa !5
  store i32 %592, ptr %20, align 4, !tbaa !5
  br label %601

593:                                              ; preds = %569
  %594 = load i32, ptr @x, align 4, !tbaa !5
  %595 = sext i32 %594 to i64
  %596 = getelementptr inbounds [1002 x [1002 x i32]], ptr @d, i64 0, i64 %595
  %597 = load i32, ptr %19, align 4, !tbaa !5
  %598 = sext i32 %597 to i64
  %599 = getelementptr inbounds [1002 x i32], ptr %596, i64 0, i64 %598
  %600 = load i32, ptr %599, align 4, !tbaa !5
  store i32 %600, ptr %20, align 4, !tbaa !5
  br label %601

601:                                              ; preds = %593, %585
  br label %610

602:                                              ; preds = %565
  %603 = load i32, ptr @x, align 4, !tbaa !5
  %604 = sext i32 %603 to i64
  %605 = getelementptr inbounds [1002 x [1002 x i32]], ptr @d, i64 0, i64 %604
  %606 = load i32, ptr %18, align 4, !tbaa !5
  %607 = sext i32 %606 to i64
  %608 = getelementptr inbounds [1002 x i32], ptr %605, i64 0, i64 %607
  %609 = load i32, ptr %608, align 4, !tbaa !5
  store i32 %609, ptr %20, align 4, !tbaa !5
  br label %610

610:                                              ; preds = %602, %601
  br label %625

611:                                              ; preds = %554
  %612 = load i32, ptr %19, align 4, !tbaa !5
  %613 = load i32, ptr @m, align 4, !tbaa !5
  %614 = icmp sle i32 %612, %613
  br i1 %614, label %615, label %623

615:                                              ; preds = %611
  %616 = load i32, ptr @x, align 4, !tbaa !5
  %617 = sext i32 %616 to i64
  %618 = getelementptr inbounds [1002 x [1002 x i32]], ptr @d, i64 0, i64 %617
  %619 = load i32, ptr %19, align 4, !tbaa !5
  %620 = sext i32 %619 to i64
  %621 = getelementptr inbounds [1002 x i32], ptr %618, i64 0, i64 %620
  %622 = load i32, ptr %621, align 4, !tbaa !5
  store i32 %622, ptr %20, align 4, !tbaa !5
  br label %624

623:                                              ; preds = %611
  store i32 40, ptr %3, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #4
  br label %626

624:                                              ; preds = %615
  br label %625

625:                                              ; preds = %624, %610
  br label %515, !llvm.loop !26

626:                                              ; preds = %623
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #4
  %627 = load i32, ptr @x, align 4, !tbaa !5
  store i32 %627, ptr %22, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #4
  %628 = load i32, ptr @x, align 4, !tbaa !5
  store i32 %628, ptr %23, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #4
  %629 = load i32, ptr @x, align 4, !tbaa !5
  %630 = sext i32 %629 to i64
  %631 = getelementptr inbounds [1002 x [1002 x i32]], ptr @l, i64 0, i64 %630
  %632 = load i32, ptr @y, align 4, !tbaa !5
  %633 = sext i32 %632 to i64
  %634 = getelementptr inbounds [1002 x i32], ptr %631, i64 0, i64 %633
  %635 = load i32, ptr %634, align 4, !tbaa !5
  store i32 %635, ptr %24, align 4, !tbaa !5
  br label %636

636:                                              ; preds = %746, %626
  br label %637

637:                                              ; preds = %653, %636
  %638 = load i32, ptr %23, align 4, !tbaa !5
  %639 = load i32, ptr @n, align 4, !tbaa !5
  %640 = icmp sle i32 %638, %639
  br i1 %640, label %641, label %651

641:                                              ; preds = %637
  %642 = load i32, ptr %23, align 4, !tbaa !5
  %643 = sext i32 %642 to i64
  %644 = getelementptr inbounds [1002 x [1002 x i32]], ptr @l, i64 0, i64 %643
  %645 = load i32, ptr @y, align 4, !tbaa !5
  %646 = sext i32 %645 to i64
  %647 = getelementptr inbounds [1002 x i32], ptr %644, i64 0, i64 %646
  %648 = load i32, ptr %647, align 4, !tbaa !5
  %649 = load i32, ptr %24, align 4, !tbaa !5
  %650 = icmp sge i32 %648, %649
  br label %651

651:                                              ; preds = %641, %637
  %652 = phi i1 [ false, %637 ], [ %650, %641 ]
  br i1 %652, label %653, label %656

653:                                              ; preds = %651
  %654 = load i32, ptr %23, align 4, !tbaa !5
  %655 = add nsw i32 %654, 1
  store i32 %655, ptr %23, align 4, !tbaa !5
  br label %637, !llvm.loop !27

656:                                              ; preds = %651
  br label %657

657:                                              ; preds = %672, %656
  %658 = load i32, ptr %22, align 4, !tbaa !5
  %659 = icmp sge i32 %658, 1
  br i1 %659, label %660, label %670

660:                                              ; preds = %657
  %661 = load i32, ptr %22, align 4, !tbaa !5
  %662 = sext i32 %661 to i64
  %663 = getelementptr inbounds [1002 x [1002 x i32]], ptr @l, i64 0, i64 %662
  %664 = load i32, ptr @y, align 4, !tbaa !5
  %665 = sext i32 %664 to i64
  %666 = getelementptr inbounds [1002 x i32], ptr %663, i64 0, i64 %665
  %667 = load i32, ptr %666, align 4, !tbaa !5
  %668 = load i32, ptr %24, align 4, !tbaa !5
  %669 = icmp sge i32 %667, %668
  br label %670

670:                                              ; preds = %660, %657
  %671 = phi i1 [ false, %657 ], [ %669, %660 ]
  br i1 %671, label %672, label %675

672:                                              ; preds = %670
  %673 = load i32, ptr %22, align 4, !tbaa !5
  %674 = add nsw i32 %673, -1
  store i32 %674, ptr %22, align 4, !tbaa !5
  br label %657, !llvm.loop !28

675:                                              ; preds = %670
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #4
  %676 = load i32, ptr %24, align 4, !tbaa !5
  %677 = load i32, ptr %23, align 4, !tbaa !5
  %678 = load i32, ptr %22, align 4, !tbaa !5
  %679 = sub nsw i32 %677, %678
  %680 = sub nsw i32 %679, 1
  %681 = mul nsw i32 %676, %680
  store i32 %681, ptr %25, align 4, !tbaa !5
  %682 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %13, ptr noundef nonnull align 4 dereferenceable(4) %25)
  %683 = load i32, ptr %682, align 4, !tbaa !5
  store i32 %683, ptr %13, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #4
  %684 = load i32, ptr %22, align 4, !tbaa !5
  %685 = icmp sge i32 %684, 1
  br i1 %685, label %686, label %732

686:                                              ; preds = %675
  %687 = load i32, ptr %23, align 4, !tbaa !5
  %688 = load i32, ptr @n, align 4, !tbaa !5
  %689 = icmp sle i32 %687, %688
  br i1 %689, label %690, label %723

690:                                              ; preds = %686
  %691 = load i32, ptr %22, align 4, !tbaa !5
  %692 = sext i32 %691 to i64
  %693 = getelementptr inbounds [1002 x [1002 x i32]], ptr @l, i64 0, i64 %692
  %694 = load i32, ptr @y, align 4, !tbaa !5
  %695 = sext i32 %694 to i64
  %696 = getelementptr inbounds [1002 x i32], ptr %693, i64 0, i64 %695
  %697 = load i32, ptr %696, align 4, !tbaa !5
  %698 = load i32, ptr %23, align 4, !tbaa !5
  %699 = sext i32 %698 to i64
  %700 = getelementptr inbounds [1002 x [1002 x i32]], ptr @l, i64 0, i64 %699
  %701 = load i32, ptr @y, align 4, !tbaa !5
  %702 = sext i32 %701 to i64
  %703 = getelementptr inbounds [1002 x i32], ptr %700, i64 0, i64 %702
  %704 = load i32, ptr %703, align 4, !tbaa !5
  %705 = icmp sge i32 %697, %704
  br i1 %705, label %706, label %714

706:                                              ; preds = %690
  %707 = load i32, ptr %22, align 4, !tbaa !5
  %708 = sext i32 %707 to i64
  %709 = getelementptr inbounds [1002 x [1002 x i32]], ptr @l, i64 0, i64 %708
  %710 = load i32, ptr @y, align 4, !tbaa !5
  %711 = sext i32 %710 to i64
  %712 = getelementptr inbounds [1002 x i32], ptr %709, i64 0, i64 %711
  %713 = load i32, ptr %712, align 4, !tbaa !5
  store i32 %713, ptr %24, align 4, !tbaa !5
  br label %722

714:                                              ; preds = %690
  %715 = load i32, ptr %23, align 4, !tbaa !5
  %716 = sext i32 %715 to i64
  %717 = getelementptr inbounds [1002 x [1002 x i32]], ptr @l, i64 0, i64 %716
  %718 = load i32, ptr @y, align 4, !tbaa !5
  %719 = sext i32 %718 to i64
  %720 = getelementptr inbounds [1002 x i32], ptr %717, i64 0, i64 %719
  %721 = load i32, ptr %720, align 4, !tbaa !5
  store i32 %721, ptr %24, align 4, !tbaa !5
  br label %722

722:                                              ; preds = %714, %706
  br label %731

723:                                              ; preds = %686
  %724 = load i32, ptr %22, align 4, !tbaa !5
  %725 = sext i32 %724 to i64
  %726 = getelementptr inbounds [1002 x [1002 x i32]], ptr @l, i64 0, i64 %725
  %727 = load i32, ptr @y, align 4, !tbaa !5
  %728 = sext i32 %727 to i64
  %729 = getelementptr inbounds [1002 x i32], ptr %726, i64 0, i64 %728
  %730 = load i32, ptr %729, align 4, !tbaa !5
  store i32 %730, ptr %24, align 4, !tbaa !5
  br label %731

731:                                              ; preds = %723, %722
  br label %746

732:                                              ; preds = %675
  %733 = load i32, ptr %23, align 4, !tbaa !5
  %734 = load i32, ptr @n, align 4, !tbaa !5
  %735 = icmp sle i32 %733, %734
  br i1 %735, label %736, label %744

736:                                              ; preds = %732
  %737 = load i32, ptr %23, align 4, !tbaa !5
  %738 = sext i32 %737 to i64
  %739 = getelementptr inbounds [1002 x [1002 x i32]], ptr @l, i64 0, i64 %738
  %740 = load i32, ptr @y, align 4, !tbaa !5
  %741 = sext i32 %740 to i64
  %742 = getelementptr inbounds [1002 x i32], ptr %739, i64 0, i64 %741
  %743 = load i32, ptr %742, align 4, !tbaa !5
  store i32 %743, ptr %24, align 4, !tbaa !5
  br label %745

744:                                              ; preds = %732
  store i32 46, ptr %3, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #4
  br label %747

745:                                              ; preds = %736
  br label %746

746:                                              ; preds = %745, %731
  br label %636, !llvm.loop !29

747:                                              ; preds = %744
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #4
  %748 = load i32, ptr @x, align 4, !tbaa !5
  store i32 %748, ptr %26, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #4
  %749 = load i32, ptr @x, align 4, !tbaa !5
  store i32 %749, ptr %27, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #4
  %750 = load i32, ptr @x, align 4, !tbaa !5
  %751 = sext i32 %750 to i64
  %752 = getelementptr inbounds [1002 x [1002 x i32]], ptr @r, i64 0, i64 %751
  %753 = load i32, ptr @y, align 4, !tbaa !5
  %754 = sext i32 %753 to i64
  %755 = getelementptr inbounds [1002 x i32], ptr %752, i64 0, i64 %754
  %756 = load i32, ptr %755, align 4, !tbaa !5
  store i32 %756, ptr %28, align 4, !tbaa !5
  br label %757

757:                                              ; preds = %867, %747
  br label %758

758:                                              ; preds = %774, %757
  %759 = load i32, ptr %27, align 4, !tbaa !5
  %760 = load i32, ptr @n, align 4, !tbaa !5
  %761 = icmp sle i32 %759, %760
  br i1 %761, label %762, label %772

762:                                              ; preds = %758
  %763 = load i32, ptr %27, align 4, !tbaa !5
  %764 = sext i32 %763 to i64
  %765 = getelementptr inbounds [1002 x [1002 x i32]], ptr @r, i64 0, i64 %764
  %766 = load i32, ptr @y, align 4, !tbaa !5
  %767 = sext i32 %766 to i64
  %768 = getelementptr inbounds [1002 x i32], ptr %765, i64 0, i64 %767
  %769 = load i32, ptr %768, align 4, !tbaa !5
  %770 = load i32, ptr %28, align 4, !tbaa !5
  %771 = icmp sge i32 %769, %770
  br label %772

772:                                              ; preds = %762, %758
  %773 = phi i1 [ false, %758 ], [ %771, %762 ]
  br i1 %773, label %774, label %777

774:                                              ; preds = %772
  %775 = load i32, ptr %27, align 4, !tbaa !5
  %776 = add nsw i32 %775, 1
  store i32 %776, ptr %27, align 4, !tbaa !5
  br label %758, !llvm.loop !30

777:                                              ; preds = %772
  br label %778

778:                                              ; preds = %793, %777
  %779 = load i32, ptr %26, align 4, !tbaa !5
  %780 = icmp sge i32 %779, 1
  br i1 %780, label %781, label %791

781:                                              ; preds = %778
  %782 = load i32, ptr %26, align 4, !tbaa !5
  %783 = sext i32 %782 to i64
  %784 = getelementptr inbounds [1002 x [1002 x i32]], ptr @r, i64 0, i64 %783
  %785 = load i32, ptr @y, align 4, !tbaa !5
  %786 = sext i32 %785 to i64
  %787 = getelementptr inbounds [1002 x i32], ptr %784, i64 0, i64 %786
  %788 = load i32, ptr %787, align 4, !tbaa !5
  %789 = load i32, ptr %28, align 4, !tbaa !5
  %790 = icmp sge i32 %788, %789
  br label %791

791:                                              ; preds = %781, %778
  %792 = phi i1 [ false, %778 ], [ %790, %781 ]
  br i1 %792, label %793, label %796

793:                                              ; preds = %791
  %794 = load i32, ptr %26, align 4, !tbaa !5
  %795 = add nsw i32 %794, -1
  store i32 %795, ptr %26, align 4, !tbaa !5
  br label %778, !llvm.loop !31

796:                                              ; preds = %791
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #4
  %797 = load i32, ptr %28, align 4, !tbaa !5
  %798 = load i32, ptr %27, align 4, !tbaa !5
  %799 = load i32, ptr %26, align 4, !tbaa !5
  %800 = sub nsw i32 %798, %799
  %801 = sub nsw i32 %800, 1
  %802 = mul nsw i32 %797, %801
  store i32 %802, ptr %29, align 4, !tbaa !5
  %803 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %13, ptr noundef nonnull align 4 dereferenceable(4) %29)
  %804 = load i32, ptr %803, align 4, !tbaa !5
  store i32 %804, ptr %13, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #4
  %805 = load i32, ptr %26, align 4, !tbaa !5
  %806 = icmp sge i32 %805, 1
  br i1 %806, label %807, label %853

807:                                              ; preds = %796
  %808 = load i32, ptr %27, align 4, !tbaa !5
  %809 = load i32, ptr @n, align 4, !tbaa !5
  %810 = icmp sle i32 %808, %809
  br i1 %810, label %811, label %844

811:                                              ; preds = %807
  %812 = load i32, ptr %26, align 4, !tbaa !5
  %813 = sext i32 %812 to i64
  %814 = getelementptr inbounds [1002 x [1002 x i32]], ptr @r, i64 0, i64 %813
  %815 = load i32, ptr @y, align 4, !tbaa !5
  %816 = sext i32 %815 to i64
  %817 = getelementptr inbounds [1002 x i32], ptr %814, i64 0, i64 %816
  %818 = load i32, ptr %817, align 4, !tbaa !5
  %819 = load i32, ptr %27, align 4, !tbaa !5
  %820 = sext i32 %819 to i64
  %821 = getelementptr inbounds [1002 x [1002 x i32]], ptr @r, i64 0, i64 %820
  %822 = load i32, ptr @y, align 4, !tbaa !5
  %823 = sext i32 %822 to i64
  %824 = getelementptr inbounds [1002 x i32], ptr %821, i64 0, i64 %823
  %825 = load i32, ptr %824, align 4, !tbaa !5
  %826 = icmp sge i32 %818, %825
  br i1 %826, label %827, label %835

827:                                              ; preds = %811
  %828 = load i32, ptr %26, align 4, !tbaa !5
  %829 = sext i32 %828 to i64
  %830 = getelementptr inbounds [1002 x [1002 x i32]], ptr @r, i64 0, i64 %829
  %831 = load i32, ptr @y, align 4, !tbaa !5
  %832 = sext i32 %831 to i64
  %833 = getelementptr inbounds [1002 x i32], ptr %830, i64 0, i64 %832
  %834 = load i32, ptr %833, align 4, !tbaa !5
  store i32 %834, ptr %28, align 4, !tbaa !5
  br label %843

835:                                              ; preds = %811
  %836 = load i32, ptr %27, align 4, !tbaa !5
  %837 = sext i32 %836 to i64
  %838 = getelementptr inbounds [1002 x [1002 x i32]], ptr @r, i64 0, i64 %837
  %839 = load i32, ptr @y, align 4, !tbaa !5
  %840 = sext i32 %839 to i64
  %841 = getelementptr inbounds [1002 x i32], ptr %838, i64 0, i64 %840
  %842 = load i32, ptr %841, align 4, !tbaa !5
  store i32 %842, ptr %28, align 4, !tbaa !5
  br label %843

843:                                              ; preds = %835, %827
  br label %852

844:                                              ; preds = %807
  %845 = load i32, ptr %26, align 4, !tbaa !5
  %846 = sext i32 %845 to i64
  %847 = getelementptr inbounds [1002 x [1002 x i32]], ptr @r, i64 0, i64 %846
  %848 = load i32, ptr @y, align 4, !tbaa !5
  %849 = sext i32 %848 to i64
  %850 = getelementptr inbounds [1002 x i32], ptr %847, i64 0, i64 %849
  %851 = load i32, ptr %850, align 4, !tbaa !5
  store i32 %851, ptr %28, align 4, !tbaa !5
  br label %852

852:                                              ; preds = %844, %843
  br label %867

853:                                              ; preds = %796
  %854 = load i32, ptr %27, align 4, !tbaa !5
  %855 = load i32, ptr @n, align 4, !tbaa !5
  %856 = icmp sle i32 %854, %855
  br i1 %856, label %857, label %865

857:                                              ; preds = %853
  %858 = load i32, ptr %27, align 4, !tbaa !5
  %859 = sext i32 %858 to i64
  %860 = getelementptr inbounds [1002 x [1002 x i32]], ptr @r, i64 0, i64 %859
  %861 = load i32, ptr @y, align 4, !tbaa !5
  %862 = sext i32 %861 to i64
  %863 = getelementptr inbounds [1002 x i32], ptr %860, i64 0, i64 %862
  %864 = load i32, ptr %863, align 4, !tbaa !5
  store i32 %864, ptr %28, align 4, !tbaa !5
  br label %866

865:                                              ; preds = %853
  store i32 52, ptr %3, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #4
  br label %868

866:                                              ; preds = %857
  br label %867

867:                                              ; preds = %866, %852
  br label %757, !llvm.loop !32

868:                                              ; preds = %865
  %869 = load i32, ptr %13, align 4, !tbaa !5
  %870 = call i32 (ptr, ...) @printf(ptr noundef @.str.3, i32 noundef %869)
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #4
  br label %871

871:                                              ; preds = %868, %372
  br label %206, !llvm.loop !20

872:                                              ; preds = %206
  ret i32 0
}

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) #3

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 = { "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 #2 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { inlinehint mustprogress 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 #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 = distinct !{!11, !10}
!12 = distinct !{!12, !10}
!13 = distinct !{!13, !10}
!14 = distinct !{!14, !10}
!15 = distinct !{!15, !10}
!16 = distinct !{!16, !10}
!17 = distinct !{!17, !10}
!18 = distinct !{!18, !10}
!19 = distinct !{!19, !10}
!20 = distinct !{!20, !10}
!21 = distinct !{!21, !10}
!22 = distinct !{!22, !10}
!23 = distinct !{!23, !10}
!24 = distinct !{!24, !10}
!25 = distinct !{!25, !10}
!26 = distinct !{!26, !10}
!27 = distinct !{!27, !10}
!28 = distinct !{!28, !10}
!29 = distinct !{!29, !10}
!30 = distinct !{!30, !10}
!31 = distinct !{!31, !10}
!32 = distinct !{!32, !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"

@n = external dso_local global i32, align 4
@m = external dso_local global i32, align 4
@q = external dso_local global i32, align 4
@l = external dso_local local_unnamed_addr global [1002 x [1002 x i32]], align 16
@r = external dso_local local_unnamed_addr global [1002 x [1002 x i32]], align 16
@u = external dso_local local_unnamed_addr global [1002 x [1002 x i32]], align 16
@d = external dso_local local_unnamed_addr global [1002 x [1002 x i32]], align 16
@g = external dso_local global [1002 x [1002 x i32]], align 16
@op = external dso_local global i32, align 4
@x = external dso_local global i32, align 4
@y = external dso_local global i32, align 4
@.str = external hidden unnamed_addr constant [7 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [4 x i8], align 1

; Function Attrs: mustprogress 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 = tail call i32 (ptr, ...) @__isoc99_scanf(ptr noundef nonnull @.str, ptr noundef nonnull @n, ptr noundef nonnull @m, ptr noundef nonnull @q)
  %7 = load i32, ptr @n, align 4, !tbaa !5
  %.not252 = icmp slt i32 %7, 1
  %8 = load i32, ptr @m, align 4
  %9 = icmp slt i32 %8, 1
  %or.cond = select i1 %.not252, i1 true, i1 %9
  br i1 %or.cond, label %.preheader233, label %.preheader237

.preheader237:                                    ; preds = %0, %._crit_edge
  %10 = phi i32 [ %14, %._crit_edge ], [ %7, %0 ]
  %11 = phi i32 [ %15, %._crit_edge ], [ %8, %0 ]
  %indvars.iv344 = phi i64 [ %indvars.iv.next345, %._crit_edge ], [ 1, %0 ]
  %.not222250 = icmp slt i32 %11, 1
  br i1 %.not222250, label %._crit_edge, label %.lr.ph

.preheader236:                                    ; preds = %._crit_edge
  %.not193258 = icmp slt i32 %14, 1
  br i1 %.not193258, label %.preheader233, label %.preheader235.lr.ph

.preheader235.lr.ph:                              ; preds = %.preheader236
  %.pr = load i32, ptr @m, align 4, !tbaa !5
  %.not221254 = icmp slt i32 %.pr, 1
  br i1 %.not221254, label %.preheader233, label %.preheader235.preheader

.preheader235.preheader:                          ; preds = %.preheader235.lr.ph
  %12 = add nuw i32 %.pr, 1
  %13 = add nuw i32 %14, 1
  %wide.trip.count353 = zext i32 %13 to i64
  %wide.trip.count = zext i32 %12 to i64
  br label %.preheader235

._crit_edge.loopexit:                             ; preds = %.lr.ph
  %.pre = load i32, ptr @n, align 4, !tbaa !5
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %.preheader237
  %14 = phi i32 [ %.pre, %._crit_edge.loopexit ], [ %10, %.preheader237 ]
  %15 = phi i32 [ %19, %._crit_edge.loopexit ], [ %11, %.preheader237 ]
  %indvars.iv.next345 = add nuw nsw i64 %indvars.iv344, 1
  %16 = sext i32 %14 to i64
  %.not.not = icmp slt i64 %indvars.iv344, %16
  br i1 %.not.not, label %.preheader237, label %.preheader236, !llvm.loop !9

.lr.ph:                                           ; preds = %.preheader237, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ 1, %.preheader237 ]
  %17 = getelementptr inbounds [1002 x [1002 x i32]], ptr @g, i64 0, i64 %indvars.iv344, i64 %indvars.iv
  %18 = tail call i32 (ptr, ...) @__isoc99_scanf(ptr noundef nonnull @.str.1, ptr noundef nonnull %17)
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %19 = load i32, ptr @m, align 4, !tbaa !5
  %20 = sext i32 %19 to i64
  %.not222.not = icmp slt i64 %indvars.iv, %20
  br i1 %.not222.not, label %.lr.ph, label %._crit_edge.loopexit, !llvm.loop !12

.preheader235:                                    ; preds = %.preheader235.preheader, %._crit_edge257
  %indvars.iv350 = phi i64 [ 1, %.preheader235.preheader ], [ %indvars.iv.next351, %._crit_edge257 ]
  %21 = add nsw i64 %indvars.iv350, -1
  br label %44

.lr.ph265:                                        ; preds = %._crit_edge257
  %.pr407 = load i32, ptr @m, align 4, !tbaa !5
  %22 = icmp sgt i32 %.pr407, 0
  br i1 %22, label %.lr.ph262.us.preheader, label %.preheader233

.lr.ph262.us.preheader:                           ; preds = %.lr.ph265
  %23 = zext nneg i32 %.pr407 to i64
  %24 = zext nneg i32 %14 to i64
  br label %.lr.ph262.us

.lr.ph262.us:                                     ; preds = %.lr.ph262.us.preheader, %._crit_edge263.us
  %indvars.iv358 = phi i64 [ %24, %.lr.ph262.us.preheader ], [ %indvars.iv.next359, %._crit_edge263.us ]
  %25 = add nuw nsw i64 %indvars.iv358, 1
  br label %26

26:                                               ; preds = %.lr.ph262.us, %38
  %indvars.iv355 = phi i64 [ %23, %.lr.ph262.us ], [ %indvars.iv.next356, %38 ]
  %27 = getelementptr inbounds [1002 x [1002 x i32]], ptr @g, i64 0, i64 %indvars.iv358, i64 %indvars.iv355
  %28 = load i32, ptr %27, align 4, !tbaa !5
  %29 = icmp eq i32 %28, 1
  br i1 %29, label %30, label %38

30:                                               ; preds = %26
  %31 = add nuw nsw i64 %indvars.iv355, 1
  %32 = getelementptr inbounds [1002 x [1002 x i32]], ptr @r, i64 0, i64 %indvars.iv358, i64 %31
  %33 = load i32, ptr %32, align 4, !tbaa !5
  %34 = add nsw i32 %33, 1
  %35 = getelementptr inbounds [1002 x [1002 x i32]], ptr @d, i64 0, i64 %25, i64 %indvars.iv355
  %36 = load i32, ptr %35, align 4, !tbaa !5
  %37 = add nsw i32 %36, 1
  br label %38

38:                                               ; preds = %26, %30
  %.sink = phi i32 [ %34, %30 ], [ 0, %26 ]
  %39 = phi i32 [ %37, %30 ], [ 0, %26 ]
  %40 = getelementptr inbounds [1002 x [1002 x i32]], ptr @r, i64 0, i64 %indvars.iv358, i64 %indvars.iv355
  store i32 %.sink, ptr %40, align 4
  %41 = getelementptr inbounds [1002 x [1002 x i32]], ptr @d, i64 0, i64 %indvars.iv358, i64 %indvars.iv355
  store i32 %39, ptr %41, align 4, !tbaa !5
  %indvars.iv.next356 = add nsw i64 %indvars.iv355, -1
  %42 = icmp sgt i64 %indvars.iv355, 1
  br i1 %42, label %26, label %._crit_edge263.us, !llvm.loop !13

._crit_edge263.us:                                ; preds = %38
  %indvars.iv.next359 = add nsw i64 %indvars.iv358, -1
  %43 = icmp sgt i64 %indvars.iv358, 1
  br i1 %43, label %.lr.ph262.us, label %.preheader233, !llvm.loop !14

._crit_edge257:                                   ; preds = %56
  %indvars.iv.next351 = add nuw nsw i64 %indvars.iv350, 1
  %exitcond354.not = icmp eq i64 %indvars.iv.next351, %wide.trip.count353
  br i1 %exitcond354.not, label %.lr.ph265, label %.preheader235, !llvm.loop !15

44:                                               ; preds = %.preheader235, %56
  %indvars.iv347 = phi i64 [ 1, %.preheader235 ], [ %indvars.iv.next348, %56 ]
  %45 = getelementptr inbounds [1002 x [1002 x i32]], ptr @g, i64 0, i64 %indvars.iv350, i64 %indvars.iv347
  %46 = load i32, ptr %45, align 4, !tbaa !5
  %47 = icmp eq i32 %46, 1
  br i1 %47, label %48, label %56

48:                                               ; preds = %44
  %49 = add nsw i64 %indvars.iv347, -1
  %50 = getelementptr inbounds [1002 x [1002 x i32]], ptr @l, i64 0, i64 %indvars.iv350, i64 %49
  %51 = load i32, ptr %50, align 4, !tbaa !5
  %52 = add nsw i32 %51, 1
  %53 = getelementptr inbounds [1002 x [1002 x i32]], ptr @u, i64 0, i64 %21, i64 %indvars.iv347
  %54 = load i32, ptr %53, align 4, !tbaa !5
  %55 = add nsw i32 %54, 1
  br label %56

56:                                               ; preds = %44, %48
  %.sink388 = phi i32 [ %52, %48 ], [ 0, %44 ]
  %57 = phi i32 [ %55, %48 ], [ 0, %44 ]
  %58 = getelementptr inbounds [1002 x [1002 x i32]], ptr @l, i64 0, i64 %indvars.iv350, i64 %indvars.iv347
  store i32 %.sink388, ptr %58, align 4
  %59 = getelementptr inbounds [1002 x [1002 x i32]], ptr @u, i64 0, i64 %indvars.iv350, i64 %indvars.iv347
  store i32 %57, ptr %59, align 4, !tbaa !5
  %indvars.iv.next348 = add nuw nsw i64 %indvars.iv347, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next348, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge257, label %44, !llvm.loop !16

.preheader233:                                    ; preds = %._crit_edge263.us, %.preheader235.lr.ph, %0, %.preheader236, %.lr.ph265
  %60 = load i32, ptr @q, align 4, !tbaa !5
  %61 = add nsw i32 %60, -1
  store i32 %61, ptr @q, align 4, !tbaa !5
  %.not194321 = icmp eq i32 %60, 0
  br i1 %.not194321, label %._crit_edge323, label %.lr.ph322

.lr.ph322:                                        ; preds = %.preheader233, %.backedge
  %62 = call i32 (ptr, ...) @__isoc99_scanf(ptr noundef nonnull @.str, ptr noundef nonnull @op, ptr noundef nonnull @x, ptr noundef nonnull @y)
  %63 = load i32, ptr @op, align 4, !tbaa !5
  %64 = icmp eq i32 %63, 1
  %65 = load i32, ptr @x, align 4, !tbaa !5
  %66 = sext i32 %65 to i64
  %67 = load i32, ptr @y, align 4, !tbaa !5
  %68 = sext i32 %67 to i64
  %69 = getelementptr inbounds [1002 x [1002 x i32]], ptr @g, i64 0, i64 %66, i64 %68
  %70 = load i32, ptr %69, align 4, !tbaa !5
  br i1 %64, label %71, label %209

71:                                               ; preds = %.lr.ph322
  %72 = xor i32 %70, 1
  store i32 %72, ptr %69, align 4, !tbaa !5
  %73 = load i32, ptr @n, align 4, !tbaa !5
  %.not219310 = icmp sgt i32 %65, %73
  br i1 %.not219310, label %.preheader232, label %.lr.ph313.preheader

.lr.ph313.preheader:                              ; preds = %71
  %74 = add i32 %73, 1
  %75 = sub i32 %74, %65
  %xtraiter = and i32 %75, 1
  %lcmp.mod.not = icmp eq i32 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.lr.ph313.prol.loopexit, label %.lr.ph313.prol

.lr.ph313.prol:                                   ; preds = %.lr.ph313.preheader
  %76 = getelementptr inbounds [1002 x [1002 x i32]], ptr @g, i64 0, i64 %66, i64 %68
  %77 = load i32, ptr %76, align 4, !tbaa !5
  %78 = icmp eq i32 %77, 1
  br i1 %78, label %79, label %.lr.ph313.prol.loopexit.unr-lcssa

79:                                               ; preds = %.lr.ph313.prol
  %80 = add nsw i64 %66, -1
  %81 = getelementptr inbounds [1002 x [1002 x i32]], ptr @u, i64 0, i64 %80, i64 %68
  %82 = load i32, ptr %81, align 4, !tbaa !5
  %83 = add nsw i32 %82, 1
  br label %.lr.ph313.prol.loopexit.unr-lcssa

.lr.ph313.prol.loopexit.unr-lcssa:                ; preds = %79, %.lr.ph313.prol
  %84 = phi i32 [ %83, %79 ], [ 0, %.lr.ph313.prol ]
  %85 = getelementptr inbounds [1002 x [1002 x i32]], ptr @u, i64 0, i64 %66, i64 %68
  store i32 %84, ptr %85, align 4, !tbaa !5
  %indvars.iv.next374.prol = add nsw i64 %66, 1
  br label %.lr.ph313.prol.loopexit

.lr.ph313.prol.loopexit:                          ; preds = %.lr.ph313.prol.loopexit.unr-lcssa, %.lr.ph313.preheader
  %indvars.iv373.unr = phi i64 [ %66, %.lr.ph313.preheader ], [ %indvars.iv.next374.prol, %.lr.ph313.prol.loopexit.unr-lcssa ]
  %86 = icmp eq i32 %73, %65
  br i1 %86, label %.preheader232, label %.lr.ph313

.preheader232:                                    ; preds = %.lr.ph313.prol.loopexit, %117, %71
  %87 = icmp sgt i32 %65, 0
  br i1 %87, label %.lr.ph315.preheader, label %.preheader231

.lr.ph315.preheader:                              ; preds = %.preheader232
  %88 = zext nneg i32 %65 to i64
  %xtraiter489 = and i64 %88, 1
  %lcmp.mod490.not = icmp eq i64 %xtraiter489, 0
  br i1 %lcmp.mod490.not, label %.lr.ph315.prol.loopexit, label %.lr.ph315.prol

.lr.ph315.prol:                                   ; preds = %.lr.ph315.preheader
  %89 = getelementptr inbounds [1002 x [1002 x i32]], ptr @g, i64 0, i64 %88, i64 %68
  %90 = load i32, ptr %89, align 4, !tbaa !5
  %91 = icmp eq i32 %90, 1
  br i1 %91, label %92, label %.lr.ph315.prol.loopexit.unr-lcssa

92:                                               ; preds = %.lr.ph315.prol
  %93 = add nuw nsw i64 %88, 1
  %94 = getelementptr inbounds [1002 x [1002 x i32]], ptr @d, i64 0, i64 %93, i64 %68
  %95 = load i32, ptr %94, align 4, !tbaa !5
  %96 = add nsw i32 %95, 1
  br label %.lr.ph315.prol.loopexit.unr-lcssa

.lr.ph315.prol.loopexit.unr-lcssa:                ; preds = %92, %.lr.ph315.prol
  %97 = phi i32 [ %96, %92 ], [ 0, %.lr.ph315.prol ]
  %98 = getelementptr inbounds [1002 x [1002 x i32]], ptr @d, i64 0, i64 %88, i64 %68
  store i32 %97, ptr %98, align 4, !tbaa !5
  %indvars.iv.next378.prol = add nsw i64 %88, -1
  br label %.lr.ph315.prol.loopexit

.lr.ph315.prol.loopexit:                          ; preds = %.lr.ph315.prol.loopexit.unr-lcssa, %.lr.ph315.preheader
  %indvars.iv377.unr = phi i64 [ %88, %.lr.ph315.preheader ], [ %indvars.iv.next378.prol, %.lr.ph315.prol.loopexit.unr-lcssa ]
  %99 = icmp eq i32 %65, 1
  br i1 %99, label %.preheader231, label %.lr.ph315

.lr.ph313:                                        ; preds = %.lr.ph313.prol.loopexit, %117
  %indvars.iv373 = phi i64 [ %indvars.iv.next374.1, %117 ], [ %indvars.iv373.unr, %.lr.ph313.prol.loopexit ]
  %100 = getelementptr inbounds [1002 x [1002 x i32]], ptr @g, i64 0, i64 %indvars.iv373, i64 %68
  %101 = load i32, ptr %100, align 4, !tbaa !5
  %102 = icmp eq i32 %101, 1
  br i1 %102, label %103, label %.lr.ph313.1

103:                                              ; preds = %.lr.ph313
  %104 = add nsw i64 %indvars.iv373, -1
  %105 = getelementptr inbounds [1002 x [1002 x i32]], ptr @u, i64 0, i64 %104, i64 %68
  %106 = load i32, ptr %105, align 4, !tbaa !5
  %107 = add nsw i32 %106, 1
  br label %.lr.ph313.1

.lr.ph313.1:                                      ; preds = %.lr.ph313, %103
  %108 = phi i32 [ %107, %103 ], [ 0, %.lr.ph313 ]
  %109 = getelementptr inbounds [1002 x [1002 x i32]], ptr @u, i64 0, i64 %indvars.iv373, i64 %68
  store i32 %108, ptr %109, align 4, !tbaa !5
  %indvars.iv.next374 = add nsw i64 %indvars.iv373, 1
  %110 = getelementptr inbounds [1002 x [1002 x i32]], ptr @g, i64 0, i64 %indvars.iv.next374, i64 %68
  %111 = load i32, ptr %110, align 4, !tbaa !5
  %112 = icmp eq i32 %111, 1
  br i1 %112, label %113, label %117

113:                                              ; preds = %.lr.ph313.1
  %114 = getelementptr inbounds [1002 x [1002 x i32]], ptr @u, i64 0, i64 %indvars.iv373, i64 %68
  %115 = load i32, ptr %114, align 4, !tbaa !5
  %116 = add nsw i32 %115, 1
  br label %117

117:                                              ; preds = %113, %.lr.ph313.1
  %118 = phi i32 [ %116, %113 ], [ 0, %.lr.ph313.1 ]
  %119 = getelementptr inbounds [1002 x [1002 x i32]], ptr @u, i64 0, i64 %indvars.iv.next374, i64 %68
  store i32 %118, ptr %119, align 4, !tbaa !5
  %indvars.iv.next374.1 = add nsw i64 %indvars.iv373, 2
  %lftr.wideiv.1 = trunc i64 %indvars.iv.next374.1 to i32
  %exitcond376.not.1 = icmp eq i32 %74, %lftr.wideiv.1
  br i1 %exitcond376.not.1, label %.preheader232, label %.lr.ph313, !llvm.loop !17

.preheader231:                                    ; preds = %.lr.ph315.prol.loopexit, %151, %.preheader232
  %120 = load i32, ptr @m, align 4, !tbaa !5
  %.not220316 = icmp sgt i32 %67, %120
  br i1 %.not220316, label %.preheader, label %.lr.ph318.preheader

.lr.ph318.preheader:                              ; preds = %.preheader231
  %121 = add i32 %120, 1
  %122 = sub i32 %121, %67
  %xtraiter491 = and i32 %122, 1
  %lcmp.mod492.not = icmp eq i32 %xtraiter491, 0
  br i1 %lcmp.mod492.not, label %.lr.ph318.prol.loopexit, label %.lr.ph318.prol

.lr.ph318.prol:                                   ; preds = %.lr.ph318.preheader
  %123 = getelementptr inbounds [1002 x [1002 x i32]], ptr @g, i64 0, i64 %66, i64 %68
  %124 = load i32, ptr %123, align 4, !tbaa !5
  %125 = icmp eq i32 %124, 1
  br i1 %125, label %126, label %.lr.ph318.prol.loopexit.unr-lcssa

126:                                              ; preds = %.lr.ph318.prol
  %127 = add nsw i64 %68, -1
  %128 = getelementptr inbounds [1002 x [1002 x i32]], ptr @l, i64 0, i64 %66, i64 %127
  %129 = load i32, ptr %128, align 4, !tbaa !5
  %130 = add nsw i32 %129, 1
  br label %.lr.ph318.prol.loopexit.unr-lcssa

.lr.ph318.prol.loopexit.unr-lcssa:                ; preds = %126, %.lr.ph318.prol
  %131 = phi i32 [ %130, %126 ], [ 0, %.lr.ph318.prol ]
  %132 = getelementptr inbounds [1002 x [1002 x i32]], ptr @l, i64 0, i64 %66, i64 %68
  store i32 %131, ptr %132, align 4, !tbaa !5
  %indvars.iv.next381.prol = add nsw i64 %68, 1
  br label %.lr.ph318.prol.loopexit

.lr.ph318.prol.loopexit:                          ; preds = %.lr.ph318.prol.loopexit.unr-lcssa, %.lr.ph318.preheader
  %indvars.iv380.unr = phi i64 [ %68, %.lr.ph318.preheader ], [ %indvars.iv.next381.prol, %.lr.ph318.prol.loopexit.unr-lcssa ]
  %133 = icmp eq i32 %120, %67
  br i1 %133, label %.preheader, label %.lr.ph318

.lr.ph315:                                        ; preds = %.lr.ph315.prol.loopexit, %151
  %indvars.iv377 = phi i64 [ %indvars.iv.next378.1, %151 ], [ %indvars.iv377.unr, %.lr.ph315.prol.loopexit ]
  %134 = getelementptr inbounds [1002 x [1002 x i32]], ptr @g, i64 0, i64 %indvars.iv377, i64 %68
  %135 = load i32, ptr %134, align 4, !tbaa !5
  %136 = icmp eq i32 %135, 1
  br i1 %136, label %137, label %.lr.ph315.1

137:                                              ; preds = %.lr.ph315
  %138 = add nuw nsw i64 %indvars.iv377, 1
  %139 = getelementptr inbounds [1002 x [1002 x i32]], ptr @d, i64 0, i64 %138, i64 %68
  %140 = load i32, ptr %139, align 4, !tbaa !5
  %141 = add nsw i32 %140, 1
  br label %.lr.ph315.1

.lr.ph315.1:                                      ; preds = %.lr.ph315, %137
  %142 = phi i32 [ %141, %137 ], [ 0, %.lr.ph315 ]
  %143 = getelementptr inbounds [1002 x [1002 x i32]], ptr @d, i64 0, i64 %indvars.iv377, i64 %68
  store i32 %142, ptr %143, align 4, !tbaa !5
  %indvars.iv.next378 = add nsw i64 %indvars.iv377, -1
  %144 = getelementptr inbounds [1002 x [1002 x i32]], ptr @g, i64 0, i64 %indvars.iv.next378, i64 %68
  %145 = load i32, ptr %144, align 4, !tbaa !5
  %146 = icmp eq i32 %145, 1
  br i1 %146, label %147, label %151

147:                                              ; preds = %.lr.ph315.1
  %148 = getelementptr inbounds [1002 x [1002 x i32]], ptr @d, i64 0, i64 %indvars.iv377, i64 %68
  %149 = load i32, ptr %148, align 4, !tbaa !5
  %150 = add nsw i32 %149, 1
  br label %151

151:                                              ; preds = %147, %.lr.ph315.1
  %152 = phi i32 [ %150, %147 ], [ 0, %.lr.ph315.1 ]
  %153 = getelementptr inbounds [1002 x [1002 x i32]], ptr @d, i64 0, i64 %indvars.iv.next378, i64 %68
  store i32 %152, ptr %153, align 4, !tbaa !5
  %indvars.iv.next378.1 = add nsw i64 %indvars.iv377, -2
  %154 = icmp sgt i64 %indvars.iv377, 2
  br i1 %154, label %.lr.ph315, label %.preheader231, !llvm.loop !18

.preheader:                                       ; preds = %.lr.ph318.prol.loopexit, %185, %.preheader231
  %155 = icmp sgt i32 %67, 0
  br i1 %155, label %.lr.ph320.preheader, label %.backedge

.lr.ph320.preheader:                              ; preds = %.preheader
  %156 = zext nneg i32 %67 to i64
  %xtraiter493 = and i64 %156, 1
  %lcmp.mod494.not = icmp eq i64 %xtraiter493, 0
  br i1 %lcmp.mod494.not, label %.lr.ph320.prol.loopexit, label %.lr.ph320.prol

.lr.ph320.prol:                                   ; preds = %.lr.ph320.preheader
  %157 = getelementptr inbounds [1002 x [1002 x i32]], ptr @g, i64 0, i64 %66, i64 %156
  %158 = load i32, ptr %157, align 4, !tbaa !5
  %159 = icmp eq i32 %158, 1
  br i1 %159, label %160, label %.lr.ph320.prol.loopexit.unr-lcssa

160:                                              ; preds = %.lr.ph320.prol
  %161 = add nuw nsw i64 %156, 1
  %162 = getelementptr inbounds [1002 x [1002 x i32]], ptr @r, i64 0, i64 %66, i64 %161
  %163 = load i32, ptr %162, align 4, !tbaa !5
  %164 = add nsw i32 %163, 1
  br label %.lr.ph320.prol.loopexit.unr-lcssa

.lr.ph320.prol.loopexit.unr-lcssa:                ; preds = %160, %.lr.ph320.prol
  %165 = phi i32 [ %164, %160 ], [ 0, %.lr.ph320.prol ]
  %166 = getelementptr inbounds [1002 x [1002 x i32]], ptr @r, i64 0, i64 %66, i64 %156
  store i32 %165, ptr %166, align 4, !tbaa !5
  %indvars.iv.next386.prol = add nsw i64 %156, -1
  br label %.lr.ph320.prol.loopexit

.lr.ph320.prol.loopexit:                          ; preds = %.lr.ph320.prol.loopexit.unr-lcssa, %.lr.ph320.preheader
  %indvars.iv385.unr = phi i64 [ %156, %.lr.ph320.preheader ], [ %indvars.iv.next386.prol, %.lr.ph320.prol.loopexit.unr-lcssa ]
  %167 = icmp eq i32 %67, 1
  br i1 %167, label %.backedge, label %.lr.ph320

.lr.ph318:                                        ; preds = %.lr.ph318.prol.loopexit, %185
  %indvars.iv380 = phi i64 [ %indvars.iv.next381.1, %185 ], [ %indvars.iv380.unr, %.lr.ph318.prol.loopexit ]
  %168 = getelementptr inbounds [1002 x [1002 x i32]], ptr @g, i64 0, i64 %66, i64 %indvars.iv380
  %169 = load i32, ptr %168, align 4, !tbaa !5
  %170 = icmp eq i32 %169, 1
  br i1 %170, label %171, label %.lr.ph318.1

171:                                              ; preds = %.lr.ph318
  %172 = add nsw i64 %indvars.iv380, -1
  %173 = getelementptr inbounds [1002 x [1002 x i32]], ptr @l, i64 0, i64 %66, i64 %172
  %174 = load i32, ptr %173, align 4, !tbaa !5
  %175 = add nsw i32 %174, 1
  br label %.lr.ph318.1

.lr.ph318.1:                                      ; preds = %.lr.ph318, %171
  %176 = phi i32 [ %175, %171 ], [ 0, %.lr.ph318 ]
  %177 = getelementptr inbounds [1002 x [1002 x i32]], ptr @l, i64 0, i64 %66, i64 %indvars.iv380
  store i32 %176, ptr %177, align 4, !tbaa !5
  %indvars.iv.next381 = add nsw i64 %indvars.iv380, 1
  %178 = getelementptr inbounds [1002 x [1002 x i32]], ptr @g, i64 0, i64 %66, i64 %indvars.iv.next381
  %179 = load i32, ptr %178, align 4, !tbaa !5
  %180 = icmp eq i32 %179, 1
  br i1 %180, label %181, label %185

181:                                              ; preds = %.lr.ph318.1
  %182 = getelementptr inbounds [1002 x [1002 x i32]], ptr @l, i64 0, i64 %66, i64 %indvars.iv380
  %183 = load i32, ptr %182, align 4, !tbaa !5
  %184 = add nsw i32 %183, 1
  br label %185

185:                                              ; preds = %181, %.lr.ph318.1
  %186 = phi i32 [ %184, %181 ], [ 0, %.lr.ph318.1 ]
  %187 = getelementptr inbounds [1002 x [1002 x i32]], ptr @l, i64 0, i64 %66, i64 %indvars.iv.next381
  store i32 %186, ptr %187, align 4, !tbaa !5
  %indvars.iv.next381.1 = add nsw i64 %indvars.iv380, 2
  %lftr.wideiv383.1 = trunc i64 %indvars.iv.next381.1 to i32
  %exitcond384.not.1 = icmp eq i32 %121, %lftr.wideiv383.1
  br i1 %exitcond384.not.1, label %.preheader, label %.lr.ph318, !llvm.loop !19

.lr.ph320:                                        ; preds = %.lr.ph320.prol.loopexit, %205
  %indvars.iv385 = phi i64 [ %indvars.iv.next386.1, %205 ], [ %indvars.iv385.unr, %.lr.ph320.prol.loopexit ]
  %188 = getelementptr inbounds [1002 x [1002 x i32]], ptr @g, i64 0, i64 %66, i64 %indvars.iv385
  %189 = load i32, ptr %188, align 4, !tbaa !5
  %190 = icmp eq i32 %189, 1
  br i1 %190, label %191, label %.lr.ph320.1

191:                                              ; preds = %.lr.ph320
  %192 = add nuw nsw i64 %indvars.iv385, 1
  %193 = getelementptr inbounds [1002 x [1002 x i32]], ptr @r, i64 0, i64 %66, i64 %192
  %194 = load i32, ptr %193, align 4, !tbaa !5
  %195 = add nsw i32 %194, 1
  br label %.lr.ph320.1

.lr.ph320.1:                                      ; preds = %.lr.ph320, %191
  %196 = phi i32 [ %195, %191 ], [ 0, %.lr.ph320 ]
  %197 = getelementptr inbounds [1002 x [1002 x i32]], ptr @r, i64 0, i64 %66, i64 %indvars.iv385
  store i32 %196, ptr %197, align 4, !tbaa !5
  %indvars.iv.next386 = add nsw i64 %indvars.iv385, -1
  %198 = getelementptr inbounds [1002 x [1002 x i32]], ptr @g, i64 0, i64 %66, i64 %indvars.iv.next386
  %199 = load i32, ptr %198, align 4, !tbaa !5
  %200 = icmp eq i32 %199, 1
  br i1 %200, label %201, label %205

201:                                              ; preds = %.lr.ph320.1
  %202 = getelementptr inbounds [1002 x [1002 x i32]], ptr @r, i64 0, i64 %66, i64 %indvars.iv385
  %203 = load i32, ptr %202, align 4, !tbaa !5
  %204 = add nsw i32 %203, 1
  br label %205

205:                                              ; preds = %201, %.lr.ph320.1
  %206 = phi i32 [ %204, %201 ], [ 0, %.lr.ph320.1 ]
  %207 = getelementptr inbounds [1002 x [1002 x i32]], ptr @r, i64 0, i64 %66, i64 %indvars.iv.next386
  store i32 %206, ptr %207, align 4, !tbaa !5
  %indvars.iv.next386.1 = add nsw i64 %indvars.iv385, -2
  %208 = icmp sgt i64 %indvars.iv385, 2
  br i1 %208, label %.lr.ph320, label %.backedge, !llvm.loop !20

209:                                              ; preds = %.lr.ph322
  %210 = icmp eq i32 %70, 0
  br i1 %210, label %211, label %215

211:                                              ; preds = %209
  %212 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2)
  br label %.backedge

.backedge:                                        ; preds = %.lr.ph320.prol.loopexit, %205, %429, %.preheader, %211
  %213 = load i32, ptr @q, align 4, !tbaa !5
  %214 = add nsw i32 %213, -1
  store i32 %214, ptr @q, align 4, !tbaa !5
  %.not194 = icmp eq i32 %213, 0
  br i1 %.not194, label %._crit_edge323, label %.lr.ph322, !llvm.loop !21

215:                                              ; preds = %209
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %1) #5
  store i32 0, ptr %1, align 4, !tbaa !5
  %216 = getelementptr inbounds [1002 x [1002 x i32]], ptr @u, i64 0, i64 %66, i64 %68
  %217 = load i32, ptr %216, align 4, !tbaa !5
  %.pre389 = load i32, ptr @m, align 4, !tbaa !5
  br label %218

218:                                              ; preds = %.backedge464, %215
  %219 = phi i32 [ %65, %215 ], [ %.be465, %.backedge464 ]
  %220 = phi i32 [ %.pre389, %215 ], [ %.be466, %.backedge464 ]
  %.0172 = phi i32 [ %67, %215 ], [ %.0172.be, %.backedge464 ]
  %.0170 = phi i32 [ %67, %215 ], [ %.1171.lcssa, %.backedge464 ]
  %.0168 = phi i32 [ %217, %215 ], [ %.0168.be, %.backedge464 ]
  %.not195266 = icmp sgt i32 %.0170, %220
  br i1 %.not195266, label %.critedge, label %.lr.ph269

.lr.ph269:                                        ; preds = %218
  %221 = sext i32 %219 to i64
  %222 = sext i32 %.0170 to i64
  %223 = sext i32 %220 to i64
  %224 = add i32 %220, 1
  br label %225

225:                                              ; preds = %.lr.ph269, %228
  %indvars.iv361 = phi i64 [ %222, %.lr.ph269 ], [ %indvars.iv.next362, %228 ]
  %226 = getelementptr inbounds [1002 x [1002 x i32]], ptr @u, i64 0, i64 %221, i64 %indvars.iv361
  %227 = load i32, ptr %226, align 4, !tbaa !5
  %.not196 = icmp slt i32 %227, %.0168
  br i1 %.not196, label %.critedge.loopexit.split.loop.exit425, label %228

228:                                              ; preds = %225
  %indvars.iv.next362 = add nsw i64 %indvars.iv361, 1
  %.not195.not = icmp slt i64 %indvars.iv361, %223
  br i1 %.not195.not, label %225, label %.critedge, !llvm.loop !22

.critedge.loopexit.split.loop.exit425:            ; preds = %225
  %229 = trunc nsw i64 %indvars.iv361 to i32
  br label %.critedge

.critedge:                                        ; preds = %228, %.critedge.loopexit.split.loop.exit425, %218
  %.1171.lcssa = phi i32 [ %.0170, %218 ], [ %229, %.critedge.loopexit.split.loop.exit425 ], [ %224, %228 ]
  %230 = icmp sgt i32 %.0172, 0
  br i1 %230, label %.lr.ph274, label %._crit_edge275

.lr.ph274:                                        ; preds = %.critedge
  %231 = sext i32 %219 to i64
  br label %232

232:                                              ; preds = %.lr.ph274, %236
  %.1173273 = phi i32 [ %.0172, %.lr.ph274 ], [ %237, %236 ]
  %233 = zext nneg i32 %.1173273 to i64
  %234 = getelementptr inbounds [1002 x [1002 x i32]], ptr @u, i64 0, i64 %231, i64 %233
  %235 = load i32, ptr %234, align 4, !tbaa !5
  %.not197 = icmp slt i32 %235, %.0168
  br i1 %.not197, label %239, label %236

236:                                              ; preds = %232
  %237 = add nsw i32 %.1173273, -1
  %238 = icmp sgt i32 %.1173273, 1
  br i1 %238, label %232, label %._crit_edge275, !llvm.loop !23

239:                                              ; preds = %232
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %2) #5
  %240 = xor i32 %.1173273, -1
  %241 = add i32 %.1171.lcssa, %240
  %242 = mul nsw i32 %241, %.0168
  store i32 %242, ptr %2, align 4, !tbaa !5
  %243 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %1, ptr noundef nonnull align 4 dereferenceable(4) %2)
  %244 = load i32, ptr %243, align 4, !tbaa !5
  store i32 %244, ptr %1, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %2) #5
  %245 = load i32, ptr @m, align 4, !tbaa !5
  %.not217 = icmp sgt i32 %.1171.lcssa, %245
  %246 = load i32, ptr @x, align 4, !tbaa !5
  %247 = sext i32 %246 to i64
  %248 = getelementptr inbounds [1002 x [1002 x i32]], ptr @u, i64 0, i64 %247, i64 %233
  %249 = load i32, ptr %248, align 4, !tbaa !5
  br i1 %.not217, label %.backedge464, label %250

.backedge464:                                     ; preds = %239, %250, %260
  %.be465 = phi i32 [ %261, %260 ], [ %246, %250 ], [ %246, %239 ]
  %.be466 = phi i32 [ %259, %260 ], [ %245, %250 ], [ %245, %239 ]
  %.0172.be = phi i32 [ %.1173.lcssa, %260 ], [ %.1173273, %250 ], [ %.1173273, %239 ]
  %.0168.be = phi i32 [ %265, %260 ], [ %., %250 ], [ %249, %239 ]
  br label %218, !llvm.loop !24

250:                                              ; preds = %239
  %251 = sext i32 %.1171.lcssa to i64
  %252 = getelementptr inbounds [1002 x [1002 x i32]], ptr @u, i64 0, i64 %247, i64 %251
  %253 = load i32, ptr %252, align 4, !tbaa !5
  %. = call i32 @llvm.smax.i32(i32 %249, i32 %253)
  br label %.backedge464

._crit_edge275:                                   ; preds = %236, %.critedge
  %.1173.lcssa = phi i32 [ %.0172, %.critedge ], [ 0, %236 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %2) #5
  %254 = xor i32 %.1173.lcssa, -1
  %255 = add i32 %.1171.lcssa, %254
  %256 = mul nsw i32 %255, %.0168
  store i32 %256, ptr %2, align 4, !tbaa !5
  %257 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %1, ptr noundef nonnull align 4 dereferenceable(4) %2)
  %258 = load i32, ptr %257, align 4, !tbaa !5
  store i32 %258, ptr %1, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %2) #5
  %259 = load i32, ptr @m, align 4, !tbaa !5
  %.not198 = icmp sgt i32 %.1171.lcssa, %259
  br i1 %.not198, label %266, label %260

260:                                              ; preds = %._crit_edge275
  %261 = load i32, ptr @x, align 4, !tbaa !5
  %262 = sext i32 %261 to i64
  %263 = sext i32 %.1171.lcssa to i64
  %264 = getelementptr inbounds [1002 x [1002 x i32]], ptr @u, i64 0, i64 %262, i64 %263
  %265 = load i32, ptr %264, align 4, !tbaa !5
  br label %.backedge464

266:                                              ; preds = %._crit_edge275
  %267 = load i32, ptr @y, align 4, !tbaa !5
  %268 = load i32, ptr @x, align 4, !tbaa !5
  %269 = sext i32 %268 to i64
  %270 = sext i32 %267 to i64
  %271 = getelementptr inbounds [1002 x [1002 x i32]], ptr @d, i64 0, i64 %269, i64 %270
  %272 = load i32, ptr %271, align 4, !tbaa !5
  br label %273

273:                                              ; preds = %.backedge461, %266
  %274 = phi i32 [ %268, %266 ], [ %.be462, %.backedge461 ]
  %275 = phi i32 [ %259, %266 ], [ %.be463, %.backedge461 ]
  %.0166 = phi i32 [ %267, %266 ], [ %.0166.be, %.backedge461 ]
  %.0164 = phi i32 [ %267, %266 ], [ %.1165.lcssa, %.backedge461 ]
  %.0162 = phi i32 [ %272, %266 ], [ %.0162.be, %.backedge461 ]
  %.not199277 = icmp sgt i32 %.0164, %275
  br i1 %.not199277, label %.critedge4, label %.lr.ph280

.lr.ph280:                                        ; preds = %273
  %276 = sext i32 %274 to i64
  %277 = sext i32 %.0164 to i64
  %278 = sext i32 %275 to i64
  %279 = add i32 %275, 1
  br label %280

280:                                              ; preds = %.lr.ph280, %283
  %indvars.iv364 = phi i64 [ %277, %.lr.ph280 ], [ %indvars.iv.next365, %283 ]
  %281 = getelementptr inbounds [1002 x [1002 x i32]], ptr @d, i64 0, i64 %276, i64 %indvars.iv364
  %282 = load i32, ptr %281, align 4, !tbaa !5
  %.not200 = icmp slt i32 %282, %.0162
  br i1 %.not200, label %.critedge4.loopexit.split.loop.exit427, label %283

283:                                              ; preds = %280
  %indvars.iv.next365 = add nsw i64 %indvars.iv364, 1
  %.not199.not = icmp slt i64 %indvars.iv364, %278
  br i1 %.not199.not, label %280, label %.critedge4, !llvm.loop !25

.critedge4.loopexit.split.loop.exit427:           ; preds = %280
  %284 = trunc nsw i64 %indvars.iv364 to i32
  br label %.critedge4

.critedge4:                                       ; preds = %283, %.critedge4.loopexit.split.loop.exit427, %273
  %.1165.lcssa = phi i32 [ %.0164, %273 ], [ %284, %.critedge4.loopexit.split.loop.exit427 ], [ %279, %283 ]
  %285 = icmp sgt i32 %.0166, 0
  br i1 %285, label %.lr.ph285, label %._crit_edge286

.lr.ph285:                                        ; preds = %.critedge4
  %286 = sext i32 %274 to i64
  br label %287

287:                                              ; preds = %.lr.ph285, %291
  %.1167284 = phi i32 [ %.0166, %.lr.ph285 ], [ %292, %291 ]
  %288 = zext nneg i32 %.1167284 to i64
  %289 = getelementptr inbounds [1002 x [1002 x i32]], ptr @d, i64 0, i64 %286, i64 %288
  %290 = load i32, ptr %289, align 4, !tbaa !5
  %.not201 = icmp slt i32 %290, %.0162
  br i1 %.not201, label %294, label %291

291:                                              ; preds = %287
  %292 = add nsw i32 %.1167284, -1
  %293 = icmp sgt i32 %.1167284, 1
  br i1 %293, label %287, label %._crit_edge286, !llvm.loop !26

294:                                              ; preds = %287
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %3) #5
  %295 = xor i32 %.1167284, -1
  %296 = add i32 %.1165.lcssa, %295
  %297 = mul nsw i32 %296, %.0162
  store i32 %297, ptr %3, align 4, !tbaa !5
  %298 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %1, ptr noundef nonnull align 4 dereferenceable(4) %3)
  %299 = load i32, ptr %298, align 4, !tbaa !5
  store i32 %299, ptr %1, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #5
  %300 = load i32, ptr @m, align 4, !tbaa !5
  %.not215 = icmp sgt i32 %.1165.lcssa, %300
  %301 = load i32, ptr @x, align 4, !tbaa !5
  %302 = sext i32 %301 to i64
  %303 = getelementptr inbounds [1002 x [1002 x i32]], ptr @d, i64 0, i64 %302, i64 %288
  %304 = load i32, ptr %303, align 4, !tbaa !5
  br i1 %.not215, label %.backedge461, label %305

.backedge461:                                     ; preds = %294, %305, %317
  %.be462 = phi i32 [ %315, %317 ], [ %301, %305 ], [ %301, %294 ]
  %.be463 = phi i32 [ %314, %317 ], [ %300, %305 ], [ %300, %294 ]
  %.0166.be = phi i32 [ %.1167.lcssa, %317 ], [ %.1167284, %305 ], [ %.1167284, %294 ]
  %.0162.be = phi i32 [ %320, %317 ], [ %.225, %305 ], [ %304, %294 ]
  br label %273, !llvm.loop !27

305:                                              ; preds = %294
  %306 = sext i32 %.1165.lcssa to i64
  %307 = getelementptr inbounds [1002 x [1002 x i32]], ptr @d, i64 0, i64 %302, i64 %306
  %308 = load i32, ptr %307, align 4, !tbaa !5
  %.225 = call i32 @llvm.smax.i32(i32 %304, i32 %308)
  br label %.backedge461

._crit_edge286:                                   ; preds = %291, %.critedge4
  %.1167.lcssa = phi i32 [ %.0166, %.critedge4 ], [ 0, %291 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %3) #5
  %309 = xor i32 %.1167.lcssa, -1
  %310 = add i32 %.1165.lcssa, %309
  %311 = mul nsw i32 %310, %.0162
  store i32 %311, ptr %3, align 4, !tbaa !5
  %312 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %1, ptr noundef nonnull align 4 dereferenceable(4) %3)
  %313 = load i32, ptr %312, align 4, !tbaa !5
  store i32 %313, ptr %1, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #5
  %314 = load i32, ptr @m, align 4, !tbaa !5
  %.not202 = icmp sgt i32 %.1165.lcssa, %314
  %315 = load i32, ptr @x, align 4, !tbaa !5
  %316 = sext i32 %315 to i64
  br i1 %.not202, label %321, label %317

317:                                              ; preds = %._crit_edge286
  %318 = sext i32 %.1165.lcssa to i64
  %319 = getelementptr inbounds [1002 x [1002 x i32]], ptr @d, i64 0, i64 %316, i64 %318
  %320 = load i32, ptr %319, align 4, !tbaa !5
  br label %.backedge461

321:                                              ; preds = %._crit_edge286
  %322 = load i32, ptr @y, align 4, !tbaa !5
  %323 = sext i32 %322 to i64
  %324 = getelementptr inbounds [1002 x [1002 x i32]], ptr @l, i64 0, i64 %316, i64 %323
  %325 = load i32, ptr %324, align 4, !tbaa !5
  %.pre390 = load i32, ptr @n, align 4, !tbaa !5
  br label %326

326:                                              ; preds = %.backedge458, %321
  %327 = phi i32 [ %322, %321 ], [ %.be459, %.backedge458 ]
  %328 = phi i32 [ %.pre390, %321 ], [ %.be460, %.backedge458 ]
  %.0160 = phi i32 [ %315, %321 ], [ %.0160.be, %.backedge458 ]
  %.0158 = phi i32 [ %315, %321 ], [ %.1159.lcssa, %.backedge458 ]
  %.0156 = phi i32 [ %325, %321 ], [ %.0156.be, %.backedge458 ]
  %.not203288 = icmp sgt i32 %.0158, %328
  br i1 %.not203288, label %.critedge8, label %.lr.ph291

.lr.ph291:                                        ; preds = %326
  %329 = sext i32 %327 to i64
  %330 = sext i32 %.0158 to i64
  %331 = sext i32 %328 to i64
  %332 = add i32 %328, 1
  br label %333

333:                                              ; preds = %.lr.ph291, %336
  %indvars.iv367 = phi i64 [ %330, %.lr.ph291 ], [ %indvars.iv.next368, %336 ]
  %334 = getelementptr inbounds [1002 x [1002 x i32]], ptr @l, i64 0, i64 %indvars.iv367, i64 %329
  %335 = load i32, ptr %334, align 4, !tbaa !5
  %.not204 = icmp slt i32 %335, %.0156
  br i1 %.not204, label %.critedge8.loopexit.split.loop.exit429, label %336

336:                                              ; preds = %333
  %indvars.iv.next368 = add nsw i64 %indvars.iv367, 1
  %.not203.not = icmp slt i64 %indvars.iv367, %331
  br i1 %.not203.not, label %333, label %.critedge8, !llvm.loop !28

.critedge8.loopexit.split.loop.exit429:           ; preds = %333
  %337 = trunc nsw i64 %indvars.iv367 to i32
  br label %.critedge8

.critedge8:                                       ; preds = %336, %.critedge8.loopexit.split.loop.exit429, %326
  %.1159.lcssa = phi i32 [ %.0158, %326 ], [ %337, %.critedge8.loopexit.split.loop.exit429 ], [ %332, %336 ]
  %338 = icmp sgt i32 %.0160, 0
  br i1 %338, label %.lr.ph296, label %._crit_edge297

.lr.ph296:                                        ; preds = %.critedge8
  %339 = sext i32 %327 to i64
  br label %340

340:                                              ; preds = %.lr.ph296, %344
  %.1161295 = phi i32 [ %.0160, %.lr.ph296 ], [ %345, %344 ]
  %341 = zext nneg i32 %.1161295 to i64
  %342 = getelementptr inbounds [1002 x [1002 x i32]], ptr @l, i64 0, i64 %341, i64 %339
  %343 = load i32, ptr %342, align 4, !tbaa !5
  %.not205 = icmp slt i32 %343, %.0156
  br i1 %.not205, label %347, label %344

344:                                              ; preds = %340
  %345 = add nsw i32 %.1161295, -1
  %346 = icmp sgt i32 %.1161295, 1
  br i1 %346, label %340, label %._crit_edge297, !llvm.loop !29

347:                                              ; preds = %340
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #5
  %348 = xor i32 %.1161295, -1
  %349 = add i32 %.1159.lcssa, %348
  %350 = mul nsw i32 %349, %.0156
  store i32 %350, ptr %4, align 4, !tbaa !5
  %351 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %1, ptr noundef nonnull align 4 dereferenceable(4) %4)
  %352 = load i32, ptr %351, align 4, !tbaa !5
  store i32 %352, ptr %1, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #5
  %353 = load i32, ptr @n, align 4, !tbaa !5
  %.not213 = icmp sgt i32 %.1159.lcssa, %353
  %354 = load i32, ptr @y, align 4, !tbaa !5
  %355 = sext i32 %354 to i64
  %356 = getelementptr inbounds [1002 x [1002 x i32]], ptr @l, i64 0, i64 %341, i64 %355
  %357 = load i32, ptr %356, align 4, !tbaa !5
  br i1 %.not213, label %.backedge458, label %358

.backedge458:                                     ; preds = %347, %358, %368
  %.be459 = phi i32 [ %370, %368 ], [ %354, %358 ], [ %354, %347 ]
  %.be460 = phi i32 [ %367, %368 ], [ %353, %358 ], [ %353, %347 ]
  %.0160.be = phi i32 [ %.1161.lcssa, %368 ], [ %.1161295, %358 ], [ %.1161295, %347 ]
  %.0156.be = phi i32 [ %373, %368 ], [ %.227, %358 ], [ %357, %347 ]
  br label %326, !llvm.loop !30

358:                                              ; preds = %347
  %359 = sext i32 %.1159.lcssa to i64
  %360 = getelementptr inbounds [1002 x [1002 x i32]], ptr @l, i64 0, i64 %359, i64 %355
  %361 = load i32, ptr %360, align 4, !tbaa !5
  %.227 = call i32 @llvm.smax.i32(i32 %357, i32 %361)
  br label %.backedge458

._crit_edge297:                                   ; preds = %344, %.critedge8
  %.1161.lcssa = phi i32 [ %.0160, %.critedge8 ], [ 0, %344 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #5
  %362 = xor i32 %.1161.lcssa, -1
  %363 = add i32 %.1159.lcssa, %362
  %364 = mul nsw i32 %363, %.0156
  store i32 %364, ptr %4, align 4, !tbaa !5
  %365 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %1, ptr noundef nonnull align 4 dereferenceable(4) %4)
  %366 = load i32, ptr %365, align 4, !tbaa !5
  store i32 %366, ptr %1, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #5
  %367 = load i32, ptr @n, align 4, !tbaa !5
  %.not206 = icmp sgt i32 %.1159.lcssa, %367
  br i1 %.not206, label %374, label %368

368:                                              ; preds = %._crit_edge297
  %369 = sext i32 %.1159.lcssa to i64
  %370 = load i32, ptr @y, align 4, !tbaa !5
  %371 = sext i32 %370 to i64
  %372 = getelementptr inbounds [1002 x [1002 x i32]], ptr @l, i64 0, i64 %369, i64 %371
  %373 = load i32, ptr %372, align 4, !tbaa !5
  br label %.backedge458

374:                                              ; preds = %._crit_edge297
  %375 = load i32, ptr @x, align 4, !tbaa !5
  %376 = sext i32 %375 to i64
  %377 = load i32, ptr @y, align 4, !tbaa !5
  %378 = sext i32 %377 to i64
  %379 = getelementptr inbounds [1002 x [1002 x i32]], ptr @r, i64 0, i64 %376, i64 %378
  %380 = load i32, ptr %379, align 4, !tbaa !5
  br label %381

381:                                              ; preds = %.backedge456, %374
  %382 = phi i32 [ %377, %374 ], [ %.be, %.backedge456 ]
  %383 = phi i32 [ %367, %374 ], [ %.be457, %.backedge456 ]
  %.0154 = phi i32 [ %375, %374 ], [ %.0154.be, %.backedge456 ]
  %.0152 = phi i32 [ %375, %374 ], [ %.1153.lcssa, %.backedge456 ]
  %.0 = phi i32 [ %380, %374 ], [ %.0.be, %.backedge456 ]
  %.not207299 = icmp sgt i32 %.0152, %383
  br i1 %.not207299, label %.critedge12, label %.lr.ph302

.lr.ph302:                                        ; preds = %381
  %384 = sext i32 %382 to i64
  %385 = sext i32 %.0152 to i64
  %386 = sext i32 %383 to i64
  %387 = add i32 %383, 1
  br label %388

388:                                              ; preds = %.lr.ph302, %391
  %indvars.iv370 = phi i64 [ %385, %.lr.ph302 ], [ %indvars.iv.next371, %391 ]
  %389 = getelementptr inbounds [1002 x [1002 x i32]], ptr @r, i64 0, i64 %indvars.iv370, i64 %384
  %390 = load i32, ptr %389, align 4, !tbaa !5
  %.not208 = icmp slt i32 %390, %.0
  br i1 %.not208, label %.critedge12.loopexit.split.loop.exit431, label %391

391:                                              ; preds = %388
  %indvars.iv.next371 = add nsw i64 %indvars.iv370, 1
  %.not207.not = icmp slt i64 %indvars.iv370, %386
  br i1 %.not207.not, label %388, label %.critedge12, !llvm.loop !31

.critedge12.loopexit.split.loop.exit431:          ; preds = %388
  %392 = trunc nsw i64 %indvars.iv370 to i32
  br label %.critedge12

.critedge12:                                      ; preds = %391, %.critedge12.loopexit.split.loop.exit431, %381
  %.1153.lcssa = phi i32 [ %.0152, %381 ], [ %392, %.critedge12.loopexit.split.loop.exit431 ], [ %387, %391 ]
  %393 = icmp sgt i32 %.0154, 0
  br i1 %393, label %.lr.ph307, label %._crit_edge308

.lr.ph307:                                        ; preds = %.critedge12
  %394 = sext i32 %382 to i64
  br label %395

395:                                              ; preds = %.lr.ph307, %399
  %.1155306 = phi i32 [ %.0154, %.lr.ph307 ], [ %400, %399 ]
  %396 = zext nneg i32 %.1155306 to i64
  %397 = getelementptr inbounds [1002 x [1002 x i32]], ptr @r, i64 0, i64 %396, i64 %394
  %398 = load i32, ptr %397, align 4, !tbaa !5
  %.not209 = icmp slt i32 %398, %.0
  br i1 %.not209, label %402, label %399

399:                                              ; preds = %395
  %400 = add nsw i32 %.1155306, -1
  %401 = icmp sgt i32 %.1155306, 1
  br i1 %401, label %395, label %._crit_edge308, !llvm.loop !32

402:                                              ; preds = %395
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #5
  %403 = xor i32 %.1155306, -1
  %404 = add i32 %.1153.lcssa, %403
  %405 = mul nsw i32 %404, %.0
  store i32 %405, ptr %5, align 4, !tbaa !5
  %406 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %1, ptr noundef nonnull align 4 dereferenceable(4) %5)
  %407 = load i32, ptr %406, align 4, !tbaa !5
  store i32 %407, ptr %1, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #5
  %408 = load i32, ptr @n, align 4, !tbaa !5
  %.not211 = icmp sgt i32 %.1153.lcssa, %408
  %409 = load i32, ptr @y, align 4, !tbaa !5
  %410 = sext i32 %409 to i64
  %411 = getelementptr inbounds [1002 x [1002 x i32]], ptr @r, i64 0, i64 %396, i64 %410
  %412 = load i32, ptr %411, align 4, !tbaa !5
  br i1 %.not211, label %.backedge456, label %413

.backedge456:                                     ; preds = %402, %413, %423
  %.be = phi i32 [ %425, %423 ], [ %409, %413 ], [ %409, %402 ]
  %.be457 = phi i32 [ %422, %423 ], [ %408, %413 ], [ %408, %402 ]
  %.0154.be = phi i32 [ %.1155.lcssa, %423 ], [ %.1155306, %413 ], [ %.1155306, %402 ]
  %.0.be = phi i32 [ %428, %423 ], [ %.229, %413 ], [ %412, %402 ]
  br label %381, !llvm.loop !33

413:                                              ; preds = %402
  %414 = sext i32 %.1153.lcssa to i64
  %415 = getelementptr inbounds [1002 x [1002 x i32]], ptr @r, i64 0, i64 %414, i64 %410
  %416 = load i32, ptr %415, align 4, !tbaa !5
  %.229 = call i32 @llvm.smax.i32(i32 %412, i32 %416)
  br label %.backedge456

._crit_edge308:                                   ; preds = %399, %.critedge12
  %.1155.lcssa = phi i32 [ %.0154, %.critedge12 ], [ 0, %399 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #5
  %417 = xor i32 %.1155.lcssa, -1
  %418 = add i32 %.1153.lcssa, %417
  %419 = mul nsw i32 %418, %.0
  store i32 %419, ptr %5, align 4, !tbaa !5
  %420 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %1, ptr noundef nonnull align 4 dereferenceable(4) %5)
  %421 = load i32, ptr %420, align 4, !tbaa !5
  store i32 %421, ptr %1, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #5
  %422 = load i32, ptr @n, align 4, !tbaa !5
  %.not210 = icmp sgt i32 %.1153.lcssa, %422
  br i1 %.not210, label %429, label %423

423:                                              ; preds = %._crit_edge308
  %424 = sext i32 %.1153.lcssa to i64
  %425 = load i32, ptr @y, align 4, !tbaa !5
  %426 = sext i32 %425 to i64
  %427 = getelementptr inbounds [1002 x [1002 x i32]], ptr @r, i64 0, i64 %424, i64 %426
  %428 = load i32, ptr %427, align 4, !tbaa !5
  br label %.backedge456

429:                                              ; preds = %._crit_edge308
  %430 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.3, i32 noundef %421)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %1) #5
  br label %.backedge

._crit_edge323:                                   ; preds = %.backedge, %.preheader233
  ret i32 0
}

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #3

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

attributes #0 = { mustprogress 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 = { 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 #2 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { inlinehint mustprogress 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 #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { 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, !11}
!10 = !{!"llvm.loop.mustprogress"}
!11 = !{!"llvm.loop.unswitch.partial.disable"}
!12 = distinct !{!12, !10}
!13 = distinct !{!13, !10}
!14 = distinct !{!14, !10}
!15 = distinct !{!15, !10}
!16 = distinct !{!16, !10}
!17 = distinct !{!17, !10}
!18 = distinct !{!18, !10}
!19 = distinct !{!19, !10}
!20 = distinct !{!20, !10}
!21 = distinct !{!21, !10}
!22 = distinct !{!22, !10}
!23 = distinct !{!23, !10}
!24 = distinct !{!24, !10}
!25 = distinct !{!25, !10}
!26 = distinct !{!26, !10}
!27 = distinct !{!27, !10}
!28 = distinct !{!28, !10}
!29 = distinct !{!29, !10}
!30 = distinct !{!30, !10}
!31 = distinct !{!31, !10}
!32 = distinct !{!32, !10}
!33 = distinct !{!33, !10}


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