; LLVM IR from wrnlb666/yet-another-string-library-in-c :: yasli (stbsp_vsprintfcb)

; 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.anon = type { i16, [201 x i8] }
%struct.__va_list_tag = type { i32, i32, ptr, ptr }

@stbsp__period = external hidden global i8, align 1
@stbsp__comma = external hidden global i8, align 1
@stbsp_vsprintfcb.hex = external hidden global [19 x i8], align 16
@stbsp_vsprintfcb.hexu = external hidden global [19 x i8], align 16
@.str = external hidden unnamed_addr constant [5 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [6 x i8], align 1
@stbsp__digitpair = external hidden global %struct.anon, align 2

; Function Attrs: nounwind uwtable
define dso_local i32 @stbsp_vsprintfcb(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4) #0 {
  %6 = alloca i32, align 4
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %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 [512 x i8], align 16
  %24 = alloca [8 x i8], align 1
  %25 = alloca [8 x i8], align 1
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i64, align 8
  %32 = alloca double, align 8
  %33 = alloca i32, align 4
  %34 = alloca ptr, align 8
  %35 = alloca ptr, align 8
  %36 = alloca double, align 8
  %37 = alloca i32, align 4
  %38 = alloca i8, align 1
  %39 = alloca i64, align 8
  %40 = alloca i32, align 4
  %41 = alloca ptr, align 8
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca i32, align 4
  %54 = alloca i32, align 4
  %55 = alloca i32, align 4
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca i32, align 4
  %59 = alloca i32, align 4
  %60 = alloca i32, align 4
  %61 = alloca i32, align 4
  %62 = alloca i32, align 4
  %63 = alloca i32, align 4
  %64 = alloca i32, align 4
  %65 = alloca i32, align 4
  store ptr %0, ptr %7, align 8, !tbaa !5
  store ptr %1, ptr %8, align 8, !tbaa !5
  store ptr %2, ptr %9, align 8, !tbaa !5
  store ptr %3, ptr %10, align 8, !tbaa !5
  store ptr %4, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #2
  store i32 0, ptr %14, align 4, !tbaa !9
  %66 = load ptr, ptr %9, align 8, !tbaa !5
  store ptr %66, ptr %12, align 8, !tbaa !5
  %67 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %67, ptr %13, align 8, !tbaa !5
  br label %68

68:                                               ; preds = %2606, %5
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #2
  br label %69

69:                                               ; preds = %68
  br label %70

70:                                               ; preds = %120, %69
  %71 = load ptr, ptr %13, align 8, !tbaa !5
  %72 = ptrtoint ptr %71 to i64
  %73 = and i64 %72, 3
  %74 = icmp ne i64 %73, 0
  br i1 %74, label %75, label %128

75:                                               ; preds = %70
  br label %76

76:                                               ; preds = %170, %75
  %77 = load ptr, ptr %13, align 8, !tbaa !5
  %78 = getelementptr inbounds i8, ptr %77, i64 0
  %79 = load i8, ptr %78, align 1, !tbaa !11
  %80 = sext i8 %79 to i32
  %81 = icmp eq i32 %80, 37
  br i1 %81, label %82, label %83

82:                                               ; preds = %76
  br label %173

83:                                               ; preds = %76
  br label %84

84:                                               ; preds = %170, %83
  %85 = load ptr, ptr %13, align 8, !tbaa !5
  %86 = getelementptr inbounds i8, ptr %85, i64 0
  %87 = load i8, ptr %86, align 1, !tbaa !11
  %88 = sext i8 %87 to i32
  %89 = icmp eq i32 %88, 0
  br i1 %89, label %90, label %91

90:                                               ; preds = %84
  store i32 11, ptr %20, align 4
  br label %2604

91:                                               ; preds = %84
  %92 = load ptr, ptr %7, align 8, !tbaa !5
  %93 = icmp ne ptr %92, null
  br i1 %93, label %94, label %120

94:                                               ; preds = %91
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #2
  %95 = load ptr, ptr %12, align 8, !tbaa !5
  %96 = load ptr, ptr %9, align 8, !tbaa !5
  %97 = ptrtoint ptr %95 to i64
  %98 = ptrtoint ptr %96 to i64
  %99 = sub i64 %97, %98
  %100 = trunc i64 %99 to i32
  store i32 %100, ptr %19, align 4, !tbaa !9
  %101 = load i32, ptr %19, align 4, !tbaa !9
  %102 = add nsw i32 %101, 1
  %103 = icmp sge i32 %102, 512
  br i1 %103, label %104, label %116

104:                                              ; preds = %94
  %105 = load i32, ptr %19, align 4, !tbaa !9
  %106 = load i32, ptr %14, align 4, !tbaa !9
  %107 = add nsw i32 %106, %105
  store i32 %107, ptr %14, align 4, !tbaa !9
  %108 = load ptr, ptr %7, align 8, !tbaa !5
  %109 = load ptr, ptr %9, align 8, !tbaa !5
  %110 = load ptr, ptr %8, align 8, !tbaa !5
  %111 = load i32, ptr %19, align 4, !tbaa !9
  %112 = call ptr %108(ptr noundef %109, ptr noundef %110, i32 noundef %111)
  store ptr %112, ptr %9, align 8, !tbaa !5
  store ptr %112, ptr %12, align 8, !tbaa !5
  %113 = icmp eq ptr null, %112
  br i1 %113, label %114, label %115

114:                                              ; preds = %104
  store i32 12, ptr %20, align 4
  br label %117

115:                                              ; preds = %104
  br label %116

116:                                              ; preds = %115, %94
  store i32 0, ptr %20, align 4
  br label %117

117:                                              ; preds = %116, %114
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #2
  %118 = load i32, ptr %20, align 4
  switch i32 %118, label %2604 [
    i32 0, label %119
  ]

119:                                              ; preds = %117
  br label %120

120:                                              ; preds = %119, %91
  %121 = load ptr, ptr %13, align 8, !tbaa !5
  %122 = getelementptr inbounds i8, ptr %121, i64 0
  %123 = load i8, ptr %122, align 1, !tbaa !11
  %124 = load ptr, ptr %12, align 8, !tbaa !5
  %125 = getelementptr inbounds i8, ptr %124, i32 1
  store ptr %125, ptr %12, align 8, !tbaa !5
  store i8 %123, ptr %124, align 1, !tbaa !11
  %126 = load ptr, ptr %13, align 8, !tbaa !5
  %127 = getelementptr inbounds i8, ptr %126, i32 1
  store ptr %127, ptr %13, align 8, !tbaa !5
  br label %70, !llvm.loop !12

128:                                              ; preds = %70
  br label %129

129:                                              ; preds = %172, %128
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #2
  %130 = load ptr, ptr %13, align 8, !tbaa !5
  %131 = load i32, ptr %130, align 4, !tbaa !9
  store i32 %131, ptr %21, align 4, !tbaa !9
  %132 = load i32, ptr %21, align 4, !tbaa !9
  %133 = xor i32 %132, -1
  %134 = and i32 %133, -2139062144
  store i32 %134, ptr %22, align 4, !tbaa !9
  %135 = load i32, ptr %21, align 4, !tbaa !9
  %136 = xor i32 %135, 623191333
  %137 = sub i32 %136, 16843009
  %138 = load i32, ptr %22, align 4, !tbaa !9
  %139 = and i32 %137, %138
  %140 = icmp ne i32 %139, 0
  br i1 %140, label %141, label %142

141:                                              ; preds = %129
  store i32 8, ptr %20, align 4
  br label %170

142:                                              ; preds = %129
  %143 = load i32, ptr %21, align 4, !tbaa !9
  %144 = sub i32 %143, 16843009
  %145 = load i32, ptr %22, align 4, !tbaa !9
  %146 = and i32 %144, %145
  %147 = icmp ne i32 %146, 0
  br i1 %147, label %148, label %149

148:                                              ; preds = %142
  store i32 10, ptr %20, align 4
  br label %170

149:                                              ; preds = %142
  %150 = load ptr, ptr %7, align 8, !tbaa !5
  %151 = icmp ne ptr %150, null
  br i1 %151, label %152, label %163

152:                                              ; preds = %149
  %153 = load ptr, ptr %12, align 8, !tbaa !5
  %154 = load ptr, ptr %9, align 8, !tbaa !5
  %155 = ptrtoint ptr %153 to i64
  %156 = ptrtoint ptr %154 to i64
  %157 = sub i64 %155, %156
  %158 = trunc i64 %157 to i32
  %159 = sub nsw i32 512, %158
  %160 = icmp slt i32 %159, 4
  br i1 %160, label %161, label %162

161:                                              ; preds = %152
  store i32 8, ptr %20, align 4
  br label %170

162:                                              ; preds = %152
  br label %163

163:                                              ; preds = %162, %149
  %164 = load i32, ptr %21, align 4, !tbaa !9
  %165 = load ptr, ptr %12, align 8, !tbaa !5
  store i32 %164, ptr %165, align 4, !tbaa !9
  %166 = load ptr, ptr %12, align 8, !tbaa !5
  %167 = getelementptr inbounds i8, ptr %166, i64 4
  store ptr %167, ptr %12, align 8, !tbaa !5
  %168 = load ptr, ptr %13, align 8, !tbaa !5
  %169 = getelementptr inbounds i8, ptr %168, i64 4
  store ptr %169, ptr %13, align 8, !tbaa !5
  store i32 0, ptr %20, align 4
  br label %170

170:                                              ; preds = %163, %161, %148, %141
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #2
  %171 = load i32, ptr %20, align 4
  switch i32 %171, label %2650 [
    i32 0, label %172
    i32 8, label %76
    i32 10, label %84
  ]

172:                                              ; preds = %170
  br label %129

173:                                              ; preds = %82
  %174 = load ptr, ptr %13, align 8, !tbaa !5
  %175 = getelementptr inbounds i8, ptr %174, i32 1
  store ptr %175, ptr %13, align 8, !tbaa !5
  store i32 0, ptr %15, align 4, !tbaa !9
  store i32 -1, ptr %16, align 4, !tbaa !9
  store i32 0, ptr %18, align 4, !tbaa !9
  store i32 0, ptr %17, align 4, !tbaa !9
  br label %176

176:                                              ; preds = %227, %224, %201, %196, %191, %186, %181, %173
  %177 = load ptr, ptr %13, align 8, !tbaa !5
  %178 = getelementptr inbounds i8, ptr %177, i64 0
  %179 = load i8, ptr %178, align 1, !tbaa !11
  %180 = sext i8 %179 to i32
  switch i32 %180, label %237 [
    i32 45, label %181
    i32 43, label %186
    i32 32, label %191
    i32 35, label %196
    i32 39, label %201
    i32 36, label %206
    i32 95, label %227
    i32 48, label %232
  ]

181:                                              ; preds = %176
  %182 = load i32, ptr %18, align 4, !tbaa !9
  %183 = or i32 %182, 1
  store i32 %183, ptr %18, align 4, !tbaa !9
  %184 = load ptr, ptr %13, align 8, !tbaa !5
  %185 = getelementptr inbounds i8, ptr %184, i32 1
  store ptr %185, ptr %13, align 8, !tbaa !5
  br label %176

186:                                              ; preds = %176
  %187 = load i32, ptr %18, align 4, !tbaa !9
  %188 = or i32 %187, 2
  store i32 %188, ptr %18, align 4, !tbaa !9
  %189 = load ptr, ptr %13, align 8, !tbaa !5
  %190 = getelementptr inbounds i8, ptr %189, i32 1
  store ptr %190, ptr %13, align 8, !tbaa !5
  br label %176

191:                                              ; preds = %176
  %192 = load i32, ptr %18, align 4, !tbaa !9
  %193 = or i32 %192, 4
  store i32 %193, ptr %18, align 4, !tbaa !9
  %194 = load ptr, ptr %13, align 8, !tbaa !5
  %195 = getelementptr inbounds i8, ptr %194, i32 1
  store ptr %195, ptr %13, align 8, !tbaa !5
  br label %176

196:                                              ; preds = %176
  %197 = load i32, ptr %18, align 4, !tbaa !9
  %198 = or i32 %197, 8
  store i32 %198, ptr %18, align 4, !tbaa !9
  %199 = load ptr, ptr %13, align 8, !tbaa !5
  %200 = getelementptr inbounds i8, ptr %199, i32 1
  store ptr %200, ptr %13, align 8, !tbaa !5
  br label %176

201:                                              ; preds = %176
  %202 = load i32, ptr %18, align 4, !tbaa !9
  %203 = or i32 %202, 64
  store i32 %203, ptr %18, align 4, !tbaa !9
  %204 = load ptr, ptr %13, align 8, !tbaa !5
  %205 = getelementptr inbounds i8, ptr %204, i32 1
  store ptr %205, ptr %13, align 8, !tbaa !5
  br label %176

206:                                              ; preds = %176
  %207 = load i32, ptr %18, align 4, !tbaa !9
  %208 = and i32 %207, 256
  %209 = icmp ne i32 %208, 0
  br i1 %209, label %210, label %221

210:                                              ; preds = %206
  %211 = load i32, ptr %18, align 4, !tbaa !9
  %212 = and i32 %211, 2048
  %213 = icmp ne i32 %212, 0
  br i1 %213, label %214, label %217

214:                                              ; preds = %210
  %215 = load i32, ptr %18, align 4, !tbaa !9
  %216 = or i32 %215, 4096
  store i32 %216, ptr %18, align 4, !tbaa !9
  br label %220

217:                                              ; preds = %210
  %218 = load i32, ptr %18, align 4, !tbaa !9
  %219 = or i32 %218, 2048
  store i32 %219, ptr %18, align 4, !tbaa !9
  br label %220

220:                                              ; preds = %217, %214
  br label %224

221:                                              ; preds = %206
  %222 = load i32, ptr %18, align 4, !tbaa !9
  %223 = or i32 %222, 256
  store i32 %223, ptr %18, align 4, !tbaa !9
  br label %224

224:                                              ; preds = %221, %220
  %225 = load ptr, ptr %13, align 8, !tbaa !5
  %226 = getelementptr inbounds i8, ptr %225, i32 1
  store ptr %226, ptr %13, align 8, !tbaa !5
  br label %176

227:                                              ; preds = %176
  %228 = load i32, ptr %18, align 4, !tbaa !9
  %229 = or i32 %228, 1024
  store i32 %229, ptr %18, align 4, !tbaa !9
  %230 = load ptr, ptr %13, align 8, !tbaa !5
  %231 = getelementptr inbounds i8, ptr %230, i32 1
  store ptr %231, ptr %13, align 8, !tbaa !5
  br label %176

232:                                              ; preds = %176
  %233 = load i32, ptr %18, align 4, !tbaa !9
  %234 = or i32 %233, 16
  store i32 %234, ptr %18, align 4, !tbaa !9
  %235 = load ptr, ptr %13, align 8, !tbaa !5
  %236 = getelementptr inbounds i8, ptr %235, i32 1
  store ptr %236, ptr %13, align 8, !tbaa !5
  br label %238

237:                                              ; preds = %176
  br label %238

238:                                              ; preds = %237, %232
  %239 = load ptr, ptr %13, align 8, !tbaa !5
  %240 = getelementptr inbounds i8, ptr %239, i64 0
  %241 = load i8, ptr %240, align 1, !tbaa !11
  %242 = sext i8 %241 to i32
  %243 = icmp eq i32 %242, 42
  br i1 %243, label %244, label %263

244:                                              ; preds = %238
  %245 = load ptr, ptr %11, align 8, !tbaa !5
  %246 = getelementptr inbounds %struct.__va_list_tag, ptr %245, i32 0, i32 0
  %247 = load i32, ptr %246, align 8
  %248 = icmp ule i32 %247, 40
  br i1 %248, label %249, label %254

249:                                              ; preds = %244
  %250 = getelementptr inbounds %struct.__va_list_tag, ptr %245, i32 0, i32 3
  %251 = load ptr, ptr %250, align 8
  %252 = getelementptr i8, ptr %251, i32 %247
  %253 = add i32 %247, 8
  store i32 %253, ptr %246, align 8
  br label %258

254:                                              ; preds = %244
  %255 = getelementptr inbounds %struct.__va_list_tag, ptr %245, i32 0, i32 2
  %256 = load ptr, ptr %255, align 8
  %257 = getelementptr i8, ptr %256, i32 8
  store ptr %257, ptr %255, align 8
  br label %258

258:                                              ; preds = %254, %249
  %259 = phi ptr [ %252, %249 ], [ %256, %254 ]
  %260 = load i32, ptr %259, align 4, !tbaa !9
  store i32 %260, ptr %15, align 4, !tbaa !9
  %261 = load ptr, ptr %13, align 8, !tbaa !5
  %262 = getelementptr inbounds i8, ptr %261, i32 1
  store ptr %262, ptr %13, align 8, !tbaa !5
  br label %290

263:                                              ; preds = %238
  br label %264

264:                                              ; preds = %278, %263
  %265 = load ptr, ptr %13, align 8, !tbaa !5
  %266 = getelementptr inbounds i8, ptr %265, i64 0
  %267 = load i8, ptr %266, align 1, !tbaa !11
  %268 = sext i8 %267 to i32
  %269 = icmp sge i32 %268, 48
  br i1 %269, label %270, label %276

270:                                              ; preds = %264
  %271 = load ptr, ptr %13, align 8, !tbaa !5
  %272 = getelementptr inbounds i8, ptr %271, i64 0
  %273 = load i8, ptr %272, align 1, !tbaa !11
  %274 = sext i8 %273 to i32
  %275 = icmp sle i32 %274, 57
  br label %276

276:                                              ; preds = %270, %264
  %277 = phi i1 [ false, %264 ], [ %275, %270 ]
  br i1 %277, label %278, label %289

278:                                              ; preds = %276
  %279 = load i32, ptr %15, align 4, !tbaa !9
  %280 = mul nsw i32 %279, 10
  %281 = load ptr, ptr %13, align 8, !tbaa !5
  %282 = getelementptr inbounds i8, ptr %281, i64 0
  %283 = load i8, ptr %282, align 1, !tbaa !11
  %284 = sext i8 %283 to i32
  %285 = add nsw i32 %280, %284
  %286 = sub nsw i32 %285, 48
  store i32 %286, ptr %15, align 4, !tbaa !9
  %287 = load ptr, ptr %13, align 8, !tbaa !5
  %288 = getelementptr inbounds i8, ptr %287, i32 1
  store ptr %288, ptr %13, align 8, !tbaa !5
  br label %264, !llvm.loop !14

289:                                              ; preds = %276
  br label %290

290:                                              ; preds = %289, %258
  %291 = load ptr, ptr %13, align 8, !tbaa !5
  %292 = getelementptr inbounds i8, ptr %291, i64 0
  %293 = load i8, ptr %292, align 1, !tbaa !11
  %294 = sext i8 %293 to i32
  %295 = icmp eq i32 %294, 46
  br i1 %295, label %296, label %351

296:                                              ; preds = %290
  %297 = load ptr, ptr %13, align 8, !tbaa !5
  %298 = getelementptr inbounds i8, ptr %297, i32 1
  store ptr %298, ptr %13, align 8, !tbaa !5
  %299 = load ptr, ptr %13, align 8, !tbaa !5
  %300 = getelementptr inbounds i8, ptr %299, i64 0
  %301 = load i8, ptr %300, align 1, !tbaa !11
  %302 = sext i8 %301 to i32
  %303 = icmp eq i32 %302, 42
  br i1 %303, label %304, label %323

304:                                              ; preds = %296
  %305 = load ptr, ptr %11, align 8, !tbaa !5
  %306 = getelementptr inbounds %struct.__va_list_tag, ptr %305, i32 0, i32 0
  %307 = load i32, ptr %306, align 8
  %308 = icmp ule i32 %307, 40
  br i1 %308, label %309, label %314

309:                                              ; preds = %304
  %310 = getelementptr inbounds %struct.__va_list_tag, ptr %305, i32 0, i32 3
  %311 = load ptr, ptr %310, align 8
  %312 = getelementptr i8, ptr %311, i32 %307
  %313 = add i32 %307, 8
  store i32 %313, ptr %306, align 8
  br label %318

314:                                              ; preds = %304
  %315 = getelementptr inbounds %struct.__va_list_tag, ptr %305, i32 0, i32 2
  %316 = load ptr, ptr %315, align 8
  %317 = getelementptr i8, ptr %316, i32 8
  store ptr %317, ptr %315, align 8
  br label %318

318:                                              ; preds = %314, %309
  %319 = phi ptr [ %312, %309 ], [ %316, %314 ]
  %320 = load i32, ptr %319, align 4, !tbaa !9
  store i32 %320, ptr %16, align 4, !tbaa !9
  %321 = load ptr, ptr %13, align 8, !tbaa !5
  %322 = getelementptr inbounds i8, ptr %321, i32 1
  store ptr %322, ptr %13, align 8, !tbaa !5
  br label %350

323:                                              ; preds = %296
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %324

324:                                              ; preds = %338, %323
  %325 = load ptr, ptr %13, align 8, !tbaa !5
  %326 = getelementptr inbounds i8, ptr %325, i64 0
  %327 = load i8, ptr %326, align 1, !tbaa !11
  %328 = sext i8 %327 to i32
  %329 = icmp sge i32 %328, 48
  br i1 %329, label %330, label %336

330:                                              ; preds = %324
  %331 = load ptr, ptr %13, align 8, !tbaa !5
  %332 = getelementptr inbounds i8, ptr %331, i64 0
  %333 = load i8, ptr %332, align 1, !tbaa !11
  %334 = sext i8 %333 to i32
  %335 = icmp sle i32 %334, 57
  br label %336

336:                                              ; preds = %330, %324
  %337 = phi i1 [ false, %324 ], [ %335, %330 ]
  br i1 %337, label %338, label %349

338:                                              ; preds = %336
  %339 = load i32, ptr %16, align 4, !tbaa !9
  %340 = mul nsw i32 %339, 10
  %341 = load ptr, ptr %13, align 8, !tbaa !5
  %342 = getelementptr inbounds i8, ptr %341, i64 0
  %343 = load i8, ptr %342, align 1, !tbaa !11
  %344 = sext i8 %343 to i32
  %345 = add nsw i32 %340, %344
  %346 = sub nsw i32 %345, 48
  store i32 %346, ptr %16, align 4, !tbaa !9
  %347 = load ptr, ptr %13, align 8, !tbaa !5
  %348 = getelementptr inbounds i8, ptr %347, i32 1
  store ptr %348, ptr %13, align 8, !tbaa !5
  br label %324, !llvm.loop !15

349:                                              ; preds = %336
  br label %350

350:                                              ; preds = %349, %318
  br label %351

351:                                              ; preds = %350, %290
  %352 = load ptr, ptr %13, align 8, !tbaa !5
  %353 = getelementptr inbounds i8, ptr %352, i64 0
  %354 = load i8, ptr %353, align 1, !tbaa !11
  %355 = sext i8 %354 to i32
  switch i32 %355, label %440 [
    i32 104, label %356
    i32 108, label %370
    i32 106, label %386
    i32 122, label %391
    i32 116, label %396
    i32 73, label %401
  ]

356:                                              ; preds = %351
  %357 = load i32, ptr %18, align 4, !tbaa !9
  %358 = or i32 %357, 512
  store i32 %358, ptr %18, align 4, !tbaa !9
  %359 = load ptr, ptr %13, align 8, !tbaa !5
  %360 = getelementptr inbounds i8, ptr %359, i32 1
  store ptr %360, ptr %13, align 8, !tbaa !5
  %361 = load ptr, ptr %13, align 8, !tbaa !5
  %362 = getelementptr inbounds i8, ptr %361, i64 0
  %363 = load i8, ptr %362, align 1, !tbaa !11
  %364 = sext i8 %363 to i32
  %365 = icmp eq i32 %364, 104
  br i1 %365, label %366, label %369

366:                                              ; preds = %356
  %367 = load ptr, ptr %13, align 8, !tbaa !5
  %368 = getelementptr inbounds i8, ptr %367, i32 1
  store ptr %368, ptr %13, align 8, !tbaa !5
  br label %369

369:                                              ; preds = %366, %356
  br label %441

370:                                              ; preds = %351
  %371 = load i32, ptr %18, align 4, !tbaa !9
  %372 = or i32 %371, 32
  store i32 %372, ptr %18, align 4, !tbaa !9
  %373 = load ptr, ptr %13, align 8, !tbaa !5
  %374 = getelementptr inbounds i8, ptr %373, i32 1
  store ptr %374, ptr %13, align 8, !tbaa !5
  %375 = load ptr, ptr %13, align 8, !tbaa !5
  %376 = getelementptr inbounds i8, ptr %375, i64 0
  %377 = load i8, ptr %376, align 1, !tbaa !11
  %378 = sext i8 %377 to i32
  %379 = icmp eq i32 %378, 108
  br i1 %379, label %380, label %385

380:                                              ; preds = %370
  %381 = load i32, ptr %18, align 4, !tbaa !9
  %382 = or i32 %381, 32
  store i32 %382, ptr %18, align 4, !tbaa !9
  %383 = load ptr, ptr %13, align 8, !tbaa !5
  %384 = getelementptr inbounds i8, ptr %383, i32 1
  store ptr %384, ptr %13, align 8, !tbaa !5
  br label %385

385:                                              ; preds = %380, %370
  br label %441

386:                                              ; preds = %351
  %387 = load i32, ptr %18, align 4, !tbaa !9
  %388 = or i32 %387, 32
  store i32 %388, ptr %18, align 4, !tbaa !9
  %389 = load ptr, ptr %13, align 8, !tbaa !5
  %390 = getelementptr inbounds i8, ptr %389, i32 1
  store ptr %390, ptr %13, align 8, !tbaa !5
  br label %441

391:                                              ; preds = %351
  %392 = load i32, ptr %18, align 4, !tbaa !9
  %393 = or i32 %392, 32
  store i32 %393, ptr %18, align 4, !tbaa !9
  %394 = load ptr, ptr %13, align 8, !tbaa !5
  %395 = getelementptr inbounds i8, ptr %394, i32 1
  store ptr %395, ptr %13, align 8, !tbaa !5
  br label %441

396:                                              ; preds = %351
  %397 = load i32, ptr %18, align 4, !tbaa !9
  %398 = or i32 %397, 32
  store i32 %398, ptr %18, align 4, !tbaa !9
  %399 = load ptr, ptr %13, align 8, !tbaa !5
  %400 = getelementptr inbounds i8, ptr %399, i32 1
  store ptr %400, ptr %13, align 8, !tbaa !5
  br label %441

401:                                              ; preds = %351
  %402 = load ptr, ptr %13, align 8, !tbaa !5
  %403 = getelementptr inbounds i8, ptr %402, i64 1
  %404 = load i8, ptr %403, align 1, !tbaa !11
  %405 = sext i8 %404 to i32
  %406 = icmp eq i32 %405, 54
  br i1 %406, label %407, label %418

407:                                              ; preds = %401
  %408 = load ptr, ptr %13, align 8, !tbaa !5
  %409 = getelementptr inbounds i8, ptr %408, i64 2
  %410 = load i8, ptr %409, align 1, !tbaa !11
  %411 = sext i8 %410 to i32
  %412 = icmp eq i32 %411, 52
  br i1 %412, label %413, label %418

413:                                              ; preds = %407
  %414 = load i32, ptr %18, align 4, !tbaa !9
  %415 = or i32 %414, 32
  store i32 %415, ptr %18, align 4, !tbaa !9
  %416 = load ptr, ptr %13, align 8, !tbaa !5
  %417 = getelementptr inbounds i8, ptr %416, i64 3
  store ptr %417, ptr %13, align 8, !tbaa !5
  br label %439

418:                                              ; preds = %407, %401
  %419 = load ptr, ptr %13, align 8, !tbaa !5
  %420 = getelementptr inbounds i8, ptr %419, i64 1
  %421 = load i8, ptr %420, align 1, !tbaa !11
  %422 = sext i8 %421 to i32
  %423 = icmp eq i32 %422, 51
  br i1 %423, label %424, label %433

424:                                              ; preds = %418
  %425 = load ptr, ptr %13, align 8, !tbaa !5
  %426 = getelementptr inbounds i8, ptr %425, i64 2
  %427 = load i8, ptr %426, align 1, !tbaa !11
  %428 = sext i8 %427 to i32
  %429 = icmp eq i32 %428, 50
  br i1 %429, label %430, label %433

430:                                              ; preds = %424
  %431 = load ptr, ptr %13, align 8, !tbaa !5
  %432 = getelementptr inbounds i8, ptr %431, i64 3
  store ptr %432, ptr %13, align 8, !tbaa !5
  br label %438

433:                                              ; preds = %424, %418
  %434 = load i32, ptr %18, align 4, !tbaa !9
  %435 = or i32 %434, 32
  store i32 %435, ptr %18, align 4, !tbaa !9
  %436 = load ptr, ptr %13, align 8, !tbaa !5
  %437 = getelementptr inbounds i8, ptr %436, i32 1
  store ptr %437, ptr %13, align 8, !tbaa !5
  br label %438

438:                                              ; preds = %433, %430
  br label %439

439:                                              ; preds = %438, %413
  br label %441

440:                                              ; preds = %351
  br label %441

441:                                              ; preds = %440, %439, %396, %391, %386, %385, %369
  %442 = load ptr, ptr %13, align 8, !tbaa !5
  %443 = getelementptr inbounds i8, ptr %442, i64 0
  %444 = load i8, ptr %443, align 1, !tbaa !11
  %445 = sext i8 %444 to i32
  switch i32 %445, label %2591 [
    i32 115, label %446
    i32 99, label %478
    i32 110, label %502
    i32 65, label %528
    i32 97, label %528
    i32 71, label %718
    i32 103, label %718
    i32 69, label %841
    i32 101, label %841
    i32 102, label %969
    i32 66, label %1395
    i32 98, label %1395
    i32 111, label %1415
    i32 112, label %1424
    i32 88, label %1429
    i32 120, label %1429
    i32 117, label %1573
    i32 105, label %1573
    i32 100, label %1573
  ]

446:                                              ; preds = %441
  %447 = load ptr, ptr %11, align 8, !tbaa !5
  %448 = getelementptr inbounds %struct.__va_list_tag, ptr %447, i32 0, i32 0
  %449 = load i32, ptr %448, align 8
  %450 = icmp ule i32 %449, 40
  br i1 %450, label %451, label %456

451:                                              ; preds = %446
  %452 = getelementptr inbounds %struct.__va_list_tag, ptr %447, i32 0, i32 3
  %453 = load ptr, ptr %452, align 8
  %454 = getelementptr i8, ptr %453, i32 %449
  %455 = add i32 %449, 8
  store i32 %455, ptr %448, align 8
  br label %460

456:                                              ; preds = %446
  %457 = getelementptr inbounds %struct.__va_list_tag, ptr %447, i32 0, i32 2
  %458 = load ptr, ptr %457, align 8
  %459 = getelementptr i8, ptr %458, i32 8
  store ptr %459, ptr %457, align 8
  br label %460

460:                                              ; preds = %456, %451
  %461 = phi ptr [ %454, %451 ], [ %458, %456 ]
  %462 = load ptr, ptr %461, align 8, !tbaa !5
  store ptr %462, ptr %26, align 8, !tbaa !5
  %463 = load ptr, ptr %26, align 8, !tbaa !5
  %464 = icmp eq ptr %463, null
  br i1 %464, label %465, label %466

465:                                              ; preds = %460
  store ptr @.str, ptr %26, align 8, !tbaa !5
  br label %466

466:                                              ; preds = %465, %460
  %467 = load ptr, ptr %26, align 8, !tbaa !5
  %468 = load i32, ptr %16, align 4, !tbaa !9
  %469 = icmp sge i32 %468, 0
  br i1 %469, label %470, label %472

470:                                              ; preds = %466
  %471 = load i32, ptr %16, align 4, !tbaa !9
  br label %473

472:                                              ; preds = %466
  br label %473

473:                                              ; preds = %472, %470
  %474 = phi i32 [ %471, %470 ], [ -1, %472 ]
  %475 = call i32 @stbsp__strlen_limited(ptr noundef %467, i32 noundef %474)
  store i32 %475, ptr %28, align 4, !tbaa !9
  %476 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  store i8 0, ptr %476, align 1, !tbaa !11
  %477 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 0
  store i8 0, ptr %477, align 1, !tbaa !11
  store i32 0, ptr %16, align 4, !tbaa !9
  store i32 0, ptr %33, align 4, !tbaa !9
  store i32 0, ptr %30, align 4, !tbaa !9
  br label %1795

478:                                              ; preds = %441
  %479 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %480 = getelementptr inbounds i8, ptr %479, i64 512
  %481 = getelementptr inbounds i8, ptr %480, i64 -1
  store ptr %481, ptr %26, align 8, !tbaa !5
  %482 = load ptr, ptr %11, align 8, !tbaa !5
  %483 = getelementptr inbounds %struct.__va_list_tag, ptr %482, i32 0, i32 0
  %484 = load i32, ptr %483, align 8
  %485 = icmp ule i32 %484, 40
  br i1 %485, label %486, label %491

486:                                              ; preds = %478
  %487 = getelementptr inbounds %struct.__va_list_tag, ptr %482, i32 0, i32 3
  %488 = load ptr, ptr %487, align 8
  %489 = getelementptr i8, ptr %488, i32 %484
  %490 = add i32 %484, 8
  store i32 %490, ptr %483, align 8
  br label %495

491:                                              ; preds = %478
  %492 = getelementptr inbounds %struct.__va_list_tag, ptr %482, i32 0, i32 2
  %493 = load ptr, ptr %492, align 8
  %494 = getelementptr i8, ptr %493, i32 8
  store ptr %494, ptr %492, align 8
  br label %495

495:                                              ; preds = %491, %486
  %496 = phi ptr [ %489, %486 ], [ %493, %491 ]
  %497 = load i32, ptr %496, align 4, !tbaa !9
  %498 = trunc i32 %497 to i8
  %499 = load ptr, ptr %26, align 8, !tbaa !5
  store i8 %498, ptr %499, align 1, !tbaa !11
  store i32 1, ptr %28, align 4, !tbaa !9
  %500 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  store i8 0, ptr %500, align 1, !tbaa !11
  %501 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 0
  store i8 0, ptr %501, align 1, !tbaa !11
  store i32 0, ptr %16, align 4, !tbaa !9
  store i32 0, ptr %33, align 4, !tbaa !9
  store i32 0, ptr %30, align 4, !tbaa !9
  br label %1795

502:                                              ; preds = %441
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #2
  %503 = load ptr, ptr %11, align 8, !tbaa !5
  %504 = getelementptr inbounds %struct.__va_list_tag, ptr %503, i32 0, i32 0
  %505 = load i32, ptr %504, align 8
  %506 = icmp ule i32 %505, 40
  br i1 %506, label %507, label %512

507:                                              ; preds = %502
  %508 = getelementptr inbounds %struct.__va_list_tag, ptr %503, i32 0, i32 3
  %509 = load ptr, ptr %508, align 8
  %510 = getelementptr i8, ptr %509, i32 %505
  %511 = add i32 %505, 8
  store i32 %511, ptr %504, align 8
  br label %516

512:                                              ; preds = %502
  %513 = getelementptr inbounds %struct.__va_list_tag, ptr %503, i32 0, i32 2
  %514 = load ptr, ptr %513, align 8
  %515 = getelementptr i8, ptr %514, i32 8
  store ptr %515, ptr %513, align 8
  br label %516

516:                                              ; preds = %512, %507
  %517 = phi ptr [ %510, %507 ], [ %514, %512 ]
  %518 = load ptr, ptr %517, align 8, !tbaa !5
  store ptr %518, ptr %35, align 8, !tbaa !5
  %519 = load i32, ptr %14, align 4, !tbaa !9
  %520 = load ptr, ptr %12, align 8, !tbaa !5
  %521 = load ptr, ptr %9, align 8, !tbaa !5
  %522 = ptrtoint ptr %520 to i64
  %523 = ptrtoint ptr %521 to i64
  %524 = sub i64 %522, %523
  %525 = trunc i64 %524 to i32
  %526 = add nsw i32 %519, %525
  %527 = load ptr, ptr %35, align 8, !tbaa !5
  store i32 %526, ptr %527, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #2
  br label %2601

528:                                              ; preds = %441, %441
  %529 = load ptr, ptr %13, align 8, !tbaa !5
  %530 = getelementptr inbounds i8, ptr %529, i64 0
  %531 = load i8, ptr %530, align 1, !tbaa !11
  %532 = sext i8 %531 to i32
  %533 = icmp eq i32 %532, 65
  %534 = zext i1 %533 to i64
  %535 = select i1 %533, ptr @stbsp_vsprintfcb.hexu, ptr @stbsp_vsprintfcb.hex
  store ptr %535, ptr %27, align 8, !tbaa !5
  %536 = load ptr, ptr %11, align 8, !tbaa !5
  %537 = getelementptr inbounds %struct.__va_list_tag, ptr %536, i32 0, i32 1
  %538 = load i32, ptr %537, align 4
  %539 = icmp ule i32 %538, 160
  br i1 %539, label %540, label %545

540:                                              ; preds = %528
  %541 = getelementptr inbounds %struct.__va_list_tag, ptr %536, i32 0, i32 3
  %542 = load ptr, ptr %541, align 8
  %543 = getelementptr i8, ptr %542, i32 %538
  %544 = add i32 %538, 16
  store i32 %544, ptr %537, align 4
  br label %549

545:                                              ; preds = %528
  %546 = getelementptr inbounds %struct.__va_list_tag, ptr %536, i32 0, i32 2
  %547 = load ptr, ptr %546, align 8
  %548 = getelementptr i8, ptr %547, i32 8
  store ptr %548, ptr %546, align 8
  br label %549

549:                                              ; preds = %545, %540
  %550 = phi ptr [ %543, %540 ], [ %547, %545 ]
  %551 = load double, ptr %550, align 8, !tbaa !16
  store double %551, ptr %32, align 8, !tbaa !16
  %552 = load i32, ptr %16, align 4, !tbaa !9
  %553 = icmp eq i32 %552, -1
  br i1 %553, label %554, label %555

554:                                              ; preds = %549
  store i32 6, ptr %16, align 4, !tbaa !9
  br label %555

555:                                              ; preds = %554, %549
  %556 = load double, ptr %32, align 8, !tbaa !16
  %557 = call i32 @stbsp__real_to_parts(ptr noundef %31, ptr noundef %33, double noundef %556)
  %558 = icmp ne i32 %557, 0
  br i1 %558, label %559, label %562

559:                                              ; preds = %555
  %560 = load i32, ptr %18, align 4, !tbaa !9
  %561 = or i32 %560, 128
  store i32 %561, ptr %18, align 4, !tbaa !9
  br label %562

562:                                              ; preds = %559, %555
  %563 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %564 = getelementptr inbounds i8, ptr %563, i64 64
  store ptr %564, ptr %26, align 8, !tbaa !5
  %565 = load i32, ptr %18, align 4, !tbaa !9
  %566 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  call void @stbsp__lead_sign(i32 noundef %565, ptr noundef %566)
  %567 = load i32, ptr %33, align 4, !tbaa !9
  %568 = icmp eq i32 %567, -1023
  br i1 %568, label %569, label %574

569:                                              ; preds = %562
  %570 = load i64, ptr %31, align 8, !tbaa !18
  %571 = icmp ne i64 %570, 0
  %572 = zext i1 %571 to i64
  %573 = select i1 %571, i32 -1022, i32 0
  store i32 %573, ptr %33, align 4, !tbaa !9
  br label %577

574:                                              ; preds = %562
  %575 = load i64, ptr %31, align 8, !tbaa !18
  %576 = or i64 %575, 4503599627370496
  store i64 %576, ptr %31, align 8, !tbaa !18
  br label %577

577:                                              ; preds = %574, %569
  %578 = load i64, ptr %31, align 8, !tbaa !18
  %579 = shl i64 %578, 8
  store i64 %579, ptr %31, align 8, !tbaa !18
  %580 = load i32, ptr %16, align 4, !tbaa !9
  %581 = icmp slt i32 %580, 15
  br i1 %581, label %582, label %589

582:                                              ; preds = %577
  %583 = load i32, ptr %16, align 4, !tbaa !9
  %584 = mul nsw i32 %583, 4
  %585 = zext i32 %584 to i64
  %586 = lshr i64 576460752303423488, %585
  %587 = load i64, ptr %31, align 8, !tbaa !18
  %588 = add i64 %587, %586
  store i64 %588, ptr %31, align 8, !tbaa !18
  br label %589

589:                                              ; preds = %582, %577
  %590 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  %591 = load i8, ptr %590, align 1, !tbaa !11
  %592 = sext i8 %591 to i32
  %593 = add nsw i32 1, %592
  %594 = sext i32 %593 to i64
  %595 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 %594
  store i8 48, ptr %595, align 1, !tbaa !11
  %596 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  %597 = load i8, ptr %596, align 1, !tbaa !11
  %598 = sext i8 %597 to i32
  %599 = add nsw i32 2, %598
  %600 = sext i32 %599 to i64
  %601 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 %600
  store i8 120, ptr %601, align 1, !tbaa !11
  %602 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  %603 = load i8, ptr %602, align 1, !tbaa !11
  %604 = sext i8 %603 to i32
  %605 = add nsw i32 %604, 2
  %606 = trunc i32 %605 to i8
  store i8 %606, ptr %602, align 1, !tbaa !11
  %607 = load ptr, ptr %27, align 8, !tbaa !5
  %608 = load i64, ptr %31, align 8, !tbaa !18
  %609 = lshr i64 %608, 60
  %610 = and i64 %609, 15
  %611 = getelementptr inbounds i8, ptr %607, i64 %610
  %612 = load i8, ptr %611, align 1, !tbaa !11
  %613 = load ptr, ptr %26, align 8, !tbaa !5
  %614 = getelementptr inbounds i8, ptr %613, i32 1
  store ptr %614, ptr %26, align 8, !tbaa !5
  store i8 %612, ptr %613, align 1, !tbaa !11
  %615 = load i64, ptr %31, align 8, !tbaa !18
  %616 = shl i64 %615, 4
  store i64 %616, ptr %31, align 8, !tbaa !18
  %617 = load i32, ptr %16, align 4, !tbaa !9
  %618 = icmp ne i32 %617, 0
  br i1 %618, label %619, label %623

619:                                              ; preds = %589
  %620 = load i8, ptr @stbsp__period, align 1, !tbaa !11
  %621 = load ptr, ptr %26, align 8, !tbaa !5
  %622 = getelementptr inbounds i8, ptr %621, i32 1
  store ptr %622, ptr %26, align 8, !tbaa !5
  store i8 %620, ptr %621, align 1, !tbaa !11
  br label %623

623:                                              ; preds = %619, %589
  %624 = load ptr, ptr %26, align 8, !tbaa !5
  store ptr %624, ptr %34, align 8, !tbaa !5
  %625 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %625, ptr %29, align 4, !tbaa !9
  %626 = load i32, ptr %29, align 4, !tbaa !9
  %627 = icmp ugt i32 %626, 13
  br i1 %627, label %628, label %629

628:                                              ; preds = %623
  store i32 13, ptr %29, align 4, !tbaa !9
  br label %629

629:                                              ; preds = %628, %623
  %630 = load i32, ptr %16, align 4, !tbaa !9
  %631 = load i32, ptr %29, align 4, !tbaa !9
  %632 = icmp sgt i32 %630, %631
  br i1 %632, label %633, label %637

633:                                              ; preds = %629
  %634 = load i32, ptr %16, align 4, !tbaa !9
  %635 = load i32, ptr %29, align 4, !tbaa !9
  %636 = sub i32 %634, %635
  store i32 %636, ptr %17, align 4, !tbaa !9
  br label %637

637:                                              ; preds = %633, %629
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %638

638:                                              ; preds = %642, %637
  %639 = load i32, ptr %29, align 4, !tbaa !9
  %640 = add i32 %639, -1
  store i32 %640, ptr %29, align 4, !tbaa !9
  %641 = icmp ne i32 %639, 0
  br i1 %641, label %642, label %653

642:                                              ; preds = %638
  %643 = load ptr, ptr %27, align 8, !tbaa !5
  %644 = load i64, ptr %31, align 8, !tbaa !18
  %645 = lshr i64 %644, 60
  %646 = and i64 %645, 15
  %647 = getelementptr inbounds i8, ptr %643, i64 %646
  %648 = load i8, ptr %647, align 1, !tbaa !11
  %649 = load ptr, ptr %26, align 8, !tbaa !5
  %650 = getelementptr inbounds i8, ptr %649, i32 1
  store ptr %650, ptr %26, align 8, !tbaa !5
  store i8 %648, ptr %649, align 1, !tbaa !11
  %651 = load i64, ptr %31, align 8, !tbaa !18
  %652 = shl i64 %651, 4
  store i64 %652, ptr %31, align 8, !tbaa !18
  br label %638, !llvm.loop !20

653:                                              ; preds = %638
  %654 = load ptr, ptr %27, align 8, !tbaa !5
  %655 = getelementptr inbounds i8, ptr %654, i64 17
  %656 = load i8, ptr %655, align 1, !tbaa !11
  %657 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 1
  store i8 %656, ptr %657, align 1, !tbaa !11
  %658 = load i32, ptr %33, align 4, !tbaa !9
  %659 = icmp slt i32 %658, 0
  br i1 %659, label %660, label %664

660:                                              ; preds = %653
  %661 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 2
  store i8 45, ptr %661, align 1, !tbaa !11
  %662 = load i32, ptr %33, align 4, !tbaa !9
  %663 = sub nsw i32 0, %662
  store i32 %663, ptr %33, align 4, !tbaa !9
  br label %666

664:                                              ; preds = %653
  %665 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 2
  store i8 43, ptr %665, align 1, !tbaa !11
  br label %666

666:                                              ; preds = %664, %660
  %667 = load i32, ptr %33, align 4, !tbaa !9
  %668 = icmp sge i32 %667, 1000
  br i1 %668, label %669, label %670

669:                                              ; preds = %666
  br label %681

670:                                              ; preds = %666
  %671 = load i32, ptr %33, align 4, !tbaa !9
  %672 = icmp sge i32 %671, 100
  br i1 %672, label %673, label %674

673:                                              ; preds = %670
  br label %679

674:                                              ; preds = %670
  %675 = load i32, ptr %33, align 4, !tbaa !9
  %676 = icmp sge i32 %675, 10
  %677 = zext i1 %676 to i64
  %678 = select i1 %676, i32 4, i32 3
  br label %679

679:                                              ; preds = %674, %673
  %680 = phi i32 [ 5, %673 ], [ %678, %674 ]
  br label %681

681:                                              ; preds = %679, %669
  %682 = phi i32 [ 6, %669 ], [ %680, %679 ]
  store i32 %682, ptr %29, align 4, !tbaa !9
  %683 = load i32, ptr %29, align 4, !tbaa !9
  %684 = trunc i32 %683 to i8
  %685 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 0
  store i8 %684, ptr %685, align 1, !tbaa !11
  br label %686

686:                                              ; preds = %697, %681
  %687 = load i32, ptr %33, align 4, !tbaa !9
  %688 = srem i32 %687, 10
  %689 = add nsw i32 48, %688
  %690 = trunc i32 %689 to i8
  %691 = load i32, ptr %29, align 4, !tbaa !9
  %692 = zext i32 %691 to i64
  %693 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 %692
  store i8 %690, ptr %693, align 1, !tbaa !11
  %694 = load i32, ptr %29, align 4, !tbaa !9
  %695 = icmp ule i32 %694, 3
  br i1 %695, label %696, label %697

696:                                              ; preds = %686
  br label %702

697:                                              ; preds = %686
  %698 = load i32, ptr %29, align 4, !tbaa !9
  %699 = add i32 %698, -1
  store i32 %699, ptr %29, align 4, !tbaa !9
  %700 = load i32, ptr %33, align 4, !tbaa !9
  %701 = sdiv i32 %700, 10
  store i32 %701, ptr %33, align 4, !tbaa !9
  br label %686

702:                                              ; preds = %696
  %703 = load ptr, ptr %26, align 8, !tbaa !5
  %704 = load ptr, ptr %34, align 8, !tbaa !5
  %705 = ptrtoint ptr %703 to i64
  %706 = ptrtoint ptr %704 to i64
  %707 = sub i64 %705, %706
  %708 = trunc i64 %707 to i32
  store i32 %708, ptr %33, align 4, !tbaa !9
  %709 = load ptr, ptr %26, align 8, !tbaa !5
  %710 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %711 = getelementptr inbounds i8, ptr %710, i64 64
  %712 = ptrtoint ptr %709 to i64
  %713 = ptrtoint ptr %711 to i64
  %714 = sub i64 %712, %713
  %715 = trunc i64 %714 to i32
  store i32 %715, ptr %28, align 4, !tbaa !9
  %716 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %717 = getelementptr inbounds i8, ptr %716, i64 64
  store ptr %717, ptr %26, align 8, !tbaa !5
  store i32 50331649, ptr %30, align 4, !tbaa !9
  br label %1795

718:                                              ; preds = %441, %441
  %719 = load ptr, ptr %13, align 8, !tbaa !5
  %720 = getelementptr inbounds i8, ptr %719, i64 0
  %721 = load i8, ptr %720, align 1, !tbaa !11
  %722 = sext i8 %721 to i32
  %723 = icmp eq i32 %722, 71
  %724 = zext i1 %723 to i64
  %725 = select i1 %723, ptr @stbsp_vsprintfcb.hexu, ptr @stbsp_vsprintfcb.hex
  store ptr %725, ptr %27, align 8, !tbaa !5
  %726 = load ptr, ptr %11, align 8, !tbaa !5
  %727 = getelementptr inbounds %struct.__va_list_tag, ptr %726, i32 0, i32 1
  %728 = load i32, ptr %727, align 4
  %729 = icmp ule i32 %728, 160
  br i1 %729, label %730, label %735

730:                                              ; preds = %718
  %731 = getelementptr inbounds %struct.__va_list_tag, ptr %726, i32 0, i32 3
  %732 = load ptr, ptr %731, align 8
  %733 = getelementptr i8, ptr %732, i32 %728
  %734 = add i32 %728, 16
  store i32 %734, ptr %727, align 4
  br label %739

735:                                              ; preds = %718
  %736 = getelementptr inbounds %struct.__va_list_tag, ptr %726, i32 0, i32 2
  %737 = load ptr, ptr %736, align 8
  %738 = getelementptr i8, ptr %737, i32 8
  store ptr %738, ptr %736, align 8
  br label %739

739:                                              ; preds = %735, %730
  %740 = phi ptr [ %733, %730 ], [ %737, %735 ]
  %741 = load double, ptr %740, align 8, !tbaa !16
  store double %741, ptr %32, align 8, !tbaa !16
  %742 = load i32, ptr %16, align 4, !tbaa !9
  %743 = icmp eq i32 %742, -1
  br i1 %743, label %744, label %745

744:                                              ; preds = %739
  store i32 6, ptr %16, align 4, !tbaa !9
  br label %750

745:                                              ; preds = %739
  %746 = load i32, ptr %16, align 4, !tbaa !9
  %747 = icmp eq i32 %746, 0
  br i1 %747, label %748, label %749

748:                                              ; preds = %745
  store i32 1, ptr %16, align 4, !tbaa !9
  br label %749

749:                                              ; preds = %748, %745
  br label %750

750:                                              ; preds = %749, %744
  %751 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %752 = load double, ptr %32, align 8, !tbaa !16
  %753 = load i32, ptr %16, align 4, !tbaa !9
  %754 = sub nsw i32 %753, 1
  %755 = or i32 %754, -2147483648
  %756 = call i32 @stbsp__real_to_str(ptr noundef %34, ptr noundef %28, ptr noundef %751, ptr noundef %33, double noundef %752, i32 noundef %755)
  %757 = icmp ne i32 %756, 0
  br i1 %757, label %758, label %761

758:                                              ; preds = %750
  %759 = load i32, ptr %18, align 4, !tbaa !9
  %760 = or i32 %759, 128
  store i32 %760, ptr %18, align 4, !tbaa !9
  br label %761

761:                                              ; preds = %758, %750
  %762 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %762, ptr %29, align 4, !tbaa !9
  %763 = load i32, ptr %28, align 4, !tbaa !9
  %764 = load i32, ptr %16, align 4, !tbaa !9
  %765 = icmp ugt i32 %763, %764
  br i1 %765, label %766, label %768

766:                                              ; preds = %761
  %767 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %767, ptr %28, align 4, !tbaa !9
  br label %768

768:                                              ; preds = %766, %761
  br label %769

769:                                              ; preds = %786, %768
  %770 = load i32, ptr %28, align 4, !tbaa !9
  %771 = icmp ugt i32 %770, 1
  br i1 %771, label %772, label %784

772:                                              ; preds = %769
  %773 = load i32, ptr %16, align 4, !tbaa !9
  %774 = icmp ne i32 %773, 0
  br i1 %774, label %775, label %784

775:                                              ; preds = %772
  %776 = load ptr, ptr %34, align 8, !tbaa !5
  %777 = load i32, ptr %28, align 4, !tbaa !9
  %778 = sub i32 %777, 1
  %779 = zext i32 %778 to i64
  %780 = getelementptr inbounds i8, ptr %776, i64 %779
  %781 = load i8, ptr %780, align 1, !tbaa !11
  %782 = sext i8 %781 to i32
  %783 = icmp eq i32 %782, 48
  br label %784

784:                                              ; preds = %775, %772, %769
  %785 = phi i1 [ false, %772 ], [ false, %769 ], [ %783, %775 ]
  br i1 %785, label %786, label %791

786:                                              ; preds = %784
  %787 = load i32, ptr %16, align 4, !tbaa !9
  %788 = add nsw i32 %787, -1
  store i32 %788, ptr %16, align 4, !tbaa !9
  %789 = load i32, ptr %28, align 4, !tbaa !9
  %790 = add i32 %789, -1
  store i32 %790, ptr %28, align 4, !tbaa !9
  br label %769, !llvm.loop !21

791:                                              ; preds = %784
  %792 = load i32, ptr %33, align 4, !tbaa !9
  %793 = icmp sle i32 %792, -4
  br i1 %793, label %798, label %794

794:                                              ; preds = %791
  %795 = load i32, ptr %33, align 4, !tbaa !9
  %796 = load i32, ptr %29, align 4, !tbaa !9
  %797 = icmp sgt i32 %795, %796
  br i1 %797, label %798, label %813

798:                                              ; preds = %794, %791
  %799 = load i32, ptr %16, align 4, !tbaa !9
  %800 = load i32, ptr %28, align 4, !tbaa !9
  %801 = icmp sgt i32 %799, %800
  br i1 %801, label %802, label %805

802:                                              ; preds = %798
  %803 = load i32, ptr %28, align 4, !tbaa !9
  %804 = sub i32 %803, 1
  store i32 %804, ptr %16, align 4, !tbaa !9
  br label %812

805:                                              ; preds = %798
  %806 = load i32, ptr %16, align 4, !tbaa !9
  %807 = icmp ne i32 %806, 0
  br i1 %807, label %808, label %811

808:                                              ; preds = %805
  %809 = load i32, ptr %16, align 4, !tbaa !9
  %810 = add nsw i32 %809, -1
  store i32 %810, ptr %16, align 4, !tbaa !9
  br label %811

811:                                              ; preds = %808, %805
  br label %812

812:                                              ; preds = %811, %802
  br label %879

813:                                              ; preds = %794
  %814 = load i32, ptr %33, align 4, !tbaa !9
  %815 = icmp sgt i32 %814, 0
  br i1 %815, label %816, label %827

816:                                              ; preds = %813
  %817 = load i32, ptr %33, align 4, !tbaa !9
  %818 = load i32, ptr %28, align 4, !tbaa !9
  %819 = icmp slt i32 %817, %818
  br i1 %819, label %820, label %824

820:                                              ; preds = %816
  %821 = load i32, ptr %28, align 4, !tbaa !9
  %822 = load i32, ptr %33, align 4, !tbaa !9
  %823 = sub i32 %821, %822
  br label %825

824:                                              ; preds = %816
  br label %825

825:                                              ; preds = %824, %820
  %826 = phi i32 [ %823, %820 ], [ 0, %824 ]
  store i32 %826, ptr %16, align 4, !tbaa !9
  br label %840

827:                                              ; preds = %813
  %828 = load i32, ptr %33, align 4, !tbaa !9
  %829 = sub nsw i32 0, %828
  %830 = load i32, ptr %16, align 4, !tbaa !9
  %831 = load i32, ptr %28, align 4, !tbaa !9
  %832 = icmp sgt i32 %830, %831
  br i1 %832, label %833, label %835

833:                                              ; preds = %827
  %834 = load i32, ptr %28, align 4, !tbaa !9
  br label %837

835:                                              ; preds = %827
  %836 = load i32, ptr %16, align 4, !tbaa !9
  br label %837

837:                                              ; preds = %835, %833
  %838 = phi i32 [ %834, %833 ], [ %836, %835 ]
  %839 = add nsw i32 %829, %838
  store i32 %839, ptr %16, align 4, !tbaa !9
  br label %840

840:                                              ; preds = %837, %825
  br label %1030

841:                                              ; preds = %441, %441
  %842 = load ptr, ptr %13, align 8, !tbaa !5
  %843 = getelementptr inbounds i8, ptr %842, i64 0
  %844 = load i8, ptr %843, align 1, !tbaa !11
  %845 = sext i8 %844 to i32
  %846 = icmp eq i32 %845, 69
  %847 = zext i1 %846 to i64
  %848 = select i1 %846, ptr @stbsp_vsprintfcb.hexu, ptr @stbsp_vsprintfcb.hex
  store ptr %848, ptr %27, align 8, !tbaa !5
  %849 = load ptr, ptr %11, align 8, !tbaa !5
  %850 = getelementptr inbounds %struct.__va_list_tag, ptr %849, i32 0, i32 1
  %851 = load i32, ptr %850, align 4
  %852 = icmp ule i32 %851, 160
  br i1 %852, label %853, label %858

853:                                              ; preds = %841
  %854 = getelementptr inbounds %struct.__va_list_tag, ptr %849, i32 0, i32 3
  %855 = load ptr, ptr %854, align 8
  %856 = getelementptr i8, ptr %855, i32 %851
  %857 = add i32 %851, 16
  store i32 %857, ptr %850, align 4
  br label %862

858:                                              ; preds = %841
  %859 = getelementptr inbounds %struct.__va_list_tag, ptr %849, i32 0, i32 2
  %860 = load ptr, ptr %859, align 8
  %861 = getelementptr i8, ptr %860, i32 8
  store ptr %861, ptr %859, align 8
  br label %862

862:                                              ; preds = %858, %853
  %863 = phi ptr [ %856, %853 ], [ %860, %858 ]
  %864 = load double, ptr %863, align 8, !tbaa !16
  store double %864, ptr %32, align 8, !tbaa !16
  %865 = load i32, ptr %16, align 4, !tbaa !9
  %866 = icmp eq i32 %865, -1
  br i1 %866, label %867, label %868

867:                                              ; preds = %862
  store i32 6, ptr %16, align 4, !tbaa !9
  br label %868

868:                                              ; preds = %867, %862
  %869 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %870 = load double, ptr %32, align 8, !tbaa !16
  %871 = load i32, ptr %16, align 4, !tbaa !9
  %872 = or i32 %871, -2147483648
  %873 = call i32 @stbsp__real_to_str(ptr noundef %34, ptr noundef %28, ptr noundef %869, ptr noundef %33, double noundef %870, i32 noundef %872)
  %874 = icmp ne i32 %873, 0
  br i1 %874, label %875, label %878

875:                                              ; preds = %868
  %876 = load i32, ptr %18, align 4, !tbaa !9
  %877 = or i32 %876, 128
  store i32 %877, ptr %18, align 4, !tbaa !9
  br label %878

878:                                              ; preds = %875, %868
  br label %879

879:                                              ; preds = %878, %812
  %880 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 0
  store i8 0, ptr %880, align 1, !tbaa !11
  %881 = load i32, ptr %18, align 4, !tbaa !9
  %882 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  call void @stbsp__lead_sign(i32 noundef %881, ptr noundef %882)
  %883 = load i32, ptr %33, align 4, !tbaa !9
  %884 = icmp eq i32 %883, 28672
  br i1 %884, label %885, label %887

885:                                              ; preds = %879
  %886 = load ptr, ptr %34, align 8, !tbaa !5
  store ptr %886, ptr %26, align 8, !tbaa !5
  store i32 0, ptr %30, align 4, !tbaa !9
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %1795

887:                                              ; preds = %879
  %888 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %889 = getelementptr inbounds i8, ptr %888, i64 64
  store ptr %889, ptr %26, align 8, !tbaa !5
  %890 = load ptr, ptr %34, align 8, !tbaa !5
  %891 = getelementptr inbounds i8, ptr %890, i64 0
  %892 = load i8, ptr %891, align 1, !tbaa !11
  %893 = load ptr, ptr %26, align 8, !tbaa !5
  %894 = getelementptr inbounds i8, ptr %893, i32 1
  store ptr %894, ptr %26, align 8, !tbaa !5
  store i8 %892, ptr %893, align 1, !tbaa !11
  %895 = load i32, ptr %16, align 4, !tbaa !9
  %896 = icmp ne i32 %895, 0
  br i1 %896, label %897, label %901

897:                                              ; preds = %887
  %898 = load i8, ptr @stbsp__period, align 1, !tbaa !11
  %899 = load ptr, ptr %26, align 8, !tbaa !5
  %900 = getelementptr inbounds i8, ptr %899, i32 1
  store ptr %900, ptr %26, align 8, !tbaa !5
  store i8 %898, ptr %899, align 1, !tbaa !11
  br label %901

901:                                              ; preds = %897, %887
  %902 = load i32, ptr %28, align 4, !tbaa !9
  %903 = sub i32 %902, 1
  %904 = load i32, ptr %16, align 4, !tbaa !9
  %905 = icmp ugt i32 %903, %904
  br i1 %905, label %906, label %909

906:                                              ; preds = %901
  %907 = load i32, ptr %16, align 4, !tbaa !9
  %908 = add nsw i32 %907, 1
  store i32 %908, ptr %28, align 4, !tbaa !9
  br label %909

909:                                              ; preds = %906, %901
  store i32 1, ptr %29, align 4, !tbaa !9
  br label %910

910:                                              ; preds = %922, %909
  %911 = load i32, ptr %29, align 4, !tbaa !9
  %912 = load i32, ptr %28, align 4, !tbaa !9
  %913 = icmp ult i32 %911, %912
  br i1 %913, label %914, label %925

914:                                              ; preds = %910
  %915 = load ptr, ptr %34, align 8, !tbaa !5
  %916 = load i32, ptr %29, align 4, !tbaa !9
  %917 = zext i32 %916 to i64
  %918 = getelementptr inbounds i8, ptr %915, i64 %917
  %919 = load i8, ptr %918, align 1, !tbaa !11
  %920 = load ptr, ptr %26, align 8, !tbaa !5
  %921 = getelementptr inbounds i8, ptr %920, i32 1
  store ptr %921, ptr %26, align 8, !tbaa !5
  store i8 %919, ptr %920, align 1, !tbaa !11
  br label %922

922:                                              ; preds = %914
  %923 = load i32, ptr %29, align 4, !tbaa !9
  %924 = add i32 %923, 1
  store i32 %924, ptr %29, align 4, !tbaa !9
  br label %910, !llvm.loop !22

925:                                              ; preds = %910
  %926 = load i32, ptr %16, align 4, !tbaa !9
  %927 = load i32, ptr %28, align 4, !tbaa !9
  %928 = sub i32 %927, 1
  %929 = sub i32 %926, %928
  store i32 %929, ptr %17, align 4, !tbaa !9
  store i32 0, ptr %16, align 4, !tbaa !9
  %930 = load ptr, ptr %27, align 8, !tbaa !5
  %931 = getelementptr inbounds i8, ptr %930, i64 14
  %932 = load i8, ptr %931, align 1, !tbaa !11
  %933 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 1
  store i8 %932, ptr %933, align 1, !tbaa !11
  %934 = load i32, ptr %33, align 4, !tbaa !9
  %935 = sub nsw i32 %934, 1
  store i32 %935, ptr %33, align 4, !tbaa !9
  %936 = load i32, ptr %33, align 4, !tbaa !9
  %937 = icmp slt i32 %936, 0
  br i1 %937, label %938, label %942

938:                                              ; preds = %925
  %939 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 2
  store i8 45, ptr %939, align 1, !tbaa !11
  %940 = load i32, ptr %33, align 4, !tbaa !9
  %941 = sub nsw i32 0, %940
  store i32 %941, ptr %33, align 4, !tbaa !9
  br label %944

942:                                              ; preds = %925
  %943 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 2
  store i8 43, ptr %943, align 1, !tbaa !11
  br label %944

944:                                              ; preds = %942, %938
  %945 = load i32, ptr %33, align 4, !tbaa !9
  %946 = icmp sge i32 %945, 100
  %947 = zext i1 %946 to i64
  %948 = select i1 %946, i32 5, i32 4
  store i32 %948, ptr %29, align 4, !tbaa !9
  %949 = load i32, ptr %29, align 4, !tbaa !9
  %950 = trunc i32 %949 to i8
  %951 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 0
  store i8 %950, ptr %951, align 1, !tbaa !11
  br label %952

952:                                              ; preds = %963, %944
  %953 = load i32, ptr %33, align 4, !tbaa !9
  %954 = srem i32 %953, 10
  %955 = add nsw i32 48, %954
  %956 = trunc i32 %955 to i8
  %957 = load i32, ptr %29, align 4, !tbaa !9
  %958 = zext i32 %957 to i64
  %959 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 %958
  store i8 %956, ptr %959, align 1, !tbaa !11
  %960 = load i32, ptr %29, align 4, !tbaa !9
  %961 = icmp ule i32 %960, 3
  br i1 %961, label %962, label %963

962:                                              ; preds = %952
  br label %968

963:                                              ; preds = %952
  %964 = load i32, ptr %29, align 4, !tbaa !9
  %965 = add i32 %964, -1
  store i32 %965, ptr %29, align 4, !tbaa !9
  %966 = load i32, ptr %33, align 4, !tbaa !9
  %967 = sdiv i32 %966, 10
  store i32 %967, ptr %33, align 4, !tbaa !9
  br label %952

968:                                              ; preds = %962
  store i32 50331649, ptr %30, align 4, !tbaa !9
  br label %1385

969:                                              ; preds = %441
  %970 = load ptr, ptr %11, align 8, !tbaa !5
  %971 = getelementptr inbounds %struct.__va_list_tag, ptr %970, i32 0, i32 1
  %972 = load i32, ptr %971, align 4
  %973 = icmp ule i32 %972, 160
  br i1 %973, label %974, label %979

974:                                              ; preds = %969
  %975 = getelementptr inbounds %struct.__va_list_tag, ptr %970, i32 0, i32 3
  %976 = load ptr, ptr %975, align 8
  %977 = getelementptr i8, ptr %976, i32 %972
  %978 = add i32 %972, 16
  store i32 %978, ptr %971, align 4
  br label %983

979:                                              ; preds = %969
  %980 = getelementptr inbounds %struct.__va_list_tag, ptr %970, i32 0, i32 2
  %981 = load ptr, ptr %980, align 8
  %982 = getelementptr i8, ptr %981, i32 8
  store ptr %982, ptr %980, align 8
  br label %983

983:                                              ; preds = %979, %974
  %984 = phi ptr [ %977, %974 ], [ %981, %979 ]
  %985 = load double, ptr %984, align 8, !tbaa !16
  store double %985, ptr %32, align 8, !tbaa !16
  br label %986

986:                                              ; preds = %1656, %983
  %987 = load i32, ptr %18, align 4, !tbaa !9
  %988 = and i32 %987, 256
  %989 = icmp ne i32 %988, 0
  br i1 %989, label %990, label %1016

990:                                              ; preds = %986
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #2
  store double 1.000000e+03, ptr %36, align 8, !tbaa !16
  %991 = load i32, ptr %18, align 4, !tbaa !9
  %992 = and i32 %991, 2048
  %993 = icmp ne i32 %992, 0
  br i1 %993, label %994, label %995

994:                                              ; preds = %990
  store double 1.024000e+03, ptr %36, align 8, !tbaa !16
  br label %995

995:                                              ; preds = %994, %990
  br label %996

996:                                              ; preds = %1009, %995
  %997 = load i32, ptr %18, align 4, !tbaa !9
  %998 = icmp ult i32 %997, 67108864
  br i1 %998, label %999, label %1015

999:                                              ; preds = %996
  %1000 = load double, ptr %32, align 8, !tbaa !16
  %1001 = load double, ptr %36, align 8, !tbaa !16
  %1002 = fcmp olt double %1000, %1001
  br i1 %1002, label %1003, label %1009

1003:                                             ; preds = %999
  %1004 = load double, ptr %32, align 8, !tbaa !16
  %1005 = load double, ptr %36, align 8, !tbaa !16
  %1006 = fneg double %1005
  %1007 = fcmp ogt double %1004, %1006
  br i1 %1007, label %1008, label %1009

1008:                                             ; preds = %1003
  br label %1015

1009:                                             ; preds = %1003, %999
  %1010 = load double, ptr %36, align 8, !tbaa !16
  %1011 = load double, ptr %32, align 8, !tbaa !16
  %1012 = fdiv double %1011, %1010
  store double %1012, ptr %32, align 8, !tbaa !16
  %1013 = load i32, ptr %18, align 4, !tbaa !9
  %1014 = add i32 %1013, 16777216
  store i32 %1014, ptr %18, align 4, !tbaa !9
  br label %996, !llvm.loop !23

1015:                                             ; preds = %1008, %996
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #2
  br label %1016

1016:                                             ; preds = %1015, %986
  %1017 = load i32, ptr %16, align 4, !tbaa !9
  %1018 = icmp eq i32 %1017, -1
  br i1 %1018, label %1019, label %1020

1019:                                             ; preds = %1016
  store i32 6, ptr %16, align 4, !tbaa !9
  br label %1020

1020:                                             ; preds = %1019, %1016
  %1021 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %1022 = load double, ptr %32, align 8, !tbaa !16
  %1023 = load i32, ptr %16, align 4, !tbaa !9
  %1024 = call i32 @stbsp__real_to_str(ptr noundef %34, ptr noundef %28, ptr noundef %1021, ptr noundef %33, double noundef %1022, i32 noundef %1023)
  %1025 = icmp ne i32 %1024, 0
  br i1 %1025, label %1026, label %1029

1026:                                             ; preds = %1020
  %1027 = load i32, ptr %18, align 4, !tbaa !9
  %1028 = or i32 %1027, 128
  store i32 %1028, ptr %18, align 4, !tbaa !9
  br label %1029

1029:                                             ; preds = %1026, %1020
  br label %1030

1030:                                             ; preds = %1029, %840
  %1031 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 0
  store i8 0, ptr %1031, align 1, !tbaa !11
  %1032 = load i32, ptr %18, align 4, !tbaa !9
  %1033 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  call void @stbsp__lead_sign(i32 noundef %1032, ptr noundef %1033)
  %1034 = load i32, ptr %33, align 4, !tbaa !9
  %1035 = icmp eq i32 %1034, 28672
  br i1 %1035, label %1036, label %1038

1036:                                             ; preds = %1030
  %1037 = load ptr, ptr %34, align 8, !tbaa !5
  store ptr %1037, ptr %26, align 8, !tbaa !5
  store i32 0, ptr %30, align 4, !tbaa !9
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %1795

1038:                                             ; preds = %1030
  %1039 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %1040 = getelementptr inbounds i8, ptr %1039, i64 64
  store ptr %1040, ptr %26, align 8, !tbaa !5
  %1041 = load i32, ptr %33, align 4, !tbaa !9
  %1042 = icmp sle i32 %1041, 0
  br i1 %1042, label %1043, label %1124

1043:                                             ; preds = %1038
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #2
  %1044 = load ptr, ptr %26, align 8, !tbaa !5
  %1045 = getelementptr inbounds i8, ptr %1044, i32 1
  store ptr %1045, ptr %26, align 8, !tbaa !5
  store i8 48, ptr %1044, align 1, !tbaa !11
  %1046 = load i32, ptr %16, align 4, !tbaa !9
  %1047 = icmp ne i32 %1046, 0
  br i1 %1047, label %1048, label %1052

1048:                                             ; preds = %1043
  %1049 = load i8, ptr @stbsp__period, align 1, !tbaa !11
  %1050 = load ptr, ptr %26, align 8, !tbaa !5
  %1051 = getelementptr inbounds i8, ptr %1050, i32 1
  store ptr %1051, ptr %26, align 8, !tbaa !5
  store i8 %1049, ptr %1050, align 1, !tbaa !11
  br label %1052

1052:                                             ; preds = %1048, %1043
  %1053 = load i32, ptr %33, align 4, !tbaa !9
  %1054 = sub nsw i32 0, %1053
  store i32 %1054, ptr %29, align 4, !tbaa !9
  %1055 = load i32, ptr %29, align 4, !tbaa !9
  %1056 = load i32, ptr %16, align 4, !tbaa !9
  %1057 = icmp sgt i32 %1055, %1056
  br i1 %1057, label %1058, label %1060

1058:                                             ; preds = %1052
  %1059 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %1059, ptr %29, align 4, !tbaa !9
  br label %1060

1060:                                             ; preds = %1058, %1052
  %1061 = load i32, ptr %29, align 4, !tbaa !9
  store i32 %1061, ptr %37, align 4, !tbaa !9
  br label %1062

1062:                                             ; preds = %1071, %1060
  %1063 = load i32, ptr %37, align 4, !tbaa !9
  %1064 = icmp ne i32 %1063, 0
  br i1 %1064, label %1065, label %1076

1065:                                             ; preds = %1062
  %1066 = load ptr, ptr %26, align 8, !tbaa !5
  %1067 = ptrtoint ptr %1066 to i64
  %1068 = and i64 %1067, 3
  %1069 = icmp eq i64 %1068, 0
  br i1 %1069, label %1070, label %1071

1070:                                             ; preds = %1065
  br label %1076

1071:                                             ; preds = %1065
  %1072 = load ptr, ptr %26, align 8, !tbaa !5
  %1073 = getelementptr inbounds i8, ptr %1072, i32 1
  store ptr %1073, ptr %26, align 8, !tbaa !5
  store i8 48, ptr %1072, align 1, !tbaa !11
  %1074 = load i32, ptr %37, align 4, !tbaa !9
  %1075 = add nsw i32 %1074, -1
  store i32 %1075, ptr %37, align 4, !tbaa !9
  br label %1062, !llvm.loop !24

1076:                                             ; preds = %1070, %1062
  br label %1077

1077:                                             ; preds = %1080, %1076
  %1078 = load i32, ptr %37, align 4, !tbaa !9
  %1079 = icmp sge i32 %1078, 4
  br i1 %1079, label %1080, label %1086

1080:                                             ; preds = %1077
  %1081 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 808464432, ptr %1081, align 4, !tbaa !9
  %1082 = load ptr, ptr %26, align 8, !tbaa !5
  %1083 = getelementptr inbounds i8, ptr %1082, i64 4
  store ptr %1083, ptr %26, align 8, !tbaa !5
  %1084 = load i32, ptr %37, align 4, !tbaa !9
  %1085 = sub nsw i32 %1084, 4
  store i32 %1085, ptr %37, align 4, !tbaa !9
  br label %1077, !llvm.loop !25

1086:                                             ; preds = %1077
  br label %1087

1087:                                             ; preds = %1090, %1086
  %1088 = load i32, ptr %37, align 4, !tbaa !9
  %1089 = icmp ne i32 %1088, 0
  br i1 %1089, label %1090, label %1095

1090:                                             ; preds = %1087
  %1091 = load ptr, ptr %26, align 8, !tbaa !5
  %1092 = getelementptr inbounds i8, ptr %1091, i32 1
  store ptr %1092, ptr %26, align 8, !tbaa !5
  store i8 48, ptr %1091, align 1, !tbaa !11
  %1093 = load i32, ptr %37, align 4, !tbaa !9
  %1094 = add nsw i32 %1093, -1
  store i32 %1094, ptr %37, align 4, !tbaa !9
  br label %1087, !llvm.loop !26

1095:                                             ; preds = %1087
  %1096 = load i32, ptr %28, align 4, !tbaa !9
  %1097 = load i32, ptr %29, align 4, !tbaa !9
  %1098 = add i32 %1096, %1097
  %1099 = load i32, ptr %16, align 4, !tbaa !9
  %1100 = icmp sgt i32 %1098, %1099
  br i1 %1100, label %1101, label %1105

1101:                                             ; preds = %1095
  %1102 = load i32, ptr %16, align 4, !tbaa !9
  %1103 = load i32, ptr %29, align 4, !tbaa !9
  %1104 = sub i32 %1102, %1103
  store i32 %1104, ptr %28, align 4, !tbaa !9
  br label %1105

1105:                                             ; preds = %1101, %1095
  %1106 = load i32, ptr %28, align 4, !tbaa !9
  store i32 %1106, ptr %37, align 4, !tbaa !9
  br label %1107

1107:                                             ; preds = %1110, %1105
  %1108 = load i32, ptr %37, align 4, !tbaa !9
  %1109 = icmp ne i32 %1108, 0
  br i1 %1109, label %1110, label %1118

1110:                                             ; preds = %1107
  %1111 = load ptr, ptr %34, align 8, !tbaa !5
  %1112 = getelementptr inbounds i8, ptr %1111, i32 1
  store ptr %1112, ptr %34, align 8, !tbaa !5
  %1113 = load i8, ptr %1111, align 1, !tbaa !11
  %1114 = load ptr, ptr %26, align 8, !tbaa !5
  %1115 = getelementptr inbounds i8, ptr %1114, i32 1
  store ptr %1115, ptr %26, align 8, !tbaa !5
  store i8 %1113, ptr %1114, align 1, !tbaa !11
  %1116 = load i32, ptr %37, align 4, !tbaa !9
  %1117 = add nsw i32 %1116, -1
  store i32 %1117, ptr %37, align 4, !tbaa !9
  br label %1107, !llvm.loop !27

1118:                                             ; preds = %1107
  %1119 = load i32, ptr %16, align 4, !tbaa !9
  %1120 = load i32, ptr %29, align 4, !tbaa !9
  %1121 = load i32, ptr %28, align 4, !tbaa !9
  %1122 = add i32 %1120, %1121
  %1123 = sub i32 %1119, %1122
  store i32 %1123, ptr %17, align 4, !tbaa !9
  store i32 50331649, ptr %30, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #2
  br label %1320

1124:                                             ; preds = %1038
  %1125 = load i32, ptr %18, align 4, !tbaa !9
  %1126 = and i32 %1125, 64
  %1127 = icmp ne i32 %1126, 0
  br i1 %1127, label %1128, label %1132

1128:                                             ; preds = %1124
  %1129 = load i32, ptr %33, align 4, !tbaa !9
  %1130 = sub i32 600, %1129
  %1131 = urem i32 %1130, 3
  br label %1133

1132:                                             ; preds = %1124
  br label %1133

1133:                                             ; preds = %1132, %1128
  %1134 = phi i32 [ %1131, %1128 ], [ 0, %1132 ]
  store i32 %1134, ptr %30, align 4, !tbaa !9
  %1135 = load i32, ptr %33, align 4, !tbaa !9
  %1136 = load i32, ptr %28, align 4, !tbaa !9
  %1137 = icmp uge i32 %1135, %1136
  br i1 %1137, label %1138, label %1244

1138:                                             ; preds = %1133
  store i32 0, ptr %29, align 4, !tbaa !9
  br label %1139

1139:                                             ; preds = %1166, %1138
  %1140 = load i32, ptr %18, align 4, !tbaa !9
  %1141 = and i32 %1140, 64
  %1142 = icmp ne i32 %1141, 0
  br i1 %1142, label %1143, label %1151

1143:                                             ; preds = %1139
  %1144 = load i32, ptr %30, align 4, !tbaa !9
  %1145 = add i32 %1144, 1
  store i32 %1145, ptr %30, align 4, !tbaa !9
  %1146 = icmp eq i32 %1145, 4
  br i1 %1146, label %1147, label %1151

1147:                                             ; preds = %1143
  store i32 0, ptr %30, align 4, !tbaa !9
  %1148 = load i8, ptr @stbsp__comma, align 1, !tbaa !11
  %1149 = load ptr, ptr %26, align 8, !tbaa !5
  %1150 = getelementptr inbounds i8, ptr %1149, i32 1
  store ptr %1150, ptr %26, align 8, !tbaa !5
  store i8 %1148, ptr %1149, align 1, !tbaa !11
  br label %1166

1151:                                             ; preds = %1143, %1139
  %1152 = load ptr, ptr %34, align 8, !tbaa !5
  %1153 = load i32, ptr %29, align 4, !tbaa !9
  %1154 = zext i32 %1153 to i64
  %1155 = getelementptr inbounds i8, ptr %1152, i64 %1154
  %1156 = load i8, ptr %1155, align 1, !tbaa !11
  %1157 = load ptr, ptr %26, align 8, !tbaa !5
  %1158 = getelementptr inbounds i8, ptr %1157, i32 1
  store ptr %1158, ptr %26, align 8, !tbaa !5
  store i8 %1156, ptr %1157, align 1, !tbaa !11
  %1159 = load i32, ptr %29, align 4, !tbaa !9
  %1160 = add i32 %1159, 1
  store i32 %1160, ptr %29, align 4, !tbaa !9
  %1161 = load i32, ptr %29, align 4, !tbaa !9
  %1162 = load i32, ptr %28, align 4, !tbaa !9
  %1163 = icmp uge i32 %1161, %1162
  br i1 %1163, label %1164, label %1165

1164:                                             ; preds = %1151
  br label %1167

1165:                                             ; preds = %1151
  br label %1166

1166:                                             ; preds = %1165, %1147
  br label %1139

1167:                                             ; preds = %1164
  %1168 = load i32, ptr %29, align 4, !tbaa !9
  %1169 = load i32, ptr %33, align 4, !tbaa !9
  %1170 = icmp ult i32 %1168, %1169
  br i1 %1170, label %1171, label %1227

1171:                                             ; preds = %1167
  %1172 = load i32, ptr %33, align 4, !tbaa !9
  %1173 = load i32, ptr %29, align 4, !tbaa !9
  %1174 = sub i32 %1172, %1173
  store i32 %1174, ptr %29, align 4, !tbaa !9
  %1175 = load i32, ptr %18, align 4, !tbaa !9
  %1176 = and i32 %1175, 64
  %1177 = icmp eq i32 %1176, 0
  br i1 %1177, label %1178, label %1204

1178:                                             ; preds = %1171
  br label %1179

1179:                                             ; preds = %1188, %1178
  %1180 = load i32, ptr %29, align 4, !tbaa !9
  %1181 = icmp ne i32 %1180, 0
  br i1 %1181, label %1182, label %1193

1182:                                             ; preds = %1179
  %1183 = load ptr, ptr %26, align 8, !tbaa !5
  %1184 = ptrtoint ptr %1183 to i64
  %1185 = and i64 %1184, 3
  %1186 = icmp eq i64 %1185, 0
  br i1 %1186, label %1187, label %1188

1187:                                             ; preds = %1182
  br label %1193

1188:                                             ; preds = %1182
  %1189 = load ptr, ptr %26, align 8, !tbaa !5
  %1190 = getelementptr inbounds i8, ptr %1189, i32 1
  store ptr %1190, ptr %26, align 8, !tbaa !5
  store i8 48, ptr %1189, align 1, !tbaa !11
  %1191 = load i32, ptr %29, align 4, !tbaa !9
  %1192 = add i32 %1191, -1
  store i32 %1192, ptr %29, align 4, !tbaa !9
  br label %1179, !llvm.loop !28

1193:                                             ; preds = %1187, %1179
  br label %1194

1194:                                             ; preds = %1197, %1193
  %1195 = load i32, ptr %29, align 4, !tbaa !9
  %1196 = icmp uge i32 %1195, 4
  br i1 %1196, label %1197, label %1203

1197:                                             ; preds = %1194
  %1198 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 808464432, ptr %1198, align 4, !tbaa !9
  %1199 = load ptr, ptr %26, align 8, !tbaa !5
  %1200 = getelementptr inbounds i8, ptr %1199, i64 4
  store ptr %1200, ptr %26, align 8, !tbaa !5
  %1201 = load i32, ptr %29, align 4, !tbaa !9
  %1202 = sub i32 %1201, 4
  store i32 %1202, ptr %29, align 4, !tbaa !9
  br label %1194, !llvm.loop !29

1203:                                             ; preds = %1194
  br label %1204

1204:                                             ; preds = %1203, %1171
  br label %1205

1205:                                             ; preds = %1225, %1204
  %1206 = load i32, ptr %29, align 4, !tbaa !9
  %1207 = icmp ne i32 %1206, 0
  br i1 %1207, label %1208, label %1226

1208:                                             ; preds = %1205
  %1209 = load i32, ptr %18, align 4, !tbaa !9
  %1210 = and i32 %1209, 64
  %1211 = icmp ne i32 %1210, 0
  br i1 %1211, label %1212, label %1220

1212:                                             ; preds = %1208
  %1213 = load i32, ptr %30, align 4, !tbaa !9
  %1214 = add i32 %1213, 1
  store i32 %1214, ptr %30, align 4, !tbaa !9
  %1215 = icmp eq i32 %1214, 4
  br i1 %1215, label %1216, label %1220

1216:                                             ; preds = %1212
  store i32 0, ptr %30, align 4, !tbaa !9
  %1217 = load i8, ptr @stbsp__comma, align 1, !tbaa !11
  %1218 = load ptr, ptr %26, align 8, !tbaa !5
  %1219 = getelementptr inbounds i8, ptr %1218, i32 1
  store ptr %1219, ptr %26, align 8, !tbaa !5
  store i8 %1217, ptr %1218, align 1, !tbaa !11
  br label %1225

1220:                                             ; preds = %1212, %1208
  %1221 = load ptr, ptr %26, align 8, !tbaa !5
  %1222 = getelementptr inbounds i8, ptr %1221, i32 1
  store ptr %1222, ptr %26, align 8, !tbaa !5
  store i8 48, ptr %1221, align 1, !tbaa !11
  %1223 = load i32, ptr %29, align 4, !tbaa !9
  %1224 = add i32 %1223, -1
  store i32 %1224, ptr %29, align 4, !tbaa !9
  br label %1225

1225:                                             ; preds = %1220, %1216
  br label %1205, !llvm.loop !30

1226:                                             ; preds = %1205
  br label %1227

1227:                                             ; preds = %1226, %1167
  %1228 = load ptr, ptr %26, align 8, !tbaa !5
  %1229 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %1230 = getelementptr inbounds i8, ptr %1229, i64 64
  %1231 = ptrtoint ptr %1228 to i64
  %1232 = ptrtoint ptr %1230 to i64
  %1233 = sub i64 %1231, %1232
  %1234 = trunc i64 %1233 to i32
  %1235 = add nsw i32 %1234, 50331648
  store i32 %1235, ptr %30, align 4, !tbaa !9
  %1236 = load i32, ptr %16, align 4, !tbaa !9
  %1237 = icmp ne i32 %1236, 0
  br i1 %1237, label %1238, label %1243

1238:                                             ; preds = %1227
  %1239 = load i8, ptr @stbsp__period, align 1, !tbaa !11
  %1240 = load ptr, ptr %26, align 8, !tbaa !5
  %1241 = getelementptr inbounds i8, ptr %1240, i32 1
  store ptr %1241, ptr %26, align 8, !tbaa !5
  store i8 %1239, ptr %1240, align 1, !tbaa !11
  %1242 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %1242, ptr %17, align 4, !tbaa !9
  br label %1243

1243:                                             ; preds = %1238, %1227
  br label %1319

1244:                                             ; preds = %1133
  store i32 0, ptr %29, align 4, !tbaa !9
  br label %1245

1245:                                             ; preds = %1272, %1244
  %1246 = load i32, ptr %18, align 4, !tbaa !9
  %1247 = and i32 %1246, 64
  %1248 = icmp ne i32 %1247, 0
  br i1 %1248, label %1249, label %1257

1249:                                             ; preds = %1245
  %1250 = load i32, ptr %30, align 4, !tbaa !9
  %1251 = add i32 %1250, 1
  store i32 %1251, ptr %30, align 4, !tbaa !9
  %1252 = icmp eq i32 %1251, 4
  br i1 %1252, label %1253, label %1257

1253:                                             ; preds = %1249
  store i32 0, ptr %30, align 4, !tbaa !9
  %1254 = load i8, ptr @stbsp__comma, align 1, !tbaa !11
  %1255 = load ptr, ptr %26, align 8, !tbaa !5
  %1256 = getelementptr inbounds i8, ptr %1255, i32 1
  store ptr %1256, ptr %26, align 8, !tbaa !5
  store i8 %1254, ptr %1255, align 1, !tbaa !11
  br label %1272

1257:                                             ; preds = %1249, %1245
  %1258 = load ptr, ptr %34, align 8, !tbaa !5
  %1259 = load i32, ptr %29, align 4, !tbaa !9
  %1260 = zext i32 %1259 to i64
  %1261 = getelementptr inbounds i8, ptr %1258, i64 %1260
  %1262 = load i8, ptr %1261, align 1, !tbaa !11
  %1263 = load ptr, ptr %26, align 8, !tbaa !5
  %1264 = getelementptr inbounds i8, ptr %1263, i32 1
  store ptr %1264, ptr %26, align 8, !tbaa !5
  store i8 %1262, ptr %1263, align 1, !tbaa !11
  %1265 = load i32, ptr %29, align 4, !tbaa !9
  %1266 = add i32 %1265, 1
  store i32 %1266, ptr %29, align 4, !tbaa !9
  %1267 = load i32, ptr %29, align 4, !tbaa !9
  %1268 = load i32, ptr %33, align 4, !tbaa !9
  %1269 = icmp uge i32 %1267, %1268
  br i1 %1269, label %1270, label %1271

1270:                                             ; preds = %1257
  br label %1273

1271:                                             ; preds = %1257
  br label %1272

1272:                                             ; preds = %1271, %1253
  br label %1245

1273:                                             ; preds = %1270
  %1274 = load ptr, ptr %26, align 8, !tbaa !5
  %1275 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %1276 = getelementptr inbounds i8, ptr %1275, i64 64
  %1277 = ptrtoint ptr %1274 to i64
  %1278 = ptrtoint ptr %1276 to i64
  %1279 = sub i64 %1277, %1278
  %1280 = trunc i64 %1279 to i32
  %1281 = add nsw i32 %1280, 50331648
  store i32 %1281, ptr %30, align 4, !tbaa !9
  %1282 = load i32, ptr %16, align 4, !tbaa !9
  %1283 = icmp ne i32 %1282, 0
  br i1 %1283, label %1284, label %1288

1284:                                             ; preds = %1273
  %1285 = load i8, ptr @stbsp__period, align 1, !tbaa !11
  %1286 = load ptr, ptr %26, align 8, !tbaa !5
  %1287 = getelementptr inbounds i8, ptr %1286, i32 1
  store ptr %1287, ptr %26, align 8, !tbaa !5
  store i8 %1285, ptr %1286, align 1, !tbaa !11
  br label %1288

1288:                                             ; preds = %1284, %1273
  %1289 = load i32, ptr %28, align 4, !tbaa !9
  %1290 = load i32, ptr %33, align 4, !tbaa !9
  %1291 = sub i32 %1289, %1290
  %1292 = load i32, ptr %16, align 4, !tbaa !9
  %1293 = icmp ugt i32 %1291, %1292
  br i1 %1293, label %1294, label %1298

1294:                                             ; preds = %1288
  %1295 = load i32, ptr %16, align 4, !tbaa !9
  %1296 = load i32, ptr %33, align 4, !tbaa !9
  %1297 = add nsw i32 %1295, %1296
  store i32 %1297, ptr %28, align 4, !tbaa !9
  br label %1298

1298:                                             ; preds = %1294, %1288
  br label %1299

1299:                                             ; preds = %1303, %1298
  %1300 = load i32, ptr %29, align 4, !tbaa !9
  %1301 = load i32, ptr %28, align 4, !tbaa !9
  %1302 = icmp ult i32 %1300, %1301
  br i1 %1302, label %1303, label %1313

1303:                                             ; preds = %1299
  %1304 = load ptr, ptr %34, align 8, !tbaa !5
  %1305 = load i32, ptr %29, align 4, !tbaa !9
  %1306 = zext i32 %1305 to i64
  %1307 = getelementptr inbounds i8, ptr %1304, i64 %1306
  %1308 = load i8, ptr %1307, align 1, !tbaa !11
  %1309 = load ptr, ptr %26, align 8, !tbaa !5
  %1310 = getelementptr inbounds i8, ptr %1309, i32 1
  store ptr %1310, ptr %26, align 8, !tbaa !5
  store i8 %1308, ptr %1309, align 1, !tbaa !11
  %1311 = load i32, ptr %29, align 4, !tbaa !9
  %1312 = add i32 %1311, 1
  store i32 %1312, ptr %29, align 4, !tbaa !9
  br label %1299, !llvm.loop !31

1313:                                             ; preds = %1299
  %1314 = load i32, ptr %16, align 4, !tbaa !9
  %1315 = load i32, ptr %28, align 4, !tbaa !9
  %1316 = load i32, ptr %33, align 4, !tbaa !9
  %1317 = sub i32 %1315, %1316
  %1318 = sub i32 %1314, %1317
  store i32 %1318, ptr %17, align 4, !tbaa !9
  br label %1319

1319:                                             ; preds = %1313, %1243
  br label %1320

1320:                                             ; preds = %1319, %1118
  store i32 0, ptr %16, align 4, !tbaa !9
  %1321 = load i32, ptr %18, align 4, !tbaa !9
  %1322 = and i32 %1321, 256
  %1323 = icmp ne i32 %1322, 0
  br i1 %1323, label %1324, label %1384

1324:                                             ; preds = %1320
  call void @llvm.lifetime.start.p0(i64 1, ptr %38) #2
  store i8 1, ptr %38, align 1, !tbaa !11
  %1325 = load i32, ptr %18, align 4, !tbaa !9
  %1326 = and i32 %1325, 1024
  %1327 = icmp ne i32 %1326, 0
  br i1 %1327, label %1328, label %1329

1328:                                             ; preds = %1324
  store i8 0, ptr %38, align 1, !tbaa !11
  br label %1329

1329:                                             ; preds = %1328, %1324
  %1330 = load i8, ptr %38, align 1, !tbaa !11
  %1331 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 0
  store i8 %1330, ptr %1331, align 1, !tbaa !11
  %1332 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 1
  store i8 32, ptr %1332, align 1, !tbaa !11
  %1333 = load i32, ptr %18, align 4, !tbaa !9
  %1334 = lshr i32 %1333, 24
  %1335 = icmp ne i32 %1334, 0
  br i1 %1335, label %1336, label %1383

1336:                                             ; preds = %1329
  %1337 = load i32, ptr %18, align 4, !tbaa !9
  %1338 = and i32 %1337, 2048
  %1339 = icmp ne i32 %1338, 0
  br i1 %1339, label %1340, label %1351

1340:                                             ; preds = %1336
  %1341 = load i32, ptr %18, align 4, !tbaa !9
  %1342 = lshr i32 %1341, 24
  %1343 = zext i32 %1342 to i64
  %1344 = getelementptr inbounds [6 x i8], ptr @.str.1, i64 0, i64 %1343
  %1345 = load i8, ptr %1344, align 1, !tbaa !11
  %1346 = load i8, ptr %38, align 1, !tbaa !11
  %1347 = sext i8 %1346 to i32
  %1348 = add nsw i32 %1347, 1
  %1349 = sext i32 %1348 to i64
  %1350 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 %1349
  store i8 %1345, ptr %1350, align 1, !tbaa !11
  br label %1362

1351:                                             ; preds = %1336
  %1352 = load i32, ptr %18, align 4, !tbaa !9
  %1353 = lshr i32 %1352, 24
  %1354 = zext i32 %1353 to i64
  %1355 = getelementptr inbounds [6 x i8], ptr @.str.2, i64 0, i64 %1354
  %1356 = load i8, ptr %1355, align 1, !tbaa !11
  %1357 = load i8, ptr %38, align 1, !tbaa !11
  %1358 = sext i8 %1357 to i32
  %1359 = add nsw i32 %1358, 1
  %1360 = sext i32 %1359 to i64
  %1361 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 %1360
  store i8 %1356, ptr %1361, align 1, !tbaa !11
  br label %1362

1362:                                             ; preds = %1351, %1340
  %1363 = load i8, ptr %38, align 1, !tbaa !11
  %1364 = add i8 %1363, 1
  store i8 %1364, ptr %38, align 1, !tbaa !11
  %1365 = load i32, ptr %18, align 4, !tbaa !9
  %1366 = and i32 %1365, 2048
  %1367 = icmp ne i32 %1366, 0
  br i1 %1367, label %1368, label %1380

1368:                                             ; preds = %1362
  %1369 = load i32, ptr %18, align 4, !tbaa !9
  %1370 = and i32 %1369, 4096
  %1371 = icmp ne i32 %1370, 0
  br i1 %1371, label %1380, label %1372

1372:                                             ; preds = %1368
  %1373 = load i8, ptr %38, align 1, !tbaa !11
  %1374 = sext i8 %1373 to i32
  %1375 = add nsw i32 %1374, 1
  %1376 = sext i32 %1375 to i64
  %1377 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 %1376
  store i8 105, ptr %1377, align 1, !tbaa !11
  %1378 = load i8, ptr %38, align 1, !tbaa !11
  %1379 = add i8 %1378, 1
  store i8 %1379, ptr %38, align 1, !tbaa !11
  br label %1380

1380:                                             ; preds = %1372, %1368, %1362
  %1381 = load i8, ptr %38, align 1, !tbaa !11
  %1382 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 0
  store i8 %1381, ptr %1382, align 1, !tbaa !11
  br label %1383

1383:                                             ; preds = %1380, %1329
  call void @llvm.lifetime.end.p0(i64 1, ptr %38) #2
  br label %1384

1384:                                             ; preds = %1383, %1320
  br label %1385

1385:                                             ; preds = %1384, %968
  %1386 = load ptr, ptr %26, align 8, !tbaa !5
  %1387 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %1388 = getelementptr inbounds i8, ptr %1387, i64 64
  %1389 = ptrtoint ptr %1386 to i64
  %1390 = ptrtoint ptr %1388 to i64
  %1391 = sub i64 %1389, %1390
  %1392 = trunc i64 %1391 to i32
  store i32 %1392, ptr %28, align 4, !tbaa !9
  %1393 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %1394 = getelementptr inbounds i8, ptr %1393, i64 64
  store ptr %1394, ptr %26, align 8, !tbaa !5
  br label %1795

1395:                                             ; preds = %441, %441
  %1396 = load ptr, ptr %13, align 8, !tbaa !5
  %1397 = getelementptr inbounds i8, ptr %1396, i64 0
  %1398 = load i8, ptr %1397, align 1, !tbaa !11
  %1399 = sext i8 %1398 to i32
  %1400 = icmp eq i32 %1399, 66
  %1401 = zext i1 %1400 to i64
  %1402 = select i1 %1400, ptr @stbsp_vsprintfcb.hexu, ptr @stbsp_vsprintfcb.hex
  store ptr %1402, ptr %27, align 8, !tbaa !5
  %1403 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  store i8 0, ptr %1403, align 1, !tbaa !11
  %1404 = load i32, ptr %18, align 4, !tbaa !9
  %1405 = and i32 %1404, 8
  %1406 = icmp ne i32 %1405, 0
  br i1 %1406, label %1407, label %1414

1407:                                             ; preds = %1395
  %1408 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  store i8 2, ptr %1408, align 1, !tbaa !11
  %1409 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 1
  store i8 48, ptr %1409, align 1, !tbaa !11
  %1410 = load ptr, ptr %27, align 8, !tbaa !5
  %1411 = getelementptr inbounds i8, ptr %1410, i64 11
  %1412 = load i8, ptr %1411, align 1, !tbaa !11
  %1413 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 2
  store i8 %1412, ptr %1413, align 1, !tbaa !11
  br label %1414

1414:                                             ; preds = %1407, %1395
  store i32 384, ptr %28, align 4, !tbaa !9
  br label %1449

1415:                                             ; preds = %441
  store ptr @stbsp_vsprintfcb.hexu, ptr %27, align 8, !tbaa !5
  %1416 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  store i8 0, ptr %1416, align 1, !tbaa !11
  %1417 = load i32, ptr %18, align 4, !tbaa !9
  %1418 = and i32 %1417, 8
  %1419 = icmp ne i32 %1418, 0
  br i1 %1419, label %1420, label %1423

1420:                                             ; preds = %1415
  %1421 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  store i8 1, ptr %1421, align 1, !tbaa !11
  %1422 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 1
  store i8 48, ptr %1422, align 1, !tbaa !11
  br label %1423

1423:                                             ; preds = %1420, %1415
  store i32 816, ptr %28, align 4, !tbaa !9
  br label %1449

1424:                                             ; preds = %441
  %1425 = load i32, ptr %18, align 4, !tbaa !9
  %1426 = or i32 %1425, 32
  store i32 %1426, ptr %18, align 4, !tbaa !9
  store i32 16, ptr %16, align 4, !tbaa !9
  %1427 = load i32, ptr %18, align 4, !tbaa !9
  %1428 = and i32 %1427, -17
  store i32 %1428, ptr %18, align 4, !tbaa !9
  br label %1429

1429:                                             ; preds = %1424, %441, %441
  %1430 = load ptr, ptr %13, align 8, !tbaa !5
  %1431 = getelementptr inbounds i8, ptr %1430, i64 0
  %1432 = load i8, ptr %1431, align 1, !tbaa !11
  %1433 = sext i8 %1432 to i32
  %1434 = icmp eq i32 %1433, 88
  %1435 = zext i1 %1434 to i64
  %1436 = select i1 %1434, ptr @stbsp_vsprintfcb.hexu, ptr @stbsp_vsprintfcb.hex
  store ptr %1436, ptr %27, align 8, !tbaa !5
  store i32 1088, ptr %28, align 4, !tbaa !9
  %1437 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  store i8 0, ptr %1437, align 1, !tbaa !11
  %1438 = load i32, ptr %18, align 4, !tbaa !9
  %1439 = and i32 %1438, 8
  %1440 = icmp ne i32 %1439, 0
  br i1 %1440, label %1441, label %1448

1441:                                             ; preds = %1429
  %1442 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  store i8 2, ptr %1442, align 1, !tbaa !11
  %1443 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 1
  store i8 48, ptr %1443, align 1, !tbaa !11
  %1444 = load ptr, ptr %27, align 8, !tbaa !5
  %1445 = getelementptr inbounds i8, ptr %1444, i64 16
  %1446 = load i8, ptr %1445, align 1, !tbaa !11
  %1447 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 2
  store i8 %1446, ptr %1447, align 1, !tbaa !11
  br label %1448

1448:                                             ; preds = %1441, %1429
  br label %1449

1449:                                             ; preds = %1448, %1423, %1414
  %1450 = load i32, ptr %18, align 4, !tbaa !9
  %1451 = and i32 %1450, 32
  %1452 = icmp ne i32 %1451, 0
  br i1 %1452, label %1453, label %1470

1453:                                             ; preds = %1449
  %1454 = load ptr, ptr %11, align 8, !tbaa !5
  %1455 = getelementptr inbounds %struct.__va_list_tag, ptr %1454, i32 0, i32 0
  %1456 = load i32, ptr %1455, align 8
  %1457 = icmp ule i32 %1456, 40
  br i1 %1457, label %1458, label %1463

1458:                                             ; preds = %1453
  %1459 = getelementptr inbounds %struct.__va_list_tag, ptr %1454, i32 0, i32 3
  %1460 = load ptr, ptr %1459, align 8
  %1461 = getelementptr i8, ptr %1460, i32 %1456
  %1462 = add i32 %1456, 8
  store i32 %1462, ptr %1455, align 8
  br label %1467

1463:                                             ; preds = %1453
  %1464 = getelementptr inbounds %struct.__va_list_tag, ptr %1454, i32 0, i32 2
  %1465 = load ptr, ptr %1464, align 8
  %1466 = getelementptr i8, ptr %1465, i32 8
  store ptr %1466, ptr %1464, align 8
  br label %1467

1467:                                             ; preds = %1463, %1458
  %1468 = phi ptr [ %1461, %1458 ], [ %1465, %1463 ]
  %1469 = load i64, ptr %1468, align 8, !tbaa !18
  store i64 %1469, ptr %31, align 8, !tbaa !18
  br label %1488

1470:                                             ; preds = %1449
  %1471 = load ptr, ptr %11, align 8, !tbaa !5
  %1472 = getelementptr inbounds %struct.__va_list_tag, ptr %1471, i32 0, i32 0
  %1473 = load i32, ptr %1472, align 8
  %1474 = icmp ule i32 %1473, 40
  br i1 %1474, label %1475, label %1480

1475:                                             ; preds = %1470
  %1476 = getelementptr inbounds %struct.__va_list_tag, ptr %1471, i32 0, i32 3
  %1477 = load ptr, ptr %1476, align 8
  %1478 = getelementptr i8, ptr %1477, i32 %1473
  %1479 = add i32 %1473, 8
  store i32 %1479, ptr %1472, align 8
  br label %1484

1480:                                             ; preds = %1470
  %1481 = getelementptr inbounds %struct.__va_list_tag, ptr %1471, i32 0, i32 2
  %1482 = load ptr, ptr %1481, align 8
  %1483 = getelementptr i8, ptr %1482, i32 8
  store ptr %1483, ptr %1481, align 8
  br label %1484

1484:                                             ; preds = %1480, %1475
  %1485 = phi ptr [ %1478, %1475 ], [ %1482, %1480 ]
  %1486 = load i32, ptr %1485, align 4, !tbaa !9
  %1487 = zext i32 %1486 to i64
  store i64 %1487, ptr %31, align 8, !tbaa !18
  br label %1488

1488:                                             ; preds = %1484, %1467
  %1489 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %1490 = getelementptr inbounds i8, ptr %1489, i64 512
  store ptr %1490, ptr %26, align 8, !tbaa !5
  store i32 0, ptr %33, align 4, !tbaa !9
  %1491 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 0
  store i8 0, ptr %1491, align 1, !tbaa !11
  %1492 = load i64, ptr %31, align 8, !tbaa !18
  %1493 = icmp eq i64 %1492, 0
  br i1 %1493, label %1494, label %1500

1494:                                             ; preds = %1488
  %1495 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  store i8 0, ptr %1495, align 1, !tbaa !11
  %1496 = load i32, ptr %16, align 4, !tbaa !9
  %1497 = icmp eq i32 %1496, 0
  br i1 %1497, label %1498, label %1499

1498:                                             ; preds = %1494
  store i32 0, ptr %28, align 4, !tbaa !9
  store i32 0, ptr %30, align 4, !tbaa !9
  br label %1795

1499:                                             ; preds = %1494
  br label %1500

1500:                                             ; preds = %1499, %1488
  br label %1501

1501:                                             ; preds = %1552, %1500
  %1502 = load ptr, ptr %27, align 8, !tbaa !5
  %1503 = load i64, ptr %31, align 8, !tbaa !18
  %1504 = load i32, ptr %28, align 4, !tbaa !9
  %1505 = lshr i32 %1504, 8
  %1506 = shl i32 1, %1505
  %1507 = sub nsw i32 %1506, 1
  %1508 = sext i32 %1507 to i64
  %1509 = and i64 %1503, %1508
  %1510 = getelementptr inbounds i8, ptr %1502, i64 %1509
  %1511 = load i8, ptr %1510, align 1, !tbaa !11
  %1512 = load ptr, ptr %26, align 8, !tbaa !5
  %1513 = getelementptr inbounds i8, ptr %1512, i32 -1
  store ptr %1513, ptr %26, align 8, !tbaa !5
  store i8 %1511, ptr %1513, align 1, !tbaa !11
  %1514 = load i32, ptr %28, align 4, !tbaa !9
  %1515 = lshr i32 %1514, 8
  %1516 = load i64, ptr %31, align 8, !tbaa !18
  %1517 = zext i32 %1515 to i64
  %1518 = lshr i64 %1516, %1517
  store i64 %1518, ptr %31, align 8, !tbaa !18
  %1519 = load i64, ptr %31, align 8, !tbaa !18
  %1520 = icmp ne i64 %1519, 0
  br i1 %1520, label %1532, label %1521

1521:                                             ; preds = %1501
  %1522 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %1523 = getelementptr inbounds i8, ptr %1522, i64 512
  %1524 = load ptr, ptr %26, align 8, !tbaa !5
  %1525 = ptrtoint ptr %1523 to i64
  %1526 = ptrtoint ptr %1524 to i64
  %1527 = sub i64 %1525, %1526
  %1528 = trunc i64 %1527 to i32
  %1529 = load i32, ptr %16, align 4, !tbaa !9
  %1530 = icmp slt i32 %1528, %1529
  br i1 %1530, label %1532, label %1531

1531:                                             ; preds = %1521
  br label %1553

1532:                                             ; preds = %1521, %1501
  %1533 = load i32, ptr %18, align 4, !tbaa !9
  %1534 = and i32 %1533, 64
  %1535 = icmp ne i32 %1534, 0
  br i1 %1535, label %1536, label %1552

1536:                                             ; preds = %1532
  %1537 = load i32, ptr %28, align 4, !tbaa !9
  %1538 = add i32 %1537, 1
  store i32 %1538, ptr %28, align 4, !tbaa !9
  %1539 = load i32, ptr %28, align 4, !tbaa !9
  %1540 = and i32 %1539, 15
  %1541 = load i32, ptr %28, align 4, !tbaa !9
  %1542 = lshr i32 %1541, 4
  %1543 = and i32 %1542, 15
  %1544 = icmp eq i32 %1540, %1543
  br i1 %1544, label %1545, label %1551

1545:                                             ; preds = %1536
  %1546 = load i32, ptr %28, align 4, !tbaa !9
  %1547 = and i32 %1546, -16
  store i32 %1547, ptr %28, align 4, !tbaa !9
  %1548 = load i8, ptr @stbsp__comma, align 1, !tbaa !11
  %1549 = load ptr, ptr %26, align 8, !tbaa !5
  %1550 = getelementptr inbounds i8, ptr %1549, i32 -1
  store ptr %1550, ptr %26, align 8, !tbaa !5
  store i8 %1548, ptr %1550, align 1, !tbaa !11
  br label %1551

1551:                                             ; preds = %1545, %1536
  br label %1552

1552:                                             ; preds = %1551, %1532
  br label %1501

1553:                                             ; preds = %1531
  %1554 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %1555 = getelementptr inbounds i8, ptr %1554, i64 512
  %1556 = load ptr, ptr %26, align 8, !tbaa !5
  %1557 = ptrtoint ptr %1555 to i64
  %1558 = ptrtoint ptr %1556 to i64
  %1559 = sub i64 %1557, %1558
  %1560 = trunc i64 %1559 to i32
  %1561 = load i32, ptr %28, align 4, !tbaa !9
  %1562 = lshr i32 %1561, 4
  %1563 = and i32 %1562, 15
  %1564 = shl i32 %1563, 24
  %1565 = add i32 %1560, %1564
  store i32 %1565, ptr %30, align 4, !tbaa !9
  %1566 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %1567 = getelementptr inbounds i8, ptr %1566, i64 512
  %1568 = load ptr, ptr %26, align 8, !tbaa !5
  %1569 = ptrtoint ptr %1567 to i64
  %1570 = ptrtoint ptr %1568 to i64
  %1571 = sub i64 %1569, %1570
  %1572 = trunc i64 %1571 to i32
  store i32 %1572, ptr %28, align 4, !tbaa !9
  br label %1795

1573:                                             ; preds = %441, %441, %441
  %1574 = load i32, ptr %18, align 4, !tbaa !9
  %1575 = and i32 %1574, 32
  %1576 = icmp ne i32 %1575, 0
  br i1 %1576, label %1577, label %1609

1577:                                             ; preds = %1573
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #2
  %1578 = load ptr, ptr %11, align 8, !tbaa !5
  %1579 = getelementptr inbounds %struct.__va_list_tag, ptr %1578, i32 0, i32 0
  %1580 = load i32, ptr %1579, align 8
  %1581 = icmp ule i32 %1580, 40
  br i1 %1581, label %1582, label %1587

1582:                                             ; preds = %1577
  %1583 = getelementptr inbounds %struct.__va_list_tag, ptr %1578, i32 0, i32 3
  %1584 = load ptr, ptr %1583, align 8
  %1585 = getelementptr i8, ptr %1584, i32 %1580
  %1586 = add i32 %1580, 8
  store i32 %1586, ptr %1579, align 8
  br label %1591

1587:                                             ; preds = %1577
  %1588 = getelementptr inbounds %struct.__va_list_tag, ptr %1578, i32 0, i32 2
  %1589 = load ptr, ptr %1588, align 8
  %1590 = getelementptr i8, ptr %1589, i32 8
  store ptr %1590, ptr %1588, align 8
  br label %1591

1591:                                             ; preds = %1587, %1582
  %1592 = phi ptr [ %1585, %1582 ], [ %1589, %1587 ]
  %1593 = load i64, ptr %1592, align 8, !tbaa !18
  store i64 %1593, ptr %39, align 8, !tbaa !18
  %1594 = load i64, ptr %39, align 8, !tbaa !18
  store i64 %1594, ptr %31, align 8, !tbaa !18
  %1595 = load ptr, ptr %13, align 8, !tbaa !5
  %1596 = getelementptr inbounds i8, ptr %1595, i64 0
  %1597 = load i8, ptr %1596, align 1, !tbaa !11
  %1598 = sext i8 %1597 to i32
  %1599 = icmp ne i32 %1598, 117
  br i1 %1599, label %1600, label %1608

1600:                                             ; preds = %1591
  %1601 = load i64, ptr %39, align 8, !tbaa !18
  %1602 = icmp slt i64 %1601, 0
  br i1 %1602, label %1603, label %1608

1603:                                             ; preds = %1600
  %1604 = load i64, ptr %39, align 8, !tbaa !18
  %1605 = sub nsw i64 0, %1604
  store i64 %1605, ptr %31, align 8, !tbaa !18
  %1606 = load i32, ptr %18, align 4, !tbaa !9
  %1607 = or i32 %1606, 128
  store i32 %1607, ptr %18, align 4, !tbaa !9
  br label %1608

1608:                                             ; preds = %1603, %1600, %1591
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #2
  br label %1643

1609:                                             ; preds = %1573
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #2
  %1610 = load ptr, ptr %11, align 8, !tbaa !5
  %1611 = getelementptr inbounds %struct.__va_list_tag, ptr %1610, i32 0, i32 0
  %1612 = load i32, ptr %1611, align 8
  %1613 = icmp ule i32 %1612, 40
  br i1 %1613, label %1614, label %1619

1614:                                             ; preds = %1609
  %1615 = getelementptr inbounds %struct.__va_list_tag, ptr %1610, i32 0, i32 3
  %1616 = load ptr, ptr %1615, align 8
  %1617 = getelementptr i8, ptr %1616, i32 %1612
  %1618 = add i32 %1612, 8
  store i32 %1618, ptr %1611, align 8
  br label %1623

1619:                                             ; preds = %1609
  %1620 = getelementptr inbounds %struct.__va_list_tag, ptr %1610, i32 0, i32 2
  %1621 = load ptr, ptr %1620, align 8
  %1622 = getelementptr i8, ptr %1621, i32 8
  store ptr %1622, ptr %1620, align 8
  br label %1623

1623:                                             ; preds = %1619, %1614
  %1624 = phi ptr [ %1617, %1614 ], [ %1621, %1619 ]
  %1625 = load i32, ptr %1624, align 4, !tbaa !9
  store i32 %1625, ptr %40, align 4, !tbaa !9
  %1626 = load i32, ptr %40, align 4, !tbaa !9
  %1627 = zext i32 %1626 to i64
  store i64 %1627, ptr %31, align 8, !tbaa !18
  %1628 = load ptr, ptr %13, align 8, !tbaa !5
  %1629 = getelementptr inbounds i8, ptr %1628, i64 0
  %1630 = load i8, ptr %1629, align 1, !tbaa !11
  %1631 = sext i8 %1630 to i32
  %1632 = icmp ne i32 %1631, 117
  br i1 %1632, label %1633, label %1642

1633:                                             ; preds = %1623
  %1634 = load i32, ptr %40, align 4, !tbaa !9
  %1635 = icmp slt i32 %1634, 0
  br i1 %1635, label %1636, label %1642

1636:                                             ; preds = %1633
  %1637 = load i32, ptr %40, align 4, !tbaa !9
  %1638 = sub nsw i32 0, %1637
  %1639 = zext i32 %1638 to i64
  store i64 %1639, ptr %31, align 8, !tbaa !18
  %1640 = load i32, ptr %18, align 4, !tbaa !9
  %1641 = or i32 %1640, 128
  store i32 %1641, ptr %18, align 4, !tbaa !9
  br label %1642

1642:                                             ; preds = %1636, %1633, %1623
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #2
  br label %1643

1643:                                             ; preds = %1642, %1608
  %1644 = load i32, ptr %18, align 4, !tbaa !9
  %1645 = and i32 %1644, 256
  %1646 = icmp ne i32 %1645, 0
  br i1 %1646, label %1647, label %1659

1647:                                             ; preds = %1643
  %1648 = load i64, ptr %31, align 8, !tbaa !18
  %1649 = icmp ult i64 %1648, 1024
  br i1 %1649, label %1650, label %1651

1650:                                             ; preds = %1647
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %1656

1651:                                             ; preds = %1647
  %1652 = load i32, ptr %16, align 4, !tbaa !9
  %1653 = icmp eq i32 %1652, -1
  br i1 %1653, label %1654, label %1655

1654:                                             ; preds = %1651
  store i32 1, ptr %16, align 4, !tbaa !9
  br label %1655

1655:                                             ; preds = %1654, %1651
  br label %1656

1656:                                             ; preds = %1655, %1650
  %1657 = load i64, ptr %31, align 8, !tbaa !18
  %1658 = sitofp i64 %1657 to double
  store double %1658, ptr %32, align 8, !tbaa !16
  br label %986

1659:                                             ; preds = %1643
  %1660 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %1661 = getelementptr inbounds i8, ptr %1660, i64 512
  store ptr %1661, ptr %26, align 8, !tbaa !5
  store i32 0, ptr %28, align 4, !tbaa !9
  br label %1662

1662:                                             ; preds = %1771, %1659
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #2
  %1663 = load ptr, ptr %26, align 8, !tbaa !5
  %1664 = getelementptr inbounds i8, ptr %1663, i64 -8
  store ptr %1664, ptr %41, align 8, !tbaa !5
  %1665 = load i64, ptr %31, align 8, !tbaa !18
  %1666 = icmp uge i64 %1665, 100000000
  br i1 %1666, label %1667, label %1673

1667:                                             ; preds = %1662
  %1668 = load i64, ptr %31, align 8, !tbaa !18
  %1669 = urem i64 %1668, 100000000
  %1670 = trunc i64 %1669 to i32
  store i32 %1670, ptr %29, align 4, !tbaa !9
  %1671 = load i64, ptr %31, align 8, !tbaa !18
  %1672 = udiv i64 %1671, 100000000
  store i64 %1672, ptr %31, align 8, !tbaa !18
  br label %1676

1673:                                             ; preds = %1662
  %1674 = load i64, ptr %31, align 8, !tbaa !18
  %1675 = trunc i64 %1674 to i32
  store i32 %1675, ptr %29, align 4, !tbaa !9
  store i64 0, ptr %31, align 8, !tbaa !18
  br label %1676

1676:                                             ; preds = %1673, %1667
  %1677 = load i32, ptr %18, align 4, !tbaa !9
  %1678 = and i32 %1677, 64
  %1679 = icmp eq i32 %1678, 0
  br i1 %1679, label %1680, label %1697

1680:                                             ; preds = %1676
  br label %1681

1681:                                             ; preds = %1693, %1680
  %1682 = load ptr, ptr %26, align 8, !tbaa !5
  %1683 = getelementptr inbounds i8, ptr %1682, i64 -2
  store ptr %1683, ptr %26, align 8, !tbaa !5
  %1684 = load i32, ptr %29, align 4, !tbaa !9
  %1685 = urem i32 %1684, 100
  %1686 = mul i32 %1685, 2
  %1687 = zext i32 %1686 to i64
  %1688 = getelementptr inbounds [201 x i8], ptr getelementptr inbounds (%struct.anon, ptr @stbsp__digitpair, i32 0, i32 1), i64 0, i64 %1687
  %1689 = load i16, ptr %1688, align 1, !tbaa !32
  %1690 = load ptr, ptr %26, align 8, !tbaa !5
  store i16 %1689, ptr %1690, align 2, !tbaa !32
  %1691 = load i32, ptr %29, align 4, !tbaa !9
  %1692 = udiv i32 %1691, 100
  store i32 %1692, ptr %29, align 4, !tbaa !9
  br label %1693

1693:                                             ; preds = %1681
  %1694 = load i32, ptr %29, align 4, !tbaa !9
  %1695 = icmp ne i32 %1694, 0
  br i1 %1695, label %1681, label %1696, !llvm.loop !34

1696:                                             ; preds = %1693
  br label %1697

1697:                                             ; preds = %1696, %1676
  br label %1698

1698:                                             ; preds = %1726, %1697
  %1699 = load i32, ptr %29, align 4, !tbaa !9
  %1700 = icmp ne i32 %1699, 0
  br i1 %1700, label %1701, label %1727

1701:                                             ; preds = %1698
  %1702 = load i32, ptr %18, align 4, !tbaa !9
  %1703 = and i32 %1702, 64
  %1704 = icmp ne i32 %1703, 0
  br i1 %1704, label %1705, label %1715

1705:                                             ; preds = %1701
  %1706 = load i32, ptr %28, align 4, !tbaa !9
  %1707 = add i32 %1706, 1
  store i32 %1707, ptr %28, align 4, !tbaa !9
  %1708 = icmp eq i32 %1706, 3
  br i1 %1708, label %1709, label %1715

1709:                                             ; preds = %1705
  store i32 0, ptr %28, align 4, !tbaa !9
  %1710 = load i8, ptr @stbsp__comma, align 1, !tbaa !11
  %1711 = load ptr, ptr %26, align 8, !tbaa !5
  %1712 = getelementptr inbounds i8, ptr %1711, i32 -1
  store ptr %1712, ptr %26, align 8, !tbaa !5
  store i8 %1710, ptr %1712, align 1, !tbaa !11
  %1713 = load ptr, ptr %41, align 8, !tbaa !5
  %1714 = getelementptr inbounds i8, ptr %1713, i32 -1
  store ptr %1714, ptr %41, align 8, !tbaa !5
  br label %1726

1715:                                             ; preds = %1705, %1701
  %1716 = load i32, ptr %29, align 4, !tbaa !9
  %1717 = urem i32 %1716, 10
  %1718 = trunc i32 %1717 to i8
  %1719 = sext i8 %1718 to i32
  %1720 = add nsw i32 %1719, 48
  %1721 = trunc i32 %1720 to i8
  %1722 = load ptr, ptr %26, align 8, !tbaa !5
  %1723 = getelementptr inbounds i8, ptr %1722, i32 -1
  store ptr %1723, ptr %26, align 8, !tbaa !5
  store i8 %1721, ptr %1723, align 1, !tbaa !11
  %1724 = load i32, ptr %29, align 4, !tbaa !9
  %1725 = udiv i32 %1724, 10
  store i32 %1725, ptr %29, align 4, !tbaa !9
  br label %1726

1726:                                             ; preds = %1715, %1709
  br label %1698, !llvm.loop !35

1727:                                             ; preds = %1698
  %1728 = load i64, ptr %31, align 8, !tbaa !18
  %1729 = icmp eq i64 %1728, 0
  br i1 %1729, label %1730, label %1745

1730:                                             ; preds = %1727
  %1731 = load ptr, ptr %26, align 8, !tbaa !5
  %1732 = getelementptr inbounds i8, ptr %1731, i64 0
  %1733 = load i8, ptr %1732, align 1, !tbaa !11
  %1734 = sext i8 %1733 to i32
  %1735 = icmp eq i32 %1734, 48
  br i1 %1735, label %1736, label %1744

1736:                                             ; preds = %1730
  %1737 = load ptr, ptr %26, align 8, !tbaa !5
  %1738 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %1739 = getelementptr inbounds i8, ptr %1738, i64 512
  %1740 = icmp ne ptr %1737, %1739
  br i1 %1740, label %1741, label %1744

1741:                                             ; preds = %1736
  %1742 = load ptr, ptr %26, align 8, !tbaa !5
  %1743 = getelementptr inbounds i8, ptr %1742, i32 1
  store ptr %1743, ptr %26, align 8, !tbaa !5
  br label %1744

1744:                                             ; preds = %1741, %1736, %1730
  store i32 66, ptr %20, align 4
  br label %1769

1745:                                             ; preds = %1727
  br label %1746

1746:                                             ; preds = %1767, %1745
  %1747 = load ptr, ptr %26, align 8, !tbaa !5
  %1748 = load ptr, ptr %41, align 8, !tbaa !5
  %1749 = icmp ne ptr %1747, %1748
  br i1 %1749, label %1750, label %1768

1750:                                             ; preds = %1746
  %1751 = load i32, ptr %18, align 4, !tbaa !9
  %1752 = and i32 %1751, 64
  %1753 = icmp ne i32 %1752, 0
  br i1 %1753, label %1754, label %1764

1754:                                             ; preds = %1750
  %1755 = load i32, ptr %28, align 4, !tbaa !9
  %1756 = add i32 %1755, 1
  store i32 %1756, ptr %28, align 4, !tbaa !9
  %1757 = icmp eq i32 %1755, 3
  br i1 %1757, label %1758, label %1764

1758:                                             ; preds = %1754
  store i32 0, ptr %28, align 4, !tbaa !9
  %1759 = load i8, ptr @stbsp__comma, align 1, !tbaa !11
  %1760 = load ptr, ptr %26, align 8, !tbaa !5
  %1761 = getelementptr inbounds i8, ptr %1760, i32 -1
  store ptr %1761, ptr %26, align 8, !tbaa !5
  store i8 %1759, ptr %1761, align 1, !tbaa !11
  %1762 = load ptr, ptr %41, align 8, !tbaa !5
  %1763 = getelementptr inbounds i8, ptr %1762, i32 -1
  store ptr %1763, ptr %41, align 8, !tbaa !5
  br label %1767

1764:                                             ; preds = %1754, %1750
  %1765 = load ptr, ptr %26, align 8, !tbaa !5
  %1766 = getelementptr inbounds i8, ptr %1765, i32 -1
  store ptr %1766, ptr %26, align 8, !tbaa !5
  store i8 48, ptr %1766, align 1, !tbaa !11
  br label %1767

1767:                                             ; preds = %1764, %1758
  br label %1746, !llvm.loop !36

1768:                                             ; preds = %1746
  store i32 0, ptr %20, align 4
  br label %1769

1769:                                             ; preds = %1768, %1744
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #2
  %1770 = load i32, ptr %20, align 4
  switch i32 %1770, label %2650 [
    i32 0, label %1771
    i32 66, label %1772
  ]

1771:                                             ; preds = %1769
  br label %1662

1772:                                             ; preds = %1769
  %1773 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 0
  store i8 0, ptr %1773, align 1, !tbaa !11
  %1774 = load i32, ptr %18, align 4, !tbaa !9
  %1775 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  call void @stbsp__lead_sign(i32 noundef %1774, ptr noundef %1775)
  %1776 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %1777 = getelementptr inbounds i8, ptr %1776, i64 512
  %1778 = load ptr, ptr %26, align 8, !tbaa !5
  %1779 = ptrtoint ptr %1777 to i64
  %1780 = ptrtoint ptr %1778 to i64
  %1781 = sub i64 %1779, %1780
  %1782 = trunc i64 %1781 to i32
  store i32 %1782, ptr %28, align 4, !tbaa !9
  %1783 = load i32, ptr %28, align 4, !tbaa !9
  %1784 = icmp eq i32 %1783, 0
  br i1 %1784, label %1785, label %1788

1785:                                             ; preds = %1772
  %1786 = load ptr, ptr %26, align 8, !tbaa !5
  %1787 = getelementptr inbounds i8, ptr %1786, i32 -1
  store ptr %1787, ptr %26, align 8, !tbaa !5
  store i8 48, ptr %1787, align 1, !tbaa !11
  store i32 1, ptr %28, align 4, !tbaa !9
  br label %1788

1788:                                             ; preds = %1785, %1772
  %1789 = load i32, ptr %28, align 4, !tbaa !9
  %1790 = add i32 %1789, 50331648
  store i32 %1790, ptr %30, align 4, !tbaa !9
  %1791 = load i32, ptr %16, align 4, !tbaa !9
  %1792 = icmp slt i32 %1791, 0
  br i1 %1792, label %1793, label %1794

1793:                                             ; preds = %1788
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %1794

1794:                                             ; preds = %1793, %1788
  br label %1795

1795:                                             ; preds = %2591, %1794, %1553, %1498, %1385, %1036, %885, %702, %495, %473
  %1796 = load i32, ptr %16, align 4, !tbaa !9
  %1797 = load i32, ptr %28, align 4, !tbaa !9
  %1798 = icmp slt i32 %1796, %1797
  br i1 %1798, label %1799, label %1801

1799:                                             ; preds = %1795
  %1800 = load i32, ptr %28, align 4, !tbaa !9
  store i32 %1800, ptr %16, align 4, !tbaa !9
  br label %1801

1801:                                             ; preds = %1799, %1795
  %1802 = load i32, ptr %16, align 4, !tbaa !9
  %1803 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  %1804 = load i8, ptr %1803, align 1, !tbaa !11
  %1805 = sext i8 %1804 to i32
  %1806 = add nsw i32 %1802, %1805
  %1807 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 0
  %1808 = load i8, ptr %1807, align 1, !tbaa !11
  %1809 = sext i8 %1808 to i32
  %1810 = add nsw i32 %1806, %1809
  %1811 = load i32, ptr %17, align 4, !tbaa !9
  %1812 = add nsw i32 %1810, %1811
  store i32 %1812, ptr %29, align 4, !tbaa !9
  %1813 = load i32, ptr %15, align 4, !tbaa !9
  %1814 = load i32, ptr %29, align 4, !tbaa !9
  %1815 = icmp slt i32 %1813, %1814
  br i1 %1815, label %1816, label %1818

1816:                                             ; preds = %1801
  %1817 = load i32, ptr %29, align 4, !tbaa !9
  store i32 %1817, ptr %15, align 4, !tbaa !9
  br label %1818

1818:                                             ; preds = %1816, %1801
  %1819 = load i32, ptr %29, align 4, !tbaa !9
  %1820 = load i32, ptr %15, align 4, !tbaa !9
  %1821 = sub i32 %1820, %1819
  store i32 %1821, ptr %15, align 4, !tbaa !9
  %1822 = load i32, ptr %28, align 4, !tbaa !9
  %1823 = load i32, ptr %16, align 4, !tbaa !9
  %1824 = sub i32 %1823, %1822
  store i32 %1824, ptr %16, align 4, !tbaa !9
  %1825 = load i32, ptr %18, align 4, !tbaa !9
  %1826 = and i32 %1825, 1
  %1827 = icmp eq i32 %1826, 0
  br i1 %1827, label %1828, label %1846

1828:                                             ; preds = %1818
  %1829 = load i32, ptr %18, align 4, !tbaa !9
  %1830 = and i32 %1829, 16
  %1831 = icmp ne i32 %1830, 0
  br i1 %1831, label %1832, label %1842

1832:                                             ; preds = %1828
  %1833 = load i32, ptr %15, align 4, !tbaa !9
  %1834 = load i32, ptr %16, align 4, !tbaa !9
  %1835 = icmp sgt i32 %1833, %1834
  br i1 %1835, label %1836, label %1838

1836:                                             ; preds = %1832
  %1837 = load i32, ptr %15, align 4, !tbaa !9
  br label %1840

1838:                                             ; preds = %1832
  %1839 = load i32, ptr %16, align 4, !tbaa !9
  br label %1840

1840:                                             ; preds = %1838, %1836
  %1841 = phi i32 [ %1837, %1836 ], [ %1839, %1838 ]
  store i32 %1841, ptr %16, align 4, !tbaa !9
  store i32 0, ptr %15, align 4, !tbaa !9
  br label %1845

1842:                                             ; preds = %1828
  %1843 = load i32, ptr %18, align 4, !tbaa !9
  %1844 = and i32 %1843, -65
  store i32 %1844, ptr %18, align 4, !tbaa !9
  br label %1845

1845:                                             ; preds = %1842, %1840
  br label %1846

1846:                                             ; preds = %1845, %1818
  %1847 = load i32, ptr %15, align 4, !tbaa !9
  %1848 = load i32, ptr %16, align 4, !tbaa !9
  %1849 = add nsw i32 %1847, %1848
  %1850 = icmp ne i32 %1849, 0
  br i1 %1850, label %1851, label %2153

1851:                                             ; preds = %1846
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #2
  %1852 = load i32, ptr %18, align 4, !tbaa !9
  %1853 = and i32 %1852, 1
  %1854 = icmp eq i32 %1853, 0
  br i1 %1854, label %1855, label %1945

1855:                                             ; preds = %1851
  br label %1856

1856:                                             ; preds = %1943, %1855
  %1857 = load i32, ptr %15, align 4, !tbaa !9
  %1858 = icmp sgt i32 %1857, 0
  br i1 %1858, label %1859, label %1944

1859:                                             ; preds = %1856
  %1860 = load i32, ptr %15, align 4, !tbaa !9
  store i32 %1860, ptr %42, align 4, !tbaa !9
  %1861 = load ptr, ptr %7, align 8, !tbaa !5
  %1862 = icmp ne ptr %1861, null
  br i1 %1862, label %1863, label %1877

1863:                                             ; preds = %1859
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #2
  %1864 = load ptr, ptr %12, align 8, !tbaa !5
  %1865 = load ptr, ptr %9, align 8, !tbaa !5
  %1866 = ptrtoint ptr %1864 to i64
  %1867 = ptrtoint ptr %1865 to i64
  %1868 = sub i64 %1866, %1867
  %1869 = trunc i64 %1868 to i32
  %1870 = sub nsw i32 512, %1869
  store i32 %1870, ptr %44, align 4, !tbaa !9
  %1871 = load i32, ptr %42, align 4, !tbaa !9
  %1872 = load i32, ptr %44, align 4, !tbaa !9
  %1873 = icmp sgt i32 %1871, %1872
  br i1 %1873, label %1874, label %1876

1874:                                             ; preds = %1863
  %1875 = load i32, ptr %44, align 4, !tbaa !9
  store i32 %1875, ptr %42, align 4, !tbaa !9
  br label %1876

1876:                                             ; preds = %1874, %1863
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #2
  br label %1877

1877:                                             ; preds = %1876, %1859
  %1878 = load i32, ptr %42, align 4, !tbaa !9
  %1879 = load i32, ptr %15, align 4, !tbaa !9
  %1880 = sub nsw i32 %1879, %1878
  store i32 %1880, ptr %15, align 4, !tbaa !9
  br label %1881

1881:                                             ; preds = %1890, %1877
  %1882 = load i32, ptr %42, align 4, !tbaa !9
  %1883 = icmp ne i32 %1882, 0
  br i1 %1883, label %1884, label %1895

1884:                                             ; preds = %1881
  %1885 = load ptr, ptr %12, align 8, !tbaa !5
  %1886 = ptrtoint ptr %1885 to i64
  %1887 = and i64 %1886, 3
  %1888 = icmp eq i64 %1887, 0
  br i1 %1888, label %1889, label %1890

1889:                                             ; preds = %1884
  br label %1895

1890:                                             ; preds = %1884
  %1891 = load ptr, ptr %12, align 8, !tbaa !5
  %1892 = getelementptr inbounds i8, ptr %1891, i32 1
  store ptr %1892, ptr %12, align 8, !tbaa !5
  store i8 32, ptr %1891, align 1, !tbaa !11
  %1893 = load i32, ptr %42, align 4, !tbaa !9
  %1894 = add nsw i32 %1893, -1
  store i32 %1894, ptr %42, align 4, !tbaa !9
  br label %1881, !llvm.loop !37

1895:                                             ; preds = %1889, %1881
  br label %1896

1896:                                             ; preds = %1899, %1895
  %1897 = load i32, ptr %42, align 4, !tbaa !9
  %1898 = icmp sge i32 %1897, 4
  br i1 %1898, label %1899, label %1905

1899:                                             ; preds = %1896
  %1900 = load ptr, ptr %12, align 8, !tbaa !5
  store i32 538976288, ptr %1900, align 4, !tbaa !9
  %1901 = load ptr, ptr %12, align 8, !tbaa !5
  %1902 = getelementptr inbounds i8, ptr %1901, i64 4
  store ptr %1902, ptr %12, align 8, !tbaa !5
  %1903 = load i32, ptr %42, align 4, !tbaa !9
  %1904 = sub nsw i32 %1903, 4
  store i32 %1904, ptr %42, align 4, !tbaa !9
  br label %1896, !llvm.loop !38

1905:                                             ; preds = %1896
  br label %1906

1906:                                             ; preds = %1909, %1905
  %1907 = load i32, ptr %42, align 4, !tbaa !9
  %1908 = icmp ne i32 %1907, 0
  br i1 %1908, label %1909, label %1914

1909:                                             ; preds = %1906
  %1910 = load ptr, ptr %12, align 8, !tbaa !5
  %1911 = getelementptr inbounds i8, ptr %1910, i32 1
  store ptr %1911, ptr %12, align 8, !tbaa !5
  store i8 32, ptr %1910, align 1, !tbaa !11
  %1912 = load i32, ptr %42, align 4, !tbaa !9
  %1913 = add nsw i32 %1912, -1
  store i32 %1913, ptr %42, align 4, !tbaa !9
  br label %1906, !llvm.loop !39

1914:                                             ; preds = %1906
  %1915 = load ptr, ptr %7, align 8, !tbaa !5
  %1916 = icmp ne ptr %1915, null
  br i1 %1916, label %1917, label %1943

1917:                                             ; preds = %1914
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #2
  %1918 = load ptr, ptr %12, align 8, !tbaa !5
  %1919 = load ptr, ptr %9, align 8, !tbaa !5
  %1920 = ptrtoint ptr %1918 to i64
  %1921 = ptrtoint ptr %1919 to i64
  %1922 = sub i64 %1920, %1921
  %1923 = trunc i64 %1922 to i32
  store i32 %1923, ptr %45, align 4, !tbaa !9
  %1924 = load i32, ptr %45, align 4, !tbaa !9
  %1925 = add nsw i32 %1924, 1
  %1926 = icmp sge i32 %1925, 512
  br i1 %1926, label %1927, label %1939

1927:                                             ; preds = %1917
  %1928 = load i32, ptr %45, align 4, !tbaa !9
  %1929 = load i32, ptr %14, align 4, !tbaa !9
  %1930 = add nsw i32 %1929, %1928
  store i32 %1930, ptr %14, align 4, !tbaa !9
  %1931 = load ptr, ptr %7, align 8, !tbaa !5
  %1932 = load ptr, ptr %9, align 8, !tbaa !5
  %1933 = load ptr, ptr %8, align 8, !tbaa !5
  %1934 = load i32, ptr %45, align 4, !tbaa !9
  %1935 = call ptr %1931(ptr noundef %1932, ptr noundef %1933, i32 noundef %1934)
  store ptr %1935, ptr %9, align 8, !tbaa !5
  store ptr %1935, ptr %12, align 8, !tbaa !5
  %1936 = icmp eq ptr null, %1935
  br i1 %1936, label %1937, label %1938

1937:                                             ; preds = %1927
  store i32 12, ptr %20, align 4
  br label %1940

1938:                                             ; preds = %1927
  br label %1939

1939:                                             ; preds = %1938, %1917
  store i32 0, ptr %20, align 4
  br label %1940

1940:                                             ; preds = %1939, %1937
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #2
  %1941 = load i32, ptr %20, align 4
  switch i32 %1941, label %2150 [
    i32 0, label %1942
  ]

1942:                                             ; preds = %1940
  br label %1943

1943:                                             ; preds = %1942, %1914
  br label %1856, !llvm.loop !40

1944:                                             ; preds = %1856
  br label %1945

1945:                                             ; preds = %1944, %1851
  %1946 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  %1947 = getelementptr inbounds i8, ptr %1946, i64 1
  store ptr %1947, ptr %34, align 8, !tbaa !5
  br label %1948

1948:                                             ; preds = %2021, %1945
  %1949 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  %1950 = load i8, ptr %1949, align 1, !tbaa !11
  %1951 = icmp ne i8 %1950, 0
  br i1 %1951, label %1952, label %2022

1952:                                             ; preds = %1948
  %1953 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  %1954 = load i8, ptr %1953, align 1, !tbaa !11
  %1955 = sext i8 %1954 to i32
  store i32 %1955, ptr %42, align 4, !tbaa !9
  %1956 = load ptr, ptr %7, align 8, !tbaa !5
  %1957 = icmp ne ptr %1956, null
  br i1 %1957, label %1958, label %1972

1958:                                             ; preds = %1952
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #2
  %1959 = load ptr, ptr %12, align 8, !tbaa !5
  %1960 = load ptr, ptr %9, align 8, !tbaa !5
  %1961 = ptrtoint ptr %1959 to i64
  %1962 = ptrtoint ptr %1960 to i64
  %1963 = sub i64 %1961, %1962
  %1964 = trunc i64 %1963 to i32
  %1965 = sub nsw i32 512, %1964
  store i32 %1965, ptr %46, align 4, !tbaa !9
  %1966 = load i32, ptr %42, align 4, !tbaa !9
  %1967 = load i32, ptr %46, align 4, !tbaa !9
  %1968 = icmp sgt i32 %1966, %1967
  br i1 %1968, label %1969, label %1971

1969:                                             ; preds = %1958
  %1970 = load i32, ptr %46, align 4, !tbaa !9
  store i32 %1970, ptr %42, align 4, !tbaa !9
  br label %1971

1971:                                             ; preds = %1969, %1958
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #2
  br label %1972

1972:                                             ; preds = %1971, %1952
  %1973 = load i32, ptr %42, align 4, !tbaa !9
  %1974 = trunc i32 %1973 to i8
  %1975 = sext i8 %1974 to i32
  %1976 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  %1977 = load i8, ptr %1976, align 1, !tbaa !11
  %1978 = sext i8 %1977 to i32
  %1979 = sub nsw i32 %1978, %1975
  %1980 = trunc i32 %1979 to i8
  store i8 %1980, ptr %1976, align 1, !tbaa !11
  br label %1981

1981:                                             ; preds = %1984, %1972
  %1982 = load i32, ptr %42, align 4, !tbaa !9
  %1983 = icmp ne i32 %1982, 0
  br i1 %1983, label %1984, label %1992

1984:                                             ; preds = %1981
  %1985 = load ptr, ptr %34, align 8, !tbaa !5
  %1986 = getelementptr inbounds i8, ptr %1985, i32 1
  store ptr %1986, ptr %34, align 8, !tbaa !5
  %1987 = load i8, ptr %1985, align 1, !tbaa !11
  %1988 = load ptr, ptr %12, align 8, !tbaa !5
  %1989 = getelementptr inbounds i8, ptr %1988, i32 1
  store ptr %1989, ptr %12, align 8, !tbaa !5
  store i8 %1987, ptr %1988, align 1, !tbaa !11
  %1990 = load i32, ptr %42, align 4, !tbaa !9
  %1991 = add nsw i32 %1990, -1
  store i32 %1991, ptr %42, align 4, !tbaa !9
  br label %1981, !llvm.loop !41

1992:                                             ; preds = %1981
  %1993 = load ptr, ptr %7, align 8, !tbaa !5
  %1994 = icmp ne ptr %1993, null
  br i1 %1994, label %1995, label %2021

1995:                                             ; preds = %1992
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #2
  %1996 = load ptr, ptr %12, align 8, !tbaa !5
  %1997 = load ptr, ptr %9, align 8, !tbaa !5
  %1998 = ptrtoint ptr %1996 to i64
  %1999 = ptrtoint ptr %1997 to i64
  %2000 = sub i64 %1998, %1999
  %2001 = trunc i64 %2000 to i32
  store i32 %2001, ptr %47, align 4, !tbaa !9
  %2002 = load i32, ptr %47, align 4, !tbaa !9
  %2003 = add nsw i32 %2002, 1
  %2004 = icmp sge i32 %2003, 512
  br i1 %2004, label %2005, label %2017

2005:                                             ; preds = %1995
  %2006 = load i32, ptr %47, align 4, !tbaa !9
  %2007 = load i32, ptr %14, align 4, !tbaa !9
  %2008 = add nsw i32 %2007, %2006
  store i32 %2008, ptr %14, align 4, !tbaa !9
  %2009 = load ptr, ptr %7, align 8, !tbaa !5
  %2010 = load ptr, ptr %9, align 8, !tbaa !5
  %2011 = load ptr, ptr %8, align 8, !tbaa !5
  %2012 = load i32, ptr %47, align 4, !tbaa !9
  %2013 = call ptr %2009(ptr noundef %2010, ptr noundef %2011, i32 noundef %2012)
  store ptr %2013, ptr %9, align 8, !tbaa !5
  store ptr %2013, ptr %12, align 8, !tbaa !5
  %2014 = icmp eq ptr null, %2013
  br i1 %2014, label %2015, label %2016

2015:                                             ; preds = %2005
  store i32 12, ptr %20, align 4
  br label %2018

2016:                                             ; preds = %2005
  br label %2017

2017:                                             ; preds = %2016, %1995
  store i32 0, ptr %20, align 4
  br label %2018

2018:                                             ; preds = %2017, %2015
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #2
  %2019 = load i32, ptr %20, align 4
  switch i32 %2019, label %2150 [
    i32 0, label %2020
  ]

2020:                                             ; preds = %2018
  br label %2021

2021:                                             ; preds = %2020, %1992
  br label %1948, !llvm.loop !42

2022:                                             ; preds = %1948
  %2023 = load i32, ptr %30, align 4, !tbaa !9
  %2024 = lshr i32 %2023, 24
  store i32 %2024, ptr %43, align 4, !tbaa !9
  %2025 = load i32, ptr %30, align 4, !tbaa !9
  %2026 = and i32 %2025, 16777215
  store i32 %2026, ptr %30, align 4, !tbaa !9
  %2027 = load i32, ptr %18, align 4, !tbaa !9
  %2028 = and i32 %2027, 64
  %2029 = icmp ne i32 %2028, 0
  br i1 %2029, label %2030, label %2039

2030:                                             ; preds = %2022
  %2031 = load i32, ptr %43, align 4, !tbaa !9
  %2032 = load i32, ptr %16, align 4, !tbaa !9
  %2033 = load i32, ptr %30, align 4, !tbaa !9
  %2034 = add i32 %2032, %2033
  %2035 = load i32, ptr %43, align 4, !tbaa !9
  %2036 = add i32 %2035, 1
  %2037 = urem i32 %2034, %2036
  %2038 = sub i32 %2031, %2037
  br label %2040

2039:                                             ; preds = %2022
  br label %2040

2040:                                             ; preds = %2039, %2030
  %2041 = phi i32 [ %2038, %2030 ], [ 0, %2039 ]
  store i32 %2041, ptr %30, align 4, !tbaa !9
  br label %2042

2042:                                             ; preds = %2148, %2040
  %2043 = load i32, ptr %16, align 4, !tbaa !9
  %2044 = icmp sgt i32 %2043, 0
  br i1 %2044, label %2045, label %2149

2045:                                             ; preds = %2042
  %2046 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %2046, ptr %42, align 4, !tbaa !9
  %2047 = load ptr, ptr %7, align 8, !tbaa !5
  %2048 = icmp ne ptr %2047, null
  br i1 %2048, label %2049, label %2063

2049:                                             ; preds = %2045
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #2
  %2050 = load ptr, ptr %12, align 8, !tbaa !5
  %2051 = load ptr, ptr %9, align 8, !tbaa !5
  %2052 = ptrtoint ptr %2050 to i64
  %2053 = ptrtoint ptr %2051 to i64
  %2054 = sub i64 %2052, %2053
  %2055 = trunc i64 %2054 to i32
  %2056 = sub nsw i32 512, %2055
  store i32 %2056, ptr %48, align 4, !tbaa !9
  %2057 = load i32, ptr %42, align 4, !tbaa !9
  %2058 = load i32, ptr %48, align 4, !tbaa !9
  %2059 = icmp sgt i32 %2057, %2058
  br i1 %2059, label %2060, label %2062

2060:                                             ; preds = %2049
  %2061 = load i32, ptr %48, align 4, !tbaa !9
  store i32 %2061, ptr %42, align 4, !tbaa !9
  br label %2062

2062:                                             ; preds = %2060, %2049
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #2
  br label %2063

2063:                                             ; preds = %2062, %2045
  %2064 = load i32, ptr %42, align 4, !tbaa !9
  %2065 = load i32, ptr %16, align 4, !tbaa !9
  %2066 = sub nsw i32 %2065, %2064
  store i32 %2066, ptr %16, align 4, !tbaa !9
  %2067 = load i32, ptr %18, align 4, !tbaa !9
  %2068 = and i32 %2067, 64
  %2069 = icmp eq i32 %2068, 0
  br i1 %2069, label %2070, label %2096

2070:                                             ; preds = %2063
  br label %2071

2071:                                             ; preds = %2080, %2070
  %2072 = load i32, ptr %42, align 4, !tbaa !9
  %2073 = icmp ne i32 %2072, 0
  br i1 %2073, label %2074, label %2085

2074:                                             ; preds = %2071
  %2075 = load ptr, ptr %12, align 8, !tbaa !5
  %2076 = ptrtoint ptr %2075 to i64
  %2077 = and i64 %2076, 3
  %2078 = icmp eq i64 %2077, 0
  br i1 %2078, label %2079, label %2080

2079:                                             ; preds = %2074
  br label %2085

2080:                                             ; preds = %2074
  %2081 = load ptr, ptr %12, align 8, !tbaa !5
  %2082 = getelementptr inbounds i8, ptr %2081, i32 1
  store ptr %2082, ptr %12, align 8, !tbaa !5
  store i8 48, ptr %2081, align 1, !tbaa !11
  %2083 = load i32, ptr %42, align 4, !tbaa !9
  %2084 = add nsw i32 %2083, -1
  store i32 %2084, ptr %42, align 4, !tbaa !9
  br label %2071, !llvm.loop !43

2085:                                             ; preds = %2079, %2071
  br label %2086

2086:                                             ; preds = %2089, %2085
  %2087 = load i32, ptr %42, align 4, !tbaa !9
  %2088 = icmp sge i32 %2087, 4
  br i1 %2088, label %2089, label %2095

2089:                                             ; preds = %2086
  %2090 = load ptr, ptr %12, align 8, !tbaa !5
  store i32 808464432, ptr %2090, align 4, !tbaa !9
  %2091 = load ptr, ptr %12, align 8, !tbaa !5
  %2092 = getelementptr inbounds i8, ptr %2091, i64 4
  store ptr %2092, ptr %12, align 8, !tbaa !5
  %2093 = load i32, ptr %42, align 4, !tbaa !9
  %2094 = sub nsw i32 %2093, 4
  store i32 %2094, ptr %42, align 4, !tbaa !9
  br label %2086, !llvm.loop !44

2095:                                             ; preds = %2086
  br label %2096

2096:                                             ; preds = %2095, %2063
  br label %2097

2097:                                             ; preds = %2116, %2096
  %2098 = load i32, ptr %42, align 4, !tbaa !9
  %2099 = icmp ne i32 %2098, 0
  br i1 %2099, label %2100, label %2119

2100:                                             ; preds = %2097
  %2101 = load i32, ptr %18, align 4, !tbaa !9
  %2102 = and i32 %2101, 64
  %2103 = icmp ne i32 %2102, 0
  br i1 %2103, label %2104, label %2113

2104:                                             ; preds = %2100
  %2105 = load i32, ptr %30, align 4, !tbaa !9
  %2106 = add i32 %2105, 1
  store i32 %2106, ptr %30, align 4, !tbaa !9
  %2107 = load i32, ptr %43, align 4, !tbaa !9
  %2108 = icmp eq i32 %2105, %2107
  br i1 %2108, label %2109, label %2113

2109:                                             ; preds = %2104
  store i32 0, ptr %30, align 4, !tbaa !9
  %2110 = load i8, ptr @stbsp__comma, align 1, !tbaa !11
  %2111 = load ptr, ptr %12, align 8, !tbaa !5
  %2112 = getelementptr inbounds i8, ptr %2111, i32 1
  store ptr %2112, ptr %12, align 8, !tbaa !5
  store i8 %2110, ptr %2111, align 1, !tbaa !11
  br label %2116

2113:                                             ; preds = %2104, %2100
  %2114 = load ptr, ptr %12, align 8, !tbaa !5
  %2115 = getelementptr inbounds i8, ptr %2114, i32 1
  store ptr %2115, ptr %12, align 8, !tbaa !5
  store i8 48, ptr %2114, align 1, !tbaa !11
  br label %2116

2116:                                             ; preds = %2113, %2109
  %2117 = load i32, ptr %42, align 4, !tbaa !9
  %2118 = add nsw i32 %2117, -1
  store i32 %2118, ptr %42, align 4, !tbaa !9
  br label %2097, !llvm.loop !45

2119:                                             ; preds = %2097
  %2120 = load ptr, ptr %7, align 8, !tbaa !5
  %2121 = icmp ne ptr %2120, null
  br i1 %2121, label %2122, label %2148

2122:                                             ; preds = %2119
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #2
  %2123 = load ptr, ptr %12, align 8, !tbaa !5
  %2124 = load ptr, ptr %9, align 8, !tbaa !5
  %2125 = ptrtoint ptr %2123 to i64
  %2126 = ptrtoint ptr %2124 to i64
  %2127 = sub i64 %2125, %2126
  %2128 = trunc i64 %2127 to i32
  store i32 %2128, ptr %49, align 4, !tbaa !9
  %2129 = load i32, ptr %49, align 4, !tbaa !9
  %2130 = add nsw i32 %2129, 1
  %2131 = icmp sge i32 %2130, 512
  br i1 %2131, label %2132, label %2144

2132:                                             ; preds = %2122
  %2133 = load i32, ptr %49, align 4, !tbaa !9
  %2134 = load i32, ptr %14, align 4, !tbaa !9
  %2135 = add nsw i32 %2134, %2133
  store i32 %2135, ptr %14, align 4, !tbaa !9
  %2136 = load ptr, ptr %7, align 8, !tbaa !5
  %2137 = load ptr, ptr %9, align 8, !tbaa !5
  %2138 = load ptr, ptr %8, align 8, !tbaa !5
  %2139 = load i32, ptr %49, align 4, !tbaa !9
  %2140 = call ptr %2136(ptr noundef %2137, ptr noundef %2138, i32 noundef %2139)
  store ptr %2140, ptr %9, align 8, !tbaa !5
  store ptr %2140, ptr %12, align 8, !tbaa !5
  %2141 = icmp eq ptr null, %2140
  br i1 %2141, label %2142, label %2143

2142:                                             ; preds = %2132
  store i32 12, ptr %20, align 4
  br label %2145

2143:                                             ; preds = %2132
  br label %2144

2144:                                             ; preds = %2143, %2122
  store i32 0, ptr %20, align 4
  br label %2145

2145:                                             ; preds = %2144, %2142
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #2
  %2146 = load i32, ptr %20, align 4
  switch i32 %2146, label %2150 [
    i32 0, label %2147
  ]

2147:                                             ; preds = %2145
  br label %2148

2148:                                             ; preds = %2147, %2119
  br label %2042, !llvm.loop !46

2149:                                             ; preds = %2042
  store i32 0, ptr %20, align 4
  br label %2150

2150:                                             ; preds = %2149, %2145, %2018, %1940
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #2
  %2151 = load i32, ptr %20, align 4
  switch i32 %2151, label %2604 [
    i32 0, label %2152
  ]

2152:                                             ; preds = %2150
  br label %2153

2153:                                             ; preds = %2152, %1846
  %2154 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  %2155 = getelementptr inbounds i8, ptr %2154, i64 1
  store ptr %2155, ptr %34, align 8, !tbaa !5
  br label %2156

2156:                                             ; preds = %2232, %2153
  %2157 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  %2158 = load i8, ptr %2157, align 1, !tbaa !11
  %2159 = icmp ne i8 %2158, 0
  br i1 %2159, label %2160, label %2233

2160:                                             ; preds = %2156
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #2
  %2161 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  %2162 = load i8, ptr %2161, align 1, !tbaa !11
  %2163 = sext i8 %2162 to i32
  store i32 %2163, ptr %50, align 4, !tbaa !9
  %2164 = load ptr, ptr %7, align 8, !tbaa !5
  %2165 = icmp ne ptr %2164, null
  br i1 %2165, label %2166, label %2180

2166:                                             ; preds = %2160
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #2
  %2167 = load ptr, ptr %12, align 8, !tbaa !5
  %2168 = load ptr, ptr %9, align 8, !tbaa !5
  %2169 = ptrtoint ptr %2167 to i64
  %2170 = ptrtoint ptr %2168 to i64
  %2171 = sub i64 %2169, %2170
  %2172 = trunc i64 %2171 to i32
  %2173 = sub nsw i32 512, %2172
  store i32 %2173, ptr %51, align 4, !tbaa !9
  %2174 = load i32, ptr %50, align 4, !tbaa !9
  %2175 = load i32, ptr %51, align 4, !tbaa !9
  %2176 = icmp sgt i32 %2174, %2175
  br i1 %2176, label %2177, label %2179

2177:                                             ; preds = %2166
  %2178 = load i32, ptr %51, align 4, !tbaa !9
  store i32 %2178, ptr %50, align 4, !tbaa !9
  br label %2179

2179:                                             ; preds = %2177, %2166
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #2
  br label %2180

2180:                                             ; preds = %2179, %2160
  %2181 = load i32, ptr %50, align 4, !tbaa !9
  %2182 = trunc i32 %2181 to i8
  %2183 = sext i8 %2182 to i32
  %2184 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  %2185 = load i8, ptr %2184, align 1, !tbaa !11
  %2186 = sext i8 %2185 to i32
  %2187 = sub nsw i32 %2186, %2183
  %2188 = trunc i32 %2187 to i8
  store i8 %2188, ptr %2184, align 1, !tbaa !11
  br label %2189

2189:                                             ; preds = %2192, %2180
  %2190 = load i32, ptr %50, align 4, !tbaa !9
  %2191 = icmp ne i32 %2190, 0
  br i1 %2191, label %2192, label %2200

2192:                                             ; preds = %2189
  %2193 = load ptr, ptr %34, align 8, !tbaa !5
  %2194 = getelementptr inbounds i8, ptr %2193, i32 1
  store ptr %2194, ptr %34, align 8, !tbaa !5
  %2195 = load i8, ptr %2193, align 1, !tbaa !11
  %2196 = load ptr, ptr %12, align 8, !tbaa !5
  %2197 = getelementptr inbounds i8, ptr %2196, i32 1
  store ptr %2197, ptr %12, align 8, !tbaa !5
  store i8 %2195, ptr %2196, align 1, !tbaa !11
  %2198 = load i32, ptr %50, align 4, !tbaa !9
  %2199 = add nsw i32 %2198, -1
  store i32 %2199, ptr %50, align 4, !tbaa !9
  br label %2189, !llvm.loop !47

2200:                                             ; preds = %2189
  %2201 = load ptr, ptr %7, align 8, !tbaa !5
  %2202 = icmp ne ptr %2201, null
  br i1 %2202, label %2203, label %2229

2203:                                             ; preds = %2200
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #2
  %2204 = load ptr, ptr %12, align 8, !tbaa !5
  %2205 = load ptr, ptr %9, align 8, !tbaa !5
  %2206 = ptrtoint ptr %2204 to i64
  %2207 = ptrtoint ptr %2205 to i64
  %2208 = sub i64 %2206, %2207
  %2209 = trunc i64 %2208 to i32
  store i32 %2209, ptr %52, align 4, !tbaa !9
  %2210 = load i32, ptr %52, align 4, !tbaa !9
  %2211 = add nsw i32 %2210, 1
  %2212 = icmp sge i32 %2211, 512
  br i1 %2212, label %2213, label %2225

2213:                                             ; preds = %2203
  %2214 = load i32, ptr %52, align 4, !tbaa !9
  %2215 = load i32, ptr %14, align 4, !tbaa !9
  %2216 = add nsw i32 %2215, %2214
  store i32 %2216, ptr %14, align 4, !tbaa !9
  %2217 = load ptr, ptr %7, align 8, !tbaa !5
  %2218 = load ptr, ptr %9, align 8, !tbaa !5
  %2219 = load ptr, ptr %8, align 8, !tbaa !5
  %2220 = load i32, ptr %52, align 4, !tbaa !9
  %2221 = call ptr %2217(ptr noundef %2218, ptr noundef %2219, i32 noundef %2220)
  store ptr %2221, ptr %9, align 8, !tbaa !5
  store ptr %2221, ptr %12, align 8, !tbaa !5
  %2222 = icmp eq ptr null, %2221
  br i1 %2222, label %2223, label %2224

2223:                                             ; preds = %2213
  store i32 12, ptr %20, align 4
  br label %2226

2224:                                             ; preds = %2213
  br label %2225

2225:                                             ; preds = %2224, %2203
  store i32 0, ptr %20, align 4
  br label %2226

2226:                                             ; preds = %2225, %2223
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #2
  %2227 = load i32, ptr %20, align 4
  switch i32 %2227, label %2230 [
    i32 0, label %2228
  ]

2228:                                             ; preds = %2226
  br label %2229

2229:                                             ; preds = %2228, %2200
  store i32 0, ptr %20, align 4
  br label %2230

2230:                                             ; preds = %2229, %2226
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #2
  %2231 = load i32, ptr %20, align 4
  switch i32 %2231, label %2604 [
    i32 0, label %2232
  ]

2232:                                             ; preds = %2230
  br label %2156, !llvm.loop !48

2233:                                             ; preds = %2156
  %2234 = load i32, ptr %28, align 4, !tbaa !9
  store i32 %2234, ptr %29, align 4, !tbaa !9
  br label %2235

2235:                                             ; preds = %2317, %2233
  %2236 = load i32, ptr %29, align 4, !tbaa !9
  %2237 = icmp ne i32 %2236, 0
  br i1 %2237, label %2238, label %2318

2238:                                             ; preds = %2235
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #2
  %2239 = load i32, ptr %29, align 4, !tbaa !9
  store i32 %2239, ptr %53, align 4, !tbaa !9
  %2240 = load ptr, ptr %7, align 8, !tbaa !5
  %2241 = icmp ne ptr %2240, null
  br i1 %2241, label %2242, label %2256

2242:                                             ; preds = %2238
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #2
  %2243 = load ptr, ptr %12, align 8, !tbaa !5
  %2244 = load ptr, ptr %9, align 8, !tbaa !5
  %2245 = ptrtoint ptr %2243 to i64
  %2246 = ptrtoint ptr %2244 to i64
  %2247 = sub i64 %2245, %2246
  %2248 = trunc i64 %2247 to i32
  %2249 = sub nsw i32 512, %2248
  store i32 %2249, ptr %54, align 4, !tbaa !9
  %2250 = load i32, ptr %53, align 4, !tbaa !9
  %2251 = load i32, ptr %54, align 4, !tbaa !9
  %2252 = icmp sgt i32 %2250, %2251
  br i1 %2252, label %2253, label %2255

2253:                                             ; preds = %2242
  %2254 = load i32, ptr %54, align 4, !tbaa !9
  store i32 %2254, ptr %53, align 4, !tbaa !9
  br label %2255

2255:                                             ; preds = %2253, %2242
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #2
  br label %2256

2256:                                             ; preds = %2255, %2238
  %2257 = load i32, ptr %53, align 4, !tbaa !9
  %2258 = load i32, ptr %29, align 4, !tbaa !9
  %2259 = sub i32 %2258, %2257
  store i32 %2259, ptr %29, align 4, !tbaa !9
  br label %2260

2260:                                             ; preds = %2263, %2256
  %2261 = load i32, ptr %53, align 4, !tbaa !9
  %2262 = icmp sge i32 %2261, 4
  br i1 %2262, label %2263, label %2273

2263:                                             ; preds = %2260
  %2264 = load ptr, ptr %26, align 8, !tbaa !5
  %2265 = load volatile i32, ptr %2264, align 4, !tbaa !9
  %2266 = load ptr, ptr %12, align 8, !tbaa !5
  store volatile i32 %2265, ptr %2266, align 4, !tbaa !9
  %2267 = load ptr, ptr %12, align 8, !tbaa !5
  %2268 = getelementptr inbounds i8, ptr %2267, i64 4
  store ptr %2268, ptr %12, align 8, !tbaa !5
  %2269 = load ptr, ptr %26, align 8, !tbaa !5
  %2270 = getelementptr inbounds i8, ptr %2269, i64 4
  store ptr %2270, ptr %26, align 8, !tbaa !5
  %2271 = load i32, ptr %53, align 4, !tbaa !9
  %2272 = sub nsw i32 %2271, 4
  store i32 %2272, ptr %53, align 4, !tbaa !9
  br label %2260, !llvm.loop !49

2273:                                             ; preds = %2260
  br label %2274

2274:                                             ; preds = %2277, %2273
  %2275 = load i32, ptr %53, align 4, !tbaa !9
  %2276 = icmp ne i32 %2275, 0
  br i1 %2276, label %2277, label %2285

2277:                                             ; preds = %2274
  %2278 = load ptr, ptr %26, align 8, !tbaa !5
  %2279 = getelementptr inbounds i8, ptr %2278, i32 1
  store ptr %2279, ptr %26, align 8, !tbaa !5
  %2280 = load i8, ptr %2278, align 1, !tbaa !11
  %2281 = load ptr, ptr %12, align 8, !tbaa !5
  %2282 = getelementptr inbounds i8, ptr %2281, i32 1
  store ptr %2282, ptr %12, align 8, !tbaa !5
  store i8 %2280, ptr %2281, align 1, !tbaa !11
  %2283 = load i32, ptr %53, align 4, !tbaa !9
  %2284 = add nsw i32 %2283, -1
  store i32 %2284, ptr %53, align 4, !tbaa !9
  br label %2274, !llvm.loop !50

2285:                                             ; preds = %2274
  %2286 = load ptr, ptr %7, align 8, !tbaa !5
  %2287 = icmp ne ptr %2286, null
  br i1 %2287, label %2288, label %2314

2288:                                             ; preds = %2285
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #2
  %2289 = load ptr, ptr %12, align 8, !tbaa !5
  %2290 = load ptr, ptr %9, align 8, !tbaa !5
  %2291 = ptrtoint ptr %2289 to i64
  %2292 = ptrtoint ptr %2290 to i64
  %2293 = sub i64 %2291, %2292
  %2294 = trunc i64 %2293 to i32
  store i32 %2294, ptr %55, align 4, !tbaa !9
  %2295 = load i32, ptr %55, align 4, !tbaa !9
  %2296 = add nsw i32 %2295, 1
  %2297 = icmp sge i32 %2296, 512
  br i1 %2297, label %2298, label %2310

2298:                                             ; preds = %2288
  %2299 = load i32, ptr %55, align 4, !tbaa !9
  %2300 = load i32, ptr %14, align 4, !tbaa !9
  %2301 = add nsw i32 %2300, %2299
  store i32 %2301, ptr %14, align 4, !tbaa !9
  %2302 = load ptr, ptr %7, align 8, !tbaa !5
  %2303 = load ptr, ptr %9, align 8, !tbaa !5
  %2304 = load ptr, ptr %8, align 8, !tbaa !5
  %2305 = load i32, ptr %55, align 4, !tbaa !9
  %2306 = call ptr %2302(ptr noundef %2303, ptr noundef %2304, i32 noundef %2305)
  store ptr %2306, ptr %9, align 8, !tbaa !5
  store ptr %2306, ptr %12, align 8, !tbaa !5
  %2307 = icmp eq ptr null, %2306
  br i1 %2307, label %2308, label %2309

2308:                                             ; preds = %2298
  store i32 12, ptr %20, align 4
  br label %2311

2309:                                             ; preds = %2298
  br label %2310

2310:                                             ; preds = %2309, %2288
  store i32 0, ptr %20, align 4
  br label %2311

2311:                                             ; preds = %2310, %2308
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #2
  %2312 = load i32, ptr %20, align 4
  switch i32 %2312, label %2315 [
    i32 0, label %2313
  ]

2313:                                             ; preds = %2311
  br label %2314

2314:                                             ; preds = %2313, %2285
  store i32 0, ptr %20, align 4
  br label %2315

2315:                                             ; preds = %2314, %2311
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #2
  %2316 = load i32, ptr %20, align 4
  switch i32 %2316, label %2604 [
    i32 0, label %2317
  ]

2317:                                             ; preds = %2315
  br label %2235, !llvm.loop !51

2318:                                             ; preds = %2235
  br label %2319

2319:                                             ; preds = %2409, %2318
  %2320 = load i32, ptr %17, align 4, !tbaa !9
  %2321 = icmp ne i32 %2320, 0
  br i1 %2321, label %2322, label %2410

2322:                                             ; preds = %2319
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #2
  %2323 = load i32, ptr %17, align 4, !tbaa !9
  store i32 %2323, ptr %56, align 4, !tbaa !9
  %2324 = load ptr, ptr %7, align 8, !tbaa !5
  %2325 = icmp ne ptr %2324, null
  br i1 %2325, label %2326, label %2340

2326:                                             ; preds = %2322
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #2
  %2327 = load ptr, ptr %12, align 8, !tbaa !5
  %2328 = load ptr, ptr %9, align 8, !tbaa !5
  %2329 = ptrtoint ptr %2327 to i64
  %2330 = ptrtoint ptr %2328 to i64
  %2331 = sub i64 %2329, %2330
  %2332 = trunc i64 %2331 to i32
  %2333 = sub nsw i32 512, %2332
  store i32 %2333, ptr %57, align 4, !tbaa !9
  %2334 = load i32, ptr %56, align 4, !tbaa !9
  %2335 = load i32, ptr %57, align 4, !tbaa !9
  %2336 = icmp sgt i32 %2334, %2335
  br i1 %2336, label %2337, label %2339

2337:                                             ; preds = %2326
  %2338 = load i32, ptr %57, align 4, !tbaa !9
  store i32 %2338, ptr %56, align 4, !tbaa !9
  br label %2339

2339:                                             ; preds = %2337, %2326
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #2
  br label %2340

2340:                                             ; preds = %2339, %2322
  %2341 = load i32, ptr %56, align 4, !tbaa !9
  %2342 = load i32, ptr %17, align 4, !tbaa !9
  %2343 = sub nsw i32 %2342, %2341
  store i32 %2343, ptr %17, align 4, !tbaa !9
  br label %2344

2344:                                             ; preds = %2353, %2340
  %2345 = load i32, ptr %56, align 4, !tbaa !9
  %2346 = icmp ne i32 %2345, 0
  br i1 %2346, label %2347, label %2358

2347:                                             ; preds = %2344
  %2348 = load ptr, ptr %12, align 8, !tbaa !5
  %2349 = ptrtoint ptr %2348 to i64
  %2350 = and i64 %2349, 3
  %2351 = icmp eq i64 %2350, 0
  br i1 %2351, label %2352, label %2353

2352:                                             ; preds = %2347
  br label %2358

2353:                                             ; preds = %2347
  %2354 = load ptr, ptr %12, align 8, !tbaa !5
  %2355 = getelementptr inbounds i8, ptr %2354, i32 1
  store ptr %2355, ptr %12, align 8, !tbaa !5
  store i8 48, ptr %2354, align 1, !tbaa !11
  %2356 = load i32, ptr %56, align 4, !tbaa !9
  %2357 = add nsw i32 %2356, -1
  store i32 %2357, ptr %56, align 4, !tbaa !9
  br label %2344, !llvm.loop !52

2358:                                             ; preds = %2352, %2344
  br label %2359

2359:                                             ; preds = %2362, %2358
  %2360 = load i32, ptr %56, align 4, !tbaa !9
  %2361 = icmp sge i32 %2360, 4
  br i1 %2361, label %2362, label %2368

2362:                                             ; preds = %2359
  %2363 = load ptr, ptr %12, align 8, !tbaa !5
  store i32 808464432, ptr %2363, align 4, !tbaa !9
  %2364 = load ptr, ptr %12, align 8, !tbaa !5
  %2365 = getelementptr inbounds i8, ptr %2364, i64 4
  store ptr %2365, ptr %12, align 8, !tbaa !5
  %2366 = load i32, ptr %56, align 4, !tbaa !9
  %2367 = sub nsw i32 %2366, 4
  store i32 %2367, ptr %56, align 4, !tbaa !9
  br label %2359, !llvm.loop !53

2368:                                             ; preds = %2359
  br label %2369

2369:                                             ; preds = %2372, %2368
  %2370 = load i32, ptr %56, align 4, !tbaa !9
  %2371 = icmp ne i32 %2370, 0
  br i1 %2371, label %2372, label %2377

2372:                                             ; preds = %2369
  %2373 = load ptr, ptr %12, align 8, !tbaa !5
  %2374 = getelementptr inbounds i8, ptr %2373, i32 1
  store ptr %2374, ptr %12, align 8, !tbaa !5
  store i8 48, ptr %2373, align 1, !tbaa !11
  %2375 = load i32, ptr %56, align 4, !tbaa !9
  %2376 = add nsw i32 %2375, -1
  store i32 %2376, ptr %56, align 4, !tbaa !9
  br label %2369, !llvm.loop !54

2377:                                             ; preds = %2369
  %2378 = load ptr, ptr %7, align 8, !tbaa !5
  %2379 = icmp ne ptr %2378, null
  br i1 %2379, label %2380, label %2406

2380:                                             ; preds = %2377
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #2
  %2381 = load ptr, ptr %12, align 8, !tbaa !5
  %2382 = load ptr, ptr %9, align 8, !tbaa !5
  %2383 = ptrtoint ptr %2381 to i64
  %2384 = ptrtoint ptr %2382 to i64
  %2385 = sub i64 %2383, %2384
  %2386 = trunc i64 %2385 to i32
  store i32 %2386, ptr %58, align 4, !tbaa !9
  %2387 = load i32, ptr %58, align 4, !tbaa !9
  %2388 = add nsw i32 %2387, 1
  %2389 = icmp sge i32 %2388, 512
  br i1 %2389, label %2390, label %2402

2390:                                             ; preds = %2380
  %2391 = load i32, ptr %58, align 4, !tbaa !9
  %2392 = load i32, ptr %14, align 4, !tbaa !9
  %2393 = add nsw i32 %2392, %2391
  store i32 %2393, ptr %14, align 4, !tbaa !9
  %2394 = load ptr, ptr %7, align 8, !tbaa !5
  %2395 = load ptr, ptr %9, align 8, !tbaa !5
  %2396 = load ptr, ptr %8, align 8, !tbaa !5
  %2397 = load i32, ptr %58, align 4, !tbaa !9
  %2398 = call ptr %2394(ptr noundef %2395, ptr noundef %2396, i32 noundef %2397)
  store ptr %2398, ptr %9, align 8, !tbaa !5
  store ptr %2398, ptr %12, align 8, !tbaa !5
  %2399 = icmp eq ptr null, %2398
  br i1 %2399, label %2400, label %2401

2400:                                             ; preds = %2390
  store i32 12, ptr %20, align 4
  br label %2403

2401:                                             ; preds = %2390
  br label %2402

2402:                                             ; preds = %2401, %2380
  store i32 0, ptr %20, align 4
  br label %2403

2403:                                             ; preds = %2402, %2400
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #2
  %2404 = load i32, ptr %20, align 4
  switch i32 %2404, label %2407 [
    i32 0, label %2405
  ]

2405:                                             ; preds = %2403
  br label %2406

2406:                                             ; preds = %2405, %2377
  store i32 0, ptr %20, align 4
  br label %2407

2407:                                             ; preds = %2406, %2403
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #2
  %2408 = load i32, ptr %20, align 4
  switch i32 %2408, label %2604 [
    i32 0, label %2409
  ]

2409:                                             ; preds = %2407
  br label %2319, !llvm.loop !55

2410:                                             ; preds = %2319
  %2411 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 0
  %2412 = getelementptr inbounds i8, ptr %2411, i64 1
  store ptr %2412, ptr %34, align 8, !tbaa !5
  br label %2413

2413:                                             ; preds = %2489, %2410
  %2414 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 0
  %2415 = load i8, ptr %2414, align 1, !tbaa !11
  %2416 = icmp ne i8 %2415, 0
  br i1 %2416, label %2417, label %2490

2417:                                             ; preds = %2413
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #2
  %2418 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 0
  %2419 = load i8, ptr %2418, align 1, !tbaa !11
  %2420 = sext i8 %2419 to i32
  store i32 %2420, ptr %59, align 4, !tbaa !9
  %2421 = load ptr, ptr %7, align 8, !tbaa !5
  %2422 = icmp ne ptr %2421, null
  br i1 %2422, label %2423, label %2437

2423:                                             ; preds = %2417
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #2
  %2424 = load ptr, ptr %12, align 8, !tbaa !5
  %2425 = load ptr, ptr %9, align 8, !tbaa !5
  %2426 = ptrtoint ptr %2424 to i64
  %2427 = ptrtoint ptr %2425 to i64
  %2428 = sub i64 %2426, %2427
  %2429 = trunc i64 %2428 to i32
  %2430 = sub nsw i32 512, %2429
  store i32 %2430, ptr %60, align 4, !tbaa !9
  %2431 = load i32, ptr %59, align 4, !tbaa !9
  %2432 = load i32, ptr %60, align 4, !tbaa !9
  %2433 = icmp sgt i32 %2431, %2432
  br i1 %2433, label %2434, label %2436

2434:                                             ; preds = %2423
  %2435 = load i32, ptr %60, align 4, !tbaa !9
  store i32 %2435, ptr %59, align 4, !tbaa !9
  br label %2436

2436:                                             ; preds = %2434, %2423
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #2
  br label %2437

2437:                                             ; preds = %2436, %2417
  %2438 = load i32, ptr %59, align 4, !tbaa !9
  %2439 = trunc i32 %2438 to i8
  %2440 = sext i8 %2439 to i32
  %2441 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 0
  %2442 = load i8, ptr %2441, align 1, !tbaa !11
  %2443 = sext i8 %2442 to i32
  %2444 = sub nsw i32 %2443, %2440
  %2445 = trunc i32 %2444 to i8
  store i8 %2445, ptr %2441, align 1, !tbaa !11
  br label %2446

2446:                                             ; preds = %2449, %2437
  %2447 = load i32, ptr %59, align 4, !tbaa !9
  %2448 = icmp ne i32 %2447, 0
  br i1 %2448, label %2449, label %2457

2449:                                             ; preds = %2446
  %2450 = load ptr, ptr %34, align 8, !tbaa !5
  %2451 = getelementptr inbounds i8, ptr %2450, i32 1
  store ptr %2451, ptr %34, align 8, !tbaa !5
  %2452 = load i8, ptr %2450, align 1, !tbaa !11
  %2453 = load ptr, ptr %12, align 8, !tbaa !5
  %2454 = getelementptr inbounds i8, ptr %2453, i32 1
  store ptr %2454, ptr %12, align 8, !tbaa !5
  store i8 %2452, ptr %2453, align 1, !tbaa !11
  %2455 = load i32, ptr %59, align 4, !tbaa !9
  %2456 = add nsw i32 %2455, -1
  store i32 %2456, ptr %59, align 4, !tbaa !9
  br label %2446, !llvm.loop !56

2457:                                             ; preds = %2446
  %2458 = load ptr, ptr %7, align 8, !tbaa !5
  %2459 = icmp ne ptr %2458, null
  br i1 %2459, label %2460, label %2486

2460:                                             ; preds = %2457
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #2
  %2461 = load ptr, ptr %12, align 8, !tbaa !5
  %2462 = load ptr, ptr %9, align 8, !tbaa !5
  %2463 = ptrtoint ptr %2461 to i64
  %2464 = ptrtoint ptr %2462 to i64
  %2465 = sub i64 %2463, %2464
  %2466 = trunc i64 %2465 to i32
  store i32 %2466, ptr %61, align 4, !tbaa !9
  %2467 = load i32, ptr %61, align 4, !tbaa !9
  %2468 = add nsw i32 %2467, 1
  %2469 = icmp sge i32 %2468, 512
  br i1 %2469, label %2470, label %2482

2470:                                             ; preds = %2460
  %2471 = load i32, ptr %61, align 4, !tbaa !9
  %2472 = load i32, ptr %14, align 4, !tbaa !9
  %2473 = add nsw i32 %2472, %2471
  store i32 %2473, ptr %14, align 4, !tbaa !9
  %2474 = load ptr, ptr %7, align 8, !tbaa !5
  %2475 = load ptr, ptr %9, align 8, !tbaa !5
  %2476 = load ptr, ptr %8, align 8, !tbaa !5
  %2477 = load i32, ptr %61, align 4, !tbaa !9
  %2478 = call ptr %2474(ptr noundef %2475, ptr noundef %2476, i32 noundef %2477)
  store ptr %2478, ptr %9, align 8, !tbaa !5
  store ptr %2478, ptr %12, align 8, !tbaa !5
  %2479 = icmp eq ptr null, %2478
  br i1 %2479, label %2480, label %2481

2480:                                             ; preds = %2470
  store i32 12, ptr %20, align 4
  br label %2483

2481:                                             ; preds = %2470
  br label %2482

2482:                                             ; preds = %2481, %2460
  store i32 0, ptr %20, align 4
  br label %2483

2483:                                             ; preds = %2482, %2480
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #2
  %2484 = load i32, ptr %20, align 4
  switch i32 %2484, label %2487 [
    i32 0, label %2485
  ]

2485:                                             ; preds = %2483
  br label %2486

2486:                                             ; preds = %2485, %2457
  store i32 0, ptr %20, align 4
  br label %2487

2487:                                             ; preds = %2486, %2483
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #2
  %2488 = load i32, ptr %20, align 4
  switch i32 %2488, label %2604 [
    i32 0, label %2489
  ]

2489:                                             ; preds = %2487
  br label %2413, !llvm.loop !57

2490:                                             ; preds = %2413
  %2491 = load i32, ptr %18, align 4, !tbaa !9
  %2492 = and i32 %2491, 1
  %2493 = icmp ne i32 %2492, 0
  br i1 %2493, label %2494, label %2590

2494:                                             ; preds = %2490
  %2495 = load i32, ptr %15, align 4, !tbaa !9
  %2496 = icmp sgt i32 %2495, 0
  br i1 %2496, label %2497, label %2589

2497:                                             ; preds = %2494
  br label %2498

2498:                                             ; preds = %2587, %2497
  %2499 = load i32, ptr %15, align 4, !tbaa !9
  %2500 = icmp ne i32 %2499, 0
  br i1 %2500, label %2501, label %2588

2501:                                             ; preds = %2498
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #2
  %2502 = load i32, ptr %15, align 4, !tbaa !9
  store i32 %2502, ptr %62, align 4, !tbaa !9
  %2503 = load ptr, ptr %7, align 8, !tbaa !5
  %2504 = icmp ne ptr %2503, null
  br i1 %2504, label %2505, label %2519

2505:                                             ; preds = %2501
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #2
  %2506 = load ptr, ptr %12, align 8, !tbaa !5
  %2507 = load ptr, ptr %9, align 8, !tbaa !5
  %2508 = ptrtoint ptr %2506 to i64
  %2509 = ptrtoint ptr %2507 to i64
  %2510 = sub i64 %2508, %2509
  %2511 = trunc i64 %2510 to i32
  %2512 = sub nsw i32 512, %2511
  store i32 %2512, ptr %63, align 4, !tbaa !9
  %2513 = load i32, ptr %62, align 4, !tbaa !9
  %2514 = load i32, ptr %63, align 4, !tbaa !9
  %2515 = icmp sgt i32 %2513, %2514
  br i1 %2515, label %2516, label %2518

2516:                                             ; preds = %2505
  %2517 = load i32, ptr %63, align 4, !tbaa !9
  store i32 %2517, ptr %62, align 4, !tbaa !9
  br label %2518

2518:                                             ; preds = %2516, %2505
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #2
  br label %2519

2519:                                             ; preds = %2518, %2501
  %2520 = load i32, ptr %62, align 4, !tbaa !9
  %2521 = load i32, ptr %15, align 4, !tbaa !9
  %2522 = sub nsw i32 %2521, %2520
  store i32 %2522, ptr %15, align 4, !tbaa !9
  br label %2523

2523:                                             ; preds = %2532, %2519
  %2524 = load i32, ptr %62, align 4, !tbaa !9
  %2525 = icmp ne i32 %2524, 0
  br i1 %2525, label %2526, label %2537

2526:                                             ; preds = %2523
  %2527 = load ptr, ptr %12, align 8, !tbaa !5
  %2528 = ptrtoint ptr %2527 to i64
  %2529 = and i64 %2528, 3
  %2530 = icmp eq i64 %2529, 0
  br i1 %2530, label %2531, label %2532

2531:                                             ; preds = %2526
  br label %2537

2532:                                             ; preds = %2526
  %2533 = load ptr, ptr %12, align 8, !tbaa !5
  %2534 = getelementptr inbounds i8, ptr %2533, i32 1
  store ptr %2534, ptr %12, align 8, !tbaa !5
  store i8 32, ptr %2533, align 1, !tbaa !11
  %2535 = load i32, ptr %62, align 4, !tbaa !9
  %2536 = add nsw i32 %2535, -1
  store i32 %2536, ptr %62, align 4, !tbaa !9
  br label %2523, !llvm.loop !58

2537:                                             ; preds = %2531, %2523
  br label %2538

2538:                                             ; preds = %2541, %2537
  %2539 = load i32, ptr %62, align 4, !tbaa !9
  %2540 = icmp sge i32 %2539, 4
  br i1 %2540, label %2541, label %2547

2541:                                             ; preds = %2538
  %2542 = load ptr, ptr %12, align 8, !tbaa !5
  store i32 538976288, ptr %2542, align 4, !tbaa !9
  %2543 = load ptr, ptr %12, align 8, !tbaa !5
  %2544 = getelementptr inbounds i8, ptr %2543, i64 4
  store ptr %2544, ptr %12, align 8, !tbaa !5
  %2545 = load i32, ptr %62, align 4, !tbaa !9
  %2546 = sub nsw i32 %2545, 4
  store i32 %2546, ptr %62, align 4, !tbaa !9
  br label %2538, !llvm.loop !59

2547:                                             ; preds = %2538
  br label %2548

2548:                                             ; preds = %2552, %2547
  %2549 = load i32, ptr %62, align 4, !tbaa !9
  %2550 = add nsw i32 %2549, -1
  store i32 %2550, ptr %62, align 4, !tbaa !9
  %2551 = icmp ne i32 %2549, 0
  br i1 %2551, label %2552, label %2555

2552:                                             ; preds = %2548
  %2553 = load ptr, ptr %12, align 8, !tbaa !5
  %2554 = getelementptr inbounds i8, ptr %2553, i32 1
  store ptr %2554, ptr %12, align 8, !tbaa !5
  store i8 32, ptr %2553, align 1, !tbaa !11
  br label %2548, !llvm.loop !60

2555:                                             ; preds = %2548
  %2556 = load ptr, ptr %7, align 8, !tbaa !5
  %2557 = icmp ne ptr %2556, null
  br i1 %2557, label %2558, label %2584

2558:                                             ; preds = %2555
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #2
  %2559 = load ptr, ptr %12, align 8, !tbaa !5
  %2560 = load ptr, ptr %9, align 8, !tbaa !5
  %2561 = ptrtoint ptr %2559 to i64
  %2562 = ptrtoint ptr %2560 to i64
  %2563 = sub i64 %2561, %2562
  %2564 = trunc i64 %2563 to i32
  store i32 %2564, ptr %64, align 4, !tbaa !9
  %2565 = load i32, ptr %64, align 4, !tbaa !9
  %2566 = add nsw i32 %2565, 1
  %2567 = icmp sge i32 %2566, 512
  br i1 %2567, label %2568, label %2580

2568:                                             ; preds = %2558
  %2569 = load i32, ptr %64, align 4, !tbaa !9
  %2570 = load i32, ptr %14, align 4, !tbaa !9
  %2571 = add nsw i32 %2570, %2569
  store i32 %2571, ptr %14, align 4, !tbaa !9
  %2572 = load ptr, ptr %7, align 8, !tbaa !5
  %2573 = load ptr, ptr %9, align 8, !tbaa !5
  %2574 = load ptr, ptr %8, align 8, !tbaa !5
  %2575 = load i32, ptr %64, align 4, !tbaa !9
  %2576 = call ptr %2572(ptr noundef %2573, ptr noundef %2574, i32 noundef %2575)
  store ptr %2576, ptr %9, align 8, !tbaa !5
  store ptr %2576, ptr %12, align 8, !tbaa !5
  %2577 = icmp eq ptr null, %2576
  br i1 %2577, label %2578, label %2579

2578:                                             ; preds = %2568
  store i32 12, ptr %20, align 4
  br label %2581

2579:                                             ; preds = %2568
  br label %2580

2580:                                             ; preds = %2579, %2558
  store i32 0, ptr %20, align 4
  br label %2581

2581:                                             ; preds = %2580, %2578
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #2
  %2582 = load i32, ptr %20, align 4
  switch i32 %2582, label %2585 [
    i32 0, label %2583
  ]

2583:                                             ; preds = %2581
  br label %2584

2584:                                             ; preds = %2583, %2555
  store i32 0, ptr %20, align 4
  br label %2585

2585:                                             ; preds = %2584, %2581
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #2
  %2586 = load i32, ptr %20, align 4
  switch i32 %2586, label %2604 [
    i32 0, label %2587
  ]

2587:                                             ; preds = %2585
  br label %2498, !llvm.loop !61

2588:                                             ; preds = %2498
  br label %2589

2589:                                             ; preds = %2588, %2494
  br label %2590

2590:                                             ; preds = %2589, %2490
  br label %2601

2591:                                             ; preds = %441
  %2592 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %2593 = getelementptr inbounds i8, ptr %2592, i64 512
  %2594 = getelementptr inbounds i8, ptr %2593, i64 -1
  store ptr %2594, ptr %26, align 8, !tbaa !5
  %2595 = load ptr, ptr %13, align 8, !tbaa !5
  %2596 = getelementptr inbounds i8, ptr %2595, i64 0
  %2597 = load i8, ptr %2596, align 1, !tbaa !11
  %2598 = load ptr, ptr %26, align 8, !tbaa !5
  store i8 %2597, ptr %2598, align 1, !tbaa !11
  store i32 1, ptr %28, align 4, !tbaa !9
  store i32 0, ptr %18, align 4, !tbaa !9
  store i32 0, ptr %15, align 4, !tbaa !9
  %2599 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  store i8 0, ptr %2599, align 1, !tbaa !11
  %2600 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 0
  store i8 0, ptr %2600, align 1, !tbaa !11
  store i32 0, ptr %16, align 4, !tbaa !9
  store i32 0, ptr %33, align 4, !tbaa !9
  store i32 0, ptr %30, align 4, !tbaa !9
  br label %1795

2601:                                             ; preds = %2590, %516
  %2602 = load ptr, ptr %13, align 8, !tbaa !5
  %2603 = getelementptr inbounds i8, ptr %2602, i32 1
  store ptr %2603, ptr %13, align 8, !tbaa !5
  store i32 0, ptr %20, align 4
  br label %2604

2604:                                             ; preds = %2601, %2585, %2487, %2407, %2315, %2230, %2150, %117, %90
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #2
  %2605 = load i32, ptr %20, align 4
  switch i32 %2605, label %2648 [
    i32 0, label %2606
    i32 11, label %2607
    i32 12, label %2639
  ]

2606:                                             ; preds = %2604
  br label %68

2607:                                             ; preds = %2604
  %2608 = load ptr, ptr %7, align 8, !tbaa !5
  %2609 = icmp ne ptr %2608, null
  br i1 %2609, label %2612, label %2610

2610:                                             ; preds = %2607
  %2611 = load ptr, ptr %12, align 8, !tbaa !5
  store i8 0, ptr %2611, align 1, !tbaa !11
  br label %2638

2612:                                             ; preds = %2607
  call void @llvm.lifetime.start.p0(i64 4, ptr %65) #2
  %2613 = load ptr, ptr %12, align 8, !tbaa !5
  %2614 = load ptr, ptr %9, align 8, !tbaa !5
  %2615 = ptrtoint ptr %2613 to i64
  %2616 = ptrtoint ptr %2614 to i64
  %2617 = sub i64 %2615, %2616
  %2618 = trunc i64 %2617 to i32
  store i32 %2618, ptr %65, align 4, !tbaa !9
  %2619 = load i32, ptr %65, align 4, !tbaa !9
  %2620 = add nsw i32 %2619, 511
  %2621 = icmp sge i32 %2620, 512
  br i1 %2621, label %2622, label %2634

2622:                                             ; preds = %2612
  %2623 = load i32, ptr %65, align 4, !tbaa !9
  %2624 = load i32, ptr %14, align 4, !tbaa !9
  %2625 = add nsw i32 %2624, %2623
  store i32 %2625, ptr %14, align 4, !tbaa !9
  %2626 = load ptr, ptr %7, align 8, !tbaa !5
  %2627 = load ptr, ptr %9, align 8, !tbaa !5
  %2628 = load ptr, ptr %8, align 8, !tbaa !5
  %2629 = load i32, ptr %65, align 4, !tbaa !9
  %2630 = call ptr %2626(ptr noundef %2627, ptr noundef %2628, i32 noundef %2629)
  store ptr %2630, ptr %9, align 8, !tbaa !5
  store ptr %2630, ptr %12, align 8, !tbaa !5
  %2631 = icmp eq ptr null, %2630
  br i1 %2631, label %2632, label %2633

2632:                                             ; preds = %2622
  store i32 12, ptr %20, align 4
  br label %2635

2633:                                             ; preds = %2622
  br label %2634

2634:                                             ; preds = %2633, %2612
  store i32 0, ptr %20, align 4
  br label %2635

2635:                                             ; preds = %2634, %2632
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #2
  %2636 = load i32, ptr %20, align 4
  switch i32 %2636, label %2648 [
    i32 0, label %2637
    i32 12, label %2639
  ]

2637:                                             ; preds = %2635
  br label %2638

2638:                                             ; preds = %2637, %2610
  br label %2639

2639:                                             ; preds = %2638, %2635, %2604
  %2640 = load i32, ptr %14, align 4, !tbaa !9
  %2641 = load ptr, ptr %12, align 8, !tbaa !5
  %2642 = load ptr, ptr %9, align 8, !tbaa !5
  %2643 = ptrtoint ptr %2641 to i64
  %2644 = ptrtoint ptr %2642 to i64
  %2645 = sub i64 %2643, %2644
  %2646 = trunc i64 %2645 to i32
  %2647 = add nsw i32 %2640, %2646
  store i32 %2647, ptr %6, align 4
  store i32 1, ptr %20, align 4
  br label %2648

2648:                                             ; preds = %2639, %2635, %2604
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #2
  %2649 = load i32, ptr %6, align 4
  ret i32 %2649

2650:                                             ; preds = %1769, %170
  unreachable
}

; 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 willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1

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

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

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

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

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 = { 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, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!7, !7, i64 0}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}
!14 = distinct !{!14, !13}
!15 = distinct !{!15, !13}
!16 = !{!17, !17, i64 0}
!17 = !{!"double", !7, i64 0}
!18 = !{!19, !19, i64 0}
!19 = !{!"long long", !7, i64 0}
!20 = distinct !{!20, !13}
!21 = distinct !{!21, !13}
!22 = distinct !{!22, !13}
!23 = distinct !{!23, !13}
!24 = distinct !{!24, !13}
!25 = distinct !{!25, !13}
!26 = distinct !{!26, !13}
!27 = distinct !{!27, !13}
!28 = distinct !{!28, !13}
!29 = distinct !{!29, !13}
!30 = distinct !{!30, !13}
!31 = distinct !{!31, !13}
!32 = !{!33, !33, i64 0}
!33 = !{!"short", !7, i64 0}
!34 = distinct !{!34, !13}
!35 = distinct !{!35, !13}
!36 = distinct !{!36, !13}
!37 = distinct !{!37, !13}
!38 = distinct !{!38, !13}
!39 = distinct !{!39, !13}
!40 = distinct !{!40, !13}
!41 = distinct !{!41, !13}
!42 = distinct !{!42, !13}
!43 = distinct !{!43, !13}
!44 = distinct !{!44, !13}
!45 = distinct !{!45, !13}
!46 = distinct !{!46, !13}
!47 = distinct !{!47, !13}
!48 = distinct !{!48, !13}
!49 = distinct !{!49, !13}
!50 = distinct !{!50, !13}
!51 = distinct !{!51, !13}
!52 = distinct !{!52, !13}
!53 = distinct !{!53, !13}
!54 = distinct !{!54, !13}
!55 = distinct !{!55, !13}
!56 = distinct !{!56, !13}
!57 = distinct !{!57, !13}
!58 = distinct !{!58, !13}
!59 = distinct !{!59, !13}
!60 = distinct !{!60, !13}
!61 = distinct !{!61, !13}


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

%struct.anon = type { i16, [201 x i8] }

@stbsp__period = external hidden local_unnamed_addr global i8, align 1
@stbsp__comma = external hidden local_unnamed_addr global i8, align 1
@stbsp_vsprintfcb.hex = external hidden local_unnamed_addr global [19 x i8], align 16
@stbsp_vsprintfcb.hexu = external hidden local_unnamed_addr global [19 x i8], align 16
@.str = external hidden unnamed_addr constant [5 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [6 x i8], align 1
@stbsp__digitpair = external hidden local_unnamed_addr global %struct.anon, align 2

; Function Attrs: nounwind uwtable
define dso_local i32 @stbsp_vsprintfcb(ptr noundef readonly %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr nocapture noundef %4) local_unnamed_addr #0 {
  %6 = alloca [512 x i8], align 16
  %7 = ptrtoint ptr %6 to i64
  %8 = alloca [8 x i8], align 1
  %9 = alloca [8 x i8], align 1
  %10 = alloca i32, align 4
  %11 = alloca i64, align 8
  %12 = alloca i32, align 4
  %13 = alloca ptr, align 8
  %.not1070 = icmp eq ptr %0, null
  %14 = getelementptr inbounds i8, ptr %4, i64 8
  %15 = getelementptr inbounds i8, ptr %4, i64 16
  %invariant.gep = getelementptr i8, ptr %6, i64 -8
  %16 = getelementptr inbounds i8, ptr %8, i64 1
  %17 = getelementptr inbounds i8, ptr %8, i64 2
  %18 = getelementptr inbounds i8, ptr %6, i64 512
  %19 = ptrtoint ptr %18 to i64
  %20 = getelementptr inbounds i8, ptr %4, i64 4
  %21 = getelementptr inbounds i8, ptr %6, i64 64
  %22 = ptrtoint ptr %21 to i64
  %23 = getelementptr inbounds i8, ptr %6, i64 65
  %24 = getelementptr inbounds i8, ptr %6, i64 66
  %25 = getelementptr inbounds i8, ptr %9, i64 1
  %26 = getelementptr inbounds i8, ptr %9, i64 2
  %27 = getelementptr inbounds i8, ptr %6, i64 511
  %28 = sub i64 0, %7
  %scevgep = getelementptr i8, ptr %6, i64 %28
  %29 = getelementptr inbounds i8, ptr %9, i64 3
  %30 = getelementptr inbounds i8, ptr %6, i64 511
  br label %31

31:                                               ; preds = %.backedge2279, %5
  %.1745 = phi i32 [ 0, %5 ], [ %.1745.be, %.backedge2279 ]
  %.1731 = phi ptr [ %3, %5 ], [ %.1731.be, %.backedge2279 ]
  %.1676 = phi ptr [ %2, %5 ], [ %.1676.be, %.backedge2279 ]
  %.1 = phi ptr [ %2, %5 ], [ %.1.be, %.backedge2279 ]
  %32 = ptrtoint ptr %.1731 to i64
  %33 = and i64 %32, 3
  %.not = icmp eq i64 %33, 0
  br i1 %.not, label %.preheader1421, label %..thread1233_crit_edge

..thread1233_crit_edge:                           ; preds = %31
  %.pre = load i8, ptr %.1731, align 1, !tbaa !5
  br label %.thread1233

.preheader1421:                                   ; preds = %31
  %34 = load i32, ptr %.1731, align 4
  %35 = and i32 %34, -2139062144
  %36 = xor i32 %35, -2139062144
  %37 = xor i32 %34, 623191333
  %38 = add i32 %37, -16843009
  %39 = and i32 %38, %36
  %.not10681500 = icmp eq i32 %39, 0
  %40 = trunc i32 %34 to i8
  br i1 %.not10681500, label %.lr.ph, label %.thread1233

.lr.ph:                                           ; preds = %.preheader1421
  %41 = ptrtoint ptr %.1 to i64
  br i1 %.not1070, label %.lr.ph.split.us.preheader, label %.lr.ph.split

.lr.ph.split.us.preheader:                        ; preds = %.lr.ph
  %42 = add i32 %34, -16843009
  %43 = and i32 %36, %42
  %.not1069.us2216 = icmp eq i32 %43, 0
  br i1 %.not1069.us2216, label %.lr.ph2219, label %thread-pre-split

.lr.ph.split.us:                                  ; preds = %.lr.ph2219
  %44 = add i32 %49, -16843009
  %45 = and i32 %51, %44
  %.not1069.us = icmp eq i32 %45, 0
  br i1 %.not1069.us, label %.lr.ph2219, label %thread-pre-split.loopexit

.lr.ph2219:                                       ; preds = %.lr.ph.split.us.preheader, %.lr.ph.split.us
  %.47341501.us2218 = phi ptr [ %48, %.lr.ph.split.us ], [ %.1731, %.lr.ph.split.us.preheader ]
  %.76821502.us2217 = phi ptr [ %47, %.lr.ph.split.us ], [ %.1676, %.lr.ph.split.us.preheader ]
  %46 = phi i32 [ %49, %.lr.ph.split.us ], [ %34, %.lr.ph.split.us.preheader ]
  store i32 %46, ptr %.76821502.us2217, align 4, !tbaa !8
  %47 = getelementptr inbounds i8, ptr %.76821502.us2217, i64 4
  %48 = getelementptr inbounds i8, ptr %.47341501.us2218, i64 4
  %49 = load i32, ptr %48, align 4
  %50 = and i32 %49, -2139062144
  %51 = xor i32 %50, -2139062144
  %52 = xor i32 %49, 623191333
  %53 = add i32 %52, -16843009
  %54 = and i32 %53, %51
  %.not1068.us = icmp eq i32 %54, 0
  br i1 %.not1068.us, label %.lr.ph.split.us, label %.thread1233.loopexit

.thread1233.loopexit:                             ; preds = %.lr.ph2219
  %55 = trunc i32 %49 to i8
  br label %.thread1233

.thread1233:                                      ; preds = %83, %79, %.thread1233.loopexit, %..thread1233_crit_edge, %.preheader1421
  %56 = phi i8 [ %.pre, %..thread1233_crit_edge ], [ %40, %.preheader1421 ], [ %55, %.thread1233.loopexit ], [ %92, %83 ], [ %74, %79 ]
  %.2732 = phi ptr [ %.1731, %..thread1233_crit_edge ], [ %.1731, %.preheader1421 ], [ %48, %.thread1233.loopexit ], [ %85, %83 ], [ %.47341501, %79 ]
  %.2677 = phi ptr [ %.1676, %..thread1233_crit_edge ], [ %.1676, %.preheader1421 ], [ %47, %.thread1233.loopexit ], [ %84, %83 ], [ %.76821502, %79 ]
  %57 = icmp eq i8 %56, 37
  br i1 %57, label %.preheader2274, label %thread-pre-split

thread-pre-split.loopexit:                        ; preds = %.lr.ph.split.us
  %58 = trunc i32 %49 to i8
  br label %thread-pre-split

thread-pre-split:                                 ; preds = %.lr.ph.split, %thread-pre-split.loopexit, %.lr.ph.split.us.preheader, %.thread1233
  %59 = phi i8 [ %56, %.thread1233 ], [ %40, %.lr.ph.split.us.preheader ], [ %58, %thread-pre-split.loopexit ], [ %74, %.lr.ph.split ]
  %.3733 = phi ptr [ %.2732, %.thread1233 ], [ %.1731, %.lr.ph.split.us.preheader ], [ %48, %thread-pre-split.loopexit ], [ %.47341501, %.lr.ph.split ]
  %.3678 = phi ptr [ %.2677, %.thread1233 ], [ %.1676, %.lr.ph.split.us.preheader ], [ %47, %thread-pre-split.loopexit ], [ %.76821502, %.lr.ph.split ]
  %60 = icmp eq i8 %59, 0
  br i1 %60, label %1379, label %61

61:                                               ; preds = %thread-pre-split
  br i1 %.not1070, label %.thread, label %62

62:                                               ; preds = %61
  %63 = ptrtoint ptr %.3678 to i64
  %64 = ptrtoint ptr %.1 to i64
  %65 = sub i64 %63, %64
  %66 = trunc i64 %65 to i32
  %67 = icmp sgt i32 %66, 510
  br i1 %67, label %68, label %.thread

68:                                               ; preds = %62
  %69 = add nsw i32 %.1745, %66
  %70 = call ptr %0(ptr noundef %.1, ptr noundef %1, i32 noundef %66) #3
  %71 = icmp eq ptr %70, null
  br i1 %71, label %.thread1387, label %..thread_crit_edge

..thread_crit_edge:                               ; preds = %68
  %.pre2010 = load i8, ptr %.3733, align 1, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %..thread_crit_edge, %62, %61
  %72 = phi i8 [ %59, %61 ], [ %59, %62 ], [ %.pre2010, %..thread_crit_edge ]
  %.4748 = phi i32 [ %.1745, %61 ], [ %.1745, %62 ], [ %69, %..thread_crit_edge ]
  %.6681 = phi ptr [ %.3678, %61 ], [ %.3678, %62 ], [ %70, %..thread_crit_edge ]
  %.4 = phi ptr [ %.1, %61 ], [ %.1, %62 ], [ %70, %..thread_crit_edge ]
  %73 = getelementptr inbounds i8, ptr %.6681, i64 1
  store i8 %72, ptr %.6681, align 1, !tbaa !5
  br label %.backedge2279

.backedge2279:                                    ; preds = %._crit_edge1803, %247, %1342, %.thread
  %.1745.be = phi i32 [ %.4748, %.thread ], [ %.35779.lcssa, %._crit_edge1803 ], [ %.1745, %247 ], [ %.44788.ph, %1342 ]
  %.3733.pn = phi ptr [ %.3733, %.thread ], [ %.12742, %1342 ], [ %.12742, %247 ], [ %.12742, %._crit_edge1803 ]
  %.1676.be = phi ptr [ %73, %.thread ], [ %.54.lcssa, %._crit_edge1803 ], [ %.2677, %247 ], [ %.67.ph, %1342 ]
  %.1.be = phi ptr [ %.4, %.thread ], [ %.35.lcssa, %._crit_edge1803 ], [ %.1, %247 ], [ %.44.ph, %1342 ]
  %.1731.be = getelementptr inbounds i8, ptr %.3733.pn, i64 1
  br label %31, !llvm.loop !10

.lr.ph.split:                                     ; preds = %.lr.ph, %83
  %74 = phi i8 [ %92, %83 ], [ %40, %.lr.ph ]
  %75 = phi i32 [ %88, %83 ], [ %36, %.lr.ph ]
  %76 = phi i32 [ %86, %83 ], [ %34, %.lr.ph ]
  %.76821502 = phi ptr [ %84, %83 ], [ %.1676, %.lr.ph ]
  %.47341501 = phi ptr [ %85, %83 ], [ %.1731, %.lr.ph ]
  %77 = add i32 %76, -16843009
  %78 = and i32 %75, %77
  %.not1069 = icmp eq i32 %78, 0
  br i1 %.not1069, label %79, label %thread-pre-split

79:                                               ; preds = %.lr.ph.split
  %80 = ptrtoint ptr %.76821502 to i64
  %.neg = sub i64 %41, %80
  %.neg1071 = trunc i64 %.neg to i32
  %81 = add i32 %.neg1071, 512
  %82 = icmp slt i32 %81, 4
  br i1 %82, label %.thread1233, label %83

83:                                               ; preds = %79
  store i32 %76, ptr %.76821502, align 4, !tbaa !8
  %84 = getelementptr inbounds i8, ptr %.76821502, i64 4
  %85 = getelementptr inbounds i8, ptr %.47341501, i64 4
  %86 = load i32, ptr %85, align 4
  %87 = and i32 %86, -2139062144
  %88 = xor i32 %87, -2139062144
  %89 = xor i32 %86, 623191333
  %90 = add i32 %89, -16843009
  %91 = and i32 %90, %88
  %.not1068 = icmp eq i32 %91, 0
  %92 = trunc i32 %86 to i8
  br i1 %.not1068, label %.lr.ph.split, label %.thread1233

.preheader2274:                                   ; preds = %.thread1233, %.backedge
  %.0832 = phi i32 [ %95, %.backedge ], [ 0, %.thread1233 ]
  %.2732.pn = phi ptr [ %.6736, %.backedge ], [ %.2732, %.thread1233 ]
  %.6736 = getelementptr inbounds i8, ptr %.2732.pn, i64 1
  %93 = load i8, ptr %.6736, align 1, !tbaa !5
  switch i8 %93, label %.loopexit1447 [
    i8 45, label %94
    i8 43, label %.backedge
    i8 32, label %96
    i8 35, label %97
    i8 39, label %98
    i8 36, label %99
    i8 95, label %103
    i8 48, label %104
  ]

94:                                               ; preds = %.preheader2274
  br label %.backedge

.backedge:                                        ; preds = %99, %101, %.preheader2274, %94, %96, %97, %98, %103
  %.sink = phi i32 [ 1, %94 ], [ 4, %96 ], [ 8, %97 ], [ 64, %98 ], [ 1024, %103 ], [ 2, %.preheader2274 ], [ %., %101 ], [ 256, %99 ]
  %95 = or i32 %.0832, %.sink
  br label %.preheader2274

96:                                               ; preds = %.preheader2274
  br label %.backedge

97:                                               ; preds = %.preheader2274
  br label %.backedge

98:                                               ; preds = %.preheader2274
  br label %.backedge

99:                                               ; preds = %.preheader2274
  %100 = and i32 %.0832, 256
  %.not1073 = icmp eq i32 %100, 0
  br i1 %.not1073, label %.backedge, label %101

101:                                              ; preds = %99
  %102 = and i32 %.0832, 2048
  %.not1074 = icmp eq i32 %102, 0
  %. = select i1 %.not1074, i32 2048, i32 4096
  br label %.backedge

103:                                              ; preds = %.preheader2274
  br label %.backedge

104:                                              ; preds = %.preheader2274
  %105 = or i32 %.0832, 16
  %106 = getelementptr inbounds i8, ptr %.2732.pn, i64 2
  %.pr1243 = load i8, ptr %106, align 1, !tbaa !5
  br label %.loopexit1447

.loopexit1447:                                    ; preds = %.preheader2274, %104
  %107 = phi i8 [ %.pr1243, %104 ], [ %93, %.preheader2274 ]
  %.2834 = phi i32 [ %105, %104 ], [ %.0832, %.preheader2274 ]
  %.7737 = phi ptr [ %106, %104 ], [ %.6736, %.preheader2274 ]
  %108 = icmp eq i8 %107, 42
  br i1 %108, label %110, label %.preheader1446

.preheader1446:                                   ; preds = %.loopexit1447
  %109 = add i8 %107, -48
  %or.cond11791510 = icmp ult i8 %109, 10
  br i1 %or.cond11791510, label %.lr.ph1513, label %.critedge

110:                                              ; preds = %.loopexit1447
  %111 = load i32, ptr %4, align 8
  %112 = icmp ult i32 %111, 41
  br i1 %112, label %113, label %118

113:                                              ; preds = %110
  %114 = load ptr, ptr %15, align 8
  %115 = zext nneg i32 %111 to i64
  %116 = getelementptr i8, ptr %114, i64 %115
  %117 = add nuw nsw i32 %111, 8
  store i32 %117, ptr %4, align 8
  br label %121

118:                                              ; preds = %110
  %119 = load ptr, ptr %14, align 8
  %120 = getelementptr i8, ptr %119, i64 8
  store ptr %120, ptr %14, align 8
  br label %121

121:                                              ; preds = %118, %113
  %122 = phi ptr [ %116, %113 ], [ %119, %118 ]
  %123 = load i32, ptr %122, align 4, !tbaa !8
  %124 = getelementptr inbounds i8, ptr %.7737, i64 1
  %.pr1244 = load i8, ptr %124, align 1, !tbaa !5
  br label %.critedge

.lr.ph1513:                                       ; preds = %.preheader1446, %.lr.ph1513
  %125 = phi i8 [ %131, %.lr.ph1513 ], [ %107, %.preheader1446 ]
  %.87381512 = phi ptr [ %130, %.lr.ph1513 ], [ %.7737, %.preheader1446 ]
  %.07971511 = phi i32 [ %129, %.lr.ph1513 ], [ 0, %.preheader1446 ]
  %126 = zext nneg i8 %125 to i32
  %127 = mul nsw i32 %.07971511, 10
  %128 = add i32 %127, -48
  %129 = add i32 %128, %126
  %130 = getelementptr inbounds i8, ptr %.87381512, i64 1
  %131 = load i8, ptr %130, align 1, !tbaa !5
  %132 = add i8 %131, -48
  %or.cond1179 = icmp ult i8 %132, 10
  br i1 %or.cond1179, label %.lr.ph1513, label %.critedge, !llvm.loop !12

.critedge:                                        ; preds = %.lr.ph1513, %.preheader1446, %121
  %133 = phi i8 [ %.pr1244, %121 ], [ %107, %.preheader1446 ], [ %131, %.lr.ph1513 ]
  %.1798 = phi i32 [ %123, %121 ], [ 0, %.preheader1446 ], [ %129, %.lr.ph1513 ]
  %.9739 = phi ptr [ %124, %121 ], [ %.7737, %.preheader1446 ], [ %130, %.lr.ph1513 ]
  %134 = icmp eq i8 %133, 46
  br i1 %134, label %135, label %.critedge16

135:                                              ; preds = %.critedge
  %136 = getelementptr inbounds i8, ptr %.9739, i64 1
  %137 = load i8, ptr %136, align 1, !tbaa !5
  %138 = icmp eq i8 %137, 42
  br i1 %138, label %140, label %.preheader1445

.preheader1445:                                   ; preds = %135
  %139 = add i8 %137, -48
  %or.cond11801517 = icmp ult i8 %139, 10
  br i1 %or.cond11801517, label %.lr.ph1520, label %.critedge16

140:                                              ; preds = %135
  %141 = load i32, ptr %4, align 8
  %142 = icmp ult i32 %141, 41
  br i1 %142, label %143, label %148

143:                                              ; preds = %140
  %144 = load ptr, ptr %15, align 8
  %145 = zext nneg i32 %141 to i64
  %146 = getelementptr i8, ptr %144, i64 %145
  %147 = add nuw nsw i32 %141, 8
  store i32 %147, ptr %4, align 8
  br label %151

148:                                              ; preds = %140
  %149 = load ptr, ptr %14, align 8
  %150 = getelementptr i8, ptr %149, i64 8
  store ptr %150, ptr %14, align 8
  br label %151

151:                                              ; preds = %148, %143
  %152 = phi ptr [ %146, %143 ], [ %149, %148 ]
  %153 = load i32, ptr %152, align 4, !tbaa !8
  %154 = getelementptr inbounds i8, ptr %.9739, i64 2
  %.pr1245.pre = load i8, ptr %154, align 1, !tbaa !5
  br label %.critedge16

.lr.ph1520:                                       ; preds = %.preheader1445, %.lr.ph1520
  %155 = phi i8 [ %161, %.lr.ph1520 ], [ %137, %.preheader1445 ]
  %.107401519 = phi ptr [ %160, %.lr.ph1520 ], [ %136, %.preheader1445 ]
  %.08071518 = phi i32 [ %159, %.lr.ph1520 ], [ 0, %.preheader1445 ]
  %156 = zext nneg i8 %155 to i32
  %157 = mul nsw i32 %.08071518, 10
  %158 = add i32 %157, -48
  %159 = add i32 %158, %156
  %160 = getelementptr inbounds i8, ptr %.107401519, i64 1
  %161 = load i8, ptr %160, align 1, !tbaa !5
  %162 = add i8 %161, -48
  %or.cond1180 = icmp ult i8 %162, 10
  br i1 %or.cond1180, label %.lr.ph1520, label %.critedge16, !llvm.loop !13

.critedge16:                                      ; preds = %.lr.ph1520, %151, %.critedge, %.preheader1445
  %163 = phi i8 [ %137, %.preheader1445 ], [ %133, %.critedge ], [ %.pr1245.pre, %151 ], [ %161, %.lr.ph1520 ]
  %.1808 = phi i32 [ 0, %.preheader1445 ], [ -1, %.critedge ], [ %153, %151 ], [ %159, %.lr.ph1520 ]
  %.11741 = phi ptr [ %136, %.preheader1445 ], [ %.9739, %.critedge ], [ %154, %151 ], [ %160, %.lr.ph1520 ]
  switch i8 %163, label %202 [
    i8 104, label %164
    i8 108, label %170
    i8 106, label %176
    i8 122, label %179
    i8 116, label %182
    i8 73, label %185
  ]

164:                                              ; preds = %.critedge16
  %165 = or i32 %.2834, 512
  %166 = getelementptr inbounds i8, ptr %.11741, i64 1
  %167 = load i8, ptr %166, align 1, !tbaa !5
  %168 = icmp eq i8 %167, 104
  %169 = getelementptr inbounds i8, ptr %.11741, i64 2
  %spec.select = select i1 %168, ptr %169, ptr %166
  br label %202

170:                                              ; preds = %.critedge16
  %171 = or i32 %.2834, 32
  %172 = getelementptr inbounds i8, ptr %.11741, i64 1
  %173 = load i8, ptr %172, align 1, !tbaa !5
  %174 = icmp eq i8 %173, 108
  %175 = getelementptr inbounds i8, ptr %.11741, i64 2
  %spec.select1181 = select i1 %174, ptr %175, ptr %172
  br label %202

176:                                              ; preds = %.critedge16
  %177 = or i32 %.2834, 32
  %178 = getelementptr inbounds i8, ptr %.11741, i64 1
  br label %202

179:                                              ; preds = %.critedge16
  %180 = or i32 %.2834, 32
  %181 = getelementptr inbounds i8, ptr %.11741, i64 1
  br label %202

182:                                              ; preds = %.critedge16
  %183 = or i32 %.2834, 32
  %184 = getelementptr inbounds i8, ptr %.11741, i64 1
  br label %202

185:                                              ; preds = %.critedge16
  %186 = getelementptr inbounds i8, ptr %.11741, i64 1
  %187 = load i8, ptr %186, align 1, !tbaa !5
  switch i8 %187, label %.thread1246 [
    i8 54, label %188
    i8 51, label %195
  ]

188:                                              ; preds = %185
  %189 = getelementptr inbounds i8, ptr %.11741, i64 2
  %190 = load i8, ptr %189, align 1, !tbaa !5
  %191 = icmp eq i8 %190, 52
  br i1 %191, label %192, label %.thread1246

192:                                              ; preds = %188
  %193 = or i32 %.2834, 32
  %194 = getelementptr inbounds i8, ptr %.11741, i64 3
  br label %202

195:                                              ; preds = %185
  %196 = getelementptr inbounds i8, ptr %.11741, i64 2
  %197 = load i8, ptr %196, align 1, !tbaa !5
  %198 = icmp eq i8 %197, 50
  br i1 %198, label %199, label %.thread1246

199:                                              ; preds = %195
  %200 = getelementptr inbounds i8, ptr %.11741, i64 3
  br label %202

.thread1246:                                      ; preds = %185, %188, %195
  %201 = or i32 %.2834, 32
  br label %202

202:                                              ; preds = %170, %164, %.critedge16, %192, %.thread1246, %199, %182, %179, %176
  %.3835 = phi i32 [ %.2834, %.critedge16 ], [ %193, %192 ], [ %.2834, %199 ], [ %201, %.thread1246 ], [ %183, %182 ], [ %180, %179 ], [ %177, %176 ], [ %165, %164 ], [ %171, %170 ]
  %.12742 = phi ptr [ %.11741, %.critedge16 ], [ %194, %192 ], [ %200, %199 ], [ %186, %.thread1246 ], [ %184, %182 ], [ %181, %179 ], [ %178, %176 ], [ %spec.select, %164 ], [ %spec.select1181, %170 ]
  %203 = load i8, ptr %.12742, align 1, !tbaa !5
  switch i8 %203, label %1378 [
    i8 115, label %204
    i8 99, label %221
    i8 110, label %236
    i8 65, label %255
    i8 97, label %255
    i8 71, label %383
    i8 103, label %383
    i8 69, label %438
    i8 101, label %438
    i8 102, label %534
    i8 66, label %775
    i8 98, label %775
    i8 111, label %782
    i8 112, label %786
    i8 88, label %789
    i8 120, label %789
    i8 117, label %876
    i8 105, label %876
    i8 100, label %876
  ]

204:                                              ; preds = %202
  %205 = load i32, ptr %4, align 8
  %206 = icmp ult i32 %205, 41
  br i1 %206, label %207, label %212

207:                                              ; preds = %204
  %208 = load ptr, ptr %15, align 8
  %209 = zext nneg i32 %205 to i64
  %210 = getelementptr i8, ptr %208, i64 %209
  %211 = add nuw nsw i32 %205, 8
  store i32 %211, ptr %4, align 8
  br label %215

212:                                              ; preds = %204
  %213 = load ptr, ptr %14, align 8
  %214 = getelementptr i8, ptr %213, i64 8
  store ptr %214, ptr %14, align 8
  br label %215

215:                                              ; preds = %212, %207
  %216 = phi ptr [ %210, %207 ], [ %213, %212 ]
  %217 = load ptr, ptr %216, align 8, !tbaa !14
  %218 = icmp eq ptr %217, null
  %spec.store.select = select i1 %218, ptr @.str, ptr %217
  %219 = call i32 @llvm.smax.i32(i32 %.1808, i32 -1)
  %220 = call i32 @stbsp__strlen_limited(ptr noundef nonnull %spec.store.select, i32 noundef %219)
  store i32 %220, ptr %10, align 4, !tbaa !8
  store i8 0, ptr %8, align 1, !tbaa !5
  store i8 0, ptr %9, align 1, !tbaa !5
  store i32 0, ptr %12, align 4, !tbaa !8
  br label %974

221:                                              ; preds = %202
  %222 = load i32, ptr %4, align 8
  %223 = icmp ult i32 %222, 41
  br i1 %223, label %224, label %229

224:                                              ; preds = %221
  %225 = load ptr, ptr %15, align 8
  %226 = zext nneg i32 %222 to i64
  %227 = getelementptr i8, ptr %225, i64 %226
  %228 = add nuw nsw i32 %222, 8
  store i32 %228, ptr %4, align 8
  br label %232

229:                                              ; preds = %221
  %230 = load ptr, ptr %14, align 8
  %231 = getelementptr i8, ptr %230, i64 8
  store ptr %231, ptr %14, align 8
  br label %232

232:                                              ; preds = %229, %224
  %233 = phi ptr [ %227, %224 ], [ %230, %229 ]
  %234 = load i32, ptr %233, align 4, !tbaa !8
  %235 = trunc i32 %234 to i8
  store i8 %235, ptr %27, align 1, !tbaa !5
  store i32 1, ptr %10, align 4, !tbaa !8
  store i8 0, ptr %8, align 1, !tbaa !5
  store i8 0, ptr %9, align 1, !tbaa !5
  store i32 0, ptr %12, align 4, !tbaa !8
  br label %974

236:                                              ; preds = %202
  %237 = load i32, ptr %4, align 8
  %238 = icmp ult i32 %237, 41
  br i1 %238, label %239, label %244

239:                                              ; preds = %236
  %240 = load ptr, ptr %15, align 8
  %241 = zext nneg i32 %237 to i64
  %242 = getelementptr i8, ptr %240, i64 %241
  %243 = add nuw nsw i32 %237, 8
  store i32 %243, ptr %4, align 8
  br label %247

244:                                              ; preds = %236
  %245 = load ptr, ptr %14, align 8
  %246 = getelementptr i8, ptr %245, i64 8
  store ptr %246, ptr %14, align 8
  br label %247

247:                                              ; preds = %244, %239
  %248 = phi ptr [ %242, %239 ], [ %245, %244 ]
  %249 = load ptr, ptr %248, align 8, !tbaa !14
  %250 = ptrtoint ptr %.2677 to i64
  %251 = ptrtoint ptr %.1 to i64
  %252 = sub i64 %250, %251
  %253 = trunc i64 %252 to i32
  %254 = add nsw i32 %.1745, %253
  store i32 %254, ptr %249, align 4, !tbaa !8
  br label %.backedge2279

255:                                              ; preds = %202, %202
  %256 = icmp eq i8 %203, 65
  %257 = select i1 %256, ptr @stbsp_vsprintfcb.hexu, ptr @stbsp_vsprintfcb.hex
  %258 = load i32, ptr %20, align 4
  %259 = icmp ult i32 %258, 161
  br i1 %259, label %260, label %265

260:                                              ; preds = %255
  %261 = load ptr, ptr %15, align 8
  %262 = zext nneg i32 %258 to i64
  %263 = getelementptr i8, ptr %261, i64 %262
  %264 = add nuw nsw i32 %258, 16
  store i32 %264, ptr %20, align 4
  br label %268

265:                                              ; preds = %255
  %266 = load ptr, ptr %14, align 8
  %267 = getelementptr i8, ptr %266, i64 8
  store ptr %267, ptr %14, align 8
  br label %268

268:                                              ; preds = %265, %260
  %269 = phi ptr [ %263, %260 ], [ %266, %265 ]
  %270 = load double, ptr %269, align 8, !tbaa !16
  %271 = icmp eq i32 %.1808, -1
  %spec.store.select17 = select i1 %271, i32 6, i32 %.1808
  %272 = call i32 @stbsp__real_to_parts(ptr noundef nonnull %11, ptr noundef nonnull %12, double noundef %270)
  %.not1126 = icmp eq i32 %272, 0
  %273 = or i32 %.3835, 128
  %spec.select1182 = select i1 %.not1126, i32 %.3835, i32 %273
  call void @stbsp__lead_sign(i32 noundef %spec.select1182, ptr noundef nonnull %8)
  %274 = load i32, ptr %12, align 4, !tbaa !8
  %275 = icmp eq i32 %274, -1023
  %276 = load i64, ptr %11, align 8, !tbaa !18
  br i1 %275, label %277, label %279

277:                                              ; preds = %268
  %.not1127 = icmp eq i64 %276, 0
  %278 = select i1 %.not1127, i32 0, i32 -1022
  store i32 %278, ptr %12, align 4, !tbaa !8
  br label %281

279:                                              ; preds = %268
  %280 = or i64 %276, 4503599627370496
  br label %281

281:                                              ; preds = %279, %277
  %282 = phi i32 [ %274, %279 ], [ %278, %277 ]
  %283 = phi i64 [ %280, %279 ], [ %276, %277 ]
  %284 = shl i64 %283, 8
  %285 = icmp slt i32 %spec.store.select17, 15
  %286 = shl nsw i32 %spec.store.select17, 2
  %287 = zext nneg i32 %286 to i64
  %288 = lshr i64 576460752303423488, %287
  %289 = select i1 %285, i64 %288, i64 0
  %storemerge1128 = add i64 %284, %289
  %290 = load i8, ptr %8, align 1, !tbaa !5
  %291 = sext i8 %290 to i64
  %292 = add nsw i64 %291, 1
  %293 = getelementptr inbounds [8 x i8], ptr %8, i64 0, i64 %292
  store i8 48, ptr %293, align 1, !tbaa !5
  %294 = load i8, ptr %8, align 1, !tbaa !5
  %295 = sext i8 %294 to i64
  %296 = add nsw i64 %295, 2
  %297 = getelementptr inbounds [8 x i8], ptr %8, i64 0, i64 %296
  store i8 120, ptr %297, align 1, !tbaa !5
  %298 = load i8, ptr %8, align 1, !tbaa !5
  %299 = add i8 %298, 2
  store i8 %299, ptr %8, align 1, !tbaa !5
  %300 = lshr i64 %storemerge1128, 60
  %301 = getelementptr inbounds i8, ptr %257, i64 %300
  %302 = load i8, ptr %301, align 1, !tbaa !5
  store i8 %302, ptr %21, align 16, !tbaa !5
  %303 = shl i64 %storemerge1128, 4
  store i64 %303, ptr %11, align 8, !tbaa !18
  %.not1129 = icmp eq i32 %spec.store.select17, 0
  br i1 %.not1129, label %.thread2029, label %.lr.ph1638.preheader

.thread2029:                                      ; preds = %281
  store ptr %23, ptr %13, align 8, !tbaa !14
  br label %337

.lr.ph1638.preheader:                             ; preds = %281
  %304 = load i8, ptr @stbsp__period, align 1, !tbaa !5
  store i8 %304, ptr %23, align 1, !tbaa !5
  store ptr %24, ptr %13, align 8, !tbaa !14
  %spec.store.select18 = call i32 @llvm.umin.i32(i32 %spec.store.select17, i32 13)
  %305 = icmp sgt i32 %spec.store.select17, %spec.store.select18
  %306 = sub i32 %spec.store.select17, %spec.store.select18
  %spec.select1183 = select i1 %305, i32 %306, i32 0
  %xtraiter2365 = and i32 %spec.store.select18, 3
  %lcmp.mod2366.not = icmp eq i32 %xtraiter2365, 0
  br i1 %lcmp.mod2366.not, label %.lr.ph1638.prol.loopexit, label %.lr.ph1638.prol

.lr.ph1638.prol:                                  ; preds = %.lr.ph1638.preheader, %.lr.ph1638.prol
  %.18751636.prol = phi ptr [ %312, %.lr.ph1638.prol ], [ %24, %.lr.ph1638.preheader ]
  %.09181635.prol = phi i32 [ %308, %.lr.ph1638.prol ], [ %spec.store.select18, %.lr.ph1638.preheader ]
  %307 = phi i64 [ %313, %.lr.ph1638.prol ], [ %303, %.lr.ph1638.preheader ]
  %prol.iter2367 = phi i32 [ %prol.iter2367.next, %.lr.ph1638.prol ], [ 0, %.lr.ph1638.preheader ]
  %308 = add nsw i32 %.09181635.prol, -1
  %309 = lshr i64 %307, 60
  %310 = getelementptr inbounds i8, ptr %257, i64 %309
  %311 = load i8, ptr %310, align 1, !tbaa !5
  %312 = getelementptr inbounds i8, ptr %.18751636.prol, i64 1
  store i8 %311, ptr %.18751636.prol, align 1, !tbaa !5
  %313 = shl i64 %307, 4
  %prol.iter2367.next = add i32 %prol.iter2367, 1
  %prol.iter2367.cmp.not = icmp eq i32 %prol.iter2367.next, %xtraiter2365
  br i1 %prol.iter2367.cmp.not, label %.lr.ph1638.prol.loopexit, label %.lr.ph1638.prol, !llvm.loop !20

.lr.ph1638.prol.loopexit:                         ; preds = %.lr.ph1638.prol, %.lr.ph1638.preheader
  %.lcssa2319.unr = phi ptr [ poison, %.lr.ph1638.preheader ], [ %312, %.lr.ph1638.prol ]
  %.lcssa2318.unr = phi i64 [ poison, %.lr.ph1638.preheader ], [ %313, %.lr.ph1638.prol ]
  %.18751636.unr = phi ptr [ %24, %.lr.ph1638.preheader ], [ %312, %.lr.ph1638.prol ]
  %.09181635.unr = phi i32 [ %spec.store.select18, %.lr.ph1638.preheader ], [ %308, %.lr.ph1638.prol ]
  %.unr = phi i64 [ %303, %.lr.ph1638.preheader ], [ %313, %.lr.ph1638.prol ]
  %314 = icmp ult i32 %spec.store.select17, 4
  br i1 %314, label %._crit_edge1639, label %.lr.ph1638

.lr.ph1638:                                       ; preds = %.lr.ph1638.prol.loopexit, %.lr.ph1638
  %.18751636 = phi ptr [ %335, %.lr.ph1638 ], [ %.18751636.unr, %.lr.ph1638.prol.loopexit ]
  %.09181635 = phi i32 [ %330, %.lr.ph1638 ], [ %.09181635.unr, %.lr.ph1638.prol.loopexit ]
  %315 = phi i64 [ %336, %.lr.ph1638 ], [ %.unr, %.lr.ph1638.prol.loopexit ]
  %316 = lshr i64 %315, 60
  %317 = getelementptr inbounds i8, ptr %257, i64 %316
  %318 = load i8, ptr %317, align 1, !tbaa !5
  %319 = getelementptr inbounds i8, ptr %.18751636, i64 1
  store i8 %318, ptr %.18751636, align 1, !tbaa !5
  %320 = lshr i64 %315, 56
  %321 = and i64 %320, 15
  %322 = getelementptr inbounds i8, ptr %257, i64 %321
  %323 = load i8, ptr %322, align 1, !tbaa !5
  %324 = getelementptr inbounds i8, ptr %.18751636, i64 2
  store i8 %323, ptr %319, align 1, !tbaa !5
  %325 = lshr i64 %315, 52
  %326 = and i64 %325, 15
  %327 = getelementptr inbounds i8, ptr %257, i64 %326
  %328 = load i8, ptr %327, align 1, !tbaa !5
  %329 = getelementptr inbounds i8, ptr %.18751636, i64 3
  store i8 %328, ptr %324, align 1, !tbaa !5
  %330 = add nsw i32 %.09181635, -4
  %331 = lshr i64 %315, 48
  %332 = and i64 %331, 15
  %333 = getelementptr inbounds i8, ptr %257, i64 %332
  %334 = load i8, ptr %333, align 1, !tbaa !5
  %335 = getelementptr inbounds i8, ptr %.18751636, i64 4
  store i8 %334, ptr %329, align 1, !tbaa !5
  %336 = shl i64 %315, 16
  %.not1130.3 = icmp eq i32 %330, 0
  br i1 %.not1130.3, label %._crit_edge1639, label %.lr.ph1638, !llvm.loop !22

._crit_edge1639:                                  ; preds = %.lr.ph1638, %.lr.ph1638.prol.loopexit
  %.lcssa2319 = phi ptr [ %.lcssa2319.unr, %.lr.ph1638.prol.loopexit ], [ %335, %.lr.ph1638 ]
  %.lcssa2318 = phi i64 [ %.lcssa2318.unr, %.lr.ph1638.prol.loopexit ], [ %336, %.lr.ph1638 ]
  store i64 %.lcssa2318, ptr %11, align 8, !tbaa !18
  br label %337

337:                                              ; preds = %.thread2029, %._crit_edge1639
  %spec.select11832034 = phi i32 [ %spec.select1183, %._crit_edge1639 ], [ 0, %.thread2029 ]
  %.08742033 = phi ptr [ %24, %._crit_edge1639 ], [ %23, %.thread2029 ]
  %.1875.lcssa = phi ptr [ %.lcssa2319, %._crit_edge1639 ], [ %23, %.thread2029 ]
  %.val1131 = load i8, ptr getelementptr inbounds (i8, ptr @stbsp_vsprintfcb.hexu, i64 17), align 1
  %.val1132 = load i8, ptr getelementptr inbounds (i8, ptr @stbsp_vsprintfcb.hex, i64 17), align 1
  %338 = select i1 %256, i8 %.val1131, i8 %.val1132
  store i8 %338, ptr %25, align 1, !tbaa !5
  %339 = icmp slt i32 %282, 0
  br i1 %339, label %340, label %342

340:                                              ; preds = %337
  store i8 45, ptr %26, align 1, !tbaa !5
  %341 = sub nsw i32 0, %282
  br label %343

342:                                              ; preds = %337
  store i8 43, ptr %26, align 1, !tbaa !5
  br label %343

343:                                              ; preds = %342, %340
  %.promoted1642 = phi i32 [ %282, %342 ], [ %341, %340 ]
  %344 = icmp ult i32 %.promoted1642, 1000
  br i1 %344, label %345, label %.lr.ph1645.preheader

345:                                              ; preds = %343
  %346 = icmp ugt i32 %.promoted1642, 99
  br i1 %346, label %.lr.ph1645.preheader, label %347

347:                                              ; preds = %345
  %348 = icmp ugt i32 %.promoted1642, 9
  br i1 %348, label %.lr.ph1645.preheader, label %349

349:                                              ; preds = %347
  store i8 3, ptr %9, align 1, !tbaa !5
  %350 = trunc nuw nsw i32 %.promoted1642 to i8
  %351 = or disjoint i8 %350, 48
  store i8 %351, ptr %29, align 1, !tbaa !5
  br label %._crit_edge1646

.lr.ph1645.preheader:                             ; preds = %347, %343, %345
  %352 = phi i1 [ false, %345 ], [ false, %343 ], [ true, %347 ]
  %.ph = phi i32 [ 5, %345 ], [ 6, %343 ], [ 4, %347 ]
  %353 = trunc nuw nsw i32 %.ph to i8
  store i8 %353, ptr %9, align 1, !tbaa !5
  %354 = urem i32 %.promoted1642, 10
  %355 = trunc nuw nsw i32 %354 to i8
  %356 = or disjoint i8 %355, 48
  %357 = zext nneg i32 %.ph to i64
  %358 = getelementptr inbounds [8 x i8], ptr %9, i64 0, i64 %357
  store i8 %356, ptr %358, align 1, !tbaa !5
  %359 = add nsw i64 %357, -1
  %360 = sdiv i32 %.promoted1642, 10
  %361 = srem i32 %360, 10
  %362 = trunc nsw i32 %361 to i8
  %363 = add nsw i8 %362, 48
  %364 = getelementptr inbounds [8 x i8], ptr %9, i64 0, i64 %359
  store i8 %363, ptr %364, align 1, !tbaa !5
  br i1 %352, label %._crit_edge1646, label %.lr.ph1645.1

.lr.ph1645.1:                                     ; preds = %.lr.ph1645.preheader
  %365 = add nsw i64 %357, -2
  %366 = sdiv i32 %.promoted1642, 100
  %367 = srem i32 %366, 10
  %368 = trunc nsw i32 %367 to i8
  %369 = add nsw i8 %368, 48
  %370 = getelementptr inbounds [8 x i8], ptr %9, i64 0, i64 %365
  store i8 %369, ptr %370, align 1, !tbaa !5
  br i1 %344, label %._crit_edge1646, label %.lr.ph1645.2

.lr.ph1645.2:                                     ; preds = %.lr.ph1645.1
  %371 = add nsw i64 %357, -3
  %372 = sdiv i32 %.promoted1642, 1000
  %373 = srem i32 %372, 10
  %374 = trunc nsw i32 %373 to i8
  %375 = add nsw i8 %374, 48
  %376 = getelementptr inbounds [8 x i8], ptr %9, i64 0, i64 %371
  store i8 %375, ptr %376, align 1, !tbaa !5
  br label %._crit_edge1646

._crit_edge1646:                                  ; preds = %.lr.ph1645.preheader, %.lr.ph1645.1, %.lr.ph1645.2, %349
  %377 = ptrtoint ptr %.1875.lcssa to i64
  %378 = ptrtoint ptr %.08742033 to i64
  %379 = sub i64 %377, %378
  %380 = trunc i64 %379 to i32
  store i32 %380, ptr %12, align 4, !tbaa !8
  %381 = sub i64 %377, %22
  %382 = trunc i64 %381 to i32
  store i32 %382, ptr %10, align 4, !tbaa !8
  br label %974

383:                                              ; preds = %202, %202
  %384 = icmp eq i8 %203, 71
  %385 = select i1 %384, ptr @stbsp_vsprintfcb.hexu, ptr @stbsp_vsprintfcb.hex
  %386 = load i32, ptr %20, align 4
  %387 = icmp ult i32 %386, 161
  br i1 %387, label %388, label %393

388:                                              ; preds = %383
  %389 = load ptr, ptr %15, align 8
  %390 = zext nneg i32 %386 to i64
  %391 = getelementptr i8, ptr %389, i64 %390
  %392 = add nuw nsw i32 %386, 16
  store i32 %392, ptr %20, align 4
  br label %396

393:                                              ; preds = %383
  %394 = load ptr, ptr %14, align 8
  %395 = getelementptr i8, ptr %394, i64 8
  store ptr %395, ptr %14, align 8
  br label %396

396:                                              ; preds = %393, %388
  %397 = phi ptr [ %391, %388 ], [ %394, %393 ]
  %398 = load double, ptr %397, align 8, !tbaa !16
  %399 = icmp eq i32 %.1808, -1
  %spec.store.select19 = call i32 @llvm.umax.i32(i32 %.1808, i32 1)
  %.2809 = select i1 %399, i32 6, i32 %spec.store.select19
  %400 = add i32 %.2809, 2147483647
  %401 = or i32 %400, -2147483648
  %402 = call i32 @stbsp__real_to_str(ptr noundef nonnull %13, ptr noundef nonnull %10, ptr noundef nonnull %6, ptr noundef nonnull %12, double noundef %398, i32 noundef %401)
  %.not1105 = icmp eq i32 %402, 0
  %403 = or i32 %.3835, 128
  %.5837 = select i1 %.not1105, i32 %.3835, i32 %403
  %404 = load i32, ptr %10, align 4
  %405 = icmp ugt i32 %404, %.2809
  br i1 %405, label %406, label %407

406:                                              ; preds = %396
  store i32 %.2809, ptr %10, align 4, !tbaa !8
  br label %407

407:                                              ; preds = %406, %396
  %.promoted = phi i32 [ %.2809, %406 ], [ %404, %396 ]
  %408 = icmp ugt i32 %.promoted, 1
  br i1 %408, label %.lr.ph1565, label %.critedge22

.lr.ph1565:                                       ; preds = %407
  %409 = load ptr, ptr %13, align 8, !tbaa !14
  %410 = zext i32 %.promoted to i64
  br label %411

411:                                              ; preds = %.lr.ph1565, %416
  %indvars.iv = phi i64 [ %410, %.lr.ph1565 ], [ %indvars.iv.next, %416 ]
  %.38101563 = phi i32 [ %.2809, %.lr.ph1565 ], [ %417, %416 ]
  %indvars.iv.next = add nsw i64 %indvars.iv, -1
  %412 = and i64 %indvars.iv.next, 4294967295
  %413 = getelementptr inbounds i8, ptr %409, i64 %412
  %414 = load i8, ptr %413, align 1, !tbaa !5
  %415 = icmp eq i8 %414, 48
  br i1 %415, label %416, label %.critedge22.loopexit.split.loop.exit2137

416:                                              ; preds = %411
  %indvars = trunc i64 %indvars.iv.next to i32
  %417 = add nsw i32 %.38101563, -1
  store i32 %indvars, ptr %10, align 4, !tbaa !8
  %418 = icmp ugt i32 %indvars, 1
  %419 = icmp ne i32 %417, 0
  %or.cond = select i1 %418, i1 %419, i1 false
  br i1 %or.cond, label %411, label %.critedge22, !llvm.loop !23

.critedge22.loopexit.split.loop.exit2137:         ; preds = %411
  %420 = trunc nuw i64 %indvars.iv to i32
  br label %.critedge22

.critedge22:                                      ; preds = %416, %.critedge22.loopexit.split.loop.exit2137, %407
  %.3810.lcssa = phi i32 [ %.2809, %407 ], [ %.38101563, %.critedge22.loopexit.split.loop.exit2137 ], [ %417, %416 ]
  %.lcssa1465 = phi i32 [ %.promoted, %407 ], [ %420, %.critedge22.loopexit.split.loop.exit2137 ], [ %indvars, %416 ]
  %421 = load i32, ptr %12, align 4
  %422 = icmp slt i32 %421, -3
  %423 = icmp sgt i32 %421, %.2809
  %or.cond1184 = or i1 %422, %423
  br i1 %or.cond1184, label %424, label %429

424:                                              ; preds = %.critedge22
  %425 = icmp sgt i32 %.3810.lcssa, %.lcssa1465
  br i1 %425, label %426, label %428

426:                                              ; preds = %424
  %427 = add i32 %.lcssa1465, -1
  br label %458

428:                                              ; preds = %424
  %spec.select1185 = call i32 @llvm.usub.sat.i32(i32 %.3810.lcssa, i32 1)
  br label %458

429:                                              ; preds = %.critedge22
  %430 = icmp sgt i32 %421, 0
  br i1 %430, label %431, label %435

431:                                              ; preds = %429
  %432 = icmp slt i32 %421, %.lcssa1465
  %433 = sub i32 %.lcssa1465, %421
  %434 = select i1 %432, i32 %433, i32 0
  br label %581

435:                                              ; preds = %429
  %436 = call i32 @llvm.smin.i32(i32 %.3810.lcssa, i32 %.lcssa1465)
  %437 = sub i32 %436, %421
  br label %581

438:                                              ; preds = %202, %202
  %439 = icmp eq i8 %203, 69
  %440 = select i1 %439, ptr @stbsp_vsprintfcb.hexu, ptr @stbsp_vsprintfcb.hex
  %441 = load i32, ptr %20, align 4
  %442 = icmp ult i32 %441, 161
  br i1 %442, label %443, label %448

443:                                              ; preds = %438
  %444 = load ptr, ptr %15, align 8
  %445 = zext nneg i32 %441 to i64
  %446 = getelementptr i8, ptr %444, i64 %445
  %447 = add nuw nsw i32 %441, 16
  store i32 %447, ptr %20, align 4
  br label %451

448:                                              ; preds = %438
  %449 = load ptr, ptr %14, align 8
  %450 = getelementptr i8, ptr %449, i64 8
  store ptr %450, ptr %14, align 8
  br label %451

451:                                              ; preds = %448, %443
  %452 = phi ptr [ %446, %443 ], [ %449, %448 ]
  %453 = load double, ptr %452, align 8, !tbaa !16
  %454 = icmp eq i32 %.1808, -1
  %spec.store.select23 = select i1 %454, i32 6, i32 %.1808
  %455 = or i32 %spec.store.select23, -2147483648
  %456 = call i32 @stbsp__real_to_str(ptr noundef nonnull %13, ptr noundef nonnull %10, ptr noundef nonnull %6, ptr noundef nonnull %12, double noundef %453, i32 noundef %455)
  %.not1104 = icmp eq i32 %456, 0
  %457 = or i32 %.3835, 128
  %spec.select1186 = select i1 %.not1104, i32 %.3835, i32 %457
  br label %458

458:                                              ; preds = %451, %428, %426
  %.0916 = phi ptr [ %385, %426 ], [ %385, %428 ], [ %440, %451 ]
  %.6838 = phi i32 [ %.5837, %426 ], [ %.5837, %428 ], [ %spec.select1186, %451 ]
  %.4811 = phi i32 [ %427, %426 ], [ %spec.select1185, %428 ], [ %spec.store.select23, %451 ]
  store i8 0, ptr %9, align 1, !tbaa !5
  call void @stbsp__lead_sign(i32 noundef %.6838, ptr noundef nonnull %8)
  %459 = load i32, ptr %12, align 4, !tbaa !8
  %460 = icmp eq i32 %459, 28672
  %461 = load ptr, ptr %13, align 8, !tbaa !14
  %462 = ptrtoint ptr %461 to i64
  br i1 %460, label %974, label %463

463:                                              ; preds = %458
  %464 = load i8, ptr %461, align 1, !tbaa !5
  store i8 %464, ptr %21, align 16, !tbaa !5
  %.not1125 = icmp eq i32 %.4811, 0
  br i1 %.not1125, label %467, label %465

465:                                              ; preds = %463
  %466 = load i8, ptr @stbsp__period, align 1, !tbaa !5
  store i8 %466, ptr %23, align 1, !tbaa !5
  br label %467

467:                                              ; preds = %465, %463
  %.2876 = phi ptr [ %24, %465 ], [ %23, %463 ]
  %.28762243 = ptrtoint ptr %.2876 to i64
  %468 = load i32, ptr %10, align 4, !tbaa !8
  %469 = add i32 %468, -1
  %470 = icmp ugt i32 %469, %.4811
  br i1 %470, label %471, label %473

471:                                              ; preds = %467
  %472 = add nuw nsw i32 %.4811, 1
  store i32 %472, ptr %10, align 4, !tbaa !8
  br label %473

473:                                              ; preds = %471, %467
  %474 = phi i32 [ %472, %471 ], [ %468, %467 ]
  %475 = icmp ugt i32 %474, 1
  br i1 %475, label %.lr.ph1626.preheader, label %._crit_edge1627

.lr.ph1626.preheader:                             ; preds = %473
  %wide.trip.count = zext i32 %474 to i64
  %476 = add nsw i64 %wide.trip.count, -1
  %min.iters.check2247 = icmp ult i32 %474, 33
  %477 = sub i64 %462, %.28762243
  %diff.check2244 = icmp ugt i64 %477, -33
  %or.cond2263 = select i1 %min.iters.check2247, i1 true, i1 %diff.check2244
  br i1 %or.cond2263, label %.lr.ph1626.preheader2273, label %vector.ph2248

vector.ph2248:                                    ; preds = %.lr.ph1626.preheader
  %n.vec2250 = and i64 %476, -32
  %ind.end2251 = or disjoint i64 %n.vec2250, 1
  %ind.end2253 = getelementptr i8, ptr %.2876, i64 %n.vec2250
  br label %vector.body2255

vector.body2255:                                  ; preds = %vector.body2255, %vector.ph2248
  %index2256 = phi i64 [ 0, %vector.ph2248 ], [ %index.next2261, %vector.body2255 ]
  %offset.idx = or disjoint i64 %index2256, 1
  %next.gep2257 = getelementptr i8, ptr %.2876, i64 %index2256
  %478 = getelementptr inbounds i8, ptr %461, i64 %offset.idx
  %479 = getelementptr inbounds i8, ptr %478, i64 16
  %wide.load2259 = load <16 x i8>, ptr %478, align 1, !tbaa !5
  %wide.load2260 = load <16 x i8>, ptr %479, align 1, !tbaa !5
  %480 = getelementptr i8, ptr %next.gep2257, i64 16
  store <16 x i8> %wide.load2259, ptr %next.gep2257, align 1, !tbaa !5
  store <16 x i8> %wide.load2260, ptr %480, align 1, !tbaa !5
  %index.next2261 = add nuw i64 %index2256, 32
  %481 = icmp eq i64 %index.next2261, %n.vec2250
  br i1 %481, label %middle.block2245, label %vector.body2255, !llvm.loop !24

middle.block2245:                                 ; preds = %vector.body2255
  %cmp.n2262 = icmp eq i64 %476, %n.vec2250
  br i1 %cmp.n2262, label %._crit_edge1627, label %.lr.ph1626.preheader2273

.lr.ph1626.preheader2273:                         ; preds = %middle.block2245, %.lr.ph1626.preheader
  %indvars.iv1951.ph = phi i64 [ 1, %.lr.ph1626.preheader ], [ %ind.end2251, %middle.block2245 ]
  %.38771624.ph = phi ptr [ %.2876, %.lr.ph1626.preheader ], [ %ind.end2253, %middle.block2245 ]
  %482 = sub nsw i64 %wide.trip.count, %indvars.iv1951.ph
  %xtraiter2362 = and i64 %482, 7
  %lcmp.mod2363.not = icmp eq i64 %xtraiter2362, 0
  br i1 %lcmp.mod2363.not, label %.lr.ph1626.prol.loopexit, label %.lr.ph1626.prol

.lr.ph1626.prol:                                  ; preds = %.lr.ph1626.preheader2273, %.lr.ph1626.prol
  %indvars.iv1951.prol = phi i64 [ %indvars.iv.next1952.prol, %.lr.ph1626.prol ], [ %indvars.iv1951.ph, %.lr.ph1626.preheader2273 ]
  %.38771624.prol = phi ptr [ %485, %.lr.ph1626.prol ], [ %.38771624.ph, %.lr.ph1626.preheader2273 ]
  %prol.iter2364 = phi i64 [ %prol.iter2364.next, %.lr.ph1626.prol ], [ 0, %.lr.ph1626.preheader2273 ]
  %483 = getelementptr inbounds i8, ptr %461, i64 %indvars.iv1951.prol
  %484 = load i8, ptr %483, align 1, !tbaa !5
  %485 = getelementptr inbounds i8, ptr %.38771624.prol, i64 1
  store i8 %484, ptr %.38771624.prol, align 1, !tbaa !5
  %indvars.iv.next1952.prol = add nuw nsw i64 %indvars.iv1951.prol, 1
  %prol.iter2364.next = add i64 %prol.iter2364, 1
  %prol.iter2364.cmp.not = icmp eq i64 %prol.iter2364.next, %xtraiter2362
  br i1 %prol.iter2364.cmp.not, label %.lr.ph1626.prol.loopexit, label %.lr.ph1626.prol, !llvm.loop !27

.lr.ph1626.prol.loopexit:                         ; preds = %.lr.ph1626.prol, %.lr.ph1626.preheader2273
  %.lcssa2316.unr = phi ptr [ poison, %.lr.ph1626.preheader2273 ], [ %485, %.lr.ph1626.prol ]
  %indvars.iv1951.unr = phi i64 [ %indvars.iv1951.ph, %.lr.ph1626.preheader2273 ], [ %indvars.iv.next1952.prol, %.lr.ph1626.prol ]
  %.38771624.unr = phi ptr [ %.38771624.ph, %.lr.ph1626.preheader2273 ], [ %485, %.lr.ph1626.prol ]
  %486 = sub nsw i64 %indvars.iv1951.ph, %wide.trip.count
  %487 = icmp ugt i64 %486, -8
  br i1 %487, label %._crit_edge1627, label %.lr.ph1626.preheader2273.new

.lr.ph1626.preheader2273.new:                     ; preds = %.lr.ph1626.prol.loopexit
  %invariant.gep2485 = getelementptr i8, ptr %461, i64 1
  %invariant.gep2487 = getelementptr i8, ptr %461, i64 2
  %invariant.gep2489 = getelementptr i8, ptr %461, i64 3
  %invariant.gep2491 = getelementptr i8, ptr %461, i64 4
  %invariant.gep2493 = getelementptr i8, ptr %461, i64 5
  %invariant.gep2495 = getelementptr i8, ptr %461, i64 6
  %invariant.gep2497 = getelementptr i8, ptr %461, i64 7
  br label %.lr.ph1626

.lr.ph1626:                                       ; preds = %.lr.ph1626, %.lr.ph1626.preheader2273.new
  %indvars.iv1951 = phi i64 [ %indvars.iv1951.unr, %.lr.ph1626.preheader2273.new ], [ %indvars.iv.next1952.7, %.lr.ph1626 ]
  %.38771624 = phi ptr [ %.38771624.unr, %.lr.ph1626.preheader2273.new ], [ %504, %.lr.ph1626 ]
  %488 = getelementptr inbounds i8, ptr %461, i64 %indvars.iv1951
  %489 = load i8, ptr %488, align 1, !tbaa !5
  %490 = getelementptr inbounds i8, ptr %.38771624, i64 1
  store i8 %489, ptr %.38771624, align 1, !tbaa !5
  %gep2486 = getelementptr i8, ptr %invariant.gep2485, i64 %indvars.iv1951
  %491 = load i8, ptr %gep2486, align 1, !tbaa !5
  %492 = getelementptr inbounds i8, ptr %.38771624, i64 2
  store i8 %491, ptr %490, align 1, !tbaa !5
  %gep2488 = getelementptr i8, ptr %invariant.gep2487, i64 %indvars.iv1951
  %493 = load i8, ptr %gep2488, align 1, !tbaa !5
  %494 = getelementptr inbounds i8, ptr %.38771624, i64 3
  store i8 %493, ptr %492, align 1, !tbaa !5
  %gep2490 = getelementptr i8, ptr %invariant.gep2489, i64 %indvars.iv1951
  %495 = load i8, ptr %gep2490, align 1, !tbaa !5
  %496 = getelementptr inbounds i8, ptr %.38771624, i64 4
  store i8 %495, ptr %494, align 1, !tbaa !5
  %gep2492 = getelementptr i8, ptr %invariant.gep2491, i64 %indvars.iv1951
  %497 = load i8, ptr %gep2492, align 1, !tbaa !5
  %498 = getelementptr inbounds i8, ptr %.38771624, i64 5
  store i8 %497, ptr %496, align 1, !tbaa !5
  %gep2494 = getelementptr i8, ptr %invariant.gep2493, i64 %indvars.iv1951
  %499 = load i8, ptr %gep2494, align 1, !tbaa !5
  %500 = getelementptr inbounds i8, ptr %.38771624, i64 6
  store i8 %499, ptr %498, align 1, !tbaa !5
  %gep2496 = getelementptr i8, ptr %invariant.gep2495, i64 %indvars.iv1951
  %501 = load i8, ptr %gep2496, align 1, !tbaa !5
  %502 = getelementptr inbounds i8, ptr %.38771624, i64 7
  store i8 %501, ptr %500, align 1, !tbaa !5
  %gep2498 = getelementptr i8, ptr %invariant.gep2497, i64 %indvars.iv1951
  %503 = load i8, ptr %gep2498, align 1, !tbaa !5
  %504 = getelementptr inbounds i8, ptr %.38771624, i64 8
  store i8 %503, ptr %502, align 1, !tbaa !5
  %indvars.iv.next1952.7 = add nuw nsw i64 %indvars.iv1951, 8
  %exitcond.not.7 = icmp eq i64 %indvars.iv.next1952.7, %wide.trip.count
  br i1 %exitcond.not.7, label %._crit_edge1627, label %.lr.ph1626, !llvm.loop !28

._crit_edge1627:                                  ; preds = %.lr.ph1626.prol.loopexit, %.lr.ph1626, %middle.block2245, %473
  %.3877.lcssa = phi ptr [ %.2876, %473 ], [ %ind.end2253, %middle.block2245 ], [ %.lcssa2316.unr, %.lr.ph1626.prol.loopexit ], [ %504, %.lr.ph1626 ]
  %.neg1408 = add i32 %.4811, 1
  %505 = sub i32 %.neg1408, %474
  %506 = getelementptr inbounds i8, ptr %.0916, i64 14
  %507 = load i8, ptr %506, align 1, !tbaa !5
  store i8 %507, ptr %25, align 1, !tbaa !5
  %508 = icmp slt i32 %459, 1
  br i1 %508, label %509, label %511

509:                                              ; preds = %._crit_edge1627
  store i8 45, ptr %26, align 1, !tbaa !5
  %510 = sub nsw i32 1, %459
  br label %513

511:                                              ; preds = %._crit_edge1627
  %512 = add nsw i32 %459, -1
  store i8 43, ptr %26, align 1, !tbaa !5
  br label %513

513:                                              ; preds = %511, %509
  %514 = phi i32 [ %512, %511 ], [ %510, %509 ]
  %515 = icmp ugt i32 %514, 99
  %516 = select i1 %515, i32 5, i32 4
  %517 = trunc nuw nsw i32 %516 to i8
  store i8 %517, ptr %9, align 1, !tbaa !5
  %518 = urem i32 %514, 10
  %519 = trunc nuw nsw i32 %518 to i8
  %520 = or disjoint i8 %519, 48
  %521 = zext nneg i32 %516 to i64
  %522 = getelementptr inbounds [8 x i8], ptr %9, i64 0, i64 %521
  store i8 %520, ptr %522, align 1, !tbaa !5
  %indvars.iv.next1956 = add nsw i64 %521, -1
  %523 = sdiv i32 %514, 10
  %524 = srem i32 %523, 10
  %525 = trunc nsw i32 %524 to i8
  %526 = add nsw i8 %525, 48
  %527 = getelementptr inbounds [8 x i8], ptr %9, i64 0, i64 %indvars.iv.next1956
  store i8 %526, ptr %527, align 1, !tbaa !5
  br i1 %515, label %528, label %.loopexit1435

528:                                              ; preds = %513
  %indvars.iv.next1956.1 = add nsw i64 %521, -2
  %529 = sdiv i32 %514, 100
  %530 = srem i32 %529, 10
  %531 = trunc nsw i32 %530 to i8
  %532 = add nsw i8 %531, 48
  %533 = getelementptr inbounds [8 x i8], ptr %9, i64 0, i64 %indvars.iv.next1956.1
  store i8 %532, ptr %533, align 1, !tbaa !5
  br label %.loopexit1435

534:                                              ; preds = %202
  %535 = load i32, ptr %20, align 4
  %536 = icmp ult i32 %535, 161
  br i1 %536, label %537, label %542

537:                                              ; preds = %534
  %538 = load ptr, ptr %15, align 8
  %539 = zext nneg i32 %535 to i64
  %540 = getelementptr i8, ptr %538, i64 %539
  %541 = add nuw nsw i32 %535, 16
  store i32 %541, ptr %20, align 4
  br label %545

542:                                              ; preds = %534
  %543 = load ptr, ptr %14, align 8
  %544 = getelementptr i8, ptr %543, i64 8
  store ptr %544, ptr %14, align 8
  br label %545

545:                                              ; preds = %537, %542
  %546 = phi ptr [ %540, %537 ], [ %543, %542 ]
  %547 = load double, ptr %546, align 8, !tbaa !16
  %.pre2021 = and i32 %.3835, 256
  %.not1101 = icmp eq i32 %.pre2021, 0
  br i1 %.not1101, label %.loopexit1444, label %548

548:                                              ; preds = %.thread2036, %545
  %.58122044 = phi i32 [ %.10817, %.thread2036 ], [ %.1808, %545 ]
  %.78392043 = phi i32 [ %.16848, %.thread2036 ], [ %.3835, %545 ]
  %.09552042 = phi double [ %922, %.thread2036 ], [ %547, %545 ]
  %549 = and i32 %.78392043, 2048
  %.not1102 = icmp eq i32 %549, 0
  %spec.store.select24 = select i1 %.not1102, double 1.000000e+03, double 1.024000e+03
  %550 = icmp ult i32 %.78392043, 67108864
  br i1 %550, label %.lr.ph1557, label %.loopexit1444

.lr.ph1557:                                       ; preds = %548
  %551 = fneg double %spec.store.select24
  %552 = fcmp olt double %.09552042, %spec.store.select24
  %553 = fcmp ogt double %.09552042, %551
  %or.cond1188 = and i1 %552, %553
  br i1 %or.cond1188, label %.loopexit1444, label %554

554:                                              ; preds = %.lr.ph1557
  %555 = fdiv double %.09552042, %spec.store.select24
  %556 = add nuw nsw i32 %.78392043, 16777216
  %557 = icmp ult i32 %.78392043, 50331648
  br i1 %557, label %558, label %.loopexit1444, !llvm.loop !29

558:                                              ; preds = %554
  %559 = fcmp olt double %555, %spec.store.select24
  %560 = fcmp ogt double %555, %551
  %or.cond1188.1 = and i1 %559, %560
  br i1 %or.cond1188.1, label %.loopexit1444, label %561

561:                                              ; preds = %558
  %562 = fdiv double %555, %spec.store.select24
  %563 = add nuw nsw i32 %.78392043, 33554432
  %564 = icmp ult i32 %.78392043, 33554432
  br i1 %564, label %565, label %.loopexit1444, !llvm.loop !29

565:                                              ; preds = %561
  %566 = fcmp olt double %562, %spec.store.select24
  %567 = fcmp ogt double %562, %551
  %or.cond1188.2 = and i1 %566, %567
  br i1 %or.cond1188.2, label %.loopexit1444, label %568

568:                                              ; preds = %565
  %569 = fdiv double %562, %spec.store.select24
  %570 = add nuw nsw i32 %.78392043, 50331648
  %571 = icmp ult i32 %.78392043, 16777216
  br i1 %571, label %572, label %.loopexit1444, !llvm.loop !29

572:                                              ; preds = %568
  %573 = fcmp olt double %569, %spec.store.select24
  %574 = fcmp ogt double %569, %551
  %or.cond1188.3 = and i1 %573, %574
  br i1 %or.cond1188.3, label %.loopexit1444, label %575

575:                                              ; preds = %572
  %576 = fdiv double %569, %spec.store.select24
  %577 = or disjoint i32 %.78392043, 67108864
  br label %.loopexit1444

.loopexit1444:                                    ; preds = %.lr.ph1557, %554, %558, %561, %565, %568, %572, %575, %548, %545
  %.58122045 = phi i32 [ %.1808, %545 ], [ %.58122044, %548 ], [ %.58122044, %575 ], [ %.58122044, %572 ], [ %.58122044, %568 ], [ %.58122044, %565 ], [ %.58122044, %561 ], [ %.58122044, %558 ], [ %.58122044, %554 ], [ %.58122044, %.lr.ph1557 ]
  %.2957 = phi double [ %547, %545 ], [ %.09552042, %548 ], [ %.09552042, %.lr.ph1557 ], [ %555, %554 ], [ %555, %558 ], [ %562, %561 ], [ %562, %565 ], [ %569, %568 ], [ %569, %572 ], [ %576, %575 ]
  %.9841 = phi i32 [ %.3835, %545 ], [ %.78392043, %548 ], [ %.78392043, %.lr.ph1557 ], [ %556, %554 ], [ %556, %558 ], [ %563, %561 ], [ %563, %565 ], [ %570, %568 ], [ %570, %572 ], [ %577, %575 ]
  %578 = icmp eq i32 %.58122045, -1
  %spec.store.select25 = select i1 %578, i32 6, i32 %.58122045
  %579 = call i32 @stbsp__real_to_str(ptr noundef nonnull %13, ptr noundef nonnull %10, ptr noundef nonnull %6, ptr noundef nonnull %12, double noundef %.2957, i32 noundef %spec.store.select25)
  %.not1103 = icmp eq i32 %579, 0
  %580 = or i32 %.9841, 128
  %spec.select1189 = select i1 %.not1103, i32 %.9841, i32 %580
  br label %581

581:                                              ; preds = %.loopexit1444, %431, %435
  %.10842 = phi i32 [ %.5837, %431 ], [ %.5837, %435 ], [ %spec.select1189, %.loopexit1444 ]
  %.6813 = phi i32 [ %434, %431 ], [ %437, %435 ], [ %spec.store.select25, %.loopexit1444 ]
  store i8 0, ptr %9, align 1, !tbaa !5
  call void @stbsp__lead_sign(i32 noundef %.10842, ptr noundef nonnull %8)
  %582 = load i32, ptr %12, align 4, !tbaa !8
  %583 = icmp eq i32 %582, 28672
  br i1 %583, label %584, label %586

584:                                              ; preds = %581
  %585 = load ptr, ptr %13, align 8, !tbaa !14
  br label %974

586:                                              ; preds = %581
  %587 = icmp slt i32 %582, 1
  br i1 %587, label %588, label %649

588:                                              ; preds = %586
  store i8 48, ptr %21, align 16, !tbaa !5
  %.not1115 = icmp eq i32 %.6813, 0
  br i1 %.not1115, label %591, label %589

589:                                              ; preds = %588
  %590 = load i8, ptr @stbsp__period, align 1, !tbaa !5
  store i8 %590, ptr %23, align 1, !tbaa !5
  br label %591

591:                                              ; preds = %589, %588
  %.4878 = phi ptr [ %24, %589 ], [ %23, %588 ]
  %.4878.fr = freeze ptr %.4878
  %592 = sub nsw i32 0, %582
  %spec.select1190 = call i32 @llvm.smin.i32(i32 %.6813, i32 %592)
  %.not11161597 = icmp eq i32 %spec.select1190, 0
  %593 = ptrtoint ptr %.4878.fr to i64
  %594 = and i64 %593, 3
  %595 = icmp eq i64 %594, 0
  %or.cond11931598 = or i1 %.not11161597, %595
  br i1 %or.cond11931598, label %.preheader1437, label %.lr.ph1602.preheader

.lr.ph1602.preheader:                             ; preds = %591
  %596 = trunc i64 %593 to i2
  %597 = xor i2 %596, -1
  %598 = zext i2 %597 to i64
  %599 = add i32 %spec.select1190, -1
  %600 = zext i32 %599 to i64
  %umin1940 = call i64 @llvm.umin.i64(i64 %598, i64 %600)
  %601 = add nuw nsw i64 %umin1940, 1
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %.4878.fr, i8 48, i64 %601, i1 false), !tbaa !5
  %602 = zext i2 %597 to i32
  %scevgep1941 = getelementptr i8, ptr %.4878.fr, i64 1
  %scevgep1943 = getelementptr i8, ptr %scevgep1941, i64 %umin1940
  %603 = call i32 @llvm.usub.sat.i32(i32 %599, i32 %602)
  br label %.preheader1437

.preheader1437:                                   ; preds = %.lr.ph1602.preheader, %591
  %.0958.lcssa = phi i32 [ %spec.select1190, %591 ], [ %603, %.lr.ph1602.preheader ]
  %.5879.lcssa = phi ptr [ %.4878.fr, %591 ], [ %scevgep1943, %.lr.ph1602.preheader ]
  %604 = icmp sgt i32 %.0958.lcssa, 3
  br i1 %604, label %.lr.ph1607.preheader, label %.preheader1436

.lr.ph1607.preheader:                             ; preds = %.preheader1437
  %605 = call i32 @llvm.usub.sat.i32(i32 %.0958.lcssa, i32 7)
  %606 = add nuw i32 %605, 3
  %607 = and i32 %606, -4
  %608 = zext nneg i32 %607 to i64
  %609 = add nuw nsw i64 %608, 4
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %.5879.lcssa, i8 48, i64 %609, i1 false), !tbaa !8
  %scevgep1945 = getelementptr i8, ptr %.5879.lcssa, i64 4
  %scevgep1947 = getelementptr i8, ptr %scevgep1945, i64 %608
  %610 = and i32 %606, -4
  %611 = add nsw i32 %.0958.lcssa, -4
  %612 = sub nsw i32 %611, %610
  br label %.preheader1436

.preheader1436:                                   ; preds = %.lr.ph1607.preheader, %.preheader1437
  %.1959.lcssa = phi i32 [ %.0958.lcssa, %.preheader1437 ], [ %612, %.lr.ph1607.preheader ]
  %.6880.lcssa = phi ptr [ %.5879.lcssa, %.preheader1437 ], [ %scevgep1947, %.lr.ph1607.preheader ]
  %.not11171610 = icmp eq i32 %.1959.lcssa, 0
  br i1 %.not11171610, label %._crit_edge1614, label %.lr.ph1613.preheader

.lr.ph1613.preheader:                             ; preds = %.preheader1436
  %613 = zext i32 %.1959.lcssa to i64
  call void @llvm.memset.p0.i64(ptr align 1 %.6880.lcssa, i8 48, i64 %613, i1 false), !tbaa !5
  %614 = add i32 %.1959.lcssa, -1
  %615 = zext i32 %614 to i64
  %scevgep1948 = getelementptr i8, ptr %.6880.lcssa, i64 1
  %scevgep1949 = getelementptr i8, ptr %scevgep1948, i64 %615
  br label %._crit_edge1614

._crit_edge1614:                                  ; preds = %.lr.ph1613.preheader, %.preheader1436
  %.7881.lcssa = phi ptr [ %.6880.lcssa, %.preheader1436 ], [ %scevgep1949, %.lr.ph1613.preheader ]
  %616 = load i32, ptr %10, align 4, !tbaa !8
  %617 = add i32 %616, %spec.select1190
  %618 = icmp sgt i32 %617, %.6813
  br i1 %618, label %619, label %621

619:                                              ; preds = %._crit_edge1614
  %620 = sub i32 %.6813, %spec.select1190
  store i32 %620, ptr %10, align 4, !tbaa !8
  br label %621

621:                                              ; preds = %619, %._crit_edge1614
  %622 = phi i32 [ %620, %619 ], [ %616, %._crit_edge1614 ]
  %.not11181616 = icmp eq i32 %622, 0
  br i1 %.not11181616, label %._crit_edge1621, label %.lr.ph1620.preheader

.lr.ph1620.preheader:                             ; preds = %621
  %smin = call i32 @llvm.smin.i32(i32 %.6813, i32 %617)
  %xtraiter = and i32 %622, 3
  %lcmp.mod.not = icmp eq i32 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.lr.ph1620.prol.loopexit, label %.lr.ph1620.prol

.lr.ph1620.prol:                                  ; preds = %.lr.ph1620.preheader, %.lr.ph1620.prol
  %.88821618.prol = phi ptr [ %626, %.lr.ph1620.prol ], [ %.7881.lcssa, %.lr.ph1620.preheader ]
  %.39611617.prol = phi i32 [ %627, %.lr.ph1620.prol ], [ %622, %.lr.ph1620.preheader ]
  %prol.iter = phi i32 [ %prol.iter.next, %.lr.ph1620.prol ], [ 0, %.lr.ph1620.preheader ]
  %623 = load ptr, ptr %13, align 8, !tbaa !14
  %624 = getelementptr inbounds i8, ptr %623, i64 1
  store ptr %624, ptr %13, align 8, !tbaa !14
  %625 = load i8, ptr %623, align 1, !tbaa !5
  %626 = getelementptr inbounds i8, ptr %.88821618.prol, i64 1
  store i8 %625, ptr %.88821618.prol, align 1, !tbaa !5
  %627 = add nsw i32 %.39611617.prol, -1
  %prol.iter.next = add i32 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i32 %prol.iter.next, %xtraiter
  br i1 %prol.iter.cmp.not, label %.lr.ph1620.prol.loopexit, label %.lr.ph1620.prol, !llvm.loop !30

.lr.ph1620.prol.loopexit:                         ; preds = %.lr.ph1620.prol, %.lr.ph1620.preheader
  %.lcssa2315.unr = phi ptr [ poison, %.lr.ph1620.preheader ], [ %626, %.lr.ph1620.prol ]
  %.88821618.unr = phi ptr [ %.7881.lcssa, %.lr.ph1620.preheader ], [ %626, %.lr.ph1620.prol ]
  %.39611617.unr = phi i32 [ %622, %.lr.ph1620.preheader ], [ %627, %.lr.ph1620.prol ]
  %628 = sub i32 %spec.select1190, %smin
  %629 = icmp ugt i32 %628, -4
  br i1 %629, label %._crit_edge1621, label %.lr.ph1620

.lr.ph1620:                                       ; preds = %.lr.ph1620.prol.loopexit, %.lr.ph1620
  %.88821618 = phi ptr [ %645, %.lr.ph1620 ], [ %.88821618.unr, %.lr.ph1620.prol.loopexit ]
  %.39611617 = phi i32 [ %646, %.lr.ph1620 ], [ %.39611617.unr, %.lr.ph1620.prol.loopexit ]
  %630 = load ptr, ptr %13, align 8, !tbaa !14
  %631 = getelementptr inbounds i8, ptr %630, i64 1
  store ptr %631, ptr %13, align 8, !tbaa !14
  %632 = load i8, ptr %630, align 1, !tbaa !5
  %633 = getelementptr inbounds i8, ptr %.88821618, i64 1
  store i8 %632, ptr %.88821618, align 1, !tbaa !5
  %634 = load ptr, ptr %13, align 8, !tbaa !14
  %635 = getelementptr inbounds i8, ptr %634, i64 1
  store ptr %635, ptr %13, align 8, !tbaa !14
  %636 = load i8, ptr %634, align 1, !tbaa !5
  %637 = getelementptr inbounds i8, ptr %.88821618, i64 2
  store i8 %636, ptr %633, align 1, !tbaa !5
  %638 = load ptr, ptr %13, align 8, !tbaa !14
  %639 = getelementptr inbounds i8, ptr %638, i64 1
  store ptr %639, ptr %13, align 8, !tbaa !14
  %640 = load i8, ptr %638, align 1, !tbaa !5
  %641 = getelementptr inbounds i8, ptr %.88821618, i64 3
  store i8 %640, ptr %637, align 1, !tbaa !5
  %642 = load ptr, ptr %13, align 8, !tbaa !14
  %643 = getelementptr inbounds i8, ptr %642, i64 1
  store ptr %643, ptr %13, align 8, !tbaa !14
  %644 = load i8, ptr %642, align 1, !tbaa !5
  %645 = getelementptr inbounds i8, ptr %.88821618, i64 4
  store i8 %644, ptr %641, align 1, !tbaa !5
  %646 = add nsw i32 %.39611617, -4
  %.not1118.3 = icmp eq i32 %646, 0
  br i1 %.not1118.3, label %._crit_edge1621, label %.lr.ph1620, !llvm.loop !31

._crit_edge1621:                                  ; preds = %.lr.ph1620.prol.loopexit, %.lr.ph1620, %621
  %.8882.lcssa = phi ptr [ %.7881.lcssa, %621 ], [ %.lcssa2315.unr, %.lr.ph1620.prol.loopexit ], [ %645, %.lr.ph1620 ]
  %647 = add i32 %spec.select1190, %622
  %648 = sub i32 %.6813, %647
  br label %749

649:                                              ; preds = %586
  %650 = and i32 %.10842, 64
  %.not1106 = icmp eq i32 %650, 0
  br i1 %.not1106, label %654, label %651

651:                                              ; preds = %649
  %652 = sub nsw i32 600, %582
  %653 = urem i32 %652, 3
  br label %654

654:                                              ; preds = %649, %651
  %655 = phi i32 [ %653, %651 ], [ 0, %649 ]
  %656 = load i32, ptr %10, align 4, !tbaa !8
  %.not1107 = icmp ult i32 %582, %656
  br i1 %.not1107, label %.preheader1438.outer, label %.preheader1443.outer

657:                                              ; preds = %.preheader1443.peel.next, %665, %.preheader1443.outer
  %.9883.lcssa = phi ptr [ %.9883.ph, %.preheader1443.outer ], [ %.9883.ph, %665 ], [ %669, %.preheader1443.peel.next ]
  %.1940 = phi i32 [ %.0939.ph, %.preheader1443.outer ], [ %666, %665 ], [ %.1940.ph, %.preheader1443.peel.next ]
  %658 = load ptr, ptr %13, align 8, !tbaa !14
  %659 = zext i32 %.5923.ph to i64
  %660 = getelementptr inbounds i8, ptr %658, i64 %659
  %661 = load i8, ptr %660, align 1, !tbaa !5
  %662 = getelementptr i8, ptr %.9883.lcssa, i64 1
  store i8 %661, ptr %.9883.lcssa, align 1, !tbaa !5
  %663 = add i32 %.5923.ph, 1
  %664 = load i32, ptr %10, align 4, !tbaa !8
  %.not1111 = icmp ult i32 %663, %664
  br i1 %.not1111, label %.preheader1443.outer, label %670

.preheader1443.outer:                             ; preds = %654, %657
  %.0939.ph = phi i32 [ %.1940, %657 ], [ %655, %654 ]
  %.5923.ph = phi i32 [ %663, %657 ], [ 0, %654 ]
  %.9883.ph = phi ptr [ %662, %657 ], [ %21, %654 ]
  br i1 %.not1106, label %657, label %665

665:                                              ; preds = %.preheader1443.outer
  %666 = add i32 %.0939.ph, 1
  %667 = icmp eq i32 %666, 4
  br i1 %667, label %.preheader1443.peel.next, label %657

.preheader1443.peel.next:                         ; preds = %665
  %668 = load i8, ptr @stbsp__comma, align 1, !tbaa !5
  %669 = getelementptr i8, ptr %.9883.ph, i64 1
  store i8 %668, ptr %.9883.ph, align 1, !tbaa !5
  %.1940.ph = select i1 %.not1106, i32 0, i32 1
  br label %657

670:                                              ; preds = %657
  %.9883.lcssa1929 = ptrtoint ptr %.9883.lcssa to i64
  %671 = load i32, ptr %12, align 4, !tbaa !8
  %672 = icmp ult i32 %663, %671
  br i1 %672, label %673, label %.loopexit1439

673:                                              ; preds = %670
  %674 = sub i32 %671, %663
  br i1 %.not1106, label %.preheader1442, label %.loopexit1441

.preheader1442:                                   ; preds = %673
  %.not11121571 = icmp eq i32 %674, 0
  %675 = ptrtoint ptr %662 to i64
  %676 = and i64 %675, 3
  %677 = icmp eq i64 %676, 0
  %or.cond11961572 = or i1 %.not11121571, %677
  br i1 %or.cond11961572, label %.preheader1440, label %.lr.ph1575.preheader

.lr.ph1575.preheader:                             ; preds = %.preheader1442
  %678 = trunc i64 %.9883.lcssa1929 to i2
  %679 = sub i2 -2, %678
  %680 = zext i2 %679 to i64
  %681 = add i32 %671, -2
  %682 = sub i32 %681, %.5923.ph
  %683 = zext i32 %682 to i64
  %umin = call i64 @llvm.umin.i64(i64 %680, i64 %683)
  %684 = add nuw nsw i64 %umin, 1
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %662, i8 48, i64 %684, i1 false), !tbaa !5
  %685 = zext i2 %679 to i32
  %scevgep1930 = getelementptr i8, ptr %.9883.lcssa, i64 2
  %scevgep1932 = getelementptr i8, ptr %scevgep1930, i64 %umin
  %686 = call i32 @llvm.usub.sat.i32(i32 %682, i32 %685)
  br label %.preheader1440

.preheader1440:                                   ; preds = %.lr.ph1575.preheader, %.preheader1442
  %.7925.lcssa = phi i32 [ %674, %.preheader1442 ], [ %686, %.lr.ph1575.preheader ]
  %.11885.lcssa = phi ptr [ %662, %.preheader1442 ], [ %scevgep1932, %.lr.ph1575.preheader ]
  %687 = icmp ugt i32 %.7925.lcssa, 3
  br i1 %687, label %.lr.ph1580.preheader, label %.loopexit1441

.lr.ph1580.preheader:                             ; preds = %.preheader1440
  %688 = and i32 %.7925.lcssa, -4
  %689 = add i32 %688, -4
  %690 = zext i32 %689 to i64
  %691 = add nuw nsw i64 %690, 4
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %.11885.lcssa, i8 48, i64 %691, i1 false), !tbaa !8
  %scevgep1934 = getelementptr i8, ptr %.11885.lcssa, i64 4
  %scevgep1935 = getelementptr i8, ptr %scevgep1934, i64 %690
  %692 = and i32 %.7925.lcssa, 3
  br label %.loopexit1441

.loopexit1441:                                    ; preds = %.lr.ph1580.preheader, %.preheader1440, %673
  %.9927 = phi i32 [ %674, %673 ], [ %.7925.lcssa, %.preheader1440 ], [ %692, %.lr.ph1580.preheader ]
  %.13887 = phi ptr [ %662, %673 ], [ %.11885.lcssa, %.preheader1440 ], [ %scevgep1935, %.lr.ph1580.preheader ]
  %.not11131583 = icmp eq i32 %.9927, 0
  br i1 %.not11131583, label %.loopexit1439, label %.lr.ph1588

.lr.ph1588:                                       ; preds = %.loopexit1441, %700
  %.148881586 = phi ptr [ %.15889, %700 ], [ %.13887, %.loopexit1441 ]
  %.109281585 = phi i32 [ %.11929, %700 ], [ %.9927, %.loopexit1441 ]
  %.39421584 = phi i32 [ %.5944, %700 ], [ %.1940, %.loopexit1441 ]
  br i1 %.not1106, label %698, label %693

693:                                              ; preds = %.lr.ph1588
  %694 = add i32 %.39421584, 1
  %695 = icmp eq i32 %694, 4
  br i1 %695, label %696, label %698

696:                                              ; preds = %693
  %697 = load i8, ptr @stbsp__comma, align 1, !tbaa !5
  store i8 %697, ptr %.148881586, align 1, !tbaa !5
  br label %700

698:                                              ; preds = %693, %.lr.ph1588
  %.4943 = phi i32 [ %694, %693 ], [ %.39421584, %.lr.ph1588 ]
  store i8 48, ptr %.148881586, align 1, !tbaa !5
  %699 = add i32 %.109281585, -1
  br label %700

700:                                              ; preds = %698, %696
  %.5944 = phi i32 [ 0, %696 ], [ %.4943, %698 ]
  %.11929 = phi i32 [ %.109281585, %696 ], [ %699, %698 ]
  %.15889 = getelementptr inbounds i8, ptr %.148881586, i64 1
  %.not1113 = icmp eq i32 %.11929, 0
  br i1 %.not1113, label %.loopexit1439, label %.lr.ph1588, !llvm.loop !32

.loopexit1439:                                    ; preds = %700, %.loopexit1441, %670
  %.16890 = phi ptr [ %662, %670 ], [ %.13887, %.loopexit1441 ], [ %.15889, %700 ]
  %701 = ptrtoint ptr %.16890 to i64
  %702 = sub i64 %701, %22
  %703 = trunc i64 %702 to i32
  %704 = add nsw i32 %703, 50331648
  %.not1114 = icmp eq i32 %.6813, 0
  br i1 %.not1114, label %749, label %705

705:                                              ; preds = %.loopexit1439
  %706 = load i8, ptr @stbsp__period, align 1, !tbaa !5
  %707 = getelementptr inbounds i8, ptr %.16890, i64 1
  store i8 %706, ptr %.16890, align 1, !tbaa !5
  br label %749

708:                                              ; preds = %.preheader1438.peel.next, %716, %.preheader1438.outer
  %.17891.lcssa = phi ptr [ %.17891.ph, %.preheader1438.outer ], [ %.17891.ph, %716 ], [ %720, %.preheader1438.peel.next ]
  %.7946 = phi i32 [ %.6945.ph, %.preheader1438.outer ], [ %717, %716 ], [ %.7946.ph, %.preheader1438.peel.next ]
  %709 = load ptr, ptr %13, align 8, !tbaa !14
  %710 = zext i32 %.12930.ph to i64
  %711 = getelementptr inbounds i8, ptr %709, i64 %710
  %712 = load i8, ptr %711, align 1, !tbaa !5
  %713 = getelementptr inbounds i8, ptr %.17891.lcssa, i64 1
  store i8 %712, ptr %.17891.lcssa, align 1, !tbaa !5
  %714 = add i32 %.12930.ph, 1
  %715 = load i32, ptr %12, align 4, !tbaa !8
  %.not1108 = icmp ult i32 %714, %715
  br i1 %.not1108, label %.preheader1438.outer, label %721

.preheader1438.outer:                             ; preds = %654, %708
  %.6945.ph = phi i32 [ %.7946, %708 ], [ %655, %654 ]
  %.12930.ph = phi i32 [ %714, %708 ], [ 0, %654 ]
  %.17891.ph = phi ptr [ %713, %708 ], [ %21, %654 ]
  br i1 %.not1106, label %708, label %716

716:                                              ; preds = %.preheader1438.outer
  %717 = add i32 %.6945.ph, 1
  %718 = icmp eq i32 %717, 4
  br i1 %718, label %.preheader1438.peel.next, label %708

.preheader1438.peel.next:                         ; preds = %716
  %719 = load i8, ptr @stbsp__comma, align 1, !tbaa !5
  %720 = getelementptr inbounds i8, ptr %.17891.ph, i64 1
  store i8 %719, ptr %.17891.ph, align 1, !tbaa !5
  %.7946.ph = select i1 %.not1106, i32 0, i32 1
  br label %708

721:                                              ; preds = %708
  %722 = ptrtoint ptr %713 to i64
  %723 = sub i64 %722, %22
  %724 = trunc i64 %723 to i32
  %725 = add nsw i32 %724, 50331648
  %.not1109 = icmp eq i32 %.6813, 0
  br i1 %.not1109, label %729, label %726

726:                                              ; preds = %721
  %727 = load i8, ptr @stbsp__period, align 1, !tbaa !5
  %728 = getelementptr inbounds i8, ptr %.17891.lcssa, i64 2
  store i8 %727, ptr %713, align 1, !tbaa !5
  %.pre2017 = load i32, ptr %12, align 4, !tbaa !8
  br label %729

729:                                              ; preds = %726, %721
  %730 = phi i32 [ %.pre2017, %726 ], [ %715, %721 ]
  %.19893 = phi ptr [ %728, %726 ], [ %713, %721 ]
  %731 = load i32, ptr %10, align 4, !tbaa !8
  %732 = sub i32 %731, %730
  %733 = icmp ugt i32 %732, %.6813
  br i1 %733, label %734, label %736

734:                                              ; preds = %729
  %735 = add nsw i32 %730, %.6813
  store i32 %735, ptr %10, align 4, !tbaa !8
  br label %736

736:                                              ; preds = %734, %729
  %737 = phi i32 [ %735, %734 ], [ %731, %729 ]
  %738 = icmp ult i32 %714, %737
  br i1 %738, label %.lr.ph1593.preheader, label %._crit_edge1594

.lr.ph1593.preheader:                             ; preds = %736
  %739 = zext i32 %714 to i64
  br label %.lr.ph1593

.lr.ph1593:                                       ; preds = %.lr.ph1593.preheader, %.lr.ph1593
  %indvars.iv1936 = phi i64 [ %739, %.lr.ph1593.preheader ], [ %indvars.iv.next1937, %.lr.ph1593 ]
  %.208941591 = phi ptr [ %.19893, %.lr.ph1593.preheader ], [ %743, %.lr.ph1593 ]
  %740 = load ptr, ptr %13, align 8, !tbaa !14
  %741 = getelementptr inbounds i8, ptr %740, i64 %indvars.iv1936
  %742 = load i8, ptr %741, align 1, !tbaa !5
  %743 = getelementptr inbounds i8, ptr %.208941591, i64 1
  store i8 %742, ptr %.208941591, align 1, !tbaa !5
  %indvars.iv.next1937 = add nuw nsw i64 %indvars.iv1936, 1
  %744 = load i32, ptr %10, align 4, !tbaa !8
  %745 = zext i32 %744 to i64
  %746 = icmp ult i64 %indvars.iv.next1937, %745
  br i1 %746, label %.lr.ph1593, label %._crit_edge1594.loopexit, !llvm.loop !33

._crit_edge1594.loopexit:                         ; preds = %.lr.ph1593
  %.pre2018 = load i32, ptr %12, align 4, !tbaa !8
  br label %._crit_edge1594

._crit_edge1594:                                  ; preds = %._crit_edge1594.loopexit, %736
  %747 = phi i32 [ %730, %736 ], [ %.pre2018, %._crit_edge1594.loopexit ]
  %.20894.lcssa = phi ptr [ %.19893, %736 ], [ %743, %._crit_edge1594.loopexit ]
  %.lcssa1470 = phi i32 [ %737, %736 ], [ %744, %._crit_edge1594.loopexit ]
  %.neg1110 = sub i32 %.6813, %.lcssa1470
  %748 = add i32 %.neg1110, %747
  br label %749

749:                                              ; preds = %._crit_edge1594, %705, %.loopexit1439, %._crit_edge1621
  %.9948 = phi i32 [ 50331649, %._crit_edge1621 ], [ %704, %705 ], [ %704, %.loopexit1439 ], [ %725, %._crit_edge1594 ]
  %.21895 = phi ptr [ %.8882.lcssa, %._crit_edge1621 ], [ %707, %705 ], [ %.16890, %.loopexit1439 ], [ %.20894.lcssa, %._crit_edge1594 ]
  %.1828 = phi i32 [ %648, %._crit_edge1621 ], [ %.6813, %705 ], [ 0, %.loopexit1439 ], [ %748, %._crit_edge1594 ]
  %750 = and i32 %.10842, 256
  %.not1119 = icmp eq i32 %750, 0
  br i1 %.not1119, label %771, label %751

751:                                              ; preds = %749
  %752 = and i32 %.10842, 1024
  %.not1120 = icmp eq i32 %752, 0
  %spec.store.select26 = zext i1 %.not1120 to i8
  store i8 %spec.store.select26, ptr %9, align 1, !tbaa !5
  store i8 32, ptr %25, align 1, !tbaa !5
  %.not1121 = icmp ult i32 %.10842, 16777216
  br i1 %.not1121, label %771, label %753

753:                                              ; preds = %751
  %754 = lshr i32 %.10842, 24
  %755 = and i32 %.10842, 2048
  %.not1122.not = icmp eq i32 %755, 0
  %756 = zext nneg i32 %754 to i64
  %.lobit = lshr exact i32 %752, 10
  %757 = sub nuw nsw i32 2, %.lobit
  %758 = zext nneg i32 %757 to i64
  %759 = getelementptr inbounds [8 x i8], ptr %9, i64 0, i64 %758
  %760 = select i1 %.not1120, i8 2, i8 1
  br i1 %.not1122.not, label %.thread1247, label %763

.thread1247:                                      ; preds = %753
  %761 = getelementptr inbounds [6 x i8], ptr @.str.2, i64 0, i64 %756
  %762 = load i8, ptr %761, align 1, !tbaa !5
  store i8 %762, ptr %759, align 1, !tbaa !5
  br label %770

763:                                              ; preds = %753
  %764 = getelementptr inbounds [6 x i8], ptr @.str.1, i64 0, i64 %756
  %765 = load i8, ptr %764, align 1, !tbaa !5
  store i8 %765, ptr %759, align 1, !tbaa !5
  %766 = and i32 %.10842, 6144
  %or.cond1197 = icmp eq i32 %766, 2048
  br i1 %or.cond1197, label %767, label %770

767:                                              ; preds = %763
  %narrow = add nuw nsw i8 %760, 1
  %768 = zext nneg i8 %narrow to i64
  %769 = getelementptr inbounds [8 x i8], ptr %9, i64 0, i64 %768
  store i8 105, ptr %769, align 1, !tbaa !5
  br label %770

770:                                              ; preds = %.thread1247, %767, %763
  %.0962 = phi i8 [ %narrow, %767 ], [ %760, %763 ], [ %760, %.thread1247 ]
  store i8 %.0962, ptr %9, align 1, !tbaa !5
  br label %771

.loopexit1435:                                    ; preds = %528, %513
  %.lcssa2317 = phi i32 [ %523, %513 ], [ %529, %528 ]
  store i32 %.lcssa2317, ptr %12, align 4, !tbaa !8
  br label %771

771:                                              ; preds = %.loopexit1435, %751, %770, %749
  %.10949 = phi i32 [ %.9948, %749 ], [ %.9948, %770 ], [ %.9948, %751 ], [ 50331649, %.loopexit1435 ]
  %.22896 = phi ptr [ %.21895, %749 ], [ %.21895, %770 ], [ %.21895, %751 ], [ %.3877.lcssa, %.loopexit1435 ]
  %.11843 = phi i32 [ %.10842, %749 ], [ %.10842, %770 ], [ %.10842, %751 ], [ %.6838, %.loopexit1435 ]
  %.2829 = phi i32 [ %.1828, %749 ], [ %.1828, %770 ], [ %.1828, %751 ], [ %505, %.loopexit1435 ]
  %772 = ptrtoint ptr %.22896 to i64
  %773 = sub i64 %772, %22
  %774 = trunc i64 %773 to i32
  store i32 %774, ptr %10, align 4, !tbaa !8
  br label %974

775:                                              ; preds = %202, %202
  %776 = icmp eq i8 %203, 66
  %777 = select i1 %776, ptr @stbsp_vsprintfcb.hexu, ptr @stbsp_vsprintfcb.hex
  store i8 0, ptr %8, align 1, !tbaa !5
  %778 = and i32 %.3835, 8
  %.not1094 = icmp eq i32 %778, 0
  br i1 %.not1094, label %781, label %779

779:                                              ; preds = %775
  store i8 2, ptr %8, align 1, !tbaa !5
  store i8 48, ptr %16, align 1, !tbaa !5
  %.val1095 = load i8, ptr getelementptr inbounds (i8, ptr @stbsp_vsprintfcb.hexu, i64 11), align 1
  %.val1096 = load i8, ptr getelementptr inbounds (i8, ptr @stbsp_vsprintfcb.hex, i64 11), align 1
  %780 = select i1 %776, i8 %.val1095, i8 %.val1096
  store i8 %780, ptr %17, align 1, !tbaa !5
  br label %781

781:                                              ; preds = %779, %775
  store i32 384, ptr %10, align 4, !tbaa !8
  br label %795

782:                                              ; preds = %202
  store i8 0, ptr %8, align 1, !tbaa !5
  %783 = and i32 %.3835, 8
  %.not1093 = icmp eq i32 %783, 0
  br i1 %.not1093, label %785, label %784

784:                                              ; preds = %782
  store i8 1, ptr %8, align 1, !tbaa !5
  store i8 48, ptr %16, align 1, !tbaa !5
  br label %785

785:                                              ; preds = %784, %782
  store i32 816, ptr %10, align 4, !tbaa !8
  br label %795

786:                                              ; preds = %202
  %787 = and i32 %.3835, -49
  %788 = or disjoint i32 %787, 32
  br label %789

789:                                              ; preds = %786, %202, %202
  %.12844 = phi i32 [ %.3835, %202 ], [ %.3835, %202 ], [ %788, %786 ]
  %.8815 = phi i32 [ %.1808, %202 ], [ %.1808, %202 ], [ 16, %786 ]
  %790 = icmp eq i8 %203, 88
  %791 = select i1 %790, ptr @stbsp_vsprintfcb.hexu, ptr @stbsp_vsprintfcb.hex
  store i32 1088, ptr %10, align 4, !tbaa !8
  store i8 0, ptr %8, align 1, !tbaa !5
  %792 = and i32 %.12844, 8
  %.not1091 = icmp eq i32 %792, 0
  br i1 %.not1091, label %795, label %793

793:                                              ; preds = %789
  store i8 2, ptr %8, align 1, !tbaa !5
  store i8 48, ptr %16, align 1, !tbaa !5
  %.val = load i8, ptr getelementptr inbounds (i8, ptr @stbsp_vsprintfcb.hexu, i64 16), align 16
  %.val1092 = load i8, ptr getelementptr inbounds (i8, ptr @stbsp_vsprintfcb.hex, i64 16), align 16
  %794 = select i1 %790, i8 %.val, i8 %.val1092
  store i8 %794, ptr %17, align 1, !tbaa !5
  br label %795

795:                                              ; preds = %789, %793, %785, %781
  %796 = phi i32 [ 4, %793 ], [ 4, %789 ], [ 3, %785 ], [ 1, %781 ]
  %.1917 = phi ptr [ %791, %793 ], [ %791, %789 ], [ @stbsp_vsprintfcb.hexu, %785 ], [ %777, %781 ]
  %.13845 = phi i32 [ %.12844, %793 ], [ %.12844, %789 ], [ %.3835, %785 ], [ %.3835, %781 ]
  %.9816 = phi i32 [ %.8815, %793 ], [ %.8815, %789 ], [ %.1808, %785 ], [ %.1808, %781 ]
  %797 = and i32 %.13845, 32
  %.not1097 = icmp eq i32 %797, 0
  %798 = load i32, ptr %4, align 8
  %799 = icmp ult i32 %798, 41
  br i1 %.not1097, label %812, label %800

800:                                              ; preds = %795
  br i1 %799, label %801, label %806

801:                                              ; preds = %800
  %802 = load ptr, ptr %15, align 8
  %803 = zext nneg i32 %798 to i64
  %804 = getelementptr i8, ptr %802, i64 %803
  %805 = add nuw nsw i32 %798, 8
  store i32 %805, ptr %4, align 8
  br label %809

806:                                              ; preds = %800
  %807 = load ptr, ptr %14, align 8
  %808 = getelementptr i8, ptr %807, i64 8
  store ptr %808, ptr %14, align 8
  br label %809

809:                                              ; preds = %806, %801
  %810 = phi ptr [ %804, %801 ], [ %807, %806 ]
  %811 = load i64, ptr %810, align 8, !tbaa !18
  br label %825

812:                                              ; preds = %795
  br i1 %799, label %813, label %818

813:                                              ; preds = %812
  %814 = load ptr, ptr %15, align 8
  %815 = zext nneg i32 %798 to i64
  %816 = getelementptr i8, ptr %814, i64 %815
  %817 = add nuw nsw i32 %798, 8
  store i32 %817, ptr %4, align 8
  br label %821

818:                                              ; preds = %812
  %819 = load ptr, ptr %14, align 8
  %820 = getelementptr i8, ptr %819, i64 8
  store ptr %820, ptr %14, align 8
  br label %821

821:                                              ; preds = %818, %813
  %822 = phi ptr [ %816, %813 ], [ %819, %818 ]
  %823 = load i32, ptr %822, align 4, !tbaa !8
  %824 = zext i32 %823 to i64
  br label %825

825:                                              ; preds = %821, %809
  %storemerge1098 = phi i64 [ %824, %821 ], [ %811, %809 ]
  store i64 %storemerge1098, ptr %11, align 8, !tbaa !18
  store i32 0, ptr %12, align 4, !tbaa !8
  store i8 0, ptr %9, align 1, !tbaa !5
  %826 = icmp eq i64 %storemerge1098, 0
  br i1 %826, label %827, label %830

827:                                              ; preds = %825
  store i8 0, ptr %8, align 1, !tbaa !5
  %828 = icmp eq i32 %.9816, 0
  br i1 %828, label %829, label %830

829:                                              ; preds = %827
  store i32 0, ptr %10, align 4, !tbaa !8
  br label %974

830:                                              ; preds = %827, %825
  %831 = and i32 %.13845, 64
  %.not1100 = icmp eq i32 %831, 0
  %notmask2222 = shl nsw i32 -1, %796
  %832 = xor i32 %notmask2222, -1
  %833 = zext nneg i32 %832 to i64
  %834 = and i64 %storemerge1098, %833
  %835 = getelementptr inbounds i8, ptr %.1917, i64 %834
  %836 = load i8, ptr %835, align 1, !tbaa !5
  store i8 %836, ptr %30, align 1, !tbaa !5
  %837 = load i32, ptr %10, align 4, !tbaa !8
  %838 = lshr i32 %837, 8
  %839 = load i64, ptr %11, align 8, !tbaa !18
  %840 = zext nneg i32 %838 to i64
  %841 = lshr i64 %839, %840
  store i64 %841, ptr %11, align 8, !tbaa !18
  %.not10992223 = icmp ne i64 %841, 0
  %842 = icmp sgt i32 %.9816, 1
  %or.cond18292224 = select i1 %.not10992223, i1 true, i1 %842
  br i1 %or.cond18292224, label %.lr.ph2227, label %._crit_edge2228

.lr.ph2227:                                       ; preds = %830, %856
  %843 = phi i64 [ %868, %856 ], [ %841, %830 ]
  %844 = phi i32 [ %864, %856 ], [ %837, %830 ]
  %845 = phi ptr [ %863, %856 ], [ %30, %830 ]
  %.238972225 = phi ptr [ %.24898, %856 ], [ %18, %830 ]
  br i1 %.not1100, label %856, label %846

846:                                              ; preds = %.lr.ph2227
  %847 = add i32 %844, 1
  store i32 %847, ptr %10, align 4, !tbaa !8
  %848 = lshr i32 %847, 4
  %849 = xor i32 %848, %847
  %850 = and i32 %849, 15
  %851 = icmp eq i32 %850, 0
  br i1 %851, label %852, label %856

852:                                              ; preds = %846
  %853 = and i32 %847, -16
  store i32 %853, ptr %10, align 4, !tbaa !8
  %854 = load i8, ptr @stbsp__comma, align 1, !tbaa !5
  %855 = getelementptr inbounds i8, ptr %.238972225, i64 -2
  store i8 %854, ptr %855, align 1, !tbaa !5
  %.pre2012.pre = load i64, ptr %11, align 8, !tbaa !18
  %.pre2013.pre = load i32, ptr %10, align 4, !tbaa !8
  br label %856

856:                                              ; preds = %846, %852, %.lr.ph2227
  %.pre2013 = phi i32 [ %.pre2013.pre, %852 ], [ %847, %846 ], [ %844, %.lr.ph2227 ]
  %.pre2012 = phi i64 [ %.pre2012.pre, %852 ], [ %843, %846 ], [ %843, %.lr.ph2227 ]
  %.24898 = phi ptr [ %855, %852 ], [ %845, %846 ], [ %845, %.lr.ph2227 ]
  %857 = lshr i32 %.pre2013, 8
  %notmask = shl nsw i32 -1, %857
  %858 = xor i32 %notmask, -1
  %859 = zext nneg i32 %858 to i64
  %860 = and i64 %.pre2012, %859
  %861 = getelementptr inbounds i8, ptr %.1917, i64 %860
  %862 = load i8, ptr %861, align 1, !tbaa !5
  %863 = getelementptr inbounds i8, ptr %.24898, i64 -1
  store i8 %862, ptr %863, align 1, !tbaa !5
  %864 = load i32, ptr %10, align 4, !tbaa !8
  %865 = lshr i32 %864, 8
  %866 = load i64, ptr %11, align 8, !tbaa !18
  %867 = zext nneg i32 %865 to i64
  %868 = lshr i64 %866, %867
  store i64 %868, ptr %11, align 8, !tbaa !18
  %.not1099 = icmp ne i64 %868, 0
  %869 = ptrtoint ptr %863 to i64
  %870 = sub i64 %19, %869
  %871 = trunc i64 %870 to i32
  %872 = icmp sgt i32 %.9816, %871
  %or.cond1829 = select i1 %.not1099, i1 true, i1 %872
  br i1 %or.cond1829, label %.lr.ph2227, label %._crit_edge2228

._crit_edge2228:                                  ; preds = %856, %830
  %.lcssa2182 = phi ptr [ %30, %830 ], [ %863, %856 ]
  %.lcssa2181 = phi i32 [ %837, %830 ], [ %864, %856 ]
  %.lcssa2180 = phi i32 [ 1, %830 ], [ %871, %856 ]
  %873 = shl i32 %.lcssa2181, 20
  %874 = and i32 %873, 251658240
  %875 = add i32 %874, %.lcssa2180
  store i32 %.lcssa2180, ptr %10, align 4, !tbaa !8
  br label %974

876:                                              ; preds = %202, %202, %202
  %877 = and i32 %.3835, 32
  %.not1075 = icmp eq i32 %877, 0
  %878 = load i32, ptr %4, align 8
  %879 = icmp ult i32 %878, 41
  br i1 %.not1075, label %898, label %880

880:                                              ; preds = %876
  br i1 %879, label %881, label %886

881:                                              ; preds = %880
  %882 = load ptr, ptr %15, align 8
  %883 = zext nneg i32 %878 to i64
  %884 = getelementptr i8, ptr %882, i64 %883
  %885 = add nuw nsw i32 %878, 8
  store i32 %885, ptr %4, align 8
  br label %889

886:                                              ; preds = %880
  %887 = load ptr, ptr %14, align 8
  %888 = getelementptr i8, ptr %887, i64 8
  store ptr %888, ptr %14, align 8
  br label %889

889:                                              ; preds = %886, %881
  %890 = phi ptr [ %884, %881 ], [ %887, %886 ]
  %891 = load i64, ptr %890, align 8, !tbaa !18
  store i64 %891, ptr %11, align 8, !tbaa !18
  %892 = load i8, ptr %.12742, align 1, !tbaa !5
  %893 = icmp ne i8 %892, 117
  %894 = icmp slt i64 %891, 0
  %or.cond28 = select i1 %893, i1 %894, i1 false
  br i1 %or.cond28, label %895, label %918

895:                                              ; preds = %889
  %896 = sub nsw i64 0, %891
  store i64 %896, ptr %11, align 8, !tbaa !18
  %897 = or i32 %.3835, 128
  br label %918

898:                                              ; preds = %876
  br i1 %879, label %899, label %904

899:                                              ; preds = %898
  %900 = load ptr, ptr %15, align 8
  %901 = zext nneg i32 %878 to i64
  %902 = getelementptr i8, ptr %900, i64 %901
  %903 = add nuw nsw i32 %878, 8
  store i32 %903, ptr %4, align 8
  br label %907

904:                                              ; preds = %898
  %905 = load ptr, ptr %14, align 8
  %906 = getelementptr i8, ptr %905, i64 8
  store ptr %906, ptr %14, align 8
  br label %907

907:                                              ; preds = %904, %899
  %908 = phi ptr [ %902, %899 ], [ %905, %904 ]
  %909 = load i32, ptr %908, align 4, !tbaa !8
  %910 = zext i32 %909 to i64
  store i64 %910, ptr %11, align 8, !tbaa !18
  %911 = load i8, ptr %.12742, align 1, !tbaa !5
  %912 = icmp ne i8 %911, 117
  %913 = icmp slt i32 %909, 0
  %or.cond30 = select i1 %912, i1 %913, i1 false
  br i1 %or.cond30, label %914, label %918

914:                                              ; preds = %907
  %915 = sub nsw i32 0, %909
  %916 = zext nneg i32 %915 to i64
  store i64 %916, ptr %11, align 8, !tbaa !18
  %917 = or i32 %.3835, 128
  br label %918

918:                                              ; preds = %907, %914, %889, %895
  %.promoted1546 = phi i64 [ %896, %895 ], [ %891, %889 ], [ %916, %914 ], [ %910, %907 ]
  %.16848 = phi i32 [ %897, %895 ], [ %.3835, %889 ], [ %917, %914 ], [ %.3835, %907 ]
  %919 = and i32 %.16848, 256
  %.not1076 = icmp eq i32 %919, 0
  br i1 %.not1076, label %923, label %.thread2036

.thread2036:                                      ; preds = %918
  %920 = icmp ult i64 %.promoted1546, 1024
  %921 = icmp eq i32 %.1808, -1
  %spec.store.select31 = select i1 %921, i32 1, i32 %.1808
  %.10817 = select i1 %920, i32 0, i32 %spec.store.select31
  %922 = sitofp i64 %.promoted1546 to double
  br label %548

923:                                              ; preds = %918
  store i32 0, ptr %10, align 4, !tbaa !8
  %924 = and i32 %.16848, 64
  %925 = icmp eq i32 %924, 0
  %926 = load i8, ptr @stbsp__comma, align 1
  br label %.loopexit1418

..loopexit1418_crit_edge.split:                   ; preds = %960
  store i32 %961, ptr %10, align 4, !tbaa !8
  br label %.loopexit1418.backedge

.loopexit1418:                                    ; preds = %.loopexit1418.backedge, %923
  %.lcssa15451553 = phi i32 [ 0, %923 ], [ %.lcssa15451553.be, %.loopexit1418.backedge ]
  %storemerge1547 = phi i64 [ %.promoted1546, %923 ], [ %storemerge, %.loopexit1418.backedge ]
  %.25899.idx = phi i64 [ 512, %923 ], [ %.25899.idx.be, %.loopexit1418.backedge ]
  %gep = getelementptr i8, ptr %invariant.gep, i64 %.25899.idx
  %927 = icmp ugt i64 %storemerge1547, 99999999
  br i1 %927, label %928, label %931

928:                                              ; preds = %.loopexit1418
  %929 = urem i64 %storemerge1547, 100000000
  %930 = udiv i64 %storemerge1547, 100000000
  br label %931

931:                                              ; preds = %.loopexit1418, %928
  %storemerge = phi i64 [ %930, %928 ], [ 0, %.loopexit1418 ]
  %.15933.in = phi i64 [ %929, %928 ], [ %storemerge1547, %.loopexit1418 ]
  %.15933 = trunc nuw i64 %.15933.in to i32
  br i1 %925, label %.preheader1419, label %.loopexit1420

.preheader1419:                                   ; preds = %931, %.preheader1419
  %.16934 = phi i32 [ %937, %.preheader1419 ], [ %.15933, %931 ]
  %.26900.idx = phi i64 [ %.26900.add, %.preheader1419 ], [ %.25899.idx, %931 ]
  %.26900.add = add nsw i64 %.26900.idx, -2
  %.ptr = getelementptr inbounds i8, ptr %6, i64 %.26900.add
  %932 = urem i32 %.16934, 100
  %933 = shl nuw nsw i32 %932, 1
  %934 = zext nneg i32 %933 to i64
  %935 = getelementptr inbounds [201 x i8], ptr getelementptr inbounds (i8, ptr @stbsp__digitpair, i64 2), i64 0, i64 %934
  %936 = load i16, ptr %935, align 2, !tbaa !34
  store i16 %936, ptr %.ptr, align 2, !tbaa !34
  %937 = udiv i32 %.16934, 100
  %.not1077 = icmp ult i32 %.16934, 100
  br i1 %.not1077, label %._crit_edge, label %.preheader1419, !llvm.loop !36

.loopexit1420:                                    ; preds = %931
  %.not10781525 = icmp eq i64 %.15933.in, 0
  br i1 %.not10781525, label %._crit_edge, label %.lr.ph1529.split

.lr.ph1529.split:                                 ; preds = %.loopexit1420, %948
  %.28902.idx1528 = phi i64 [ %.29903.idx, %948 ], [ %.25899.idx, %.loopexit1420 ]
  %.189361527 = phi i32 [ %.19937, %948 ], [ %.15933, %.loopexit1420 ]
  %.09771526 = phi ptr [ %.1978, %948 ], [ %gep, %.loopexit1420 ]
  %938 = phi i32 [ %949, %948 ], [ %.lcssa15451553, %.loopexit1420 ]
  %939 = icmp eq i32 %938, 3
  br i1 %939, label %940, label %942

940:                                              ; preds = %.lr.ph1529.split
  %.28902.add1081 = add nsw i64 %.28902.idx1528, -1
  %.ptr1085 = getelementptr inbounds i8, ptr %6, i64 %.28902.add1081
  store i8 %926, ptr %.ptr1085, align 1, !tbaa !5
  %941 = getelementptr inbounds i8, ptr %.09771526, i64 -1
  br label %948

942:                                              ; preds = %.lr.ph1529.split
  %943 = add i32 %938, 1
  %944 = urem i32 %.189361527, 10
  %945 = trunc nuw nsw i32 %944 to i8
  %946 = or disjoint i8 %945, 48
  %.28902.add = add nsw i64 %.28902.idx1528, -1
  %.ptr1084 = getelementptr inbounds i8, ptr %6, i64 %.28902.add
  store i8 %946, ptr %.ptr1084, align 1, !tbaa !5
  %947 = udiv i32 %.189361527, 10
  br label %948

948:                                              ; preds = %942, %940
  %949 = phi i32 [ 0, %940 ], [ %943, %942 ]
  %.1978 = phi ptr [ %941, %940 ], [ %.09771526, %942 ]
  %.19937 = phi i32 [ %.189361527, %940 ], [ %947, %942 ]
  %.29903.idx = phi i64 [ %.28902.add1081, %940 ], [ %.28902.add, %942 ]
  %.not1078 = icmp eq i32 %.19937, 0
  br i1 %.not1078, label %._crit_edge.split, label %.lr.ph1529.split, !llvm.loop !37

._crit_edge.split:                                ; preds = %948
  store i32 %949, ptr %10, align 4, !tbaa !8
  br label %._crit_edge

._crit_edge:                                      ; preds = %.preheader1419, %._crit_edge.split, %.loopexit1420
  %.lcssa15451552 = phi i32 [ %.lcssa15451553, %.loopexit1420 ], [ %949, %._crit_edge.split ], [ %.lcssa15451553, %.preheader1419 ]
  %.28902.idx.lcssa1524 = phi i64 [ %.25899.idx, %.loopexit1420 ], [ %.29903.idx, %._crit_edge.split ], [ %.26900.add, %.preheader1419 ]
  %.0977.lcssa = phi ptr [ %gep, %.loopexit1420 ], [ %.1978, %._crit_edge.split ], [ %gep, %.preheader1419 ]
  %.0977.lcssa1926 = ptrtoint ptr %.0977.lcssa to i64
  %950 = icmp eq i64 %storemerge, 0
  br i1 %950, label %962, label %.preheader1417

.preheader1417:                                   ; preds = %._crit_edge
  %.31905.ptr1538 = getelementptr inbounds i8, ptr %6, i64 %.28902.idx.lcssa1524
  %.not10791539 = icmp eq ptr %.31905.ptr1538, %.0977.lcssa
  br i1 %.not10791539, label %.loopexit1418.backedge, label %.lr.ph1542

.lr.ph1542:                                       ; preds = %.preheader1417
  br i1 %925, label %.lr.ph1542.split.us.preheader, label %.lr.ph1542.split

.lr.ph1542.split.us.preheader:                    ; preds = %.lr.ph1542
  %scevgep1927 = getelementptr i8, ptr %scevgep, i64 %.0977.lcssa1926
  %951 = add i64 %.28902.idx.lcssa1524, %7
  %952 = sub i64 %951, %.0977.lcssa1926
  call void @llvm.memset.p0.i64(ptr align 1 %scevgep1927, i8 48, i64 %952, i1 false), !tbaa !5
  %953 = sub i64 %.0977.lcssa1926, %7
  br label %.loopexit1418.backedge

.loopexit1418.backedge:                           ; preds = %.lr.ph1542.split.us.preheader, %..loopexit1418_crit_edge.split, %.preheader1417
  %.lcssa15451553.be = phi i32 [ %.lcssa15451552, %.preheader1417 ], [ %961, %..loopexit1418_crit_edge.split ], [ %.lcssa15451552, %.lr.ph1542.split.us.preheader ]
  %.25899.idx.be = phi i64 [ %.28902.idx.lcssa1524, %.preheader1417 ], [ %.32906.idx, %..loopexit1418_crit_edge.split ], [ %953, %.lr.ph1542.split.us.preheader ]
  br label %.loopexit1418

.lr.ph1542.split:                                 ; preds = %.lr.ph1542, %960
  %.31905.idx1541 = phi i64 [ %.32906.idx, %960 ], [ %.28902.idx.lcssa1524, %.lr.ph1542 ]
  %.29791540 = phi ptr [ %.3980, %960 ], [ %.0977.lcssa, %.lr.ph1542 ]
  %954 = phi i32 [ %961, %960 ], [ %.lcssa15451552, %.lr.ph1542 ]
  %955 = icmp eq i32 %954, 3
  br i1 %955, label %956, label %958

956:                                              ; preds = %.lr.ph1542.split
  %.31905.add1083 = add nsw i64 %.31905.idx1541, -1
  %.ptr1089 = getelementptr inbounds i8, ptr %6, i64 %.31905.add1083
  store i8 %926, ptr %.ptr1089, align 1, !tbaa !5
  %957 = getelementptr inbounds i8, ptr %.29791540, i64 -1
  br label %960

958:                                              ; preds = %.lr.ph1542.split
  %959 = add i32 %954, 1
  %.31905.add = add nsw i64 %.31905.idx1541, -1
  %.ptr1088 = getelementptr inbounds i8, ptr %6, i64 %.31905.add
  store i8 48, ptr %.ptr1088, align 1, !tbaa !5
  br label %960

960:                                              ; preds = %958, %956
  %961 = phi i32 [ 0, %956 ], [ %959, %958 ]
  %.3980 = phi ptr [ %957, %956 ], [ %.29791540, %958 ]
  %.32906.idx = phi i64 [ %.31905.add1083, %956 ], [ %.31905.add, %958 ]
  %.31905.ptr = getelementptr inbounds i8, ptr %6, i64 %.32906.idx
  %.not1079 = icmp eq ptr %.31905.ptr, %.3980
  br i1 %.not1079, label %..loopexit1418_crit_edge.split, label %.lr.ph1542.split, !llvm.loop !38

962:                                              ; preds = %._crit_edge
  store i64 0, ptr %11, align 8, !tbaa !18
  %.28902.ptr.le.le = getelementptr inbounds i8, ptr %6, i64 %.28902.idx.lcssa1524
  %963 = load i8, ptr %.28902.ptr.le.le, align 1, !tbaa !5
  %964 = icmp eq i8 %963, 48
  %965 = icmp ne i64 %.28902.idx.lcssa1524, 512
  %or.cond35 = and i1 %965, %964
  %.28902.add1082 = zext i1 %or.cond35 to i64
  %spec.select1198 = add nsw i64 %.28902.idx.lcssa1524, %.28902.add1082
  %.33907.ptr1254 = getelementptr inbounds i8, ptr %6, i64 %spec.select1198
  store i8 0, ptr %9, align 1, !tbaa !5
  call void @stbsp__lead_sign(i32 noundef %.16848, ptr noundef nonnull %8)
  %966 = trunc i64 %spec.select1198 to i32
  %967 = sub i32 512, %966
  store i32 %967, ptr %10, align 4, !tbaa !8
  %968 = icmp eq i32 %966, 512
  br i1 %968, label %969, label %971

969:                                              ; preds = %962
  %970 = getelementptr inbounds i8, ptr %.33907.ptr1254, i64 -1
  store i8 48, ptr %970, align 1, !tbaa !5
  store i32 1, ptr %10, align 4, !tbaa !8
  br label %971

971:                                              ; preds = %969, %962
  %972 = phi i32 [ 1, %969 ], [ %967, %962 ]
  %.34908 = phi ptr [ %970, %969 ], [ %.33907.ptr1254, %962 ]
  %973 = add i32 %972, 50331648
  %spec.store.select36 = call i32 @llvm.smax.i32(i32 %.1808, i32 0)
  br label %974

974:                                              ; preds = %458, %1378, %971, %._crit_edge2228, %829, %771, %584, %._crit_edge1646, %232, %215
  %.11950 = phi i32 [ 0, %1378 ], [ 0, %584 ], [ %.10949, %771 ], [ %973, %971 ], [ 0, %829 ], [ %875, %._crit_edge2228 ], [ 50331649, %._crit_edge1646 ], [ 0, %232 ], [ 0, %215 ], [ 0, %458 ]
  %.35909 = phi ptr [ %27, %1378 ], [ %585, %584 ], [ %21, %771 ], [ %.34908, %971 ], [ %18, %829 ], [ %.lcssa2182, %._crit_edge2228 ], [ %21, %._crit_edge1646 ], [ %27, %232 ], [ %spec.store.select, %215 ], [ %461, %458 ]
  %.17849 = phi i32 [ 0, %1378 ], [ %.10842, %584 ], [ %.11843, %771 ], [ %.16848, %971 ], [ %.13845, %829 ], [ %.13845, %._crit_edge2228 ], [ %spec.select1182, %._crit_edge1646 ], [ %.3835, %232 ], [ %.3835, %215 ], [ %.6838, %458 ]
  %.3830 = phi i32 [ 0, %1378 ], [ 0, %584 ], [ %.2829, %771 ], [ 0, %971 ], [ 0, %829 ], [ 0, %._crit_edge2228 ], [ %spec.select11832034, %._crit_edge1646 ], [ 0, %232 ], [ 0, %215 ], [ 0, %458 ]
  %.11818 = phi i32 [ 0, %1378 ], [ 0, %584 ], [ 0, %771 ], [ %spec.store.select36, %971 ], [ 0, %829 ], [ %.9816, %._crit_edge2228 ], [ 0, %._crit_edge1646 ], [ 0, %232 ], [ 0, %215 ], [ 0, %458 ]
  %.2799 = phi i32 [ 0, %1378 ], [ %.1798, %584 ], [ %.1798, %771 ], [ %.1798, %971 ], [ %.1798, %829 ], [ %.1798, %._crit_edge2228 ], [ %.1798, %._crit_edge1646 ], [ %.1798, %232 ], [ %.1798, %215 ], [ %.1798, %458 ]
  %975 = load i32, ptr %10, align 4, !tbaa !8
  %spec.select1199 = call i32 @llvm.smax.i32(i32 %.11818, i32 %975)
  %976 = load i8, ptr %8, align 1, !tbaa !5
  %977 = sext i8 %976 to i32
  %978 = load i8, ptr %9, align 1, !tbaa !5
  %979 = sext i8 %978 to i32
  %980 = add i32 %spec.select1199, %.3830
  %981 = add i32 %980, %977
  %982 = add i32 %981, %979
  %.3800 = call i32 @llvm.smax.i32(i32 %.2799, i32 %982)
  %983 = sub i32 %.3800, %982
  %984 = sub i32 %spec.select1199, %975
  %985 = and i32 %.17849, 1
  %986 = icmp eq i32 %985, 0
  br i1 %986, label %987, label %991

987:                                              ; preds = %974
  %988 = and i32 %.17849, 16
  %.not1133 = icmp eq i32 %988, 0
  br i1 %.not1133, label %991, label %989

989:                                              ; preds = %987
  %990 = call i32 @llvm.smax.i32(i32 %983, i32 %984)
  br label %991

991:                                              ; preds = %987, %989, %974
  %.18850 = phi i32 [ %.17849, %989 ], [ %.17849, %974 ], [ 0, %987 ]
  %.13820 = phi i32 [ %990, %989 ], [ %984, %974 ], [ %984, %987 ]
  %.4801 = phi i32 [ 0, %989 ], [ %983, %974 ], [ %983, %987 ]
  %992 = sub i32 0, %.13820
  %.not1134 = icmp eq i32 %.4801, %992
  br i1 %.not1134, label %.loopexit1429, label %993

993:                                              ; preds = %991
  %994 = and i32 %.18850, 1
  %995 = icmp eq i32 %994, 0
  %996 = icmp sgt i32 %.4801, 0
  %or.cond38 = and i1 %995, %996
  br i1 %or.cond38, label %.preheader1432, label %.loopexit1434

.preheader1432:                                   ; preds = %993, %.thread1259
  %.5802 = phi i32 [ %1000, %.thread1259 ], [ %.4801, %993 ]
  %.5749 = phi i32 [ %.8752, %.thread1259 ], [ %.1745, %993 ]
  %.9684 = phi ptr [ %.15690, %.thread1259 ], [ %.2677, %993 ]
  %.5 = phi ptr [ %.8, %.thread1259 ], [ %.1, %993 ]
  %.9684.fr = freeze ptr %.9684
  %997 = ptrtoint ptr %.9684.fr to i64
  %998 = ptrtoint ptr %.5 to i64
  %.neg1136 = sub i64 %998, %997
  %.neg1137 = trunc i64 %.neg1136 to i32
  %999 = add i32 %.neg1137, 512
  %spec.select1200 = call i32 @llvm.smin.i32(i32 %.5802, i32 %999)
  %.1964 = select i1 %.not1070, i32 %.5802, i32 %spec.select1200
  %1000 = sub nsw i32 %.5802, %.1964
  %.not11381648 = icmp eq i32 %.1964, 0
  %1001 = and i64 %997, 3
  %1002 = icmp eq i64 %1001, 0
  %or.cond12031649 = or i1 %.not11381648, %1002
  br i1 %or.cond12031649, label %.preheader1416, label %.lr.ph1653.preheader

.lr.ph1653.preheader:                             ; preds = %.preheader1432
  %1003 = trunc i64 %997 to i2
  %1004 = xor i2 %1003, -1
  %1005 = zext i2 %1004 to i64
  %1006 = add i32 %.1964, -1
  %1007 = zext i32 %1006 to i64
  %umin1963 = call i64 @llvm.umin.i64(i64 %1005, i64 %1007)
  %1008 = add nuw nsw i64 %umin1963, 1
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %.9684.fr, i8 32, i64 %1008, i1 false), !tbaa !5
  %1009 = zext i2 %1004 to i32
  %scevgep1964 = getelementptr i8, ptr %.9684.fr, i64 1
  %scevgep1966 = getelementptr i8, ptr %scevgep1964, i64 %umin1963
  %1010 = call i32 @llvm.usub.sat.i32(i32 %1006, i32 %1009)
  br label %.preheader1416

.preheader1416:                                   ; preds = %.lr.ph1653.preheader, %.preheader1432
  %.2965.lcssa = phi i32 [ %.1964, %.preheader1432 ], [ %1010, %.lr.ph1653.preheader ]
  %.10685.lcssa = phi ptr [ %.9684.fr, %.preheader1432 ], [ %scevgep1966, %.lr.ph1653.preheader ]
  %1011 = icmp sgt i32 %.2965.lcssa, 3
  br i1 %1011, label %.lr.ph1658.preheader, label %.preheader1415

.lr.ph1658.preheader:                             ; preds = %.preheader1416
  %1012 = call i32 @llvm.usub.sat.i32(i32 %.2965.lcssa, i32 7)
  %1013 = add nuw i32 %1012, 3
  %1014 = and i32 %1013, -4
  %1015 = zext nneg i32 %1014 to i64
  %1016 = add nuw nsw i64 %1015, 4
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %.10685.lcssa, i8 32, i64 %1016, i1 false), !tbaa !8
  %scevgep1969 = getelementptr i8, ptr %.10685.lcssa, i64 4
  %scevgep1971 = getelementptr i8, ptr %scevgep1969, i64 %1015
  %1017 = and i32 %1013, -4
  %1018 = add nsw i32 %.2965.lcssa, -4
  %1019 = sub nsw i32 %1018, %1017
  br label %.preheader1415

.preheader1415:                                   ; preds = %.lr.ph1658.preheader, %.preheader1416
  %.3966.lcssa = phi i32 [ %.2965.lcssa, %.preheader1416 ], [ %1019, %.lr.ph1658.preheader ]
  %.11686.lcssa = phi ptr [ %.10685.lcssa, %.preheader1416 ], [ %scevgep1971, %.lr.ph1658.preheader ]
  %.not11391661 = icmp eq i32 %.3966.lcssa, 0
  br i1 %.not11391661, label %._crit_edge1665, label %.lr.ph1664.preheader

.lr.ph1664.preheader:                             ; preds = %.preheader1415
  %1020 = zext i32 %.3966.lcssa to i64
  call void @llvm.memset.p0.i64(ptr align 1 %.11686.lcssa, i8 32, i64 %1020, i1 false), !tbaa !5
  %1021 = add i32 %.3966.lcssa, -1
  %1022 = zext i32 %1021 to i64
  %scevgep1972 = getelementptr i8, ptr %.11686.lcssa, i64 1
  %scevgep1973 = getelementptr i8, ptr %scevgep1972, i64 %1022
  br label %._crit_edge1665

._crit_edge1665:                                  ; preds = %.lr.ph1664.preheader, %.preheader1415
  %.12687.lcssa = phi ptr [ %.11686.lcssa, %.preheader1415 ], [ %scevgep1973, %.lr.ph1664.preheader ]
  br i1 %.not1070, label %.thread1259, label %1023

1023:                                             ; preds = %._crit_edge1665
  %1024 = ptrtoint ptr %.12687.lcssa to i64
  %1025 = sub i64 %1024, %998
  %1026 = trunc i64 %1025 to i32
  %1027 = icmp sgt i32 %1026, 510
  br i1 %1027, label %1028, label %.thread1259

1028:                                             ; preds = %1023
  %1029 = add nsw i32 %.5749, %1026
  %1030 = call ptr %0(ptr noundef %.5, ptr noundef %1, i32 noundef %1026) #3
  %1031 = icmp eq ptr %1030, null
  br i1 %1031, label %.thread1387, label %.thread1259

.thread1259:                                      ; preds = %1028, %1023, %._crit_edge1665
  %.8752 = phi i32 [ %.5749, %._crit_edge1665 ], [ %.5749, %1023 ], [ %1029, %1028 ]
  %.15690 = phi ptr [ %.12687.lcssa, %._crit_edge1665 ], [ %.12687.lcssa, %1023 ], [ %1030, %1028 ]
  %.8 = phi ptr [ %.5, %._crit_edge1665 ], [ %.5, %1023 ], [ %1030, %1028 ]
  %.old37 = icmp sgt i32 %1000, 0
  br i1 %.old37, label %.preheader1432, label %.loopexit1434.loopexit

.loopexit1434.loopexit:                           ; preds = %.thread1259
  %.pre2019 = load i8, ptr %8, align 1, !tbaa !5
  br label %.loopexit1434

.loopexit1434:                                    ; preds = %.loopexit1434.loopexit, %993
  %1032 = phi i8 [ %976, %993 ], [ %.pre2019, %.loopexit1434.loopexit ]
  %.6803 = phi i32 [ %.4801, %993 ], [ %1000, %.loopexit1434.loopexit ]
  %.9753 = phi i32 [ %.1745, %993 ], [ %.8752, %.loopexit1434.loopexit ]
  %.16691 = phi ptr [ %.2677, %993 ], [ %.15690, %.loopexit1434.loopexit ]
  %.9 = phi ptr [ %.1, %993 ], [ %.8, %.loopexit1434.loopexit ]
  store ptr %16, ptr %13, align 8, !tbaa !14
  %.not11401674 = icmp eq i8 %1032, 0
  br i1 %.not11401674, label %._crit_edge1680, label %.lr.ph1679

.lr.ph1679:                                       ; preds = %.loopexit1434, %.thread1266
  %1033 = phi i8 [ %1072, %.thread1266 ], [ %1032, %.loopexit1434 ]
  %.101677 = phi ptr [ %.13, %.thread1266 ], [ %.9, %.loopexit1434 ]
  %.176921676 = phi ptr [ %.21696, %.thread1266 ], [ %.16691, %.loopexit1434 ]
  %.107541675 = phi i32 [ %.13757, %.thread1266 ], [ %.9753, %.loopexit1434 ]
  %1034 = sext i8 %1033 to i32
  %1035 = ptrtoint ptr %.176921676 to i64
  %1036 = ptrtoint ptr %.101677 to i64
  %.neg1149 = sub i64 %1036, %1035
  %.neg1150 = trunc i64 %.neg1149 to i32
  %1037 = add i32 %.neg1150, 512
  %spec.select1204 = call i32 @llvm.smin.i32(i32 %1037, i32 %1034)
  %.6969 = select i1 %.not1070, i32 %1034, i32 %spec.select1204
  %1038 = trunc i32 %.6969 to i8
  %1039 = sub i8 %1033, %1038
  store i8 %1039, ptr %8, align 1, !tbaa !5
  %.not11511667 = icmp eq i32 %.6969, 0
  br i1 %.not11511667, label %._crit_edge1672, label %.lr.ph1671.preheader

.lr.ph1671.preheader:                             ; preds = %.lr.ph1679
  %xtraiter2368 = and i32 %.6969, 3
  %lcmp.mod2369.not = icmp eq i32 %xtraiter2368, 0
  br i1 %lcmp.mod2369.not, label %.lr.ph1671.prol.loopexit, label %.lr.ph1671.prol

.lr.ph1671.prol:                                  ; preds = %.lr.ph1671.preheader, %.lr.ph1671.prol
  %.186931669.prol = phi ptr [ %1043, %.lr.ph1671.prol ], [ %.176921676, %.lr.ph1671.preheader ]
  %.79701668.prol = phi i32 [ %1044, %.lr.ph1671.prol ], [ %.6969, %.lr.ph1671.preheader ]
  %prol.iter2370 = phi i32 [ %prol.iter2370.next, %.lr.ph1671.prol ], [ 0, %.lr.ph1671.preheader ]
  %1040 = load ptr, ptr %13, align 8, !tbaa !14
  %1041 = getelementptr inbounds i8, ptr %1040, i64 1
  store ptr %1041, ptr %13, align 8, !tbaa !14
  %1042 = load i8, ptr %1040, align 1, !tbaa !5
  %1043 = getelementptr inbounds i8, ptr %.186931669.prol, i64 1
  store i8 %1042, ptr %.186931669.prol, align 1, !tbaa !5
  %1044 = add nsw i32 %.79701668.prol, -1
  %prol.iter2370.next = add i32 %prol.iter2370, 1
  %prol.iter2370.cmp.not = icmp eq i32 %prol.iter2370.next, %xtraiter2368
  br i1 %prol.iter2370.cmp.not, label %.lr.ph1671.prol.loopexit, label %.lr.ph1671.prol, !llvm.loop !39

.lr.ph1671.prol.loopexit:                         ; preds = %.lr.ph1671.prol, %.lr.ph1671.preheader
  %.lcssa2323.unr = phi ptr [ poison, %.lr.ph1671.preheader ], [ %1043, %.lr.ph1671.prol ]
  %.186931669.unr = phi ptr [ %.176921676, %.lr.ph1671.preheader ], [ %1043, %.lr.ph1671.prol ]
  %.79701668.unr = phi i32 [ %.6969, %.lr.ph1671.preheader ], [ %1044, %.lr.ph1671.prol ]
  %1045 = icmp ult i32 %.6969, 4
  br i1 %1045, label %._crit_edge1672, label %.lr.ph1671

.lr.ph1671:                                       ; preds = %.lr.ph1671.prol.loopexit, %.lr.ph1671
  %.186931669 = phi ptr [ %1061, %.lr.ph1671 ], [ %.186931669.unr, %.lr.ph1671.prol.loopexit ]
  %.79701668 = phi i32 [ %1062, %.lr.ph1671 ], [ %.79701668.unr, %.lr.ph1671.prol.loopexit ]
  %1046 = load ptr, ptr %13, align 8, !tbaa !14
  %1047 = getelementptr inbounds i8, ptr %1046, i64 1
  store ptr %1047, ptr %13, align 8, !tbaa !14
  %1048 = load i8, ptr %1046, align 1, !tbaa !5
  %1049 = getelementptr inbounds i8, ptr %.186931669, i64 1
  store i8 %1048, ptr %.186931669, align 1, !tbaa !5
  %1050 = load ptr, ptr %13, align 8, !tbaa !14
  %1051 = getelementptr inbounds i8, ptr %1050, i64 1
  store ptr %1051, ptr %13, align 8, !tbaa !14
  %1052 = load i8, ptr %1050, align 1, !tbaa !5
  %1053 = getelementptr inbounds i8, ptr %.186931669, i64 2
  store i8 %1052, ptr %1049, align 1, !tbaa !5
  %1054 = load ptr, ptr %13, align 8, !tbaa !14
  %1055 = getelementptr inbounds i8, ptr %1054, i64 1
  store ptr %1055, ptr %13, align 8, !tbaa !14
  %1056 = load i8, ptr %1054, align 1, !tbaa !5
  %1057 = getelementptr inbounds i8, ptr %.186931669, i64 3
  store i8 %1056, ptr %1053, align 1, !tbaa !5
  %1058 = load ptr, ptr %13, align 8, !tbaa !14
  %1059 = getelementptr inbounds i8, ptr %1058, i64 1
  store ptr %1059, ptr %13, align 8, !tbaa !14
  %1060 = load i8, ptr %1058, align 1, !tbaa !5
  %1061 = getelementptr inbounds i8, ptr %.186931669, i64 4
  store i8 %1060, ptr %1057, align 1, !tbaa !5
  %1062 = add nsw i32 %.79701668, -4
  %.not1151.3 = icmp eq i32 %1062, 0
  br i1 %.not1151.3, label %._crit_edge1672, label %.lr.ph1671, !llvm.loop !40

._crit_edge1672:                                  ; preds = %.lr.ph1671.prol.loopexit, %.lr.ph1671, %.lr.ph1679
  %.18693.lcssa = phi ptr [ %.176921676, %.lr.ph1679 ], [ %.lcssa2323.unr, %.lr.ph1671.prol.loopexit ], [ %1061, %.lr.ph1671 ]
  br i1 %.not1070, label %.thread1266, label %1063

1063:                                             ; preds = %._crit_edge1672
  %1064 = ptrtoint ptr %.18693.lcssa to i64
  %1065 = sub i64 %1064, %1036
  %1066 = trunc i64 %1065 to i32
  %1067 = icmp sgt i32 %1066, 510
  br i1 %1067, label %1068, label %.thread1266

1068:                                             ; preds = %1063
  %1069 = add nsw i32 %.107541675, %1066
  %1070 = call ptr %0(ptr noundef %.101677, ptr noundef %1, i32 noundef %1066) #3
  %1071 = icmp eq ptr %1070, null
  br i1 %1071, label %.thread1387, label %.thread1266

.thread1266:                                      ; preds = %1068, %1063, %._crit_edge1672
  %.13757 = phi i32 [ %.107541675, %._crit_edge1672 ], [ %.107541675, %1063 ], [ %1069, %1068 ]
  %.21696 = phi ptr [ %.18693.lcssa, %._crit_edge1672 ], [ %.18693.lcssa, %1063 ], [ %1070, %1068 ]
  %.13 = phi ptr [ %.101677, %._crit_edge1672 ], [ %.101677, %1063 ], [ %1070, %1068 ]
  %1072 = load i8, ptr %8, align 1, !tbaa !5
  %.not1140 = icmp eq i8 %1072, 0
  br i1 %.not1140, label %._crit_edge1680, label %.lr.ph1679, !llvm.loop !41

._crit_edge1680:                                  ; preds = %.thread1266, %.loopexit1434
  %.10754.lcssa = phi i32 [ %.9753, %.loopexit1434 ], [ %.13757, %.thread1266 ]
  %.17692.lcssa = phi ptr [ %.16691, %.loopexit1434 ], [ %.21696, %.thread1266 ]
  %.10.lcssa = phi ptr [ %.9, %.loopexit1434 ], [ %.13, %.thread1266 ]
  %1073 = lshr i32 %.11950, 24
  %1074 = and i32 %.18850, 64
  %.not1141 = icmp eq i32 %1074, 0
  br i1 %.not1141, label %1081, label %1075

1075:                                             ; preds = %._crit_edge1680
  %1076 = and i32 %.11950, 16777215
  %1077 = add i32 %.13820, %1076
  %1078 = add nuw nsw i32 %1073, 1
  %1079 = urem i32 %1077, %1078
  %1080 = sub nsw i32 %1073, %1079
  br label %1081

1081:                                             ; preds = %._crit_edge1680, %1075
  %1082 = phi i32 [ %1080, %1075 ], [ 0, %._crit_edge1680 ]
  %1083 = icmp sgt i32 %.13820, 0
  br i1 %1083, label %.lr.ph1713, label %.loopexit1429.thread

.loopexit1429.thread:                             ; preds = %1081
  store ptr %16, ptr %13, align 8, !tbaa !14
  br label %._crit_edge1730

.lr.ph1713:                                       ; preds = %1081, %.thread1273
  %.141711 = phi ptr [ %.17, %.thread1273 ], [ %.10.lcssa, %1081 ]
  %.226971710 = phi ptr [ %.30705, %.thread1273 ], [ %.17692.lcssa, %1081 ]
  %.147581709 = phi i32 [ %.17761, %.thread1273 ], [ %.10754.lcssa, %1081 ]
  %.148211708 = phi i32 [ %1087, %.thread1273 ], [ %.13820, %1081 ]
  %.129511707 = phi i32 [ %.13952.lcssa, %.thread1273 ], [ %1082, %1081 ]
  %.226971710.fr = freeze ptr %.226971710
  %1084 = ptrtoint ptr %.226971710.fr to i64
  %1085 = ptrtoint ptr %.141711 to i64
  %.neg1143 = sub i64 %1085, %1084
  %.neg1144 = trunc i64 %.neg1143 to i32
  %1086 = add i32 %.neg1144, 512
  %spec.select1205 = call i32 @llvm.smin.i32(i32 %.148211708, i32 %1086)
  %.9972 = select i1 %.not1070, i32 %.148211708, i32 %spec.select1205
  %1087 = sub nsw i32 %.148211708, %.9972
  %.not11451684 = icmp eq i32 %.9972, 0
  br i1 %.not1141, label %.preheader1414, label %.loopexit.thread

.preheader1414:                                   ; preds = %.lr.ph1713
  %1088 = and i64 %1084, 3
  %1089 = icmp eq i64 %1088, 0
  %or.cond12081685 = or i1 %.not11451684, %1089
  br i1 %or.cond12081685, label %.preheader1413, label %.lr.ph1688.preheader

.lr.ph1688.preheader:                             ; preds = %.preheader1414
  %1090 = trunc i64 %1084 to i2
  %1091 = xor i2 %1090, -1
  %1092 = zext i2 %1091 to i64
  %1093 = add i32 %.9972, -1
  %1094 = zext i32 %1093 to i64
  %umin1974 = call i64 @llvm.umin.i64(i64 %1092, i64 %1094)
  %1095 = add nuw nsw i64 %umin1974, 1
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %.226971710.fr, i8 48, i64 %1095, i1 false), !tbaa !5
  %1096 = zext i2 %1091 to i32
  %scevgep1975 = getelementptr i8, ptr %.226971710.fr, i64 1
  %scevgep1977 = getelementptr i8, ptr %scevgep1975, i64 %umin1974
  %1097 = call i32 @llvm.usub.sat.i32(i32 %1093, i32 %1096)
  br label %.preheader1413

.preheader1413:                                   ; preds = %.lr.ph1688.preheader, %.preheader1414
  %.10973.lcssa = phi i32 [ %.9972, %.preheader1414 ], [ %1097, %.lr.ph1688.preheader ]
  %.23698.lcssa = phi ptr [ %.226971710.fr, %.preheader1414 ], [ %scevgep1977, %.lr.ph1688.preheader ]
  %1098 = icmp sgt i32 %.10973.lcssa, 3
  br i1 %1098, label %.lr.ph1693.preheader, label %.loopexit

.lr.ph1693.preheader:                             ; preds = %.preheader1413
  %1099 = call i32 @llvm.usub.sat.i32(i32 %.10973.lcssa, i32 7)
  %1100 = add nuw i32 %1099, 3
  %1101 = and i32 %1100, -4
  %1102 = zext nneg i32 %1101 to i64
  %1103 = add nuw nsw i64 %1102, 4
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %.23698.lcssa, i8 48, i64 %1103, i1 false), !tbaa !8
  %scevgep1980 = getelementptr i8, ptr %.23698.lcssa, i64 4
  %scevgep1982 = getelementptr i8, ptr %scevgep1980, i64 %1102
  %1104 = and i32 %1100, -4
  %1105 = add nsw i32 %.10973.lcssa, -4
  %1106 = sub nsw i32 %1105, %1104
  br label %.loopexit

.loopexit:                                        ; preds = %.lr.ph1693.preheader, %.preheader1413
  %.12975 = phi i32 [ %.10973.lcssa, %.preheader1413 ], [ %1106, %.lr.ph1693.preheader ]
  %.25700 = phi ptr [ %.23698.lcssa, %.preheader1413 ], [ %scevgep1982, %.lr.ph1693.preheader ]
  %.not11461696 = icmp eq i32 %.12975, 0
  br i1 %.not11461696, label %._crit_edge1702, label %.lr.ph1701

.loopexit.thread:                                 ; preds = %.lr.ph1713
  br i1 %.not11451684, label %._crit_edge1702, label %.lr.ph1701.split.preheader

.lr.ph1701:                                       ; preds = %.loopexit
  br i1 %.not1141, label %.lr.ph1701.split.us.preheader, label %.lr.ph1701.split.preheader

.lr.ph1701.split.preheader:                       ; preds = %.loopexit.thread, %.lr.ph1701
  %.267011699.ph = phi ptr [ %.226971710.fr, %.loopexit.thread ], [ %.25700, %.lr.ph1701 ]
  %.139761697.ph = phi i32 [ %.9972, %.loopexit.thread ], [ %.12975, %.lr.ph1701 ]
  %xtraiter2371 = and i32 %.139761697.ph, 1
  %lcmp.mod2372.not = icmp eq i32 %xtraiter2371, 0
  br i1 %lcmp.mod2372.not, label %.lr.ph1701.split.prol.loopexit, label %.lr.ph1701.split.prol

.lr.ph1701.split.prol:                            ; preds = %.lr.ph1701.split.preheader
  %1107 = add i32 %.129511707, 1
  %1108 = icmp eq i32 %.129511707, %1073
  %1109 = load i8, ptr @stbsp__comma, align 1
  %spec.select1220.prol = select i1 %1108, i8 %1109, i8 48
  %spec.select1221.prol = select i1 %1108, i32 0, i32 %1107
  %.27702.prol = getelementptr inbounds i8, ptr %.267011699.ph, i64 1
  store i8 %spec.select1220.prol, ptr %.267011699.ph, align 1, !tbaa !5
  %1110 = add nsw i32 %.139761697.ph, -1
  br label %.lr.ph1701.split.prol.loopexit

.lr.ph1701.split.prol.loopexit:                   ; preds = %.lr.ph1701.split.prol, %.lr.ph1701.split.preheader
  %spec.select1221.lcssa.unr = phi i32 [ poison, %.lr.ph1701.split.preheader ], [ %spec.select1221.prol, %.lr.ph1701.split.prol ]
  %.27702.lcssa.unr = phi ptr [ poison, %.lr.ph1701.split.preheader ], [ %.27702.prol, %.lr.ph1701.split.prol ]
  %.267011699.unr = phi ptr [ %.267011699.ph, %.lr.ph1701.split.preheader ], [ %.27702.prol, %.lr.ph1701.split.prol ]
  %.139521698.unr = phi i32 [ %.129511707, %.lr.ph1701.split.preheader ], [ %spec.select1221.prol, %.lr.ph1701.split.prol ]
  %.139761697.unr = phi i32 [ %.139761697.ph, %.lr.ph1701.split.preheader ], [ %1110, %.lr.ph1701.split.prol ]
  %1111 = icmp eq i32 %.139761697.ph, 1
  br i1 %1111, label %._crit_edge1702, label %.lr.ph1701.split

.lr.ph1701.split.us.preheader:                    ; preds = %.lr.ph1701
  %1112 = zext i32 %.12975 to i64
  call void @llvm.memset.p0.i64(ptr align 1 %.25700, i8 48, i64 %1112, i1 false), !tbaa !5
  %1113 = add i32 %.12975, -1
  %1114 = zext i32 %1113 to i64
  %scevgep1983 = getelementptr i8, ptr %.25700, i64 1
  %scevgep1984 = getelementptr i8, ptr %scevgep1983, i64 %1114
  br label %._crit_edge1702

.lr.ph1701.split:                                 ; preds = %.lr.ph1701.split.prol.loopexit, %.lr.ph1701.split
  %.267011699 = phi ptr [ %.27702.1, %.lr.ph1701.split ], [ %.267011699.unr, %.lr.ph1701.split.prol.loopexit ]
  %.139521698 = phi i32 [ %spec.select1221.1, %.lr.ph1701.split ], [ %.139521698.unr, %.lr.ph1701.split.prol.loopexit ]
  %.139761697 = phi i32 [ %1121, %.lr.ph1701.split ], [ %.139761697.unr, %.lr.ph1701.split.prol.loopexit ]
  %1115 = add i32 %.139521698, 1
  %1116 = icmp eq i32 %.139521698, %1073
  %1117 = load i8, ptr @stbsp__comma, align 1
  %spec.select1220 = select i1 %1116, i8 %1117, i8 48
  %spec.select1221 = select i1 %1116, i32 0, i32 %1115
  %.27702 = getelementptr inbounds i8, ptr %.267011699, i64 1
  store i8 %spec.select1220, ptr %.267011699, align 1, !tbaa !5
  %1118 = add i32 %spec.select1221, 1
  %1119 = icmp eq i32 %spec.select1221, %1073
  %1120 = load i8, ptr @stbsp__comma, align 1
  %spec.select1220.1 = select i1 %1119, i8 %1120, i8 48
  %spec.select1221.1 = select i1 %1119, i32 0, i32 %1118
  %.27702.1 = getelementptr inbounds i8, ptr %.267011699, i64 2
  store i8 %spec.select1220.1, ptr %.27702, align 1, !tbaa !5
  %1121 = add nsw i32 %.139761697, -2
  %.not1146.1 = icmp eq i32 %1121, 0
  br i1 %.not1146.1, label %._crit_edge1702, label %.lr.ph1701.split, !llvm.loop !42

._crit_edge1702:                                  ; preds = %.lr.ph1701.split.prol.loopexit, %.lr.ph1701.split, %.loopexit.thread, %.lr.ph1701.split.us.preheader, %.loopexit
  %.13952.lcssa = phi i32 [ %.129511707, %.loopexit ], [ %.129511707, %.lr.ph1701.split.us.preheader ], [ %.129511707, %.loopexit.thread ], [ %spec.select1221.lcssa.unr, %.lr.ph1701.split.prol.loopexit ], [ %spec.select1221.1, %.lr.ph1701.split ]
  %.26701.lcssa = phi ptr [ %.25700, %.loopexit ], [ %scevgep1984, %.lr.ph1701.split.us.preheader ], [ %.226971710.fr, %.loopexit.thread ], [ %.27702.lcssa.unr, %.lr.ph1701.split.prol.loopexit ], [ %.27702.1, %.lr.ph1701.split ]
  br i1 %.not1070, label %.thread1273, label %1122

1122:                                             ; preds = %._crit_edge1702
  %1123 = ptrtoint ptr %.26701.lcssa to i64
  %1124 = sub i64 %1123, %1085
  %1125 = trunc i64 %1124 to i32
  %1126 = icmp sgt i32 %1125, 510
  br i1 %1126, label %1127, label %.thread1273

1127:                                             ; preds = %1122
  %1128 = add nsw i32 %.147581709, %1125
  %1129 = call ptr %0(ptr noundef %.141711, ptr noundef %1, i32 noundef %1125) #3
  %1130 = icmp eq ptr %1129, null
  br i1 %1130, label %.thread1387, label %.thread1273

.thread1273:                                      ; preds = %1127, %1122, %._crit_edge1702
  %.17761 = phi i32 [ %.147581709, %._crit_edge1702 ], [ %.147581709, %1122 ], [ %1128, %1127 ]
  %.30705 = phi ptr [ %.26701.lcssa, %._crit_edge1702 ], [ %.26701.lcssa, %1122 ], [ %1129, %1127 ]
  %.17 = phi ptr [ %.141711, %._crit_edge1702 ], [ %.141711, %1122 ], [ %1129, %1127 ]
  %1131 = icmp sgt i32 %1087, 0
  br i1 %1131, label %.lr.ph1713, label %.loopexit1429.loopexit, !llvm.loop !43

.loopexit1429.loopexit:                           ; preds = %.thread1273
  %.pre2020 = load i8, ptr %8, align 1, !tbaa !5
  br label %.loopexit1429

.loopexit1429:                                    ; preds = %.loopexit1429.loopexit, %991
  %1132 = phi i8 [ %976, %991 ], [ %.pre2020, %.loopexit1429.loopexit ]
  %.8805 = phi i32 [ %.4801, %991 ], [ %.6803, %.loopexit1429.loopexit ]
  %.19763 = phi i32 [ %.1745, %991 ], [ %.17761, %.loopexit1429.loopexit ]
  %.32707 = phi ptr [ %.2677, %991 ], [ %.30705, %.loopexit1429.loopexit ]
  %.19 = phi ptr [ %.1, %991 ], [ %.17, %.loopexit1429.loopexit ]
  store ptr %16, ptr %13, align 8, !tbaa !14
  %.not11521724 = icmp eq i8 %1132, 0
  br i1 %.not11521724, label %._crit_edge1730, label %.lr.ph1729

.lr.ph1729:                                       ; preds = %.loopexit1429, %1172
  %1133 = phi i8 [ %1173, %1172 ], [ %1132, %.loopexit1429 ]
  %.201727 = phi ptr [ %.24, %1172 ], [ %.19, %.loopexit1429 ]
  %.337081726 = phi ptr [ %.38713, %1172 ], [ %.32707, %.loopexit1429 ]
  %.207641725 = phi i32 [ %.24768, %1172 ], [ %.19763, %.loopexit1429 ]
  %1134 = sext i8 %1133 to i32
  %1135 = ptrtoint ptr %.337081726 to i64
  %1136 = ptrtoint ptr %.201727 to i64
  %.neg1175 = sub i64 %1136, %1135
  %.neg1176 = trunc i64 %.neg1175 to i32
  %1137 = add i32 %.neg1176, 512
  %spec.select1209 = call i32 @llvm.smin.i32(i32 %1137, i32 %1134)
  %.1914 = select i1 %.not1070, i32 %1134, i32 %spec.select1209
  %1138 = trunc i32 %.1914 to i8
  %1139 = sub i8 %1133, %1138
  store i8 %1139, ptr %8, align 1, !tbaa !5
  %.not11771717 = icmp eq i32 %.1914, 0
  br i1 %.not11771717, label %._crit_edge1722, label %.lr.ph1721.preheader

.lr.ph1721.preheader:                             ; preds = %.lr.ph1729
  %xtraiter2374 = and i32 %.1914, 3
  %lcmp.mod2375.not = icmp eq i32 %xtraiter2374, 0
  br i1 %lcmp.mod2375.not, label %.lr.ph1721.prol.loopexit, label %.lr.ph1721.prol

.lr.ph1721.prol:                                  ; preds = %.lr.ph1721.preheader, %.lr.ph1721.prol
  %.347091719.prol = phi ptr [ %1143, %.lr.ph1721.prol ], [ %.337081726, %.lr.ph1721.preheader ]
  %.29151718.prol = phi i32 [ %1144, %.lr.ph1721.prol ], [ %.1914, %.lr.ph1721.preheader ]
  %prol.iter2376 = phi i32 [ %prol.iter2376.next, %.lr.ph1721.prol ], [ 0, %.lr.ph1721.preheader ]
  %1140 = load ptr, ptr %13, align 8, !tbaa !14
  %1141 = getelementptr inbounds i8, ptr %1140, i64 1
  store ptr %1141, ptr %13, align 8, !tbaa !14
  %1142 = load i8, ptr %1140, align 1, !tbaa !5
  %1143 = getelementptr inbounds i8, ptr %.347091719.prol, i64 1
  store i8 %1142, ptr %.347091719.prol, align 1, !tbaa !5
  %1144 = add nsw i32 %.29151718.prol, -1
  %prol.iter2376.next = add i32 %prol.iter2376, 1
  %prol.iter2376.cmp.not = icmp eq i32 %prol.iter2376.next, %xtraiter2374
  br i1 %prol.iter2376.cmp.not, label %.lr.ph1721.prol.loopexit, label %.lr.ph1721.prol, !llvm.loop !44

.lr.ph1721.prol.loopexit:                         ; preds = %.lr.ph1721.prol, %.lr.ph1721.preheader
  %.lcssa2326.unr = phi ptr [ poison, %.lr.ph1721.preheader ], [ %1143, %.lr.ph1721.prol ]
  %.347091719.unr = phi ptr [ %.337081726, %.lr.ph1721.preheader ], [ %1143, %.lr.ph1721.prol ]
  %.29151718.unr = phi i32 [ %.1914, %.lr.ph1721.preheader ], [ %1144, %.lr.ph1721.prol ]
  %1145 = icmp ult i32 %.1914, 4
  br i1 %1145, label %._crit_edge1722, label %.lr.ph1721

.lr.ph1721:                                       ; preds = %.lr.ph1721.prol.loopexit, %.lr.ph1721
  %.347091719 = phi ptr [ %1161, %.lr.ph1721 ], [ %.347091719.unr, %.lr.ph1721.prol.loopexit ]
  %.29151718 = phi i32 [ %1162, %.lr.ph1721 ], [ %.29151718.unr, %.lr.ph1721.prol.loopexit ]
  %1146 = load ptr, ptr %13, align 8, !tbaa !14
  %1147 = getelementptr inbounds i8, ptr %1146, i64 1
  store ptr %1147, ptr %13, align 8, !tbaa !14
  %1148 = load i8, ptr %1146, align 1, !tbaa !5
  %1149 = getelementptr inbounds i8, ptr %.347091719, i64 1
  store i8 %1148, ptr %.347091719, align 1, !tbaa !5
  %1150 = load ptr, ptr %13, align 8, !tbaa !14
  %1151 = getelementptr inbounds i8, ptr %1150, i64 1
  store ptr %1151, ptr %13, align 8, !tbaa !14
  %1152 = load i8, ptr %1150, align 1, !tbaa !5
  %1153 = getelementptr inbounds i8, ptr %.347091719, i64 2
  store i8 %1152, ptr %1149, align 1, !tbaa !5
  %1154 = load ptr, ptr %13, align 8, !tbaa !14
  %1155 = getelementptr inbounds i8, ptr %1154, i64 1
  store ptr %1155, ptr %13, align 8, !tbaa !14
  %1156 = load i8, ptr %1154, align 1, !tbaa !5
  %1157 = getelementptr inbounds i8, ptr %.347091719, i64 3
  store i8 %1156, ptr %1153, align 1, !tbaa !5
  %1158 = load ptr, ptr %13, align 8, !tbaa !14
  %1159 = getelementptr inbounds i8, ptr %1158, i64 1
  store ptr %1159, ptr %13, align 8, !tbaa !14
  %1160 = load i8, ptr %1158, align 1, !tbaa !5
  %1161 = getelementptr inbounds i8, ptr %.347091719, i64 4
  store i8 %1160, ptr %1157, align 1, !tbaa !5
  %1162 = add nsw i32 %.29151718, -4
  %.not1177.3 = icmp eq i32 %1162, 0
  br i1 %.not1177.3, label %._crit_edge1722, label %.lr.ph1721, !llvm.loop !45

._crit_edge1722:                                  ; preds = %.lr.ph1721.prol.loopexit, %.lr.ph1721, %.lr.ph1729
  %.34709.lcssa = phi ptr [ %.337081726, %.lr.ph1729 ], [ %.lcssa2326.unr, %.lr.ph1721.prol.loopexit ], [ %1161, %.lr.ph1721 ]
  br i1 %.not1070, label %1172, label %1163

1163:                                             ; preds = %._crit_edge1722
  %1164 = ptrtoint ptr %.34709.lcssa to i64
  %1165 = sub i64 %1164, %1136
  %1166 = trunc i64 %1165 to i32
  %1167 = icmp sgt i32 %1166, 510
  br i1 %1167, label %1168, label %1172

1168:                                             ; preds = %1163
  %1169 = add nsw i32 %.207641725, %1166
  %1170 = call ptr %0(ptr noundef %.201727, ptr noundef %1, i32 noundef %1166) #3
  %1171 = icmp eq ptr %1170, null
  br i1 %1171, label %.thread1387, label %1172

1172:                                             ; preds = %1168, %1163, %._crit_edge1722
  %.24768 = phi i32 [ %.207641725, %._crit_edge1722 ], [ %.207641725, %1163 ], [ %1169, %1168 ]
  %.38713 = phi ptr [ %.34709.lcssa, %._crit_edge1722 ], [ %.34709.lcssa, %1163 ], [ %1170, %1168 ]
  %.24 = phi ptr [ %.201727, %._crit_edge1722 ], [ %.201727, %1163 ], [ %1170, %1168 ]
  %1173 = load i8, ptr %8, align 1, !tbaa !5
  %.not1152 = icmp eq i8 %1173, 0
  br i1 %.not1152, label %._crit_edge1730, label %.lr.ph1729, !llvm.loop !46

._crit_edge1730:                                  ; preds = %1172, %.loopexit1429.thread, %.loopexit1429
  %.88052063 = phi i32 [ %.8805, %.loopexit1429 ], [ %.6803, %.loopexit1429.thread ], [ %.8805, %1172 ]
  %.20764.lcssa = phi i32 [ %.19763, %.loopexit1429 ], [ %.10754.lcssa, %.loopexit1429.thread ], [ %.24768, %1172 ]
  %.33708.lcssa = phi ptr [ %.32707, %.loopexit1429 ], [ %.17692.lcssa, %.loopexit1429.thread ], [ %.38713, %1172 ]
  %.20.lcssa = phi ptr [ %.19, %.loopexit1429 ], [ %.10.lcssa, %.loopexit1429.thread ], [ %.24, %1172 ]
  %1174 = load i32, ptr %10, align 4, !tbaa !8
  %.not11531750 = icmp eq i32 %1174, 0
  br i1 %.not11531750, label %.preheader1425, label %.lr.ph1757

.preheader1425:                                   ; preds = %1260, %._crit_edge1730
  %.25769.lcssa = phi i32 [ %.20764.lcssa, %._crit_edge1730 ], [ %.29773, %1260 ]
  %.39714.lcssa = phi ptr [ %.33708.lcssa, %._crit_edge1730 ], [ %.45720, %1260 ]
  %.25.lcssa = phi ptr [ %.20.lcssa, %._crit_edge1730 ], [ %.29, %1260 ]
  %.not11541780 = icmp eq i32 %.3830, 0
  br i1 %.not11541780, label %._crit_edge1786, label %.lr.ph1785

.lr.ph1757:                                       ; preds = %._crit_edge1730, %1260
  %.251755 = phi ptr [ %.29, %1260 ], [ %.20.lcssa, %._crit_edge1730 ]
  %.397141754 = phi ptr [ %.45720, %1260 ], [ %.33708.lcssa, %._crit_edge1730 ]
  %.257691753 = phi i32 [ %.29773, %1260 ], [ %.20764.lcssa, %._crit_edge1730 ]
  %.369101752 = phi ptr [ %.38912.lcssa, %1260 ], [ %.35909, %._crit_edge1730 ]
  %.209381751 = phi i32 [ %1178, %1260 ], [ %1174, %._crit_edge1730 ]
  %1175 = ptrtoint ptr %.397141754 to i64
  %1176 = ptrtoint ptr %.251755 to i64
  %.neg1171 = sub i64 %1176, %1175
  %.neg1172 = trunc i64 %.neg1171 to i32
  %1177 = add i32 %.neg1172, 512
  %spec.select1210 = call i32 @llvm.smin.i32(i32 %.209381751, i32 %1177)
  %.1852 = select i1 %.not1070, i32 %.209381751, i32 %spec.select1210
  %.1852.fr = freeze i32 %.1852
  %1178 = sub i32 %.209381751, %.1852.fr
  %1179 = icmp sgt i32 %.1852.fr, 3
  br i1 %1179, label %.lr.ph1738.preheader, label %.preheader1412

.lr.ph1738.preheader:                             ; preds = %.lr.ph1757
  %1180 = add i32 %.1852.fr, -4
  %1181 = lshr i32 %1180, 2
  %1182 = add nuw nsw i32 %1181, 1
  %xtraiter2377 = and i32 %1182, 7
  %lcmp.mod2378.not = icmp eq i32 %xtraiter2377, 0
  br i1 %lcmp.mod2378.not, label %.lr.ph1738.prol.loopexit, label %.lr.ph1738.prol

.lr.ph1738.prol:                                  ; preds = %.lr.ph1738.preheader, %.lr.ph1738.prol
  %.407151736.prol = phi ptr [ %1184, %.lr.ph1738.prol ], [ %.397141754, %.lr.ph1738.preheader ]
  %.28531735.prol = phi i32 [ %1186, %.lr.ph1738.prol ], [ %.1852.fr, %.lr.ph1738.preheader ]
  %.379111734.prol = phi ptr [ %1185, %.lr.ph1738.prol ], [ %.369101752, %.lr.ph1738.preheader ]
  %prol.iter2379 = phi i32 [ %prol.iter2379.next, %.lr.ph1738.prol ], [ 0, %.lr.ph1738.preheader ]
  %1183 = load volatile i32, ptr %.379111734.prol, align 4, !tbaa !8
  store volatile i32 %1183, ptr %.407151736.prol, align 4, !tbaa !8
  %1184 = getelementptr inbounds i8, ptr %.407151736.prol, i64 4
  %1185 = getelementptr inbounds i8, ptr %.379111734.prol, i64 4
  %1186 = add nsw i32 %.28531735.prol, -4
  %prol.iter2379.next = add i32 %prol.iter2379, 1
  %prol.iter2379.cmp.not = icmp eq i32 %prol.iter2379.next, %xtraiter2377
  br i1 %prol.iter2379.cmp.not, label %.lr.ph1738.prol.loopexit, label %.lr.ph1738.prol, !llvm.loop !47

.lr.ph1738.prol.loopexit:                         ; preds = %.lr.ph1738.prol, %.lr.ph1738.preheader
  %.407151736.unr = phi ptr [ %.397141754, %.lr.ph1738.preheader ], [ %1184, %.lr.ph1738.prol ]
  %.28531735.unr = phi i32 [ %.1852.fr, %.lr.ph1738.preheader ], [ %1186, %.lr.ph1738.prol ]
  %.379111734.unr = phi ptr [ %.369101752, %.lr.ph1738.preheader ], [ %1185, %.lr.ph1738.prol ]
  %.lcssa2330.unr = phi ptr [ poison, %.lr.ph1738.preheader ], [ %1184, %.lr.ph1738.prol ]
  %.lcssa2329.unr = phi ptr [ poison, %.lr.ph1738.preheader ], [ %1185, %.lr.ph1738.prol ]
  %.lcssa2328.unr = phi i32 [ poison, %.lr.ph1738.preheader ], [ %1186, %.lr.ph1738.prol ]
  %1187 = icmp ult i32 %1180, 28
  br i1 %1187, label %.preheader1412, label %.lr.ph1738

.preheader1412:                                   ; preds = %.lr.ph1738.prol.loopexit, %.lr.ph1738, %.lr.ph1757
  %.37911.lcssa = phi ptr [ %.369101752, %.lr.ph1757 ], [ %.lcssa2329.unr, %.lr.ph1738.prol.loopexit ], [ %1222, %.lr.ph1738 ]
  %.2853.lcssa = phi i32 [ %.1852.fr, %.lr.ph1757 ], [ %.lcssa2328.unr, %.lr.ph1738.prol.loopexit ], [ %1223, %.lr.ph1738 ]
  %.40715.lcssa = phi ptr [ %.397141754, %.lr.ph1757 ], [ %.lcssa2330.unr, %.lr.ph1738.prol.loopexit ], [ %1221, %.lr.ph1738 ]
  %.not11731742 = icmp eq i32 %.2853.lcssa, 0
  br i1 %.not11731742, label %._crit_edge1747, label %.lr.ph1746.preheader

.lr.ph1746.preheader:                             ; preds = %.preheader1412
  %.37911.lcssa2233 = ptrtoint ptr %.37911.lcssa to i64
  %.40715.lcssa2232 = ptrtoint ptr %.40715.lcssa to i64
  %1188 = zext i32 %.2853.lcssa to i64
  %min.iters.check = icmp ult i32 %.2853.lcssa, 32
  %1189 = sub i64 %.40715.lcssa2232, %.37911.lcssa2233
  %diff.check = icmp ult i64 %1189, 32
  %or.cond2264 = select i1 %min.iters.check, i1 true, i1 %diff.check
  br i1 %or.cond2264, label %.lr.ph1746.preheader2265, label %vector.ph

.lr.ph1746.preheader2265:                         ; preds = %middle.block, %.lr.ph1746.preheader
  %.417161745.ph = phi ptr [ %.40715.lcssa, %.lr.ph1746.preheader ], [ %ind.end, %middle.block ]
  %.38541744.ph = phi i32 [ %.2853.lcssa, %.lr.ph1746.preheader ], [ %ind.end2234, %middle.block ]
  %.389121743.ph = phi ptr [ %.37911.lcssa, %.lr.ph1746.preheader ], [ %ind.end2236, %middle.block ]
  %1190 = add nsw i32 %.38541744.ph, -1
  %xtraiter2380 = and i32 %.38541744.ph, 7
  %lcmp.mod2381.not = icmp eq i32 %xtraiter2380, 0
  br i1 %lcmp.mod2381.not, label %.lr.ph1746.prol.loopexit, label %.lr.ph1746.prol

.lr.ph1746.prol:                                  ; preds = %.lr.ph1746.preheader2265, %.lr.ph1746.prol
  %.417161745.prol = phi ptr [ %1193, %.lr.ph1746.prol ], [ %.417161745.ph, %.lr.ph1746.preheader2265 ]
  %.38541744.prol = phi i32 [ %1194, %.lr.ph1746.prol ], [ %.38541744.ph, %.lr.ph1746.preheader2265 ]
  %.389121743.prol = phi ptr [ %1191, %.lr.ph1746.prol ], [ %.389121743.ph, %.lr.ph1746.preheader2265 ]
  %prol.iter2382 = phi i32 [ %prol.iter2382.next, %.lr.ph1746.prol ], [ 0, %.lr.ph1746.preheader2265 ]
  %1191 = getelementptr inbounds i8, ptr %.389121743.prol, i64 1
  %1192 = load i8, ptr %.389121743.prol, align 1, !tbaa !5
  %1193 = getelementptr inbounds i8, ptr %.417161745.prol, i64 1
  store i8 %1192, ptr %.417161745.prol, align 1, !tbaa !5
  %1194 = add nsw i32 %.38541744.prol, -1
  %prol.iter2382.next = add i32 %prol.iter2382, 1
  %prol.iter2382.cmp.not = icmp eq i32 %prol.iter2382.next, %xtraiter2380
  br i1 %prol.iter2382.cmp.not, label %.lr.ph1746.prol.loopexit, label %.lr.ph1746.prol, !llvm.loop !48

.lr.ph1746.prol.loopexit:                         ; preds = %.lr.ph1746.prol, %.lr.ph1746.preheader2265
  %.lcssa2332.unr = phi ptr [ poison, %.lr.ph1746.preheader2265 ], [ %1191, %.lr.ph1746.prol ]
  %.lcssa2331.unr = phi ptr [ poison, %.lr.ph1746.preheader2265 ], [ %1193, %.lr.ph1746.prol ]
  %.417161745.unr = phi ptr [ %.417161745.ph, %.lr.ph1746.preheader2265 ], [ %1193, %.lr.ph1746.prol ]
  %.38541744.unr = phi i32 [ %.38541744.ph, %.lr.ph1746.preheader2265 ], [ %1194, %.lr.ph1746.prol ]
  %.389121743.unr = phi ptr [ %.389121743.ph, %.lr.ph1746.preheader2265 ], [ %1191, %.lr.ph1746.prol ]
  %1195 = icmp ult i32 %1190, 7
  br i1 %1195, label %._crit_edge1747, label %.lr.ph1746

vector.ph:                                        ; preds = %.lr.ph1746.preheader
  %n.vec = and i64 %1188, 4294967264
  %ind.end = getelementptr i8, ptr %.40715.lcssa, i64 %n.vec
  %.cast = trunc nuw i64 %n.vec to i32
  %ind.end2234 = sub i32 %.2853.lcssa, %.cast
  %ind.end2236 = getelementptr i8, ptr %.37911.lcssa, i64 %n.vec
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %next.gep = getelementptr i8, ptr %.40715.lcssa, i64 %index
  %next.gep2239 = getelementptr i8, ptr %.37911.lcssa, i64 %index
  %1196 = getelementptr i8, ptr %next.gep2239, i64 16
  %wide.load = load <16 x i8>, ptr %next.gep2239, align 1, !tbaa !5
  %wide.load2241 = load <16 x i8>, ptr %1196, align 1, !tbaa !5
  %1197 = getelementptr i8, ptr %next.gep, i64 16
  store <16 x i8> %wide.load, ptr %next.gep, align 1, !tbaa !5
  store <16 x i8> %wide.load2241, ptr %1197, align 1, !tbaa !5
  %index.next = add nuw i64 %index, 32
  %1198 = icmp eq i64 %index.next, %n.vec
  br i1 %1198, label %middle.block, label %vector.body, !llvm.loop !49

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %1188
  br i1 %cmp.n, label %._crit_edge1747, label %.lr.ph1746.preheader2265

.lr.ph1738:                                       ; preds = %.lr.ph1738.prol.loopexit, %.lr.ph1738
  %.407151736 = phi ptr [ %1221, %.lr.ph1738 ], [ %.407151736.unr, %.lr.ph1738.prol.loopexit ]
  %.28531735 = phi i32 [ %1223, %.lr.ph1738 ], [ %.28531735.unr, %.lr.ph1738.prol.loopexit ]
  %.379111734 = phi ptr [ %1222, %.lr.ph1738 ], [ %.379111734.unr, %.lr.ph1738.prol.loopexit ]
  %1199 = load volatile i32, ptr %.379111734, align 4, !tbaa !8
  store volatile i32 %1199, ptr %.407151736, align 4, !tbaa !8
  %1200 = getelementptr inbounds i8, ptr %.407151736, i64 4
  %1201 = getelementptr inbounds i8, ptr %.379111734, i64 4
  %1202 = load volatile i32, ptr %1201, align 4, !tbaa !8
  store volatile i32 %1202, ptr %1200, align 4, !tbaa !8
  %1203 = getelementptr inbounds i8, ptr %.407151736, i64 8
  %1204 = getelementptr inbounds i8, ptr %.379111734, i64 8
  %1205 = load volatile i32, ptr %1204, align 4, !tbaa !8
  store volatile i32 %1205, ptr %1203, align 4, !tbaa !8
  %1206 = getelementptr inbounds i8, ptr %.407151736, i64 12
  %1207 = getelementptr inbounds i8, ptr %.379111734, i64 12
  %1208 = load volatile i32, ptr %1207, align 4, !tbaa !8
  store volatile i32 %1208, ptr %1206, align 4, !tbaa !8
  %1209 = getelementptr inbounds i8, ptr %.407151736, i64 16
  %1210 = getelementptr inbounds i8, ptr %.379111734, i64 16
  %1211 = load volatile i32, ptr %1210, align 4, !tbaa !8
  store volatile i32 %1211, ptr %1209, align 4, !tbaa !8
  %1212 = getelementptr inbounds i8, ptr %.407151736, i64 20
  %1213 = getelementptr inbounds i8, ptr %.379111734, i64 20
  %1214 = load volatile i32, ptr %1213, align 4, !tbaa !8
  store volatile i32 %1214, ptr %1212, align 4, !tbaa !8
  %1215 = getelementptr inbounds i8, ptr %.407151736, i64 24
  %1216 = getelementptr inbounds i8, ptr %.379111734, i64 24
  %1217 = load volatile i32, ptr %1216, align 4, !tbaa !8
  store volatile i32 %1217, ptr %1215, align 4, !tbaa !8
  %1218 = getelementptr inbounds i8, ptr %.407151736, i64 28
  %1219 = getelementptr inbounds i8, ptr %.379111734, i64 28
  %1220 = load volatile i32, ptr %1219, align 4, !tbaa !8
  store volatile i32 %1220, ptr %1218, align 4, !tbaa !8
  %1221 = getelementptr inbounds i8, ptr %.407151736, i64 32
  %1222 = getelementptr inbounds i8, ptr %.379111734, i64 32
  %1223 = add nsw i32 %.28531735, -32
  %1224 = add i32 %.28531735, -36
  %1225 = icmp ult i32 %1224, -8
  br i1 %1225, label %.lr.ph1738, label %.preheader1412, !llvm.loop !50

.lr.ph1746:                                       ; preds = %.lr.ph1746.prol.loopexit, %.lr.ph1746
  %.417161745 = phi ptr [ %1249, %.lr.ph1746 ], [ %.417161745.unr, %.lr.ph1746.prol.loopexit ]
  %.38541744 = phi i32 [ %1250, %.lr.ph1746 ], [ %.38541744.unr, %.lr.ph1746.prol.loopexit ]
  %.389121743 = phi ptr [ %1247, %.lr.ph1746 ], [ %.389121743.unr, %.lr.ph1746.prol.loopexit ]
  %1226 = getelementptr inbounds i8, ptr %.389121743, i64 1
  %1227 = load i8, ptr %.389121743, align 1, !tbaa !5
  %1228 = getelementptr inbounds i8, ptr %.417161745, i64 1
  store i8 %1227, ptr %.417161745, align 1, !tbaa !5
  %1229 = getelementptr inbounds i8, ptr %.389121743, i64 2
  %1230 = load i8, ptr %1226, align 1, !tbaa !5
  %1231 = getelementptr inbounds i8, ptr %.417161745, i64 2
  store i8 %1230, ptr %1228, align 1, !tbaa !5
  %1232 = getelementptr inbounds i8, ptr %.389121743, i64 3
  %1233 = load i8, ptr %1229, align 1, !tbaa !5
  %1234 = getelementptr inbounds i8, ptr %.417161745, i64 3
  store i8 %1233, ptr %1231, align 1, !tbaa !5
  %1235 = getelementptr inbounds i8, ptr %.389121743, i64 4
  %1236 = load i8, ptr %1232, align 1, !tbaa !5
  %1237 = getelementptr inbounds i8, ptr %.417161745, i64 4
  store i8 %1236, ptr %1234, align 1, !tbaa !5
  %1238 = getelementptr inbounds i8, ptr %.389121743, i64 5
  %1239 = load i8, ptr %1235, align 1, !tbaa !5
  %1240 = getelementptr inbounds i8, ptr %.417161745, i64 5
  store i8 %1239, ptr %1237, align 1, !tbaa !5
  %1241 = getelementptr inbounds i8, ptr %.389121743, i64 6
  %1242 = load i8, ptr %1238, align 1, !tbaa !5
  %1243 = getelementptr inbounds i8, ptr %.417161745, i64 6
  store i8 %1242, ptr %1240, align 1, !tbaa !5
  %1244 = getelementptr inbounds i8, ptr %.389121743, i64 7
  %1245 = load i8, ptr %1241, align 1, !tbaa !5
  %1246 = getelementptr inbounds i8, ptr %.417161745, i64 7
  store i8 %1245, ptr %1243, align 1, !tbaa !5
  %1247 = getelementptr inbounds i8, ptr %.389121743, i64 8
  %1248 = load i8, ptr %1244, align 1, !tbaa !5
  %1249 = getelementptr inbounds i8, ptr %.417161745, i64 8
  store i8 %1248, ptr %1246, align 1, !tbaa !5
  %1250 = add nsw i32 %.38541744, -8
  %.not1173.7 = icmp eq i32 %1250, 0
  br i1 %.not1173.7, label %._crit_edge1747, label %.lr.ph1746, !llvm.loop !51

._crit_edge1747:                                  ; preds = %.lr.ph1746.prol.loopexit, %.lr.ph1746, %middle.block, %.preheader1412
  %.38912.lcssa = phi ptr [ %.37911.lcssa, %.preheader1412 ], [ %ind.end2236, %middle.block ], [ %.lcssa2332.unr, %.lr.ph1746.prol.loopexit ], [ %1247, %.lr.ph1746 ]
  %.41716.lcssa = phi ptr [ %.40715.lcssa, %.preheader1412 ], [ %ind.end, %middle.block ], [ %.lcssa2331.unr, %.lr.ph1746.prol.loopexit ], [ %1249, %.lr.ph1746 ]
  br i1 %.not1070, label %1260, label %1251

1251:                                             ; preds = %._crit_edge1747
  %1252 = ptrtoint ptr %.41716.lcssa to i64
  %1253 = sub i64 %1252, %1176
  %1254 = trunc i64 %1253 to i32
  %1255 = icmp sgt i32 %1254, 510
  br i1 %1255, label %1256, label %1260

1256:                                             ; preds = %1251
  %1257 = add nsw i32 %.257691753, %1254
  %1258 = call ptr %0(ptr noundef %.251755, ptr noundef %1, i32 noundef %1254) #3
  %1259 = icmp eq ptr %1258, null
  br i1 %1259, label %.thread1387, label %1260

1260:                                             ; preds = %1256, %1251, %._crit_edge1747
  %.29773 = phi i32 [ %.257691753, %._crit_edge1747 ], [ %.257691753, %1251 ], [ %1257, %1256 ]
  %.45720 = phi ptr [ %.41716.lcssa, %._crit_edge1747 ], [ %.41716.lcssa, %1251 ], [ %1258, %1256 ]
  %.29 = phi ptr [ %.251755, %._crit_edge1747 ], [ %.251755, %1251 ], [ %1258, %1256 ]
  %.not1153 = icmp eq i32 %1178, 0
  br i1 %.not1153, label %.preheader1425, label %.lr.ph1757, !llvm.loop !52

.lr.ph1785:                                       ; preds = %.preheader1425, %1296
  %.301784 = phi ptr [ %.34, %1296 ], [ %.25.lcssa, %.preheader1425 ]
  %.467211783 = phi ptr [ %.53, %1296 ], [ %.39714.lcssa, %.preheader1425 ]
  %.307741782 = phi i32 [ %.34778, %1296 ], [ %.25769.lcssa, %.preheader1425 ]
  %.48311781 = phi i32 [ %1264, %1296 ], [ %.3830, %.preheader1425 ]
  %.467211783.fr = freeze ptr %.467211783
  %1261 = ptrtoint ptr %.467211783.fr to i64
  %1262 = ptrtoint ptr %.301784 to i64
  %.neg1166 = sub i64 %1262, %1261
  %.neg1167 = trunc i64 %.neg1166 to i32
  %1263 = add i32 %.neg1167, 512
  %spec.select1211 = call i32 @llvm.smin.i32(i32 %.48311781, i32 %1263)
  %.1823 = select i1 %.not1070, i32 %.48311781, i32 %spec.select1211
  %1264 = sub nsw i32 %.48311781, %.1823
  %.not11681761 = icmp eq i32 %.1823, 0
  %1265 = and i64 %1261, 3
  %1266 = icmp eq i64 %1265, 0
  %or.cond12141762 = or i1 %.not11681761, %1266
  br i1 %or.cond12141762, label %.preheader1411, label %.lr.ph1766.preheader

.lr.ph1766.preheader:                             ; preds = %.lr.ph1785
  %1267 = trunc i64 %1261 to i2
  %1268 = xor i2 %1267, -1
  %1269 = zext i2 %1268 to i64
  %1270 = add i32 %.1823, -1
  %1271 = zext i32 %1270 to i64
  %umin1985 = call i64 @llvm.umin.i64(i64 %1269, i64 %1271)
  %1272 = add nuw nsw i64 %umin1985, 1
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %.467211783.fr, i8 48, i64 %1272, i1 false), !tbaa !5
  %1273 = zext i2 %1268 to i32
  %scevgep1986 = getelementptr i8, ptr %.467211783.fr, i64 1
  %scevgep1988 = getelementptr i8, ptr %scevgep1986, i64 %umin1985
  %1274 = call i32 @llvm.usub.sat.i32(i32 %1270, i32 %1273)
  br label %.preheader1411

.preheader1411:                                   ; preds = %.lr.ph1766.preheader, %.lr.ph1785
  %.2824.lcssa = phi i32 [ %.1823, %.lr.ph1785 ], [ %1274, %.lr.ph1766.preheader ]
  %.47722.lcssa = phi ptr [ %.467211783.fr, %.lr.ph1785 ], [ %scevgep1988, %.lr.ph1766.preheader ]
  %1275 = icmp sgt i32 %.2824.lcssa, 3
  br i1 %1275, label %.lr.ph1771.preheader, label %.preheader1410

.lr.ph1771.preheader:                             ; preds = %.preheader1411
  %1276 = call i32 @llvm.usub.sat.i32(i32 %.2824.lcssa, i32 7)
  %1277 = add nuw i32 %1276, 3
  %1278 = and i32 %1277, -4
  %1279 = zext nneg i32 %1278 to i64
  %1280 = add nuw nsw i64 %1279, 4
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %.47722.lcssa, i8 48, i64 %1280, i1 false), !tbaa !8
  %scevgep1991 = getelementptr i8, ptr %.47722.lcssa, i64 4
  %scevgep1993 = getelementptr i8, ptr %scevgep1991, i64 %1279
  %1281 = and i32 %1277, -4
  %1282 = add nsw i32 %.2824.lcssa, -4
  %1283 = sub nsw i32 %1282, %1281
  br label %.preheader1410

.preheader1410:                                   ; preds = %.lr.ph1771.preheader, %.preheader1411
  %.3825.lcssa = phi i32 [ %.2824.lcssa, %.preheader1411 ], [ %1283, %.lr.ph1771.preheader ]
  %.48723.lcssa = phi ptr [ %.47722.lcssa, %.preheader1411 ], [ %scevgep1993, %.lr.ph1771.preheader ]
  %.not11691774 = icmp eq i32 %.3825.lcssa, 0
  br i1 %.not11691774, label %._crit_edge1778, label %.lr.ph1777.preheader

.lr.ph1777.preheader:                             ; preds = %.preheader1410
  %1284 = zext i32 %.3825.lcssa to i64
  call void @llvm.memset.p0.i64(ptr align 1 %.48723.lcssa, i8 48, i64 %1284, i1 false), !tbaa !5
  %1285 = add i32 %.3825.lcssa, -1
  %1286 = zext i32 %1285 to i64
  %scevgep1994 = getelementptr i8, ptr %.48723.lcssa, i64 1
  %scevgep1995 = getelementptr i8, ptr %scevgep1994, i64 %1286
  br label %._crit_edge1778

._crit_edge1778:                                  ; preds = %.lr.ph1777.preheader, %.preheader1410
  %.49724.lcssa = phi ptr [ %.48723.lcssa, %.preheader1410 ], [ %scevgep1995, %.lr.ph1777.preheader ]
  br i1 %.not1070, label %1296, label %1287

1287:                                             ; preds = %._crit_edge1778
  %1288 = ptrtoint ptr %.49724.lcssa to i64
  %1289 = sub i64 %1288, %1262
  %1290 = trunc i64 %1289 to i32
  %1291 = icmp sgt i32 %1290, 510
  br i1 %1291, label %1292, label %1296

1292:                                             ; preds = %1287
  %1293 = add nsw i32 %.307741782, %1290
  %1294 = call ptr %0(ptr noundef %.301784, ptr noundef %1, i32 noundef %1290) #3
  %1295 = icmp eq ptr %1294, null
  br i1 %1295, label %.thread1387, label %1296

1296:                                             ; preds = %1292, %1287, %._crit_edge1778
  %.34778 = phi i32 [ %.307741782, %._crit_edge1778 ], [ %.307741782, %1287 ], [ %1293, %1292 ]
  %.53 = phi ptr [ %.49724.lcssa, %._crit_edge1778 ], [ %.49724.lcssa, %1287 ], [ %1294, %1292 ]
  %.34 = phi ptr [ %.301784, %._crit_edge1778 ], [ %.301784, %1287 ], [ %1294, %1292 ]
  %.not1154 = icmp eq i32 %1264, 0
  br i1 %.not1154, label %._crit_edge1786, label %.lr.ph1785, !llvm.loop !53

._crit_edge1786:                                  ; preds = %1296, %.preheader1425
  %.30774.lcssa = phi i32 [ %.25769.lcssa, %.preheader1425 ], [ %.34778, %1296 ]
  %.46721.lcssa = phi ptr [ %.39714.lcssa, %.preheader1425 ], [ %.53, %1296 ]
  %.30.lcssa = phi ptr [ %.25.lcssa, %.preheader1425 ], [ %.34, %1296 ]
  store ptr %25, ptr %13, align 8, !tbaa !14
  %1297 = load i8, ptr %9, align 1, !tbaa !5
  %.not11551797 = icmp eq i8 %1297, 0
  br i1 %.not11551797, label %._crit_edge1803, label %.lr.ph1802

.lr.ph1802:                                       ; preds = %._crit_edge1786, %1337
  %1298 = phi i8 [ %1338, %1337 ], [ %1297, %._crit_edge1786 ]
  %.351800 = phi ptr [ %.39, %1337 ], [ %.30.lcssa, %._crit_edge1786 ]
  %.541799 = phi ptr [ %.59, %1337 ], [ %.46721.lcssa, %._crit_edge1786 ]
  %.357791798 = phi i32 [ %.39783, %1337 ], [ %.30774.lcssa, %._crit_edge1786 ]
  %1299 = sext i8 %1298 to i32
  %1300 = ptrtoint ptr %.541799 to i64
  %1301 = ptrtoint ptr %.351800 to i64
  %.neg1162 = sub i64 %1301, %1300
  %.neg1163 = trunc i64 %.neg1162 to i32
  %1302 = add i32 %.neg1163, 512
  %spec.select1215 = call i32 @llvm.smin.i32(i32 %1302, i32 %1299)
  %.1795 = select i1 %.not1070, i32 %1299, i32 %spec.select1215
  %1303 = trunc i32 %.1795 to i8
  %1304 = sub i8 %1298, %1303
  store i8 %1304, ptr %9, align 1, !tbaa !5
  %.not11641790 = icmp eq i32 %.1795, 0
  br i1 %.not11641790, label %._crit_edge1795, label %.lr.ph1794.preheader

.lr.ph1794.preheader:                             ; preds = %.lr.ph1802
  %xtraiter2383 = and i32 %.1795, 3
  %lcmp.mod2384.not = icmp eq i32 %xtraiter2383, 0
  br i1 %lcmp.mod2384.not, label %.lr.ph1794.prol.loopexit, label %.lr.ph1794.prol

.lr.ph1794.prol:                                  ; preds = %.lr.ph1794.preheader, %.lr.ph1794.prol
  %.551792.prol = phi ptr [ %1308, %.lr.ph1794.prol ], [ %.541799, %.lr.ph1794.preheader ]
  %.27961791.prol = phi i32 [ %1309, %.lr.ph1794.prol ], [ %.1795, %.lr.ph1794.preheader ]
  %prol.iter2385 = phi i32 [ %prol.iter2385.next, %.lr.ph1794.prol ], [ 0, %.lr.ph1794.preheader ]
  %1305 = load ptr, ptr %13, align 8, !tbaa !14
  %1306 = getelementptr inbounds i8, ptr %1305, i64 1
  store ptr %1306, ptr %13, align 8, !tbaa !14
  %1307 = load i8, ptr %1305, align 1, !tbaa !5
  %1308 = getelementptr inbounds i8, ptr %.551792.prol, i64 1
  store i8 %1307, ptr %.551792.prol, align 1, !tbaa !5
  %1309 = add nsw i32 %.27961791.prol, -1
  %prol.iter2385.next = add i32 %prol.iter2385, 1
  %prol.iter2385.cmp.not = icmp eq i32 %prol.iter2385.next, %xtraiter2383
  br i1 %prol.iter2385.cmp.not, label %.lr.ph1794.prol.loopexit, label %.lr.ph1794.prol, !llvm.loop !54

.lr.ph1794.prol.loopexit:                         ; preds = %.lr.ph1794.prol, %.lr.ph1794.preheader
  %.lcssa2335.unr = phi ptr [ poison, %.lr.ph1794.preheader ], [ %1308, %.lr.ph1794.prol ]
  %.551792.unr = phi ptr [ %.541799, %.lr.ph1794.preheader ], [ %1308, %.lr.ph1794.prol ]
  %.27961791.unr = phi i32 [ %.1795, %.lr.ph1794.preheader ], [ %1309, %.lr.ph1794.prol ]
  %1310 = icmp ult i32 %.1795, 4
  br i1 %1310, label %._crit_edge1795, label %.lr.ph1794

.lr.ph1794:                                       ; preds = %.lr.ph1794.prol.loopexit, %.lr.ph1794
  %.551792 = phi ptr [ %1326, %.lr.ph1794 ], [ %.551792.unr, %.lr.ph1794.prol.loopexit ]
  %.27961791 = phi i32 [ %1327, %.lr.ph1794 ], [ %.27961791.unr, %.lr.ph1794.prol.loopexit ]
  %1311 = load ptr, ptr %13, align 8, !tbaa !14
  %1312 = getelementptr inbounds i8, ptr %1311, i64 1
  store ptr %1312, ptr %13, align 8, !tbaa !14
  %1313 = load i8, ptr %1311, align 1, !tbaa !5
  %1314 = getelementptr inbounds i8, ptr %.551792, i64 1
  store i8 %1313, ptr %.551792, align 1, !tbaa !5
  %1315 = load ptr, ptr %13, align 8, !tbaa !14
  %1316 = getelementptr inbounds i8, ptr %1315, i64 1
  store ptr %1316, ptr %13, align 8, !tbaa !14
  %1317 = load i8, ptr %1315, align 1, !tbaa !5
  %1318 = getelementptr inbounds i8, ptr %.551792, i64 2
  store i8 %1317, ptr %1314, align 1, !tbaa !5
  %1319 = load ptr, ptr %13, align 8, !tbaa !14
  %1320 = getelementptr inbounds i8, ptr %1319, i64 1
  store ptr %1320, ptr %13, align 8, !tbaa !14
  %1321 = load i8, ptr %1319, align 1, !tbaa !5
  %1322 = getelementptr inbounds i8, ptr %.551792, i64 3
  store i8 %1321, ptr %1318, align 1, !tbaa !5
  %1323 = load ptr, ptr %13, align 8, !tbaa !14
  %1324 = getelementptr inbounds i8, ptr %1323, i64 1
  store ptr %1324, ptr %13, align 8, !tbaa !14
  %1325 = load i8, ptr %1323, align 1, !tbaa !5
  %1326 = getelementptr inbounds i8, ptr %.551792, i64 4
  store i8 %1325, ptr %1322, align 1, !tbaa !5
  %1327 = add nsw i32 %.27961791, -4
  %.not1164.3 = icmp eq i32 %1327, 0
  br i1 %.not1164.3, label %._crit_edge1795, label %.lr.ph1794, !llvm.loop !55

._crit_edge1795:                                  ; preds = %.lr.ph1794.prol.loopexit, %.lr.ph1794, %.lr.ph1802
  %.55.lcssa = phi ptr [ %.541799, %.lr.ph1802 ], [ %.lcssa2335.unr, %.lr.ph1794.prol.loopexit ], [ %1326, %.lr.ph1794 ]
  br i1 %.not1070, label %1337, label %1328

1328:                                             ; preds = %._crit_edge1795
  %1329 = ptrtoint ptr %.55.lcssa to i64
  %1330 = sub i64 %1329, %1301
  %1331 = trunc i64 %1330 to i32
  %1332 = icmp sgt i32 %1331, 510
  br i1 %1332, label %1333, label %1337

1333:                                             ; preds = %1328
  %1334 = add nsw i32 %.357791798, %1331
  %1335 = call ptr %0(ptr noundef %.351800, ptr noundef %1, i32 noundef %1331) #3
  %1336 = icmp eq ptr %1335, null
  br i1 %1336, label %.thread1387, label %1337

1337:                                             ; preds = %1333, %1328, %._crit_edge1795
  %.39783 = phi i32 [ %.357791798, %._crit_edge1795 ], [ %.357791798, %1328 ], [ %1334, %1333 ]
  %.59 = phi ptr [ %.55.lcssa, %._crit_edge1795 ], [ %.55.lcssa, %1328 ], [ %1335, %1333 ]
  %.39 = phi ptr [ %.351800, %._crit_edge1795 ], [ %.351800, %1328 ], [ %1335, %1333 ]
  %1338 = load i8, ptr %9, align 1, !tbaa !5
  %.not1155 = icmp eq i8 %1338, 0
  br i1 %.not1155, label %._crit_edge1803, label %.lr.ph1802, !llvm.loop !56

._crit_edge1803:                                  ; preds = %1337, %._crit_edge1786
  %.35779.lcssa = phi i32 [ %.30774.lcssa, %._crit_edge1786 ], [ %.39783, %1337 ]
  %.54.lcssa = phi ptr [ %.46721.lcssa, %._crit_edge1786 ], [ %.59, %1337 ]
  %.35.lcssa = phi ptr [ %.30.lcssa, %._crit_edge1786 ], [ %.39, %1337 ]
  %1339 = and i32 %.18850, 1
  %1340 = icmp ne i32 %1339, 0
  %1341 = icmp sgt i32 %.88052063, 0
  %or.cond44 = select i1 %1340, i1 %1341, i1 false
  br i1 %or.cond44, label %.preheader1422, label %.backedge2279

1342:                                             ; preds = %1374, %._crit_edge1824, %1369
  %.44788.ph = phi i32 [ %.40784, %1369 ], [ %.40784, %._crit_edge1824 ], [ %1375, %1374 ]
  %.67.ph = phi ptr [ %.63.lcssa, %1369 ], [ %.63.lcssa, %._crit_edge1824 ], [ %1376, %1374 ]
  %.44.ph = phi ptr [ %.40, %1369 ], [ %.40, %._crit_edge1824 ], [ %1376, %1374 ]
  %.old43.not = icmp eq i32 %1346, 0
  br i1 %.old43.not, label %.backedge2279, label %.preheader1422

.preheader1422:                                   ; preds = %._crit_edge1803, %1342
  %.9806 = phi i32 [ %1346, %1342 ], [ %.88052063, %._crit_edge1803 ]
  %.40784 = phi i32 [ %.44788.ph, %1342 ], [ %.35779.lcssa, %._crit_edge1803 ]
  %.60 = phi ptr [ %.67.ph, %1342 ], [ %.54.lcssa, %._crit_edge1803 ]
  %.40 = phi ptr [ %.44.ph, %1342 ], [ %.35.lcssa, %._crit_edge1803 ]
  %.60.fr = freeze ptr %.60
  %1343 = ptrtoint ptr %.60.fr to i64
  %1344 = ptrtoint ptr %.40 to i64
  %.neg1157 = sub i64 %1344, %1343
  %.neg1158 = trunc i64 %.neg1157 to i32
  %1345 = add i32 %.neg1158, 512
  %spec.select1216 = call i32 @llvm.smin.i32(i32 %.9806, i32 %1345)
  %.1726 = select i1 %.not1070, i32 %.9806, i32 %spec.select1216
  %1346 = sub nsw i32 %.9806, %.1726
  %.not11591807 = icmp eq i32 %.1726, 0
  %1347 = and i64 %1343, 3
  %1348 = icmp eq i64 %1347, 0
  %or.cond12191808 = or i1 %.not11591807, %1348
  br i1 %or.cond12191808, label %.preheader1409, label %.lr.ph1812.preheader

.lr.ph1812.preheader:                             ; preds = %.preheader1422
  %1349 = trunc i64 %1343 to i2
  %1350 = xor i2 %1349, -1
  %1351 = zext i2 %1350 to i64
  %1352 = add i32 %.1726, -1
  %1353 = zext i32 %1352 to i64
  %umin1996 = call i64 @llvm.umin.i64(i64 %1351, i64 %1353)
  %1354 = add nuw nsw i64 %umin1996, 1
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %.60.fr, i8 32, i64 %1354, i1 false), !tbaa !5
  %1355 = zext i2 %1350 to i32
  %scevgep1997 = getelementptr i8, ptr %.60.fr, i64 1
  %scevgep1999 = getelementptr i8, ptr %scevgep1997, i64 %umin1996
  %1356 = call i32 @llvm.usub.sat.i32(i32 %1352, i32 %1355)
  br label %.preheader1409

.preheader1409:                                   ; preds = %.lr.ph1812.preheader, %.preheader1422
  %.2727.lcssa = phi i32 [ %.1726, %.preheader1422 ], [ %1356, %.lr.ph1812.preheader ]
  %.61.lcssa = phi ptr [ %.60.fr, %.preheader1422 ], [ %scevgep1999, %.lr.ph1812.preheader ]
  %1357 = icmp sgt i32 %.2727.lcssa, 3
  br i1 %1357, label %.lr.ph1817.preheader, label %.preheader

.lr.ph1817.preheader:                             ; preds = %.preheader1409
  %1358 = call i32 @llvm.usub.sat.i32(i32 %.2727.lcssa, i32 7)
  %1359 = add nuw i32 %1358, 3
  %1360 = and i32 %1359, -4
  %1361 = zext nneg i32 %1360 to i64
  %1362 = add nuw nsw i64 %1361, 4
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %.61.lcssa, i8 32, i64 %1362, i1 false), !tbaa !8
  %scevgep2002 = getelementptr i8, ptr %.61.lcssa, i64 4
  %scevgep2004 = getelementptr i8, ptr %scevgep2002, i64 %1361
  %1363 = and i32 %1359, -4
  %1364 = add nsw i32 %.2727.lcssa, -4
  %1365 = sub nsw i32 %1364, %1363
  br label %.preheader

.preheader:                                       ; preds = %.lr.ph1817.preheader, %.preheader1409
  %.3728.lcssa = phi i32 [ %.2727.lcssa, %.preheader1409 ], [ %1365, %.lr.ph1817.preheader ]
  %.62.lcssa = phi ptr [ %.61.lcssa, %.preheader1409 ], [ %scevgep2004, %.lr.ph1817.preheader ]
  %.not11601820 = icmp eq i32 %.3728.lcssa, 0
  br i1 %.not11601820, label %._crit_edge1824, label %.lr.ph1823.preheader

.lr.ph1823.preheader:                             ; preds = %.preheader
  %1366 = zext i32 %.3728.lcssa to i64
  call void @llvm.memset.p0.i64(ptr align 1 %.62.lcssa, i8 32, i64 %1366, i1 false), !tbaa !5
  %1367 = add i32 %.3728.lcssa, -1
  %1368 = zext i32 %1367 to i64
  %scevgep2005 = getelementptr i8, ptr %.62.lcssa, i64 1
  %scevgep2006 = getelementptr i8, ptr %scevgep2005, i64 %1368
  br label %._crit_edge1824

._crit_edge1824:                                  ; preds = %.lr.ph1823.preheader, %.preheader
  %.63.lcssa = phi ptr [ %.62.lcssa, %.preheader ], [ %scevgep2006, %.lr.ph1823.preheader ]
  br i1 %.not1070, label %1342, label %1369

1369:                                             ; preds = %._crit_edge1824
  %1370 = ptrtoint ptr %.63.lcssa to i64
  %1371 = sub i64 %1370, %1344
  %1372 = trunc i64 %1371 to i32
  %1373 = icmp sgt i32 %1372, 510
  br i1 %1373, label %1374, label %1342

1374:                                             ; preds = %1369
  %1375 = add nsw i32 %.40784, %1372
  %1376 = call ptr %0(ptr noundef %.40, ptr noundef %1, i32 noundef %1372) #3
  %1377 = icmp eq ptr %1376, null
  br i1 %1377, label %.thread1387, label %1342, !llvm.loop !57

1378:                                             ; preds = %202
  store i8 %203, ptr %27, align 1, !tbaa !5
  store i32 1, ptr %10, align 4, !tbaa !8
  store i8 0, ptr %8, align 1, !tbaa !5
  store i8 0, ptr %9, align 1, !tbaa !5
  store i32 0, ptr %12, align 4, !tbaa !8
  br label %974

1379:                                             ; preds = %thread-pre-split
  br i1 %.not1070, label %1380, label %1381

1380:                                             ; preds = %1379
  store i8 0, ptr %.3678, align 1, !tbaa !5
  br label %.thread1387

1381:                                             ; preds = %1379
  %1382 = ptrtoint ptr %.3678 to i64
  %1383 = ptrtoint ptr %.1 to i64
  %1384 = sub i64 %1382, %1383
  %1385 = trunc i64 %1384 to i32
  %1386 = icmp sgt i32 %1385, 0
  br i1 %1386, label %1387, label %.thread1387

1387:                                             ; preds = %1381
  %1388 = add nsw i32 %.1745, %1385
  %1389 = call ptr %0(ptr noundef %.1, ptr noundef %1, i32 noundef %1385) #3
  br label %.thread1387

.thread1387:                                      ; preds = %68, %1028, %1068, %1127, %1168, %1256, %1292, %1333, %1374, %1387, %1380, %1381
  %.49793 = phi i32 [ %.1745, %1380 ], [ %.1745, %1381 ], [ %1388, %1387 ], [ %1375, %1374 ], [ %1334, %1333 ], [ %1293, %1292 ], [ %1257, %1256 ], [ %1169, %1168 ], [ %1128, %1127 ], [ %1069, %1068 ], [ %1029, %1028 ], [ %69, %68 ]
  %.72 = phi ptr [ %.3678, %1380 ], [ %.3678, %1381 ], [ %1389, %1387 ], [ null, %1374 ], [ null, %1333 ], [ null, %1292 ], [ null, %1256 ], [ null, %1168 ], [ null, %1127 ], [ null, %1068 ], [ null, %1028 ], [ null, %68 ]
  %.49 = phi ptr [ %.1, %1380 ], [ %.1, %1381 ], [ %1389, %1387 ], [ null, %1374 ], [ null, %1333 ], [ null, %1292 ], [ null, %1256 ], [ null, %1168 ], [ null, %1127 ], [ null, %1068 ], [ null, %1028 ], [ null, %68 ]
  %1390 = ptrtoint ptr %.72 to i64
  %1391 = ptrtoint ptr %.49 to i64
  %1392 = sub i64 %1390, %1391
  %1393 = trunc i64 %1392 to i32
  %1394 = add nsw i32 %.49793, %1393
  ret i32 %1394
}

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

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

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

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

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

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

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

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

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.umin.i64(i64, i64) #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 speculatable willreturn memory(none) }
attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #3 = { nounwind }

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

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


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