; LLVM IR from 0intro/wmii :: lib/libfmt/fltfmt.ll_ (efgfmt)

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

%struct.Fmt = type { i8, ptr, ptr, ptr, ptr, ptr, i32, [1 x %struct.__va_list_tag], i32, i32, i32, i64, ptr, ptr, ptr }
%struct.__va_list_tag = type { i32, i32, ptr, ptr }

@special = external hidden global [6 x ptr], align 16
@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [65 x i8], align 1
@__PRETTY_FUNCTION__.__efgfmt = external hidden unnamed_addr constant [20 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local i32 @__efgfmt(ptr noundef %0) #0 {
  %2 = alloca i32, align 4
  %3 = alloca ptr, align 8
  %4 = alloca [27 x i8], align 16
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca [10 x i8], align 1
  %10 = alloca ptr, align 8
  %11 = alloca double, align 8
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca ptr, align 8
  %33 = alloca ptr, align 8
  %34 = alloca i32, align 4
  store ptr %0, ptr %3, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 27, ptr %4) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #6
  call void @llvm.lifetime.start.p0(i64 10, ptr %9) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #6
  %35 = load ptr, ptr %3, align 8, !tbaa !5
  %36 = getelementptr inbounds %struct.Fmt, ptr %35, i32 0, i32 11
  %37 = load i64, ptr %36, align 8, !tbaa !9
  %38 = and i64 %37, 1024
  %39 = icmp ne i64 %38, 0
  br i1 %39, label %40, label %51

40:                                               ; preds = %1
  %41 = load ptr, ptr %3, align 8, !tbaa !5
  %42 = getelementptr inbounds %struct.Fmt, ptr %41, i32 0, i32 7
  %43 = getelementptr inbounds [1 x %struct.__va_list_tag], ptr %42, i64 0, i64 0
  %44 = getelementptr inbounds %struct.__va_list_tag, ptr %43, i32 0, i32 2
  %45 = load ptr, ptr %44, align 8
  %46 = getelementptr inbounds i8, ptr %45, i32 15
  %47 = call ptr @llvm.ptrmask.p0.i64(ptr %46, i64 -16)
  %48 = getelementptr i8, ptr %47, i32 16
  store ptr %48, ptr %44, align 8
  %49 = load x86_fp80, ptr %47, align 16, !tbaa !13
  %50 = fptrunc x86_fp80 %49 to double
  store double %50, ptr %11, align 8, !tbaa !15
  br label %70

51:                                               ; preds = %1
  %52 = load ptr, ptr %3, align 8, !tbaa !5
  %53 = getelementptr inbounds %struct.Fmt, ptr %52, i32 0, i32 7
  %54 = getelementptr inbounds [1 x %struct.__va_list_tag], ptr %53, i64 0, i64 0
  %55 = getelementptr inbounds %struct.__va_list_tag, ptr %54, i32 0, i32 1
  %56 = load i32, ptr %55, align 4
  %57 = icmp ule i32 %56, 160
  br i1 %57, label %58, label %63

58:                                               ; preds = %51
  %59 = getelementptr inbounds %struct.__va_list_tag, ptr %54, i32 0, i32 3
  %60 = load ptr, ptr %59, align 8
  %61 = getelementptr i8, ptr %60, i32 %56
  %62 = add i32 %56, 16
  store i32 %62, ptr %55, align 4
  br label %67

63:                                               ; preds = %51
  %64 = getelementptr inbounds %struct.__va_list_tag, ptr %54, i32 0, i32 2
  %65 = load ptr, ptr %64, align 8
  %66 = getelementptr i8, ptr %65, i32 8
  store ptr %66, ptr %64, align 8
  br label %67

67:                                               ; preds = %63, %58
  %68 = phi ptr [ %61, %58 ], [ %65, %63 ]
  %69 = load double, ptr %68, align 8, !tbaa !15
  store double %69, ptr %11, align 8, !tbaa !15
  br label %70

70:                                               ; preds = %67, %40
  %71 = load ptr, ptr %3, align 8, !tbaa !5
  %72 = getelementptr inbounds %struct.Fmt, ptr %71, i32 0, i32 11
  %73 = load i64, ptr %72, align 8, !tbaa !9
  %74 = trunc i64 %73 to i32
  store i32 %74, ptr %17, align 4, !tbaa !17
  %75 = load ptr, ptr %3, align 8, !tbaa !5
  %76 = getelementptr inbounds %struct.Fmt, ptr %75, i32 0, i32 11
  store i64 0, ptr %76, align 8, !tbaa !9
  store i32 6, ptr %23, align 4, !tbaa !17
  %77 = load i32, ptr %17, align 4, !tbaa !17
  %78 = and i32 %77, 4
  %79 = icmp ne i32 %78, 0
  br i1 %79, label %80, label %84

80:                                               ; preds = %70
  %81 = load ptr, ptr %3, align 8, !tbaa !5
  %82 = getelementptr inbounds %struct.Fmt, ptr %81, i32 0, i32 10
  %83 = load i32, ptr %82, align 8, !tbaa !18
  store i32 %83, ptr %23, align 4, !tbaa !17
  br label %84

84:                                               ; preds = %80, %70
  %85 = load ptr, ptr %3, align 8, !tbaa !5
  %86 = getelementptr inbounds %struct.Fmt, ptr %85, i32 0, i32 8
  %87 = load i32, ptr %86, align 8, !tbaa !19
  store i32 %87, ptr %13, align 4, !tbaa !17
  store i32 0, ptr %27, align 4, !tbaa !17
  %88 = load i32, ptr %13, align 4, !tbaa !17
  switch i32 %88, label %92 [
    i32 65, label %89
    i32 69, label %89
    i32 70, label %89
    i32 71, label %89
  ]

89:                                               ; preds = %84, %84, %84, %84
  %90 = load i32, ptr %13, align 4, !tbaa !17
  %91 = add nsw i32 %90, 32
  store i32 %91, ptr %13, align 4, !tbaa !17
  store i32 1, ptr %27, align 4, !tbaa !17
  br label %92

92:                                               ; preds = %89, %84
  %93 = load double, ptr %11, align 8, !tbaa !15
  %94 = call i32 @__isNaN(double noundef %93)
  %95 = icmp ne i32 %94, 0
  br i1 %95, label %96, label %117

96:                                               ; preds = %92
  %97 = load i32, ptr %27, align 4, !tbaa !17
  %98 = add nsw i32 0, %97
  %99 = sext i32 %98 to i64
  %100 = getelementptr inbounds [6 x ptr], ptr @special, i64 0, i64 %99
  %101 = load ptr, ptr %100, align 8, !tbaa !5
  store ptr %101, ptr %8, align 8, !tbaa !5
  br label %102

102:                                              ; preds = %131, %121, %96
  %103 = load i32, ptr %17, align 4, !tbaa !17
  %104 = and i32 %103, 3
  %105 = sext i32 %104 to i64
  %106 = load ptr, ptr %3, align 8, !tbaa !5
  %107 = getelementptr inbounds %struct.Fmt, ptr %106, i32 0, i32 11
  store i64 %105, ptr %107, align 8, !tbaa !9
  %108 = load ptr, ptr %3, align 8, !tbaa !5
  %109 = load ptr, ptr %8, align 8, !tbaa !5
  %110 = load ptr, ptr %8, align 8, !tbaa !5
  %111 = call i64 @strlen(ptr noundef %110) #7
  %112 = trunc i64 %111 to i32
  %113 = load ptr, ptr %8, align 8, !tbaa !5
  %114 = call i64 @strlen(ptr noundef %113) #7
  %115 = trunc i64 %114 to i32
  %116 = call i32 @__fmtcpy(ptr noundef %108, ptr noundef %109, i32 noundef %112, i32 noundef %115)
  store i32 %116, ptr %2, align 4
  store i32 1, ptr %34, align 4
  br label %864

117:                                              ; preds = %92
  %118 = load double, ptr %11, align 8, !tbaa !15
  %119 = call i32 @__isInf(double noundef %118, i32 noundef 1)
  %120 = icmp ne i32 %119, 0
  br i1 %120, label %121, label %127

121:                                              ; preds = %117
  %122 = load i32, ptr %27, align 4, !tbaa !17
  %123 = add nsw i32 2, %122
  %124 = sext i32 %123 to i64
  %125 = getelementptr inbounds [6 x ptr], ptr @special, i64 0, i64 %124
  %126 = load ptr, ptr %125, align 8, !tbaa !5
  store ptr %126, ptr %8, align 8, !tbaa !5
  br label %102

127:                                              ; preds = %117
  %128 = load double, ptr %11, align 8, !tbaa !15
  %129 = call i32 @__isInf(double noundef %128, i32 noundef -1)
  %130 = icmp ne i32 %129, 0
  br i1 %130, label %131, label %137

131:                                              ; preds = %127
  %132 = load i32, ptr %27, align 4, !tbaa !17
  %133 = add nsw i32 4, %132
  %134 = sext i32 %133 to i64
  %135 = getelementptr inbounds [6 x ptr], ptr @special, i64 0, i64 %134
  %136 = load ptr, ptr %135, align 8, !tbaa !5
  store ptr %136, ptr %8, align 8, !tbaa !5
  br label %102

137:                                              ; preds = %127
  %138 = getelementptr inbounds [27 x i8], ptr %4, i64 0, i64 0
  store ptr %138, ptr %6, align 8, !tbaa !5
  %139 = load double, ptr %11, align 8, !tbaa !15
  %140 = load ptr, ptr %6, align 8, !tbaa !5
  call void @xdtoa(double noundef %139, ptr noundef %140, ptr noundef %16, ptr noundef %19, ptr noundef %18)
  %141 = load ptr, ptr %3, align 8, !tbaa !5
  %142 = getelementptr inbounds %struct.Fmt, ptr %141, i32 0, i32 12
  %143 = load ptr, ptr %142, align 8, !tbaa !20
  store ptr %143, ptr %5, align 8, !tbaa !5
  %144 = load ptr, ptr %5, align 8, !tbaa !5
  %145 = icmp eq ptr %144, null
  br i1 %145, label %146, label %147

146:                                              ; preds = %137
  store ptr @.str, ptr %5, align 8, !tbaa !5
  br label %147

147:                                              ; preds = %146, %137
  %148 = load ptr, ptr %5, align 8, !tbaa !5
  %149 = call i32 @utflen(ptr noundef %148)
  store i32 %149, ptr %14, align 4, !tbaa !17
  %150 = load i32, ptr %13, align 4, !tbaa !17
  store i32 %150, ptr %24, align 4, !tbaa !17
  %151 = load i32, ptr %13, align 4, !tbaa !17
  switch i32 %151, label %184 [
    i32 103, label %152
    i32 101, label %185
    i32 102, label %246
  ]

152:                                              ; preds = %147
  %153 = load i32, ptr %23, align 4, !tbaa !17
  %154 = icmp eq i32 %153, 0
  br i1 %154, label %155, label %156

155:                                              ; preds = %152
  store i32 1, ptr %23, align 4, !tbaa !17
  br label %156

156:                                              ; preds = %155, %152
  %157 = load i32, ptr %18, align 4, !tbaa !17
  %158 = load i32, ptr %23, align 4, !tbaa !17
  %159 = icmp sgt i32 %157, %158
  br i1 %159, label %160, label %183

160:                                              ; preds = %156
  %161 = load ptr, ptr %6, align 8, !tbaa !5
  %162 = load i32, ptr %23, align 4, !tbaa !17
  %163 = sext i32 %162 to i64
  %164 = getelementptr inbounds i8, ptr %161, i64 %163
  %165 = load i8, ptr %164, align 1, !tbaa !21
  %166 = sext i8 %165 to i32
  %167 = icmp sge i32 %166, 53
  br i1 %167, label %168, label %176

168:                                              ; preds = %160
  %169 = load ptr, ptr %6, align 8, !tbaa !5
  %170 = load i32, ptr %23, align 4, !tbaa !17
  %171 = call i32 @xadd1(ptr noundef %169, i32 noundef %170)
  %172 = icmp ne i32 %171, 0
  br i1 %172, label %173, label %176

173:                                              ; preds = %168
  %174 = load i32, ptr %16, align 4, !tbaa !17
  %175 = add nsw i32 %174, 1
  store i32 %175, ptr %16, align 4, !tbaa !17
  br label %176

176:                                              ; preds = %173, %168, %160
  %177 = load i32, ptr %18, align 4, !tbaa !17
  %178 = load i32, ptr %23, align 4, !tbaa !17
  %179 = sub nsw i32 %177, %178
  %180 = load i32, ptr %16, align 4, !tbaa !17
  %181 = add nsw i32 %180, %179
  store i32 %181, ptr %16, align 4, !tbaa !17
  %182 = load i32, ptr %23, align 4, !tbaa !17
  store i32 %182, ptr %18, align 4, !tbaa !17
  br label %183

183:                                              ; preds = %176, %156
  br label %184

184:                                              ; preds = %183, %147
  br label %185

185:                                              ; preds = %184, %147
  store i32 1, ptr %22, align 4, !tbaa !17
  store i32 0, ptr %29, align 4, !tbaa !17
  %186 = load i32, ptr %16, align 4, !tbaa !17
  %187 = load i32, ptr %18, align 4, !tbaa !17
  %188 = sub nsw i32 %187, 1
  %189 = add nsw i32 %186, %188
  store i32 %189, ptr %15, align 4, !tbaa !17
  %190 = load i32, ptr %24, align 4, !tbaa !17
  %191 = icmp eq i32 %190, 103
  br i1 %191, label %192, label %203

192:                                              ; preds = %185
  %193 = load i32, ptr %15, align 4, !tbaa !17
  %194 = icmp sle i32 -4, %193
  br i1 %194, label %195, label %200

195:                                              ; preds = %192
  %196 = load i32, ptr %15, align 4, !tbaa !17
  %197 = load i32, ptr %23, align 4, !tbaa !17
  %198 = icmp slt i32 %196, %197
  br i1 %198, label %199, label %200

199:                                              ; preds = %195
  br label %245

200:                                              ; preds = %195, %192
  %201 = load i32, ptr %23, align 4, !tbaa !17
  %202 = add nsw i32 %201, -1
  store i32 %202, ptr %23, align 4, !tbaa !17
  br label %203

203:                                              ; preds = %200, %185
  %204 = load i32, ptr %23, align 4, !tbaa !17
  %205 = add nsw i32 1, %204
  %206 = load i32, ptr %18, align 4, !tbaa !17
  %207 = icmp sge i32 %205, %206
  br i1 %207, label %208, label %213

208:                                              ; preds = %203
  %209 = load i32, ptr %23, align 4, !tbaa !17
  %210 = add nsw i32 1, %209
  %211 = load i32, ptr %18, align 4, !tbaa !17
  %212 = sub nsw i32 %210, %211
  store i32 %212, ptr %30, align 4, !tbaa !17
  br label %238

213:                                              ; preds = %203
  %214 = load i32, ptr %24, align 4, !tbaa !17
  %215 = icmp ne i32 %214, 103
  br i1 %215, label %216, label %217

216:                                              ; preds = %213
  br label %218

217:                                              ; preds = %213
  call void @__assert_fail(ptr noundef @.str.1, ptr noundef @.str.2, i32 noundef 479, ptr noundef @__PRETTY_FUNCTION__.__efgfmt) #8
  unreachable

218:                                              ; preds = %216
  %219 = load i32, ptr %23, align 4, !tbaa !17
  %220 = add nsw i32 1, %219
  store i32 %220, ptr %20, align 4, !tbaa !17
  %221 = load ptr, ptr %6, align 8, !tbaa !5
  %222 = load i32, ptr %20, align 4, !tbaa !17
  %223 = sext i32 %222 to i64
  %224 = getelementptr inbounds i8, ptr %221, i64 %223
  %225 = load i8, ptr %224, align 1, !tbaa !21
  %226 = sext i8 %225 to i32
  %227 = icmp sge i32 %226, 53
  br i1 %227, label %228, label %236

228:                                              ; preds = %218
  %229 = load ptr, ptr %6, align 8, !tbaa !5
  %230 = load i32, ptr %20, align 4, !tbaa !17
  %231 = call i32 @xadd1(ptr noundef %229, i32 noundef %230)
  %232 = icmp ne i32 %231, 0
  br i1 %232, label %233, label %236

233:                                              ; preds = %228
  %234 = load i32, ptr %15, align 4, !tbaa !17
  %235 = add nsw i32 %234, 1
  store i32 %235, ptr %15, align 4, !tbaa !17
  br label %236

236:                                              ; preds = %233, %228, %218
  %237 = load i32, ptr %20, align 4, !tbaa !17
  store i32 %237, ptr %18, align 4, !tbaa !17
  store i32 0, ptr %30, align 4, !tbaa !17
  br label %238

238:                                              ; preds = %236, %208
  %239 = getelementptr inbounds [10 x i8], ptr %9, i64 0, i64 0
  %240 = load i32, ptr %15, align 4, !tbaa !17
  %241 = load i32, ptr %27, align 4, !tbaa !17
  call void @xfmtexp(ptr noundef %239, i32 noundef %240, i32 noundef %241)
  %242 = getelementptr inbounds [10 x i8], ptr %9, i64 0, i64 0
  %243 = call i64 @strlen(ptr noundef %242) #7
  %244 = trunc i64 %243 to i32
  store i32 %244, ptr %26, align 4, !tbaa !17
  br label %350

245:                                              ; preds = %199
  br label %246

246:                                              ; preds = %245, %147
  %247 = load i32, ptr %18, align 4, !tbaa !17
  %248 = load i32, ptr %16, align 4, !tbaa !17
  %249 = add nsw i32 %247, %248
  %250 = icmp sgt i32 %249, 0
  br i1 %250, label %251, label %255

251:                                              ; preds = %246
  %252 = load i32, ptr %18, align 4, !tbaa !17
  %253 = load i32, ptr %16, align 4, !tbaa !17
  %254 = add nsw i32 %252, %253
  store i32 %254, ptr %22, align 4, !tbaa !17
  store i32 0, ptr %29, align 4, !tbaa !17
  br label %261

255:                                              ; preds = %246
  store i32 1, ptr %22, align 4, !tbaa !17
  %256 = load i32, ptr %18, align 4, !tbaa !17
  %257 = load i32, ptr %16, align 4, !tbaa !17
  %258 = add nsw i32 %256, %257
  %259 = sub nsw i32 0, %258
  %260 = add nsw i32 1, %259
  store i32 %260, ptr %29, align 4, !tbaa !17
  br label %261

261:                                              ; preds = %255, %251
  %262 = load i32, ptr %24, align 4, !tbaa !17
  %263 = icmp eq i32 %262, 103
  br i1 %263, label %264, label %270

264:                                              ; preds = %261
  %265 = load i32, ptr %29, align 4, !tbaa !17
  %266 = load i32, ptr %22, align 4, !tbaa !17
  %267 = sub nsw i32 %265, %266
  %268 = load i32, ptr %23, align 4, !tbaa !17
  %269 = add nsw i32 %268, %267
  store i32 %269, ptr %23, align 4, !tbaa !17
  br label %270

270:                                              ; preds = %264, %261
  %271 = load i32, ptr %22, align 4, !tbaa !17
  %272 = load i32, ptr %23, align 4, !tbaa !17
  %273 = add nsw i32 %271, %272
  %274 = load i32, ptr %29, align 4, !tbaa !17
  %275 = load i32, ptr %18, align 4, !tbaa !17
  %276 = add nsw i32 %274, %275
  %277 = icmp sge i32 %273, %276
  br i1 %277, label %278, label %286

278:                                              ; preds = %270
  %279 = load i32, ptr %22, align 4, !tbaa !17
  %280 = load i32, ptr %23, align 4, !tbaa !17
  %281 = add nsw i32 %279, %280
  %282 = load i32, ptr %29, align 4, !tbaa !17
  %283 = load i32, ptr %18, align 4, !tbaa !17
  %284 = add nsw i32 %282, %283
  %285 = sub nsw i32 %281, %284
  store i32 %285, ptr %30, align 4, !tbaa !17
  br label %349

286:                                              ; preds = %270
  %287 = load i32, ptr %24, align 4, !tbaa !17
  %288 = icmp ne i32 %287, 103
  br i1 %288, label %289, label %290

289:                                              ; preds = %286
  br label %291

290:                                              ; preds = %286
  call void @__assert_fail(ptr noundef @.str.1, ptr noundef @.str.2, i32 noundef 523, ptr noundef @__PRETTY_FUNCTION__.__efgfmt) #8
  unreachable

291:                                              ; preds = %289
  %292 = load i32, ptr %22, align 4, !tbaa !17
  %293 = load i32, ptr %23, align 4, !tbaa !17
  %294 = add nsw i32 %292, %293
  %295 = load i32, ptr %29, align 4, !tbaa !17
  %296 = sub nsw i32 %294, %295
  store i32 %296, ptr %20, align 4, !tbaa !17
  %297 = load i32, ptr %20, align 4, !tbaa !17
  %298 = icmp slt i32 %297, 0
  br i1 %298, label %299, label %303

299:                                              ; preds = %291
  %300 = load i32, ptr %20, align 4, !tbaa !17
  %301 = load i32, ptr %29, align 4, !tbaa !17
  %302 = add nsw i32 %301, %300
  store i32 %302, ptr %29, align 4, !tbaa !17
  store i32 0, ptr %20, align 4, !tbaa !17
  br label %347

303:                                              ; preds = %291
  %304 = load i32, ptr %20, align 4, !tbaa !17
  %305 = icmp eq i32 %304, 0
  br i1 %305, label %306, label %316

306:                                              ; preds = %303
  %307 = load ptr, ptr %6, align 8, !tbaa !5
  %308 = getelementptr inbounds i8, ptr %307, i64 0
  %309 = load i8, ptr %308, align 1, !tbaa !21
  %310 = sext i8 %309 to i32
  %311 = icmp sge i32 %310, 53
  br i1 %311, label %312, label %315

312:                                              ; preds = %306
  %313 = load ptr, ptr %6, align 8, !tbaa !5
  %314 = getelementptr inbounds i8, ptr %313, i64 0
  store i8 49, ptr %314, align 1, !tbaa !21
  store i32 1, ptr %20, align 4, !tbaa !17
  br label %335

315:                                              ; preds = %306
  br label %346

316:                                              ; preds = %303
  %317 = load ptr, ptr %6, align 8, !tbaa !5
  %318 = load i32, ptr %20, align 4, !tbaa !17
  %319 = sext i32 %318 to i64
  %320 = getelementptr inbounds i8, ptr %317, i64 %319
  %321 = load i8, ptr %320, align 1, !tbaa !21
  %322 = sext i8 %321 to i32
  %323 = icmp sge i32 %322, 53
  br i1 %323, label %324, label %345

324:                                              ; preds = %316
  %325 = load ptr, ptr %6, align 8, !tbaa !5
  %326 = load i32, ptr %20, align 4, !tbaa !17
  %327 = call i32 @xadd1(ptr noundef %325, i32 noundef %326)
  %328 = icmp ne i32 %327, 0
  br i1 %328, label %329, label %345

329:                                              ; preds = %324
  %330 = load ptr, ptr %6, align 8, !tbaa !5
  %331 = load i32, ptr %20, align 4, !tbaa !17
  %332 = add nsw i32 %331, 1
  store i32 %332, ptr %20, align 4, !tbaa !17
  %333 = sext i32 %331 to i64
  %334 = getelementptr inbounds i8, ptr %330, i64 %333
  store i8 48, ptr %334, align 1, !tbaa !21
  br label %335

335:                                              ; preds = %329, %312
  %336 = load i32, ptr %29, align 4, !tbaa !17
  %337 = icmp ne i32 %336, 0
  br i1 %337, label %338, label %341

338:                                              ; preds = %335
  %339 = load i32, ptr %29, align 4, !tbaa !17
  %340 = add nsw i32 %339, -1
  store i32 %340, ptr %29, align 4, !tbaa !17
  br label %344

341:                                              ; preds = %335
  %342 = load i32, ptr %22, align 4, !tbaa !17
  %343 = add nsw i32 %342, 1
  store i32 %343, ptr %22, align 4, !tbaa !17
  br label %344

344:                                              ; preds = %341, %338
  br label %345

345:                                              ; preds = %344, %324, %316
  br label %346

346:                                              ; preds = %345, %315
  br label %347

347:                                              ; preds = %346, %299
  store i32 0, ptr %30, align 4, !tbaa !17
  %348 = load i32, ptr %20, align 4, !tbaa !17
  store i32 %348, ptr %18, align 4, !tbaa !17
  br label %349

349:                                              ; preds = %347, %278
  store i32 0, ptr %26, align 4, !tbaa !17
  br label %350

350:                                              ; preds = %349, %238
  %351 = load i32, ptr %24, align 4, !tbaa !17
  %352 = icmp eq i32 %351, 103
  br i1 %352, label %353, label %401

353:                                              ; preds = %350
  %354 = load i32, ptr %17, align 4, !tbaa !17
  %355 = and i32 %354, 8
  %356 = icmp ne i32 %355, 0
  br i1 %356, label %401, label %357

357:                                              ; preds = %353
  %358 = load i32, ptr %29, align 4, !tbaa !17
  %359 = load i32, ptr %18, align 4, !tbaa !17
  %360 = add nsw i32 %358, %359
  %361 = load i32, ptr %30, align 4, !tbaa !17
  %362 = add nsw i32 %360, %361
  %363 = load i32, ptr %22, align 4, !tbaa !17
  %364 = icmp sge i32 %362, %363
  br i1 %364, label %365, label %400

365:                                              ; preds = %357
  %366 = load i32, ptr %29, align 4, !tbaa !17
  %367 = load i32, ptr %18, align 4, !tbaa !17
  %368 = add nsw i32 %366, %367
  %369 = load i32, ptr %22, align 4, !tbaa !17
  %370 = icmp slt i32 %368, %369
  br i1 %370, label %371, label %377

371:                                              ; preds = %365
  %372 = load i32, ptr %22, align 4, !tbaa !17
  %373 = load i32, ptr %29, align 4, !tbaa !17
  %374 = load i32, ptr %18, align 4, !tbaa !17
  %375 = add nsw i32 %373, %374
  %376 = sub nsw i32 %372, %375
  store i32 %376, ptr %30, align 4, !tbaa !17
  br label %399

377:                                              ; preds = %365
  store i32 0, ptr %30, align 4, !tbaa !17
  br label %378

378:                                              ; preds = %395, %377
  %379 = load i32, ptr %29, align 4, !tbaa !17
  %380 = load i32, ptr %18, align 4, !tbaa !17
  %381 = add nsw i32 %379, %380
  %382 = load i32, ptr %22, align 4, !tbaa !17
  %383 = icmp sgt i32 %381, %382
  br i1 %383, label %384, label %393

384:                                              ; preds = %378
  %385 = load ptr, ptr %6, align 8, !tbaa !5
  %386 = load i32, ptr %18, align 4, !tbaa !17
  %387 = sub nsw i32 %386, 1
  %388 = sext i32 %387 to i64
  %389 = getelementptr inbounds i8, ptr %385, i64 %388
  %390 = load i8, ptr %389, align 1, !tbaa !21
  %391 = sext i8 %390 to i32
  %392 = icmp eq i32 %391, 48
  br label %393

393:                                              ; preds = %384, %378
  %394 = phi i1 [ false, %378 ], [ %392, %384 ]
  br i1 %394, label %395, label %398

395:                                              ; preds = %393
  %396 = load i32, ptr %18, align 4, !tbaa !17
  %397 = add nsw i32 %396, -1
  store i32 %397, ptr %18, align 4, !tbaa !17
  br label %378, !llvm.loop !22

398:                                              ; preds = %393
  br label %399

399:                                              ; preds = %398, %371
  br label %400

400:                                              ; preds = %399, %357
  br label %401

401:                                              ; preds = %400, %353, %350
  %402 = load i32, ptr %29, align 4, !tbaa !17
  %403 = load i32, ptr %18, align 4, !tbaa !17
  %404 = add nsw i32 %402, %403
  %405 = load i32, ptr %30, align 4, !tbaa !17
  %406 = add nsw i32 %404, %405
  store i32 %406, ptr %28, align 4, !tbaa !17
  %407 = load i32, ptr %28, align 4, !tbaa !17
  %408 = load i32, ptr %22, align 4, !tbaa !17
  %409 = icmp sgt i32 %407, %408
  br i1 %409, label %410, label %414

410:                                              ; preds = %401
  %411 = load i32, ptr %14, align 4, !tbaa !17
  %412 = load i32, ptr %28, align 4, !tbaa !17
  %413 = add nsw i32 %412, %411
  store i32 %413, ptr %28, align 4, !tbaa !17
  br label %431

414:                                              ; preds = %401
  %415 = load i32, ptr %28, align 4, !tbaa !17
  %416 = load i32, ptr %22, align 4, !tbaa !17
  %417 = icmp eq i32 %415, %416
  br i1 %417, label %418, label %430

418:                                              ; preds = %414
  %419 = load i32, ptr %17, align 4, !tbaa !17
  %420 = and i32 %419, 8
  %421 = icmp ne i32 %420, 0
  br i1 %421, label %422, label %426

422:                                              ; preds = %418
  %423 = load i32, ptr %14, align 4, !tbaa !17
  %424 = load i32, ptr %28, align 4, !tbaa !17
  %425 = add nsw i32 %424, %423
  store i32 %425, ptr %28, align 4, !tbaa !17
  br label %429

426:                                              ; preds = %418
  %427 = load i32, ptr %22, align 4, !tbaa !17
  %428 = add nsw i32 %427, 1
  store i32 %428, ptr %22, align 4, !tbaa !17
  br label %429

429:                                              ; preds = %426, %422
  br label %430

430:                                              ; preds = %429, %414
  br label %431

431:                                              ; preds = %430, %410
  %432 = load i32, ptr %26, align 4, !tbaa !17
  %433 = load i32, ptr %28, align 4, !tbaa !17
  %434 = add nsw i32 %433, %432
  store i32 %434, ptr %28, align 4, !tbaa !17
  store i32 0, ptr %25, align 4, !tbaa !17
  %435 = load i32, ptr %19, align 4, !tbaa !17
  %436 = icmp ne i32 %435, 0
  br i1 %436, label %437, label %438

437:                                              ; preds = %431
  store i32 45, ptr %25, align 4, !tbaa !17
  br label %450

438:                                              ; preds = %431
  %439 = load i32, ptr %17, align 4, !tbaa !17
  %440 = and i32 %439, 32
  %441 = icmp ne i32 %440, 0
  br i1 %441, label %442, label %443

442:                                              ; preds = %438
  store i32 43, ptr %25, align 4, !tbaa !17
  br label %449

443:                                              ; preds = %438
  %444 = load i32, ptr %17, align 4, !tbaa !17
  %445 = and i32 %444, 16
  %446 = icmp ne i32 %445, 0
  br i1 %446, label %447, label %448

447:                                              ; preds = %443
  store i32 32, ptr %25, align 4, !tbaa !17
  br label %448

448:                                              ; preds = %447, %443
  br label %449

449:                                              ; preds = %448, %442
  br label %450

450:                                              ; preds = %449, %437
  %451 = load i32, ptr %25, align 4, !tbaa !17
  %452 = icmp ne i32 %451, 0
  br i1 %452, label %453, label %456

453:                                              ; preds = %450
  %454 = load i32, ptr %28, align 4, !tbaa !17
  %455 = add nsw i32 %454, 1
  store i32 %455, ptr %28, align 4, !tbaa !17
  br label %456

456:                                              ; preds = %453, %450
  store i32 0, ptr %21, align 4, !tbaa !17
  %457 = load i32, ptr %17, align 4, !tbaa !17
  %458 = and i32 %457, 1
  %459 = icmp ne i32 %458, 0
  br i1 %459, label %460, label %472

460:                                              ; preds = %456
  %461 = load ptr, ptr %3, align 8, !tbaa !5
  %462 = getelementptr inbounds %struct.Fmt, ptr %461, i32 0, i32 9
  %463 = load i32, ptr %462, align 4, !tbaa !24
  %464 = load i32, ptr %28, align 4, !tbaa !17
  %465 = icmp sgt i32 %463, %464
  br i1 %465, label %466, label %472

466:                                              ; preds = %460
  %467 = load ptr, ptr %3, align 8, !tbaa !5
  %468 = getelementptr inbounds %struct.Fmt, ptr %467, i32 0, i32 9
  %469 = load i32, ptr %468, align 4, !tbaa !24
  %470 = load i32, ptr %28, align 4, !tbaa !17
  %471 = sub nsw i32 %469, %470
  store i32 %471, ptr %21, align 4, !tbaa !17
  br label %472

472:                                              ; preds = %466, %460, %456
  %473 = load i32, ptr %21, align 4, !tbaa !17
  %474 = icmp ne i32 %473, 0
  br i1 %474, label %475, label %490

475:                                              ; preds = %472
  %476 = load i32, ptr %17, align 4, !tbaa !17
  %477 = and i32 %476, 2
  %478 = icmp ne i32 %477, 0
  br i1 %478, label %490, label %479

479:                                              ; preds = %475
  %480 = load i32, ptr %17, align 4, !tbaa !17
  %481 = and i32 %480, 128
  %482 = icmp ne i32 %481, 0
  br i1 %482, label %483, label %490

483:                                              ; preds = %479
  %484 = load i32, ptr %21, align 4, !tbaa !17
  %485 = load i32, ptr %29, align 4, !tbaa !17
  %486 = add nsw i32 %485, %484
  store i32 %486, ptr %29, align 4, !tbaa !17
  %487 = load i32, ptr %21, align 4, !tbaa !17
  %488 = load i32, ptr %22, align 4, !tbaa !17
  %489 = add nsw i32 %488, %487
  store i32 %489, ptr %22, align 4, !tbaa !17
  store i32 0, ptr %21, align 4, !tbaa !17
  br label %490

490:                                              ; preds = %483, %479, %475, %472
  %491 = load ptr, ptr %3, align 8, !tbaa !5
  %492 = getelementptr inbounds %struct.Fmt, ptr %491, i32 0, i32 0
  %493 = load i8, ptr %492, align 8, !tbaa !25
  %494 = icmp ne i8 %493, 0
  br i1 %494, label %495, label %679

495:                                              ; preds = %490
  %496 = load i32, ptr %21, align 4, !tbaa !17
  %497 = icmp ne i32 %496, 0
  br i1 %497, label %498, label %508

498:                                              ; preds = %495
  %499 = load i32, ptr %17, align 4, !tbaa !17
  %500 = and i32 %499, 2
  %501 = icmp ne i32 %500, 0
  br i1 %501, label %508, label %502

502:                                              ; preds = %498
  %503 = load ptr, ptr %3, align 8, !tbaa !5
  %504 = load i32, ptr %21, align 4, !tbaa !17
  %505 = call i32 @__rfmtpad(ptr noundef %503, i32 noundef %504)
  %506 = icmp slt i32 %505, 0
  br i1 %506, label %507, label %508

507:                                              ; preds = %502
  store i32 -1, ptr %2, align 4
  store i32 1, ptr %34, align 4
  br label %864

508:                                              ; preds = %502, %498, %495
  %509 = load ptr, ptr %3, align 8, !tbaa !5
  %510 = getelementptr inbounds %struct.Fmt, ptr %509, i32 0, i32 2
  %511 = load ptr, ptr %510, align 8, !tbaa !26
  store ptr %511, ptr %33, align 8, !tbaa !5
  %512 = load ptr, ptr %3, align 8, !tbaa !5
  %513 = getelementptr inbounds %struct.Fmt, ptr %512, i32 0, i32 3
  %514 = load ptr, ptr %513, align 8, !tbaa !27
  store ptr %514, ptr %32, align 8, !tbaa !5
  %515 = load i32, ptr %25, align 4, !tbaa !17
  %516 = icmp ne i32 %515, 0
  br i1 %516, label %517, label %541

517:                                              ; preds = %508
  br label %518

518:                                              ; preds = %517
  %519 = load ptr, ptr %33, align 8, !tbaa !5
  %520 = getelementptr inbounds i32, ptr %519, i64 1
  %521 = load ptr, ptr %32, align 8, !tbaa !5
  %522 = icmp ugt ptr %520, %521
  br i1 %522, label %523, label %535

523:                                              ; preds = %518
  %524 = load ptr, ptr %3, align 8, !tbaa !5
  %525 = load ptr, ptr %33, align 8, !tbaa !5
  %526 = call ptr @__fmtflush(ptr noundef %524, ptr noundef %525, i32 noundef 4)
  store ptr %526, ptr %33, align 8, !tbaa !5
  %527 = load ptr, ptr %33, align 8, !tbaa !5
  %528 = icmp ne ptr %527, null
  br i1 %528, label %529, label %533

529:                                              ; preds = %523
  %530 = load ptr, ptr %3, align 8, !tbaa !5
  %531 = getelementptr inbounds %struct.Fmt, ptr %530, i32 0, i32 3
  %532 = load ptr, ptr %531, align 8, !tbaa !27
  store ptr %532, ptr %32, align 8, !tbaa !5
  br label %534

533:                                              ; preds = %523
  store i32 -1, ptr %2, align 4
  store i32 1, ptr %34, align 4
  br label %864

534:                                              ; preds = %529
  br label %535

535:                                              ; preds = %534, %518
  %536 = load i32, ptr %25, align 4, !tbaa !17
  %537 = load ptr, ptr %33, align 8, !tbaa !5
  %538 = getelementptr inbounds i32, ptr %537, i32 1
  store ptr %538, ptr %33, align 8, !tbaa !5
  store i32 %536, ptr %537, align 4, !tbaa !17
  br label %539

539:                                              ; preds = %535
  br label %540

540:                                              ; preds = %539
  br label %541

541:                                              ; preds = %540, %508
  br label %542

542:                                              ; preds = %636, %541
  %543 = load i32, ptr %29, align 4, !tbaa !17
  %544 = icmp sgt i32 %543, 0
  br i1 %544, label %551, label %545

545:                                              ; preds = %542
  %546 = load i32, ptr %18, align 4, !tbaa !17
  %547 = icmp sgt i32 %546, 0
  br i1 %547, label %551, label %548

548:                                              ; preds = %545
  %549 = load i32, ptr %30, align 4, !tbaa !17
  %550 = icmp sgt i32 %549, 0
  br label %551

551:                                              ; preds = %548, %545, %542
  %552 = phi i1 [ true, %545 ], [ true, %542 ], [ %550, %548 ]
  br i1 %552, label %553, label %637

553:                                              ; preds = %551
  %554 = load i32, ptr %29, align 4, !tbaa !17
  %555 = icmp sgt i32 %554, 0
  br i1 %555, label %556, label %559

556:                                              ; preds = %553
  %557 = load i32, ptr %29, align 4, !tbaa !17
  %558 = add nsw i32 %557, -1
  store i32 %558, ptr %29, align 4, !tbaa !17
  store i32 48, ptr %12, align 4, !tbaa !17
  br label %573

559:                                              ; preds = %553
  %560 = load i32, ptr %18, align 4, !tbaa !17
  %561 = icmp sgt i32 %560, 0
  br i1 %561, label %562, label %569

562:                                              ; preds = %559
  %563 = load i32, ptr %18, align 4, !tbaa !17
  %564 = add nsw i32 %563, -1
  store i32 %564, ptr %18, align 4, !tbaa !17
  %565 = load ptr, ptr %6, align 8, !tbaa !5
  %566 = getelementptr inbounds i8, ptr %565, i32 1
  store ptr %566, ptr %6, align 8, !tbaa !5
  %567 = load i8, ptr %565, align 1, !tbaa !21
  %568 = sext i8 %567 to i32
  store i32 %568, ptr %12, align 4, !tbaa !17
  br label %572

569:                                              ; preds = %559
  %570 = load i32, ptr %30, align 4, !tbaa !17
  %571 = add nsw i32 %570, -1
  store i32 %571, ptr %30, align 4, !tbaa !17
  store i32 48, ptr %12, align 4, !tbaa !17
  br label %572

572:                                              ; preds = %569, %562
  br label %573

573:                                              ; preds = %572, %556
  br label %574

574:                                              ; preds = %573
  %575 = load ptr, ptr %33, align 8, !tbaa !5
  %576 = getelementptr inbounds i32, ptr %575, i64 1
  %577 = load ptr, ptr %32, align 8, !tbaa !5
  %578 = icmp ugt ptr %576, %577
  br i1 %578, label %579, label %591

579:                                              ; preds = %574
  %580 = load ptr, ptr %3, align 8, !tbaa !5
  %581 = load ptr, ptr %33, align 8, !tbaa !5
  %582 = call ptr @__fmtflush(ptr noundef %580, ptr noundef %581, i32 noundef 4)
  store ptr %582, ptr %33, align 8, !tbaa !5
  %583 = load ptr, ptr %33, align 8, !tbaa !5
  %584 = icmp ne ptr %583, null
  br i1 %584, label %585, label %589

585:                                              ; preds = %579
  %586 = load ptr, ptr %3, align 8, !tbaa !5
  %587 = getelementptr inbounds %struct.Fmt, ptr %586, i32 0, i32 3
  %588 = load ptr, ptr %587, align 8, !tbaa !27
  store ptr %588, ptr %32, align 8, !tbaa !5
  br label %590

589:                                              ; preds = %579
  store i32 -1, ptr %2, align 4
  store i32 1, ptr %34, align 4
  br label %864

590:                                              ; preds = %585
  br label %591

591:                                              ; preds = %590, %574
  %592 = load i32, ptr %12, align 4, !tbaa !17
  %593 = load ptr, ptr %33, align 8, !tbaa !5
  %594 = getelementptr inbounds i32, ptr %593, i32 1
  store ptr %594, ptr %33, align 8, !tbaa !5
  store i32 %592, ptr %593, align 4, !tbaa !17
  br label %595

595:                                              ; preds = %591
  br label %596

596:                                              ; preds = %595
  %597 = load i32, ptr %22, align 4, !tbaa !17
  %598 = add nsw i32 %597, -1
  store i32 %598, ptr %22, align 4, !tbaa !17
  %599 = icmp eq i32 %598, 0
  br i1 %599, label %600, label %636

600:                                              ; preds = %596
  %601 = load ptr, ptr %5, align 8, !tbaa !5
  store ptr %601, ptr %7, align 8, !tbaa !5
  br label %602

602:                                              ; preds = %634, %600
  %603 = load ptr, ptr %7, align 8, !tbaa !5
  %604 = load i8, ptr %603, align 1, !tbaa !21
  %605 = icmp ne i8 %604, 0
  br i1 %605, label %606, label %635

606:                                              ; preds = %602
  %607 = load ptr, ptr %7, align 8, !tbaa !5
  %608 = call i32 @chartorune(ptr noundef %31, ptr noundef %607)
  %609 = load ptr, ptr %7, align 8, !tbaa !5
  %610 = sext i32 %608 to i64
  %611 = getelementptr inbounds i8, ptr %609, i64 %610
  store ptr %611, ptr %7, align 8, !tbaa !5
  br label %612

612:                                              ; preds = %606
  %613 = load ptr, ptr %33, align 8, !tbaa !5
  %614 = getelementptr inbounds i32, ptr %613, i64 1
  %615 = load ptr, ptr %32, align 8, !tbaa !5
  %616 = icmp ugt ptr %614, %615
  br i1 %616, label %617, label %629

617:                                              ; preds = %612
  %618 = load ptr, ptr %3, align 8, !tbaa !5
  %619 = load ptr, ptr %33, align 8, !tbaa !5
  %620 = call ptr @__fmtflush(ptr noundef %618, ptr noundef %619, i32 noundef 4)
  store ptr %620, ptr %33, align 8, !tbaa !5
  %621 = load ptr, ptr %33, align 8, !tbaa !5
  %622 = icmp ne ptr %621, null
  br i1 %622, label %623, label %627

623:                                              ; preds = %617
  %624 = load ptr, ptr %3, align 8, !tbaa !5
  %625 = getelementptr inbounds %struct.Fmt, ptr %624, i32 0, i32 3
  %626 = load ptr, ptr %625, align 8, !tbaa !27
  store ptr %626, ptr %32, align 8, !tbaa !5
  br label %628

627:                                              ; preds = %617
  store i32 -1, ptr %2, align 4
  store i32 1, ptr %34, align 4
  br label %864

628:                                              ; preds = %623
  br label %629

629:                                              ; preds = %628, %612
  %630 = load i32, ptr %31, align 4, !tbaa !17
  %631 = load ptr, ptr %33, align 8, !tbaa !5
  %632 = getelementptr inbounds i32, ptr %631, i32 1
  store ptr %632, ptr %33, align 8, !tbaa !5
  store i32 %630, ptr %631, align 4, !tbaa !17
  br label %633

633:                                              ; preds = %629
  br label %634

634:                                              ; preds = %633
  br label %602, !llvm.loop !28

635:                                              ; preds = %602
  br label %636

636:                                              ; preds = %635, %596
  br label %542, !llvm.loop !29

637:                                              ; preds = %551
  %638 = load ptr, ptr %33, align 8, !tbaa !5
  %639 = load ptr, ptr %3, align 8, !tbaa !5
  %640 = getelementptr inbounds %struct.Fmt, ptr %639, i32 0, i32 2
  %641 = load ptr, ptr %640, align 8, !tbaa !26
  %642 = ptrtoint ptr %638 to i64
  %643 = ptrtoint ptr %641 to i64
  %644 = sub i64 %642, %643
  %645 = sdiv exact i64 %644, 4
  %646 = load ptr, ptr %3, align 8, !tbaa !5
  %647 = getelementptr inbounds %struct.Fmt, ptr %646, i32 0, i32 6
  %648 = load i32, ptr %647, align 8, !tbaa !30
  %649 = sext i32 %648 to i64
  %650 = add nsw i64 %649, %645
  %651 = trunc i64 %650 to i32
  store i32 %651, ptr %647, align 8, !tbaa !30
  %652 = load ptr, ptr %33, align 8, !tbaa !5
  %653 = load ptr, ptr %3, align 8, !tbaa !5
  %654 = getelementptr inbounds %struct.Fmt, ptr %653, i32 0, i32 2
  store ptr %652, ptr %654, align 8, !tbaa !26
  %655 = load i32, ptr %26, align 4, !tbaa !17
  %656 = icmp ne i32 %655, 0
  br i1 %656, label %657, label %665

657:                                              ; preds = %637
  %658 = load ptr, ptr %3, align 8, !tbaa !5
  %659 = getelementptr inbounds [10 x i8], ptr %9, i64 0, i64 0
  %660 = load i32, ptr %26, align 4, !tbaa !17
  %661 = load i32, ptr %26, align 4, !tbaa !17
  %662 = call i32 @__fmtcpy(ptr noundef %658, ptr noundef %659, i32 noundef %660, i32 noundef %661)
  %663 = icmp slt i32 %662, 0
  br i1 %663, label %664, label %665

664:                                              ; preds = %657
  store i32 -1, ptr %2, align 4
  store i32 1, ptr %34, align 4
  br label %864

665:                                              ; preds = %657, %637
  %666 = load i32, ptr %21, align 4, !tbaa !17
  %667 = icmp ne i32 %666, 0
  br i1 %667, label %668, label %678

668:                                              ; preds = %665
  %669 = load i32, ptr %17, align 4, !tbaa !17
  %670 = and i32 %669, 2
  %671 = icmp ne i32 %670, 0
  br i1 %671, label %672, label %678

672:                                              ; preds = %668
  %673 = load ptr, ptr %3, align 8, !tbaa !5
  %674 = load i32, ptr %21, align 4, !tbaa !17
  %675 = call i32 @__rfmtpad(ptr noundef %673, i32 noundef %674)
  %676 = icmp slt i32 %675, 0
  br i1 %676, label %677, label %678

677:                                              ; preds = %672
  store i32 -1, ptr %2, align 4
  store i32 1, ptr %34, align 4
  br label %864

678:                                              ; preds = %672, %668, %665
  br label %863

679:                                              ; preds = %490
  %680 = load i32, ptr %21, align 4, !tbaa !17
  %681 = icmp ne i32 %680, 0
  br i1 %681, label %682, label %692

682:                                              ; preds = %679
  %683 = load i32, ptr %17, align 4, !tbaa !17
  %684 = and i32 %683, 2
  %685 = icmp ne i32 %684, 0
  br i1 %685, label %692, label %686

686:                                              ; preds = %682
  %687 = load ptr, ptr %3, align 8, !tbaa !5
  %688 = load i32, ptr %21, align 4, !tbaa !17
  %689 = call i32 @__fmtpad(ptr noundef %687, i32 noundef %688)
  %690 = icmp slt i32 %689, 0
  br i1 %690, label %691, label %692

691:                                              ; preds = %686
  store i32 -1, ptr %2, align 4
  store i32 1, ptr %34, align 4
  br label %864

692:                                              ; preds = %686, %682, %679
  %693 = load ptr, ptr %3, align 8, !tbaa !5
  %694 = getelementptr inbounds %struct.Fmt, ptr %693, i32 0, i32 2
  %695 = load ptr, ptr %694, align 8, !tbaa !26
  store ptr %695, ptr %10, align 8, !tbaa !5
  %696 = load ptr, ptr %3, align 8, !tbaa !5
  %697 = getelementptr inbounds %struct.Fmt, ptr %696, i32 0, i32 3
  %698 = load ptr, ptr %697, align 8, !tbaa !27
  store ptr %698, ptr %8, align 8, !tbaa !5
  %699 = load i32, ptr %25, align 4, !tbaa !17
  %700 = icmp ne i32 %699, 0
  br i1 %700, label %701, label %726

701:                                              ; preds = %692
  br label %702

702:                                              ; preds = %701
  %703 = load ptr, ptr %10, align 8, !tbaa !5
  %704 = getelementptr inbounds i8, ptr %703, i64 1
  %705 = load ptr, ptr %8, align 8, !tbaa !5
  %706 = icmp ugt ptr %704, %705
  br i1 %706, label %707, label %719

707:                                              ; preds = %702
  %708 = load ptr, ptr %3, align 8, !tbaa !5
  %709 = load ptr, ptr %10, align 8, !tbaa !5
  %710 = call ptr @__fmtflush(ptr noundef %708, ptr noundef %709, i32 noundef 1)
  store ptr %710, ptr %10, align 8, !tbaa !5
  %711 = load ptr, ptr %10, align 8, !tbaa !5
  %712 = icmp ne ptr %711, null
  br i1 %712, label %713, label %717

713:                                              ; preds = %707
  %714 = load ptr, ptr %3, align 8, !tbaa !5
  %715 = getelementptr inbounds %struct.Fmt, ptr %714, i32 0, i32 3
  %716 = load ptr, ptr %715, align 8, !tbaa !27
  store ptr %716, ptr %8, align 8, !tbaa !5
  br label %718

717:                                              ; preds = %707
  store i32 -1, ptr %2, align 4
  store i32 1, ptr %34, align 4
  br label %864

718:                                              ; preds = %713
  br label %719

719:                                              ; preds = %718, %702
  %720 = load i32, ptr %25, align 4, !tbaa !17
  %721 = trunc i32 %720 to i8
  %722 = load ptr, ptr %10, align 8, !tbaa !5
  %723 = getelementptr inbounds i8, ptr %722, i32 1
  store ptr %723, ptr %10, align 8, !tbaa !5
  store i8 %721, ptr %722, align 1, !tbaa !21
  br label %724

724:                                              ; preds = %719
  br label %725

725:                                              ; preds = %724
  br label %726

726:                                              ; preds = %725, %692
  br label %727

727:                                              ; preds = %821, %726
  %728 = load i32, ptr %29, align 4, !tbaa !17
  %729 = icmp sgt i32 %728, 0
  br i1 %729, label %736, label %730

730:                                              ; preds = %727
  %731 = load i32, ptr %18, align 4, !tbaa !17
  %732 = icmp sgt i32 %731, 0
  br i1 %732, label %736, label %733

733:                                              ; preds = %730
  %734 = load i32, ptr %30, align 4, !tbaa !17
  %735 = icmp sgt i32 %734, 0
  br label %736

736:                                              ; preds = %733, %730, %727
  %737 = phi i1 [ true, %730 ], [ true, %727 ], [ %735, %733 ]
  br i1 %737, label %738, label %822

738:                                              ; preds = %736
  %739 = load i32, ptr %29, align 4, !tbaa !17
  %740 = icmp sgt i32 %739, 0
  br i1 %740, label %741, label %744

741:                                              ; preds = %738
  %742 = load i32, ptr %29, align 4, !tbaa !17
  %743 = add nsw i32 %742, -1
  store i32 %743, ptr %29, align 4, !tbaa !17
  store i32 48, ptr %12, align 4, !tbaa !17
  br label %758

744:                                              ; preds = %738
  %745 = load i32, ptr %18, align 4, !tbaa !17
  %746 = icmp sgt i32 %745, 0
  br i1 %746, label %747, label %754

747:                                              ; preds = %744
  %748 = load i32, ptr %18, align 4, !tbaa !17
  %749 = add nsw i32 %748, -1
  store i32 %749, ptr %18, align 4, !tbaa !17
  %750 = load ptr, ptr %6, align 8, !tbaa !5
  %751 = getelementptr inbounds i8, ptr %750, i32 1
  store ptr %751, ptr %6, align 8, !tbaa !5
  %752 = load i8, ptr %750, align 1, !tbaa !21
  %753 = sext i8 %752 to i32
  store i32 %753, ptr %12, align 4, !tbaa !17
  br label %757

754:                                              ; preds = %744
  %755 = load i32, ptr %30, align 4, !tbaa !17
  %756 = add nsw i32 %755, -1
  store i32 %756, ptr %30, align 4, !tbaa !17
  store i32 48, ptr %12, align 4, !tbaa !17
  br label %757

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

758:                                              ; preds = %757, %741
  br label %759

759:                                              ; preds = %758
  %760 = load ptr, ptr %10, align 8, !tbaa !5
  %761 = getelementptr inbounds i8, ptr %760, i64 1
  %762 = load ptr, ptr %8, align 8, !tbaa !5
  %763 = icmp ugt ptr %761, %762
  br i1 %763, label %764, label %776

764:                                              ; preds = %759
  %765 = load ptr, ptr %3, align 8, !tbaa !5
  %766 = load ptr, ptr %10, align 8, !tbaa !5
  %767 = call ptr @__fmtflush(ptr noundef %765, ptr noundef %766, i32 noundef 1)
  store ptr %767, ptr %10, align 8, !tbaa !5
  %768 = load ptr, ptr %10, align 8, !tbaa !5
  %769 = icmp ne ptr %768, null
  br i1 %769, label %770, label %774

770:                                              ; preds = %764
  %771 = load ptr, ptr %3, align 8, !tbaa !5
  %772 = getelementptr inbounds %struct.Fmt, ptr %771, i32 0, i32 3
  %773 = load ptr, ptr %772, align 8, !tbaa !27
  store ptr %773, ptr %8, align 8, !tbaa !5
  br label %775

774:                                              ; preds = %764
  store i32 -1, ptr %2, align 4
  store i32 1, ptr %34, align 4
  br label %864

775:                                              ; preds = %770
  br label %776

776:                                              ; preds = %775, %759
  %777 = load i32, ptr %12, align 4, !tbaa !17
  %778 = trunc i32 %777 to i8
  %779 = load ptr, ptr %10, align 8, !tbaa !5
  %780 = getelementptr inbounds i8, ptr %779, i32 1
  store ptr %780, ptr %10, align 8, !tbaa !5
  store i8 %778, ptr %779, align 1, !tbaa !21
  br label %781

781:                                              ; preds = %776
  br label %782

782:                                              ; preds = %781
  %783 = load i32, ptr %22, align 4, !tbaa !17
  %784 = add nsw i32 %783, -1
  store i32 %784, ptr %22, align 4, !tbaa !17
  %785 = icmp eq i32 %784, 0
  br i1 %785, label %786, label %821

786:                                              ; preds = %782
  %787 = load ptr, ptr %5, align 8, !tbaa !5
  store ptr %787, ptr %7, align 8, !tbaa !5
  br label %788

788:                                              ; preds = %817, %786
  %789 = load ptr, ptr %7, align 8, !tbaa !5
  %790 = load i8, ptr %789, align 1, !tbaa !21
  %791 = icmp ne i8 %790, 0
  br i1 %791, label %792, label %820

792:                                              ; preds = %788
  br label %793

793:                                              ; preds = %792
  %794 = load ptr, ptr %10, align 8, !tbaa !5
  %795 = getelementptr inbounds i8, ptr %794, i64 1
  %796 = load ptr, ptr %8, align 8, !tbaa !5
  %797 = icmp ugt ptr %795, %796
  br i1 %797, label %798, label %810

798:                                              ; preds = %793
  %799 = load ptr, ptr %3, align 8, !tbaa !5
  %800 = load ptr, ptr %10, align 8, !tbaa !5
  %801 = call ptr @__fmtflush(ptr noundef %799, ptr noundef %800, i32 noundef 1)
  store ptr %801, ptr %10, align 8, !tbaa !5
  %802 = load ptr, ptr %10, align 8, !tbaa !5
  %803 = icmp ne ptr %802, null
  br i1 %803, label %804, label %808

804:                                              ; preds = %798
  %805 = load ptr, ptr %3, align 8, !tbaa !5
  %806 = getelementptr inbounds %struct.Fmt, ptr %805, i32 0, i32 3
  %807 = load ptr, ptr %806, align 8, !tbaa !27
  store ptr %807, ptr %8, align 8, !tbaa !5
  br label %809

808:                                              ; preds = %798
  store i32 -1, ptr %2, align 4
  store i32 1, ptr %34, align 4
  br label %864

809:                                              ; preds = %804
  br label %810

810:                                              ; preds = %809, %793
  %811 = load ptr, ptr %7, align 8, !tbaa !5
  %812 = load i8, ptr %811, align 1, !tbaa !21
  %813 = load ptr, ptr %10, align 8, !tbaa !5
  %814 = getelementptr inbounds i8, ptr %813, i32 1
  store ptr %814, ptr %10, align 8, !tbaa !5
  store i8 %812, ptr %813, align 1, !tbaa !21
  br label %815

815:                                              ; preds = %810
  br label %816

816:                                              ; preds = %815
  br label %817

817:                                              ; preds = %816
  %818 = load ptr, ptr %7, align 8, !tbaa !5
  %819 = getelementptr inbounds i8, ptr %818, i32 1
  store ptr %819, ptr %7, align 8, !tbaa !5
  br label %788, !llvm.loop !31

820:                                              ; preds = %788
  br label %821

821:                                              ; preds = %820, %782
  br label %727, !llvm.loop !32

822:                                              ; preds = %736
  %823 = load ptr, ptr %10, align 8, !tbaa !5
  %824 = load ptr, ptr %3, align 8, !tbaa !5
  %825 = getelementptr inbounds %struct.Fmt, ptr %824, i32 0, i32 2
  %826 = load ptr, ptr %825, align 8, !tbaa !26
  %827 = ptrtoint ptr %823 to i64
  %828 = ptrtoint ptr %826 to i64
  %829 = sub i64 %827, %828
  %830 = load ptr, ptr %3, align 8, !tbaa !5
  %831 = getelementptr inbounds %struct.Fmt, ptr %830, i32 0, i32 6
  %832 = load i32, ptr %831, align 8, !tbaa !30
  %833 = sext i32 %832 to i64
  %834 = add nsw i64 %833, %829
  %835 = trunc i64 %834 to i32
  store i32 %835, ptr %831, align 8, !tbaa !30
  %836 = load ptr, ptr %10, align 8, !tbaa !5
  %837 = load ptr, ptr %3, align 8, !tbaa !5
  %838 = getelementptr inbounds %struct.Fmt, ptr %837, i32 0, i32 2
  store ptr %836, ptr %838, align 8, !tbaa !26
  %839 = load i32, ptr %26, align 4, !tbaa !17
  %840 = icmp ne i32 %839, 0
  br i1 %840, label %841, label %849

841:                                              ; preds = %822
  %842 = load ptr, ptr %3, align 8, !tbaa !5
  %843 = getelementptr inbounds [10 x i8], ptr %9, i64 0, i64 0
  %844 = load i32, ptr %26, align 4, !tbaa !17
  %845 = load i32, ptr %26, align 4, !tbaa !17
  %846 = call i32 @__fmtcpy(ptr noundef %842, ptr noundef %843, i32 noundef %844, i32 noundef %845)
  %847 = icmp slt i32 %846, 0
  br i1 %847, label %848, label %849

848:                                              ; preds = %841
  store i32 -1, ptr %2, align 4
  store i32 1, ptr %34, align 4
  br label %864

849:                                              ; preds = %841, %822
  %850 = load i32, ptr %21, align 4, !tbaa !17
  %851 = icmp ne i32 %850, 0
  br i1 %851, label %852, label %862

852:                                              ; preds = %849
  %853 = load i32, ptr %17, align 4, !tbaa !17
  %854 = and i32 %853, 2
  %855 = icmp ne i32 %854, 0
  br i1 %855, label %856, label %862

856:                                              ; preds = %852
  %857 = load ptr, ptr %3, align 8, !tbaa !5
  %858 = load i32, ptr %21, align 4, !tbaa !17
  %859 = call i32 @__fmtpad(ptr noundef %857, i32 noundef %858)
  %860 = icmp slt i32 %859, 0
  br i1 %860, label %861, label %862

861:                                              ; preds = %856
  store i32 -1, ptr %2, align 4
  store i32 1, ptr %34, align 4
  br label %864

862:                                              ; preds = %856, %852, %849
  br label %863

863:                                              ; preds = %862, %678
  store i32 0, ptr %2, align 4
  store i32 1, ptr %34, align 4
  br label %864

864:                                              ; preds = %863, %861, %848, %808, %774, %717, %691, %677, %664, %627, %589, %533, %507, %102
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #6
  call void @llvm.lifetime.end.p0(i64 10, ptr %9) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #6
  call void @llvm.lifetime.end.p0(i64 27, ptr %4) #6
  %865 = load i32, ptr %2, align 4
  ret i32 %865
}

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare ptr @llvm.ptrmask.p0.i64(ptr, i64) #2

declare i32 @__isNaN(double noundef) #3

declare i32 @__fmtcpy(ptr noundef, ptr noundef, i32 noundef, i32 noundef) #3

; Function Attrs: nounwind willreturn memory(read)
declare i64 @strlen(ptr noundef) #4

declare i32 @__isInf(double noundef, i32 noundef) #3

; Function Attrs: nounwind uwtable
declare hidden void @xdtoa(double noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #0

declare i32 @utflen(ptr noundef) #3

; Function Attrs: nounwind uwtable
declare hidden i32 @xadd1(ptr noundef, i32 noundef) #0

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #5

; Function Attrs: nounwind uwtable
declare hidden void @xfmtexp(ptr noundef, i32 noundef, i32 noundef) #0

declare i32 @__rfmtpad(ptr noundef, i32 noundef) #3

declare ptr @__fmtflush(ptr noundef, ptr noundef, i32 noundef) #3

declare i32 @chartorune(ptr noundef, ptr noundef) #3

declare i32 @__fmtpad(ptr noundef, i32 noundef) #3

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

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #3 = { "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 willreturn memory(read) "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 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nounwind }
attributes #7 = { nounwind willreturn memory(read) }
attributes #8 = { noreturn 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 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !12, i64 96}
!10 = !{!"Fmt", !7, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !11, i64 48, !7, i64 56, !11, i64 80, !11, i64 84, !11, i64 88, !12, i64 96, !6, i64 104, !6, i64 112, !6, i64 120}
!11 = !{!"int", !7, i64 0}
!12 = !{!"long", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"long double", !7, i64 0}
!15 = !{!16, !16, i64 0}
!16 = !{!"double", !7, i64 0}
!17 = !{!11, !11, i64 0}
!18 = !{!10, !11, i64 88}
!19 = !{!10, !11, i64 80}
!20 = !{!10, !6, i64 104}
!21 = !{!7, !7, i64 0}
!22 = distinct !{!22, !23}
!23 = !{!"llvm.loop.mustprogress"}
!24 = !{!10, !11, i64 84}
!25 = !{!10, !7, i64 0}
!26 = !{!10, !6, i64 16}
!27 = !{!10, !6, i64 24}
!28 = distinct !{!28, !23}
!29 = distinct !{!29, !23}
!30 = !{!10, !11, i64 48}
!31 = distinct !{!31, !23}
!32 = distinct !{!32, !23}


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

@special = external hidden local_unnamed_addr global [6 x ptr], align 16
@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [65 x i8], align 1
@__PRETTY_FUNCTION__.__efgfmt = external hidden unnamed_addr constant [20 x i8], align 1
@switch.table.__efgfmt = private unnamed_addr constant [7 x i32] [i32 97, i32 97, i32 97, i32 97, i32 101, i32 102, i32 103], align 4

; Function Attrs: nounwind uwtable
define dso_local i32 @__efgfmt(ptr noundef %0) local_unnamed_addr #0 {
  %2 = alloca [27 x i8], align 16
  %3 = alloca [10 x i8], align 1
  %4 = alloca i32, align 4
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 27, ptr nonnull %2) #7
  call void @llvm.lifetime.start.p0(i64 10, ptr nonnull %3) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #7
  %8 = getelementptr inbounds i8, ptr %0, i64 96
  %9 = load i64, ptr %8, align 8, !tbaa !5
  %.fr = freeze i64 %9
  %10 = and i64 %.fr, 1024
  %.not = icmp eq i64 %10, 0
  br i1 %.not, label %19, label %11

11:                                               ; preds = %1
  %12 = getelementptr inbounds i8, ptr %0, i64 64
  %13 = load ptr, ptr %12, align 8
  %14 = getelementptr inbounds i8, ptr %13, i64 15
  %15 = tail call align 16 ptr @llvm.ptrmask.p0.i64(ptr nonnull %14, i64 -16)
  %16 = getelementptr i8, ptr %15, i64 16
  store ptr %16, ptr %12, align 8
  %17 = load x86_fp80, ptr %15, align 16, !tbaa !12
  %18 = fptrunc x86_fp80 %17 to double
  br label %36

19:                                               ; preds = %1
  %20 = getelementptr inbounds i8, ptr %0, i64 60
  %21 = load i32, ptr %20, align 4
  %22 = icmp ult i32 %21, 161
  br i1 %22, label %23, label %29

23:                                               ; preds = %19
  %24 = getelementptr inbounds i8, ptr %0, i64 72
  %25 = load ptr, ptr %24, align 8
  %26 = zext nneg i32 %21 to i64
  %27 = getelementptr i8, ptr %25, i64 %26
  %28 = add nuw nsw i32 %21, 16
  store i32 %28, ptr %20, align 4
  br label %33

29:                                               ; preds = %19
  %30 = getelementptr inbounds i8, ptr %0, i64 64
  %31 = load ptr, ptr %30, align 8
  %32 = getelementptr i8, ptr %31, i64 8
  store ptr %32, ptr %30, align 8
  br label %33

33:                                               ; preds = %29, %23
  %34 = phi ptr [ %27, %23 ], [ %31, %29 ]
  %35 = load double, ptr %34, align 8, !tbaa !14
  br label %36

36:                                               ; preds = %33, %11
  %.0301 = phi double [ %18, %11 ], [ %35, %33 ]
  %37 = trunc i64 %.fr to i32
  store i64 0, ptr %8, align 8, !tbaa !5
  %38 = and i32 %37, 4
  %.not344 = icmp eq i32 %38, 0
  br i1 %.not344, label %42, label %39

39:                                               ; preds = %36
  %40 = getelementptr inbounds i8, ptr %0, i64 88
  %41 = load i32, ptr %40, align 8, !tbaa !16
  br label %42

42:                                               ; preds = %39, %36
  %.0275 = phi i32 [ %41, %39 ], [ 6, %36 ]
  %43 = getelementptr inbounds i8, ptr %0, i64 80
  %44 = load i32, ptr %43, align 8, !tbaa !17
  %switch.tableidx = add i32 %44, -65
  %45 = icmp ult i32 %switch.tableidx, 7
  br i1 %45, label %switch.hole_check, label %47

switch.hole_check:                                ; preds = %42
  %switch.maskindex = trunc nuw i32 %switch.tableidx to i8
  %switch.shifted = lshr i8 113, %switch.maskindex
  %switch.lobit = trunc i8 %switch.shifted to i1
  br i1 %switch.lobit, label %switch.lookup, label %47

switch.lookup:                                    ; preds = %switch.hole_check
  %46 = zext nneg i32 %switch.tableidx to i64
  %switch.gep = getelementptr inbounds [7 x i32], ptr @switch.table.__efgfmt, i64 0, i64 %46
  %switch.load = load i32, ptr %switch.gep, align 4
  br label %47

47:                                               ; preds = %switch.lookup, %switch.hole_check, %42
  %.0298 = phi i32 [ %44, %42 ], [ %44, %switch.hole_check ], [ %switch.load, %switch.lookup ]
  %.0271 = phi i32 [ 0, %42 ], [ 0, %switch.hole_check ], [ 1, %switch.lookup ]
  %48 = tail call i32 @__isNaN(double noundef %.0301) #7
  %.not345 = icmp eq i32 %48, 0
  br i1 %.not345, label %56, label %49

49:                                               ; preds = %47, %62, %58
  %.sink492 = phi i32 [ %63, %62 ], [ %59, %58 ], [ %.0271, %47 ]
  %50 = zext nneg i32 %.sink492 to i64
  %51 = getelementptr inbounds [6 x ptr], ptr @special, i64 0, i64 %50
  %.0309 = load ptr, ptr %51, align 8, !tbaa !18
  %52 = and i64 %.fr, 3
  store i64 %52, ptr %8, align 8, !tbaa !5
  %53 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %.0309) #8
  %54 = trunc i64 %53 to i32
  %55 = tail call i32 @__fmtcpy(ptr noundef nonnull %0, ptr noundef %.0309, i32 noundef %54, i32 noundef %54) #7
  br label %.loopexit422

56:                                               ; preds = %47
  %57 = tail call i32 @__isInf(double noundef %.0301, i32 noundef 1) #7
  %.not346 = icmp eq i32 %57, 0
  br i1 %.not346, label %60, label %58

58:                                               ; preds = %56
  %59 = or disjoint i32 %.0271, 2
  br label %49

60:                                               ; preds = %56
  %61 = tail call i32 @__isInf(double noundef %.0301, i32 noundef -1) #7
  %.not347 = icmp eq i32 %61, 0
  br i1 %.not347, label %64, label %62

62:                                               ; preds = %60
  %63 = or disjoint i32 %.0271, 4
  br label %49

64:                                               ; preds = %60
  call void @xdtoa(double noundef %.0301, ptr noundef nonnull %2, ptr noundef nonnull %4, ptr noundef nonnull %6, ptr noundef nonnull %5)
  %65 = getelementptr inbounds i8, ptr %0, i64 104
  %66 = load ptr, ptr %65, align 8, !tbaa !19
  %67 = icmp eq ptr %66, null
  %spec.store.select = select i1 %67, ptr @.str, ptr %66
  %68 = call i32 @utflen(ptr noundef nonnull %spec.store.select) #7
  switch i32 %.0298, label %.thread484 [
    i32 103, label %69
    i32 102, label %._crit_edge478
  ]

._crit_edge478:                                   ; preds = %64
  %.pre479 = load i32, ptr %5, align 4, !tbaa !20
  %.pre480 = load i32, ptr %4, align 4, !tbaa !20
  br label %113

69:                                               ; preds = %64
  %spec.store.select1 = call i32 @llvm.umax.i32(i32 %.0275, i32 1)
  %70 = load i32, ptr %5, align 4, !tbaa !20
  %71 = icmp sgt i32 %70, %spec.store.select1
  br i1 %71, label %72, label %..thread_crit_edge

..thread_crit_edge:                               ; preds = %69
  %.pre477 = load i32, ptr %4, align 4, !tbaa !20
  br label %.thread

72:                                               ; preds = %69
  %73 = sext i32 %spec.store.select1 to i64
  %74 = getelementptr inbounds i8, ptr %2, i64 %73
  %75 = load i8, ptr %74, align 1, !tbaa !21
  %76 = icmp sgt i8 %75, 52
  br i1 %76, label %77, label %._crit_edge475

._crit_edge475:                                   ; preds = %72
  %.pre = load i32, ptr %4, align 4, !tbaa !20
  br label %80

77:                                               ; preds = %72
  %78 = call i32 @xadd1(ptr noundef nonnull %2, i32 noundef %spec.store.select1)
  %.not348 = icmp ne i32 %78, 0
  %.pre476 = load i32, ptr %4, align 4, !tbaa !20
  %79 = zext i1 %.not348 to i32
  %spec.select493 = add nsw i32 %.pre476, %79
  br label %80

80:                                               ; preds = %77, %._crit_edge475
  %81 = phi i32 [ %.pre, %._crit_edge475 ], [ %spec.select493, %77 ]
  %82 = load i32, ptr %5, align 4, !tbaa !20
  %83 = sub i32 %82, %spec.store.select1
  %84 = add nsw i32 %83, %81
  store i32 %84, ptr %4, align 4, !tbaa !20
  store i32 %spec.store.select1, ptr %5, align 4, !tbaa !20
  br label %.thread

.thread:                                          ; preds = %..thread_crit_edge, %80
  %85 = phi i32 [ %70, %..thread_crit_edge ], [ %spec.store.select1, %80 ]
  %86 = phi i32 [ %.pre477, %..thread_crit_edge ], [ %84, %80 ]
  %87 = add i32 %86, -1
  %88 = add i32 %87, %85
  %89 = icmp sgt i32 %88, -5
  %90 = icmp slt i32 %88, %spec.store.select1
  %or.cond384 = and i1 %89, %90
  br i1 %or.cond384, label %113, label %96

.thread484:                                       ; preds = %64
  %91 = load i32, ptr %4, align 4, !tbaa !20
  %92 = load i32, ptr %5, align 4, !tbaa !20
  %93 = add i32 %91, -1
  %94 = add i32 %93, %92
  %95 = add nsw i32 %.0275, 1
  %.not349486 = icmp slt i32 %95, %92
  br i1 %.not349486, label %101, label %96

96:                                               ; preds = %.thread, %.thread484
  %97 = phi i32 [ %95, %.thread484 ], [ %spec.store.select1, %.thread ]
  %98 = phi i32 [ %92, %.thread484 ], [ %85, %.thread ]
  %99 = phi i32 [ %94, %.thread484 ], [ %88, %.thread ]
  %100 = sub nsw i32 %97, %98
  br label %110

101:                                              ; preds = %.thread484
  %102 = sext i32 %95 to i64
  %103 = getelementptr inbounds i8, ptr %2, i64 %102
  %104 = load i8, ptr %103, align 1, !tbaa !21
  %105 = icmp sgt i8 %104, 52
  br i1 %105, label %106, label %109

106:                                              ; preds = %101
  %107 = call i32 @xadd1(ptr noundef nonnull %2, i32 noundef %95)
  %.not351 = icmp eq i32 %107, 0
  %108 = add i32 %91, %92
  %spec.select = select i1 %.not351, i32 %94, i32 %108
  br label %109

109:                                              ; preds = %106, %101
  %.0292 = phi i32 [ %94, %101 ], [ %spec.select, %106 ]
  store i32 %95, ptr %5, align 4, !tbaa !20
  br label %110

110:                                              ; preds = %109, %96
  %.1293 = phi i32 [ %99, %96 ], [ %.0292, %109 ]
  %.0254 = phi i32 [ %100, %96 ], [ 0, %109 ]
  call void @xfmtexp(ptr noundef nonnull %3, i32 noundef %.1293, i32 noundef %.0271)
  %111 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %3) #8
  %112 = trunc i64 %111 to i32
  %.pre481.pre = load i32, ptr %5, align 4, !tbaa !20
  br label %152

113:                                              ; preds = %._crit_edge478, %.thread
  %114 = phi i32 [ %.pre480, %._crit_edge478 ], [ %86, %.thread ]
  %115 = phi i32 [ %.pre479, %._crit_edge478 ], [ %85, %.thread ]
  %.3278 = phi i32 [ %.0275, %._crit_edge478 ], [ %spec.store.select1, %.thread ]
  %116 = add nsw i32 %114, %115
  %117 = icmp sgt i32 %116, 0
  %118 = sub i32 1, %116
  %.0280 = select i1 %117, i32 %116, i32 1
  %.0261 = select i1 %117, i32 0, i32 %118
  %119 = icmp eq i32 %.0298, 103
  %120 = sub nsw i32 %.0261, %.0280
  %121 = select i1 %119, i32 %120, i32 0
  %.4279 = add i32 %.0280, %.3278
  %122 = add i32 %.4279, %121
  %123 = add nsw i32 %.0261, %115
  %.not352 = icmp slt i32 %122, %123
  br i1 %.not352, label %126, label %124

124:                                              ; preds = %113
  %125 = sub nsw i32 %122, %123
  br label %152

126:                                              ; preds = %113
  br i1 %119, label %127, label %128

127:                                              ; preds = %126
  call void @__assert_fail(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.2, i32 noundef 523, ptr noundef nonnull @__PRETTY_FUNCTION__.__efgfmt) #9
  unreachable

128:                                              ; preds = %126
  %129 = sub nsw i32 %122, %.0261
  %130 = icmp slt i32 %129, 0
  br i1 %130, label %.thread397, label %131

131:                                              ; preds = %128
  %132 = icmp eq i32 %129, 0
  br i1 %132, label %133, label %137

133:                                              ; preds = %131
  %134 = load i8, ptr %2, align 16, !tbaa !21
  %135 = icmp sgt i8 %134, 52
  br i1 %135, label %136, label %.thread397

136:                                              ; preds = %133
  store i8 49, ptr %2, align 16, !tbaa !21
  br label %146

137:                                              ; preds = %131
  %138 = zext nneg i32 %129 to i64
  %139 = getelementptr inbounds i8, ptr %2, i64 %138
  %140 = load i8, ptr %139, align 1, !tbaa !21
  %141 = icmp sgt i8 %140, 52
  br i1 %141, label %142, label %.thread397

142:                                              ; preds = %137
  %143 = call i32 @xadd1(ptr noundef nonnull %2, i32 noundef %129)
  %.not354 = icmp eq i32 %143, 0
  br i1 %.not354, label %.thread397, label %144

144:                                              ; preds = %142
  %145 = add nuw nsw i32 %129, 1
  store i8 48, ptr %139, align 1, !tbaa !21
  br label %146

146:                                              ; preds = %144, %136
  %.0290 = phi i32 [ 1, %136 ], [ %145, %144 ]
  %.not355 = icmp eq i32 %.0261, 0
  br i1 %.not355, label %149, label %147

147:                                              ; preds = %146
  %148 = add nsw i32 %.0261, -1
  br label %.thread397

149:                                              ; preds = %146
  %150 = add nuw nsw i32 %.0280, 1
  br label %.thread397

.thread397:                                       ; preds = %137, %142, %149, %147, %133, %128
  %.1291 = phi i32 [ %.0290, %147 ], [ %.0290, %149 ], [ 0, %133 ], [ %129, %142 ], [ %129, %137 ], [ 0, %128 ]
  %.1281 = phi i32 [ %.0280, %147 ], [ %150, %149 ], [ %.0280, %133 ], [ %.0280, %142 ], [ %.0280, %137 ], [ %.0280, %128 ]
  %.1262 = phi i32 [ %148, %147 ], [ 0, %149 ], [ %.0261, %133 ], [ %.0261, %142 ], [ %.0261, %137 ], [ %122, %128 ]
  store i32 %.1291, ptr %5, align 4, !tbaa !20
  %151 = and i32 %37, 8
  %.not356402 = icmp eq i32 %151, 0
  br label %.critedge

152:                                              ; preds = %124, %110
  %.pre481 = phi i32 [ %.pre481.pre, %110 ], [ %115, %124 ]
  %.3283 = phi i32 [ 1, %110 ], [ %.0280, %124 ]
  %.0272 = phi i32 [ %112, %110 ], [ 0, %124 ]
  %.3264 = phi i32 [ 0, %110 ], [ %.0261, %124 ]
  %.2256 = phi i32 [ %.0254, %110 ], [ %125, %124 ]
  %153 = icmp eq i32 %.0298, 103
  %154 = and i32 %37, 8
  %.not356 = icmp eq i32 %154, 0
  %or.cond385 = and i1 %.not356, %153
  br i1 %or.cond385, label %155, label %.critedge

155:                                              ; preds = %152
  %156 = add nsw i32 %.pre481, %.3264
  %157 = add nsw i32 %156, %.2256
  %.not357 = icmp slt i32 %157, %.3283
  br i1 %.not357, label %.critedge, label %158

158:                                              ; preds = %155
  %159 = icmp slt i32 %156, %.3283
  br i1 %159, label %166, label %.preheader428

.preheader428:                                    ; preds = %158
  %invariant.gep = getelementptr i8, ptr %2, i64 -1
  %160 = icmp sgt i32 %156, %.3283
  br i1 %160, label %.lr.ph.preheader, label %.critedge

.lr.ph.preheader:                                 ; preds = %.preheader428
  %161 = sext i32 %.pre481 to i64
  %162 = sext i32 %.3264 to i64
  %163 = sext i32 %.3283 to i64
  %invariant.op = sub nsw i64 %163, %162
  %gep498 = getelementptr i8, ptr %invariant.gep, i64 %161
  %164 = load i8, ptr %gep498, align 1, !tbaa !21
  %165 = icmp eq i8 %164, 48
  br i1 %165, label %.lr.ph500, label %.critedge

166:                                              ; preds = %158
  %167 = sub nsw i32 %.3283, %156
  br label %.critedge

.lr.ph:                                           ; preds = %.lr.ph500
  %gep = getelementptr i8, ptr %invariant.gep, i64 %indvars.iv.next
  %168 = load i8, ptr %gep, align 1, !tbaa !21
  %169 = icmp eq i8 %168, 48
  br i1 %169, label %.lr.ph500, label %.critedge.loopexit, !llvm.loop !22

.lr.ph500:                                        ; preds = %.lr.ph.preheader, %.lr.ph
  %indvars.iv499 = phi i64 [ %indvars.iv.next, %.lr.ph ], [ %161, %.lr.ph.preheader ]
  %indvars.iv.next = add nsw i64 %indvars.iv499, -1
  %170 = trunc nsw i64 %indvars.iv.next to i32
  %171 = icmp sgt i64 %indvars.iv.next, %invariant.op
  br i1 %171, label %.lr.ph, label %.critedge.loopexit, !llvm.loop !22

.critedge.loopexit:                               ; preds = %.lr.ph500, %.lr.ph
  store i32 %170, ptr %5, align 4, !tbaa !20
  br label %.critedge

.critedge:                                        ; preds = %.critedge.loopexit, %.lr.ph.preheader, %.preheader428, %.thread397, %155, %166, %152
  %172 = phi i32 [ %.pre481, %166 ], [ %.pre481, %155 ], [ %.pre481, %152 ], [ %.1291, %.thread397 ], [ %.pre481, %.preheader428 ], [ %.pre481, %.lr.ph.preheader ], [ %170, %.critedge.loopexit ]
  %.not356407 = phi i1 [ true, %166 ], [ true, %155 ], [ %.not356, %152 ], [ %.not356402, %.thread397 ], [ true, %.preheader428 ], [ true, %.lr.ph.preheader ], [ true, %.critedge.loopexit ]
  %.3264406 = phi i32 [ %.3264, %166 ], [ %.3264, %155 ], [ %.3264, %152 ], [ %.1262, %.thread397 ], [ %.3264, %.preheader428 ], [ %.3264, %.lr.ph.preheader ], [ %.3264, %.critedge.loopexit ]
  %.0272405 = phi i32 [ %.0272, %166 ], [ %.0272, %155 ], [ %.0272, %152 ], [ 0, %.thread397 ], [ %.0272, %.preheader428 ], [ %.0272, %.lr.ph.preheader ], [ %.0272, %.critedge.loopexit ]
  %.3283404 = phi i32 [ %.3283, %166 ], [ %.3283, %155 ], [ %.3283, %152 ], [ %.1281, %.thread397 ], [ %.3283, %.preheader428 ], [ %.3283, %.lr.ph.preheader ], [ %.3283, %.critedge.loopexit ]
  %.3257 = phi i32 [ %167, %166 ], [ %.2256, %155 ], [ %.2256, %152 ], [ 0, %.thread397 ], [ 0, %.preheader428 ], [ 0, %.lr.ph.preheader ], [ 0, %.critedge.loopexit ]
  %173 = add i32 %.3257, %.3264406
  %174 = add i32 %173, %172
  %175 = icmp sgt i32 %174, %.3283404
  br i1 %175, label %176, label %178

176:                                              ; preds = %.critedge
  %177 = add nsw i32 %174, %68
  br label %185

178:                                              ; preds = %.critedge
  %179 = icmp eq i32 %174, %.3283404
  br i1 %179, label %180, label %185

180:                                              ; preds = %178
  br i1 %.not356407, label %183, label %181

181:                                              ; preds = %180
  %182 = add nsw i32 %.3283404, %68
  br label %185

183:                                              ; preds = %180
  %184 = add nuw nsw i32 %.3283404, 1
  br label %185

185:                                              ; preds = %178, %183, %181, %176
  %.4284 = phi i32 [ %.3283404, %176 ], [ %.3283404, %181 ], [ %184, %183 ], [ %.3283404, %178 ]
  %.0269 = phi i32 [ %177, %176 ], [ %182, %181 ], [ %.3283404, %183 ], [ %174, %178 ]
  %186 = add nsw i32 %.0269, %.0272405
  %187 = load i32, ptr %6, align 4, !tbaa !20
  %.not359 = icmp eq i32 %187, 0
  br i1 %.not359, label %188, label %.thread409

188:                                              ; preds = %185
  %189 = and i32 %37, 32
  %.not360 = icmp eq i32 %189, 0
  br i1 %.not360, label %190, label %.thread409

190:                                              ; preds = %188
  %191 = and i32 %37, 16
  %.not361 = icmp eq i32 %191, 0
  %spec.select387 = shl nuw nsw i32 %191, 1
  %192 = lshr exact i32 %191, 4
  br label %.thread409

.thread409:                                       ; preds = %188, %185, %190
  %.sink = phi i32 [ %192, %190 ], [ 1, %185 ], [ 1, %188 ]
  %.0273414 = phi i32 [ %spec.select387, %190 ], [ 45, %185 ], [ 43, %188 ]
  %.not362413 = phi i1 [ %.not361, %190 ], [ false, %185 ], [ false, %188 ]
  %193 = and i32 %37, 1
  %.not363 = icmp eq i32 %193, 0
  br i1 %.not363, label %.thread416, label %194

194:                                              ; preds = %.thread409
  %spec.select419 = add i32 %186, %.sink
  %195 = getelementptr inbounds i8, ptr %0, i64 84
  %196 = load i32, ptr %195, align 4, !tbaa !24
  %197 = icmp sle i32 %196, %spec.select419
  %198 = sub nsw i32 %196, %spec.select419
  %.not364 = icmp eq i32 %198, 0
  %or.cond420 = select i1 %197, i1 true, i1 %.not364
  br i1 %or.cond420, label %.thread416, label %199

199:                                              ; preds = %194
  %200 = and i32 %37, 130
  %or.cond390.not = icmp eq i32 %200, 128
  br i1 %or.cond390.not, label %201, label %.thread416

201:                                              ; preds = %199
  %202 = add nsw i32 %198, %.3264406
  %203 = add nsw i32 %198, %.4284
  br label %.thread416

.thread416:                                       ; preds = %194, %.thread409, %201, %199
  %.1289 = phi i32 [ %198, %199 ], [ 0, %201 ], [ 0, %.thread409 ], [ 0, %194 ]
  %.5285 = phi i32 [ %.4284, %199 ], [ %203, %201 ], [ %.4284, %.thread409 ], [ %.4284, %194 ]
  %.4265 = phi i32 [ %.3264406, %199 ], [ %202, %201 ], [ %.3264406, %.thread409 ], [ %.3264406, %194 ]
  %204 = load i8, ptr %0, align 8, !tbaa !25
  %.not367 = icmp eq i8 %204, 0
  %.not368 = icmp eq i32 %.1289, 0
  %.not368.not = xor i1 %.not368, true
  %205 = and i32 %37, 2
  %.not369 = icmp eq i32 %205, 0
  %or.cond393 = and i1 %.not369, %.not368.not
  br i1 %.not367, label %287, label %206

206:                                              ; preds = %.thread416
  br i1 %or.cond393, label %207, label %210

207:                                              ; preds = %206
  %208 = call i32 @__rfmtpad(ptr noundef nonnull %0, i32 noundef %.1289) #7
  %209 = icmp slt i32 %208, 0
  br i1 %209, label %.loopexit422, label %210

210:                                              ; preds = %207, %206
  %211 = getelementptr inbounds i8, ptr %0, i64 16
  %212 = load ptr, ptr %211, align 8, !tbaa !26
  %213 = getelementptr inbounds i8, ptr %0, i64 24
  %214 = load ptr, ptr %213, align 8, !tbaa !27
  br i1 %.not362413, label %224, label %215

215:                                              ; preds = %210
  %216 = getelementptr inbounds i8, ptr %212, i64 4
  %217 = icmp ugt ptr %216, %214
  br i1 %217, label %218, label %222

218:                                              ; preds = %215
  %219 = call ptr @__fmtflush(ptr noundef nonnull %0, ptr noundef %212, i32 noundef 4) #7
  %.not378 = icmp eq ptr %219, null
  br i1 %.not378, label %.loopexit422, label %220

220:                                              ; preds = %218
  %221 = load ptr, ptr %213, align 8, !tbaa !27
  br label %222

222:                                              ; preds = %220, %215
  %.0247 = phi ptr [ %221, %220 ], [ %214, %215 ]
  %.0 = phi ptr [ %219, %220 ], [ %212, %215 ]
  %223 = getelementptr inbounds i8, ptr %.0, i64 4
  store i32 %.0273414, ptr %.0, align 4, !tbaa !20
  br label %224

224:                                              ; preds = %222, %210
  %.1248 = phi ptr [ %.0247, %222 ], [ %214, %210 ]
  %.1 = phi ptr [ %223, %222 ], [ %212, %210 ]
  %225 = icmp sgt i32 %.4265, 0
  %226 = load i32, ptr %5, align 4
  %227 = icmp sgt i32 %226, 0
  %or.cond444 = select i1 %225, i1 true, i1 %227
  %228 = icmp sgt i32 %.3257, 0
  %or.cond10445 = or i1 %or.cond444, %228
  br i1 %or.cond10445, label %.critedge4, label %._crit_edge

.critedge4:                                       ; preds = %224, %.loopexit425
  %229 = phi i1 [ %269, %.loopexit425 ], [ %227, %224 ]
  %230 = phi i32 [ %268, %.loopexit425 ], [ %226, %224 ]
  %231 = phi i1 [ %267, %.loopexit425 ], [ %225, %224 ]
  %.2451 = phi ptr [ %.6, %.loopexit425 ], [ %.1, %224 ]
  %.2249450 = phi ptr [ %.6253, %.loopexit425 ], [ %.1248, %224 ]
  %.4258449 = phi i32 [ %.5259, %.loopexit425 ], [ %.3257, %224 ]
  %.5266448 = phi i32 [ %.6267, %.loopexit425 ], [ %.4265, %224 ]
  %.6286447 = phi i32 [ %251, %.loopexit425 ], [ %.5285, %224 ]
  %.0294446 = phi ptr [ %.1295, %.loopexit425 ], [ %2, %224 ]
  br i1 %231, label %232, label %234

232:                                              ; preds = %.critedge4
  %233 = add nsw i32 %.5266448, -1
  br label %242

234:                                              ; preds = %.critedge4
  br i1 %229, label %235, label %240

235:                                              ; preds = %234
  %236 = add nsw i32 %230, -1
  store i32 %236, ptr %5, align 4, !tbaa !20
  %237 = getelementptr inbounds i8, ptr %.0294446, i64 1
  %238 = load i8, ptr %.0294446, align 1, !tbaa !21
  %239 = sext i8 %238 to i32
  br label %242

240:                                              ; preds = %234
  %241 = add nsw i32 %.4258449, -1
  br label %242

242:                                              ; preds = %232, %240, %235
  %.0299 = phi i32 [ 48, %232 ], [ %239, %235 ], [ 48, %240 ]
  %.1295 = phi ptr [ %.0294446, %232 ], [ %237, %235 ], [ %.0294446, %240 ]
  %.6267 = phi i32 [ %233, %232 ], [ %.5266448, %235 ], [ %.5266448, %240 ]
  %.5259 = phi i32 [ %.4258449, %232 ], [ %.4258449, %235 ], [ %241, %240 ]
  %243 = getelementptr inbounds i8, ptr %.2451, i64 4
  %244 = icmp ugt ptr %243, %.2249450
  br i1 %244, label %245, label %249

245:                                              ; preds = %242
  %246 = call ptr @__fmtflush(ptr noundef nonnull %0, ptr noundef %.2451, i32 noundef 4) #7
  %.not381 = icmp eq ptr %246, null
  br i1 %.not381, label %.loopexit422, label %247

247:                                              ; preds = %245
  %248 = load ptr, ptr %213, align 8, !tbaa !27
  br label %249

249:                                              ; preds = %247, %242
  %.3250 = phi ptr [ %248, %247 ], [ %.2249450, %242 ]
  %.3 = phi ptr [ %246, %247 ], [ %.2451, %242 ]
  %250 = getelementptr inbounds i8, ptr %.3, i64 4
  store i32 %.0299, ptr %.3, align 4, !tbaa !20
  %251 = add nsw i32 %.6286447, -1
  %252 = icmp eq i32 %251, 0
  br i1 %252, label %.preheader424, label %.loopexit425

.preheader424:                                    ; preds = %249
  %253 = load i8, ptr %spec.store.select, align 1, !tbaa !21
  %.not382438 = icmp eq i8 %253, 0
  br i1 %.not382438, label %.loopexit425, label %.lr.ph442

.lr.ph442:                                        ; preds = %.preheader424, %263
  %.4441 = phi ptr [ %265, %263 ], [ %250, %.preheader424 ]
  %.4251440 = phi ptr [ %.5252, %263 ], [ %.3250, %.preheader424 ]
  %.0317439 = phi ptr [ %256, %263 ], [ %spec.store.select, %.preheader424 ]
  %254 = call i32 @chartorune(ptr noundef nonnull %7, ptr noundef nonnull %.0317439) #7
  %255 = sext i32 %254 to i64
  %256 = getelementptr inbounds i8, ptr %.0317439, i64 %255
  %257 = getelementptr inbounds i8, ptr %.4441, i64 4
  %258 = icmp ugt ptr %257, %.4251440
  br i1 %258, label %259, label %263

259:                                              ; preds = %.lr.ph442
  %260 = call ptr @__fmtflush(ptr noundef nonnull %0, ptr noundef nonnull %.4441, i32 noundef 4) #7
  %.not383 = icmp eq ptr %260, null
  br i1 %.not383, label %.loopexit422, label %261

261:                                              ; preds = %259
  %262 = load ptr, ptr %213, align 8, !tbaa !27
  br label %263

263:                                              ; preds = %261, %.lr.ph442
  %.5252 = phi ptr [ %262, %261 ], [ %.4251440, %.lr.ph442 ]
  %.5 = phi ptr [ %260, %261 ], [ %.4441, %.lr.ph442 ]
  %264 = load i32, ptr %7, align 4, !tbaa !20
  %265 = getelementptr inbounds i8, ptr %.5, i64 4
  store i32 %264, ptr %.5, align 4, !tbaa !20
  %266 = load i8, ptr %256, align 1, !tbaa !21
  %.not382 = icmp eq i8 %266, 0
  br i1 %.not382, label %.loopexit425, label %.lr.ph442, !llvm.loop !28

.loopexit425:                                     ; preds = %263, %.preheader424, %249
  %.6253 = phi ptr [ %.3250, %249 ], [ %.3250, %.preheader424 ], [ %.5252, %263 ]
  %.6 = phi ptr [ %250, %249 ], [ %250, %.preheader424 ], [ %265, %263 ]
  %267 = icmp sgt i32 %.6267, 0
  %268 = load i32, ptr %5, align 4
  %269 = icmp sgt i32 %268, 0
  %or.cond = select i1 %267, i1 true, i1 %269
  %270 = icmp sgt i32 %.5259, 0
  %or.cond10 = select i1 %or.cond, i1 true, i1 %270
  br i1 %or.cond10, label %.critedge4, label %._crit_edge, !llvm.loop !29

._crit_edge:                                      ; preds = %.loopexit425, %224
  %.2.lcssa = phi ptr [ %.1, %224 ], [ %.6, %.loopexit425 ]
  %271 = load ptr, ptr %211, align 8, !tbaa !26
  %272 = ptrtoint ptr %.2.lcssa to i64
  %273 = ptrtoint ptr %271 to i64
  %274 = sub i64 %272, %273
  %275 = lshr exact i64 %274, 2
  %276 = getelementptr inbounds i8, ptr %0, i64 48
  %277 = load i32, ptr %276, align 8, !tbaa !30
  %278 = trunc i64 %275 to i32
  %279 = add i32 %277, %278
  store i32 %279, ptr %276, align 8, !tbaa !30
  store ptr %.2.lcssa, ptr %211, align 8, !tbaa !26
  %.not379 = icmp eq i32 %.0272405, 0
  br i1 %.not379, label %283, label %280

280:                                              ; preds = %._crit_edge
  %281 = call i32 @__fmtcpy(ptr noundef nonnull %0, ptr noundef nonnull %3, i32 noundef %.0272405, i32 noundef %.0272405) #7
  %282 = icmp slt i32 %281, 0
  br i1 %282, label %.loopexit422, label %283

283:                                              ; preds = %280, %._crit_edge
  %or.cond392 = or i1 %.not369, %.not368
  br i1 %or.cond392, label %366, label %284

284:                                              ; preds = %283
  %285 = call i32 @__rfmtpad(ptr noundef nonnull %0, i32 noundef %.1289) #7
  %286 = icmp slt i32 %285, 0
  br i1 %286, label %.loopexit422, label %366

287:                                              ; preds = %.thread416
  br i1 %or.cond393, label %288, label %291

288:                                              ; preds = %287
  %289 = call i32 @__fmtpad(ptr noundef nonnull %0, i32 noundef %.1289) #7
  %290 = icmp slt i32 %289, 0
  br i1 %290, label %.loopexit422, label %291

291:                                              ; preds = %288, %287
  %292 = getelementptr inbounds i8, ptr %0, i64 16
  %293 = load ptr, ptr %292, align 8, !tbaa !26
  %294 = getelementptr inbounds i8, ptr %0, i64 24
  %295 = load ptr, ptr %294, align 8, !tbaa !27
  br i1 %.not362413, label %306, label %296

296:                                              ; preds = %291
  %297 = getelementptr inbounds i8, ptr %293, i64 1
  %298 = icmp ugt ptr %297, %295
  br i1 %298, label %299, label %303

299:                                              ; preds = %296
  %300 = call ptr @__fmtflush(ptr noundef nonnull %0, ptr noundef %293, i32 noundef 1) #7
  %.not370 = icmp eq ptr %300, null
  br i1 %.not370, label %.loopexit422, label %301

301:                                              ; preds = %299
  %302 = load ptr, ptr %294, align 8, !tbaa !27
  br label %303

303:                                              ; preds = %301, %296
  %.1310 = phi ptr [ %302, %301 ], [ %295, %296 ]
  %.0302 = phi ptr [ %300, %301 ], [ %293, %296 ]
  %304 = trunc nuw nsw i32 %.0273414 to i8
  %305 = getelementptr inbounds i8, ptr %.0302, i64 1
  store i8 %304, ptr %.0302, align 1, !tbaa !21
  br label %306

306:                                              ; preds = %303, %291
  %.2311 = phi ptr [ %.1310, %303 ], [ %295, %291 ]
  %.1303 = phi ptr [ %305, %303 ], [ %293, %291 ]
  %307 = icmp sgt i32 %.4265, 0
  %308 = load i32, ptr %5, align 4
  %309 = icmp sgt i32 %308, 0
  %or.cond6460 = select i1 %307, i1 true, i1 %309
  %310 = icmp sgt i32 %.3257, 0
  %or.cond12461 = or i1 %or.cond6460, %310
  br i1 %or.cond12461, label %.critedge8, label %._crit_edge468

.critedge8:                                       ; preds = %306, %.loopexit
  %311 = phi i1 [ %349, %.loopexit ], [ %309, %306 ]
  %312 = phi i32 [ %348, %.loopexit ], [ %308, %306 ]
  %313 = phi i1 [ %347, %.loopexit ], [ %307, %306 ]
  %.6260467 = phi i32 [ %.7, %.loopexit ], [ %.3257, %306 ]
  %.7268466 = phi i32 [ %.8, %.loopexit ], [ %.4265, %306 ]
  %.7287465 = phi i32 [ %332, %.loopexit ], [ %.5285, %306 ]
  %.2296464 = phi ptr [ %.3297, %.loopexit ], [ %2, %306 ]
  %.2304463 = phi ptr [ %.6308, %.loopexit ], [ %.1303, %306 ]
  %.3312462 = phi ptr [ %.7316, %.loopexit ], [ %.2311, %306 ]
  br i1 %313, label %314, label %316

314:                                              ; preds = %.critedge8
  %315 = add nsw i32 %.7268466, -1
  br label %323

316:                                              ; preds = %.critedge8
  br i1 %311, label %317, label %321

317:                                              ; preds = %316
  %318 = add nsw i32 %312, -1
  store i32 %318, ptr %5, align 4, !tbaa !20
  %319 = getelementptr inbounds i8, ptr %.2296464, i64 1
  %320 = load i8, ptr %.2296464, align 1, !tbaa !21
  br label %323

321:                                              ; preds = %316
  %322 = add nsw i32 %.6260467, -1
  br label %323

323:                                              ; preds = %314, %321, %317
  %.1300 = phi i8 [ 48, %314 ], [ %320, %317 ], [ 48, %321 ]
  %.3297 = phi ptr [ %.2296464, %314 ], [ %319, %317 ], [ %.2296464, %321 ]
  %.8 = phi i32 [ %315, %314 ], [ %.7268466, %317 ], [ %.7268466, %321 ]
  %.7 = phi i32 [ %.6260467, %314 ], [ %.6260467, %317 ], [ %322, %321 ]
  %324 = getelementptr inbounds i8, ptr %.2304463, i64 1
  %325 = icmp ugt ptr %324, %.3312462
  br i1 %325, label %326, label %330

326:                                              ; preds = %323
  %327 = call ptr @__fmtflush(ptr noundef nonnull %0, ptr noundef %.2304463, i32 noundef 1) #7
  %.not373 = icmp eq ptr %327, null
  br i1 %.not373, label %.loopexit422, label %328

328:                                              ; preds = %326
  %329 = load ptr, ptr %294, align 8, !tbaa !27
  br label %330

330:                                              ; preds = %328, %323
  %.4313 = phi ptr [ %329, %328 ], [ %.3312462, %323 ]
  %.3305 = phi ptr [ %327, %328 ], [ %.2304463, %323 ]
  %331 = getelementptr inbounds i8, ptr %.3305, i64 1
  store i8 %.1300, ptr %.3305, align 1, !tbaa !21
  %332 = add nsw i32 %.7287465, -1
  %333 = icmp eq i32 %332, 0
  br i1 %333, label %.preheader, label %.loopexit

.preheader:                                       ; preds = %330
  %334 = load i8, ptr %spec.store.select, align 1, !tbaa !21
  %.not374453 = icmp eq i8 %334, 0
  br i1 %.not374453, label %.loopexit, label %.lr.ph457

.lr.ph457:                                        ; preds = %.preheader, %342
  %335 = phi i8 [ %346, %342 ], [ %334, %.preheader ]
  %.4306456 = phi ptr [ %344, %342 ], [ %331, %.preheader ]
  %.5314455 = phi ptr [ %.6315, %342 ], [ %.4313, %.preheader ]
  %.1318454 = phi ptr [ %345, %342 ], [ %spec.store.select, %.preheader ]
  %336 = getelementptr inbounds i8, ptr %.4306456, i64 1
  %337 = icmp ugt ptr %336, %.5314455
  br i1 %337, label %338, label %342

338:                                              ; preds = %.lr.ph457
  %339 = call ptr @__fmtflush(ptr noundef nonnull %0, ptr noundef nonnull %.4306456, i32 noundef 1) #7
  %.not375 = icmp eq ptr %339, null
  br i1 %.not375, label %.loopexit422, label %340

340:                                              ; preds = %338
  %341 = load ptr, ptr %294, align 8, !tbaa !27
  %.pre482 = load i8, ptr %.1318454, align 1, !tbaa !21
  br label %342

342:                                              ; preds = %340, %.lr.ph457
  %343 = phi i8 [ %.pre482, %340 ], [ %335, %.lr.ph457 ]
  %.6315 = phi ptr [ %341, %340 ], [ %.5314455, %.lr.ph457 ]
  %.5307 = phi ptr [ %339, %340 ], [ %.4306456, %.lr.ph457 ]
  %344 = getelementptr inbounds i8, ptr %.5307, i64 1
  store i8 %343, ptr %.5307, align 1, !tbaa !21
  %345 = getelementptr inbounds i8, ptr %.1318454, i64 1
  %346 = load i8, ptr %345, align 1, !tbaa !21
  %.not374 = icmp eq i8 %346, 0
  br i1 %.not374, label %.loopexit, label %.lr.ph457, !llvm.loop !31

.loopexit:                                        ; preds = %342, %.preheader, %330
  %.7316 = phi ptr [ %.4313, %330 ], [ %.4313, %.preheader ], [ %.6315, %342 ]
  %.6308 = phi ptr [ %331, %330 ], [ %331, %.preheader ], [ %344, %342 ]
  %347 = icmp sgt i32 %.8, 0
  %348 = load i32, ptr %5, align 4
  %349 = icmp sgt i32 %348, 0
  %or.cond6 = select i1 %347, i1 true, i1 %349
  %350 = icmp sgt i32 %.7, 0
  %or.cond12 = select i1 %or.cond6, i1 true, i1 %350
  br i1 %or.cond12, label %.critedge8, label %._crit_edge468, !llvm.loop !32

._crit_edge468:                                   ; preds = %.loopexit, %306
  %.2304.lcssa = phi ptr [ %.1303, %306 ], [ %.6308, %.loopexit ]
  %351 = load ptr, ptr %292, align 8, !tbaa !26
  %352 = ptrtoint ptr %.2304.lcssa to i64
  %353 = ptrtoint ptr %351 to i64
  %354 = sub i64 %352, %353
  %355 = getelementptr inbounds i8, ptr %0, i64 48
  %356 = load i32, ptr %355, align 8, !tbaa !30
  %357 = trunc i64 %354 to i32
  %358 = add i32 %356, %357
  store i32 %358, ptr %355, align 8, !tbaa !30
  store ptr %.2304.lcssa, ptr %292, align 8, !tbaa !26
  %.not371 = icmp eq i32 %.0272405, 0
  br i1 %.not371, label %362, label %359

359:                                              ; preds = %._crit_edge468
  %360 = call i32 @__fmtcpy(ptr noundef nonnull %0, ptr noundef nonnull %3, i32 noundef %.0272405, i32 noundef %.0272405) #7
  %361 = icmp slt i32 %360, 0
  br i1 %361, label %.loopexit422, label %362

362:                                              ; preds = %359, %._crit_edge468
  %or.cond394 = or i1 %.not369, %.not368
  br i1 %or.cond394, label %366, label %363

363:                                              ; preds = %362
  %364 = call i32 @__fmtpad(ptr noundef nonnull %0, i32 noundef %.1289) #7
  %365 = icmp slt i32 %364, 0
  br i1 %365, label %.loopexit422, label %366

366:                                              ; preds = %362, %363, %283, %284
  br label %.loopexit422

.loopexit422:                                     ; preds = %245, %259, %326, %338, %363, %359, %299, %288, %284, %280, %218, %207, %366, %49
  %.0274 = phi i32 [ %55, %49 ], [ 0, %366 ], [ -1, %207 ], [ -1, %218 ], [ -1, %280 ], [ -1, %284 ], [ -1, %288 ], [ -1, %299 ], [ -1, %359 ], [ -1, %363 ], [ -1, %338 ], [ -1, %326 ], [ -1, %259 ], [ -1, %245 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #7
  call void @llvm.lifetime.end.p0(i64 10, ptr nonnull %3) #7
  call void @llvm.lifetime.end.p0(i64 27, ptr nonnull %2) #7
  ret i32 %.0274
}

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

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare ptr @llvm.ptrmask.p0.i64(ptr, i64) #2

declare i32 @__isNaN(double noundef) local_unnamed_addr #3

declare i32 @__fmtcpy(ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #3

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i64 @strlen(ptr nocapture noundef) local_unnamed_addr #4

declare i32 @__isInf(double noundef, i32 noundef) local_unnamed_addr #3

; Function Attrs: nounwind uwtable
declare hidden void @xdtoa(double noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

declare i32 @utflen(ptr noundef) local_unnamed_addr #3

; Function Attrs: nounwind uwtable
declare hidden i32 @xadd1(ptr noundef, i32 noundef) local_unnamed_addr #0

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #5

; Function Attrs: nounwind uwtable
declare hidden void @xfmtexp(ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #0

declare i32 @__rfmtpad(ptr noundef, i32 noundef) local_unnamed_addr #3

declare ptr @__fmtflush(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #3

declare i32 @chartorune(ptr noundef, ptr noundef) local_unnamed_addr #3

declare i32 @__fmtpad(ptr noundef, i32 noundef) local_unnamed_addr #3

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

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

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #3 = { "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 = { mustprogress nofree nounwind willreturn memory(argmem: read) "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 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #7 = { nounwind }
attributes #8 = { nounwind willreturn memory(read) }
attributes #9 = { noreturn 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, !11, i64 96}
!6 = !{!"Fmt", !7, i64 0, !9, i64 8, !9, i64 16, !9, i64 24, !9, i64 32, !9, i64 40, !10, i64 48, !7, i64 56, !10, i64 80, !10, i64 84, !10, i64 88, !11, i64 96, !9, i64 104, !9, i64 112, !9, i64 120}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!"any pointer", !7, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!"long", !7, i64 0}
!12 = !{!13, !13, i64 0}
!13 = !{!"long double", !7, i64 0}
!14 = !{!15, !15, i64 0}
!15 = !{!"double", !7, i64 0}
!16 = !{!6, !10, i64 88}
!17 = !{!6, !10, i64 80}
!18 = !{!9, !9, i64 0}
!19 = !{!6, !9, i64 104}
!20 = !{!10, !10, i64 0}
!21 = !{!7, !7, i64 0}
!22 = distinct !{!22, !23}
!23 = !{!"llvm.loop.mustprogress"}
!24 = !{!6, !10, i64 84}
!25 = !{!6, !7, i64 0}
!26 = !{!6, !9, i64 16}
!27 = !{!6, !9, i64 24}
!28 = distinct !{!28, !23}
!29 = distinct !{!29, !23}
!30 = !{!6, !10, i64 48}
!31 = distinct !{!31, !23}
!32 = distinct !{!32, !23}


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