; LLVM IR from Izaron/ACM-ICPC :: Timus Online Judge/Volume 9/1878. Rubinchik's Cube (main)

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

%"class.std::basic_istream" = type { ptr, i64, %"class.std::basic_ios" }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::locale" = type { ptr }
%"class.std::basic_ostream" = type { ptr, %"class.std::basic_ios" }

@_ZSt3cin = external global %"class.std::basic_istream", align 8
@_ZSt4cout = external global %"class.std::basic_ostream", align 8

; Function Attrs: mustprogress norecurse uwtable
define dso_local noundef i32 @main() #0 {
  %1 = alloca i32, align 4
  %2 = alloca i32, align 4
  %3 = alloca [4 x [4 x i32]], align 16
  %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 [4 x [4 x i32]], align 16
  %12 = alloca i32, align 4
  %13 = alloca [4 x [4 x i32]], align 16
  %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 [4 x [4 x i32]], align 16
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca [4 x [4 x i32]], align 16
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca [4 x [4 x i32]], align 16
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca i8, align 1
  %53 = alloca i32, align 4
  store i32 0, ptr %1, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr %2) #4
  store i32 100500, ptr %2, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 64, ptr %3) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %4) #4
  store i32 0, ptr %4, align 4, !tbaa !5
  br label %54

54:                                               ; preds = %75, %0
  %55 = load i32, ptr %4, align 4, !tbaa !5
  %56 = icmp slt i32 %55, 4
  br i1 %56, label %58, label %57

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

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

59:                                               ; preds = %71, %58
  %60 = load i32, ptr %6, align 4, !tbaa !5
  %61 = icmp slt i32 %60, 4
  br i1 %61, label %63, label %62

62:                                               ; preds = %59
  store i32 5, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #4
  br label %74

63:                                               ; preds = %59
  %64 = load i32, ptr %4, align 4, !tbaa !5
  %65 = sext i32 %64 to i64
  %66 = getelementptr inbounds [4 x [4 x i32]], ptr %3, i64 0, i64 %65
  %67 = load i32, ptr %6, align 4, !tbaa !5
  %68 = sext i32 %67 to i64
  %69 = getelementptr inbounds [4 x i32], ptr %66, i64 0, i64 %68
  %70 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERi(ptr noundef nonnull align 8 dereferenceable(16) @_ZSt3cin, ptr noundef nonnull align 4 dereferenceable(4) %69)
  br label %71

71:                                               ; preds = %63
  %72 = load i32, ptr %6, align 4, !tbaa !5
  %73 = add nsw i32 %72, 1
  store i32 %73, ptr %6, align 4, !tbaa !5
  br label %59, !llvm.loop !9

74:                                               ; preds = %62
  br label %75

75:                                               ; preds = %74
  %76 = load i32, ptr %4, align 4, !tbaa !5
  %77 = add nsw i32 %76, 1
  store i32 %77, ptr %4, align 4, !tbaa !5
  br label %54, !llvm.loop !11

78:                                               ; preds = %57
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #4
  call void @llvm.lifetime.start.p0(i64 64, ptr %11) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #4
  store i32 0, ptr %12, align 4, !tbaa !5
  br label %79

79:                                               ; preds = %1036, %78
  %80 = load i32, ptr %12, align 4, !tbaa !5
  %81 = icmp slt i32 %80, 4
  br i1 %81, label %83, label %82

82:                                               ; preds = %79
  store i32 8, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #4
  br label %1039

83:                                               ; preds = %79
  call void @llvm.lifetime.start.p0(i64 64, ptr %13) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #4
  store i32 0, ptr %14, align 4, !tbaa !5
  br label %84

84:                                               ; preds = %111, %83
  %85 = load i32, ptr %14, align 4, !tbaa !5
  %86 = icmp slt i32 %85, 4
  br i1 %86, label %88, label %87

87:                                               ; preds = %84
  store i32 11, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #4
  br label %114

88:                                               ; preds = %84
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #4
  store i32 0, ptr %15, align 4, !tbaa !5
  br label %89

89:                                               ; preds = %107, %88
  %90 = load i32, ptr %15, align 4, !tbaa !5
  %91 = icmp slt i32 %90, 4
  br i1 %91, label %93, label %92

92:                                               ; preds = %89
  store i32 14, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #4
  br label %110

93:                                               ; preds = %89
  %94 = load i32, ptr %14, align 4, !tbaa !5
  %95 = sext i32 %94 to i64
  %96 = getelementptr inbounds [4 x [4 x i32]], ptr %3, i64 0, i64 %95
  %97 = load i32, ptr %15, align 4, !tbaa !5
  %98 = sext i32 %97 to i64
  %99 = getelementptr inbounds [4 x i32], ptr %96, i64 0, i64 %98
  %100 = load i32, ptr %99, align 4, !tbaa !5
  %101 = load i32, ptr %14, align 4, !tbaa !5
  %102 = sext i32 %101 to i64
  %103 = getelementptr inbounds [4 x [4 x i32]], ptr %13, i64 0, i64 %102
  %104 = load i32, ptr %15, align 4, !tbaa !5
  %105 = sext i32 %104 to i64
  %106 = getelementptr inbounds [4 x i32], ptr %103, i64 0, i64 %105
  store i32 %100, ptr %106, align 4, !tbaa !5
  br label %107

107:                                              ; preds = %93
  %108 = load i32, ptr %15, align 4, !tbaa !5
  %109 = add nsw i32 %108, 1
  store i32 %109, ptr %15, align 4, !tbaa !5
  br label %89, !llvm.loop !12

110:                                              ; preds = %92
  br label %111

111:                                              ; preds = %110
  %112 = load i32, ptr %14, align 4, !tbaa !5
  %113 = add nsw i32 %112, 1
  store i32 %113, ptr %14, align 4, !tbaa !5
  br label %84, !llvm.loop !13

114:                                              ; preds = %87
  %115 = load i32, ptr %12, align 4, !tbaa !5
  %116 = icmp eq i32 %115, 0
  br i1 %116, label %117, label %118

117:                                              ; preds = %114
  store i32 0, ptr %7, align 4, !tbaa !5
  br label %286

118:                                              ; preds = %114
  %119 = load i32, ptr %12, align 4, !tbaa !5
  %120 = icmp eq i32 %119, 1
  br i1 %120, label %121, label %173

121:                                              ; preds = %118
  store i32 1, ptr %7, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #4
  store i32 0, ptr %16, align 4, !tbaa !5
  br label %122

122:                                              ; preds = %149, %121
  %123 = load i32, ptr %16, align 4, !tbaa !5
  %124 = icmp slt i32 %123, 4
  br i1 %124, label %126, label %125

125:                                              ; preds = %122
  store i32 17, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #4
  br label %152

126:                                              ; preds = %122
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #4
  store i32 0, ptr %17, align 4, !tbaa !5
  br label %127

127:                                              ; preds = %145, %126
  %128 = load i32, ptr %17, align 4, !tbaa !5
  %129 = icmp slt i32 %128, 4
  br i1 %129, label %131, label %130

130:                                              ; preds = %127
  store i32 20, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #4
  br label %148

131:                                              ; preds = %127
  %132 = load i32, ptr %16, align 4, !tbaa !5
  %133 = sext i32 %132 to i64
  %134 = getelementptr inbounds [4 x [4 x i32]], ptr %13, i64 0, i64 %133
  %135 = load i32, ptr %17, align 4, !tbaa !5
  %136 = sext i32 %135 to i64
  %137 = getelementptr inbounds [4 x i32], ptr %134, i64 0, i64 %136
  %138 = load i32, ptr %137, align 4, !tbaa !5
  %139 = load i32, ptr %16, align 4, !tbaa !5
  %140 = sext i32 %139 to i64
  %141 = getelementptr inbounds [4 x [4 x i32]], ptr %11, i64 0, i64 %140
  %142 = load i32, ptr %17, align 4, !tbaa !5
  %143 = sext i32 %142 to i64
  %144 = getelementptr inbounds [4 x i32], ptr %141, i64 0, i64 %143
  store i32 %138, ptr %144, align 4, !tbaa !5
  br label %145

145:                                              ; preds = %131
  %146 = load i32, ptr %17, align 4, !tbaa !5
  %147 = add nsw i32 %146, 1
  store i32 %147, ptr %17, align 4, !tbaa !5
  br label %127, !llvm.loop !14

148:                                              ; preds = %130
  br label %149

149:                                              ; preds = %148
  %150 = load i32, ptr %16, align 4, !tbaa !5
  %151 = add nsw i32 %150, 1
  store i32 %151, ptr %16, align 4, !tbaa !5
  br label %122, !llvm.loop !15

152:                                              ; preds = %125
  %153 = getelementptr inbounds [4 x [4 x i32]], ptr %11, i64 0, i64 3
  %154 = getelementptr inbounds [4 x i32], ptr %153, i64 0, i64 1
  %155 = load i32, ptr %154, align 4, !tbaa !5
  %156 = getelementptr inbounds [4 x [4 x i32]], ptr %13, i64 0, i64 1
  %157 = getelementptr inbounds [4 x i32], ptr %156, i64 0, i64 0
  store i32 %155, ptr %157, align 16, !tbaa !5
  %158 = getelementptr inbounds [4 x [4 x i32]], ptr %11, i64 0, i64 2
  %159 = getelementptr inbounds [4 x i32], ptr %158, i64 0, i64 3
  %160 = load i32, ptr %159, align 4, !tbaa !5
  %161 = getelementptr inbounds [4 x [4 x i32]], ptr %13, i64 0, i64 3
  %162 = getelementptr inbounds [4 x i32], ptr %161, i64 0, i64 1
  store i32 %160, ptr %162, align 4, !tbaa !5
  %163 = getelementptr inbounds [4 x [4 x i32]], ptr %11, i64 0, i64 0
  %164 = getelementptr inbounds [4 x i32], ptr %163, i64 0, i64 2
  %165 = load i32, ptr %164, align 8, !tbaa !5
  %166 = getelementptr inbounds [4 x [4 x i32]], ptr %13, i64 0, i64 2
  %167 = getelementptr inbounds [4 x i32], ptr %166, i64 0, i64 3
  store i32 %165, ptr %167, align 4, !tbaa !5
  %168 = getelementptr inbounds [4 x [4 x i32]], ptr %11, i64 0, i64 1
  %169 = getelementptr inbounds [4 x i32], ptr %168, i64 0, i64 0
  %170 = load i32, ptr %169, align 16, !tbaa !5
  %171 = getelementptr inbounds [4 x [4 x i32]], ptr %13, i64 0, i64 0
  %172 = getelementptr inbounds [4 x i32], ptr %171, i64 0, i64 2
  store i32 %170, ptr %172, align 8, !tbaa !5
  br label %285

173:                                              ; preds = %118
  %174 = load i32, ptr %12, align 4, !tbaa !5
  %175 = icmp eq i32 %174, 2
  br i1 %175, label %176, label %228

176:                                              ; preds = %173
  store i32 2, ptr %7, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #4
  store i32 0, ptr %18, align 4, !tbaa !5
  br label %177

177:                                              ; preds = %204, %176
  %178 = load i32, ptr %18, align 4, !tbaa !5
  %179 = icmp slt i32 %178, 4
  br i1 %179, label %181, label %180

180:                                              ; preds = %177
  store i32 23, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #4
  br label %207

181:                                              ; preds = %177
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #4
  store i32 0, ptr %19, align 4, !tbaa !5
  br label %182

182:                                              ; preds = %200, %181
  %183 = load i32, ptr %19, align 4, !tbaa !5
  %184 = icmp slt i32 %183, 4
  br i1 %184, label %186, label %185

185:                                              ; preds = %182
  store i32 26, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #4
  br label %203

186:                                              ; preds = %182
  %187 = load i32, ptr %18, align 4, !tbaa !5
  %188 = sext i32 %187 to i64
  %189 = getelementptr inbounds [4 x [4 x i32]], ptr %13, i64 0, i64 %188
  %190 = load i32, ptr %19, align 4, !tbaa !5
  %191 = sext i32 %190 to i64
  %192 = getelementptr inbounds [4 x i32], ptr %189, i64 0, i64 %191
  %193 = load i32, ptr %192, align 4, !tbaa !5
  %194 = load i32, ptr %18, align 4, !tbaa !5
  %195 = sext i32 %194 to i64
  %196 = getelementptr inbounds [4 x [4 x i32]], ptr %11, i64 0, i64 %195
  %197 = load i32, ptr %19, align 4, !tbaa !5
  %198 = sext i32 %197 to i64
  %199 = getelementptr inbounds [4 x i32], ptr %196, i64 0, i64 %198
  store i32 %193, ptr %199, align 4, !tbaa !5
  br label %200

200:                                              ; preds = %186
  %201 = load i32, ptr %19, align 4, !tbaa !5
  %202 = add nsw i32 %201, 1
  store i32 %202, ptr %19, align 4, !tbaa !5
  br label %182, !llvm.loop !16

203:                                              ; preds = %185
  br label %204

204:                                              ; preds = %203
  %205 = load i32, ptr %18, align 4, !tbaa !5
  %206 = add nsw i32 %205, 1
  store i32 %206, ptr %18, align 4, !tbaa !5
  br label %177, !llvm.loop !17

207:                                              ; preds = %180
  %208 = getelementptr inbounds [4 x [4 x i32]], ptr %11, i64 0, i64 2
  %209 = getelementptr inbounds [4 x i32], ptr %208, i64 0, i64 3
  %210 = load i32, ptr %209, align 4, !tbaa !5
  %211 = getelementptr inbounds [4 x [4 x i32]], ptr %13, i64 0, i64 1
  %212 = getelementptr inbounds [4 x i32], ptr %211, i64 0, i64 0
  store i32 %210, ptr %212, align 16, !tbaa !5
  %213 = getelementptr inbounds [4 x [4 x i32]], ptr %11, i64 0, i64 0
  %214 = getelementptr inbounds [4 x i32], ptr %213, i64 0, i64 2
  %215 = load i32, ptr %214, align 8, !tbaa !5
  %216 = getelementptr inbounds [4 x [4 x i32]], ptr %13, i64 0, i64 3
  %217 = getelementptr inbounds [4 x i32], ptr %216, i64 0, i64 1
  store i32 %215, ptr %217, align 4, !tbaa !5
  %218 = getelementptr inbounds [4 x [4 x i32]], ptr %11, i64 0, i64 1
  %219 = getelementptr inbounds [4 x i32], ptr %218, i64 0, i64 0
  %220 = load i32, ptr %219, align 16, !tbaa !5
  %221 = getelementptr inbounds [4 x [4 x i32]], ptr %13, i64 0, i64 2
  %222 = getelementptr inbounds [4 x i32], ptr %221, i64 0, i64 3
  store i32 %220, ptr %222, align 4, !tbaa !5
  %223 = getelementptr inbounds [4 x [4 x i32]], ptr %11, i64 0, i64 3
  %224 = getelementptr inbounds [4 x i32], ptr %223, i64 0, i64 1
  %225 = load i32, ptr %224, align 4, !tbaa !5
  %226 = getelementptr inbounds [4 x [4 x i32]], ptr %13, i64 0, i64 0
  %227 = getelementptr inbounds [4 x i32], ptr %226, i64 0, i64 2
  store i32 %225, ptr %227, align 8, !tbaa !5
  br label %284

228:                                              ; preds = %173
  %229 = load i32, ptr %12, align 4, !tbaa !5
  %230 = icmp eq i32 %229, 3
  br i1 %230, label %231, label %283

231:                                              ; preds = %228
  store i32 1, ptr %7, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #4
  store i32 0, ptr %20, align 4, !tbaa !5
  br label %232

232:                                              ; preds = %259, %231
  %233 = load i32, ptr %20, align 4, !tbaa !5
  %234 = icmp slt i32 %233, 4
  br i1 %234, label %236, label %235

235:                                              ; preds = %232
  store i32 29, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #4
  br label %262

236:                                              ; preds = %232
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #4
  store i32 0, ptr %21, align 4, !tbaa !5
  br label %237

237:                                              ; preds = %255, %236
  %238 = load i32, ptr %21, align 4, !tbaa !5
  %239 = icmp slt i32 %238, 4
  br i1 %239, label %241, label %240

240:                                              ; preds = %237
  store i32 32, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #4
  br label %258

241:                                              ; preds = %237
  %242 = load i32, ptr %20, align 4, !tbaa !5
  %243 = sext i32 %242 to i64
  %244 = getelementptr inbounds [4 x [4 x i32]], ptr %13, i64 0, i64 %243
  %245 = load i32, ptr %21, align 4, !tbaa !5
  %246 = sext i32 %245 to i64
  %247 = getelementptr inbounds [4 x i32], ptr %244, i64 0, i64 %246
  %248 = load i32, ptr %247, align 4, !tbaa !5
  %249 = load i32, ptr %20, align 4, !tbaa !5
  %250 = sext i32 %249 to i64
  %251 = getelementptr inbounds [4 x [4 x i32]], ptr %11, i64 0, i64 %250
  %252 = load i32, ptr %21, align 4, !tbaa !5
  %253 = sext i32 %252 to i64
  %254 = getelementptr inbounds [4 x i32], ptr %251, i64 0, i64 %253
  store i32 %248, ptr %254, align 4, !tbaa !5
  br label %255

255:                                              ; preds = %241
  %256 = load i32, ptr %21, align 4, !tbaa !5
  %257 = add nsw i32 %256, 1
  store i32 %257, ptr %21, align 4, !tbaa !5
  br label %237, !llvm.loop !18

258:                                              ; preds = %240
  br label %259

259:                                              ; preds = %258
  %260 = load i32, ptr %20, align 4, !tbaa !5
  %261 = add nsw i32 %260, 1
  store i32 %261, ptr %20, align 4, !tbaa !5
  br label %232, !llvm.loop !19

262:                                              ; preds = %235
  %263 = getelementptr inbounds [4 x [4 x i32]], ptr %11, i64 0, i64 0
  %264 = getelementptr inbounds [4 x i32], ptr %263, i64 0, i64 2
  %265 = load i32, ptr %264, align 8, !tbaa !5
  %266 = getelementptr inbounds [4 x [4 x i32]], ptr %13, i64 0, i64 1
  %267 = getelementptr inbounds [4 x i32], ptr %266, i64 0, i64 0
  store i32 %265, ptr %267, align 16, !tbaa !5
  %268 = getelementptr inbounds [4 x [4 x i32]], ptr %11, i64 0, i64 1
  %269 = getelementptr inbounds [4 x i32], ptr %268, i64 0, i64 0
  %270 = load i32, ptr %269, align 16, !tbaa !5
  %271 = getelementptr inbounds [4 x [4 x i32]], ptr %13, i64 0, i64 3
  %272 = getelementptr inbounds [4 x i32], ptr %271, i64 0, i64 1
  store i32 %270, ptr %272, align 4, !tbaa !5
  %273 = getelementptr inbounds [4 x [4 x i32]], ptr %11, i64 0, i64 3
  %274 = getelementptr inbounds [4 x i32], ptr %273, i64 0, i64 1
  %275 = load i32, ptr %274, align 4, !tbaa !5
  %276 = getelementptr inbounds [4 x [4 x i32]], ptr %13, i64 0, i64 2
  %277 = getelementptr inbounds [4 x i32], ptr %276, i64 0, i64 3
  store i32 %275, ptr %277, align 4, !tbaa !5
  %278 = getelementptr inbounds [4 x [4 x i32]], ptr %11, i64 0, i64 2
  %279 = getelementptr inbounds [4 x i32], ptr %278, i64 0, i64 3
  %280 = load i32, ptr %279, align 4, !tbaa !5
  %281 = getelementptr inbounds [4 x [4 x i32]], ptr %13, i64 0, i64 0
  %282 = getelementptr inbounds [4 x i32], ptr %281, i64 0, i64 2
  store i32 %280, ptr %282, align 8, !tbaa !5
  br label %283

283:                                              ; preds = %262, %228
  br label %284

284:                                              ; preds = %283, %207
  br label %285

285:                                              ; preds = %284, %152
  br label %286

286:                                              ; preds = %285, %117
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #4
  store i32 0, ptr %22, align 4, !tbaa !5
  br label %287

287:                                              ; preds = %1032, %286
  %288 = load i32, ptr %22, align 4, !tbaa !5
  %289 = icmp slt i32 %288, 4
  br i1 %289, label %291, label %290

290:                                              ; preds = %287
  store i32 35, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #4
  br label %1035

291:                                              ; preds = %287
  call void @llvm.lifetime.start.p0(i64 64, ptr %23) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #4
  store i32 0, ptr %24, align 4, !tbaa !5
  br label %292

292:                                              ; preds = %319, %291
  %293 = load i32, ptr %24, align 4, !tbaa !5
  %294 = icmp slt i32 %293, 4
  br i1 %294, label %296, label %295

295:                                              ; preds = %292
  store i32 38, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #4
  br label %322

296:                                              ; preds = %292
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #4
  store i32 0, ptr %25, align 4, !tbaa !5
  br label %297

297:                                              ; preds = %315, %296
  %298 = load i32, ptr %25, align 4, !tbaa !5
  %299 = icmp slt i32 %298, 4
  br i1 %299, label %301, label %300

300:                                              ; preds = %297
  store i32 41, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #4
  br label %318

301:                                              ; preds = %297
  %302 = load i32, ptr %24, align 4, !tbaa !5
  %303 = sext i32 %302 to i64
  %304 = getelementptr inbounds [4 x [4 x i32]], ptr %13, i64 0, i64 %303
  %305 = load i32, ptr %25, align 4, !tbaa !5
  %306 = sext i32 %305 to i64
  %307 = getelementptr inbounds [4 x i32], ptr %304, i64 0, i64 %306
  %308 = load i32, ptr %307, align 4, !tbaa !5
  %309 = load i32, ptr %24, align 4, !tbaa !5
  %310 = sext i32 %309 to i64
  %311 = getelementptr inbounds [4 x [4 x i32]], ptr %23, i64 0, i64 %310
  %312 = load i32, ptr %25, align 4, !tbaa !5
  %313 = sext i32 %312 to i64
  %314 = getelementptr inbounds [4 x i32], ptr %311, i64 0, i64 %313
  store i32 %308, ptr %314, align 4, !tbaa !5
  br label %315

315:                                              ; preds = %301
  %316 = load i32, ptr %25, align 4, !tbaa !5
  %317 = add nsw i32 %316, 1
  store i32 %317, ptr %25, align 4, !tbaa !5
  br label %297, !llvm.loop !20

318:                                              ; preds = %300
  br label %319

319:                                              ; preds = %318
  %320 = load i32, ptr %24, align 4, !tbaa !5
  %321 = add nsw i32 %320, 1
  store i32 %321, ptr %24, align 4, !tbaa !5
  br label %292, !llvm.loop !21

322:                                              ; preds = %295
  %323 = load i32, ptr %22, align 4, !tbaa !5
  %324 = icmp eq i32 %323, 0
  br i1 %324, label %325, label %326

325:                                              ; preds = %322
  store i32 0, ptr %8, align 4, !tbaa !5
  br label %494

326:                                              ; preds = %322
  %327 = load i32, ptr %22, align 4, !tbaa !5
  %328 = icmp eq i32 %327, 1
  br i1 %328, label %329, label %381

329:                                              ; preds = %326
  store i32 1, ptr %8, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #4
  store i32 0, ptr %26, align 4, !tbaa !5
  br label %330

330:                                              ; preds = %357, %329
  %331 = load i32, ptr %26, align 4, !tbaa !5
  %332 = icmp slt i32 %331, 4
  br i1 %332, label %334, label %333

333:                                              ; preds = %330
  store i32 44, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #4
  br label %360

334:                                              ; preds = %330
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #4
  store i32 0, ptr %27, align 4, !tbaa !5
  br label %335

335:                                              ; preds = %353, %334
  %336 = load i32, ptr %27, align 4, !tbaa !5
  %337 = icmp slt i32 %336, 4
  br i1 %337, label %339, label %338

338:                                              ; preds = %335
  store i32 47, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #4
  br label %356

339:                                              ; preds = %335
  %340 = load i32, ptr %26, align 4, !tbaa !5
  %341 = sext i32 %340 to i64
  %342 = getelementptr inbounds [4 x [4 x i32]], ptr %23, i64 0, i64 %341
  %343 = load i32, ptr %27, align 4, !tbaa !5
  %344 = sext i32 %343 to i64
  %345 = getelementptr inbounds [4 x i32], ptr %342, i64 0, i64 %344
  %346 = load i32, ptr %345, align 4, !tbaa !5
  %347 = load i32, ptr %26, align 4, !tbaa !5
  %348 = sext i32 %347 to i64
  %349 = getelementptr inbounds [4 x [4 x i32]], ptr %11, i64 0, i64 %348
  %350 = load i32, ptr %27, align 4, !tbaa !5
  %351 = sext i32 %350 to i64
  %352 = getelementptr inbounds [4 x i32], ptr %349, i64 0, i64 %351
  store i32 %346, ptr %352, align 4, !tbaa !5
  br label %353

353:                                              ; preds = %339
  %354 = load i32, ptr %27, align 4, !tbaa !5
  %355 = add nsw i32 %354, 1
  store i32 %355, ptr %27, align 4, !tbaa !5
  br label %335, !llvm.loop !22

356:                                              ; preds = %338
  br label %357

357:                                              ; preds = %356
  %358 = load i32, ptr %26, align 4, !tbaa !5
  %359 = add nsw i32 %358, 1
  store i32 %359, ptr %26, align 4, !tbaa !5
  br label %330, !llvm.loop !23

360:                                              ; preds = %333
  %361 = getelementptr inbounds [4 x [4 x i32]], ptr %11, i64 0, i64 0
  %362 = getelementptr inbounds [4 x i32], ptr %361, i64 0, i64 1
  %363 = load i32, ptr %362, align 4, !tbaa !5
  %364 = getelementptr inbounds [4 x [4 x i32]], ptr %23, i64 0, i64 2
  %365 = getelementptr inbounds [4 x i32], ptr %364, i64 0, i64 0
  store i32 %363, ptr %365, align 16, !tbaa !5
  %366 = getelementptr inbounds [4 x [4 x i32]], ptr %11, i64 0, i64 1
  %367 = getelementptr inbounds [4 x i32], ptr %366, i64 0, i64 3
  %368 = load i32, ptr %367, align 4, !tbaa !5
  %369 = getelementptr inbounds [4 x [4 x i32]], ptr %23, i64 0, i64 0
  %370 = getelementptr inbounds [4 x i32], ptr %369, i64 0, i64 1
  store i32 %368, ptr %370, align 4, !tbaa !5
  %371 = getelementptr inbounds [4 x [4 x i32]], ptr %11, i64 0, i64 3
  %372 = getelementptr inbounds [4 x i32], ptr %371, i64 0, i64 2
  %373 = load i32, ptr %372, align 8, !tbaa !5
  %374 = getelementptr inbounds [4 x [4 x i32]], ptr %23, i64 0, i64 1
  %375 = getelementptr inbounds [4 x i32], ptr %374, i64 0, i64 3
  store i32 %373, ptr %375, align 4, !tbaa !5
  %376 = getelementptr inbounds [4 x [4 x i32]], ptr %11, i64 0, i64 2
  %377 = getelementptr inbounds [4 x i32], ptr %376, i64 0, i64 0
  %378 = load i32, ptr %377, align 16, !tbaa !5
  %379 = getelementptr inbounds [4 x [4 x i32]], ptr %23, i64 0, i64 3
  %380 = getelementptr inbounds [4 x i32], ptr %379, i64 0, i64 2
  store i32 %378, ptr %380, align 8, !tbaa !5
  br label %493

381:                                              ; preds = %326
  %382 = load i32, ptr %22, align 4, !tbaa !5
  %383 = icmp eq i32 %382, 2
  br i1 %383, label %384, label %436

384:                                              ; preds = %381
  store i32 2, ptr %8, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #4
  store i32 0, ptr %28, align 4, !tbaa !5
  br label %385

385:                                              ; preds = %412, %384
  %386 = load i32, ptr %28, align 4, !tbaa !5
  %387 = icmp slt i32 %386, 4
  br i1 %387, label %389, label %388

388:                                              ; preds = %385
  store i32 50, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #4
  br label %415

389:                                              ; preds = %385
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #4
  store i32 0, ptr %29, align 4, !tbaa !5
  br label %390

390:                                              ; preds = %408, %389
  %391 = load i32, ptr %29, align 4, !tbaa !5
  %392 = icmp slt i32 %391, 4
  br i1 %392, label %394, label %393

393:                                              ; preds = %390
  store i32 53, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #4
  br label %411

394:                                              ; preds = %390
  %395 = load i32, ptr %28, align 4, !tbaa !5
  %396 = sext i32 %395 to i64
  %397 = getelementptr inbounds [4 x [4 x i32]], ptr %23, i64 0, i64 %396
  %398 = load i32, ptr %29, align 4, !tbaa !5
  %399 = sext i32 %398 to i64
  %400 = getelementptr inbounds [4 x i32], ptr %397, i64 0, i64 %399
  %401 = load i32, ptr %400, align 4, !tbaa !5
  %402 = load i32, ptr %28, align 4, !tbaa !5
  %403 = sext i32 %402 to i64
  %404 = getelementptr inbounds [4 x [4 x i32]], ptr %11, i64 0, i64 %403
  %405 = load i32, ptr %29, align 4, !tbaa !5
  %406 = sext i32 %405 to i64
  %407 = getelementptr inbounds [4 x i32], ptr %404, i64 0, i64 %406
  store i32 %401, ptr %407, align 4, !tbaa !5
  br label %408

408:                                              ; preds = %394
  %409 = load i32, ptr %29, align 4, !tbaa !5
  %410 = add nsw i32 %409, 1
  store i32 %410, ptr %29, align 4, !tbaa !5
  br label %390, !llvm.loop !24

411:                                              ; preds = %393
  br label %412

412:                                              ; preds = %411
  %413 = load i32, ptr %28, align 4, !tbaa !5
  %414 = add nsw i32 %413, 1
  store i32 %414, ptr %28, align 4, !tbaa !5
  br label %385, !llvm.loop !25

415:                                              ; preds = %388
  %416 = getelementptr inbounds [4 x [4 x i32]], ptr %11, i64 0, i64 1
  %417 = getelementptr inbounds [4 x i32], ptr %416, i64 0, i64 3
  %418 = load i32, ptr %417, align 4, !tbaa !5
  %419 = getelementptr inbounds [4 x [4 x i32]], ptr %23, i64 0, i64 2
  %420 = getelementptr inbounds [4 x i32], ptr %419, i64 0, i64 0
  store i32 %418, ptr %420, align 16, !tbaa !5
  %421 = getelementptr inbounds [4 x [4 x i32]], ptr %11, i64 0, i64 3
  %422 = getelementptr inbounds [4 x i32], ptr %421, i64 0, i64 2
  %423 = load i32, ptr %422, align 8, !tbaa !5
  %424 = getelementptr inbounds [4 x [4 x i32]], ptr %23, i64 0, i64 0
  %425 = getelementptr inbounds [4 x i32], ptr %424, i64 0, i64 1
  store i32 %423, ptr %425, align 4, !tbaa !5
  %426 = getelementptr inbounds [4 x [4 x i32]], ptr %11, i64 0, i64 2
  %427 = getelementptr inbounds [4 x i32], ptr %426, i64 0, i64 0
  %428 = load i32, ptr %427, align 16, !tbaa !5
  %429 = getelementptr inbounds [4 x [4 x i32]], ptr %23, i64 0, i64 1
  %430 = getelementptr inbounds [4 x i32], ptr %429, i64 0, i64 3
  store i32 %428, ptr %430, align 4, !tbaa !5
  %431 = getelementptr inbounds [4 x [4 x i32]], ptr %11, i64 0, i64 0
  %432 = getelementptr inbounds [4 x i32], ptr %431, i64 0, i64 1
  %433 = load i32, ptr %432, align 4, !tbaa !5
  %434 = getelementptr inbounds [4 x [4 x i32]], ptr %23, i64 0, i64 3
  %435 = getelementptr inbounds [4 x i32], ptr %434, i64 0, i64 2
  store i32 %433, ptr %435, align 8, !tbaa !5
  br label %492

436:                                              ; preds = %381
  %437 = load i32, ptr %22, align 4, !tbaa !5
  %438 = icmp eq i32 %437, 3
  br i1 %438, label %439, label %491

439:                                              ; preds = %436
  store i32 1, ptr %8, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #4
  store i32 0, ptr %30, align 4, !tbaa !5
  br label %440

440:                                              ; preds = %467, %439
  %441 = load i32, ptr %30, align 4, !tbaa !5
  %442 = icmp slt i32 %441, 4
  br i1 %442, label %444, label %443

443:                                              ; preds = %440
  store i32 56, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #4
  br label %470

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

445:                                              ; preds = %463, %444
  %446 = load i32, ptr %31, align 4, !tbaa !5
  %447 = icmp slt i32 %446, 4
  br i1 %447, label %449, label %448

448:                                              ; preds = %445
  store i32 59, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #4
  br label %466

449:                                              ; preds = %445
  %450 = load i32, ptr %30, align 4, !tbaa !5
  %451 = sext i32 %450 to i64
  %452 = getelementptr inbounds [4 x [4 x i32]], ptr %23, i64 0, i64 %451
  %453 = load i32, ptr %31, align 4, !tbaa !5
  %454 = sext i32 %453 to i64
  %455 = getelementptr inbounds [4 x i32], ptr %452, i64 0, i64 %454
  %456 = load i32, ptr %455, align 4, !tbaa !5
  %457 = load i32, ptr %30, align 4, !tbaa !5
  %458 = sext i32 %457 to i64
  %459 = getelementptr inbounds [4 x [4 x i32]], ptr %11, i64 0, i64 %458
  %460 = load i32, ptr %31, align 4, !tbaa !5
  %461 = sext i32 %460 to i64
  %462 = getelementptr inbounds [4 x i32], ptr %459, i64 0, i64 %461
  store i32 %456, ptr %462, align 4, !tbaa !5
  br label %463

463:                                              ; preds = %449
  %464 = load i32, ptr %31, align 4, !tbaa !5
  %465 = add nsw i32 %464, 1
  store i32 %465, ptr %31, align 4, !tbaa !5
  br label %445, !llvm.loop !26

466:                                              ; preds = %448
  br label %467

467:                                              ; preds = %466
  %468 = load i32, ptr %30, align 4, !tbaa !5
  %469 = add nsw i32 %468, 1
  store i32 %469, ptr %30, align 4, !tbaa !5
  br label %440, !llvm.loop !27

470:                                              ; preds = %443
  %471 = getelementptr inbounds [4 x [4 x i32]], ptr %11, i64 0, i64 3
  %472 = getelementptr inbounds [4 x i32], ptr %471, i64 0, i64 2
  %473 = load i32, ptr %472, align 8, !tbaa !5
  %474 = getelementptr inbounds [4 x [4 x i32]], ptr %23, i64 0, i64 2
  %475 = getelementptr inbounds [4 x i32], ptr %474, i64 0, i64 0
  store i32 %473, ptr %475, align 16, !tbaa !5
  %476 = getelementptr inbounds [4 x [4 x i32]], ptr %11, i64 0, i64 2
  %477 = getelementptr inbounds [4 x i32], ptr %476, i64 0, i64 0
  %478 = load i32, ptr %477, align 16, !tbaa !5
  %479 = getelementptr inbounds [4 x [4 x i32]], ptr %23, i64 0, i64 0
  %480 = getelementptr inbounds [4 x i32], ptr %479, i64 0, i64 1
  store i32 %478, ptr %480, align 4, !tbaa !5
  %481 = getelementptr inbounds [4 x [4 x i32]], ptr %11, i64 0, i64 0
  %482 = getelementptr inbounds [4 x i32], ptr %481, i64 0, i64 1
  %483 = load i32, ptr %482, align 4, !tbaa !5
  %484 = getelementptr inbounds [4 x [4 x i32]], ptr %23, i64 0, i64 1
  %485 = getelementptr inbounds [4 x i32], ptr %484, i64 0, i64 3
  store i32 %483, ptr %485, align 4, !tbaa !5
  %486 = getelementptr inbounds [4 x [4 x i32]], ptr %11, i64 0, i64 1
  %487 = getelementptr inbounds [4 x i32], ptr %486, i64 0, i64 3
  %488 = load i32, ptr %487, align 4, !tbaa !5
  %489 = getelementptr inbounds [4 x [4 x i32]], ptr %23, i64 0, i64 3
  %490 = getelementptr inbounds [4 x i32], ptr %489, i64 0, i64 2
  store i32 %488, ptr %490, align 8, !tbaa !5
  br label %491

491:                                              ; preds = %470, %436
  br label %492

492:                                              ; preds = %491, %415
  br label %493

493:                                              ; preds = %492, %360
  br label %494

494:                                              ; preds = %493, %325
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #4
  store i32 0, ptr %32, align 4, !tbaa !5
  br label %495

495:                                              ; preds = %1028, %494
  %496 = load i32, ptr %32, align 4, !tbaa !5
  %497 = icmp slt i32 %496, 4
  br i1 %497, label %499, label %498

498:                                              ; preds = %495
  store i32 62, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #4
  br label %1031

499:                                              ; preds = %495
  call void @llvm.lifetime.start.p0(i64 64, ptr %33) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #4
  store i32 0, ptr %34, align 4, !tbaa !5
  br label %500

500:                                              ; preds = %527, %499
  %501 = load i32, ptr %34, align 4, !tbaa !5
  %502 = icmp slt i32 %501, 4
  br i1 %502, label %504, label %503

503:                                              ; preds = %500
  store i32 65, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #4
  br label %530

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

505:                                              ; preds = %523, %504
  %506 = load i32, ptr %35, align 4, !tbaa !5
  %507 = icmp slt i32 %506, 4
  br i1 %507, label %509, label %508

508:                                              ; preds = %505
  store i32 68, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #4
  br label %526

509:                                              ; preds = %505
  %510 = load i32, ptr %34, align 4, !tbaa !5
  %511 = sext i32 %510 to i64
  %512 = getelementptr inbounds [4 x [4 x i32]], ptr %23, i64 0, i64 %511
  %513 = load i32, ptr %35, align 4, !tbaa !5
  %514 = sext i32 %513 to i64
  %515 = getelementptr inbounds [4 x i32], ptr %512, i64 0, i64 %514
  %516 = load i32, ptr %515, align 4, !tbaa !5
  %517 = load i32, ptr %34, align 4, !tbaa !5
  %518 = sext i32 %517 to i64
  %519 = getelementptr inbounds [4 x [4 x i32]], ptr %33, i64 0, i64 %518
  %520 = load i32, ptr %35, align 4, !tbaa !5
  %521 = sext i32 %520 to i64
  %522 = getelementptr inbounds [4 x i32], ptr %519, i64 0, i64 %521
  store i32 %516, ptr %522, align 4, !tbaa !5
  br label %523

523:                                              ; preds = %509
  %524 = load i32, ptr %35, align 4, !tbaa !5
  %525 = add nsw i32 %524, 1
  store i32 %525, ptr %35, align 4, !tbaa !5
  br label %505, !llvm.loop !28

526:                                              ; preds = %508
  br label %527

527:                                              ; preds = %526
  %528 = load i32, ptr %34, align 4, !tbaa !5
  %529 = add nsw i32 %528, 1
  store i32 %529, ptr %34, align 4, !tbaa !5
  br label %500, !llvm.loop !29

530:                                              ; preds = %503
  %531 = load i32, ptr %32, align 4, !tbaa !5
  %532 = icmp eq i32 %531, 0
  br i1 %532, label %533, label %534

533:                                              ; preds = %530
  store i32 0, ptr %9, align 4, !tbaa !5
  br label %702

534:                                              ; preds = %530
  %535 = load i32, ptr %32, align 4, !tbaa !5
  %536 = icmp eq i32 %535, 1
  br i1 %536, label %537, label %589

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

538:                                              ; preds = %565, %537
  %539 = load i32, ptr %36, align 4, !tbaa !5
  %540 = icmp slt i32 %539, 4
  br i1 %540, label %542, label %541

541:                                              ; preds = %538
  store i32 71, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #4
  br label %568

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

543:                                              ; preds = %561, %542
  %544 = load i32, ptr %37, align 4, !tbaa !5
  %545 = icmp slt i32 %544, 4
  br i1 %545, label %547, label %546

546:                                              ; preds = %543
  store i32 74, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #4
  br label %564

547:                                              ; preds = %543
  %548 = load i32, ptr %36, align 4, !tbaa !5
  %549 = sext i32 %548 to i64
  %550 = getelementptr inbounds [4 x [4 x i32]], ptr %33, i64 0, i64 %549
  %551 = load i32, ptr %37, align 4, !tbaa !5
  %552 = sext i32 %551 to i64
  %553 = getelementptr inbounds [4 x i32], ptr %550, i64 0, i64 %552
  %554 = load i32, ptr %553, align 4, !tbaa !5
  %555 = load i32, ptr %36, align 4, !tbaa !5
  %556 = sext i32 %555 to i64
  %557 = getelementptr inbounds [4 x [4 x i32]], ptr %11, i64 0, i64 %556
  %558 = load i32, ptr %37, align 4, !tbaa !5
  %559 = sext i32 %558 to i64
  %560 = getelementptr inbounds [4 x i32], ptr %557, i64 0, i64 %559
  store i32 %554, ptr %560, align 4, !tbaa !5
  br label %561

561:                                              ; preds = %547
  %562 = load i32, ptr %37, align 4, !tbaa !5
  %563 = add nsw i32 %562, 1
  store i32 %563, ptr %37, align 4, !tbaa !5
  br label %543, !llvm.loop !30

564:                                              ; preds = %546
  br label %565

565:                                              ; preds = %564
  %566 = load i32, ptr %36, align 4, !tbaa !5
  %567 = add nsw i32 %566, 1
  store i32 %567, ptr %36, align 4, !tbaa !5
  br label %538, !llvm.loop !31

568:                                              ; preds = %541
  %569 = getelementptr inbounds [4 x [4 x i32]], ptr %11, i64 0, i64 1
  %570 = getelementptr inbounds [4 x i32], ptr %569, i64 0, i64 2
  %571 = load i32, ptr %570, align 8, !tbaa !5
  %572 = getelementptr inbounds [4 x [4 x i32]], ptr %33, i64 0, i64 1
  %573 = getelementptr inbounds [4 x i32], ptr %572, i64 0, i64 1
  store i32 %571, ptr %573, align 4, !tbaa !5
  %574 = getelementptr inbounds [4 x [4 x i32]], ptr %11, i64 0, i64 2
  %575 = getelementptr inbounds [4 x i32], ptr %574, i64 0, i64 2
  %576 = load i32, ptr %575, align 8, !tbaa !5
  %577 = getelementptr inbounds [4 x [4 x i32]], ptr %33, i64 0, i64 1
  %578 = getelementptr inbounds [4 x i32], ptr %577, i64 0, i64 2
  store i32 %576, ptr %578, align 8, !tbaa !5
  %579 = getelementptr inbounds [4 x [4 x i32]], ptr %11, i64 0, i64 1
  %580 = getelementptr inbounds [4 x i32], ptr %579, i64 0, i64 1
  %581 = load i32, ptr %580, align 4, !tbaa !5
  %582 = getelementptr inbounds [4 x [4 x i32]], ptr %33, i64 0, i64 2
  %583 = getelementptr inbounds [4 x i32], ptr %582, i64 0, i64 1
  store i32 %581, ptr %583, align 4, !tbaa !5
  %584 = getelementptr inbounds [4 x [4 x i32]], ptr %11, i64 0, i64 2
  %585 = getelementptr inbounds [4 x i32], ptr %584, i64 0, i64 1
  %586 = load i32, ptr %585, align 4, !tbaa !5
  %587 = getelementptr inbounds [4 x [4 x i32]], ptr %33, i64 0, i64 2
  %588 = getelementptr inbounds [4 x i32], ptr %587, i64 0, i64 2
  store i32 %586, ptr %588, align 8, !tbaa !5
  br label %701

589:                                              ; preds = %534
  %590 = load i32, ptr %32, align 4, !tbaa !5
  %591 = icmp eq i32 %590, 2
  br i1 %591, label %592, label %644

592:                                              ; preds = %589
  store i32 2, ptr %9, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #4
  store i32 0, ptr %38, align 4, !tbaa !5
  br label %593

593:                                              ; preds = %620, %592
  %594 = load i32, ptr %38, align 4, !tbaa !5
  %595 = icmp slt i32 %594, 4
  br i1 %595, label %597, label %596

596:                                              ; preds = %593
  store i32 77, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #4
  br label %623

597:                                              ; preds = %593
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #4
  store i32 0, ptr %39, align 4, !tbaa !5
  br label %598

598:                                              ; preds = %616, %597
  %599 = load i32, ptr %39, align 4, !tbaa !5
  %600 = icmp slt i32 %599, 4
  br i1 %600, label %602, label %601

601:                                              ; preds = %598
  store i32 80, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #4
  br label %619

602:                                              ; preds = %598
  %603 = load i32, ptr %38, align 4, !tbaa !5
  %604 = sext i32 %603 to i64
  %605 = getelementptr inbounds [4 x [4 x i32]], ptr %33, i64 0, i64 %604
  %606 = load i32, ptr %39, align 4, !tbaa !5
  %607 = sext i32 %606 to i64
  %608 = getelementptr inbounds [4 x i32], ptr %605, i64 0, i64 %607
  %609 = load i32, ptr %608, align 4, !tbaa !5
  %610 = load i32, ptr %38, align 4, !tbaa !5
  %611 = sext i32 %610 to i64
  %612 = getelementptr inbounds [4 x [4 x i32]], ptr %11, i64 0, i64 %611
  %613 = load i32, ptr %39, align 4, !tbaa !5
  %614 = sext i32 %613 to i64
  %615 = getelementptr inbounds [4 x i32], ptr %612, i64 0, i64 %614
  store i32 %609, ptr %615, align 4, !tbaa !5
  br label %616

616:                                              ; preds = %602
  %617 = load i32, ptr %39, align 4, !tbaa !5
  %618 = add nsw i32 %617, 1
  store i32 %618, ptr %39, align 4, !tbaa !5
  br label %598, !llvm.loop !32

619:                                              ; preds = %601
  br label %620

620:                                              ; preds = %619
  %621 = load i32, ptr %38, align 4, !tbaa !5
  %622 = add nsw i32 %621, 1
  store i32 %622, ptr %38, align 4, !tbaa !5
  br label %593, !llvm.loop !33

623:                                              ; preds = %596
  %624 = getelementptr inbounds [4 x [4 x i32]], ptr %11, i64 0, i64 2
  %625 = getelementptr inbounds [4 x i32], ptr %624, i64 0, i64 2
  %626 = load i32, ptr %625, align 8, !tbaa !5
  %627 = getelementptr inbounds [4 x [4 x i32]], ptr %33, i64 0, i64 1
  %628 = getelementptr inbounds [4 x i32], ptr %627, i64 0, i64 1
  store i32 %626, ptr %628, align 4, !tbaa !5
  %629 = getelementptr inbounds [4 x [4 x i32]], ptr %11, i64 0, i64 2
  %630 = getelementptr inbounds [4 x i32], ptr %629, i64 0, i64 1
  %631 = load i32, ptr %630, align 4, !tbaa !5
  %632 = getelementptr inbounds [4 x [4 x i32]], ptr %33, i64 0, i64 1
  %633 = getelementptr inbounds [4 x i32], ptr %632, i64 0, i64 2
  store i32 %631, ptr %633, align 8, !tbaa !5
  %634 = getelementptr inbounds [4 x [4 x i32]], ptr %11, i64 0, i64 1
  %635 = getelementptr inbounds [4 x i32], ptr %634, i64 0, i64 2
  %636 = load i32, ptr %635, align 8, !tbaa !5
  %637 = getelementptr inbounds [4 x [4 x i32]], ptr %33, i64 0, i64 2
  %638 = getelementptr inbounds [4 x i32], ptr %637, i64 0, i64 1
  store i32 %636, ptr %638, align 4, !tbaa !5
  %639 = getelementptr inbounds [4 x [4 x i32]], ptr %11, i64 0, i64 1
  %640 = getelementptr inbounds [4 x i32], ptr %639, i64 0, i64 1
  %641 = load i32, ptr %640, align 4, !tbaa !5
  %642 = getelementptr inbounds [4 x [4 x i32]], ptr %33, i64 0, i64 2
  %643 = getelementptr inbounds [4 x i32], ptr %642, i64 0, i64 2
  store i32 %641, ptr %643, align 8, !tbaa !5
  br label %700

644:                                              ; preds = %589
  %645 = load i32, ptr %32, align 4, !tbaa !5
  %646 = icmp eq i32 %645, 3
  br i1 %646, label %647, label %699

647:                                              ; preds = %644
  store i32 1, ptr %9, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #4
  store i32 0, ptr %40, align 4, !tbaa !5
  br label %648

648:                                              ; preds = %675, %647
  %649 = load i32, ptr %40, align 4, !tbaa !5
  %650 = icmp slt i32 %649, 4
  br i1 %650, label %652, label %651

651:                                              ; preds = %648
  store i32 83, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #4
  br label %678

652:                                              ; preds = %648
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #4
  store i32 0, ptr %41, align 4, !tbaa !5
  br label %653

653:                                              ; preds = %671, %652
  %654 = load i32, ptr %41, align 4, !tbaa !5
  %655 = icmp slt i32 %654, 4
  br i1 %655, label %657, label %656

656:                                              ; preds = %653
  store i32 86, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #4
  br label %674

657:                                              ; preds = %653
  %658 = load i32, ptr %40, align 4, !tbaa !5
  %659 = sext i32 %658 to i64
  %660 = getelementptr inbounds [4 x [4 x i32]], ptr %33, i64 0, i64 %659
  %661 = load i32, ptr %41, align 4, !tbaa !5
  %662 = sext i32 %661 to i64
  %663 = getelementptr inbounds [4 x i32], ptr %660, i64 0, i64 %662
  %664 = load i32, ptr %663, align 4, !tbaa !5
  %665 = load i32, ptr %40, align 4, !tbaa !5
  %666 = sext i32 %665 to i64
  %667 = getelementptr inbounds [4 x [4 x i32]], ptr %11, i64 0, i64 %666
  %668 = load i32, ptr %41, align 4, !tbaa !5
  %669 = sext i32 %668 to i64
  %670 = getelementptr inbounds [4 x i32], ptr %667, i64 0, i64 %669
  store i32 %664, ptr %670, align 4, !tbaa !5
  br label %671

671:                                              ; preds = %657
  %672 = load i32, ptr %41, align 4, !tbaa !5
  %673 = add nsw i32 %672, 1
  store i32 %673, ptr %41, align 4, !tbaa !5
  br label %653, !llvm.loop !34

674:                                              ; preds = %656
  br label %675

675:                                              ; preds = %674
  %676 = load i32, ptr %40, align 4, !tbaa !5
  %677 = add nsw i32 %676, 1
  store i32 %677, ptr %40, align 4, !tbaa !5
  br label %648, !llvm.loop !35

678:                                              ; preds = %651
  %679 = getelementptr inbounds [4 x [4 x i32]], ptr %11, i64 0, i64 2
  %680 = getelementptr inbounds [4 x i32], ptr %679, i64 0, i64 1
  %681 = load i32, ptr %680, align 4, !tbaa !5
  %682 = getelementptr inbounds [4 x [4 x i32]], ptr %33, i64 0, i64 1
  %683 = getelementptr inbounds [4 x i32], ptr %682, i64 0, i64 1
  store i32 %681, ptr %683, align 4, !tbaa !5
  %684 = getelementptr inbounds [4 x [4 x i32]], ptr %11, i64 0, i64 1
  %685 = getelementptr inbounds [4 x i32], ptr %684, i64 0, i64 1
  %686 = load i32, ptr %685, align 4, !tbaa !5
  %687 = getelementptr inbounds [4 x [4 x i32]], ptr %33, i64 0, i64 1
  %688 = getelementptr inbounds [4 x i32], ptr %687, i64 0, i64 2
  store i32 %686, ptr %688, align 8, !tbaa !5
  %689 = getelementptr inbounds [4 x [4 x i32]], ptr %11, i64 0, i64 1
  %690 = getelementptr inbounds [4 x i32], ptr %689, i64 0, i64 2
  %691 = load i32, ptr %690, align 8, !tbaa !5
  %692 = getelementptr inbounds [4 x [4 x i32]], ptr %33, i64 0, i64 2
  %693 = getelementptr inbounds [4 x i32], ptr %692, i64 0, i64 2
  store i32 %691, ptr %693, align 8, !tbaa !5
  %694 = getelementptr inbounds [4 x [4 x i32]], ptr %11, i64 0, i64 2
  %695 = getelementptr inbounds [4 x i32], ptr %694, i64 0, i64 2
  %696 = load i32, ptr %695, align 8, !tbaa !5
  %697 = getelementptr inbounds [4 x [4 x i32]], ptr %33, i64 0, i64 2
  %698 = getelementptr inbounds [4 x i32], ptr %697, i64 0, i64 1
  store i32 %696, ptr %698, align 4, !tbaa !5
  br label %699

699:                                              ; preds = %678, %644
  br label %700

700:                                              ; preds = %699, %623
  br label %701

701:                                              ; preds = %700, %568
  br label %702

702:                                              ; preds = %701, %533
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #4
  store i32 0, ptr %42, align 4, !tbaa !5
  br label %703

703:                                              ; preds = %1024, %702
  %704 = load i32, ptr %42, align 4, !tbaa !5
  %705 = icmp slt i32 %704, 4
  br i1 %705, label %707, label %706

706:                                              ; preds = %703
  store i32 89, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #4
  br label %1027

707:                                              ; preds = %703
  call void @llvm.lifetime.start.p0(i64 64, ptr %43) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #4
  store i32 0, ptr %44, align 4, !tbaa !5
  br label %708

708:                                              ; preds = %735, %707
  %709 = load i32, ptr %44, align 4, !tbaa !5
  %710 = icmp slt i32 %709, 4
  br i1 %710, label %712, label %711

711:                                              ; preds = %708
  store i32 92, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #4
  br label %738

712:                                              ; preds = %708
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #4
  store i32 0, ptr %45, align 4, !tbaa !5
  br label %713

713:                                              ; preds = %731, %712
  %714 = load i32, ptr %45, align 4, !tbaa !5
  %715 = icmp slt i32 %714, 4
  br i1 %715, label %717, label %716

716:                                              ; preds = %713
  store i32 95, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #4
  br label %734

717:                                              ; preds = %713
  %718 = load i32, ptr %44, align 4, !tbaa !5
  %719 = sext i32 %718 to i64
  %720 = getelementptr inbounds [4 x [4 x i32]], ptr %33, i64 0, i64 %719
  %721 = load i32, ptr %45, align 4, !tbaa !5
  %722 = sext i32 %721 to i64
  %723 = getelementptr inbounds [4 x i32], ptr %720, i64 0, i64 %722
  %724 = load i32, ptr %723, align 4, !tbaa !5
  %725 = load i32, ptr %44, align 4, !tbaa !5
  %726 = sext i32 %725 to i64
  %727 = getelementptr inbounds [4 x [4 x i32]], ptr %43, i64 0, i64 %726
  %728 = load i32, ptr %45, align 4, !tbaa !5
  %729 = sext i32 %728 to i64
  %730 = getelementptr inbounds [4 x i32], ptr %727, i64 0, i64 %729
  store i32 %724, ptr %730, align 4, !tbaa !5
  br label %731

731:                                              ; preds = %717
  %732 = load i32, ptr %45, align 4, !tbaa !5
  %733 = add nsw i32 %732, 1
  store i32 %733, ptr %45, align 4, !tbaa !5
  br label %713, !llvm.loop !36

734:                                              ; preds = %716
  br label %735

735:                                              ; preds = %734
  %736 = load i32, ptr %44, align 4, !tbaa !5
  %737 = add nsw i32 %736, 1
  store i32 %737, ptr %44, align 4, !tbaa !5
  br label %708, !llvm.loop !37

738:                                              ; preds = %711
  %739 = load i32, ptr %42, align 4, !tbaa !5
  %740 = icmp eq i32 %739, 0
  br i1 %740, label %741, label %742

741:                                              ; preds = %738
  store i32 0, ptr %10, align 4, !tbaa !5
  br label %910

742:                                              ; preds = %738
  %743 = load i32, ptr %42, align 4, !tbaa !5
  %744 = icmp eq i32 %743, 1
  br i1 %744, label %745, label %797

745:                                              ; preds = %742
  store i32 1, ptr %10, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #4
  store i32 0, ptr %46, align 4, !tbaa !5
  br label %746

746:                                              ; preds = %773, %745
  %747 = load i32, ptr %46, align 4, !tbaa !5
  %748 = icmp slt i32 %747, 4
  br i1 %748, label %750, label %749

749:                                              ; preds = %746
  store i32 98, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #4
  br label %776

750:                                              ; preds = %746
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #4
  store i32 0, ptr %47, align 4, !tbaa !5
  br label %751

751:                                              ; preds = %769, %750
  %752 = load i32, ptr %47, align 4, !tbaa !5
  %753 = icmp slt i32 %752, 4
  br i1 %753, label %755, label %754

754:                                              ; preds = %751
  store i32 101, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #4
  br label %772

755:                                              ; preds = %751
  %756 = load i32, ptr %46, align 4, !tbaa !5
  %757 = sext i32 %756 to i64
  %758 = getelementptr inbounds [4 x [4 x i32]], ptr %43, i64 0, i64 %757
  %759 = load i32, ptr %47, align 4, !tbaa !5
  %760 = sext i32 %759 to i64
  %761 = getelementptr inbounds [4 x i32], ptr %758, i64 0, i64 %760
  %762 = load i32, ptr %761, align 4, !tbaa !5
  %763 = load i32, ptr %46, align 4, !tbaa !5
  %764 = sext i32 %763 to i64
  %765 = getelementptr inbounds [4 x [4 x i32]], ptr %11, i64 0, i64 %764
  %766 = load i32, ptr %47, align 4, !tbaa !5
  %767 = sext i32 %766 to i64
  %768 = getelementptr inbounds [4 x i32], ptr %765, i64 0, i64 %767
  store i32 %762, ptr %768, align 4, !tbaa !5
  br label %769

769:                                              ; preds = %755
  %770 = load i32, ptr %47, align 4, !tbaa !5
  %771 = add nsw i32 %770, 1
  store i32 %771, ptr %47, align 4, !tbaa !5
  br label %751, !llvm.loop !38

772:                                              ; preds = %754
  br label %773

773:                                              ; preds = %772
  %774 = load i32, ptr %46, align 4, !tbaa !5
  %775 = add nsw i32 %774, 1
  store i32 %775, ptr %46, align 4, !tbaa !5
  br label %746, !llvm.loop !39

776:                                              ; preds = %749
  %777 = getelementptr inbounds [4 x [4 x i32]], ptr %11, i64 0, i64 0
  %778 = getelementptr inbounds [4 x i32], ptr %777, i64 0, i64 3
  %779 = load i32, ptr %778, align 4, !tbaa !5
  %780 = getelementptr inbounds [4 x [4 x i32]], ptr %43, i64 0, i64 0
  %781 = getelementptr inbounds [4 x i32], ptr %780, i64 0, i64 0
  store i32 %779, ptr %781, align 16, !tbaa !5
  %782 = getelementptr inbounds [4 x [4 x i32]], ptr %11, i64 0, i64 3
  %783 = getelementptr inbounds [4 x i32], ptr %782, i64 0, i64 3
  %784 = load i32, ptr %783, align 4, !tbaa !5
  %785 = getelementptr inbounds [4 x [4 x i32]], ptr %43, i64 0, i64 0
  %786 = getelementptr inbounds [4 x i32], ptr %785, i64 0, i64 3
  store i32 %784, ptr %786, align 4, !tbaa !5
  %787 = getelementptr inbounds [4 x [4 x i32]], ptr %11, i64 0, i64 3
  %788 = getelementptr inbounds [4 x i32], ptr %787, i64 0, i64 0
  %789 = load i32, ptr %788, align 16, !tbaa !5
  %790 = getelementptr inbounds [4 x [4 x i32]], ptr %43, i64 0, i64 3
  %791 = getelementptr inbounds [4 x i32], ptr %790, i64 0, i64 3
  store i32 %789, ptr %791, align 4, !tbaa !5
  %792 = getelementptr inbounds [4 x [4 x i32]], ptr %11, i64 0, i64 0
  %793 = getelementptr inbounds [4 x i32], ptr %792, i64 0, i64 0
  %794 = load i32, ptr %793, align 16, !tbaa !5
  %795 = getelementptr inbounds [4 x [4 x i32]], ptr %43, i64 0, i64 3
  %796 = getelementptr inbounds [4 x i32], ptr %795, i64 0, i64 0
  store i32 %794, ptr %796, align 16, !tbaa !5
  br label %909

797:                                              ; preds = %742
  %798 = load i32, ptr %42, align 4, !tbaa !5
  %799 = icmp eq i32 %798, 2
  br i1 %799, label %800, label %852

800:                                              ; preds = %797
  store i32 2, ptr %10, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #4
  store i32 0, ptr %48, align 4, !tbaa !5
  br label %801

801:                                              ; preds = %828, %800
  %802 = load i32, ptr %48, align 4, !tbaa !5
  %803 = icmp slt i32 %802, 4
  br i1 %803, label %805, label %804

804:                                              ; preds = %801
  store i32 104, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #4
  br label %831

805:                                              ; preds = %801
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #4
  store i32 0, ptr %49, align 4, !tbaa !5
  br label %806

806:                                              ; preds = %824, %805
  %807 = load i32, ptr %49, align 4, !tbaa !5
  %808 = icmp slt i32 %807, 4
  br i1 %808, label %810, label %809

809:                                              ; preds = %806
  store i32 107, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #4
  br label %827

810:                                              ; preds = %806
  %811 = load i32, ptr %48, align 4, !tbaa !5
  %812 = sext i32 %811 to i64
  %813 = getelementptr inbounds [4 x [4 x i32]], ptr %43, i64 0, i64 %812
  %814 = load i32, ptr %49, align 4, !tbaa !5
  %815 = sext i32 %814 to i64
  %816 = getelementptr inbounds [4 x i32], ptr %813, i64 0, i64 %815
  %817 = load i32, ptr %816, align 4, !tbaa !5
  %818 = load i32, ptr %48, align 4, !tbaa !5
  %819 = sext i32 %818 to i64
  %820 = getelementptr inbounds [4 x [4 x i32]], ptr %11, i64 0, i64 %819
  %821 = load i32, ptr %49, align 4, !tbaa !5
  %822 = sext i32 %821 to i64
  %823 = getelementptr inbounds [4 x i32], ptr %820, i64 0, i64 %822
  store i32 %817, ptr %823, align 4, !tbaa !5
  br label %824

824:                                              ; preds = %810
  %825 = load i32, ptr %49, align 4, !tbaa !5
  %826 = add nsw i32 %825, 1
  store i32 %826, ptr %49, align 4, !tbaa !5
  br label %806, !llvm.loop !40

827:                                              ; preds = %809
  br label %828

828:                                              ; preds = %827
  %829 = load i32, ptr %48, align 4, !tbaa !5
  %830 = add nsw i32 %829, 1
  store i32 %830, ptr %48, align 4, !tbaa !5
  br label %801, !llvm.loop !41

831:                                              ; preds = %804
  %832 = getelementptr inbounds [4 x [4 x i32]], ptr %11, i64 0, i64 3
  %833 = getelementptr inbounds [4 x i32], ptr %832, i64 0, i64 3
  %834 = load i32, ptr %833, align 4, !tbaa !5
  %835 = getelementptr inbounds [4 x [4 x i32]], ptr %43, i64 0, i64 0
  %836 = getelementptr inbounds [4 x i32], ptr %835, i64 0, i64 0
  store i32 %834, ptr %836, align 16, !tbaa !5
  %837 = getelementptr inbounds [4 x [4 x i32]], ptr %11, i64 0, i64 3
  %838 = getelementptr inbounds [4 x i32], ptr %837, i64 0, i64 0
  %839 = load i32, ptr %838, align 16, !tbaa !5
  %840 = getelementptr inbounds [4 x [4 x i32]], ptr %43, i64 0, i64 0
  %841 = getelementptr inbounds [4 x i32], ptr %840, i64 0, i64 3
  store i32 %839, ptr %841, align 4, !tbaa !5
  %842 = getelementptr inbounds [4 x [4 x i32]], ptr %11, i64 0, i64 0
  %843 = getelementptr inbounds [4 x i32], ptr %842, i64 0, i64 0
  %844 = load i32, ptr %843, align 16, !tbaa !5
  %845 = getelementptr inbounds [4 x [4 x i32]], ptr %43, i64 0, i64 3
  %846 = getelementptr inbounds [4 x i32], ptr %845, i64 0, i64 3
  store i32 %844, ptr %846, align 4, !tbaa !5
  %847 = getelementptr inbounds [4 x [4 x i32]], ptr %11, i64 0, i64 0
  %848 = getelementptr inbounds [4 x i32], ptr %847, i64 0, i64 3
  %849 = load i32, ptr %848, align 4, !tbaa !5
  %850 = getelementptr inbounds [4 x [4 x i32]], ptr %43, i64 0, i64 3
  %851 = getelementptr inbounds [4 x i32], ptr %850, i64 0, i64 0
  store i32 %849, ptr %851, align 16, !tbaa !5
  br label %908

852:                                              ; preds = %797
  %853 = load i32, ptr %42, align 4, !tbaa !5
  %854 = icmp eq i32 %853, 3
  br i1 %854, label %855, label %907

855:                                              ; preds = %852
  store i32 1, ptr %10, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #4
  store i32 0, ptr %50, align 4, !tbaa !5
  br label %856

856:                                              ; preds = %883, %855
  %857 = load i32, ptr %50, align 4, !tbaa !5
  %858 = icmp slt i32 %857, 4
  br i1 %858, label %860, label %859

859:                                              ; preds = %856
  store i32 110, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #4
  br label %886

860:                                              ; preds = %856
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #4
  store i32 0, ptr %51, align 4, !tbaa !5
  br label %861

861:                                              ; preds = %879, %860
  %862 = load i32, ptr %51, align 4, !tbaa !5
  %863 = icmp slt i32 %862, 4
  br i1 %863, label %865, label %864

864:                                              ; preds = %861
  store i32 113, ptr %5, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #4
  br label %882

865:                                              ; preds = %861
  %866 = load i32, ptr %50, align 4, !tbaa !5
  %867 = sext i32 %866 to i64
  %868 = getelementptr inbounds [4 x [4 x i32]], ptr %43, i64 0, i64 %867
  %869 = load i32, ptr %51, align 4, !tbaa !5
  %870 = sext i32 %869 to i64
  %871 = getelementptr inbounds [4 x i32], ptr %868, i64 0, i64 %870
  %872 = load i32, ptr %871, align 4, !tbaa !5
  %873 = load i32, ptr %50, align 4, !tbaa !5
  %874 = sext i32 %873 to i64
  %875 = getelementptr inbounds [4 x [4 x i32]], ptr %11, i64 0, i64 %874
  %876 = load i32, ptr %51, align 4, !tbaa !5
  %877 = sext i32 %876 to i64
  %878 = getelementptr inbounds [4 x i32], ptr %875, i64 0, i64 %877
  store i32 %872, ptr %878, align 4, !tbaa !5
  br label %879

879:                                              ; preds = %865
  %880 = load i32, ptr %51, align 4, !tbaa !5
  %881 = add nsw i32 %880, 1
  store i32 %881, ptr %51, align 4, !tbaa !5
  br label %861, !llvm.loop !42

882:                                              ; preds = %864
  br label %883

883:                                              ; preds = %882
  %884 = load i32, ptr %50, align 4, !tbaa !5
  %885 = add nsw i32 %884, 1
  store i32 %885, ptr %50, align 4, !tbaa !5
  br label %856, !llvm.loop !43

886:                                              ; preds = %859
  %887 = getelementptr inbounds [4 x [4 x i32]], ptr %11, i64 0, i64 3
  %888 = getelementptr inbounds [4 x i32], ptr %887, i64 0, i64 0
  %889 = load i32, ptr %888, align 16, !tbaa !5
  %890 = getelementptr inbounds [4 x [4 x i32]], ptr %43, i64 0, i64 0
  %891 = getelementptr inbounds [4 x i32], ptr %890, i64 0, i64 0
  store i32 %889, ptr %891, align 16, !tbaa !5
  %892 = getelementptr inbounds [4 x [4 x i32]], ptr %11, i64 0, i64 0
  %893 = getelementptr inbounds [4 x i32], ptr %892, i64 0, i64 0
  %894 = load i32, ptr %893, align 16, !tbaa !5
  %895 = getelementptr inbounds [4 x [4 x i32]], ptr %43, i64 0, i64 0
  %896 = getelementptr inbounds [4 x i32], ptr %895, i64 0, i64 3
  store i32 %894, ptr %896, align 4, !tbaa !5
  %897 = getelementptr inbounds [4 x [4 x i32]], ptr %11, i64 0, i64 0
  %898 = getelementptr inbounds [4 x i32], ptr %897, i64 0, i64 3
  %899 = load i32, ptr %898, align 4, !tbaa !5
  %900 = getelementptr inbounds [4 x [4 x i32]], ptr %43, i64 0, i64 3
  %901 = getelementptr inbounds [4 x i32], ptr %900, i64 0, i64 3
  store i32 %899, ptr %901, align 4, !tbaa !5
  %902 = getelementptr inbounds [4 x [4 x i32]], ptr %11, i64 0, i64 3
  %903 = getelementptr inbounds [4 x i32], ptr %902, i64 0, i64 3
  %904 = load i32, ptr %903, align 4, !tbaa !5
  %905 = getelementptr inbounds [4 x [4 x i32]], ptr %43, i64 0, i64 3
  %906 = getelementptr inbounds [4 x i32], ptr %905, i64 0, i64 0
  store i32 %904, ptr %906, align 16, !tbaa !5
  br label %907

907:                                              ; preds = %886, %852
  br label %908

908:                                              ; preds = %907, %831
  br label %909

909:                                              ; preds = %908, %776
  br label %910

910:                                              ; preds = %909, %741
  call void @llvm.lifetime.start.p0(i64 1, ptr %52) #4
  store i8 1, ptr %52, align 1, !tbaa !44
  %911 = getelementptr inbounds [4 x [4 x i32]], ptr %43, i64 0, i64 0
  %912 = getelementptr inbounds [4 x i32], ptr %911, i64 0, i64 0
  %913 = load i32, ptr %912, align 16, !tbaa !5
  %914 = getelementptr inbounds [4 x [4 x i32]], ptr %43, i64 0, i64 1
  %915 = getelementptr inbounds [4 x i32], ptr %914, i64 0, i64 0
  %916 = load i32, ptr %915, align 16, !tbaa !5
  %917 = icmp ne i32 %913, %916
  br i1 %917, label %934, label %918

918:                                              ; preds = %910
  %919 = getelementptr inbounds [4 x [4 x i32]], ptr %43, i64 0, i64 0
  %920 = getelementptr inbounds [4 x i32], ptr %919, i64 0, i64 0
  %921 = load i32, ptr %920, align 16, !tbaa !5
  %922 = getelementptr inbounds [4 x [4 x i32]], ptr %43, i64 0, i64 0
  %923 = getelementptr inbounds [4 x i32], ptr %922, i64 0, i64 1
  %924 = load i32, ptr %923, align 4, !tbaa !5
  %925 = icmp ne i32 %921, %924
  br i1 %925, label %934, label %926

926:                                              ; preds = %918
  %927 = getelementptr inbounds [4 x [4 x i32]], ptr %43, i64 0, i64 0
  %928 = getelementptr inbounds [4 x i32], ptr %927, i64 0, i64 0
  %929 = load i32, ptr %928, align 16, !tbaa !5
  %930 = getelementptr inbounds [4 x [4 x i32]], ptr %43, i64 0, i64 1
  %931 = getelementptr inbounds [4 x i32], ptr %930, i64 0, i64 1
  %932 = load i32, ptr %931, align 4, !tbaa !5
  %933 = icmp ne i32 %929, %932
  br i1 %933, label %934, label %935

934:                                              ; preds = %926, %918, %910
  store i8 0, ptr %52, align 1, !tbaa !44
  br label %935

935:                                              ; preds = %934, %926
  %936 = getelementptr inbounds [4 x [4 x i32]], ptr %43, i64 0, i64 2
  %937 = getelementptr inbounds [4 x i32], ptr %936, i64 0, i64 0
  %938 = load i32, ptr %937, align 16, !tbaa !5
  %939 = getelementptr inbounds [4 x [4 x i32]], ptr %43, i64 0, i64 3
  %940 = getelementptr inbounds [4 x i32], ptr %939, i64 0, i64 0
  %941 = load i32, ptr %940, align 16, !tbaa !5
  %942 = icmp ne i32 %938, %941
  br i1 %942, label %959, label %943

943:                                              ; preds = %935
  %944 = getelementptr inbounds [4 x [4 x i32]], ptr %43, i64 0, i64 2
  %945 = getelementptr inbounds [4 x i32], ptr %944, i64 0, i64 0
  %946 = load i32, ptr %945, align 16, !tbaa !5
  %947 = getelementptr inbounds [4 x [4 x i32]], ptr %43, i64 0, i64 2
  %948 = getelementptr inbounds [4 x i32], ptr %947, i64 0, i64 1
  %949 = load i32, ptr %948, align 4, !tbaa !5
  %950 = icmp ne i32 %946, %949
  br i1 %950, label %959, label %951

951:                                              ; preds = %943
  %952 = getelementptr inbounds [4 x [4 x i32]], ptr %43, i64 0, i64 2
  %953 = getelementptr inbounds [4 x i32], ptr %952, i64 0, i64 0
  %954 = load i32, ptr %953, align 16, !tbaa !5
  %955 = getelementptr inbounds [4 x [4 x i32]], ptr %43, i64 0, i64 3
  %956 = getelementptr inbounds [4 x i32], ptr %955, i64 0, i64 1
  %957 = load i32, ptr %956, align 4, !tbaa !5
  %958 = icmp ne i32 %954, %957
  br i1 %958, label %959, label %960

959:                                              ; preds = %951, %943, %935
  store i8 0, ptr %52, align 1, !tbaa !44
  br label %960

960:                                              ; preds = %959, %951
  %961 = getelementptr inbounds [4 x [4 x i32]], ptr %43, i64 0, i64 0
  %962 = getelementptr inbounds [4 x i32], ptr %961, i64 0, i64 2
  %963 = load i32, ptr %962, align 8, !tbaa !5
  %964 = getelementptr inbounds [4 x [4 x i32]], ptr %43, i64 0, i64 1
  %965 = getelementptr inbounds [4 x i32], ptr %964, i64 0, i64 2
  %966 = load i32, ptr %965, align 8, !tbaa !5
  %967 = icmp ne i32 %963, %966
  br i1 %967, label %984, label %968

968:                                              ; preds = %960
  %969 = getelementptr inbounds [4 x [4 x i32]], ptr %43, i64 0, i64 0
  %970 = getelementptr inbounds [4 x i32], ptr %969, i64 0, i64 2
  %971 = load i32, ptr %970, align 8, !tbaa !5
  %972 = getelementptr inbounds [4 x [4 x i32]], ptr %43, i64 0, i64 0
  %973 = getelementptr inbounds [4 x i32], ptr %972, i64 0, i64 3
  %974 = load i32, ptr %973, align 4, !tbaa !5
  %975 = icmp ne i32 %971, %974
  br i1 %975, label %984, label %976

976:                                              ; preds = %968
  %977 = getelementptr inbounds [4 x [4 x i32]], ptr %43, i64 0, i64 0
  %978 = getelementptr inbounds [4 x i32], ptr %977, i64 0, i64 2
  %979 = load i32, ptr %978, align 8, !tbaa !5
  %980 = getelementptr inbounds [4 x [4 x i32]], ptr %43, i64 0, i64 1
  %981 = getelementptr inbounds [4 x i32], ptr %980, i64 0, i64 3
  %982 = load i32, ptr %981, align 4, !tbaa !5
  %983 = icmp ne i32 %979, %982
  br i1 %983, label %984, label %985

984:                                              ; preds = %976, %968, %960
  store i8 0, ptr %52, align 1, !tbaa !44
  br label %985

985:                                              ; preds = %984, %976
  %986 = getelementptr inbounds [4 x [4 x i32]], ptr %43, i64 0, i64 2
  %987 = getelementptr inbounds [4 x i32], ptr %986, i64 0, i64 2
  %988 = load i32, ptr %987, align 8, !tbaa !5
  %989 = getelementptr inbounds [4 x [4 x i32]], ptr %43, i64 0, i64 3
  %990 = getelementptr inbounds [4 x i32], ptr %989, i64 0, i64 2
  %991 = load i32, ptr %990, align 8, !tbaa !5
  %992 = icmp ne i32 %988, %991
  br i1 %992, label %1009, label %993

993:                                              ; preds = %985
  %994 = getelementptr inbounds [4 x [4 x i32]], ptr %43, i64 0, i64 2
  %995 = getelementptr inbounds [4 x i32], ptr %994, i64 0, i64 2
  %996 = load i32, ptr %995, align 8, !tbaa !5
  %997 = getelementptr inbounds [4 x [4 x i32]], ptr %43, i64 0, i64 2
  %998 = getelementptr inbounds [4 x i32], ptr %997, i64 0, i64 3
  %999 = load i32, ptr %998, align 4, !tbaa !5
  %1000 = icmp ne i32 %996, %999
  br i1 %1000, label %1009, label %1001

1001:                                             ; preds = %993
  %1002 = getelementptr inbounds [4 x [4 x i32]], ptr %43, i64 0, i64 2
  %1003 = getelementptr inbounds [4 x i32], ptr %1002, i64 0, i64 2
  %1004 = load i32, ptr %1003, align 8, !tbaa !5
  %1005 = getelementptr inbounds [4 x [4 x i32]], ptr %43, i64 0, i64 3
  %1006 = getelementptr inbounds [4 x i32], ptr %1005, i64 0, i64 3
  %1007 = load i32, ptr %1006, align 4, !tbaa !5
  %1008 = icmp ne i32 %1004, %1007
  br i1 %1008, label %1009, label %1010

1009:                                             ; preds = %1001, %993, %985
  store i8 0, ptr %52, align 1, !tbaa !44
  br label %1010

1010:                                             ; preds = %1009, %1001
  %1011 = load i8, ptr %52, align 1, !tbaa !44, !range !46, !noundef !47
  %1012 = trunc i8 %1011 to i1
  br i1 %1012, label %1013, label %1023

1013:                                             ; preds = %1010
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #4
  %1014 = load i32, ptr %7, align 4, !tbaa !5
  %1015 = load i32, ptr %8, align 4, !tbaa !5
  %1016 = add nsw i32 %1014, %1015
  %1017 = load i32, ptr %9, align 4, !tbaa !5
  %1018 = add nsw i32 %1016, %1017
  %1019 = load i32, ptr %10, align 4, !tbaa !5
  %1020 = add nsw i32 %1018, %1019
  store i32 %1020, ptr %53, align 4, !tbaa !5
  %1021 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %2, ptr noundef nonnull align 4 dereferenceable(4) %53)
  %1022 = load i32, ptr %1021, align 4, !tbaa !5
  store i32 %1022, ptr %2, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #4
  br label %1023

1023:                                             ; preds = %1013, %1010
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr %43) #4
  br label %1024

1024:                                             ; preds = %1023
  %1025 = load i32, ptr %42, align 4, !tbaa !5
  %1026 = add nsw i32 %1025, 1
  store i32 %1026, ptr %42, align 4, !tbaa !5
  br label %703, !llvm.loop !48

1027:                                             ; preds = %706
  call void @llvm.lifetime.end.p0(i64 64, ptr %33) #4
  br label %1028

1028:                                             ; preds = %1027
  %1029 = load i32, ptr %32, align 4, !tbaa !5
  %1030 = add nsw i32 %1029, 1
  store i32 %1030, ptr %32, align 4, !tbaa !5
  br label %495, !llvm.loop !49

1031:                                             ; preds = %498
  call void @llvm.lifetime.end.p0(i64 64, ptr %23) #4
  br label %1032

1032:                                             ; preds = %1031
  %1033 = load i32, ptr %22, align 4, !tbaa !5
  %1034 = add nsw i32 %1033, 1
  store i32 %1034, ptr %22, align 4, !tbaa !5
  br label %287, !llvm.loop !50

1035:                                             ; preds = %290
  call void @llvm.lifetime.end.p0(i64 64, ptr %13) #4
  br label %1036

1036:                                             ; preds = %1035
  %1037 = load i32, ptr %12, align 4, !tbaa !5
  %1038 = add nsw i32 %1037, 1
  store i32 %1038, ptr %12, align 4, !tbaa !5
  br label %79, !llvm.loop !51

1039:                                             ; preds = %82
  %1040 = load i32, ptr %2, align 4, !tbaa !5
  %1041 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, i32 noundef %1040)
  call void @llvm.lifetime.end.p0(i64 64, ptr %11) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #4
  call void @llvm.lifetime.end.p0(i64 64, ptr %3) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %2) #4
  %1042 = load i32, ptr %1, align 4
  ret i32 %1042
}

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

declare noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERi(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(4)) #2

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) #2

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = distinct !{!9, !10}
!10 = !{!"llvm.loop.mustprogress"}
!11 = distinct !{!11, !10}
!12 = distinct !{!12, !10}
!13 = distinct !{!13, !10}
!14 = distinct !{!14, !10}
!15 = distinct !{!15, !10}
!16 = distinct !{!16, !10}
!17 = distinct !{!17, !10}
!18 = distinct !{!18, !10}
!19 = distinct !{!19, !10}
!20 = distinct !{!20, !10}
!21 = distinct !{!21, !10}
!22 = distinct !{!22, !10}
!23 = distinct !{!23, !10}
!24 = distinct !{!24, !10}
!25 = distinct !{!25, !10}
!26 = distinct !{!26, !10}
!27 = distinct !{!27, !10}
!28 = distinct !{!28, !10}
!29 = distinct !{!29, !10}
!30 = distinct !{!30, !10}
!31 = distinct !{!31, !10}
!32 = distinct !{!32, !10}
!33 = distinct !{!33, !10}
!34 = distinct !{!34, !10}
!35 = distinct !{!35, !10}
!36 = distinct !{!36, !10}
!37 = distinct !{!37, !10}
!38 = distinct !{!38, !10}
!39 = distinct !{!39, !10}
!40 = distinct !{!40, !10}
!41 = distinct !{!41, !10}
!42 = distinct !{!42, !10}
!43 = distinct !{!43, !10}
!44 = !{!45, !45, i64 0}
!45 = !{!"bool", !7, i64 0}
!46 = !{i8 0, i8 2}
!47 = !{}
!48 = distinct !{!48, !10}
!49 = distinct !{!49, !10}
!50 = distinct !{!50, !10}
!51 = distinct !{!51, !10}


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

%"class.std::basic_istream" = type { ptr, i64, %"class.std::basic_ios" }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::locale" = type { ptr }
%"class.std::basic_ostream" = type { ptr, %"class.std::basic_ios" }

@_ZSt3cin = external global %"class.std::basic_istream", align 8
@_ZSt4cout = external global %"class.std::basic_ostream", align 8

; Function Attrs: mustprogress norecurse uwtable
define dso_local noundef i32 @main() local_unnamed_addr #0 {
.preheader288:
  %0 = alloca i32, align 4
  %1 = alloca [4 x [4 x i32]], align 16
  %2 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %0) #4
  store i32 100500, ptr %0, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %1) #4
  %3 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERi(ptr noundef nonnull align 8 dereferenceable(16) @_ZSt3cin, ptr noundef nonnull align 4 dereferenceable(4) %1)
  %4 = getelementptr inbounds i8, ptr %1, i64 4
  %5 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERi(ptr noundef nonnull align 8 dereferenceable(16) @_ZSt3cin, ptr noundef nonnull align 4 dereferenceable(4) %4)
  %6 = getelementptr inbounds i8, ptr %1, i64 8
  %7 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERi(ptr noundef nonnull align 8 dereferenceable(16) @_ZSt3cin, ptr noundef nonnull align 4 dereferenceable(4) %6)
  %8 = getelementptr inbounds i8, ptr %1, i64 12
  %9 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERi(ptr noundef nonnull align 8 dereferenceable(16) @_ZSt3cin, ptr noundef nonnull align 4 dereferenceable(4) %8)
  %10 = getelementptr inbounds i8, ptr %1, i64 16
  %11 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERi(ptr noundef nonnull align 8 dereferenceable(16) @_ZSt3cin, ptr noundef nonnull align 4 dereferenceable(4) %10)
  %12 = getelementptr inbounds i8, ptr %1, i64 20
  %13 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERi(ptr noundef nonnull align 8 dereferenceable(16) @_ZSt3cin, ptr noundef nonnull align 4 dereferenceable(4) %12)
  %14 = getelementptr inbounds i8, ptr %1, i64 24
  %15 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERi(ptr noundef nonnull align 8 dereferenceable(16) @_ZSt3cin, ptr noundef nonnull align 4 dereferenceable(4) %14)
  %16 = getelementptr inbounds i8, ptr %1, i64 28
  %17 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERi(ptr noundef nonnull align 8 dereferenceable(16) @_ZSt3cin, ptr noundef nonnull align 4 dereferenceable(4) %16)
  %18 = getelementptr inbounds i8, ptr %1, i64 32
  %19 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERi(ptr noundef nonnull align 8 dereferenceable(16) @_ZSt3cin, ptr noundef nonnull align 4 dereferenceable(4) %18)
  %20 = getelementptr inbounds i8, ptr %1, i64 36
  %21 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERi(ptr noundef nonnull align 8 dereferenceable(16) @_ZSt3cin, ptr noundef nonnull align 4 dereferenceable(4) %20)
  %22 = getelementptr inbounds i8, ptr %1, i64 40
  %23 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERi(ptr noundef nonnull align 8 dereferenceable(16) @_ZSt3cin, ptr noundef nonnull align 4 dereferenceable(4) %22)
  %24 = getelementptr inbounds i8, ptr %1, i64 44
  %25 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERi(ptr noundef nonnull align 8 dereferenceable(16) @_ZSt3cin, ptr noundef nonnull align 4 dereferenceable(4) %24)
  %26 = getelementptr inbounds i8, ptr %1, i64 48
  %27 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERi(ptr noundef nonnull align 8 dereferenceable(16) @_ZSt3cin, ptr noundef nonnull align 4 dereferenceable(4) %26)
  %28 = getelementptr inbounds i8, ptr %1, i64 52
  %29 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERi(ptr noundef nonnull align 8 dereferenceable(16) @_ZSt3cin, ptr noundef nonnull align 4 dereferenceable(4) %28)
  %30 = getelementptr inbounds i8, ptr %1, i64 56
  %31 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERi(ptr noundef nonnull align 8 dereferenceable(16) @_ZSt3cin, ptr noundef nonnull align 4 dereferenceable(4) %30)
  %32 = getelementptr inbounds i8, ptr %1, i64 60
  %33 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERi(ptr noundef nonnull align 8 dereferenceable(16) @_ZSt3cin, ptr noundef nonnull align 4 dereferenceable(4) %32)
  br label %36

34:                                               ; preds = %39
  %35 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, i32 noundef %101)
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %1) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %0) #4
  ret i32 0

36:                                               ; preds = %.preheader288, %39
  %37 = phi i32 [ 100500, %.preheader288 ], [ %101, %39 ]
  %.0199336 = phi i32 [ 0, %.preheader288 ], [ %40, %39 ]
  %.0204334 = phi i32 [ undef, %.preheader288 ], [ %.3207, %39 ]
  %.0208333 = phi i32 [ undef, %.preheader288 ], [ %.2210, %39 ]
  %.0211332 = phi i32 [ undef, %.preheader288 ], [ %.1212, %39 ]
  %.sroa.0689.0.copyload = load i32, ptr %1, align 16, !tbaa !5
  %.sroa.7693.0.copyload = load i32, ptr %4, align 4, !tbaa !5
  %.sroa.8700.0.copyload = load i32, ptr %6, align 8, !tbaa !5
  %.sroa.12707.0.copyload = load i32, ptr %8, align 4, !tbaa !5
  %.sroa.13714.0.copyload = load i32, ptr %10, align 16, !tbaa !5
  %.sroa.17721.0.copyload = load i32, ptr %12, align 4, !tbaa !5
  %.sroa.18728.0.copyload = load i32, ptr %14, align 8, !tbaa !5
  %.sroa.19735.0.copyload = load i32, ptr %16, align 4, !tbaa !5
  %.sroa.20742.0.copyload = load i32, ptr %18, align 16, !tbaa !5
  %.sroa.21749.0.copyload = load i32, ptr %20, align 4, !tbaa !5
  %.sroa.22756.0.copyload = load i32, ptr %22, align 8, !tbaa !5
  %.sroa.23763.0.copyload = load i32, ptr %24, align 4, !tbaa !5
  %.sroa.27770.0.copyload = load i32, ptr %26, align 16, !tbaa !5
  %.sroa.28777.0.copyload = load i32, ptr %28, align 4, !tbaa !5
  %.sroa.32784.0.copyload = load i32, ptr %30, align 8, !tbaa !5
  %.sroa.33791.0.copyload = load i32, ptr %32, align 4, !tbaa !5
  switch i32 %.0199336, label %.fold.split [
    i32 0, label %38
    i32 1, label %.preheader281.preheader
    i32 2, label %.preheader282.preheader
    i32 3, label %.preheader283.preheader
  ]

.preheader283.preheader:                          ; preds = %36
  br label %38

.preheader282.preheader:                          ; preds = %36
  br label %38

.preheader281.preheader:                          ; preds = %36
  br label %38

.fold.split:                                      ; preds = %36
  br label %38

38:                                               ; preds = %36, %.fold.split, %.preheader281.preheader, %.preheader283.preheader, %.preheader282.preheader
  %.sroa.8700.0 = phi i32 [ %.sroa.8700.0.copyload, %.fold.split ], [ %.sroa.23763.0.copyload, %.preheader283.preheader ], [ %.sroa.28777.0.copyload, %.preheader282.preheader ], [ %.sroa.13714.0.copyload, %.preheader281.preheader ], [ %.sroa.8700.0.copyload, %36 ]
  %.sroa.13714.0 = phi i32 [ %.sroa.13714.0.copyload, %.fold.split ], [ %.sroa.8700.0.copyload, %.preheader283.preheader ], [ %.sroa.23763.0.copyload, %.preheader282.preheader ], [ %.sroa.28777.0.copyload, %.preheader281.preheader ], [ %.sroa.13714.0.copyload, %36 ]
  %.sroa.23763.0 = phi i32 [ %.sroa.23763.0.copyload, %.fold.split ], [ %.sroa.28777.0.copyload, %.preheader283.preheader ], [ %.sroa.13714.0.copyload, %.preheader282.preheader ], [ %.sroa.8700.0.copyload, %.preheader281.preheader ], [ %.sroa.23763.0.copyload, %36 ]
  %.sroa.28777.0 = phi i32 [ %.sroa.28777.0.copyload, %.fold.split ], [ %.sroa.13714.0.copyload, %.preheader283.preheader ], [ %.sroa.8700.0.copyload, %.preheader282.preheader ], [ %.sroa.23763.0.copyload, %.preheader281.preheader ], [ %.sroa.28777.0.copyload, %36 ]
  %.1212 = phi i32 [ %.0211332, %.fold.split ], [ 1, %.preheader283.preheader ], [ %.0199336, %.preheader282.preheader ], [ %.0199336, %.preheader281.preheader ], [ %.0199336, %36 ]
  %.not = icmp ne i32 %.sroa.0689.0.copyload, %.sroa.13714.0
  %.not225 = icmp ne i32 %.sroa.8700.0, %.sroa.12707.0.copyload
  %.not.1 = icmp ne i32 %.sroa.12707.0.copyload, %.sroa.13714.0
  %.not225.1 = icmp ne i32 %.sroa.8700.0, %.sroa.33791.0.copyload
  %.not.2 = icmp ne i32 %.sroa.33791.0.copyload, %.sroa.13714.0
  %.not225.2 = icmp ne i32 %.sroa.8700.0, %.sroa.27770.0.copyload
  %.not.3 = icmp ne i32 %.sroa.27770.0.copyload, %.sroa.13714.0
  %.not225.3 = icmp ne i32 %.sroa.8700.0, %.sroa.0689.0.copyload
  br label %41

39:                                               ; preds = %45
  %40 = add nuw nsw i32 %.0199336, 1
  %exitcond389.not = icmp eq i32 %40, 4
  br i1 %exitcond389.not, label %34, label %36, !llvm.loop !9

41:                                               ; preds = %38, %45
  %42 = phi i32 [ %37, %38 ], [ %101, %45 ]
  %.0190331 = phi i32 [ 0, %38 ], [ %46, %45 ]
  %.1205329 = phi i32 [ %.0204334, %38 ], [ %.3207, %45 ]
  %.1209328 = phi i32 [ %.0208333, %38 ], [ %.2210, %45 ]
  switch i32 %.0190331, label %.fold.split230 [
    i32 0, label %43
    i32 1, label %.preheader274.preheader
    i32 2, label %.preheader275.preheader
    i32 3, label %.preheader276.preheader
  ]

.preheader276.preheader:                          ; preds = %41
  br label %43

.preheader275.preheader:                          ; preds = %41
  br label %43

.preheader274.preheader:                          ; preds = %41
  br label %43

.fold.split230:                                   ; preds = %41
  br label %43

43:                                               ; preds = %41, %.fold.split230, %.preheader274.preheader, %.preheader276.preheader, %.preheader275.preheader
  %.sroa.7588.0 = phi i32 [ %.sroa.7693.0.copyload, %.fold.split230 ], [ %.sroa.20742.0.copyload, %.preheader276.preheader ], [ %.sroa.32784.0.copyload, %.preheader275.preheader ], [ %.sroa.19735.0.copyload, %.preheader274.preheader ], [ %.sroa.7693.0.copyload, %41 ]
  %.sroa.16628.0 = phi i32 [ %.sroa.19735.0.copyload, %.fold.split230 ], [ %.sroa.7693.0.copyload, %.preheader276.preheader ], [ %.sroa.20742.0.copyload, %.preheader275.preheader ], [ %.sroa.32784.0.copyload, %.preheader274.preheader ], [ %.sroa.19735.0.copyload, %41 ]
  %.sroa.20635.0 = phi i32 [ %.sroa.20742.0.copyload, %.fold.split230 ], [ %.sroa.32784.0.copyload, %.preheader276.preheader ], [ %.sroa.19735.0.copyload, %.preheader275.preheader ], [ %.sroa.7693.0.copyload, %.preheader274.preheader ], [ %.sroa.20742.0.copyload, %41 ]
  %.sroa.29675.0 = phi i32 [ %.sroa.32784.0.copyload, %.fold.split230 ], [ %.sroa.19735.0.copyload, %.preheader276.preheader ], [ %.sroa.7693.0.copyload, %.preheader275.preheader ], [ %.sroa.20742.0.copyload, %.preheader274.preheader ], [ %.sroa.32784.0.copyload, %41 ]
  %.2210 = phi i32 [ %.1209328, %.fold.split230 ], [ 1, %.preheader276.preheader ], [ %.0190331, %.preheader275.preheader ], [ %.0190331, %.preheader274.preheader ], [ %.0190331, %41 ]
  %44 = add nsw i32 %.2210, %.1212
  %.not223 = icmp ne i32 %.sroa.20635.0, %.sroa.28777.0
  %.not226 = icmp ne i32 %.sroa.8700.0, %.sroa.16628.0
  %.not219 = icmp ne i32 %.sroa.0689.0.copyload, %.sroa.7588.0
  %.not221 = icmp ne i32 %.sroa.20635.0, %.sroa.27770.0.copyload
  %.not219.1 = icmp ne i32 %.sroa.12707.0.copyload, %.sroa.7588.0
  %.not221.1 = icmp ne i32 %.sroa.20635.0, %.sroa.0689.0.copyload
  %.not219.2 = icmp ne i32 %.sroa.33791.0.copyload, %.sroa.7588.0
  %.not221.2 = icmp ne i32 %.sroa.20635.0, %.sroa.12707.0.copyload
  %.not219.3 = icmp ne i32 %.sroa.27770.0.copyload, %.sroa.7588.0
  %.not221.3 = icmp ne i32 %.sroa.20635.0, %.sroa.33791.0.copyload
  br label %47

45:                                               ; preds = %.critedge.3
  %46 = add nuw nsw i32 %.0190331, 1
  %exitcond388.not = icmp eq i32 %46, 4
  br i1 %exitcond388.not, label %39, label %41, !llvm.loop !11

47:                                               ; preds = %43, %.critedge.3
  %48 = phi i32 [ %42, %43 ], [ %101, %.critedge.3 ]
  %.0181327 = phi i32 [ 0, %43 ], [ %102, %.critedge.3 ]
  %.2206325 = phi i32 [ %.1205329, %43 ], [ %.3207, %.critedge.3 ]
  switch i32 %.0181327, label %.fold.split231 [
    i32 0, label %49
    i32 1, label %.preheader267.preheader
    i32 2, label %.preheader268.preheader
    i32 3, label %.preheader269.preheader
  ]

.preheader269.preheader:                          ; preds = %47
  br label %49

.preheader268.preheader:                          ; preds = %47
  br label %49

.preheader267.preheader:                          ; preds = %47
  br label %49

.fold.split231:                                   ; preds = %47
  br label %49

49:                                               ; preds = %47, %.fold.split231, %.preheader267.preheader, %.preheader269.preheader, %.preheader268.preheader
  %.sroa.25.0 = phi i32 [ %.sroa.22756.0.copyload, %.fold.split231 ], [ %.sroa.18728.0.copyload, %.preheader269.preheader ], [ %.sroa.17721.0.copyload, %.preheader268.preheader ], [ %.sroa.21749.0.copyload, %.preheader267.preheader ], [ %.sroa.22756.0.copyload, %47 ]
  %.sroa.21539.0 = phi i32 [ %.sroa.21749.0.copyload, %.fold.split231 ], [ %.sroa.22756.0.copyload, %.preheader269.preheader ], [ %.sroa.18728.0.copyload, %.preheader268.preheader ], [ %.sroa.17721.0.copyload, %.preheader267.preheader ], [ %.sroa.21749.0.copyload, %47 ]
  %.sroa.15.0 = phi i32 [ %.sroa.18728.0.copyload, %.fold.split231 ], [ %.sroa.17721.0.copyload, %.preheader269.preheader ], [ %.sroa.21749.0.copyload, %.preheader268.preheader ], [ %.sroa.22756.0.copyload, %.preheader267.preheader ], [ %.sroa.18728.0.copyload, %47 ]
  %.sroa.11512.0 = phi i32 [ %.sroa.17721.0.copyload, %.fold.split231 ], [ %.sroa.21749.0.copyload, %.preheader269.preheader ], [ %.sroa.22756.0.copyload, %.preheader268.preheader ], [ %.sroa.18728.0.copyload, %.preheader267.preheader ], [ %.sroa.17721.0.copyload, %47 ]
  %.3207 = phi i32 [ %.2206325, %.fold.split231 ], [ 1, %.preheader269.preheader ], [ %.0181327, %.preheader268.preheader ], [ %.0181327, %.preheader267.preheader ], [ %.0181327, %47 ]
  %50 = add nsw i32 %44, %.3207
  %.not222 = icmp ne i32 %.sroa.20635.0, %.sroa.21539.0
  %.not224 = icmp ne i32 %.sroa.8700.0, %.sroa.15.0
  %.not227 = icmp ne i32 %.sroa.25.0, %.sroa.29675.0
  %.not228 = icmp ne i32 %.sroa.25.0, %.sroa.23763.0
  %or.cond245.not251 = select i1 %.not227, i1 true, i1 %.not228
  %.not220 = icmp ne i32 %.sroa.0689.0.copyload, %.sroa.11512.0
  %.not229 = icmp ne i32 %.sroa.25.0, %.sroa.33791.0.copyload
  %or.cond247.not250 = select i1 %or.cond245.not251, i1 true, i1 %.not229
  %51 = select i1 %or.cond247.not250, i1 true, i1 %.not224
  %52 = select i1 %51, i1 true, i1 %.not225
  %53 = select i1 %52, i1 true, i1 %.not226
  %54 = select i1 %53, i1 true, i1 %.not221
  %55 = select i1 %54, i1 true, i1 %.not222
  %56 = select i1 %55, i1 true, i1 %.not223
  %57 = select i1 %56, i1 true, i1 %.not
  %58 = select i1 %57, i1 true, i1 %.not219
  %brmerge = select i1 %58, i1 true, i1 %.not220
  br i1 %brmerge, label %.preheader.preheader.1, label %59

59:                                               ; preds = %49
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %2) #4
  store i32 %50, ptr %2, align 4, !tbaa !5
  %60 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %0, ptr noundef nonnull align 4 dereferenceable(4) %2)
  %61 = load i32, ptr %60, align 4, !tbaa !5
  store i32 %61, ptr %0, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %2) #4
  br label %.preheader.preheader.1

.preheader.preheader.1:                           ; preds = %49, %59
  %62 = phi i32 [ %48, %49 ], [ %61, %59 ]
  %.not220.1 = icmp ne i32 %.sroa.12707.0.copyload, %.sroa.11512.0
  %.not229.1 = icmp ne i32 %.sroa.25.0, %.sroa.27770.0.copyload
  %or.cond247.not250.1 = select i1 %or.cond245.not251, i1 true, i1 %.not229.1
  %63 = select i1 %or.cond247.not250.1, i1 true, i1 %.not224
  %64 = select i1 %63, i1 true, i1 %.not225.1
  %65 = select i1 %64, i1 true, i1 %.not226
  %66 = select i1 %65, i1 true, i1 %.not221.1
  %67 = select i1 %66, i1 true, i1 %.not222
  %68 = select i1 %67, i1 true, i1 %.not223
  %69 = select i1 %68, i1 true, i1 %.not.1
  %70 = select i1 %69, i1 true, i1 %.not219.1
  %brmerge.1 = select i1 %70, i1 true, i1 %.not220.1
  br i1 %brmerge.1, label %.preheader261.preheader.2, label %71

71:                                               ; preds = %.preheader.preheader.1
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %2) #4
  %72 = add nsw i32 %50, 1
  store i32 %72, ptr %2, align 4, !tbaa !5
  %73 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %0, ptr noundef nonnull align 4 dereferenceable(4) %2)
  %74 = load i32, ptr %73, align 4, !tbaa !5
  store i32 %74, ptr %0, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %2) #4
  br label %.preheader261.preheader.2

.preheader261.preheader.2:                        ; preds = %71, %.preheader.preheader.1
  %75 = phi i32 [ %62, %.preheader.preheader.1 ], [ %74, %71 ]
  %.not220.2 = icmp ne i32 %.sroa.33791.0.copyload, %.sroa.11512.0
  %.not229.2 = icmp ne i32 %.sroa.25.0, %.sroa.0689.0.copyload
  %or.cond247.not250.2 = select i1 %or.cond245.not251, i1 true, i1 %.not229.2
  %76 = select i1 %or.cond247.not250.2, i1 true, i1 %.not224
  %77 = select i1 %76, i1 true, i1 %.not225.2
  %78 = select i1 %77, i1 true, i1 %.not226
  %79 = select i1 %78, i1 true, i1 %.not221.2
  %80 = select i1 %79, i1 true, i1 %.not222
  %81 = select i1 %80, i1 true, i1 %.not223
  %82 = select i1 %81, i1 true, i1 %.not.2
  %83 = select i1 %82, i1 true, i1 %.not219.2
  %brmerge.2 = select i1 %83, i1 true, i1 %.not220.2
  br i1 %brmerge.2, label %.preheader262.preheader.3, label %84

84:                                               ; preds = %.preheader261.preheader.2
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %2) #4
  %85 = add nsw i32 %50, 2
  store i32 %85, ptr %2, align 4, !tbaa !5
  %86 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %0, ptr noundef nonnull align 4 dereferenceable(4) %2)
  %87 = load i32, ptr %86, align 4, !tbaa !5
  store i32 %87, ptr %0, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %2) #4
  br label %.preheader262.preheader.3

.preheader262.preheader.3:                        ; preds = %84, %.preheader261.preheader.2
  %88 = phi i32 [ %75, %.preheader261.preheader.2 ], [ %87, %84 ]
  %.not220.3 = icmp ne i32 %.sroa.27770.0.copyload, %.sroa.11512.0
  %.not229.3 = icmp ne i32 %.sroa.25.0, %.sroa.12707.0.copyload
  %or.cond247.not250.3 = select i1 %or.cond245.not251, i1 true, i1 %.not229.3
  %89 = select i1 %or.cond247.not250.3, i1 true, i1 %.not224
  %90 = select i1 %89, i1 true, i1 %.not225.3
  %91 = select i1 %90, i1 true, i1 %.not226
  %92 = select i1 %91, i1 true, i1 %.not221.3
  %93 = select i1 %92, i1 true, i1 %.not222
  %94 = select i1 %93, i1 true, i1 %.not223
  %95 = select i1 %94, i1 true, i1 %.not.3
  %96 = select i1 %95, i1 true, i1 %.not219.3
  %brmerge.3 = select i1 %96, i1 true, i1 %.not220.3
  br i1 %brmerge.3, label %.critedge.3, label %97

97:                                               ; preds = %.preheader262.preheader.3
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %2) #4
  %98 = add nsw i32 %50, 1
  store i32 %98, ptr %2, align 4, !tbaa !5
  %99 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %0, ptr noundef nonnull align 4 dereferenceable(4) %2)
  %100 = load i32, ptr %99, align 4, !tbaa !5
  store i32 %100, ptr %0, align 4, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %2) #4
  br label %.critedge.3

.critedge.3:                                      ; preds = %97, %.preheader262.preheader.3
  %101 = phi i32 [ %88, %.preheader262.preheader.3 ], [ %100, %97 ]
  %102 = add nuw nsw i32 %.0181327, 1
  %exitcond387.not = icmp eq i32 %102, 4
  br i1 %exitcond387.not, label %45, label %47, !llvm.loop !12
}

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

declare noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERi(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #2

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) local_unnamed_addr #2

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

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

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


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