; LLVM IR from miloyip/dtoa-benchmark :: stb_sprintf (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.__va_list_tag = type { i32, i32, ptr, ptr }

@_ZL13stbsp__period = external hidden global i8, align 1
@_ZL12stbsp__comma = external hidden global i8, align 1
@_ZZ16stbsp_vsprintfcbE3hex = external hidden global [19 x i8], align 16
@_ZZ16stbsp_vsprintfcbE4hexu = 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
@_ZL16stbsp__digitpair = external hidden global [201 x i8], align 16

; Function Attrs: mustprogress 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 i32, align 4
  %36 = alloca ptr, align 8
  %37 = alloca double, align 8
  %38 = alloca i32, align 4
  %39 = alloca i8, align 1
  %40 = alloca i64, align 8
  %41 = alloca i32, align 4
  %42 = alloca ptr, align 8
  %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
  %66 = 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) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #3
  store i32 0, ptr %14, align 4, !tbaa !9
  %67 = load ptr, ptr %9, align 8, !tbaa !5
  store ptr %67, ptr %12, align 8, !tbaa !5
  %68 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %68, ptr %13, align 8, !tbaa !5
  br label %69

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

70:                                               ; preds = %69
  br label %71

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

76:                                               ; preds = %71
  br label %77

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

83:                                               ; preds = %77
  br label %174

84:                                               ; preds = %77
  br label %85

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

91:                                               ; preds = %85
  store i32 11, ptr %20, align 4
  br label %2634

92:                                               ; preds = %85
  %93 = load ptr, ptr %7, align 8, !tbaa !5
  %94 = icmp ne ptr %93, null
  br i1 %94, label %95, label %121

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

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

115:                                              ; preds = %105
  store i32 12, ptr %20, align 4
  br label %118

116:                                              ; preds = %105
  br label %117

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

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

120:                                              ; preds = %118
  br label %121

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

129:                                              ; preds = %71
  br label %130

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

142:                                              ; preds = %130
  store i32 8, ptr %20, align 4
  br label %171

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

149:                                              ; preds = %143
  store i32 10, ptr %20, align 4
  br label %171

150:                                              ; preds = %143
  %151 = load ptr, ptr %7, align 8, !tbaa !5
  %152 = icmp ne ptr %151, null
  br i1 %152, label %153, label %164

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

162:                                              ; preds = %153
  store i32 8, ptr %20, align 4
  br label %171

163:                                              ; preds = %153
  br label %164

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

171:                                              ; preds = %164, %162, %149, %142
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #3
  %172 = load i32, ptr %20, align 4
  switch i32 %172, label %2680 [
    i32 0, label %173
    i32 8, label %77
    i32 10, label %85
  ]

173:                                              ; preds = %171
  br label %130, !llvm.loop !14

174:                                              ; preds = %83
  %175 = load ptr, ptr %13, align 8, !tbaa !5
  %176 = getelementptr inbounds i8, ptr %175, i32 1
  store ptr %176, 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 %177

177:                                              ; preds = %228, %225, %202, %197, %192, %187, %182, %174
  %178 = load ptr, ptr %13, align 8, !tbaa !5
  %179 = getelementptr inbounds i8, ptr %178, i64 0
  %180 = load i8, ptr %179, align 1, !tbaa !11
  %181 = sext i8 %180 to i32
  switch i32 %181, label %238 [
    i32 45, label %182
    i32 43, label %187
    i32 32, label %192
    i32 35, label %197
    i32 39, label %202
    i32 36, label %207
    i32 95, label %228
    i32 48, label %233
  ]

182:                                              ; preds = %177
  %183 = load i32, ptr %18, align 4, !tbaa !9
  %184 = or i32 %183, 1
  store i32 %184, ptr %18, align 4, !tbaa !9
  %185 = load ptr, ptr %13, align 8, !tbaa !5
  %186 = getelementptr inbounds i8, ptr %185, i32 1
  store ptr %186, ptr %13, align 8, !tbaa !5
  br label %177, !llvm.loop !15

187:                                              ; preds = %177
  %188 = load i32, ptr %18, align 4, !tbaa !9
  %189 = or i32 %188, 2
  store i32 %189, ptr %18, align 4, !tbaa !9
  %190 = load ptr, ptr %13, align 8, !tbaa !5
  %191 = getelementptr inbounds i8, ptr %190, i32 1
  store ptr %191, ptr %13, align 8, !tbaa !5
  br label %177, !llvm.loop !15

192:                                              ; preds = %177
  %193 = load i32, ptr %18, align 4, !tbaa !9
  %194 = or i32 %193, 4
  store i32 %194, ptr %18, align 4, !tbaa !9
  %195 = load ptr, ptr %13, align 8, !tbaa !5
  %196 = getelementptr inbounds i8, ptr %195, i32 1
  store ptr %196, ptr %13, align 8, !tbaa !5
  br label %177, !llvm.loop !15

197:                                              ; preds = %177
  %198 = load i32, ptr %18, align 4, !tbaa !9
  %199 = or i32 %198, 8
  store i32 %199, ptr %18, align 4, !tbaa !9
  %200 = load ptr, ptr %13, align 8, !tbaa !5
  %201 = getelementptr inbounds i8, ptr %200, i32 1
  store ptr %201, ptr %13, align 8, !tbaa !5
  br label %177, !llvm.loop !15

202:                                              ; preds = %177
  %203 = load i32, ptr %18, align 4, !tbaa !9
  %204 = or i32 %203, 64
  store i32 %204, ptr %18, align 4, !tbaa !9
  %205 = load ptr, ptr %13, align 8, !tbaa !5
  %206 = getelementptr inbounds i8, ptr %205, i32 1
  store ptr %206, ptr %13, align 8, !tbaa !5
  br label %177, !llvm.loop !15

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

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

215:                                              ; preds = %211
  %216 = load i32, ptr %18, align 4, !tbaa !9
  %217 = or i32 %216, 4096
  store i32 %217, ptr %18, align 4, !tbaa !9
  br label %221

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

221:                                              ; preds = %218, %215
  br label %225

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

225:                                              ; preds = %222, %221
  %226 = load ptr, ptr %13, align 8, !tbaa !5
  %227 = getelementptr inbounds i8, ptr %226, i32 1
  store ptr %227, ptr %13, align 8, !tbaa !5
  br label %177, !llvm.loop !15

228:                                              ; preds = %177
  %229 = load i32, ptr %18, align 4, !tbaa !9
  %230 = or i32 %229, 1024
  store i32 %230, ptr %18, align 4, !tbaa !9
  %231 = load ptr, ptr %13, align 8, !tbaa !5
  %232 = getelementptr inbounds i8, ptr %231, i32 1
  store ptr %232, ptr %13, align 8, !tbaa !5
  br label %177, !llvm.loop !15

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

238:                                              ; preds = %177
  br label %239

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

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

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

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

259:                                              ; preds = %255, %250
  %260 = phi ptr [ %253, %250 ], [ %257, %255 ]
  %261 = load i32, ptr %260, align 4, !tbaa !9
  store i32 %261, ptr %15, align 4, !tbaa !9
  %262 = load ptr, ptr %13, align 8, !tbaa !5
  %263 = getelementptr inbounds i8, ptr %262, i32 1
  store ptr %263, ptr %13, align 8, !tbaa !5
  br label %291

264:                                              ; preds = %239
  br label %265

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

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

277:                                              ; preds = %271, %265
  %278 = phi i1 [ false, %265 ], [ %276, %271 ]
  br i1 %278, label %279, label %290

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

290:                                              ; preds = %277
  br label %291

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

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

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

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

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

319:                                              ; preds = %315, %310
  %320 = phi ptr [ %313, %310 ], [ %317, %315 ]
  %321 = load i32, ptr %320, align 4, !tbaa !9
  store i32 %321, ptr %16, align 4, !tbaa !9
  %322 = load ptr, ptr %13, align 8, !tbaa !5
  %323 = getelementptr inbounds i8, ptr %322, i32 1
  store ptr %323, ptr %13, align 8, !tbaa !5
  br label %351

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

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

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

337:                                              ; preds = %331, %325
  %338 = phi i1 [ false, %325 ], [ %336, %331 ]
  br i1 %338, label %339, label %350

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

350:                                              ; preds = %337
  br label %351

351:                                              ; preds = %350, %319
  br label %352

352:                                              ; preds = %351, %291
  %353 = load ptr, ptr %13, align 8, !tbaa !5
  %354 = getelementptr inbounds i8, ptr %353, i64 0
  %355 = load i8, ptr %354, align 1, !tbaa !11
  %356 = sext i8 %355 to i32
  switch i32 %356, label %425 [
    i32 104, label %357
    i32 108, label %362
    i32 106, label %376
    i32 122, label %381
    i32 116, label %381
    i32 73, label %386
  ]

357:                                              ; preds = %352
  %358 = load i32, ptr %18, align 4, !tbaa !9
  %359 = or i32 %358, 512
  store i32 %359, ptr %18, align 4, !tbaa !9
  %360 = load ptr, ptr %13, align 8, !tbaa !5
  %361 = getelementptr inbounds i8, ptr %360, i32 1
  store ptr %361, ptr %13, align 8, !tbaa !5
  br label %426

362:                                              ; preds = %352
  %363 = load ptr, ptr %13, align 8, !tbaa !5
  %364 = getelementptr inbounds i8, ptr %363, i32 1
  store ptr %364, ptr %13, align 8, !tbaa !5
  %365 = load ptr, ptr %13, align 8, !tbaa !5
  %366 = getelementptr inbounds i8, ptr %365, i64 0
  %367 = load i8, ptr %366, align 1, !tbaa !11
  %368 = sext i8 %367 to i32
  %369 = icmp eq i32 %368, 108
  br i1 %369, label %370, label %375

370:                                              ; preds = %362
  %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
  br label %375

375:                                              ; preds = %370, %362
  br label %426

376:                                              ; preds = %352
  %377 = load i32, ptr %18, align 4, !tbaa !9
  %378 = or i32 %377, 32
  store i32 %378, ptr %18, align 4, !tbaa !9
  %379 = load ptr, ptr %13, align 8, !tbaa !5
  %380 = getelementptr inbounds i8, ptr %379, i32 1
  store ptr %380, ptr %13, align 8, !tbaa !5
  br label %426

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

386:                                              ; preds = %352
  %387 = load ptr, ptr %13, align 8, !tbaa !5
  %388 = getelementptr inbounds i8, ptr %387, i64 1
  %389 = load i8, ptr %388, align 1, !tbaa !11
  %390 = sext i8 %389 to i32
  %391 = icmp eq i32 %390, 54
  br i1 %391, label %392, label %403

392:                                              ; preds = %386
  %393 = load ptr, ptr %13, align 8, !tbaa !5
  %394 = getelementptr inbounds i8, ptr %393, i64 2
  %395 = load i8, ptr %394, align 1, !tbaa !11
  %396 = sext i8 %395 to i32
  %397 = icmp eq i32 %396, 52
  br i1 %397, label %398, label %403

398:                                              ; preds = %392
  %399 = load i32, ptr %18, align 4, !tbaa !9
  %400 = or i32 %399, 32
  store i32 %400, ptr %18, align 4, !tbaa !9
  %401 = load ptr, ptr %13, align 8, !tbaa !5
  %402 = getelementptr inbounds i8, ptr %401, i64 3
  store ptr %402, ptr %13, align 8, !tbaa !5
  br label %424

403:                                              ; preds = %392, %386
  %404 = load ptr, ptr %13, align 8, !tbaa !5
  %405 = getelementptr inbounds i8, ptr %404, i64 1
  %406 = load i8, ptr %405, align 1, !tbaa !11
  %407 = sext i8 %406 to i32
  %408 = icmp eq i32 %407, 51
  br i1 %408, label %409, label %418

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

415:                                              ; preds = %409
  %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 %423

418:                                              ; preds = %409, %403
  %419 = load i32, ptr %18, align 4, !tbaa !9
  %420 = or i32 %419, 32
  store i32 %420, ptr %18, align 4, !tbaa !9
  %421 = load ptr, ptr %13, align 8, !tbaa !5
  %422 = getelementptr inbounds i8, ptr %421, i32 1
  store ptr %422, ptr %13, align 8, !tbaa !5
  br label %423

423:                                              ; preds = %418, %415
  br label %424

424:                                              ; preds = %423, %398
  br label %426

425:                                              ; preds = %352
  br label %426

426:                                              ; preds = %425, %424, %381, %376, %375, %357
  %427 = load ptr, ptr %13, align 8, !tbaa !5
  %428 = getelementptr inbounds i8, ptr %427, i64 0
  %429 = load i8, ptr %428, align 1, !tbaa !11
  %430 = sext i8 %429 to i32
  switch i32 %430, label %2621 [
    i32 115, label %431
    i32 99, label %529
    i32 110, label %553
    i32 65, label %579
    i32 97, label %580
    i32 71, label %764
    i32 103, label %765
    i32 69, label %882
    i32 101, label %883
    i32 102, label %1005
    i32 66, label %1431
    i32 98, label %1432
    i32 111, label %1446
    i32 112, label %1455
    i32 88, label %1460
    i32 120, label %1461
    i32 117, label %1603
    i32 105, label %1603
    i32 100, label %1603
  ]

431:                                              ; preds = %426
  %432 = load ptr, ptr %11, align 8, !tbaa !5
  %433 = getelementptr inbounds %struct.__va_list_tag, ptr %432, i32 0, i32 0
  %434 = load i32, ptr %433, align 8
  %435 = icmp ule i32 %434, 40
  br i1 %435, label %436, label %441

436:                                              ; preds = %431
  %437 = getelementptr inbounds %struct.__va_list_tag, ptr %432, i32 0, i32 3
  %438 = load ptr, ptr %437, align 8
  %439 = getelementptr i8, ptr %438, i32 %434
  %440 = add i32 %434, 8
  store i32 %440, ptr %433, align 8
  br label %445

441:                                              ; preds = %431
  %442 = getelementptr inbounds %struct.__va_list_tag, ptr %432, i32 0, i32 2
  %443 = load ptr, ptr %442, align 8
  %444 = getelementptr i8, ptr %443, i32 8
  store ptr %444, ptr %442, align 8
  br label %445

445:                                              ; preds = %441, %436
  %446 = phi ptr [ %439, %436 ], [ %443, %441 ]
  %447 = load ptr, ptr %446, align 8, !tbaa !5
  store ptr %447, ptr %26, align 8, !tbaa !5
  %448 = load ptr, ptr %26, align 8, !tbaa !5
  %449 = icmp eq ptr %448, null
  br i1 %449, label %450, label %451

450:                                              ; preds = %445
  store ptr @.str, ptr %26, align 8, !tbaa !5
  br label %451

451:                                              ; preds = %450, %445
  %452 = load ptr, ptr %26, align 8, !tbaa !5
  store ptr %452, ptr %34, align 8, !tbaa !5
  br label %453

453:                                              ; preds = %467, %451
  %454 = load ptr, ptr %34, align 8, !tbaa !5
  %455 = ptrtoint ptr %454 to i64
  %456 = and i64 %455, 3
  %457 = icmp eq i64 %456, 0
  br i1 %457, label %458, label %459

458:                                              ; preds = %453
  br label %470

459:                                              ; preds = %453
  br label %460

460:                                              ; preds = %513, %510, %459
  %461 = load ptr, ptr %34, align 8, !tbaa !5
  %462 = getelementptr inbounds i8, ptr %461, i64 0
  %463 = load i8, ptr %462, align 1, !tbaa !11
  %464 = sext i8 %463 to i32
  %465 = icmp eq i32 %464, 0
  br i1 %465, label %466, label %467

466:                                              ; preds = %460
  br label %514

467:                                              ; preds = %460
  %468 = load ptr, ptr %34, align 8, !tbaa !5
  %469 = getelementptr inbounds i8, ptr %468, i32 1
  store ptr %469, ptr %34, align 8, !tbaa !5
  br label %453, !llvm.loop !18

470:                                              ; preds = %458
  store i32 -1, ptr %29, align 4, !tbaa !9
  %471 = load i32, ptr %16, align 4, !tbaa !9
  %472 = icmp sge i32 %471, 0
  br i1 %472, label %473, label %489

473:                                              ; preds = %470
  %474 = load ptr, ptr %34, align 8, !tbaa !5
  %475 = load ptr, ptr %26, align 8, !tbaa !5
  %476 = ptrtoint ptr %474 to i64
  %477 = ptrtoint ptr %475 to i64
  %478 = sub i64 %476, %477
  %479 = trunc i64 %478 to i32
  store i32 %479, ptr %29, align 4, !tbaa !9
  %480 = load i32, ptr %29, align 4, !tbaa !9
  %481 = load i32, ptr %16, align 4, !tbaa !9
  %482 = icmp uge i32 %480, %481
  br i1 %482, label %483, label %484

483:                                              ; preds = %473
  br label %514

484:                                              ; preds = %473
  %485 = load i32, ptr %16, align 4, !tbaa !9
  %486 = load i32, ptr %29, align 4, !tbaa !9
  %487 = sub i32 %485, %486
  %488 = lshr i32 %487, 2
  store i32 %488, ptr %29, align 4, !tbaa !9
  br label %489

489:                                              ; preds = %484, %470
  br label %490

490:                                              ; preds = %512, %489
  %491 = load i32, ptr %29, align 4, !tbaa !9
  %492 = icmp ne i32 %491, 0
  br i1 %492, label %493, label %513

493:                                              ; preds = %490
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #3
  %494 = load ptr, ptr %34, align 8, !tbaa !5
  %495 = load i32, ptr %494, align 4, !tbaa !9
  store i32 %495, ptr %35, align 4, !tbaa !9
  %496 = load i32, ptr %35, align 4, !tbaa !9
  %497 = sub i32 %496, 16843009
  %498 = load i32, ptr %35, align 4, !tbaa !9
  %499 = xor i32 %498, -1
  %500 = and i32 %497, %499
  %501 = zext i32 %500 to i64
  %502 = and i64 %501, 2155905152
  %503 = icmp ne i64 %502, 0
  br i1 %503, label %504, label %505

504:                                              ; preds = %493
  store i32 27, ptr %20, align 4
  br label %510

505:                                              ; preds = %493
  %506 = load ptr, ptr %34, align 8, !tbaa !5
  %507 = getelementptr inbounds i8, ptr %506, i64 4
  store ptr %507, ptr %34, align 8, !tbaa !5
  %508 = load i32, ptr %29, align 4, !tbaa !9
  %509 = add i32 %508, -1
  store i32 %509, ptr %29, align 4, !tbaa !9
  store i32 0, ptr %20, align 4
  br label %510

510:                                              ; preds = %505, %504
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #3
  %511 = load i32, ptr %20, align 4
  switch i32 %511, label %2680 [
    i32 0, label %512
    i32 27, label %460
  ]

512:                                              ; preds = %510
  br label %490, !llvm.loop !19

513:                                              ; preds = %490
  br label %460

514:                                              ; preds = %483, %466
  %515 = load ptr, ptr %34, align 8, !tbaa !5
  %516 = load ptr, ptr %26, align 8, !tbaa !5
  %517 = ptrtoint ptr %515 to i64
  %518 = ptrtoint ptr %516 to i64
  %519 = sub i64 %517, %518
  %520 = trunc i64 %519 to i32
  store i32 %520, ptr %28, align 4, !tbaa !9
  %521 = load i32, ptr %28, align 4, !tbaa !9
  %522 = load i32, ptr %16, align 4, !tbaa !9
  %523 = icmp ugt i32 %521, %522
  br i1 %523, label %524, label %526

524:                                              ; preds = %514
  %525 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %525, ptr %28, align 4, !tbaa !9
  br label %526

526:                                              ; preds = %524, %514
  %527 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  store i8 0, ptr %527, align 1, !tbaa !11
  %528 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 0
  store i8 0, ptr %528, 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 %1825

529:                                              ; preds = %426
  %530 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %531 = getelementptr inbounds i8, ptr %530, i64 512
  %532 = getelementptr inbounds i8, ptr %531, i64 -1
  store ptr %532, ptr %26, align 8, !tbaa !5
  %533 = load ptr, ptr %11, align 8, !tbaa !5
  %534 = getelementptr inbounds %struct.__va_list_tag, ptr %533, i32 0, i32 0
  %535 = load i32, ptr %534, align 8
  %536 = icmp ule i32 %535, 40
  br i1 %536, label %537, label %542

537:                                              ; preds = %529
  %538 = getelementptr inbounds %struct.__va_list_tag, ptr %533, i32 0, i32 3
  %539 = load ptr, ptr %538, align 8
  %540 = getelementptr i8, ptr %539, i32 %535
  %541 = add i32 %535, 8
  store i32 %541, ptr %534, align 8
  br label %546

542:                                              ; preds = %529
  %543 = getelementptr inbounds %struct.__va_list_tag, ptr %533, i32 0, i32 2
  %544 = load ptr, ptr %543, align 8
  %545 = getelementptr i8, ptr %544, i32 8
  store ptr %545, ptr %543, align 8
  br label %546

546:                                              ; preds = %542, %537
  %547 = phi ptr [ %540, %537 ], [ %544, %542 ]
  %548 = load i32, ptr %547, align 4, !tbaa !9
  %549 = trunc i32 %548 to i8
  %550 = load ptr, ptr %26, align 8, !tbaa !5
  store i8 %549, ptr %550, align 1, !tbaa !11
  store i32 1, ptr %28, align 4, !tbaa !9
  %551 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  store i8 0, ptr %551, align 1, !tbaa !11
  %552 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 0
  store i8 0, ptr %552, 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 %1825

553:                                              ; preds = %426
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #3
  %554 = load ptr, ptr %11, align 8, !tbaa !5
  %555 = getelementptr inbounds %struct.__va_list_tag, ptr %554, i32 0, i32 0
  %556 = load i32, ptr %555, align 8
  %557 = icmp ule i32 %556, 40
  br i1 %557, label %558, label %563

558:                                              ; preds = %553
  %559 = getelementptr inbounds %struct.__va_list_tag, ptr %554, i32 0, i32 3
  %560 = load ptr, ptr %559, align 8
  %561 = getelementptr i8, ptr %560, i32 %556
  %562 = add i32 %556, 8
  store i32 %562, ptr %555, align 8
  br label %567

563:                                              ; preds = %553
  %564 = getelementptr inbounds %struct.__va_list_tag, ptr %554, i32 0, i32 2
  %565 = load ptr, ptr %564, align 8
  %566 = getelementptr i8, ptr %565, i32 8
  store ptr %566, ptr %564, align 8
  br label %567

567:                                              ; preds = %563, %558
  %568 = phi ptr [ %561, %558 ], [ %565, %563 ]
  %569 = load ptr, ptr %568, align 8, !tbaa !5
  store ptr %569, ptr %36, align 8, !tbaa !5
  %570 = load i32, ptr %14, align 4, !tbaa !9
  %571 = load ptr, ptr %12, align 8, !tbaa !5
  %572 = load ptr, ptr %9, align 8, !tbaa !5
  %573 = ptrtoint ptr %571 to i64
  %574 = ptrtoint ptr %572 to i64
  %575 = sub i64 %573, %574
  %576 = trunc i64 %575 to i32
  %577 = add nsw i32 %570, %576
  %578 = load ptr, ptr %36, align 8, !tbaa !5
  store i32 %577, ptr %578, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #3
  br label %2631

579:                                              ; preds = %426
  store ptr @_ZZ16stbsp_vsprintfcbE4hexu, ptr %27, align 8, !tbaa !5
  br label %581

580:                                              ; preds = %426
  store ptr @_ZZ16stbsp_vsprintfcbE3hex, ptr %27, align 8, !tbaa !5
  br label %581

581:                                              ; preds = %580, %579
  %582 = load ptr, ptr %11, align 8, !tbaa !5
  %583 = getelementptr inbounds %struct.__va_list_tag, ptr %582, i32 0, i32 1
  %584 = load i32, ptr %583, align 4
  %585 = icmp ule i32 %584, 160
  br i1 %585, label %586, label %591

586:                                              ; preds = %581
  %587 = getelementptr inbounds %struct.__va_list_tag, ptr %582, i32 0, i32 3
  %588 = load ptr, ptr %587, align 8
  %589 = getelementptr i8, ptr %588, i32 %584
  %590 = add i32 %584, 16
  store i32 %590, ptr %583, align 4
  br label %595

591:                                              ; preds = %581
  %592 = getelementptr inbounds %struct.__va_list_tag, ptr %582, i32 0, i32 2
  %593 = load ptr, ptr %592, align 8
  %594 = getelementptr i8, ptr %593, i32 8
  store ptr %594, ptr %592, align 8
  br label %595

595:                                              ; preds = %591, %586
  %596 = phi ptr [ %589, %586 ], [ %593, %591 ]
  %597 = load double, ptr %596, align 8, !tbaa !20
  store double %597, ptr %32, align 8, !tbaa !20
  %598 = load i32, ptr %16, align 4, !tbaa !9
  %599 = icmp eq i32 %598, -1
  br i1 %599, label %600, label %601

600:                                              ; preds = %595
  store i32 6, ptr %16, align 4, !tbaa !9
  br label %601

601:                                              ; preds = %600, %595
  %602 = load double, ptr %32, align 8, !tbaa !20
  %603 = call noundef i32 @_ZL20stbsp__real_to_partsPxPid(ptr noundef %31, ptr noundef %33, double noundef %602)
  %604 = icmp ne i32 %603, 0
  br i1 %604, label %605, label %608

605:                                              ; preds = %601
  %606 = load i32, ptr %18, align 4, !tbaa !9
  %607 = or i32 %606, 128
  store i32 %607, ptr %18, align 4, !tbaa !9
  br label %608

608:                                              ; preds = %605, %601
  %609 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %610 = getelementptr inbounds i8, ptr %609, i64 64
  store ptr %610, ptr %26, align 8, !tbaa !5
  %611 = load i32, ptr %18, align 4, !tbaa !9
  %612 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  call void @_ZL16stbsp__lead_signjPc(i32 noundef %611, ptr noundef %612)
  %613 = load i32, ptr %33, align 4, !tbaa !9
  %614 = icmp eq i32 %613, -1023
  br i1 %614, label %615, label %620

615:                                              ; preds = %608
  %616 = load i64, ptr %31, align 8, !tbaa !22
  %617 = icmp ne i64 %616, 0
  %618 = zext i1 %617 to i64
  %619 = select i1 %617, i32 -1022, i32 0
  store i32 %619, ptr %33, align 4, !tbaa !9
  br label %623

620:                                              ; preds = %608
  %621 = load i64, ptr %31, align 8, !tbaa !22
  %622 = or i64 %621, 4503599627370496
  store i64 %622, ptr %31, align 8, !tbaa !22
  br label %623

623:                                              ; preds = %620, %615
  %624 = load i64, ptr %31, align 8, !tbaa !22
  %625 = shl i64 %624, 8
  store i64 %625, ptr %31, align 8, !tbaa !22
  %626 = load i32, ptr %16, align 4, !tbaa !9
  %627 = icmp slt i32 %626, 15
  br i1 %627, label %628, label %635

628:                                              ; preds = %623
  %629 = load i32, ptr %16, align 4, !tbaa !9
  %630 = mul nsw i32 %629, 4
  %631 = zext i32 %630 to i64
  %632 = lshr i64 576460752303423488, %631
  %633 = load i64, ptr %31, align 8, !tbaa !22
  %634 = add i64 %633, %632
  store i64 %634, ptr %31, align 8, !tbaa !22
  br label %635

635:                                              ; preds = %628, %623
  %636 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  %637 = load i8, ptr %636, align 1, !tbaa !11
  %638 = sext i8 %637 to i32
  %639 = add nsw i32 1, %638
  %640 = sext i32 %639 to i64
  %641 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 %640
  store i8 48, ptr %641, align 1, !tbaa !11
  %642 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  %643 = load i8, ptr %642, align 1, !tbaa !11
  %644 = sext i8 %643 to i32
  %645 = add nsw i32 2, %644
  %646 = sext i32 %645 to i64
  %647 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 %646
  store i8 120, ptr %647, align 1, !tbaa !11
  %648 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  %649 = load i8, ptr %648, align 1, !tbaa !11
  %650 = sext i8 %649 to i32
  %651 = add nsw i32 %650, 2
  %652 = trunc i32 %651 to i8
  store i8 %652, ptr %648, align 1, !tbaa !11
  %653 = load ptr, ptr %27, align 8, !tbaa !5
  %654 = load i64, ptr %31, align 8, !tbaa !22
  %655 = lshr i64 %654, 60
  %656 = and i64 %655, 15
  %657 = getelementptr inbounds i8, ptr %653, i64 %656
  %658 = load i8, ptr %657, align 1, !tbaa !11
  %659 = load ptr, ptr %26, align 8, !tbaa !5
  %660 = getelementptr inbounds i8, ptr %659, i32 1
  store ptr %660, ptr %26, align 8, !tbaa !5
  store i8 %658, ptr %659, align 1, !tbaa !11
  %661 = load i64, ptr %31, align 8, !tbaa !22
  %662 = shl i64 %661, 4
  store i64 %662, ptr %31, align 8, !tbaa !22
  %663 = load i32, ptr %16, align 4, !tbaa !9
  %664 = icmp ne i32 %663, 0
  br i1 %664, label %665, label %669

665:                                              ; preds = %635
  %666 = load i8, ptr @_ZL13stbsp__period, align 1, !tbaa !11
  %667 = load ptr, ptr %26, align 8, !tbaa !5
  %668 = getelementptr inbounds i8, ptr %667, i32 1
  store ptr %668, ptr %26, align 8, !tbaa !5
  store i8 %666, ptr %667, align 1, !tbaa !11
  br label %669

669:                                              ; preds = %665, %635
  %670 = load ptr, ptr %26, align 8, !tbaa !5
  store ptr %670, ptr %34, align 8, !tbaa !5
  %671 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %671, ptr %29, align 4, !tbaa !9
  %672 = load i32, ptr %29, align 4, !tbaa !9
  %673 = icmp ugt i32 %672, 13
  br i1 %673, label %674, label %675

674:                                              ; preds = %669
  store i32 13, ptr %29, align 4, !tbaa !9
  br label %675

675:                                              ; preds = %674, %669
  %676 = load i32, ptr %16, align 4, !tbaa !9
  %677 = load i32, ptr %29, align 4, !tbaa !9
  %678 = icmp sgt i32 %676, %677
  br i1 %678, label %679, label %683

679:                                              ; preds = %675
  %680 = load i32, ptr %16, align 4, !tbaa !9
  %681 = load i32, ptr %29, align 4, !tbaa !9
  %682 = sub i32 %680, %681
  store i32 %682, ptr %17, align 4, !tbaa !9
  br label %683

683:                                              ; preds = %679, %675
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %684

684:                                              ; preds = %688, %683
  %685 = load i32, ptr %29, align 4, !tbaa !9
  %686 = add i32 %685, -1
  store i32 %686, ptr %29, align 4, !tbaa !9
  %687 = icmp ne i32 %685, 0
  br i1 %687, label %688, label %699

688:                                              ; preds = %684
  %689 = load ptr, ptr %27, align 8, !tbaa !5
  %690 = load i64, ptr %31, align 8, !tbaa !22
  %691 = lshr i64 %690, 60
  %692 = and i64 %691, 15
  %693 = getelementptr inbounds i8, ptr %689, i64 %692
  %694 = load i8, ptr %693, align 1, !tbaa !11
  %695 = load ptr, ptr %26, align 8, !tbaa !5
  %696 = getelementptr inbounds i8, ptr %695, i32 1
  store ptr %696, ptr %26, align 8, !tbaa !5
  store i8 %694, ptr %695, align 1, !tbaa !11
  %697 = load i64, ptr %31, align 8, !tbaa !22
  %698 = shl i64 %697, 4
  store i64 %698, ptr %31, align 8, !tbaa !22
  br label %684, !llvm.loop !24

699:                                              ; preds = %684
  %700 = load ptr, ptr %27, align 8, !tbaa !5
  %701 = getelementptr inbounds i8, ptr %700, i64 17
  %702 = load i8, ptr %701, align 1, !tbaa !11
  %703 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 1
  store i8 %702, ptr %703, align 1, !tbaa !11
  %704 = load i32, ptr %33, align 4, !tbaa !9
  %705 = icmp slt i32 %704, 0
  br i1 %705, label %706, label %710

706:                                              ; preds = %699
  %707 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 2
  store i8 45, ptr %707, align 1, !tbaa !11
  %708 = load i32, ptr %33, align 4, !tbaa !9
  %709 = sub nsw i32 0, %708
  store i32 %709, ptr %33, align 4, !tbaa !9
  br label %712

710:                                              ; preds = %699
  %711 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 2
  store i8 43, ptr %711, align 1, !tbaa !11
  br label %712

712:                                              ; preds = %710, %706
  %713 = load i32, ptr %33, align 4, !tbaa !9
  %714 = icmp sge i32 %713, 1000
  br i1 %714, label %715, label %716

715:                                              ; preds = %712
  br label %727

716:                                              ; preds = %712
  %717 = load i32, ptr %33, align 4, !tbaa !9
  %718 = icmp sge i32 %717, 100
  br i1 %718, label %719, label %720

719:                                              ; preds = %716
  br label %725

720:                                              ; preds = %716
  %721 = load i32, ptr %33, align 4, !tbaa !9
  %722 = icmp sge i32 %721, 10
  %723 = zext i1 %722 to i64
  %724 = select i1 %722, i32 4, i32 3
  br label %725

725:                                              ; preds = %720, %719
  %726 = phi i32 [ 5, %719 ], [ %724, %720 ]
  br label %727

727:                                              ; preds = %725, %715
  %728 = phi i32 [ 6, %715 ], [ %726, %725 ]
  store i32 %728, ptr %29, align 4, !tbaa !9
  %729 = load i32, ptr %29, align 4, !tbaa !9
  %730 = trunc i32 %729 to i8
  %731 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 0
  store i8 %730, ptr %731, align 1, !tbaa !11
  br label %732

732:                                              ; preds = %743, %727
  %733 = load i32, ptr %33, align 4, !tbaa !9
  %734 = srem i32 %733, 10
  %735 = add nsw i32 48, %734
  %736 = trunc i32 %735 to i8
  %737 = load i32, ptr %29, align 4, !tbaa !9
  %738 = zext i32 %737 to i64
  %739 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 %738
  store i8 %736, ptr %739, align 1, !tbaa !11
  %740 = load i32, ptr %29, align 4, !tbaa !9
  %741 = icmp ule i32 %740, 3
  br i1 %741, label %742, label %743

742:                                              ; preds = %732
  br label %748

743:                                              ; preds = %732
  %744 = load i32, ptr %29, align 4, !tbaa !9
  %745 = add i32 %744, -1
  store i32 %745, ptr %29, align 4, !tbaa !9
  %746 = load i32, ptr %33, align 4, !tbaa !9
  %747 = sdiv i32 %746, 10
  store i32 %747, ptr %33, align 4, !tbaa !9
  br label %732, !llvm.loop !25

748:                                              ; preds = %742
  %749 = load ptr, ptr %26, align 8, !tbaa !5
  %750 = load ptr, ptr %34, align 8, !tbaa !5
  %751 = ptrtoint ptr %749 to i64
  %752 = ptrtoint ptr %750 to i64
  %753 = sub i64 %751, %752
  %754 = trunc i64 %753 to i32
  store i32 %754, ptr %33, align 4, !tbaa !9
  %755 = load ptr, ptr %26, align 8, !tbaa !5
  %756 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %757 = getelementptr inbounds i8, ptr %756, i64 64
  %758 = ptrtoint ptr %755 to i64
  %759 = ptrtoint ptr %757 to i64
  %760 = sub i64 %758, %759
  %761 = trunc i64 %760 to i32
  store i32 %761, ptr %28, align 4, !tbaa !9
  %762 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %763 = getelementptr inbounds i8, ptr %762, i64 64
  store ptr %763, ptr %26, align 8, !tbaa !5
  store i32 50331649, ptr %30, align 4, !tbaa !9
  br label %1825

764:                                              ; preds = %426
  store ptr @_ZZ16stbsp_vsprintfcbE4hexu, ptr %27, align 8, !tbaa !5
  br label %766

765:                                              ; preds = %426
  store ptr @_ZZ16stbsp_vsprintfcbE3hex, ptr %27, align 8, !tbaa !5
  br label %766

766:                                              ; preds = %765, %764
  %767 = load ptr, ptr %11, align 8, !tbaa !5
  %768 = getelementptr inbounds %struct.__va_list_tag, ptr %767, i32 0, i32 1
  %769 = load i32, ptr %768, align 4
  %770 = icmp ule i32 %769, 160
  br i1 %770, label %771, label %776

771:                                              ; preds = %766
  %772 = getelementptr inbounds %struct.__va_list_tag, ptr %767, i32 0, i32 3
  %773 = load ptr, ptr %772, align 8
  %774 = getelementptr i8, ptr %773, i32 %769
  %775 = add i32 %769, 16
  store i32 %775, ptr %768, align 4
  br label %780

776:                                              ; preds = %766
  %777 = getelementptr inbounds %struct.__va_list_tag, ptr %767, i32 0, i32 2
  %778 = load ptr, ptr %777, align 8
  %779 = getelementptr i8, ptr %778, i32 8
  store ptr %779, ptr %777, align 8
  br label %780

780:                                              ; preds = %776, %771
  %781 = phi ptr [ %774, %771 ], [ %778, %776 ]
  %782 = load double, ptr %781, align 8, !tbaa !20
  store double %782, ptr %32, align 8, !tbaa !20
  %783 = load i32, ptr %16, align 4, !tbaa !9
  %784 = icmp eq i32 %783, -1
  br i1 %784, label %785, label %786

785:                                              ; preds = %780
  store i32 6, ptr %16, align 4, !tbaa !9
  br label %791

786:                                              ; preds = %780
  %787 = load i32, ptr %16, align 4, !tbaa !9
  %788 = icmp eq i32 %787, 0
  br i1 %788, label %789, label %790

789:                                              ; preds = %786
  store i32 1, ptr %16, align 4, !tbaa !9
  br label %790

790:                                              ; preds = %789, %786
  br label %791

791:                                              ; preds = %790, %785
  %792 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %793 = load double, ptr %32, align 8, !tbaa !20
  %794 = load i32, ptr %16, align 4, !tbaa !9
  %795 = sub nsw i32 %794, 1
  %796 = or i32 %795, -2147483648
  %797 = call noundef i32 @_ZL18stbsp__real_to_strPPKcPjPcPidj(ptr noundef %34, ptr noundef %28, ptr noundef %792, ptr noundef %33, double noundef %793, i32 noundef %796)
  %798 = icmp ne i32 %797, 0
  br i1 %798, label %799, label %802

799:                                              ; preds = %791
  %800 = load i32, ptr %18, align 4, !tbaa !9
  %801 = or i32 %800, 128
  store i32 %801, ptr %18, align 4, !tbaa !9
  br label %802

802:                                              ; preds = %799, %791
  %803 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %803, ptr %29, align 4, !tbaa !9
  %804 = load i32, ptr %28, align 4, !tbaa !9
  %805 = load i32, ptr %16, align 4, !tbaa !9
  %806 = icmp ugt i32 %804, %805
  br i1 %806, label %807, label %809

807:                                              ; preds = %802
  %808 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %808, ptr %28, align 4, !tbaa !9
  br label %809

809:                                              ; preds = %807, %802
  br label %810

810:                                              ; preds = %827, %809
  %811 = load i32, ptr %28, align 4, !tbaa !9
  %812 = icmp ugt i32 %811, 1
  br i1 %812, label %813, label %825

813:                                              ; preds = %810
  %814 = load i32, ptr %16, align 4, !tbaa !9
  %815 = icmp ne i32 %814, 0
  br i1 %815, label %816, label %825

816:                                              ; preds = %813
  %817 = load ptr, ptr %34, align 8, !tbaa !5
  %818 = load i32, ptr %28, align 4, !tbaa !9
  %819 = sub i32 %818, 1
  %820 = zext i32 %819 to i64
  %821 = getelementptr inbounds i8, ptr %817, i64 %820
  %822 = load i8, ptr %821, align 1, !tbaa !11
  %823 = sext i8 %822 to i32
  %824 = icmp eq i32 %823, 48
  br label %825

825:                                              ; preds = %816, %813, %810
  %826 = phi i1 [ false, %813 ], [ false, %810 ], [ %824, %816 ]
  br i1 %826, label %827, label %832

827:                                              ; preds = %825
  %828 = load i32, ptr %16, align 4, !tbaa !9
  %829 = add nsw i32 %828, -1
  store i32 %829, ptr %16, align 4, !tbaa !9
  %830 = load i32, ptr %28, align 4, !tbaa !9
  %831 = add i32 %830, -1
  store i32 %831, ptr %28, align 4, !tbaa !9
  br label %810, !llvm.loop !26

832:                                              ; preds = %825
  %833 = load i32, ptr %33, align 4, !tbaa !9
  %834 = icmp sle i32 %833, -4
  br i1 %834, label %839, label %835

835:                                              ; preds = %832
  %836 = load i32, ptr %33, align 4, !tbaa !9
  %837 = load i32, ptr %29, align 4, !tbaa !9
  %838 = icmp sgt i32 %836, %837
  br i1 %838, label %839, label %854

839:                                              ; preds = %835, %832
  %840 = load i32, ptr %16, align 4, !tbaa !9
  %841 = load i32, ptr %28, align 4, !tbaa !9
  %842 = icmp sgt i32 %840, %841
  br i1 %842, label %843, label %846

843:                                              ; preds = %839
  %844 = load i32, ptr %28, align 4, !tbaa !9
  %845 = sub i32 %844, 1
  store i32 %845, ptr %16, align 4, !tbaa !9
  br label %853

846:                                              ; preds = %839
  %847 = load i32, ptr %16, align 4, !tbaa !9
  %848 = icmp ne i32 %847, 0
  br i1 %848, label %849, label %852

849:                                              ; preds = %846
  %850 = load i32, ptr %16, align 4, !tbaa !9
  %851 = add nsw i32 %850, -1
  store i32 %851, ptr %16, align 4, !tbaa !9
  br label %852

852:                                              ; preds = %849, %846
  br label %853

853:                                              ; preds = %852, %843
  br label %915

854:                                              ; preds = %835
  %855 = load i32, ptr %33, align 4, !tbaa !9
  %856 = icmp sgt i32 %855, 0
  br i1 %856, label %857, label %868

857:                                              ; preds = %854
  %858 = load i32, ptr %33, align 4, !tbaa !9
  %859 = load i32, ptr %28, align 4, !tbaa !9
  %860 = icmp slt i32 %858, %859
  br i1 %860, label %861, label %865

861:                                              ; preds = %857
  %862 = load i32, ptr %28, align 4, !tbaa !9
  %863 = load i32, ptr %33, align 4, !tbaa !9
  %864 = sub i32 %862, %863
  br label %866

865:                                              ; preds = %857
  br label %866

866:                                              ; preds = %865, %861
  %867 = phi i32 [ %864, %861 ], [ 0, %865 ]
  store i32 %867, ptr %16, align 4, !tbaa !9
  br label %881

868:                                              ; preds = %854
  %869 = load i32, ptr %33, align 4, !tbaa !9
  %870 = sub nsw i32 0, %869
  %871 = load i32, ptr %16, align 4, !tbaa !9
  %872 = load i32, ptr %28, align 4, !tbaa !9
  %873 = icmp sgt i32 %871, %872
  br i1 %873, label %874, label %876

874:                                              ; preds = %868
  %875 = load i32, ptr %28, align 4, !tbaa !9
  br label %878

876:                                              ; preds = %868
  %877 = load i32, ptr %16, align 4, !tbaa !9
  br label %878

878:                                              ; preds = %876, %874
  %879 = phi i32 [ %875, %874 ], [ %877, %876 ]
  %880 = add i32 %870, %879
  store i32 %880, ptr %16, align 4, !tbaa !9
  br label %881

881:                                              ; preds = %878, %866
  br label %1066

882:                                              ; preds = %426
  store ptr @_ZZ16stbsp_vsprintfcbE4hexu, ptr %27, align 8, !tbaa !5
  br label %884

883:                                              ; preds = %426
  store ptr @_ZZ16stbsp_vsprintfcbE3hex, ptr %27, align 8, !tbaa !5
  br label %884

884:                                              ; preds = %883, %882
  %885 = load ptr, ptr %11, align 8, !tbaa !5
  %886 = getelementptr inbounds %struct.__va_list_tag, ptr %885, i32 0, i32 1
  %887 = load i32, ptr %886, align 4
  %888 = icmp ule i32 %887, 160
  br i1 %888, label %889, label %894

889:                                              ; preds = %884
  %890 = getelementptr inbounds %struct.__va_list_tag, ptr %885, i32 0, i32 3
  %891 = load ptr, ptr %890, align 8
  %892 = getelementptr i8, ptr %891, i32 %887
  %893 = add i32 %887, 16
  store i32 %893, ptr %886, align 4
  br label %898

894:                                              ; preds = %884
  %895 = getelementptr inbounds %struct.__va_list_tag, ptr %885, i32 0, i32 2
  %896 = load ptr, ptr %895, align 8
  %897 = getelementptr i8, ptr %896, i32 8
  store ptr %897, ptr %895, align 8
  br label %898

898:                                              ; preds = %894, %889
  %899 = phi ptr [ %892, %889 ], [ %896, %894 ]
  %900 = load double, ptr %899, align 8, !tbaa !20
  store double %900, ptr %32, align 8, !tbaa !20
  %901 = load i32, ptr %16, align 4, !tbaa !9
  %902 = icmp eq i32 %901, -1
  br i1 %902, label %903, label %904

903:                                              ; preds = %898
  store i32 6, ptr %16, align 4, !tbaa !9
  br label %904

904:                                              ; preds = %903, %898
  %905 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %906 = load double, ptr %32, align 8, !tbaa !20
  %907 = load i32, ptr %16, align 4, !tbaa !9
  %908 = or i32 %907, -2147483648
  %909 = call noundef i32 @_ZL18stbsp__real_to_strPPKcPjPcPidj(ptr noundef %34, ptr noundef %28, ptr noundef %905, ptr noundef %33, double noundef %906, i32 noundef %908)
  %910 = icmp ne i32 %909, 0
  br i1 %910, label %911, label %914

911:                                              ; preds = %904
  %912 = load i32, ptr %18, align 4, !tbaa !9
  %913 = or i32 %912, 128
  store i32 %913, ptr %18, align 4, !tbaa !9
  br label %914

914:                                              ; preds = %911, %904
  br label %915

915:                                              ; preds = %914, %853
  %916 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 0
  store i8 0, ptr %916, align 1, !tbaa !11
  %917 = load i32, ptr %18, align 4, !tbaa !9
  %918 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  call void @_ZL16stbsp__lead_signjPc(i32 noundef %917, ptr noundef %918)
  %919 = load i32, ptr %33, align 4, !tbaa !9
  %920 = icmp eq i32 %919, 28672
  br i1 %920, label %921, label %923

921:                                              ; preds = %915
  %922 = load ptr, ptr %34, align 8, !tbaa !5
  store ptr %922, 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 %1825

923:                                              ; preds = %915
  %924 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %925 = getelementptr inbounds i8, ptr %924, i64 64
  store ptr %925, ptr %26, align 8, !tbaa !5
  %926 = load ptr, ptr %34, align 8, !tbaa !5
  %927 = getelementptr inbounds i8, ptr %926, i64 0
  %928 = load i8, ptr %927, align 1, !tbaa !11
  %929 = load ptr, ptr %26, align 8, !tbaa !5
  %930 = getelementptr inbounds i8, ptr %929, i32 1
  store ptr %930, ptr %26, align 8, !tbaa !5
  store i8 %928, ptr %929, align 1, !tbaa !11
  %931 = load i32, ptr %16, align 4, !tbaa !9
  %932 = icmp ne i32 %931, 0
  br i1 %932, label %933, label %937

933:                                              ; preds = %923
  %934 = load i8, ptr @_ZL13stbsp__period, align 1, !tbaa !11
  %935 = load ptr, ptr %26, align 8, !tbaa !5
  %936 = getelementptr inbounds i8, ptr %935, i32 1
  store ptr %936, ptr %26, align 8, !tbaa !5
  store i8 %934, ptr %935, align 1, !tbaa !11
  br label %937

937:                                              ; preds = %933, %923
  %938 = load i32, ptr %28, align 4, !tbaa !9
  %939 = sub i32 %938, 1
  %940 = load i32, ptr %16, align 4, !tbaa !9
  %941 = icmp ugt i32 %939, %940
  br i1 %941, label %942, label %945

942:                                              ; preds = %937
  %943 = load i32, ptr %16, align 4, !tbaa !9
  %944 = add nsw i32 %943, 1
  store i32 %944, ptr %28, align 4, !tbaa !9
  br label %945

945:                                              ; preds = %942, %937
  store i32 1, ptr %29, align 4, !tbaa !9
  br label %946

946:                                              ; preds = %958, %945
  %947 = load i32, ptr %29, align 4, !tbaa !9
  %948 = load i32, ptr %28, align 4, !tbaa !9
  %949 = icmp ult i32 %947, %948
  br i1 %949, label %950, label %961

950:                                              ; preds = %946
  %951 = load ptr, ptr %34, align 8, !tbaa !5
  %952 = load i32, ptr %29, align 4, !tbaa !9
  %953 = zext i32 %952 to i64
  %954 = getelementptr inbounds i8, ptr %951, i64 %953
  %955 = load i8, ptr %954, align 1, !tbaa !11
  %956 = load ptr, ptr %26, align 8, !tbaa !5
  %957 = getelementptr inbounds i8, ptr %956, i32 1
  store ptr %957, ptr %26, align 8, !tbaa !5
  store i8 %955, ptr %956, align 1, !tbaa !11
  br label %958

958:                                              ; preds = %950
  %959 = load i32, ptr %29, align 4, !tbaa !9
  %960 = add i32 %959, 1
  store i32 %960, ptr %29, align 4, !tbaa !9
  br label %946, !llvm.loop !27

961:                                              ; preds = %946
  %962 = load i32, ptr %16, align 4, !tbaa !9
  %963 = load i32, ptr %28, align 4, !tbaa !9
  %964 = sub i32 %963, 1
  %965 = sub i32 %962, %964
  store i32 %965, ptr %17, align 4, !tbaa !9
  store i32 0, ptr %16, align 4, !tbaa !9
  %966 = load ptr, ptr %27, align 8, !tbaa !5
  %967 = getelementptr inbounds i8, ptr %966, i64 14
  %968 = load i8, ptr %967, align 1, !tbaa !11
  %969 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 1
  store i8 %968, ptr %969, align 1, !tbaa !11
  %970 = load i32, ptr %33, align 4, !tbaa !9
  %971 = sub nsw i32 %970, 1
  store i32 %971, ptr %33, align 4, !tbaa !9
  %972 = load i32, ptr %33, align 4, !tbaa !9
  %973 = icmp slt i32 %972, 0
  br i1 %973, label %974, label %978

974:                                              ; preds = %961
  %975 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 2
  store i8 45, ptr %975, align 1, !tbaa !11
  %976 = load i32, ptr %33, align 4, !tbaa !9
  %977 = sub nsw i32 0, %976
  store i32 %977, ptr %33, align 4, !tbaa !9
  br label %980

978:                                              ; preds = %961
  %979 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 2
  store i8 43, ptr %979, align 1, !tbaa !11
  br label %980

980:                                              ; preds = %978, %974
  %981 = load i32, ptr %33, align 4, !tbaa !9
  %982 = icmp sge i32 %981, 100
  %983 = zext i1 %982 to i64
  %984 = select i1 %982, i32 5, i32 4
  store i32 %984, ptr %29, align 4, !tbaa !9
  %985 = load i32, ptr %29, align 4, !tbaa !9
  %986 = trunc i32 %985 to i8
  %987 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 0
  store i8 %986, ptr %987, align 1, !tbaa !11
  br label %988

988:                                              ; preds = %999, %980
  %989 = load i32, ptr %33, align 4, !tbaa !9
  %990 = srem i32 %989, 10
  %991 = add nsw i32 48, %990
  %992 = trunc i32 %991 to i8
  %993 = load i32, ptr %29, align 4, !tbaa !9
  %994 = zext i32 %993 to i64
  %995 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 %994
  store i8 %992, ptr %995, align 1, !tbaa !11
  %996 = load i32, ptr %29, align 4, !tbaa !9
  %997 = icmp ule i32 %996, 3
  br i1 %997, label %998, label %999

998:                                              ; preds = %988
  br label %1004

999:                                              ; preds = %988
  %1000 = load i32, ptr %29, align 4, !tbaa !9
  %1001 = add i32 %1000, -1
  store i32 %1001, ptr %29, align 4, !tbaa !9
  %1002 = load i32, ptr %33, align 4, !tbaa !9
  %1003 = sdiv i32 %1002, 10
  store i32 %1003, ptr %33, align 4, !tbaa !9
  br label %988, !llvm.loop !28

1004:                                             ; preds = %998
  store i32 50331649, ptr %30, align 4, !tbaa !9
  br label %1421

1005:                                             ; preds = %426
  %1006 = load ptr, ptr %11, align 8, !tbaa !5
  %1007 = getelementptr inbounds %struct.__va_list_tag, ptr %1006, i32 0, i32 1
  %1008 = load i32, ptr %1007, align 4
  %1009 = icmp ule i32 %1008, 160
  br i1 %1009, label %1010, label %1015

1010:                                             ; preds = %1005
  %1011 = getelementptr inbounds %struct.__va_list_tag, ptr %1006, i32 0, i32 3
  %1012 = load ptr, ptr %1011, align 8
  %1013 = getelementptr i8, ptr %1012, i32 %1008
  %1014 = add i32 %1008, 16
  store i32 %1014, ptr %1007, align 4
  br label %1019

1015:                                             ; preds = %1005
  %1016 = getelementptr inbounds %struct.__va_list_tag, ptr %1006, i32 0, i32 2
  %1017 = load ptr, ptr %1016, align 8
  %1018 = getelementptr i8, ptr %1017, i32 8
  store ptr %1018, ptr %1016, align 8
  br label %1019

1019:                                             ; preds = %1015, %1010
  %1020 = phi ptr [ %1013, %1010 ], [ %1017, %1015 ]
  %1021 = load double, ptr %1020, align 8, !tbaa !20
  store double %1021, ptr %32, align 8, !tbaa !20
  br label %1022

1022:                                             ; preds = %1686, %1019
  %1023 = load i32, ptr %18, align 4, !tbaa !9
  %1024 = and i32 %1023, 256
  %1025 = icmp ne i32 %1024, 0
  br i1 %1025, label %1026, label %1052

1026:                                             ; preds = %1022
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #3
  store double 1.000000e+03, ptr %37, align 8, !tbaa !20
  %1027 = load i32, ptr %18, align 4, !tbaa !9
  %1028 = and i32 %1027, 2048
  %1029 = icmp ne i32 %1028, 0
  br i1 %1029, label %1030, label %1031

1030:                                             ; preds = %1026
  store double 1.024000e+03, ptr %37, align 8, !tbaa !20
  br label %1031

1031:                                             ; preds = %1030, %1026
  br label %1032

1032:                                             ; preds = %1045, %1031
  %1033 = load i32, ptr %18, align 4, !tbaa !9
  %1034 = icmp ult i32 %1033, 67108864
  br i1 %1034, label %1035, label %1051

1035:                                             ; preds = %1032
  %1036 = load double, ptr %32, align 8, !tbaa !20
  %1037 = load double, ptr %37, align 8, !tbaa !20
  %1038 = fcmp olt double %1036, %1037
  br i1 %1038, label %1039, label %1045

1039:                                             ; preds = %1035
  %1040 = load double, ptr %32, align 8, !tbaa !20
  %1041 = load double, ptr %37, align 8, !tbaa !20
  %1042 = fneg double %1041
  %1043 = fcmp ogt double %1040, %1042
  br i1 %1043, label %1044, label %1045

1044:                                             ; preds = %1039
  br label %1051

1045:                                             ; preds = %1039, %1035
  %1046 = load double, ptr %37, align 8, !tbaa !20
  %1047 = load double, ptr %32, align 8, !tbaa !20
  %1048 = fdiv double %1047, %1046
  store double %1048, ptr %32, align 8, !tbaa !20
  %1049 = load i32, ptr %18, align 4, !tbaa !9
  %1050 = add i32 %1049, 16777216
  store i32 %1050, ptr %18, align 4, !tbaa !9
  br label %1032, !llvm.loop !29

1051:                                             ; preds = %1044, %1032
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #3
  br label %1052

1052:                                             ; preds = %1051, %1022
  %1053 = load i32, ptr %16, align 4, !tbaa !9
  %1054 = icmp eq i32 %1053, -1
  br i1 %1054, label %1055, label %1056

1055:                                             ; preds = %1052
  store i32 6, ptr %16, align 4, !tbaa !9
  br label %1056

1056:                                             ; preds = %1055, %1052
  %1057 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %1058 = load double, ptr %32, align 8, !tbaa !20
  %1059 = load i32, ptr %16, align 4, !tbaa !9
  %1060 = call noundef i32 @_ZL18stbsp__real_to_strPPKcPjPcPidj(ptr noundef %34, ptr noundef %28, ptr noundef %1057, ptr noundef %33, double noundef %1058, i32 noundef %1059)
  %1061 = icmp ne i32 %1060, 0
  br i1 %1061, label %1062, label %1065

1062:                                             ; preds = %1056
  %1063 = load i32, ptr %18, align 4, !tbaa !9
  %1064 = or i32 %1063, 128
  store i32 %1064, ptr %18, align 4, !tbaa !9
  br label %1065

1065:                                             ; preds = %1062, %1056
  br label %1066

1066:                                             ; preds = %1065, %881
  %1067 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 0
  store i8 0, ptr %1067, align 1, !tbaa !11
  %1068 = load i32, ptr %18, align 4, !tbaa !9
  %1069 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  call void @_ZL16stbsp__lead_signjPc(i32 noundef %1068, ptr noundef %1069)
  %1070 = load i32, ptr %33, align 4, !tbaa !9
  %1071 = icmp eq i32 %1070, 28672
  br i1 %1071, label %1072, label %1074

1072:                                             ; preds = %1066
  %1073 = load ptr, ptr %34, align 8, !tbaa !5
  store ptr %1073, 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 %1825

1074:                                             ; preds = %1066
  %1075 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %1076 = getelementptr inbounds i8, ptr %1075, i64 64
  store ptr %1076, ptr %26, align 8, !tbaa !5
  %1077 = load i32, ptr %33, align 4, !tbaa !9
  %1078 = icmp sle i32 %1077, 0
  br i1 %1078, label %1079, label %1160

1079:                                             ; preds = %1074
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #3
  %1080 = load ptr, ptr %26, align 8, !tbaa !5
  %1081 = getelementptr inbounds i8, ptr %1080, i32 1
  store ptr %1081, ptr %26, align 8, !tbaa !5
  store i8 48, ptr %1080, align 1, !tbaa !11
  %1082 = load i32, ptr %16, align 4, !tbaa !9
  %1083 = icmp ne i32 %1082, 0
  br i1 %1083, label %1084, label %1088

1084:                                             ; preds = %1079
  %1085 = load i8, ptr @_ZL13stbsp__period, align 1, !tbaa !11
  %1086 = load ptr, ptr %26, align 8, !tbaa !5
  %1087 = getelementptr inbounds i8, ptr %1086, i32 1
  store ptr %1087, ptr %26, align 8, !tbaa !5
  store i8 %1085, ptr %1086, align 1, !tbaa !11
  br label %1088

1088:                                             ; preds = %1084, %1079
  %1089 = load i32, ptr %33, align 4, !tbaa !9
  %1090 = sub nsw i32 0, %1089
  store i32 %1090, ptr %29, align 4, !tbaa !9
  %1091 = load i32, ptr %29, align 4, !tbaa !9
  %1092 = load i32, ptr %16, align 4, !tbaa !9
  %1093 = icmp sgt i32 %1091, %1092
  br i1 %1093, label %1094, label %1096

1094:                                             ; preds = %1088
  %1095 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %1095, ptr %29, align 4, !tbaa !9
  br label %1096

1096:                                             ; preds = %1094, %1088
  %1097 = load i32, ptr %29, align 4, !tbaa !9
  store i32 %1097, ptr %38, align 4, !tbaa !9
  br label %1098

1098:                                             ; preds = %1107, %1096
  %1099 = load i32, ptr %38, align 4, !tbaa !9
  %1100 = icmp ne i32 %1099, 0
  br i1 %1100, label %1101, label %1112

1101:                                             ; preds = %1098
  %1102 = load ptr, ptr %26, align 8, !tbaa !5
  %1103 = ptrtoint ptr %1102 to i64
  %1104 = and i64 %1103, 3
  %1105 = icmp eq i64 %1104, 0
  br i1 %1105, label %1106, label %1107

1106:                                             ; preds = %1101
  br label %1112

1107:                                             ; preds = %1101
  %1108 = load ptr, ptr %26, align 8, !tbaa !5
  %1109 = getelementptr inbounds i8, ptr %1108, i32 1
  store ptr %1109, ptr %26, align 8, !tbaa !5
  store i8 48, ptr %1108, align 1, !tbaa !11
  %1110 = load i32, ptr %38, align 4, !tbaa !9
  %1111 = add nsw i32 %1110, -1
  store i32 %1111, ptr %38, align 4, !tbaa !9
  br label %1098, !llvm.loop !30

1112:                                             ; preds = %1106, %1098
  br label %1113

1113:                                             ; preds = %1116, %1112
  %1114 = load i32, ptr %38, align 4, !tbaa !9
  %1115 = icmp sge i32 %1114, 4
  br i1 %1115, label %1116, label %1122

1116:                                             ; preds = %1113
  %1117 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 808464432, ptr %1117, align 4, !tbaa !9
  %1118 = load ptr, ptr %26, align 8, !tbaa !5
  %1119 = getelementptr inbounds i8, ptr %1118, i64 4
  store ptr %1119, ptr %26, align 8, !tbaa !5
  %1120 = load i32, ptr %38, align 4, !tbaa !9
  %1121 = sub nsw i32 %1120, 4
  store i32 %1121, ptr %38, align 4, !tbaa !9
  br label %1113, !llvm.loop !31

1122:                                             ; preds = %1113
  br label %1123

1123:                                             ; preds = %1126, %1122
  %1124 = load i32, ptr %38, align 4, !tbaa !9
  %1125 = icmp ne i32 %1124, 0
  br i1 %1125, label %1126, label %1131

1126:                                             ; preds = %1123
  %1127 = load ptr, ptr %26, align 8, !tbaa !5
  %1128 = getelementptr inbounds i8, ptr %1127, i32 1
  store ptr %1128, ptr %26, align 8, !tbaa !5
  store i8 48, ptr %1127, align 1, !tbaa !11
  %1129 = load i32, ptr %38, align 4, !tbaa !9
  %1130 = add nsw i32 %1129, -1
  store i32 %1130, ptr %38, align 4, !tbaa !9
  br label %1123, !llvm.loop !32

1131:                                             ; preds = %1123
  %1132 = load i32, ptr %28, align 4, !tbaa !9
  %1133 = load i32, ptr %29, align 4, !tbaa !9
  %1134 = add i32 %1132, %1133
  %1135 = load i32, ptr %16, align 4, !tbaa !9
  %1136 = icmp sgt i32 %1134, %1135
  br i1 %1136, label %1137, label %1141

1137:                                             ; preds = %1131
  %1138 = load i32, ptr %16, align 4, !tbaa !9
  %1139 = load i32, ptr %29, align 4, !tbaa !9
  %1140 = sub i32 %1138, %1139
  store i32 %1140, ptr %28, align 4, !tbaa !9
  br label %1141

1141:                                             ; preds = %1137, %1131
  %1142 = load i32, ptr %28, align 4, !tbaa !9
  store i32 %1142, ptr %38, align 4, !tbaa !9
  br label %1143

1143:                                             ; preds = %1146, %1141
  %1144 = load i32, ptr %38, align 4, !tbaa !9
  %1145 = icmp ne i32 %1144, 0
  br i1 %1145, label %1146, label %1154

1146:                                             ; preds = %1143
  %1147 = load ptr, ptr %34, align 8, !tbaa !5
  %1148 = getelementptr inbounds i8, ptr %1147, i32 1
  store ptr %1148, ptr %34, align 8, !tbaa !5
  %1149 = load i8, ptr %1147, align 1, !tbaa !11
  %1150 = load ptr, ptr %26, align 8, !tbaa !5
  %1151 = getelementptr inbounds i8, ptr %1150, i32 1
  store ptr %1151, ptr %26, align 8, !tbaa !5
  store i8 %1149, ptr %1150, align 1, !tbaa !11
  %1152 = load i32, ptr %38, align 4, !tbaa !9
  %1153 = add nsw i32 %1152, -1
  store i32 %1153, ptr %38, align 4, !tbaa !9
  br label %1143, !llvm.loop !33

1154:                                             ; preds = %1143
  %1155 = load i32, ptr %16, align 4, !tbaa !9
  %1156 = load i32, ptr %29, align 4, !tbaa !9
  %1157 = load i32, ptr %28, align 4, !tbaa !9
  %1158 = add i32 %1156, %1157
  %1159 = sub i32 %1155, %1158
  store i32 %1159, ptr %17, align 4, !tbaa !9
  store i32 50331649, ptr %30, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #3
  br label %1356

1160:                                             ; preds = %1074
  %1161 = load i32, ptr %18, align 4, !tbaa !9
  %1162 = and i32 %1161, 64
  %1163 = icmp ne i32 %1162, 0
  br i1 %1163, label %1164, label %1168

1164:                                             ; preds = %1160
  %1165 = load i32, ptr %33, align 4, !tbaa !9
  %1166 = sub i32 600, %1165
  %1167 = urem i32 %1166, 3
  br label %1169

1168:                                             ; preds = %1160
  br label %1169

1169:                                             ; preds = %1168, %1164
  %1170 = phi i32 [ %1167, %1164 ], [ 0, %1168 ]
  store i32 %1170, ptr %30, align 4, !tbaa !9
  %1171 = load i32, ptr %33, align 4, !tbaa !9
  %1172 = load i32, ptr %28, align 4, !tbaa !9
  %1173 = icmp uge i32 %1171, %1172
  br i1 %1173, label %1174, label %1280

1174:                                             ; preds = %1169
  store i32 0, ptr %29, align 4, !tbaa !9
  br label %1175

1175:                                             ; preds = %1202, %1174
  %1176 = load i32, ptr %18, align 4, !tbaa !9
  %1177 = and i32 %1176, 64
  %1178 = icmp ne i32 %1177, 0
  br i1 %1178, label %1179, label %1187

1179:                                             ; preds = %1175
  %1180 = load i32, ptr %30, align 4, !tbaa !9
  %1181 = add i32 %1180, 1
  store i32 %1181, ptr %30, align 4, !tbaa !9
  %1182 = icmp eq i32 %1181, 4
  br i1 %1182, label %1183, label %1187

1183:                                             ; preds = %1179
  store i32 0, ptr %30, align 4, !tbaa !9
  %1184 = load i8, ptr @_ZL12stbsp__comma, align 1, !tbaa !11
  %1185 = load ptr, ptr %26, align 8, !tbaa !5
  %1186 = getelementptr inbounds i8, ptr %1185, i32 1
  store ptr %1186, ptr %26, align 8, !tbaa !5
  store i8 %1184, ptr %1185, align 1, !tbaa !11
  br label %1202

1187:                                             ; preds = %1179, %1175
  %1188 = load ptr, ptr %34, align 8, !tbaa !5
  %1189 = load i32, ptr %29, align 4, !tbaa !9
  %1190 = zext i32 %1189 to i64
  %1191 = getelementptr inbounds i8, ptr %1188, i64 %1190
  %1192 = load i8, ptr %1191, align 1, !tbaa !11
  %1193 = load ptr, ptr %26, align 8, !tbaa !5
  %1194 = getelementptr inbounds i8, ptr %1193, i32 1
  store ptr %1194, ptr %26, align 8, !tbaa !5
  store i8 %1192, ptr %1193, align 1, !tbaa !11
  %1195 = load i32, ptr %29, align 4, !tbaa !9
  %1196 = add i32 %1195, 1
  store i32 %1196, ptr %29, align 4, !tbaa !9
  %1197 = load i32, ptr %29, align 4, !tbaa !9
  %1198 = load i32, ptr %28, align 4, !tbaa !9
  %1199 = icmp uge i32 %1197, %1198
  br i1 %1199, label %1200, label %1201

1200:                                             ; preds = %1187
  br label %1203

1201:                                             ; preds = %1187
  br label %1202

1202:                                             ; preds = %1201, %1183
  br label %1175, !llvm.loop !34

1203:                                             ; preds = %1200
  %1204 = load i32, ptr %29, align 4, !tbaa !9
  %1205 = load i32, ptr %33, align 4, !tbaa !9
  %1206 = icmp ult i32 %1204, %1205
  br i1 %1206, label %1207, label %1263

1207:                                             ; preds = %1203
  %1208 = load i32, ptr %33, align 4, !tbaa !9
  %1209 = load i32, ptr %29, align 4, !tbaa !9
  %1210 = sub i32 %1208, %1209
  store i32 %1210, ptr %29, align 4, !tbaa !9
  %1211 = load i32, ptr %18, align 4, !tbaa !9
  %1212 = and i32 %1211, 64
  %1213 = icmp eq i32 %1212, 0
  br i1 %1213, label %1214, label %1240

1214:                                             ; preds = %1207
  br label %1215

1215:                                             ; preds = %1224, %1214
  %1216 = load i32, ptr %29, align 4, !tbaa !9
  %1217 = icmp ne i32 %1216, 0
  br i1 %1217, label %1218, label %1229

1218:                                             ; preds = %1215
  %1219 = load ptr, ptr %26, align 8, !tbaa !5
  %1220 = ptrtoint ptr %1219 to i64
  %1221 = and i64 %1220, 3
  %1222 = icmp eq i64 %1221, 0
  br i1 %1222, label %1223, label %1224

1223:                                             ; preds = %1218
  br label %1229

1224:                                             ; preds = %1218
  %1225 = load ptr, ptr %26, align 8, !tbaa !5
  %1226 = getelementptr inbounds i8, ptr %1225, i32 1
  store ptr %1226, ptr %26, align 8, !tbaa !5
  store i8 48, ptr %1225, align 1, !tbaa !11
  %1227 = load i32, ptr %29, align 4, !tbaa !9
  %1228 = add i32 %1227, -1
  store i32 %1228, ptr %29, align 4, !tbaa !9
  br label %1215, !llvm.loop !35

1229:                                             ; preds = %1223, %1215
  br label %1230

1230:                                             ; preds = %1233, %1229
  %1231 = load i32, ptr %29, align 4, !tbaa !9
  %1232 = icmp uge i32 %1231, 4
  br i1 %1232, label %1233, label %1239

1233:                                             ; preds = %1230
  %1234 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 808464432, ptr %1234, align 4, !tbaa !9
  %1235 = load ptr, ptr %26, align 8, !tbaa !5
  %1236 = getelementptr inbounds i8, ptr %1235, i64 4
  store ptr %1236, ptr %26, align 8, !tbaa !5
  %1237 = load i32, ptr %29, align 4, !tbaa !9
  %1238 = sub i32 %1237, 4
  store i32 %1238, ptr %29, align 4, !tbaa !9
  br label %1230, !llvm.loop !36

1239:                                             ; preds = %1230
  br label %1240

1240:                                             ; preds = %1239, %1207
  br label %1241

1241:                                             ; preds = %1261, %1240
  %1242 = load i32, ptr %29, align 4, !tbaa !9
  %1243 = icmp ne i32 %1242, 0
  br i1 %1243, label %1244, label %1262

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

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

1252:                                             ; preds = %1248
  store i32 0, ptr %30, align 4, !tbaa !9
  %1253 = load i8, ptr @_ZL12stbsp__comma, align 1, !tbaa !11
  %1254 = load ptr, ptr %26, align 8, !tbaa !5
  %1255 = getelementptr inbounds i8, ptr %1254, i32 1
  store ptr %1255, ptr %26, align 8, !tbaa !5
  store i8 %1253, ptr %1254, align 1, !tbaa !11
  br label %1261

1256:                                             ; preds = %1248, %1244
  %1257 = load ptr, ptr %26, align 8, !tbaa !5
  %1258 = getelementptr inbounds i8, ptr %1257, i32 1
  store ptr %1258, ptr %26, align 8, !tbaa !5
  store i8 48, ptr %1257, align 1, !tbaa !11
  %1259 = load i32, ptr %29, align 4, !tbaa !9
  %1260 = add i32 %1259, -1
  store i32 %1260, ptr %29, align 4, !tbaa !9
  br label %1261

1261:                                             ; preds = %1256, %1252
  br label %1241, !llvm.loop !37

1262:                                             ; preds = %1241
  br label %1263

1263:                                             ; preds = %1262, %1203
  %1264 = load ptr, ptr %26, align 8, !tbaa !5
  %1265 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %1266 = getelementptr inbounds i8, ptr %1265, i64 64
  %1267 = ptrtoint ptr %1264 to i64
  %1268 = ptrtoint ptr %1266 to i64
  %1269 = sub i64 %1267, %1268
  %1270 = trunc i64 %1269 to i32
  %1271 = add nsw i32 %1270, 50331648
  store i32 %1271, ptr %30, align 4, !tbaa !9
  %1272 = load i32, ptr %16, align 4, !tbaa !9
  %1273 = icmp ne i32 %1272, 0
  br i1 %1273, label %1274, label %1279

1274:                                             ; preds = %1263
  %1275 = load i8, ptr @_ZL13stbsp__period, align 1, !tbaa !11
  %1276 = load ptr, ptr %26, align 8, !tbaa !5
  %1277 = getelementptr inbounds i8, ptr %1276, i32 1
  store ptr %1277, ptr %26, align 8, !tbaa !5
  store i8 %1275, ptr %1276, align 1, !tbaa !11
  %1278 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %1278, ptr %17, align 4, !tbaa !9
  br label %1279

1279:                                             ; preds = %1274, %1263
  br label %1355

1280:                                             ; preds = %1169
  store i32 0, ptr %29, align 4, !tbaa !9
  br label %1281

1281:                                             ; preds = %1308, %1280
  %1282 = load i32, ptr %18, align 4, !tbaa !9
  %1283 = and i32 %1282, 64
  %1284 = icmp ne i32 %1283, 0
  br i1 %1284, label %1285, label %1293

1285:                                             ; preds = %1281
  %1286 = load i32, ptr %30, align 4, !tbaa !9
  %1287 = add i32 %1286, 1
  store i32 %1287, ptr %30, align 4, !tbaa !9
  %1288 = icmp eq i32 %1287, 4
  br i1 %1288, label %1289, label %1293

1289:                                             ; preds = %1285
  store i32 0, ptr %30, align 4, !tbaa !9
  %1290 = load i8, ptr @_ZL12stbsp__comma, align 1, !tbaa !11
  %1291 = load ptr, ptr %26, align 8, !tbaa !5
  %1292 = getelementptr inbounds i8, ptr %1291, i32 1
  store ptr %1292, ptr %26, align 8, !tbaa !5
  store i8 %1290, ptr %1291, align 1, !tbaa !11
  br label %1308

1293:                                             ; preds = %1285, %1281
  %1294 = load ptr, ptr %34, align 8, !tbaa !5
  %1295 = load i32, ptr %29, align 4, !tbaa !9
  %1296 = zext i32 %1295 to i64
  %1297 = getelementptr inbounds i8, ptr %1294, i64 %1296
  %1298 = load i8, ptr %1297, align 1, !tbaa !11
  %1299 = load ptr, ptr %26, align 8, !tbaa !5
  %1300 = getelementptr inbounds i8, ptr %1299, i32 1
  store ptr %1300, ptr %26, align 8, !tbaa !5
  store i8 %1298, ptr %1299, align 1, !tbaa !11
  %1301 = load i32, ptr %29, align 4, !tbaa !9
  %1302 = add i32 %1301, 1
  store i32 %1302, ptr %29, align 4, !tbaa !9
  %1303 = load i32, ptr %29, align 4, !tbaa !9
  %1304 = load i32, ptr %33, align 4, !tbaa !9
  %1305 = icmp uge i32 %1303, %1304
  br i1 %1305, label %1306, label %1307

1306:                                             ; preds = %1293
  br label %1309

1307:                                             ; preds = %1293
  br label %1308

1308:                                             ; preds = %1307, %1289
  br label %1281, !llvm.loop !38

1309:                                             ; preds = %1306
  %1310 = load ptr, ptr %26, align 8, !tbaa !5
  %1311 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %1312 = getelementptr inbounds i8, ptr %1311, i64 64
  %1313 = ptrtoint ptr %1310 to i64
  %1314 = ptrtoint ptr %1312 to i64
  %1315 = sub i64 %1313, %1314
  %1316 = trunc i64 %1315 to i32
  %1317 = add nsw i32 %1316, 50331648
  store i32 %1317, ptr %30, align 4, !tbaa !9
  %1318 = load i32, ptr %16, align 4, !tbaa !9
  %1319 = icmp ne i32 %1318, 0
  br i1 %1319, label %1320, label %1324

1320:                                             ; preds = %1309
  %1321 = load i8, ptr @_ZL13stbsp__period, align 1, !tbaa !11
  %1322 = load ptr, ptr %26, align 8, !tbaa !5
  %1323 = getelementptr inbounds i8, ptr %1322, i32 1
  store ptr %1323, ptr %26, align 8, !tbaa !5
  store i8 %1321, ptr %1322, align 1, !tbaa !11
  br label %1324

1324:                                             ; preds = %1320, %1309
  %1325 = load i32, ptr %28, align 4, !tbaa !9
  %1326 = load i32, ptr %33, align 4, !tbaa !9
  %1327 = sub i32 %1325, %1326
  %1328 = load i32, ptr %16, align 4, !tbaa !9
  %1329 = icmp ugt i32 %1327, %1328
  br i1 %1329, label %1330, label %1334

1330:                                             ; preds = %1324
  %1331 = load i32, ptr %16, align 4, !tbaa !9
  %1332 = load i32, ptr %33, align 4, !tbaa !9
  %1333 = add nsw i32 %1331, %1332
  store i32 %1333, ptr %28, align 4, !tbaa !9
  br label %1334

1334:                                             ; preds = %1330, %1324
  br label %1335

1335:                                             ; preds = %1339, %1334
  %1336 = load i32, ptr %29, align 4, !tbaa !9
  %1337 = load i32, ptr %28, align 4, !tbaa !9
  %1338 = icmp ult i32 %1336, %1337
  br i1 %1338, label %1339, label %1349

1339:                                             ; preds = %1335
  %1340 = load ptr, ptr %34, align 8, !tbaa !5
  %1341 = load i32, ptr %29, align 4, !tbaa !9
  %1342 = zext i32 %1341 to i64
  %1343 = getelementptr inbounds i8, ptr %1340, i64 %1342
  %1344 = load i8, ptr %1343, align 1, !tbaa !11
  %1345 = load ptr, ptr %26, align 8, !tbaa !5
  %1346 = getelementptr inbounds i8, ptr %1345, i32 1
  store ptr %1346, ptr %26, align 8, !tbaa !5
  store i8 %1344, ptr %1345, align 1, !tbaa !11
  %1347 = load i32, ptr %29, align 4, !tbaa !9
  %1348 = add i32 %1347, 1
  store i32 %1348, ptr %29, align 4, !tbaa !9
  br label %1335, !llvm.loop !39

1349:                                             ; preds = %1335
  %1350 = load i32, ptr %16, align 4, !tbaa !9
  %1351 = load i32, ptr %28, align 4, !tbaa !9
  %1352 = load i32, ptr %33, align 4, !tbaa !9
  %1353 = sub i32 %1351, %1352
  %1354 = sub i32 %1350, %1353
  store i32 %1354, ptr %17, align 4, !tbaa !9
  br label %1355

1355:                                             ; preds = %1349, %1279
  br label %1356

1356:                                             ; preds = %1355, %1154
  store i32 0, ptr %16, align 4, !tbaa !9
  %1357 = load i32, ptr %18, align 4, !tbaa !9
  %1358 = and i32 %1357, 256
  %1359 = icmp ne i32 %1358, 0
  br i1 %1359, label %1360, label %1420

1360:                                             ; preds = %1356
  call void @llvm.lifetime.start.p0(i64 1, ptr %39) #3
  store i8 1, ptr %39, align 1, !tbaa !11
  %1361 = load i32, ptr %18, align 4, !tbaa !9
  %1362 = and i32 %1361, 1024
  %1363 = icmp ne i32 %1362, 0
  br i1 %1363, label %1364, label %1365

1364:                                             ; preds = %1360
  store i8 0, ptr %39, align 1, !tbaa !11
  br label %1365

1365:                                             ; preds = %1364, %1360
  %1366 = load i8, ptr %39, align 1, !tbaa !11
  %1367 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 0
  store i8 %1366, ptr %1367, align 1, !tbaa !11
  %1368 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 1
  store i8 32, ptr %1368, align 1, !tbaa !11
  %1369 = load i32, ptr %18, align 4, !tbaa !9
  %1370 = lshr i32 %1369, 24
  %1371 = icmp ne i32 %1370, 0
  br i1 %1371, label %1372, label %1419

1372:                                             ; preds = %1365
  %1373 = load i32, ptr %18, align 4, !tbaa !9
  %1374 = and i32 %1373, 2048
  %1375 = icmp ne i32 %1374, 0
  br i1 %1375, label %1376, label %1387

1376:                                             ; preds = %1372
  %1377 = load i32, ptr %18, align 4, !tbaa !9
  %1378 = lshr i32 %1377, 24
  %1379 = zext i32 %1378 to i64
  %1380 = getelementptr inbounds [6 x i8], ptr @.str.1, i64 0, i64 %1379
  %1381 = load i8, ptr %1380, align 1, !tbaa !11
  %1382 = load i8, ptr %39, align 1, !tbaa !11
  %1383 = sext i8 %1382 to i32
  %1384 = add nsw i32 %1383, 1
  %1385 = sext i32 %1384 to i64
  %1386 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 %1385
  store i8 %1381, ptr %1386, align 1, !tbaa !11
  br label %1398

1387:                                             ; preds = %1372
  %1388 = load i32, ptr %18, align 4, !tbaa !9
  %1389 = lshr i32 %1388, 24
  %1390 = zext i32 %1389 to i64
  %1391 = getelementptr inbounds [6 x i8], ptr @.str.2, i64 0, i64 %1390
  %1392 = load i8, ptr %1391, align 1, !tbaa !11
  %1393 = load i8, ptr %39, align 1, !tbaa !11
  %1394 = sext i8 %1393 to i32
  %1395 = add nsw i32 %1394, 1
  %1396 = sext i32 %1395 to i64
  %1397 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 %1396
  store i8 %1392, ptr %1397, align 1, !tbaa !11
  br label %1398

1398:                                             ; preds = %1387, %1376
  %1399 = load i8, ptr %39, align 1, !tbaa !11
  %1400 = add i8 %1399, 1
  store i8 %1400, ptr %39, align 1, !tbaa !11
  %1401 = load i32, ptr %18, align 4, !tbaa !9
  %1402 = and i32 %1401, 2048
  %1403 = icmp ne i32 %1402, 0
  br i1 %1403, label %1404, label %1416

1404:                                             ; preds = %1398
  %1405 = load i32, ptr %18, align 4, !tbaa !9
  %1406 = and i32 %1405, 4096
  %1407 = icmp ne i32 %1406, 0
  br i1 %1407, label %1416, label %1408

1408:                                             ; preds = %1404
  %1409 = load i8, ptr %39, align 1, !tbaa !11
  %1410 = sext i8 %1409 to i32
  %1411 = add nsw i32 %1410, 1
  %1412 = sext i32 %1411 to i64
  %1413 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 %1412
  store i8 105, ptr %1413, align 1, !tbaa !11
  %1414 = load i8, ptr %39, align 1, !tbaa !11
  %1415 = add i8 %1414, 1
  store i8 %1415, ptr %39, align 1, !tbaa !11
  br label %1416

1416:                                             ; preds = %1408, %1404, %1398
  %1417 = load i8, ptr %39, align 1, !tbaa !11
  %1418 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 0
  store i8 %1417, ptr %1418, align 1, !tbaa !11
  br label %1419

1419:                                             ; preds = %1416, %1365
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #3
  br label %1420

1420:                                             ; preds = %1419, %1356
  br label %1421

1421:                                             ; preds = %1420, %1004
  %1422 = load ptr, ptr %26, align 8, !tbaa !5
  %1423 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %1424 = getelementptr inbounds i8, ptr %1423, i64 64
  %1425 = ptrtoint ptr %1422 to i64
  %1426 = ptrtoint ptr %1424 to i64
  %1427 = sub i64 %1425, %1426
  %1428 = trunc i64 %1427 to i32
  store i32 %1428, ptr %28, align 4, !tbaa !9
  %1429 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %1430 = getelementptr inbounds i8, ptr %1429, i64 64
  store ptr %1430, ptr %26, align 8, !tbaa !5
  br label %1825

1431:                                             ; preds = %426
  store ptr @_ZZ16stbsp_vsprintfcbE4hexu, ptr %27, align 8, !tbaa !5
  br label %1433

1432:                                             ; preds = %426
  store ptr @_ZZ16stbsp_vsprintfcbE3hex, ptr %27, align 8, !tbaa !5
  br label %1433

1433:                                             ; preds = %1432, %1431
  %1434 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  store i8 0, ptr %1434, align 1, !tbaa !11
  %1435 = load i32, ptr %18, align 4, !tbaa !9
  %1436 = and i32 %1435, 8
  %1437 = icmp ne i32 %1436, 0
  br i1 %1437, label %1438, label %1445

1438:                                             ; preds = %1433
  %1439 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  store i8 2, ptr %1439, align 1, !tbaa !11
  %1440 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 1
  store i8 48, ptr %1440, align 1, !tbaa !11
  %1441 = load ptr, ptr %27, align 8, !tbaa !5
  %1442 = getelementptr inbounds i8, ptr %1441, i64 11
  %1443 = load i8, ptr %1442, align 1, !tbaa !11
  %1444 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 2
  store i8 %1443, ptr %1444, align 1, !tbaa !11
  br label %1445

1445:                                             ; preds = %1438, %1433
  store i32 384, ptr %28, align 4, !tbaa !9
  br label %1475

1446:                                             ; preds = %426
  store ptr @_ZZ16stbsp_vsprintfcbE4hexu, ptr %27, align 8, !tbaa !5
  %1447 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  store i8 0, ptr %1447, align 1, !tbaa !11
  %1448 = load i32, ptr %18, align 4, !tbaa !9
  %1449 = and i32 %1448, 8
  %1450 = icmp ne i32 %1449, 0
  br i1 %1450, label %1451, label %1454

1451:                                             ; preds = %1446
  %1452 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  store i8 1, ptr %1452, align 1, !tbaa !11
  %1453 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 1
  store i8 48, ptr %1453, align 1, !tbaa !11
  br label %1454

1454:                                             ; preds = %1451, %1446
  store i32 816, ptr %28, align 4, !tbaa !9
  br label %1475

1455:                                             ; preds = %426
  %1456 = load i32, ptr %18, align 4, !tbaa !9
  %1457 = or i32 %1456, 32
  store i32 %1457, ptr %18, align 4, !tbaa !9
  store i32 16, ptr %16, align 4, !tbaa !9
  %1458 = load i32, ptr %18, align 4, !tbaa !9
  %1459 = and i32 %1458, -17
  store i32 %1459, ptr %18, align 4, !tbaa !9
  br label %1460

1460:                                             ; preds = %1455, %426
  store ptr @_ZZ16stbsp_vsprintfcbE4hexu, ptr %27, align 8, !tbaa !5
  br label %1462

1461:                                             ; preds = %426
  store ptr @_ZZ16stbsp_vsprintfcbE3hex, ptr %27, align 8, !tbaa !5
  br label %1462

1462:                                             ; preds = %1461, %1460
  store i32 1088, ptr %28, align 4, !tbaa !9
  %1463 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  store i8 0, ptr %1463, align 1, !tbaa !11
  %1464 = load i32, ptr %18, align 4, !tbaa !9
  %1465 = and i32 %1464, 8
  %1466 = icmp ne i32 %1465, 0
  br i1 %1466, label %1467, label %1474

1467:                                             ; preds = %1462
  %1468 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  store i8 2, ptr %1468, align 1, !tbaa !11
  %1469 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 1
  store i8 48, ptr %1469, align 1, !tbaa !11
  %1470 = load ptr, ptr %27, align 8, !tbaa !5
  %1471 = getelementptr inbounds i8, ptr %1470, i64 16
  %1472 = load i8, ptr %1471, align 1, !tbaa !11
  %1473 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 2
  store i8 %1472, ptr %1473, align 1, !tbaa !11
  br label %1474

1474:                                             ; preds = %1467, %1462
  br label %1475

1475:                                             ; preds = %1474, %1454, %1445
  %1476 = load i32, ptr %18, align 4, !tbaa !9
  %1477 = and i32 %1476, 32
  %1478 = icmp ne i32 %1477, 0
  br i1 %1478, label %1479, label %1496

1479:                                             ; preds = %1475
  %1480 = load ptr, ptr %11, align 8, !tbaa !5
  %1481 = getelementptr inbounds %struct.__va_list_tag, ptr %1480, i32 0, i32 0
  %1482 = load i32, ptr %1481, align 8
  %1483 = icmp ule i32 %1482, 40
  br i1 %1483, label %1484, label %1489

1484:                                             ; preds = %1479
  %1485 = getelementptr inbounds %struct.__va_list_tag, ptr %1480, i32 0, i32 3
  %1486 = load ptr, ptr %1485, align 8
  %1487 = getelementptr i8, ptr %1486, i32 %1482
  %1488 = add i32 %1482, 8
  store i32 %1488, ptr %1481, align 8
  br label %1493

1489:                                             ; preds = %1479
  %1490 = getelementptr inbounds %struct.__va_list_tag, ptr %1480, i32 0, i32 2
  %1491 = load ptr, ptr %1490, align 8
  %1492 = getelementptr i8, ptr %1491, i32 8
  store ptr %1492, ptr %1490, align 8
  br label %1493

1493:                                             ; preds = %1489, %1484
  %1494 = phi ptr [ %1487, %1484 ], [ %1491, %1489 ]
  %1495 = load i64, ptr %1494, align 8, !tbaa !22
  store i64 %1495, ptr %31, align 8, !tbaa !22
  br label %1514

1496:                                             ; preds = %1475
  %1497 = load ptr, ptr %11, align 8, !tbaa !5
  %1498 = getelementptr inbounds %struct.__va_list_tag, ptr %1497, i32 0, i32 0
  %1499 = load i32, ptr %1498, align 8
  %1500 = icmp ule i32 %1499, 40
  br i1 %1500, label %1501, label %1506

1501:                                             ; preds = %1496
  %1502 = getelementptr inbounds %struct.__va_list_tag, ptr %1497, i32 0, i32 3
  %1503 = load ptr, ptr %1502, align 8
  %1504 = getelementptr i8, ptr %1503, i32 %1499
  %1505 = add i32 %1499, 8
  store i32 %1505, ptr %1498, align 8
  br label %1510

1506:                                             ; preds = %1496
  %1507 = getelementptr inbounds %struct.__va_list_tag, ptr %1497, i32 0, i32 2
  %1508 = load ptr, ptr %1507, align 8
  %1509 = getelementptr i8, ptr %1508, i32 8
  store ptr %1509, ptr %1507, align 8
  br label %1510

1510:                                             ; preds = %1506, %1501
  %1511 = phi ptr [ %1504, %1501 ], [ %1508, %1506 ]
  %1512 = load i32, ptr %1511, align 4, !tbaa !9
  %1513 = zext i32 %1512 to i64
  store i64 %1513, ptr %31, align 8, !tbaa !22
  br label %1514

1514:                                             ; preds = %1510, %1493
  %1515 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %1516 = getelementptr inbounds i8, ptr %1515, i64 512
  store ptr %1516, ptr %26, align 8, !tbaa !5
  store i32 0, ptr %33, align 4, !tbaa !9
  %1517 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 0
  store i8 0, ptr %1517, align 1, !tbaa !11
  %1518 = load i64, ptr %31, align 8, !tbaa !22
  %1519 = icmp eq i64 %1518, 0
  br i1 %1519, label %1520, label %1530

1520:                                             ; preds = %1514
  %1521 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  store i8 0, ptr %1521, align 1, !tbaa !11
  %1522 = load i32, ptr %16, align 4, !tbaa !9
  %1523 = icmp eq i32 %1522, 0
  br i1 %1523, label %1524, label %1529

1524:                                             ; preds = %1520
  store i32 0, ptr %28, align 4, !tbaa !9
  %1525 = load i32, ptr %28, align 4, !tbaa !9
  %1526 = lshr i32 %1525, 4
  %1527 = and i32 %1526, 15
  %1528 = shl i32 %1527, 24
  store i32 %1528, ptr %30, align 4, !tbaa !9
  br label %1825

1529:                                             ; preds = %1520
  br label %1530

1530:                                             ; preds = %1529, %1514
  br label %1531

1531:                                             ; preds = %1582, %1530
  %1532 = load ptr, ptr %27, align 8, !tbaa !5
  %1533 = load i64, ptr %31, align 8, !tbaa !22
  %1534 = load i32, ptr %28, align 4, !tbaa !9
  %1535 = lshr i32 %1534, 8
  %1536 = shl i32 1, %1535
  %1537 = sub nsw i32 %1536, 1
  %1538 = sext i32 %1537 to i64
  %1539 = and i64 %1533, %1538
  %1540 = getelementptr inbounds i8, ptr %1532, i64 %1539
  %1541 = load i8, ptr %1540, align 1, !tbaa !11
  %1542 = load ptr, ptr %26, align 8, !tbaa !5
  %1543 = getelementptr inbounds i8, ptr %1542, i32 -1
  store ptr %1543, ptr %26, align 8, !tbaa !5
  store i8 %1541, ptr %1543, align 1, !tbaa !11
  %1544 = load i32, ptr %28, align 4, !tbaa !9
  %1545 = lshr i32 %1544, 8
  %1546 = load i64, ptr %31, align 8, !tbaa !22
  %1547 = zext i32 %1545 to i64
  %1548 = lshr i64 %1546, %1547
  store i64 %1548, ptr %31, align 8, !tbaa !22
  %1549 = load i64, ptr %31, align 8, !tbaa !22
  %1550 = icmp ne i64 %1549, 0
  br i1 %1550, label %1562, label %1551

1551:                                             ; preds = %1531
  %1552 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %1553 = getelementptr inbounds i8, ptr %1552, i64 512
  %1554 = load ptr, ptr %26, align 8, !tbaa !5
  %1555 = ptrtoint ptr %1553 to i64
  %1556 = ptrtoint ptr %1554 to i64
  %1557 = sub i64 %1555, %1556
  %1558 = trunc i64 %1557 to i32
  %1559 = load i32, ptr %16, align 4, !tbaa !9
  %1560 = icmp slt i32 %1558, %1559
  br i1 %1560, label %1562, label %1561

1561:                                             ; preds = %1551
  br label %1583

1562:                                             ; preds = %1551, %1531
  %1563 = load i32, ptr %18, align 4, !tbaa !9
  %1564 = and i32 %1563, 64
  %1565 = icmp ne i32 %1564, 0
  br i1 %1565, label %1566, label %1582

1566:                                             ; preds = %1562
  %1567 = load i32, ptr %28, align 4, !tbaa !9
  %1568 = add i32 %1567, 1
  store i32 %1568, ptr %28, align 4, !tbaa !9
  %1569 = load i32, ptr %28, align 4, !tbaa !9
  %1570 = and i32 %1569, 15
  %1571 = load i32, ptr %28, align 4, !tbaa !9
  %1572 = lshr i32 %1571, 4
  %1573 = and i32 %1572, 15
  %1574 = icmp eq i32 %1570, %1573
  br i1 %1574, label %1575, label %1581

1575:                                             ; preds = %1566
  %1576 = load i32, ptr %28, align 4, !tbaa !9
  %1577 = and i32 %1576, -16
  store i32 %1577, ptr %28, align 4, !tbaa !9
  %1578 = load i8, ptr @_ZL12stbsp__comma, align 1, !tbaa !11
  %1579 = load ptr, ptr %26, align 8, !tbaa !5
  %1580 = getelementptr inbounds i8, ptr %1579, i32 -1
  store ptr %1580, ptr %26, align 8, !tbaa !5
  store i8 %1578, ptr %1580, align 1, !tbaa !11
  br label %1581

1581:                                             ; preds = %1575, %1566
  br label %1582

1582:                                             ; preds = %1581, %1562
  br label %1531, !llvm.loop !40

1583:                                             ; preds = %1561
  %1584 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %1585 = getelementptr inbounds i8, ptr %1584, i64 512
  %1586 = load ptr, ptr %26, align 8, !tbaa !5
  %1587 = ptrtoint ptr %1585 to i64
  %1588 = ptrtoint ptr %1586 to i64
  %1589 = sub i64 %1587, %1588
  %1590 = trunc i64 %1589 to i32
  %1591 = load i32, ptr %28, align 4, !tbaa !9
  %1592 = lshr i32 %1591, 4
  %1593 = and i32 %1592, 15
  %1594 = shl i32 %1593, 24
  %1595 = add i32 %1590, %1594
  store i32 %1595, ptr %30, align 4, !tbaa !9
  %1596 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %1597 = getelementptr inbounds i8, ptr %1596, i64 512
  %1598 = load ptr, ptr %26, align 8, !tbaa !5
  %1599 = ptrtoint ptr %1597 to i64
  %1600 = ptrtoint ptr %1598 to i64
  %1601 = sub i64 %1599, %1600
  %1602 = trunc i64 %1601 to i32
  store i32 %1602, ptr %28, align 4, !tbaa !9
  br label %1825

1603:                                             ; preds = %426, %426, %426
  %1604 = load i32, ptr %18, align 4, !tbaa !9
  %1605 = and i32 %1604, 32
  %1606 = icmp ne i32 %1605, 0
  br i1 %1606, label %1607, label %1639

1607:                                             ; preds = %1603
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #3
  %1608 = load ptr, ptr %11, align 8, !tbaa !5
  %1609 = getelementptr inbounds %struct.__va_list_tag, ptr %1608, i32 0, i32 0
  %1610 = load i32, ptr %1609, align 8
  %1611 = icmp ule i32 %1610, 40
  br i1 %1611, label %1612, label %1617

1612:                                             ; preds = %1607
  %1613 = getelementptr inbounds %struct.__va_list_tag, ptr %1608, i32 0, i32 3
  %1614 = load ptr, ptr %1613, align 8
  %1615 = getelementptr i8, ptr %1614, i32 %1610
  %1616 = add i32 %1610, 8
  store i32 %1616, ptr %1609, align 8
  br label %1621

1617:                                             ; preds = %1607
  %1618 = getelementptr inbounds %struct.__va_list_tag, ptr %1608, i32 0, i32 2
  %1619 = load ptr, ptr %1618, align 8
  %1620 = getelementptr i8, ptr %1619, i32 8
  store ptr %1620, ptr %1618, align 8
  br label %1621

1621:                                             ; preds = %1617, %1612
  %1622 = phi ptr [ %1615, %1612 ], [ %1619, %1617 ]
  %1623 = load i64, ptr %1622, align 8, !tbaa !22
  store i64 %1623, ptr %40, align 8, !tbaa !22
  %1624 = load i64, ptr %40, align 8, !tbaa !22
  store i64 %1624, ptr %31, align 8, !tbaa !22
  %1625 = load ptr, ptr %13, align 8, !tbaa !5
  %1626 = getelementptr inbounds i8, ptr %1625, i64 0
  %1627 = load i8, ptr %1626, align 1, !tbaa !11
  %1628 = sext i8 %1627 to i32
  %1629 = icmp ne i32 %1628, 117
  br i1 %1629, label %1630, label %1638

1630:                                             ; preds = %1621
  %1631 = load i64, ptr %40, align 8, !tbaa !22
  %1632 = icmp slt i64 %1631, 0
  br i1 %1632, label %1633, label %1638

1633:                                             ; preds = %1630
  %1634 = load i64, ptr %40, align 8, !tbaa !22
  %1635 = sub nsw i64 0, %1634
  store i64 %1635, ptr %31, align 8, !tbaa !22
  %1636 = load i32, ptr %18, align 4, !tbaa !9
  %1637 = or i32 %1636, 128
  store i32 %1637, ptr %18, align 4, !tbaa !9
  br label %1638

1638:                                             ; preds = %1633, %1630, %1621
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #3
  br label %1673

1639:                                             ; preds = %1603
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #3
  %1640 = load ptr, ptr %11, align 8, !tbaa !5
  %1641 = getelementptr inbounds %struct.__va_list_tag, ptr %1640, i32 0, i32 0
  %1642 = load i32, ptr %1641, align 8
  %1643 = icmp ule i32 %1642, 40
  br i1 %1643, label %1644, label %1649

1644:                                             ; preds = %1639
  %1645 = getelementptr inbounds %struct.__va_list_tag, ptr %1640, i32 0, i32 3
  %1646 = load ptr, ptr %1645, align 8
  %1647 = getelementptr i8, ptr %1646, i32 %1642
  %1648 = add i32 %1642, 8
  store i32 %1648, ptr %1641, align 8
  br label %1653

1649:                                             ; preds = %1639
  %1650 = getelementptr inbounds %struct.__va_list_tag, ptr %1640, i32 0, i32 2
  %1651 = load ptr, ptr %1650, align 8
  %1652 = getelementptr i8, ptr %1651, i32 8
  store ptr %1652, ptr %1650, align 8
  br label %1653

1653:                                             ; preds = %1649, %1644
  %1654 = phi ptr [ %1647, %1644 ], [ %1651, %1649 ]
  %1655 = load i32, ptr %1654, align 4, !tbaa !9
  store i32 %1655, ptr %41, align 4, !tbaa !9
  %1656 = load i32, ptr %41, align 4, !tbaa !9
  %1657 = zext i32 %1656 to i64
  store i64 %1657, ptr %31, align 8, !tbaa !22
  %1658 = load ptr, ptr %13, align 8, !tbaa !5
  %1659 = getelementptr inbounds i8, ptr %1658, i64 0
  %1660 = load i8, ptr %1659, align 1, !tbaa !11
  %1661 = sext i8 %1660 to i32
  %1662 = icmp ne i32 %1661, 117
  br i1 %1662, label %1663, label %1672

1663:                                             ; preds = %1653
  %1664 = load i32, ptr %41, align 4, !tbaa !9
  %1665 = icmp slt i32 %1664, 0
  br i1 %1665, label %1666, label %1672

1666:                                             ; preds = %1663
  %1667 = load i32, ptr %41, align 4, !tbaa !9
  %1668 = sub nsw i32 0, %1667
  %1669 = zext i32 %1668 to i64
  store i64 %1669, ptr %31, align 8, !tbaa !22
  %1670 = load i32, ptr %18, align 4, !tbaa !9
  %1671 = or i32 %1670, 128
  store i32 %1671, ptr %18, align 4, !tbaa !9
  br label %1672

1672:                                             ; preds = %1666, %1663, %1653
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #3
  br label %1673

1673:                                             ; preds = %1672, %1638
  %1674 = load i32, ptr %18, align 4, !tbaa !9
  %1675 = and i32 %1674, 256
  %1676 = icmp ne i32 %1675, 0
  br i1 %1676, label %1677, label %1689

1677:                                             ; preds = %1673
  %1678 = load i64, ptr %31, align 8, !tbaa !22
  %1679 = icmp ult i64 %1678, 1024
  br i1 %1679, label %1680, label %1681

1680:                                             ; preds = %1677
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %1686

1681:                                             ; preds = %1677
  %1682 = load i32, ptr %16, align 4, !tbaa !9
  %1683 = icmp eq i32 %1682, -1
  br i1 %1683, label %1684, label %1685

1684:                                             ; preds = %1681
  store i32 1, ptr %16, align 4, !tbaa !9
  br label %1685

1685:                                             ; preds = %1684, %1681
  br label %1686

1686:                                             ; preds = %1685, %1680
  %1687 = load i64, ptr %31, align 8, !tbaa !22
  %1688 = sitofp i64 %1687 to double
  store double %1688, ptr %32, align 8, !tbaa !20
  br label %1022

1689:                                             ; preds = %1673
  %1690 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %1691 = getelementptr inbounds i8, ptr %1690, i64 512
  store ptr %1691, ptr %26, align 8, !tbaa !5
  store i32 0, ptr %28, align 4, !tbaa !9
  br label %1692

1692:                                             ; preds = %1801, %1689
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #3
  %1693 = load ptr, ptr %26, align 8, !tbaa !5
  %1694 = getelementptr inbounds i8, ptr %1693, i64 -8
  store ptr %1694, ptr %42, align 8, !tbaa !5
  %1695 = load i64, ptr %31, align 8, !tbaa !22
  %1696 = icmp uge i64 %1695, 100000000
  br i1 %1696, label %1697, label %1703

1697:                                             ; preds = %1692
  %1698 = load i64, ptr %31, align 8, !tbaa !22
  %1699 = urem i64 %1698, 100000000
  %1700 = trunc i64 %1699 to i32
  store i32 %1700, ptr %29, align 4, !tbaa !9
  %1701 = load i64, ptr %31, align 8, !tbaa !22
  %1702 = udiv i64 %1701, 100000000
  store i64 %1702, ptr %31, align 8, !tbaa !22
  br label %1706

1703:                                             ; preds = %1692
  %1704 = load i64, ptr %31, align 8, !tbaa !22
  %1705 = trunc i64 %1704 to i32
  store i32 %1705, ptr %29, align 4, !tbaa !9
  store i64 0, ptr %31, align 8, !tbaa !22
  br label %1706

1706:                                             ; preds = %1703, %1697
  %1707 = load i32, ptr %18, align 4, !tbaa !9
  %1708 = and i32 %1707, 64
  %1709 = icmp eq i32 %1708, 0
  br i1 %1709, label %1710, label %1727

1710:                                             ; preds = %1706
  br label %1711

1711:                                             ; preds = %1714, %1710
  %1712 = load i32, ptr %29, align 4, !tbaa !9
  %1713 = icmp ne i32 %1712, 0
  br i1 %1713, label %1714, label %1726

1714:                                             ; preds = %1711
  %1715 = load ptr, ptr %26, align 8, !tbaa !5
  %1716 = getelementptr inbounds i8, ptr %1715, i64 -2
  store ptr %1716, ptr %26, align 8, !tbaa !5
  %1717 = load i32, ptr %29, align 4, !tbaa !9
  %1718 = urem i32 %1717, 100
  %1719 = mul i32 %1718, 2
  %1720 = zext i32 %1719 to i64
  %1721 = getelementptr inbounds [201 x i8], ptr @_ZL16stbsp__digitpair, i64 0, i64 %1720
  %1722 = load i16, ptr %1721, align 1, !tbaa !41
  %1723 = load ptr, ptr %26, align 8, !tbaa !5
  store i16 %1722, ptr %1723, align 2, !tbaa !41
  %1724 = load i32, ptr %29, align 4, !tbaa !9
  %1725 = udiv i32 %1724, 100
  store i32 %1725, ptr %29, align 4, !tbaa !9
  br label %1711, !llvm.loop !43

1726:                                             ; preds = %1711
  br label %1727

1727:                                             ; preds = %1726, %1706
  br label %1728

1728:                                             ; preds = %1756, %1727
  %1729 = load i32, ptr %29, align 4, !tbaa !9
  %1730 = icmp ne i32 %1729, 0
  br i1 %1730, label %1731, label %1757

1731:                                             ; preds = %1728
  %1732 = load i32, ptr %18, align 4, !tbaa !9
  %1733 = and i32 %1732, 64
  %1734 = icmp ne i32 %1733, 0
  br i1 %1734, label %1735, label %1745

1735:                                             ; preds = %1731
  %1736 = load i32, ptr %28, align 4, !tbaa !9
  %1737 = add i32 %1736, 1
  store i32 %1737, ptr %28, align 4, !tbaa !9
  %1738 = icmp eq i32 %1736, 3
  br i1 %1738, label %1739, label %1745

1739:                                             ; preds = %1735
  store i32 0, ptr %28, align 4, !tbaa !9
  %1740 = load i8, ptr @_ZL12stbsp__comma, align 1, !tbaa !11
  %1741 = load ptr, ptr %26, align 8, !tbaa !5
  %1742 = getelementptr inbounds i8, ptr %1741, i32 -1
  store ptr %1742, ptr %26, align 8, !tbaa !5
  store i8 %1740, ptr %1742, align 1, !tbaa !11
  %1743 = load ptr, ptr %42, align 8, !tbaa !5
  %1744 = getelementptr inbounds i8, ptr %1743, i32 -1
  store ptr %1744, ptr %42, align 8, !tbaa !5
  br label %1756

1745:                                             ; preds = %1735, %1731
  %1746 = load i32, ptr %29, align 4, !tbaa !9
  %1747 = urem i32 %1746, 10
  %1748 = trunc i32 %1747 to i8
  %1749 = sext i8 %1748 to i32
  %1750 = add nsw i32 %1749, 48
  %1751 = trunc i32 %1750 to i8
  %1752 = load ptr, ptr %26, align 8, !tbaa !5
  %1753 = getelementptr inbounds i8, ptr %1752, i32 -1
  store ptr %1753, ptr %26, align 8, !tbaa !5
  store i8 %1751, ptr %1753, align 1, !tbaa !11
  %1754 = load i32, ptr %29, align 4, !tbaa !9
  %1755 = udiv i32 %1754, 10
  store i32 %1755, ptr %29, align 4, !tbaa !9
  br label %1756

1756:                                             ; preds = %1745, %1739
  br label %1728, !llvm.loop !44

1757:                                             ; preds = %1728
  %1758 = load i64, ptr %31, align 8, !tbaa !22
  %1759 = icmp eq i64 %1758, 0
  br i1 %1759, label %1760, label %1775

1760:                                             ; preds = %1757
  %1761 = load ptr, ptr %26, align 8, !tbaa !5
  %1762 = getelementptr inbounds i8, ptr %1761, i64 0
  %1763 = load i8, ptr %1762, align 1, !tbaa !11
  %1764 = sext i8 %1763 to i32
  %1765 = icmp eq i32 %1764, 48
  br i1 %1765, label %1766, label %1774

1766:                                             ; preds = %1760
  %1767 = load ptr, ptr %26, align 8, !tbaa !5
  %1768 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %1769 = getelementptr inbounds i8, ptr %1768, i64 512
  %1770 = icmp ne ptr %1767, %1769
  br i1 %1770, label %1771, label %1774

1771:                                             ; preds = %1766
  %1772 = load ptr, ptr %26, align 8, !tbaa !5
  %1773 = getelementptr inbounds i8, ptr %1772, i32 1
  store ptr %1773, ptr %26, align 8, !tbaa !5
  br label %1774

1774:                                             ; preds = %1771, %1766, %1760
  store i32 77, ptr %20, align 4
  br label %1799

1775:                                             ; preds = %1757
  br label %1776

1776:                                             ; preds = %1797, %1775
  %1777 = load ptr, ptr %26, align 8, !tbaa !5
  %1778 = load ptr, ptr %42, align 8, !tbaa !5
  %1779 = icmp ne ptr %1777, %1778
  br i1 %1779, label %1780, label %1798

1780:                                             ; preds = %1776
  %1781 = load i32, ptr %18, align 4, !tbaa !9
  %1782 = and i32 %1781, 64
  %1783 = icmp ne i32 %1782, 0
  br i1 %1783, label %1784, label %1794

1784:                                             ; preds = %1780
  %1785 = load i32, ptr %28, align 4, !tbaa !9
  %1786 = add i32 %1785, 1
  store i32 %1786, ptr %28, align 4, !tbaa !9
  %1787 = icmp eq i32 %1785, 3
  br i1 %1787, label %1788, label %1794

1788:                                             ; preds = %1784
  store i32 0, ptr %28, align 4, !tbaa !9
  %1789 = load i8, ptr @_ZL12stbsp__comma, align 1, !tbaa !11
  %1790 = load ptr, ptr %26, align 8, !tbaa !5
  %1791 = getelementptr inbounds i8, ptr %1790, i32 -1
  store ptr %1791, ptr %26, align 8, !tbaa !5
  store i8 %1789, ptr %1791, align 1, !tbaa !11
  %1792 = load ptr, ptr %42, align 8, !tbaa !5
  %1793 = getelementptr inbounds i8, ptr %1792, i32 -1
  store ptr %1793, ptr %42, align 8, !tbaa !5
  br label %1797

1794:                                             ; preds = %1784, %1780
  %1795 = load ptr, ptr %26, align 8, !tbaa !5
  %1796 = getelementptr inbounds i8, ptr %1795, i32 -1
  store ptr %1796, ptr %26, align 8, !tbaa !5
  store i8 48, ptr %1796, align 1, !tbaa !11
  br label %1797

1797:                                             ; preds = %1794, %1788
  br label %1776, !llvm.loop !45

1798:                                             ; preds = %1776
  store i32 0, ptr %20, align 4
  br label %1799

1799:                                             ; preds = %1798, %1774
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #3
  %1800 = load i32, ptr %20, align 4
  switch i32 %1800, label %2680 [
    i32 0, label %1801
    i32 77, label %1802
  ]

1801:                                             ; preds = %1799
  br label %1692, !llvm.loop !46

1802:                                             ; preds = %1799
  %1803 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 0
  store i8 0, ptr %1803, align 1, !tbaa !11
  %1804 = load i32, ptr %18, align 4, !tbaa !9
  %1805 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  call void @_ZL16stbsp__lead_signjPc(i32 noundef %1804, ptr noundef %1805)
  %1806 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %1807 = getelementptr inbounds i8, ptr %1806, i64 512
  %1808 = load ptr, ptr %26, align 8, !tbaa !5
  %1809 = ptrtoint ptr %1807 to i64
  %1810 = ptrtoint ptr %1808 to i64
  %1811 = sub i64 %1809, %1810
  %1812 = trunc i64 %1811 to i32
  store i32 %1812, ptr %28, align 4, !tbaa !9
  %1813 = load i32, ptr %28, align 4, !tbaa !9
  %1814 = icmp eq i32 %1813, 0
  br i1 %1814, label %1815, label %1818

1815:                                             ; preds = %1802
  %1816 = load ptr, ptr %26, align 8, !tbaa !5
  %1817 = getelementptr inbounds i8, ptr %1816, i32 -1
  store ptr %1817, ptr %26, align 8, !tbaa !5
  store i8 48, ptr %1817, align 1, !tbaa !11
  store i32 1, ptr %28, align 4, !tbaa !9
  br label %1818

1818:                                             ; preds = %1815, %1802
  %1819 = load i32, ptr %28, align 4, !tbaa !9
  %1820 = add i32 %1819, 50331648
  store i32 %1820, ptr %30, align 4, !tbaa !9
  %1821 = load i32, ptr %16, align 4, !tbaa !9
  %1822 = icmp slt i32 %1821, 0
  br i1 %1822, label %1823, label %1824

1823:                                             ; preds = %1818
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %1824

1824:                                             ; preds = %1823, %1818
  br label %1825

1825:                                             ; preds = %2621, %1824, %1583, %1524, %1421, %1072, %921, %748, %546, %526
  %1826 = load i32, ptr %16, align 4, !tbaa !9
  %1827 = load i32, ptr %28, align 4, !tbaa !9
  %1828 = icmp slt i32 %1826, %1827
  br i1 %1828, label %1829, label %1831

1829:                                             ; preds = %1825
  %1830 = load i32, ptr %28, align 4, !tbaa !9
  store i32 %1830, ptr %16, align 4, !tbaa !9
  br label %1831

1831:                                             ; preds = %1829, %1825
  %1832 = load i32, ptr %16, align 4, !tbaa !9
  %1833 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  %1834 = load i8, ptr %1833, align 1, !tbaa !11
  %1835 = sext i8 %1834 to i32
  %1836 = add nsw i32 %1832, %1835
  %1837 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 0
  %1838 = load i8, ptr %1837, align 1, !tbaa !11
  %1839 = sext i8 %1838 to i32
  %1840 = add nsw i32 %1836, %1839
  %1841 = load i32, ptr %17, align 4, !tbaa !9
  %1842 = add nsw i32 %1840, %1841
  store i32 %1842, ptr %29, align 4, !tbaa !9
  %1843 = load i32, ptr %15, align 4, !tbaa !9
  %1844 = load i32, ptr %29, align 4, !tbaa !9
  %1845 = icmp slt i32 %1843, %1844
  br i1 %1845, label %1846, label %1848

1846:                                             ; preds = %1831
  %1847 = load i32, ptr %29, align 4, !tbaa !9
  store i32 %1847, ptr %15, align 4, !tbaa !9
  br label %1848

1848:                                             ; preds = %1846, %1831
  %1849 = load i32, ptr %29, align 4, !tbaa !9
  %1850 = load i32, ptr %15, align 4, !tbaa !9
  %1851 = sub i32 %1850, %1849
  store i32 %1851, ptr %15, align 4, !tbaa !9
  %1852 = load i32, ptr %28, align 4, !tbaa !9
  %1853 = load i32, ptr %16, align 4, !tbaa !9
  %1854 = sub i32 %1853, %1852
  store i32 %1854, ptr %16, align 4, !tbaa !9
  %1855 = load i32, ptr %18, align 4, !tbaa !9
  %1856 = and i32 %1855, 1
  %1857 = icmp eq i32 %1856, 0
  br i1 %1857, label %1858, label %1876

1858:                                             ; preds = %1848
  %1859 = load i32, ptr %18, align 4, !tbaa !9
  %1860 = and i32 %1859, 16
  %1861 = icmp ne i32 %1860, 0
  br i1 %1861, label %1862, label %1872

1862:                                             ; preds = %1858
  %1863 = load i32, ptr %15, align 4, !tbaa !9
  %1864 = load i32, ptr %16, align 4, !tbaa !9
  %1865 = icmp sgt i32 %1863, %1864
  br i1 %1865, label %1866, label %1868

1866:                                             ; preds = %1862
  %1867 = load i32, ptr %15, align 4, !tbaa !9
  br label %1870

1868:                                             ; preds = %1862
  %1869 = load i32, ptr %16, align 4, !tbaa !9
  br label %1870

1870:                                             ; preds = %1868, %1866
  %1871 = phi i32 [ %1867, %1866 ], [ %1869, %1868 ]
  store i32 %1871, ptr %16, align 4, !tbaa !9
  store i32 0, ptr %15, align 4, !tbaa !9
  br label %1875

1872:                                             ; preds = %1858
  %1873 = load i32, ptr %18, align 4, !tbaa !9
  %1874 = and i32 %1873, -65
  store i32 %1874, ptr %18, align 4, !tbaa !9
  br label %1875

1875:                                             ; preds = %1872, %1870
  br label %1876

1876:                                             ; preds = %1875, %1848
  %1877 = load i32, ptr %15, align 4, !tbaa !9
  %1878 = load i32, ptr %16, align 4, !tbaa !9
  %1879 = add nsw i32 %1877, %1878
  %1880 = icmp ne i32 %1879, 0
  br i1 %1880, label %1881, label %2183

1881:                                             ; preds = %1876
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #3
  %1882 = load i32, ptr %18, align 4, !tbaa !9
  %1883 = and i32 %1882, 1
  %1884 = icmp eq i32 %1883, 0
  br i1 %1884, label %1885, label %1975

1885:                                             ; preds = %1881
  br label %1886

1886:                                             ; preds = %1973, %1885
  %1887 = load i32, ptr %15, align 4, !tbaa !9
  %1888 = icmp sgt i32 %1887, 0
  br i1 %1888, label %1889, label %1974

1889:                                             ; preds = %1886
  %1890 = load i32, ptr %15, align 4, !tbaa !9
  store i32 %1890, ptr %43, align 4, !tbaa !9
  %1891 = load ptr, ptr %7, align 8, !tbaa !5
  %1892 = icmp ne ptr %1891, null
  br i1 %1892, label %1893, label %1907

1893:                                             ; preds = %1889
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #3
  %1894 = load ptr, ptr %12, align 8, !tbaa !5
  %1895 = load ptr, ptr %9, align 8, !tbaa !5
  %1896 = ptrtoint ptr %1894 to i64
  %1897 = ptrtoint ptr %1895 to i64
  %1898 = sub i64 %1896, %1897
  %1899 = trunc i64 %1898 to i32
  %1900 = sub nsw i32 512, %1899
  store i32 %1900, ptr %45, align 4, !tbaa !9
  %1901 = load i32, ptr %43, align 4, !tbaa !9
  %1902 = load i32, ptr %45, align 4, !tbaa !9
  %1903 = icmp sgt i32 %1901, %1902
  br i1 %1903, label %1904, label %1906

1904:                                             ; preds = %1893
  %1905 = load i32, ptr %45, align 4, !tbaa !9
  store i32 %1905, ptr %43, align 4, !tbaa !9
  br label %1906

1906:                                             ; preds = %1904, %1893
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #3
  br label %1907

1907:                                             ; preds = %1906, %1889
  %1908 = load i32, ptr %43, align 4, !tbaa !9
  %1909 = load i32, ptr %15, align 4, !tbaa !9
  %1910 = sub nsw i32 %1909, %1908
  store i32 %1910, ptr %15, align 4, !tbaa !9
  br label %1911

1911:                                             ; preds = %1920, %1907
  %1912 = load i32, ptr %43, align 4, !tbaa !9
  %1913 = icmp ne i32 %1912, 0
  br i1 %1913, label %1914, label %1925

1914:                                             ; preds = %1911
  %1915 = load ptr, ptr %12, align 8, !tbaa !5
  %1916 = ptrtoint ptr %1915 to i64
  %1917 = and i64 %1916, 3
  %1918 = icmp eq i64 %1917, 0
  br i1 %1918, label %1919, label %1920

1919:                                             ; preds = %1914
  br label %1925

1920:                                             ; preds = %1914
  %1921 = load ptr, ptr %12, align 8, !tbaa !5
  %1922 = getelementptr inbounds i8, ptr %1921, i32 1
  store ptr %1922, ptr %12, align 8, !tbaa !5
  store i8 32, ptr %1921, align 1, !tbaa !11
  %1923 = load i32, ptr %43, align 4, !tbaa !9
  %1924 = add nsw i32 %1923, -1
  store i32 %1924, ptr %43, align 4, !tbaa !9
  br label %1911, !llvm.loop !47

1925:                                             ; preds = %1919, %1911
  br label %1926

1926:                                             ; preds = %1929, %1925
  %1927 = load i32, ptr %43, align 4, !tbaa !9
  %1928 = icmp sge i32 %1927, 4
  br i1 %1928, label %1929, label %1935

1929:                                             ; preds = %1926
  %1930 = load ptr, ptr %12, align 8, !tbaa !5
  store i32 538976288, ptr %1930, align 4, !tbaa !9
  %1931 = load ptr, ptr %12, align 8, !tbaa !5
  %1932 = getelementptr inbounds i8, ptr %1931, i64 4
  store ptr %1932, ptr %12, align 8, !tbaa !5
  %1933 = load i32, ptr %43, align 4, !tbaa !9
  %1934 = sub nsw i32 %1933, 4
  store i32 %1934, ptr %43, align 4, !tbaa !9
  br label %1926, !llvm.loop !48

1935:                                             ; preds = %1926
  br label %1936

1936:                                             ; preds = %1939, %1935
  %1937 = load i32, ptr %43, align 4, !tbaa !9
  %1938 = icmp ne i32 %1937, 0
  br i1 %1938, label %1939, label %1944

1939:                                             ; preds = %1936
  %1940 = load ptr, ptr %12, align 8, !tbaa !5
  %1941 = getelementptr inbounds i8, ptr %1940, i32 1
  store ptr %1941, ptr %12, align 8, !tbaa !5
  store i8 32, ptr %1940, align 1, !tbaa !11
  %1942 = load i32, ptr %43, align 4, !tbaa !9
  %1943 = add nsw i32 %1942, -1
  store i32 %1943, ptr %43, align 4, !tbaa !9
  br label %1936, !llvm.loop !49

1944:                                             ; preds = %1936
  %1945 = load ptr, ptr %7, align 8, !tbaa !5
  %1946 = icmp ne ptr %1945, null
  br i1 %1946, label %1947, label %1973

1947:                                             ; preds = %1944
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #3
  %1948 = load ptr, ptr %12, align 8, !tbaa !5
  %1949 = load ptr, ptr %9, align 8, !tbaa !5
  %1950 = ptrtoint ptr %1948 to i64
  %1951 = ptrtoint ptr %1949 to i64
  %1952 = sub i64 %1950, %1951
  %1953 = trunc i64 %1952 to i32
  store i32 %1953, ptr %46, align 4, !tbaa !9
  %1954 = load i32, ptr %46, align 4, !tbaa !9
  %1955 = add nsw i32 %1954, 1
  %1956 = icmp sge i32 %1955, 512
  br i1 %1956, label %1957, label %1969

1957:                                             ; preds = %1947
  %1958 = load i32, ptr %46, align 4, !tbaa !9
  %1959 = load i32, ptr %14, align 4, !tbaa !9
  %1960 = add nsw i32 %1959, %1958
  store i32 %1960, ptr %14, align 4, !tbaa !9
  %1961 = load ptr, ptr %7, align 8, !tbaa !5
  %1962 = load ptr, ptr %9, align 8, !tbaa !5
  %1963 = load ptr, ptr %8, align 8, !tbaa !5
  %1964 = load i32, ptr %46, align 4, !tbaa !9
  %1965 = call noundef ptr %1961(ptr noundef %1962, ptr noundef %1963, i32 noundef %1964)
  store ptr %1965, ptr %9, align 8, !tbaa !5
  store ptr %1965, ptr %12, align 8, !tbaa !5
  %1966 = icmp eq ptr null, %1965
  br i1 %1966, label %1967, label %1968

1967:                                             ; preds = %1957
  store i32 12, ptr %20, align 4
  br label %1970

1968:                                             ; preds = %1957
  br label %1969

1969:                                             ; preds = %1968, %1947
  store i32 0, ptr %20, align 4
  br label %1970

1970:                                             ; preds = %1969, %1967
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #3
  %1971 = load i32, ptr %20, align 4
  switch i32 %1971, label %2180 [
    i32 0, label %1972
  ]

1972:                                             ; preds = %1970
  br label %1973

1973:                                             ; preds = %1972, %1944
  br label %1886, !llvm.loop !50

1974:                                             ; preds = %1886
  br label %1975

1975:                                             ; preds = %1974, %1881
  %1976 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  %1977 = getelementptr inbounds i8, ptr %1976, i64 1
  store ptr %1977, ptr %34, align 8, !tbaa !5
  br label %1978

1978:                                             ; preds = %2051, %1975
  %1979 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  %1980 = load i8, ptr %1979, align 1, !tbaa !11
  %1981 = icmp ne i8 %1980, 0
  br i1 %1981, label %1982, label %2052

1982:                                             ; preds = %1978
  %1983 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  %1984 = load i8, ptr %1983, align 1, !tbaa !11
  %1985 = sext i8 %1984 to i32
  store i32 %1985, ptr %43, align 4, !tbaa !9
  %1986 = load ptr, ptr %7, align 8, !tbaa !5
  %1987 = icmp ne ptr %1986, null
  br i1 %1987, label %1988, label %2002

1988:                                             ; preds = %1982
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #3
  %1989 = load ptr, ptr %12, align 8, !tbaa !5
  %1990 = load ptr, ptr %9, align 8, !tbaa !5
  %1991 = ptrtoint ptr %1989 to i64
  %1992 = ptrtoint ptr %1990 to i64
  %1993 = sub i64 %1991, %1992
  %1994 = trunc i64 %1993 to i32
  %1995 = sub nsw i32 512, %1994
  store i32 %1995, ptr %47, align 4, !tbaa !9
  %1996 = load i32, ptr %43, align 4, !tbaa !9
  %1997 = load i32, ptr %47, align 4, !tbaa !9
  %1998 = icmp sgt i32 %1996, %1997
  br i1 %1998, label %1999, label %2001

1999:                                             ; preds = %1988
  %2000 = load i32, ptr %47, align 4, !tbaa !9
  store i32 %2000, ptr %43, align 4, !tbaa !9
  br label %2001

2001:                                             ; preds = %1999, %1988
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #3
  br label %2002

2002:                                             ; preds = %2001, %1982
  %2003 = load i32, ptr %43, align 4, !tbaa !9
  %2004 = trunc i32 %2003 to i8
  %2005 = sext i8 %2004 to i32
  %2006 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  %2007 = load i8, ptr %2006, align 1, !tbaa !11
  %2008 = sext i8 %2007 to i32
  %2009 = sub nsw i32 %2008, %2005
  %2010 = trunc i32 %2009 to i8
  store i8 %2010, ptr %2006, align 1, !tbaa !11
  br label %2011

2011:                                             ; preds = %2014, %2002
  %2012 = load i32, ptr %43, align 4, !tbaa !9
  %2013 = icmp ne i32 %2012, 0
  br i1 %2013, label %2014, label %2022

2014:                                             ; preds = %2011
  %2015 = load ptr, ptr %34, align 8, !tbaa !5
  %2016 = getelementptr inbounds i8, ptr %2015, i32 1
  store ptr %2016, ptr %34, align 8, !tbaa !5
  %2017 = load i8, ptr %2015, align 1, !tbaa !11
  %2018 = load ptr, ptr %12, align 8, !tbaa !5
  %2019 = getelementptr inbounds i8, ptr %2018, i32 1
  store ptr %2019, ptr %12, align 8, !tbaa !5
  store i8 %2017, ptr %2018, align 1, !tbaa !11
  %2020 = load i32, ptr %43, align 4, !tbaa !9
  %2021 = add nsw i32 %2020, -1
  store i32 %2021, ptr %43, align 4, !tbaa !9
  br label %2011, !llvm.loop !51

2022:                                             ; preds = %2011
  %2023 = load ptr, ptr %7, align 8, !tbaa !5
  %2024 = icmp ne ptr %2023, null
  br i1 %2024, label %2025, label %2051

2025:                                             ; preds = %2022
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #3
  %2026 = load ptr, ptr %12, align 8, !tbaa !5
  %2027 = load ptr, ptr %9, align 8, !tbaa !5
  %2028 = ptrtoint ptr %2026 to i64
  %2029 = ptrtoint ptr %2027 to i64
  %2030 = sub i64 %2028, %2029
  %2031 = trunc i64 %2030 to i32
  store i32 %2031, ptr %48, align 4, !tbaa !9
  %2032 = load i32, ptr %48, align 4, !tbaa !9
  %2033 = add nsw i32 %2032, 1
  %2034 = icmp sge i32 %2033, 512
  br i1 %2034, label %2035, label %2047

2035:                                             ; preds = %2025
  %2036 = load i32, ptr %48, align 4, !tbaa !9
  %2037 = load i32, ptr %14, align 4, !tbaa !9
  %2038 = add nsw i32 %2037, %2036
  store i32 %2038, ptr %14, align 4, !tbaa !9
  %2039 = load ptr, ptr %7, align 8, !tbaa !5
  %2040 = load ptr, ptr %9, align 8, !tbaa !5
  %2041 = load ptr, ptr %8, align 8, !tbaa !5
  %2042 = load i32, ptr %48, align 4, !tbaa !9
  %2043 = call noundef ptr %2039(ptr noundef %2040, ptr noundef %2041, i32 noundef %2042)
  store ptr %2043, ptr %9, align 8, !tbaa !5
  store ptr %2043, ptr %12, align 8, !tbaa !5
  %2044 = icmp eq ptr null, %2043
  br i1 %2044, label %2045, label %2046

2045:                                             ; preds = %2035
  store i32 12, ptr %20, align 4
  br label %2048

2046:                                             ; preds = %2035
  br label %2047

2047:                                             ; preds = %2046, %2025
  store i32 0, ptr %20, align 4
  br label %2048

2048:                                             ; preds = %2047, %2045
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #3
  %2049 = load i32, ptr %20, align 4
  switch i32 %2049, label %2180 [
    i32 0, label %2050
  ]

2050:                                             ; preds = %2048
  br label %2051

2051:                                             ; preds = %2050, %2022
  br label %1978, !llvm.loop !52

2052:                                             ; preds = %1978
  %2053 = load i32, ptr %30, align 4, !tbaa !9
  %2054 = lshr i32 %2053, 24
  store i32 %2054, ptr %44, align 4, !tbaa !9
  %2055 = load i32, ptr %30, align 4, !tbaa !9
  %2056 = and i32 %2055, 16777215
  store i32 %2056, ptr %30, align 4, !tbaa !9
  %2057 = load i32, ptr %18, align 4, !tbaa !9
  %2058 = and i32 %2057, 64
  %2059 = icmp ne i32 %2058, 0
  br i1 %2059, label %2060, label %2069

2060:                                             ; preds = %2052
  %2061 = load i32, ptr %44, align 4, !tbaa !9
  %2062 = load i32, ptr %16, align 4, !tbaa !9
  %2063 = load i32, ptr %30, align 4, !tbaa !9
  %2064 = add i32 %2062, %2063
  %2065 = load i32, ptr %44, align 4, !tbaa !9
  %2066 = add i32 %2065, 1
  %2067 = urem i32 %2064, %2066
  %2068 = sub i32 %2061, %2067
  br label %2070

2069:                                             ; preds = %2052
  br label %2070

2070:                                             ; preds = %2069, %2060
  %2071 = phi i32 [ %2068, %2060 ], [ 0, %2069 ]
  store i32 %2071, ptr %30, align 4, !tbaa !9
  br label %2072

2072:                                             ; preds = %2178, %2070
  %2073 = load i32, ptr %16, align 4, !tbaa !9
  %2074 = icmp sgt i32 %2073, 0
  br i1 %2074, label %2075, label %2179

2075:                                             ; preds = %2072
  %2076 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %2076, ptr %43, align 4, !tbaa !9
  %2077 = load ptr, ptr %7, align 8, !tbaa !5
  %2078 = icmp ne ptr %2077, null
  br i1 %2078, label %2079, label %2093

2079:                                             ; preds = %2075
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #3
  %2080 = load ptr, ptr %12, align 8, !tbaa !5
  %2081 = load ptr, ptr %9, align 8, !tbaa !5
  %2082 = ptrtoint ptr %2080 to i64
  %2083 = ptrtoint ptr %2081 to i64
  %2084 = sub i64 %2082, %2083
  %2085 = trunc i64 %2084 to i32
  %2086 = sub nsw i32 512, %2085
  store i32 %2086, ptr %49, align 4, !tbaa !9
  %2087 = load i32, ptr %43, align 4, !tbaa !9
  %2088 = load i32, ptr %49, align 4, !tbaa !9
  %2089 = icmp sgt i32 %2087, %2088
  br i1 %2089, label %2090, label %2092

2090:                                             ; preds = %2079
  %2091 = load i32, ptr %49, align 4, !tbaa !9
  store i32 %2091, ptr %43, align 4, !tbaa !9
  br label %2092

2092:                                             ; preds = %2090, %2079
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #3
  br label %2093

2093:                                             ; preds = %2092, %2075
  %2094 = load i32, ptr %43, align 4, !tbaa !9
  %2095 = load i32, ptr %16, align 4, !tbaa !9
  %2096 = sub nsw i32 %2095, %2094
  store i32 %2096, ptr %16, align 4, !tbaa !9
  %2097 = load i32, ptr %18, align 4, !tbaa !9
  %2098 = and i32 %2097, 64
  %2099 = icmp eq i32 %2098, 0
  br i1 %2099, label %2100, label %2126

2100:                                             ; preds = %2093
  br label %2101

2101:                                             ; preds = %2110, %2100
  %2102 = load i32, ptr %43, align 4, !tbaa !9
  %2103 = icmp ne i32 %2102, 0
  br i1 %2103, label %2104, label %2115

2104:                                             ; preds = %2101
  %2105 = load ptr, ptr %12, align 8, !tbaa !5
  %2106 = ptrtoint ptr %2105 to i64
  %2107 = and i64 %2106, 3
  %2108 = icmp eq i64 %2107, 0
  br i1 %2108, label %2109, label %2110

2109:                                             ; preds = %2104
  br label %2115

2110:                                             ; preds = %2104
  %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 48, ptr %2111, align 1, !tbaa !11
  %2113 = load i32, ptr %43, align 4, !tbaa !9
  %2114 = add nsw i32 %2113, -1
  store i32 %2114, ptr %43, align 4, !tbaa !9
  br label %2101, !llvm.loop !53

2115:                                             ; preds = %2109, %2101
  br label %2116

2116:                                             ; preds = %2119, %2115
  %2117 = load i32, ptr %43, align 4, !tbaa !9
  %2118 = icmp sge i32 %2117, 4
  br i1 %2118, label %2119, label %2125

2119:                                             ; preds = %2116
  %2120 = load ptr, ptr %12, align 8, !tbaa !5
  store i32 808464432, ptr %2120, align 4, !tbaa !9
  %2121 = load ptr, ptr %12, align 8, !tbaa !5
  %2122 = getelementptr inbounds i8, ptr %2121, i64 4
  store ptr %2122, ptr %12, align 8, !tbaa !5
  %2123 = load i32, ptr %43, align 4, !tbaa !9
  %2124 = sub nsw i32 %2123, 4
  store i32 %2124, ptr %43, align 4, !tbaa !9
  br label %2116, !llvm.loop !54

2125:                                             ; preds = %2116
  br label %2126

2126:                                             ; preds = %2125, %2093
  br label %2127

2127:                                             ; preds = %2146, %2126
  %2128 = load i32, ptr %43, align 4, !tbaa !9
  %2129 = icmp ne i32 %2128, 0
  br i1 %2129, label %2130, label %2149

2130:                                             ; preds = %2127
  %2131 = load i32, ptr %18, align 4, !tbaa !9
  %2132 = and i32 %2131, 64
  %2133 = icmp ne i32 %2132, 0
  br i1 %2133, label %2134, label %2143

2134:                                             ; preds = %2130
  %2135 = load i32, ptr %30, align 4, !tbaa !9
  %2136 = add i32 %2135, 1
  store i32 %2136, ptr %30, align 4, !tbaa !9
  %2137 = load i32, ptr %44, align 4, !tbaa !9
  %2138 = icmp eq i32 %2135, %2137
  br i1 %2138, label %2139, label %2143

2139:                                             ; preds = %2134
  store i32 0, ptr %30, align 4, !tbaa !9
  %2140 = load i8, ptr @_ZL12stbsp__comma, align 1, !tbaa !11
  %2141 = load ptr, ptr %12, align 8, !tbaa !5
  %2142 = getelementptr inbounds i8, ptr %2141, i32 1
  store ptr %2142, ptr %12, align 8, !tbaa !5
  store i8 %2140, ptr %2141, align 1, !tbaa !11
  br label %2146

2143:                                             ; preds = %2134, %2130
  %2144 = load ptr, ptr %12, align 8, !tbaa !5
  %2145 = getelementptr inbounds i8, ptr %2144, i32 1
  store ptr %2145, ptr %12, align 8, !tbaa !5
  store i8 48, ptr %2144, align 1, !tbaa !11
  br label %2146

2146:                                             ; preds = %2143, %2139
  %2147 = load i32, ptr %43, align 4, !tbaa !9
  %2148 = add nsw i32 %2147, -1
  store i32 %2148, ptr %43, align 4, !tbaa !9
  br label %2127, !llvm.loop !55

2149:                                             ; preds = %2127
  %2150 = load ptr, ptr %7, align 8, !tbaa !5
  %2151 = icmp ne ptr %2150, null
  br i1 %2151, label %2152, label %2178

2152:                                             ; preds = %2149
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #3
  %2153 = load ptr, ptr %12, align 8, !tbaa !5
  %2154 = load ptr, ptr %9, align 8, !tbaa !5
  %2155 = ptrtoint ptr %2153 to i64
  %2156 = ptrtoint ptr %2154 to i64
  %2157 = sub i64 %2155, %2156
  %2158 = trunc i64 %2157 to i32
  store i32 %2158, ptr %50, align 4, !tbaa !9
  %2159 = load i32, ptr %50, align 4, !tbaa !9
  %2160 = add nsw i32 %2159, 1
  %2161 = icmp sge i32 %2160, 512
  br i1 %2161, label %2162, label %2174

2162:                                             ; preds = %2152
  %2163 = load i32, ptr %50, align 4, !tbaa !9
  %2164 = load i32, ptr %14, align 4, !tbaa !9
  %2165 = add nsw i32 %2164, %2163
  store i32 %2165, ptr %14, align 4, !tbaa !9
  %2166 = load ptr, ptr %7, align 8, !tbaa !5
  %2167 = load ptr, ptr %9, align 8, !tbaa !5
  %2168 = load ptr, ptr %8, align 8, !tbaa !5
  %2169 = load i32, ptr %50, align 4, !tbaa !9
  %2170 = call noundef ptr %2166(ptr noundef %2167, ptr noundef %2168, i32 noundef %2169)
  store ptr %2170, ptr %9, align 8, !tbaa !5
  store ptr %2170, ptr %12, align 8, !tbaa !5
  %2171 = icmp eq ptr null, %2170
  br i1 %2171, label %2172, label %2173

2172:                                             ; preds = %2162
  store i32 12, ptr %20, align 4
  br label %2175

2173:                                             ; preds = %2162
  br label %2174

2174:                                             ; preds = %2173, %2152
  store i32 0, ptr %20, align 4
  br label %2175

2175:                                             ; preds = %2174, %2172
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #3
  %2176 = load i32, ptr %20, align 4
  switch i32 %2176, label %2180 [
    i32 0, label %2177
  ]

2177:                                             ; preds = %2175
  br label %2178

2178:                                             ; preds = %2177, %2149
  br label %2072, !llvm.loop !56

2179:                                             ; preds = %2072
  store i32 0, ptr %20, align 4
  br label %2180

2180:                                             ; preds = %2179, %2175, %2048, %1970
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #3
  %2181 = load i32, ptr %20, align 4
  switch i32 %2181, label %2634 [
    i32 0, label %2182
  ]

2182:                                             ; preds = %2180
  br label %2183

2183:                                             ; preds = %2182, %1876
  %2184 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  %2185 = getelementptr inbounds i8, ptr %2184, i64 1
  store ptr %2185, ptr %34, align 8, !tbaa !5
  br label %2186

2186:                                             ; preds = %2262, %2183
  %2187 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  %2188 = load i8, ptr %2187, align 1, !tbaa !11
  %2189 = icmp ne i8 %2188, 0
  br i1 %2189, label %2190, label %2263

2190:                                             ; preds = %2186
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #3
  %2191 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  %2192 = load i8, ptr %2191, align 1, !tbaa !11
  %2193 = sext i8 %2192 to i32
  store i32 %2193, ptr %51, align 4, !tbaa !9
  %2194 = load ptr, ptr %7, align 8, !tbaa !5
  %2195 = icmp ne ptr %2194, null
  br i1 %2195, label %2196, label %2210

2196:                                             ; preds = %2190
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #3
  %2197 = load ptr, ptr %12, align 8, !tbaa !5
  %2198 = load ptr, ptr %9, align 8, !tbaa !5
  %2199 = ptrtoint ptr %2197 to i64
  %2200 = ptrtoint ptr %2198 to i64
  %2201 = sub i64 %2199, %2200
  %2202 = trunc i64 %2201 to i32
  %2203 = sub nsw i32 512, %2202
  store i32 %2203, ptr %52, align 4, !tbaa !9
  %2204 = load i32, ptr %51, align 4, !tbaa !9
  %2205 = load i32, ptr %52, align 4, !tbaa !9
  %2206 = icmp sgt i32 %2204, %2205
  br i1 %2206, label %2207, label %2209

2207:                                             ; preds = %2196
  %2208 = load i32, ptr %52, align 4, !tbaa !9
  store i32 %2208, ptr %51, align 4, !tbaa !9
  br label %2209

2209:                                             ; preds = %2207, %2196
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #3
  br label %2210

2210:                                             ; preds = %2209, %2190
  %2211 = load i32, ptr %51, align 4, !tbaa !9
  %2212 = trunc i32 %2211 to i8
  %2213 = sext i8 %2212 to i32
  %2214 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  %2215 = load i8, ptr %2214, align 1, !tbaa !11
  %2216 = sext i8 %2215 to i32
  %2217 = sub nsw i32 %2216, %2213
  %2218 = trunc i32 %2217 to i8
  store i8 %2218, ptr %2214, align 1, !tbaa !11
  br label %2219

2219:                                             ; preds = %2222, %2210
  %2220 = load i32, ptr %51, align 4, !tbaa !9
  %2221 = icmp ne i32 %2220, 0
  br i1 %2221, label %2222, label %2230

2222:                                             ; preds = %2219
  %2223 = load ptr, ptr %34, align 8, !tbaa !5
  %2224 = getelementptr inbounds i8, ptr %2223, i32 1
  store ptr %2224, ptr %34, align 8, !tbaa !5
  %2225 = load i8, ptr %2223, align 1, !tbaa !11
  %2226 = load ptr, ptr %12, align 8, !tbaa !5
  %2227 = getelementptr inbounds i8, ptr %2226, i32 1
  store ptr %2227, ptr %12, align 8, !tbaa !5
  store i8 %2225, ptr %2226, align 1, !tbaa !11
  %2228 = load i32, ptr %51, align 4, !tbaa !9
  %2229 = add nsw i32 %2228, -1
  store i32 %2229, ptr %51, align 4, !tbaa !9
  br label %2219, !llvm.loop !57

2230:                                             ; preds = %2219
  %2231 = load ptr, ptr %7, align 8, !tbaa !5
  %2232 = icmp ne ptr %2231, null
  br i1 %2232, label %2233, label %2259

2233:                                             ; preds = %2230
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #3
  %2234 = load ptr, ptr %12, align 8, !tbaa !5
  %2235 = load ptr, ptr %9, align 8, !tbaa !5
  %2236 = ptrtoint ptr %2234 to i64
  %2237 = ptrtoint ptr %2235 to i64
  %2238 = sub i64 %2236, %2237
  %2239 = trunc i64 %2238 to i32
  store i32 %2239, ptr %53, align 4, !tbaa !9
  %2240 = load i32, ptr %53, align 4, !tbaa !9
  %2241 = add nsw i32 %2240, 1
  %2242 = icmp sge i32 %2241, 512
  br i1 %2242, label %2243, label %2255

2243:                                             ; preds = %2233
  %2244 = load i32, ptr %53, align 4, !tbaa !9
  %2245 = load i32, ptr %14, align 4, !tbaa !9
  %2246 = add nsw i32 %2245, %2244
  store i32 %2246, ptr %14, align 4, !tbaa !9
  %2247 = load ptr, ptr %7, align 8, !tbaa !5
  %2248 = load ptr, ptr %9, align 8, !tbaa !5
  %2249 = load ptr, ptr %8, align 8, !tbaa !5
  %2250 = load i32, ptr %53, align 4, !tbaa !9
  %2251 = call noundef ptr %2247(ptr noundef %2248, ptr noundef %2249, i32 noundef %2250)
  store ptr %2251, ptr %9, align 8, !tbaa !5
  store ptr %2251, ptr %12, align 8, !tbaa !5
  %2252 = icmp eq ptr null, %2251
  br i1 %2252, label %2253, label %2254

2253:                                             ; preds = %2243
  store i32 12, ptr %20, align 4
  br label %2256

2254:                                             ; preds = %2243
  br label %2255

2255:                                             ; preds = %2254, %2233
  store i32 0, ptr %20, align 4
  br label %2256

2256:                                             ; preds = %2255, %2253
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #3
  %2257 = load i32, ptr %20, align 4
  switch i32 %2257, label %2260 [
    i32 0, label %2258
  ]

2258:                                             ; preds = %2256
  br label %2259

2259:                                             ; preds = %2258, %2230
  store i32 0, ptr %20, align 4
  br label %2260

2260:                                             ; preds = %2259, %2256
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #3
  %2261 = load i32, ptr %20, align 4
  switch i32 %2261, label %2634 [
    i32 0, label %2262
  ]

2262:                                             ; preds = %2260
  br label %2186, !llvm.loop !58

2263:                                             ; preds = %2186
  %2264 = load i32, ptr %28, align 4, !tbaa !9
  store i32 %2264, ptr %29, align 4, !tbaa !9
  br label %2265

2265:                                             ; preds = %2347, %2263
  %2266 = load i32, ptr %29, align 4, !tbaa !9
  %2267 = icmp ne i32 %2266, 0
  br i1 %2267, label %2268, label %2348

2268:                                             ; preds = %2265
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #3
  %2269 = load i32, ptr %29, align 4, !tbaa !9
  store i32 %2269, ptr %54, align 4, !tbaa !9
  %2270 = load ptr, ptr %7, align 8, !tbaa !5
  %2271 = icmp ne ptr %2270, null
  br i1 %2271, label %2272, label %2286

2272:                                             ; preds = %2268
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #3
  %2273 = load ptr, ptr %12, align 8, !tbaa !5
  %2274 = load ptr, ptr %9, align 8, !tbaa !5
  %2275 = ptrtoint ptr %2273 to i64
  %2276 = ptrtoint ptr %2274 to i64
  %2277 = sub i64 %2275, %2276
  %2278 = trunc i64 %2277 to i32
  %2279 = sub nsw i32 512, %2278
  store i32 %2279, ptr %55, align 4, !tbaa !9
  %2280 = load i32, ptr %54, align 4, !tbaa !9
  %2281 = load i32, ptr %55, align 4, !tbaa !9
  %2282 = icmp sgt i32 %2280, %2281
  br i1 %2282, label %2283, label %2285

2283:                                             ; preds = %2272
  %2284 = load i32, ptr %55, align 4, !tbaa !9
  store i32 %2284, ptr %54, align 4, !tbaa !9
  br label %2285

2285:                                             ; preds = %2283, %2272
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #3
  br label %2286

2286:                                             ; preds = %2285, %2268
  %2287 = load i32, ptr %54, align 4, !tbaa !9
  %2288 = load i32, ptr %29, align 4, !tbaa !9
  %2289 = sub i32 %2288, %2287
  store i32 %2289, ptr %29, align 4, !tbaa !9
  br label %2290

2290:                                             ; preds = %2293, %2286
  %2291 = load i32, ptr %54, align 4, !tbaa !9
  %2292 = icmp sge i32 %2291, 4
  br i1 %2292, label %2293, label %2303

2293:                                             ; preds = %2290
  %2294 = load ptr, ptr %26, align 8, !tbaa !5
  %2295 = load i32, ptr %2294, align 4, !tbaa !9
  %2296 = load ptr, ptr %12, align 8, !tbaa !5
  store i32 %2295, ptr %2296, align 4, !tbaa !9
  %2297 = load ptr, ptr %12, align 8, !tbaa !5
  %2298 = getelementptr inbounds i8, ptr %2297, i64 4
  store ptr %2298, ptr %12, align 8, !tbaa !5
  %2299 = load ptr, ptr %26, align 8, !tbaa !5
  %2300 = getelementptr inbounds i8, ptr %2299, i64 4
  store ptr %2300, ptr %26, align 8, !tbaa !5
  %2301 = load i32, ptr %54, align 4, !tbaa !9
  %2302 = sub nsw i32 %2301, 4
  store i32 %2302, ptr %54, align 4, !tbaa !9
  br label %2290, !llvm.loop !59

2303:                                             ; preds = %2290
  br label %2304

2304:                                             ; preds = %2307, %2303
  %2305 = load i32, ptr %54, align 4, !tbaa !9
  %2306 = icmp ne i32 %2305, 0
  br i1 %2306, label %2307, label %2315

2307:                                             ; preds = %2304
  %2308 = load ptr, ptr %26, align 8, !tbaa !5
  %2309 = getelementptr inbounds i8, ptr %2308, i32 1
  store ptr %2309, ptr %26, align 8, !tbaa !5
  %2310 = load i8, ptr %2308, align 1, !tbaa !11
  %2311 = load ptr, ptr %12, align 8, !tbaa !5
  %2312 = getelementptr inbounds i8, ptr %2311, i32 1
  store ptr %2312, ptr %12, align 8, !tbaa !5
  store i8 %2310, ptr %2311, align 1, !tbaa !11
  %2313 = load i32, ptr %54, align 4, !tbaa !9
  %2314 = add nsw i32 %2313, -1
  store i32 %2314, ptr %54, align 4, !tbaa !9
  br label %2304, !llvm.loop !60

2315:                                             ; preds = %2304
  %2316 = load ptr, ptr %7, align 8, !tbaa !5
  %2317 = icmp ne ptr %2316, null
  br i1 %2317, label %2318, label %2344

2318:                                             ; preds = %2315
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #3
  %2319 = load ptr, ptr %12, align 8, !tbaa !5
  %2320 = load ptr, ptr %9, align 8, !tbaa !5
  %2321 = ptrtoint ptr %2319 to i64
  %2322 = ptrtoint ptr %2320 to i64
  %2323 = sub i64 %2321, %2322
  %2324 = trunc i64 %2323 to i32
  store i32 %2324, ptr %56, align 4, !tbaa !9
  %2325 = load i32, ptr %56, align 4, !tbaa !9
  %2326 = add nsw i32 %2325, 1
  %2327 = icmp sge i32 %2326, 512
  br i1 %2327, label %2328, label %2340

2328:                                             ; preds = %2318
  %2329 = load i32, ptr %56, align 4, !tbaa !9
  %2330 = load i32, ptr %14, align 4, !tbaa !9
  %2331 = add nsw i32 %2330, %2329
  store i32 %2331, ptr %14, align 4, !tbaa !9
  %2332 = load ptr, ptr %7, align 8, !tbaa !5
  %2333 = load ptr, ptr %9, align 8, !tbaa !5
  %2334 = load ptr, ptr %8, align 8, !tbaa !5
  %2335 = load i32, ptr %56, align 4, !tbaa !9
  %2336 = call noundef ptr %2332(ptr noundef %2333, ptr noundef %2334, i32 noundef %2335)
  store ptr %2336, ptr %9, align 8, !tbaa !5
  store ptr %2336, ptr %12, align 8, !tbaa !5
  %2337 = icmp eq ptr null, %2336
  br i1 %2337, label %2338, label %2339

2338:                                             ; preds = %2328
  store i32 12, ptr %20, align 4
  br label %2341

2339:                                             ; preds = %2328
  br label %2340

2340:                                             ; preds = %2339, %2318
  store i32 0, ptr %20, align 4
  br label %2341

2341:                                             ; preds = %2340, %2338
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #3
  %2342 = load i32, ptr %20, align 4
  switch i32 %2342, label %2345 [
    i32 0, label %2343
  ]

2343:                                             ; preds = %2341
  br label %2344

2344:                                             ; preds = %2343, %2315
  store i32 0, ptr %20, align 4
  br label %2345

2345:                                             ; preds = %2344, %2341
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #3
  %2346 = load i32, ptr %20, align 4
  switch i32 %2346, label %2634 [
    i32 0, label %2347
  ]

2347:                                             ; preds = %2345
  br label %2265, !llvm.loop !61

2348:                                             ; preds = %2265
  br label %2349

2349:                                             ; preds = %2439, %2348
  %2350 = load i32, ptr %17, align 4, !tbaa !9
  %2351 = icmp ne i32 %2350, 0
  br i1 %2351, label %2352, label %2440

2352:                                             ; preds = %2349
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #3
  %2353 = load i32, ptr %17, align 4, !tbaa !9
  store i32 %2353, ptr %57, align 4, !tbaa !9
  %2354 = load ptr, ptr %7, align 8, !tbaa !5
  %2355 = icmp ne ptr %2354, null
  br i1 %2355, label %2356, label %2370

2356:                                             ; preds = %2352
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #3
  %2357 = load ptr, ptr %12, align 8, !tbaa !5
  %2358 = load ptr, ptr %9, align 8, !tbaa !5
  %2359 = ptrtoint ptr %2357 to i64
  %2360 = ptrtoint ptr %2358 to i64
  %2361 = sub i64 %2359, %2360
  %2362 = trunc i64 %2361 to i32
  %2363 = sub nsw i32 512, %2362
  store i32 %2363, ptr %58, align 4, !tbaa !9
  %2364 = load i32, ptr %57, align 4, !tbaa !9
  %2365 = load i32, ptr %58, align 4, !tbaa !9
  %2366 = icmp sgt i32 %2364, %2365
  br i1 %2366, label %2367, label %2369

2367:                                             ; preds = %2356
  %2368 = load i32, ptr %58, align 4, !tbaa !9
  store i32 %2368, ptr %57, align 4, !tbaa !9
  br label %2369

2369:                                             ; preds = %2367, %2356
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #3
  br label %2370

2370:                                             ; preds = %2369, %2352
  %2371 = load i32, ptr %57, align 4, !tbaa !9
  %2372 = load i32, ptr %17, align 4, !tbaa !9
  %2373 = sub nsw i32 %2372, %2371
  store i32 %2373, ptr %17, align 4, !tbaa !9
  br label %2374

2374:                                             ; preds = %2383, %2370
  %2375 = load i32, ptr %57, align 4, !tbaa !9
  %2376 = icmp ne i32 %2375, 0
  br i1 %2376, label %2377, label %2388

2377:                                             ; preds = %2374
  %2378 = load ptr, ptr %12, align 8, !tbaa !5
  %2379 = ptrtoint ptr %2378 to i64
  %2380 = and i64 %2379, 3
  %2381 = icmp eq i64 %2380, 0
  br i1 %2381, label %2382, label %2383

2382:                                             ; preds = %2377
  br label %2388

2383:                                             ; preds = %2377
  %2384 = load ptr, ptr %12, align 8, !tbaa !5
  %2385 = getelementptr inbounds i8, ptr %2384, i32 1
  store ptr %2385, ptr %12, align 8, !tbaa !5
  store i8 48, ptr %2384, align 1, !tbaa !11
  %2386 = load i32, ptr %57, align 4, !tbaa !9
  %2387 = add nsw i32 %2386, -1
  store i32 %2387, ptr %57, align 4, !tbaa !9
  br label %2374, !llvm.loop !62

2388:                                             ; preds = %2382, %2374
  br label %2389

2389:                                             ; preds = %2392, %2388
  %2390 = load i32, ptr %57, align 4, !tbaa !9
  %2391 = icmp sge i32 %2390, 4
  br i1 %2391, label %2392, label %2398

2392:                                             ; preds = %2389
  %2393 = load ptr, ptr %12, align 8, !tbaa !5
  store i32 808464432, ptr %2393, align 4, !tbaa !9
  %2394 = load ptr, ptr %12, align 8, !tbaa !5
  %2395 = getelementptr inbounds i8, ptr %2394, i64 4
  store ptr %2395, ptr %12, align 8, !tbaa !5
  %2396 = load i32, ptr %57, align 4, !tbaa !9
  %2397 = sub nsw i32 %2396, 4
  store i32 %2397, ptr %57, align 4, !tbaa !9
  br label %2389, !llvm.loop !63

2398:                                             ; preds = %2389
  br label %2399

2399:                                             ; preds = %2402, %2398
  %2400 = load i32, ptr %57, align 4, !tbaa !9
  %2401 = icmp ne i32 %2400, 0
  br i1 %2401, label %2402, label %2407

2402:                                             ; preds = %2399
  %2403 = load ptr, ptr %12, align 8, !tbaa !5
  %2404 = getelementptr inbounds i8, ptr %2403, i32 1
  store ptr %2404, ptr %12, align 8, !tbaa !5
  store i8 48, ptr %2403, align 1, !tbaa !11
  %2405 = load i32, ptr %57, align 4, !tbaa !9
  %2406 = add nsw i32 %2405, -1
  store i32 %2406, ptr %57, align 4, !tbaa !9
  br label %2399, !llvm.loop !64

2407:                                             ; preds = %2399
  %2408 = load ptr, ptr %7, align 8, !tbaa !5
  %2409 = icmp ne ptr %2408, null
  br i1 %2409, label %2410, label %2436

2410:                                             ; preds = %2407
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #3
  %2411 = load ptr, ptr %12, align 8, !tbaa !5
  %2412 = load ptr, ptr %9, align 8, !tbaa !5
  %2413 = ptrtoint ptr %2411 to i64
  %2414 = ptrtoint ptr %2412 to i64
  %2415 = sub i64 %2413, %2414
  %2416 = trunc i64 %2415 to i32
  store i32 %2416, ptr %59, align 4, !tbaa !9
  %2417 = load i32, ptr %59, align 4, !tbaa !9
  %2418 = add nsw i32 %2417, 1
  %2419 = icmp sge i32 %2418, 512
  br i1 %2419, label %2420, label %2432

2420:                                             ; preds = %2410
  %2421 = load i32, ptr %59, align 4, !tbaa !9
  %2422 = load i32, ptr %14, align 4, !tbaa !9
  %2423 = add nsw i32 %2422, %2421
  store i32 %2423, ptr %14, align 4, !tbaa !9
  %2424 = load ptr, ptr %7, align 8, !tbaa !5
  %2425 = load ptr, ptr %9, align 8, !tbaa !5
  %2426 = load ptr, ptr %8, align 8, !tbaa !5
  %2427 = load i32, ptr %59, align 4, !tbaa !9
  %2428 = call noundef ptr %2424(ptr noundef %2425, ptr noundef %2426, i32 noundef %2427)
  store ptr %2428, ptr %9, align 8, !tbaa !5
  store ptr %2428, ptr %12, align 8, !tbaa !5
  %2429 = icmp eq ptr null, %2428
  br i1 %2429, label %2430, label %2431

2430:                                             ; preds = %2420
  store i32 12, ptr %20, align 4
  br label %2433

2431:                                             ; preds = %2420
  br label %2432

2432:                                             ; preds = %2431, %2410
  store i32 0, ptr %20, align 4
  br label %2433

2433:                                             ; preds = %2432, %2430
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #3
  %2434 = load i32, ptr %20, align 4
  switch i32 %2434, label %2437 [
    i32 0, label %2435
  ]

2435:                                             ; preds = %2433
  br label %2436

2436:                                             ; preds = %2435, %2407
  store i32 0, ptr %20, align 4
  br label %2437

2437:                                             ; preds = %2436, %2433
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #3
  %2438 = load i32, ptr %20, align 4
  switch i32 %2438, label %2634 [
    i32 0, label %2439
  ]

2439:                                             ; preds = %2437
  br label %2349, !llvm.loop !65

2440:                                             ; preds = %2349
  %2441 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 0
  %2442 = getelementptr inbounds i8, ptr %2441, i64 1
  store ptr %2442, ptr %34, align 8, !tbaa !5
  br label %2443

2443:                                             ; preds = %2519, %2440
  %2444 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 0
  %2445 = load i8, ptr %2444, align 1, !tbaa !11
  %2446 = icmp ne i8 %2445, 0
  br i1 %2446, label %2447, label %2520

2447:                                             ; preds = %2443
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #3
  %2448 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 0
  %2449 = load i8, ptr %2448, align 1, !tbaa !11
  %2450 = sext i8 %2449 to i32
  store i32 %2450, ptr %60, align 4, !tbaa !9
  %2451 = load ptr, ptr %7, align 8, !tbaa !5
  %2452 = icmp ne ptr %2451, null
  br i1 %2452, label %2453, label %2467

2453:                                             ; preds = %2447
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #3
  %2454 = load ptr, ptr %12, align 8, !tbaa !5
  %2455 = load ptr, ptr %9, align 8, !tbaa !5
  %2456 = ptrtoint ptr %2454 to i64
  %2457 = ptrtoint ptr %2455 to i64
  %2458 = sub i64 %2456, %2457
  %2459 = trunc i64 %2458 to i32
  %2460 = sub nsw i32 512, %2459
  store i32 %2460, ptr %61, align 4, !tbaa !9
  %2461 = load i32, ptr %60, align 4, !tbaa !9
  %2462 = load i32, ptr %61, align 4, !tbaa !9
  %2463 = icmp sgt i32 %2461, %2462
  br i1 %2463, label %2464, label %2466

2464:                                             ; preds = %2453
  %2465 = load i32, ptr %61, align 4, !tbaa !9
  store i32 %2465, ptr %60, align 4, !tbaa !9
  br label %2466

2466:                                             ; preds = %2464, %2453
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #3
  br label %2467

2467:                                             ; preds = %2466, %2447
  %2468 = load i32, ptr %60, align 4, !tbaa !9
  %2469 = trunc i32 %2468 to i8
  %2470 = sext i8 %2469 to i32
  %2471 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 0
  %2472 = load i8, ptr %2471, align 1, !tbaa !11
  %2473 = sext i8 %2472 to i32
  %2474 = sub nsw i32 %2473, %2470
  %2475 = trunc i32 %2474 to i8
  store i8 %2475, ptr %2471, align 1, !tbaa !11
  br label %2476

2476:                                             ; preds = %2479, %2467
  %2477 = load i32, ptr %60, align 4, !tbaa !9
  %2478 = icmp ne i32 %2477, 0
  br i1 %2478, label %2479, label %2487

2479:                                             ; preds = %2476
  %2480 = load ptr, ptr %34, align 8, !tbaa !5
  %2481 = getelementptr inbounds i8, ptr %2480, i32 1
  store ptr %2481, ptr %34, align 8, !tbaa !5
  %2482 = load i8, ptr %2480, align 1, !tbaa !11
  %2483 = load ptr, ptr %12, align 8, !tbaa !5
  %2484 = getelementptr inbounds i8, ptr %2483, i32 1
  store ptr %2484, ptr %12, align 8, !tbaa !5
  store i8 %2482, ptr %2483, align 1, !tbaa !11
  %2485 = load i32, ptr %60, align 4, !tbaa !9
  %2486 = add nsw i32 %2485, -1
  store i32 %2486, ptr %60, align 4, !tbaa !9
  br label %2476, !llvm.loop !66

2487:                                             ; preds = %2476
  %2488 = load ptr, ptr %7, align 8, !tbaa !5
  %2489 = icmp ne ptr %2488, null
  br i1 %2489, label %2490, label %2516

2490:                                             ; preds = %2487
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #3
  %2491 = load ptr, ptr %12, align 8, !tbaa !5
  %2492 = load ptr, ptr %9, align 8, !tbaa !5
  %2493 = ptrtoint ptr %2491 to i64
  %2494 = ptrtoint ptr %2492 to i64
  %2495 = sub i64 %2493, %2494
  %2496 = trunc i64 %2495 to i32
  store i32 %2496, ptr %62, align 4, !tbaa !9
  %2497 = load i32, ptr %62, align 4, !tbaa !9
  %2498 = add nsw i32 %2497, 1
  %2499 = icmp sge i32 %2498, 512
  br i1 %2499, label %2500, label %2512

2500:                                             ; preds = %2490
  %2501 = load i32, ptr %62, align 4, !tbaa !9
  %2502 = load i32, ptr %14, align 4, !tbaa !9
  %2503 = add nsw i32 %2502, %2501
  store i32 %2503, ptr %14, align 4, !tbaa !9
  %2504 = load ptr, ptr %7, align 8, !tbaa !5
  %2505 = load ptr, ptr %9, align 8, !tbaa !5
  %2506 = load ptr, ptr %8, align 8, !tbaa !5
  %2507 = load i32, ptr %62, align 4, !tbaa !9
  %2508 = call noundef ptr %2504(ptr noundef %2505, ptr noundef %2506, i32 noundef %2507)
  store ptr %2508, ptr %9, align 8, !tbaa !5
  store ptr %2508, ptr %12, align 8, !tbaa !5
  %2509 = icmp eq ptr null, %2508
  br i1 %2509, label %2510, label %2511

2510:                                             ; preds = %2500
  store i32 12, ptr %20, align 4
  br label %2513

2511:                                             ; preds = %2500
  br label %2512

2512:                                             ; preds = %2511, %2490
  store i32 0, ptr %20, align 4
  br label %2513

2513:                                             ; preds = %2512, %2510
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #3
  %2514 = load i32, ptr %20, align 4
  switch i32 %2514, label %2517 [
    i32 0, label %2515
  ]

2515:                                             ; preds = %2513
  br label %2516

2516:                                             ; preds = %2515, %2487
  store i32 0, ptr %20, align 4
  br label %2517

2517:                                             ; preds = %2516, %2513
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #3
  %2518 = load i32, ptr %20, align 4
  switch i32 %2518, label %2634 [
    i32 0, label %2519
  ]

2519:                                             ; preds = %2517
  br label %2443, !llvm.loop !67

2520:                                             ; preds = %2443
  %2521 = load i32, ptr %18, align 4, !tbaa !9
  %2522 = and i32 %2521, 1
  %2523 = icmp ne i32 %2522, 0
  br i1 %2523, label %2524, label %2620

2524:                                             ; preds = %2520
  %2525 = load i32, ptr %15, align 4, !tbaa !9
  %2526 = icmp sgt i32 %2525, 0
  br i1 %2526, label %2527, label %2619

2527:                                             ; preds = %2524
  br label %2528

2528:                                             ; preds = %2617, %2527
  %2529 = load i32, ptr %15, align 4, !tbaa !9
  %2530 = icmp ne i32 %2529, 0
  br i1 %2530, label %2531, label %2618

2531:                                             ; preds = %2528
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #3
  %2532 = load i32, ptr %15, align 4, !tbaa !9
  store i32 %2532, ptr %63, align 4, !tbaa !9
  %2533 = load ptr, ptr %7, align 8, !tbaa !5
  %2534 = icmp ne ptr %2533, null
  br i1 %2534, label %2535, label %2549

2535:                                             ; preds = %2531
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #3
  %2536 = load ptr, ptr %12, align 8, !tbaa !5
  %2537 = load ptr, ptr %9, align 8, !tbaa !5
  %2538 = ptrtoint ptr %2536 to i64
  %2539 = ptrtoint ptr %2537 to i64
  %2540 = sub i64 %2538, %2539
  %2541 = trunc i64 %2540 to i32
  %2542 = sub nsw i32 512, %2541
  store i32 %2542, ptr %64, align 4, !tbaa !9
  %2543 = load i32, ptr %63, align 4, !tbaa !9
  %2544 = load i32, ptr %64, align 4, !tbaa !9
  %2545 = icmp sgt i32 %2543, %2544
  br i1 %2545, label %2546, label %2548

2546:                                             ; preds = %2535
  %2547 = load i32, ptr %64, align 4, !tbaa !9
  store i32 %2547, ptr %63, align 4, !tbaa !9
  br label %2548

2548:                                             ; preds = %2546, %2535
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #3
  br label %2549

2549:                                             ; preds = %2548, %2531
  %2550 = load i32, ptr %63, align 4, !tbaa !9
  %2551 = load i32, ptr %15, align 4, !tbaa !9
  %2552 = sub nsw i32 %2551, %2550
  store i32 %2552, ptr %15, align 4, !tbaa !9
  br label %2553

2553:                                             ; preds = %2562, %2549
  %2554 = load i32, ptr %63, align 4, !tbaa !9
  %2555 = icmp ne i32 %2554, 0
  br i1 %2555, label %2556, label %2567

2556:                                             ; preds = %2553
  %2557 = load ptr, ptr %12, align 8, !tbaa !5
  %2558 = ptrtoint ptr %2557 to i64
  %2559 = and i64 %2558, 3
  %2560 = icmp eq i64 %2559, 0
  br i1 %2560, label %2561, label %2562

2561:                                             ; preds = %2556
  br label %2567

2562:                                             ; preds = %2556
  %2563 = load ptr, ptr %12, align 8, !tbaa !5
  %2564 = getelementptr inbounds i8, ptr %2563, i32 1
  store ptr %2564, ptr %12, align 8, !tbaa !5
  store i8 32, ptr %2563, align 1, !tbaa !11
  %2565 = load i32, ptr %63, align 4, !tbaa !9
  %2566 = add nsw i32 %2565, -1
  store i32 %2566, ptr %63, align 4, !tbaa !9
  br label %2553, !llvm.loop !68

2567:                                             ; preds = %2561, %2553
  br label %2568

2568:                                             ; preds = %2571, %2567
  %2569 = load i32, ptr %63, align 4, !tbaa !9
  %2570 = icmp sge i32 %2569, 4
  br i1 %2570, label %2571, label %2577

2571:                                             ; preds = %2568
  %2572 = load ptr, ptr %12, align 8, !tbaa !5
  store i32 538976288, ptr %2572, align 4, !tbaa !9
  %2573 = load ptr, ptr %12, align 8, !tbaa !5
  %2574 = getelementptr inbounds i8, ptr %2573, i64 4
  store ptr %2574, ptr %12, align 8, !tbaa !5
  %2575 = load i32, ptr %63, align 4, !tbaa !9
  %2576 = sub nsw i32 %2575, 4
  store i32 %2576, ptr %63, align 4, !tbaa !9
  br label %2568, !llvm.loop !69

2577:                                             ; preds = %2568
  br label %2578

2578:                                             ; preds = %2582, %2577
  %2579 = load i32, ptr %63, align 4, !tbaa !9
  %2580 = add nsw i32 %2579, -1
  store i32 %2580, ptr %63, align 4, !tbaa !9
  %2581 = icmp ne i32 %2579, 0
  br i1 %2581, label %2582, label %2585

2582:                                             ; preds = %2578
  %2583 = load ptr, ptr %12, align 8, !tbaa !5
  %2584 = getelementptr inbounds i8, ptr %2583, i32 1
  store ptr %2584, ptr %12, align 8, !tbaa !5
  store i8 32, ptr %2583, align 1, !tbaa !11
  br label %2578, !llvm.loop !70

2585:                                             ; preds = %2578
  %2586 = load ptr, ptr %7, align 8, !tbaa !5
  %2587 = icmp ne ptr %2586, null
  br i1 %2587, label %2588, label %2614

2588:                                             ; preds = %2585
  call void @llvm.lifetime.start.p0(i64 4, ptr %65) #3
  %2589 = load ptr, ptr %12, align 8, !tbaa !5
  %2590 = load ptr, ptr %9, align 8, !tbaa !5
  %2591 = ptrtoint ptr %2589 to i64
  %2592 = ptrtoint ptr %2590 to i64
  %2593 = sub i64 %2591, %2592
  %2594 = trunc i64 %2593 to i32
  store i32 %2594, ptr %65, align 4, !tbaa !9
  %2595 = load i32, ptr %65, align 4, !tbaa !9
  %2596 = add nsw i32 %2595, 1
  %2597 = icmp sge i32 %2596, 512
  br i1 %2597, label %2598, label %2610

2598:                                             ; preds = %2588
  %2599 = load i32, ptr %65, align 4, !tbaa !9
  %2600 = load i32, ptr %14, align 4, !tbaa !9
  %2601 = add nsw i32 %2600, %2599
  store i32 %2601, ptr %14, align 4, !tbaa !9
  %2602 = load ptr, ptr %7, align 8, !tbaa !5
  %2603 = load ptr, ptr %9, align 8, !tbaa !5
  %2604 = load ptr, ptr %8, align 8, !tbaa !5
  %2605 = load i32, ptr %65, align 4, !tbaa !9
  %2606 = call noundef ptr %2602(ptr noundef %2603, ptr noundef %2604, i32 noundef %2605)
  store ptr %2606, ptr %9, align 8, !tbaa !5
  store ptr %2606, ptr %12, align 8, !tbaa !5
  %2607 = icmp eq ptr null, %2606
  br i1 %2607, label %2608, label %2609

2608:                                             ; preds = %2598
  store i32 12, ptr %20, align 4
  br label %2611

2609:                                             ; preds = %2598
  br label %2610

2610:                                             ; preds = %2609, %2588
  store i32 0, ptr %20, align 4
  br label %2611

2611:                                             ; preds = %2610, %2608
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #3
  %2612 = load i32, ptr %20, align 4
  switch i32 %2612, label %2615 [
    i32 0, label %2613
  ]

2613:                                             ; preds = %2611
  br label %2614

2614:                                             ; preds = %2613, %2585
  store i32 0, ptr %20, align 4
  br label %2615

2615:                                             ; preds = %2614, %2611
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #3
  %2616 = load i32, ptr %20, align 4
  switch i32 %2616, label %2634 [
    i32 0, label %2617
  ]

2617:                                             ; preds = %2615
  br label %2528, !llvm.loop !71

2618:                                             ; preds = %2528
  br label %2619

2619:                                             ; preds = %2618, %2524
  br label %2620

2620:                                             ; preds = %2619, %2520
  br label %2631

2621:                                             ; preds = %426
  %2622 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %2623 = getelementptr inbounds i8, ptr %2622, i64 512
  %2624 = getelementptr inbounds i8, ptr %2623, i64 -1
  store ptr %2624, ptr %26, align 8, !tbaa !5
  %2625 = load ptr, ptr %13, align 8, !tbaa !5
  %2626 = getelementptr inbounds i8, ptr %2625, i64 0
  %2627 = load i8, ptr %2626, align 1, !tbaa !11
  %2628 = load ptr, ptr %26, align 8, !tbaa !5
  store i8 %2627, ptr %2628, 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 %16, align 4, !tbaa !9
  store i32 0, ptr %15, align 4, !tbaa !9
  %2629 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  store i8 0, ptr %2629, align 1, !tbaa !11
  %2630 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 0
  store i8 0, ptr %2630, 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 %1825

2631:                                             ; preds = %2620, %567
  %2632 = load ptr, ptr %13, align 8, !tbaa !5
  %2633 = getelementptr inbounds i8, ptr %2632, i32 1
  store ptr %2633, ptr %13, align 8, !tbaa !5
  store i32 0, ptr %20, align 4
  br label %2634

2634:                                             ; preds = %2631, %2615, %2517, %2437, %2345, %2260, %2180, %118, %91
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #3
  %2635 = load i32, ptr %20, align 4
  switch i32 %2635, label %2678 [
    i32 0, label %2636
    i32 11, label %2637
    i32 12, label %2669
  ]

2636:                                             ; preds = %2634
  br label %69, !llvm.loop !72

2637:                                             ; preds = %2634
  %2638 = load ptr, ptr %7, align 8, !tbaa !5
  %2639 = icmp ne ptr %2638, null
  br i1 %2639, label %2642, label %2640

2640:                                             ; preds = %2637
  %2641 = load ptr, ptr %12, align 8, !tbaa !5
  store i8 0, ptr %2641, align 1, !tbaa !11
  br label %2668

2642:                                             ; preds = %2637
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #3
  %2643 = load ptr, ptr %12, align 8, !tbaa !5
  %2644 = load ptr, ptr %9, align 8, !tbaa !5
  %2645 = ptrtoint ptr %2643 to i64
  %2646 = ptrtoint ptr %2644 to i64
  %2647 = sub i64 %2645, %2646
  %2648 = trunc i64 %2647 to i32
  store i32 %2648, ptr %66, align 4, !tbaa !9
  %2649 = load i32, ptr %66, align 4, !tbaa !9
  %2650 = add nsw i32 %2649, 511
  %2651 = icmp sge i32 %2650, 512
  br i1 %2651, label %2652, label %2664

2652:                                             ; preds = %2642
  %2653 = load i32, ptr %66, align 4, !tbaa !9
  %2654 = load i32, ptr %14, align 4, !tbaa !9
  %2655 = add nsw i32 %2654, %2653
  store i32 %2655, ptr %14, align 4, !tbaa !9
  %2656 = load ptr, ptr %7, align 8, !tbaa !5
  %2657 = load ptr, ptr %9, align 8, !tbaa !5
  %2658 = load ptr, ptr %8, align 8, !tbaa !5
  %2659 = load i32, ptr %66, align 4, !tbaa !9
  %2660 = call noundef ptr %2656(ptr noundef %2657, ptr noundef %2658, i32 noundef %2659)
  store ptr %2660, ptr %9, align 8, !tbaa !5
  store ptr %2660, ptr %12, align 8, !tbaa !5
  %2661 = icmp eq ptr null, %2660
  br i1 %2661, label %2662, label %2663

2662:                                             ; preds = %2652
  store i32 12, ptr %20, align 4
  br label %2665

2663:                                             ; preds = %2652
  br label %2664

2664:                                             ; preds = %2663, %2642
  store i32 0, ptr %20, align 4
  br label %2665

2665:                                             ; preds = %2664, %2662
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #3
  %2666 = load i32, ptr %20, align 4
  switch i32 %2666, label %2678 [
    i32 0, label %2667
    i32 12, label %2669
  ]

2667:                                             ; preds = %2665
  br label %2668

2668:                                             ; preds = %2667, %2640
  br label %2669

2669:                                             ; preds = %2668, %2665, %2634
  %2670 = load i32, ptr %14, align 4, !tbaa !9
  %2671 = load ptr, ptr %12, align 8, !tbaa !5
  %2672 = load ptr, ptr %9, align 8, !tbaa !5
  %2673 = ptrtoint ptr %2671 to i64
  %2674 = ptrtoint ptr %2672 to i64
  %2675 = sub i64 %2673, %2674
  %2676 = trunc i64 %2675 to i32
  %2677 = add nsw i32 %2670, %2676
  store i32 %2677, ptr %6, align 4
  store i32 1, ptr %20, align 4
  br label %2678

2678:                                             ; preds = %2669, %2665, %2634
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #3
  %2679 = load i32, ptr %6, align 4
  ret i32 %2679

2680:                                             ; preds = %1799, %510, %171
  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: mustprogress nounwind uwtable
declare hidden noundef i32 @_ZL20stbsp__real_to_partsPxPid(ptr noundef, ptr noundef, double noundef) #2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZL16stbsp__lead_signjPc(i32 noundef, ptr noundef) #2

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

attributes #0 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { 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++ 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 = distinct !{!16, !13}
!17 = distinct !{!17, !13}
!18 = distinct !{!18, !13}
!19 = distinct !{!19, !13}
!20 = !{!21, !21, i64 0}
!21 = !{!"double", !7, i64 0}
!22 = !{!23, !23, i64 0}
!23 = !{!"long long", !7, i64 0}
!24 = distinct !{!24, !13}
!25 = distinct !{!25, !13}
!26 = distinct !{!26, !13}
!27 = distinct !{!27, !13}
!28 = distinct !{!28, !13}
!29 = distinct !{!29, !13}
!30 = distinct !{!30, !13}
!31 = distinct !{!31, !13}
!32 = distinct !{!32, !13}
!33 = distinct !{!33, !13}
!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 = !{!42, !42, i64 0}
!42 = !{!"short", !7, i64 0}
!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}
!62 = distinct !{!62, !13}
!63 = distinct !{!63, !13}
!64 = distinct !{!64, !13}
!65 = distinct !{!65, !13}
!66 = distinct !{!66, !13}
!67 = distinct !{!67, !13}
!68 = distinct !{!68, !13}
!69 = distinct !{!69, !13}
!70 = distinct !{!70, !13}
!71 = distinct !{!71, !13}
!72 = distinct !{!72, !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"

@_ZL13stbsp__period = external hidden local_unnamed_addr global i8, align 1
@_ZL12stbsp__comma = external hidden local_unnamed_addr global i8, align 1
@_ZZ16stbsp_vsprintfcbE3hex = external hidden local_unnamed_addr global [19 x i8], align 16
@_ZZ16stbsp_vsprintfcbE4hexu = 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
@_ZL16stbsp__digitpair = external hidden local_unnamed_addr global [201 x i8], align 16

; Function Attrs: mustprogress 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
  %.not1088 = 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 = %.backedge2364, %5
  %.1751 = phi i32 [ 0, %5 ], [ %.1751.be, %.backedge2364 ]
  %.1737 = phi ptr [ %3, %5 ], [ %.1737.be, %.backedge2364 ]
  %.1682 = phi ptr [ %2, %5 ], [ %.1682.be, %.backedge2364 ]
  %.1 = phi ptr [ %2, %5 ], [ %.1.be, %.backedge2364 ]
  %32 = ptrtoint ptr %.1737 to i64
  %33 = and i64 %32, 3
  %.not = icmp eq i64 %33, 0
  br i1 %.not, label %.preheader1445, label %..thread1251_crit_edge

..thread1251_crit_edge:                           ; preds = %31
  %.pre = load i8, ptr %.1737, align 1, !tbaa !5
  br label %.thread1251

.preheader1445:                                   ; preds = %31
  %34 = load i32, ptr %.1737, 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
  %.not10861524 = icmp eq i32 %39, 0
  %40 = trunc i32 %34 to i8
  br i1 %.not10861524, label %.lr.ph, label %.thread1251

.lr.ph:                                           ; preds = %.preheader1445
  %41 = ptrtoint ptr %.1 to i64
  br i1 %.not1088, 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
  %.not1087.us2266 = icmp eq i32 %43, 0
  br i1 %.not1087.us2266, label %.lr.ph2269, label %thread-pre-split

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

.lr.ph2269:                                       ; preds = %.lr.ph.split.us.preheader, %.lr.ph.split.us
  %.47401525.us2268 = phi ptr [ %48, %.lr.ph.split.us ], [ %.1737, %.lr.ph.split.us.preheader ]
  %.76881526.us2267 = phi ptr [ %47, %.lr.ph.split.us ], [ %.1682, %.lr.ph.split.us.preheader ]
  %46 = phi i32 [ %49, %.lr.ph.split.us ], [ %34, %.lr.ph.split.us.preheader ]
  store i32 %46, ptr %.76881526.us2267, align 4, !tbaa !8
  %47 = getelementptr inbounds i8, ptr %.76881526.us2267, i64 4
  %48 = getelementptr inbounds i8, ptr %.47401525.us2268, 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
  %.not1086.us = icmp eq i32 %54, 0
  br i1 %.not1086.us, label %.lr.ph.split.us, label %.thread1251.loopexit

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

.thread1251:                                      ; preds = %83, %79, %.thread1251.loopexit, %..thread1251_crit_edge, %.preheader1445
  %56 = phi i8 [ %.pre, %..thread1251_crit_edge ], [ %40, %.preheader1445 ], [ %55, %.thread1251.loopexit ], [ %92, %83 ], [ %74, %79 ]
  %.2738 = phi ptr [ %.1737, %..thread1251_crit_edge ], [ %.1737, %.preheader1445 ], [ %48, %.thread1251.loopexit ], [ %85, %83 ], [ %.47401525, %79 ]
  %.2683 = phi ptr [ %.1682, %..thread1251_crit_edge ], [ %.1682, %.preheader1445 ], [ %47, %.thread1251.loopexit ], [ %84, %83 ], [ %.76881526, %79 ]
  %57 = icmp eq i8 %56, 37
  br i1 %57, label %.preheader2359, 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, %.thread1251
  %59 = phi i8 [ %56, %.thread1251 ], [ %40, %.lr.ph.split.us.preheader ], [ %58, %thread-pre-split.loopexit ], [ %74, %.lr.ph.split ]
  %.3739 = phi ptr [ %.2738, %.thread1251 ], [ %.1737, %.lr.ph.split.us.preheader ], [ %48, %thread-pre-split.loopexit ], [ %.47401525, %.lr.ph.split ]
  %.3684 = phi ptr [ %.2683, %.thread1251 ], [ %.1682, %.lr.ph.split.us.preheader ], [ %47, %thread-pre-split.loopexit ], [ %.76881526, %.lr.ph.split ]
  %60 = icmp eq i8 %59, 0
  br i1 %60, label %1379, label %61

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

62:                                               ; preds = %61
  %63 = ptrtoint ptr %.3684 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 %.1751, %66
  %70 = call noundef ptr %0(ptr noundef %.1, ptr noundef %1, i32 noundef %66)
  %71 = icmp eq ptr %70, null
  br i1 %71, label %.thread1411, label %..thread_crit_edge

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

.thread:                                          ; preds = %..thread_crit_edge, %62, %61
  %72 = phi i8 [ %59, %61 ], [ %59, %62 ], [ %.pre2046, %..thread_crit_edge ]
  %.4754 = phi i32 [ %.1751, %61 ], [ %.1751, %62 ], [ %69, %..thread_crit_edge ]
  %.6687 = phi ptr [ %.3684, %61 ], [ %.3684, %62 ], [ %70, %..thread_crit_edge ]
  %.4 = phi ptr [ %.1, %61 ], [ %.1, %62 ], [ %70, %..thread_crit_edge ]
  %73 = getelementptr inbounds i8, ptr %.6687, i64 1
  store i8 %72, ptr %.6687, align 1, !tbaa !5
  br label %.backedge2364

.backedge2364:                                    ; preds = %._crit_edge1839, %264, %1342, %.thread
  %.1751.be = phi i32 [ %.4754, %.thread ], [ %.35785.lcssa, %._crit_edge1839 ], [ %.1751, %264 ], [ %.44794.ph, %1342 ]
  %.3739.pn = phi ptr [ %.3739, %.thread ], [ %.12748, %1342 ], [ %.12748, %264 ], [ %.12748, %._crit_edge1839 ]
  %.1682.be = phi ptr [ %73, %.thread ], [ %.54.lcssa, %._crit_edge1839 ], [ %.2683, %264 ], [ %.67.ph, %1342 ]
  %.1.be = phi ptr [ %.4, %.thread ], [ %.35.lcssa, %._crit_edge1839 ], [ %.1, %264 ], [ %.44.ph, %1342 ]
  %.1737.be = getelementptr inbounds i8, ptr %.3739.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 ]
  %.76881526 = phi ptr [ %84, %83 ], [ %.1682, %.lr.ph ]
  %.47401525 = phi ptr [ %85, %83 ], [ %.1737, %.lr.ph ]
  %77 = add i32 %76, -16843009
  %78 = and i32 %75, %77
  %.not1087 = icmp eq i32 %78, 0
  br i1 %.not1087, label %79, label %thread-pre-split

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

83:                                               ; preds = %79
  store i32 %76, ptr %.76881526, align 4, !tbaa !8
  %84 = getelementptr inbounds i8, ptr %.76881526, i64 4
  %85 = getelementptr inbounds i8, ptr %.47401525, 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
  %.not1086 = icmp eq i32 %91, 0
  %92 = trunc i32 %86 to i8
  br i1 %.not1086, label %.lr.ph.split, label %.thread1251

.preheader2359:                                   ; preds = %.thread1251, %.backedge
  %.0839 = phi i32 [ %95, %.backedge ], [ 0, %.thread1251 ]
  %.2738.pn = phi ptr [ %.6742, %.backedge ], [ %.2738, %.thread1251 ]
  %.6742 = getelementptr inbounds i8, ptr %.2738.pn, i64 1
  %93 = load i8, ptr %.6742, align 1, !tbaa !5
  switch i8 %93, label %.loopexit1471 [
    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 = %.preheader2359
  br label %.backedge

.backedge:                                        ; preds = %99, %101, %.preheader2359, %94, %96, %97, %98, %103
  %.sink = phi i32 [ 1, %94 ], [ 4, %96 ], [ 8, %97 ], [ 64, %98 ], [ 1024, %103 ], [ 2, %.preheader2359 ], [ %., %101 ], [ 256, %99 ]
  %95 = or i32 %.0839, %.sink
  br label %.preheader2359, !llvm.loop !12

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

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

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

99:                                               ; preds = %.preheader2359
  %100 = and i32 %.0839, 256
  %.not1091 = icmp eq i32 %100, 0
  br i1 %.not1091, label %.backedge, label %101

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

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

104:                                              ; preds = %.preheader2359
  %105 = or i32 %.0839, 16
  %106 = getelementptr inbounds i8, ptr %.2738.pn, i64 2
  %.pr1261 = load i8, ptr %106, align 1, !tbaa !5
  br label %.loopexit1471

.loopexit1471:                                    ; preds = %.preheader2359, %104
  %107 = phi i8 [ %.pr1261, %104 ], [ %93, %.preheader2359 ]
  %.2841 = phi i32 [ %105, %104 ], [ %.0839, %.preheader2359 ]
  %.7743 = phi ptr [ %106, %104 ], [ %.6742, %.preheader2359 ]
  %108 = icmp eq i8 %107, 42
  br i1 %108, label %110, label %.preheader1470

.preheader1470:                                   ; preds = %.loopexit1471
  %109 = add i8 %107, -48
  %or.cond11961534 = icmp ult i8 %109, 10
  br i1 %or.cond11961534, label %.lr.ph1537, label %.critedge

110:                                              ; preds = %.loopexit1471
  %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 %.7743, i64 1
  %.pr1262 = load i8, ptr %124, align 1, !tbaa !5
  br label %.critedge

.lr.ph1537:                                       ; preds = %.preheader1470, %.lr.ph1537
  %125 = phi i8 [ %131, %.lr.ph1537 ], [ %107, %.preheader1470 ]
  %.87441536 = phi ptr [ %130, %.lr.ph1537 ], [ %.7743, %.preheader1470 ]
  %.08031535 = phi i32 [ %129, %.lr.ph1537 ], [ 0, %.preheader1470 ]
  %126 = zext nneg i8 %125 to i32
  %127 = mul nsw i32 %.08031535, 10
  %128 = add i32 %127, -48
  %129 = add i32 %128, %126
  %130 = getelementptr inbounds i8, ptr %.87441536, i64 1
  %131 = load i8, ptr %130, align 1, !tbaa !5
  %132 = add i8 %131, -48
  %or.cond1196 = icmp ult i8 %132, 10
  br i1 %or.cond1196, label %.lr.ph1537, label %.critedge, !llvm.loop !13

.critedge:                                        ; preds = %.lr.ph1537, %.preheader1470, %121
  %133 = phi i8 [ %.pr1262, %121 ], [ %107, %.preheader1470 ], [ %131, %.lr.ph1537 ]
  %.1804 = phi i32 [ %123, %121 ], [ 0, %.preheader1470 ], [ %129, %.lr.ph1537 ]
  %.9745 = phi ptr [ %124, %121 ], [ %.7743, %.preheader1470 ], [ %130, %.lr.ph1537 ]
  %134 = icmp eq i8 %133, 46
  br i1 %134, label %135, label %.critedge16

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

.preheader1469:                                   ; preds = %135
  %139 = add i8 %137, -48
  %or.cond11971541 = icmp ult i8 %139, 10
  br i1 %or.cond11971541, label %.lr.ph1544, 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 %.9745, i64 2
  %.pr1263.pre = load i8, ptr %154, align 1, !tbaa !5
  br label %.critedge16

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

.critedge16:                                      ; preds = %.lr.ph1544, %151, %.critedge, %.preheader1469
  %163 = phi i8 [ %137, %.preheader1469 ], [ %133, %.critedge ], [ %.pr1263.pre, %151 ], [ %161, %.lr.ph1544 ]
  %.1814 = phi i32 [ 0, %.preheader1469 ], [ -1, %.critedge ], [ %153, %151 ], [ %159, %.lr.ph1544 ]
  %.11747 = phi ptr [ %136, %.preheader1469 ], [ %.9745, %.critedge ], [ %154, %151 ], [ %160, %.lr.ph1544 ]
  switch i8 %163, label %thread-pre-split1265 [
    i8 104, label %164
    i8 108, label %167
    i8 106, label %174
    i8 122, label %177
    i8 116, label %177
    i8 73, label %180
  ]

164:                                              ; preds = %.critedge16
  %165 = or i32 %.2841, 512
  %166 = getelementptr inbounds i8, ptr %.11747, i64 1
  br label %thread-pre-split1265

167:                                              ; preds = %.critedge16
  %168 = getelementptr inbounds i8, ptr %.11747, i64 1
  %169 = load i8, ptr %168, align 1, !tbaa !5
  %170 = icmp eq i8 %169, 108
  br i1 %170, label %171, label %197

171:                                              ; preds = %167
  %172 = or i32 %.2841, 32
  %173 = getelementptr inbounds i8, ptr %.11747, i64 2
  br label %thread-pre-split1265

174:                                              ; preds = %.critedge16
  %175 = or i32 %.2841, 32
  %176 = getelementptr inbounds i8, ptr %.11747, i64 1
  br label %thread-pre-split1265

177:                                              ; preds = %.critedge16, %.critedge16
  %178 = or i32 %.2841, 32
  %179 = getelementptr inbounds i8, ptr %.11747, i64 1
  br label %thread-pre-split1265

180:                                              ; preds = %.critedge16
  %181 = getelementptr inbounds i8, ptr %.11747, i64 1
  %182 = load i8, ptr %181, align 1, !tbaa !5
  switch i8 %182, label %.thread1264 [
    i8 54, label %183
    i8 51, label %190
  ]

183:                                              ; preds = %180
  %184 = getelementptr inbounds i8, ptr %.11747, i64 2
  %185 = load i8, ptr %184, align 1, !tbaa !5
  %186 = icmp eq i8 %185, 52
  br i1 %186, label %187, label %.thread1264

187:                                              ; preds = %183
  %188 = or i32 %.2841, 32
  %189 = getelementptr inbounds i8, ptr %.11747, i64 3
  br label %thread-pre-split1265

190:                                              ; preds = %180
  %191 = getelementptr inbounds i8, ptr %.11747, i64 2
  %192 = load i8, ptr %191, align 1, !tbaa !5
  %193 = icmp eq i8 %192, 50
  br i1 %193, label %194, label %.thread1264

194:                                              ; preds = %190
  %195 = getelementptr inbounds i8, ptr %.11747, i64 3
  br label %thread-pre-split1265

.thread1264:                                      ; preds = %180, %183, %190
  %196 = or i32 %.2841, 32
  br label %thread-pre-split1265

thread-pre-split1265:                             ; preds = %164, %174, %177, %171, %194, %.thread1264, %187, %.critedge16
  %.3842.ph = phi i32 [ %165, %164 ], [ %172, %171 ], [ %175, %174 ], [ %178, %177 ], [ %196, %.thread1264 ], [ %.2841, %194 ], [ %188, %187 ], [ %.2841, %.critedge16 ]
  %.12748.ph = phi ptr [ %166, %164 ], [ %173, %171 ], [ %176, %174 ], [ %179, %177 ], [ %181, %.thread1264 ], [ %195, %194 ], [ %189, %187 ], [ %.11747, %.critedge16 ]
  %.pr1266 = load i8, ptr %.12748.ph, align 1, !tbaa !5
  br label %197

197:                                              ; preds = %thread-pre-split1265, %167
  %198 = phi i8 [ %.pr1266, %thread-pre-split1265 ], [ %169, %167 ]
  %.3842 = phi i32 [ %.3842.ph, %thread-pre-split1265 ], [ %.2841, %167 ]
  %.12748 = phi ptr [ %.12748.ph, %thread-pre-split1265 ], [ %168, %167 ]
  switch i8 %198, label %1378 [
    i8 115, label %199
    i8 99, label %238
    i8 110, label %253
    i8 65, label %273
    i8 97, label %272
    i8 71, label %401
    i8 103, label %400
    i8 69, label %455
    i8 101, label %454
    i8 102, label %549
    i8 66, label %791
    i8 98, label %790
    i8 111, label %797
    i8 112, label %801
    i8 88, label %805
    i8 120, label %804
    i8 117, label %891
    i8 105, label %891
    i8 100, label %891
  ]

199:                                              ; preds = %197
  %200 = load i32, ptr %4, align 8
  %201 = icmp ult i32 %200, 41
  br i1 %201, label %202, label %207

202:                                              ; preds = %199
  %203 = load ptr, ptr %15, align 8
  %204 = zext nneg i32 %200 to i64
  %205 = getelementptr i8, ptr %203, i64 %204
  %206 = add nuw nsw i32 %200, 8
  store i32 %206, ptr %4, align 8
  br label %210

207:                                              ; preds = %199
  %208 = load ptr, ptr %14, align 8
  %209 = getelementptr i8, ptr %208, i64 8
  store ptr %209, ptr %14, align 8
  br label %210

210:                                              ; preds = %207, %202
  %211 = phi ptr [ %205, %202 ], [ %208, %207 ]
  %212 = load ptr, ptr %211, align 8, !tbaa !15
  %213 = icmp eq ptr %212, null
  %spec.store.select = select i1 %213, ptr @.str, ptr %212
  %214 = ptrtoint ptr %spec.store.select to i64
  %215 = icmp sgt i32 %.1814, -1
  br label %216

216:                                              ; preds = %.thread1267, %210
  %storemerge1145 = phi ptr [ %spec.store.select, %210 ], [ %222, %.thread1267 ]
  store ptr %storemerge1145, ptr %13, align 8, !tbaa !15
  %217 = ptrtoint ptr %storemerge1145 to i64
  %218 = and i64 %217, 3
  %219 = icmp eq i64 %218, 0
  br i1 %219, label %223, label %.thread1267

.thread1267:                                      ; preds = %235, %.lr.ph1676, %227, %216
  %.promoted16721679 = phi ptr [ %storemerge1145, %216 ], [ %storemerge1145, %227 ], [ %236, %235 ], [ %230, %.lr.ph1676 ]
  %220 = load i8, ptr %.promoted16721679, align 1, !tbaa !5
  %221 = icmp eq i8 %220, 0
  %222 = getelementptr inbounds i8, ptr %.promoted16721679, i64 1
  br i1 %221, label %.thread1267._crit_edge, label %216, !llvm.loop !17

.thread1267._crit_edge:                           ; preds = %.thread1267
  %.pre2058 = ptrtoint ptr %.promoted16721679 to i64
  %.pre2060 = sub i64 %.pre2058, %214
  %.pre2062 = trunc i64 %.pre2060 to i32
  br label %split

223:                                              ; preds = %216
  br i1 %215, label %224, label %.lr.ph1676.preheader

224:                                              ; preds = %223
  %225 = sub i64 %217, %214
  %226 = trunc i64 %225 to i32
  %.not1146 = icmp ugt i32 %.1814, %226
  br i1 %.not1146, label %227, label %split

227:                                              ; preds = %224
  %228 = sub nsw i32 %.1814, %226
  %229 = lshr i32 %228, 2
  %.not11471673 = icmp ult i32 %228, 4
  br i1 %.not11471673, label %.thread1267, label %.lr.ph1676.preheader

.lr.ph1676.preheader:                             ; preds = %223, %227
  %.19331674.ph = phi i32 [ -1, %223 ], [ %229, %227 ]
  br label %.lr.ph1676

.lr.ph1676:                                       ; preds = %.lr.ph1676.preheader, %235
  %.19331674 = phi i32 [ %237, %235 ], [ %.19331674.ph, %.lr.ph1676.preheader ]
  %230 = phi ptr [ %236, %235 ], [ %storemerge1145, %.lr.ph1676.preheader ]
  %231 = load i32, ptr %230, align 4, !tbaa !8
  %232 = sub i32 16843008, %231
  %233 = or i32 %232, %231
  %234 = and i32 %233, -2139062144
  %.not1148 = icmp eq i32 %234, -2139062144
  br i1 %.not1148, label %235, label %.thread1267

235:                                              ; preds = %.lr.ph1676
  %236 = getelementptr inbounds i8, ptr %230, i64 4
  store ptr %236, ptr %13, align 8, !tbaa !15
  %237 = add i32 %.19331674, -1
  %.not1147 = icmp eq i32 %237, 0
  br i1 %.not1147, label %.thread1267, label %.lr.ph1676

split:                                            ; preds = %224, %.thread1267._crit_edge
  %.pre-phi2063 = phi i32 [ %.pre2062, %.thread1267._crit_edge ], [ %226, %224 ]
  %spec.select = call i32 @llvm.umin.i32(i32 %.1814, i32 %.pre-phi2063)
  store i32 %spec.select, 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 %994

238:                                              ; preds = %197
  %239 = load i32, ptr %4, align 8
  %240 = icmp ult i32 %239, 41
  br i1 %240, label %241, label %246

241:                                              ; preds = %238
  %242 = load ptr, ptr %15, align 8
  %243 = zext nneg i32 %239 to i64
  %244 = getelementptr i8, ptr %242, i64 %243
  %245 = add nuw nsw i32 %239, 8
  store i32 %245, ptr %4, align 8
  br label %249

246:                                              ; preds = %238
  %247 = load ptr, ptr %14, align 8
  %248 = getelementptr i8, ptr %247, i64 8
  store ptr %248, ptr %14, align 8
  br label %249

249:                                              ; preds = %246, %241
  %250 = phi ptr [ %244, %241 ], [ %247, %246 ]
  %251 = load i32, ptr %250, align 4, !tbaa !8
  %252 = trunc i32 %251 to i8
  store i8 %252, 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 %994

253:                                              ; preds = %197
  %254 = load i32, ptr %4, align 8
  %255 = icmp ult i32 %254, 41
  br i1 %255, label %256, label %261

256:                                              ; preds = %253
  %257 = load ptr, ptr %15, align 8
  %258 = zext nneg i32 %254 to i64
  %259 = getelementptr i8, ptr %257, i64 %258
  %260 = add nuw nsw i32 %254, 8
  store i32 %260, ptr %4, align 8
  br label %264

261:                                              ; preds = %253
  %262 = load ptr, ptr %14, align 8
  %263 = getelementptr i8, ptr %262, i64 8
  store ptr %263, ptr %14, align 8
  br label %264

264:                                              ; preds = %261, %256
  %265 = phi ptr [ %259, %256 ], [ %262, %261 ]
  %266 = load ptr, ptr %265, align 8, !tbaa !15
  %267 = ptrtoint ptr %.2683 to i64
  %268 = ptrtoint ptr %.1 to i64
  %269 = sub i64 %267, %268
  %270 = trunc i64 %269 to i32
  %271 = add nsw i32 %.1751, %270
  store i32 %271, ptr %266, align 4, !tbaa !8
  br label %.backedge2364

272:                                              ; preds = %197
  br label %273

273:                                              ; preds = %197, %272
  %.0925 = phi ptr [ @_ZZ16stbsp_vsprintfcbE3hex, %272 ], [ @_ZZ16stbsp_vsprintfcbE4hexu, %197 ]
  %274 = load i32, ptr %20, align 4
  %275 = icmp ult i32 %274, 161
  br i1 %275, label %276, label %281

276:                                              ; preds = %273
  %277 = load ptr, ptr %15, align 8
  %278 = zext nneg i32 %274 to i64
  %279 = getelementptr i8, ptr %277, i64 %278
  %280 = add nuw nsw i32 %274, 16
  store i32 %280, ptr %20, align 4
  br label %284

281:                                              ; preds = %273
  %282 = load ptr, ptr %14, align 8
  %283 = getelementptr i8, ptr %282, i64 8
  store ptr %283, ptr %14, align 8
  br label %284

284:                                              ; preds = %281, %276
  %285 = phi ptr [ %279, %276 ], [ %282, %281 ]
  %286 = load double, ptr %285, align 8, !tbaa !18
  %287 = icmp eq i32 %.1814, -1
  %spec.store.select17 = select i1 %287, i32 6, i32 %.1814
  %288 = call noundef i32 @_ZL20stbsp__real_to_partsPxPid(ptr noundef nonnull %11, ptr noundef nonnull %12, double noundef %286)
  %.not1140 = icmp eq i32 %288, 0
  %289 = or i32 %.3842, 128
  %spec.select1198 = select i1 %.not1140, i32 %.3842, i32 %289
  call void @_ZL16stbsp__lead_signjPc(i32 noundef %spec.select1198, ptr noundef nonnull %8)
  %290 = load i32, ptr %12, align 4, !tbaa !8
  %291 = icmp eq i32 %290, -1023
  %292 = load i64, ptr %11, align 8, !tbaa !20
  br i1 %291, label %293, label %295

293:                                              ; preds = %284
  %.not1141 = icmp eq i64 %292, 0
  %294 = select i1 %.not1141, i32 0, i32 -1022
  store i32 %294, ptr %12, align 4, !tbaa !8
  br label %297

295:                                              ; preds = %284
  %296 = or i64 %292, 4503599627370496
  br label %297

297:                                              ; preds = %295, %293
  %298 = phi i32 [ %290, %295 ], [ %294, %293 ]
  %299 = phi i64 [ %296, %295 ], [ %292, %293 ]
  %300 = shl i64 %299, 8
  %301 = icmp slt i32 %spec.store.select17, 15
  %302 = shl nsw i32 %spec.store.select17, 2
  %303 = zext nneg i32 %302 to i64
  %304 = lshr i64 576460752303423488, %303
  %305 = select i1 %301, i64 %304, i64 0
  %storemerge1142 = add i64 %300, %305
  %306 = load i8, ptr %8, align 1, !tbaa !5
  %307 = sext i8 %306 to i64
  %308 = add nsw i64 %307, 1
  %309 = getelementptr inbounds [8 x i8], ptr %8, i64 0, i64 %308
  store i8 48, ptr %309, align 1, !tbaa !5
  %310 = load i8, ptr %8, align 1, !tbaa !5
  %311 = sext i8 %310 to i64
  %312 = add nsw i64 %311, 2
  %313 = getelementptr inbounds [8 x i8], ptr %8, i64 0, i64 %312
  store i8 120, ptr %313, align 1, !tbaa !5
  %314 = load i8, ptr %8, align 1, !tbaa !5
  %315 = add i8 %314, 2
  store i8 %315, ptr %8, align 1, !tbaa !5
  %316 = lshr i64 %storemerge1142, 60
  %317 = getelementptr inbounds i8, ptr %.0925, i64 %316
  %318 = load i8, ptr %317, align 1, !tbaa !5
  store i8 %318, ptr %21, align 16, !tbaa !5
  %319 = shl i64 %storemerge1142, 4
  store i64 %319, ptr %11, align 8, !tbaa !20
  %.not1143 = icmp eq i32 %spec.store.select17, 0
  br i1 %.not1143, label %.thread2075, label %.lr.ph1662.preheader

.thread2075:                                      ; preds = %297
  store ptr %23, ptr %13, align 8, !tbaa !15
  br label %353

.lr.ph1662.preheader:                             ; preds = %297
  %320 = load i8, ptr @_ZL13stbsp__period, align 1, !tbaa !5
  store i8 %320, ptr %23, align 1, !tbaa !5
  store ptr %24, ptr %13, align 8, !tbaa !15
  %spec.store.select18 = call i32 @llvm.umin.i32(i32 %spec.store.select17, i32 13)
  %321 = icmp sgt i32 %spec.store.select17, %spec.store.select18
  %322 = sub i32 %spec.store.select17, %spec.store.select18
  %spec.select1199 = select i1 %321, i32 %322, i32 0
  %xtraiter2451 = and i32 %spec.store.select18, 3
  %lcmp.mod2452.not = icmp eq i32 %xtraiter2451, 0
  br i1 %lcmp.mod2452.not, label %.lr.ph1662.prol.loopexit, label %.lr.ph1662.prol

.lr.ph1662.prol:                                  ; preds = %.lr.ph1662.preheader, %.lr.ph1662.prol
  %.18841660.prol = phi ptr [ %328, %.lr.ph1662.prol ], [ %24, %.lr.ph1662.preheader ]
  %.39351659.prol = phi i32 [ %324, %.lr.ph1662.prol ], [ %spec.store.select18, %.lr.ph1662.preheader ]
  %323 = phi i64 [ %329, %.lr.ph1662.prol ], [ %319, %.lr.ph1662.preheader ]
  %prol.iter2453 = phi i32 [ %prol.iter2453.next, %.lr.ph1662.prol ], [ 0, %.lr.ph1662.preheader ]
  %324 = add nsw i32 %.39351659.prol, -1
  %325 = lshr i64 %323, 60
  %326 = getelementptr inbounds i8, ptr %.0925, i64 %325
  %327 = load i8, ptr %326, align 1, !tbaa !5
  %328 = getelementptr inbounds i8, ptr %.18841660.prol, i64 1
  store i8 %327, ptr %.18841660.prol, align 1, !tbaa !5
  %329 = shl i64 %323, 4
  %prol.iter2453.next = add i32 %prol.iter2453, 1
  %prol.iter2453.cmp.not = icmp eq i32 %prol.iter2453.next, %xtraiter2451
  br i1 %prol.iter2453.cmp.not, label %.lr.ph1662.prol.loopexit, label %.lr.ph1662.prol, !llvm.loop !22

.lr.ph1662.prol.loopexit:                         ; preds = %.lr.ph1662.prol, %.lr.ph1662.preheader
  %.lcssa2404.unr = phi ptr [ poison, %.lr.ph1662.preheader ], [ %328, %.lr.ph1662.prol ]
  %.lcssa2403.unr = phi i64 [ poison, %.lr.ph1662.preheader ], [ %329, %.lr.ph1662.prol ]
  %.18841660.unr = phi ptr [ %24, %.lr.ph1662.preheader ], [ %328, %.lr.ph1662.prol ]
  %.39351659.unr = phi i32 [ %spec.store.select18, %.lr.ph1662.preheader ], [ %324, %.lr.ph1662.prol ]
  %.unr = phi i64 [ %319, %.lr.ph1662.preheader ], [ %329, %.lr.ph1662.prol ]
  %330 = icmp ult i32 %spec.store.select17, 4
  br i1 %330, label %._crit_edge1663, label %.lr.ph1662

.lr.ph1662:                                       ; preds = %.lr.ph1662.prol.loopexit, %.lr.ph1662
  %.18841660 = phi ptr [ %351, %.lr.ph1662 ], [ %.18841660.unr, %.lr.ph1662.prol.loopexit ]
  %.39351659 = phi i32 [ %346, %.lr.ph1662 ], [ %.39351659.unr, %.lr.ph1662.prol.loopexit ]
  %331 = phi i64 [ %352, %.lr.ph1662 ], [ %.unr, %.lr.ph1662.prol.loopexit ]
  %332 = lshr i64 %331, 60
  %333 = getelementptr inbounds i8, ptr %.0925, i64 %332
  %334 = load i8, ptr %333, align 1, !tbaa !5
  %335 = getelementptr inbounds i8, ptr %.18841660, i64 1
  store i8 %334, ptr %.18841660, align 1, !tbaa !5
  %336 = lshr i64 %331, 56
  %337 = and i64 %336, 15
  %338 = getelementptr inbounds i8, ptr %.0925, i64 %337
  %339 = load i8, ptr %338, align 1, !tbaa !5
  %340 = getelementptr inbounds i8, ptr %.18841660, i64 2
  store i8 %339, ptr %335, align 1, !tbaa !5
  %341 = lshr i64 %331, 52
  %342 = and i64 %341, 15
  %343 = getelementptr inbounds i8, ptr %.0925, i64 %342
  %344 = load i8, ptr %343, align 1, !tbaa !5
  %345 = getelementptr inbounds i8, ptr %.18841660, i64 3
  store i8 %344, ptr %340, align 1, !tbaa !5
  %346 = add nsw i32 %.39351659, -4
  %347 = lshr i64 %331, 48
  %348 = and i64 %347, 15
  %349 = getelementptr inbounds i8, ptr %.0925, i64 %348
  %350 = load i8, ptr %349, align 1, !tbaa !5
  %351 = getelementptr inbounds i8, ptr %.18841660, i64 4
  store i8 %350, ptr %345, align 1, !tbaa !5
  %352 = shl i64 %331, 16
  %.not1144.3 = icmp eq i32 %346, 0
  br i1 %.not1144.3, label %._crit_edge1663, label %.lr.ph1662, !llvm.loop !24

._crit_edge1663:                                  ; preds = %.lr.ph1662, %.lr.ph1662.prol.loopexit
  %.lcssa2404 = phi ptr [ %.lcssa2404.unr, %.lr.ph1662.prol.loopexit ], [ %351, %.lr.ph1662 ]
  %.lcssa2403 = phi i64 [ %.lcssa2403.unr, %.lr.ph1662.prol.loopexit ], [ %352, %.lr.ph1662 ]
  store i64 %.lcssa2403, ptr %11, align 8, !tbaa !20
  br label %353

353:                                              ; preds = %.thread2075, %._crit_edge1663
  %spec.select11992080 = phi i32 [ %spec.select1199, %._crit_edge1663 ], [ 0, %.thread2075 ]
  %.08832079 = phi ptr [ %24, %._crit_edge1663 ], [ %23, %.thread2075 ]
  %.1884.lcssa = phi ptr [ %.lcssa2404, %._crit_edge1663 ], [ %23, %.thread2075 ]
  %354 = getelementptr inbounds i8, ptr %.0925, i64 17
  %355 = load i8, ptr %354, align 1, !tbaa !5
  store i8 %355, ptr %25, align 1, !tbaa !5
  %356 = icmp slt i32 %298, 0
  br i1 %356, label %357, label %359

357:                                              ; preds = %353
  store i8 45, ptr %26, align 1, !tbaa !5
  %358 = sub nsw i32 0, %298
  br label %360

359:                                              ; preds = %353
  store i8 43, ptr %26, align 1, !tbaa !5
  br label %360

360:                                              ; preds = %359, %357
  %.promoted1666 = phi i32 [ %298, %359 ], [ %358, %357 ]
  %361 = icmp ult i32 %.promoted1666, 1000
  br i1 %361, label %362, label %.lr.ph1669.preheader

362:                                              ; preds = %360
  %363 = icmp ugt i32 %.promoted1666, 99
  br i1 %363, label %.lr.ph1669.preheader, label %364

364:                                              ; preds = %362
  %365 = icmp ugt i32 %.promoted1666, 9
  br i1 %365, label %.lr.ph1669.preheader, label %366

366:                                              ; preds = %364
  store i8 3, ptr %9, align 1, !tbaa !5
  %367 = trunc nuw nsw i32 %.promoted1666 to i8
  %368 = or disjoint i8 %367, 48
  store i8 %368, ptr %29, align 1, !tbaa !5
  br label %._crit_edge1670

.lr.ph1669.preheader:                             ; preds = %364, %360, %362
  %369 = phi i1 [ false, %362 ], [ false, %360 ], [ true, %364 ]
  %.ph = phi i32 [ 5, %362 ], [ 6, %360 ], [ 4, %364 ]
  %370 = trunc nuw nsw i32 %.ph to i8
  store i8 %370, ptr %9, align 1, !tbaa !5
  %371 = urem i32 %.promoted1666, 10
  %372 = trunc nuw nsw i32 %371 to i8
  %373 = or disjoint i8 %372, 48
  %374 = zext nneg i32 %.ph to i64
  %375 = getelementptr inbounds [8 x i8], ptr %9, i64 0, i64 %374
  store i8 %373, ptr %375, align 1, !tbaa !5
  %376 = add nsw i64 %374, -1
  %377 = sdiv i32 %.promoted1666, 10
  %378 = srem i32 %377, 10
  %379 = trunc nsw i32 %378 to i8
  %380 = add nsw i8 %379, 48
  %381 = getelementptr inbounds [8 x i8], ptr %9, i64 0, i64 %376
  store i8 %380, ptr %381, align 1, !tbaa !5
  br i1 %369, label %._crit_edge1670, label %.lr.ph1669.1, !llvm.loop !25

.lr.ph1669.1:                                     ; preds = %.lr.ph1669.preheader
  %382 = add nsw i64 %374, -2
  %383 = sdiv i32 %.promoted1666, 100
  %384 = srem i32 %383, 10
  %385 = trunc nsw i32 %384 to i8
  %386 = add nsw i8 %385, 48
  %387 = getelementptr inbounds [8 x i8], ptr %9, i64 0, i64 %382
  store i8 %386, ptr %387, align 1, !tbaa !5
  br i1 %361, label %._crit_edge1670, label %.lr.ph1669.2, !llvm.loop !25

.lr.ph1669.2:                                     ; preds = %.lr.ph1669.1
  %388 = add nsw i64 %374, -3
  %389 = sdiv i32 %.promoted1666, 1000
  %390 = srem i32 %389, 10
  %391 = trunc nsw i32 %390 to i8
  %392 = add nsw i8 %391, 48
  %393 = getelementptr inbounds [8 x i8], ptr %9, i64 0, i64 %388
  store i8 %392, ptr %393, align 1, !tbaa !5
  br label %._crit_edge1670

._crit_edge1670:                                  ; preds = %.lr.ph1669.preheader, %.lr.ph1669.1, %.lr.ph1669.2, %366
  %394 = ptrtoint ptr %.1884.lcssa to i64
  %395 = ptrtoint ptr %.08832079 to i64
  %396 = sub i64 %394, %395
  %397 = trunc i64 %396 to i32
  store i32 %397, ptr %12, align 4, !tbaa !8
  %398 = sub i64 %394, %22
  %399 = trunc i64 %398 to i32
  store i32 %399, ptr %10, align 4, !tbaa !8
  br label %994

400:                                              ; preds = %197
  br label %401

401:                                              ; preds = %197, %400
  %.1926 = phi ptr [ @_ZZ16stbsp_vsprintfcbE3hex, %400 ], [ @_ZZ16stbsp_vsprintfcbE4hexu, %197 ]
  %402 = load i32, ptr %20, align 4
  %403 = icmp ult i32 %402, 161
  br i1 %403, label %404, label %409

404:                                              ; preds = %401
  %405 = load ptr, ptr %15, align 8
  %406 = zext nneg i32 %402 to i64
  %407 = getelementptr i8, ptr %405, i64 %406
  %408 = add nuw nsw i32 %402, 16
  store i32 %408, ptr %20, align 4
  br label %412

409:                                              ; preds = %401
  %410 = load ptr, ptr %14, align 8
  %411 = getelementptr i8, ptr %410, i64 8
  store ptr %411, ptr %14, align 8
  br label %412

412:                                              ; preds = %409, %404
  %413 = phi ptr [ %407, %404 ], [ %410, %409 ]
  %414 = load double, ptr %413, align 8, !tbaa !18
  %415 = icmp eq i32 %.1814, -1
  %spec.store.select19 = call i32 @llvm.umax.i32(i32 %.1814, i32 1)
  %.2815 = select i1 %415, i32 6, i32 %spec.store.select19
  %416 = add i32 %.2815, 2147483647
  %417 = or i32 %416, -2147483648
  %418 = call noundef i32 @_ZL18stbsp__real_to_strPPKcPjPcPidj(ptr noundef nonnull %13, ptr noundef nonnull %10, ptr noundef nonnull %6, ptr noundef nonnull %12, double noundef %414, i32 noundef %417)
  %.not1119 = icmp eq i32 %418, 0
  %419 = or i32 %.3842, 128
  %.5844 = select i1 %.not1119, i32 %.3842, i32 %419
  %420 = load i32, ptr %10, align 4
  %421 = icmp ugt i32 %420, %.2815
  br i1 %421, label %422, label %423

422:                                              ; preds = %412
  store i32 %.2815, ptr %10, align 4, !tbaa !8
  br label %423

423:                                              ; preds = %422, %412
  %.promoted = phi i32 [ %.2815, %422 ], [ %420, %412 ]
  %424 = icmp ugt i32 %.promoted, 1
  br i1 %424, label %.lr.ph1589, label %.critedge22

.lr.ph1589:                                       ; preds = %423
  %425 = load ptr, ptr %13, align 8, !tbaa !15
  %426 = zext i32 %.promoted to i64
  br label %427

427:                                              ; preds = %.lr.ph1589, %432
  %indvars.iv = phi i64 [ %426, %.lr.ph1589 ], [ %indvars.iv.next, %432 ]
  %.38161587 = phi i32 [ %.2815, %.lr.ph1589 ], [ %433, %432 ]
  %indvars.iv.next = add nsw i64 %indvars.iv, -1
  %428 = and i64 %indvars.iv.next, 4294967295
  %429 = getelementptr inbounds i8, ptr %425, i64 %428
  %430 = load i8, ptr %429, align 1, !tbaa !5
  %431 = icmp eq i8 %430, 48
  br i1 %431, label %432, label %.critedge22.loopexit.split.loop.exit2185

432:                                              ; preds = %427
  %indvars = trunc i64 %indvars.iv.next to i32
  %433 = add nsw i32 %.38161587, -1
  store i32 %indvars, ptr %10, align 4, !tbaa !8
  %434 = icmp ugt i32 %indvars, 1
  %435 = icmp ne i32 %433, 0
  %or.cond = select i1 %434, i1 %435, i1 false
  br i1 %or.cond, label %427, label %.critedge22, !llvm.loop !26

.critedge22.loopexit.split.loop.exit2185:         ; preds = %427
  %436 = trunc nuw i64 %indvars.iv to i32
  br label %.critedge22

.critedge22:                                      ; preds = %432, %.critedge22.loopexit.split.loop.exit2185, %423
  %.3816.lcssa = phi i32 [ %.2815, %423 ], [ %.38161587, %.critedge22.loopexit.split.loop.exit2185 ], [ %433, %432 ]
  %.lcssa1489 = phi i32 [ %.promoted, %423 ], [ %436, %.critedge22.loopexit.split.loop.exit2185 ], [ %indvars, %432 ]
  %437 = load i32, ptr %12, align 4
  %438 = icmp slt i32 %437, -3
  %439 = icmp sgt i32 %437, %.2815
  %or.cond1200 = or i1 %438, %439
  br i1 %or.cond1200, label %440, label %445

440:                                              ; preds = %.critedge22
  %441 = icmp sgt i32 %.3816.lcssa, %.lcssa1489
  br i1 %441, label %442, label %444

442:                                              ; preds = %440
  %443 = add i32 %.lcssa1489, -1
  br label %473

444:                                              ; preds = %440
  %spec.select1201 = call i32 @llvm.usub.sat.i32(i32 %.3816.lcssa, i32 1)
  br label %473

445:                                              ; preds = %.critedge22
  %446 = icmp sgt i32 %437, 0
  br i1 %446, label %447, label %451

447:                                              ; preds = %445
  %448 = icmp slt i32 %437, %.lcssa1489
  %449 = sub i32 %.lcssa1489, %437
  %450 = select i1 %448, i32 %449, i32 0
  br label %596

451:                                              ; preds = %445
  %452 = call i32 @llvm.smin.i32(i32 %.3816.lcssa, i32 %.lcssa1489)
  %453 = sub i32 %452, %437
  br label %596

454:                                              ; preds = %197
  br label %455

455:                                              ; preds = %197, %454
  %.2927 = phi ptr [ @_ZZ16stbsp_vsprintfcbE3hex, %454 ], [ @_ZZ16stbsp_vsprintfcbE4hexu, %197 ]
  %456 = load i32, ptr %20, align 4
  %457 = icmp ult i32 %456, 161
  br i1 %457, label %458, label %463

458:                                              ; preds = %455
  %459 = load ptr, ptr %15, align 8
  %460 = zext nneg i32 %456 to i64
  %461 = getelementptr i8, ptr %459, i64 %460
  %462 = add nuw nsw i32 %456, 16
  store i32 %462, ptr %20, align 4
  br label %466

463:                                              ; preds = %455
  %464 = load ptr, ptr %14, align 8
  %465 = getelementptr i8, ptr %464, i64 8
  store ptr %465, ptr %14, align 8
  br label %466

466:                                              ; preds = %463, %458
  %467 = phi ptr [ %461, %458 ], [ %464, %463 ]
  %468 = load double, ptr %467, align 8, !tbaa !18
  %469 = icmp eq i32 %.1814, -1
  %spec.store.select23 = select i1 %469, i32 6, i32 %.1814
  %470 = or i32 %spec.store.select23, -2147483648
  %471 = call noundef i32 @_ZL18stbsp__real_to_strPPKcPjPcPidj(ptr noundef nonnull %13, ptr noundef nonnull %10, ptr noundef nonnull %6, ptr noundef nonnull %12, double noundef %468, i32 noundef %470)
  %.not1118 = icmp eq i32 %471, 0
  %472 = or i32 %.3842, 128
  %spec.select1202 = select i1 %.not1118, i32 %.3842, i32 %472
  br label %473

473:                                              ; preds = %466, %444, %442
  %.3928 = phi ptr [ %.1926, %442 ], [ %.1926, %444 ], [ %.2927, %466 ]
  %.6845 = phi i32 [ %.5844, %442 ], [ %.5844, %444 ], [ %spec.select1202, %466 ]
  %.4817 = phi i32 [ %443, %442 ], [ %spec.select1201, %444 ], [ %spec.store.select23, %466 ]
  store i8 0, ptr %9, align 1, !tbaa !5
  call void @_ZL16stbsp__lead_signjPc(i32 noundef %.6845, ptr noundef nonnull %8)
  %474 = load i32, ptr %12, align 4, !tbaa !8
  %475 = icmp eq i32 %474, 28672
  %476 = load ptr, ptr %13, align 8, !tbaa !15
  %477 = ptrtoint ptr %476 to i64
  br i1 %475, label %994, label %478

478:                                              ; preds = %473
  %479 = load i8, ptr %476, align 1, !tbaa !5
  store i8 %479, ptr %21, align 16, !tbaa !5
  %.not1139 = icmp eq i32 %.4817, 0
  br i1 %.not1139, label %482, label %480

480:                                              ; preds = %478
  %481 = load i8, ptr @_ZL13stbsp__period, align 1, !tbaa !5
  store i8 %481, ptr %23, align 1, !tbaa !5
  br label %482

482:                                              ; preds = %480, %478
  %.2885 = phi ptr [ %24, %480 ], [ %23, %478 ]
  %.28852323 = ptrtoint ptr %.2885 to i64
  %483 = load i32, ptr %10, align 4, !tbaa !8
  %484 = add i32 %483, -1
  %485 = icmp ugt i32 %484, %.4817
  br i1 %485, label %486, label %488

486:                                              ; preds = %482
  %487 = add nuw nsw i32 %.4817, 1
  store i32 %487, ptr %10, align 4, !tbaa !8
  br label %488

488:                                              ; preds = %486, %482
  %489 = phi i32 [ %487, %486 ], [ %483, %482 ]
  %490 = icmp ugt i32 %489, 1
  br i1 %490, label %.lr.ph1650.preheader, label %._crit_edge1651

.lr.ph1650.preheader:                             ; preds = %488
  %wide.trip.count = zext i32 %489 to i64
  %491 = add nsw i64 %wide.trip.count, -1
  %min.iters.check2327 = icmp ult i32 %489, 33
  %492 = sub i64 %477, %.28852323
  %diff.check2324 = icmp ugt i64 %492, -33
  %or.cond2345 = select i1 %min.iters.check2327, i1 true, i1 %diff.check2324
  br i1 %or.cond2345, label %.lr.ph1650.preheader2358, label %vector.ph2328

vector.ph2328:                                    ; preds = %.lr.ph1650.preheader
  %n.vec2330 = and i64 %491, -32
  %ind.end2331 = or disjoint i64 %n.vec2330, 1
  %ind.end2333 = getelementptr i8, ptr %.2885, i64 %n.vec2330
  br label %vector.body2335

vector.body2335:                                  ; preds = %vector.body2335, %vector.ph2328
  %index2336 = phi i64 [ 0, %vector.ph2328 ], [ %index.next2342, %vector.body2335 ]
  %offset.idx2337 = or disjoint i64 %index2336, 1
  %next.gep2338 = getelementptr i8, ptr %.2885, i64 %index2336
  %493 = getelementptr inbounds i8, ptr %476, i64 %offset.idx2337
  %494 = getelementptr inbounds i8, ptr %493, i64 16
  %wide.load2340 = load <16 x i8>, ptr %493, align 1, !tbaa !5
  %wide.load2341 = load <16 x i8>, ptr %494, align 1, !tbaa !5
  %495 = getelementptr i8, ptr %next.gep2338, i64 16
  store <16 x i8> %wide.load2340, ptr %next.gep2338, align 1, !tbaa !5
  store <16 x i8> %wide.load2341, ptr %495, align 1, !tbaa !5
  %index.next2342 = add nuw i64 %index2336, 32
  %496 = icmp eq i64 %index.next2342, %n.vec2330
  br i1 %496, label %middle.block2325, label %vector.body2335, !llvm.loop !27

middle.block2325:                                 ; preds = %vector.body2335
  %cmp.n2343 = icmp eq i64 %491, %n.vec2330
  br i1 %cmp.n2343, label %._crit_edge1651, label %.lr.ph1650.preheader2358

.lr.ph1650.preheader2358:                         ; preds = %middle.block2325, %.lr.ph1650.preheader
  %indvars.iv1987.ph = phi i64 [ 1, %.lr.ph1650.preheader ], [ %ind.end2331, %middle.block2325 ]
  %.38861648.ph = phi ptr [ %.2885, %.lr.ph1650.preheader ], [ %ind.end2333, %middle.block2325 ]
  %497 = sub nsw i64 %wide.trip.count, %indvars.iv1987.ph
  %xtraiter2448 = and i64 %497, 7
  %lcmp.mod2449.not = icmp eq i64 %xtraiter2448, 0
  br i1 %lcmp.mod2449.not, label %.lr.ph1650.prol.loopexit, label %.lr.ph1650.prol

.lr.ph1650.prol:                                  ; preds = %.lr.ph1650.preheader2358, %.lr.ph1650.prol
  %indvars.iv1987.prol = phi i64 [ %indvars.iv.next1988.prol, %.lr.ph1650.prol ], [ %indvars.iv1987.ph, %.lr.ph1650.preheader2358 ]
  %.38861648.prol = phi ptr [ %500, %.lr.ph1650.prol ], [ %.38861648.ph, %.lr.ph1650.preheader2358 ]
  %prol.iter2450 = phi i64 [ %prol.iter2450.next, %.lr.ph1650.prol ], [ 0, %.lr.ph1650.preheader2358 ]
  %498 = getelementptr inbounds i8, ptr %476, i64 %indvars.iv1987.prol
  %499 = load i8, ptr %498, align 1, !tbaa !5
  %500 = getelementptr inbounds i8, ptr %.38861648.prol, i64 1
  store i8 %499, ptr %.38861648.prol, align 1, !tbaa !5
  %indvars.iv.next1988.prol = add nuw nsw i64 %indvars.iv1987.prol, 1
  %prol.iter2450.next = add i64 %prol.iter2450, 1
  %prol.iter2450.cmp.not = icmp eq i64 %prol.iter2450.next, %xtraiter2448
  br i1 %prol.iter2450.cmp.not, label %.lr.ph1650.prol.loopexit, label %.lr.ph1650.prol, !llvm.loop !30

.lr.ph1650.prol.loopexit:                         ; preds = %.lr.ph1650.prol, %.lr.ph1650.preheader2358
  %.lcssa2401.unr = phi ptr [ poison, %.lr.ph1650.preheader2358 ], [ %500, %.lr.ph1650.prol ]
  %indvars.iv1987.unr = phi i64 [ %indvars.iv1987.ph, %.lr.ph1650.preheader2358 ], [ %indvars.iv.next1988.prol, %.lr.ph1650.prol ]
  %.38861648.unr = phi ptr [ %.38861648.ph, %.lr.ph1650.preheader2358 ], [ %500, %.lr.ph1650.prol ]
  %501 = sub nsw i64 %indvars.iv1987.ph, %wide.trip.count
  %502 = icmp ugt i64 %501, -8
  br i1 %502, label %._crit_edge1651, label %.lr.ph1650.preheader2358.new

.lr.ph1650.preheader2358.new:                     ; preds = %.lr.ph1650.prol.loopexit
  %invariant.gep2565 = getelementptr i8, ptr %476, i64 1
  %invariant.gep2567 = getelementptr i8, ptr %476, i64 2
  %invariant.gep2569 = getelementptr i8, ptr %476, i64 3
  %invariant.gep2571 = getelementptr i8, ptr %476, i64 4
  %invariant.gep2573 = getelementptr i8, ptr %476, i64 5
  %invariant.gep2575 = getelementptr i8, ptr %476, i64 6
  %invariant.gep2577 = getelementptr i8, ptr %476, i64 7
  br label %.lr.ph1650

.lr.ph1650:                                       ; preds = %.lr.ph1650, %.lr.ph1650.preheader2358.new
  %indvars.iv1987 = phi i64 [ %indvars.iv1987.unr, %.lr.ph1650.preheader2358.new ], [ %indvars.iv.next1988.7, %.lr.ph1650 ]
  %.38861648 = phi ptr [ %.38861648.unr, %.lr.ph1650.preheader2358.new ], [ %519, %.lr.ph1650 ]
  %503 = getelementptr inbounds i8, ptr %476, i64 %indvars.iv1987
  %504 = load i8, ptr %503, align 1, !tbaa !5
  %505 = getelementptr inbounds i8, ptr %.38861648, i64 1
  store i8 %504, ptr %.38861648, align 1, !tbaa !5
  %gep2566 = getelementptr i8, ptr %invariant.gep2565, i64 %indvars.iv1987
  %506 = load i8, ptr %gep2566, align 1, !tbaa !5
  %507 = getelementptr inbounds i8, ptr %.38861648, i64 2
  store i8 %506, ptr %505, align 1, !tbaa !5
  %gep2568 = getelementptr i8, ptr %invariant.gep2567, i64 %indvars.iv1987
  %508 = load i8, ptr %gep2568, align 1, !tbaa !5
  %509 = getelementptr inbounds i8, ptr %.38861648, i64 3
  store i8 %508, ptr %507, align 1, !tbaa !5
  %gep2570 = getelementptr i8, ptr %invariant.gep2569, i64 %indvars.iv1987
  %510 = load i8, ptr %gep2570, align 1, !tbaa !5
  %511 = getelementptr inbounds i8, ptr %.38861648, i64 4
  store i8 %510, ptr %509, align 1, !tbaa !5
  %gep2572 = getelementptr i8, ptr %invariant.gep2571, i64 %indvars.iv1987
  %512 = load i8, ptr %gep2572, align 1, !tbaa !5
  %513 = getelementptr inbounds i8, ptr %.38861648, i64 5
  store i8 %512, ptr %511, align 1, !tbaa !5
  %gep2574 = getelementptr i8, ptr %invariant.gep2573, i64 %indvars.iv1987
  %514 = load i8, ptr %gep2574, align 1, !tbaa !5
  %515 = getelementptr inbounds i8, ptr %.38861648, i64 6
  store i8 %514, ptr %513, align 1, !tbaa !5
  %gep2576 = getelementptr i8, ptr %invariant.gep2575, i64 %indvars.iv1987
  %516 = load i8, ptr %gep2576, align 1, !tbaa !5
  %517 = getelementptr inbounds i8, ptr %.38861648, i64 7
  store i8 %516, ptr %515, align 1, !tbaa !5
  %gep2578 = getelementptr i8, ptr %invariant.gep2577, i64 %indvars.iv1987
  %518 = load i8, ptr %gep2578, align 1, !tbaa !5
  %519 = getelementptr inbounds i8, ptr %.38861648, i64 8
  store i8 %518, ptr %517, align 1, !tbaa !5
  %indvars.iv.next1988.7 = add nuw nsw i64 %indvars.iv1987, 8
  %exitcond.not.7 = icmp eq i64 %indvars.iv.next1988.7, %wide.trip.count
  br i1 %exitcond.not.7, label %._crit_edge1651, label %.lr.ph1650, !llvm.loop !31

._crit_edge1651:                                  ; preds = %.lr.ph1650.prol.loopexit, %.lr.ph1650, %middle.block2325, %488
  %.3886.lcssa = phi ptr [ %.2885, %488 ], [ %ind.end2333, %middle.block2325 ], [ %.lcssa2401.unr, %.lr.ph1650.prol.loopexit ], [ %519, %.lr.ph1650 ]
  %.neg1432 = add i32 %.4817, 1
  %520 = sub i32 %.neg1432, %489
  %521 = getelementptr inbounds i8, ptr %.3928, i64 14
  %522 = load i8, ptr %521, align 1, !tbaa !5
  store i8 %522, ptr %25, align 1, !tbaa !5
  %523 = icmp slt i32 %474, 1
  br i1 %523, label %524, label %526

524:                                              ; preds = %._crit_edge1651
  store i8 45, ptr %26, align 1, !tbaa !5
  %525 = sub nsw i32 1, %474
  br label %528

526:                                              ; preds = %._crit_edge1651
  %527 = add nsw i32 %474, -1
  store i8 43, ptr %26, align 1, !tbaa !5
  br label %528

528:                                              ; preds = %526, %524
  %529 = phi i32 [ %527, %526 ], [ %525, %524 ]
  %530 = icmp ugt i32 %529, 99
  %531 = select i1 %530, i32 5, i32 4
  %532 = trunc nuw nsw i32 %531 to i8
  store i8 %532, ptr %9, align 1, !tbaa !5
  %533 = urem i32 %529, 10
  %534 = trunc nuw nsw i32 %533 to i8
  %535 = or disjoint i8 %534, 48
  %536 = zext nneg i32 %531 to i64
  %537 = getelementptr inbounds [8 x i8], ptr %9, i64 0, i64 %536
  store i8 %535, ptr %537, align 1, !tbaa !5
  %indvars.iv.next1992 = add nsw i64 %536, -1
  %538 = sdiv i32 %529, 10
  %539 = srem i32 %538, 10
  %540 = trunc nsw i32 %539 to i8
  %541 = add nsw i8 %540, 48
  %542 = getelementptr inbounds [8 x i8], ptr %9, i64 0, i64 %indvars.iv.next1992
  store i8 %541, ptr %542, align 1, !tbaa !5
  br i1 %530, label %543, label %.loopexit1459, !llvm.loop !32

543:                                              ; preds = %528
  %indvars.iv.next1992.1 = add nsw i64 %536, -2
  %544 = sdiv i32 %529, 100
  %545 = srem i32 %544, 10
  %546 = trunc nsw i32 %545 to i8
  %547 = add nsw i8 %546, 48
  %548 = getelementptr inbounds [8 x i8], ptr %9, i64 0, i64 %indvars.iv.next1992.1
  store i8 %547, ptr %548, align 1, !tbaa !5
  br label %.loopexit1459

549:                                              ; preds = %197
  %550 = load i32, ptr %20, align 4
  %551 = icmp ult i32 %550, 161
  br i1 %551, label %552, label %557

552:                                              ; preds = %549
  %553 = load ptr, ptr %15, align 8
  %554 = zext nneg i32 %550 to i64
  %555 = getelementptr i8, ptr %553, i64 %554
  %556 = add nuw nsw i32 %550, 16
  store i32 %556, ptr %20, align 4
  br label %560

557:                                              ; preds = %549
  %558 = load ptr, ptr %14, align 8
  %559 = getelementptr i8, ptr %558, i64 8
  store ptr %559, ptr %14, align 8
  br label %560

560:                                              ; preds = %552, %557
  %561 = phi ptr [ %555, %552 ], [ %558, %557 ]
  %562 = load double, ptr %561, align 8, !tbaa !18
  %.pre2057 = and i32 %.3842, 256
  %.not1115 = icmp eq i32 %.pre2057, 0
  br i1 %.not1115, label %.loopexit1468, label %563

563:                                              ; preds = %.thread2082, %560
  %.58182090 = phi i32 [ %.11824, %.thread2082 ], [ %.1814, %560 ]
  %.78462089 = phi i32 [ %.17856, %.thread2082 ], [ %.3842, %560 ]
  %.09722088 = phi double [ %937, %.thread2082 ], [ %562, %560 ]
  %564 = and i32 %.78462089, 2048
  %.not1116 = icmp eq i32 %564, 0
  %spec.store.select24 = select i1 %.not1116, double 1.000000e+03, double 1.024000e+03
  %565 = icmp ult i32 %.78462089, 67108864
  br i1 %565, label %.lr.ph1581, label %.loopexit1468

.lr.ph1581:                                       ; preds = %563
  %566 = fneg double %spec.store.select24
  %567 = fcmp olt double %.09722088, %spec.store.select24
  %568 = fcmp ogt double %.09722088, %566
  %or.cond1204 = and i1 %567, %568
  br i1 %or.cond1204, label %.loopexit1468, label %569

569:                                              ; preds = %.lr.ph1581
  %570 = fdiv double %.09722088, %spec.store.select24
  %571 = add nuw nsw i32 %.78462089, 16777216
  %572 = icmp ult i32 %.78462089, 50331648
  br i1 %572, label %573, label %.loopexit1468, !llvm.loop !33

573:                                              ; preds = %569
  %574 = fcmp olt double %570, %spec.store.select24
  %575 = fcmp ogt double %570, %566
  %or.cond1204.1 = and i1 %574, %575
  br i1 %or.cond1204.1, label %.loopexit1468, label %576

576:                                              ; preds = %573
  %577 = fdiv double %570, %spec.store.select24
  %578 = add nuw nsw i32 %.78462089, 33554432
  %579 = icmp ult i32 %.78462089, 33554432
  br i1 %579, label %580, label %.loopexit1468, !llvm.loop !33

580:                                              ; preds = %576
  %581 = fcmp olt double %577, %spec.store.select24
  %582 = fcmp ogt double %577, %566
  %or.cond1204.2 = and i1 %581, %582
  br i1 %or.cond1204.2, label %.loopexit1468, label %583

583:                                              ; preds = %580
  %584 = fdiv double %577, %spec.store.select24
  %585 = add nuw nsw i32 %.78462089, 50331648
  %586 = icmp ult i32 %.78462089, 16777216
  br i1 %586, label %587, label %.loopexit1468, !llvm.loop !33

587:                                              ; preds = %583
  %588 = fcmp olt double %584, %spec.store.select24
  %589 = fcmp ogt double %584, %566
  %or.cond1204.3 = and i1 %588, %589
  br i1 %or.cond1204.3, label %.loopexit1468, label %590

590:                                              ; preds = %587
  %591 = fdiv double %584, %spec.store.select24
  %592 = or disjoint i32 %.78462089, 67108864
  br label %.loopexit1468

.loopexit1468:                                    ; preds = %.lr.ph1581, %569, %573, %576, %580, %583, %587, %590, %563, %560
  %.58182091 = phi i32 [ %.1814, %560 ], [ %.58182090, %563 ], [ %.58182090, %590 ], [ %.58182090, %587 ], [ %.58182090, %583 ], [ %.58182090, %580 ], [ %.58182090, %576 ], [ %.58182090, %573 ], [ %.58182090, %569 ], [ %.58182090, %.lr.ph1581 ]
  %.2974 = phi double [ %562, %560 ], [ %.09722088, %563 ], [ %.09722088, %.lr.ph1581 ], [ %570, %569 ], [ %570, %573 ], [ %577, %576 ], [ %577, %580 ], [ %584, %583 ], [ %584, %587 ], [ %591, %590 ]
  %.9848 = phi i32 [ %.3842, %560 ], [ %.78462089, %563 ], [ %.78462089, %.lr.ph1581 ], [ %571, %569 ], [ %571, %573 ], [ %578, %576 ], [ %578, %580 ], [ %585, %583 ], [ %585, %587 ], [ %592, %590 ]
  %593 = icmp eq i32 %.58182091, -1
  %spec.store.select25 = select i1 %593, i32 6, i32 %.58182091
  %594 = call noundef i32 @_ZL18stbsp__real_to_strPPKcPjPcPidj(ptr noundef nonnull %13, ptr noundef nonnull %10, ptr noundef nonnull %6, ptr noundef nonnull %12, double noundef %.2974, i32 noundef %spec.store.select25)
  %.not1117 = icmp eq i32 %594, 0
  %595 = or i32 %.9848, 128
  %spec.select1205 = select i1 %.not1117, i32 %.9848, i32 %595
  br label %596

596:                                              ; preds = %.loopexit1468, %447, %451
  %.10849 = phi i32 [ %.5844, %447 ], [ %.5844, %451 ], [ %spec.select1205, %.loopexit1468 ]
  %.6819 = phi i32 [ %450, %447 ], [ %453, %451 ], [ %spec.store.select25, %.loopexit1468 ]
  store i8 0, ptr %9, align 1, !tbaa !5
  call void @_ZL16stbsp__lead_signjPc(i32 noundef %.10849, ptr noundef nonnull %8)
  %597 = load i32, ptr %12, align 4, !tbaa !8
  %598 = icmp eq i32 %597, 28672
  br i1 %598, label %599, label %601

599:                                              ; preds = %596
  %600 = load ptr, ptr %13, align 8, !tbaa !15
  br label %994

601:                                              ; preds = %596
  %602 = icmp slt i32 %597, 1
  br i1 %602, label %603, label %664

603:                                              ; preds = %601
  store i8 48, ptr %21, align 16, !tbaa !5
  %.not1129 = icmp eq i32 %.6819, 0
  br i1 %.not1129, label %606, label %604

604:                                              ; preds = %603
  %605 = load i8, ptr @_ZL13stbsp__period, align 1, !tbaa !5
  store i8 %605, ptr %23, align 1, !tbaa !5
  br label %606

606:                                              ; preds = %604, %603
  %.4887 = phi ptr [ %24, %604 ], [ %23, %603 ]
  %.4887.fr = freeze ptr %.4887
  %607 = sub nsw i32 0, %597
  %spec.select1206 = call i32 @llvm.smin.i32(i32 %.6819, i32 %607)
  %.not11301621 = icmp eq i32 %spec.select1206, 0
  %608 = ptrtoint ptr %.4887.fr to i64
  %609 = and i64 %608, 3
  %610 = icmp eq i64 %609, 0
  %or.cond12091622 = or i1 %.not11301621, %610
  br i1 %or.cond12091622, label %.preheader1461, label %.lr.ph1626.preheader

.lr.ph1626.preheader:                             ; preds = %606
  %611 = trunc i64 %608 to i2
  %612 = xor i2 %611, -1
  %613 = zext i2 %612 to i64
  %614 = add i32 %spec.select1206, -1
  %615 = zext i32 %614 to i64
  %umin1976 = call i64 @llvm.umin.i64(i64 %613, i64 %615)
  %616 = add nuw nsw i64 %umin1976, 1
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %.4887.fr, i8 48, i64 %616, i1 false), !tbaa !5
  %617 = zext i2 %612 to i32
  %scevgep1977 = getelementptr i8, ptr %.4887.fr, i64 1
  %scevgep1979 = getelementptr i8, ptr %scevgep1977, i64 %umin1976
  %618 = call i32 @llvm.usub.sat.i32(i32 %614, i32 %617)
  br label %.preheader1461

.preheader1461:                                   ; preds = %.lr.ph1626.preheader, %606
  %.0975.lcssa = phi i32 [ %spec.select1206, %606 ], [ %618, %.lr.ph1626.preheader ]
  %.5888.lcssa = phi ptr [ %.4887.fr, %606 ], [ %scevgep1979, %.lr.ph1626.preheader ]
  %619 = icmp sgt i32 %.0975.lcssa, 3
  br i1 %619, label %.lr.ph1631.preheader, label %.preheader1460

.lr.ph1631.preheader:                             ; preds = %.preheader1461
  %620 = call i32 @llvm.usub.sat.i32(i32 %.0975.lcssa, i32 7)
  %621 = add nuw i32 %620, 3
  %622 = and i32 %621, -4
  %623 = zext nneg i32 %622 to i64
  %624 = add nuw nsw i64 %623, 4
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %.5888.lcssa, i8 48, i64 %624, i1 false), !tbaa !8
  %scevgep1981 = getelementptr i8, ptr %.5888.lcssa, i64 4
  %scevgep1983 = getelementptr i8, ptr %scevgep1981, i64 %623
  %625 = and i32 %621, -4
  %626 = add nsw i32 %.0975.lcssa, -4
  %627 = sub nsw i32 %626, %625
  br label %.preheader1460

.preheader1460:                                   ; preds = %.lr.ph1631.preheader, %.preheader1461
  %.1976.lcssa = phi i32 [ %.0975.lcssa, %.preheader1461 ], [ %627, %.lr.ph1631.preheader ]
  %.6889.lcssa = phi ptr [ %.5888.lcssa, %.preheader1461 ], [ %scevgep1983, %.lr.ph1631.preheader ]
  %.not11311634 = icmp eq i32 %.1976.lcssa, 0
  br i1 %.not11311634, label %._crit_edge1638, label %.lr.ph1637.preheader

.lr.ph1637.preheader:                             ; preds = %.preheader1460
  %628 = zext i32 %.1976.lcssa to i64
  call void @llvm.memset.p0.i64(ptr align 1 %.6889.lcssa, i8 48, i64 %628, i1 false), !tbaa !5
  %629 = add i32 %.1976.lcssa, -1
  %630 = zext i32 %629 to i64
  %scevgep1984 = getelementptr i8, ptr %.6889.lcssa, i64 1
  %scevgep1985 = getelementptr i8, ptr %scevgep1984, i64 %630
  br label %._crit_edge1638

._crit_edge1638:                                  ; preds = %.lr.ph1637.preheader, %.preheader1460
  %.7890.lcssa = phi ptr [ %.6889.lcssa, %.preheader1460 ], [ %scevgep1985, %.lr.ph1637.preheader ]
  %631 = load i32, ptr %10, align 4, !tbaa !8
  %632 = add i32 %631, %spec.select1206
  %633 = icmp sgt i32 %632, %.6819
  br i1 %633, label %634, label %636

634:                                              ; preds = %._crit_edge1638
  %635 = sub i32 %.6819, %spec.select1206
  store i32 %635, ptr %10, align 4, !tbaa !8
  br label %636

636:                                              ; preds = %634, %._crit_edge1638
  %637 = phi i32 [ %635, %634 ], [ %631, %._crit_edge1638 ]
  %.not11321640 = icmp eq i32 %637, 0
  br i1 %.not11321640, label %._crit_edge1645, label %.lr.ph1644.preheader

.lr.ph1644.preheader:                             ; preds = %636
  %smin = call i32 @llvm.smin.i32(i32 %.6819, i32 %632)
  %xtraiter = and i32 %637, 3
  %lcmp.mod.not = icmp eq i32 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.lr.ph1644.prol.loopexit, label %.lr.ph1644.prol

.lr.ph1644.prol:                                  ; preds = %.lr.ph1644.preheader, %.lr.ph1644.prol
  %.88911642.prol = phi ptr [ %641, %.lr.ph1644.prol ], [ %.7890.lcssa, %.lr.ph1644.preheader ]
  %.39781641.prol = phi i32 [ %642, %.lr.ph1644.prol ], [ %637, %.lr.ph1644.preheader ]
  %prol.iter = phi i32 [ %prol.iter.next, %.lr.ph1644.prol ], [ 0, %.lr.ph1644.preheader ]
  %638 = load ptr, ptr %13, align 8, !tbaa !15
  %639 = getelementptr inbounds i8, ptr %638, i64 1
  store ptr %639, ptr %13, align 8, !tbaa !15
  %640 = load i8, ptr %638, align 1, !tbaa !5
  %641 = getelementptr inbounds i8, ptr %.88911642.prol, i64 1
  store i8 %640, ptr %.88911642.prol, align 1, !tbaa !5
  %642 = add nsw i32 %.39781641.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.ph1644.prol.loopexit, label %.lr.ph1644.prol, !llvm.loop !34

.lr.ph1644.prol.loopexit:                         ; preds = %.lr.ph1644.prol, %.lr.ph1644.preheader
  %.lcssa2400.unr = phi ptr [ poison, %.lr.ph1644.preheader ], [ %641, %.lr.ph1644.prol ]
  %.88911642.unr = phi ptr [ %.7890.lcssa, %.lr.ph1644.preheader ], [ %641, %.lr.ph1644.prol ]
  %.39781641.unr = phi i32 [ %637, %.lr.ph1644.preheader ], [ %642, %.lr.ph1644.prol ]
  %643 = sub i32 %spec.select1206, %smin
  %644 = icmp ugt i32 %643, -4
  br i1 %644, label %._crit_edge1645, label %.lr.ph1644

.lr.ph1644:                                       ; preds = %.lr.ph1644.prol.loopexit, %.lr.ph1644
  %.88911642 = phi ptr [ %660, %.lr.ph1644 ], [ %.88911642.unr, %.lr.ph1644.prol.loopexit ]
  %.39781641 = phi i32 [ %661, %.lr.ph1644 ], [ %.39781641.unr, %.lr.ph1644.prol.loopexit ]
  %645 = load ptr, ptr %13, align 8, !tbaa !15
  %646 = getelementptr inbounds i8, ptr %645, i64 1
  store ptr %646, ptr %13, align 8, !tbaa !15
  %647 = load i8, ptr %645, align 1, !tbaa !5
  %648 = getelementptr inbounds i8, ptr %.88911642, i64 1
  store i8 %647, ptr %.88911642, align 1, !tbaa !5
  %649 = load ptr, ptr %13, align 8, !tbaa !15
  %650 = getelementptr inbounds i8, ptr %649, i64 1
  store ptr %650, ptr %13, align 8, !tbaa !15
  %651 = load i8, ptr %649, align 1, !tbaa !5
  %652 = getelementptr inbounds i8, ptr %.88911642, i64 2
  store i8 %651, ptr %648, align 1, !tbaa !5
  %653 = load ptr, ptr %13, align 8, !tbaa !15
  %654 = getelementptr inbounds i8, ptr %653, i64 1
  store ptr %654, ptr %13, align 8, !tbaa !15
  %655 = load i8, ptr %653, align 1, !tbaa !5
  %656 = getelementptr inbounds i8, ptr %.88911642, i64 3
  store i8 %655, ptr %652, align 1, !tbaa !5
  %657 = load ptr, ptr %13, align 8, !tbaa !15
  %658 = getelementptr inbounds i8, ptr %657, i64 1
  store ptr %658, ptr %13, align 8, !tbaa !15
  %659 = load i8, ptr %657, align 1, !tbaa !5
  %660 = getelementptr inbounds i8, ptr %.88911642, i64 4
  store i8 %659, ptr %656, align 1, !tbaa !5
  %661 = add nsw i32 %.39781641, -4
  %.not1132.3 = icmp eq i32 %661, 0
  br i1 %.not1132.3, label %._crit_edge1645, label %.lr.ph1644, !llvm.loop !35

._crit_edge1645:                                  ; preds = %.lr.ph1644.prol.loopexit, %.lr.ph1644, %636
  %.8891.lcssa = phi ptr [ %.7890.lcssa, %636 ], [ %.lcssa2400.unr, %.lr.ph1644.prol.loopexit ], [ %660, %.lr.ph1644 ]
  %662 = add i32 %spec.select1206, %637
  %663 = sub i32 %.6819, %662
  br label %764

664:                                              ; preds = %601
  %665 = and i32 %.10849, 64
  %.not1120 = icmp eq i32 %665, 0
  br i1 %.not1120, label %669, label %666

666:                                              ; preds = %664
  %667 = sub nsw i32 600, %597
  %668 = urem i32 %667, 3
  br label %669

669:                                              ; preds = %664, %666
  %670 = phi i32 [ %668, %666 ], [ 0, %664 ]
  %671 = load i32, ptr %10, align 4, !tbaa !8
  %.not1121 = icmp ult i32 %597, %671
  br i1 %.not1121, label %.preheader1462.outer, label %.preheader1467.outer

672:                                              ; preds = %.preheader1467.peel.next, %680, %.preheader1467.outer
  %.9892.lcssa = phi ptr [ %.9892.ph, %.preheader1467.outer ], [ %.9892.ph, %680 ], [ %684, %.preheader1467.peel.next ]
  %.1957 = phi i32 [ %.0956.ph, %.preheader1467.outer ], [ %681, %680 ], [ %.1957.ph, %.preheader1467.peel.next ]
  %673 = load ptr, ptr %13, align 8, !tbaa !15
  %674 = zext i32 %.8940.ph to i64
  %675 = getelementptr inbounds i8, ptr %673, i64 %674
  %676 = load i8, ptr %675, align 1, !tbaa !5
  %677 = getelementptr i8, ptr %.9892.lcssa, i64 1
  store i8 %676, ptr %.9892.lcssa, align 1, !tbaa !5
  %678 = add i32 %.8940.ph, 1
  %679 = load i32, ptr %10, align 4, !tbaa !8
  %.not1125 = icmp ult i32 %678, %679
  br i1 %.not1125, label %.preheader1467.outer, label %685, !llvm.loop !36

.preheader1467.outer:                             ; preds = %669, %672
  %.0956.ph = phi i32 [ %.1957, %672 ], [ %670, %669 ]
  %.8940.ph = phi i32 [ %678, %672 ], [ 0, %669 ]
  %.9892.ph = phi ptr [ %677, %672 ], [ %21, %669 ]
  br i1 %.not1120, label %672, label %680

680:                                              ; preds = %.preheader1467.outer
  %681 = add i32 %.0956.ph, 1
  %682 = icmp eq i32 %681, 4
  br i1 %682, label %.preheader1467.peel.next, label %672

.preheader1467.peel.next:                         ; preds = %680
  %683 = load i8, ptr @_ZL12stbsp__comma, align 1, !tbaa !5
  %684 = getelementptr i8, ptr %.9892.ph, i64 1
  store i8 %683, ptr %.9892.ph, align 1, !tbaa !5
  %.1957.ph = select i1 %.not1120, i32 0, i32 1
  br label %672

685:                                              ; preds = %672
  %.9892.lcssa1965 = ptrtoint ptr %.9892.lcssa to i64
  %686 = load i32, ptr %12, align 4, !tbaa !8
  %687 = icmp ult i32 %678, %686
  br i1 %687, label %688, label %.loopexit1463

688:                                              ; preds = %685
  %689 = sub i32 %686, %678
  br i1 %.not1120, label %.preheader1466, label %.loopexit1465

.preheader1466:                                   ; preds = %688
  %.not11261595 = icmp eq i32 %689, 0
  %690 = ptrtoint ptr %677 to i64
  %691 = and i64 %690, 3
  %692 = icmp eq i64 %691, 0
  %or.cond12121596 = or i1 %.not11261595, %692
  br i1 %or.cond12121596, label %.preheader1464, label %.lr.ph1599.preheader

.lr.ph1599.preheader:                             ; preds = %.preheader1466
  %693 = trunc i64 %.9892.lcssa1965 to i2
  %694 = sub i2 -2, %693
  %695 = zext i2 %694 to i64
  %696 = add i32 %686, -2
  %697 = sub i32 %696, %.8940.ph
  %698 = zext i32 %697 to i64
  %umin = call i64 @llvm.umin.i64(i64 %695, i64 %698)
  %699 = add nuw nsw i64 %umin, 1
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %677, i8 48, i64 %699, i1 false), !tbaa !5
  %700 = zext i2 %694 to i32
  %scevgep1966 = getelementptr i8, ptr %.9892.lcssa, i64 2
  %scevgep1968 = getelementptr i8, ptr %scevgep1966, i64 %umin
  %701 = call i32 @llvm.usub.sat.i32(i32 %697, i32 %700)
  br label %.preheader1464

.preheader1464:                                   ; preds = %.lr.ph1599.preheader, %.preheader1466
  %.10942.lcssa = phi i32 [ %689, %.preheader1466 ], [ %701, %.lr.ph1599.preheader ]
  %.11894.lcssa = phi ptr [ %677, %.preheader1466 ], [ %scevgep1968, %.lr.ph1599.preheader ]
  %702 = icmp ugt i32 %.10942.lcssa, 3
  br i1 %702, label %.lr.ph1604.preheader, label %.loopexit1465

.lr.ph1604.preheader:                             ; preds = %.preheader1464
  %703 = and i32 %.10942.lcssa, -4
  %704 = add i32 %703, -4
  %705 = zext i32 %704 to i64
  %706 = add nuw nsw i64 %705, 4
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %.11894.lcssa, i8 48, i64 %706, i1 false), !tbaa !8
  %scevgep1970 = getelementptr i8, ptr %.11894.lcssa, i64 4
  %scevgep1971 = getelementptr i8, ptr %scevgep1970, i64 %705
  %707 = and i32 %.10942.lcssa, 3
  br label %.loopexit1465

.loopexit1465:                                    ; preds = %.lr.ph1604.preheader, %.preheader1464, %688
  %.12944 = phi i32 [ %689, %688 ], [ %.10942.lcssa, %.preheader1464 ], [ %707, %.lr.ph1604.preheader ]
  %.13896 = phi ptr [ %677, %688 ], [ %.11894.lcssa, %.preheader1464 ], [ %scevgep1971, %.lr.ph1604.preheader ]
  %.not11271607 = icmp eq i32 %.12944, 0
  br i1 %.not11271607, label %.loopexit1463, label %.lr.ph1612

.lr.ph1612:                                       ; preds = %.loopexit1465, %715
  %.148971610 = phi ptr [ %.15898, %715 ], [ %.13896, %.loopexit1465 ]
  %.139451609 = phi i32 [ %.14946, %715 ], [ %.12944, %.loopexit1465 ]
  %.39591608 = phi i32 [ %.5961, %715 ], [ %.1957, %.loopexit1465 ]
  br i1 %.not1120, label %713, label %708

708:                                              ; preds = %.lr.ph1612
  %709 = add i32 %.39591608, 1
  %710 = icmp eq i32 %709, 4
  br i1 %710, label %711, label %713

711:                                              ; preds = %708
  %712 = load i8, ptr @_ZL12stbsp__comma, align 1, !tbaa !5
  store i8 %712, ptr %.148971610, align 1, !tbaa !5
  br label %715

713:                                              ; preds = %708, %.lr.ph1612
  %.4960 = phi i32 [ %709, %708 ], [ %.39591608, %.lr.ph1612 ]
  store i8 48, ptr %.148971610, align 1, !tbaa !5
  %714 = add i32 %.139451609, -1
  br label %715

715:                                              ; preds = %713, %711
  %.5961 = phi i32 [ 0, %711 ], [ %.4960, %713 ]
  %.14946 = phi i32 [ %.139451609, %711 ], [ %714, %713 ]
  %.15898 = getelementptr inbounds i8, ptr %.148971610, i64 1
  %.not1127 = icmp eq i32 %.14946, 0
  br i1 %.not1127, label %.loopexit1463, label %.lr.ph1612, !llvm.loop !37

.loopexit1463:                                    ; preds = %715, %.loopexit1465, %685
  %.16899 = phi ptr [ %677, %685 ], [ %.13896, %.loopexit1465 ], [ %.15898, %715 ]
  %716 = ptrtoint ptr %.16899 to i64
  %717 = sub i64 %716, %22
  %718 = trunc i64 %717 to i32
  %719 = add nsw i32 %718, 50331648
  %.not1128 = icmp eq i32 %.6819, 0
  br i1 %.not1128, label %764, label %720

720:                                              ; preds = %.loopexit1463
  %721 = load i8, ptr @_ZL13stbsp__period, align 1, !tbaa !5
  %722 = getelementptr inbounds i8, ptr %.16899, i64 1
  store i8 %721, ptr %.16899, align 1, !tbaa !5
  br label %764

723:                                              ; preds = %.preheader1462.peel.next, %731, %.preheader1462.outer
  %.17900.lcssa = phi ptr [ %.17900.ph, %.preheader1462.outer ], [ %.17900.ph, %731 ], [ %735, %.preheader1462.peel.next ]
  %.7963 = phi i32 [ %.6962.ph, %.preheader1462.outer ], [ %732, %731 ], [ %.7963.ph, %.preheader1462.peel.next ]
  %724 = load ptr, ptr %13, align 8, !tbaa !15
  %725 = zext i32 %.15947.ph to i64
  %726 = getelementptr inbounds i8, ptr %724, i64 %725
  %727 = load i8, ptr %726, align 1, !tbaa !5
  %728 = getelementptr inbounds i8, ptr %.17900.lcssa, i64 1
  store i8 %727, ptr %.17900.lcssa, align 1, !tbaa !5
  %729 = add i32 %.15947.ph, 1
  %730 = load i32, ptr %12, align 4, !tbaa !8
  %.not1122 = icmp ult i32 %729, %730
  br i1 %.not1122, label %.preheader1462.outer, label %736, !llvm.loop !38

.preheader1462.outer:                             ; preds = %669, %723
  %.6962.ph = phi i32 [ %.7963, %723 ], [ %670, %669 ]
  %.15947.ph = phi i32 [ %729, %723 ], [ 0, %669 ]
  %.17900.ph = phi ptr [ %728, %723 ], [ %21, %669 ]
  br i1 %.not1120, label %723, label %731

731:                                              ; preds = %.preheader1462.outer
  %732 = add i32 %.6962.ph, 1
  %733 = icmp eq i32 %732, 4
  br i1 %733, label %.preheader1462.peel.next, label %723

.preheader1462.peel.next:                         ; preds = %731
  %734 = load i8, ptr @_ZL12stbsp__comma, align 1, !tbaa !5
  %735 = getelementptr inbounds i8, ptr %.17900.ph, i64 1
  store i8 %734, ptr %.17900.ph, align 1, !tbaa !5
  %.7963.ph = select i1 %.not1120, i32 0, i32 1
  br label %723

736:                                              ; preds = %723
  %737 = ptrtoint ptr %728 to i64
  %738 = sub i64 %737, %22
  %739 = trunc i64 %738 to i32
  %740 = add nsw i32 %739, 50331648
  %.not1123 = icmp eq i32 %.6819, 0
  br i1 %.not1123, label %744, label %741

741:                                              ; preds = %736
  %742 = load i8, ptr @_ZL13stbsp__period, align 1, !tbaa !5
  %743 = getelementptr inbounds i8, ptr %.17900.lcssa, i64 2
  store i8 %742, ptr %728, align 1, !tbaa !5
  %.pre2053 = load i32, ptr %12, align 4, !tbaa !8
  br label %744

744:                                              ; preds = %741, %736
  %745 = phi i32 [ %.pre2053, %741 ], [ %730, %736 ]
  %.19902 = phi ptr [ %743, %741 ], [ %728, %736 ]
  %746 = load i32, ptr %10, align 4, !tbaa !8
  %747 = sub i32 %746, %745
  %748 = icmp ugt i32 %747, %.6819
  br i1 %748, label %749, label %751

749:                                              ; preds = %744
  %750 = add nsw i32 %745, %.6819
  store i32 %750, ptr %10, align 4, !tbaa !8
  br label %751

751:                                              ; preds = %749, %744
  %752 = phi i32 [ %750, %749 ], [ %746, %744 ]
  %753 = icmp ult i32 %729, %752
  br i1 %753, label %.lr.ph1617.preheader, label %._crit_edge1618

.lr.ph1617.preheader:                             ; preds = %751
  %754 = zext i32 %729 to i64
  br label %.lr.ph1617

.lr.ph1617:                                       ; preds = %.lr.ph1617.preheader, %.lr.ph1617
  %indvars.iv1972 = phi i64 [ %754, %.lr.ph1617.preheader ], [ %indvars.iv.next1973, %.lr.ph1617 ]
  %.209031615 = phi ptr [ %.19902, %.lr.ph1617.preheader ], [ %758, %.lr.ph1617 ]
  %755 = load ptr, ptr %13, align 8, !tbaa !15
  %756 = getelementptr inbounds i8, ptr %755, i64 %indvars.iv1972
  %757 = load i8, ptr %756, align 1, !tbaa !5
  %758 = getelementptr inbounds i8, ptr %.209031615, i64 1
  store i8 %757, ptr %.209031615, align 1, !tbaa !5
  %indvars.iv.next1973 = add nuw nsw i64 %indvars.iv1972, 1
  %759 = load i32, ptr %10, align 4, !tbaa !8
  %760 = zext i32 %759 to i64
  %761 = icmp ult i64 %indvars.iv.next1973, %760
  br i1 %761, label %.lr.ph1617, label %._crit_edge1618.loopexit, !llvm.loop !39

._crit_edge1618.loopexit:                         ; preds = %.lr.ph1617
  %.pre2054 = load i32, ptr %12, align 4, !tbaa !8
  br label %._crit_edge1618

._crit_edge1618:                                  ; preds = %._crit_edge1618.loopexit, %751
  %762 = phi i32 [ %745, %751 ], [ %.pre2054, %._crit_edge1618.loopexit ]
  %.20903.lcssa = phi ptr [ %.19902, %751 ], [ %758, %._crit_edge1618.loopexit ]
  %.lcssa1494 = phi i32 [ %752, %751 ], [ %759, %._crit_edge1618.loopexit ]
  %.neg1124 = sub i32 %.6819, %.lcssa1494
  %763 = add i32 %.neg1124, %762
  br label %764

764:                                              ; preds = %._crit_edge1618, %720, %.loopexit1463, %._crit_edge1645
  %.9965 = phi i32 [ 50331649, %._crit_edge1645 ], [ %719, %720 ], [ %719, %.loopexit1463 ], [ %740, %._crit_edge1618 ]
  %.21904 = phi ptr [ %.8891.lcssa, %._crit_edge1645 ], [ %722, %720 ], [ %.16899, %.loopexit1463 ], [ %.20903.lcssa, %._crit_edge1618 ]
  %.1835 = phi i32 [ %663, %._crit_edge1645 ], [ %.6819, %720 ], [ 0, %.loopexit1463 ], [ %763, %._crit_edge1618 ]
  %765 = and i32 %.10849, 256
  %.not1133 = icmp eq i32 %765, 0
  br i1 %.not1133, label %786, label %766

766:                                              ; preds = %764
  %767 = and i32 %.10849, 1024
  %.not1134 = icmp eq i32 %767, 0
  %spec.store.select26 = zext i1 %.not1134 to i8
  store i8 %spec.store.select26, ptr %9, align 1, !tbaa !5
  store i8 32, ptr %25, align 1, !tbaa !5
  %.not1135 = icmp ult i32 %.10849, 16777216
  br i1 %.not1135, label %786, label %768

768:                                              ; preds = %766
  %769 = lshr i32 %.10849, 24
  %770 = and i32 %.10849, 2048
  %.not1136.not = icmp eq i32 %770, 0
  %771 = zext nneg i32 %769 to i64
  %.lobit = lshr exact i32 %767, 10
  %772 = sub nuw nsw i32 2, %.lobit
  %773 = zext nneg i32 %772 to i64
  %774 = getelementptr inbounds [8 x i8], ptr %9, i64 0, i64 %773
  %775 = select i1 %.not1134, i8 2, i8 1
  br i1 %.not1136.not, label %.thread1271, label %778

.thread1271:                                      ; preds = %768
  %776 = getelementptr inbounds [6 x i8], ptr @.str.2, i64 0, i64 %771
  %777 = load i8, ptr %776, align 1, !tbaa !5
  store i8 %777, ptr %774, align 1, !tbaa !5
  br label %785

778:                                              ; preds = %768
  %779 = getelementptr inbounds [6 x i8], ptr @.str.1, i64 0, i64 %771
  %780 = load i8, ptr %779, align 1, !tbaa !5
  store i8 %780, ptr %774, align 1, !tbaa !5
  %781 = and i32 %.10849, 6144
  %or.cond1213 = icmp eq i32 %781, 2048
  br i1 %or.cond1213, label %782, label %785

782:                                              ; preds = %778
  %narrow = add nuw nsw i8 %775, 1
  %783 = zext nneg i8 %narrow to i64
  %784 = getelementptr inbounds [8 x i8], ptr %9, i64 0, i64 %783
  store i8 105, ptr %784, align 1, !tbaa !5
  br label %785

785:                                              ; preds = %.thread1271, %782, %778
  %.0979 = phi i8 [ %narrow, %782 ], [ %775, %778 ], [ %775, %.thread1271 ]
  store i8 %.0979, ptr %9, align 1, !tbaa !5
  br label %786

.loopexit1459:                                    ; preds = %543, %528
  %.lcssa2402 = phi i32 [ %538, %528 ], [ %544, %543 ]
  store i32 %.lcssa2402, ptr %12, align 4, !tbaa !8
  br label %786

786:                                              ; preds = %.loopexit1459, %766, %785, %764
  %.10966 = phi i32 [ %.9965, %764 ], [ %.9965, %785 ], [ %.9965, %766 ], [ 50331649, %.loopexit1459 ]
  %.22905 = phi ptr [ %.21904, %764 ], [ %.21904, %785 ], [ %.21904, %766 ], [ %.3886.lcssa, %.loopexit1459 ]
  %.11850 = phi i32 [ %.10849, %764 ], [ %.10849, %785 ], [ %.10849, %766 ], [ %.6845, %.loopexit1459 ]
  %.2836 = phi i32 [ %.1835, %764 ], [ %.1835, %785 ], [ %.1835, %766 ], [ %520, %.loopexit1459 ]
  %787 = ptrtoint ptr %.22905 to i64
  %788 = sub i64 %787, %22
  %789 = trunc i64 %788 to i32
  store i32 %789, ptr %10, align 4, !tbaa !8
  br label %994

790:                                              ; preds = %197
  br label %791

791:                                              ; preds = %197, %790
  %.4929 = phi ptr [ @_ZZ16stbsp_vsprintfcbE3hex, %790 ], [ @_ZZ16stbsp_vsprintfcbE4hexu, %197 ]
  store i8 0, ptr %8, align 1, !tbaa !5
  %792 = and i32 %.3842, 8
  %.not1110 = icmp eq i32 %792, 0
  br i1 %.not1110, label %796, label %793

793:                                              ; preds = %791
  store i8 2, ptr %8, align 1, !tbaa !5
  store i8 48, ptr %16, align 1, !tbaa !5
  %794 = getelementptr inbounds i8, ptr %.4929, i64 11
  %795 = load i8, ptr %794, align 1, !tbaa !5
  store i8 %795, ptr %17, align 1, !tbaa !5
  br label %796

796:                                              ; preds = %793, %791
  store i32 384, ptr %10, align 4, !tbaa !8
  br label %810

797:                                              ; preds = %197
  store i8 0, ptr %8, align 1, !tbaa !5
  %798 = and i32 %.3842, 8
  %.not1109 = icmp eq i32 %798, 0
  br i1 %.not1109, label %800, label %799

799:                                              ; preds = %797
  store i8 1, ptr %8, align 1, !tbaa !5
  store i8 48, ptr %16, align 1, !tbaa !5
  br label %800

800:                                              ; preds = %799, %797
  store i32 816, ptr %10, align 4, !tbaa !8
  br label %810

801:                                              ; preds = %197
  %802 = and i32 %.3842, -49
  %803 = or disjoint i32 %802, 32
  br label %805

804:                                              ; preds = %197
  br label %805

805:                                              ; preds = %197, %801, %804
  %.5930 = phi ptr [ @_ZZ16stbsp_vsprintfcbE3hex, %804 ], [ @_ZZ16stbsp_vsprintfcbE4hexu, %801 ], [ @_ZZ16stbsp_vsprintfcbE4hexu, %197 ]
  %.13852 = phi i32 [ %.3842, %804 ], [ %803, %801 ], [ %.3842, %197 ]
  %.9822 = phi i32 [ %.1814, %804 ], [ 16, %801 ], [ %.1814, %197 ]
  store i32 1088, ptr %10, align 4, !tbaa !8
  store i8 0, ptr %8, align 1, !tbaa !5
  %806 = and i32 %.13852, 8
  %.not1108 = icmp eq i32 %806, 0
  br i1 %.not1108, label %810, label %807

807:                                              ; preds = %805
  store i8 2, ptr %8, align 1, !tbaa !5
  store i8 48, ptr %16, align 1, !tbaa !5
  %808 = getelementptr inbounds i8, ptr %.5930, i64 16
  %809 = load i8, ptr %808, align 16, !tbaa !5
  store i8 %809, ptr %17, align 1, !tbaa !5
  br label %810

810:                                              ; preds = %805, %807, %800, %796
  %811 = phi i32 [ 4, %807 ], [ 4, %805 ], [ 3, %800 ], [ 1, %796 ]
  %.6931 = phi ptr [ %.5930, %807 ], [ %.5930, %805 ], [ @_ZZ16stbsp_vsprintfcbE4hexu, %800 ], [ %.4929, %796 ]
  %.14853 = phi i32 [ %.13852, %807 ], [ %.13852, %805 ], [ %.3842, %800 ], [ %.3842, %796 ]
  %.10823 = phi i32 [ %.9822, %807 ], [ %.9822, %805 ], [ %.1814, %800 ], [ %.1814, %796 ]
  %812 = and i32 %.14853, 32
  %.not1111 = icmp eq i32 %812, 0
  %813 = load i32, ptr %4, align 8
  %814 = icmp ult i32 %813, 41
  br i1 %.not1111, label %827, label %815

815:                                              ; preds = %810
  br i1 %814, label %816, label %821

816:                                              ; preds = %815
  %817 = load ptr, ptr %15, align 8
  %818 = zext nneg i32 %813 to i64
  %819 = getelementptr i8, ptr %817, i64 %818
  %820 = add nuw nsw i32 %813, 8
  store i32 %820, ptr %4, align 8
  br label %824

821:                                              ; preds = %815
  %822 = load ptr, ptr %14, align 8
  %823 = getelementptr i8, ptr %822, i64 8
  store ptr %823, ptr %14, align 8
  br label %824

824:                                              ; preds = %821, %816
  %825 = phi ptr [ %819, %816 ], [ %822, %821 ]
  %826 = load i64, ptr %825, align 8, !tbaa !20
  br label %840

827:                                              ; preds = %810
  br i1 %814, label %828, label %833

828:                                              ; preds = %827
  %829 = load ptr, ptr %15, align 8
  %830 = zext nneg i32 %813 to i64
  %831 = getelementptr i8, ptr %829, i64 %830
  %832 = add nuw nsw i32 %813, 8
  store i32 %832, ptr %4, align 8
  br label %836

833:                                              ; preds = %827
  %834 = load ptr, ptr %14, align 8
  %835 = getelementptr i8, ptr %834, i64 8
  store ptr %835, ptr %14, align 8
  br label %836

836:                                              ; preds = %833, %828
  %837 = phi ptr [ %831, %828 ], [ %834, %833 ]
  %838 = load i32, ptr %837, align 4, !tbaa !8
  %839 = zext i32 %838 to i64
  br label %840

840:                                              ; preds = %836, %824
  %storemerge1112 = phi i64 [ %839, %836 ], [ %826, %824 ]
  store i64 %storemerge1112, ptr %11, align 8, !tbaa !20
  store i32 0, ptr %12, align 4, !tbaa !8
  store i8 0, ptr %9, align 1, !tbaa !5
  %841 = icmp eq i64 %storemerge1112, 0
  br i1 %841, label %842, label %845

842:                                              ; preds = %840
  store i8 0, ptr %8, align 1, !tbaa !5
  %843 = icmp eq i32 %.10823, 0
  br i1 %843, label %844, label %845

844:                                              ; preds = %842
  store i32 0, ptr %10, align 4, !tbaa !8
  br label %994

845:                                              ; preds = %842, %840
  %846 = and i32 %.14853, 64
  %.not1114 = icmp eq i32 %846, 0
  %notmask2273 = shl nsw i32 -1, %811
  %847 = xor i32 %notmask2273, -1
  %848 = zext nneg i32 %847 to i64
  %849 = and i64 %storemerge1112, %848
  %850 = getelementptr inbounds i8, ptr %.6931, i64 %849
  %851 = load i8, ptr %850, align 1, !tbaa !5
  store i8 %851, ptr %30, align 1, !tbaa !5
  %852 = load i32, ptr %10, align 4, !tbaa !8
  %853 = lshr i32 %852, 8
  %854 = load i64, ptr %11, align 8, !tbaa !20
  %855 = zext nneg i32 %853 to i64
  %856 = lshr i64 %854, %855
  store i64 %856, ptr %11, align 8, !tbaa !20
  %.not11132274 = icmp ne i64 %856, 0
  %857 = icmp sgt i32 %.10823, 1
  %or.cond18652275 = select i1 %.not11132274, i1 true, i1 %857
  br i1 %or.cond18652275, label %.lr.ph2278, label %._crit_edge2279

.lr.ph2278:                                       ; preds = %845, %871
  %858 = phi i64 [ %883, %871 ], [ %856, %845 ]
  %859 = phi i32 [ %879, %871 ], [ %852, %845 ]
  %860 = phi ptr [ %878, %871 ], [ %30, %845 ]
  %.239062276 = phi ptr [ %.24907, %871 ], [ %18, %845 ]
  br i1 %.not1114, label %871, label %861

861:                                              ; preds = %.lr.ph2278
  %862 = add i32 %859, 1
  store i32 %862, ptr %10, align 4, !tbaa !8
  %863 = lshr i32 %862, 4
  %864 = xor i32 %863, %862
  %865 = and i32 %864, 15
  %866 = icmp eq i32 %865, 0
  br i1 %866, label %867, label %871

867:                                              ; preds = %861
  %868 = and i32 %862, -16
  store i32 %868, ptr %10, align 4, !tbaa !8
  %869 = load i8, ptr @_ZL12stbsp__comma, align 1, !tbaa !5
  %870 = getelementptr inbounds i8, ptr %.239062276, i64 -2
  store i8 %869, ptr %870, align 1, !tbaa !5
  %.pre2048.pre = load i64, ptr %11, align 8, !tbaa !20
  %.pre2049.pre = load i32, ptr %10, align 4, !tbaa !8
  br label %871

871:                                              ; preds = %861, %867, %.lr.ph2278
  %.pre2049 = phi i32 [ %.pre2049.pre, %867 ], [ %862, %861 ], [ %859, %.lr.ph2278 ]
  %.pre2048 = phi i64 [ %.pre2048.pre, %867 ], [ %858, %861 ], [ %858, %.lr.ph2278 ]
  %.24907 = phi ptr [ %870, %867 ], [ %860, %861 ], [ %860, %.lr.ph2278 ]
  %872 = lshr i32 %.pre2049, 8
  %notmask = shl nsw i32 -1, %872
  %873 = xor i32 %notmask, -1
  %874 = zext nneg i32 %873 to i64
  %875 = and i64 %.pre2048, %874
  %876 = getelementptr inbounds i8, ptr %.6931, i64 %875
  %877 = load i8, ptr %876, align 1, !tbaa !5
  %878 = getelementptr inbounds i8, ptr %.24907, i64 -1
  store i8 %877, ptr %878, align 1, !tbaa !5
  %879 = load i32, ptr %10, align 4, !tbaa !8
  %880 = lshr i32 %879, 8
  %881 = load i64, ptr %11, align 8, !tbaa !20
  %882 = zext nneg i32 %880 to i64
  %883 = lshr i64 %881, %882
  store i64 %883, ptr %11, align 8, !tbaa !20
  %.not1113 = icmp ne i64 %883, 0
  %884 = ptrtoint ptr %878 to i64
  %885 = sub i64 %19, %884
  %886 = trunc i64 %885 to i32
  %887 = icmp sgt i32 %.10823, %886
  %or.cond1865 = select i1 %.not1113, i1 true, i1 %887
  br i1 %or.cond1865, label %.lr.ph2278, label %._crit_edge2279, !llvm.loop !40

._crit_edge2279:                                  ; preds = %871, %845
  %.lcssa2231 = phi ptr [ %30, %845 ], [ %878, %871 ]
  %.lcssa2230 = phi i32 [ %852, %845 ], [ %879, %871 ]
  %.lcssa2229 = phi i32 [ 1, %845 ], [ %886, %871 ]
  %888 = shl i32 %.lcssa2230, 20
  %889 = and i32 %888, 251658240
  %890 = add i32 %889, %.lcssa2229
  store i32 %.lcssa2229, ptr %10, align 4, !tbaa !8
  br label %994

891:                                              ; preds = %197, %197, %197
  %892 = and i32 %.3842, 32
  %.not1093 = icmp eq i32 %892, 0
  %893 = load i32, ptr %4, align 8
  %894 = icmp ult i32 %893, 41
  br i1 %.not1093, label %913, label %895

895:                                              ; preds = %891
  br i1 %894, label %896, label %901

896:                                              ; preds = %895
  %897 = load ptr, ptr %15, align 8
  %898 = zext nneg i32 %893 to i64
  %899 = getelementptr i8, ptr %897, i64 %898
  %900 = add nuw nsw i32 %893, 8
  store i32 %900, ptr %4, align 8
  br label %904

901:                                              ; preds = %895
  %902 = load ptr, ptr %14, align 8
  %903 = getelementptr i8, ptr %902, i64 8
  store ptr %903, ptr %14, align 8
  br label %904

904:                                              ; preds = %901, %896
  %905 = phi ptr [ %899, %896 ], [ %902, %901 ]
  %906 = load i64, ptr %905, align 8, !tbaa !20
  store i64 %906, ptr %11, align 8, !tbaa !20
  %907 = load i8, ptr %.12748, align 1, !tbaa !5
  %908 = icmp ne i8 %907, 117
  %909 = icmp slt i64 %906, 0
  %or.cond28 = select i1 %908, i1 %909, i1 false
  br i1 %or.cond28, label %910, label %933

910:                                              ; preds = %904
  %911 = sub nsw i64 0, %906
  store i64 %911, ptr %11, align 8, !tbaa !20
  %912 = or i32 %.3842, 128
  br label %933

913:                                              ; preds = %891
  br i1 %894, label %914, label %919

914:                                              ; preds = %913
  %915 = load ptr, ptr %15, align 8
  %916 = zext nneg i32 %893 to i64
  %917 = getelementptr i8, ptr %915, i64 %916
  %918 = add nuw nsw i32 %893, 8
  store i32 %918, ptr %4, align 8
  br label %922

919:                                              ; preds = %913
  %920 = load ptr, ptr %14, align 8
  %921 = getelementptr i8, ptr %920, i64 8
  store ptr %921, ptr %14, align 8
  br label %922

922:                                              ; preds = %919, %914
  %923 = phi ptr [ %917, %914 ], [ %920, %919 ]
  %924 = load i32, ptr %923, align 4, !tbaa !8
  %925 = zext i32 %924 to i64
  store i64 %925, ptr %11, align 8, !tbaa !20
  %926 = load i8, ptr %.12748, align 1, !tbaa !5
  %927 = icmp ne i8 %926, 117
  %928 = icmp slt i32 %924, 0
  %or.cond30 = select i1 %927, i1 %928, i1 false
  br i1 %or.cond30, label %929, label %933

929:                                              ; preds = %922
  %930 = sub nsw i32 0, %924
  %931 = zext nneg i32 %930 to i64
  store i64 %931, ptr %11, align 8, !tbaa !20
  %932 = or i32 %.3842, 128
  br label %933

933:                                              ; preds = %922, %929, %904, %910
  %.promoted1570 = phi i64 [ %911, %910 ], [ %906, %904 ], [ %931, %929 ], [ %925, %922 ]
  %.17856 = phi i32 [ %912, %910 ], [ %.3842, %904 ], [ %932, %929 ], [ %.3842, %922 ]
  %934 = and i32 %.17856, 256
  %.not1094 = icmp eq i32 %934, 0
  br i1 %.not1094, label %938, label %.thread2082

.thread2082:                                      ; preds = %933
  %935 = icmp ult i64 %.promoted1570, 1024
  %936 = icmp eq i32 %.1814, -1
  %spec.store.select31 = select i1 %936, i32 1, i32 %.1814
  %.11824 = select i1 %935, i32 0, i32 %spec.store.select31
  %937 = sitofp i64 %.promoted1570 to double
  br label %563

938:                                              ; preds = %933
  store i32 0, ptr %10, align 4, !tbaa !8
  %939 = and i32 %.17856, 64
  %940 = icmp eq i32 %939, 0
  %941 = load i8, ptr @_ZL12stbsp__comma, align 1
  br label %.loopexit1442

..loopexit1442_crit_edge.split:                   ; preds = %980
  store i32 %981, ptr %10, align 4, !tbaa !8
  br label %.loopexit1442.backedge

.loopexit1442:                                    ; preds = %.loopexit1442.backedge, %938
  %.lcssa15691577 = phi i32 [ 0, %938 ], [ %.lcssa15691577.be, %.loopexit1442.backedge ]
  %storemerge1571 = phi i64 [ %.promoted1570, %938 ], [ %storemerge, %.loopexit1442.backedge ]
  %.25908.idx = phi i64 [ 512, %938 ], [ %.25908.idx.be, %.loopexit1442.backedge ]
  %gep = getelementptr i8, ptr %invariant.gep, i64 %.25908.idx
  %942 = icmp ugt i64 %storemerge1571, 99999999
  br i1 %942, label %943, label %946

943:                                              ; preds = %.loopexit1442
  %944 = urem i64 %storemerge1571, 100000000
  %945 = udiv i64 %storemerge1571, 100000000
  br label %946

946:                                              ; preds = %.loopexit1442, %943
  %storemerge = phi i64 [ %945, %943 ], [ 0, %.loopexit1442 ]
  %.18950.in = phi i64 [ %944, %943 ], [ %storemerge1571, %.loopexit1442 ]
  %.18950 = trunc nuw i64 %.18950.in to i32
  %947 = icmp ne i64 %.18950.in, 0
  %or.cond38 = and i1 %940, %947
  br i1 %or.cond38, label %.preheader1443, label %.loopexit1444

.preheader1443:                                   ; preds = %946, %.preheader1443
  %.19951 = phi i32 [ %953, %.preheader1443 ], [ %.18950, %946 ]
  %.26909.idx = phi i64 [ %.26909.add, %.preheader1443 ], [ %.25908.idx, %946 ]
  %.26909.add = add nsw i64 %.26909.idx, -2
  %.ptr = getelementptr inbounds i8, ptr %6, i64 %.26909.add
  %948 = urem i32 %.19951, 100
  %949 = shl nuw nsw i32 %948, 1
  %950 = zext nneg i32 %949 to i64
  %951 = getelementptr inbounds [201 x i8], ptr @_ZL16stbsp__digitpair, i64 0, i64 %950
  %952 = load i16, ptr %951, align 2, !tbaa !41
  store i16 %952, ptr %.ptr, align 2, !tbaa !41
  %953 = udiv i32 %.19951, 100
  %.old37.not = icmp ult i32 %.19951, 100
  br i1 %.old37.not, label %._crit_edge, label %.preheader1443

.loopexit1444:                                    ; preds = %946
  %.not10951549 = icmp eq i64 %.18950.in, 0
  br i1 %.not10951549, label %._crit_edge, label %.lr.ph1553

.lr.ph1553:                                       ; preds = %.loopexit1444
  br i1 %940, label %.lr.ph1553.split.us, label %.lr.ph1553.split

.lr.ph1553.split.us:                              ; preds = %.lr.ph1553, %.lr.ph1553.split.us
  %.28911.idx1552.us = phi i64 [ %.28911.add.us, %.lr.ph1553.split.us ], [ %.25908.idx, %.lr.ph1553 ]
  %.219531551.us = phi i32 [ %957, %.lr.ph1553.split.us ], [ %.18950, %.lr.ph1553 ]
  %954 = urem i32 %.219531551.us, 10
  %955 = trunc nuw nsw i32 %954 to i8
  %956 = or disjoint i8 %955, 48
  %.28911.add.us = add nsw i64 %.28911.idx1552.us, -1
  %.ptr1101.us = getelementptr inbounds i8, ptr %6, i64 %.28911.add.us
  store i8 %956, ptr %.ptr1101.us, align 1, !tbaa !5
  %957 = udiv i32 %.219531551.us, 10
  %.not1095.us = icmp ult i32 %.219531551.us, 10
  br i1 %.not1095.us, label %._crit_edge, label %.lr.ph1553.split.us, !llvm.loop !43

.lr.ph1553.split:                                 ; preds = %.lr.ph1553, %968
  %.28911.idx1552 = phi i64 [ %.29912.idx, %968 ], [ %.25908.idx, %.lr.ph1553 ]
  %.219531551 = phi i32 [ %.22954, %968 ], [ %.18950, %.lr.ph1553 ]
  %.09941550 = phi ptr [ %.1995, %968 ], [ %gep, %.lr.ph1553 ]
  %958 = phi i32 [ %969, %968 ], [ %.lcssa15691577, %.lr.ph1553 ]
  %959 = icmp eq i32 %958, 3
  br i1 %959, label %960, label %962

960:                                              ; preds = %.lr.ph1553.split
  %.28911.add1098 = add nsw i64 %.28911.idx1552, -1
  %.ptr1102 = getelementptr inbounds i8, ptr %6, i64 %.28911.add1098
  store i8 %941, ptr %.ptr1102, align 1, !tbaa !5
  %961 = getelementptr inbounds i8, ptr %.09941550, i64 -1
  br label %968

962:                                              ; preds = %.lr.ph1553.split
  %963 = add i32 %958, 1
  %964 = urem i32 %.219531551, 10
  %965 = trunc nuw nsw i32 %964 to i8
  %966 = or disjoint i8 %965, 48
  %.28911.add = add nsw i64 %.28911.idx1552, -1
  %.ptr1101 = getelementptr inbounds i8, ptr %6, i64 %.28911.add
  store i8 %966, ptr %.ptr1101, align 1, !tbaa !5
  %967 = udiv i32 %.219531551, 10
  br label %968

968:                                              ; preds = %962, %960
  %969 = phi i32 [ 0, %960 ], [ %963, %962 ]
  %.1995 = phi ptr [ %961, %960 ], [ %.09941550, %962 ]
  %.22954 = phi i32 [ %.219531551, %960 ], [ %967, %962 ]
  %.29912.idx = phi i64 [ %.28911.add1098, %960 ], [ %.28911.add, %962 ]
  %.not1095 = icmp eq i32 %.22954, 0
  br i1 %.not1095, label %._crit_edge.split, label %.lr.ph1553.split, !llvm.loop !43

._crit_edge.split:                                ; preds = %968
  store i32 %969, ptr %10, align 4, !tbaa !8
  br label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph1553.split.us, %.preheader1443, %._crit_edge.split, %.loopexit1444
  %.lcssa15691576 = phi i32 [ %.lcssa15691577, %.loopexit1444 ], [ %969, %._crit_edge.split ], [ %.lcssa15691577, %.preheader1443 ], [ %.lcssa15691577, %.lr.ph1553.split.us ]
  %.28911.idx.lcssa1548 = phi i64 [ %.25908.idx, %.loopexit1444 ], [ %.29912.idx, %._crit_edge.split ], [ %.26909.add, %.preheader1443 ], [ %.28911.add.us, %.lr.ph1553.split.us ]
  %.0994.lcssa = phi ptr [ %gep, %.loopexit1444 ], [ %.1995, %._crit_edge.split ], [ %gep, %.preheader1443 ], [ %gep, %.lr.ph1553.split.us ]
  %.0994.lcssa1962 = ptrtoint ptr %.0994.lcssa to i64
  %970 = icmp eq i64 %storemerge, 0
  br i1 %970, label %982, label %.preheader1441

.preheader1441:                                   ; preds = %._crit_edge
  %.31914.ptr1562 = getelementptr inbounds i8, ptr %6, i64 %.28911.idx.lcssa1548
  %.not10961563 = icmp eq ptr %.31914.ptr1562, %.0994.lcssa
  br i1 %.not10961563, label %.loopexit1442.backedge, label %.lr.ph1566

.lr.ph1566:                                       ; preds = %.preheader1441
  br i1 %940, label %.lr.ph1566.split.us.preheader, label %.lr.ph1566.split

.lr.ph1566.split.us.preheader:                    ; preds = %.lr.ph1566
  %scevgep1963 = getelementptr i8, ptr %scevgep, i64 %.0994.lcssa1962
  %971 = add i64 %.28911.idx.lcssa1548, %7
  %972 = sub i64 %971, %.0994.lcssa1962
  call void @llvm.memset.p0.i64(ptr align 1 %scevgep1963, i8 48, i64 %972, i1 false), !tbaa !5
  %973 = sub i64 %.0994.lcssa1962, %7
  br label %.loopexit1442.backedge

.loopexit1442.backedge:                           ; preds = %.lr.ph1566.split.us.preheader, %..loopexit1442_crit_edge.split, %.preheader1441
  %.lcssa15691577.be = phi i32 [ %.lcssa15691576, %.preheader1441 ], [ %981, %..loopexit1442_crit_edge.split ], [ %.lcssa15691576, %.lr.ph1566.split.us.preheader ]
  %.25908.idx.be = phi i64 [ %.28911.idx.lcssa1548, %.preheader1441 ], [ %.32915.idx, %..loopexit1442_crit_edge.split ], [ %973, %.lr.ph1566.split.us.preheader ]
  br label %.loopexit1442

.lr.ph1566.split:                                 ; preds = %.lr.ph1566, %980
  %.31914.idx1565 = phi i64 [ %.32915.idx, %980 ], [ %.28911.idx.lcssa1548, %.lr.ph1566 ]
  %.29961564 = phi ptr [ %.3997, %980 ], [ %.0994.lcssa, %.lr.ph1566 ]
  %974 = phi i32 [ %981, %980 ], [ %.lcssa15691576, %.lr.ph1566 ]
  %975 = icmp eq i32 %974, 3
  br i1 %975, label %976, label %978

976:                                              ; preds = %.lr.ph1566.split
  %.31914.add1100 = add nsw i64 %.31914.idx1565, -1
  %.ptr1106 = getelementptr inbounds i8, ptr %6, i64 %.31914.add1100
  store i8 %941, ptr %.ptr1106, align 1, !tbaa !5
  %977 = getelementptr inbounds i8, ptr %.29961564, i64 -1
  br label %980

978:                                              ; preds = %.lr.ph1566.split
  %979 = add i32 %974, 1
  %.31914.add = add nsw i64 %.31914.idx1565, -1
  %.ptr1105 = getelementptr inbounds i8, ptr %6, i64 %.31914.add
  store i8 48, ptr %.ptr1105, align 1, !tbaa !5
  br label %980

980:                                              ; preds = %978, %976
  %981 = phi i32 [ 0, %976 ], [ %979, %978 ]
  %.3997 = phi ptr [ %977, %976 ], [ %.29961564, %978 ]
  %.32915.idx = phi i64 [ %.31914.add1100, %976 ], [ %.31914.add, %978 ]
  %.31914.ptr = getelementptr inbounds i8, ptr %6, i64 %.32915.idx
  %.not1096 = icmp eq ptr %.31914.ptr, %.3997
  br i1 %.not1096, label %..loopexit1442_crit_edge.split, label %.lr.ph1566.split, !llvm.loop !44

982:                                              ; preds = %._crit_edge
  store i64 0, ptr %11, align 8, !tbaa !20
  %.28911.ptr.le.le = getelementptr inbounds i8, ptr %6, i64 %.28911.idx.lcssa1548
  %983 = load i8, ptr %.28911.ptr.le.le, align 1, !tbaa !5
  %984 = icmp eq i8 %983, 48
  %985 = icmp ne i64 %.28911.idx.lcssa1548, 512
  %or.cond35 = and i1 %985, %984
  %.28911.add1099 = zext i1 %or.cond35 to i64
  %spec.select1214 = add nsw i64 %.28911.idx.lcssa1548, %.28911.add1099
  %.33916.ptr1278 = getelementptr inbounds i8, ptr %6, i64 %spec.select1214
  store i8 0, ptr %9, align 1, !tbaa !5
  call void @_ZL16stbsp__lead_signjPc(i32 noundef %.17856, ptr noundef nonnull %8)
  %986 = trunc i64 %spec.select1214 to i32
  %987 = sub i32 512, %986
  store i32 %987, ptr %10, align 4, !tbaa !8
  %988 = icmp eq i32 %986, 512
  br i1 %988, label %989, label %991

989:                                              ; preds = %982
  %990 = getelementptr inbounds i8, ptr %.33916.ptr1278, i64 -1
  store i8 48, ptr %990, align 1, !tbaa !5
  store i32 1, ptr %10, align 4, !tbaa !8
  br label %991

991:                                              ; preds = %989, %982
  %992 = phi i32 [ 1, %989 ], [ %987, %982 ]
  %.34917 = phi ptr [ %990, %989 ], [ %.33916.ptr1278, %982 ]
  %993 = add i32 %992, 50331648
  %spec.store.select36 = call i32 @llvm.smax.i32(i32 %.1814, i32 0)
  br label %994

994:                                              ; preds = %473, %1378, %991, %._crit_edge2279, %844, %786, %599, %._crit_edge1670, %249, %split
  %.11967 = phi i32 [ 0, %1378 ], [ 0, %599 ], [ %.10966, %786 ], [ %993, %991 ], [ 0, %844 ], [ %890, %._crit_edge2279 ], [ 50331649, %._crit_edge1670 ], [ 0, %249 ], [ 0, %split ], [ 0, %473 ]
  %.35918 = phi ptr [ %27, %1378 ], [ %600, %599 ], [ %21, %786 ], [ %.34917, %991 ], [ %18, %844 ], [ %.lcssa2231, %._crit_edge2279 ], [ %21, %._crit_edge1670 ], [ %27, %249 ], [ %spec.store.select, %split ], [ %476, %473 ]
  %.18857 = phi i32 [ 0, %1378 ], [ %.10849, %599 ], [ %.11850, %786 ], [ %.17856, %991 ], [ %.14853, %844 ], [ %.14853, %._crit_edge2279 ], [ %spec.select1198, %._crit_edge1670 ], [ %.3842, %249 ], [ %.3842, %split ], [ %.6845, %473 ]
  %.3837 = phi i32 [ 0, %1378 ], [ 0, %599 ], [ %.2836, %786 ], [ 0, %991 ], [ 0, %844 ], [ 0, %._crit_edge2279 ], [ %spec.select11992080, %._crit_edge1670 ], [ 0, %249 ], [ 0, %split ], [ 0, %473 ]
  %.12825 = phi i32 [ 0, %1378 ], [ 0, %599 ], [ 0, %786 ], [ %spec.store.select36, %991 ], [ 0, %844 ], [ %.10823, %._crit_edge2279 ], [ 0, %._crit_edge1670 ], [ 0, %249 ], [ 0, %split ], [ 0, %473 ]
  %.2805 = phi i32 [ 0, %1378 ], [ %.1804, %599 ], [ %.1804, %786 ], [ %.1804, %991 ], [ %.1804, %844 ], [ %.1804, %._crit_edge2279 ], [ %.1804, %._crit_edge1670 ], [ %.1804, %249 ], [ %.1804, %split ], [ %.1804, %473 ]
  %995 = load i32, ptr %10, align 4, !tbaa !8
  %spec.select1217 = call i32 @llvm.smax.i32(i32 %.12825, i32 %995)
  %996 = load i8, ptr %8, align 1, !tbaa !5
  %997 = sext i8 %996 to i32
  %998 = load i8, ptr %9, align 1, !tbaa !5
  %999 = sext i8 %998 to i32
  %1000 = add i32 %spec.select1217, %.3837
  %1001 = add i32 %1000, %997
  %1002 = add i32 %1001, %999
  %.3806 = call i32 @llvm.smax.i32(i32 %.2805, i32 %1002)
  %1003 = sub i32 %.3806, %1002
  %1004 = sub i32 %spec.select1217, %995
  %1005 = and i32 %.18857, 1
  %1006 = icmp eq i32 %1005, 0
  br i1 %1006, label %1007, label %1011

1007:                                             ; preds = %994
  %1008 = and i32 %.18857, 16
  %.not1150 = icmp eq i32 %1008, 0
  br i1 %.not1150, label %1011, label %1009

1009:                                             ; preds = %1007
  %1010 = call i32 @llvm.smax.i32(i32 %1003, i32 %1004)
  br label %1011

1011:                                             ; preds = %1007, %1009, %994
  %.19858 = phi i32 [ %.18857, %1009 ], [ %.18857, %994 ], [ 0, %1007 ]
  %.14827 = phi i32 [ %1010, %1009 ], [ %1004, %994 ], [ %1004, %1007 ]
  %.4807 = phi i32 [ 0, %1009 ], [ %1003, %994 ], [ %1003, %1007 ]
  %1012 = sub i32 0, %.14827
  %.not1151 = icmp eq i32 %.4807, %1012
  br i1 %.not1151, label %.loopexit1453, label %1013

1013:                                             ; preds = %1011
  %1014 = and i32 %.19858, 1
  %1015 = icmp eq i32 %1014, 0
  %1016 = icmp sgt i32 %.4807, 0
  %or.cond41 = and i1 %1015, %1016
  br i1 %or.cond41, label %.preheader1456, label %.loopexit1458

.preheader1456:                                   ; preds = %1013, %.thread1283
  %.5808 = phi i32 [ %1020, %.thread1283 ], [ %.4807, %1013 ]
  %.5755 = phi i32 [ %.8758, %.thread1283 ], [ %.1751, %1013 ]
  %.9690 = phi ptr [ %.15696, %.thread1283 ], [ %.2683, %1013 ]
  %.5 = phi ptr [ %.8, %.thread1283 ], [ %.1, %1013 ]
  %.9690.fr = freeze ptr %.9690
  %1017 = ptrtoint ptr %.9690.fr to i64
  %1018 = ptrtoint ptr %.5 to i64
  %.neg1153 = sub i64 %1018, %1017
  %.neg1154 = trunc i64 %.neg1153 to i32
  %1019 = add i32 %.neg1154, 512
  %spec.select1218 = call i32 @llvm.smin.i32(i32 %.5808, i32 %1019)
  %.1981 = select i1 %.not1088, i32 %.5808, i32 %spec.select1218
  %1020 = sub nsw i32 %.5808, %.1981
  %.not11551684 = icmp eq i32 %.1981, 0
  %1021 = and i64 %1017, 3
  %1022 = icmp eq i64 %1021, 0
  %or.cond12211685 = or i1 %.not11551684, %1022
  br i1 %or.cond12211685, label %.preheader1440, label %.lr.ph1689.preheader

.lr.ph1689.preheader:                             ; preds = %.preheader1456
  %1023 = trunc i64 %1017 to i2
  %1024 = xor i2 %1023, -1
  %1025 = zext i2 %1024 to i64
  %1026 = add i32 %.1981, -1
  %1027 = zext i32 %1026 to i64
  %umin1999 = call i64 @llvm.umin.i64(i64 %1025, i64 %1027)
  %1028 = add nuw nsw i64 %umin1999, 1
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %.9690.fr, i8 32, i64 %1028, i1 false), !tbaa !5
  %1029 = zext i2 %1024 to i32
  %scevgep2000 = getelementptr i8, ptr %.9690.fr, i64 1
  %scevgep2002 = getelementptr i8, ptr %scevgep2000, i64 %umin1999
  %1030 = call i32 @llvm.usub.sat.i32(i32 %1026, i32 %1029)
  br label %.preheader1440

.preheader1440:                                   ; preds = %.lr.ph1689.preheader, %.preheader1456
  %.2982.lcssa = phi i32 [ %.1981, %.preheader1456 ], [ %1030, %.lr.ph1689.preheader ]
  %.10691.lcssa = phi ptr [ %.9690.fr, %.preheader1456 ], [ %scevgep2002, %.lr.ph1689.preheader ]
  %1031 = icmp sgt i32 %.2982.lcssa, 3
  br i1 %1031, label %.lr.ph1694.preheader, label %.preheader1439

.lr.ph1694.preheader:                             ; preds = %.preheader1440
  %1032 = call i32 @llvm.usub.sat.i32(i32 %.2982.lcssa, i32 7)
  %1033 = add nuw i32 %1032, 3
  %1034 = and i32 %1033, -4
  %1035 = zext nneg i32 %1034 to i64
  %1036 = add nuw nsw i64 %1035, 4
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %.10691.lcssa, i8 32, i64 %1036, i1 false), !tbaa !8
  %scevgep2005 = getelementptr i8, ptr %.10691.lcssa, i64 4
  %scevgep2007 = getelementptr i8, ptr %scevgep2005, i64 %1035
  %1037 = and i32 %1033, -4
  %1038 = add nsw i32 %.2982.lcssa, -4
  %1039 = sub nsw i32 %1038, %1037
  br label %.preheader1439

.preheader1439:                                   ; preds = %.lr.ph1694.preheader, %.preheader1440
  %.3983.lcssa = phi i32 [ %.2982.lcssa, %.preheader1440 ], [ %1039, %.lr.ph1694.preheader ]
  %.11692.lcssa = phi ptr [ %.10691.lcssa, %.preheader1440 ], [ %scevgep2007, %.lr.ph1694.preheader ]
  %.not11561697 = icmp eq i32 %.3983.lcssa, 0
  br i1 %.not11561697, label %._crit_edge1701, label %.lr.ph1700.preheader

.lr.ph1700.preheader:                             ; preds = %.preheader1439
  %1040 = zext i32 %.3983.lcssa to i64
  call void @llvm.memset.p0.i64(ptr align 1 %.11692.lcssa, i8 32, i64 %1040, i1 false), !tbaa !5
  %1041 = add i32 %.3983.lcssa, -1
  %1042 = zext i32 %1041 to i64
  %scevgep2008 = getelementptr i8, ptr %.11692.lcssa, i64 1
  %scevgep2009 = getelementptr i8, ptr %scevgep2008, i64 %1042
  br label %._crit_edge1701

._crit_edge1701:                                  ; preds = %.lr.ph1700.preheader, %.preheader1439
  %.12693.lcssa = phi ptr [ %.11692.lcssa, %.preheader1439 ], [ %scevgep2009, %.lr.ph1700.preheader ]
  br i1 %.not1088, label %.thread1283, label %1043

1043:                                             ; preds = %._crit_edge1701
  %1044 = ptrtoint ptr %.12693.lcssa to i64
  %1045 = sub i64 %1044, %1018
  %1046 = trunc i64 %1045 to i32
  %1047 = icmp sgt i32 %1046, 510
  br i1 %1047, label %1048, label %.thread1283

1048:                                             ; preds = %1043
  %1049 = add nsw i32 %.5755, %1046
  %1050 = call noundef ptr %0(ptr noundef %.5, ptr noundef %1, i32 noundef %1046)
  %1051 = icmp eq ptr %1050, null
  br i1 %1051, label %.thread1411, label %.thread1283

.thread1283:                                      ; preds = %1048, %1043, %._crit_edge1701
  %.8758 = phi i32 [ %.5755, %._crit_edge1701 ], [ %.5755, %1043 ], [ %1049, %1048 ]
  %.15696 = phi ptr [ %.12693.lcssa, %._crit_edge1701 ], [ %.12693.lcssa, %1043 ], [ %1050, %1048 ]
  %.8 = phi ptr [ %.5, %._crit_edge1701 ], [ %.5, %1043 ], [ %1050, %1048 ]
  %.old40 = icmp sgt i32 %1020, 0
  br i1 %.old40, label %.preheader1456, label %.loopexit1458.loopexit

.loopexit1458.loopexit:                           ; preds = %.thread1283
  %.pre2055 = load i8, ptr %8, align 1, !tbaa !5
  br label %.loopexit1458

.loopexit1458:                                    ; preds = %.loopexit1458.loopexit, %1013
  %1052 = phi i8 [ %996, %1013 ], [ %.pre2055, %.loopexit1458.loopexit ]
  %.6809 = phi i32 [ %.4807, %1013 ], [ %1020, %.loopexit1458.loopexit ]
  %.9759 = phi i32 [ %.1751, %1013 ], [ %.8758, %.loopexit1458.loopexit ]
  %.16697 = phi ptr [ %.2683, %1013 ], [ %.15696, %.loopexit1458.loopexit ]
  %.9 = phi ptr [ %.1, %1013 ], [ %.8, %.loopexit1458.loopexit ]
  store ptr %16, ptr %13, align 8, !tbaa !15
  %.not11571710 = icmp eq i8 %1052, 0
  br i1 %.not11571710, label %._crit_edge1716, label %.lr.ph1715

.lr.ph1715:                                       ; preds = %.loopexit1458, %.thread1290
  %1053 = phi i8 [ %1092, %.thread1290 ], [ %1052, %.loopexit1458 ]
  %.101713 = phi ptr [ %.13, %.thread1290 ], [ %.9, %.loopexit1458 ]
  %.176981712 = phi ptr [ %.21702, %.thread1290 ], [ %.16697, %.loopexit1458 ]
  %.107601711 = phi i32 [ %.13763, %.thread1290 ], [ %.9759, %.loopexit1458 ]
  %1054 = sext i8 %1053 to i32
  %1055 = ptrtoint ptr %.176981712 to i64
  %1056 = ptrtoint ptr %.101713 to i64
  %.neg1166 = sub i64 %1056, %1055
  %.neg1167 = trunc i64 %.neg1166 to i32
  %1057 = add i32 %.neg1167, 512
  %spec.select1222 = call i32 @llvm.smin.i32(i32 %1057, i32 %1054)
  %.6986 = select i1 %.not1088, i32 %1054, i32 %spec.select1222
  %1058 = trunc i32 %.6986 to i8
  %1059 = sub i8 %1053, %1058
  store i8 %1059, ptr %8, align 1, !tbaa !5
  %.not11681703 = icmp eq i32 %.6986, 0
  br i1 %.not11681703, label %._crit_edge1708, label %.lr.ph1707.preheader

.lr.ph1707.preheader:                             ; preds = %.lr.ph1715
  %xtraiter2454 = and i32 %.6986, 3
  %lcmp.mod2455.not = icmp eq i32 %xtraiter2454, 0
  br i1 %lcmp.mod2455.not, label %.lr.ph1707.prol.loopexit, label %.lr.ph1707.prol

.lr.ph1707.prol:                                  ; preds = %.lr.ph1707.preheader, %.lr.ph1707.prol
  %.186991705.prol = phi ptr [ %1063, %.lr.ph1707.prol ], [ %.176981712, %.lr.ph1707.preheader ]
  %.79871704.prol = phi i32 [ %1064, %.lr.ph1707.prol ], [ %.6986, %.lr.ph1707.preheader ]
  %prol.iter2456 = phi i32 [ %prol.iter2456.next, %.lr.ph1707.prol ], [ 0, %.lr.ph1707.preheader ]
  %1060 = load ptr, ptr %13, align 8, !tbaa !15
  %1061 = getelementptr inbounds i8, ptr %1060, i64 1
  store ptr %1061, ptr %13, align 8, !tbaa !15
  %1062 = load i8, ptr %1060, align 1, !tbaa !5
  %1063 = getelementptr inbounds i8, ptr %.186991705.prol, i64 1
  store i8 %1062, ptr %.186991705.prol, align 1, !tbaa !5
  %1064 = add nsw i32 %.79871704.prol, -1
  %prol.iter2456.next = add i32 %prol.iter2456, 1
  %prol.iter2456.cmp.not = icmp eq i32 %prol.iter2456.next, %xtraiter2454
  br i1 %prol.iter2456.cmp.not, label %.lr.ph1707.prol.loopexit, label %.lr.ph1707.prol, !llvm.loop !45

.lr.ph1707.prol.loopexit:                         ; preds = %.lr.ph1707.prol, %.lr.ph1707.preheader
  %.lcssa2409.unr = phi ptr [ poison, %.lr.ph1707.preheader ], [ %1063, %.lr.ph1707.prol ]
  %.186991705.unr = phi ptr [ %.176981712, %.lr.ph1707.preheader ], [ %1063, %.lr.ph1707.prol ]
  %.79871704.unr = phi i32 [ %.6986, %.lr.ph1707.preheader ], [ %1064, %.lr.ph1707.prol ]
  %1065 = icmp ult i32 %.6986, 4
  br i1 %1065, label %._crit_edge1708, label %.lr.ph1707

.lr.ph1707:                                       ; preds = %.lr.ph1707.prol.loopexit, %.lr.ph1707
  %.186991705 = phi ptr [ %1081, %.lr.ph1707 ], [ %.186991705.unr, %.lr.ph1707.prol.loopexit ]
  %.79871704 = phi i32 [ %1082, %.lr.ph1707 ], [ %.79871704.unr, %.lr.ph1707.prol.loopexit ]
  %1066 = load ptr, ptr %13, align 8, !tbaa !15
  %1067 = getelementptr inbounds i8, ptr %1066, i64 1
  store ptr %1067, ptr %13, align 8, !tbaa !15
  %1068 = load i8, ptr %1066, align 1, !tbaa !5
  %1069 = getelementptr inbounds i8, ptr %.186991705, i64 1
  store i8 %1068, ptr %.186991705, align 1, !tbaa !5
  %1070 = load ptr, ptr %13, align 8, !tbaa !15
  %1071 = getelementptr inbounds i8, ptr %1070, i64 1
  store ptr %1071, ptr %13, align 8, !tbaa !15
  %1072 = load i8, ptr %1070, align 1, !tbaa !5
  %1073 = getelementptr inbounds i8, ptr %.186991705, i64 2
  store i8 %1072, ptr %1069, align 1, !tbaa !5
  %1074 = load ptr, ptr %13, align 8, !tbaa !15
  %1075 = getelementptr inbounds i8, ptr %1074, i64 1
  store ptr %1075, ptr %13, align 8, !tbaa !15
  %1076 = load i8, ptr %1074, align 1, !tbaa !5
  %1077 = getelementptr inbounds i8, ptr %.186991705, i64 3
  store i8 %1076, ptr %1073, align 1, !tbaa !5
  %1078 = load ptr, ptr %13, align 8, !tbaa !15
  %1079 = getelementptr inbounds i8, ptr %1078, i64 1
  store ptr %1079, ptr %13, align 8, !tbaa !15
  %1080 = load i8, ptr %1078, align 1, !tbaa !5
  %1081 = getelementptr inbounds i8, ptr %.186991705, i64 4
  store i8 %1080, ptr %1077, align 1, !tbaa !5
  %1082 = add nsw i32 %.79871704, -4
  %.not1168.3 = icmp eq i32 %1082, 0
  br i1 %.not1168.3, label %._crit_edge1708, label %.lr.ph1707, !llvm.loop !46

._crit_edge1708:                                  ; preds = %.lr.ph1707.prol.loopexit, %.lr.ph1707, %.lr.ph1715
  %.18699.lcssa = phi ptr [ %.176981712, %.lr.ph1715 ], [ %.lcssa2409.unr, %.lr.ph1707.prol.loopexit ], [ %1081, %.lr.ph1707 ]
  br i1 %.not1088, label %.thread1290, label %1083

1083:                                             ; preds = %._crit_edge1708
  %1084 = ptrtoint ptr %.18699.lcssa to i64
  %1085 = sub i64 %1084, %1056
  %1086 = trunc i64 %1085 to i32
  %1087 = icmp sgt i32 %1086, 510
  br i1 %1087, label %1088, label %.thread1290

1088:                                             ; preds = %1083
  %1089 = add nsw i32 %.107601711, %1086
  %1090 = call noundef ptr %0(ptr noundef %.101713, ptr noundef %1, i32 noundef %1086)
  %1091 = icmp eq ptr %1090, null
  br i1 %1091, label %.thread1411, label %.thread1290

.thread1290:                                      ; preds = %1088, %1083, %._crit_edge1708
  %.13763 = phi i32 [ %.107601711, %._crit_edge1708 ], [ %.107601711, %1083 ], [ %1089, %1088 ]
  %.21702 = phi ptr [ %.18699.lcssa, %._crit_edge1708 ], [ %.18699.lcssa, %1083 ], [ %1090, %1088 ]
  %.13 = phi ptr [ %.101713, %._crit_edge1708 ], [ %.101713, %1083 ], [ %1090, %1088 ]
  %1092 = load i8, ptr %8, align 1, !tbaa !5
  %.not1157 = icmp eq i8 %1092, 0
  br i1 %.not1157, label %._crit_edge1716, label %.lr.ph1715, !llvm.loop !47

._crit_edge1716:                                  ; preds = %.thread1290, %.loopexit1458
  %.10760.lcssa = phi i32 [ %.9759, %.loopexit1458 ], [ %.13763, %.thread1290 ]
  %.17698.lcssa = phi ptr [ %.16697, %.loopexit1458 ], [ %.21702, %.thread1290 ]
  %.10.lcssa = phi ptr [ %.9, %.loopexit1458 ], [ %.13, %.thread1290 ]
  %1093 = lshr i32 %.11967, 24
  %1094 = and i32 %.19858, 64
  %.not1158 = icmp eq i32 %1094, 0
  br i1 %.not1158, label %1101, label %1095

1095:                                             ; preds = %._crit_edge1716
  %1096 = and i32 %.11967, 16777215
  %1097 = add i32 %.14827, %1096
  %1098 = add nuw nsw i32 %1093, 1
  %1099 = urem i32 %1097, %1098
  %1100 = sub nsw i32 %1093, %1099
  br label %1101

1101:                                             ; preds = %._crit_edge1716, %1095
  %1102 = phi i32 [ %1100, %1095 ], [ 0, %._crit_edge1716 ]
  %1103 = icmp sgt i32 %.14827, 0
  br i1 %1103, label %.lr.ph1749, label %.loopexit1453.thread

.loopexit1453.thread:                             ; preds = %1101
  store ptr %16, ptr %13, align 8, !tbaa !15
  br label %._crit_edge1766

.lr.ph1749:                                       ; preds = %1101, %.thread1297
  %.141747 = phi ptr [ %.17, %.thread1297 ], [ %.10.lcssa, %1101 ]
  %.227031746 = phi ptr [ %.30711, %.thread1297 ], [ %.17698.lcssa, %1101 ]
  %.147641745 = phi i32 [ %.17767, %.thread1297 ], [ %.10760.lcssa, %1101 ]
  %.158281744 = phi i32 [ %1107, %.thread1297 ], [ %.14827, %1101 ]
  %.129681743 = phi i32 [ %.13969.lcssa, %.thread1297 ], [ %1102, %1101 ]
  %.227031746.fr = freeze ptr %.227031746
  %1104 = ptrtoint ptr %.227031746.fr to i64
  %1105 = ptrtoint ptr %.141747 to i64
  %.neg1160 = sub i64 %1105, %1104
  %.neg1161 = trunc i64 %.neg1160 to i32
  %1106 = add i32 %.neg1161, 512
  %spec.select1223 = call i32 @llvm.smin.i32(i32 %.158281744, i32 %1106)
  %.9989 = select i1 %.not1088, i32 %.158281744, i32 %spec.select1223
  %1107 = sub nsw i32 %.158281744, %.9989
  %.not11621720 = icmp eq i32 %.9989, 0
  br i1 %.not1158, label %.preheader1438, label %.loopexit.thread

.preheader1438:                                   ; preds = %.lr.ph1749
  %1108 = and i64 %1104, 3
  %1109 = icmp eq i64 %1108, 0
  %or.cond12261721 = or i1 %.not11621720, %1109
  br i1 %or.cond12261721, label %.preheader1437, label %.lr.ph1724.preheader

.lr.ph1724.preheader:                             ; preds = %.preheader1438
  %1110 = trunc i64 %1104 to i2
  %1111 = xor i2 %1110, -1
  %1112 = zext i2 %1111 to i64
  %1113 = add i32 %.9989, -1
  %1114 = zext i32 %1113 to i64
  %umin2010 = call i64 @llvm.umin.i64(i64 %1112, i64 %1114)
  %1115 = add nuw nsw i64 %umin2010, 1
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %.227031746.fr, i8 48, i64 %1115, i1 false), !tbaa !5
  %1116 = zext i2 %1111 to i32
  %scevgep2011 = getelementptr i8, ptr %.227031746.fr, i64 1
  %scevgep2013 = getelementptr i8, ptr %scevgep2011, i64 %umin2010
  %1117 = call i32 @llvm.usub.sat.i32(i32 %1113, i32 %1116)
  br label %.preheader1437

.preheader1437:                                   ; preds = %.lr.ph1724.preheader, %.preheader1438
  %.10990.lcssa = phi i32 [ %.9989, %.preheader1438 ], [ %1117, %.lr.ph1724.preheader ]
  %.23704.lcssa = phi ptr [ %.227031746.fr, %.preheader1438 ], [ %scevgep2013, %.lr.ph1724.preheader ]
  %1118 = icmp sgt i32 %.10990.lcssa, 3
  br i1 %1118, label %.lr.ph1729.preheader, label %.loopexit

.lr.ph1729.preheader:                             ; preds = %.preheader1437
  %1119 = call i32 @llvm.usub.sat.i32(i32 %.10990.lcssa, i32 7)
  %1120 = add nuw i32 %1119, 3
  %1121 = and i32 %1120, -4
  %1122 = zext nneg i32 %1121 to i64
  %1123 = add nuw nsw i64 %1122, 4
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %.23704.lcssa, i8 48, i64 %1123, i1 false), !tbaa !8
  %scevgep2016 = getelementptr i8, ptr %.23704.lcssa, i64 4
  %scevgep2018 = getelementptr i8, ptr %scevgep2016, i64 %1122
  %1124 = and i32 %1120, -4
  %1125 = add nsw i32 %.10990.lcssa, -4
  %1126 = sub nsw i32 %1125, %1124
  br label %.loopexit

.loopexit:                                        ; preds = %.lr.ph1729.preheader, %.preheader1437
  %.12992 = phi i32 [ %.10990.lcssa, %.preheader1437 ], [ %1126, %.lr.ph1729.preheader ]
  %.25706 = phi ptr [ %.23704.lcssa, %.preheader1437 ], [ %scevgep2018, %.lr.ph1729.preheader ]
  %.not11631732 = icmp eq i32 %.12992, 0
  br i1 %.not11631732, label %._crit_edge1738, label %.lr.ph1737

.loopexit.thread:                                 ; preds = %.lr.ph1749
  br i1 %.not11621720, label %._crit_edge1738, label %.lr.ph1737.split.preheader

.lr.ph1737:                                       ; preds = %.loopexit
  br i1 %.not1158, label %.lr.ph1737.split.us.preheader, label %.lr.ph1737.split.preheader

.lr.ph1737.split.preheader:                       ; preds = %.loopexit.thread, %.lr.ph1737
  %.267071735.ph = phi ptr [ %.227031746.fr, %.loopexit.thread ], [ %.25706, %.lr.ph1737 ]
  %.139931733.ph = phi i32 [ %.9989, %.loopexit.thread ], [ %.12992, %.lr.ph1737 ]
  %xtraiter2457 = and i32 %.139931733.ph, 1
  %lcmp.mod2458.not = icmp eq i32 %xtraiter2457, 0
  br i1 %lcmp.mod2458.not, label %.lr.ph1737.split.prol.loopexit, label %.lr.ph1737.split.prol

.lr.ph1737.split.prol:                            ; preds = %.lr.ph1737.split.preheader
  %1127 = add i32 %.129681743, 1
  %1128 = icmp eq i32 %.129681743, %1093
  %1129 = load i8, ptr @_ZL12stbsp__comma, align 1
  %spec.select1238.prol = select i1 %1128, i8 %1129, i8 48
  %spec.select1239.prol = select i1 %1128, i32 0, i32 %1127
  %.27708.prol = getelementptr inbounds i8, ptr %.267071735.ph, i64 1
  store i8 %spec.select1238.prol, ptr %.267071735.ph, align 1, !tbaa !5
  %1130 = add nsw i32 %.139931733.ph, -1
  br label %.lr.ph1737.split.prol.loopexit

.lr.ph1737.split.prol.loopexit:                   ; preds = %.lr.ph1737.split.prol, %.lr.ph1737.split.preheader
  %spec.select1239.lcssa.unr = phi i32 [ poison, %.lr.ph1737.split.preheader ], [ %spec.select1239.prol, %.lr.ph1737.split.prol ]
  %.27708.lcssa.unr = phi ptr [ poison, %.lr.ph1737.split.preheader ], [ %.27708.prol, %.lr.ph1737.split.prol ]
  %.267071735.unr = phi ptr [ %.267071735.ph, %.lr.ph1737.split.preheader ], [ %.27708.prol, %.lr.ph1737.split.prol ]
  %.139691734.unr = phi i32 [ %.129681743, %.lr.ph1737.split.preheader ], [ %spec.select1239.prol, %.lr.ph1737.split.prol ]
  %.139931733.unr = phi i32 [ %.139931733.ph, %.lr.ph1737.split.preheader ], [ %1130, %.lr.ph1737.split.prol ]
  %1131 = icmp eq i32 %.139931733.ph, 1
  br i1 %1131, label %._crit_edge1738, label %.lr.ph1737.split

.lr.ph1737.split.us.preheader:                    ; preds = %.lr.ph1737
  %1132 = zext i32 %.12992 to i64
  call void @llvm.memset.p0.i64(ptr align 1 %.25706, i8 48, i64 %1132, i1 false), !tbaa !5
  %1133 = add i32 %.12992, -1
  %1134 = zext i32 %1133 to i64
  %scevgep2019 = getelementptr i8, ptr %.25706, i64 1
  %scevgep2020 = getelementptr i8, ptr %scevgep2019, i64 %1134
  br label %._crit_edge1738

.lr.ph1737.split:                                 ; preds = %.lr.ph1737.split.prol.loopexit, %.lr.ph1737.split
  %.267071735 = phi ptr [ %.27708.1, %.lr.ph1737.split ], [ %.267071735.unr, %.lr.ph1737.split.prol.loopexit ]
  %.139691734 = phi i32 [ %spec.select1239.1, %.lr.ph1737.split ], [ %.139691734.unr, %.lr.ph1737.split.prol.loopexit ]
  %.139931733 = phi i32 [ %1141, %.lr.ph1737.split ], [ %.139931733.unr, %.lr.ph1737.split.prol.loopexit ]
  %1135 = add i32 %.139691734, 1
  %1136 = icmp eq i32 %.139691734, %1093
  %1137 = load i8, ptr @_ZL12stbsp__comma, align 1
  %spec.select1238 = select i1 %1136, i8 %1137, i8 48
  %spec.select1239 = select i1 %1136, i32 0, i32 %1135
  %.27708 = getelementptr inbounds i8, ptr %.267071735, i64 1
  store i8 %spec.select1238, ptr %.267071735, align 1, !tbaa !5
  %1138 = add i32 %spec.select1239, 1
  %1139 = icmp eq i32 %spec.select1239, %1093
  %1140 = load i8, ptr @_ZL12stbsp__comma, align 1
  %spec.select1238.1 = select i1 %1139, i8 %1140, i8 48
  %spec.select1239.1 = select i1 %1139, i32 0, i32 %1138
  %.27708.1 = getelementptr inbounds i8, ptr %.267071735, i64 2
  store i8 %spec.select1238.1, ptr %.27708, align 1, !tbaa !5
  %1141 = add nsw i32 %.139931733, -2
  %.not1163.1 = icmp eq i32 %1141, 0
  br i1 %.not1163.1, label %._crit_edge1738, label %.lr.ph1737.split, !llvm.loop !48

._crit_edge1738:                                  ; preds = %.lr.ph1737.split.prol.loopexit, %.lr.ph1737.split, %.loopexit.thread, %.lr.ph1737.split.us.preheader, %.loopexit
  %.13969.lcssa = phi i32 [ %.129681743, %.loopexit ], [ %.129681743, %.lr.ph1737.split.us.preheader ], [ %.129681743, %.loopexit.thread ], [ %spec.select1239.lcssa.unr, %.lr.ph1737.split.prol.loopexit ], [ %spec.select1239.1, %.lr.ph1737.split ]
  %.26707.lcssa = phi ptr [ %.25706, %.loopexit ], [ %scevgep2020, %.lr.ph1737.split.us.preheader ], [ %.227031746.fr, %.loopexit.thread ], [ %.27708.lcssa.unr, %.lr.ph1737.split.prol.loopexit ], [ %.27708.1, %.lr.ph1737.split ]
  br i1 %.not1088, label %.thread1297, label %1142

1142:                                             ; preds = %._crit_edge1738
  %1143 = ptrtoint ptr %.26707.lcssa to i64
  %1144 = sub i64 %1143, %1105
  %1145 = trunc i64 %1144 to i32
  %1146 = icmp sgt i32 %1145, 510
  br i1 %1146, label %1147, label %.thread1297

1147:                                             ; preds = %1142
  %1148 = add nsw i32 %.147641745, %1145
  %1149 = call noundef ptr %0(ptr noundef %.141747, ptr noundef %1, i32 noundef %1145)
  %1150 = icmp eq ptr %1149, null
  br i1 %1150, label %.thread1411, label %.thread1297

.thread1297:                                      ; preds = %1147, %1142, %._crit_edge1738
  %.17767 = phi i32 [ %.147641745, %._crit_edge1738 ], [ %.147641745, %1142 ], [ %1148, %1147 ]
  %.30711 = phi ptr [ %.26707.lcssa, %._crit_edge1738 ], [ %.26707.lcssa, %1142 ], [ %1149, %1147 ]
  %.17 = phi ptr [ %.141747, %._crit_edge1738 ], [ %.141747, %1142 ], [ %1149, %1147 ]
  %1151 = icmp sgt i32 %1107, 0
  br i1 %1151, label %.lr.ph1749, label %.loopexit1453.loopexit, !llvm.loop !49

.loopexit1453.loopexit:                           ; preds = %.thread1297
  %.pre2056 = load i8, ptr %8, align 1, !tbaa !5
  br label %.loopexit1453

.loopexit1453:                                    ; preds = %.loopexit1453.loopexit, %1011
  %1152 = phi i8 [ %996, %1011 ], [ %.pre2056, %.loopexit1453.loopexit ]
  %.8811 = phi i32 [ %.4807, %1011 ], [ %.6809, %.loopexit1453.loopexit ]
  %.19769 = phi i32 [ %.1751, %1011 ], [ %.17767, %.loopexit1453.loopexit ]
  %.32713 = phi ptr [ %.2683, %1011 ], [ %.30711, %.loopexit1453.loopexit ]
  %.19 = phi ptr [ %.1, %1011 ], [ %.17, %.loopexit1453.loopexit ]
  store ptr %16, ptr %13, align 8, !tbaa !15
  %.not11691760 = icmp eq i8 %1152, 0
  br i1 %.not11691760, label %._crit_edge1766, label %.lr.ph1765

.lr.ph1765:                                       ; preds = %.loopexit1453, %1192
  %1153 = phi i8 [ %1193, %1192 ], [ %1152, %.loopexit1453 ]
  %.201763 = phi ptr [ %.24, %1192 ], [ %.19, %.loopexit1453 ]
  %.337141762 = phi ptr [ %.38719, %1192 ], [ %.32713, %.loopexit1453 ]
  %.207701761 = phi i32 [ %.24774, %1192 ], [ %.19769, %.loopexit1453 ]
  %1154 = sext i8 %1153 to i32
  %1155 = ptrtoint ptr %.337141762 to i64
  %1156 = ptrtoint ptr %.201763 to i64
  %.neg1192 = sub i64 %1156, %1155
  %.neg1193 = trunc i64 %.neg1192 to i32
  %1157 = add i32 %.neg1193, 512
  %spec.select1227 = call i32 @llvm.smin.i32(i32 %1157, i32 %1154)
  %.1923 = select i1 %.not1088, i32 %1154, i32 %spec.select1227
  %1158 = trunc i32 %.1923 to i8
  %1159 = sub i8 %1153, %1158
  store i8 %1159, ptr %8, align 1, !tbaa !5
  %.not11941753 = icmp eq i32 %.1923, 0
  br i1 %.not11941753, label %._crit_edge1758, label %.lr.ph1757.preheader

.lr.ph1757.preheader:                             ; preds = %.lr.ph1765
  %xtraiter2460 = and i32 %.1923, 3
  %lcmp.mod2461.not = icmp eq i32 %xtraiter2460, 0
  br i1 %lcmp.mod2461.not, label %.lr.ph1757.prol.loopexit, label %.lr.ph1757.prol

.lr.ph1757.prol:                                  ; preds = %.lr.ph1757.preheader, %.lr.ph1757.prol
  %.347151755.prol = phi ptr [ %1163, %.lr.ph1757.prol ], [ %.337141762, %.lr.ph1757.preheader ]
  %.29241754.prol = phi i32 [ %1164, %.lr.ph1757.prol ], [ %.1923, %.lr.ph1757.preheader ]
  %prol.iter2462 = phi i32 [ %prol.iter2462.next, %.lr.ph1757.prol ], [ 0, %.lr.ph1757.preheader ]
  %1160 = load ptr, ptr %13, align 8, !tbaa !15
  %1161 = getelementptr inbounds i8, ptr %1160, i64 1
  store ptr %1161, ptr %13, align 8, !tbaa !15
  %1162 = load i8, ptr %1160, align 1, !tbaa !5
  %1163 = getelementptr inbounds i8, ptr %.347151755.prol, i64 1
  store i8 %1162, ptr %.347151755.prol, align 1, !tbaa !5
  %1164 = add nsw i32 %.29241754.prol, -1
  %prol.iter2462.next = add i32 %prol.iter2462, 1
  %prol.iter2462.cmp.not = icmp eq i32 %prol.iter2462.next, %xtraiter2460
  br i1 %prol.iter2462.cmp.not, label %.lr.ph1757.prol.loopexit, label %.lr.ph1757.prol, !llvm.loop !50

.lr.ph1757.prol.loopexit:                         ; preds = %.lr.ph1757.prol, %.lr.ph1757.preheader
  %.lcssa2412.unr = phi ptr [ poison, %.lr.ph1757.preheader ], [ %1163, %.lr.ph1757.prol ]
  %.347151755.unr = phi ptr [ %.337141762, %.lr.ph1757.preheader ], [ %1163, %.lr.ph1757.prol ]
  %.29241754.unr = phi i32 [ %.1923, %.lr.ph1757.preheader ], [ %1164, %.lr.ph1757.prol ]
  %1165 = icmp ult i32 %.1923, 4
  br i1 %1165, label %._crit_edge1758, label %.lr.ph1757

.lr.ph1757:                                       ; preds = %.lr.ph1757.prol.loopexit, %.lr.ph1757
  %.347151755 = phi ptr [ %1181, %.lr.ph1757 ], [ %.347151755.unr, %.lr.ph1757.prol.loopexit ]
  %.29241754 = phi i32 [ %1182, %.lr.ph1757 ], [ %.29241754.unr, %.lr.ph1757.prol.loopexit ]
  %1166 = load ptr, ptr %13, align 8, !tbaa !15
  %1167 = getelementptr inbounds i8, ptr %1166, i64 1
  store ptr %1167, ptr %13, align 8, !tbaa !15
  %1168 = load i8, ptr %1166, align 1, !tbaa !5
  %1169 = getelementptr inbounds i8, ptr %.347151755, i64 1
  store i8 %1168, ptr %.347151755, align 1, !tbaa !5
  %1170 = load ptr, ptr %13, align 8, !tbaa !15
  %1171 = getelementptr inbounds i8, ptr %1170, i64 1
  store ptr %1171, ptr %13, align 8, !tbaa !15
  %1172 = load i8, ptr %1170, align 1, !tbaa !5
  %1173 = getelementptr inbounds i8, ptr %.347151755, i64 2
  store i8 %1172, ptr %1169, align 1, !tbaa !5
  %1174 = load ptr, ptr %13, align 8, !tbaa !15
  %1175 = getelementptr inbounds i8, ptr %1174, i64 1
  store ptr %1175, ptr %13, align 8, !tbaa !15
  %1176 = load i8, ptr %1174, align 1, !tbaa !5
  %1177 = getelementptr inbounds i8, ptr %.347151755, i64 3
  store i8 %1176, ptr %1173, align 1, !tbaa !5
  %1178 = load ptr, ptr %13, align 8, !tbaa !15
  %1179 = getelementptr inbounds i8, ptr %1178, i64 1
  store ptr %1179, ptr %13, align 8, !tbaa !15
  %1180 = load i8, ptr %1178, align 1, !tbaa !5
  %1181 = getelementptr inbounds i8, ptr %.347151755, i64 4
  store i8 %1180, ptr %1177, align 1, !tbaa !5
  %1182 = add nsw i32 %.29241754, -4
  %.not1194.3 = icmp eq i32 %1182, 0
  br i1 %.not1194.3, label %._crit_edge1758, label %.lr.ph1757, !llvm.loop !51

._crit_edge1758:                                  ; preds = %.lr.ph1757.prol.loopexit, %.lr.ph1757, %.lr.ph1765
  %.34715.lcssa = phi ptr [ %.337141762, %.lr.ph1765 ], [ %.lcssa2412.unr, %.lr.ph1757.prol.loopexit ], [ %1181, %.lr.ph1757 ]
  br i1 %.not1088, label %1192, label %1183

1183:                                             ; preds = %._crit_edge1758
  %1184 = ptrtoint ptr %.34715.lcssa to i64
  %1185 = sub i64 %1184, %1156
  %1186 = trunc i64 %1185 to i32
  %1187 = icmp sgt i32 %1186, 510
  br i1 %1187, label %1188, label %1192

1188:                                             ; preds = %1183
  %1189 = add nsw i32 %.207701761, %1186
  %1190 = call noundef ptr %0(ptr noundef %.201763, ptr noundef %1, i32 noundef %1186)
  %1191 = icmp eq ptr %1190, null
  br i1 %1191, label %.thread1411, label %1192

1192:                                             ; preds = %1188, %1183, %._crit_edge1758
  %.24774 = phi i32 [ %.207701761, %._crit_edge1758 ], [ %.207701761, %1183 ], [ %1189, %1188 ]
  %.38719 = phi ptr [ %.34715.lcssa, %._crit_edge1758 ], [ %.34715.lcssa, %1183 ], [ %1190, %1188 ]
  %.24 = phi ptr [ %.201763, %._crit_edge1758 ], [ %.201763, %1183 ], [ %1190, %1188 ]
  %1193 = load i8, ptr %8, align 1, !tbaa !5
  %.not1169 = icmp eq i8 %1193, 0
  br i1 %.not1169, label %._crit_edge1766, label %.lr.ph1765, !llvm.loop !52

._crit_edge1766:                                  ; preds = %1192, %.loopexit1453.thread, %.loopexit1453
  %.88112109 = phi i32 [ %.8811, %.loopexit1453 ], [ %.6809, %.loopexit1453.thread ], [ %.8811, %1192 ]
  %.20770.lcssa = phi i32 [ %.19769, %.loopexit1453 ], [ %.10760.lcssa, %.loopexit1453.thread ], [ %.24774, %1192 ]
  %.33714.lcssa = phi ptr [ %.32713, %.loopexit1453 ], [ %.17698.lcssa, %.loopexit1453.thread ], [ %.38719, %1192 ]
  %.20.lcssa = phi ptr [ %.19, %.loopexit1453 ], [ %.10.lcssa, %.loopexit1453.thread ], [ %.24, %1192 ]
  %1194 = load i32, ptr %10, align 4, !tbaa !8
  %.not11701786 = icmp eq i32 %1194, 0
  br i1 %.not11701786, label %.preheader1449, label %.lr.ph1793

.preheader1449:                                   ; preds = %1260, %._crit_edge1766
  %.25775.lcssa = phi i32 [ %.20770.lcssa, %._crit_edge1766 ], [ %.29779, %1260 ]
  %.39720.lcssa = phi ptr [ %.33714.lcssa, %._crit_edge1766 ], [ %.45726, %1260 ]
  %.25.lcssa = phi ptr [ %.20.lcssa, %._crit_edge1766 ], [ %.29, %1260 ]
  %.not11711816 = icmp eq i32 %.3837, 0
  br i1 %.not11711816, label %._crit_edge1822, label %.lr.ph1821

.lr.ph1793:                                       ; preds = %._crit_edge1766, %1260
  %.251791 = phi ptr [ %.29, %1260 ], [ %.20.lcssa, %._crit_edge1766 ]
  %.397201790 = phi ptr [ %.45726, %1260 ], [ %.33714.lcssa, %._crit_edge1766 ]
  %.257751789 = phi i32 [ %.29779, %1260 ], [ %.20770.lcssa, %._crit_edge1766 ]
  %.369191788 = phi ptr [ %.38921.lcssa, %1260 ], [ %.35918, %._crit_edge1766 ]
  %.239551787 = phi i32 [ %1198, %1260 ], [ %1194, %._crit_edge1766 ]
  %1195 = ptrtoint ptr %.397201790 to i64
  %1196 = ptrtoint ptr %.251791 to i64
  %.neg1188 = sub i64 %1196, %1195
  %.neg1189 = trunc i64 %.neg1188 to i32
  %1197 = add i32 %.neg1189, 512
  %spec.select1228 = call i32 @llvm.smin.i32(i32 %.239551787, i32 %1197)
  %.1860 = select i1 %.not1088, i32 %.239551787, i32 %spec.select1228
  %1198 = sub i32 %.239551787, %.1860
  %1199 = icmp sgt i32 %.1860, 3
  br i1 %1199, label %.lr.ph1774.preheader, label %.preheader1436

.lr.ph1774.preheader:                             ; preds = %.lr.ph1793
  %.3691917882294 = ptrtoint ptr %.369191788 to i64
  %1200 = add nsw i32 %.1860, -4
  %1201 = lshr i32 %1200, 2
  %narrow2344 = add nuw nsw i32 %1201, 1
  %1202 = zext nneg i32 %narrow2344 to i64
  %min.iters.check2298 = icmp ult i32 %1200, 28
  %1203 = sub i64 %1195, %.3691917882294
  %diff.check2295 = icmp ult i64 %1203, 32
  %or.cond2346 = select i1 %min.iters.check2298, i1 true, i1 %diff.check2295
  br i1 %or.cond2346, label %.lr.ph1774.preheader2349, label %vector.ph2299

.lr.ph1774.preheader2349:                         ; preds = %middle.block2296, %.lr.ph1774.preheader
  %.407211772.ph = phi ptr [ %.397201790, %.lr.ph1774.preheader ], [ %ind.end2302, %middle.block2296 ]
  %.28611771.ph = phi i32 [ %.1860, %.lr.ph1774.preheader ], [ %ind.end2305, %middle.block2296 ]
  %.379201770.ph = phi ptr [ %.369191788, %.lr.ph1774.preheader ], [ %ind.end2307, %middle.block2296 ]
  br label %.lr.ph1774

vector.ph2299:                                    ; preds = %.lr.ph1774.preheader
  %n.vec2301 = and i64 %1202, 2147483640
  %1204 = shl nuw nsw i64 %n.vec2301, 2
  %ind.end2302 = getelementptr i8, ptr %.397201790, i64 %1204
  %.cast2304 = trunc nuw nsw i64 %n.vec2301 to i32
  %1205 = shl i32 %.cast2304, 2
  %ind.end2305 = sub i32 %.1860, %1205
  %1206 = shl nuw nsw i64 %n.vec2301, 2
  %ind.end2307 = getelementptr i8, ptr %.369191788, i64 %1206
  br label %vector.body2309

vector.body2309:                                  ; preds = %vector.body2309, %vector.ph2299
  %index2310 = phi i64 [ 0, %vector.ph2299 ], [ %index.next2320, %vector.body2309 ]
  %offset.idx = shl i64 %index2310, 2
  %next.gep2311 = getelementptr i8, ptr %.397201790, i64 %offset.idx
  %offset.idx2315 = shl i64 %index2310, 2
  %next.gep2316 = getelementptr i8, ptr %.369191788, i64 %offset.idx2315
  %1207 = getelementptr i8, ptr %next.gep2316, i64 16
  %wide.load2318 = load <4 x i32>, ptr %next.gep2316, align 4, !tbaa !8
  %wide.load2319 = load <4 x i32>, ptr %1207, align 4, !tbaa !8
  %1208 = getelementptr i8, ptr %next.gep2311, i64 16
  store <4 x i32> %wide.load2318, ptr %next.gep2311, align 4, !tbaa !8
  store <4 x i32> %wide.load2319, ptr %1208, align 4, !tbaa !8
  %index.next2320 = add nuw i64 %index2310, 8
  %1209 = icmp eq i64 %index.next2320, %n.vec2301
  br i1 %1209, label %middle.block2296, label %vector.body2309, !llvm.loop !53

middle.block2296:                                 ; preds = %vector.body2309
  %cmp.n2321 = icmp eq i64 %n.vec2301, %1202
  br i1 %cmp.n2321, label %.preheader1436, label %.lr.ph1774.preheader2349

.preheader1436:                                   ; preds = %.lr.ph1774, %middle.block2296, %.lr.ph1793
  %.37920.lcssa = phi ptr [ %.369191788, %.lr.ph1793 ], [ %ind.end2307, %middle.block2296 ], [ %1223, %.lr.ph1774 ]
  %.2861.lcssa = phi i32 [ %.1860, %.lr.ph1793 ], [ %ind.end2305, %middle.block2296 ], [ %1224, %.lr.ph1774 ]
  %.40721.lcssa = phi ptr [ %.397201790, %.lr.ph1793 ], [ %ind.end2302, %middle.block2296 ], [ %1222, %.lr.ph1774 ]
  %.not11901778 = icmp eq i32 %.2861.lcssa, 0
  br i1 %.not11901778, label %._crit_edge1783, label %.lr.ph1782.preheader

.lr.ph1782.preheader:                             ; preds = %.preheader1436
  %.37920.lcssa2284 = ptrtoint ptr %.37920.lcssa to i64
  %.40721.lcssa2283 = ptrtoint ptr %.40721.lcssa to i64
  %1210 = zext i32 %.2861.lcssa to i64
  %min.iters.check = icmp ult i32 %.2861.lcssa, 32
  %1211 = sub i64 %.40721.lcssa2283, %.37920.lcssa2284
  %diff.check = icmp ult i64 %1211, 32
  %or.cond2347 = select i1 %min.iters.check, i1 true, i1 %diff.check
  br i1 %or.cond2347, label %.lr.ph1782.preheader2348, label %vector.ph

.lr.ph1782.preheader2348:                         ; preds = %middle.block, %.lr.ph1782.preheader
  %.417221781.ph = phi ptr [ %.40721.lcssa, %.lr.ph1782.preheader ], [ %ind.end, %middle.block ]
  %.38621780.ph = phi i32 [ %.2861.lcssa, %.lr.ph1782.preheader ], [ %ind.end2285, %middle.block ]
  %.389211779.ph = phi ptr [ %.37920.lcssa, %.lr.ph1782.preheader ], [ %ind.end2287, %middle.block ]
  %1212 = add nsw i32 %.38621780.ph, -1
  %xtraiter2463 = and i32 %.38621780.ph, 7
  %lcmp.mod2464.not = icmp eq i32 %xtraiter2463, 0
  br i1 %lcmp.mod2464.not, label %.lr.ph1782.prol.loopexit, label %.lr.ph1782.prol

.lr.ph1782.prol:                                  ; preds = %.lr.ph1782.preheader2348, %.lr.ph1782.prol
  %.417221781.prol = phi ptr [ %1215, %.lr.ph1782.prol ], [ %.417221781.ph, %.lr.ph1782.preheader2348 ]
  %.38621780.prol = phi i32 [ %1216, %.lr.ph1782.prol ], [ %.38621780.ph, %.lr.ph1782.preheader2348 ]
  %.389211779.prol = phi ptr [ %1213, %.lr.ph1782.prol ], [ %.389211779.ph, %.lr.ph1782.preheader2348 ]
  %prol.iter2465 = phi i32 [ %prol.iter2465.next, %.lr.ph1782.prol ], [ 0, %.lr.ph1782.preheader2348 ]
  %1213 = getelementptr inbounds i8, ptr %.389211779.prol, i64 1
  %1214 = load i8, ptr %.389211779.prol, align 1, !tbaa !5
  %1215 = getelementptr inbounds i8, ptr %.417221781.prol, i64 1
  store i8 %1214, ptr %.417221781.prol, align 1, !tbaa !5
  %1216 = add nsw i32 %.38621780.prol, -1
  %prol.iter2465.next = add i32 %prol.iter2465, 1
  %prol.iter2465.cmp.not = icmp eq i32 %prol.iter2465.next, %xtraiter2463
  br i1 %prol.iter2465.cmp.not, label %.lr.ph1782.prol.loopexit, label %.lr.ph1782.prol, !llvm.loop !54

.lr.ph1782.prol.loopexit:                         ; preds = %.lr.ph1782.prol, %.lr.ph1782.preheader2348
  %.lcssa2418.unr = phi ptr [ poison, %.lr.ph1782.preheader2348 ], [ %1213, %.lr.ph1782.prol ]
  %.lcssa2417.unr = phi ptr [ poison, %.lr.ph1782.preheader2348 ], [ %1215, %.lr.ph1782.prol ]
  %.417221781.unr = phi ptr [ %.417221781.ph, %.lr.ph1782.preheader2348 ], [ %1215, %.lr.ph1782.prol ]
  %.38621780.unr = phi i32 [ %.38621780.ph, %.lr.ph1782.preheader2348 ], [ %1216, %.lr.ph1782.prol ]
  %.389211779.unr = phi ptr [ %.389211779.ph, %.lr.ph1782.preheader2348 ], [ %1213, %.lr.ph1782.prol ]
  %1217 = icmp ult i32 %1212, 7
  br i1 %1217, label %._crit_edge1783, label %.lr.ph1782

vector.ph:                                        ; preds = %.lr.ph1782.preheader
  %n.vec = and i64 %1210, 4294967264
  %ind.end = getelementptr i8, ptr %.40721.lcssa, i64 %n.vec
  %.cast = trunc nuw i64 %n.vec to i32
  %ind.end2285 = sub i32 %.2861.lcssa, %.cast
  %ind.end2287 = getelementptr i8, ptr %.37920.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 %.40721.lcssa, i64 %index
  %next.gep2290 = getelementptr i8, ptr %.37920.lcssa, i64 %index
  %1218 = getelementptr i8, ptr %next.gep2290, i64 16
  %wide.load = load <16 x i8>, ptr %next.gep2290, align 1, !tbaa !5
  %wide.load2292 = load <16 x i8>, ptr %1218, align 1, !tbaa !5
  %1219 = 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.load2292, ptr %1219, align 1, !tbaa !5
  %index.next = add nuw i64 %index, 32
  %1220 = icmp eq i64 %index.next, %n.vec
  br i1 %1220, label %middle.block, label %vector.body, !llvm.loop !55

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %1210
  br i1 %cmp.n, label %._crit_edge1783, label %.lr.ph1782.preheader2348

.lr.ph1774:                                       ; preds = %.lr.ph1774.preheader2349, %.lr.ph1774
  %.407211772 = phi ptr [ %1222, %.lr.ph1774 ], [ %.407211772.ph, %.lr.ph1774.preheader2349 ]
  %.28611771 = phi i32 [ %1224, %.lr.ph1774 ], [ %.28611771.ph, %.lr.ph1774.preheader2349 ]
  %.379201770 = phi ptr [ %1223, %.lr.ph1774 ], [ %.379201770.ph, %.lr.ph1774.preheader2349 ]
  %1221 = load i32, ptr %.379201770, align 4, !tbaa !8
  store i32 %1221, ptr %.407211772, align 4, !tbaa !8
  %1222 = getelementptr inbounds i8, ptr %.407211772, i64 4
  %1223 = getelementptr inbounds i8, ptr %.379201770, i64 4
  %1224 = add nsw i32 %.28611771, -4
  %1225 = icmp ugt i32 %.28611771, 7
  br i1 %1225, label %.lr.ph1774, label %.preheader1436, !llvm.loop !56

.lr.ph1782:                                       ; preds = %.lr.ph1782.prol.loopexit, %.lr.ph1782
  %.417221781 = phi ptr [ %1249, %.lr.ph1782 ], [ %.417221781.unr, %.lr.ph1782.prol.loopexit ]
  %.38621780 = phi i32 [ %1250, %.lr.ph1782 ], [ %.38621780.unr, %.lr.ph1782.prol.loopexit ]
  %.389211779 = phi ptr [ %1247, %.lr.ph1782 ], [ %.389211779.unr, %.lr.ph1782.prol.loopexit ]
  %1226 = getelementptr inbounds i8, ptr %.389211779, i64 1
  %1227 = load i8, ptr %.389211779, align 1, !tbaa !5
  %1228 = getelementptr inbounds i8, ptr %.417221781, i64 1
  store i8 %1227, ptr %.417221781, align 1, !tbaa !5
  %1229 = getelementptr inbounds i8, ptr %.389211779, i64 2
  %1230 = load i8, ptr %1226, align 1, !tbaa !5
  %1231 = getelementptr inbounds i8, ptr %.417221781, i64 2
  store i8 %1230, ptr %1228, align 1, !tbaa !5
  %1232 = getelementptr inbounds i8, ptr %.389211779, i64 3
  %1233 = load i8, ptr %1229, align 1, !tbaa !5
  %1234 = getelementptr inbounds i8, ptr %.417221781, i64 3
  store i8 %1233, ptr %1231, align 1, !tbaa !5
  %1235 = getelementptr inbounds i8, ptr %.389211779, i64 4
  %1236 = load i8, ptr %1232, align 1, !tbaa !5
  %1237 = getelementptr inbounds i8, ptr %.417221781, i64 4
  store i8 %1236, ptr %1234, align 1, !tbaa !5
  %1238 = getelementptr inbounds i8, ptr %.389211779, i64 5
  %1239 = load i8, ptr %1235, align 1, !tbaa !5
  %1240 = getelementptr inbounds i8, ptr %.417221781, i64 5
  store i8 %1239, ptr %1237, align 1, !tbaa !5
  %1241 = getelementptr inbounds i8, ptr %.389211779, i64 6
  %1242 = load i8, ptr %1238, align 1, !tbaa !5
  %1243 = getelementptr inbounds i8, ptr %.417221781, i64 6
  store i8 %1242, ptr %1240, align 1, !tbaa !5
  %1244 = getelementptr inbounds i8, ptr %.389211779, i64 7
  %1245 = load i8, ptr %1241, align 1, !tbaa !5
  %1246 = getelementptr inbounds i8, ptr %.417221781, i64 7
  store i8 %1245, ptr %1243, align 1, !tbaa !5
  %1247 = getelementptr inbounds i8, ptr %.389211779, i64 8
  %1248 = load i8, ptr %1244, align 1, !tbaa !5
  %1249 = getelementptr inbounds i8, ptr %.417221781, i64 8
  store i8 %1248, ptr %1246, align 1, !tbaa !5
  %1250 = add nsw i32 %.38621780, -8
  %.not1190.7 = icmp eq i32 %1250, 0
  br i1 %.not1190.7, label %._crit_edge1783, label %.lr.ph1782, !llvm.loop !57

._crit_edge1783:                                  ; preds = %.lr.ph1782.prol.loopexit, %.lr.ph1782, %middle.block, %.preheader1436
  %.38921.lcssa = phi ptr [ %.37920.lcssa, %.preheader1436 ], [ %ind.end2287, %middle.block ], [ %.lcssa2418.unr, %.lr.ph1782.prol.loopexit ], [ %1247, %.lr.ph1782 ]
  %.41722.lcssa = phi ptr [ %.40721.lcssa, %.preheader1436 ], [ %ind.end, %middle.block ], [ %.lcssa2417.unr, %.lr.ph1782.prol.loopexit ], [ %1249, %.lr.ph1782 ]
  br i1 %.not1088, label %1260, label %1251

1251:                                             ; preds = %._crit_edge1783
  %1252 = ptrtoint ptr %.41722.lcssa to i64
  %1253 = sub i64 %1252, %1196
  %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 %.257751789, %1254
  %1258 = call noundef ptr %0(ptr noundef %.251791, ptr noundef %1, i32 noundef %1254)
  %1259 = icmp eq ptr %1258, null
  br i1 %1259, label %.thread1411, label %1260

1260:                                             ; preds = %1256, %1251, %._crit_edge1783
  %.29779 = phi i32 [ %.257751789, %._crit_edge1783 ], [ %.257751789, %1251 ], [ %1257, %1256 ]
  %.45726 = phi ptr [ %.41722.lcssa, %._crit_edge1783 ], [ %.41722.lcssa, %1251 ], [ %1258, %1256 ]
  %.29 = phi ptr [ %.251791, %._crit_edge1783 ], [ %.251791, %1251 ], [ %1258, %1256 ]
  %.not1170 = icmp eq i32 %1198, 0
  br i1 %.not1170, label %.preheader1449, label %.lr.ph1793, !llvm.loop !58

.lr.ph1821:                                       ; preds = %.preheader1449, %1296
  %.301820 = phi ptr [ %.34, %1296 ], [ %.25.lcssa, %.preheader1449 ]
  %.467271819 = phi ptr [ %.53, %1296 ], [ %.39720.lcssa, %.preheader1449 ]
  %.307801818 = phi i32 [ %.34784, %1296 ], [ %.25775.lcssa, %.preheader1449 ]
  %.48381817 = phi i32 [ %1264, %1296 ], [ %.3837, %.preheader1449 ]
  %.467271819.fr = freeze ptr %.467271819
  %1261 = ptrtoint ptr %.467271819.fr to i64
  %1262 = ptrtoint ptr %.301820 to i64
  %.neg1183 = sub i64 %1262, %1261
  %.neg1184 = trunc i64 %.neg1183 to i32
  %1263 = add i32 %.neg1184, 512
  %spec.select1229 = call i32 @llvm.smin.i32(i32 %.48381817, i32 %1263)
  %.1830 = select i1 %.not1088, i32 %.48381817, i32 %spec.select1229
  %1264 = sub nsw i32 %.48381817, %.1830
  %.not11851797 = icmp eq i32 %.1830, 0
  %1265 = and i64 %1261, 3
  %1266 = icmp eq i64 %1265, 0
  %or.cond12321798 = or i1 %.not11851797, %1266
  br i1 %or.cond12321798, label %.preheader1435, label %.lr.ph1802.preheader

.lr.ph1802.preheader:                             ; preds = %.lr.ph1821
  %1267 = trunc i64 %1261 to i2
  %1268 = xor i2 %1267, -1
  %1269 = zext i2 %1268 to i64
  %1270 = add i32 %.1830, -1
  %1271 = zext i32 %1270 to i64
  %umin2021 = call i64 @llvm.umin.i64(i64 %1269, i64 %1271)
  %1272 = add nuw nsw i64 %umin2021, 1
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %.467271819.fr, i8 48, i64 %1272, i1 false), !tbaa !5
  %1273 = zext i2 %1268 to i32
  %scevgep2022 = getelementptr i8, ptr %.467271819.fr, i64 1
  %scevgep2024 = getelementptr i8, ptr %scevgep2022, i64 %umin2021
  %1274 = call i32 @llvm.usub.sat.i32(i32 %1270, i32 %1273)
  br label %.preheader1435

.preheader1435:                                   ; preds = %.lr.ph1802.preheader, %.lr.ph1821
  %.2831.lcssa = phi i32 [ %.1830, %.lr.ph1821 ], [ %1274, %.lr.ph1802.preheader ]
  %.47728.lcssa = phi ptr [ %.467271819.fr, %.lr.ph1821 ], [ %scevgep2024, %.lr.ph1802.preheader ]
  %1275 = icmp sgt i32 %.2831.lcssa, 3
  br i1 %1275, label %.lr.ph1807.preheader, label %.preheader1434

.lr.ph1807.preheader:                             ; preds = %.preheader1435
  %1276 = call i32 @llvm.usub.sat.i32(i32 %.2831.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) %.47728.lcssa, i8 48, i64 %1280, i1 false), !tbaa !8
  %scevgep2027 = getelementptr i8, ptr %.47728.lcssa, i64 4
  %scevgep2029 = getelementptr i8, ptr %scevgep2027, i64 %1279
  %1281 = and i32 %1277, -4
  %1282 = add nsw i32 %.2831.lcssa, -4
  %1283 = sub nsw i32 %1282, %1281
  br label %.preheader1434

.preheader1434:                                   ; preds = %.lr.ph1807.preheader, %.preheader1435
  %.3832.lcssa = phi i32 [ %.2831.lcssa, %.preheader1435 ], [ %1283, %.lr.ph1807.preheader ]
  %.48729.lcssa = phi ptr [ %.47728.lcssa, %.preheader1435 ], [ %scevgep2029, %.lr.ph1807.preheader ]
  %.not11861810 = icmp eq i32 %.3832.lcssa, 0
  br i1 %.not11861810, label %._crit_edge1814, label %.lr.ph1813.preheader

.lr.ph1813.preheader:                             ; preds = %.preheader1434
  %1284 = zext i32 %.3832.lcssa to i64
  call void @llvm.memset.p0.i64(ptr align 1 %.48729.lcssa, i8 48, i64 %1284, i1 false), !tbaa !5
  %1285 = add i32 %.3832.lcssa, -1
  %1286 = zext i32 %1285 to i64
  %scevgep2030 = getelementptr i8, ptr %.48729.lcssa, i64 1
  %scevgep2031 = getelementptr i8, ptr %scevgep2030, i64 %1286
  br label %._crit_edge1814

._crit_edge1814:                                  ; preds = %.lr.ph1813.preheader, %.preheader1434
  %.49730.lcssa = phi ptr [ %.48729.lcssa, %.preheader1434 ], [ %scevgep2031, %.lr.ph1813.preheader ]
  br i1 %.not1088, label %1296, label %1287

1287:                                             ; preds = %._crit_edge1814
  %1288 = ptrtoint ptr %.49730.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 %.307801818, %1290
  %1294 = call noundef ptr %0(ptr noundef %.301820, ptr noundef %1, i32 noundef %1290)
  %1295 = icmp eq ptr %1294, null
  br i1 %1295, label %.thread1411, label %1296

1296:                                             ; preds = %1292, %1287, %._crit_edge1814
  %.34784 = phi i32 [ %.307801818, %._crit_edge1814 ], [ %.307801818, %1287 ], [ %1293, %1292 ]
  %.53 = phi ptr [ %.49730.lcssa, %._crit_edge1814 ], [ %.49730.lcssa, %1287 ], [ %1294, %1292 ]
  %.34 = phi ptr [ %.301820, %._crit_edge1814 ], [ %.301820, %1287 ], [ %1294, %1292 ]
  %.not1171 = icmp eq i32 %1264, 0
  br i1 %.not1171, label %._crit_edge1822, label %.lr.ph1821, !llvm.loop !59

._crit_edge1822:                                  ; preds = %1296, %.preheader1449
  %.30780.lcssa = phi i32 [ %.25775.lcssa, %.preheader1449 ], [ %.34784, %1296 ]
  %.46727.lcssa = phi ptr [ %.39720.lcssa, %.preheader1449 ], [ %.53, %1296 ]
  %.30.lcssa = phi ptr [ %.25.lcssa, %.preheader1449 ], [ %.34, %1296 ]
  store ptr %25, ptr %13, align 8, !tbaa !15
  %1297 = load i8, ptr %9, align 1, !tbaa !5
  %.not11721833 = icmp eq i8 %1297, 0
  br i1 %.not11721833, label %._crit_edge1839, label %.lr.ph1838

.lr.ph1838:                                       ; preds = %._crit_edge1822, %1337
  %1298 = phi i8 [ %1338, %1337 ], [ %1297, %._crit_edge1822 ]
  %.351836 = phi ptr [ %.39, %1337 ], [ %.30.lcssa, %._crit_edge1822 ]
  %.541835 = phi ptr [ %.59, %1337 ], [ %.46727.lcssa, %._crit_edge1822 ]
  %.357851834 = phi i32 [ %.39789, %1337 ], [ %.30780.lcssa, %._crit_edge1822 ]
  %1299 = sext i8 %1298 to i32
  %1300 = ptrtoint ptr %.541835 to i64
  %1301 = ptrtoint ptr %.351836 to i64
  %.neg1179 = sub i64 %1301, %1300
  %.neg1180 = trunc i64 %.neg1179 to i32
  %1302 = add i32 %.neg1180, 512
  %spec.select1233 = call i32 @llvm.smin.i32(i32 %1302, i32 %1299)
  %.1801 = select i1 %.not1088, i32 %1299, i32 %spec.select1233
  %1303 = trunc i32 %.1801 to i8
  %1304 = sub i8 %1298, %1303
  store i8 %1304, ptr %9, align 1, !tbaa !5
  %.not11811826 = icmp eq i32 %.1801, 0
  br i1 %.not11811826, label %._crit_edge1831, label %.lr.ph1830.preheader

.lr.ph1830.preheader:                             ; preds = %.lr.ph1838
  %xtraiter2466 = and i32 %.1801, 3
  %lcmp.mod2467.not = icmp eq i32 %xtraiter2466, 0
  br i1 %lcmp.mod2467.not, label %.lr.ph1830.prol.loopexit, label %.lr.ph1830.prol

.lr.ph1830.prol:                                  ; preds = %.lr.ph1830.preheader, %.lr.ph1830.prol
  %.551828.prol = phi ptr [ %1308, %.lr.ph1830.prol ], [ %.541835, %.lr.ph1830.preheader ]
  %.28021827.prol = phi i32 [ %1309, %.lr.ph1830.prol ], [ %.1801, %.lr.ph1830.preheader ]
  %prol.iter2468 = phi i32 [ %prol.iter2468.next, %.lr.ph1830.prol ], [ 0, %.lr.ph1830.preheader ]
  %1305 = load ptr, ptr %13, align 8, !tbaa !15
  %1306 = getelementptr inbounds i8, ptr %1305, i64 1
  store ptr %1306, ptr %13, align 8, !tbaa !15
  %1307 = load i8, ptr %1305, align 1, !tbaa !5
  %1308 = getelementptr inbounds i8, ptr %.551828.prol, i64 1
  store i8 %1307, ptr %.551828.prol, align 1, !tbaa !5
  %1309 = add nsw i32 %.28021827.prol, -1
  %prol.iter2468.next = add i32 %prol.iter2468, 1
  %prol.iter2468.cmp.not = icmp eq i32 %prol.iter2468.next, %xtraiter2466
  br i1 %prol.iter2468.cmp.not, label %.lr.ph1830.prol.loopexit, label %.lr.ph1830.prol, !llvm.loop !60

.lr.ph1830.prol.loopexit:                         ; preds = %.lr.ph1830.prol, %.lr.ph1830.preheader
  %.lcssa2421.unr = phi ptr [ poison, %.lr.ph1830.preheader ], [ %1308, %.lr.ph1830.prol ]
  %.551828.unr = phi ptr [ %.541835, %.lr.ph1830.preheader ], [ %1308, %.lr.ph1830.prol ]
  %.28021827.unr = phi i32 [ %.1801, %.lr.ph1830.preheader ], [ %1309, %.lr.ph1830.prol ]
  %1310 = icmp ult i32 %.1801, 4
  br i1 %1310, label %._crit_edge1831, label %.lr.ph1830

.lr.ph1830:                                       ; preds = %.lr.ph1830.prol.loopexit, %.lr.ph1830
  %.551828 = phi ptr [ %1326, %.lr.ph1830 ], [ %.551828.unr, %.lr.ph1830.prol.loopexit ]
  %.28021827 = phi i32 [ %1327, %.lr.ph1830 ], [ %.28021827.unr, %.lr.ph1830.prol.loopexit ]
  %1311 = load ptr, ptr %13, align 8, !tbaa !15
  %1312 = getelementptr inbounds i8, ptr %1311, i64 1
  store ptr %1312, ptr %13, align 8, !tbaa !15
  %1313 = load i8, ptr %1311, align 1, !tbaa !5
  %1314 = getelementptr inbounds i8, ptr %.551828, i64 1
  store i8 %1313, ptr %.551828, align 1, !tbaa !5
  %1315 = load ptr, ptr %13, align 8, !tbaa !15
  %1316 = getelementptr inbounds i8, ptr %1315, i64 1
  store ptr %1316, ptr %13, align 8, !tbaa !15
  %1317 = load i8, ptr %1315, align 1, !tbaa !5
  %1318 = getelementptr inbounds i8, ptr %.551828, i64 2
  store i8 %1317, ptr %1314, align 1, !tbaa !5
  %1319 = load ptr, ptr %13, align 8, !tbaa !15
  %1320 = getelementptr inbounds i8, ptr %1319, i64 1
  store ptr %1320, ptr %13, align 8, !tbaa !15
  %1321 = load i8, ptr %1319, align 1, !tbaa !5
  %1322 = getelementptr inbounds i8, ptr %.551828, i64 3
  store i8 %1321, ptr %1318, align 1, !tbaa !5
  %1323 = load ptr, ptr %13, align 8, !tbaa !15
  %1324 = getelementptr inbounds i8, ptr %1323, i64 1
  store ptr %1324, ptr %13, align 8, !tbaa !15
  %1325 = load i8, ptr %1323, align 1, !tbaa !5
  %1326 = getelementptr inbounds i8, ptr %.551828, i64 4
  store i8 %1325, ptr %1322, align 1, !tbaa !5
  %1327 = add nsw i32 %.28021827, -4
  %.not1181.3 = icmp eq i32 %1327, 0
  br i1 %.not1181.3, label %._crit_edge1831, label %.lr.ph1830, !llvm.loop !61

._crit_edge1831:                                  ; preds = %.lr.ph1830.prol.loopexit, %.lr.ph1830, %.lr.ph1838
  %.55.lcssa = phi ptr [ %.541835, %.lr.ph1838 ], [ %.lcssa2421.unr, %.lr.ph1830.prol.loopexit ], [ %1326, %.lr.ph1830 ]
  br i1 %.not1088, label %1337, label %1328

1328:                                             ; preds = %._crit_edge1831
  %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 %.357851834, %1331
  %1335 = call noundef ptr %0(ptr noundef %.351836, ptr noundef %1, i32 noundef %1331)
  %1336 = icmp eq ptr %1335, null
  br i1 %1336, label %.thread1411, label %1337

1337:                                             ; preds = %1333, %1328, %._crit_edge1831
  %.39789 = phi i32 [ %.357851834, %._crit_edge1831 ], [ %.357851834, %1328 ], [ %1334, %1333 ]
  %.59 = phi ptr [ %.55.lcssa, %._crit_edge1831 ], [ %.55.lcssa, %1328 ], [ %1335, %1333 ]
  %.39 = phi ptr [ %.351836, %._crit_edge1831 ], [ %.351836, %1328 ], [ %1335, %1333 ]
  %1338 = load i8, ptr %9, align 1, !tbaa !5
  %.not1172 = icmp eq i8 %1338, 0
  br i1 %.not1172, label %._crit_edge1839, label %.lr.ph1838, !llvm.loop !62

._crit_edge1839:                                  ; preds = %1337, %._crit_edge1822
  %.35785.lcssa = phi i32 [ %.30780.lcssa, %._crit_edge1822 ], [ %.39789, %1337 ]
  %.54.lcssa = phi ptr [ %.46727.lcssa, %._crit_edge1822 ], [ %.59, %1337 ]
  %.35.lcssa = phi ptr [ %.30.lcssa, %._crit_edge1822 ], [ %.39, %1337 ]
  %1339 = and i32 %.19858, 1
  %1340 = icmp ne i32 %1339, 0
  %1341 = icmp sgt i32 %.88112109, 0
  %or.cond47 = select i1 %1340, i1 %1341, i1 false
  br i1 %or.cond47, label %.preheader1446, label %.backedge2364

1342:                                             ; preds = %1374, %._crit_edge1860, %1369
  %.44794.ph = phi i32 [ %.40790, %1369 ], [ %.40790, %._crit_edge1860 ], [ %1375, %1374 ]
  %.67.ph = phi ptr [ %.63.lcssa, %1369 ], [ %.63.lcssa, %._crit_edge1860 ], [ %1376, %1374 ]
  %.44.ph = phi ptr [ %.40, %1369 ], [ %.40, %._crit_edge1860 ], [ %1376, %1374 ]
  %.old46.not = icmp eq i32 %1346, 0
  br i1 %.old46.not, label %.backedge2364, label %.preheader1446

.preheader1446:                                   ; preds = %._crit_edge1839, %1342
  %.9812 = phi i32 [ %1346, %1342 ], [ %.88112109, %._crit_edge1839 ]
  %.40790 = phi i32 [ %.44794.ph, %1342 ], [ %.35785.lcssa, %._crit_edge1839 ]
  %.60 = phi ptr [ %.67.ph, %1342 ], [ %.54.lcssa, %._crit_edge1839 ]
  %.40 = phi ptr [ %.44.ph, %1342 ], [ %.35.lcssa, %._crit_edge1839 ]
  %.60.fr = freeze ptr %.60
  %1343 = ptrtoint ptr %.60.fr to i64
  %1344 = ptrtoint ptr %.40 to i64
  %.neg1174 = sub i64 %1344, %1343
  %.neg1175 = trunc i64 %.neg1174 to i32
  %1345 = add i32 %.neg1175, 512
  %spec.select1234 = call i32 @llvm.smin.i32(i32 %.9812, i32 %1345)
  %.1732 = select i1 %.not1088, i32 %.9812, i32 %spec.select1234
  %1346 = sub nsw i32 %.9812, %.1732
  %.not11761843 = icmp eq i32 %.1732, 0
  %1347 = and i64 %1343, 3
  %1348 = icmp eq i64 %1347, 0
  %or.cond12371844 = or i1 %.not11761843, %1348
  br i1 %or.cond12371844, label %.preheader1433, label %.lr.ph1848.preheader

.lr.ph1848.preheader:                             ; preds = %.preheader1446
  %1349 = trunc i64 %1343 to i2
  %1350 = xor i2 %1349, -1
  %1351 = zext i2 %1350 to i64
  %1352 = add i32 %.1732, -1
  %1353 = zext i32 %1352 to i64
  %umin2032 = call i64 @llvm.umin.i64(i64 %1351, i64 %1353)
  %1354 = add nuw nsw i64 %umin2032, 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
  %scevgep2033 = getelementptr i8, ptr %.60.fr, i64 1
  %scevgep2035 = getelementptr i8, ptr %scevgep2033, i64 %umin2032
  %1356 = call i32 @llvm.usub.sat.i32(i32 %1352, i32 %1355)
  br label %.preheader1433

.preheader1433:                                   ; preds = %.lr.ph1848.preheader, %.preheader1446
  %.2733.lcssa = phi i32 [ %.1732, %.preheader1446 ], [ %1356, %.lr.ph1848.preheader ]
  %.61.lcssa = phi ptr [ %.60.fr, %.preheader1446 ], [ %scevgep2035, %.lr.ph1848.preheader ]
  %1357 = icmp sgt i32 %.2733.lcssa, 3
  br i1 %1357, label %.lr.ph1853.preheader, label %.preheader

.lr.ph1853.preheader:                             ; preds = %.preheader1433
  %1358 = call i32 @llvm.usub.sat.i32(i32 %.2733.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
  %scevgep2038 = getelementptr i8, ptr %.61.lcssa, i64 4
  %scevgep2040 = getelementptr i8, ptr %scevgep2038, i64 %1361
  %1363 = and i32 %1359, -4
  %1364 = add nsw i32 %.2733.lcssa, -4
  %1365 = sub nsw i32 %1364, %1363
  br label %.preheader

.preheader:                                       ; preds = %.lr.ph1853.preheader, %.preheader1433
  %.3734.lcssa = phi i32 [ %.2733.lcssa, %.preheader1433 ], [ %1365, %.lr.ph1853.preheader ]
  %.62.lcssa = phi ptr [ %.61.lcssa, %.preheader1433 ], [ %scevgep2040, %.lr.ph1853.preheader ]
  %.not11771856 = icmp eq i32 %.3734.lcssa, 0
  br i1 %.not11771856, label %._crit_edge1860, label %.lr.ph1859.preheader

.lr.ph1859.preheader:                             ; preds = %.preheader
  %1366 = zext i32 %.3734.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 %.3734.lcssa, -1
  %1368 = zext i32 %1367 to i64
  %scevgep2041 = getelementptr i8, ptr %.62.lcssa, i64 1
  %scevgep2042 = getelementptr i8, ptr %scevgep2041, i64 %1368
  br label %._crit_edge1860

._crit_edge1860:                                  ; preds = %.lr.ph1859.preheader, %.preheader
  %.63.lcssa = phi ptr [ %.62.lcssa, %.preheader ], [ %scevgep2042, %.lr.ph1859.preheader ]
  br i1 %.not1088, label %1342, label %1369

1369:                                             ; preds = %._crit_edge1860
  %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 %.40790, %1372
  %1376 = call noundef ptr %0(ptr noundef %.40, ptr noundef %1, i32 noundef %1372)
  %1377 = icmp eq ptr %1376, null
  br i1 %1377, label %.thread1411, label %1342, !llvm.loop !63

1378:                                             ; preds = %197
  store i8 %198, 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 %994

1379:                                             ; preds = %thread-pre-split
  br i1 %.not1088, label %1380, label %1381

1380:                                             ; preds = %1379
  store i8 0, ptr %.3684, align 1, !tbaa !5
  br label %.thread1411

1381:                                             ; preds = %1379
  %1382 = ptrtoint ptr %.3684 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 %.thread1411

1387:                                             ; preds = %1381
  %1388 = add nsw i32 %.1751, %1385
  %1389 = call noundef ptr %0(ptr noundef %.1, ptr noundef %1, i32 noundef %1385)
  br label %.thread1411

.thread1411:                                      ; preds = %68, %1048, %1088, %1147, %1188, %1256, %1292, %1333, %1374, %1387, %1380, %1381
  %.49799 = phi i32 [ %.1751, %1380 ], [ %.1751, %1381 ], [ %1388, %1387 ], [ %1375, %1374 ], [ %1334, %1333 ], [ %1293, %1292 ], [ %1257, %1256 ], [ %1189, %1188 ], [ %1148, %1147 ], [ %1089, %1088 ], [ %1049, %1048 ], [ %69, %68 ]
  %.72 = phi ptr [ %.3684, %1380 ], [ %.3684, %1381 ], [ %1389, %1387 ], [ null, %1374 ], [ null, %1333 ], [ null, %1292 ], [ null, %1256 ], [ null, %1188 ], [ null, %1147 ], [ null, %1088 ], [ null, %1048 ], [ null, %68 ]
  %.49 = phi ptr [ %.1, %1380 ], [ %.1, %1381 ], [ %1389, %1387 ], [ null, %1374 ], [ null, %1333 ], [ null, %1292 ], [ null, %1256 ], [ null, %1188 ], [ null, %1147 ], [ null, %1088 ], [ null, %1048 ], [ 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 %.49799, %1393
  ret i32 %1394
}

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef i32 @_ZL20stbsp__real_to_partsPxPid(ptr noundef, ptr noundef, double noundef) local_unnamed_addr #1

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZL16stbsp__lead_signjPc(i32 noundef, ptr noundef) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare hidden noundef i32 @_ZL18stbsp__real_to_strPPKcPjPcPidj(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) #2

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

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

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

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

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

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

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

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


; Effective O3 passes: 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