; LLVM IR from ravireddy07/cpp-book :: src/Code-Chef (COOK126B_NTCOL)

; 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 i64, align 8
  %3 = alloca i64, align 8
  %4 = alloca i64, align 8
  %5 = alloca i64, align 8
  %6 = alloca i64, align 8
  %7 = alloca i64, align 8
  %8 = alloca ptr, align 8
  %9 = alloca i64, align 8
  %10 = alloca i64, align 8
  %11 = alloca i64, align 8
  %12 = alloca i32, align 4
  %13 = alloca i64, align 8
  %14 = alloca i8, align 1
  %15 = alloca i64, align 8
  %16 = alloca i64, align 8
  %17 = alloca i64, align 8
  %18 = alloca i64, align 8
  %19 = alloca i8, align 1
  %20 = alloca i64, align 8
  %21 = alloca i64, align 8
  %22 = alloca i64, align 8
  %23 = alloca i64, align 8
  %24 = alloca i8, align 1
  %25 = alloca i64, align 8
  %26 = alloca i64, align 8
  %27 = alloca i64, align 8
  %28 = alloca i64, align 8
  %29 = alloca i64, align 8
  %30 = alloca i64, align 8
  store i32 0, ptr %1, align 4
  %31 = call noundef zeroext i1 @_ZNSt8ios_base15sync_with_stdioEb(i1 noundef zeroext false)
  %32 = load ptr, ptr @_ZSt3cin, align 8, !tbaa !5
  %33 = getelementptr i8, ptr %32, i64 -24
  %34 = load i64, ptr %33, align 8
  %35 = getelementptr inbounds i8, ptr @_ZSt3cin, i64 %34
  %36 = call noundef ptr @_ZNSt9basic_iosIcSt11char_traitsIcEE3tieEPSo(ptr noundef nonnull align 8 dereferenceable(264) %35, ptr noundef null)
  %37 = load ptr, ptr @_ZSt4cout, align 8, !tbaa !5
  %38 = getelementptr i8, ptr %37, i64 -24
  %39 = load i64, ptr %38, align 8
  %40 = getelementptr inbounds i8, ptr @_ZSt4cout, i64 %39
  %41 = call noundef ptr @_ZNSt9basic_iosIcSt11char_traitsIcEE3tieEPSo(ptr noundef nonnull align 8 dereferenceable(264) %40, ptr noundef null)
  call void @llvm.lifetime.start.p0(i64 8, ptr %2) #7
  %42 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERx(ptr noundef nonnull align 8 dereferenceable(16) @_ZSt3cin, ptr noundef nonnull align 8 dereferenceable(8) %2)
  br label %43

43:                                               ; preds = %526, %0
  %44 = load i64, ptr %2, align 8, !tbaa !8
  %45 = add nsw i64 %44, -1
  store i64 %45, ptr %2, align 8, !tbaa !8
  %46 = icmp ne i64 %44, 0
  br i1 %46, label %47, label %528

47:                                               ; preds = %43
  call void @llvm.lifetime.start.p0(i64 8, ptr %3) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %4) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #7
  %48 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERx(ptr noundef nonnull align 8 dereferenceable(16) @_ZSt3cin, ptr noundef nonnull align 8 dereferenceable(8) %3)
  %49 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERx(ptr noundef nonnull align 8 dereferenceable(16) %48, ptr noundef nonnull align 8 dereferenceable(8) %4)
  %50 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERx(ptr noundef nonnull align 8 dereferenceable(16) %49, ptr noundef nonnull align 8 dereferenceable(8) %5)
  %51 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERx(ptr noundef nonnull align 8 dereferenceable(16) %50, ptr noundef nonnull align 8 dereferenceable(8) %6)
  %52 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERx(ptr noundef nonnull align 8 dereferenceable(16) %51, ptr noundef nonnull align 8 dereferenceable(8) %7)
  %53 = load i64, ptr %3, align 8, !tbaa !8
  %54 = load i64, ptr %4, align 8, !tbaa !8
  %55 = call ptr @llvm.stacksave.p0()
  store ptr %55, ptr %8, align 8
  %56 = mul nuw i64 %53, %54
  %57 = alloca i8, i64 %56, align 16
  store i64 %53, ptr %9, align 8
  store i64 %54, ptr %10, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #7
  store i64 0, ptr %11, align 8, !tbaa !8
  br label %58

58:                                               ; preds = %79, %47
  %59 = load i64, ptr %11, align 8, !tbaa !8
  %60 = load i64, ptr %3, align 8, !tbaa !8
  %61 = icmp slt i64 %59, %60
  br i1 %61, label %63, label %62

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

63:                                               ; preds = %58
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #7
  store i64 0, ptr %13, align 8, !tbaa !8
  br label %64

64:                                               ; preds = %75, %63
  %65 = load i64, ptr %13, align 8, !tbaa !8
  %66 = load i64, ptr %4, align 8, !tbaa !8
  %67 = icmp slt i64 %65, %66
  br i1 %67, label %69, label %68

68:                                               ; preds = %64
  store i32 7, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #7
  br label %78

69:                                               ; preds = %64
  %70 = load i64, ptr %11, align 8, !tbaa !8
  %71 = mul nsw i64 %70, %54
  %72 = getelementptr inbounds i8, ptr %57, i64 %71
  %73 = load i64, ptr %13, align 8, !tbaa !8
  %74 = getelementptr inbounds i8, ptr %72, i64 %73
  store i8 46, ptr %74, align 1, !tbaa !11
  br label %75

75:                                               ; preds = %69
  %76 = load i64, ptr %13, align 8, !tbaa !8
  %77 = add nsw i64 %76, 1
  store i64 %77, ptr %13, align 8, !tbaa !8
  br label %64, !llvm.loop !12

78:                                               ; preds = %68
  br label %79

79:                                               ; preds = %78
  %80 = load i64, ptr %11, align 8, !tbaa !8
  %81 = add nsw i64 %80, 1
  store i64 %81, ptr %11, align 8, !tbaa !8
  br label %58, !llvm.loop !14

82:                                               ; preds = %62
  %83 = load i64, ptr %5, align 8, !tbaa !8
  %84 = load i64, ptr %6, align 8, !tbaa !8
  %85 = icmp sle i64 %83, %84
  br i1 %85, label %86, label %223

86:                                               ; preds = %82
  %87 = load i64, ptr %5, align 8, !tbaa !8
  %88 = load i64, ptr %7, align 8, !tbaa !8
  %89 = icmp sle i64 %87, %88
  br i1 %89, label %90, label %223

90:                                               ; preds = %86
  call void @llvm.lifetime.start.p0(i64 1, ptr %14) #7
  store i8 0, ptr %14, align 1, !tbaa !15
  %91 = load i64, ptr %7, align 8, !tbaa !8
  %92 = load i64, ptr %6, align 8, !tbaa !8
  %93 = icmp slt i64 %91, %92
  br i1 %93, label %94, label %95

94:                                               ; preds = %90
  store i8 1, ptr %14, align 1, !tbaa !15
  br label %95

95:                                               ; preds = %94, %90
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #7
  store i64 0, ptr %15, align 8, !tbaa !8
  br label %96

96:                                               ; preds = %158, %95
  %97 = load i64, ptr %15, align 8, !tbaa !8
  %98 = load i64, ptr %3, align 8, !tbaa !8
  %99 = icmp slt i64 %97, %98
  br i1 %99, label %101, label %100

100:                                              ; preds = %96
  store i32 10, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #7
  br label %161

101:                                              ; preds = %96
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #7
  store i64 0, ptr %16, align 8, !tbaa !8
  br label %102

102:                                              ; preds = %154, %101
  %103 = load i64, ptr %16, align 8, !tbaa !8
  %104 = load i64, ptr %4, align 8, !tbaa !8
  %105 = icmp slt i64 %103, %104
  br i1 %105, label %107, label %106

106:                                              ; preds = %102
  store i32 13, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #7
  br label %157

107:                                              ; preds = %102
  %108 = load i64, ptr %15, align 8, !tbaa !8
  %109 = load i64, ptr %16, align 8, !tbaa !8
  %110 = add nsw i64 %108, %109
  %111 = srem i64 %110, 2
  %112 = icmp eq i64 %111, 0
  br i1 %112, label %113, label %125

113:                                              ; preds = %107
  %114 = load i64, ptr %5, align 8, !tbaa !8
  %115 = icmp sgt i64 %114, 0
  br i1 %115, label %116, label %124

116:                                              ; preds = %113
  %117 = load i64, ptr %15, align 8, !tbaa !8
  %118 = mul nsw i64 %117, %54
  %119 = getelementptr inbounds i8, ptr %57, i64 %118
  %120 = load i64, ptr %16, align 8, !tbaa !8
  %121 = getelementptr inbounds i8, ptr %119, i64 %120
  store i8 82, ptr %121, align 1, !tbaa !11
  %122 = load i64, ptr %5, align 8, !tbaa !8
  %123 = add nsw i64 %122, -1
  store i64 %123, ptr %5, align 8, !tbaa !8
  br label %124

124:                                              ; preds = %116, %113
  br label %153

125:                                              ; preds = %107
  %126 = load i8, ptr %14, align 1, !tbaa !15, !range !17, !noundef !18
  %127 = trunc i8 %126 to i1
  br i1 %127, label %140, label %128

128:                                              ; preds = %125
  %129 = load i64, ptr %6, align 8, !tbaa !8
  %130 = icmp eq i64 %129, 0
  br i1 %130, label %131, label %132

131:                                              ; preds = %128
  br label %154

132:                                              ; preds = %128
  %133 = load i64, ptr %15, align 8, !tbaa !8
  %134 = mul nsw i64 %133, %54
  %135 = getelementptr inbounds i8, ptr %57, i64 %134
  %136 = load i64, ptr %16, align 8, !tbaa !8
  %137 = getelementptr inbounds i8, ptr %135, i64 %136
  store i8 71, ptr %137, align 1, !tbaa !11
  %138 = load i64, ptr %6, align 8, !tbaa !8
  %139 = add nsw i64 %138, -1
  store i64 %139, ptr %6, align 8, !tbaa !8
  br label %152

140:                                              ; preds = %125
  %141 = load i64, ptr %7, align 8, !tbaa !8
  %142 = icmp eq i64 %141, 0
  br i1 %142, label %143, label %144

143:                                              ; preds = %140
  br label %154

144:                                              ; preds = %140
  %145 = load i64, ptr %15, align 8, !tbaa !8
  %146 = mul nsw i64 %145, %54
  %147 = getelementptr inbounds i8, ptr %57, i64 %146
  %148 = load i64, ptr %16, align 8, !tbaa !8
  %149 = getelementptr inbounds i8, ptr %147, i64 %148
  store i8 66, ptr %149, align 1, !tbaa !11
  %150 = load i64, ptr %7, align 8, !tbaa !8
  %151 = add nsw i64 %150, -1
  store i64 %151, ptr %7, align 8, !tbaa !8
  br label %152

152:                                              ; preds = %144, %132
  br label %153

153:                                              ; preds = %152, %124
  br label %154

154:                                              ; preds = %153, %143, %131
  %155 = load i64, ptr %16, align 8, !tbaa !8
  %156 = add nsw i64 %155, 1
  store i64 %156, ptr %16, align 8, !tbaa !8
  br label %102, !llvm.loop !19

157:                                              ; preds = %106
  br label %158

158:                                              ; preds = %157
  %159 = load i64, ptr %15, align 8, !tbaa !8
  %160 = add nsw i64 %159, 1
  store i64 %160, ptr %15, align 8, !tbaa !8
  br label %96, !llvm.loop !20

161:                                              ; preds = %100
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #7
  store i64 0, ptr %17, align 8, !tbaa !8
  br label %162

162:                                              ; preds = %219, %161
  %163 = load i64, ptr %17, align 8, !tbaa !8
  %164 = load i64, ptr %3, align 8, !tbaa !8
  %165 = icmp slt i64 %163, %164
  br i1 %165, label %167, label %166

166:                                              ; preds = %162
  store i32 16, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #7
  br label %222

167:                                              ; preds = %162
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #7
  store i64 0, ptr %18, align 8, !tbaa !8
  br label %168

168:                                              ; preds = %215, %167
  %169 = load i64, ptr %18, align 8, !tbaa !8
  %170 = load i64, ptr %4, align 8, !tbaa !8
  %171 = icmp slt i64 %169, %170
  br i1 %171, label %173, label %172

172:                                              ; preds = %168
  store i32 19, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #7
  br label %218

173:                                              ; preds = %168
  %174 = load i64, ptr %17, align 8, !tbaa !8
  %175 = mul nsw i64 %174, %54
  %176 = getelementptr inbounds i8, ptr %57, i64 %175
  %177 = load i64, ptr %18, align 8, !tbaa !8
  %178 = getelementptr inbounds i8, ptr %176, i64 %177
  %179 = load i8, ptr %178, align 1, !tbaa !11
  %180 = sext i8 %179 to i32
  %181 = icmp ne i32 %180, 46
  br i1 %181, label %182, label %183

182:                                              ; preds = %173
  br label %215

183:                                              ; preds = %173
  %184 = load i64, ptr %7, align 8, !tbaa !8
  %185 = icmp sgt i64 %184, 0
  br i1 %185, label %186, label %194

186:                                              ; preds = %183
  %187 = load i64, ptr %17, align 8, !tbaa !8
  %188 = mul nsw i64 %187, %54
  %189 = getelementptr inbounds i8, ptr %57, i64 %188
  %190 = load i64, ptr %18, align 8, !tbaa !8
  %191 = getelementptr inbounds i8, ptr %189, i64 %190
  store i8 66, ptr %191, align 1, !tbaa !11
  %192 = load i64, ptr %7, align 8, !tbaa !8
  %193 = add nsw i64 %192, -1
  store i64 %193, ptr %7, align 8, !tbaa !8
  br label %214

194:                                              ; preds = %183
  %195 = load i64, ptr %6, align 8, !tbaa !8
  %196 = icmp sgt i64 %195, 0
  br i1 %196, label %197, label %205

197:                                              ; preds = %194
  %198 = load i64, ptr %17, align 8, !tbaa !8
  %199 = mul nsw i64 %198, %54
  %200 = getelementptr inbounds i8, ptr %57, i64 %199
  %201 = load i64, ptr %18, align 8, !tbaa !8
  %202 = getelementptr inbounds i8, ptr %200, i64 %201
  store i8 71, ptr %202, align 1, !tbaa !11
  %203 = load i64, ptr %6, align 8, !tbaa !8
  %204 = add nsw i64 %203, -1
  store i64 %204, ptr %6, align 8, !tbaa !8
  br label %213

205:                                              ; preds = %194
  %206 = load i64, ptr %17, align 8, !tbaa !8
  %207 = mul nsw i64 %206, %54
  %208 = getelementptr inbounds i8, ptr %57, i64 %207
  %209 = load i64, ptr %18, align 8, !tbaa !8
  %210 = getelementptr inbounds i8, ptr %208, i64 %209
  store i8 82, ptr %210, align 1, !tbaa !11
  %211 = load i64, ptr %5, align 8, !tbaa !8
  %212 = add nsw i64 %211, -1
  store i64 %212, ptr %5, align 8, !tbaa !8
  br label %213

213:                                              ; preds = %205, %197
  br label %214

214:                                              ; preds = %213, %186
  br label %215

215:                                              ; preds = %214, %182
  %216 = load i64, ptr %18, align 8, !tbaa !8
  %217 = add nsw i64 %216, 1
  store i64 %217, ptr %18, align 8, !tbaa !8
  br label %168, !llvm.loop !21

218:                                              ; preds = %172
  br label %219

219:                                              ; preds = %218
  %220 = load i64, ptr %17, align 8, !tbaa !8
  %221 = add nsw i64 %220, 1
  store i64 %221, ptr %17, align 8, !tbaa !8
  br label %162, !llvm.loop !22

222:                                              ; preds = %166
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #7
  br label %498

223:                                              ; preds = %86, %82
  %224 = load i64, ptr %6, align 8, !tbaa !8
  %225 = load i64, ptr %5, align 8, !tbaa !8
  %226 = icmp sle i64 %224, %225
  br i1 %226, label %227, label %364

227:                                              ; preds = %223
  %228 = load i64, ptr %6, align 8, !tbaa !8
  %229 = load i64, ptr %7, align 8, !tbaa !8
  %230 = icmp sle i64 %228, %229
  br i1 %230, label %231, label %364

231:                                              ; preds = %227
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #7
  store i8 0, ptr %19, align 1, !tbaa !15
  %232 = load i64, ptr %7, align 8, !tbaa !8
  %233 = load i64, ptr %5, align 8, !tbaa !8
  %234 = icmp slt i64 %232, %233
  br i1 %234, label %235, label %236

235:                                              ; preds = %231
  store i8 1, ptr %19, align 1, !tbaa !15
  br label %236

236:                                              ; preds = %235, %231
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #7
  store i64 0, ptr %20, align 8, !tbaa !8
  br label %237

237:                                              ; preds = %299, %236
  %238 = load i64, ptr %20, align 8, !tbaa !8
  %239 = load i64, ptr %3, align 8, !tbaa !8
  %240 = icmp slt i64 %238, %239
  br i1 %240, label %242, label %241

241:                                              ; preds = %237
  store i32 22, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #7
  br label %302

242:                                              ; preds = %237
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #7
  store i64 0, ptr %21, align 8, !tbaa !8
  br label %243

243:                                              ; preds = %295, %242
  %244 = load i64, ptr %21, align 8, !tbaa !8
  %245 = load i64, ptr %4, align 8, !tbaa !8
  %246 = icmp slt i64 %244, %245
  br i1 %246, label %248, label %247

247:                                              ; preds = %243
  store i32 25, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #7
  br label %298

248:                                              ; preds = %243
  %249 = load i64, ptr %20, align 8, !tbaa !8
  %250 = load i64, ptr %21, align 8, !tbaa !8
  %251 = add nsw i64 %249, %250
  %252 = srem i64 %251, 2
  %253 = icmp eq i64 %252, 0
  br i1 %253, label %254, label %266

254:                                              ; preds = %248
  %255 = load i64, ptr %6, align 8, !tbaa !8
  %256 = icmp sgt i64 %255, 0
  br i1 %256, label %257, label %265

257:                                              ; preds = %254
  %258 = load i64, ptr %20, align 8, !tbaa !8
  %259 = mul nsw i64 %258, %54
  %260 = getelementptr inbounds i8, ptr %57, i64 %259
  %261 = load i64, ptr %21, align 8, !tbaa !8
  %262 = getelementptr inbounds i8, ptr %260, i64 %261
  store i8 71, ptr %262, align 1, !tbaa !11
  %263 = load i64, ptr %6, align 8, !tbaa !8
  %264 = add nsw i64 %263, -1
  store i64 %264, ptr %6, align 8, !tbaa !8
  br label %265

265:                                              ; preds = %257, %254
  br label %294

266:                                              ; preds = %248
  %267 = load i8, ptr %19, align 1, !tbaa !15, !range !17, !noundef !18
  %268 = trunc i8 %267 to i1
  br i1 %268, label %281, label %269

269:                                              ; preds = %266
  %270 = load i64, ptr %5, align 8, !tbaa !8
  %271 = icmp sgt i64 %270, 0
  br i1 %271, label %272, label %280

272:                                              ; preds = %269
  %273 = load i64, ptr %20, align 8, !tbaa !8
  %274 = mul nsw i64 %273, %54
  %275 = getelementptr inbounds i8, ptr %57, i64 %274
  %276 = load i64, ptr %21, align 8, !tbaa !8
  %277 = getelementptr inbounds i8, ptr %275, i64 %276
  store i8 82, ptr %277, align 1, !tbaa !11
  %278 = load i64, ptr %5, align 8, !tbaa !8
  %279 = add nsw i64 %278, -1
  store i64 %279, ptr %5, align 8, !tbaa !8
  br label %280

280:                                              ; preds = %272, %269
  br label %293

281:                                              ; preds = %266
  %282 = load i64, ptr %7, align 8, !tbaa !8
  %283 = icmp sgt i64 %282, 0
  br i1 %283, label %284, label %292

284:                                              ; preds = %281
  %285 = load i64, ptr %20, align 8, !tbaa !8
  %286 = mul nsw i64 %285, %54
  %287 = getelementptr inbounds i8, ptr %57, i64 %286
  %288 = load i64, ptr %21, align 8, !tbaa !8
  %289 = getelementptr inbounds i8, ptr %287, i64 %288
  store i8 66, ptr %289, align 1, !tbaa !11
  %290 = load i64, ptr %7, align 8, !tbaa !8
  %291 = add nsw i64 %290, -1
  store i64 %291, ptr %7, align 8, !tbaa !8
  br label %292

292:                                              ; preds = %284, %281
  br label %293

293:                                              ; preds = %292, %280
  br label %294

294:                                              ; preds = %293, %265
  br label %295

295:                                              ; preds = %294
  %296 = load i64, ptr %21, align 8, !tbaa !8
  %297 = add nsw i64 %296, 1
  store i64 %297, ptr %21, align 8, !tbaa !8
  br label %243, !llvm.loop !23

298:                                              ; preds = %247
  br label %299

299:                                              ; preds = %298
  %300 = load i64, ptr %20, align 8, !tbaa !8
  %301 = add nsw i64 %300, 1
  store i64 %301, ptr %20, align 8, !tbaa !8
  br label %237, !llvm.loop !24

302:                                              ; preds = %241
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #7
  store i64 0, ptr %22, align 8, !tbaa !8
  br label %303

303:                                              ; preds = %360, %302
  %304 = load i64, ptr %22, align 8, !tbaa !8
  %305 = load i64, ptr %3, align 8, !tbaa !8
  %306 = icmp slt i64 %304, %305
  br i1 %306, label %308, label %307

307:                                              ; preds = %303
  store i32 28, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #7
  br label %363

308:                                              ; preds = %303
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #7
  store i64 0, ptr %23, align 8, !tbaa !8
  br label %309

309:                                              ; preds = %356, %308
  %310 = load i64, ptr %23, align 8, !tbaa !8
  %311 = load i64, ptr %4, align 8, !tbaa !8
  %312 = icmp slt i64 %310, %311
  br i1 %312, label %314, label %313

313:                                              ; preds = %309
  store i32 31, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #7
  br label %359

314:                                              ; preds = %309
  %315 = load i64, ptr %22, align 8, !tbaa !8
  %316 = mul nsw i64 %315, %54
  %317 = getelementptr inbounds i8, ptr %57, i64 %316
  %318 = load i64, ptr %23, align 8, !tbaa !8
  %319 = getelementptr inbounds i8, ptr %317, i64 %318
  %320 = load i8, ptr %319, align 1, !tbaa !11
  %321 = sext i8 %320 to i32
  %322 = icmp ne i32 %321, 46
  br i1 %322, label %323, label %324

323:                                              ; preds = %314
  br label %356

324:                                              ; preds = %314
  %325 = load i64, ptr %5, align 8, !tbaa !8
  %326 = icmp sgt i64 %325, 0
  br i1 %326, label %327, label %335

327:                                              ; preds = %324
  %328 = load i64, ptr %22, align 8, !tbaa !8
  %329 = mul nsw i64 %328, %54
  %330 = getelementptr inbounds i8, ptr %57, i64 %329
  %331 = load i64, ptr %23, align 8, !tbaa !8
  %332 = getelementptr inbounds i8, ptr %330, i64 %331
  store i8 82, ptr %332, align 1, !tbaa !11
  %333 = load i64, ptr %5, align 8, !tbaa !8
  %334 = add nsw i64 %333, -1
  store i64 %334, ptr %5, align 8, !tbaa !8
  br label %355

335:                                              ; preds = %324
  %336 = load i64, ptr %7, align 8, !tbaa !8
  %337 = icmp sgt i64 %336, 0
  br i1 %337, label %338, label %346

338:                                              ; preds = %335
  %339 = load i64, ptr %22, align 8, !tbaa !8
  %340 = mul nsw i64 %339, %54
  %341 = getelementptr inbounds i8, ptr %57, i64 %340
  %342 = load i64, ptr %23, align 8, !tbaa !8
  %343 = getelementptr inbounds i8, ptr %341, i64 %342
  store i8 66, ptr %343, align 1, !tbaa !11
  %344 = load i64, ptr %7, align 8, !tbaa !8
  %345 = add nsw i64 %344, -1
  store i64 %345, ptr %7, align 8, !tbaa !8
  br label %354

346:                                              ; preds = %335
  %347 = load i64, ptr %22, align 8, !tbaa !8
  %348 = mul nsw i64 %347, %54
  %349 = getelementptr inbounds i8, ptr %57, i64 %348
  %350 = load i64, ptr %23, align 8, !tbaa !8
  %351 = getelementptr inbounds i8, ptr %349, i64 %350
  store i8 71, ptr %351, align 1, !tbaa !11
  %352 = load i64, ptr %6, align 8, !tbaa !8
  %353 = add nsw i64 %352, -1
  store i64 %353, ptr %6, align 8, !tbaa !8
  br label %354

354:                                              ; preds = %346, %338
  br label %355

355:                                              ; preds = %354, %327
  br label %356

356:                                              ; preds = %355, %323
  %357 = load i64, ptr %23, align 8, !tbaa !8
  %358 = add nsw i64 %357, 1
  store i64 %358, ptr %23, align 8, !tbaa !8
  br label %309, !llvm.loop !25

359:                                              ; preds = %313
  br label %360

360:                                              ; preds = %359
  %361 = load i64, ptr %22, align 8, !tbaa !8
  %362 = add nsw i64 %361, 1
  store i64 %362, ptr %22, align 8, !tbaa !8
  br label %303, !llvm.loop !26

363:                                              ; preds = %307
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #7
  br label %497

364:                                              ; preds = %227, %223
  call void @llvm.lifetime.start.p0(i64 1, ptr %24) #7
  store i8 0, ptr %24, align 1, !tbaa !15
  %365 = load i64, ptr %6, align 8, !tbaa !8
  %366 = load i64, ptr %5, align 8, !tbaa !8
  %367 = icmp slt i64 %365, %366
  br i1 %367, label %368, label %369

368:                                              ; preds = %364
  store i8 1, ptr %24, align 1, !tbaa !15
  br label %369

369:                                              ; preds = %368, %364
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #7
  store i64 0, ptr %25, align 8, !tbaa !8
  br label %370

370:                                              ; preds = %432, %369
  %371 = load i64, ptr %25, align 8, !tbaa !8
  %372 = load i64, ptr %3, align 8, !tbaa !8
  %373 = icmp slt i64 %371, %372
  br i1 %373, label %375, label %374

374:                                              ; preds = %370
  store i32 34, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #7
  br label %435

375:                                              ; preds = %370
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #7
  store i64 0, ptr %26, align 8, !tbaa !8
  br label %376

376:                                              ; preds = %428, %375
  %377 = load i64, ptr %26, align 8, !tbaa !8
  %378 = load i64, ptr %4, align 8, !tbaa !8
  %379 = icmp slt i64 %377, %378
  br i1 %379, label %381, label %380

380:                                              ; preds = %376
  store i32 37, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  br label %431

381:                                              ; preds = %376
  %382 = load i64, ptr %25, align 8, !tbaa !8
  %383 = load i64, ptr %26, align 8, !tbaa !8
  %384 = add nsw i64 %382, %383
  %385 = srem i64 %384, 2
  %386 = icmp eq i64 %385, 0
  br i1 %386, label %387, label %399

387:                                              ; preds = %381
  %388 = load i64, ptr %7, align 8, !tbaa !8
  %389 = icmp sgt i64 %388, 0
  br i1 %389, label %390, label %398

390:                                              ; preds = %387
  %391 = load i64, ptr %25, align 8, !tbaa !8
  %392 = mul nsw i64 %391, %54
  %393 = getelementptr inbounds i8, ptr %57, i64 %392
  %394 = load i64, ptr %26, align 8, !tbaa !8
  %395 = getelementptr inbounds i8, ptr %393, i64 %394
  store i8 66, ptr %395, align 1, !tbaa !11
  %396 = load i64, ptr %7, align 8, !tbaa !8
  %397 = add nsw i64 %396, -1
  store i64 %397, ptr %7, align 8, !tbaa !8
  br label %398

398:                                              ; preds = %390, %387
  br label %427

399:                                              ; preds = %381
  %400 = load i8, ptr %24, align 1, !tbaa !15, !range !17, !noundef !18
  %401 = trunc i8 %400 to i1
  br i1 %401, label %414, label %402

402:                                              ; preds = %399
  %403 = load i64, ptr %5, align 8, !tbaa !8
  %404 = icmp sgt i64 %403, 0
  br i1 %404, label %405, label %413

405:                                              ; preds = %402
  %406 = load i64, ptr %25, align 8, !tbaa !8
  %407 = mul nsw i64 %406, %54
  %408 = getelementptr inbounds i8, ptr %57, i64 %407
  %409 = load i64, ptr %26, align 8, !tbaa !8
  %410 = getelementptr inbounds i8, ptr %408, i64 %409
  store i8 82, ptr %410, align 1, !tbaa !11
  %411 = load i64, ptr %5, align 8, !tbaa !8
  %412 = add nsw i64 %411, -1
  store i64 %412, ptr %5, align 8, !tbaa !8
  br label %413

413:                                              ; preds = %405, %402
  br label %426

414:                                              ; preds = %399
  %415 = load i64, ptr %6, align 8, !tbaa !8
  %416 = icmp sgt i64 %415, 0
  br i1 %416, label %417, label %425

417:                                              ; preds = %414
  %418 = load i64, ptr %25, align 8, !tbaa !8
  %419 = mul nsw i64 %418, %54
  %420 = getelementptr inbounds i8, ptr %57, i64 %419
  %421 = load i64, ptr %26, align 8, !tbaa !8
  %422 = getelementptr inbounds i8, ptr %420, i64 %421
  store i8 71, ptr %422, align 1, !tbaa !11
  %423 = load i64, ptr %6, align 8, !tbaa !8
  %424 = add nsw i64 %423, -1
  store i64 %424, ptr %6, align 8, !tbaa !8
  br label %425

425:                                              ; preds = %417, %414
  br label %426

426:                                              ; preds = %425, %413
  br label %427

427:                                              ; preds = %426, %398
  br label %428

428:                                              ; preds = %427
  %429 = load i64, ptr %26, align 8, !tbaa !8
  %430 = add nsw i64 %429, 1
  store i64 %430, ptr %26, align 8, !tbaa !8
  br label %376, !llvm.loop !27

431:                                              ; preds = %380
  br label %432

432:                                              ; preds = %431
  %433 = load i64, ptr %25, align 8, !tbaa !8
  %434 = add nsw i64 %433, 1
  store i64 %434, ptr %25, align 8, !tbaa !8
  br label %370, !llvm.loop !28

435:                                              ; preds = %374
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #7
  store i64 0, ptr %27, align 8, !tbaa !8
  br label %436

436:                                              ; preds = %493, %435
  %437 = load i64, ptr %27, align 8, !tbaa !8
  %438 = load i64, ptr %3, align 8, !tbaa !8
  %439 = icmp slt i64 %437, %438
  br i1 %439, label %441, label %440

440:                                              ; preds = %436
  store i32 40, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #7
  br label %496

441:                                              ; preds = %436
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #7
  store i64 0, ptr %28, align 8, !tbaa !8
  br label %442

442:                                              ; preds = %489, %441
  %443 = load i64, ptr %28, align 8, !tbaa !8
  %444 = load i64, ptr %4, align 8, !tbaa !8
  %445 = icmp slt i64 %443, %444
  br i1 %445, label %447, label %446

446:                                              ; preds = %442
  store i32 43, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #7
  br label %492

447:                                              ; preds = %442
  %448 = load i64, ptr %27, align 8, !tbaa !8
  %449 = mul nsw i64 %448, %54
  %450 = getelementptr inbounds i8, ptr %57, i64 %449
  %451 = load i64, ptr %28, align 8, !tbaa !8
  %452 = getelementptr inbounds i8, ptr %450, i64 %451
  %453 = load i8, ptr %452, align 1, !tbaa !11
  %454 = sext i8 %453 to i32
  %455 = icmp ne i32 %454, 46
  br i1 %455, label %456, label %457

456:                                              ; preds = %447
  br label %489

457:                                              ; preds = %447
  %458 = load i64, ptr %5, align 8, !tbaa !8
  %459 = icmp sgt i64 %458, 0
  br i1 %459, label %460, label %468

460:                                              ; preds = %457
  %461 = load i64, ptr %27, align 8, !tbaa !8
  %462 = mul nsw i64 %461, %54
  %463 = getelementptr inbounds i8, ptr %57, i64 %462
  %464 = load i64, ptr %28, align 8, !tbaa !8
  %465 = getelementptr inbounds i8, ptr %463, i64 %464
  store i8 82, ptr %465, align 1, !tbaa !11
  %466 = load i64, ptr %5, align 8, !tbaa !8
  %467 = add nsw i64 %466, -1
  store i64 %467, ptr %5, align 8, !tbaa !8
  br label %488

468:                                              ; preds = %457
  %469 = load i64, ptr %6, align 8, !tbaa !8
  %470 = icmp sgt i64 %469, 0
  br i1 %470, label %471, label %479

471:                                              ; preds = %468
  %472 = load i64, ptr %27, align 8, !tbaa !8
  %473 = mul nsw i64 %472, %54
  %474 = getelementptr inbounds i8, ptr %57, i64 %473
  %475 = load i64, ptr %28, align 8, !tbaa !8
  %476 = getelementptr inbounds i8, ptr %474, i64 %475
  store i8 71, ptr %476, align 1, !tbaa !11
  %477 = load i64, ptr %6, align 8, !tbaa !8
  %478 = add nsw i64 %477, -1
  store i64 %478, ptr %6, align 8, !tbaa !8
  br label %487

479:                                              ; preds = %468
  %480 = load i64, ptr %27, align 8, !tbaa !8
  %481 = mul nsw i64 %480, %54
  %482 = getelementptr inbounds i8, ptr %57, i64 %481
  %483 = load i64, ptr %28, align 8, !tbaa !8
  %484 = getelementptr inbounds i8, ptr %482, i64 %483
  store i8 66, ptr %484, align 1, !tbaa !11
  %485 = load i64, ptr %7, align 8, !tbaa !8
  %486 = add nsw i64 %485, -1
  store i64 %486, ptr %7, align 8, !tbaa !8
  br label %487

487:                                              ; preds = %479, %471
  br label %488

488:                                              ; preds = %487, %460
  br label %489

489:                                              ; preds = %488, %456
  %490 = load i64, ptr %28, align 8, !tbaa !8
  %491 = add nsw i64 %490, 1
  store i64 %491, ptr %28, align 8, !tbaa !8
  br label %442, !llvm.loop !29

492:                                              ; preds = %446
  br label %493

493:                                              ; preds = %492
  %494 = load i64, ptr %27, align 8, !tbaa !8
  %495 = add nsw i64 %494, 1
  store i64 %495, ptr %27, align 8, !tbaa !8
  br label %436, !llvm.loop !30

496:                                              ; preds = %440
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #7
  br label %497

497:                                              ; preds = %496, %363
  br label %498

498:                                              ; preds = %497, %222
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #7
  store i64 0, ptr %29, align 8, !tbaa !8
  br label %499

499:                                              ; preds = %523, %498
  %500 = load i64, ptr %29, align 8, !tbaa !8
  %501 = load i64, ptr %3, align 8, !tbaa !8
  %502 = icmp slt i64 %500, %501
  br i1 %502, label %504, label %503

503:                                              ; preds = %499
  store i32 46, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #7
  br label %526

504:                                              ; preds = %499
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #7
  store i64 0, ptr %30, align 8, !tbaa !8
  br label %505

505:                                              ; preds = %518, %504
  %506 = load i64, ptr %30, align 8, !tbaa !8
  %507 = load i64, ptr %4, align 8, !tbaa !8
  %508 = icmp slt i64 %506, %507
  br i1 %508, label %510, label %509

509:                                              ; preds = %505
  store i32 49, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  br label %521

510:                                              ; preds = %505
  %511 = load i64, ptr %29, align 8, !tbaa !8
  %512 = mul nsw i64 %511, %54
  %513 = getelementptr inbounds i8, ptr %57, i64 %512
  %514 = load i64, ptr %30, align 8, !tbaa !8
  %515 = getelementptr inbounds i8, ptr %513, i64 %514
  %516 = load i8, ptr %515, align 1, !tbaa !11
  %517 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, i8 noundef signext %516)
  br label %518

518:                                              ; preds = %510
  %519 = load i64, ptr %30, align 8, !tbaa !8
  %520 = add nsw i64 %519, 1
  store i64 %520, ptr %30, align 8, !tbaa !8
  br label %505, !llvm.loop !31

521:                                              ; preds = %509
  %522 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, i8 noundef signext 10)
  br label %523

523:                                              ; preds = %521
  %524 = load i64, ptr %29, align 8, !tbaa !8
  %525 = add nsw i64 %524, 1
  store i64 %525, ptr %29, align 8, !tbaa !8
  br label %499, !llvm.loop !32

526:                                              ; preds = %503
  %527 = load ptr, ptr %8, align 8
  call void @llvm.stackrestore.p0(ptr %527)
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #7
  br label %43, !llvm.loop !33

528:                                              ; preds = %43
  store i32 0, ptr %1, align 4
  store i32 1, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %2) #7
  %529 = load i32, ptr %1, align 4
  ret i32 %529
}

declare noundef zeroext i1 @_ZNSt8ios_base15sync_with_stdioEb(i1 noundef zeroext) #1

; Function Attrs: mustprogress nounwind uwtable
declare noundef ptr @_ZNSt9basic_iosIcSt11char_traitsIcEE3tieEPSo(ptr noundef nonnull align 8 dereferenceable(264), ptr noundef) #2 align 2

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

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERx(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(8)) #4 align 2

; Function Attrs: nocallback nofree nosync nounwind willreturn
declare ptr @llvm.stacksave.p0() #5

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8), i8 noundef signext) #6

; Function Attrs: nocallback nofree nosync nounwind willreturn
declare void @llvm.stackrestore.p0(ptr) #5

attributes #0 = { mustprogress norecurse uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { 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 #3 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { mustprogress 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 #5 = { nocallback nofree nosync nounwind willreturn }
attributes #6 = { inlinehint mustprogress 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 #7 = { 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 = !{!"vtable pointer", !7, i64 0}
!7 = !{!"Simple C++ TBAA"}
!8 = !{!9, !9, i64 0}
!9 = !{!"long long", !10, i64 0}
!10 = !{!"omnipotent char", !7, i64 0}
!11 = !{!10, !10, i64 0}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}
!14 = distinct !{!14, !13}
!15 = !{!16, !16, i64 0}
!16 = !{!"bool", !10, i64 0}
!17 = !{i8 0, i8 2}
!18 = !{}
!19 = distinct !{!19, !13}
!20 = distinct !{!20, !13}
!21 = distinct !{!21, !13}
!22 = distinct !{!22, !13}
!23 = distinct !{!23, !13}
!24 = distinct !{!24, !13}
!25 = distinct !{!25, !13}
!26 = distinct !{!26, !13}
!27 = distinct !{!27, !13}
!28 = distinct !{!28, !13}
!29 = distinct !{!29, !13}
!30 = distinct !{!30, !13}
!31 = distinct !{!31, !13}
!32 = distinct !{!32, !13}
!33 = distinct !{!33, !13}


; 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 {
  %1 = alloca i64, align 8
  %2 = alloca i64, align 8
  %3 = alloca i64, align 8
  %4 = alloca i64, align 8
  %5 = alloca i64, align 8
  %6 = alloca i64, align 8
  %7 = tail call noundef zeroext i1 @_ZNSt8ios_base15sync_with_stdioEb(i1 noundef zeroext false)
  %8 = load ptr, ptr @_ZSt3cin, align 8, !tbaa !5
  %9 = getelementptr i8, ptr %8, i64 -24
  %10 = load i64, ptr %9, align 8
  %11 = getelementptr inbounds i8, ptr @_ZSt3cin, i64 %10
  %12 = tail call noundef ptr @_ZNSt9basic_iosIcSt11char_traitsIcEE3tieEPSo(ptr noundef nonnull align 8 dereferenceable(264) %11, ptr noundef null)
  %13 = load ptr, ptr @_ZSt4cout, align 8, !tbaa !5
  %14 = getelementptr i8, ptr %13, i64 -24
  %15 = load i64, ptr %14, align 8
  %16 = getelementptr inbounds i8, ptr @_ZSt4cout, i64 %15
  %17 = tail call noundef ptr @_ZNSt9basic_iosIcSt11char_traitsIcEE3tieEPSo(ptr noundef nonnull align 8 dereferenceable(264) %16, ptr noundef null)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %1) #8
  %18 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERx(ptr noundef nonnull align 8 dereferenceable(16) @_ZSt3cin, ptr noundef nonnull align 8 dereferenceable(8) %1)
  %19 = load i64, ptr %1, align 8, !tbaa !8
  %20 = add nsw i64 %19, -1
  store i64 %20, ptr %1, align 8, !tbaa !8
  %.not274 = icmp eq i64 %19, 0
  br i1 %.not274, label %._crit_edge277, label %.lr.ph276

.lr.ph276:                                        ; preds = %0, %._crit_edge273
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #8
  %21 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERx(ptr noundef nonnull align 8 dereferenceable(16) @_ZSt3cin, ptr noundef nonnull align 8 dereferenceable(8) %2)
  %22 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERx(ptr noundef nonnull align 8 dereferenceable(16) %21, ptr noundef nonnull align 8 dereferenceable(8) %3)
  %23 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERx(ptr noundef nonnull align 8 dereferenceable(16) %22, ptr noundef nonnull align 8 dereferenceable(8) %4)
  %24 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERx(ptr noundef nonnull align 8 dereferenceable(16) %23, ptr noundef nonnull align 8 dereferenceable(8) %5)
  %25 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERx(ptr noundef nonnull align 8 dereferenceable(16) %24, ptr noundef nonnull align 8 dereferenceable(8) %6)
  %26 = load i64, ptr %2, align 8, !tbaa !8
  %27 = load i64, ptr %3, align 8, !tbaa !8
  %28 = call ptr @llvm.stacksave.p0()
  %29 = mul nuw i64 %27, %26
  %30 = alloca i8, i64 %29, align 16
  %31 = load i64, ptr %2, align 8, !tbaa !8
  %32 = icmp sgt i64 %31, 0
  br i1 %32, label %.preheader124.lr.ph, label %._crit_edge132

.preheader124.lr.ph:                              ; preds = %.lr.ph276
  %33 = load i64, ptr %3, align 8, !tbaa !8
  %34 = icmp sgt i64 %33, 0
  br i1 %34, label %.preheader124.us.preheader, label %._crit_edge132

.preheader124.us.preheader:                       ; preds = %.preheader124.lr.ph
  %xtraiter = and i64 %31, 7
  %35 = icmp ult i64 %31, 8
  br i1 %35, label %._crit_edge132.loopexit.unr-lcssa, label %.preheader124.us.preheader.new

.preheader124.us.preheader.new:                   ; preds = %.preheader124.us.preheader
  %unroll_iter = and i64 %31, 9223372036854775800
  br label %.preheader124.us

.preheader124.us:                                 ; preds = %.preheader124.us, %.preheader124.us.preheader.new
  %.0104131.us = phi i64 [ 0, %.preheader124.us.preheader.new ], [ %51, %.preheader124.us ]
  %niter = phi i64 [ 0, %.preheader124.us.preheader.new ], [ %niter.next.7, %.preheader124.us ]
  %36 = mul nsw i64 %27, %.0104131.us
  %scevgep = getelementptr i8, ptr %30, i64 %36
  call void @llvm.memset.p0.i64(ptr align 8 %scevgep, i8 46, i64 %33, i1 false), !tbaa !11
  %37 = or disjoint i64 %.0104131.us, 1
  %38 = mul nsw i64 %27, %37
  %scevgep.1 = getelementptr i8, ptr %30, i64 %38
  call void @llvm.memset.p0.i64(ptr align 1 %scevgep.1, i8 46, i64 %33, i1 false), !tbaa !11
  %39 = or disjoint i64 %.0104131.us, 2
  %40 = mul nsw i64 %27, %39
  %scevgep.2 = getelementptr i8, ptr %30, i64 %40
  call void @llvm.memset.p0.i64(ptr align 2 %scevgep.2, i8 46, i64 %33, i1 false), !tbaa !11
  %41 = or disjoint i64 %.0104131.us, 3
  %42 = mul nsw i64 %27, %41
  %scevgep.3 = getelementptr i8, ptr %30, i64 %42
  call void @llvm.memset.p0.i64(ptr align 1 %scevgep.3, i8 46, i64 %33, i1 false), !tbaa !11
  %43 = or disjoint i64 %.0104131.us, 4
  %44 = mul nsw i64 %27, %43
  %scevgep.4 = getelementptr i8, ptr %30, i64 %44
  call void @llvm.memset.p0.i64(ptr align 4 %scevgep.4, i8 46, i64 %33, i1 false), !tbaa !11
  %45 = or disjoint i64 %.0104131.us, 5
  %46 = mul nsw i64 %27, %45
  %scevgep.5 = getelementptr i8, ptr %30, i64 %46
  call void @llvm.memset.p0.i64(ptr align 1 %scevgep.5, i8 46, i64 %33, i1 false), !tbaa !11
  %47 = or disjoint i64 %.0104131.us, 6
  %48 = mul nsw i64 %27, %47
  %scevgep.6 = getelementptr i8, ptr %30, i64 %48
  call void @llvm.memset.p0.i64(ptr align 2 %scevgep.6, i8 46, i64 %33, i1 false), !tbaa !11
  %49 = or disjoint i64 %.0104131.us, 7
  %50 = mul nsw i64 %27, %49
  %scevgep.7 = getelementptr i8, ptr %30, i64 %50
  call void @llvm.memset.p0.i64(ptr align 1 %scevgep.7, i8 46, i64 %33, i1 false), !tbaa !11
  %51 = add nuw nsw i64 %.0104131.us, 8
  %niter.next.7 = add i64 %niter, 8
  %niter.ncmp.7 = icmp eq i64 %niter.next.7, %unroll_iter
  br i1 %niter.ncmp.7, label %._crit_edge132.loopexit.unr-lcssa, label %.preheader124.us, !llvm.loop !12

._crit_edge132.loopexit.unr-lcssa:                ; preds = %.preheader124.us, %.preheader124.us.preheader
  %.0104131.us.unr = phi i64 [ 0, %.preheader124.us.preheader ], [ %51, %.preheader124.us ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge132, label %.preheader124.us.epil

.preheader124.us.epil:                            ; preds = %._crit_edge132.loopexit.unr-lcssa, %.preheader124.us.epil
  %.0104131.us.epil = phi i64 [ %53, %.preheader124.us.epil ], [ %.0104131.us.unr, %._crit_edge132.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.preheader124.us.epil ], [ 0, %._crit_edge132.loopexit.unr-lcssa ]
  %52 = mul nsw i64 %27, %.0104131.us.epil
  %scevgep.epil = getelementptr i8, ptr %30, i64 %52
  call void @llvm.memset.p0.i64(ptr align 1 %scevgep.epil, i8 46, i64 %33, i1 false), !tbaa !11
  %53 = add nuw nsw i64 %.0104131.us.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter
  br i1 %epil.iter.cmp.not, label %._crit_edge132, label %.preheader124.us.epil, !llvm.loop !14

._crit_edge132:                                   ; preds = %._crit_edge132.loopexit.unr-lcssa, %.preheader124.us.epil, %.preheader124.lr.ph, %.lr.ph276
  %54 = load i64, ptr %4, align 8, !tbaa !8
  %55 = load i64, ptr %5, align 8, !tbaa !8
  %.not111 = icmp sgt i64 %54, %55
  br i1 %.not111, label %138, label %56

56:                                               ; preds = %._crit_edge132
  %57 = load i64, ptr %6, align 8, !tbaa !8
  %.not112 = icmp sgt i64 %54, %57
  br i1 %.not112, label %138, label %58

58:                                               ; preds = %56
  br i1 %32, label %.preheader123.lr.ph, label %._crit_edge273

.preheader123.lr.ph:                              ; preds = %58
  %59 = icmp slt i64 %57, %55
  %60 = load i64, ptr %3, align 8, !tbaa !8
  %61 = icmp sgt i64 %60, 0
  %.fr = freeze i1 %59
  br i1 %61, label %.preheader123.us, label %.preheader.preheader

.preheader123.us:                                 ; preds = %.preheader123.lr.ph, %._crit_edge.us152
  %.0102147.us = phi i64 [ %89, %._crit_edge.us152 ], [ 0, %.preheader123.lr.ph ]
  %.promoted141146.us = phi i64 [ %.promoted138.us, %._crit_edge.us152 ], [ %55, %.preheader123.lr.ph ]
  %62 = phi i64 [ %88, %._crit_edge.us152 ], [ %54, %.preheader123.lr.ph ]
  %63 = phi i64 [ %87, %._crit_edge.us152 ], [ %57, %.preheader123.lr.ph ]
  %64 = mul nsw i64 %.0102147.us, %27
  %65 = getelementptr inbounds i8, ptr %30, i64 %64
  br i1 %.fr, label %.lr.ph.split.us.us, label %.lr.ph.split.us151

.lr.ph.split.us151:                               ; preds = %.preheader123.us, %82
  %66 = phi i64 [ %83, %82 ], [ %62, %.preheader123.us ]
  %.promoted140.us = phi i64 [ %.promoted139.us, %82 ], [ %.promoted141146.us, %.preheader123.us ]
  %.0101135.us149 = phi i64 [ %86, %82 ], [ 0, %.preheader123.us ]
  %67 = phi i64 [ %85, %82 ], [ %.promoted141146.us, %.preheader123.us ]
  %68 = phi i64 [ %84, %82 ], [ %62, %.preheader123.us ]
  %69 = add nuw nsw i64 %.0101135.us149, %.0102147.us
  %70 = and i64 %69, 1
  %71 = icmp eq i64 %70, 0
  br i1 %71, label %77, label %72

72:                                               ; preds = %.lr.ph.split.us151
  %73 = icmp eq i64 %67, 0
  br i1 %73, label %82, label %74

74:                                               ; preds = %72
  %75 = getelementptr inbounds i8, ptr %65, i64 %.0101135.us149
  store i8 71, ptr %75, align 1, !tbaa !11
  %76 = add nsw i64 %67, -1
  store i64 %76, ptr %5, align 8, !tbaa !8
  br label %82

77:                                               ; preds = %.lr.ph.split.us151
  %78 = icmp sgt i64 %68, 0
  br i1 %78, label %79, label %82

79:                                               ; preds = %77
  %80 = getelementptr inbounds i8, ptr %65, i64 %.0101135.us149
  store i8 82, ptr %80, align 1, !tbaa !11
  %81 = add nsw i64 %68, -1
  store i64 %81, ptr %4, align 8, !tbaa !8
  br label %82

82:                                               ; preds = %79, %77, %74, %72
  %83 = phi i64 [ %81, %79 ], [ %66, %77 ], [ %66, %74 ], [ %66, %72 ]
  %.promoted139.us = phi i64 [ %.promoted140.us, %79 ], [ %.promoted140.us, %77 ], [ %76, %74 ], [ %.promoted140.us, %72 ]
  %84 = phi i64 [ %81, %79 ], [ %68, %77 ], [ %68, %74 ], [ %68, %72 ]
  %85 = phi i64 [ %67, %79 ], [ %67, %77 ], [ %76, %74 ], [ 0, %72 ]
  %86 = add nuw nsw i64 %.0101135.us149, 1
  %exitcond296.not = icmp eq i64 %86, %60
  br i1 %exitcond296.not, label %._crit_edge.us152, label %.lr.ph.split.us151, !llvm.loop !16

._crit_edge.us152:                                ; preds = %82, %107
  %87 = phi i64 [ %108, %107 ], [ %63, %82 ]
  %88 = phi i64 [ %109, %107 ], [ %83, %82 ]
  %.promoted138.us = phi i64 [ %.promoted141146.us, %107 ], [ %.promoted139.us, %82 ]
  %89 = add nuw nsw i64 %.0102147.us, 1
  %exitcond298.not = icmp eq i64 %89, %31
  br i1 %exitcond298.not, label %.preheader128, label %.preheader123.us, !llvm.loop !17

.lr.ph.split.us.us:                               ; preds = %.preheader123.us, %107
  %90 = phi i64 [ %108, %107 ], [ %63, %.preheader123.us ]
  %91 = phi i64 [ %109, %107 ], [ %62, %.preheader123.us ]
  %.0101135.us.us = phi i64 [ %112, %107 ], [ 0, %.preheader123.us ]
  %92 = phi i64 [ %111, %107 ], [ %63, %.preheader123.us ]
  %93 = phi i64 [ %110, %107 ], [ %62, %.preheader123.us ]
  %94 = add nuw nsw i64 %.0101135.us.us, %.0102147.us
  %95 = and i64 %94, 1
  %96 = icmp eq i64 %95, 0
  br i1 %96, label %102, label %97

97:                                               ; preds = %.lr.ph.split.us.us
  %98 = icmp eq i64 %92, 0
  br i1 %98, label %107, label %99

99:                                               ; preds = %97
  %100 = getelementptr inbounds i8, ptr %65, i64 %.0101135.us.us
  store i8 66, ptr %100, align 1, !tbaa !11
  %101 = add nsw i64 %92, -1
  store i64 %101, ptr %6, align 8, !tbaa !8
  br label %107

102:                                              ; preds = %.lr.ph.split.us.us
  %103 = icmp sgt i64 %93, 0
  br i1 %103, label %104, label %107

104:                                              ; preds = %102
  %105 = getelementptr inbounds i8, ptr %65, i64 %.0101135.us.us
  store i8 82, ptr %105, align 1, !tbaa !11
  %106 = add nsw i64 %93, -1
  store i64 %106, ptr %4, align 8, !tbaa !8
  br label %107

107:                                              ; preds = %104, %102, %99, %97
  %108 = phi i64 [ %90, %104 ], [ %90, %102 ], [ %101, %99 ], [ %90, %97 ]
  %109 = phi i64 [ %106, %104 ], [ %91, %102 ], [ %91, %99 ], [ %91, %97 ]
  %110 = phi i64 [ %106, %104 ], [ %93, %102 ], [ %93, %99 ], [ %93, %97 ]
  %111 = phi i64 [ %92, %104 ], [ %92, %102 ], [ %101, %99 ], [ 0, %97 ]
  %112 = add nuw nsw i64 %.0101135.us.us, 1
  %exitcond297.not = icmp eq i64 %112, %60
  br i1 %exitcond297.not, label %._crit_edge.us152, label %.lr.ph.split.us.us, !llvm.loop !16

.preheader128:                                    ; preds = %._crit_edge.us152
  br i1 %32, label %.preheader122.lr.ph, label %._crit_edge273

.preheader122.lr.ph:                              ; preds = %.preheader128
  %.pr = load i64, ptr %3, align 8, !tbaa !8
  %113 = icmp sgt i64 %.pr, 0
  br i1 %113, label %.preheader122.us, label %.preheader.preheader

.preheader122.us:                                 ; preds = %.preheader122.lr.ph, %._crit_edge.us176
  %.0100175.us = phi i64 [ %137, %._crit_edge.us176 ], [ 0, %.preheader122.lr.ph ]
  %.promoted155161174.us = phi i64 [ %.promoted155159.us, %._crit_edge.us176 ], [ %88, %.preheader122.lr.ph ]
  %.promoted154166173.us = phi i64 [ %.promoted154164.us, %._crit_edge.us176 ], [ %.promoted138.us, %.preheader122.lr.ph ]
  %.promoted153171172.us = phi i64 [ %.promoted153169.us, %._crit_edge.us176 ], [ %87, %.preheader122.lr.ph ]
  %114 = mul nsw i64 %.0100175.us, %27
  %115 = getelementptr inbounds i8, ptr %30, i64 %114
  br label %116

116:                                              ; preds = %.preheader122.us, %132
  %.promoted153170.us = phi i64 [ %.promoted153171172.us, %.preheader122.us ], [ %.promoted153169.us, %132 ]
  %.promoted154165.us = phi i64 [ %.promoted154166173.us, %.preheader122.us ], [ %.promoted154164.us, %132 ]
  %.promoted155160.us = phi i64 [ %.promoted155161174.us, %.preheader122.us ], [ %.promoted155159.us, %132 ]
  %.099156.us = phi i64 [ 0, %.preheader122.us ], [ %136, %132 ]
  %117 = phi i64 [ %.promoted153171172.us, %.preheader122.us ], [ %135, %132 ]
  %118 = phi i64 [ %.promoted154166173.us, %.preheader122.us ], [ %134, %132 ]
  %119 = phi i64 [ %.promoted155161174.us, %.preheader122.us ], [ %133, %132 ]
  %120 = getelementptr inbounds i8, ptr %115, i64 %.099156.us
  %121 = load i8, ptr %120, align 1, !tbaa !11
  %.not117.us = icmp eq i8 %121, 46
  br i1 %.not117.us, label %122, label %132

122:                                              ; preds = %116
  %123 = icmp sgt i64 %117, 0
  br i1 %123, label %130, label %124

124:                                              ; preds = %122
  %125 = icmp sgt i64 %118, 0
  br i1 %125, label %128, label %126

126:                                              ; preds = %124
  store i8 82, ptr %120, align 1, !tbaa !11
  %127 = add nsw i64 %119, -1
  store i64 %127, ptr %4, align 8, !tbaa !8
  br label %132

128:                                              ; preds = %124
  store i8 71, ptr %120, align 1, !tbaa !11
  %129 = add nsw i64 %118, -1
  store i64 %129, ptr %5, align 8, !tbaa !8
  br label %132

130:                                              ; preds = %122
  store i8 66, ptr %120, align 1, !tbaa !11
  %131 = add nsw i64 %117, -1
  store i64 %131, ptr %6, align 8, !tbaa !8
  br label %132

132:                                              ; preds = %130, %128, %126, %116
  %.promoted153169.us = phi i64 [ %131, %130 ], [ %.promoted153170.us, %126 ], [ %.promoted153170.us, %128 ], [ %.promoted153170.us, %116 ]
  %.promoted154164.us = phi i64 [ %.promoted154165.us, %130 ], [ %.promoted154165.us, %126 ], [ %129, %128 ], [ %.promoted154165.us, %116 ]
  %.promoted155159.us = phi i64 [ %.promoted155160.us, %130 ], [ %127, %126 ], [ %.promoted155160.us, %128 ], [ %.promoted155160.us, %116 ]
  %133 = phi i64 [ %119, %130 ], [ %127, %126 ], [ %119, %128 ], [ %119, %116 ]
  %134 = phi i64 [ %118, %130 ], [ %118, %126 ], [ %129, %128 ], [ %118, %116 ]
  %135 = phi i64 [ %131, %130 ], [ %117, %126 ], [ %117, %128 ], [ %117, %116 ]
  %136 = add nuw nsw i64 %.099156.us, 1
  %exitcond299.not = icmp eq i64 %136, %.pr
  br i1 %exitcond299.not, label %._crit_edge.us176, label %116, !llvm.loop !18

._crit_edge.us176:                                ; preds = %132
  %137 = add nuw nsw i64 %.0100175.us, 1
  %exitcond300.not = icmp eq i64 %137, %31
  br i1 %exitcond300.not, label %.loopexit, label %.preheader122.us, !llvm.loop !19

138:                                              ; preds = %56, %._crit_edge132
  %.not113 = icmp sgt i64 %55, %54
  br i1 %.not113, label %221, label %139

139:                                              ; preds = %138
  %140 = load i64, ptr %6, align 8, !tbaa !8
  %.not114 = icmp sgt i64 %55, %140
  br i1 %.not114, label %221, label %141

141:                                              ; preds = %139
  br i1 %32, label %.preheader121.lr.ph, label %._crit_edge273

.preheader121.lr.ph:                              ; preds = %141
  %142 = icmp slt i64 %140, %54
  %143 = load i64, ptr %3, align 8, !tbaa !8
  %144 = icmp sgt i64 %143, 0
  %.fr181 = freeze i1 %142
  br i1 %144, label %.preheader121.us, label %.preheader.preheader

.preheader121.us:                                 ; preds = %.preheader121.lr.ph, %._crit_edge.us199
  %.098194.us = phi i64 [ %172, %._crit_edge.us199 ], [ 0, %.preheader121.lr.ph ]
  %.promoted177187193.us = phi i64 [ %.promoted177184.us, %._crit_edge.us199 ], [ %54, %.preheader121.lr.ph ]
  %145 = phi i64 [ %171, %._crit_edge.us199 ], [ %55, %.preheader121.lr.ph ]
  %146 = phi i64 [ %170, %._crit_edge.us199 ], [ %140, %.preheader121.lr.ph ]
  %147 = mul nsw i64 %.098194.us, %27
  %148 = getelementptr inbounds i8, ptr %30, i64 %147
  br i1 %.fr181, label %.lr.ph.split.us.us200, label %.lr.ph.split.us198

.lr.ph.split.us198:                               ; preds = %.preheader121.us, %165
  %149 = phi i64 [ %166, %165 ], [ %145, %.preheader121.us ]
  %.promoted177186.us = phi i64 [ %.promoted177185.us, %165 ], [ %.promoted177187193.us, %.preheader121.us ]
  %.097180.us196 = phi i64 [ %169, %165 ], [ 0, %.preheader121.us ]
  %150 = phi i64 [ %168, %165 ], [ %.promoted177187193.us, %.preheader121.us ]
  %151 = phi i64 [ %167, %165 ], [ %145, %.preheader121.us ]
  %152 = add nuw nsw i64 %.097180.us196, %.098194.us
  %153 = and i64 %152, 1
  %154 = icmp eq i64 %153, 0
  br i1 %154, label %160, label %155

155:                                              ; preds = %.lr.ph.split.us198
  %156 = icmp sgt i64 %150, 0
  br i1 %156, label %157, label %165

157:                                              ; preds = %155
  %158 = getelementptr inbounds i8, ptr %148, i64 %.097180.us196
  store i8 82, ptr %158, align 1, !tbaa !11
  %159 = add nsw i64 %150, -1
  store i64 %159, ptr %4, align 8, !tbaa !8
  br label %165

160:                                              ; preds = %.lr.ph.split.us198
  %161 = icmp sgt i64 %151, 0
  br i1 %161, label %162, label %165

162:                                              ; preds = %160
  %163 = getelementptr inbounds i8, ptr %148, i64 %.097180.us196
  store i8 71, ptr %163, align 1, !tbaa !11
  %164 = add nsw i64 %151, -1
  store i64 %164, ptr %5, align 8, !tbaa !8
  br label %165

165:                                              ; preds = %162, %160, %157, %155
  %166 = phi i64 [ %164, %162 ], [ %149, %160 ], [ %149, %155 ], [ %149, %157 ]
  %.promoted177185.us = phi i64 [ %.promoted177186.us, %162 ], [ %.promoted177186.us, %160 ], [ %.promoted177186.us, %155 ], [ %159, %157 ]
  %167 = phi i64 [ %164, %162 ], [ %151, %160 ], [ %151, %155 ], [ %151, %157 ]
  %168 = phi i64 [ %150, %162 ], [ %150, %160 ], [ %150, %155 ], [ %159, %157 ]
  %169 = add nuw nsw i64 %.097180.us196, 1
  %exitcond301.not = icmp eq i64 %169, %143
  br i1 %exitcond301.not, label %._crit_edge.us199, label %.lr.ph.split.us198, !llvm.loop !20

._crit_edge.us199:                                ; preds = %165, %190
  %170 = phi i64 [ %191, %190 ], [ %146, %165 ]
  %171 = phi i64 [ %192, %190 ], [ %166, %165 ]
  %.promoted177184.us = phi i64 [ %.promoted177187193.us, %190 ], [ %.promoted177185.us, %165 ]
  %172 = add nuw nsw i64 %.098194.us, 1
  %exitcond303.not = icmp eq i64 %172, %31
  br i1 %exitcond303.not, label %.preheader126, label %.preheader121.us, !llvm.loop !21

.lr.ph.split.us.us200:                            ; preds = %.preheader121.us, %190
  %173 = phi i64 [ %191, %190 ], [ %146, %.preheader121.us ]
  %174 = phi i64 [ %192, %190 ], [ %145, %.preheader121.us ]
  %.097180.us.us = phi i64 [ %195, %190 ], [ 0, %.preheader121.us ]
  %175 = phi i64 [ %194, %190 ], [ %146, %.preheader121.us ]
  %176 = phi i64 [ %193, %190 ], [ %145, %.preheader121.us ]
  %177 = add nuw nsw i64 %.097180.us.us, %.098194.us
  %178 = and i64 %177, 1
  %179 = icmp eq i64 %178, 0
  br i1 %179, label %185, label %180

180:                                              ; preds = %.lr.ph.split.us.us200
  %181 = icmp sgt i64 %175, 0
  br i1 %181, label %182, label %190

182:                                              ; preds = %180
  %183 = getelementptr inbounds i8, ptr %148, i64 %.097180.us.us
  store i8 66, ptr %183, align 1, !tbaa !11
  %184 = add nsw i64 %175, -1
  store i64 %184, ptr %6, align 8, !tbaa !8
  br label %190

185:                                              ; preds = %.lr.ph.split.us.us200
  %186 = icmp sgt i64 %176, 0
  br i1 %186, label %187, label %190

187:                                              ; preds = %185
  %188 = getelementptr inbounds i8, ptr %148, i64 %.097180.us.us
  store i8 71, ptr %188, align 1, !tbaa !11
  %189 = add nsw i64 %176, -1
  store i64 %189, ptr %5, align 8, !tbaa !8
  br label %190

190:                                              ; preds = %187, %185, %182, %180
  %191 = phi i64 [ %173, %187 ], [ %173, %185 ], [ %173, %180 ], [ %184, %182 ]
  %192 = phi i64 [ %189, %187 ], [ %174, %185 ], [ %174, %180 ], [ %174, %182 ]
  %193 = phi i64 [ %189, %187 ], [ %176, %185 ], [ %176, %180 ], [ %176, %182 ]
  %194 = phi i64 [ %175, %187 ], [ %175, %185 ], [ %175, %180 ], [ %184, %182 ]
  %195 = add nuw nsw i64 %.097180.us.us, 1
  %exitcond302.not = icmp eq i64 %195, %143
  br i1 %exitcond302.not, label %._crit_edge.us199, label %.lr.ph.split.us.us200, !llvm.loop !20

.preheader126:                                    ; preds = %._crit_edge.us199
  br i1 %32, label %.preheader120.lr.ph, label %._crit_edge273

.preheader120.lr.ph:                              ; preds = %.preheader126
  %.pr342 = load i64, ptr %3, align 8, !tbaa !8
  %196 = icmp sgt i64 %.pr342, 0
  br i1 %196, label %.preheader120.us, label %.preheader.preheader

.preheader120.us:                                 ; preds = %.preheader120.lr.ph, %._crit_edge.us225
  %.096224.us = phi i64 [ %220, %._crit_edge.us225 ], [ 0, %.preheader120.lr.ph ]
  %.promoted204210223.us = phi i64 [ %.promoted204208.us, %._crit_edge.us225 ], [ %171, %.preheader120.lr.ph ]
  %.promoted203215222.us = phi i64 [ %.promoted203213.us, %._crit_edge.us225 ], [ %170, %.preheader120.lr.ph ]
  %.promoted202220221.us = phi i64 [ %.promoted202218.us, %._crit_edge.us225 ], [ %.promoted177184.us, %.preheader120.lr.ph ]
  %197 = mul nsw i64 %.096224.us, %27
  %198 = getelementptr inbounds i8, ptr %30, i64 %197
  br label %199

199:                                              ; preds = %.preheader120.us, %215
  %.promoted202219.us = phi i64 [ %.promoted202220221.us, %.preheader120.us ], [ %.promoted202218.us, %215 ]
  %.promoted203214.us = phi i64 [ %.promoted203215222.us, %.preheader120.us ], [ %.promoted203213.us, %215 ]
  %.promoted204209.us = phi i64 [ %.promoted204210223.us, %.preheader120.us ], [ %.promoted204208.us, %215 ]
  %.095205.us = phi i64 [ 0, %.preheader120.us ], [ %219, %215 ]
  %200 = phi i64 [ %.promoted202220221.us, %.preheader120.us ], [ %218, %215 ]
  %201 = phi i64 [ %.promoted203215222.us, %.preheader120.us ], [ %217, %215 ]
  %202 = phi i64 [ %.promoted204210223.us, %.preheader120.us ], [ %216, %215 ]
  %203 = getelementptr inbounds i8, ptr %198, i64 %.095205.us
  %204 = load i8, ptr %203, align 1, !tbaa !11
  %.not116.us = icmp eq i8 %204, 46
  br i1 %.not116.us, label %205, label %215

205:                                              ; preds = %199
  %206 = icmp sgt i64 %200, 0
  br i1 %206, label %213, label %207

207:                                              ; preds = %205
  %208 = icmp sgt i64 %201, 0
  br i1 %208, label %211, label %209

209:                                              ; preds = %207
  store i8 71, ptr %203, align 1, !tbaa !11
  %210 = add nsw i64 %202, -1
  store i64 %210, ptr %5, align 8, !tbaa !8
  br label %215

211:                                              ; preds = %207
  store i8 66, ptr %203, align 1, !tbaa !11
  %212 = add nsw i64 %201, -1
  store i64 %212, ptr %6, align 8, !tbaa !8
  br label %215

213:                                              ; preds = %205
  store i8 82, ptr %203, align 1, !tbaa !11
  %214 = add nsw i64 %200, -1
  store i64 %214, ptr %4, align 8, !tbaa !8
  br label %215

215:                                              ; preds = %213, %211, %209, %199
  %.promoted202218.us = phi i64 [ %214, %213 ], [ %.promoted202219.us, %209 ], [ %.promoted202219.us, %211 ], [ %.promoted202219.us, %199 ]
  %.promoted203213.us = phi i64 [ %.promoted203214.us, %213 ], [ %.promoted203214.us, %209 ], [ %212, %211 ], [ %.promoted203214.us, %199 ]
  %.promoted204208.us = phi i64 [ %.promoted204209.us, %213 ], [ %210, %209 ], [ %.promoted204209.us, %211 ], [ %.promoted204209.us, %199 ]
  %216 = phi i64 [ %202, %213 ], [ %210, %209 ], [ %202, %211 ], [ %202, %199 ]
  %217 = phi i64 [ %201, %213 ], [ %201, %209 ], [ %212, %211 ], [ %201, %199 ]
  %218 = phi i64 [ %214, %213 ], [ %200, %209 ], [ %200, %211 ], [ %200, %199 ]
  %219 = add nuw nsw i64 %.095205.us, 1
  %exitcond304.not = icmp eq i64 %219, %.pr342
  br i1 %exitcond304.not, label %._crit_edge.us225, label %199, !llvm.loop !22

._crit_edge.us225:                                ; preds = %215
  %220 = add nuw nsw i64 %.096224.us, 1
  %exitcond305.not = icmp eq i64 %220, %31
  br i1 %exitcond305.not, label %.loopexit, label %.preheader120.us, !llvm.loop !23

221:                                              ; preds = %139, %138
  br i1 %32, label %.preheader119.lr.ph, label %._crit_edge273

.preheader119.lr.ph:                              ; preds = %221
  %.promoted236 = load i64, ptr %6, align 8, !tbaa !8
  %222 = load i64, ptr %3, align 8, !tbaa !8
  %223 = icmp sgt i64 %222, 0
  br label %.preheader119

.preheader125:                                    ; preds = %._crit_edge
  br i1 %32, label %.preheader118.lr.ph, label %._crit_edge273

.preheader118.lr.ph:                              ; preds = %.preheader125
  %.promoted250 = load i64, ptr %6, align 8, !tbaa !8
  %224 = load i64, ptr %3, align 8, !tbaa !8
  %225 = icmp sgt i64 %224, 0
  br label %.preheader118

.preheader119:                                    ; preds = %.preheader119.lr.ph, %._crit_edge
  %.094242 = phi i64 [ 0, %.preheader119.lr.ph ], [ %255, %._crit_edge ]
  %.promoted226235241 = phi i64 [ %54, %.preheader119.lr.ph ], [ %.promoted226231, %._crit_edge ]
  %226 = phi i64 [ %.promoted236, %.preheader119.lr.ph ], [ %254, %._crit_edge ]
  %227 = phi i64 [ %55, %.preheader119.lr.ph ], [ %253, %._crit_edge ]
  br i1 %223, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %.preheader119
  %228 = mul nsw i64 %.094242, %27
  %229 = getelementptr inbounds i8, ptr %30, i64 %228
  br i1 %.not111, label %.lr.ph.split.us, label %.lr.ph.split

.lr.ph.split.us:                                  ; preds = %.lr.ph, %247
  %230 = phi i64 [ %248, %247 ], [ %227, %.lr.ph ]
  %231 = phi i64 [ %249, %247 ], [ %226, %.lr.ph ]
  %.093229.us = phi i64 [ %252, %247 ], [ 0, %.lr.ph ]
  %232 = phi i64 [ %251, %247 ], [ %227, %.lr.ph ]
  %233 = phi i64 [ %250, %247 ], [ %226, %.lr.ph ]
  %234 = add nuw nsw i64 %.093229.us, %.094242
  %235 = and i64 %234, 1
  %236 = icmp eq i64 %235, 0
  br i1 %236, label %242, label %237

237:                                              ; preds = %.lr.ph.split.us
  %238 = icmp sgt i64 %232, 0
  br i1 %238, label %239, label %247

239:                                              ; preds = %237
  %240 = getelementptr inbounds i8, ptr %229, i64 %.093229.us
  store i8 71, ptr %240, align 1, !tbaa !11
  %241 = add nsw i64 %232, -1
  store i64 %241, ptr %5, align 8, !tbaa !8
  br label %247

242:                                              ; preds = %.lr.ph.split.us
  %243 = icmp sgt i64 %233, 0
  br i1 %243, label %244, label %247

244:                                              ; preds = %242
  %245 = getelementptr inbounds i8, ptr %229, i64 %.093229.us
  store i8 66, ptr %245, align 1, !tbaa !11
  %246 = add nsw i64 %233, -1
  store i64 %246, ptr %6, align 8, !tbaa !8
  br label %247

247:                                              ; preds = %244, %242, %239, %237
  %248 = phi i64 [ %230, %244 ], [ %230, %242 ], [ %230, %237 ], [ %241, %239 ]
  %249 = phi i64 [ %246, %244 ], [ %231, %242 ], [ %231, %237 ], [ %231, %239 ]
  %250 = phi i64 [ %246, %244 ], [ %233, %242 ], [ %233, %237 ], [ %233, %239 ]
  %251 = phi i64 [ %232, %244 ], [ %232, %242 ], [ %232, %237 ], [ %241, %239 ]
  %252 = add nuw nsw i64 %.093229.us, 1
  %exitcond307.not = icmp eq i64 %252, %222
  br i1 %exitcond307.not, label %._crit_edge, label %.lr.ph.split.us, !llvm.loop !24

._crit_edge:                                      ; preds = %272, %247, %.preheader119
  %253 = phi i64 [ %227, %.preheader119 ], [ %248, %247 ], [ %227, %272 ]
  %254 = phi i64 [ %226, %.preheader119 ], [ %249, %247 ], [ %273, %272 ]
  %.promoted226231 = phi i64 [ %.promoted226235241, %.preheader119 ], [ %.promoted226235241, %247 ], [ %.promoted226233, %272 ]
  %255 = add nuw nsw i64 %.094242, 1
  %exitcond308.not = icmp eq i64 %255, %31
  br i1 %exitcond308.not, label %.preheader125, label %.preheader119, !llvm.loop !25

.lr.ph.split:                                     ; preds = %.lr.ph, %272
  %256 = phi i64 [ %273, %272 ], [ %226, %.lr.ph ]
  %.promoted226234 = phi i64 [ %.promoted226233, %272 ], [ %.promoted226235241, %.lr.ph ]
  %.093229 = phi i64 [ %276, %272 ], [ 0, %.lr.ph ]
  %257 = phi i64 [ %275, %272 ], [ %.promoted226235241, %.lr.ph ]
  %258 = phi i64 [ %274, %272 ], [ %226, %.lr.ph ]
  %259 = add nuw nsw i64 %.093229, %.094242
  %260 = and i64 %259, 1
  %261 = icmp eq i64 %260, 0
  br i1 %261, label %262, label %267

262:                                              ; preds = %.lr.ph.split
  %263 = icmp sgt i64 %258, 0
  br i1 %263, label %264, label %272

264:                                              ; preds = %262
  %265 = getelementptr inbounds i8, ptr %229, i64 %.093229
  store i8 66, ptr %265, align 1, !tbaa !11
  %266 = add nsw i64 %258, -1
  store i64 %266, ptr %6, align 8, !tbaa !8
  br label %272

267:                                              ; preds = %.lr.ph.split
  %268 = icmp sgt i64 %257, 0
  br i1 %268, label %269, label %272

269:                                              ; preds = %267
  %270 = getelementptr inbounds i8, ptr %229, i64 %.093229
  store i8 82, ptr %270, align 1, !tbaa !11
  %271 = add nsw i64 %257, -1
  store i64 %271, ptr %4, align 8, !tbaa !8
  br label %272

272:                                              ; preds = %264, %262, %267, %269
  %273 = phi i64 [ %266, %264 ], [ %256, %262 ], [ %256, %267 ], [ %256, %269 ]
  %.promoted226233 = phi i64 [ %.promoted226234, %264 ], [ %.promoted226234, %262 ], [ %.promoted226234, %267 ], [ %271, %269 ]
  %274 = phi i64 [ %266, %264 ], [ %258, %262 ], [ %258, %267 ], [ %258, %269 ]
  %275 = phi i64 [ %257, %264 ], [ %257, %262 ], [ %257, %267 ], [ %271, %269 ]
  %276 = add nuw nsw i64 %.093229, 1
  %exitcond306.not = icmp eq i64 %276, %222
  br i1 %exitcond306.not, label %._crit_edge, label %.lr.ph.split, !llvm.loop !24

.preheader118:                                    ; preds = %.preheader118.lr.ph, %._crit_edge249
  %.092268 = phi i64 [ 0, %.preheader118.lr.ph ], [ %279, %._crit_edge249 ]
  %.promoted246254267 = phi i64 [ %.promoted250, %.preheader118.lr.ph ], [ %.promoted246251, %._crit_edge249 ]
  %.promoted245259266 = phi i64 [ %253, %.preheader118.lr.ph ], [ %.promoted245256, %._crit_edge249 ]
  %.promoted244264265 = phi i64 [ %.promoted226231, %.preheader118.lr.ph ], [ %.promoted244261, %._crit_edge249 ]
  br i1 %225, label %.lr.ph248, label %._crit_edge249

.lr.ph248:                                        ; preds = %.preheader118
  %277 = mul nsw i64 %.092268, %27
  %278 = getelementptr inbounds i8, ptr %30, i64 %277
  br label %280

._crit_edge249:                                   ; preds = %296, %.preheader118
  %.promoted244261 = phi i64 [ %.promoted244264265, %.preheader118 ], [ %.promoted244262, %296 ]
  %.promoted245256 = phi i64 [ %.promoted245259266, %.preheader118 ], [ %.promoted245257, %296 ]
  %.promoted246251 = phi i64 [ %.promoted246254267, %.preheader118 ], [ %.promoted246252, %296 ]
  %279 = add nuw nsw i64 %.092268, 1
  %exitcond310.not = icmp eq i64 %279, %31
  br i1 %exitcond310.not, label %.loopexit, label %.preheader118, !llvm.loop !26

280:                                              ; preds = %.lr.ph248, %296
  %.promoted244263 = phi i64 [ %.promoted244264265, %.lr.ph248 ], [ %.promoted244262, %296 ]
  %.promoted245258 = phi i64 [ %.promoted245259266, %.lr.ph248 ], [ %.promoted245257, %296 ]
  %.promoted246253 = phi i64 [ %.promoted246254267, %.lr.ph248 ], [ %.promoted246252, %296 ]
  %.091247 = phi i64 [ 0, %.lr.ph248 ], [ %300, %296 ]
  %281 = phi i64 [ %.promoted244264265, %.lr.ph248 ], [ %299, %296 ]
  %282 = phi i64 [ %.promoted245259266, %.lr.ph248 ], [ %298, %296 ]
  %283 = phi i64 [ %.promoted246254267, %.lr.ph248 ], [ %297, %296 ]
  %284 = getelementptr inbounds i8, ptr %278, i64 %.091247
  %285 = load i8, ptr %284, align 1, !tbaa !11
  %.not115 = icmp eq i8 %285, 46
  br i1 %.not115, label %286, label %296

286:                                              ; preds = %280
  %287 = icmp sgt i64 %281, 0
  br i1 %287, label %288, label %290

288:                                              ; preds = %286
  store i8 82, ptr %284, align 1, !tbaa !11
  %289 = add nsw i64 %281, -1
  store i64 %289, ptr %4, align 8, !tbaa !8
  br label %296

290:                                              ; preds = %286
  %291 = icmp sgt i64 %282, 0
  br i1 %291, label %292, label %294

292:                                              ; preds = %290
  store i8 71, ptr %284, align 1, !tbaa !11
  %293 = add nsw i64 %282, -1
  store i64 %293, ptr %5, align 8, !tbaa !8
  br label %296

294:                                              ; preds = %290
  store i8 66, ptr %284, align 1, !tbaa !11
  %295 = add nsw i64 %283, -1
  store i64 %295, ptr %6, align 8, !tbaa !8
  br label %296

296:                                              ; preds = %288, %294, %292, %280
  %.promoted244262 = phi i64 [ %289, %288 ], [ %.promoted244263, %294 ], [ %.promoted244263, %292 ], [ %.promoted244263, %280 ]
  %.promoted245257 = phi i64 [ %.promoted245258, %288 ], [ %.promoted245258, %294 ], [ %293, %292 ], [ %.promoted245258, %280 ]
  %.promoted246252 = phi i64 [ %.promoted246253, %288 ], [ %295, %294 ], [ %.promoted246253, %292 ], [ %.promoted246253, %280 ]
  %297 = phi i64 [ %283, %288 ], [ %295, %294 ], [ %283, %292 ], [ %283, %280 ]
  %298 = phi i64 [ %282, %288 ], [ %282, %294 ], [ %293, %292 ], [ %282, %280 ]
  %299 = phi i64 [ %289, %288 ], [ %281, %294 ], [ %281, %292 ], [ %281, %280 ]
  %300 = add nuw nsw i64 %.091247, 1
  %exitcond309.not = icmp eq i64 %300, %224
  br i1 %exitcond309.not, label %._crit_edge249, label %280, !llvm.loop !27

.loopexit:                                        ; preds = %._crit_edge.us176, %._crit_edge.us225, %._crit_edge249
  br i1 %32, label %.preheader.preheader, label %._crit_edge273

.preheader.preheader:                             ; preds = %.preheader121.lr.ph, %.preheader123.lr.ph, %.preheader122.lr.ph, %.preheader120.lr.ph, %.loopexit
  br label %.preheader

.preheader:                                       ; preds = %.preheader.preheader, %._crit_edge271
  %.090272 = phi i64 [ %308, %._crit_edge271 ], [ 0, %.preheader.preheader ]
  %301 = load i64, ptr %3, align 8, !tbaa !8
  %302 = icmp sgt i64 %301, 0
  br i1 %302, label %.lr.ph270, label %._crit_edge271

.lr.ph270:                                        ; preds = %.preheader
  %303 = mul nsw i64 %.090272, %27
  %304 = getelementptr inbounds i8, ptr %30, i64 %303
  br label %311

._crit_edge273:                                   ; preds = %._crit_edge271, %221, %141, %58, %.preheader125, %.preheader126, %.preheader128, %.loopexit
  call void @llvm.stackrestore.p0(ptr %28)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #8
  %305 = load i64, ptr %1, align 8, !tbaa !8
  %306 = add nsw i64 %305, -1
  store i64 %306, ptr %1, align 8, !tbaa !8
  %.not = icmp eq i64 %305, 0
  br i1 %.not, label %._crit_edge277, label %.lr.ph276, !llvm.loop !28

._crit_edge271:                                   ; preds = %311, %.preheader
  %307 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, i8 noundef signext 10)
  %308 = add nuw nsw i64 %.090272, 1
  %309 = load i64, ptr %2, align 8, !tbaa !8
  %310 = icmp slt i64 %308, %309
  br i1 %310, label %.preheader, label %._crit_edge273, !llvm.loop !29

311:                                              ; preds = %.lr.ph270, %311
  %.0269 = phi i64 [ 0, %.lr.ph270 ], [ %315, %311 ]
  %312 = getelementptr inbounds i8, ptr %304, i64 %.0269
  %313 = load i8, ptr %312, align 1, !tbaa !11
  %314 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, i8 noundef signext %313)
  %315 = add nuw nsw i64 %.0269, 1
  %316 = load i64, ptr %3, align 8, !tbaa !8
  %317 = icmp slt i64 %315, %316
  br i1 %317, label %311, label %._crit_edge271, !llvm.loop !30

._crit_edge277:                                   ; preds = %._crit_edge273, %0
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %1) #8
  ret i32 0
}

declare noundef zeroext i1 @_ZNSt8ios_base15sync_with_stdioEb(i1 noundef zeroext) local_unnamed_addr #1

; Function Attrs: mustprogress nounwind uwtable
declare noundef ptr @_ZNSt9basic_iosIcSt11char_traitsIcEE3tieEPSo(ptr noundef nonnull align 8 dereferenceable(264), ptr noundef) local_unnamed_addr #2 align 2

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

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(16) ptr @_ZNSirsERx(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn
declare ptr @llvm.stacksave.p0() #5

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8), i8 noundef signext) local_unnamed_addr #6

; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn
declare void @llvm.stackrestore.p0(ptr) #5

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #7

attributes #0 = { mustprogress norecurse uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { 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 #3 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { mustprogress 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 #5 = { mustprogress nocallback nofree nosync nounwind willreturn }
attributes #6 = { inlinehint mustprogress 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 #7 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #8 = { 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 = !{!"vtable pointer", !7, i64 0}
!7 = !{!"Simple C++ TBAA"}
!8 = !{!9, !9, i64 0}
!9 = !{!"long long", !10, i64 0}
!10 = !{!"omnipotent char", !7, i64 0}
!11 = !{!10, !10, i64 0}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.unroll.disable"}
!16 = distinct !{!16, !13}
!17 = distinct !{!17, !13}
!18 = distinct !{!18, !13}
!19 = distinct !{!19, !13}
!20 = distinct !{!20, !13}
!21 = distinct !{!21, !13}
!22 = distinct !{!22, !13}
!23 = distinct !{!23, !13}
!24 = distinct !{!24, !13}
!25 = distinct !{!25, !13}
!26 = distinct !{!26, !13}
!27 = distinct !{!27, !13}
!28 = distinct !{!28, !13}
!29 = distinct !{!29, !13}
!30 = distinct !{!30, !13}


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