; LLVM IR from tangjz/acm-icpc :: codeforces/gym (101471G)

; 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
@f = external dso_local global [301 x [301 x i32]], align 16
@g = external dso_local global [301 x [301 x i32]], align 16
@buf = external dso_local global [301 x i8], align 16
@.str = external hidden unnamed_addr constant [5 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

; 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 @m, ptr noundef @n)
  call void @llvm.lifetime.start.p0(i64 4, ptr %2) #3
  store i32 1, ptr %2, align 4, !tbaa !5
  br label %31

31:                                               ; preds = %62, %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) #3
  br label %65

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

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

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

43:                                               ; preds = %38
  %44 = load i32, ptr %4, align 4, !tbaa !5
  %45 = sub nsw i32 %44, 1
  %46 = sext i32 %45 to i64
  %47 = getelementptr inbounds [301 x i8], ptr @buf, i64 0, i64 %46
  %48 = load i8, ptr %47, align 1, !tbaa !9
  %49 = sext i8 %48 to i32
  %50 = icmp eq i32 %49, 35
  %51 = zext i1 %50 to i32
  %52 = load i32, ptr %2, align 4, !tbaa !5
  %53 = sext i32 %52 to i64
  %54 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %53
  %55 = load i32, ptr %4, align 4, !tbaa !5
  %56 = sext i32 %55 to i64
  %57 = getelementptr inbounds [301 x i32], ptr %54, i64 0, i64 %56
  store i32 %51, ptr %57, align 4, !tbaa !5
  br label %58

58:                                               ; preds = %43
  %59 = load i32, ptr %4, align 4, !tbaa !5
  %60 = add nsw i32 %59, 1
  store i32 %60, ptr %4, align 4, !tbaa !5
  br label %38, !llvm.loop !10

61:                                               ; preds = %42
  br label %62

62:                                               ; preds = %61
  %63 = load i32, ptr %2, align 4, !tbaa !5
  %64 = add nsw i32 %63, 1
  store i32 %64, ptr %2, align 4, !tbaa !5
  br label %31, !llvm.loop !12

65:                                               ; preds = %35
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #3
  store i32 0, ptr %5, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #3
  store i32 0, ptr %6, align 4, !tbaa !5
  br label %66

66:                                               ; preds = %1274, %1272, %65
  %67 = load i32, ptr @n, align 4, !tbaa !5
  %68 = icmp sgt i32 %67, 2
  br i1 %68, label %69, label %72

69:                                               ; preds = %66
  %70 = load i32, ptr @m, align 4, !tbaa !5
  %71 = icmp sgt i32 %70, 2
  br label %72

72:                                               ; preds = %69, %66
  %73 = phi i1 [ false, %66 ], [ %71, %69 ]
  br i1 %73, label %74, label %1275

74:                                               ; preds = %72
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #3
  store i32 0, ptr %7, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #3
  store i32 0, ptr %8, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #3
  store i32 2, ptr %9, align 4, !tbaa !5
  br label %75

75:                                               ; preds = %295, %74
  %76 = load i32, ptr %9, align 4, !tbaa !5
  %77 = load i32, ptr @n, align 4, !tbaa !5
  %78 = icmp slt i32 %76, %77
  br i1 %78, label %79, label %83

79:                                               ; preds = %75
  %80 = load i32, ptr %7, align 4, !tbaa !5
  %81 = icmp ne i32 %80, 0
  %82 = xor i1 %81, true
  br label %83

83:                                               ; preds = %79, %75
  %84 = phi i1 [ false, %75 ], [ %82, %79 ]
  br i1 %84, label %86, label %85

85:                                               ; preds = %83
  store i32 10, ptr %3, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #3
  br label %298

86:                                               ; preds = %83
  %87 = load i32, ptr %9, align 4, !tbaa !5
  %88 = sub nsw i32 %87, 1
  %89 = sext i32 %88 to i64
  %90 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %89
  %91 = getelementptr inbounds [301 x i32], ptr %90, i64 0, i64 1
  %92 = load i32, ptr %91, align 4, !tbaa !5
  %93 = load i32, ptr %9, align 4, !tbaa !5
  %94 = sub nsw i32 %93, 2
  %95 = sext i32 %94 to i64
  %96 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %95
  %97 = getelementptr inbounds [301 x i32], ptr %96, i64 0, i64 2
  %98 = load i32, ptr %97, align 4, !tbaa !5
  %99 = xor i32 %92, %98
  %100 = load i32, ptr %9, align 4, !tbaa !5
  %101 = sub nsw i32 %100, 1
  %102 = sext i32 %101 to i64
  %103 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %102
  %104 = getelementptr inbounds [301 x i32], ptr %103, i64 0, i64 2
  %105 = load i32, ptr %104, align 4, !tbaa !5
  %106 = xor i32 %99, %105
  %107 = load i32, ptr %9, align 4, !tbaa !5
  %108 = sext i32 %107 to i64
  %109 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %108
  %110 = getelementptr inbounds [301 x i32], ptr %109, i64 0, i64 2
  store i32 %106, ptr %110, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #3
  store i32 3, ptr %10, align 4, !tbaa !5
  br label %111

111:                                              ; preds = %189, %86
  %112 = load i32, ptr %10, align 4, !tbaa !5
  %113 = load i32, ptr @m, align 4, !tbaa !5
  %114 = icmp slt i32 %112, %113
  br i1 %114, label %116, label %115

115:                                              ; preds = %111
  store i32 13, ptr %3, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #3
  br label %192

116:                                              ; preds = %111
  %117 = load i32, ptr %9, align 4, !tbaa !5
  %118 = sub nsw i32 %117, 1
  %119 = sext i32 %118 to i64
  %120 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %119
  %121 = load i32, ptr %10, align 4, !tbaa !5
  %122 = sub nsw i32 %121, 2
  %123 = sext i32 %122 to i64
  %124 = getelementptr inbounds [301 x i32], ptr %120, i64 0, i64 %123
  %125 = load i32, ptr %124, align 4, !tbaa !5
  %126 = load i32, ptr %9, align 4, !tbaa !5
  %127 = sub nsw i32 %126, 1
  %128 = sext i32 %127 to i64
  %129 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %128
  %130 = load i32, ptr %10, align 4, !tbaa !5
  %131 = sub nsw i32 %130, 1
  %132 = sext i32 %131 to i64
  %133 = getelementptr inbounds [301 x i32], ptr %129, i64 0, i64 %132
  %134 = load i32, ptr %133, align 4, !tbaa !5
  %135 = xor i32 %125, %134
  %136 = load i32, ptr %9, align 4, !tbaa !5
  %137 = sub nsw i32 %136, 2
  %138 = sext i32 %137 to i64
  %139 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %138
  %140 = load i32, ptr %10, align 4, !tbaa !5
  %141 = sub nsw i32 %140, 3
  %142 = sext i32 %141 to i64
  %143 = getelementptr inbounds [301 x i32], ptr %139, i64 0, i64 %142
  %144 = load i32, ptr %143, align 4, !tbaa !5
  %145 = xor i32 %135, %144
  %146 = load i32, ptr %9, align 4, !tbaa !5
  %147 = sub nsw i32 %146, 2
  %148 = sext i32 %147 to i64
  %149 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %148
  %150 = load i32, ptr %10, align 4, !tbaa !5
  %151 = sext i32 %150 to i64
  %152 = getelementptr inbounds [301 x i32], ptr %149, i64 0, i64 %151
  %153 = load i32, ptr %152, align 4, !tbaa !5
  %154 = xor i32 %145, %153
  %155 = load i32, ptr %9, align 4, !tbaa !5
  %156 = sub nsw i32 %155, 1
  %157 = sext i32 %156 to i64
  %158 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %157
  %159 = load i32, ptr %10, align 4, !tbaa !5
  %160 = sub nsw i32 %159, 3
  %161 = sext i32 %160 to i64
  %162 = getelementptr inbounds [301 x i32], ptr %158, i64 0, i64 %161
  %163 = load i32, ptr %162, align 4, !tbaa !5
  %164 = xor i32 %154, %163
  %165 = load i32, ptr %9, align 4, !tbaa !5
  %166 = sub nsw i32 %165, 1
  %167 = sext i32 %166 to i64
  %168 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %167
  %169 = load i32, ptr %10, align 4, !tbaa !5
  %170 = sext i32 %169 to i64
  %171 = getelementptr inbounds [301 x i32], ptr %168, i64 0, i64 %170
  %172 = load i32, ptr %171, align 4, !tbaa !5
  %173 = xor i32 %164, %172
  %174 = load i32, ptr %9, align 4, !tbaa !5
  %175 = sext i32 %174 to i64
  %176 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %175
  %177 = load i32, ptr %10, align 4, !tbaa !5
  %178 = sub nsw i32 %177, 3
  %179 = sext i32 %178 to i64
  %180 = getelementptr inbounds [301 x i32], ptr %176, i64 0, i64 %179
  %181 = load i32, ptr %180, align 4, !tbaa !5
  %182 = xor i32 %173, %181
  %183 = load i32, ptr %9, align 4, !tbaa !5
  %184 = sext i32 %183 to i64
  %185 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %184
  %186 = load i32, ptr %10, align 4, !tbaa !5
  %187 = sext i32 %186 to i64
  %188 = getelementptr inbounds [301 x i32], ptr %185, i64 0, i64 %187
  store i32 %182, ptr %188, align 4, !tbaa !5
  br label %189

189:                                              ; preds = %116
  %190 = load i32, ptr %10, align 4, !tbaa !5
  %191 = add nsw i32 %190, 1
  store i32 %191, ptr %10, align 4, !tbaa !5
  br label %111, !llvm.loop !13

192:                                              ; preds = %115
  %193 = load i32, ptr %9, align 4, !tbaa !5
  %194 = sub nsw i32 %193, 1
  %195 = sext i32 %194 to i64
  %196 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %195
  %197 = load i32, ptr @m, align 4, !tbaa !5
  %198 = sub nsw i32 %197, 2
  %199 = sext i32 %198 to i64
  %200 = getelementptr inbounds [301 x i32], ptr %196, i64 0, i64 %199
  %201 = load i32, ptr %200, align 4, !tbaa !5
  %202 = load i32, ptr %9, align 4, !tbaa !5
  %203 = sub nsw i32 %202, 1
  %204 = sext i32 %203 to i64
  %205 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %204
  %206 = load i32, ptr @m, align 4, !tbaa !5
  %207 = sub nsw i32 %206, 1
  %208 = sext i32 %207 to i64
  %209 = getelementptr inbounds [301 x i32], ptr %205, i64 0, i64 %208
  %210 = load i32, ptr %209, align 4, !tbaa !5
  %211 = xor i32 %201, %210
  %212 = load i32, ptr %9, align 4, !tbaa !5
  %213 = sub nsw i32 %212, 2
  %214 = sext i32 %213 to i64
  %215 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %214
  %216 = load i32, ptr @m, align 4, !tbaa !5
  %217 = sub nsw i32 %216, 3
  %218 = sext i32 %217 to i64
  %219 = getelementptr inbounds [301 x i32], ptr %215, i64 0, i64 %218
  %220 = load i32, ptr %219, align 4, !tbaa !5
  %221 = xor i32 %211, %220
  %222 = load i32, ptr %9, align 4, !tbaa !5
  %223 = sub nsw i32 %222, 1
  %224 = sext i32 %223 to i64
  %225 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %224
  %226 = load i32, ptr @m, align 4, !tbaa !5
  %227 = sub nsw i32 %226, 3
  %228 = sext i32 %227 to i64
  %229 = getelementptr inbounds [301 x i32], ptr %225, i64 0, i64 %228
  %230 = load i32, ptr %229, align 4, !tbaa !5
  %231 = xor i32 %221, %230
  %232 = load i32, ptr %9, align 4, !tbaa !5
  %233 = sext i32 %232 to i64
  %234 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %233
  %235 = load i32, ptr @m, align 4, !tbaa !5
  %236 = sub nsw i32 %235, 3
  %237 = sext i32 %236 to i64
  %238 = getelementptr inbounds [301 x i32], ptr %234, i64 0, i64 %237
  %239 = load i32, ptr %238, align 4, !tbaa !5
  %240 = xor i32 %231, %239
  %241 = icmp ne i32 %240, 0
  br i1 %241, label %291, label %242

242:                                              ; preds = %192
  %243 = load i32, ptr %9, align 4, !tbaa !5
  %244 = sub nsw i32 %243, 1
  %245 = sext i32 %244 to i64
  %246 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %245
  %247 = load i32, ptr @m, align 4, !tbaa !5
  %248 = sub nsw i32 %247, 1
  %249 = sext i32 %248 to i64
  %250 = getelementptr inbounds [301 x i32], ptr %246, i64 0, i64 %249
  %251 = load i32, ptr %250, align 4, !tbaa !5
  %252 = load i32, ptr %9, align 4, !tbaa !5
  %253 = sub nsw i32 %252, 1
  %254 = sext i32 %253 to i64
  %255 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %254
  %256 = load i32, ptr @m, align 4, !tbaa !5
  %257 = sext i32 %256 to i64
  %258 = getelementptr inbounds [301 x i32], ptr %255, i64 0, i64 %257
  %259 = load i32, ptr %258, align 4, !tbaa !5
  %260 = xor i32 %251, %259
  %261 = load i32, ptr %9, align 4, !tbaa !5
  %262 = sub nsw i32 %261, 2
  %263 = sext i32 %262 to i64
  %264 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %263
  %265 = load i32, ptr @m, align 4, !tbaa !5
  %266 = sub nsw i32 %265, 2
  %267 = sext i32 %266 to i64
  %268 = getelementptr inbounds [301 x i32], ptr %264, i64 0, i64 %267
  %269 = load i32, ptr %268, align 4, !tbaa !5
  %270 = xor i32 %260, %269
  %271 = load i32, ptr %9, align 4, !tbaa !5
  %272 = sub nsw i32 %271, 1
  %273 = sext i32 %272 to i64
  %274 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %273
  %275 = load i32, ptr @m, align 4, !tbaa !5
  %276 = sub nsw i32 %275, 2
  %277 = sext i32 %276 to i64
  %278 = getelementptr inbounds [301 x i32], ptr %274, i64 0, i64 %277
  %279 = load i32, ptr %278, align 4, !tbaa !5
  %280 = xor i32 %270, %279
  %281 = load i32, ptr %9, align 4, !tbaa !5
  %282 = sext i32 %281 to i64
  %283 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %282
  %284 = load i32, ptr @m, align 4, !tbaa !5
  %285 = sub nsw i32 %284, 2
  %286 = sext i32 %285 to i64
  %287 = getelementptr inbounds [301 x i32], ptr %283, i64 0, i64 %286
  %288 = load i32, ptr %287, align 4, !tbaa !5
  %289 = xor i32 %280, %288
  %290 = icmp ne i32 %289, 0
  br i1 %290, label %291, label %294

291:                                              ; preds = %242, %192
  %292 = load i32, ptr %9, align 4, !tbaa !5
  %293 = sub nsw i32 %292, 1
  store i32 %293, ptr %7, align 4, !tbaa !5
  br label %294

294:                                              ; preds = %291, %242
  br label %295

295:                                              ; preds = %294
  %296 = load i32, ptr %9, align 4, !tbaa !5
  %297 = add nsw i32 %296, 1
  store i32 %297, ptr %9, align 4, !tbaa !5
  br label %75, !llvm.loop !14

298:                                              ; preds = %85
  %299 = load i32, ptr %7, align 4, !tbaa !5
  %300 = icmp ne i32 %299, 0
  br i1 %300, label %489, label %301

301:                                              ; preds = %298
  %302 = load i32, ptr @n, align 4, !tbaa !5
  %303 = sub nsw i32 %302, 1
  %304 = sext i32 %303 to i64
  %305 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %304
  %306 = getelementptr inbounds [301 x i32], ptr %305, i64 0, i64 1
  %307 = load i32, ptr %306, align 4, !tbaa !5
  %308 = load i32, ptr @n, align 4, !tbaa !5
  %309 = sub nsw i32 %308, 2
  %310 = sext i32 %309 to i64
  %311 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %310
  %312 = getelementptr inbounds [301 x i32], ptr %311, i64 0, i64 2
  %313 = load i32, ptr %312, align 4, !tbaa !5
  %314 = xor i32 %307, %313
  %315 = load i32, ptr @n, align 4, !tbaa !5
  %316 = sub nsw i32 %315, 1
  %317 = sext i32 %316 to i64
  %318 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %317
  %319 = getelementptr inbounds [301 x i32], ptr %318, i64 0, i64 2
  %320 = load i32, ptr %319, align 4, !tbaa !5
  %321 = xor i32 %314, %320
  %322 = icmp ne i32 %321, 0
  br i1 %322, label %323, label %326

323:                                              ; preds = %301
  %324 = load i32, ptr @n, align 4, !tbaa !5
  %325 = sub nsw i32 %324, 1
  store i32 %325, ptr %7, align 4, !tbaa !5
  br label %326

326:                                              ; preds = %323, %301
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #3
  store i32 3, ptr %11, align 4, !tbaa !5
  br label %327

327:                                              ; preds = %401, %326
  %328 = load i32, ptr %11, align 4, !tbaa !5
  %329 = load i32, ptr @m, align 4, !tbaa !5
  %330 = icmp slt i32 %328, %329
  br i1 %330, label %331, label %335

331:                                              ; preds = %327
  %332 = load i32, ptr %7, align 4, !tbaa !5
  %333 = icmp ne i32 %332, 0
  %334 = xor i1 %333, true
  br label %335

335:                                              ; preds = %331, %327
  %336 = phi i1 [ false, %327 ], [ %334, %331 ]
  br i1 %336, label %338, label %337

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

338:                                              ; preds = %335
  %339 = load i32, ptr @n, align 4, !tbaa !5
  %340 = sub nsw i32 %339, 1
  %341 = sext i32 %340 to i64
  %342 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %341
  %343 = load i32, ptr %11, align 4, !tbaa !5
  %344 = sub nsw i32 %343, 2
  %345 = sext i32 %344 to i64
  %346 = getelementptr inbounds [301 x i32], ptr %342, i64 0, i64 %345
  %347 = load i32, ptr %346, align 4, !tbaa !5
  %348 = load i32, ptr @n, align 4, !tbaa !5
  %349 = sub nsw i32 %348, 1
  %350 = sext i32 %349 to i64
  %351 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %350
  %352 = load i32, ptr %11, align 4, !tbaa !5
  %353 = sub nsw i32 %352, 1
  %354 = sext i32 %353 to i64
  %355 = getelementptr inbounds [301 x i32], ptr %351, i64 0, i64 %354
  %356 = load i32, ptr %355, align 4, !tbaa !5
  %357 = xor i32 %347, %356
  %358 = load i32, ptr @n, align 4, !tbaa !5
  %359 = sub nsw i32 %358, 2
  %360 = sext i32 %359 to i64
  %361 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %360
  %362 = load i32, ptr %11, align 4, !tbaa !5
  %363 = sub nsw i32 %362, 3
  %364 = sext i32 %363 to i64
  %365 = getelementptr inbounds [301 x i32], ptr %361, i64 0, i64 %364
  %366 = load i32, ptr %365, align 4, !tbaa !5
  %367 = xor i32 %357, %366
  %368 = load i32, ptr @n, align 4, !tbaa !5
  %369 = sub nsw i32 %368, 2
  %370 = sext i32 %369 to i64
  %371 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %370
  %372 = load i32, ptr %11, align 4, !tbaa !5
  %373 = sext i32 %372 to i64
  %374 = getelementptr inbounds [301 x i32], ptr %371, i64 0, i64 %373
  %375 = load i32, ptr %374, align 4, !tbaa !5
  %376 = xor i32 %367, %375
  %377 = load i32, ptr @n, align 4, !tbaa !5
  %378 = sub nsw i32 %377, 1
  %379 = sext i32 %378 to i64
  %380 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %379
  %381 = load i32, ptr %11, align 4, !tbaa !5
  %382 = sub nsw i32 %381, 3
  %383 = sext i32 %382 to i64
  %384 = getelementptr inbounds [301 x i32], ptr %380, i64 0, i64 %383
  %385 = load i32, ptr %384, align 4, !tbaa !5
  %386 = xor i32 %376, %385
  %387 = load i32, ptr @n, align 4, !tbaa !5
  %388 = sub nsw i32 %387, 1
  %389 = sext i32 %388 to i64
  %390 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %389
  %391 = load i32, ptr %11, align 4, !tbaa !5
  %392 = sext i32 %391 to i64
  %393 = getelementptr inbounds [301 x i32], ptr %390, i64 0, i64 %392
  %394 = load i32, ptr %393, align 4, !tbaa !5
  %395 = xor i32 %386, %394
  %396 = icmp ne i32 %395, 0
  br i1 %396, label %397, label %400

397:                                              ; preds = %338
  %398 = load i32, ptr @n, align 4, !tbaa !5
  %399 = sub nsw i32 %398, 1
  store i32 %399, ptr %7, align 4, !tbaa !5
  br label %400

400:                                              ; preds = %397, %338
  br label %401

401:                                              ; preds = %400
  %402 = load i32, ptr %11, align 4, !tbaa !5
  %403 = add nsw i32 %402, 1
  store i32 %403, ptr %11, align 4, !tbaa !5
  br label %327, !llvm.loop !15

404:                                              ; preds = %337
  %405 = load i32, ptr @n, align 4, !tbaa !5
  %406 = sub nsw i32 %405, 1
  %407 = sext i32 %406 to i64
  %408 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %407
  %409 = load i32, ptr @m, align 4, !tbaa !5
  %410 = sub nsw i32 %409, 2
  %411 = sext i32 %410 to i64
  %412 = getelementptr inbounds [301 x i32], ptr %408, i64 0, i64 %411
  %413 = load i32, ptr %412, align 4, !tbaa !5
  %414 = load i32, ptr @n, align 4, !tbaa !5
  %415 = sub nsw i32 %414, 1
  %416 = sext i32 %415 to i64
  %417 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %416
  %418 = load i32, ptr @m, align 4, !tbaa !5
  %419 = sub nsw i32 %418, 1
  %420 = sext i32 %419 to i64
  %421 = getelementptr inbounds [301 x i32], ptr %417, i64 0, i64 %420
  %422 = load i32, ptr %421, align 4, !tbaa !5
  %423 = xor i32 %413, %422
  %424 = load i32, ptr @n, align 4, !tbaa !5
  %425 = sub nsw i32 %424, 2
  %426 = sext i32 %425 to i64
  %427 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %426
  %428 = load i32, ptr @m, align 4, !tbaa !5
  %429 = sub nsw i32 %428, 3
  %430 = sext i32 %429 to i64
  %431 = getelementptr inbounds [301 x i32], ptr %427, i64 0, i64 %430
  %432 = load i32, ptr %431, align 4, !tbaa !5
  %433 = xor i32 %423, %432
  %434 = load i32, ptr @n, align 4, !tbaa !5
  %435 = sub nsw i32 %434, 1
  %436 = sext i32 %435 to i64
  %437 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %436
  %438 = load i32, ptr @m, align 4, !tbaa !5
  %439 = sub nsw i32 %438, 3
  %440 = sext i32 %439 to i64
  %441 = getelementptr inbounds [301 x i32], ptr %437, i64 0, i64 %440
  %442 = load i32, ptr %441, align 4, !tbaa !5
  %443 = xor i32 %433, %442
  %444 = icmp ne i32 %443, 0
  br i1 %444, label %485, label %445

445:                                              ; preds = %404
  %446 = load i32, ptr @n, align 4, !tbaa !5
  %447 = sub nsw i32 %446, 1
  %448 = sext i32 %447 to i64
  %449 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %448
  %450 = load i32, ptr @m, align 4, !tbaa !5
  %451 = sub nsw i32 %450, 1
  %452 = sext i32 %451 to i64
  %453 = getelementptr inbounds [301 x i32], ptr %449, i64 0, i64 %452
  %454 = load i32, ptr %453, align 4, !tbaa !5
  %455 = load i32, ptr @n, align 4, !tbaa !5
  %456 = sub nsw i32 %455, 1
  %457 = sext i32 %456 to i64
  %458 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %457
  %459 = load i32, ptr @m, align 4, !tbaa !5
  %460 = sext i32 %459 to i64
  %461 = getelementptr inbounds [301 x i32], ptr %458, i64 0, i64 %460
  %462 = load i32, ptr %461, align 4, !tbaa !5
  %463 = xor i32 %454, %462
  %464 = load i32, ptr @n, align 4, !tbaa !5
  %465 = sub nsw i32 %464, 2
  %466 = sext i32 %465 to i64
  %467 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %466
  %468 = load i32, ptr @m, align 4, !tbaa !5
  %469 = sub nsw i32 %468, 2
  %470 = sext i32 %469 to i64
  %471 = getelementptr inbounds [301 x i32], ptr %467, i64 0, i64 %470
  %472 = load i32, ptr %471, align 4, !tbaa !5
  %473 = xor i32 %463, %472
  %474 = load i32, ptr @n, align 4, !tbaa !5
  %475 = sub nsw i32 %474, 1
  %476 = sext i32 %475 to i64
  %477 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %476
  %478 = load i32, ptr @m, align 4, !tbaa !5
  %479 = sub nsw i32 %478, 2
  %480 = sext i32 %479 to i64
  %481 = getelementptr inbounds [301 x i32], ptr %477, i64 0, i64 %480
  %482 = load i32, ptr %481, align 4, !tbaa !5
  %483 = xor i32 %473, %482
  %484 = icmp ne i32 %483, 0
  br i1 %484, label %485, label %488

485:                                              ; preds = %445, %404
  %486 = load i32, ptr @n, align 4, !tbaa !5
  %487 = sub nsw i32 %486, 1
  store i32 %487, ptr %7, align 4, !tbaa !5
  br label %488

488:                                              ; preds = %485, %445
  br label %489

489:                                              ; preds = %488, %298
  %490 = load i32, ptr %7, align 4, !tbaa !5
  %491 = icmp ne i32 %490, 0
  br i1 %491, label %624, label %492

492:                                              ; preds = %489
  %493 = load i32, ptr @n, align 4, !tbaa !5
  %494 = sext i32 %493 to i64
  %495 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %494
  %496 = getelementptr inbounds [301 x i32], ptr %495, i64 0, i64 1
  %497 = load i32, ptr %496, align 4, !tbaa !5
  %498 = load i32, ptr @n, align 4, !tbaa !5
  %499 = sub nsw i32 %498, 1
  %500 = sext i32 %499 to i64
  %501 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %500
  %502 = getelementptr inbounds [301 x i32], ptr %501, i64 0, i64 2
  %503 = load i32, ptr %502, align 4, !tbaa !5
  %504 = xor i32 %497, %503
  %505 = icmp ne i32 %504, 0
  br i1 %505, label %506, label %508

506:                                              ; preds = %492
  %507 = load i32, ptr @n, align 4, !tbaa !5
  store i32 %507, ptr %7, align 4, !tbaa !5
  br label %508

508:                                              ; preds = %506, %492
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #3
  store i32 3, ptr %12, align 4, !tbaa !5
  br label %509

509:                                              ; preds = %561, %508
  %510 = load i32, ptr %12, align 4, !tbaa !5
  %511 = load i32, ptr @m, align 4, !tbaa !5
  %512 = icmp slt i32 %510, %511
  br i1 %512, label %513, label %517

513:                                              ; preds = %509
  %514 = load i32, ptr %7, align 4, !tbaa !5
  %515 = icmp ne i32 %514, 0
  %516 = xor i1 %515, true
  br label %517

517:                                              ; preds = %513, %509
  %518 = phi i1 [ false, %509 ], [ %516, %513 ]
  br i1 %518, label %520, label %519

519:                                              ; preds = %517
  store i32 19, ptr %3, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #3
  br label %564

520:                                              ; preds = %517
  %521 = load i32, ptr @n, align 4, !tbaa !5
  %522 = sext i32 %521 to i64
  %523 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %522
  %524 = load i32, ptr %12, align 4, !tbaa !5
  %525 = sub nsw i32 %524, 2
  %526 = sext i32 %525 to i64
  %527 = getelementptr inbounds [301 x i32], ptr %523, i64 0, i64 %526
  %528 = load i32, ptr %527, align 4, !tbaa !5
  %529 = load i32, ptr @n, align 4, !tbaa !5
  %530 = sext i32 %529 to i64
  %531 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %530
  %532 = load i32, ptr %12, align 4, !tbaa !5
  %533 = sub nsw i32 %532, 1
  %534 = sext i32 %533 to i64
  %535 = getelementptr inbounds [301 x i32], ptr %531, i64 0, i64 %534
  %536 = load i32, ptr %535, align 4, !tbaa !5
  %537 = xor i32 %528, %536
  %538 = load i32, ptr @n, align 4, !tbaa !5
  %539 = sub nsw i32 %538, 1
  %540 = sext i32 %539 to i64
  %541 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %540
  %542 = load i32, ptr %12, align 4, !tbaa !5
  %543 = sub nsw i32 %542, 3
  %544 = sext i32 %543 to i64
  %545 = getelementptr inbounds [301 x i32], ptr %541, i64 0, i64 %544
  %546 = load i32, ptr %545, align 4, !tbaa !5
  %547 = xor i32 %537, %546
  %548 = load i32, ptr @n, align 4, !tbaa !5
  %549 = sub nsw i32 %548, 1
  %550 = sext i32 %549 to i64
  %551 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %550
  %552 = load i32, ptr %12, align 4, !tbaa !5
  %553 = sext i32 %552 to i64
  %554 = getelementptr inbounds [301 x i32], ptr %551, i64 0, i64 %553
  %555 = load i32, ptr %554, align 4, !tbaa !5
  %556 = xor i32 %547, %555
  %557 = icmp ne i32 %556, 0
  br i1 %557, label %558, label %560

558:                                              ; preds = %520
  %559 = load i32, ptr @n, align 4, !tbaa !5
  store i32 %559, ptr %7, align 4, !tbaa !5
  br label %560

560:                                              ; preds = %558, %520
  br label %561

561:                                              ; preds = %560
  %562 = load i32, ptr %12, align 4, !tbaa !5
  %563 = add nsw i32 %562, 1
  store i32 %563, ptr %12, align 4, !tbaa !5
  br label %509, !llvm.loop !16

564:                                              ; preds = %519
  %565 = load i32, ptr @n, align 4, !tbaa !5
  %566 = sext i32 %565 to i64
  %567 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %566
  %568 = load i32, ptr @m, align 4, !tbaa !5
  %569 = sub nsw i32 %568, 2
  %570 = sext i32 %569 to i64
  %571 = getelementptr inbounds [301 x i32], ptr %567, i64 0, i64 %570
  %572 = load i32, ptr %571, align 4, !tbaa !5
  %573 = load i32, ptr @n, align 4, !tbaa !5
  %574 = sext i32 %573 to i64
  %575 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %574
  %576 = load i32, ptr @m, align 4, !tbaa !5
  %577 = sub nsw i32 %576, 1
  %578 = sext i32 %577 to i64
  %579 = getelementptr inbounds [301 x i32], ptr %575, i64 0, i64 %578
  %580 = load i32, ptr %579, align 4, !tbaa !5
  %581 = xor i32 %572, %580
  %582 = load i32, ptr @n, align 4, !tbaa !5
  %583 = sub nsw i32 %582, 1
  %584 = sext i32 %583 to i64
  %585 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %584
  %586 = load i32, ptr @m, align 4, !tbaa !5
  %587 = sub nsw i32 %586, 3
  %588 = sext i32 %587 to i64
  %589 = getelementptr inbounds [301 x i32], ptr %585, i64 0, i64 %588
  %590 = load i32, ptr %589, align 4, !tbaa !5
  %591 = xor i32 %581, %590
  %592 = icmp ne i32 %591, 0
  br i1 %592, label %621, label %593

593:                                              ; preds = %564
  %594 = load i32, ptr @n, align 4, !tbaa !5
  %595 = sext i32 %594 to i64
  %596 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %595
  %597 = load i32, ptr @m, align 4, !tbaa !5
  %598 = sub nsw i32 %597, 1
  %599 = sext i32 %598 to i64
  %600 = getelementptr inbounds [301 x i32], ptr %596, i64 0, i64 %599
  %601 = load i32, ptr %600, align 4, !tbaa !5
  %602 = load i32, ptr @n, align 4, !tbaa !5
  %603 = sext i32 %602 to i64
  %604 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %603
  %605 = load i32, ptr @m, align 4, !tbaa !5
  %606 = sext i32 %605 to i64
  %607 = getelementptr inbounds [301 x i32], ptr %604, i64 0, i64 %606
  %608 = load i32, ptr %607, align 4, !tbaa !5
  %609 = xor i32 %601, %608
  %610 = load i32, ptr @n, align 4, !tbaa !5
  %611 = sub nsw i32 %610, 1
  %612 = sext i32 %611 to i64
  %613 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %612
  %614 = load i32, ptr @m, align 4, !tbaa !5
  %615 = sub nsw i32 %614, 2
  %616 = sext i32 %615 to i64
  %617 = getelementptr inbounds [301 x i32], ptr %613, i64 0, i64 %616
  %618 = load i32, ptr %617, align 4, !tbaa !5
  %619 = xor i32 %609, %618
  %620 = icmp ne i32 %619, 0
  br i1 %620, label %621, label %623

621:                                              ; preds = %593, %564
  %622 = load i32, ptr @n, align 4, !tbaa !5
  store i32 %622, ptr %7, align 4, !tbaa !5
  br label %623

623:                                              ; preds = %621, %593
  br label %624

624:                                              ; preds = %623, %489
  %625 = load i32, ptr %7, align 4, !tbaa !5
  %626 = icmp ne i32 %625, 0
  br i1 %626, label %627, label %1232

627:                                              ; preds = %624
  %628 = load i32, ptr %5, align 4, !tbaa !5
  %629 = icmp ne i32 %628, 0
  br i1 %629, label %630, label %642

630:                                              ; preds = %627
  %631 = load i32, ptr %6, align 4, !tbaa !5
  %632 = icmp ne i32 %631, 0
  br i1 %632, label %633, label %642

633:                                              ; preds = %630
  %634 = load i32, ptr %5, align 4, !tbaa !5
  %635 = sext i32 %634 to i64
  %636 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %635
  %637 = load i32, ptr %6, align 4, !tbaa !5
  %638 = sext i32 %637 to i64
  %639 = getelementptr inbounds [301 x i32], ptr %636, i64 0, i64 %638
  %640 = load i32, ptr %639, align 4, !tbaa !5
  %641 = xor i32 %640, 1
  store i32 %641, ptr %639, align 4, !tbaa !5
  store i32 9, ptr %3, align 4
  br label %1272

642:                                              ; preds = %630, %627
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #3
  store i32 2, ptr %13, align 4, !tbaa !5
  br label %643

643:                                              ; preds = %859, %642
  %644 = load i32, ptr %13, align 4, !tbaa !5
  %645 = load i32, ptr @m, align 4, !tbaa !5
  %646 = icmp slt i32 %644, %645
  br i1 %646, label %647, label %651

647:                                              ; preds = %643
  %648 = load i32, ptr %8, align 4, !tbaa !5
  %649 = icmp ne i32 %648, 0
  %650 = xor i1 %649, true
  br label %651

651:                                              ; preds = %647, %643
  %652 = phi i1 [ false, %643 ], [ %650, %647 ]
  br i1 %652, label %654, label %653

653:                                              ; preds = %651
  store i32 22, ptr %3, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #3
  br label %862

654:                                              ; preds = %651
  %655 = load i32, ptr %13, align 4, !tbaa !5
  %656 = sub nsw i32 %655, 1
  %657 = sext i32 %656 to i64
  %658 = getelementptr inbounds [301 x i32], ptr getelementptr inbounds ([301 x [301 x i32]], ptr @f, i64 0, i64 1), i64 0, i64 %657
  %659 = load i32, ptr %658, align 4, !tbaa !5
  %660 = load i32, ptr %13, align 4, !tbaa !5
  %661 = sub nsw i32 %660, 2
  %662 = sext i32 %661 to i64
  %663 = getelementptr inbounds [301 x i32], ptr getelementptr inbounds ([301 x [301 x i32]], ptr @g, i64 0, i64 2), i64 0, i64 %662
  %664 = load i32, ptr %663, align 4, !tbaa !5
  %665 = xor i32 %659, %664
  %666 = load i32, ptr %13, align 4, !tbaa !5
  %667 = sub nsw i32 %666, 1
  %668 = sext i32 %667 to i64
  %669 = getelementptr inbounds [301 x i32], ptr getelementptr inbounds ([301 x [301 x i32]], ptr @g, i64 0, i64 2), i64 0, i64 %668
  %670 = load i32, ptr %669, align 4, !tbaa !5
  %671 = xor i32 %665, %670
  %672 = load i32, ptr %13, align 4, !tbaa !5
  %673 = sext i32 %672 to i64
  %674 = getelementptr inbounds [301 x i32], ptr getelementptr inbounds ([301 x [301 x i32]], ptr @g, i64 0, i64 2), i64 0, i64 %673
  store i32 %671, ptr %674, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #3
  store i32 3, ptr %14, align 4, !tbaa !5
  br label %675

675:                                              ; preds = %753, %654
  %676 = load i32, ptr %14, align 4, !tbaa !5
  %677 = load i32, ptr @n, align 4, !tbaa !5
  %678 = icmp slt i32 %676, %677
  br i1 %678, label %680, label %679

679:                                              ; preds = %675
  store i32 25, ptr %3, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #3
  br label %756

680:                                              ; preds = %675
  %681 = load i32, ptr %14, align 4, !tbaa !5
  %682 = sub nsw i32 %681, 2
  %683 = sext i32 %682 to i64
  %684 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %683
  %685 = load i32, ptr %13, align 4, !tbaa !5
  %686 = sub nsw i32 %685, 1
  %687 = sext i32 %686 to i64
  %688 = getelementptr inbounds [301 x i32], ptr %684, i64 0, i64 %687
  %689 = load i32, ptr %688, align 4, !tbaa !5
  %690 = load i32, ptr %14, align 4, !tbaa !5
  %691 = sub nsw i32 %690, 1
  %692 = sext i32 %691 to i64
  %693 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %692
  %694 = load i32, ptr %13, align 4, !tbaa !5
  %695 = sub nsw i32 %694, 1
  %696 = sext i32 %695 to i64
  %697 = getelementptr inbounds [301 x i32], ptr %693, i64 0, i64 %696
  %698 = load i32, ptr %697, align 4, !tbaa !5
  %699 = xor i32 %689, %698
  %700 = load i32, ptr %14, align 4, !tbaa !5
  %701 = sub nsw i32 %700, 3
  %702 = sext i32 %701 to i64
  %703 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %702
  %704 = load i32, ptr %13, align 4, !tbaa !5
  %705 = sub nsw i32 %704, 2
  %706 = sext i32 %705 to i64
  %707 = getelementptr inbounds [301 x i32], ptr %703, i64 0, i64 %706
  %708 = load i32, ptr %707, align 4, !tbaa !5
  %709 = xor i32 %699, %708
  %710 = load i32, ptr %14, align 4, !tbaa !5
  %711 = sub nsw i32 %710, 3
  %712 = sext i32 %711 to i64
  %713 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %712
  %714 = load i32, ptr %13, align 4, !tbaa !5
  %715 = sub nsw i32 %714, 1
  %716 = sext i32 %715 to i64
  %717 = getelementptr inbounds [301 x i32], ptr %713, i64 0, i64 %716
  %718 = load i32, ptr %717, align 4, !tbaa !5
  %719 = xor i32 %709, %718
  %720 = load i32, ptr %14, align 4, !tbaa !5
  %721 = sub nsw i32 %720, 3
  %722 = sext i32 %721 to i64
  %723 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %722
  %724 = load i32, ptr %13, align 4, !tbaa !5
  %725 = sext i32 %724 to i64
  %726 = getelementptr inbounds [301 x i32], ptr %723, i64 0, i64 %725
  %727 = load i32, ptr %726, align 4, !tbaa !5
  %728 = xor i32 %719, %727
  %729 = load i32, ptr %14, align 4, !tbaa !5
  %730 = sext i32 %729 to i64
  %731 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %730
  %732 = load i32, ptr %13, align 4, !tbaa !5
  %733 = sub nsw i32 %732, 2
  %734 = sext i32 %733 to i64
  %735 = getelementptr inbounds [301 x i32], ptr %731, i64 0, i64 %734
  %736 = load i32, ptr %735, align 4, !tbaa !5
  %737 = xor i32 %728, %736
  %738 = load i32, ptr %14, align 4, !tbaa !5
  %739 = sext i32 %738 to i64
  %740 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %739
  %741 = load i32, ptr %13, align 4, !tbaa !5
  %742 = sub nsw i32 %741, 1
  %743 = sext i32 %742 to i64
  %744 = getelementptr inbounds [301 x i32], ptr %740, i64 0, i64 %743
  %745 = load i32, ptr %744, align 4, !tbaa !5
  %746 = xor i32 %737, %745
  %747 = load i32, ptr %14, align 4, !tbaa !5
  %748 = sext i32 %747 to i64
  %749 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %748
  %750 = load i32, ptr %13, align 4, !tbaa !5
  %751 = sext i32 %750 to i64
  %752 = getelementptr inbounds [301 x i32], ptr %749, i64 0, i64 %751
  store i32 %746, ptr %752, align 4, !tbaa !5
  br label %753

753:                                              ; preds = %680
  %754 = load i32, ptr %14, align 4, !tbaa !5
  %755 = add nsw i32 %754, 1
  store i32 %755, ptr %14, align 4, !tbaa !5
  br label %675, !llvm.loop !17

756:                                              ; preds = %679
  %757 = load i32, ptr @n, align 4, !tbaa !5
  %758 = sub nsw i32 %757, 2
  %759 = sext i32 %758 to i64
  %760 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %759
  %761 = load i32, ptr %13, align 4, !tbaa !5
  %762 = sub nsw i32 %761, 1
  %763 = sext i32 %762 to i64
  %764 = getelementptr inbounds [301 x i32], ptr %760, i64 0, i64 %763
  %765 = load i32, ptr %764, align 4, !tbaa !5
  %766 = load i32, ptr @n, align 4, !tbaa !5
  %767 = sub nsw i32 %766, 1
  %768 = sext i32 %767 to i64
  %769 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %768
  %770 = load i32, ptr %13, align 4, !tbaa !5
  %771 = sub nsw i32 %770, 1
  %772 = sext i32 %771 to i64
  %773 = getelementptr inbounds [301 x i32], ptr %769, i64 0, i64 %772
  %774 = load i32, ptr %773, align 4, !tbaa !5
  %775 = xor i32 %765, %774
  %776 = load i32, ptr @n, align 4, !tbaa !5
  %777 = sub nsw i32 %776, 3
  %778 = sext i32 %777 to i64
  %779 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %778
  %780 = load i32, ptr %13, align 4, !tbaa !5
  %781 = sub nsw i32 %780, 2
  %782 = sext i32 %781 to i64
  %783 = getelementptr inbounds [301 x i32], ptr %779, i64 0, i64 %782
  %784 = load i32, ptr %783, align 4, !tbaa !5
  %785 = xor i32 %775, %784
  %786 = load i32, ptr @n, align 4, !tbaa !5
  %787 = sub nsw i32 %786, 3
  %788 = sext i32 %787 to i64
  %789 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %788
  %790 = load i32, ptr %13, align 4, !tbaa !5
  %791 = sub nsw i32 %790, 1
  %792 = sext i32 %791 to i64
  %793 = getelementptr inbounds [301 x i32], ptr %789, i64 0, i64 %792
  %794 = load i32, ptr %793, align 4, !tbaa !5
  %795 = xor i32 %785, %794
  %796 = load i32, ptr @n, align 4, !tbaa !5
  %797 = sub nsw i32 %796, 3
  %798 = sext i32 %797 to i64
  %799 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %798
  %800 = load i32, ptr %13, align 4, !tbaa !5
  %801 = sext i32 %800 to i64
  %802 = getelementptr inbounds [301 x i32], ptr %799, i64 0, i64 %801
  %803 = load i32, ptr %802, align 4, !tbaa !5
  %804 = xor i32 %795, %803
  %805 = icmp ne i32 %804, 0
  br i1 %805, label %855, label %806

806:                                              ; preds = %756
  %807 = load i32, ptr @n, align 4, !tbaa !5
  %808 = sub nsw i32 %807, 1
  %809 = sext i32 %808 to i64
  %810 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %809
  %811 = load i32, ptr %13, align 4, !tbaa !5
  %812 = sub nsw i32 %811, 1
  %813 = sext i32 %812 to i64
  %814 = getelementptr inbounds [301 x i32], ptr %810, i64 0, i64 %813
  %815 = load i32, ptr %814, align 4, !tbaa !5
  %816 = load i32, ptr @n, align 4, !tbaa !5
  %817 = sext i32 %816 to i64
  %818 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %817
  %819 = load i32, ptr %13, align 4, !tbaa !5
  %820 = sub nsw i32 %819, 1
  %821 = sext i32 %820 to i64
  %822 = getelementptr inbounds [301 x i32], ptr %818, i64 0, i64 %821
  %823 = load i32, ptr %822, align 4, !tbaa !5
  %824 = xor i32 %815, %823
  %825 = load i32, ptr @n, align 4, !tbaa !5
  %826 = sub nsw i32 %825, 2
  %827 = sext i32 %826 to i64
  %828 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %827
  %829 = load i32, ptr %13, align 4, !tbaa !5
  %830 = sub nsw i32 %829, 2
  %831 = sext i32 %830 to i64
  %832 = getelementptr inbounds [301 x i32], ptr %828, i64 0, i64 %831
  %833 = load i32, ptr %832, align 4, !tbaa !5
  %834 = xor i32 %824, %833
  %835 = load i32, ptr @n, align 4, !tbaa !5
  %836 = sub nsw i32 %835, 2
  %837 = sext i32 %836 to i64
  %838 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %837
  %839 = load i32, ptr %13, align 4, !tbaa !5
  %840 = sub nsw i32 %839, 1
  %841 = sext i32 %840 to i64
  %842 = getelementptr inbounds [301 x i32], ptr %838, i64 0, i64 %841
  %843 = load i32, ptr %842, align 4, !tbaa !5
  %844 = xor i32 %834, %843
  %845 = load i32, ptr @n, align 4, !tbaa !5
  %846 = sub nsw i32 %845, 2
  %847 = sext i32 %846 to i64
  %848 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %847
  %849 = load i32, ptr %13, align 4, !tbaa !5
  %850 = sext i32 %849 to i64
  %851 = getelementptr inbounds [301 x i32], ptr %848, i64 0, i64 %850
  %852 = load i32, ptr %851, align 4, !tbaa !5
  %853 = xor i32 %844, %852
  %854 = icmp ne i32 %853, 0
  br i1 %854, label %855, label %858

855:                                              ; preds = %806, %756
  %856 = load i32, ptr %13, align 4, !tbaa !5
  %857 = sub nsw i32 %856, 1
  store i32 %857, ptr %8, align 4, !tbaa !5
  br label %858

858:                                              ; preds = %855, %806
  br label %859

859:                                              ; preds = %858
  %860 = load i32, ptr %13, align 4, !tbaa !5
  %861 = add nsw i32 %860, 1
  store i32 %861, ptr %13, align 4, !tbaa !5
  br label %643, !llvm.loop !18

862:                                              ; preds = %653
  %863 = load i32, ptr %8, align 4, !tbaa !5
  %864 = icmp ne i32 %863, 0
  br i1 %864, label %1050, label %865

865:                                              ; preds = %862
  %866 = load i32, ptr @m, align 4, !tbaa !5
  %867 = sub nsw i32 %866, 1
  %868 = sext i32 %867 to i64
  %869 = getelementptr inbounds [301 x i32], ptr getelementptr inbounds ([301 x [301 x i32]], ptr @f, i64 0, i64 1), i64 0, i64 %868
  %870 = load i32, ptr %869, align 4, !tbaa !5
  %871 = load i32, ptr @m, align 4, !tbaa !5
  %872 = sub nsw i32 %871, 2
  %873 = sext i32 %872 to i64
  %874 = getelementptr inbounds [301 x i32], ptr getelementptr inbounds ([301 x [301 x i32]], ptr @g, i64 0, i64 2), i64 0, i64 %873
  %875 = load i32, ptr %874, align 4, !tbaa !5
  %876 = xor i32 %870, %875
  %877 = load i32, ptr @m, align 4, !tbaa !5
  %878 = sub nsw i32 %877, 1
  %879 = sext i32 %878 to i64
  %880 = getelementptr inbounds [301 x i32], ptr getelementptr inbounds ([301 x [301 x i32]], ptr @g, i64 0, i64 2), i64 0, i64 %879
  %881 = load i32, ptr %880, align 4, !tbaa !5
  %882 = xor i32 %876, %881
  %883 = icmp ne i32 %882, 0
  br i1 %883, label %884, label %887

884:                                              ; preds = %865
  %885 = load i32, ptr @m, align 4, !tbaa !5
  %886 = sub nsw i32 %885, 1
  store i32 %886, ptr %8, align 4, !tbaa !5
  br label %887

887:                                              ; preds = %884, %865
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #3
  store i32 3, ptr %15, align 4, !tbaa !5
  br label %888

888:                                              ; preds = %962, %887
  %889 = load i32, ptr %15, align 4, !tbaa !5
  %890 = load i32, ptr @n, align 4, !tbaa !5
  %891 = icmp slt i32 %889, %890
  br i1 %891, label %892, label %896

892:                                              ; preds = %888
  %893 = load i32, ptr %8, align 4, !tbaa !5
  %894 = icmp ne i32 %893, 0
  %895 = xor i1 %894, true
  br label %896

896:                                              ; preds = %892, %888
  %897 = phi i1 [ false, %888 ], [ %895, %892 ]
  br i1 %897, label %899, label %898

898:                                              ; preds = %896
  store i32 28, ptr %3, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #3
  br label %965

899:                                              ; preds = %896
  %900 = load i32, ptr %15, align 4, !tbaa !5
  %901 = sub nsw i32 %900, 2
  %902 = sext i32 %901 to i64
  %903 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %902
  %904 = load i32, ptr @m, align 4, !tbaa !5
  %905 = sub nsw i32 %904, 1
  %906 = sext i32 %905 to i64
  %907 = getelementptr inbounds [301 x i32], ptr %903, i64 0, i64 %906
  %908 = load i32, ptr %907, align 4, !tbaa !5
  %909 = load i32, ptr %15, align 4, !tbaa !5
  %910 = sub nsw i32 %909, 1
  %911 = sext i32 %910 to i64
  %912 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %911
  %913 = load i32, ptr @m, align 4, !tbaa !5
  %914 = sub nsw i32 %913, 1
  %915 = sext i32 %914 to i64
  %916 = getelementptr inbounds [301 x i32], ptr %912, i64 0, i64 %915
  %917 = load i32, ptr %916, align 4, !tbaa !5
  %918 = xor i32 %908, %917
  %919 = load i32, ptr %15, align 4, !tbaa !5
  %920 = sub nsw i32 %919, 3
  %921 = sext i32 %920 to i64
  %922 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %921
  %923 = load i32, ptr @m, align 4, !tbaa !5
  %924 = sub nsw i32 %923, 2
  %925 = sext i32 %924 to i64
  %926 = getelementptr inbounds [301 x i32], ptr %922, i64 0, i64 %925
  %927 = load i32, ptr %926, align 4, !tbaa !5
  %928 = xor i32 %918, %927
  %929 = load i32, ptr %15, align 4, !tbaa !5
  %930 = sub nsw i32 %929, 3
  %931 = sext i32 %930 to i64
  %932 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %931
  %933 = load i32, ptr @m, align 4, !tbaa !5
  %934 = sub nsw i32 %933, 1
  %935 = sext i32 %934 to i64
  %936 = getelementptr inbounds [301 x i32], ptr %932, i64 0, i64 %935
  %937 = load i32, ptr %936, align 4, !tbaa !5
  %938 = xor i32 %928, %937
  %939 = load i32, ptr %15, align 4, !tbaa !5
  %940 = sext i32 %939 to i64
  %941 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %940
  %942 = load i32, ptr @m, align 4, !tbaa !5
  %943 = sub nsw i32 %942, 2
  %944 = sext i32 %943 to i64
  %945 = getelementptr inbounds [301 x i32], ptr %941, i64 0, i64 %944
  %946 = load i32, ptr %945, align 4, !tbaa !5
  %947 = xor i32 %938, %946
  %948 = load i32, ptr %15, align 4, !tbaa !5
  %949 = sext i32 %948 to i64
  %950 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %949
  %951 = load i32, ptr @m, align 4, !tbaa !5
  %952 = sub nsw i32 %951, 1
  %953 = sext i32 %952 to i64
  %954 = getelementptr inbounds [301 x i32], ptr %950, i64 0, i64 %953
  %955 = load i32, ptr %954, align 4, !tbaa !5
  %956 = xor i32 %947, %955
  %957 = icmp ne i32 %956, 0
  br i1 %957, label %958, label %961

958:                                              ; preds = %899
  %959 = load i32, ptr @m, align 4, !tbaa !5
  %960 = sub nsw i32 %959, 1
  store i32 %960, ptr %8, align 4, !tbaa !5
  br label %961

961:                                              ; preds = %958, %899
  br label %962

962:                                              ; preds = %961
  %963 = load i32, ptr %15, align 4, !tbaa !5
  %964 = add nsw i32 %963, 1
  store i32 %964, ptr %15, align 4, !tbaa !5
  br label %888, !llvm.loop !19

965:                                              ; preds = %898
  %966 = load i32, ptr @n, align 4, !tbaa !5
  %967 = sub nsw i32 %966, 2
  %968 = sext i32 %967 to i64
  %969 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %968
  %970 = load i32, ptr @m, align 4, !tbaa !5
  %971 = sub nsw i32 %970, 1
  %972 = sext i32 %971 to i64
  %973 = getelementptr inbounds [301 x i32], ptr %969, i64 0, i64 %972
  %974 = load i32, ptr %973, align 4, !tbaa !5
  %975 = load i32, ptr @n, align 4, !tbaa !5
  %976 = sub nsw i32 %975, 1
  %977 = sext i32 %976 to i64
  %978 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %977
  %979 = load i32, ptr @m, align 4, !tbaa !5
  %980 = sub nsw i32 %979, 1
  %981 = sext i32 %980 to i64
  %982 = getelementptr inbounds [301 x i32], ptr %978, i64 0, i64 %981
  %983 = load i32, ptr %982, align 4, !tbaa !5
  %984 = xor i32 %974, %983
  %985 = load i32, ptr @n, align 4, !tbaa !5
  %986 = sub nsw i32 %985, 3
  %987 = sext i32 %986 to i64
  %988 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %987
  %989 = load i32, ptr @m, align 4, !tbaa !5
  %990 = sub nsw i32 %989, 2
  %991 = sext i32 %990 to i64
  %992 = getelementptr inbounds [301 x i32], ptr %988, i64 0, i64 %991
  %993 = load i32, ptr %992, align 4, !tbaa !5
  %994 = xor i32 %984, %993
  %995 = load i32, ptr @n, align 4, !tbaa !5
  %996 = sub nsw i32 %995, 3
  %997 = sext i32 %996 to i64
  %998 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %997
  %999 = load i32, ptr @m, align 4, !tbaa !5
  %1000 = sub nsw i32 %999, 1
  %1001 = sext i32 %1000 to i64
  %1002 = getelementptr inbounds [301 x i32], ptr %998, i64 0, i64 %1001
  %1003 = load i32, ptr %1002, align 4, !tbaa !5
  %1004 = xor i32 %994, %1003
  %1005 = icmp ne i32 %1004, 0
  br i1 %1005, label %1046, label %1006

1006:                                             ; preds = %965
  %1007 = load i32, ptr @n, align 4, !tbaa !5
  %1008 = sub nsw i32 %1007, 1
  %1009 = sext i32 %1008 to i64
  %1010 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %1009
  %1011 = load i32, ptr @m, align 4, !tbaa !5
  %1012 = sub nsw i32 %1011, 1
  %1013 = sext i32 %1012 to i64
  %1014 = getelementptr inbounds [301 x i32], ptr %1010, i64 0, i64 %1013
  %1015 = load i32, ptr %1014, align 4, !tbaa !5
  %1016 = load i32, ptr @n, align 4, !tbaa !5
  %1017 = sext i32 %1016 to i64
  %1018 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %1017
  %1019 = load i32, ptr @m, align 4, !tbaa !5
  %1020 = sub nsw i32 %1019, 1
  %1021 = sext i32 %1020 to i64
  %1022 = getelementptr inbounds [301 x i32], ptr %1018, i64 0, i64 %1021
  %1023 = load i32, ptr %1022, align 4, !tbaa !5
  %1024 = xor i32 %1015, %1023
  %1025 = load i32, ptr @n, align 4, !tbaa !5
  %1026 = sub nsw i32 %1025, 2
  %1027 = sext i32 %1026 to i64
  %1028 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %1027
  %1029 = load i32, ptr @m, align 4, !tbaa !5
  %1030 = sub nsw i32 %1029, 2
  %1031 = sext i32 %1030 to i64
  %1032 = getelementptr inbounds [301 x i32], ptr %1028, i64 0, i64 %1031
  %1033 = load i32, ptr %1032, align 4, !tbaa !5
  %1034 = xor i32 %1024, %1033
  %1035 = load i32, ptr @n, align 4, !tbaa !5
  %1036 = sub nsw i32 %1035, 2
  %1037 = sext i32 %1036 to i64
  %1038 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %1037
  %1039 = load i32, ptr @m, align 4, !tbaa !5
  %1040 = sub nsw i32 %1039, 1
  %1041 = sext i32 %1040 to i64
  %1042 = getelementptr inbounds [301 x i32], ptr %1038, i64 0, i64 %1041
  %1043 = load i32, ptr %1042, align 4, !tbaa !5
  %1044 = xor i32 %1034, %1043
  %1045 = icmp ne i32 %1044, 0
  br i1 %1045, label %1046, label %1049

1046:                                             ; preds = %1006, %965
  %1047 = load i32, ptr @m, align 4, !tbaa !5
  %1048 = sub nsw i32 %1047, 1
  store i32 %1048, ptr %8, align 4, !tbaa !5
  br label %1049

1049:                                             ; preds = %1046, %1006
  br label %1050

1050:                                             ; preds = %1049, %862
  %1051 = load i32, ptr %8, align 4, !tbaa !5
  %1052 = icmp ne i32 %1051, 0
  br i1 %1052, label %1183, label %1053

1053:                                             ; preds = %1050
  %1054 = load i32, ptr @m, align 4, !tbaa !5
  %1055 = sext i32 %1054 to i64
  %1056 = getelementptr inbounds [301 x i32], ptr getelementptr inbounds ([301 x [301 x i32]], ptr @f, i64 0, i64 1), i64 0, i64 %1055
  %1057 = load i32, ptr %1056, align 4, !tbaa !5
  %1058 = load i32, ptr @m, align 4, !tbaa !5
  %1059 = sub nsw i32 %1058, 1
  %1060 = sext i32 %1059 to i64
  %1061 = getelementptr inbounds [301 x i32], ptr getelementptr inbounds ([301 x [301 x i32]], ptr @g, i64 0, i64 2), i64 0, i64 %1060
  %1062 = load i32, ptr %1061, align 4, !tbaa !5
  %1063 = xor i32 %1057, %1062
  %1064 = icmp ne i32 %1063, 0
  br i1 %1064, label %1065, label %1067

1065:                                             ; preds = %1053
  %1066 = load i32, ptr @m, align 4, !tbaa !5
  store i32 %1066, ptr %8, align 4, !tbaa !5
  br label %1067

1067:                                             ; preds = %1065, %1053
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #3
  store i32 3, ptr %16, align 4, !tbaa !5
  br label %1068

1068:                                             ; preds = %1120, %1067
  %1069 = load i32, ptr %16, align 4, !tbaa !5
  %1070 = load i32, ptr @n, align 4, !tbaa !5
  %1071 = icmp slt i32 %1069, %1070
  br i1 %1071, label %1072, label %1076

1072:                                             ; preds = %1068
  %1073 = load i32, ptr %8, align 4, !tbaa !5
  %1074 = icmp ne i32 %1073, 0
  %1075 = xor i1 %1074, true
  br label %1076

1076:                                             ; preds = %1072, %1068
  %1077 = phi i1 [ false, %1068 ], [ %1075, %1072 ]
  br i1 %1077, label %1079, label %1078

1078:                                             ; preds = %1076
  store i32 31, ptr %3, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #3
  br label %1123

1079:                                             ; preds = %1076
  %1080 = load i32, ptr %16, align 4, !tbaa !5
  %1081 = sub nsw i32 %1080, 2
  %1082 = sext i32 %1081 to i64
  %1083 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %1082
  %1084 = load i32, ptr @m, align 4, !tbaa !5
  %1085 = sext i32 %1084 to i64
  %1086 = getelementptr inbounds [301 x i32], ptr %1083, i64 0, i64 %1085
  %1087 = load i32, ptr %1086, align 4, !tbaa !5
  %1088 = load i32, ptr %16, align 4, !tbaa !5
  %1089 = sub nsw i32 %1088, 1
  %1090 = sext i32 %1089 to i64
  %1091 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %1090
  %1092 = load i32, ptr @m, align 4, !tbaa !5
  %1093 = sext i32 %1092 to i64
  %1094 = getelementptr inbounds [301 x i32], ptr %1091, i64 0, i64 %1093
  %1095 = load i32, ptr %1094, align 4, !tbaa !5
  %1096 = xor i32 %1087, %1095
  %1097 = load i32, ptr %16, align 4, !tbaa !5
  %1098 = sub nsw i32 %1097, 3
  %1099 = sext i32 %1098 to i64
  %1100 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %1099
  %1101 = load i32, ptr @m, align 4, !tbaa !5
  %1102 = sub nsw i32 %1101, 1
  %1103 = sext i32 %1102 to i64
  %1104 = getelementptr inbounds [301 x i32], ptr %1100, i64 0, i64 %1103
  %1105 = load i32, ptr %1104, align 4, !tbaa !5
  %1106 = xor i32 %1096, %1105
  %1107 = load i32, ptr %16, align 4, !tbaa !5
  %1108 = sext i32 %1107 to i64
  %1109 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %1108
  %1110 = load i32, ptr @m, align 4, !tbaa !5
  %1111 = sub nsw i32 %1110, 1
  %1112 = sext i32 %1111 to i64
  %1113 = getelementptr inbounds [301 x i32], ptr %1109, i64 0, i64 %1112
  %1114 = load i32, ptr %1113, align 4, !tbaa !5
  %1115 = xor i32 %1106, %1114
  %1116 = icmp ne i32 %1115, 0
  br i1 %1116, label %1117, label %1119

1117:                                             ; preds = %1079
  %1118 = load i32, ptr @m, align 4, !tbaa !5
  store i32 %1118, ptr %8, align 4, !tbaa !5
  br label %1119

1119:                                             ; preds = %1117, %1079
  br label %1120

1120:                                             ; preds = %1119
  %1121 = load i32, ptr %16, align 4, !tbaa !5
  %1122 = add nsw i32 %1121, 1
  store i32 %1122, ptr %16, align 4, !tbaa !5
  br label %1068, !llvm.loop !20

1123:                                             ; preds = %1078
  %1124 = load i32, ptr @n, align 4, !tbaa !5
  %1125 = sub nsw i32 %1124, 2
  %1126 = sext i32 %1125 to i64
  %1127 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %1126
  %1128 = load i32, ptr @m, align 4, !tbaa !5
  %1129 = sext i32 %1128 to i64
  %1130 = getelementptr inbounds [301 x i32], ptr %1127, i64 0, i64 %1129
  %1131 = load i32, ptr %1130, align 4, !tbaa !5
  %1132 = load i32, ptr @n, align 4, !tbaa !5
  %1133 = sub nsw i32 %1132, 1
  %1134 = sext i32 %1133 to i64
  %1135 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %1134
  %1136 = load i32, ptr @m, align 4, !tbaa !5
  %1137 = sext i32 %1136 to i64
  %1138 = getelementptr inbounds [301 x i32], ptr %1135, i64 0, i64 %1137
  %1139 = load i32, ptr %1138, align 4, !tbaa !5
  %1140 = xor i32 %1131, %1139
  %1141 = load i32, ptr @n, align 4, !tbaa !5
  %1142 = sub nsw i32 %1141, 3
  %1143 = sext i32 %1142 to i64
  %1144 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %1143
  %1145 = load i32, ptr @m, align 4, !tbaa !5
  %1146 = sub nsw i32 %1145, 1
  %1147 = sext i32 %1146 to i64
  %1148 = getelementptr inbounds [301 x i32], ptr %1144, i64 0, i64 %1147
  %1149 = load i32, ptr %1148, align 4, !tbaa !5
  %1150 = xor i32 %1140, %1149
  %1151 = icmp ne i32 %1150, 0
  br i1 %1151, label %1180, label %1152

1152:                                             ; preds = %1123
  %1153 = load i32, ptr @n, align 4, !tbaa !5
  %1154 = sub nsw i32 %1153, 1
  %1155 = sext i32 %1154 to i64
  %1156 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %1155
  %1157 = load i32, ptr @m, align 4, !tbaa !5
  %1158 = sext i32 %1157 to i64
  %1159 = getelementptr inbounds [301 x i32], ptr %1156, i64 0, i64 %1158
  %1160 = load i32, ptr %1159, align 4, !tbaa !5
  %1161 = load i32, ptr @n, align 4, !tbaa !5
  %1162 = sext i32 %1161 to i64
  %1163 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %1162
  %1164 = load i32, ptr @m, align 4, !tbaa !5
  %1165 = sext i32 %1164 to i64
  %1166 = getelementptr inbounds [301 x i32], ptr %1163, i64 0, i64 %1165
  %1167 = load i32, ptr %1166, align 4, !tbaa !5
  %1168 = xor i32 %1160, %1167
  %1169 = load i32, ptr @n, align 4, !tbaa !5
  %1170 = sub nsw i32 %1169, 2
  %1171 = sext i32 %1170 to i64
  %1172 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %1171
  %1173 = load i32, ptr @m, align 4, !tbaa !5
  %1174 = sub nsw i32 %1173, 1
  %1175 = sext i32 %1174 to i64
  %1176 = getelementptr inbounds [301 x i32], ptr %1172, i64 0, i64 %1175
  %1177 = load i32, ptr %1176, align 4, !tbaa !5
  %1178 = xor i32 %1168, %1177
  %1179 = icmp ne i32 %1178, 0
  br i1 %1179, label %1180, label %1182

1180:                                             ; preds = %1152, %1123
  %1181 = load i32, ptr @m, align 4, !tbaa !5
  store i32 %1181, ptr %8, align 4, !tbaa !5
  br label %1182

1182:                                             ; preds = %1180, %1152
  br label %1183

1183:                                             ; preds = %1182, %1050
  %1184 = load i32, ptr %8, align 4, !tbaa !5
  %1185 = icmp ne i32 %1184, 0
  br i1 %1185, label %1186, label %1231

1186:                                             ; preds = %1183
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #3
  store i32 0, ptr %17, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #3
  store i32 1, ptr %18, align 4, !tbaa !5
  br label %1187

1187:                                             ; preds = %1212, %1186
  %1188 = load i32, ptr %18, align 4, !tbaa !5
  %1189 = load i32, ptr @n, align 4, !tbaa !5
  %1190 = icmp sle i32 %1188, %1189
  br i1 %1190, label %1192, label %1191

1191:                                             ; preds = %1187
  store i32 34, ptr %3, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #3
  br label %1215

1192:                                             ; preds = %1187
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #3
  store i32 1, ptr %19, align 4, !tbaa !5
  br label %1193

1193:                                             ; preds = %1208, %1192
  %1194 = load i32, ptr %19, align 4, !tbaa !5
  %1195 = load i32, ptr @m, align 4, !tbaa !5
  %1196 = icmp sle i32 %1194, %1195
  br i1 %1196, label %1198, label %1197

1197:                                             ; preds = %1193
  store i32 37, ptr %3, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #3
  br label %1211

1198:                                             ; preds = %1193
  %1199 = load i32, ptr %18, align 4, !tbaa !5
  %1200 = sext i32 %1199 to i64
  %1201 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %1200
  %1202 = load i32, ptr %19, align 4, !tbaa !5
  %1203 = sext i32 %1202 to i64
  %1204 = getelementptr inbounds [301 x i32], ptr %1201, i64 0, i64 %1203
  %1205 = load i32, ptr %1204, align 4, !tbaa !5
  %1206 = load i32, ptr %17, align 4, !tbaa !5
  %1207 = add nsw i32 %1206, %1205
  store i32 %1207, ptr %17, align 4, !tbaa !5
  br label %1208

1208:                                             ; preds = %1198
  %1209 = load i32, ptr %19, align 4, !tbaa !5
  %1210 = add nsw i32 %1209, 1
  store i32 %1210, ptr %19, align 4, !tbaa !5
  br label %1193, !llvm.loop !21

1211:                                             ; preds = %1197
  br label %1212

1212:                                             ; preds = %1211
  %1213 = load i32, ptr %18, align 4, !tbaa !5
  %1214 = add nsw i32 %1213, 1
  store i32 %1214, ptr %18, align 4, !tbaa !5
  br label %1187, !llvm.loop !22

1215:                                             ; preds = %1191
  %1216 = load i32, ptr %17, align 4, !tbaa !5
  %1217 = icmp eq i32 %1216, 1
  br i1 %1217, label %1218, label %1219

1218:                                             ; preds = %1215
  store i32 9, ptr %3, align 4
  br label %1230

1219:                                             ; preds = %1215
  %1220 = load i32, ptr %7, align 4, !tbaa !5
  store i32 %1220, ptr %5, align 4, !tbaa !5
  %1221 = load i32, ptr %8, align 4, !tbaa !5
  store i32 %1221, ptr %6, align 4, !tbaa !5
  %1222 = load i32, ptr %7, align 4, !tbaa !5
  %1223 = sext i32 %1222 to i64
  %1224 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %1223
  %1225 = load i32, ptr %8, align 4, !tbaa !5
  %1226 = sext i32 %1225 to i64
  %1227 = getelementptr inbounds [301 x i32], ptr %1224, i64 0, i64 %1226
  %1228 = load i32, ptr %1227, align 4, !tbaa !5
  %1229 = xor i32 %1228, 1
  store i32 %1229, ptr %1227, align 4, !tbaa !5
  store i32 8, ptr %3, align 4
  br label %1230, !llvm.loop !23

1230:                                             ; preds = %1219, %1218
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #3
  br label %1272

1231:                                             ; preds = %1183
  br label %1232

1232:                                             ; preds = %1231, %624
  store i32 0, ptr %6, align 4, !tbaa !5
  store i32 0, ptr %5, align 4, !tbaa !5
  %1233 = load i32, ptr @n, align 4, !tbaa !5
  %1234 = sub nsw i32 %1233, 2
  store i32 %1234, ptr @n, align 4, !tbaa !5
  %1235 = load i32, ptr @m, align 4, !tbaa !5
  %1236 = sub nsw i32 %1235, 2
  store i32 %1236, ptr @m, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #3
  store i32 1, ptr %20, align 4, !tbaa !5
  br label %1237

1237:                                             ; preds = %1268, %1232
  %1238 = load i32, ptr %20, align 4, !tbaa !5
  %1239 = load i32, ptr @n, align 4, !tbaa !5
  %1240 = icmp sle i32 %1238, %1239
  br i1 %1240, label %1242, label %1241

1241:                                             ; preds = %1237
  store i32 40, ptr %3, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #3
  br label %1271

1242:                                             ; preds = %1237
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #3
  store i32 1, ptr %21, align 4, !tbaa !5
  br label %1243

1243:                                             ; preds = %1264, %1242
  %1244 = load i32, ptr %21, align 4, !tbaa !5
  %1245 = load i32, ptr @m, align 4, !tbaa !5
  %1246 = icmp sle i32 %1244, %1245
  br i1 %1246, label %1248, label %1247

1247:                                             ; preds = %1243
  store i32 43, ptr %3, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #3
  br label %1267

1248:                                             ; preds = %1243
  %1249 = load i32, ptr %20, align 4, !tbaa !5
  %1250 = add nsw i32 %1249, 1
  %1251 = sext i32 %1250 to i64
  %1252 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %1251
  %1253 = load i32, ptr %21, align 4, !tbaa !5
  %1254 = add nsw i32 %1253, 1
  %1255 = sext i32 %1254 to i64
  %1256 = getelementptr inbounds [301 x i32], ptr %1252, i64 0, i64 %1255
  %1257 = load i32, ptr %1256, align 4, !tbaa !5
  %1258 = load i32, ptr %20, align 4, !tbaa !5
  %1259 = sext i32 %1258 to i64
  %1260 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %1259
  %1261 = load i32, ptr %21, align 4, !tbaa !5
  %1262 = sext i32 %1261 to i64
  %1263 = getelementptr inbounds [301 x i32], ptr %1260, i64 0, i64 %1262
  store i32 %1257, ptr %1263, align 4, !tbaa !5
  br label %1264

1264:                                             ; preds = %1248
  %1265 = load i32, ptr %21, align 4, !tbaa !5
  %1266 = add nsw i32 %1265, 1
  store i32 %1266, ptr %21, align 4, !tbaa !5
  br label %1243, !llvm.loop !24

1267:                                             ; preds = %1247
  br label %1268

1268:                                             ; preds = %1267
  %1269 = load i32, ptr %20, align 4, !tbaa !5
  %1270 = add nsw i32 %1269, 1
  store i32 %1270, ptr %20, align 4, !tbaa !5
  br label %1237, !llvm.loop !25

1271:                                             ; preds = %1241
  store i32 0, ptr %3, align 4
  br label %1272

1272:                                             ; preds = %1271, %1230, %633
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #3
  %1273 = load i32, ptr %3, align 4
  switch i32 %1273, label %1385 [
    i32 0, label %1274
    i32 9, label %1275
    i32 8, label %66
  ]

1274:                                             ; preds = %1272
  br label %66, !llvm.loop !23

1275:                                             ; preds = %1272, %72
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #3
  %1276 = load i32, ptr @n, align 4, !tbaa !5
  store i32 %1276, ptr %22, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #3
  store i32 1, ptr %23, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #3
  %1277 = load i32, ptr @m, align 4, !tbaa !5
  store i32 %1277, ptr %24, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #3
  store i32 1, ptr %25, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #3
  store i32 1, ptr %26, align 4, !tbaa !5
  br label %1278

1278:                                             ; preds = %1336, %1275
  %1279 = load i32, ptr %26, align 4, !tbaa !5
  %1280 = load i32, ptr @n, align 4, !tbaa !5
  %1281 = icmp sle i32 %1279, %1280
  br i1 %1281, label %1283, label %1282

1282:                                             ; preds = %1278
  store i32 46, ptr %3, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #3
  br label %1339

1283:                                             ; preds = %1278
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #3
  store i32 1, ptr %27, align 4, !tbaa !5
  br label %1284

1284:                                             ; preds = %1332, %1283
  %1285 = load i32, ptr %27, align 4, !tbaa !5
  %1286 = load i32, ptr @m, align 4, !tbaa !5
  %1287 = icmp sle i32 %1285, %1286
  br i1 %1287, label %1289, label %1288

1288:                                             ; preds = %1284
  store i32 49, ptr %3, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #3
  br label %1335

1289:                                             ; preds = %1284
  %1290 = load i32, ptr %26, align 4, !tbaa !5
  %1291 = sext i32 %1290 to i64
  %1292 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %1291
  %1293 = load i32, ptr %27, align 4, !tbaa !5
  %1294 = sext i32 %1293 to i64
  %1295 = getelementptr inbounds [301 x i32], ptr %1292, i64 0, i64 %1294
  %1296 = load i32, ptr %1295, align 4, !tbaa !5
  %1297 = icmp ne i32 %1296, 0
  br i1 %1297, label %1298, label %1331

1298:                                             ; preds = %1289
  %1299 = load i32, ptr %22, align 4, !tbaa !5
  %1300 = load i32, ptr %26, align 4, !tbaa !5
  %1301 = icmp sgt i32 %1299, %1300
  br i1 %1301, label %1302, label %1305

1302:                                             ; preds = %1298
  %1303 = load i32, ptr %26, align 4, !tbaa !5
  store i32 %1303, ptr %22, align 4, !tbaa !5
  %1304 = icmp ne i32 %1303, 0
  br label %1305

1305:                                             ; preds = %1302, %1298
  %1306 = phi i1 [ false, %1298 ], [ %1304, %1302 ]
  %1307 = load i32, ptr %23, align 4, !tbaa !5
  %1308 = load i32, ptr %26, align 4, !tbaa !5
  %1309 = icmp slt i32 %1307, %1308
  br i1 %1309, label %1310, label %1313

1310:                                             ; preds = %1305
  %1311 = load i32, ptr %26, align 4, !tbaa !5
  store i32 %1311, ptr %23, align 4, !tbaa !5
  %1312 = icmp ne i32 %1311, 0
  br label %1313

1313:                                             ; preds = %1310, %1305
  %1314 = phi i1 [ false, %1305 ], [ %1312, %1310 ]
  %1315 = load i32, ptr %24, align 4, !tbaa !5
  %1316 = load i32, ptr %27, align 4, !tbaa !5
  %1317 = icmp sgt i32 %1315, %1316
  br i1 %1317, label %1318, label %1321

1318:                                             ; preds = %1313
  %1319 = load i32, ptr %27, align 4, !tbaa !5
  store i32 %1319, ptr %24, align 4, !tbaa !5
  %1320 = icmp ne i32 %1319, 0
  br label %1321

1321:                                             ; preds = %1318, %1313
  %1322 = phi i1 [ false, %1313 ], [ %1320, %1318 ]
  %1323 = load i32, ptr %25, align 4, !tbaa !5
  %1324 = load i32, ptr %27, align 4, !tbaa !5
  %1325 = icmp slt i32 %1323, %1324
  br i1 %1325, label %1326, label %1329

1326:                                             ; preds = %1321
  %1327 = load i32, ptr %27, align 4, !tbaa !5
  store i32 %1327, ptr %25, align 4, !tbaa !5
  %1328 = icmp ne i32 %1327, 0
  br label %1329

1329:                                             ; preds = %1326, %1321
  %1330 = phi i1 [ false, %1321 ], [ %1328, %1326 ]
  br label %1331

1331:                                             ; preds = %1329, %1289
  br label %1332

1332:                                             ; preds = %1331
  %1333 = load i32, ptr %27, align 4, !tbaa !5
  %1334 = add nsw i32 %1333, 1
  store i32 %1334, ptr %27, align 4, !tbaa !5
  br label %1284, !llvm.loop !26

1335:                                             ; preds = %1288
  br label %1336

1336:                                             ; preds = %1335
  %1337 = load i32, ptr %26, align 4, !tbaa !5
  %1338 = add nsw i32 %1337, 1
  store i32 %1338, ptr %26, align 4, !tbaa !5
  br label %1278, !llvm.loop !27

1339:                                             ; preds = %1282
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #3
  %1340 = load i32, ptr %22, align 4, !tbaa !5
  store i32 %1340, ptr %28, align 4, !tbaa !5
  br label %1341

1341:                                             ; preds = %1380, %1339
  %1342 = load i32, ptr %28, align 4, !tbaa !5
  %1343 = load i32, ptr %23, align 4, !tbaa !5
  %1344 = icmp sle i32 %1342, %1343
  br i1 %1344, label %1346, label %1345

1345:                                             ; preds = %1341
  store i32 52, ptr %3, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #3
  br label %1383

1346:                                             ; preds = %1341
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #3
  %1347 = load i32, ptr %24, align 4, !tbaa !5
  store i32 %1347, ptr %29, align 4, !tbaa !5
  br label %1348

1348:                                             ; preds = %1369, %1346
  %1349 = load i32, ptr %29, align 4, !tbaa !5
  %1350 = load i32, ptr %25, align 4, !tbaa !5
  %1351 = icmp sle i32 %1349, %1350
  br i1 %1351, label %1353, label %1352

1352:                                             ; preds = %1348
  store i32 55, ptr %3, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #3
  br label %1372

1353:                                             ; preds = %1348
  %1354 = load i32, ptr %28, align 4, !tbaa !5
  %1355 = sext i32 %1354 to i64
  %1356 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %1355
  %1357 = load i32, ptr %29, align 4, !tbaa !5
  %1358 = sext i32 %1357 to i64
  %1359 = getelementptr inbounds [301 x i32], ptr %1356, i64 0, i64 %1358
  %1360 = load i32, ptr %1359, align 4, !tbaa !5
  %1361 = sext i32 %1360 to i64
  %1362 = getelementptr inbounds [3 x i8], ptr @.str.2, i64 0, i64 %1361
  %1363 = load i8, ptr %1362, align 1, !tbaa !9
  %1364 = load i32, ptr %29, align 4, !tbaa !5
  %1365 = load i32, ptr %24, align 4, !tbaa !5
  %1366 = sub nsw i32 %1364, %1365
  %1367 = sext i32 %1366 to i64
  %1368 = getelementptr inbounds [301 x i8], ptr @buf, i64 0, i64 %1367
  store i8 %1363, ptr %1368, align 1, !tbaa !9
  br label %1369

1369:                                             ; preds = %1353
  %1370 = load i32, ptr %29, align 4, !tbaa !5
  %1371 = add nsw i32 %1370, 1
  store i32 %1371, ptr %29, align 4, !tbaa !5
  br label %1348, !llvm.loop !28

1372:                                             ; preds = %1352
  %1373 = load i32, ptr %25, align 4, !tbaa !5
  %1374 = load i32, ptr %24, align 4, !tbaa !5
  %1375 = sub nsw i32 %1373, %1374
  %1376 = add nsw i32 %1375, 1
  %1377 = sext i32 %1376 to i64
  %1378 = getelementptr inbounds [301 x i8], ptr @buf, i64 0, i64 %1377
  store i8 0, ptr %1378, align 1, !tbaa !9
  %1379 = call i32 @puts(ptr noundef @buf)
  br label %1380

1380:                                             ; preds = %1372
  %1381 = load i32, ptr %28, align 4, !tbaa !5
  %1382 = add nsw i32 %1381, 1
  store i32 %1382, ptr %28, align 4, !tbaa !5
  br label %1341, !llvm.loop !29

1383:                                             ; preds = %1345
  store i32 0, ptr %1, align 4
  store i32 1, ptr %3, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #3
  %1384 = load i32, ptr %1, align 4
  ret i32 %1384

1385:                                             ; preds = %1272
  unreachable
}

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 @puts(ptr noundef) #1

attributes #0 = { mustprogress norecurse uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { "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 = { 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 = !{!7, !7, i64 0}
!10 = distinct !{!10, !11}
!11 = !{!"llvm.loop.mustprogress"}
!12 = distinct !{!12, !11}
!13 = distinct !{!13, !11}
!14 = distinct !{!14, !11}
!15 = distinct !{!15, !11}
!16 = distinct !{!16, !11}
!17 = distinct !{!17, !11}
!18 = distinct !{!18, !11}
!19 = distinct !{!19, !11}
!20 = distinct !{!20, !11}
!21 = distinct !{!21, !11}
!22 = distinct !{!22, !11}
!23 = distinct !{!23, !11}
!24 = distinct !{!24, !11}
!25 = distinct !{!25, !11}
!26 = distinct !{!26, !11}
!27 = distinct !{!27, !11}
!28 = distinct !{!28, !11}
!29 = distinct !{!29, !11}


; 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
@f = external dso_local local_unnamed_addr global [301 x [301 x i32]], align 16
@g = external dso_local local_unnamed_addr global [301 x [301 x i32]], align 16
@buf = external dso_local global [301 x i8], align 16
@.str = external hidden unnamed_addr constant [5 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

; Function Attrs: mustprogress nofree norecurse nounwind uwtable
define dso_local noundef i32 @main() local_unnamed_addr #0 {
  %1 = tail call i32 (ptr, ...) @__isoc99_scanf(ptr noundef nonnull @.str, ptr noundef nonnull @m, ptr noundef nonnull @n)
  %2 = load i32, ptr @n, align 4, !tbaa !5
  %.not308 = icmp slt i32 %2, 1
  br i1 %.not308, label %.thread290.thread, label %.lr.ph311

.thread290.thread:                                ; preds = %0
  %m.promoted.pre = load i32, ptr @m, align 4
  br label %.preheader.lr.ph

.preheader303:                                    ; preds = %._crit_edge
  %3 = icmp sgt i32 %19, 2
  %4 = icmp sgt i32 %7, 2
  %5 = and i1 %3, %4
  br i1 %5, label %.preheader302, label %.thread290

.lr.ph311:                                        ; preds = %0, %._crit_edge
  %indvars.iv416 = phi i64 [ %indvars.iv.next417, %._crit_edge ], [ 1, %0 ]
  %6 = tail call i32 (ptr, ...) @__isoc99_scanf(ptr noundef nonnull @.str.1, ptr noundef nonnull @buf)
  %7 = load i32, ptr @m, align 4
  %.not270306 = icmp slt i32 %7, 1
  br i1 %.not270306, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph311
  %8 = add nuw i32 %7, 1
  %wide.trip.count = zext i32 %8 to i64
  %9 = zext nneg i32 %7 to i64
  %min.iters.check = icmp ult i32 %7, 8
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.ph

scalar.ph.preheader:                              ; preds = %middle.block, %.lr.ph
  %indvars.iv.ph = phi i64 [ 1, %.lr.ph ], [ %ind.end, %middle.block ]
  br label %scalar.ph

vector.ph:                                        ; preds = %.lr.ph
  %n.vec = and i64 %9, 2147483640
  %ind.end = or disjoint i64 %n.vec, 1
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %offset.idx = or disjoint i64 %index, 1
  %10 = getelementptr inbounds [301 x i8], ptr @buf, i64 0, i64 %index
  %11 = getelementptr inbounds i8, ptr %10, i64 4
  %wide.load = load <4 x i8>, ptr %10, align 8, !tbaa !9
  %wide.load533 = load <4 x i8>, ptr %11, align 4, !tbaa !9
  %12 = icmp eq <4 x i8> %wide.load, <i8 35, i8 35, i8 35, i8 35>
  %13 = icmp eq <4 x i8> %wide.load533, <i8 35, i8 35, i8 35, i8 35>
  %14 = zext <4 x i1> %12 to <4 x i32>
  %15 = zext <4 x i1> %13 to <4 x i32>
  %16 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %indvars.iv416, i64 %offset.idx
  %17 = getelementptr inbounds i8, ptr %16, i64 16
  store <4 x i32> %14, ptr %16, align 4, !tbaa !5
  store <4 x i32> %15, ptr %17, align 4, !tbaa !5
  %index.next = add nuw i64 %index, 8
  %18 = icmp eq i64 %index.next, %n.vec
  br i1 %18, label %middle.block, label %vector.body, !llvm.loop !10

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %9
  br i1 %cmp.n, label %._crit_edge, label %scalar.ph.preheader

._crit_edge:                                      ; preds = %scalar.ph, %middle.block, %.lr.ph311
  %indvars.iv.next417 = add nuw nsw i64 %indvars.iv416, 1
  %19 = load i32, ptr @n, align 4, !tbaa !5
  %20 = sext i32 %19 to i64
  %.not.not = icmp slt i64 %indvars.iv416, %20
  br i1 %.not.not, label %.lr.ph311, label %.preheader303, !llvm.loop !14

scalar.ph:                                        ; preds = %scalar.ph.preheader, %scalar.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %scalar.ph ], [ %indvars.iv.ph, %scalar.ph.preheader ]
  %21 = add nsw i64 %indvars.iv, -1
  %22 = getelementptr inbounds [301 x i8], ptr @buf, i64 0, i64 %21
  %23 = load i8, ptr %22, align 1, !tbaa !9
  %24 = icmp eq i8 %23, 35
  %25 = zext i1 %24 to i32
  %26 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %indvars.iv416, i64 %indvars.iv
  store i32 %25, ptr %26, align 4, !tbaa !5
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge, label %scalar.ph, !llvm.loop !15

.preheader302:                                    ; preds = %.preheader303, %.loopexit
  %.0219373 = phi i32 [ %.2221, %.loopexit ], [ 0, %.preheader303 ]
  %.0222372 = phi i32 [ %.2224, %.loopexit ], [ 0, %.preheader303 ]
  %27 = phi i32 [ %388, %.loopexit ], [ %19, %.preheader303 ]
  %28 = phi i32 [ %387, %.loopexit ], [ %7, %.preheader303 ]
  %29 = icmp ugt i32 %28, 3
  %30 = add nsw i32 %28, -2
  %31 = zext nneg i32 %30 to i64
  %32 = add nsw i32 %28, -1
  %33 = zext nneg i32 %32 to i64
  %34 = add nsw i32 %28, -3
  %35 = zext nneg i32 %34 to i64
  %36 = zext nneg i32 %28 to i64
  %37 = zext nneg i32 %27 to i64
  %.pre = load i32, ptr getelementptr inbounds (i8, ptr @g, i64 8), align 8, !tbaa !5
  br label %39

38:                                               ; preds = %99
  br i1 %.not231, label %102, label %.thread282

39:                                               ; preds = %.preheader302, %99
  %40 = phi i32 [ %.pre, %.preheader302 ], [ %47, %99 ]
  %indvars.iv424 = phi i64 [ 2, %.preheader302 ], [ %indvars.iv.next425, %99 ]
  %41 = add nsw i64 %indvars.iv424, -1
  %42 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %41, i64 1
  %43 = load i32, ptr %42, align 4, !tbaa !5
  %44 = add nsw i64 %indvars.iv424, -2
  %45 = xor i32 %40, %43
  %46 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %41, i64 2
  %47 = load i32, ptr %46, align 4, !tbaa !5
  %48 = xor i32 %45, %47
  %49 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %indvars.iv424, i64 2
  store i32 %48, ptr %49, align 4, !tbaa !5
  br i1 %29, label %.lr.ph314, label %._crit_edge315

._crit_edge315:                                   ; preds = %.lr.ph314, %39
  %50 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %41, i64 %31
  %51 = load i32, ptr %50, align 4, !tbaa !5
  %52 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %41, i64 %33
  %53 = load i32, ptr %52, align 4, !tbaa !5
  %54 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %44, i64 %35
  %55 = load i32, ptr %54, align 4, !tbaa !5
  %56 = xor i32 %55, %51
  %57 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %41, i64 %35
  %58 = load i32, ptr %57, align 4, !tbaa !5
  %59 = xor i32 %56, %58
  %60 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %indvars.iv424, i64 %35
  %61 = load i32, ptr %60, align 4, !tbaa !5
  %62 = xor i32 %59, %61
  %.not268 = icmp eq i32 %62, %53
  br i1 %.not268, label %85, label %97

.lr.ph314:                                        ; preds = %39, %.lr.ph314
  %63 = phi i32 [ %66, %.lr.ph314 ], [ %43, %39 ]
  %indvars.iv419 = phi i64 [ %indvars.iv.next420, %.lr.ph314 ], [ 3, %39 ]
  %64 = add nsw i64 %indvars.iv419, -1
  %65 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %41, i64 %64
  %66 = load i32, ptr %65, align 4, !tbaa !5
  %67 = add nsw i64 %indvars.iv419, -3
  %68 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %44, i64 %67
  %69 = load i32, ptr %68, align 4, !tbaa !5
  %70 = xor i32 %63, %69
  %71 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %44, i64 %indvars.iv419
  %72 = load i32, ptr %71, align 4, !tbaa !5
  %73 = xor i32 %70, %72
  %74 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %41, i64 %67
  %75 = load i32, ptr %74, align 4, !tbaa !5
  %76 = xor i32 %73, %75
  %77 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %41, i64 %indvars.iv419
  %78 = load i32, ptr %77, align 4, !tbaa !5
  %79 = xor i32 %76, %78
  %80 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %indvars.iv424, i64 %67
  %81 = load i32, ptr %80, align 4, !tbaa !5
  %82 = xor i32 %79, %81
  %83 = xor i32 %82, %66
  %84 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %indvars.iv424, i64 %indvars.iv419
  store i32 %83, ptr %84, align 4, !tbaa !5
  %indvars.iv.next420 = add nuw nsw i64 %indvars.iv419, 1
  %exitcond423.not = icmp eq i64 %indvars.iv.next420, %36
  br i1 %exitcond423.not, label %._crit_edge315, label %.lr.ph314, !llvm.loop !16

85:                                               ; preds = %._crit_edge315
  %86 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %41, i64 %36
  %87 = load i32, ptr %86, align 4, !tbaa !5
  %88 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %44, i64 %31
  %89 = load i32, ptr %88, align 4, !tbaa !5
  %90 = xor i32 %89, %87
  %91 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %41, i64 %31
  %92 = load i32, ptr %91, align 4, !tbaa !5
  %93 = xor i32 %90, %92
  %94 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %indvars.iv424, i64 %31
  %95 = load i32, ptr %94, align 4, !tbaa !5
  %96 = xor i32 %93, %95
  %.not269 = icmp eq i32 %96, %53
  br i1 %.not269, label %99, label %97

97:                                               ; preds = %85, %._crit_edge315
  %98 = trunc nuw nsw i64 %41 to i32
  br label %99

99:                                               ; preds = %85, %97
  %.1210 = phi i32 [ %98, %97 ], [ 0, %85 ]
  %indvars.iv.next425 = add nuw nsw i64 %indvars.iv424, 1
  %100 = icmp ult i64 %indvars.iv.next425, %37
  %.not231 = icmp eq i32 %.1210, 0
  %101 = select i1 %100, i1 %.not231, i1 false
  br i1 %101, label %39, label %38, !llvm.loop !17

102:                                              ; preds = %38
  %103 = add nsw i32 %27, -1
  %104 = sext i32 %103 to i64
  %105 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %104, i64 1
  %106 = load i32, ptr %105, align 4, !tbaa !5
  %107 = add i32 %27, -2
  %108 = sext i32 %107 to i64
  %109 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %108, i64 2
  %110 = load i32, ptr %109, align 4, !tbaa !5
  %111 = xor i32 %110, %106
  %112 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %104, i64 2
  %113 = load i32, ptr %112, align 4, !tbaa !5
  %.not232 = icmp eq i32 %111, %113
  %spec.select = select i1 %.not232, i32 0, i32 %103
  %.not233318 = icmp eq i32 %spec.select, 0
  %114 = select i1 %29, i1 %.not233318, i1 false
  br i1 %114, label %.lr.ph322.preheader, label %._crit_edge323

.lr.ph322.preheader:                              ; preds = %102
  %115 = zext nneg i32 %28 to i64
  br label %.lr.ph322

._crit_edge323:                                   ; preds = %.lr.ph322, %102
  %.3212.lcssa = phi i32 [ %spec.select, %102 ], [ %spec.select271, %.lr.ph322 ]
  %116 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %104, i64 %31
  %117 = load i32, ptr %116, align 4, !tbaa !5
  %118 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %104, i64 %33
  %119 = load i32, ptr %118, align 4, !tbaa !5
  %120 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %108, i64 %35
  %121 = load i32, ptr %120, align 4, !tbaa !5
  %122 = xor i32 %121, %117
  %123 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %104, i64 %35
  %124 = load i32, ptr %123, align 4, !tbaa !5
  %125 = xor i32 %122, %124
  %.not234 = icmp eq i32 %125, %119
  br i1 %.not234, label %145, label %154

.lr.ph322:                                        ; preds = %.lr.ph322.preheader, %.lr.ph322
  %126 = phi i32 [ %106, %.lr.ph322.preheader ], [ %129, %.lr.ph322 ]
  %indvars.iv427 = phi i64 [ 3, %.lr.ph322.preheader ], [ %indvars.iv.next428, %.lr.ph322 ]
  %127 = add nsw i64 %indvars.iv427, -1
  %128 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %104, i64 %127
  %129 = load i32, ptr %128, align 4, !tbaa !5
  %130 = add nsw i64 %indvars.iv427, -3
  %131 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %108, i64 %130
  %132 = load i32, ptr %131, align 4, !tbaa !5
  %133 = xor i32 %126, %132
  %134 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %108, i64 %indvars.iv427
  %135 = load i32, ptr %134, align 4, !tbaa !5
  %136 = xor i32 %133, %135
  %137 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %104, i64 %130
  %138 = load i32, ptr %137, align 4, !tbaa !5
  %139 = xor i32 %136, %138
  %140 = xor i32 %139, %129
  %141 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %104, i64 %indvars.iv427
  %142 = load i32, ptr %141, align 4, !tbaa !5
  %.not236 = icmp eq i32 %140, %142
  %spec.select271 = select i1 %.not236, i32 0, i32 %103
  %indvars.iv.next428 = add nuw nsw i64 %indvars.iv427, 1
  %143 = icmp ult i64 %indvars.iv.next428, %115
  %.not233 = icmp eq i32 %spec.select271, 0
  %144 = select i1 %143, i1 %.not233, i1 false
  br i1 %144, label %.lr.ph322, label %._crit_edge323, !llvm.loop !18

145:                                              ; preds = %._crit_edge323
  %146 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %104, i64 %36
  %147 = load i32, ptr %146, align 4, !tbaa !5
  %148 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %108, i64 %31
  %149 = load i32, ptr %148, align 4, !tbaa !5
  %150 = xor i32 %149, %147
  %151 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %104, i64 %31
  %152 = load i32, ptr %151, align 4, !tbaa !5
  %153 = xor i32 %150, %152
  %.not235 = icmp eq i32 %153, %119
  br i1 %.not235, label %155, label %154

154:                                              ; preds = %145, %._crit_edge323
  br label %155

155:                                              ; preds = %145, %154
  %.5214 = phi i32 [ %103, %154 ], [ %.3212.lcssa, %145 ]
  %.not237 = icmp eq i32 %.5214, 0
  br i1 %.not237, label %156, label %.thread282

156:                                              ; preds = %155
  %157 = zext nneg i32 %27 to i64
  %158 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %157, i64 1
  %159 = load i32, ptr %158, align 4, !tbaa !5
  %.not238 = icmp eq i32 %159, %113
  %spec.select272 = select i1 %.not238, i32 0, i32 %27
  %.not239324 = icmp eq i32 %spec.select272, 0
  %160 = select i1 %29, i1 %.not239324, i1 false
  br i1 %160, label %.lr.ph328.preheader, label %._crit_edge329

.lr.ph328.preheader:                              ; preds = %156
  %161 = zext nneg i32 %28 to i64
  br label %.lr.ph328

._crit_edge329:                                   ; preds = %.lr.ph328, %156
  %.7216.lcssa = phi i32 [ %spec.select272, %156 ], [ %spec.select273, %.lr.ph328 ]
  %162 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %157, i64 %31
  %163 = load i32, ptr %162, align 4, !tbaa !5
  %164 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %157, i64 %33
  %165 = load i32, ptr %164, align 4, !tbaa !5
  %166 = xor i32 %124, %163
  %.not240 = icmp eq i32 %166, %165
  br i1 %.not240, label %180, label %186

.lr.ph328:                                        ; preds = %.lr.ph328.preheader, %.lr.ph328
  %167 = phi i32 [ %159, %.lr.ph328.preheader ], [ %170, %.lr.ph328 ]
  %indvars.iv430 = phi i64 [ 3, %.lr.ph328.preheader ], [ %indvars.iv.next431, %.lr.ph328 ]
  %168 = add nsw i64 %indvars.iv430, -1
  %169 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %157, i64 %168
  %170 = load i32, ptr %169, align 4, !tbaa !5
  %171 = add nsw i64 %indvars.iv430, -3
  %172 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %104, i64 %171
  %173 = load i32, ptr %172, align 4, !tbaa !5
  %174 = xor i32 %167, %173
  %175 = xor i32 %174, %170
  %176 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %104, i64 %indvars.iv430
  %177 = load i32, ptr %176, align 4, !tbaa !5
  %.not242 = icmp eq i32 %175, %177
  %spec.select273 = select i1 %.not242, i32 0, i32 %27
  %indvars.iv.next431 = add nuw nsw i64 %indvars.iv430, 1
  %178 = icmp ult i64 %indvars.iv.next431, %161
  %.not239 = icmp eq i32 %spec.select273, 0
  %179 = select i1 %178, i1 %.not239, i1 false
  br i1 %179, label %.lr.ph328, label %._crit_edge329, !llvm.loop !19

180:                                              ; preds = %._crit_edge329
  %181 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %157, i64 %36
  %182 = load i32, ptr %181, align 4, !tbaa !5
  %183 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %104, i64 %31
  %184 = load i32, ptr %183, align 4, !tbaa !5
  %185 = xor i32 %184, %182
  %.not241 = icmp eq i32 %185, %165
  br i1 %.not241, label %187, label %186

186:                                              ; preds = %180, %._crit_edge329
  br label %187

187:                                              ; preds = %180, %186
  %.9218 = phi i32 [ %27, %186 ], [ %.7216.lcssa, %180 ]
  %.not243 = icmp eq i32 %.9218, 0
  br i1 %.not243, label %374, label %.thread282

.thread282:                                       ; preds = %38, %155, %187
  %.9218285 = phi i32 [ %.9218, %187 ], [ %.5214, %155 ], [ %.1210, %38 ]
  %188 = icmp ne i32 %.0222372, 0
  %189 = icmp ne i32 %.0219373, 0
  %or.cond = and i1 %188, %189
  br i1 %or.cond, label %200, label %.preheader301

.preheader301:                                    ; preds = %.thread282
  %190 = icmp sgt i32 %28, 2
  br i1 %190, label %.lr.ph337, label %._crit_edge338.thread

.lr.ph337:                                        ; preds = %.preheader301
  %191 = icmp sgt i32 %27, 3
  %192 = add nsw i32 %27, -2
  %193 = sext i32 %192 to i64
  %194 = add nsw i32 %27, -1
  %195 = sext i32 %194 to i64
  %196 = add nsw i32 %27, -3
  %197 = sext i32 %196 to i64
  %198 = zext i32 %27 to i64
  %199 = zext nneg i32 %28 to i64
  %.pre485 = load i32, ptr getelementptr inbounds (i8, ptr @g, i64 2408), align 8, !tbaa !5
  br label %206

200:                                              ; preds = %.thread282
  %201 = sext i32 %.0222372 to i64
  %202 = sext i32 %.0219373 to i64
  %203 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %201, i64 %202
  %204 = load i32, ptr %203, align 4, !tbaa !5
  %205 = xor i32 %204, 1
  store i32 %205, ptr %203, align 4, !tbaa !5
  br label %.thread290

._crit_edge338:                                   ; preds = %266
  br i1 %.not244, label %._crit_edge338.thread, label %.thread286

206:                                              ; preds = %.lr.ph337, %266
  %207 = phi i32 [ %.pre485, %.lr.ph337 ], [ %214, %266 ]
  %indvars.iv438 = phi i64 [ 2, %.lr.ph337 ], [ %indvars.iv.next439, %266 ]
  %208 = add nsw i64 %indvars.iv438, -1
  %209 = getelementptr inbounds [301 x i32], ptr getelementptr inbounds (i8, ptr @f, i64 1204), i64 0, i64 %208
  %210 = load i32, ptr %209, align 4, !tbaa !5
  %211 = add nsw i64 %indvars.iv438, -2
  %212 = xor i32 %207, %210
  %213 = getelementptr inbounds [301 x i32], ptr getelementptr inbounds (i8, ptr @g, i64 2408), i64 0, i64 %208
  %214 = load i32, ptr %213, align 4, !tbaa !5
  %215 = xor i32 %212, %214
  %216 = getelementptr inbounds [301 x i32], ptr getelementptr inbounds (i8, ptr @g, i64 2408), i64 0, i64 %indvars.iv438
  store i32 %215, ptr %216, align 4, !tbaa !5
  br i1 %191, label %.lr.ph333, label %._crit_edge334

._crit_edge334:                                   ; preds = %.lr.ph333, %206
  %217 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %193, i64 %208
  %218 = load i32, ptr %217, align 4, !tbaa !5
  %219 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %195, i64 %208
  %220 = load i32, ptr %219, align 4, !tbaa !5
  %221 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %197, i64 %211
  %222 = load i32, ptr %221, align 4, !tbaa !5
  %223 = xor i32 %222, %218
  %224 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %197, i64 %208
  %225 = load i32, ptr %224, align 4, !tbaa !5
  %226 = xor i32 %223, %225
  %227 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %197, i64 %indvars.iv438
  %228 = load i32, ptr %227, align 4, !tbaa !5
  %229 = xor i32 %226, %228
  %.not261 = icmp eq i32 %229, %220
  br i1 %.not261, label %252, label %264

.lr.ph333:                                        ; preds = %206, %.lr.ph333
  %230 = phi i32 [ %233, %.lr.ph333 ], [ %210, %206 ]
  %indvars.iv433 = phi i64 [ %indvars.iv.next434, %.lr.ph333 ], [ 3, %206 ]
  %231 = add nsw i64 %indvars.iv433, -1
  %232 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %231, i64 %208
  %233 = load i32, ptr %232, align 4, !tbaa !5
  %234 = add nsw i64 %indvars.iv433, -3
  %235 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %234, i64 %211
  %236 = load i32, ptr %235, align 4, !tbaa !5
  %237 = xor i32 %230, %236
  %238 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %234, i64 %208
  %239 = load i32, ptr %238, align 4, !tbaa !5
  %240 = xor i32 %237, %239
  %241 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %234, i64 %indvars.iv438
  %242 = load i32, ptr %241, align 4, !tbaa !5
  %243 = xor i32 %240, %242
  %244 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %indvars.iv433, i64 %211
  %245 = load i32, ptr %244, align 4, !tbaa !5
  %246 = xor i32 %243, %245
  %247 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %indvars.iv433, i64 %208
  %248 = load i32, ptr %247, align 4, !tbaa !5
  %249 = xor i32 %246, %248
  %250 = xor i32 %249, %233
  %251 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %indvars.iv433, i64 %indvars.iv438
  store i32 %250, ptr %251, align 4, !tbaa !5
  %indvars.iv.next434 = add nuw nsw i64 %indvars.iv433, 1
  %exitcond437.not = icmp eq i64 %indvars.iv.next434, %198
  br i1 %exitcond437.not, label %._crit_edge334, label %.lr.ph333, !llvm.loop !20

252:                                              ; preds = %._crit_edge334
  %253 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %198, i64 %208
  %254 = load i32, ptr %253, align 4, !tbaa !5
  %255 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %193, i64 %211
  %256 = load i32, ptr %255, align 4, !tbaa !5
  %257 = xor i32 %256, %254
  %258 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %193, i64 %208
  %259 = load i32, ptr %258, align 4, !tbaa !5
  %260 = xor i32 %257, %259
  %261 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %193, i64 %indvars.iv438
  %262 = load i32, ptr %261, align 4, !tbaa !5
  %263 = xor i32 %260, %262
  %.not262 = icmp eq i32 %263, %220
  br i1 %.not262, label %266, label %264

264:                                              ; preds = %252, %._crit_edge334
  %265 = trunc nuw nsw i64 %208 to i32
  br label %266

266:                                              ; preds = %252, %264
  %.1206 = phi i32 [ %265, %264 ], [ 0, %252 ]
  %indvars.iv.next439 = add nuw nsw i64 %indvars.iv438, 1
  %267 = icmp ult i64 %indvars.iv.next439, %199
  %.not244 = icmp eq i32 %.1206, 0
  %268 = select i1 %267, i1 %.not244, i1 false
  br i1 %268, label %206, label %._crit_edge338, !llvm.loop !21

._crit_edge338.thread:                            ; preds = %.preheader301, %._crit_edge338
  %269 = getelementptr inbounds [301 x i32], ptr getelementptr inbounds (i8, ptr @f, i64 1204), i64 0, i64 %33
  %270 = load i32, ptr %269, align 4, !tbaa !5
  %271 = getelementptr inbounds [301 x i32], ptr getelementptr inbounds (i8, ptr @g, i64 2408), i64 0, i64 %31
  %272 = load i32, ptr %271, align 4, !tbaa !5
  %273 = xor i32 %272, %270
  %274 = getelementptr inbounds [301 x i32], ptr getelementptr inbounds (i8, ptr @g, i64 2408), i64 0, i64 %33
  %275 = load i32, ptr %274, align 4, !tbaa !5
  %.not245 = icmp eq i32 %273, %275
  %spec.select274 = select i1 %.not245, i32 0, i32 %32
  %276 = icmp sgt i32 %27, 3
  %.not246341 = icmp eq i32 %spec.select274, 0
  %277 = select i1 %276, i1 %.not246341, i1 false
  br i1 %277, label %.lr.ph345, label %._crit_edge346

._crit_edge346:                                   ; preds = %.lr.ph345, %._crit_edge338.thread
  %.3208.lcssa = phi i32 [ %spec.select274, %._crit_edge338.thread ], [ %spec.select275, %.lr.ph345 ]
  %278 = add nsw i32 %27, -2
  %279 = sext i32 %278 to i64
  %280 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %279, i64 %33
  %281 = load i32, ptr %280, align 4, !tbaa !5
  %282 = add nsw i32 %27, -1
  %283 = sext i32 %282 to i64
  %284 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %283, i64 %33
  %285 = load i32, ptr %284, align 4, !tbaa !5
  %286 = add nsw i32 %27, -3
  %287 = sext i32 %286 to i64
  %288 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %287, i64 %31
  %289 = load i32, ptr %288, align 4, !tbaa !5
  %290 = xor i32 %289, %281
  %291 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %287, i64 %33
  %292 = load i32, ptr %291, align 4, !tbaa !5
  %293 = xor i32 %290, %292
  %.not247 = icmp eq i32 %293, %285
  br i1 %.not247, label %313, label %323

.lr.ph345:                                        ; preds = %._crit_edge338.thread, %.lr.ph345
  %294 = phi i32 [ %297, %.lr.ph345 ], [ %270, %._crit_edge338.thread ]
  %indvars.iv441 = phi i64 [ %indvars.iv.next442, %.lr.ph345 ], [ 3, %._crit_edge338.thread ]
  %295 = add nsw i64 %indvars.iv441, -1
  %296 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %295, i64 %33
  %297 = load i32, ptr %296, align 4, !tbaa !5
  %298 = add nsw i64 %indvars.iv441, -3
  %299 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %298, i64 %31
  %300 = load i32, ptr %299, align 4, !tbaa !5
  %301 = xor i32 %294, %300
  %302 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %298, i64 %33
  %303 = load i32, ptr %302, align 4, !tbaa !5
  %304 = xor i32 %301, %303
  %305 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %indvars.iv441, i64 %31
  %306 = load i32, ptr %305, align 4, !tbaa !5
  %307 = xor i32 %304, %306
  %308 = xor i32 %307, %297
  %309 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %indvars.iv441, i64 %33
  %310 = load i32, ptr %309, align 4, !tbaa !5
  %.not249 = icmp eq i32 %308, %310
  %spec.select275 = select i1 %.not249, i32 0, i32 %32
  %indvars.iv.next442 = add nuw nsw i64 %indvars.iv441, 1
  %311 = icmp ult i64 %indvars.iv.next442, %37
  %.not246 = icmp eq i32 %spec.select275, 0
  %312 = select i1 %311, i1 %.not246, i1 false
  br i1 %312, label %.lr.ph345, label %._crit_edge346, !llvm.loop !22

313:                                              ; preds = %._crit_edge346
  %314 = zext nneg i32 %27 to i64
  %315 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %314, i64 %33
  %316 = load i32, ptr %315, align 4, !tbaa !5
  %317 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %279, i64 %31
  %318 = load i32, ptr %317, align 4, !tbaa !5
  %319 = xor i32 %318, %316
  %320 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %279, i64 %33
  %321 = load i32, ptr %320, align 4, !tbaa !5
  %322 = xor i32 %319, %321
  %.not248 = icmp eq i32 %322, %285
  br i1 %.not248, label %324, label %323

323:                                              ; preds = %313, %._crit_edge346
  br label %324

324:                                              ; preds = %313, %323
  %.5 = phi i32 [ %32, %323 ], [ %.3208.lcssa, %313 ]
  %.not250 = icmp eq i32 %.5, 0
  br i1 %.not250, label %325, label %.preheader300

325:                                              ; preds = %324
  %326 = getelementptr inbounds [301 x i32], ptr getelementptr inbounds (i8, ptr @f, i64 1204), i64 0, i64 %36
  %327 = load i32, ptr %326, align 4, !tbaa !5
  %.not251 = icmp eq i32 %327, %275
  %spec.select276 = select i1 %.not251, i32 0, i32 %28
  %.not252348 = icmp eq i32 %spec.select276, 0
  %328 = select i1 %276, i1 %.not252348, i1 false
  br i1 %328, label %.lr.ph352, label %._crit_edge353

._crit_edge353:                                   ; preds = %.lr.ph352, %325
  %.7.lcssa = phi i32 [ %spec.select276, %325 ], [ %spec.select277, %.lr.ph352 ]
  %329 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %279, i64 %36
  %330 = load i32, ptr %329, align 4, !tbaa !5
  %331 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %283, i64 %36
  %332 = load i32, ptr %331, align 4, !tbaa !5
  %333 = xor i32 %292, %330
  %.not253 = icmp eq i32 %333, %332
  br i1 %.not253, label %347, label %354

.lr.ph352:                                        ; preds = %325, %.lr.ph352
  %334 = phi i32 [ %337, %.lr.ph352 ], [ %327, %325 ]
  %indvars.iv444 = phi i64 [ %indvars.iv.next445, %.lr.ph352 ], [ 3, %325 ]
  %335 = add nsw i64 %indvars.iv444, -1
  %336 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %335, i64 %36
  %337 = load i32, ptr %336, align 4, !tbaa !5
  %338 = add nsw i64 %indvars.iv444, -3
  %339 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %338, i64 %33
  %340 = load i32, ptr %339, align 4, !tbaa !5
  %341 = xor i32 %334, %340
  %342 = xor i32 %341, %337
  %343 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %indvars.iv444, i64 %33
  %344 = load i32, ptr %343, align 4, !tbaa !5
  %.not255 = icmp eq i32 %342, %344
  %spec.select277 = select i1 %.not255, i32 0, i32 %28
  %indvars.iv.next445 = add nuw nsw i64 %indvars.iv444, 1
  %345 = icmp ult i64 %indvars.iv.next445, %37
  %.not252 = icmp eq i32 %spec.select277, 0
  %346 = select i1 %345, i1 %.not252, i1 false
  br i1 %346, label %.lr.ph352, label %._crit_edge353, !llvm.loop !23

347:                                              ; preds = %._crit_edge353
  %348 = zext nneg i32 %27 to i64
  %349 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %348, i64 %36
  %350 = load i32, ptr %349, align 4, !tbaa !5
  %351 = getelementptr inbounds [301 x [301 x i32]], ptr @g, i64 0, i64 %279, i64 %33
  %352 = load i32, ptr %351, align 4, !tbaa !5
  %353 = xor i32 %352, %350
  %.not254 = icmp eq i32 %353, %332
  br i1 %.not254, label %.thread286, label %354

354:                                              ; preds = %347, %._crit_edge353
  br label %.thread286

.thread286:                                       ; preds = %._crit_edge338, %347, %354
  %.9 = phi i32 [ %28, %354 ], [ %.7.lcssa, %347 ], [ %.1206, %._crit_edge338 ]
  %.not256 = icmp eq i32 %.9, 0
  br i1 %.not256, label %.thread286._crit_edge, label %.preheader300

.thread286._crit_edge:                            ; preds = %.thread286
  %.pre491 = add i32 %27, -2
  br label %374

.preheader300:                                    ; preds = %324, %.thread286
  %.9498 = phi i32 [ %.9, %.thread286 ], [ %.5, %324 ]
  %.not259361 = icmp slt i32 %27, 1
  %.not260355 = icmp slt i32 %28, 1
  %or.cond521 = or i1 %.not259361, %.not260355
  br i1 %or.cond521, label %._crit_edge364.thread, label %.preheader299.preheader

.preheader299.preheader:                          ; preds = %.preheader300
  %355 = add nuw i32 %28, 1
  %356 = add nuw i32 %27, 1
  %wide.trip.count455 = zext i32 %356 to i64
  %wide.trip.count450 = zext i32 %355 to i64
  %357 = zext nneg i32 %28 to i64
  %min.iters.check536 = icmp ult i32 %28, 8
  %n.vec539 = and i64 %357, 2147483640
  %ind.end540 = or disjoint i64 %n.vec539, 1
  %cmp.n549 = icmp eq i64 %n.vec539, %357
  br label %.preheader299

.preheader299:                                    ; preds = %.preheader299.preheader, %._crit_edge359
  %indvars.iv452 = phi i64 [ 1, %.preheader299.preheader ], [ %indvars.iv.next453, %._crit_edge359 ]
  %.0195362 = phi i32 [ 0, %.preheader299.preheader ], [ %.lcssa, %._crit_edge359 ]
  br i1 %min.iters.check536, label %scalar.ph535.preheader, label %vector.ph537

scalar.ph535.preheader:                           ; preds = %middle.block534, %.preheader299
  %indvars.iv447.ph = phi i64 [ 1, %.preheader299 ], [ %ind.end540, %middle.block534 ]
  %.1196356.ph = phi i32 [ %.0195362, %.preheader299 ], [ %364, %middle.block534 ]
  br label %scalar.ph535

vector.ph537:                                     ; preds = %.preheader299
  %358 = insertelement <4 x i32> <i32 poison, i32 0, i32 0, i32 0>, i32 %.0195362, i64 0
  br label %vector.body542

vector.body542:                                   ; preds = %vector.body542, %vector.ph537
  %index543 = phi i64 [ 0, %vector.ph537 ], [ %index.next548, %vector.body542 ]
  %vec.phi = phi <4 x i32> [ %358, %vector.ph537 ], [ %361, %vector.body542 ]
  %vec.phi544 = phi <4 x i32> [ zeroinitializer, %vector.ph537 ], [ %362, %vector.body542 ]
  %offset.idx545 = or disjoint i64 %index543, 1
  %359 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %indvars.iv452, i64 %offset.idx545
  %360 = getelementptr inbounds i8, ptr %359, i64 16
  %wide.load546 = load <4 x i32>, ptr %359, align 4, !tbaa !5
  %wide.load547 = load <4 x i32>, ptr %360, align 4, !tbaa !5
  %361 = add <4 x i32> %wide.load546, %vec.phi
  %362 = add <4 x i32> %wide.load547, %vec.phi544
  %index.next548 = add nuw i64 %index543, 8
  %363 = icmp eq i64 %index.next548, %n.vec539
  br i1 %363, label %middle.block534, label %vector.body542, !llvm.loop !24

middle.block534:                                  ; preds = %vector.body542
  %bin.rdx = add <4 x i32> %362, %361
  %364 = tail call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %bin.rdx)
  br i1 %cmp.n549, label %._crit_edge359, label %scalar.ph535.preheader

._crit_edge364:                                   ; preds = %._crit_edge359
  %365 = icmp eq i32 %.lcssa, 1
  br i1 %365, label %.thread290, label %._crit_edge364.thread

._crit_edge359:                                   ; preds = %scalar.ph535, %middle.block534
  %.lcssa = phi i32 [ %364, %middle.block534 ], [ %368, %scalar.ph535 ]
  %indvars.iv.next453 = add nuw nsw i64 %indvars.iv452, 1
  %exitcond456.not = icmp eq i64 %indvars.iv.next453, %wide.trip.count455
  br i1 %exitcond456.not, label %._crit_edge364, label %.preheader299, !llvm.loop !25

scalar.ph535:                                     ; preds = %scalar.ph535.preheader, %scalar.ph535
  %indvars.iv447 = phi i64 [ %indvars.iv.next448, %scalar.ph535 ], [ %indvars.iv447.ph, %scalar.ph535.preheader ]
  %.1196356 = phi i32 [ %368, %scalar.ph535 ], [ %.1196356.ph, %scalar.ph535.preheader ]
  %366 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %indvars.iv452, i64 %indvars.iv447
  %367 = load i32, ptr %366, align 4, !tbaa !5
  %368 = add nsw i32 %367, %.1196356
  %indvars.iv.next448 = add nuw nsw i64 %indvars.iv447, 1
  %exitcond451.not = icmp eq i64 %indvars.iv.next448, %wide.trip.count450
  br i1 %exitcond451.not, label %._crit_edge359, label %scalar.ph535, !llvm.loop !26

._crit_edge364.thread:                            ; preds = %.preheader300, %._crit_edge364
  %369 = sext i32 %.9218285 to i64
  %370 = sext i32 %.9498 to i64
  %371 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %369, i64 %370
  %372 = load i32, ptr %371, align 4, !tbaa !5
  %373 = xor i32 %372, 1
  store i32 %373, ptr %371, align 4, !tbaa !5
  br label %.loopexit, !llvm.loop !27

374:                                              ; preds = %.thread286._crit_edge, %187
  %.pre-phi = phi i32 [ %.pre491, %.thread286._crit_edge ], [ %107, %187 ]
  store i32 %.pre-phi, ptr @n, align 4, !tbaa !5
  store i32 %30, ptr @m, align 4, !tbaa !5
  %.not257370 = icmp slt i32 %27, 3
  %.not258366 = icmp slt i32 %28, 3
  %or.cond522 = or i1 %.not257370, %.not258366
  br i1 %or.cond522, label %.loopexit, label %.preheader298.preheader

.preheader298.preheader:                          ; preds = %374
  %375 = zext nneg i32 %30 to i64
  %376 = shl nuw nsw i64 %375, 2
  %wide.trip.count461 = zext i32 %.pre-phi to i64
  %377 = add nsw i64 %wide.trip.count461, -1
  %xtraiter = and i64 %wide.trip.count461, 3
  %378 = icmp ult i64 %377, 3
  br i1 %378, label %.loopexit.loopexit.unr-lcssa, label %.preheader298.preheader.new

.preheader298.preheader.new:                      ; preds = %.preheader298.preheader
  %unroll_iter = and i64 %wide.trip.count461, 4294967292
  br label %.preheader298

.preheader298:                                    ; preds = %.preheader298, %.preheader298.preheader.new
  %indvar = phi i64 [ 0, %.preheader298.preheader.new ], [ %indvar.next.3, %.preheader298 ]
  %niter = phi i64 [ 0, %.preheader298.preheader.new ], [ %niter.next.3, %.preheader298 ]
  %379 = mul nuw nsw i64 %indvar, 1204
  %gep = getelementptr i8, ptr getelementptr inbounds (i8, ptr @f, i64 1208), i64 %379
  %gep520 = getelementptr i8, ptr getelementptr inbounds (i8, ptr @g, i64 2416), i64 %379
  tail call void @llvm.memcpy.p0.p0.i64(ptr align 8 %gep, ptr align 16 %gep520, i64 %376, i1 false), !tbaa !5
  %380 = mul nuw i64 %indvar, 1204
  %381 = add nuw i64 %380, 1204
  %gep.1 = getelementptr i8, ptr getelementptr inbounds (i8, ptr @f, i64 1208), i64 %381
  %gep520.1 = getelementptr i8, ptr getelementptr inbounds (i8, ptr @g, i64 2416), i64 %381
  tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %gep.1, ptr align 4 %gep520.1, i64 %376, i1 false), !tbaa !5
  %382 = mul nuw i64 %indvar, 1204
  %383 = add nuw i64 %382, 2408
  %gep.2 = getelementptr i8, ptr getelementptr inbounds (i8, ptr @f, i64 1208), i64 %383
  %gep520.2 = getelementptr i8, ptr getelementptr inbounds (i8, ptr @g, i64 2416), i64 %383
  tail call void @llvm.memcpy.p0.p0.i64(ptr align 16 %gep.2, ptr align 8 %gep520.2, i64 %376, i1 false), !tbaa !5
  %384 = mul nuw i64 %indvar, 1204
  %385 = add nuw i64 %384, 3612
  %gep.3 = getelementptr i8, ptr getelementptr inbounds (i8, ptr @f, i64 1208), i64 %385
  %gep520.3 = getelementptr i8, ptr getelementptr inbounds (i8, ptr @g, i64 2416), i64 %385
  tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %gep.3, ptr align 4 %gep520.3, i64 %376, i1 false), !tbaa !5
  %indvar.next.3 = add nuw nsw i64 %indvar, 4
  %niter.next.3 = add i64 %niter, 4
  %niter.ncmp.3 = icmp eq i64 %niter.next.3, %unroll_iter
  br i1 %niter.ncmp.3, label %.loopexit.loopexit.unr-lcssa, label %.preheader298, !llvm.loop !28

.loopexit.loopexit.unr-lcssa:                     ; preds = %.preheader298, %.preheader298.preheader
  %indvar.unr = phi i64 [ 0, %.preheader298.preheader ], [ %indvar.next.3, %.preheader298 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.loopexit, label %.preheader298.epil

.preheader298.epil:                               ; preds = %.loopexit.loopexit.unr-lcssa, %.preheader298.epil
  %indvar.epil = phi i64 [ %indvar.next.epil, %.preheader298.epil ], [ %indvar.unr, %.loopexit.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.preheader298.epil ], [ 0, %.loopexit.loopexit.unr-lcssa ]
  %386 = mul nuw nsw i64 %indvar.epil, 1204
  %gep.epil = getelementptr i8, ptr getelementptr inbounds (i8, ptr @f, i64 1208), i64 %386
  %gep520.epil = getelementptr i8, ptr getelementptr inbounds (i8, ptr @g, i64 2416), i64 %386
  tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %gep.epil, ptr align 4 %gep520.epil, i64 %376, i1 false), !tbaa !5
  %indvar.next.epil = add nuw nsw i64 %indvar.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter
  br i1 %epil.iter.cmp.not, label %.loopexit, label %.preheader298.epil, !llvm.loop !29

.loopexit:                                        ; preds = %.loopexit.loopexit.unr-lcssa, %.preheader298.epil, %374, %._crit_edge364.thread
  %387 = phi i32 [ %28, %._crit_edge364.thread ], [ %30, %374 ], [ %30, %.preheader298.epil ], [ %30, %.loopexit.loopexit.unr-lcssa ]
  %388 = phi i32 [ %27, %._crit_edge364.thread ], [ %.pre-phi, %374 ], [ %.pre-phi, %.preheader298.epil ], [ %.pre-phi, %.loopexit.loopexit.unr-lcssa ]
  %.2224 = phi i32 [ %.9218285, %._crit_edge364.thread ], [ 0, %374 ], [ 0, %.preheader298.epil ], [ 0, %.loopexit.loopexit.unr-lcssa ]
  %.2221 = phi i32 [ %.9498, %._crit_edge364.thread ], [ 0, %374 ], [ 0, %.preheader298.epil ], [ 0, %.loopexit.loopexit.unr-lcssa ]
  %389 = icmp sgt i32 %388, 2
  %390 = icmp sgt i32 %387, 2
  %391 = and i1 %389, %390
  br i1 %391, label %.preheader302, label %.thread290

.thread290:                                       ; preds = %.loopexit, %._crit_edge364, %.preheader303, %200
  %392 = phi i32 [ %7, %.preheader303 ], [ %28, %200 ], [ %387, %.loopexit ], [ %28, %._crit_edge364 ]
  %393 = phi i32 [ %19, %.preheader303 ], [ %27, %200 ], [ %388, %.loopexit ], [ %27, %._crit_edge364 ]
  %.not263387 = icmp slt i32 %393, 1
  br i1 %.not263387, label %.preheader.lr.ph, label %.preheader297.lr.ph

.preheader297.lr.ph:                              ; preds = %.thread290
  %.not266375 = icmp slt i32 %392, 1
  br i1 %.not266375, label %.preheader296, label %.preheader297.preheader

.preheader297.preheader:                          ; preds = %.preheader297.lr.ph
  %394 = add nuw i32 %392, 1
  %395 = add nuw i32 %393, 1
  %wide.trip.count471 = zext i32 %395 to i64
  %wide.trip.count466 = zext i32 %394 to i64
  %396 = zext nneg i32 %392 to i64
  %min.iters.check552 = icmp ult i32 %392, 4
  %n.vec555 = and i64 %396, 2147483644
  %ind.end556 = or disjoint i64 %n.vec555, 1
  %cmp.n576 = icmp eq i64 %n.vec555, %396
  br label %.preheader297

.preheader297:                                    ; preds = %.preheader297.preheader, %._crit_edge382
  %indvars.iv468 = phi i64 [ 1, %.preheader297.preheader ], [ %indvars.iv.next469, %._crit_edge382 ]
  %.0179391 = phi i32 [ 1, %.preheader297.preheader ], [ %.2.lcssa, %._crit_edge382 ]
  %.0180390 = phi i32 [ %392, %.preheader297.preheader ], [ %.3.lcssa, %._crit_edge382 ]
  %.0183389 = phi i32 [ 1, %.preheader297.preheader ], [ %.3186.lcssa, %._crit_edge382 ]
  %.0187388 = phi i32 [ %393, %.preheader297.preheader ], [ %.3190.lcssa, %._crit_edge382 ]
  %397 = trunc nuw nsw i64 %indvars.iv468 to i32
  br i1 %min.iters.check552, label %scalar.ph551.preheader, label %vector.ph553

scalar.ph551.preheader:                           ; preds = %middle.block550, %.preheader297
  %indvars.iv463.ph = phi i64 [ 1, %.preheader297 ], [ %ind.end556, %middle.block550 ]
  %.1379.ph = phi i32 [ %.0179391, %.preheader297 ], [ %404, %middle.block550 ]
  %.1181378.ph = phi i32 [ %.0180390, %.preheader297 ], [ %405, %middle.block550 ]
  %.1184377.ph = phi i32 [ %.0183389, %.preheader297 ], [ %406, %middle.block550 ]
  %.1188376.ph = phi i32 [ %.0187388, %.preheader297 ], [ %407, %middle.block550 ]
  br label %scalar.ph551

vector.ph553:                                     ; preds = %.preheader297
  %minmax.ident.splatinsert = insertelement <4 x i32> poison, i32 %.0179391, i64 0
  %minmax.ident.splat = shufflevector <4 x i32> %minmax.ident.splatinsert, <4 x i32> poison, <4 x i32> zeroinitializer
  %minmax.ident.splatinsert562 = insertelement <4 x i32> poison, i32 %.0180390, i64 0
  %minmax.ident.splat563 = shufflevector <4 x i32> %minmax.ident.splatinsert562, <4 x i32> poison, <4 x i32> zeroinitializer
  %minmax.ident.splatinsert565 = insertelement <4 x i32> poison, i32 %.0183389, i64 0
  %minmax.ident.splat566 = shufflevector <4 x i32> %minmax.ident.splatinsert565, <4 x i32> poison, <4 x i32> zeroinitializer
  %minmax.ident.splatinsert568 = insertelement <4 x i32> poison, i32 %.0187388, i64 0
  %minmax.ident.splat569 = shufflevector <4 x i32> %minmax.ident.splatinsert568, <4 x i32> poison, <4 x i32> zeroinitializer
  %broadcast.splatinsert = insertelement <4 x i32> poison, i32 %397, i64 0
  %broadcast.splat = shufflevector <4 x i32> %broadcast.splatinsert, <4 x i32> poison, <4 x i32> zeroinitializer
  br label %vector.body558

vector.body558:                                   ; preds = %vector.body558, %vector.ph553
  %index559 = phi i64 [ 0, %vector.ph553 ], [ %index.next575, %vector.body558 ]
  %vec.phi560 = phi <4 x i32> [ %minmax.ident.splat, %vector.ph553 ], [ %predphi574, %vector.body558 ]
  %vec.phi561 = phi <4 x i32> [ %minmax.ident.splat563, %vector.ph553 ], [ %predphi573, %vector.body558 ]
  %vec.phi564 = phi <4 x i32> [ %minmax.ident.splat566, %vector.ph553 ], [ %predphi572, %vector.body558 ]
  %vec.phi567 = phi <4 x i32> [ %minmax.ident.splat569, %vector.ph553 ], [ %predphi, %vector.body558 ]
  %vec.ind = phi <4 x i32> [ <i32 1, i32 2, i32 3, i32 4>, %vector.ph553 ], [ %vec.ind.next, %vector.body558 ]
  %offset.idx570 = or disjoint i64 %index559, 1
  %398 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %indvars.iv468, i64 %offset.idx570
  %wide.load571 = load <4 x i32>, ptr %398, align 4, !tbaa !5
  %.not = icmp eq <4 x i32> %wide.load571, zeroinitializer
  %399 = tail call <4 x i32> @llvm.smin.v4i32(<4 x i32> %vec.phi567, <4 x i32> %broadcast.splat)
  %400 = tail call <4 x i32> @llvm.smax.v4i32(<4 x i32> %vec.phi564, <4 x i32> %broadcast.splat)
  %401 = tail call <4 x i32> @llvm.smin.v4i32(<4 x i32> %vec.phi561, <4 x i32> %vec.ind)
  %402 = tail call <4 x i32> @llvm.smax.v4i32(<4 x i32> %vec.phi560, <4 x i32> %vec.ind)
  %predphi = select <4 x i1> %.not, <4 x i32> %vec.phi567, <4 x i32> %399
  %predphi572 = select <4 x i1> %.not, <4 x i32> %vec.phi564, <4 x i32> %400
  %predphi573 = select <4 x i1> %.not, <4 x i32> %vec.phi561, <4 x i32> %401
  %predphi574 = select <4 x i1> %.not, <4 x i32> %vec.phi560, <4 x i32> %402
  %index.next575 = add nuw i64 %index559, 4
  %vec.ind.next = add <4 x i32> %vec.ind, <i32 4, i32 4, i32 4, i32 4>
  %403 = icmp eq i64 %index.next575, %n.vec555
  br i1 %403, label %middle.block550, label %vector.body558, !llvm.loop !31

middle.block550:                                  ; preds = %vector.body558
  %404 = tail call i32 @llvm.vector.reduce.smax.v4i32(<4 x i32> %predphi574)
  %405 = tail call i32 @llvm.vector.reduce.smin.v4i32(<4 x i32> %predphi573)
  %406 = tail call i32 @llvm.vector.reduce.smax.v4i32(<4 x i32> %predphi572)
  %407 = tail call i32 @llvm.vector.reduce.smin.v4i32(<4 x i32> %predphi)
  br i1 %cmp.n576, label %._crit_edge382, label %scalar.ph551.preheader

.preheader296:                                    ; preds = %._crit_edge382, %.preheader297.lr.ph
  %.0187.lcssa = phi i32 [ %393, %.preheader297.lr.ph ], [ %.3190.lcssa, %._crit_edge382 ]
  %.0183.lcssa = phi i32 [ 1, %.preheader297.lr.ph ], [ %.3186.lcssa, %._crit_edge382 ]
  %.0180.lcssa = phi i32 [ %392, %.preheader297.lr.ph ], [ %.3.lcssa, %._crit_edge382 ]
  %.0179.lcssa = phi i32 [ 1, %.preheader297.lr.ph ], [ %.2.lcssa, %._crit_edge382 ]
  %.not264405 = icmp sgt i32 %.0187.lcssa, %.0183.lcssa
  br i1 %.not264405, label %._crit_edge407, label %.preheader.lr.ph

.preheader.lr.ph:                                 ; preds = %.thread290.thread, %.thread290, %.preheader296
  %.0179.lcssa509 = phi i32 [ %.0179.lcssa, %.preheader296 ], [ 1, %.thread290 ], [ 1, %.thread290.thread ]
  %.0180.lcssa508 = phi i32 [ %.0180.lcssa, %.preheader296 ], [ %392, %.thread290 ], [ %m.promoted.pre, %.thread290.thread ]
  %.0183.lcssa507 = phi i32 [ %.0183.lcssa, %.preheader296 ], [ 1, %.thread290 ], [ 1, %.thread290.thread ]
  %.0187.lcssa506 = phi i32 [ %.0187.lcssa, %.preheader296 ], [ %393, %.thread290 ], [ %2, %.thread290.thread ]
  %.not265401 = icmp sgt i32 %.0180.lcssa508, %.0179.lcssa509
  %reass.sub = sub i32 %.0179.lcssa509, %.0180.lcssa508
  %408 = add i32 %reass.sub, 1
  %409 = sext i32 %408 to i64
  %410 = getelementptr inbounds [301 x i8], ptr @buf, i64 0, i64 %409
  br i1 %.not265401, label %.preheader.us, label %.preheader.preheader

.preheader.preheader:                             ; preds = %.preheader.lr.ph
  %411 = sext i32 %.0180.lcssa508 to i64
  %412 = add i32 %.0179.lcssa509, 1
  %413 = sext i32 %.0187.lcssa506 to i64
  %414 = add i32 %.0183.lcssa507, 1
  %415 = sub i32 %412, %.0180.lcssa508
  %xtraiter598 = and i32 %415, 1
  %lcmp.mod599.not = icmp eq i32 %xtraiter598, 0
  %indvars.iv.next474.prol = add nsw i64 %411, 1
  %416 = icmp eq i32 %.0179.lcssa509, %.0180.lcssa508
  br label %.preheader

.preheader.us:                                    ; preds = %.preheader.lr.ph, %.preheader.us
  %.0176406.us = phi i32 [ %418, %.preheader.us ], [ %.0187.lcssa506, %.preheader.lr.ph ]
  store i8 0, ptr %410, align 1, !tbaa !9
  %417 = tail call i32 @puts(ptr noundef nonnull dereferenceable(1) @buf)
  %418 = add i32 %.0176406.us, 1
  %exitcond482.not = icmp eq i32 %.0176406.us, %.0183.lcssa507
  br i1 %exitcond482.not, label %._crit_edge407, label %.preheader.us, !llvm.loop !32

._crit_edge382:                                   ; preds = %423, %middle.block550
  %.3190.lcssa = phi i32 [ %407, %middle.block550 ], [ %.3190, %423 ]
  %.3186.lcssa = phi i32 [ %406, %middle.block550 ], [ %.3186, %423 ]
  %.3.lcssa = phi i32 [ %405, %middle.block550 ], [ %.3, %423 ]
  %.2.lcssa = phi i32 [ %404, %middle.block550 ], [ %.2, %423 ]
  %indvars.iv.next469 = add nuw nsw i64 %indvars.iv468, 1
  %exitcond472.not = icmp eq i64 %indvars.iv.next469, %wide.trip.count471
  br i1 %exitcond472.not, label %.preheader296, label %.preheader297, !llvm.loop !33

scalar.ph551:                                     ; preds = %scalar.ph551.preheader, %423
  %indvars.iv463 = phi i64 [ %indvars.iv.next464, %423 ], [ %indvars.iv463.ph, %scalar.ph551.preheader ]
  %.1379 = phi i32 [ %.2, %423 ], [ %.1379.ph, %scalar.ph551.preheader ]
  %.1181378 = phi i32 [ %.3, %423 ], [ %.1181378.ph, %scalar.ph551.preheader ]
  %.1184377 = phi i32 [ %.3186, %423 ], [ %.1184377.ph, %scalar.ph551.preheader ]
  %.1188376 = phi i32 [ %.3190, %423 ], [ %.1188376.ph, %scalar.ph551.preheader ]
  %419 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %indvars.iv468, i64 %indvars.iv463
  %420 = load i32, ptr %419, align 4, !tbaa !5
  %.not267 = icmp eq i32 %420, 0
  br i1 %.not267, label %423, label %421

421:                                              ; preds = %scalar.ph551
  %spec.select278 = tail call i32 @llvm.smin.i32(i32 %.1188376, i32 %397)
  %.2185 = tail call i32 @llvm.smax.i32(i32 %.1184377, i32 %397)
  %422 = trunc nuw nsw i64 %indvars.iv463 to i32
  %.2182 = tail call i32 @llvm.smin.i32(i32 %.1181378, i32 %422)
  %spec.select279 = tail call i32 @llvm.smax.i32(i32 %.1379, i32 %422)
  br label %423

423:                                              ; preds = %421, %scalar.ph551
  %.3190 = phi i32 [ %.1188376, %scalar.ph551 ], [ %spec.select278, %421 ]
  %.3186 = phi i32 [ %.1184377, %scalar.ph551 ], [ %.2185, %421 ]
  %.3 = phi i32 [ %.1181378, %scalar.ph551 ], [ %.2182, %421 ]
  %.2 = phi i32 [ %.1379, %scalar.ph551 ], [ %spec.select279, %421 ]
  %indvars.iv.next464 = add nuw nsw i64 %indvars.iv463, 1
  %exitcond467.not = icmp eq i64 %indvars.iv.next464, %wide.trip.count466
  br i1 %exitcond467.not, label %._crit_edge382, label %scalar.ph551, !llvm.loop !34

.preheader:                                       ; preds = %.preheader.preheader, %._crit_edge404
  %indvars.iv477 = phi i64 [ %413, %.preheader.preheader ], [ %indvars.iv.next478, %._crit_edge404 ]
  br i1 %lcmp.mod599.not, label %.prol.loopexit, label %.prol.loopexit.unr-lcssa

.prol.loopexit.unr-lcssa:                         ; preds = %.preheader
  %424 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %indvars.iv477, i64 %411
  %425 = load i32, ptr %424, align 4, !tbaa !5
  %426 = sext i32 %425 to i64
  %427 = getelementptr inbounds [3 x i8], ptr @.str.2, i64 0, i64 %426
  %428 = load i8, ptr %427, align 1, !tbaa !9
  store i8 %428, ptr @buf, align 16, !tbaa !9
  br label %.prol.loopexit

.prol.loopexit:                                   ; preds = %.prol.loopexit.unr-lcssa, %.preheader
  %indvars.iv473.unr = phi i64 [ %411, %.preheader ], [ %indvars.iv.next474.prol, %.prol.loopexit.unr-lcssa ]
  br i1 %416, label %._crit_edge404, label %.preheader.new

._crit_edge407:                                   ; preds = %._crit_edge404, %.preheader.us, %.preheader296
  ret i32 0

._crit_edge404:                                   ; preds = %.preheader.new, %.prol.loopexit
  store i8 0, ptr %410, align 1, !tbaa !9
  %429 = tail call i32 @puts(ptr noundef nonnull dereferenceable(1) @buf)
  %indvars.iv.next478 = add nsw i64 %indvars.iv477, 1
  %lftr.wideiv480 = trunc i64 %indvars.iv.next478 to i32
  %exitcond481.not = icmp eq i32 %414, %lftr.wideiv480
  br i1 %exitcond481.not, label %._crit_edge407, label %.preheader, !llvm.loop !32

.preheader.new:                                   ; preds = %.prol.loopexit, %.preheader.new
  %indvars.iv473 = phi i64 [ %indvars.iv.next474.1, %.preheader.new ], [ %indvars.iv473.unr, %.prol.loopexit ]
  %430 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %indvars.iv477, i64 %indvars.iv473
  %431 = load i32, ptr %430, align 4, !tbaa !5
  %432 = sext i32 %431 to i64
  %433 = getelementptr inbounds [3 x i8], ptr @.str.2, i64 0, i64 %432
  %434 = load i8, ptr %433, align 1, !tbaa !9
  %435 = sub nsw i64 %indvars.iv473, %411
  %436 = getelementptr inbounds [301 x i8], ptr @buf, i64 0, i64 %435
  store i8 %434, ptr %436, align 1, !tbaa !9
  %indvars.iv.next474 = add nsw i64 %indvars.iv473, 1
  %437 = getelementptr inbounds [301 x [301 x i32]], ptr @f, i64 0, i64 %indvars.iv477, i64 %indvars.iv.next474
  %438 = load i32, ptr %437, align 4, !tbaa !5
  %439 = sext i32 %438 to i64
  %440 = getelementptr inbounds [3 x i8], ptr @.str.2, i64 0, i64 %439
  %441 = load i8, ptr %440, align 1, !tbaa !9
  %442 = sub nsw i64 %indvars.iv.next474, %411
  %443 = getelementptr inbounds [301 x i8], ptr @buf, i64 0, i64 %442
  store i8 %441, ptr %443, align 1, !tbaa !9
  %indvars.iv.next474.1 = add nsw i64 %indvars.iv473, 2
  %lftr.wideiv.1 = trunc i64 %indvars.iv.next474.1 to i32
  %exitcond476.not.1 = icmp eq i32 %412, %lftr.wideiv.1
  br i1 %exitcond476.not.1, label %._crit_edge404, label %.preheader.new, !llvm.loop !35
}

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

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

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

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #3

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.vector.reduce.add.v4i32(<4 x i32>) #2

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <4 x i32> @llvm.smin.v4i32(<4 x i32>, <4 x i32>) #2

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.vector.reduce.smax.v4i32(<4 x i32>) #2

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.vector.reduce.smin.v4i32(<4 x i32>) #2

attributes #0 = { mustprogress nofree norecurse nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { 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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #3 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }

!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 = !{!7, !7, i64 0}
!10 = distinct !{!10, !11, !12, !13}
!11 = !{!"llvm.loop.mustprogress"}
!12 = !{!"llvm.loop.isvectorized", i32 1}
!13 = !{!"llvm.loop.unroll.runtime.disable"}
!14 = distinct !{!14, !11}
!15 = distinct !{!15, !11, !13, !12}
!16 = distinct !{!16, !11}
!17 = distinct !{!17, !11}
!18 = distinct !{!18, !11}
!19 = distinct !{!19, !11}
!20 = distinct !{!20, !11}
!21 = distinct !{!21, !11}
!22 = distinct !{!22, !11}
!23 = distinct !{!23, !11}
!24 = distinct !{!24, !11, !12, !13}
!25 = distinct !{!25, !11}
!26 = distinct !{!26, !11, !13, !12}
!27 = distinct !{!27, !11}
!28 = distinct !{!28, !11}
!29 = distinct !{!29, !30}
!30 = !{!"llvm.loop.unroll.disable"}
!31 = distinct !{!31, !11, !12, !13}
!32 = distinct !{!32, !11}
!33 = distinct !{!33, !11}
!34 = distinct !{!34, !11, !13, !12}
!35 = distinct !{!35, !11}


; Effective O3 passes: BDCEPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopIdiomRecognizePass,LoopInstSimplifyPass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass