; LLVM IR from ashishzero/karma :: src/modules/core (stb)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.anon.0 = type { i16, [201 x i8] }
%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.2 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [6 x i8], align 1
@_ZL16stbsp__digitpair = external hidden global %struct.anon.0, align 2

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

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

; 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) #1 {
  %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 = %2692, %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 %2690

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 %2690 [
    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 %2736 [
    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 %441 [
    i32 104, label %357
    i32 108, label %371
    i32 106, label %387
    i32 122, label %392
    i32 116, label %397
    i32 73, label %402
  ]

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
  %362 = load ptr, ptr %13, align 8, !tbaa !5
  %363 = getelementptr inbounds i8, ptr %362, i64 0
  %364 = load i8, ptr %363, align 1, !tbaa !11
  %365 = sext i8 %364 to i32
  %366 = icmp eq i32 %365, 104
  br i1 %366, label %367, label %370

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

370:                                              ; preds = %367, %357
  br label %442

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

381:                                              ; preds = %371
  %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 %386

386:                                              ; preds = %381, %371
  br label %442

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

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

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

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

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

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

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

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

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

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

439:                                              ; preds = %434, %431
  br label %440

440:                                              ; preds = %439, %414
  br label %442

441:                                              ; preds = %352
  br label %442

442:                                              ; preds = %441, %440, %397, %392, %387, %386, %370
  %443 = load ptr, ptr %13, align 8, !tbaa !5
  %444 = getelementptr inbounds i8, ptr %443, i64 0
  %445 = load i8, ptr %444, align 1, !tbaa !11
  %446 = sext i8 %445 to i32
  switch i32 %446, label %2677 [
    i32 115, label %447
    i32 99, label %545
    i32 110, label %569
    i32 65, label %595
    i32 97, label %595
    i32 71, label %788
    i32 103, label %788
    i32 69, label %914
    i32 101, label %914
    i32 102, label %1045
    i32 66, label %1471
    i32 98, label %1471
    i32 111, label %1494
    i32 112, label %1503
    i32 88, label %1508
    i32 120, label %1508
    i32 117, label %1659
    i32 105, label %1659
    i32 100, label %1659
  ]

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

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

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

461:                                              ; preds = %457, %452
  %462 = phi ptr [ %455, %452 ], [ %459, %457 ]
  %463 = load ptr, ptr %462, align 8, !tbaa !5
  store ptr %463, ptr %26, align 8, !tbaa !5
  %464 = load ptr, ptr %26, align 8, !tbaa !5
  %465 = icmp eq ptr %464, null
  br i1 %465, label %466, label %467

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

467:                                              ; preds = %466, %461
  %468 = load ptr, ptr %26, align 8, !tbaa !5
  store ptr %468, ptr %34, align 8, !tbaa !5
  br label %469

469:                                              ; preds = %483, %467
  %470 = load ptr, ptr %34, align 8, !tbaa !5
  %471 = ptrtoint ptr %470 to i64
  %472 = and i64 %471, 3
  %473 = icmp eq i64 %472, 0
  br i1 %473, label %474, label %475

474:                                              ; preds = %469
  br label %486

475:                                              ; preds = %469
  br label %476

476:                                              ; preds = %529, %526, %475
  %477 = load ptr, ptr %34, align 8, !tbaa !5
  %478 = getelementptr inbounds i8, ptr %477, i64 0
  %479 = load i8, ptr %478, align 1, !tbaa !11
  %480 = sext i8 %479 to i32
  %481 = icmp eq i32 %480, 0
  br i1 %481, label %482, label %483

482:                                              ; preds = %476
  br label %530

483:                                              ; preds = %476
  %484 = load ptr, ptr %34, align 8, !tbaa !5
  %485 = getelementptr inbounds i8, ptr %484, i32 1
  store ptr %485, ptr %34, align 8, !tbaa !5
  br label %469, !llvm.loop !18

486:                                              ; preds = %474
  store i32 -1, ptr %29, align 4, !tbaa !9
  %487 = load i32, ptr %16, align 4, !tbaa !9
  %488 = icmp sge i32 %487, 0
  br i1 %488, label %489, label %505

489:                                              ; preds = %486
  %490 = load ptr, ptr %34, align 8, !tbaa !5
  %491 = load ptr, ptr %26, align 8, !tbaa !5
  %492 = ptrtoint ptr %490 to i64
  %493 = ptrtoint ptr %491 to i64
  %494 = sub i64 %492, %493
  %495 = trunc i64 %494 to i32
  store i32 %495, ptr %29, align 4, !tbaa !9
  %496 = load i32, ptr %29, align 4, !tbaa !9
  %497 = load i32, ptr %16, align 4, !tbaa !9
  %498 = icmp uge i32 %496, %497
  br i1 %498, label %499, label %500

499:                                              ; preds = %489
  br label %530

500:                                              ; preds = %489
  %501 = load i32, ptr %16, align 4, !tbaa !9
  %502 = load i32, ptr %29, align 4, !tbaa !9
  %503 = sub i32 %501, %502
  %504 = lshr i32 %503, 2
  store i32 %504, ptr %29, align 4, !tbaa !9
  br label %505

505:                                              ; preds = %500, %486
  br label %506

506:                                              ; preds = %528, %505
  %507 = load i32, ptr %29, align 4, !tbaa !9
  %508 = icmp ne i32 %507, 0
  br i1 %508, label %509, label %529

509:                                              ; preds = %506
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #3
  %510 = load ptr, ptr %34, align 8, !tbaa !5
  %511 = load i32, ptr %510, align 4, !tbaa !9
  store i32 %511, ptr %35, align 4, !tbaa !9
  %512 = load i32, ptr %35, align 4, !tbaa !9
  %513 = sub i32 %512, 16843009
  %514 = load i32, ptr %35, align 4, !tbaa !9
  %515 = xor i32 %514, -1
  %516 = and i32 %513, %515
  %517 = zext i32 %516 to i64
  %518 = and i64 %517, 2155905152
  %519 = icmp ne i64 %518, 0
  br i1 %519, label %520, label %521

520:                                              ; preds = %509
  store i32 27, ptr %20, align 4
  br label %526

521:                                              ; preds = %509
  %522 = load ptr, ptr %34, align 8, !tbaa !5
  %523 = getelementptr inbounds i8, ptr %522, i64 4
  store ptr %523, ptr %34, align 8, !tbaa !5
  %524 = load i32, ptr %29, align 4, !tbaa !9
  %525 = add i32 %524, -1
  store i32 %525, ptr %29, align 4, !tbaa !9
  store i32 0, ptr %20, align 4
  br label %526

526:                                              ; preds = %521, %520
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #3
  %527 = load i32, ptr %20, align 4
  switch i32 %527, label %2736 [
    i32 0, label %528
    i32 27, label %476
  ]

528:                                              ; preds = %526
  br label %506, !llvm.loop !19

529:                                              ; preds = %506
  br label %476

530:                                              ; preds = %499, %482
  %531 = load ptr, ptr %34, align 8, !tbaa !5
  %532 = load ptr, ptr %26, align 8, !tbaa !5
  %533 = ptrtoint ptr %531 to i64
  %534 = ptrtoint ptr %532 to i64
  %535 = sub i64 %533, %534
  %536 = trunc i64 %535 to i32
  store i32 %536, ptr %28, align 4, !tbaa !9
  %537 = load i32, ptr %28, align 4, !tbaa !9
  %538 = load i32, ptr %16, align 4, !tbaa !9
  %539 = icmp ugt i32 %537, %538
  br i1 %539, label %540, label %542

540:                                              ; preds = %530
  %541 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %541, ptr %28, align 4, !tbaa !9
  br label %542

542:                                              ; preds = %540, %530
  %543 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  store i8 0, ptr %543, align 1, !tbaa !11
  %544 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 0
  store i8 0, ptr %544, 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 %1881

545:                                              ; preds = %442
  %546 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %547 = getelementptr inbounds i8, ptr %546, i64 512
  %548 = getelementptr inbounds i8, ptr %547, i64 -1
  store ptr %548, ptr %26, align 8, !tbaa !5
  %549 = load ptr, ptr %11, align 8, !tbaa !5
  %550 = getelementptr inbounds %struct.__va_list_tag, ptr %549, i32 0, i32 0
  %551 = load i32, ptr %550, align 8
  %552 = icmp ule i32 %551, 40
  br i1 %552, label %553, label %558

553:                                              ; preds = %545
  %554 = getelementptr inbounds %struct.__va_list_tag, ptr %549, i32 0, i32 3
  %555 = load ptr, ptr %554, align 8
  %556 = getelementptr i8, ptr %555, i32 %551
  %557 = add i32 %551, 8
  store i32 %557, ptr %550, align 8
  br label %562

558:                                              ; preds = %545
  %559 = getelementptr inbounds %struct.__va_list_tag, ptr %549, i32 0, i32 2
  %560 = load ptr, ptr %559, align 8
  %561 = getelementptr i8, ptr %560, i32 8
  store ptr %561, ptr %559, align 8
  br label %562

562:                                              ; preds = %558, %553
  %563 = phi ptr [ %556, %553 ], [ %560, %558 ]
  %564 = load i32, ptr %563, align 4, !tbaa !9
  %565 = trunc i32 %564 to i8
  %566 = load ptr, ptr %26, align 8, !tbaa !5
  store i8 %565, ptr %566, align 1, !tbaa !11
  store i32 1, ptr %28, align 4, !tbaa !9
  %567 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  store i8 0, ptr %567, align 1, !tbaa !11
  %568 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 0
  store i8 0, ptr %568, 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 %1881

569:                                              ; preds = %442
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #3
  %570 = load ptr, ptr %11, align 8, !tbaa !5
  %571 = getelementptr inbounds %struct.__va_list_tag, ptr %570, i32 0, i32 0
  %572 = load i32, ptr %571, align 8
  %573 = icmp ule i32 %572, 40
  br i1 %573, label %574, label %579

574:                                              ; preds = %569
  %575 = getelementptr inbounds %struct.__va_list_tag, ptr %570, i32 0, i32 3
  %576 = load ptr, ptr %575, align 8
  %577 = getelementptr i8, ptr %576, i32 %572
  %578 = add i32 %572, 8
  store i32 %578, ptr %571, align 8
  br label %583

579:                                              ; preds = %569
  %580 = getelementptr inbounds %struct.__va_list_tag, ptr %570, i32 0, i32 2
  %581 = load ptr, ptr %580, align 8
  %582 = getelementptr i8, ptr %581, i32 8
  store ptr %582, ptr %580, align 8
  br label %583

583:                                              ; preds = %579, %574
  %584 = phi ptr [ %577, %574 ], [ %581, %579 ]
  %585 = load ptr, ptr %584, align 8, !tbaa !5
  store ptr %585, ptr %36, align 8, !tbaa !5
  %586 = load i32, ptr %14, align 4, !tbaa !9
  %587 = load ptr, ptr %12, align 8, !tbaa !5
  %588 = load ptr, ptr %9, align 8, !tbaa !5
  %589 = ptrtoint ptr %587 to i64
  %590 = ptrtoint ptr %588 to i64
  %591 = sub i64 %589, %590
  %592 = trunc i64 %591 to i32
  %593 = add nsw i32 %586, %592
  %594 = load ptr, ptr %36, align 8, !tbaa !5
  store i32 %593, ptr %594, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #3
  br label %2687

595:                                              ; preds = %442, %442
  %596 = load ptr, ptr %13, align 8, !tbaa !5
  %597 = getelementptr inbounds i8, ptr %596, i64 0
  %598 = load i8, ptr %597, align 1, !tbaa !11
  %599 = sext i8 %598 to i32
  %600 = icmp eq i32 %599, 65
  br i1 %600, label %601, label %602

601:                                              ; preds = %595
  br label %603

602:                                              ; preds = %595
  br label %603

603:                                              ; preds = %602, %601
  %604 = phi ptr [ @_ZZ16stbsp_vsprintfcbE4hexu, %601 ], [ @_ZZ16stbsp_vsprintfcbE3hex, %602 ]
  %605 = getelementptr inbounds [19 x i8], ptr %604, i64 0, i64 0
  store ptr %605, ptr %27, align 8, !tbaa !5
  %606 = load ptr, ptr %11, align 8, !tbaa !5
  %607 = getelementptr inbounds %struct.__va_list_tag, ptr %606, i32 0, i32 1
  %608 = load i32, ptr %607, align 4
  %609 = icmp ule i32 %608, 160
  br i1 %609, label %610, label %615

610:                                              ; preds = %603
  %611 = getelementptr inbounds %struct.__va_list_tag, ptr %606, i32 0, i32 3
  %612 = load ptr, ptr %611, align 8
  %613 = getelementptr i8, ptr %612, i32 %608
  %614 = add i32 %608, 16
  store i32 %614, ptr %607, align 4
  br label %619

615:                                              ; preds = %603
  %616 = getelementptr inbounds %struct.__va_list_tag, ptr %606, i32 0, i32 2
  %617 = load ptr, ptr %616, align 8
  %618 = getelementptr i8, ptr %617, i32 8
  store ptr %618, ptr %616, align 8
  br label %619

619:                                              ; preds = %615, %610
  %620 = phi ptr [ %613, %610 ], [ %617, %615 ]
  %621 = load double, ptr %620, align 8, !tbaa !20
  store double %621, ptr %32, align 8, !tbaa !20
  %622 = load i32, ptr %16, align 4, !tbaa !9
  %623 = icmp eq i32 %622, -1
  br i1 %623, label %624, label %625

624:                                              ; preds = %619
  store i32 6, ptr %16, align 4, !tbaa !9
  br label %625

625:                                              ; preds = %624, %619
  %626 = load double, ptr %32, align 8, !tbaa !20
  %627 = call noundef i32 @_ZL20stbsp__real_to_partsPxPid(ptr noundef %31, ptr noundef %33, double noundef %626)
  %628 = icmp ne i32 %627, 0
  br i1 %628, label %629, label %632

629:                                              ; preds = %625
  %630 = load i32, ptr %18, align 4, !tbaa !9
  %631 = or i32 %630, 128
  store i32 %631, ptr %18, align 4, !tbaa !9
  br label %632

632:                                              ; preds = %629, %625
  %633 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %634 = getelementptr inbounds i8, ptr %633, i64 64
  store ptr %634, ptr %26, align 8, !tbaa !5
  %635 = load i32, ptr %18, align 4, !tbaa !9
  %636 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  call void @_ZL16stbsp__lead_signjPc(i32 noundef %635, ptr noundef %636)
  %637 = load i32, ptr %33, align 4, !tbaa !9
  %638 = icmp eq i32 %637, -1023
  br i1 %638, label %639, label %644

639:                                              ; preds = %632
  %640 = load i64, ptr %31, align 8, !tbaa !22
  %641 = icmp ne i64 %640, 0
  %642 = zext i1 %641 to i64
  %643 = select i1 %641, i32 -1022, i32 0
  store i32 %643, ptr %33, align 4, !tbaa !9
  br label %647

644:                                              ; preds = %632
  %645 = load i64, ptr %31, align 8, !tbaa !22
  %646 = or i64 %645, 4503599627370496
  store i64 %646, ptr %31, align 8, !tbaa !22
  br label %647

647:                                              ; preds = %644, %639
  %648 = load i64, ptr %31, align 8, !tbaa !22
  %649 = shl i64 %648, 8
  store i64 %649, ptr %31, align 8, !tbaa !22
  %650 = load i32, ptr %16, align 4, !tbaa !9
  %651 = icmp slt i32 %650, 15
  br i1 %651, label %652, label %659

652:                                              ; preds = %647
  %653 = load i32, ptr %16, align 4, !tbaa !9
  %654 = mul nsw i32 %653, 4
  %655 = zext i32 %654 to i64
  %656 = lshr i64 576460752303423488, %655
  %657 = load i64, ptr %31, align 8, !tbaa !22
  %658 = add i64 %657, %656
  store i64 %658, ptr %31, align 8, !tbaa !22
  br label %659

659:                                              ; preds = %652, %647
  %660 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  %661 = load i8, ptr %660, align 1, !tbaa !11
  %662 = sext i8 %661 to i32
  %663 = add nsw i32 1, %662
  %664 = sext i32 %663 to i64
  %665 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 %664
  store i8 48, ptr %665, align 1, !tbaa !11
  %666 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  %667 = load i8, ptr %666, align 1, !tbaa !11
  %668 = sext i8 %667 to i32
  %669 = add nsw i32 2, %668
  %670 = sext i32 %669 to i64
  %671 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 %670
  store i8 120, ptr %671, align 1, !tbaa !11
  %672 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  %673 = load i8, ptr %672, align 1, !tbaa !11
  %674 = sext i8 %673 to i32
  %675 = add nsw i32 %674, 2
  %676 = trunc i32 %675 to i8
  store i8 %676, ptr %672, align 1, !tbaa !11
  %677 = load ptr, ptr %27, align 8, !tbaa !5
  %678 = load i64, ptr %31, align 8, !tbaa !22
  %679 = lshr i64 %678, 60
  %680 = and i64 %679, 15
  %681 = getelementptr inbounds i8, ptr %677, i64 %680
  %682 = load i8, ptr %681, align 1, !tbaa !11
  %683 = load ptr, ptr %26, align 8, !tbaa !5
  %684 = getelementptr inbounds i8, ptr %683, i32 1
  store ptr %684, ptr %26, align 8, !tbaa !5
  store i8 %682, ptr %683, align 1, !tbaa !11
  %685 = load i64, ptr %31, align 8, !tbaa !22
  %686 = shl i64 %685, 4
  store i64 %686, ptr %31, align 8, !tbaa !22
  %687 = load i32, ptr %16, align 4, !tbaa !9
  %688 = icmp ne i32 %687, 0
  br i1 %688, label %689, label %693

689:                                              ; preds = %659
  %690 = load i8, ptr @_ZL13stbsp__period, align 1, !tbaa !11
  %691 = load ptr, ptr %26, align 8, !tbaa !5
  %692 = getelementptr inbounds i8, ptr %691, i32 1
  store ptr %692, ptr %26, align 8, !tbaa !5
  store i8 %690, ptr %691, align 1, !tbaa !11
  br label %693

693:                                              ; preds = %689, %659
  %694 = load ptr, ptr %26, align 8, !tbaa !5
  store ptr %694, ptr %34, align 8, !tbaa !5
  %695 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %695, ptr %29, align 4, !tbaa !9
  %696 = load i32, ptr %29, align 4, !tbaa !9
  %697 = icmp ugt i32 %696, 13
  br i1 %697, label %698, label %699

698:                                              ; preds = %693
  store i32 13, ptr %29, align 4, !tbaa !9
  br label %699

699:                                              ; preds = %698, %693
  %700 = load i32, ptr %16, align 4, !tbaa !9
  %701 = load i32, ptr %29, align 4, !tbaa !9
  %702 = icmp sgt i32 %700, %701
  br i1 %702, label %703, label %707

703:                                              ; preds = %699
  %704 = load i32, ptr %16, align 4, !tbaa !9
  %705 = load i32, ptr %29, align 4, !tbaa !9
  %706 = sub i32 %704, %705
  store i32 %706, ptr %17, align 4, !tbaa !9
  br label %707

707:                                              ; preds = %703, %699
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %708

708:                                              ; preds = %712, %707
  %709 = load i32, ptr %29, align 4, !tbaa !9
  %710 = add i32 %709, -1
  store i32 %710, ptr %29, align 4, !tbaa !9
  %711 = icmp ne i32 %709, 0
  br i1 %711, label %712, label %723

712:                                              ; preds = %708
  %713 = load ptr, ptr %27, align 8, !tbaa !5
  %714 = load i64, ptr %31, align 8, !tbaa !22
  %715 = lshr i64 %714, 60
  %716 = and i64 %715, 15
  %717 = getelementptr inbounds i8, ptr %713, i64 %716
  %718 = load i8, ptr %717, align 1, !tbaa !11
  %719 = load ptr, ptr %26, align 8, !tbaa !5
  %720 = getelementptr inbounds i8, ptr %719, i32 1
  store ptr %720, ptr %26, align 8, !tbaa !5
  store i8 %718, ptr %719, align 1, !tbaa !11
  %721 = load i64, ptr %31, align 8, !tbaa !22
  %722 = shl i64 %721, 4
  store i64 %722, ptr %31, align 8, !tbaa !22
  br label %708, !llvm.loop !24

723:                                              ; preds = %708
  %724 = load ptr, ptr %27, align 8, !tbaa !5
  %725 = getelementptr inbounds i8, ptr %724, i64 17
  %726 = load i8, ptr %725, align 1, !tbaa !11
  %727 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 1
  store i8 %726, ptr %727, align 1, !tbaa !11
  %728 = load i32, ptr %33, align 4, !tbaa !9
  %729 = icmp slt i32 %728, 0
  br i1 %729, label %730, label %734

730:                                              ; preds = %723
  %731 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 2
  store i8 45, ptr %731, align 1, !tbaa !11
  %732 = load i32, ptr %33, align 4, !tbaa !9
  %733 = sub nsw i32 0, %732
  store i32 %733, ptr %33, align 4, !tbaa !9
  br label %736

734:                                              ; preds = %723
  %735 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 2
  store i8 43, ptr %735, align 1, !tbaa !11
  br label %736

736:                                              ; preds = %734, %730
  %737 = load i32, ptr %33, align 4, !tbaa !9
  %738 = icmp sge i32 %737, 1000
  br i1 %738, label %739, label %740

739:                                              ; preds = %736
  br label %751

740:                                              ; preds = %736
  %741 = load i32, ptr %33, align 4, !tbaa !9
  %742 = icmp sge i32 %741, 100
  br i1 %742, label %743, label %744

743:                                              ; preds = %740
  br label %749

744:                                              ; preds = %740
  %745 = load i32, ptr %33, align 4, !tbaa !9
  %746 = icmp sge i32 %745, 10
  %747 = zext i1 %746 to i64
  %748 = select i1 %746, i32 4, i32 3
  br label %749

749:                                              ; preds = %744, %743
  %750 = phi i32 [ 5, %743 ], [ %748, %744 ]
  br label %751

751:                                              ; preds = %749, %739
  %752 = phi i32 [ 6, %739 ], [ %750, %749 ]
  store i32 %752, ptr %29, align 4, !tbaa !9
  %753 = load i32, ptr %29, align 4, !tbaa !9
  %754 = trunc i32 %753 to i8
  %755 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 0
  store i8 %754, ptr %755, align 1, !tbaa !11
  br label %756

756:                                              ; preds = %767, %751
  %757 = load i32, ptr %33, align 4, !tbaa !9
  %758 = srem i32 %757, 10
  %759 = add nsw i32 48, %758
  %760 = trunc i32 %759 to i8
  %761 = load i32, ptr %29, align 4, !tbaa !9
  %762 = zext i32 %761 to i64
  %763 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 %762
  store i8 %760, ptr %763, align 1, !tbaa !11
  %764 = load i32, ptr %29, align 4, !tbaa !9
  %765 = icmp ule i32 %764, 3
  br i1 %765, label %766, label %767

766:                                              ; preds = %756
  br label %772

767:                                              ; preds = %756
  %768 = load i32, ptr %29, align 4, !tbaa !9
  %769 = add i32 %768, -1
  store i32 %769, ptr %29, align 4, !tbaa !9
  %770 = load i32, ptr %33, align 4, !tbaa !9
  %771 = sdiv i32 %770, 10
  store i32 %771, ptr %33, align 4, !tbaa !9
  br label %756, !llvm.loop !25

772:                                              ; preds = %766
  %773 = load ptr, ptr %26, align 8, !tbaa !5
  %774 = load ptr, ptr %34, align 8, !tbaa !5
  %775 = ptrtoint ptr %773 to i64
  %776 = ptrtoint ptr %774 to i64
  %777 = sub i64 %775, %776
  %778 = trunc i64 %777 to i32
  store i32 %778, ptr %33, align 4, !tbaa !9
  %779 = load ptr, ptr %26, align 8, !tbaa !5
  %780 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %781 = getelementptr inbounds i8, ptr %780, i64 64
  %782 = ptrtoint ptr %779 to i64
  %783 = ptrtoint ptr %781 to i64
  %784 = sub i64 %782, %783
  %785 = trunc i64 %784 to i32
  store i32 %785, ptr %28, align 4, !tbaa !9
  %786 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %787 = getelementptr inbounds i8, ptr %786, i64 64
  store ptr %787, ptr %26, align 8, !tbaa !5
  store i32 50331649, ptr %30, align 4, !tbaa !9
  br label %1881

788:                                              ; preds = %442, %442
  %789 = load ptr, ptr %13, align 8, !tbaa !5
  %790 = getelementptr inbounds i8, ptr %789, i64 0
  %791 = load i8, ptr %790, align 1, !tbaa !11
  %792 = sext i8 %791 to i32
  %793 = icmp eq i32 %792, 71
  br i1 %793, label %794, label %795

794:                                              ; preds = %788
  br label %796

795:                                              ; preds = %788
  br label %796

796:                                              ; preds = %795, %794
  %797 = phi ptr [ @_ZZ16stbsp_vsprintfcbE4hexu, %794 ], [ @_ZZ16stbsp_vsprintfcbE3hex, %795 ]
  %798 = getelementptr inbounds [19 x i8], ptr %797, i64 0, i64 0
  store ptr %798, ptr %27, align 8, !tbaa !5
  %799 = load ptr, ptr %11, align 8, !tbaa !5
  %800 = getelementptr inbounds %struct.__va_list_tag, ptr %799, i32 0, i32 1
  %801 = load i32, ptr %800, align 4
  %802 = icmp ule i32 %801, 160
  br i1 %802, label %803, label %808

803:                                              ; preds = %796
  %804 = getelementptr inbounds %struct.__va_list_tag, ptr %799, i32 0, i32 3
  %805 = load ptr, ptr %804, align 8
  %806 = getelementptr i8, ptr %805, i32 %801
  %807 = add i32 %801, 16
  store i32 %807, ptr %800, align 4
  br label %812

808:                                              ; preds = %796
  %809 = getelementptr inbounds %struct.__va_list_tag, ptr %799, i32 0, i32 2
  %810 = load ptr, ptr %809, align 8
  %811 = getelementptr i8, ptr %810, i32 8
  store ptr %811, ptr %809, align 8
  br label %812

812:                                              ; preds = %808, %803
  %813 = phi ptr [ %806, %803 ], [ %810, %808 ]
  %814 = load double, ptr %813, align 8, !tbaa !20
  store double %814, ptr %32, align 8, !tbaa !20
  %815 = load i32, ptr %16, align 4, !tbaa !9
  %816 = icmp eq i32 %815, -1
  br i1 %816, label %817, label %818

817:                                              ; preds = %812
  store i32 6, ptr %16, align 4, !tbaa !9
  br label %823

818:                                              ; preds = %812
  %819 = load i32, ptr %16, align 4, !tbaa !9
  %820 = icmp eq i32 %819, 0
  br i1 %820, label %821, label %822

821:                                              ; preds = %818
  store i32 1, ptr %16, align 4, !tbaa !9
  br label %822

822:                                              ; preds = %821, %818
  br label %823

823:                                              ; preds = %822, %817
  %824 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %825 = load double, ptr %32, align 8, !tbaa !20
  %826 = load i32, ptr %16, align 4, !tbaa !9
  %827 = sub nsw i32 %826, 1
  %828 = or i32 %827, -2147483648
  %829 = call noundef i32 @_ZL18stbsp__real_to_strPPKcPjPcPidj(ptr noundef %34, ptr noundef %28, ptr noundef %824, ptr noundef %33, double noundef %825, i32 noundef %828)
  %830 = icmp ne i32 %829, 0
  br i1 %830, label %831, label %834

831:                                              ; preds = %823
  %832 = load i32, ptr %18, align 4, !tbaa !9
  %833 = or i32 %832, 128
  store i32 %833, ptr %18, align 4, !tbaa !9
  br label %834

834:                                              ; preds = %831, %823
  %835 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %835, ptr %29, align 4, !tbaa !9
  %836 = load i32, ptr %28, align 4, !tbaa !9
  %837 = load i32, ptr %16, align 4, !tbaa !9
  %838 = icmp ugt i32 %836, %837
  br i1 %838, label %839, label %841

839:                                              ; preds = %834
  %840 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %840, ptr %28, align 4, !tbaa !9
  br label %841

841:                                              ; preds = %839, %834
  br label %842

842:                                              ; preds = %859, %841
  %843 = load i32, ptr %28, align 4, !tbaa !9
  %844 = icmp ugt i32 %843, 1
  br i1 %844, label %845, label %857

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

848:                                              ; preds = %845
  %849 = load ptr, ptr %34, align 8, !tbaa !5
  %850 = load i32, ptr %28, align 4, !tbaa !9
  %851 = sub i32 %850, 1
  %852 = zext i32 %851 to i64
  %853 = getelementptr inbounds i8, ptr %849, i64 %852
  %854 = load i8, ptr %853, align 1, !tbaa !11
  %855 = sext i8 %854 to i32
  %856 = icmp eq i32 %855, 48
  br label %857

857:                                              ; preds = %848, %845, %842
  %858 = phi i1 [ false, %845 ], [ false, %842 ], [ %856, %848 ]
  br i1 %858, label %859, label %864

859:                                              ; preds = %857
  %860 = load i32, ptr %16, align 4, !tbaa !9
  %861 = add nsw i32 %860, -1
  store i32 %861, ptr %16, align 4, !tbaa !9
  %862 = load i32, ptr %28, align 4, !tbaa !9
  %863 = add i32 %862, -1
  store i32 %863, ptr %28, align 4, !tbaa !9
  br label %842, !llvm.loop !26

864:                                              ; preds = %857
  %865 = load i32, ptr %33, align 4, !tbaa !9
  %866 = icmp sle i32 %865, -4
  br i1 %866, label %871, label %867

867:                                              ; preds = %864
  %868 = load i32, ptr %33, align 4, !tbaa !9
  %869 = load i32, ptr %29, align 4, !tbaa !9
  %870 = icmp sgt i32 %868, %869
  br i1 %870, label %871, label %886

871:                                              ; preds = %867, %864
  %872 = load i32, ptr %16, align 4, !tbaa !9
  %873 = load i32, ptr %28, align 4, !tbaa !9
  %874 = icmp sgt i32 %872, %873
  br i1 %874, label %875, label %878

875:                                              ; preds = %871
  %876 = load i32, ptr %28, align 4, !tbaa !9
  %877 = sub i32 %876, 1
  store i32 %877, ptr %16, align 4, !tbaa !9
  br label %885

878:                                              ; preds = %871
  %879 = load i32, ptr %16, align 4, !tbaa !9
  %880 = icmp ne i32 %879, 0
  br i1 %880, label %881, label %884

881:                                              ; preds = %878
  %882 = load i32, ptr %16, align 4, !tbaa !9
  %883 = add nsw i32 %882, -1
  store i32 %883, ptr %16, align 4, !tbaa !9
  br label %884

884:                                              ; preds = %881, %878
  br label %885

885:                                              ; preds = %884, %875
  br label %955

886:                                              ; preds = %867
  %887 = load i32, ptr %33, align 4, !tbaa !9
  %888 = icmp sgt i32 %887, 0
  br i1 %888, label %889, label %900

889:                                              ; preds = %886
  %890 = load i32, ptr %33, align 4, !tbaa !9
  %891 = load i32, ptr %28, align 4, !tbaa !9
  %892 = icmp slt i32 %890, %891
  br i1 %892, label %893, label %897

893:                                              ; preds = %889
  %894 = load i32, ptr %28, align 4, !tbaa !9
  %895 = load i32, ptr %33, align 4, !tbaa !9
  %896 = sub i32 %894, %895
  br label %898

897:                                              ; preds = %889
  br label %898

898:                                              ; preds = %897, %893
  %899 = phi i32 [ %896, %893 ], [ 0, %897 ]
  store i32 %899, ptr %16, align 4, !tbaa !9
  br label %913

900:                                              ; preds = %886
  %901 = load i32, ptr %33, align 4, !tbaa !9
  %902 = sub nsw i32 0, %901
  %903 = load i32, ptr %16, align 4, !tbaa !9
  %904 = load i32, ptr %28, align 4, !tbaa !9
  %905 = icmp sgt i32 %903, %904
  br i1 %905, label %906, label %908

906:                                              ; preds = %900
  %907 = load i32, ptr %28, align 4, !tbaa !9
  br label %910

908:                                              ; preds = %900
  %909 = load i32, ptr %16, align 4, !tbaa !9
  br label %910

910:                                              ; preds = %908, %906
  %911 = phi i32 [ %907, %906 ], [ %909, %908 ]
  %912 = add nsw i32 %902, %911
  store i32 %912, ptr %16, align 4, !tbaa !9
  br label %913

913:                                              ; preds = %910, %898
  br label %1106

914:                                              ; preds = %442, %442
  %915 = load ptr, ptr %13, align 8, !tbaa !5
  %916 = getelementptr inbounds i8, ptr %915, i64 0
  %917 = load i8, ptr %916, align 1, !tbaa !11
  %918 = sext i8 %917 to i32
  %919 = icmp eq i32 %918, 69
  br i1 %919, label %920, label %921

920:                                              ; preds = %914
  br label %922

921:                                              ; preds = %914
  br label %922

922:                                              ; preds = %921, %920
  %923 = phi ptr [ @_ZZ16stbsp_vsprintfcbE4hexu, %920 ], [ @_ZZ16stbsp_vsprintfcbE3hex, %921 ]
  %924 = getelementptr inbounds [19 x i8], ptr %923, i64 0, i64 0
  store ptr %924, ptr %27, align 8, !tbaa !5
  %925 = load ptr, ptr %11, align 8, !tbaa !5
  %926 = getelementptr inbounds %struct.__va_list_tag, ptr %925, i32 0, i32 1
  %927 = load i32, ptr %926, align 4
  %928 = icmp ule i32 %927, 160
  br i1 %928, label %929, label %934

929:                                              ; preds = %922
  %930 = getelementptr inbounds %struct.__va_list_tag, ptr %925, i32 0, i32 3
  %931 = load ptr, ptr %930, align 8
  %932 = getelementptr i8, ptr %931, i32 %927
  %933 = add i32 %927, 16
  store i32 %933, ptr %926, align 4
  br label %938

934:                                              ; preds = %922
  %935 = getelementptr inbounds %struct.__va_list_tag, ptr %925, i32 0, i32 2
  %936 = load ptr, ptr %935, align 8
  %937 = getelementptr i8, ptr %936, i32 8
  store ptr %937, ptr %935, align 8
  br label %938

938:                                              ; preds = %934, %929
  %939 = phi ptr [ %932, %929 ], [ %936, %934 ]
  %940 = load double, ptr %939, align 8, !tbaa !20
  store double %940, ptr %32, align 8, !tbaa !20
  %941 = load i32, ptr %16, align 4, !tbaa !9
  %942 = icmp eq i32 %941, -1
  br i1 %942, label %943, label %944

943:                                              ; preds = %938
  store i32 6, ptr %16, align 4, !tbaa !9
  br label %944

944:                                              ; preds = %943, %938
  %945 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %946 = load double, ptr %32, align 8, !tbaa !20
  %947 = load i32, ptr %16, align 4, !tbaa !9
  %948 = or i32 %947, -2147483648
  %949 = call noundef i32 @_ZL18stbsp__real_to_strPPKcPjPcPidj(ptr noundef %34, ptr noundef %28, ptr noundef %945, ptr noundef %33, double noundef %946, i32 noundef %948)
  %950 = icmp ne i32 %949, 0
  br i1 %950, label %951, label %954

951:                                              ; preds = %944
  %952 = load i32, ptr %18, align 4, !tbaa !9
  %953 = or i32 %952, 128
  store i32 %953, ptr %18, align 4, !tbaa !9
  br label %954

954:                                              ; preds = %951, %944
  br label %955

955:                                              ; preds = %954, %885
  %956 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 0
  store i8 0, ptr %956, align 1, !tbaa !11
  %957 = load i32, ptr %18, align 4, !tbaa !9
  %958 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  call void @_ZL16stbsp__lead_signjPc(i32 noundef %957, ptr noundef %958)
  %959 = load i32, ptr %33, align 4, !tbaa !9
  %960 = icmp eq i32 %959, 28672
  br i1 %960, label %961, label %963

961:                                              ; preds = %955
  %962 = load ptr, ptr %34, align 8, !tbaa !5
  store ptr %962, 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 %1881

963:                                              ; preds = %955
  %964 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %965 = getelementptr inbounds i8, ptr %964, i64 64
  store ptr %965, ptr %26, align 8, !tbaa !5
  %966 = load ptr, ptr %34, align 8, !tbaa !5
  %967 = getelementptr inbounds i8, ptr %966, i64 0
  %968 = load i8, ptr %967, align 1, !tbaa !11
  %969 = load ptr, ptr %26, align 8, !tbaa !5
  %970 = getelementptr inbounds i8, ptr %969, i32 1
  store ptr %970, ptr %26, align 8, !tbaa !5
  store i8 %968, ptr %969, align 1, !tbaa !11
  %971 = load i32, ptr %16, align 4, !tbaa !9
  %972 = icmp ne i32 %971, 0
  br i1 %972, label %973, label %977

973:                                              ; preds = %963
  %974 = load i8, ptr @_ZL13stbsp__period, align 1, !tbaa !11
  %975 = load ptr, ptr %26, align 8, !tbaa !5
  %976 = getelementptr inbounds i8, ptr %975, i32 1
  store ptr %976, ptr %26, align 8, !tbaa !5
  store i8 %974, ptr %975, align 1, !tbaa !11
  br label %977

977:                                              ; preds = %973, %963
  %978 = load i32, ptr %28, align 4, !tbaa !9
  %979 = sub i32 %978, 1
  %980 = load i32, ptr %16, align 4, !tbaa !9
  %981 = icmp ugt i32 %979, %980
  br i1 %981, label %982, label %985

982:                                              ; preds = %977
  %983 = load i32, ptr %16, align 4, !tbaa !9
  %984 = add nsw i32 %983, 1
  store i32 %984, ptr %28, align 4, !tbaa !9
  br label %985

985:                                              ; preds = %982, %977
  store i32 1, ptr %29, align 4, !tbaa !9
  br label %986

986:                                              ; preds = %998, %985
  %987 = load i32, ptr %29, align 4, !tbaa !9
  %988 = load i32, ptr %28, align 4, !tbaa !9
  %989 = icmp ult i32 %987, %988
  br i1 %989, label %990, label %1001

990:                                              ; preds = %986
  %991 = load ptr, ptr %34, align 8, !tbaa !5
  %992 = load i32, ptr %29, align 4, !tbaa !9
  %993 = zext i32 %992 to i64
  %994 = getelementptr inbounds i8, ptr %991, i64 %993
  %995 = load i8, ptr %994, align 1, !tbaa !11
  %996 = load ptr, ptr %26, align 8, !tbaa !5
  %997 = getelementptr inbounds i8, ptr %996, i32 1
  store ptr %997, ptr %26, align 8, !tbaa !5
  store i8 %995, ptr %996, align 1, !tbaa !11
  br label %998

998:                                              ; preds = %990
  %999 = load i32, ptr %29, align 4, !tbaa !9
  %1000 = add i32 %999, 1
  store i32 %1000, ptr %29, align 4, !tbaa !9
  br label %986, !llvm.loop !27

1001:                                             ; preds = %986
  %1002 = load i32, ptr %16, align 4, !tbaa !9
  %1003 = load i32, ptr %28, align 4, !tbaa !9
  %1004 = sub i32 %1003, 1
  %1005 = sub i32 %1002, %1004
  store i32 %1005, ptr %17, align 4, !tbaa !9
  store i32 0, ptr %16, align 4, !tbaa !9
  %1006 = load ptr, ptr %27, align 8, !tbaa !5
  %1007 = getelementptr inbounds i8, ptr %1006, i64 14
  %1008 = load i8, ptr %1007, align 1, !tbaa !11
  %1009 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 1
  store i8 %1008, ptr %1009, align 1, !tbaa !11
  %1010 = load i32, ptr %33, align 4, !tbaa !9
  %1011 = sub nsw i32 %1010, 1
  store i32 %1011, ptr %33, align 4, !tbaa !9
  %1012 = load i32, ptr %33, align 4, !tbaa !9
  %1013 = icmp slt i32 %1012, 0
  br i1 %1013, label %1014, label %1018

1014:                                             ; preds = %1001
  %1015 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 2
  store i8 45, ptr %1015, align 1, !tbaa !11
  %1016 = load i32, ptr %33, align 4, !tbaa !9
  %1017 = sub nsw i32 0, %1016
  store i32 %1017, ptr %33, align 4, !tbaa !9
  br label %1020

1018:                                             ; preds = %1001
  %1019 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 2
  store i8 43, ptr %1019, align 1, !tbaa !11
  br label %1020

1020:                                             ; preds = %1018, %1014
  %1021 = load i32, ptr %33, align 4, !tbaa !9
  %1022 = icmp sge i32 %1021, 100
  %1023 = zext i1 %1022 to i64
  %1024 = select i1 %1022, i32 5, i32 4
  store i32 %1024, ptr %29, align 4, !tbaa !9
  %1025 = load i32, ptr %29, align 4, !tbaa !9
  %1026 = trunc i32 %1025 to i8
  %1027 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 0
  store i8 %1026, ptr %1027, align 1, !tbaa !11
  br label %1028

1028:                                             ; preds = %1039, %1020
  %1029 = load i32, ptr %33, align 4, !tbaa !9
  %1030 = srem i32 %1029, 10
  %1031 = add nsw i32 48, %1030
  %1032 = trunc i32 %1031 to i8
  %1033 = load i32, ptr %29, align 4, !tbaa !9
  %1034 = zext i32 %1033 to i64
  %1035 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 %1034
  store i8 %1032, ptr %1035, align 1, !tbaa !11
  %1036 = load i32, ptr %29, align 4, !tbaa !9
  %1037 = icmp ule i32 %1036, 3
  br i1 %1037, label %1038, label %1039

1038:                                             ; preds = %1028
  br label %1044

1039:                                             ; preds = %1028
  %1040 = load i32, ptr %29, align 4, !tbaa !9
  %1041 = add i32 %1040, -1
  store i32 %1041, ptr %29, align 4, !tbaa !9
  %1042 = load i32, ptr %33, align 4, !tbaa !9
  %1043 = sdiv i32 %1042, 10
  store i32 %1043, ptr %33, align 4, !tbaa !9
  br label %1028, !llvm.loop !28

1044:                                             ; preds = %1038
  store i32 50331649, ptr %30, align 4, !tbaa !9
  br label %1461

1045:                                             ; preds = %442
  %1046 = load ptr, ptr %11, align 8, !tbaa !5
  %1047 = getelementptr inbounds %struct.__va_list_tag, ptr %1046, i32 0, i32 1
  %1048 = load i32, ptr %1047, align 4
  %1049 = icmp ule i32 %1048, 160
  br i1 %1049, label %1050, label %1055

1050:                                             ; preds = %1045
  %1051 = getelementptr inbounds %struct.__va_list_tag, ptr %1046, i32 0, i32 3
  %1052 = load ptr, ptr %1051, align 8
  %1053 = getelementptr i8, ptr %1052, i32 %1048
  %1054 = add i32 %1048, 16
  store i32 %1054, ptr %1047, align 4
  br label %1059

1055:                                             ; preds = %1045
  %1056 = getelementptr inbounds %struct.__va_list_tag, ptr %1046, i32 0, i32 2
  %1057 = load ptr, ptr %1056, align 8
  %1058 = getelementptr i8, ptr %1057, i32 8
  store ptr %1058, ptr %1056, align 8
  br label %1059

1059:                                             ; preds = %1055, %1050
  %1060 = phi ptr [ %1053, %1050 ], [ %1057, %1055 ]
  %1061 = load double, ptr %1060, align 8, !tbaa !20
  store double %1061, ptr %32, align 8, !tbaa !20
  br label %1062

1062:                                             ; preds = %1742, %1059
  %1063 = load i32, ptr %18, align 4, !tbaa !9
  %1064 = and i32 %1063, 256
  %1065 = icmp ne i32 %1064, 0
  br i1 %1065, label %1066, label %1092

1066:                                             ; preds = %1062
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #3
  store double 1.000000e+03, ptr %37, align 8, !tbaa !20
  %1067 = load i32, ptr %18, align 4, !tbaa !9
  %1068 = and i32 %1067, 2048
  %1069 = icmp ne i32 %1068, 0
  br i1 %1069, label %1070, label %1071

1070:                                             ; preds = %1066
  store double 1.024000e+03, ptr %37, align 8, !tbaa !20
  br label %1071

1071:                                             ; preds = %1070, %1066
  br label %1072

1072:                                             ; preds = %1085, %1071
  %1073 = load i32, ptr %18, align 4, !tbaa !9
  %1074 = icmp ult i32 %1073, 67108864
  br i1 %1074, label %1075, label %1091

1075:                                             ; preds = %1072
  %1076 = load double, ptr %32, align 8, !tbaa !20
  %1077 = load double, ptr %37, align 8, !tbaa !20
  %1078 = fcmp olt double %1076, %1077
  br i1 %1078, label %1079, label %1085

1079:                                             ; preds = %1075
  %1080 = load double, ptr %32, align 8, !tbaa !20
  %1081 = load double, ptr %37, align 8, !tbaa !20
  %1082 = fneg double %1081
  %1083 = fcmp ogt double %1080, %1082
  br i1 %1083, label %1084, label %1085

1084:                                             ; preds = %1079
  br label %1091

1085:                                             ; preds = %1079, %1075
  %1086 = load double, ptr %37, align 8, !tbaa !20
  %1087 = load double, ptr %32, align 8, !tbaa !20
  %1088 = fdiv double %1087, %1086
  store double %1088, ptr %32, align 8, !tbaa !20
  %1089 = load i32, ptr %18, align 4, !tbaa !9
  %1090 = add i32 %1089, 16777216
  store i32 %1090, ptr %18, align 4, !tbaa !9
  br label %1072, !llvm.loop !29

1091:                                             ; preds = %1084, %1072
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #3
  br label %1092

1092:                                             ; preds = %1091, %1062
  %1093 = load i32, ptr %16, align 4, !tbaa !9
  %1094 = icmp eq i32 %1093, -1
  br i1 %1094, label %1095, label %1096

1095:                                             ; preds = %1092
  store i32 6, ptr %16, align 4, !tbaa !9
  br label %1096

1096:                                             ; preds = %1095, %1092
  %1097 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %1098 = load double, ptr %32, align 8, !tbaa !20
  %1099 = load i32, ptr %16, align 4, !tbaa !9
  %1100 = call noundef i32 @_ZL18stbsp__real_to_strPPKcPjPcPidj(ptr noundef %34, ptr noundef %28, ptr noundef %1097, ptr noundef %33, double noundef %1098, i32 noundef %1099)
  %1101 = icmp ne i32 %1100, 0
  br i1 %1101, label %1102, label %1105

1102:                                             ; preds = %1096
  %1103 = load i32, ptr %18, align 4, !tbaa !9
  %1104 = or i32 %1103, 128
  store i32 %1104, ptr %18, align 4, !tbaa !9
  br label %1105

1105:                                             ; preds = %1102, %1096
  br label %1106

1106:                                             ; preds = %1105, %913
  %1107 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 0
  store i8 0, ptr %1107, align 1, !tbaa !11
  %1108 = load i32, ptr %18, align 4, !tbaa !9
  %1109 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  call void @_ZL16stbsp__lead_signjPc(i32 noundef %1108, ptr noundef %1109)
  %1110 = load i32, ptr %33, align 4, !tbaa !9
  %1111 = icmp eq i32 %1110, 28672
  br i1 %1111, label %1112, label %1114

1112:                                             ; preds = %1106
  %1113 = load ptr, ptr %34, align 8, !tbaa !5
  store ptr %1113, 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 %1881

1114:                                             ; preds = %1106
  %1115 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %1116 = getelementptr inbounds i8, ptr %1115, i64 64
  store ptr %1116, ptr %26, align 8, !tbaa !5
  %1117 = load i32, ptr %33, align 4, !tbaa !9
  %1118 = icmp sle i32 %1117, 0
  br i1 %1118, label %1119, label %1200

1119:                                             ; preds = %1114
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #3
  %1120 = load ptr, ptr %26, align 8, !tbaa !5
  %1121 = getelementptr inbounds i8, ptr %1120, i32 1
  store ptr %1121, ptr %26, align 8, !tbaa !5
  store i8 48, ptr %1120, align 1, !tbaa !11
  %1122 = load i32, ptr %16, align 4, !tbaa !9
  %1123 = icmp ne i32 %1122, 0
  br i1 %1123, label %1124, label %1128

1124:                                             ; preds = %1119
  %1125 = load i8, ptr @_ZL13stbsp__period, align 1, !tbaa !11
  %1126 = load ptr, ptr %26, align 8, !tbaa !5
  %1127 = getelementptr inbounds i8, ptr %1126, i32 1
  store ptr %1127, ptr %26, align 8, !tbaa !5
  store i8 %1125, ptr %1126, align 1, !tbaa !11
  br label %1128

1128:                                             ; preds = %1124, %1119
  %1129 = load i32, ptr %33, align 4, !tbaa !9
  %1130 = sub nsw i32 0, %1129
  store i32 %1130, ptr %29, align 4, !tbaa !9
  %1131 = load i32, ptr %29, align 4, !tbaa !9
  %1132 = load i32, ptr %16, align 4, !tbaa !9
  %1133 = icmp sgt i32 %1131, %1132
  br i1 %1133, label %1134, label %1136

1134:                                             ; preds = %1128
  %1135 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %1135, ptr %29, align 4, !tbaa !9
  br label %1136

1136:                                             ; preds = %1134, %1128
  %1137 = load i32, ptr %29, align 4, !tbaa !9
  store i32 %1137, ptr %38, align 4, !tbaa !9
  br label %1138

1138:                                             ; preds = %1147, %1136
  %1139 = load i32, ptr %38, align 4, !tbaa !9
  %1140 = icmp ne i32 %1139, 0
  br i1 %1140, label %1141, label %1152

1141:                                             ; preds = %1138
  %1142 = load ptr, ptr %26, align 8, !tbaa !5
  %1143 = ptrtoint ptr %1142 to i64
  %1144 = and i64 %1143, 3
  %1145 = icmp eq i64 %1144, 0
  br i1 %1145, label %1146, label %1147

1146:                                             ; preds = %1141
  br label %1152

1147:                                             ; preds = %1141
  %1148 = load ptr, ptr %26, align 8, !tbaa !5
  %1149 = getelementptr inbounds i8, ptr %1148, i32 1
  store ptr %1149, ptr %26, align 8, !tbaa !5
  store i8 48, ptr %1148, align 1, !tbaa !11
  %1150 = load i32, ptr %38, align 4, !tbaa !9
  %1151 = add nsw i32 %1150, -1
  store i32 %1151, ptr %38, align 4, !tbaa !9
  br label %1138, !llvm.loop !30

1152:                                             ; preds = %1146, %1138
  br label %1153

1153:                                             ; preds = %1156, %1152
  %1154 = load i32, ptr %38, align 4, !tbaa !9
  %1155 = icmp sge i32 %1154, 4
  br i1 %1155, label %1156, label %1162

1156:                                             ; preds = %1153
  %1157 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 808464432, ptr %1157, align 4, !tbaa !9
  %1158 = load ptr, ptr %26, align 8, !tbaa !5
  %1159 = getelementptr inbounds i8, ptr %1158, i64 4
  store ptr %1159, ptr %26, align 8, !tbaa !5
  %1160 = load i32, ptr %38, align 4, !tbaa !9
  %1161 = sub nsw i32 %1160, 4
  store i32 %1161, ptr %38, align 4, !tbaa !9
  br label %1153, !llvm.loop !31

1162:                                             ; preds = %1153
  br label %1163

1163:                                             ; preds = %1166, %1162
  %1164 = load i32, ptr %38, align 4, !tbaa !9
  %1165 = icmp ne i32 %1164, 0
  br i1 %1165, label %1166, label %1171

1166:                                             ; preds = %1163
  %1167 = load ptr, ptr %26, align 8, !tbaa !5
  %1168 = getelementptr inbounds i8, ptr %1167, i32 1
  store ptr %1168, ptr %26, align 8, !tbaa !5
  store i8 48, ptr %1167, align 1, !tbaa !11
  %1169 = load i32, ptr %38, align 4, !tbaa !9
  %1170 = add nsw i32 %1169, -1
  store i32 %1170, ptr %38, align 4, !tbaa !9
  br label %1163, !llvm.loop !32

1171:                                             ; preds = %1163
  %1172 = load i32, ptr %28, align 4, !tbaa !9
  %1173 = load i32, ptr %29, align 4, !tbaa !9
  %1174 = add i32 %1172, %1173
  %1175 = load i32, ptr %16, align 4, !tbaa !9
  %1176 = icmp sgt i32 %1174, %1175
  br i1 %1176, label %1177, label %1181

1177:                                             ; preds = %1171
  %1178 = load i32, ptr %16, align 4, !tbaa !9
  %1179 = load i32, ptr %29, align 4, !tbaa !9
  %1180 = sub i32 %1178, %1179
  store i32 %1180, ptr %28, align 4, !tbaa !9
  br label %1181

1181:                                             ; preds = %1177, %1171
  %1182 = load i32, ptr %28, align 4, !tbaa !9
  store i32 %1182, ptr %38, align 4, !tbaa !9
  br label %1183

1183:                                             ; preds = %1186, %1181
  %1184 = load i32, ptr %38, align 4, !tbaa !9
  %1185 = icmp ne i32 %1184, 0
  br i1 %1185, label %1186, label %1194

1186:                                             ; preds = %1183
  %1187 = load ptr, ptr %34, align 8, !tbaa !5
  %1188 = getelementptr inbounds i8, ptr %1187, i32 1
  store ptr %1188, ptr %34, align 8, !tbaa !5
  %1189 = load i8, ptr %1187, align 1, !tbaa !11
  %1190 = load ptr, ptr %26, align 8, !tbaa !5
  %1191 = getelementptr inbounds i8, ptr %1190, i32 1
  store ptr %1191, ptr %26, align 8, !tbaa !5
  store i8 %1189, ptr %1190, align 1, !tbaa !11
  %1192 = load i32, ptr %38, align 4, !tbaa !9
  %1193 = add nsw i32 %1192, -1
  store i32 %1193, ptr %38, align 4, !tbaa !9
  br label %1183, !llvm.loop !33

1194:                                             ; preds = %1183
  %1195 = load i32, ptr %16, align 4, !tbaa !9
  %1196 = load i32, ptr %29, align 4, !tbaa !9
  %1197 = load i32, ptr %28, align 4, !tbaa !9
  %1198 = add i32 %1196, %1197
  %1199 = sub i32 %1195, %1198
  store i32 %1199, 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 %1396

1200:                                             ; preds = %1114
  %1201 = load i32, ptr %18, align 4, !tbaa !9
  %1202 = and i32 %1201, 64
  %1203 = icmp ne i32 %1202, 0
  br i1 %1203, label %1204, label %1208

1204:                                             ; preds = %1200
  %1205 = load i32, ptr %33, align 4, !tbaa !9
  %1206 = sub i32 600, %1205
  %1207 = urem i32 %1206, 3
  br label %1209

1208:                                             ; preds = %1200
  br label %1209

1209:                                             ; preds = %1208, %1204
  %1210 = phi i32 [ %1207, %1204 ], [ 0, %1208 ]
  store i32 %1210, ptr %30, align 4, !tbaa !9
  %1211 = load i32, ptr %33, align 4, !tbaa !9
  %1212 = load i32, ptr %28, align 4, !tbaa !9
  %1213 = icmp uge i32 %1211, %1212
  br i1 %1213, label %1214, label %1320

1214:                                             ; preds = %1209
  store i32 0, ptr %29, align 4, !tbaa !9
  br label %1215

1215:                                             ; preds = %1242, %1214
  %1216 = load i32, ptr %18, align 4, !tbaa !9
  %1217 = and i32 %1216, 64
  %1218 = icmp ne i32 %1217, 0
  br i1 %1218, label %1219, label %1227

1219:                                             ; preds = %1215
  %1220 = load i32, ptr %30, align 4, !tbaa !9
  %1221 = add i32 %1220, 1
  store i32 %1221, ptr %30, align 4, !tbaa !9
  %1222 = icmp eq i32 %1221, 4
  br i1 %1222, label %1223, label %1227

1223:                                             ; preds = %1219
  store i32 0, ptr %30, align 4, !tbaa !9
  %1224 = load i8, ptr @_ZL12stbsp__comma, align 1, !tbaa !11
  %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 %1224, ptr %1225, align 1, !tbaa !11
  br label %1242

1227:                                             ; preds = %1219, %1215
  %1228 = load ptr, ptr %34, align 8, !tbaa !5
  %1229 = load i32, ptr %29, align 4, !tbaa !9
  %1230 = zext i32 %1229 to i64
  %1231 = getelementptr inbounds i8, ptr %1228, i64 %1230
  %1232 = load i8, ptr %1231, align 1, !tbaa !11
  %1233 = load ptr, ptr %26, align 8, !tbaa !5
  %1234 = getelementptr inbounds i8, ptr %1233, i32 1
  store ptr %1234, ptr %26, align 8, !tbaa !5
  store i8 %1232, ptr %1233, align 1, !tbaa !11
  %1235 = load i32, ptr %29, align 4, !tbaa !9
  %1236 = add i32 %1235, 1
  store i32 %1236, ptr %29, align 4, !tbaa !9
  %1237 = load i32, ptr %29, align 4, !tbaa !9
  %1238 = load i32, ptr %28, align 4, !tbaa !9
  %1239 = icmp uge i32 %1237, %1238
  br i1 %1239, label %1240, label %1241

1240:                                             ; preds = %1227
  br label %1243

1241:                                             ; preds = %1227
  br label %1242

1242:                                             ; preds = %1241, %1223
  br label %1215, !llvm.loop !34

1243:                                             ; preds = %1240
  %1244 = load i32, ptr %29, align 4, !tbaa !9
  %1245 = load i32, ptr %33, align 4, !tbaa !9
  %1246 = icmp ult i32 %1244, %1245
  br i1 %1246, label %1247, label %1303

1247:                                             ; preds = %1243
  %1248 = load i32, ptr %33, align 4, !tbaa !9
  %1249 = load i32, ptr %29, align 4, !tbaa !9
  %1250 = sub i32 %1248, %1249
  store i32 %1250, ptr %29, align 4, !tbaa !9
  %1251 = load i32, ptr %18, align 4, !tbaa !9
  %1252 = and i32 %1251, 64
  %1253 = icmp eq i32 %1252, 0
  br i1 %1253, label %1254, label %1280

1254:                                             ; preds = %1247
  br label %1255

1255:                                             ; preds = %1264, %1254
  %1256 = load i32, ptr %29, align 4, !tbaa !9
  %1257 = icmp ne i32 %1256, 0
  br i1 %1257, label %1258, label %1269

1258:                                             ; preds = %1255
  %1259 = load ptr, ptr %26, align 8, !tbaa !5
  %1260 = ptrtoint ptr %1259 to i64
  %1261 = and i64 %1260, 3
  %1262 = icmp eq i64 %1261, 0
  br i1 %1262, label %1263, label %1264

1263:                                             ; preds = %1258
  br label %1269

1264:                                             ; preds = %1258
  %1265 = load ptr, ptr %26, align 8, !tbaa !5
  %1266 = getelementptr inbounds i8, ptr %1265, i32 1
  store ptr %1266, ptr %26, align 8, !tbaa !5
  store i8 48, ptr %1265, align 1, !tbaa !11
  %1267 = load i32, ptr %29, align 4, !tbaa !9
  %1268 = add i32 %1267, -1
  store i32 %1268, ptr %29, align 4, !tbaa !9
  br label %1255, !llvm.loop !35

1269:                                             ; preds = %1263, %1255
  br label %1270

1270:                                             ; preds = %1273, %1269
  %1271 = load i32, ptr %29, align 4, !tbaa !9
  %1272 = icmp uge i32 %1271, 4
  br i1 %1272, label %1273, label %1279

1273:                                             ; preds = %1270
  %1274 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 808464432, ptr %1274, align 4, !tbaa !9
  %1275 = load ptr, ptr %26, align 8, !tbaa !5
  %1276 = getelementptr inbounds i8, ptr %1275, i64 4
  store ptr %1276, ptr %26, align 8, !tbaa !5
  %1277 = load i32, ptr %29, align 4, !tbaa !9
  %1278 = sub i32 %1277, 4
  store i32 %1278, ptr %29, align 4, !tbaa !9
  br label %1270, !llvm.loop !36

1279:                                             ; preds = %1270
  br label %1280

1280:                                             ; preds = %1279, %1247
  br label %1281

1281:                                             ; preds = %1301, %1280
  %1282 = load i32, ptr %29, align 4, !tbaa !9
  %1283 = icmp ne i32 %1282, 0
  br i1 %1283, label %1284, label %1302

1284:                                             ; preds = %1281
  %1285 = load i32, ptr %18, align 4, !tbaa !9
  %1286 = and i32 %1285, 64
  %1287 = icmp ne i32 %1286, 0
  br i1 %1287, label %1288, label %1296

1288:                                             ; preds = %1284
  %1289 = load i32, ptr %30, align 4, !tbaa !9
  %1290 = add i32 %1289, 1
  store i32 %1290, ptr %30, align 4, !tbaa !9
  %1291 = icmp eq i32 %1290, 4
  br i1 %1291, label %1292, label %1296

1292:                                             ; preds = %1288
  store i32 0, ptr %30, align 4, !tbaa !9
  %1293 = load i8, ptr @_ZL12stbsp__comma, align 1, !tbaa !11
  %1294 = load ptr, ptr %26, align 8, !tbaa !5
  %1295 = getelementptr inbounds i8, ptr %1294, i32 1
  store ptr %1295, ptr %26, align 8, !tbaa !5
  store i8 %1293, ptr %1294, align 1, !tbaa !11
  br label %1301

1296:                                             ; preds = %1288, %1284
  %1297 = load ptr, ptr %26, align 8, !tbaa !5
  %1298 = getelementptr inbounds i8, ptr %1297, i32 1
  store ptr %1298, ptr %26, align 8, !tbaa !5
  store i8 48, ptr %1297, align 1, !tbaa !11
  %1299 = load i32, ptr %29, align 4, !tbaa !9
  %1300 = add i32 %1299, -1
  store i32 %1300, ptr %29, align 4, !tbaa !9
  br label %1301

1301:                                             ; preds = %1296, %1292
  br label %1281, !llvm.loop !37

1302:                                             ; preds = %1281
  br label %1303

1303:                                             ; preds = %1302, %1243
  %1304 = load ptr, ptr %26, align 8, !tbaa !5
  %1305 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %1306 = getelementptr inbounds i8, ptr %1305, i64 64
  %1307 = ptrtoint ptr %1304 to i64
  %1308 = ptrtoint ptr %1306 to i64
  %1309 = sub i64 %1307, %1308
  %1310 = trunc i64 %1309 to i32
  %1311 = add nsw i32 %1310, 50331648
  store i32 %1311, ptr %30, align 4, !tbaa !9
  %1312 = load i32, ptr %16, align 4, !tbaa !9
  %1313 = icmp ne i32 %1312, 0
  br i1 %1313, label %1314, label %1319

1314:                                             ; preds = %1303
  %1315 = load i8, ptr @_ZL13stbsp__period, align 1, !tbaa !11
  %1316 = load ptr, ptr %26, align 8, !tbaa !5
  %1317 = getelementptr inbounds i8, ptr %1316, i32 1
  store ptr %1317, ptr %26, align 8, !tbaa !5
  store i8 %1315, ptr %1316, align 1, !tbaa !11
  %1318 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %1318, ptr %17, align 4, !tbaa !9
  br label %1319

1319:                                             ; preds = %1314, %1303
  br label %1395

1320:                                             ; preds = %1209
  store i32 0, ptr %29, align 4, !tbaa !9
  br label %1321

1321:                                             ; preds = %1348, %1320
  %1322 = load i32, ptr %18, align 4, !tbaa !9
  %1323 = and i32 %1322, 64
  %1324 = icmp ne i32 %1323, 0
  br i1 %1324, label %1325, label %1333

1325:                                             ; preds = %1321
  %1326 = load i32, ptr %30, align 4, !tbaa !9
  %1327 = add i32 %1326, 1
  store i32 %1327, ptr %30, align 4, !tbaa !9
  %1328 = icmp eq i32 %1327, 4
  br i1 %1328, label %1329, label %1333

1329:                                             ; preds = %1325
  store i32 0, ptr %30, align 4, !tbaa !9
  %1330 = load i8, ptr @_ZL12stbsp__comma, align 1, !tbaa !11
  %1331 = load ptr, ptr %26, align 8, !tbaa !5
  %1332 = getelementptr inbounds i8, ptr %1331, i32 1
  store ptr %1332, ptr %26, align 8, !tbaa !5
  store i8 %1330, ptr %1331, align 1, !tbaa !11
  br label %1348

1333:                                             ; preds = %1325, %1321
  %1334 = load ptr, ptr %34, align 8, !tbaa !5
  %1335 = load i32, ptr %29, align 4, !tbaa !9
  %1336 = zext i32 %1335 to i64
  %1337 = getelementptr inbounds i8, ptr %1334, i64 %1336
  %1338 = load i8, ptr %1337, align 1, !tbaa !11
  %1339 = load ptr, ptr %26, align 8, !tbaa !5
  %1340 = getelementptr inbounds i8, ptr %1339, i32 1
  store ptr %1340, ptr %26, align 8, !tbaa !5
  store i8 %1338, ptr %1339, align 1, !tbaa !11
  %1341 = load i32, ptr %29, align 4, !tbaa !9
  %1342 = add i32 %1341, 1
  store i32 %1342, ptr %29, align 4, !tbaa !9
  %1343 = load i32, ptr %29, align 4, !tbaa !9
  %1344 = load i32, ptr %33, align 4, !tbaa !9
  %1345 = icmp uge i32 %1343, %1344
  br i1 %1345, label %1346, label %1347

1346:                                             ; preds = %1333
  br label %1349

1347:                                             ; preds = %1333
  br label %1348

1348:                                             ; preds = %1347, %1329
  br label %1321, !llvm.loop !38

1349:                                             ; preds = %1346
  %1350 = load ptr, ptr %26, align 8, !tbaa !5
  %1351 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %1352 = getelementptr inbounds i8, ptr %1351, i64 64
  %1353 = ptrtoint ptr %1350 to i64
  %1354 = ptrtoint ptr %1352 to i64
  %1355 = sub i64 %1353, %1354
  %1356 = trunc i64 %1355 to i32
  %1357 = add nsw i32 %1356, 50331648
  store i32 %1357, ptr %30, align 4, !tbaa !9
  %1358 = load i32, ptr %16, align 4, !tbaa !9
  %1359 = icmp ne i32 %1358, 0
  br i1 %1359, label %1360, label %1364

1360:                                             ; preds = %1349
  %1361 = load i8, ptr @_ZL13stbsp__period, align 1, !tbaa !11
  %1362 = load ptr, ptr %26, align 8, !tbaa !5
  %1363 = getelementptr inbounds i8, ptr %1362, i32 1
  store ptr %1363, ptr %26, align 8, !tbaa !5
  store i8 %1361, ptr %1362, align 1, !tbaa !11
  br label %1364

1364:                                             ; preds = %1360, %1349
  %1365 = load i32, ptr %28, align 4, !tbaa !9
  %1366 = load i32, ptr %33, align 4, !tbaa !9
  %1367 = sub i32 %1365, %1366
  %1368 = load i32, ptr %16, align 4, !tbaa !9
  %1369 = icmp ugt i32 %1367, %1368
  br i1 %1369, label %1370, label %1374

1370:                                             ; preds = %1364
  %1371 = load i32, ptr %16, align 4, !tbaa !9
  %1372 = load i32, ptr %33, align 4, !tbaa !9
  %1373 = add nsw i32 %1371, %1372
  store i32 %1373, ptr %28, align 4, !tbaa !9
  br label %1374

1374:                                             ; preds = %1370, %1364
  br label %1375

1375:                                             ; preds = %1379, %1374
  %1376 = load i32, ptr %29, align 4, !tbaa !9
  %1377 = load i32, ptr %28, align 4, !tbaa !9
  %1378 = icmp ult i32 %1376, %1377
  br i1 %1378, label %1379, label %1389

1379:                                             ; preds = %1375
  %1380 = load ptr, ptr %34, align 8, !tbaa !5
  %1381 = load i32, ptr %29, align 4, !tbaa !9
  %1382 = zext i32 %1381 to i64
  %1383 = getelementptr inbounds i8, ptr %1380, i64 %1382
  %1384 = load i8, ptr %1383, align 1, !tbaa !11
  %1385 = load ptr, ptr %26, align 8, !tbaa !5
  %1386 = getelementptr inbounds i8, ptr %1385, i32 1
  store ptr %1386, ptr %26, align 8, !tbaa !5
  store i8 %1384, ptr %1385, align 1, !tbaa !11
  %1387 = load i32, ptr %29, align 4, !tbaa !9
  %1388 = add i32 %1387, 1
  store i32 %1388, ptr %29, align 4, !tbaa !9
  br label %1375, !llvm.loop !39

1389:                                             ; preds = %1375
  %1390 = load i32, ptr %16, align 4, !tbaa !9
  %1391 = load i32, ptr %28, align 4, !tbaa !9
  %1392 = load i32, ptr %33, align 4, !tbaa !9
  %1393 = sub i32 %1391, %1392
  %1394 = sub i32 %1390, %1393
  store i32 %1394, ptr %17, align 4, !tbaa !9
  br label %1395

1395:                                             ; preds = %1389, %1319
  br label %1396

1396:                                             ; preds = %1395, %1194
  store i32 0, ptr %16, align 4, !tbaa !9
  %1397 = load i32, ptr %18, align 4, !tbaa !9
  %1398 = and i32 %1397, 256
  %1399 = icmp ne i32 %1398, 0
  br i1 %1399, label %1400, label %1460

1400:                                             ; preds = %1396
  call void @llvm.lifetime.start.p0(i64 1, ptr %39) #3
  store i8 1, ptr %39, align 1, !tbaa !11
  %1401 = load i32, ptr %18, align 4, !tbaa !9
  %1402 = and i32 %1401, 1024
  %1403 = icmp ne i32 %1402, 0
  br i1 %1403, label %1404, label %1405

1404:                                             ; preds = %1400
  store i8 0, ptr %39, align 1, !tbaa !11
  br label %1405

1405:                                             ; preds = %1404, %1400
  %1406 = load i8, ptr %39, align 1, !tbaa !11
  %1407 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 0
  store i8 %1406, ptr %1407, align 1, !tbaa !11
  %1408 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 1
  store i8 32, ptr %1408, align 1, !tbaa !11
  %1409 = load i32, ptr %18, align 4, !tbaa !9
  %1410 = lshr i32 %1409, 24
  %1411 = icmp ne i32 %1410, 0
  br i1 %1411, label %1412, label %1459

1412:                                             ; preds = %1405
  %1413 = load i32, ptr %18, align 4, !tbaa !9
  %1414 = and i32 %1413, 2048
  %1415 = icmp ne i32 %1414, 0
  br i1 %1415, label %1416, label %1427

1416:                                             ; preds = %1412
  %1417 = load i32, ptr %18, align 4, !tbaa !9
  %1418 = lshr i32 %1417, 24
  %1419 = zext i32 %1418 to i64
  %1420 = getelementptr inbounds [6 x i8], ptr @.str.3, i64 0, i64 %1419
  %1421 = load i8, ptr %1420, align 1, !tbaa !11
  %1422 = load i8, ptr %39, align 1, !tbaa !11
  %1423 = sext i8 %1422 to i32
  %1424 = add nsw i32 %1423, 1
  %1425 = sext i32 %1424 to i64
  %1426 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 %1425
  store i8 %1421, ptr %1426, align 1, !tbaa !11
  br label %1438

1427:                                             ; preds = %1412
  %1428 = load i32, ptr %18, align 4, !tbaa !9
  %1429 = lshr i32 %1428, 24
  %1430 = zext i32 %1429 to i64
  %1431 = getelementptr inbounds [6 x i8], ptr @.str.4, i64 0, i64 %1430
  %1432 = load i8, ptr %1431, align 1, !tbaa !11
  %1433 = load i8, ptr %39, align 1, !tbaa !11
  %1434 = sext i8 %1433 to i32
  %1435 = add nsw i32 %1434, 1
  %1436 = sext i32 %1435 to i64
  %1437 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 %1436
  store i8 %1432, ptr %1437, align 1, !tbaa !11
  br label %1438

1438:                                             ; preds = %1427, %1416
  %1439 = load i8, ptr %39, align 1, !tbaa !11
  %1440 = add i8 %1439, 1
  store i8 %1440, ptr %39, align 1, !tbaa !11
  %1441 = load i32, ptr %18, align 4, !tbaa !9
  %1442 = and i32 %1441, 2048
  %1443 = icmp ne i32 %1442, 0
  br i1 %1443, label %1444, label %1456

1444:                                             ; preds = %1438
  %1445 = load i32, ptr %18, align 4, !tbaa !9
  %1446 = and i32 %1445, 4096
  %1447 = icmp ne i32 %1446, 0
  br i1 %1447, label %1456, label %1448

1448:                                             ; preds = %1444
  %1449 = load i8, ptr %39, align 1, !tbaa !11
  %1450 = sext i8 %1449 to i32
  %1451 = add nsw i32 %1450, 1
  %1452 = sext i32 %1451 to i64
  %1453 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 %1452
  store i8 105, ptr %1453, align 1, !tbaa !11
  %1454 = load i8, ptr %39, align 1, !tbaa !11
  %1455 = add i8 %1454, 1
  store i8 %1455, ptr %39, align 1, !tbaa !11
  br label %1456

1456:                                             ; preds = %1448, %1444, %1438
  %1457 = load i8, ptr %39, align 1, !tbaa !11
  %1458 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 0
  store i8 %1457, ptr %1458, align 1, !tbaa !11
  br label %1459

1459:                                             ; preds = %1456, %1405
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #3
  br label %1460

1460:                                             ; preds = %1459, %1396
  br label %1461

1461:                                             ; preds = %1460, %1044
  %1462 = load ptr, ptr %26, align 8, !tbaa !5
  %1463 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %1464 = getelementptr inbounds i8, ptr %1463, i64 64
  %1465 = ptrtoint ptr %1462 to i64
  %1466 = ptrtoint ptr %1464 to i64
  %1467 = sub i64 %1465, %1466
  %1468 = trunc i64 %1467 to i32
  store i32 %1468, ptr %28, align 4, !tbaa !9
  %1469 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %1470 = getelementptr inbounds i8, ptr %1469, i64 64
  store ptr %1470, ptr %26, align 8, !tbaa !5
  br label %1881

1471:                                             ; preds = %442, %442
  %1472 = load ptr, ptr %13, align 8, !tbaa !5
  %1473 = getelementptr inbounds i8, ptr %1472, i64 0
  %1474 = load i8, ptr %1473, align 1, !tbaa !11
  %1475 = sext i8 %1474 to i32
  %1476 = icmp eq i32 %1475, 66
  br i1 %1476, label %1477, label %1478

1477:                                             ; preds = %1471
  br label %1479

1478:                                             ; preds = %1471
  br label %1479

1479:                                             ; preds = %1478, %1477
  %1480 = phi ptr [ @_ZZ16stbsp_vsprintfcbE4hexu, %1477 ], [ @_ZZ16stbsp_vsprintfcbE3hex, %1478 ]
  %1481 = getelementptr inbounds [19 x i8], ptr %1480, i64 0, i64 0
  store ptr %1481, ptr %27, align 8, !tbaa !5
  %1482 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  store i8 0, ptr %1482, align 1, !tbaa !11
  %1483 = load i32, ptr %18, align 4, !tbaa !9
  %1484 = and i32 %1483, 8
  %1485 = icmp ne i32 %1484, 0
  br i1 %1485, label %1486, label %1493

1486:                                             ; preds = %1479
  %1487 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  store i8 2, ptr %1487, align 1, !tbaa !11
  %1488 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 1
  store i8 48, ptr %1488, align 1, !tbaa !11
  %1489 = load ptr, ptr %27, align 8, !tbaa !5
  %1490 = getelementptr inbounds i8, ptr %1489, i64 11
  %1491 = load i8, ptr %1490, align 1, !tbaa !11
  %1492 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 2
  store i8 %1491, ptr %1492, align 1, !tbaa !11
  br label %1493

1493:                                             ; preds = %1486, %1479
  store i32 384, ptr %28, align 4, !tbaa !9
  br label %1531

1494:                                             ; preds = %442
  store ptr @_ZZ16stbsp_vsprintfcbE4hexu, ptr %27, align 8, !tbaa !5
  %1495 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  store i8 0, ptr %1495, align 1, !tbaa !11
  %1496 = load i32, ptr %18, align 4, !tbaa !9
  %1497 = and i32 %1496, 8
  %1498 = icmp ne i32 %1497, 0
  br i1 %1498, label %1499, label %1502

1499:                                             ; preds = %1494
  %1500 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  store i8 1, ptr %1500, align 1, !tbaa !11
  %1501 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 1
  store i8 48, ptr %1501, align 1, !tbaa !11
  br label %1502

1502:                                             ; preds = %1499, %1494
  store i32 816, ptr %28, align 4, !tbaa !9
  br label %1531

1503:                                             ; preds = %442
  %1504 = load i32, ptr %18, align 4, !tbaa !9
  %1505 = or i32 %1504, 32
  store i32 %1505, ptr %18, align 4, !tbaa !9
  store i32 16, ptr %16, align 4, !tbaa !9
  %1506 = load i32, ptr %18, align 4, !tbaa !9
  %1507 = and i32 %1506, -17
  store i32 %1507, ptr %18, align 4, !tbaa !9
  br label %1508

1508:                                             ; preds = %1503, %442, %442
  %1509 = load ptr, ptr %13, align 8, !tbaa !5
  %1510 = getelementptr inbounds i8, ptr %1509, i64 0
  %1511 = load i8, ptr %1510, align 1, !tbaa !11
  %1512 = sext i8 %1511 to i32
  %1513 = icmp eq i32 %1512, 88
  br i1 %1513, label %1514, label %1515

1514:                                             ; preds = %1508
  br label %1516

1515:                                             ; preds = %1508
  br label %1516

1516:                                             ; preds = %1515, %1514
  %1517 = phi ptr [ @_ZZ16stbsp_vsprintfcbE4hexu, %1514 ], [ @_ZZ16stbsp_vsprintfcbE3hex, %1515 ]
  %1518 = getelementptr inbounds [19 x i8], ptr %1517, i64 0, i64 0
  store ptr %1518, ptr %27, align 8, !tbaa !5
  store i32 1088, ptr %28, align 4, !tbaa !9
  %1519 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  store i8 0, ptr %1519, align 1, !tbaa !11
  %1520 = load i32, ptr %18, align 4, !tbaa !9
  %1521 = and i32 %1520, 8
  %1522 = icmp ne i32 %1521, 0
  br i1 %1522, label %1523, label %1530

1523:                                             ; preds = %1516
  %1524 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  store i8 2, ptr %1524, align 1, !tbaa !11
  %1525 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 1
  store i8 48, ptr %1525, align 1, !tbaa !11
  %1526 = load ptr, ptr %27, align 8, !tbaa !5
  %1527 = getelementptr inbounds i8, ptr %1526, i64 16
  %1528 = load i8, ptr %1527, align 1, !tbaa !11
  %1529 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 2
  store i8 %1528, ptr %1529, align 1, !tbaa !11
  br label %1530

1530:                                             ; preds = %1523, %1516
  br label %1531

1531:                                             ; preds = %1530, %1502, %1493
  %1532 = load i32, ptr %18, align 4, !tbaa !9
  %1533 = and i32 %1532, 32
  %1534 = icmp ne i32 %1533, 0
  br i1 %1534, label %1535, label %1552

1535:                                             ; preds = %1531
  %1536 = load ptr, ptr %11, align 8, !tbaa !5
  %1537 = getelementptr inbounds %struct.__va_list_tag, ptr %1536, i32 0, i32 0
  %1538 = load i32, ptr %1537, align 8
  %1539 = icmp ule i32 %1538, 40
  br i1 %1539, label %1540, label %1545

1540:                                             ; preds = %1535
  %1541 = getelementptr inbounds %struct.__va_list_tag, ptr %1536, i32 0, i32 3
  %1542 = load ptr, ptr %1541, align 8
  %1543 = getelementptr i8, ptr %1542, i32 %1538
  %1544 = add i32 %1538, 8
  store i32 %1544, ptr %1537, align 8
  br label %1549

1545:                                             ; preds = %1535
  %1546 = getelementptr inbounds %struct.__va_list_tag, ptr %1536, i32 0, i32 2
  %1547 = load ptr, ptr %1546, align 8
  %1548 = getelementptr i8, ptr %1547, i32 8
  store ptr %1548, ptr %1546, align 8
  br label %1549

1549:                                             ; preds = %1545, %1540
  %1550 = phi ptr [ %1543, %1540 ], [ %1547, %1545 ]
  %1551 = load i64, ptr %1550, align 8, !tbaa !22
  store i64 %1551, ptr %31, align 8, !tbaa !22
  br label %1570

1552:                                             ; preds = %1531
  %1553 = load ptr, ptr %11, align 8, !tbaa !5
  %1554 = getelementptr inbounds %struct.__va_list_tag, ptr %1553, i32 0, i32 0
  %1555 = load i32, ptr %1554, align 8
  %1556 = icmp ule i32 %1555, 40
  br i1 %1556, label %1557, label %1562

1557:                                             ; preds = %1552
  %1558 = getelementptr inbounds %struct.__va_list_tag, ptr %1553, i32 0, i32 3
  %1559 = load ptr, ptr %1558, align 8
  %1560 = getelementptr i8, ptr %1559, i32 %1555
  %1561 = add i32 %1555, 8
  store i32 %1561, ptr %1554, align 8
  br label %1566

1562:                                             ; preds = %1552
  %1563 = getelementptr inbounds %struct.__va_list_tag, ptr %1553, i32 0, i32 2
  %1564 = load ptr, ptr %1563, align 8
  %1565 = getelementptr i8, ptr %1564, i32 8
  store ptr %1565, ptr %1563, align 8
  br label %1566

1566:                                             ; preds = %1562, %1557
  %1567 = phi ptr [ %1560, %1557 ], [ %1564, %1562 ]
  %1568 = load i32, ptr %1567, align 4, !tbaa !9
  %1569 = zext i32 %1568 to i64
  store i64 %1569, ptr %31, align 8, !tbaa !22
  br label %1570

1570:                                             ; preds = %1566, %1549
  %1571 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %1572 = getelementptr inbounds i8, ptr %1571, i64 512
  store ptr %1572, ptr %26, align 8, !tbaa !5
  store i32 0, ptr %33, align 4, !tbaa !9
  %1573 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 0
  store i8 0, ptr %1573, align 1, !tbaa !11
  %1574 = load i64, ptr %31, align 8, !tbaa !22
  %1575 = icmp eq i64 %1574, 0
  br i1 %1575, label %1576, label %1586

1576:                                             ; preds = %1570
  %1577 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  store i8 0, ptr %1577, align 1, !tbaa !11
  %1578 = load i32, ptr %16, align 4, !tbaa !9
  %1579 = icmp eq i32 %1578, 0
  br i1 %1579, label %1580, label %1585

1580:                                             ; preds = %1576
  store i32 0, ptr %28, align 4, !tbaa !9
  %1581 = load i32, ptr %28, align 4, !tbaa !9
  %1582 = lshr i32 %1581, 4
  %1583 = and i32 %1582, 15
  %1584 = shl i32 %1583, 24
  store i32 %1584, ptr %30, align 4, !tbaa !9
  br label %1881

1585:                                             ; preds = %1576
  br label %1586

1586:                                             ; preds = %1585, %1570
  br label %1587

1587:                                             ; preds = %1638, %1586
  %1588 = load ptr, ptr %27, align 8, !tbaa !5
  %1589 = load i64, ptr %31, align 8, !tbaa !22
  %1590 = load i32, ptr %28, align 4, !tbaa !9
  %1591 = lshr i32 %1590, 8
  %1592 = shl i32 1, %1591
  %1593 = sub nsw i32 %1592, 1
  %1594 = sext i32 %1593 to i64
  %1595 = and i64 %1589, %1594
  %1596 = getelementptr inbounds i8, ptr %1588, i64 %1595
  %1597 = load i8, ptr %1596, align 1, !tbaa !11
  %1598 = load ptr, ptr %26, align 8, !tbaa !5
  %1599 = getelementptr inbounds i8, ptr %1598, i32 -1
  store ptr %1599, ptr %26, align 8, !tbaa !5
  store i8 %1597, ptr %1599, align 1, !tbaa !11
  %1600 = load i32, ptr %28, align 4, !tbaa !9
  %1601 = lshr i32 %1600, 8
  %1602 = load i64, ptr %31, align 8, !tbaa !22
  %1603 = zext i32 %1601 to i64
  %1604 = lshr i64 %1602, %1603
  store i64 %1604, ptr %31, align 8, !tbaa !22
  %1605 = load i64, ptr %31, align 8, !tbaa !22
  %1606 = icmp ne i64 %1605, 0
  br i1 %1606, label %1618, label %1607

1607:                                             ; preds = %1587
  %1608 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %1609 = getelementptr inbounds i8, ptr %1608, i64 512
  %1610 = load ptr, ptr %26, align 8, !tbaa !5
  %1611 = ptrtoint ptr %1609 to i64
  %1612 = ptrtoint ptr %1610 to i64
  %1613 = sub i64 %1611, %1612
  %1614 = trunc i64 %1613 to i32
  %1615 = load i32, ptr %16, align 4, !tbaa !9
  %1616 = icmp slt i32 %1614, %1615
  br i1 %1616, label %1618, label %1617

1617:                                             ; preds = %1607
  br label %1639

1618:                                             ; preds = %1607, %1587
  %1619 = load i32, ptr %18, align 4, !tbaa !9
  %1620 = and i32 %1619, 64
  %1621 = icmp ne i32 %1620, 0
  br i1 %1621, label %1622, label %1638

1622:                                             ; preds = %1618
  %1623 = load i32, ptr %28, align 4, !tbaa !9
  %1624 = add i32 %1623, 1
  store i32 %1624, ptr %28, align 4, !tbaa !9
  %1625 = load i32, ptr %28, align 4, !tbaa !9
  %1626 = and i32 %1625, 15
  %1627 = load i32, ptr %28, align 4, !tbaa !9
  %1628 = lshr i32 %1627, 4
  %1629 = and i32 %1628, 15
  %1630 = icmp eq i32 %1626, %1629
  br i1 %1630, label %1631, label %1637

1631:                                             ; preds = %1622
  %1632 = load i32, ptr %28, align 4, !tbaa !9
  %1633 = and i32 %1632, -16
  store i32 %1633, ptr %28, align 4, !tbaa !9
  %1634 = load i8, ptr @_ZL12stbsp__comma, align 1, !tbaa !11
  %1635 = load ptr, ptr %26, align 8, !tbaa !5
  %1636 = getelementptr inbounds i8, ptr %1635, i32 -1
  store ptr %1636, ptr %26, align 8, !tbaa !5
  store i8 %1634, ptr %1636, align 1, !tbaa !11
  br label %1637

1637:                                             ; preds = %1631, %1622
  br label %1638

1638:                                             ; preds = %1637, %1618
  br label %1587, !llvm.loop !40

1639:                                             ; preds = %1617
  %1640 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %1641 = getelementptr inbounds i8, ptr %1640, i64 512
  %1642 = load ptr, ptr %26, align 8, !tbaa !5
  %1643 = ptrtoint ptr %1641 to i64
  %1644 = ptrtoint ptr %1642 to i64
  %1645 = sub i64 %1643, %1644
  %1646 = trunc i64 %1645 to i32
  %1647 = load i32, ptr %28, align 4, !tbaa !9
  %1648 = lshr i32 %1647, 4
  %1649 = and i32 %1648, 15
  %1650 = shl i32 %1649, 24
  %1651 = add i32 %1646, %1650
  store i32 %1651, ptr %30, align 4, !tbaa !9
  %1652 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %1653 = getelementptr inbounds i8, ptr %1652, i64 512
  %1654 = load ptr, ptr %26, align 8, !tbaa !5
  %1655 = ptrtoint ptr %1653 to i64
  %1656 = ptrtoint ptr %1654 to i64
  %1657 = sub i64 %1655, %1656
  %1658 = trunc i64 %1657 to i32
  store i32 %1658, ptr %28, align 4, !tbaa !9
  br label %1881

1659:                                             ; preds = %442, %442, %442
  %1660 = load i32, ptr %18, align 4, !tbaa !9
  %1661 = and i32 %1660, 32
  %1662 = icmp ne i32 %1661, 0
  br i1 %1662, label %1663, label %1695

1663:                                             ; preds = %1659
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #3
  %1664 = load ptr, ptr %11, align 8, !tbaa !5
  %1665 = getelementptr inbounds %struct.__va_list_tag, ptr %1664, i32 0, i32 0
  %1666 = load i32, ptr %1665, align 8
  %1667 = icmp ule i32 %1666, 40
  br i1 %1667, label %1668, label %1673

1668:                                             ; preds = %1663
  %1669 = getelementptr inbounds %struct.__va_list_tag, ptr %1664, i32 0, i32 3
  %1670 = load ptr, ptr %1669, align 8
  %1671 = getelementptr i8, ptr %1670, i32 %1666
  %1672 = add i32 %1666, 8
  store i32 %1672, ptr %1665, align 8
  br label %1677

1673:                                             ; preds = %1663
  %1674 = getelementptr inbounds %struct.__va_list_tag, ptr %1664, i32 0, i32 2
  %1675 = load ptr, ptr %1674, align 8
  %1676 = getelementptr i8, ptr %1675, i32 8
  store ptr %1676, ptr %1674, align 8
  br label %1677

1677:                                             ; preds = %1673, %1668
  %1678 = phi ptr [ %1671, %1668 ], [ %1675, %1673 ]
  %1679 = load i64, ptr %1678, align 8, !tbaa !22
  store i64 %1679, ptr %40, align 8, !tbaa !22
  %1680 = load i64, ptr %40, align 8, !tbaa !22
  store i64 %1680, ptr %31, align 8, !tbaa !22
  %1681 = load ptr, ptr %13, align 8, !tbaa !5
  %1682 = getelementptr inbounds i8, ptr %1681, i64 0
  %1683 = load i8, ptr %1682, align 1, !tbaa !11
  %1684 = sext i8 %1683 to i32
  %1685 = icmp ne i32 %1684, 117
  br i1 %1685, label %1686, label %1694

1686:                                             ; preds = %1677
  %1687 = load i64, ptr %40, align 8, !tbaa !22
  %1688 = icmp slt i64 %1687, 0
  br i1 %1688, label %1689, label %1694

1689:                                             ; preds = %1686
  %1690 = load i64, ptr %40, align 8, !tbaa !22
  %1691 = sub nsw i64 0, %1690
  store i64 %1691, ptr %31, align 8, !tbaa !22
  %1692 = load i32, ptr %18, align 4, !tbaa !9
  %1693 = or i32 %1692, 128
  store i32 %1693, ptr %18, align 4, !tbaa !9
  br label %1694

1694:                                             ; preds = %1689, %1686, %1677
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #3
  br label %1729

1695:                                             ; preds = %1659
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #3
  %1696 = load ptr, ptr %11, align 8, !tbaa !5
  %1697 = getelementptr inbounds %struct.__va_list_tag, ptr %1696, i32 0, i32 0
  %1698 = load i32, ptr %1697, align 8
  %1699 = icmp ule i32 %1698, 40
  br i1 %1699, label %1700, label %1705

1700:                                             ; preds = %1695
  %1701 = getelementptr inbounds %struct.__va_list_tag, ptr %1696, i32 0, i32 3
  %1702 = load ptr, ptr %1701, align 8
  %1703 = getelementptr i8, ptr %1702, i32 %1698
  %1704 = add i32 %1698, 8
  store i32 %1704, ptr %1697, align 8
  br label %1709

1705:                                             ; preds = %1695
  %1706 = getelementptr inbounds %struct.__va_list_tag, ptr %1696, i32 0, i32 2
  %1707 = load ptr, ptr %1706, align 8
  %1708 = getelementptr i8, ptr %1707, i32 8
  store ptr %1708, ptr %1706, align 8
  br label %1709

1709:                                             ; preds = %1705, %1700
  %1710 = phi ptr [ %1703, %1700 ], [ %1707, %1705 ]
  %1711 = load i32, ptr %1710, align 4, !tbaa !9
  store i32 %1711, ptr %41, align 4, !tbaa !9
  %1712 = load i32, ptr %41, align 4, !tbaa !9
  %1713 = zext i32 %1712 to i64
  store i64 %1713, ptr %31, align 8, !tbaa !22
  %1714 = load ptr, ptr %13, align 8, !tbaa !5
  %1715 = getelementptr inbounds i8, ptr %1714, i64 0
  %1716 = load i8, ptr %1715, align 1, !tbaa !11
  %1717 = sext i8 %1716 to i32
  %1718 = icmp ne i32 %1717, 117
  br i1 %1718, label %1719, label %1728

1719:                                             ; preds = %1709
  %1720 = load i32, ptr %41, align 4, !tbaa !9
  %1721 = icmp slt i32 %1720, 0
  br i1 %1721, label %1722, label %1728

1722:                                             ; preds = %1719
  %1723 = load i32, ptr %41, align 4, !tbaa !9
  %1724 = sub nsw i32 0, %1723
  %1725 = zext i32 %1724 to i64
  store i64 %1725, ptr %31, align 8, !tbaa !22
  %1726 = load i32, ptr %18, align 4, !tbaa !9
  %1727 = or i32 %1726, 128
  store i32 %1727, ptr %18, align 4, !tbaa !9
  br label %1728

1728:                                             ; preds = %1722, %1719, %1709
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #3
  br label %1729

1729:                                             ; preds = %1728, %1694
  %1730 = load i32, ptr %18, align 4, !tbaa !9
  %1731 = and i32 %1730, 256
  %1732 = icmp ne i32 %1731, 0
  br i1 %1732, label %1733, label %1745

1733:                                             ; preds = %1729
  %1734 = load i64, ptr %31, align 8, !tbaa !22
  %1735 = icmp ult i64 %1734, 1024
  br i1 %1735, label %1736, label %1737

1736:                                             ; preds = %1733
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %1742

1737:                                             ; preds = %1733
  %1738 = load i32, ptr %16, align 4, !tbaa !9
  %1739 = icmp eq i32 %1738, -1
  br i1 %1739, label %1740, label %1741

1740:                                             ; preds = %1737
  store i32 1, ptr %16, align 4, !tbaa !9
  br label %1741

1741:                                             ; preds = %1740, %1737
  br label %1742

1742:                                             ; preds = %1741, %1736
  %1743 = load i64, ptr %31, align 8, !tbaa !22
  %1744 = sitofp i64 %1743 to double
  store double %1744, ptr %32, align 8, !tbaa !20
  br label %1062

1745:                                             ; preds = %1729
  %1746 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %1747 = getelementptr inbounds i8, ptr %1746, i64 512
  store ptr %1747, ptr %26, align 8, !tbaa !5
  store i32 0, ptr %28, align 4, !tbaa !9
  br label %1748

1748:                                             ; preds = %1857, %1745
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #3
  %1749 = load ptr, ptr %26, align 8, !tbaa !5
  %1750 = getelementptr inbounds i8, ptr %1749, i64 -8
  store ptr %1750, ptr %42, align 8, !tbaa !5
  %1751 = load i64, ptr %31, align 8, !tbaa !22
  %1752 = icmp uge i64 %1751, 100000000
  br i1 %1752, label %1753, label %1759

1753:                                             ; preds = %1748
  %1754 = load i64, ptr %31, align 8, !tbaa !22
  %1755 = urem i64 %1754, 100000000
  %1756 = trunc i64 %1755 to i32
  store i32 %1756, ptr %29, align 4, !tbaa !9
  %1757 = load i64, ptr %31, align 8, !tbaa !22
  %1758 = udiv i64 %1757, 100000000
  store i64 %1758, ptr %31, align 8, !tbaa !22
  br label %1762

1759:                                             ; preds = %1748
  %1760 = load i64, ptr %31, align 8, !tbaa !22
  %1761 = trunc i64 %1760 to i32
  store i32 %1761, ptr %29, align 4, !tbaa !9
  store i64 0, ptr %31, align 8, !tbaa !22
  br label %1762

1762:                                             ; preds = %1759, %1753
  %1763 = load i32, ptr %18, align 4, !tbaa !9
  %1764 = and i32 %1763, 64
  %1765 = icmp eq i32 %1764, 0
  br i1 %1765, label %1766, label %1783

1766:                                             ; preds = %1762
  br label %1767

1767:                                             ; preds = %1779, %1766
  %1768 = load ptr, ptr %26, align 8, !tbaa !5
  %1769 = getelementptr inbounds i8, ptr %1768, i64 -2
  store ptr %1769, ptr %26, align 8, !tbaa !5
  %1770 = load i32, ptr %29, align 4, !tbaa !9
  %1771 = urem i32 %1770, 100
  %1772 = mul i32 %1771, 2
  %1773 = zext i32 %1772 to i64
  %1774 = getelementptr inbounds [201 x i8], ptr getelementptr inbounds (%struct.anon.0, ptr @_ZL16stbsp__digitpair, i32 0, i32 1), i64 0, i64 %1773
  %1775 = load i16, ptr %1774, align 1, !tbaa !41
  %1776 = load ptr, ptr %26, align 8, !tbaa !5
  store i16 %1775, ptr %1776, align 2, !tbaa !41
  %1777 = load i32, ptr %29, align 4, !tbaa !9
  %1778 = udiv i32 %1777, 100
  store i32 %1778, ptr %29, align 4, !tbaa !9
  br label %1779

1779:                                             ; preds = %1767
  %1780 = load i32, ptr %29, align 4, !tbaa !9
  %1781 = icmp ne i32 %1780, 0
  br i1 %1781, label %1767, label %1782, !llvm.loop !43

1782:                                             ; preds = %1779
  br label %1783

1783:                                             ; preds = %1782, %1762
  br label %1784

1784:                                             ; preds = %1812, %1783
  %1785 = load i32, ptr %29, align 4, !tbaa !9
  %1786 = icmp ne i32 %1785, 0
  br i1 %1786, label %1787, label %1813

1787:                                             ; preds = %1784
  %1788 = load i32, ptr %18, align 4, !tbaa !9
  %1789 = and i32 %1788, 64
  %1790 = icmp ne i32 %1789, 0
  br i1 %1790, label %1791, label %1801

1791:                                             ; preds = %1787
  %1792 = load i32, ptr %28, align 4, !tbaa !9
  %1793 = add i32 %1792, 1
  store i32 %1793, ptr %28, align 4, !tbaa !9
  %1794 = icmp eq i32 %1792, 3
  br i1 %1794, label %1795, label %1801

1795:                                             ; preds = %1791
  store i32 0, ptr %28, align 4, !tbaa !9
  %1796 = load i8, ptr @_ZL12stbsp__comma, align 1, !tbaa !11
  %1797 = load ptr, ptr %26, align 8, !tbaa !5
  %1798 = getelementptr inbounds i8, ptr %1797, i32 -1
  store ptr %1798, ptr %26, align 8, !tbaa !5
  store i8 %1796, ptr %1798, align 1, !tbaa !11
  %1799 = load ptr, ptr %42, align 8, !tbaa !5
  %1800 = getelementptr inbounds i8, ptr %1799, i32 -1
  store ptr %1800, ptr %42, align 8, !tbaa !5
  br label %1812

1801:                                             ; preds = %1791, %1787
  %1802 = load i32, ptr %29, align 4, !tbaa !9
  %1803 = urem i32 %1802, 10
  %1804 = trunc i32 %1803 to i8
  %1805 = sext i8 %1804 to i32
  %1806 = add nsw i32 %1805, 48
  %1807 = trunc i32 %1806 to i8
  %1808 = load ptr, ptr %26, align 8, !tbaa !5
  %1809 = getelementptr inbounds i8, ptr %1808, i32 -1
  store ptr %1809, ptr %26, align 8, !tbaa !5
  store i8 %1807, ptr %1809, align 1, !tbaa !11
  %1810 = load i32, ptr %29, align 4, !tbaa !9
  %1811 = udiv i32 %1810, 10
  store i32 %1811, ptr %29, align 4, !tbaa !9
  br label %1812

1812:                                             ; preds = %1801, %1795
  br label %1784, !llvm.loop !44

1813:                                             ; preds = %1784
  %1814 = load i64, ptr %31, align 8, !tbaa !22
  %1815 = icmp eq i64 %1814, 0
  br i1 %1815, label %1816, label %1831

1816:                                             ; preds = %1813
  %1817 = load ptr, ptr %26, align 8, !tbaa !5
  %1818 = getelementptr inbounds i8, ptr %1817, i64 0
  %1819 = load i8, ptr %1818, align 1, !tbaa !11
  %1820 = sext i8 %1819 to i32
  %1821 = icmp eq i32 %1820, 48
  br i1 %1821, label %1822, label %1830

1822:                                             ; preds = %1816
  %1823 = load ptr, ptr %26, align 8, !tbaa !5
  %1824 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %1825 = getelementptr inbounds i8, ptr %1824, i64 512
  %1826 = icmp ne ptr %1823, %1825
  br i1 %1826, label %1827, label %1830

1827:                                             ; preds = %1822
  %1828 = load ptr, ptr %26, align 8, !tbaa !5
  %1829 = getelementptr inbounds i8, ptr %1828, i32 1
  store ptr %1829, ptr %26, align 8, !tbaa !5
  br label %1830

1830:                                             ; preds = %1827, %1822, %1816
  store i32 72, ptr %20, align 4
  br label %1855

1831:                                             ; preds = %1813
  br label %1832

1832:                                             ; preds = %1853, %1831
  %1833 = load ptr, ptr %26, align 8, !tbaa !5
  %1834 = load ptr, ptr %42, align 8, !tbaa !5
  %1835 = icmp ne ptr %1833, %1834
  br i1 %1835, label %1836, label %1854

1836:                                             ; preds = %1832
  %1837 = load i32, ptr %18, align 4, !tbaa !9
  %1838 = and i32 %1837, 64
  %1839 = icmp ne i32 %1838, 0
  br i1 %1839, label %1840, label %1850

1840:                                             ; preds = %1836
  %1841 = load i32, ptr %28, align 4, !tbaa !9
  %1842 = add i32 %1841, 1
  store i32 %1842, ptr %28, align 4, !tbaa !9
  %1843 = icmp eq i32 %1841, 3
  br i1 %1843, label %1844, label %1850

1844:                                             ; preds = %1840
  store i32 0, ptr %28, align 4, !tbaa !9
  %1845 = load i8, ptr @_ZL12stbsp__comma, align 1, !tbaa !11
  %1846 = load ptr, ptr %26, align 8, !tbaa !5
  %1847 = getelementptr inbounds i8, ptr %1846, i32 -1
  store ptr %1847, ptr %26, align 8, !tbaa !5
  store i8 %1845, ptr %1847, align 1, !tbaa !11
  %1848 = load ptr, ptr %42, align 8, !tbaa !5
  %1849 = getelementptr inbounds i8, ptr %1848, i32 -1
  store ptr %1849, ptr %42, align 8, !tbaa !5
  br label %1853

1850:                                             ; preds = %1840, %1836
  %1851 = load ptr, ptr %26, align 8, !tbaa !5
  %1852 = getelementptr inbounds i8, ptr %1851, i32 -1
  store ptr %1852, ptr %26, align 8, !tbaa !5
  store i8 48, ptr %1852, align 1, !tbaa !11
  br label %1853

1853:                                             ; preds = %1850, %1844
  br label %1832, !llvm.loop !45

1854:                                             ; preds = %1832
  store i32 0, ptr %20, align 4
  br label %1855

1855:                                             ; preds = %1854, %1830
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #3
  %1856 = load i32, ptr %20, align 4
  switch i32 %1856, label %2736 [
    i32 0, label %1857
    i32 72, label %1858
  ]

1857:                                             ; preds = %1855
  br label %1748, !llvm.loop !46

1858:                                             ; preds = %1855
  %1859 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 0
  store i8 0, ptr %1859, align 1, !tbaa !11
  %1860 = load i32, ptr %18, align 4, !tbaa !9
  %1861 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  call void @_ZL16stbsp__lead_signjPc(i32 noundef %1860, ptr noundef %1861)
  %1862 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %1863 = getelementptr inbounds i8, ptr %1862, i64 512
  %1864 = load ptr, ptr %26, align 8, !tbaa !5
  %1865 = ptrtoint ptr %1863 to i64
  %1866 = ptrtoint ptr %1864 to i64
  %1867 = sub i64 %1865, %1866
  %1868 = trunc i64 %1867 to i32
  store i32 %1868, ptr %28, align 4, !tbaa !9
  %1869 = load i32, ptr %28, align 4, !tbaa !9
  %1870 = icmp eq i32 %1869, 0
  br i1 %1870, label %1871, label %1874

1871:                                             ; preds = %1858
  %1872 = load ptr, ptr %26, align 8, !tbaa !5
  %1873 = getelementptr inbounds i8, ptr %1872, i32 -1
  store ptr %1873, ptr %26, align 8, !tbaa !5
  store i8 48, ptr %1873, align 1, !tbaa !11
  store i32 1, ptr %28, align 4, !tbaa !9
  br label %1874

1874:                                             ; preds = %1871, %1858
  %1875 = load i32, ptr %28, align 4, !tbaa !9
  %1876 = add i32 %1875, 50331648
  store i32 %1876, ptr %30, align 4, !tbaa !9
  %1877 = load i32, ptr %16, align 4, !tbaa !9
  %1878 = icmp slt i32 %1877, 0
  br i1 %1878, label %1879, label %1880

1879:                                             ; preds = %1874
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %1880

1880:                                             ; preds = %1879, %1874
  br label %1881

1881:                                             ; preds = %2677, %1880, %1639, %1580, %1461, %1112, %961, %772, %562, %542
  %1882 = load i32, ptr %16, align 4, !tbaa !9
  %1883 = load i32, ptr %28, align 4, !tbaa !9
  %1884 = icmp slt i32 %1882, %1883
  br i1 %1884, label %1885, label %1887

1885:                                             ; preds = %1881
  %1886 = load i32, ptr %28, align 4, !tbaa !9
  store i32 %1886, ptr %16, align 4, !tbaa !9
  br label %1887

1887:                                             ; preds = %1885, %1881
  %1888 = load i32, ptr %16, align 4, !tbaa !9
  %1889 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  %1890 = load i8, ptr %1889, align 1, !tbaa !11
  %1891 = sext i8 %1890 to i32
  %1892 = add nsw i32 %1888, %1891
  %1893 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 0
  %1894 = load i8, ptr %1893, align 1, !tbaa !11
  %1895 = sext i8 %1894 to i32
  %1896 = add nsw i32 %1892, %1895
  %1897 = load i32, ptr %17, align 4, !tbaa !9
  %1898 = add nsw i32 %1896, %1897
  store i32 %1898, ptr %29, align 4, !tbaa !9
  %1899 = load i32, ptr %15, align 4, !tbaa !9
  %1900 = load i32, ptr %29, align 4, !tbaa !9
  %1901 = icmp slt i32 %1899, %1900
  br i1 %1901, label %1902, label %1904

1902:                                             ; preds = %1887
  %1903 = load i32, ptr %29, align 4, !tbaa !9
  store i32 %1903, ptr %15, align 4, !tbaa !9
  br label %1904

1904:                                             ; preds = %1902, %1887
  %1905 = load i32, ptr %29, align 4, !tbaa !9
  %1906 = load i32, ptr %15, align 4, !tbaa !9
  %1907 = sub i32 %1906, %1905
  store i32 %1907, ptr %15, align 4, !tbaa !9
  %1908 = load i32, ptr %28, align 4, !tbaa !9
  %1909 = load i32, ptr %16, align 4, !tbaa !9
  %1910 = sub i32 %1909, %1908
  store i32 %1910, ptr %16, align 4, !tbaa !9
  %1911 = load i32, ptr %18, align 4, !tbaa !9
  %1912 = and i32 %1911, 1
  %1913 = icmp eq i32 %1912, 0
  br i1 %1913, label %1914, label %1932

1914:                                             ; preds = %1904
  %1915 = load i32, ptr %18, align 4, !tbaa !9
  %1916 = and i32 %1915, 16
  %1917 = icmp ne i32 %1916, 0
  br i1 %1917, label %1918, label %1928

1918:                                             ; preds = %1914
  %1919 = load i32, ptr %15, align 4, !tbaa !9
  %1920 = load i32, ptr %16, align 4, !tbaa !9
  %1921 = icmp sgt i32 %1919, %1920
  br i1 %1921, label %1922, label %1924

1922:                                             ; preds = %1918
  %1923 = load i32, ptr %15, align 4, !tbaa !9
  br label %1926

1924:                                             ; preds = %1918
  %1925 = load i32, ptr %16, align 4, !tbaa !9
  br label %1926

1926:                                             ; preds = %1924, %1922
  %1927 = phi i32 [ %1923, %1922 ], [ %1925, %1924 ]
  store i32 %1927, ptr %16, align 4, !tbaa !9
  store i32 0, ptr %15, align 4, !tbaa !9
  br label %1931

1928:                                             ; preds = %1914
  %1929 = load i32, ptr %18, align 4, !tbaa !9
  %1930 = and i32 %1929, -65
  store i32 %1930, ptr %18, align 4, !tbaa !9
  br label %1931

1931:                                             ; preds = %1928, %1926
  br label %1932

1932:                                             ; preds = %1931, %1904
  %1933 = load i32, ptr %15, align 4, !tbaa !9
  %1934 = load i32, ptr %16, align 4, !tbaa !9
  %1935 = add nsw i32 %1933, %1934
  %1936 = icmp ne i32 %1935, 0
  br i1 %1936, label %1937, label %2239

1937:                                             ; preds = %1932
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #3
  %1938 = load i32, ptr %18, align 4, !tbaa !9
  %1939 = and i32 %1938, 1
  %1940 = icmp eq i32 %1939, 0
  br i1 %1940, label %1941, label %2031

1941:                                             ; preds = %1937
  br label %1942

1942:                                             ; preds = %2029, %1941
  %1943 = load i32, ptr %15, align 4, !tbaa !9
  %1944 = icmp sgt i32 %1943, 0
  br i1 %1944, label %1945, label %2030

1945:                                             ; preds = %1942
  %1946 = load i32, ptr %15, align 4, !tbaa !9
  store i32 %1946, ptr %43, align 4, !tbaa !9
  %1947 = load ptr, ptr %7, align 8, !tbaa !5
  %1948 = icmp ne ptr %1947, null
  br i1 %1948, label %1949, label %1963

1949:                                             ; preds = %1945
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #3
  %1950 = load ptr, ptr %12, align 8, !tbaa !5
  %1951 = load ptr, ptr %9, align 8, !tbaa !5
  %1952 = ptrtoint ptr %1950 to i64
  %1953 = ptrtoint ptr %1951 to i64
  %1954 = sub i64 %1952, %1953
  %1955 = trunc i64 %1954 to i32
  %1956 = sub nsw i32 512, %1955
  store i32 %1956, ptr %45, align 4, !tbaa !9
  %1957 = load i32, ptr %43, align 4, !tbaa !9
  %1958 = load i32, ptr %45, align 4, !tbaa !9
  %1959 = icmp sgt i32 %1957, %1958
  br i1 %1959, label %1960, label %1962

1960:                                             ; preds = %1949
  %1961 = load i32, ptr %45, align 4, !tbaa !9
  store i32 %1961, ptr %43, align 4, !tbaa !9
  br label %1962

1962:                                             ; preds = %1960, %1949
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #3
  br label %1963

1963:                                             ; preds = %1962, %1945
  %1964 = load i32, ptr %43, align 4, !tbaa !9
  %1965 = load i32, ptr %15, align 4, !tbaa !9
  %1966 = sub nsw i32 %1965, %1964
  store i32 %1966, ptr %15, align 4, !tbaa !9
  br label %1967

1967:                                             ; preds = %1976, %1963
  %1968 = load i32, ptr %43, align 4, !tbaa !9
  %1969 = icmp ne i32 %1968, 0
  br i1 %1969, label %1970, label %1981

1970:                                             ; preds = %1967
  %1971 = load ptr, ptr %12, align 8, !tbaa !5
  %1972 = ptrtoint ptr %1971 to i64
  %1973 = and i64 %1972, 3
  %1974 = icmp eq i64 %1973, 0
  br i1 %1974, label %1975, label %1976

1975:                                             ; preds = %1970
  br label %1981

1976:                                             ; preds = %1970
  %1977 = load ptr, ptr %12, align 8, !tbaa !5
  %1978 = getelementptr inbounds i8, ptr %1977, i32 1
  store ptr %1978, ptr %12, align 8, !tbaa !5
  store i8 32, ptr %1977, align 1, !tbaa !11
  %1979 = load i32, ptr %43, align 4, !tbaa !9
  %1980 = add nsw i32 %1979, -1
  store i32 %1980, ptr %43, align 4, !tbaa !9
  br label %1967, !llvm.loop !47

1981:                                             ; preds = %1975, %1967
  br label %1982

1982:                                             ; preds = %1985, %1981
  %1983 = load i32, ptr %43, align 4, !tbaa !9
  %1984 = icmp sge i32 %1983, 4
  br i1 %1984, label %1985, label %1991

1985:                                             ; preds = %1982
  %1986 = load ptr, ptr %12, align 8, !tbaa !5
  store i32 538976288, ptr %1986, align 4, !tbaa !9
  %1987 = load ptr, ptr %12, align 8, !tbaa !5
  %1988 = getelementptr inbounds i8, ptr %1987, i64 4
  store ptr %1988, ptr %12, align 8, !tbaa !5
  %1989 = load i32, ptr %43, align 4, !tbaa !9
  %1990 = sub nsw i32 %1989, 4
  store i32 %1990, ptr %43, align 4, !tbaa !9
  br label %1982, !llvm.loop !48

1991:                                             ; preds = %1982
  br label %1992

1992:                                             ; preds = %1995, %1991
  %1993 = load i32, ptr %43, align 4, !tbaa !9
  %1994 = icmp ne i32 %1993, 0
  br i1 %1994, label %1995, label %2000

1995:                                             ; preds = %1992
  %1996 = load ptr, ptr %12, align 8, !tbaa !5
  %1997 = getelementptr inbounds i8, ptr %1996, i32 1
  store ptr %1997, ptr %12, align 8, !tbaa !5
  store i8 32, ptr %1996, align 1, !tbaa !11
  %1998 = load i32, ptr %43, align 4, !tbaa !9
  %1999 = add nsw i32 %1998, -1
  store i32 %1999, ptr %43, align 4, !tbaa !9
  br label %1992, !llvm.loop !49

2000:                                             ; preds = %1992
  %2001 = load ptr, ptr %7, align 8, !tbaa !5
  %2002 = icmp ne ptr %2001, null
  br i1 %2002, label %2003, label %2029

2003:                                             ; preds = %2000
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #3
  %2004 = load ptr, ptr %12, align 8, !tbaa !5
  %2005 = load ptr, ptr %9, align 8, !tbaa !5
  %2006 = ptrtoint ptr %2004 to i64
  %2007 = ptrtoint ptr %2005 to i64
  %2008 = sub i64 %2006, %2007
  %2009 = trunc i64 %2008 to i32
  store i32 %2009, ptr %46, align 4, !tbaa !9
  %2010 = load i32, ptr %46, align 4, !tbaa !9
  %2011 = add nsw i32 %2010, 1
  %2012 = icmp sge i32 %2011, 512
  br i1 %2012, label %2013, label %2025

2013:                                             ; preds = %2003
  %2014 = load i32, ptr %46, align 4, !tbaa !9
  %2015 = load i32, ptr %14, align 4, !tbaa !9
  %2016 = add nsw i32 %2015, %2014
  store i32 %2016, ptr %14, align 4, !tbaa !9
  %2017 = load ptr, ptr %7, align 8, !tbaa !5
  %2018 = load ptr, ptr %9, align 8, !tbaa !5
  %2019 = load ptr, ptr %8, align 8, !tbaa !5
  %2020 = load i32, ptr %46, align 4, !tbaa !9
  %2021 = call noundef ptr %2017(ptr noundef %2018, ptr noundef %2019, i32 noundef %2020)
  store ptr %2021, ptr %9, align 8, !tbaa !5
  store ptr %2021, ptr %12, align 8, !tbaa !5
  %2022 = icmp eq ptr null, %2021
  br i1 %2022, label %2023, label %2024

2023:                                             ; preds = %2013
  store i32 12, ptr %20, align 4
  br label %2026

2024:                                             ; preds = %2013
  br label %2025

2025:                                             ; preds = %2024, %2003
  store i32 0, ptr %20, align 4
  br label %2026

2026:                                             ; preds = %2025, %2023
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #3
  %2027 = load i32, ptr %20, align 4
  switch i32 %2027, label %2236 [
    i32 0, label %2028
  ]

2028:                                             ; preds = %2026
  br label %2029

2029:                                             ; preds = %2028, %2000
  br label %1942, !llvm.loop !50

2030:                                             ; preds = %1942
  br label %2031

2031:                                             ; preds = %2030, %1937
  %2032 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  %2033 = getelementptr inbounds i8, ptr %2032, i64 1
  store ptr %2033, ptr %34, align 8, !tbaa !5
  br label %2034

2034:                                             ; preds = %2107, %2031
  %2035 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  %2036 = load i8, ptr %2035, align 1, !tbaa !11
  %2037 = icmp ne i8 %2036, 0
  br i1 %2037, label %2038, label %2108

2038:                                             ; preds = %2034
  %2039 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  %2040 = load i8, ptr %2039, align 1, !tbaa !11
  %2041 = sext i8 %2040 to i32
  store i32 %2041, ptr %43, align 4, !tbaa !9
  %2042 = load ptr, ptr %7, align 8, !tbaa !5
  %2043 = icmp ne ptr %2042, null
  br i1 %2043, label %2044, label %2058

2044:                                             ; preds = %2038
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #3
  %2045 = load ptr, ptr %12, align 8, !tbaa !5
  %2046 = load ptr, ptr %9, align 8, !tbaa !5
  %2047 = ptrtoint ptr %2045 to i64
  %2048 = ptrtoint ptr %2046 to i64
  %2049 = sub i64 %2047, %2048
  %2050 = trunc i64 %2049 to i32
  %2051 = sub nsw i32 512, %2050
  store i32 %2051, ptr %47, align 4, !tbaa !9
  %2052 = load i32, ptr %43, align 4, !tbaa !9
  %2053 = load i32, ptr %47, align 4, !tbaa !9
  %2054 = icmp sgt i32 %2052, %2053
  br i1 %2054, label %2055, label %2057

2055:                                             ; preds = %2044
  %2056 = load i32, ptr %47, align 4, !tbaa !9
  store i32 %2056, ptr %43, align 4, !tbaa !9
  br label %2057

2057:                                             ; preds = %2055, %2044
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #3
  br label %2058

2058:                                             ; preds = %2057, %2038
  %2059 = load i32, ptr %43, align 4, !tbaa !9
  %2060 = trunc i32 %2059 to i8
  %2061 = sext i8 %2060 to i32
  %2062 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  %2063 = load i8, ptr %2062, align 1, !tbaa !11
  %2064 = sext i8 %2063 to i32
  %2065 = sub nsw i32 %2064, %2061
  %2066 = trunc i32 %2065 to i8
  store i8 %2066, ptr %2062, align 1, !tbaa !11
  br label %2067

2067:                                             ; preds = %2070, %2058
  %2068 = load i32, ptr %43, align 4, !tbaa !9
  %2069 = icmp ne i32 %2068, 0
  br i1 %2069, label %2070, label %2078

2070:                                             ; preds = %2067
  %2071 = load ptr, ptr %34, align 8, !tbaa !5
  %2072 = getelementptr inbounds i8, ptr %2071, i32 1
  store ptr %2072, ptr %34, align 8, !tbaa !5
  %2073 = load i8, ptr %2071, align 1, !tbaa !11
  %2074 = load ptr, ptr %12, align 8, !tbaa !5
  %2075 = getelementptr inbounds i8, ptr %2074, i32 1
  store ptr %2075, ptr %12, align 8, !tbaa !5
  store i8 %2073, ptr %2074, align 1, !tbaa !11
  %2076 = load i32, ptr %43, align 4, !tbaa !9
  %2077 = add nsw i32 %2076, -1
  store i32 %2077, ptr %43, align 4, !tbaa !9
  br label %2067, !llvm.loop !51

2078:                                             ; preds = %2067
  %2079 = load ptr, ptr %7, align 8, !tbaa !5
  %2080 = icmp ne ptr %2079, null
  br i1 %2080, label %2081, label %2107

2081:                                             ; preds = %2078
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #3
  %2082 = load ptr, ptr %12, align 8, !tbaa !5
  %2083 = load ptr, ptr %9, align 8, !tbaa !5
  %2084 = ptrtoint ptr %2082 to i64
  %2085 = ptrtoint ptr %2083 to i64
  %2086 = sub i64 %2084, %2085
  %2087 = trunc i64 %2086 to i32
  store i32 %2087, ptr %48, align 4, !tbaa !9
  %2088 = load i32, ptr %48, align 4, !tbaa !9
  %2089 = add nsw i32 %2088, 1
  %2090 = icmp sge i32 %2089, 512
  br i1 %2090, label %2091, label %2103

2091:                                             ; preds = %2081
  %2092 = load i32, ptr %48, align 4, !tbaa !9
  %2093 = load i32, ptr %14, align 4, !tbaa !9
  %2094 = add nsw i32 %2093, %2092
  store i32 %2094, ptr %14, align 4, !tbaa !9
  %2095 = load ptr, ptr %7, align 8, !tbaa !5
  %2096 = load ptr, ptr %9, align 8, !tbaa !5
  %2097 = load ptr, ptr %8, align 8, !tbaa !5
  %2098 = load i32, ptr %48, align 4, !tbaa !9
  %2099 = call noundef ptr %2095(ptr noundef %2096, ptr noundef %2097, i32 noundef %2098)
  store ptr %2099, ptr %9, align 8, !tbaa !5
  store ptr %2099, ptr %12, align 8, !tbaa !5
  %2100 = icmp eq ptr null, %2099
  br i1 %2100, label %2101, label %2102

2101:                                             ; preds = %2091
  store i32 12, ptr %20, align 4
  br label %2104

2102:                                             ; preds = %2091
  br label %2103

2103:                                             ; preds = %2102, %2081
  store i32 0, ptr %20, align 4
  br label %2104

2104:                                             ; preds = %2103, %2101
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #3
  %2105 = load i32, ptr %20, align 4
  switch i32 %2105, label %2236 [
    i32 0, label %2106
  ]

2106:                                             ; preds = %2104
  br label %2107

2107:                                             ; preds = %2106, %2078
  br label %2034, !llvm.loop !52

2108:                                             ; preds = %2034
  %2109 = load i32, ptr %30, align 4, !tbaa !9
  %2110 = lshr i32 %2109, 24
  store i32 %2110, ptr %44, align 4, !tbaa !9
  %2111 = load i32, ptr %30, align 4, !tbaa !9
  %2112 = and i32 %2111, 16777215
  store i32 %2112, ptr %30, align 4, !tbaa !9
  %2113 = load i32, ptr %18, align 4, !tbaa !9
  %2114 = and i32 %2113, 64
  %2115 = icmp ne i32 %2114, 0
  br i1 %2115, label %2116, label %2125

2116:                                             ; preds = %2108
  %2117 = load i32, ptr %44, align 4, !tbaa !9
  %2118 = load i32, ptr %16, align 4, !tbaa !9
  %2119 = load i32, ptr %30, align 4, !tbaa !9
  %2120 = add i32 %2118, %2119
  %2121 = load i32, ptr %44, align 4, !tbaa !9
  %2122 = add i32 %2121, 1
  %2123 = urem i32 %2120, %2122
  %2124 = sub i32 %2117, %2123
  br label %2126

2125:                                             ; preds = %2108
  br label %2126

2126:                                             ; preds = %2125, %2116
  %2127 = phi i32 [ %2124, %2116 ], [ 0, %2125 ]
  store i32 %2127, ptr %30, align 4, !tbaa !9
  br label %2128

2128:                                             ; preds = %2234, %2126
  %2129 = load i32, ptr %16, align 4, !tbaa !9
  %2130 = icmp sgt i32 %2129, 0
  br i1 %2130, label %2131, label %2235

2131:                                             ; preds = %2128
  %2132 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %2132, ptr %43, align 4, !tbaa !9
  %2133 = load ptr, ptr %7, align 8, !tbaa !5
  %2134 = icmp ne ptr %2133, null
  br i1 %2134, label %2135, label %2149

2135:                                             ; preds = %2131
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #3
  %2136 = load ptr, ptr %12, align 8, !tbaa !5
  %2137 = load ptr, ptr %9, align 8, !tbaa !5
  %2138 = ptrtoint ptr %2136 to i64
  %2139 = ptrtoint ptr %2137 to i64
  %2140 = sub i64 %2138, %2139
  %2141 = trunc i64 %2140 to i32
  %2142 = sub nsw i32 512, %2141
  store i32 %2142, ptr %49, align 4, !tbaa !9
  %2143 = load i32, ptr %43, align 4, !tbaa !9
  %2144 = load i32, ptr %49, align 4, !tbaa !9
  %2145 = icmp sgt i32 %2143, %2144
  br i1 %2145, label %2146, label %2148

2146:                                             ; preds = %2135
  %2147 = load i32, ptr %49, align 4, !tbaa !9
  store i32 %2147, ptr %43, align 4, !tbaa !9
  br label %2148

2148:                                             ; preds = %2146, %2135
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #3
  br label %2149

2149:                                             ; preds = %2148, %2131
  %2150 = load i32, ptr %43, align 4, !tbaa !9
  %2151 = load i32, ptr %16, align 4, !tbaa !9
  %2152 = sub nsw i32 %2151, %2150
  store i32 %2152, ptr %16, align 4, !tbaa !9
  %2153 = load i32, ptr %18, align 4, !tbaa !9
  %2154 = and i32 %2153, 64
  %2155 = icmp eq i32 %2154, 0
  br i1 %2155, label %2156, label %2182

2156:                                             ; preds = %2149
  br label %2157

2157:                                             ; preds = %2166, %2156
  %2158 = load i32, ptr %43, align 4, !tbaa !9
  %2159 = icmp ne i32 %2158, 0
  br i1 %2159, label %2160, label %2171

2160:                                             ; preds = %2157
  %2161 = load ptr, ptr %12, align 8, !tbaa !5
  %2162 = ptrtoint ptr %2161 to i64
  %2163 = and i64 %2162, 3
  %2164 = icmp eq i64 %2163, 0
  br i1 %2164, label %2165, label %2166

2165:                                             ; preds = %2160
  br label %2171

2166:                                             ; preds = %2160
  %2167 = load ptr, ptr %12, align 8, !tbaa !5
  %2168 = getelementptr inbounds i8, ptr %2167, i32 1
  store ptr %2168, ptr %12, align 8, !tbaa !5
  store i8 48, ptr %2167, align 1, !tbaa !11
  %2169 = load i32, ptr %43, align 4, !tbaa !9
  %2170 = add nsw i32 %2169, -1
  store i32 %2170, ptr %43, align 4, !tbaa !9
  br label %2157, !llvm.loop !53

2171:                                             ; preds = %2165, %2157
  br label %2172

2172:                                             ; preds = %2175, %2171
  %2173 = load i32, ptr %43, align 4, !tbaa !9
  %2174 = icmp sge i32 %2173, 4
  br i1 %2174, label %2175, label %2181

2175:                                             ; preds = %2172
  %2176 = load ptr, ptr %12, align 8, !tbaa !5
  store i32 808464432, ptr %2176, align 4, !tbaa !9
  %2177 = load ptr, ptr %12, align 8, !tbaa !5
  %2178 = getelementptr inbounds i8, ptr %2177, i64 4
  store ptr %2178, ptr %12, align 8, !tbaa !5
  %2179 = load i32, ptr %43, align 4, !tbaa !9
  %2180 = sub nsw i32 %2179, 4
  store i32 %2180, ptr %43, align 4, !tbaa !9
  br label %2172, !llvm.loop !54

2181:                                             ; preds = %2172
  br label %2182

2182:                                             ; preds = %2181, %2149
  br label %2183

2183:                                             ; preds = %2202, %2182
  %2184 = load i32, ptr %43, align 4, !tbaa !9
  %2185 = icmp ne i32 %2184, 0
  br i1 %2185, label %2186, label %2205

2186:                                             ; preds = %2183
  %2187 = load i32, ptr %18, align 4, !tbaa !9
  %2188 = and i32 %2187, 64
  %2189 = icmp ne i32 %2188, 0
  br i1 %2189, label %2190, label %2199

2190:                                             ; preds = %2186
  %2191 = load i32, ptr %30, align 4, !tbaa !9
  %2192 = add i32 %2191, 1
  store i32 %2192, ptr %30, align 4, !tbaa !9
  %2193 = load i32, ptr %44, align 4, !tbaa !9
  %2194 = icmp eq i32 %2191, %2193
  br i1 %2194, label %2195, label %2199

2195:                                             ; preds = %2190
  store i32 0, ptr %30, align 4, !tbaa !9
  %2196 = load i8, ptr @_ZL12stbsp__comma, align 1, !tbaa !11
  %2197 = load ptr, ptr %12, align 8, !tbaa !5
  %2198 = getelementptr inbounds i8, ptr %2197, i32 1
  store ptr %2198, ptr %12, align 8, !tbaa !5
  store i8 %2196, ptr %2197, align 1, !tbaa !11
  br label %2202

2199:                                             ; preds = %2190, %2186
  %2200 = load ptr, ptr %12, align 8, !tbaa !5
  %2201 = getelementptr inbounds i8, ptr %2200, i32 1
  store ptr %2201, ptr %12, align 8, !tbaa !5
  store i8 48, ptr %2200, align 1, !tbaa !11
  br label %2202

2202:                                             ; preds = %2199, %2195
  %2203 = load i32, ptr %43, align 4, !tbaa !9
  %2204 = add nsw i32 %2203, -1
  store i32 %2204, ptr %43, align 4, !tbaa !9
  br label %2183, !llvm.loop !55

2205:                                             ; preds = %2183
  %2206 = load ptr, ptr %7, align 8, !tbaa !5
  %2207 = icmp ne ptr %2206, null
  br i1 %2207, label %2208, label %2234

2208:                                             ; preds = %2205
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #3
  %2209 = load ptr, ptr %12, align 8, !tbaa !5
  %2210 = load ptr, ptr %9, align 8, !tbaa !5
  %2211 = ptrtoint ptr %2209 to i64
  %2212 = ptrtoint ptr %2210 to i64
  %2213 = sub i64 %2211, %2212
  %2214 = trunc i64 %2213 to i32
  store i32 %2214, ptr %50, align 4, !tbaa !9
  %2215 = load i32, ptr %50, align 4, !tbaa !9
  %2216 = add nsw i32 %2215, 1
  %2217 = icmp sge i32 %2216, 512
  br i1 %2217, label %2218, label %2230

2218:                                             ; preds = %2208
  %2219 = load i32, ptr %50, align 4, !tbaa !9
  %2220 = load i32, ptr %14, align 4, !tbaa !9
  %2221 = add nsw i32 %2220, %2219
  store i32 %2221, ptr %14, align 4, !tbaa !9
  %2222 = load ptr, ptr %7, align 8, !tbaa !5
  %2223 = load ptr, ptr %9, align 8, !tbaa !5
  %2224 = load ptr, ptr %8, align 8, !tbaa !5
  %2225 = load i32, ptr %50, align 4, !tbaa !9
  %2226 = call noundef ptr %2222(ptr noundef %2223, ptr noundef %2224, i32 noundef %2225)
  store ptr %2226, ptr %9, align 8, !tbaa !5
  store ptr %2226, ptr %12, align 8, !tbaa !5
  %2227 = icmp eq ptr null, %2226
  br i1 %2227, label %2228, label %2229

2228:                                             ; preds = %2218
  store i32 12, ptr %20, align 4
  br label %2231

2229:                                             ; preds = %2218
  br label %2230

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

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

2233:                                             ; preds = %2231
  br label %2234

2234:                                             ; preds = %2233, %2205
  br label %2128, !llvm.loop !56

2235:                                             ; preds = %2128
  store i32 0, ptr %20, align 4
  br label %2236

2236:                                             ; preds = %2235, %2231, %2104, %2026
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #3
  %2237 = load i32, ptr %20, align 4
  switch i32 %2237, label %2690 [
    i32 0, label %2238
  ]

2238:                                             ; preds = %2236
  br label %2239

2239:                                             ; preds = %2238, %1932
  %2240 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  %2241 = getelementptr inbounds i8, ptr %2240, i64 1
  store ptr %2241, ptr %34, align 8, !tbaa !5
  br label %2242

2242:                                             ; preds = %2318, %2239
  %2243 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  %2244 = load i8, ptr %2243, align 1, !tbaa !11
  %2245 = icmp ne i8 %2244, 0
  br i1 %2245, label %2246, label %2319

2246:                                             ; preds = %2242
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #3
  %2247 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  %2248 = load i8, ptr %2247, align 1, !tbaa !11
  %2249 = sext i8 %2248 to i32
  store i32 %2249, ptr %51, align 4, !tbaa !9
  %2250 = load ptr, ptr %7, align 8, !tbaa !5
  %2251 = icmp ne ptr %2250, null
  br i1 %2251, label %2252, label %2266

2252:                                             ; preds = %2246
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #3
  %2253 = load ptr, ptr %12, align 8, !tbaa !5
  %2254 = load ptr, ptr %9, align 8, !tbaa !5
  %2255 = ptrtoint ptr %2253 to i64
  %2256 = ptrtoint ptr %2254 to i64
  %2257 = sub i64 %2255, %2256
  %2258 = trunc i64 %2257 to i32
  %2259 = sub nsw i32 512, %2258
  store i32 %2259, ptr %52, align 4, !tbaa !9
  %2260 = load i32, ptr %51, align 4, !tbaa !9
  %2261 = load i32, ptr %52, align 4, !tbaa !9
  %2262 = icmp sgt i32 %2260, %2261
  br i1 %2262, label %2263, label %2265

2263:                                             ; preds = %2252
  %2264 = load i32, ptr %52, align 4, !tbaa !9
  store i32 %2264, ptr %51, align 4, !tbaa !9
  br label %2265

2265:                                             ; preds = %2263, %2252
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #3
  br label %2266

2266:                                             ; preds = %2265, %2246
  %2267 = load i32, ptr %51, align 4, !tbaa !9
  %2268 = trunc i32 %2267 to i8
  %2269 = sext i8 %2268 to i32
  %2270 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  %2271 = load i8, ptr %2270, align 1, !tbaa !11
  %2272 = sext i8 %2271 to i32
  %2273 = sub nsw i32 %2272, %2269
  %2274 = trunc i32 %2273 to i8
  store i8 %2274, ptr %2270, align 1, !tbaa !11
  br label %2275

2275:                                             ; preds = %2278, %2266
  %2276 = load i32, ptr %51, align 4, !tbaa !9
  %2277 = icmp ne i32 %2276, 0
  br i1 %2277, label %2278, label %2286

2278:                                             ; preds = %2275
  %2279 = load ptr, ptr %34, align 8, !tbaa !5
  %2280 = getelementptr inbounds i8, ptr %2279, i32 1
  store ptr %2280, ptr %34, align 8, !tbaa !5
  %2281 = load i8, ptr %2279, align 1, !tbaa !11
  %2282 = load ptr, ptr %12, align 8, !tbaa !5
  %2283 = getelementptr inbounds i8, ptr %2282, i32 1
  store ptr %2283, ptr %12, align 8, !tbaa !5
  store i8 %2281, ptr %2282, align 1, !tbaa !11
  %2284 = load i32, ptr %51, align 4, !tbaa !9
  %2285 = add nsw i32 %2284, -1
  store i32 %2285, ptr %51, align 4, !tbaa !9
  br label %2275, !llvm.loop !57

2286:                                             ; preds = %2275
  %2287 = load ptr, ptr %7, align 8, !tbaa !5
  %2288 = icmp ne ptr %2287, null
  br i1 %2288, label %2289, label %2315

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

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

2309:                                             ; preds = %2299
  store i32 12, ptr %20, align 4
  br label %2312

2310:                                             ; preds = %2299
  br label %2311

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

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

2314:                                             ; preds = %2312
  br label %2315

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

2316:                                             ; preds = %2315, %2312
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #3
  %2317 = load i32, ptr %20, align 4
  switch i32 %2317, label %2690 [
    i32 0, label %2318
  ]

2318:                                             ; preds = %2316
  br label %2242, !llvm.loop !58

2319:                                             ; preds = %2242
  %2320 = load i32, ptr %28, align 4, !tbaa !9
  store i32 %2320, ptr %29, align 4, !tbaa !9
  br label %2321

2321:                                             ; preds = %2403, %2319
  %2322 = load i32, ptr %29, align 4, !tbaa !9
  %2323 = icmp ne i32 %2322, 0
  br i1 %2323, label %2324, label %2404

2324:                                             ; preds = %2321
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #3
  %2325 = load i32, ptr %29, align 4, !tbaa !9
  store i32 %2325, ptr %54, align 4, !tbaa !9
  %2326 = load ptr, ptr %7, align 8, !tbaa !5
  %2327 = icmp ne ptr %2326, null
  br i1 %2327, label %2328, label %2342

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

2339:                                             ; preds = %2328
  %2340 = load i32, ptr %55, align 4, !tbaa !9
  store i32 %2340, ptr %54, align 4, !tbaa !9
  br label %2341

2341:                                             ; preds = %2339, %2328
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #3
  br label %2342

2342:                                             ; preds = %2341, %2324
  %2343 = load i32, ptr %54, align 4, !tbaa !9
  %2344 = load i32, ptr %29, align 4, !tbaa !9
  %2345 = sub i32 %2344, %2343
  store i32 %2345, ptr %29, align 4, !tbaa !9
  br label %2346

2346:                                             ; preds = %2349, %2342
  %2347 = load i32, ptr %54, align 4, !tbaa !9
  %2348 = icmp sge i32 %2347, 4
  br i1 %2348, label %2349, label %2359

2349:                                             ; preds = %2346
  %2350 = load ptr, ptr %26, align 8, !tbaa !5
  %2351 = load i32, ptr %2350, align 4, !tbaa !9
  %2352 = load ptr, ptr %12, align 8, !tbaa !5
  store i32 %2351, ptr %2352, align 4, !tbaa !9
  %2353 = load ptr, ptr %12, align 8, !tbaa !5
  %2354 = getelementptr inbounds i8, ptr %2353, i64 4
  store ptr %2354, ptr %12, align 8, !tbaa !5
  %2355 = load ptr, ptr %26, align 8, !tbaa !5
  %2356 = getelementptr inbounds i8, ptr %2355, i64 4
  store ptr %2356, ptr %26, align 8, !tbaa !5
  %2357 = load i32, ptr %54, align 4, !tbaa !9
  %2358 = sub nsw i32 %2357, 4
  store i32 %2358, ptr %54, align 4, !tbaa !9
  br label %2346, !llvm.loop !59

2359:                                             ; preds = %2346
  br label %2360

2360:                                             ; preds = %2363, %2359
  %2361 = load i32, ptr %54, align 4, !tbaa !9
  %2362 = icmp ne i32 %2361, 0
  br i1 %2362, label %2363, label %2371

2363:                                             ; preds = %2360
  %2364 = load ptr, ptr %26, align 8, !tbaa !5
  %2365 = getelementptr inbounds i8, ptr %2364, i32 1
  store ptr %2365, ptr %26, align 8, !tbaa !5
  %2366 = load i8, ptr %2364, align 1, !tbaa !11
  %2367 = load ptr, ptr %12, align 8, !tbaa !5
  %2368 = getelementptr inbounds i8, ptr %2367, i32 1
  store ptr %2368, ptr %12, align 8, !tbaa !5
  store i8 %2366, ptr %2367, align 1, !tbaa !11
  %2369 = load i32, ptr %54, align 4, !tbaa !9
  %2370 = add nsw i32 %2369, -1
  store i32 %2370, ptr %54, align 4, !tbaa !9
  br label %2360, !llvm.loop !60

2371:                                             ; preds = %2360
  %2372 = load ptr, ptr %7, align 8, !tbaa !5
  %2373 = icmp ne ptr %2372, null
  br i1 %2373, label %2374, label %2400

2374:                                             ; preds = %2371
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #3
  %2375 = load ptr, ptr %12, align 8, !tbaa !5
  %2376 = load ptr, ptr %9, align 8, !tbaa !5
  %2377 = ptrtoint ptr %2375 to i64
  %2378 = ptrtoint ptr %2376 to i64
  %2379 = sub i64 %2377, %2378
  %2380 = trunc i64 %2379 to i32
  store i32 %2380, ptr %56, align 4, !tbaa !9
  %2381 = load i32, ptr %56, align 4, !tbaa !9
  %2382 = add nsw i32 %2381, 1
  %2383 = icmp sge i32 %2382, 512
  br i1 %2383, label %2384, label %2396

2384:                                             ; preds = %2374
  %2385 = load i32, ptr %56, align 4, !tbaa !9
  %2386 = load i32, ptr %14, align 4, !tbaa !9
  %2387 = add nsw i32 %2386, %2385
  store i32 %2387, ptr %14, align 4, !tbaa !9
  %2388 = load ptr, ptr %7, align 8, !tbaa !5
  %2389 = load ptr, ptr %9, align 8, !tbaa !5
  %2390 = load ptr, ptr %8, align 8, !tbaa !5
  %2391 = load i32, ptr %56, align 4, !tbaa !9
  %2392 = call noundef ptr %2388(ptr noundef %2389, ptr noundef %2390, i32 noundef %2391)
  store ptr %2392, ptr %9, align 8, !tbaa !5
  store ptr %2392, ptr %12, align 8, !tbaa !5
  %2393 = icmp eq ptr null, %2392
  br i1 %2393, label %2394, label %2395

2394:                                             ; preds = %2384
  store i32 12, ptr %20, align 4
  br label %2397

2395:                                             ; preds = %2384
  br label %2396

2396:                                             ; preds = %2395, %2374
  store i32 0, ptr %20, align 4
  br label %2397

2397:                                             ; preds = %2396, %2394
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #3
  %2398 = load i32, ptr %20, align 4
  switch i32 %2398, label %2401 [
    i32 0, label %2399
  ]

2399:                                             ; preds = %2397
  br label %2400

2400:                                             ; preds = %2399, %2371
  store i32 0, ptr %20, align 4
  br label %2401

2401:                                             ; preds = %2400, %2397
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #3
  %2402 = load i32, ptr %20, align 4
  switch i32 %2402, label %2690 [
    i32 0, label %2403
  ]

2403:                                             ; preds = %2401
  br label %2321, !llvm.loop !61

2404:                                             ; preds = %2321
  br label %2405

2405:                                             ; preds = %2495, %2404
  %2406 = load i32, ptr %17, align 4, !tbaa !9
  %2407 = icmp ne i32 %2406, 0
  br i1 %2407, label %2408, label %2496

2408:                                             ; preds = %2405
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #3
  %2409 = load i32, ptr %17, align 4, !tbaa !9
  store i32 %2409, ptr %57, align 4, !tbaa !9
  %2410 = load ptr, ptr %7, align 8, !tbaa !5
  %2411 = icmp ne ptr %2410, null
  br i1 %2411, label %2412, label %2426

2412:                                             ; preds = %2408
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #3
  %2413 = load ptr, ptr %12, align 8, !tbaa !5
  %2414 = load ptr, ptr %9, align 8, !tbaa !5
  %2415 = ptrtoint ptr %2413 to i64
  %2416 = ptrtoint ptr %2414 to i64
  %2417 = sub i64 %2415, %2416
  %2418 = trunc i64 %2417 to i32
  %2419 = sub nsw i32 512, %2418
  store i32 %2419, ptr %58, align 4, !tbaa !9
  %2420 = load i32, ptr %57, align 4, !tbaa !9
  %2421 = load i32, ptr %58, align 4, !tbaa !9
  %2422 = icmp sgt i32 %2420, %2421
  br i1 %2422, label %2423, label %2425

2423:                                             ; preds = %2412
  %2424 = load i32, ptr %58, align 4, !tbaa !9
  store i32 %2424, ptr %57, align 4, !tbaa !9
  br label %2425

2425:                                             ; preds = %2423, %2412
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #3
  br label %2426

2426:                                             ; preds = %2425, %2408
  %2427 = load i32, ptr %57, align 4, !tbaa !9
  %2428 = load i32, ptr %17, align 4, !tbaa !9
  %2429 = sub nsw i32 %2428, %2427
  store i32 %2429, ptr %17, align 4, !tbaa !9
  br label %2430

2430:                                             ; preds = %2439, %2426
  %2431 = load i32, ptr %57, align 4, !tbaa !9
  %2432 = icmp ne i32 %2431, 0
  br i1 %2432, label %2433, label %2444

2433:                                             ; preds = %2430
  %2434 = load ptr, ptr %12, align 8, !tbaa !5
  %2435 = ptrtoint ptr %2434 to i64
  %2436 = and i64 %2435, 3
  %2437 = icmp eq i64 %2436, 0
  br i1 %2437, label %2438, label %2439

2438:                                             ; preds = %2433
  br label %2444

2439:                                             ; preds = %2433
  %2440 = load ptr, ptr %12, align 8, !tbaa !5
  %2441 = getelementptr inbounds i8, ptr %2440, i32 1
  store ptr %2441, ptr %12, align 8, !tbaa !5
  store i8 48, ptr %2440, align 1, !tbaa !11
  %2442 = load i32, ptr %57, align 4, !tbaa !9
  %2443 = add nsw i32 %2442, -1
  store i32 %2443, ptr %57, align 4, !tbaa !9
  br label %2430, !llvm.loop !62

2444:                                             ; preds = %2438, %2430
  br label %2445

2445:                                             ; preds = %2448, %2444
  %2446 = load i32, ptr %57, align 4, !tbaa !9
  %2447 = icmp sge i32 %2446, 4
  br i1 %2447, label %2448, label %2454

2448:                                             ; preds = %2445
  %2449 = load ptr, ptr %12, align 8, !tbaa !5
  store i32 808464432, ptr %2449, align 4, !tbaa !9
  %2450 = load ptr, ptr %12, align 8, !tbaa !5
  %2451 = getelementptr inbounds i8, ptr %2450, i64 4
  store ptr %2451, ptr %12, align 8, !tbaa !5
  %2452 = load i32, ptr %57, align 4, !tbaa !9
  %2453 = sub nsw i32 %2452, 4
  store i32 %2453, ptr %57, align 4, !tbaa !9
  br label %2445, !llvm.loop !63

2454:                                             ; preds = %2445
  br label %2455

2455:                                             ; preds = %2458, %2454
  %2456 = load i32, ptr %57, align 4, !tbaa !9
  %2457 = icmp ne i32 %2456, 0
  br i1 %2457, label %2458, label %2463

2458:                                             ; preds = %2455
  %2459 = load ptr, ptr %12, align 8, !tbaa !5
  %2460 = getelementptr inbounds i8, ptr %2459, i32 1
  store ptr %2460, ptr %12, align 8, !tbaa !5
  store i8 48, ptr %2459, align 1, !tbaa !11
  %2461 = load i32, ptr %57, align 4, !tbaa !9
  %2462 = add nsw i32 %2461, -1
  store i32 %2462, ptr %57, align 4, !tbaa !9
  br label %2455, !llvm.loop !64

2463:                                             ; preds = %2455
  %2464 = load ptr, ptr %7, align 8, !tbaa !5
  %2465 = icmp ne ptr %2464, null
  br i1 %2465, label %2466, label %2492

2466:                                             ; preds = %2463
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #3
  %2467 = load ptr, ptr %12, align 8, !tbaa !5
  %2468 = load ptr, ptr %9, align 8, !tbaa !5
  %2469 = ptrtoint ptr %2467 to i64
  %2470 = ptrtoint ptr %2468 to i64
  %2471 = sub i64 %2469, %2470
  %2472 = trunc i64 %2471 to i32
  store i32 %2472, ptr %59, align 4, !tbaa !9
  %2473 = load i32, ptr %59, align 4, !tbaa !9
  %2474 = add nsw i32 %2473, 1
  %2475 = icmp sge i32 %2474, 512
  br i1 %2475, label %2476, label %2488

2476:                                             ; preds = %2466
  %2477 = load i32, ptr %59, align 4, !tbaa !9
  %2478 = load i32, ptr %14, align 4, !tbaa !9
  %2479 = add nsw i32 %2478, %2477
  store i32 %2479, ptr %14, align 4, !tbaa !9
  %2480 = load ptr, ptr %7, align 8, !tbaa !5
  %2481 = load ptr, ptr %9, align 8, !tbaa !5
  %2482 = load ptr, ptr %8, align 8, !tbaa !5
  %2483 = load i32, ptr %59, align 4, !tbaa !9
  %2484 = call noundef ptr %2480(ptr noundef %2481, ptr noundef %2482, i32 noundef %2483)
  store ptr %2484, ptr %9, align 8, !tbaa !5
  store ptr %2484, ptr %12, align 8, !tbaa !5
  %2485 = icmp eq ptr null, %2484
  br i1 %2485, label %2486, label %2487

2486:                                             ; preds = %2476
  store i32 12, ptr %20, align 4
  br label %2489

2487:                                             ; preds = %2476
  br label %2488

2488:                                             ; preds = %2487, %2466
  store i32 0, ptr %20, align 4
  br label %2489

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

2491:                                             ; preds = %2489
  br label %2492

2492:                                             ; preds = %2491, %2463
  store i32 0, ptr %20, align 4
  br label %2493

2493:                                             ; preds = %2492, %2489
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #3
  %2494 = load i32, ptr %20, align 4
  switch i32 %2494, label %2690 [
    i32 0, label %2495
  ]

2495:                                             ; preds = %2493
  br label %2405, !llvm.loop !65

2496:                                             ; preds = %2405
  %2497 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 0
  %2498 = getelementptr inbounds i8, ptr %2497, i64 1
  store ptr %2498, ptr %34, align 8, !tbaa !5
  br label %2499

2499:                                             ; preds = %2575, %2496
  %2500 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 0
  %2501 = load i8, ptr %2500, align 1, !tbaa !11
  %2502 = icmp ne i8 %2501, 0
  br i1 %2502, label %2503, label %2576

2503:                                             ; preds = %2499
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #3
  %2504 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 0
  %2505 = load i8, ptr %2504, align 1, !tbaa !11
  %2506 = sext i8 %2505 to i32
  store i32 %2506, ptr %60, align 4, !tbaa !9
  %2507 = load ptr, ptr %7, align 8, !tbaa !5
  %2508 = icmp ne ptr %2507, null
  br i1 %2508, label %2509, label %2523

2509:                                             ; preds = %2503
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #3
  %2510 = load ptr, ptr %12, align 8, !tbaa !5
  %2511 = load ptr, ptr %9, align 8, !tbaa !5
  %2512 = ptrtoint ptr %2510 to i64
  %2513 = ptrtoint ptr %2511 to i64
  %2514 = sub i64 %2512, %2513
  %2515 = trunc i64 %2514 to i32
  %2516 = sub nsw i32 512, %2515
  store i32 %2516, ptr %61, align 4, !tbaa !9
  %2517 = load i32, ptr %60, align 4, !tbaa !9
  %2518 = load i32, ptr %61, align 4, !tbaa !9
  %2519 = icmp sgt i32 %2517, %2518
  br i1 %2519, label %2520, label %2522

2520:                                             ; preds = %2509
  %2521 = load i32, ptr %61, align 4, !tbaa !9
  store i32 %2521, ptr %60, align 4, !tbaa !9
  br label %2522

2522:                                             ; preds = %2520, %2509
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #3
  br label %2523

2523:                                             ; preds = %2522, %2503
  %2524 = load i32, ptr %60, align 4, !tbaa !9
  %2525 = trunc i32 %2524 to i8
  %2526 = sext i8 %2525 to i32
  %2527 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 0
  %2528 = load i8, ptr %2527, align 1, !tbaa !11
  %2529 = sext i8 %2528 to i32
  %2530 = sub nsw i32 %2529, %2526
  %2531 = trunc i32 %2530 to i8
  store i8 %2531, ptr %2527, align 1, !tbaa !11
  br label %2532

2532:                                             ; preds = %2535, %2523
  %2533 = load i32, ptr %60, align 4, !tbaa !9
  %2534 = icmp ne i32 %2533, 0
  br i1 %2534, label %2535, label %2543

2535:                                             ; preds = %2532
  %2536 = load ptr, ptr %34, align 8, !tbaa !5
  %2537 = getelementptr inbounds i8, ptr %2536, i32 1
  store ptr %2537, ptr %34, align 8, !tbaa !5
  %2538 = load i8, ptr %2536, align 1, !tbaa !11
  %2539 = load ptr, ptr %12, align 8, !tbaa !5
  %2540 = getelementptr inbounds i8, ptr %2539, i32 1
  store ptr %2540, ptr %12, align 8, !tbaa !5
  store i8 %2538, ptr %2539, align 1, !tbaa !11
  %2541 = load i32, ptr %60, align 4, !tbaa !9
  %2542 = add nsw i32 %2541, -1
  store i32 %2542, ptr %60, align 4, !tbaa !9
  br label %2532, !llvm.loop !66

2543:                                             ; preds = %2532
  %2544 = load ptr, ptr %7, align 8, !tbaa !5
  %2545 = icmp ne ptr %2544, null
  br i1 %2545, label %2546, label %2572

2546:                                             ; preds = %2543
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #3
  %2547 = load ptr, ptr %12, align 8, !tbaa !5
  %2548 = load ptr, ptr %9, align 8, !tbaa !5
  %2549 = ptrtoint ptr %2547 to i64
  %2550 = ptrtoint ptr %2548 to i64
  %2551 = sub i64 %2549, %2550
  %2552 = trunc i64 %2551 to i32
  store i32 %2552, ptr %62, align 4, !tbaa !9
  %2553 = load i32, ptr %62, align 4, !tbaa !9
  %2554 = add nsw i32 %2553, 1
  %2555 = icmp sge i32 %2554, 512
  br i1 %2555, label %2556, label %2568

2556:                                             ; preds = %2546
  %2557 = load i32, ptr %62, align 4, !tbaa !9
  %2558 = load i32, ptr %14, align 4, !tbaa !9
  %2559 = add nsw i32 %2558, %2557
  store i32 %2559, ptr %14, align 4, !tbaa !9
  %2560 = load ptr, ptr %7, align 8, !tbaa !5
  %2561 = load ptr, ptr %9, align 8, !tbaa !5
  %2562 = load ptr, ptr %8, align 8, !tbaa !5
  %2563 = load i32, ptr %62, align 4, !tbaa !9
  %2564 = call noundef ptr %2560(ptr noundef %2561, ptr noundef %2562, i32 noundef %2563)
  store ptr %2564, ptr %9, align 8, !tbaa !5
  store ptr %2564, ptr %12, align 8, !tbaa !5
  %2565 = icmp eq ptr null, %2564
  br i1 %2565, label %2566, label %2567

2566:                                             ; preds = %2556
  store i32 12, ptr %20, align 4
  br label %2569

2567:                                             ; preds = %2556
  br label %2568

2568:                                             ; preds = %2567, %2546
  store i32 0, ptr %20, align 4
  br label %2569

2569:                                             ; preds = %2568, %2566
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #3
  %2570 = load i32, ptr %20, align 4
  switch i32 %2570, label %2573 [
    i32 0, label %2571
  ]

2571:                                             ; preds = %2569
  br label %2572

2572:                                             ; preds = %2571, %2543
  store i32 0, ptr %20, align 4
  br label %2573

2573:                                             ; preds = %2572, %2569
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #3
  %2574 = load i32, ptr %20, align 4
  switch i32 %2574, label %2690 [
    i32 0, label %2575
  ]

2575:                                             ; preds = %2573
  br label %2499, !llvm.loop !67

2576:                                             ; preds = %2499
  %2577 = load i32, ptr %18, align 4, !tbaa !9
  %2578 = and i32 %2577, 1
  %2579 = icmp ne i32 %2578, 0
  br i1 %2579, label %2580, label %2676

2580:                                             ; preds = %2576
  %2581 = load i32, ptr %15, align 4, !tbaa !9
  %2582 = icmp sgt i32 %2581, 0
  br i1 %2582, label %2583, label %2675

2583:                                             ; preds = %2580
  br label %2584

2584:                                             ; preds = %2673, %2583
  %2585 = load i32, ptr %15, align 4, !tbaa !9
  %2586 = icmp ne i32 %2585, 0
  br i1 %2586, label %2587, label %2674

2587:                                             ; preds = %2584
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #3
  %2588 = load i32, ptr %15, align 4, !tbaa !9
  store i32 %2588, ptr %63, align 4, !tbaa !9
  %2589 = load ptr, ptr %7, align 8, !tbaa !5
  %2590 = icmp ne ptr %2589, null
  br i1 %2590, label %2591, label %2605

2591:                                             ; preds = %2587
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #3
  %2592 = load ptr, ptr %12, align 8, !tbaa !5
  %2593 = load ptr, ptr %9, align 8, !tbaa !5
  %2594 = ptrtoint ptr %2592 to i64
  %2595 = ptrtoint ptr %2593 to i64
  %2596 = sub i64 %2594, %2595
  %2597 = trunc i64 %2596 to i32
  %2598 = sub nsw i32 512, %2597
  store i32 %2598, ptr %64, align 4, !tbaa !9
  %2599 = load i32, ptr %63, align 4, !tbaa !9
  %2600 = load i32, ptr %64, align 4, !tbaa !9
  %2601 = icmp sgt i32 %2599, %2600
  br i1 %2601, label %2602, label %2604

2602:                                             ; preds = %2591
  %2603 = load i32, ptr %64, align 4, !tbaa !9
  store i32 %2603, ptr %63, align 4, !tbaa !9
  br label %2604

2604:                                             ; preds = %2602, %2591
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #3
  br label %2605

2605:                                             ; preds = %2604, %2587
  %2606 = load i32, ptr %63, align 4, !tbaa !9
  %2607 = load i32, ptr %15, align 4, !tbaa !9
  %2608 = sub nsw i32 %2607, %2606
  store i32 %2608, ptr %15, align 4, !tbaa !9
  br label %2609

2609:                                             ; preds = %2618, %2605
  %2610 = load i32, ptr %63, align 4, !tbaa !9
  %2611 = icmp ne i32 %2610, 0
  br i1 %2611, label %2612, label %2623

2612:                                             ; preds = %2609
  %2613 = load ptr, ptr %12, align 8, !tbaa !5
  %2614 = ptrtoint ptr %2613 to i64
  %2615 = and i64 %2614, 3
  %2616 = icmp eq i64 %2615, 0
  br i1 %2616, label %2617, label %2618

2617:                                             ; preds = %2612
  br label %2623

2618:                                             ; preds = %2612
  %2619 = load ptr, ptr %12, align 8, !tbaa !5
  %2620 = getelementptr inbounds i8, ptr %2619, i32 1
  store ptr %2620, ptr %12, align 8, !tbaa !5
  store i8 32, ptr %2619, align 1, !tbaa !11
  %2621 = load i32, ptr %63, align 4, !tbaa !9
  %2622 = add nsw i32 %2621, -1
  store i32 %2622, ptr %63, align 4, !tbaa !9
  br label %2609, !llvm.loop !68

2623:                                             ; preds = %2617, %2609
  br label %2624

2624:                                             ; preds = %2627, %2623
  %2625 = load i32, ptr %63, align 4, !tbaa !9
  %2626 = icmp sge i32 %2625, 4
  br i1 %2626, label %2627, label %2633

2627:                                             ; preds = %2624
  %2628 = load ptr, ptr %12, align 8, !tbaa !5
  store i32 538976288, ptr %2628, align 4, !tbaa !9
  %2629 = load ptr, ptr %12, align 8, !tbaa !5
  %2630 = getelementptr inbounds i8, ptr %2629, i64 4
  store ptr %2630, ptr %12, align 8, !tbaa !5
  %2631 = load i32, ptr %63, align 4, !tbaa !9
  %2632 = sub nsw i32 %2631, 4
  store i32 %2632, ptr %63, align 4, !tbaa !9
  br label %2624, !llvm.loop !69

2633:                                             ; preds = %2624
  br label %2634

2634:                                             ; preds = %2638, %2633
  %2635 = load i32, ptr %63, align 4, !tbaa !9
  %2636 = add nsw i32 %2635, -1
  store i32 %2636, ptr %63, align 4, !tbaa !9
  %2637 = icmp ne i32 %2635, 0
  br i1 %2637, label %2638, label %2641

2638:                                             ; preds = %2634
  %2639 = load ptr, ptr %12, align 8, !tbaa !5
  %2640 = getelementptr inbounds i8, ptr %2639, i32 1
  store ptr %2640, ptr %12, align 8, !tbaa !5
  store i8 32, ptr %2639, align 1, !tbaa !11
  br label %2634, !llvm.loop !70

2641:                                             ; preds = %2634
  %2642 = load ptr, ptr %7, align 8, !tbaa !5
  %2643 = icmp ne ptr %2642, null
  br i1 %2643, label %2644, label %2670

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

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

2664:                                             ; preds = %2654
  store i32 12, ptr %20, align 4
  br label %2667

2665:                                             ; preds = %2654
  br label %2666

2666:                                             ; preds = %2665, %2644
  store i32 0, ptr %20, align 4
  br label %2667

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

2669:                                             ; preds = %2667
  br label %2670

2670:                                             ; preds = %2669, %2641
  store i32 0, ptr %20, align 4
  br label %2671

2671:                                             ; preds = %2670, %2667
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #3
  %2672 = load i32, ptr %20, align 4
  switch i32 %2672, label %2690 [
    i32 0, label %2673
  ]

2673:                                             ; preds = %2671
  br label %2584, !llvm.loop !71

2674:                                             ; preds = %2584
  br label %2675

2675:                                             ; preds = %2674, %2580
  br label %2676

2676:                                             ; preds = %2675, %2576
  br label %2687

2677:                                             ; preds = %442
  %2678 = getelementptr inbounds [512 x i8], ptr %23, i64 0, i64 0
  %2679 = getelementptr inbounds i8, ptr %2678, i64 512
  %2680 = getelementptr inbounds i8, ptr %2679, i64 -1
  store ptr %2680, ptr %26, align 8, !tbaa !5
  %2681 = load ptr, ptr %13, align 8, !tbaa !5
  %2682 = getelementptr inbounds i8, ptr %2681, i64 0
  %2683 = load i8, ptr %2682, align 1, !tbaa !11
  %2684 = load ptr, ptr %26, align 8, !tbaa !5
  store i8 %2683, ptr %2684, align 1, !tbaa !11
  store i32 1, ptr %28, align 4, !tbaa !9
  store i32 0, ptr %18, align 4, !tbaa !9
  store i32 0, ptr %15, align 4, !tbaa !9
  %2685 = getelementptr inbounds [8 x i8], ptr %24, i64 0, i64 0
  store i8 0, ptr %2685, align 1, !tbaa !11
  %2686 = getelementptr inbounds [8 x i8], ptr %25, i64 0, i64 0
  store i8 0, ptr %2686, 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 %1881

2687:                                             ; preds = %2676, %583
  %2688 = load ptr, ptr %13, align 8, !tbaa !5
  %2689 = getelementptr inbounds i8, ptr %2688, i32 1
  store ptr %2689, ptr %13, align 8, !tbaa !5
  store i32 0, ptr %20, align 4
  br label %2690

2690:                                             ; preds = %2687, %2671, %2573, %2493, %2401, %2316, %2236, %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
  %2691 = load i32, ptr %20, align 4
  switch i32 %2691, label %2734 [
    i32 0, label %2692
    i32 11, label %2693
    i32 12, label %2725
  ]

2692:                                             ; preds = %2690
  br label %69, !llvm.loop !72

2693:                                             ; preds = %2690
  %2694 = load ptr, ptr %7, align 8, !tbaa !5
  %2695 = icmp ne ptr %2694, null
  br i1 %2695, label %2698, label %2696

2696:                                             ; preds = %2693
  %2697 = load ptr, ptr %12, align 8, !tbaa !5
  store i8 0, ptr %2697, align 1, !tbaa !11
  br label %2724

2698:                                             ; preds = %2693
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #3
  %2699 = load ptr, ptr %12, align 8, !tbaa !5
  %2700 = load ptr, ptr %9, align 8, !tbaa !5
  %2701 = ptrtoint ptr %2699 to i64
  %2702 = ptrtoint ptr %2700 to i64
  %2703 = sub i64 %2701, %2702
  %2704 = trunc i64 %2703 to i32
  store i32 %2704, ptr %66, align 4, !tbaa !9
  %2705 = load i32, ptr %66, align 4, !tbaa !9
  %2706 = add nsw i32 %2705, 511
  %2707 = icmp sge i32 %2706, 512
  br i1 %2707, label %2708, label %2720

2708:                                             ; preds = %2698
  %2709 = load i32, ptr %66, align 4, !tbaa !9
  %2710 = load i32, ptr %14, align 4, !tbaa !9
  %2711 = add nsw i32 %2710, %2709
  store i32 %2711, ptr %14, align 4, !tbaa !9
  %2712 = load ptr, ptr %7, align 8, !tbaa !5
  %2713 = load ptr, ptr %9, align 8, !tbaa !5
  %2714 = load ptr, ptr %8, align 8, !tbaa !5
  %2715 = load i32, ptr %66, align 4, !tbaa !9
  %2716 = call noundef ptr %2712(ptr noundef %2713, ptr noundef %2714, i32 noundef %2715)
  store ptr %2716, ptr %9, align 8, !tbaa !5
  store ptr %2716, ptr %12, align 8, !tbaa !5
  %2717 = icmp eq ptr null, %2716
  br i1 %2717, label %2718, label %2719

2718:                                             ; preds = %2708
  store i32 12, ptr %20, align 4
  br label %2721

2719:                                             ; preds = %2708
  br label %2720

2720:                                             ; preds = %2719, %2698
  store i32 0, ptr %20, align 4
  br label %2721

2721:                                             ; preds = %2720, %2718
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #3
  %2722 = load i32, ptr %20, align 4
  switch i32 %2722, label %2734 [
    i32 0, label %2723
    i32 12, label %2725
  ]

2723:                                             ; preds = %2721
  br label %2724

2724:                                             ; preds = %2723, %2696
  br label %2725

2725:                                             ; preds = %2724, %2721, %2690
  %2726 = load i32, ptr %14, align 4, !tbaa !9
  %2727 = load ptr, ptr %12, align 8, !tbaa !5
  %2728 = load ptr, ptr %9, align 8, !tbaa !5
  %2729 = ptrtoint ptr %2727 to i64
  %2730 = ptrtoint ptr %2728 to i64
  %2731 = sub i64 %2729, %2730
  %2732 = trunc i64 %2731 to i32
  %2733 = add nsw i32 %2726, %2732
  store i32 %2733, ptr %6, align 4
  store i32 1, ptr %20, align 4
  br label %2734

2734:                                             ; preds = %2725, %2721, %2690
  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
  %2735 = load i32, ptr %6, align 4
  ret i32 %2735

2736:                                             ; preds = %1855, %526, %171
  unreachable
}

; 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) #1

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #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"

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

@_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.2 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [6 x i8], align 1
@_ZL16stbsp__digitpair = external hidden local_unnamed_addr global %struct.anon.0, align 2

; 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
  %.not1091 = 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 = %.backedge2370, %5
  %.1761 = phi i32 [ 0, %5 ], [ %.1761.be, %.backedge2370 ]
  %.1747 = phi ptr [ %3, %5 ], [ %.1747.be, %.backedge2370 ]
  %.1692 = phi ptr [ %2, %5 ], [ %.1692.be, %.backedge2370 ]
  %.1 = phi ptr [ %2, %5 ], [ %.1.be, %.backedge2370 ]
  %32 = ptrtoint ptr %.1747 to i64
  %33 = and i64 %32, 3
  %.not = icmp eq i64 %33, 0
  br i1 %.not, label %.preheader1454, label %..thread1262_crit_edge

..thread1262_crit_edge:                           ; preds = %31
  %.pre = load i8, ptr %.1747, align 1, !tbaa !5
  br label %.thread1262

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

.lr.ph:                                           ; preds = %.preheader1454
  %41 = ptrtoint ptr %.1 to i64
  br i1 %.not1091, 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
  %.not1090.us2273 = icmp eq i32 %43, 0
  br i1 %.not1090.us2273, label %.lr.ph2276, label %thread-pre-split

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

.lr.ph2276:                                       ; preds = %.lr.ph.split.us.preheader, %.lr.ph.split.us
  %.47501534.us2275 = phi ptr [ %48, %.lr.ph.split.us ], [ %.1747, %.lr.ph.split.us.preheader ]
  %.76981535.us2274 = phi ptr [ %47, %.lr.ph.split.us ], [ %.1692, %.lr.ph.split.us.preheader ]
  %46 = phi i32 [ %49, %.lr.ph.split.us ], [ %34, %.lr.ph.split.us.preheader ]
  store i32 %46, ptr %.76981535.us2274, align 4, !tbaa !8
  %47 = getelementptr inbounds i8, ptr %.76981535.us2274, i64 4
  %48 = getelementptr inbounds i8, ptr %.47501534.us2275, 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
  %.not1089.us = icmp eq i32 %54, 0
  br i1 %.not1089.us, label %.lr.ph.split.us, label %.thread1262.loopexit

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

.thread1262:                                      ; preds = %83, %79, %.thread1262.loopexit, %..thread1262_crit_edge, %.preheader1454
  %56 = phi i8 [ %.pre, %..thread1262_crit_edge ], [ %40, %.preheader1454 ], [ %55, %.thread1262.loopexit ], [ %92, %83 ], [ %74, %79 ]
  %.2748 = phi ptr [ %.1747, %..thread1262_crit_edge ], [ %.1747, %.preheader1454 ], [ %48, %.thread1262.loopexit ], [ %85, %83 ], [ %.47501534, %79 ]
  %.2693 = phi ptr [ %.1692, %..thread1262_crit_edge ], [ %.1692, %.preheader1454 ], [ %47, %.thread1262.loopexit ], [ %84, %83 ], [ %.76981535, %79 ]
  %57 = icmp eq i8 %56, 37
  br i1 %57, label %.preheader2365, 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, %.thread1262
  %59 = phi i8 [ %56, %.thread1262 ], [ %40, %.lr.ph.split.us.preheader ], [ %58, %thread-pre-split.loopexit ], [ %74, %.lr.ph.split ]
  %.3749 = phi ptr [ %.2748, %.thread1262 ], [ %.1747, %.lr.ph.split.us.preheader ], [ %48, %thread-pre-split.loopexit ], [ %.47501534, %.lr.ph.split ]
  %.3694 = phi ptr [ %.2693, %.thread1262 ], [ %.1692, %.lr.ph.split.us.preheader ], [ %47, %thread-pre-split.loopexit ], [ %.76981535, %.lr.ph.split ]
  %60 = icmp eq i8 %59, 0
  br i1 %60, label %1376, label %61

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

62:                                               ; preds = %61
  %63 = ptrtoint ptr %.3694 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 %.1761, %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 %.thread1420, label %..thread_crit_edge

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

.thread:                                          ; preds = %..thread_crit_edge, %62, %61
  %72 = phi i8 [ %59, %61 ], [ %59, %62 ], [ %.pre2055, %..thread_crit_edge ]
  %.4764 = phi i32 [ %.1761, %61 ], [ %.1761, %62 ], [ %69, %..thread_crit_edge ]
  %.6697 = phi ptr [ %.3694, %61 ], [ %.3694, %62 ], [ %70, %..thread_crit_edge ]
  %.4 = phi ptr [ %.1, %61 ], [ %.1, %62 ], [ %70, %..thread_crit_edge ]
  %73 = getelementptr inbounds i8, ptr %.6697, i64 1
  store i8 %72, ptr %.6697, align 1, !tbaa !5
  br label %.backedge2370

.backedge2370:                                    ; preds = %._crit_edge1848, %269, %1339, %.thread
  %.1761.be = phi i32 [ %.4764, %.thread ], [ %.35795.lcssa, %._crit_edge1848 ], [ %.1761, %269 ], [ %.44804.ph, %1339 ]
  %.3749.pn = phi ptr [ %.3749, %.thread ], [ %.12758, %1339 ], [ %.12758, %269 ], [ %.12758, %._crit_edge1848 ]
  %.1692.be = phi ptr [ %73, %.thread ], [ %.54.lcssa, %._crit_edge1848 ], [ %.2693, %269 ], [ %.67.ph, %1339 ]
  %.1.be = phi ptr [ %.4, %.thread ], [ %.35.lcssa, %._crit_edge1848 ], [ %.1, %269 ], [ %.44.ph, %1339 ]
  %.1747.be = getelementptr inbounds i8, ptr %.3749.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 ]
  %.76981535 = phi ptr [ %84, %83 ], [ %.1692, %.lr.ph ]
  %.47501534 = phi ptr [ %85, %83 ], [ %.1747, %.lr.ph ]
  %77 = add i32 %76, -16843009
  %78 = and i32 %75, %77
  %.not1090 = icmp eq i32 %78, 0
  br i1 %.not1090, label %79, label %thread-pre-split

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

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

.preheader2365:                                   ; preds = %.thread1262, %.backedge
  %.0848 = phi i32 [ %95, %.backedge ], [ 0, %.thread1262 ]
  %.2748.pn = phi ptr [ %.6752, %.backedge ], [ %.2748, %.thread1262 ]
  %.6752 = getelementptr inbounds i8, ptr %.2748.pn, i64 1
  %93 = load i8, ptr %.6752, align 1, !tbaa !5
  switch i8 %93, label %.loopexit1480 [
    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 = %.preheader2365
  br label %.backedge

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

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

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

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

99:                                               ; preds = %.preheader2365
  %100 = and i32 %.0848, 256
  %.not1094 = icmp eq i32 %100, 0
  br i1 %.not1094, label %.backedge, label %101

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

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

104:                                              ; preds = %.preheader2365
  %105 = or i32 %.0848, 16
  %106 = getelementptr inbounds i8, ptr %.2748.pn, i64 2
  %.pr1272 = load i8, ptr %106, align 1, !tbaa !5
  br label %.loopexit1480

.loopexit1480:                                    ; preds = %.preheader2365, %104
  %107 = phi i8 [ %.pr1272, %104 ], [ %93, %.preheader2365 ]
  %.2850 = phi i32 [ %105, %104 ], [ %.0848, %.preheader2365 ]
  %.7753 = phi ptr [ %106, %104 ], [ %.6752, %.preheader2365 ]
  %108 = icmp eq i8 %107, 42
  br i1 %108, label %110, label %.preheader1479

.preheader1479:                                   ; preds = %.loopexit1480
  %109 = add i8 %107, -48
  %or.cond12051543 = icmp ult i8 %109, 10
  br i1 %or.cond12051543, label %.lr.ph1546, label %.critedge

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

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

.critedge:                                        ; preds = %.lr.ph1546, %.preheader1479, %121
  %133 = phi i8 [ %.pr1273, %121 ], [ %107, %.preheader1479 ], [ %131, %.lr.ph1546 ]
  %.1814 = phi i32 [ %123, %121 ], [ 0, %.preheader1479 ], [ %129, %.lr.ph1546 ]
  %.9755 = phi ptr [ %124, %121 ], [ %.7753, %.preheader1479 ], [ %130, %.lr.ph1546 ]
  %134 = icmp eq i8 %133, 46
  br i1 %134, label %135, label %.critedge16

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

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

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

.critedge16:                                      ; preds = %.lr.ph1553, %151, %.critedge, %.preheader1478
  %163 = phi i8 [ %137, %.preheader1478 ], [ %133, %.critedge ], [ %.pr1274.pre, %151 ], [ %161, %.lr.ph1553 ]
  %.1824 = phi i32 [ 0, %.preheader1478 ], [ -1, %.critedge ], [ %153, %151 ], [ %159, %.lr.ph1553 ]
  %.11757 = phi ptr [ %136, %.preheader1478 ], [ %.9755, %.critedge ], [ %154, %151 ], [ %160, %.lr.ph1553 ]
  switch i8 %163, label %202 [
    i8 104, label %164
    i8 108, label %170
    i8 106, label %176
    i8 122, label %179
    i8 116, label %182
    i8 73, label %185
  ]

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

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

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

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

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

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

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

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

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

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

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

202:                                              ; preds = %170, %164, %.critedge16, %192, %.thread1275, %199, %182, %179, %176
  %.3851 = phi i32 [ %.2850, %.critedge16 ], [ %193, %192 ], [ %.2850, %199 ], [ %201, %.thread1275 ], [ %183, %182 ], [ %180, %179 ], [ %177, %176 ], [ %165, %164 ], [ %171, %170 ]
  %.12758 = phi ptr [ %.11757, %.critedge16 ], [ %194, %192 ], [ %200, %199 ], [ %186, %.thread1275 ], [ %184, %182 ], [ %181, %179 ], [ %178, %176 ], [ %spec.select, %164 ], [ %spec.select1207, %170 ]
  %203 = load i8, ptr %.12758, align 1, !tbaa !5
  switch i8 %203, label %1375 [
    i8 115, label %204
    i8 99, label %243
    i8 110, label %258
    i8 65, label %277
    i8 97, label %277
    i8 71, label %404
    i8 103, label %404
    i8 69, label %458
    i8 101, label %458
    i8 102, label %553
    i8 66, label %794
    i8 98, label %794
    i8 111, label %800
    i8 112, label %804
    i8 88, label %807
    i8 120, label %807
    i8 117, label %893
    i8 105, label %893
    i8 100, label %893
  ]

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

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

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

215:                                              ; preds = %212, %207
  %216 = phi ptr [ %210, %207 ], [ %213, %212 ]
  %217 = load ptr, ptr %216, align 8, !tbaa !15
  %218 = icmp eq ptr %217, null
  %spec.store.select = select i1 %218, ptr @.str.2, ptr %217
  %219 = ptrtoint ptr %spec.store.select to i64
  %220 = icmp sgt i32 %.1824, -1
  br label %221

221:                                              ; preds = %.thread1276, %215
  %storemerge1154 = phi ptr [ %spec.store.select, %215 ], [ %227, %.thread1276 ]
  store ptr %storemerge1154, ptr %13, align 8, !tbaa !15
  %222 = ptrtoint ptr %storemerge1154 to i64
  %223 = and i64 %222, 3
  %224 = icmp eq i64 %223, 0
  br i1 %224, label %228, label %.thread1276

.thread1276:                                      ; preds = %240, %.lr.ph1685, %232, %221
  %.promoted16811688 = phi ptr [ %storemerge1154, %221 ], [ %storemerge1154, %232 ], [ %241, %240 ], [ %235, %.lr.ph1685 ]
  %225 = load i8, ptr %.promoted16811688, align 1, !tbaa !5
  %226 = icmp eq i8 %225, 0
  %227 = getelementptr inbounds i8, ptr %.promoted16811688, i64 1
  br i1 %226, label %.thread1276._crit_edge, label %221, !llvm.loop !17

.thread1276._crit_edge:                           ; preds = %.thread1276
  %.pre2067 = ptrtoint ptr %.promoted16811688 to i64
  %.pre2069 = sub i64 %.pre2067, %219
  %.pre2071 = trunc i64 %.pre2069 to i32
  br label %split

228:                                              ; preds = %221
  br i1 %220, label %229, label %.lr.ph1685.preheader

229:                                              ; preds = %228
  %230 = sub i64 %222, %219
  %231 = trunc i64 %230 to i32
  %.not1155 = icmp ugt i32 %.1824, %231
  br i1 %.not1155, label %232, label %split

232:                                              ; preds = %229
  %233 = sub nsw i32 %.1824, %231
  %234 = lshr i32 %233, 2
  %.not11561682 = icmp ult i32 %233, 4
  br i1 %.not11561682, label %.thread1276, label %.lr.ph1685.preheader

.lr.ph1685.preheader:                             ; preds = %228, %232
  %.19361683.ph = phi i32 [ -1, %228 ], [ %234, %232 ]
  br label %.lr.ph1685

.lr.ph1685:                                       ; preds = %.lr.ph1685.preheader, %240
  %.19361683 = phi i32 [ %242, %240 ], [ %.19361683.ph, %.lr.ph1685.preheader ]
  %235 = phi ptr [ %241, %240 ], [ %storemerge1154, %.lr.ph1685.preheader ]
  %236 = load i32, ptr %235, align 4, !tbaa !8
  %237 = sub i32 16843008, %236
  %238 = or i32 %237, %236
  %239 = and i32 %238, -2139062144
  %.not1157 = icmp eq i32 %239, -2139062144
  br i1 %.not1157, label %240, label %.thread1276

240:                                              ; preds = %.lr.ph1685
  %241 = getelementptr inbounds i8, ptr %235, i64 4
  store ptr %241, ptr %13, align 8, !tbaa !15
  %242 = add i32 %.19361683, -1
  %.not1156 = icmp eq i32 %242, 0
  br i1 %.not1156, label %.thread1276, label %.lr.ph1685

split:                                            ; preds = %229, %.thread1276._crit_edge
  %.pre-phi2072 = phi i32 [ %.pre2071, %.thread1276._crit_edge ], [ %231, %229 ]
  %spec.select1208 = call i32 @llvm.umin.i32(i32 %.1824, i32 %.pre-phi2072)
  store i32 %spec.select1208, 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 %991

243:                                              ; preds = %202
  %244 = load i32, ptr %4, align 8
  %245 = icmp ult i32 %244, 41
  br i1 %245, label %246, label %251

246:                                              ; preds = %243
  %247 = load ptr, ptr %15, align 8
  %248 = zext nneg i32 %244 to i64
  %249 = getelementptr i8, ptr %247, i64 %248
  %250 = add nuw nsw i32 %244, 8
  store i32 %250, ptr %4, align 8
  br label %254

251:                                              ; preds = %243
  %252 = load ptr, ptr %14, align 8
  %253 = getelementptr i8, ptr %252, i64 8
  store ptr %253, ptr %14, align 8
  br label %254

254:                                              ; preds = %251, %246
  %255 = phi ptr [ %249, %246 ], [ %252, %251 ]
  %256 = load i32, ptr %255, align 4, !tbaa !8
  %257 = trunc i32 %256 to i8
  store i8 %257, 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 %991

258:                                              ; preds = %202
  %259 = load i32, ptr %4, align 8
  %260 = icmp ult i32 %259, 41
  br i1 %260, label %261, label %266

261:                                              ; preds = %258
  %262 = load ptr, ptr %15, align 8
  %263 = zext nneg i32 %259 to i64
  %264 = getelementptr i8, ptr %262, i64 %263
  %265 = add nuw nsw i32 %259, 8
  store i32 %265, ptr %4, align 8
  br label %269

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

269:                                              ; preds = %266, %261
  %270 = phi ptr [ %264, %261 ], [ %267, %266 ]
  %271 = load ptr, ptr %270, align 8, !tbaa !15
  %272 = ptrtoint ptr %.2693 to i64
  %273 = ptrtoint ptr %.1 to i64
  %274 = sub i64 %272, %273
  %275 = trunc i64 %274 to i32
  %276 = add nsw i32 %.1761, %275
  store i32 %276, ptr %271, align 4, !tbaa !8
  br label %.backedge2370

277:                                              ; preds = %202, %202
  %278 = icmp eq i8 %203, 65
  %_ZZ16stbsp_vsprintfcbE4hexu._ZZ16stbsp_vsprintfcbE3hex = select i1 %278, ptr @_ZZ16stbsp_vsprintfcbE4hexu, ptr @_ZZ16stbsp_vsprintfcbE3hex
  %279 = load i32, ptr %20, align 4
  %280 = icmp ult i32 %279, 161
  br i1 %280, label %281, label %286

281:                                              ; preds = %277
  %282 = load ptr, ptr %15, align 8
  %283 = zext nneg i32 %279 to i64
  %284 = getelementptr i8, ptr %282, i64 %283
  %285 = add nuw nsw i32 %279, 16
  store i32 %285, ptr %20, align 4
  br label %289

286:                                              ; preds = %277
  %287 = load ptr, ptr %14, align 8
  %288 = getelementptr i8, ptr %287, i64 8
  store ptr %288, ptr %14, align 8
  br label %289

289:                                              ; preds = %286, %281
  %290 = phi ptr [ %284, %281 ], [ %287, %286 ]
  %291 = load double, ptr %290, align 8, !tbaa !18
  %292 = icmp eq i32 %.1824, -1
  %spec.store.select17 = select i1 %292, i32 6, i32 %.1824
  %293 = call noundef i32 @_ZL20stbsp__real_to_partsPxPid(ptr noundef nonnull %11, ptr noundef nonnull %12, double noundef %291)
  %.not1147 = icmp eq i32 %293, 0
  %294 = or i32 %.3851, 128
  %spec.select1209 = select i1 %.not1147, i32 %.3851, i32 %294
  call void @_ZL16stbsp__lead_signjPc(i32 noundef %spec.select1209, ptr noundef nonnull %8)
  %295 = load i32, ptr %12, align 4, !tbaa !8
  %296 = icmp eq i32 %295, -1023
  %297 = load i64, ptr %11, align 8, !tbaa !20
  br i1 %296, label %298, label %300

298:                                              ; preds = %289
  %.not1148 = icmp eq i64 %297, 0
  %299 = select i1 %.not1148, i32 0, i32 -1022
  store i32 %299, ptr %12, align 4, !tbaa !8
  br label %302

300:                                              ; preds = %289
  %301 = or i64 %297, 4503599627370496
  br label %302

302:                                              ; preds = %300, %298
  %303 = phi i32 [ %295, %300 ], [ %299, %298 ]
  %304 = phi i64 [ %301, %300 ], [ %297, %298 ]
  %305 = shl i64 %304, 8
  %306 = icmp slt i32 %spec.store.select17, 15
  %307 = shl nsw i32 %spec.store.select17, 2
  %308 = zext nneg i32 %307 to i64
  %309 = lshr i64 576460752303423488, %308
  %310 = select i1 %306, i64 %309, i64 0
  %storemerge1149 = add i64 %305, %310
  %311 = load i8, ptr %8, align 1, !tbaa !5
  %312 = sext i8 %311 to i64
  %313 = add nsw i64 %312, 1
  %314 = getelementptr inbounds [8 x i8], ptr %8, i64 0, i64 %313
  store i8 48, ptr %314, align 1, !tbaa !5
  %315 = load i8, ptr %8, align 1, !tbaa !5
  %316 = sext i8 %315 to i64
  %317 = add nsw i64 %316, 2
  %318 = getelementptr inbounds [8 x i8], ptr %8, i64 0, i64 %317
  store i8 120, ptr %318, align 1, !tbaa !5
  %319 = load i8, ptr %8, align 1, !tbaa !5
  %320 = add i8 %319, 2
  store i8 %320, ptr %8, align 1, !tbaa !5
  %321 = lshr i64 %storemerge1149, 60
  %322 = getelementptr inbounds i8, ptr %_ZZ16stbsp_vsprintfcbE4hexu._ZZ16stbsp_vsprintfcbE3hex, i64 %321
  %323 = load i8, ptr %322, align 1, !tbaa !5
  store i8 %323, ptr %21, align 16, !tbaa !5
  %324 = shl i64 %storemerge1149, 4
  store i64 %324, ptr %11, align 8, !tbaa !20
  %.not1150 = icmp eq i32 %spec.store.select17, 0
  br i1 %.not1150, label %.thread2084, label %.lr.ph1671.preheader

.thread2084:                                      ; preds = %302
  store ptr %23, ptr %13, align 8, !tbaa !15
  br label %358

.lr.ph1671.preheader:                             ; preds = %302
  %325 = load i8, ptr @_ZL13stbsp__period, align 1, !tbaa !5
  store i8 %325, 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)
  %326 = icmp sgt i32 %spec.store.select17, %spec.store.select18
  %327 = sub i32 %spec.store.select17, %spec.store.select18
  %spec.select1210 = select i1 %326, i32 %327, i32 0
  %xtraiter2457 = and i32 %spec.store.select18, 3
  %lcmp.mod2458.not = icmp eq i32 %xtraiter2457, 0
  br i1 %lcmp.mod2458.not, label %.lr.ph1671.prol.loopexit, label %.lr.ph1671.prol

.lr.ph1671.prol:                                  ; preds = %.lr.ph1671.preheader, %.lr.ph1671.prol
  %.18921669.prol = phi ptr [ %333, %.lr.ph1671.prol ], [ %24, %.lr.ph1671.preheader ]
  %.39381668.prol = phi i32 [ %329, %.lr.ph1671.prol ], [ %spec.store.select18, %.lr.ph1671.preheader ]
  %328 = phi i64 [ %334, %.lr.ph1671.prol ], [ %324, %.lr.ph1671.preheader ]
  %prol.iter2459 = phi i32 [ %prol.iter2459.next, %.lr.ph1671.prol ], [ 0, %.lr.ph1671.preheader ]
  %329 = add nsw i32 %.39381668.prol, -1
  %330 = lshr i64 %328, 60
  %331 = getelementptr inbounds i8, ptr %_ZZ16stbsp_vsprintfcbE4hexu._ZZ16stbsp_vsprintfcbE3hex, i64 %330
  %332 = load i8, ptr %331, align 1, !tbaa !5
  %333 = getelementptr inbounds i8, ptr %.18921669.prol, i64 1
  store i8 %332, ptr %.18921669.prol, align 1, !tbaa !5
  %334 = shl i64 %328, 4
  %prol.iter2459.next = add i32 %prol.iter2459, 1
  %prol.iter2459.cmp.not = icmp eq i32 %prol.iter2459.next, %xtraiter2457
  br i1 %prol.iter2459.cmp.not, label %.lr.ph1671.prol.loopexit, label %.lr.ph1671.prol, !llvm.loop !22

.lr.ph1671.prol.loopexit:                         ; preds = %.lr.ph1671.prol, %.lr.ph1671.preheader
  %.lcssa2410.unr = phi ptr [ poison, %.lr.ph1671.preheader ], [ %333, %.lr.ph1671.prol ]
  %.lcssa2409.unr = phi i64 [ poison, %.lr.ph1671.preheader ], [ %334, %.lr.ph1671.prol ]
  %.18921669.unr = phi ptr [ %24, %.lr.ph1671.preheader ], [ %333, %.lr.ph1671.prol ]
  %.39381668.unr = phi i32 [ %spec.store.select18, %.lr.ph1671.preheader ], [ %329, %.lr.ph1671.prol ]
  %.unr = phi i64 [ %324, %.lr.ph1671.preheader ], [ %334, %.lr.ph1671.prol ]
  %335 = icmp ult i32 %spec.store.select17, 4
  br i1 %335, label %._crit_edge1672, label %.lr.ph1671

.lr.ph1671:                                       ; preds = %.lr.ph1671.prol.loopexit, %.lr.ph1671
  %.18921669 = phi ptr [ %356, %.lr.ph1671 ], [ %.18921669.unr, %.lr.ph1671.prol.loopexit ]
  %.39381668 = phi i32 [ %351, %.lr.ph1671 ], [ %.39381668.unr, %.lr.ph1671.prol.loopexit ]
  %336 = phi i64 [ %357, %.lr.ph1671 ], [ %.unr, %.lr.ph1671.prol.loopexit ]
  %337 = lshr i64 %336, 60
  %338 = getelementptr inbounds i8, ptr %_ZZ16stbsp_vsprintfcbE4hexu._ZZ16stbsp_vsprintfcbE3hex, i64 %337
  %339 = load i8, ptr %338, align 1, !tbaa !5
  %340 = getelementptr inbounds i8, ptr %.18921669, i64 1
  store i8 %339, ptr %.18921669, align 1, !tbaa !5
  %341 = lshr i64 %336, 56
  %342 = and i64 %341, 15
  %343 = getelementptr inbounds i8, ptr %_ZZ16stbsp_vsprintfcbE4hexu._ZZ16stbsp_vsprintfcbE3hex, i64 %342
  %344 = load i8, ptr %343, align 1, !tbaa !5
  %345 = getelementptr inbounds i8, ptr %.18921669, i64 2
  store i8 %344, ptr %340, align 1, !tbaa !5
  %346 = lshr i64 %336, 52
  %347 = and i64 %346, 15
  %348 = getelementptr inbounds i8, ptr %_ZZ16stbsp_vsprintfcbE4hexu._ZZ16stbsp_vsprintfcbE3hex, i64 %347
  %349 = load i8, ptr %348, align 1, !tbaa !5
  %350 = getelementptr inbounds i8, ptr %.18921669, i64 3
  store i8 %349, ptr %345, align 1, !tbaa !5
  %351 = add nsw i32 %.39381668, -4
  %352 = lshr i64 %336, 48
  %353 = and i64 %352, 15
  %354 = getelementptr inbounds i8, ptr %_ZZ16stbsp_vsprintfcbE4hexu._ZZ16stbsp_vsprintfcbE3hex, i64 %353
  %355 = load i8, ptr %354, align 1, !tbaa !5
  %356 = getelementptr inbounds i8, ptr %.18921669, i64 4
  store i8 %355, ptr %350, align 1, !tbaa !5
  %357 = shl i64 %336, 16
  %.not1151.3 = icmp eq i32 %351, 0
  br i1 %.not1151.3, label %._crit_edge1672, label %.lr.ph1671, !llvm.loop !24

._crit_edge1672:                                  ; preds = %.lr.ph1671, %.lr.ph1671.prol.loopexit
  %.lcssa2410 = phi ptr [ %.lcssa2410.unr, %.lr.ph1671.prol.loopexit ], [ %356, %.lr.ph1671 ]
  %.lcssa2409 = phi i64 [ %.lcssa2409.unr, %.lr.ph1671.prol.loopexit ], [ %357, %.lr.ph1671 ]
  store i64 %.lcssa2409, ptr %11, align 8, !tbaa !20
  br label %358

358:                                              ; preds = %.thread2084, %._crit_edge1672
  %spec.select12102089 = phi i32 [ %spec.select1210, %._crit_edge1672 ], [ 0, %.thread2084 ]
  %.08912088 = phi ptr [ %24, %._crit_edge1672 ], [ %23, %.thread2084 ]
  %.1892.lcssa = phi ptr [ %.lcssa2410, %._crit_edge1672 ], [ %23, %.thread2084 ]
  %.val1152 = load i8, ptr getelementptr inbounds (i8, ptr @_ZZ16stbsp_vsprintfcbE4hexu, i64 17), align 1
  %.val1153 = load i8, ptr getelementptr inbounds (i8, ptr @_ZZ16stbsp_vsprintfcbE3hex, i64 17), align 1
  %359 = select i1 %278, i8 %.val1152, i8 %.val1153
  store i8 %359, ptr %25, align 1, !tbaa !5
  %360 = icmp slt i32 %303, 0
  br i1 %360, label %361, label %363

361:                                              ; preds = %358
  store i8 45, ptr %26, align 1, !tbaa !5
  %362 = sub nsw i32 0, %303
  br label %364

363:                                              ; preds = %358
  store i8 43, ptr %26, align 1, !tbaa !5
  br label %364

364:                                              ; preds = %363, %361
  %.promoted1675 = phi i32 [ %303, %363 ], [ %362, %361 ]
  %365 = icmp ult i32 %.promoted1675, 1000
  br i1 %365, label %366, label %.lr.ph1678.preheader

366:                                              ; preds = %364
  %367 = icmp ugt i32 %.promoted1675, 99
  br i1 %367, label %.lr.ph1678.preheader, label %368

368:                                              ; preds = %366
  %369 = icmp ugt i32 %.promoted1675, 9
  br i1 %369, label %.lr.ph1678.preheader, label %370

370:                                              ; preds = %368
  store i8 3, ptr %9, align 1, !tbaa !5
  %371 = trunc nuw nsw i32 %.promoted1675 to i8
  %372 = or disjoint i8 %371, 48
  store i8 %372, ptr %29, align 1, !tbaa !5
  br label %._crit_edge1679

.lr.ph1678.preheader:                             ; preds = %368, %364, %366
  %373 = phi i1 [ false, %366 ], [ false, %364 ], [ true, %368 ]
  %.ph = phi i32 [ 5, %366 ], [ 6, %364 ], [ 4, %368 ]
  %374 = trunc nuw nsw i32 %.ph to i8
  store i8 %374, ptr %9, align 1, !tbaa !5
  %375 = urem i32 %.promoted1675, 10
  %376 = trunc nuw nsw i32 %375 to i8
  %377 = or disjoint i8 %376, 48
  %378 = zext nneg i32 %.ph to i64
  %379 = getelementptr inbounds [8 x i8], ptr %9, i64 0, i64 %378
  store i8 %377, ptr %379, align 1, !tbaa !5
  %380 = add nsw i64 %378, -1
  %381 = sdiv i32 %.promoted1675, 10
  %382 = srem i32 %381, 10
  %383 = trunc nsw i32 %382 to i8
  %384 = add nsw i8 %383, 48
  %385 = getelementptr inbounds [8 x i8], ptr %9, i64 0, i64 %380
  store i8 %384, ptr %385, align 1, !tbaa !5
  br i1 %373, label %._crit_edge1679, label %.lr.ph1678.1, !llvm.loop !25

.lr.ph1678.1:                                     ; preds = %.lr.ph1678.preheader
  %386 = add nsw i64 %378, -2
  %387 = sdiv i32 %.promoted1675, 100
  %388 = srem i32 %387, 10
  %389 = trunc nsw i32 %388 to i8
  %390 = add nsw i8 %389, 48
  %391 = getelementptr inbounds [8 x i8], ptr %9, i64 0, i64 %386
  store i8 %390, ptr %391, align 1, !tbaa !5
  br i1 %365, label %._crit_edge1679, label %.lr.ph1678.2, !llvm.loop !25

.lr.ph1678.2:                                     ; preds = %.lr.ph1678.1
  %392 = add nsw i64 %378, -3
  %393 = sdiv i32 %.promoted1675, 1000
  %394 = srem i32 %393, 10
  %395 = trunc nsw i32 %394 to i8
  %396 = add nsw i8 %395, 48
  %397 = getelementptr inbounds [8 x i8], ptr %9, i64 0, i64 %392
  store i8 %396, ptr %397, align 1, !tbaa !5
  br label %._crit_edge1679

._crit_edge1679:                                  ; preds = %.lr.ph1678.preheader, %.lr.ph1678.1, %.lr.ph1678.2, %370
  %398 = ptrtoint ptr %.1892.lcssa to i64
  %399 = ptrtoint ptr %.08912088 to i64
  %400 = sub i64 %398, %399
  %401 = trunc i64 %400 to i32
  store i32 %401, ptr %12, align 4, !tbaa !8
  %402 = sub i64 %398, %22
  %403 = trunc i64 %402 to i32
  store i32 %403, ptr %10, align 4, !tbaa !8
  br label %991

404:                                              ; preds = %202, %202
  %405 = icmp eq i8 %203, 71
  %_ZZ16stbsp_vsprintfcbE4hexu._ZZ16stbsp_vsprintfcbE3hex19 = select i1 %405, ptr @_ZZ16stbsp_vsprintfcbE4hexu, ptr @_ZZ16stbsp_vsprintfcbE3hex
  %406 = load i32, ptr %20, align 4
  %407 = icmp ult i32 %406, 161
  br i1 %407, label %408, label %413

408:                                              ; preds = %404
  %409 = load ptr, ptr %15, align 8
  %410 = zext nneg i32 %406 to i64
  %411 = getelementptr i8, ptr %409, i64 %410
  %412 = add nuw nsw i32 %406, 16
  store i32 %412, ptr %20, align 4
  br label %416

413:                                              ; preds = %404
  %414 = load ptr, ptr %14, align 8
  %415 = getelementptr i8, ptr %414, i64 8
  store ptr %415, ptr %14, align 8
  br label %416

416:                                              ; preds = %413, %408
  %417 = phi ptr [ %411, %408 ], [ %414, %413 ]
  %418 = load double, ptr %417, align 8, !tbaa !18
  %419 = icmp eq i32 %.1824, -1
  %spec.store.select20 = call i32 @llvm.umax.i32(i32 %.1824, i32 1)
  %.2825 = select i1 %419, i32 6, i32 %spec.store.select20
  %420 = add i32 %.2825, 2147483647
  %421 = or i32 %420, -2147483648
  %422 = 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 %418, i32 noundef %421)
  %.not1126 = icmp eq i32 %422, 0
  %423 = or i32 %.3851, 128
  %.5853 = select i1 %.not1126, i32 %.3851, i32 %423
  %424 = load i32, ptr %10, align 4
  %425 = icmp ugt i32 %424, %.2825
  br i1 %425, label %426, label %427

426:                                              ; preds = %416
  store i32 %.2825, ptr %10, align 4, !tbaa !8
  br label %427

427:                                              ; preds = %426, %416
  %.promoted = phi i32 [ %.2825, %426 ], [ %424, %416 ]
  %428 = icmp ugt i32 %.promoted, 1
  br i1 %428, label %.lr.ph1598, label %.critedge23

.lr.ph1598:                                       ; preds = %427
  %429 = load ptr, ptr %13, align 8, !tbaa !15
  %430 = zext i32 %.promoted to i64
  br label %431

431:                                              ; preds = %.lr.ph1598, %436
  %indvars.iv = phi i64 [ %430, %.lr.ph1598 ], [ %indvars.iv.next, %436 ]
  %.38261596 = phi i32 [ %.2825, %.lr.ph1598 ], [ %437, %436 ]
  %indvars.iv.next = add nsw i64 %indvars.iv, -1
  %432 = and i64 %indvars.iv.next, 4294967295
  %433 = getelementptr inbounds i8, ptr %429, i64 %432
  %434 = load i8, ptr %433, align 1, !tbaa !5
  %435 = icmp eq i8 %434, 48
  br i1 %435, label %436, label %.critedge23.loopexit.split.loop.exit2193

436:                                              ; preds = %431
  %indvars = trunc i64 %indvars.iv.next to i32
  %437 = add nsw i32 %.38261596, -1
  store i32 %indvars, ptr %10, align 4, !tbaa !8
  %438 = icmp ugt i32 %indvars, 1
  %439 = icmp ne i32 %437, 0
  %or.cond = select i1 %438, i1 %439, i1 false
  br i1 %or.cond, label %431, label %.critedge23, !llvm.loop !26

.critedge23.loopexit.split.loop.exit2193:         ; preds = %431
  %440 = trunc nuw i64 %indvars.iv to i32
  br label %.critedge23

.critedge23:                                      ; preds = %436, %.critedge23.loopexit.split.loop.exit2193, %427
  %.3826.lcssa = phi i32 [ %.2825, %427 ], [ %.38261596, %.critedge23.loopexit.split.loop.exit2193 ], [ %437, %436 ]
  %.lcssa1498 = phi i32 [ %.promoted, %427 ], [ %440, %.critedge23.loopexit.split.loop.exit2193 ], [ %indvars, %436 ]
  %441 = load i32, ptr %12, align 4
  %442 = icmp slt i32 %441, -3
  %443 = icmp sgt i32 %441, %.2825
  %or.cond1211 = or i1 %442, %443
  br i1 %or.cond1211, label %444, label %449

444:                                              ; preds = %.critedge23
  %445 = icmp sgt i32 %.3826.lcssa, %.lcssa1498
  br i1 %445, label %446, label %448

446:                                              ; preds = %444
  %447 = add i32 %.lcssa1498, -1
  br label %477

448:                                              ; preds = %444
  %spec.select1212 = call i32 @llvm.usub.sat.i32(i32 %.3826.lcssa, i32 1)
  br label %477

449:                                              ; preds = %.critedge23
  %450 = icmp sgt i32 %441, 0
  br i1 %450, label %451, label %455

451:                                              ; preds = %449
  %452 = icmp slt i32 %441, %.lcssa1498
  %453 = sub i32 %.lcssa1498, %441
  %454 = select i1 %452, i32 %453, i32 0
  br label %600

455:                                              ; preds = %449
  %456 = call i32 @llvm.smin.i32(i32 %.3826.lcssa, i32 %.lcssa1498)
  %457 = sub i32 %456, %441
  br label %600

458:                                              ; preds = %202, %202
  %459 = icmp eq i8 %203, 69
  %_ZZ16stbsp_vsprintfcbE4hexu._ZZ16stbsp_vsprintfcbE3hex24 = select i1 %459, ptr @_ZZ16stbsp_vsprintfcbE4hexu, ptr @_ZZ16stbsp_vsprintfcbE3hex
  %460 = load i32, ptr %20, align 4
  %461 = icmp ult i32 %460, 161
  br i1 %461, label %462, label %467

462:                                              ; preds = %458
  %463 = load ptr, ptr %15, align 8
  %464 = zext nneg i32 %460 to i64
  %465 = getelementptr i8, ptr %463, i64 %464
  %466 = add nuw nsw i32 %460, 16
  store i32 %466, ptr %20, align 4
  br label %470

467:                                              ; preds = %458
  %468 = load ptr, ptr %14, align 8
  %469 = getelementptr i8, ptr %468, i64 8
  store ptr %469, ptr %14, align 8
  br label %470

470:                                              ; preds = %467, %462
  %471 = phi ptr [ %465, %462 ], [ %468, %467 ]
  %472 = load double, ptr %471, align 8, !tbaa !18
  %473 = icmp eq i32 %.1824, -1
  %spec.store.select25 = select i1 %473, i32 6, i32 %.1824
  %474 = or i32 %spec.store.select25, -2147483648
  %475 = 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 %472, i32 noundef %474)
  %.not1125 = icmp eq i32 %475, 0
  %476 = or i32 %.3851, 128
  %spec.select1213 = select i1 %.not1125, i32 %.3851, i32 %476
  br label %477

477:                                              ; preds = %470, %448, %446
  %.0933 = phi ptr [ %_ZZ16stbsp_vsprintfcbE4hexu._ZZ16stbsp_vsprintfcbE3hex19, %446 ], [ %_ZZ16stbsp_vsprintfcbE4hexu._ZZ16stbsp_vsprintfcbE3hex19, %448 ], [ %_ZZ16stbsp_vsprintfcbE4hexu._ZZ16stbsp_vsprintfcbE3hex24, %470 ]
  %.6854 = phi i32 [ %.5853, %446 ], [ %.5853, %448 ], [ %spec.select1213, %470 ]
  %.4827 = phi i32 [ %447, %446 ], [ %spec.select1212, %448 ], [ %spec.store.select25, %470 ]
  store i8 0, ptr %9, align 1, !tbaa !5
  call void @_ZL16stbsp__lead_signjPc(i32 noundef %.6854, ptr noundef nonnull %8)
  %478 = load i32, ptr %12, align 4, !tbaa !8
  %479 = icmp eq i32 %478, 28672
  %480 = load ptr, ptr %13, align 8, !tbaa !15
  %481 = ptrtoint ptr %480 to i64
  br i1 %479, label %991, label %482

482:                                              ; preds = %477
  %483 = load i8, ptr %480, align 1, !tbaa !5
  store i8 %483, ptr %21, align 16, !tbaa !5
  %.not1146 = icmp eq i32 %.4827, 0
  br i1 %.not1146, label %486, label %484

484:                                              ; preds = %482
  %485 = load i8, ptr @_ZL13stbsp__period, align 1, !tbaa !5
  store i8 %485, ptr %23, align 1, !tbaa !5
  br label %486

486:                                              ; preds = %484, %482
  %.2893 = phi ptr [ %24, %484 ], [ %23, %482 ]
  %.28932330 = ptrtoint ptr %.2893 to i64
  %487 = load i32, ptr %10, align 4, !tbaa !8
  %488 = add i32 %487, -1
  %489 = icmp ugt i32 %488, %.4827
  br i1 %489, label %490, label %492

490:                                              ; preds = %486
  %491 = add nuw nsw i32 %.4827, 1
  store i32 %491, ptr %10, align 4, !tbaa !8
  br label %492

492:                                              ; preds = %490, %486
  %493 = phi i32 [ %491, %490 ], [ %487, %486 ]
  %494 = icmp ugt i32 %493, 1
  br i1 %494, label %.lr.ph1659.preheader, label %._crit_edge1660

.lr.ph1659.preheader:                             ; preds = %492
  %wide.trip.count = zext i32 %493 to i64
  %495 = add nsw i64 %wide.trip.count, -1
  %min.iters.check2334 = icmp ult i32 %493, 33
  %496 = sub i64 %481, %.28932330
  %diff.check2331 = icmp ugt i64 %496, -33
  %or.cond2352 = select i1 %min.iters.check2334, i1 true, i1 %diff.check2331
  br i1 %or.cond2352, label %.lr.ph1659.preheader2364, label %vector.ph2335

vector.ph2335:                                    ; preds = %.lr.ph1659.preheader
  %n.vec2337 = and i64 %495, -32
  %ind.end2338 = or disjoint i64 %n.vec2337, 1
  %ind.end2340 = getelementptr i8, ptr %.2893, i64 %n.vec2337
  br label %vector.body2342

vector.body2342:                                  ; preds = %vector.body2342, %vector.ph2335
  %index2343 = phi i64 [ 0, %vector.ph2335 ], [ %index.next2349, %vector.body2342 ]
  %offset.idx2344 = or disjoint i64 %index2343, 1
  %next.gep2345 = getelementptr i8, ptr %.2893, i64 %index2343
  %497 = getelementptr inbounds i8, ptr %480, i64 %offset.idx2344
  %498 = getelementptr inbounds i8, ptr %497, i64 16
  %wide.load2347 = load <16 x i8>, ptr %497, align 1, !tbaa !5
  %wide.load2348 = load <16 x i8>, ptr %498, align 1, !tbaa !5
  %499 = getelementptr i8, ptr %next.gep2345, i64 16
  store <16 x i8> %wide.load2347, ptr %next.gep2345, align 1, !tbaa !5
  store <16 x i8> %wide.load2348, ptr %499, align 1, !tbaa !5
  %index.next2349 = add nuw i64 %index2343, 32
  %500 = icmp eq i64 %index.next2349, %n.vec2337
  br i1 %500, label %middle.block2332, label %vector.body2342, !llvm.loop !27

middle.block2332:                                 ; preds = %vector.body2342
  %cmp.n2350 = icmp eq i64 %495, %n.vec2337
  br i1 %cmp.n2350, label %._crit_edge1660, label %.lr.ph1659.preheader2364

.lr.ph1659.preheader2364:                         ; preds = %middle.block2332, %.lr.ph1659.preheader
  %indvars.iv1996.ph = phi i64 [ 1, %.lr.ph1659.preheader ], [ %ind.end2338, %middle.block2332 ]
  %.38941657.ph = phi ptr [ %.2893, %.lr.ph1659.preheader ], [ %ind.end2340, %middle.block2332 ]
  %501 = sub nsw i64 %wide.trip.count, %indvars.iv1996.ph
  %xtraiter2454 = and i64 %501, 7
  %lcmp.mod2455.not = icmp eq i64 %xtraiter2454, 0
  br i1 %lcmp.mod2455.not, label %.lr.ph1659.prol.loopexit, label %.lr.ph1659.prol

.lr.ph1659.prol:                                  ; preds = %.lr.ph1659.preheader2364, %.lr.ph1659.prol
  %indvars.iv1996.prol = phi i64 [ %indvars.iv.next1997.prol, %.lr.ph1659.prol ], [ %indvars.iv1996.ph, %.lr.ph1659.preheader2364 ]
  %.38941657.prol = phi ptr [ %504, %.lr.ph1659.prol ], [ %.38941657.ph, %.lr.ph1659.preheader2364 ]
  %prol.iter2456 = phi i64 [ %prol.iter2456.next, %.lr.ph1659.prol ], [ 0, %.lr.ph1659.preheader2364 ]
  %502 = getelementptr inbounds i8, ptr %480, i64 %indvars.iv1996.prol
  %503 = load i8, ptr %502, align 1, !tbaa !5
  %504 = getelementptr inbounds i8, ptr %.38941657.prol, i64 1
  store i8 %503, ptr %.38941657.prol, align 1, !tbaa !5
  %indvars.iv.next1997.prol = add nuw nsw i64 %indvars.iv1996.prol, 1
  %prol.iter2456.next = add i64 %prol.iter2456, 1
  %prol.iter2456.cmp.not = icmp eq i64 %prol.iter2456.next, %xtraiter2454
  br i1 %prol.iter2456.cmp.not, label %.lr.ph1659.prol.loopexit, label %.lr.ph1659.prol, !llvm.loop !30

.lr.ph1659.prol.loopexit:                         ; preds = %.lr.ph1659.prol, %.lr.ph1659.preheader2364
  %.lcssa2407.unr = phi ptr [ poison, %.lr.ph1659.preheader2364 ], [ %504, %.lr.ph1659.prol ]
  %indvars.iv1996.unr = phi i64 [ %indvars.iv1996.ph, %.lr.ph1659.preheader2364 ], [ %indvars.iv.next1997.prol, %.lr.ph1659.prol ]
  %.38941657.unr = phi ptr [ %.38941657.ph, %.lr.ph1659.preheader2364 ], [ %504, %.lr.ph1659.prol ]
  %505 = sub nsw i64 %indvars.iv1996.ph, %wide.trip.count
  %506 = icmp ugt i64 %505, -8
  br i1 %506, label %._crit_edge1660, label %.lr.ph1659.preheader2364.new

.lr.ph1659.preheader2364.new:                     ; preds = %.lr.ph1659.prol.loopexit
  %invariant.gep2571 = getelementptr i8, ptr %480, i64 1
  %invariant.gep2573 = getelementptr i8, ptr %480, i64 2
  %invariant.gep2575 = getelementptr i8, ptr %480, i64 3
  %invariant.gep2577 = getelementptr i8, ptr %480, i64 4
  %invariant.gep2579 = getelementptr i8, ptr %480, i64 5
  %invariant.gep2581 = getelementptr i8, ptr %480, i64 6
  %invariant.gep2583 = getelementptr i8, ptr %480, i64 7
  br label %.lr.ph1659

.lr.ph1659:                                       ; preds = %.lr.ph1659, %.lr.ph1659.preheader2364.new
  %indvars.iv1996 = phi i64 [ %indvars.iv1996.unr, %.lr.ph1659.preheader2364.new ], [ %indvars.iv.next1997.7, %.lr.ph1659 ]
  %.38941657 = phi ptr [ %.38941657.unr, %.lr.ph1659.preheader2364.new ], [ %523, %.lr.ph1659 ]
  %507 = getelementptr inbounds i8, ptr %480, i64 %indvars.iv1996
  %508 = load i8, ptr %507, align 1, !tbaa !5
  %509 = getelementptr inbounds i8, ptr %.38941657, i64 1
  store i8 %508, ptr %.38941657, align 1, !tbaa !5
  %gep2572 = getelementptr i8, ptr %invariant.gep2571, i64 %indvars.iv1996
  %510 = load i8, ptr %gep2572, align 1, !tbaa !5
  %511 = getelementptr inbounds i8, ptr %.38941657, i64 2
  store i8 %510, ptr %509, align 1, !tbaa !5
  %gep2574 = getelementptr i8, ptr %invariant.gep2573, i64 %indvars.iv1996
  %512 = load i8, ptr %gep2574, align 1, !tbaa !5
  %513 = getelementptr inbounds i8, ptr %.38941657, i64 3
  store i8 %512, ptr %511, align 1, !tbaa !5
  %gep2576 = getelementptr i8, ptr %invariant.gep2575, i64 %indvars.iv1996
  %514 = load i8, ptr %gep2576, align 1, !tbaa !5
  %515 = getelementptr inbounds i8, ptr %.38941657, i64 4
  store i8 %514, ptr %513, align 1, !tbaa !5
  %gep2578 = getelementptr i8, ptr %invariant.gep2577, i64 %indvars.iv1996
  %516 = load i8, ptr %gep2578, align 1, !tbaa !5
  %517 = getelementptr inbounds i8, ptr %.38941657, i64 5
  store i8 %516, ptr %515, align 1, !tbaa !5
  %gep2580 = getelementptr i8, ptr %invariant.gep2579, i64 %indvars.iv1996
  %518 = load i8, ptr %gep2580, align 1, !tbaa !5
  %519 = getelementptr inbounds i8, ptr %.38941657, i64 6
  store i8 %518, ptr %517, align 1, !tbaa !5
  %gep2582 = getelementptr i8, ptr %invariant.gep2581, i64 %indvars.iv1996
  %520 = load i8, ptr %gep2582, align 1, !tbaa !5
  %521 = getelementptr inbounds i8, ptr %.38941657, i64 7
  store i8 %520, ptr %519, align 1, !tbaa !5
  %gep2584 = getelementptr i8, ptr %invariant.gep2583, i64 %indvars.iv1996
  %522 = load i8, ptr %gep2584, align 1, !tbaa !5
  %523 = getelementptr inbounds i8, ptr %.38941657, i64 8
  store i8 %522, ptr %521, align 1, !tbaa !5
  %indvars.iv.next1997.7 = add nuw nsw i64 %indvars.iv1996, 8
  %exitcond.not.7 = icmp eq i64 %indvars.iv.next1997.7, %wide.trip.count
  br i1 %exitcond.not.7, label %._crit_edge1660, label %.lr.ph1659, !llvm.loop !31

._crit_edge1660:                                  ; preds = %.lr.ph1659.prol.loopexit, %.lr.ph1659, %middle.block2332, %492
  %.3894.lcssa = phi ptr [ %.2893, %492 ], [ %ind.end2340, %middle.block2332 ], [ %.lcssa2407.unr, %.lr.ph1659.prol.loopexit ], [ %523, %.lr.ph1659 ]
  %.neg1441 = add i32 %.4827, 1
  %524 = sub i32 %.neg1441, %493
  %525 = getelementptr inbounds i8, ptr %.0933, i64 14
  %526 = load i8, ptr %525, align 1, !tbaa !5
  store i8 %526, ptr %25, align 1, !tbaa !5
  %527 = icmp slt i32 %478, 1
  br i1 %527, label %528, label %530

528:                                              ; preds = %._crit_edge1660
  store i8 45, ptr %26, align 1, !tbaa !5
  %529 = sub nsw i32 1, %478
  br label %532

530:                                              ; preds = %._crit_edge1660
  %531 = add nsw i32 %478, -1
  store i8 43, ptr %26, align 1, !tbaa !5
  br label %532

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

547:                                              ; preds = %532
  %indvars.iv.next2001.1 = add nsw i64 %540, -2
  %548 = sdiv i32 %533, 100
  %549 = srem i32 %548, 10
  %550 = trunc nsw i32 %549 to i8
  %551 = add nsw i8 %550, 48
  %552 = getelementptr inbounds [8 x i8], ptr %9, i64 0, i64 %indvars.iv.next2001.1
  store i8 %551, ptr %552, align 1, !tbaa !5
  br label %.loopexit1468

553:                                              ; preds = %202
  %554 = load i32, ptr %20, align 4
  %555 = icmp ult i32 %554, 161
  br i1 %555, label %556, label %561

556:                                              ; preds = %553
  %557 = load ptr, ptr %15, align 8
  %558 = zext nneg i32 %554 to i64
  %559 = getelementptr i8, ptr %557, i64 %558
  %560 = add nuw nsw i32 %554, 16
  store i32 %560, ptr %20, align 4
  br label %564

561:                                              ; preds = %553
  %562 = load ptr, ptr %14, align 8
  %563 = getelementptr i8, ptr %562, i64 8
  store ptr %563, ptr %14, align 8
  br label %564

564:                                              ; preds = %556, %561
  %565 = phi ptr [ %559, %556 ], [ %562, %561 ]
  %566 = load double, ptr %565, align 8, !tbaa !18
  %.pre2066 = and i32 %.3851, 256
  %.not1122 = icmp eq i32 %.pre2066, 0
  br i1 %.not1122, label %.loopexit1477, label %567

567:                                              ; preds = %.thread2091, %564
  %.58282099 = phi i32 [ %.10833, %.thread2091 ], [ %.1824, %564 ]
  %.78552098 = phi i32 [ %.16864, %.thread2091 ], [ %.3851, %564 ]
  %.09752097 = phi double [ %939, %.thread2091 ], [ %566, %564 ]
  %568 = and i32 %.78552098, 2048
  %.not1123 = icmp eq i32 %568, 0
  %spec.store.select26 = select i1 %.not1123, double 1.000000e+03, double 1.024000e+03
  %569 = icmp ult i32 %.78552098, 67108864
  br i1 %569, label %.lr.ph1590, label %.loopexit1477

.lr.ph1590:                                       ; preds = %567
  %570 = fneg double %spec.store.select26
  %571 = fcmp olt double %.09752097, %spec.store.select26
  %572 = fcmp ogt double %.09752097, %570
  %or.cond1215 = and i1 %571, %572
  br i1 %or.cond1215, label %.loopexit1477, label %573

573:                                              ; preds = %.lr.ph1590
  %574 = fdiv double %.09752097, %spec.store.select26
  %575 = add nuw nsw i32 %.78552098, 16777216
  %576 = icmp ult i32 %.78552098, 50331648
  br i1 %576, label %577, label %.loopexit1477, !llvm.loop !33

577:                                              ; preds = %573
  %578 = fcmp olt double %574, %spec.store.select26
  %579 = fcmp ogt double %574, %570
  %or.cond1215.1 = and i1 %578, %579
  br i1 %or.cond1215.1, label %.loopexit1477, label %580

580:                                              ; preds = %577
  %581 = fdiv double %574, %spec.store.select26
  %582 = add nuw nsw i32 %.78552098, 33554432
  %583 = icmp ult i32 %.78552098, 33554432
  br i1 %583, label %584, label %.loopexit1477, !llvm.loop !33

584:                                              ; preds = %580
  %585 = fcmp olt double %581, %spec.store.select26
  %586 = fcmp ogt double %581, %570
  %or.cond1215.2 = and i1 %585, %586
  br i1 %or.cond1215.2, label %.loopexit1477, label %587

587:                                              ; preds = %584
  %588 = fdiv double %581, %spec.store.select26
  %589 = add nuw nsw i32 %.78552098, 50331648
  %590 = icmp ult i32 %.78552098, 16777216
  br i1 %590, label %591, label %.loopexit1477, !llvm.loop !33

591:                                              ; preds = %587
  %592 = fcmp olt double %588, %spec.store.select26
  %593 = fcmp ogt double %588, %570
  %or.cond1215.3 = and i1 %592, %593
  br i1 %or.cond1215.3, label %.loopexit1477, label %594

594:                                              ; preds = %591
  %595 = fdiv double %588, %spec.store.select26
  %596 = or disjoint i32 %.78552098, 67108864
  br label %.loopexit1477

.loopexit1477:                                    ; preds = %.lr.ph1590, %573, %577, %580, %584, %587, %591, %594, %567, %564
  %.58282100 = phi i32 [ %.1824, %564 ], [ %.58282099, %567 ], [ %.58282099, %594 ], [ %.58282099, %591 ], [ %.58282099, %587 ], [ %.58282099, %584 ], [ %.58282099, %580 ], [ %.58282099, %577 ], [ %.58282099, %573 ], [ %.58282099, %.lr.ph1590 ]
  %.2977 = phi double [ %566, %564 ], [ %.09752097, %567 ], [ %.09752097, %.lr.ph1590 ], [ %574, %573 ], [ %574, %577 ], [ %581, %580 ], [ %581, %584 ], [ %588, %587 ], [ %588, %591 ], [ %595, %594 ]
  %.9857 = phi i32 [ %.3851, %564 ], [ %.78552098, %567 ], [ %.78552098, %.lr.ph1590 ], [ %575, %573 ], [ %575, %577 ], [ %582, %580 ], [ %582, %584 ], [ %589, %587 ], [ %589, %591 ], [ %596, %594 ]
  %597 = icmp eq i32 %.58282100, -1
  %spec.store.select27 = select i1 %597, i32 6, i32 %.58282100
  %598 = 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 %.2977, i32 noundef %spec.store.select27)
  %.not1124 = icmp eq i32 %598, 0
  %599 = or i32 %.9857, 128
  %spec.select1216 = select i1 %.not1124, i32 %.9857, i32 %599
  br label %600

600:                                              ; preds = %.loopexit1477, %451, %455
  %.10858 = phi i32 [ %.5853, %451 ], [ %.5853, %455 ], [ %spec.select1216, %.loopexit1477 ]
  %.6829 = phi i32 [ %454, %451 ], [ %457, %455 ], [ %spec.store.select27, %.loopexit1477 ]
  store i8 0, ptr %9, align 1, !tbaa !5
  call void @_ZL16stbsp__lead_signjPc(i32 noundef %.10858, ptr noundef nonnull %8)
  %601 = load i32, ptr %12, align 4, !tbaa !8
  %602 = icmp eq i32 %601, 28672
  br i1 %602, label %603, label %605

603:                                              ; preds = %600
  %604 = load ptr, ptr %13, align 8, !tbaa !15
  br label %991

605:                                              ; preds = %600
  %606 = icmp slt i32 %601, 1
  br i1 %606, label %607, label %668

607:                                              ; preds = %605
  store i8 48, ptr %21, align 16, !tbaa !5
  %.not1136 = icmp eq i32 %.6829, 0
  br i1 %.not1136, label %610, label %608

608:                                              ; preds = %607
  %609 = load i8, ptr @_ZL13stbsp__period, align 1, !tbaa !5
  store i8 %609, ptr %23, align 1, !tbaa !5
  br label %610

610:                                              ; preds = %608, %607
  %.4895 = phi ptr [ %24, %608 ], [ %23, %607 ]
  %.4895.fr = freeze ptr %.4895
  %611 = sub nsw i32 0, %601
  %spec.select1217 = call i32 @llvm.smin.i32(i32 %.6829, i32 %611)
  %.not11371630 = icmp eq i32 %spec.select1217, 0
  %612 = ptrtoint ptr %.4895.fr to i64
  %613 = and i64 %612, 3
  %614 = icmp eq i64 %613, 0
  %or.cond12201631 = or i1 %.not11371630, %614
  br i1 %or.cond12201631, label %.preheader1470, label %.lr.ph1635.preheader

.lr.ph1635.preheader:                             ; preds = %610
  %615 = trunc i64 %612 to i2
  %616 = xor i2 %615, -1
  %617 = zext i2 %616 to i64
  %618 = add i32 %spec.select1217, -1
  %619 = zext i32 %618 to i64
  %umin1985 = call i64 @llvm.umin.i64(i64 %617, i64 %619)
  %620 = add nuw nsw i64 %umin1985, 1
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %.4895.fr, i8 48, i64 %620, i1 false), !tbaa !5
  %621 = zext i2 %616 to i32
  %scevgep1986 = getelementptr i8, ptr %.4895.fr, i64 1
  %scevgep1988 = getelementptr i8, ptr %scevgep1986, i64 %umin1985
  %622 = call i32 @llvm.usub.sat.i32(i32 %618, i32 %621)
  br label %.preheader1470

.preheader1470:                                   ; preds = %.lr.ph1635.preheader, %610
  %.0978.lcssa = phi i32 [ %spec.select1217, %610 ], [ %622, %.lr.ph1635.preheader ]
  %.5896.lcssa = phi ptr [ %.4895.fr, %610 ], [ %scevgep1988, %.lr.ph1635.preheader ]
  %623 = icmp sgt i32 %.0978.lcssa, 3
  br i1 %623, label %.lr.ph1640.preheader, label %.preheader1469

.lr.ph1640.preheader:                             ; preds = %.preheader1470
  %624 = call i32 @llvm.usub.sat.i32(i32 %.0978.lcssa, i32 7)
  %625 = add nuw i32 %624, 3
  %626 = and i32 %625, -4
  %627 = zext nneg i32 %626 to i64
  %628 = add nuw nsw i64 %627, 4
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %.5896.lcssa, i8 48, i64 %628, i1 false), !tbaa !8
  %scevgep1990 = getelementptr i8, ptr %.5896.lcssa, i64 4
  %scevgep1992 = getelementptr i8, ptr %scevgep1990, i64 %627
  %629 = and i32 %625, -4
  %630 = add nsw i32 %.0978.lcssa, -4
  %631 = sub nsw i32 %630, %629
  br label %.preheader1469

.preheader1469:                                   ; preds = %.lr.ph1640.preheader, %.preheader1470
  %.1979.lcssa = phi i32 [ %.0978.lcssa, %.preheader1470 ], [ %631, %.lr.ph1640.preheader ]
  %.6897.lcssa = phi ptr [ %.5896.lcssa, %.preheader1470 ], [ %scevgep1992, %.lr.ph1640.preheader ]
  %.not11381643 = icmp eq i32 %.1979.lcssa, 0
  br i1 %.not11381643, label %._crit_edge1647, label %.lr.ph1646.preheader

.lr.ph1646.preheader:                             ; preds = %.preheader1469
  %632 = zext i32 %.1979.lcssa to i64
  call void @llvm.memset.p0.i64(ptr align 1 %.6897.lcssa, i8 48, i64 %632, i1 false), !tbaa !5
  %633 = add i32 %.1979.lcssa, -1
  %634 = zext i32 %633 to i64
  %scevgep1993 = getelementptr i8, ptr %.6897.lcssa, i64 1
  %scevgep1994 = getelementptr i8, ptr %scevgep1993, i64 %634
  br label %._crit_edge1647

._crit_edge1647:                                  ; preds = %.lr.ph1646.preheader, %.preheader1469
  %.7898.lcssa = phi ptr [ %.6897.lcssa, %.preheader1469 ], [ %scevgep1994, %.lr.ph1646.preheader ]
  %635 = load i32, ptr %10, align 4, !tbaa !8
  %636 = add i32 %635, %spec.select1217
  %637 = icmp sgt i32 %636, %.6829
  br i1 %637, label %638, label %640

638:                                              ; preds = %._crit_edge1647
  %639 = sub i32 %.6829, %spec.select1217
  store i32 %639, ptr %10, align 4, !tbaa !8
  br label %640

640:                                              ; preds = %638, %._crit_edge1647
  %641 = phi i32 [ %639, %638 ], [ %635, %._crit_edge1647 ]
  %.not11391649 = icmp eq i32 %641, 0
  br i1 %.not11391649, label %._crit_edge1654, label %.lr.ph1653.preheader

.lr.ph1653.preheader:                             ; preds = %640
  %smin = call i32 @llvm.smin.i32(i32 %.6829, i32 %636)
  %xtraiter = and i32 %641, 3
  %lcmp.mod.not = icmp eq i32 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.lr.ph1653.prol.loopexit, label %.lr.ph1653.prol

.lr.ph1653.prol:                                  ; preds = %.lr.ph1653.preheader, %.lr.ph1653.prol
  %.88991651.prol = phi ptr [ %645, %.lr.ph1653.prol ], [ %.7898.lcssa, %.lr.ph1653.preheader ]
  %.39811650.prol = phi i32 [ %646, %.lr.ph1653.prol ], [ %641, %.lr.ph1653.preheader ]
  %prol.iter = phi i32 [ %prol.iter.next, %.lr.ph1653.prol ], [ 0, %.lr.ph1653.preheader ]
  %642 = load ptr, ptr %13, align 8, !tbaa !15
  %643 = getelementptr inbounds i8, ptr %642, i64 1
  store ptr %643, ptr %13, align 8, !tbaa !15
  %644 = load i8, ptr %642, align 1, !tbaa !5
  %645 = getelementptr inbounds i8, ptr %.88991651.prol, i64 1
  store i8 %644, ptr %.88991651.prol, align 1, !tbaa !5
  %646 = add nsw i32 %.39811650.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.ph1653.prol.loopexit, label %.lr.ph1653.prol, !llvm.loop !34

.lr.ph1653.prol.loopexit:                         ; preds = %.lr.ph1653.prol, %.lr.ph1653.preheader
  %.lcssa2406.unr = phi ptr [ poison, %.lr.ph1653.preheader ], [ %645, %.lr.ph1653.prol ]
  %.88991651.unr = phi ptr [ %.7898.lcssa, %.lr.ph1653.preheader ], [ %645, %.lr.ph1653.prol ]
  %.39811650.unr = phi i32 [ %641, %.lr.ph1653.preheader ], [ %646, %.lr.ph1653.prol ]
  %647 = sub i32 %spec.select1217, %smin
  %648 = icmp ugt i32 %647, -4
  br i1 %648, label %._crit_edge1654, label %.lr.ph1653

.lr.ph1653:                                       ; preds = %.lr.ph1653.prol.loopexit, %.lr.ph1653
  %.88991651 = phi ptr [ %664, %.lr.ph1653 ], [ %.88991651.unr, %.lr.ph1653.prol.loopexit ]
  %.39811650 = phi i32 [ %665, %.lr.ph1653 ], [ %.39811650.unr, %.lr.ph1653.prol.loopexit ]
  %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 %.88991651, i64 1
  store i8 %651, ptr %.88991651, 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 %.88991651, i64 2
  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 %.88991651, i64 3
  store i8 %659, ptr %656, align 1, !tbaa !5
  %661 = load ptr, ptr %13, align 8, !tbaa !15
  %662 = getelementptr inbounds i8, ptr %661, i64 1
  store ptr %662, ptr %13, align 8, !tbaa !15
  %663 = load i8, ptr %661, align 1, !tbaa !5
  %664 = getelementptr inbounds i8, ptr %.88991651, i64 4
  store i8 %663, ptr %660, align 1, !tbaa !5
  %665 = add nsw i32 %.39811650, -4
  %.not1139.3 = icmp eq i32 %665, 0
  br i1 %.not1139.3, label %._crit_edge1654, label %.lr.ph1653, !llvm.loop !35

._crit_edge1654:                                  ; preds = %.lr.ph1653.prol.loopexit, %.lr.ph1653, %640
  %.8899.lcssa = phi ptr [ %.7898.lcssa, %640 ], [ %.lcssa2406.unr, %.lr.ph1653.prol.loopexit ], [ %664, %.lr.ph1653 ]
  %666 = add i32 %spec.select1217, %641
  %667 = sub i32 %.6829, %666
  br label %768

668:                                              ; preds = %605
  %669 = and i32 %.10858, 64
  %.not1127 = icmp eq i32 %669, 0
  br i1 %.not1127, label %673, label %670

670:                                              ; preds = %668
  %671 = sub nsw i32 600, %601
  %672 = urem i32 %671, 3
  br label %673

673:                                              ; preds = %668, %670
  %674 = phi i32 [ %672, %670 ], [ 0, %668 ]
  %675 = load i32, ptr %10, align 4, !tbaa !8
  %.not1128 = icmp ult i32 %601, %675
  br i1 %.not1128, label %.preheader1471.outer, label %.preheader1476.outer

676:                                              ; preds = %.preheader1476.peel.next, %684, %.preheader1476.outer
  %.9900.lcssa = phi ptr [ %.9900.ph, %.preheader1476.outer ], [ %.9900.ph, %684 ], [ %688, %.preheader1476.peel.next ]
  %.1960 = phi i32 [ %.0959.ph, %.preheader1476.outer ], [ %685, %684 ], [ %.1960.ph, %.preheader1476.peel.next ]
  %677 = load ptr, ptr %13, align 8, !tbaa !15
  %678 = zext i32 %.8943.ph to i64
  %679 = getelementptr inbounds i8, ptr %677, i64 %678
  %680 = load i8, ptr %679, align 1, !tbaa !5
  %681 = getelementptr i8, ptr %.9900.lcssa, i64 1
  store i8 %680, ptr %.9900.lcssa, align 1, !tbaa !5
  %682 = add i32 %.8943.ph, 1
  %683 = load i32, ptr %10, align 4, !tbaa !8
  %.not1132 = icmp ult i32 %682, %683
  br i1 %.not1132, label %.preheader1476.outer, label %689, !llvm.loop !36

.preheader1476.outer:                             ; preds = %673, %676
  %.0959.ph = phi i32 [ %.1960, %676 ], [ %674, %673 ]
  %.8943.ph = phi i32 [ %682, %676 ], [ 0, %673 ]
  %.9900.ph = phi ptr [ %681, %676 ], [ %21, %673 ]
  br i1 %.not1127, label %676, label %684

684:                                              ; preds = %.preheader1476.outer
  %685 = add i32 %.0959.ph, 1
  %686 = icmp eq i32 %685, 4
  br i1 %686, label %.preheader1476.peel.next, label %676

.preheader1476.peel.next:                         ; preds = %684
  %687 = load i8, ptr @_ZL12stbsp__comma, align 1, !tbaa !5
  %688 = getelementptr i8, ptr %.9900.ph, i64 1
  store i8 %687, ptr %.9900.ph, align 1, !tbaa !5
  %.1960.ph = select i1 %.not1127, i32 0, i32 1
  br label %676

689:                                              ; preds = %676
  %.9900.lcssa1974 = ptrtoint ptr %.9900.lcssa to i64
  %690 = load i32, ptr %12, align 4, !tbaa !8
  %691 = icmp ult i32 %682, %690
  br i1 %691, label %692, label %.loopexit1472

692:                                              ; preds = %689
  %693 = sub i32 %690, %682
  br i1 %.not1127, label %.preheader1475, label %.loopexit1474

.preheader1475:                                   ; preds = %692
  %.not11331604 = icmp eq i32 %693, 0
  %694 = ptrtoint ptr %681 to i64
  %695 = and i64 %694, 3
  %696 = icmp eq i64 %695, 0
  %or.cond12231605 = or i1 %.not11331604, %696
  br i1 %or.cond12231605, label %.preheader1473, label %.lr.ph1608.preheader

.lr.ph1608.preheader:                             ; preds = %.preheader1475
  %697 = trunc i64 %.9900.lcssa1974 to i2
  %698 = sub i2 -2, %697
  %699 = zext i2 %698 to i64
  %700 = add i32 %690, -2
  %701 = sub i32 %700, %.8943.ph
  %702 = zext i32 %701 to i64
  %umin = call i64 @llvm.umin.i64(i64 %699, i64 %702)
  %703 = add nuw nsw i64 %umin, 1
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %681, i8 48, i64 %703, i1 false), !tbaa !5
  %704 = zext i2 %698 to i32
  %scevgep1975 = getelementptr i8, ptr %.9900.lcssa, i64 2
  %scevgep1977 = getelementptr i8, ptr %scevgep1975, i64 %umin
  %705 = call i32 @llvm.usub.sat.i32(i32 %701, i32 %704)
  br label %.preheader1473

.preheader1473:                                   ; preds = %.lr.ph1608.preheader, %.preheader1475
  %.10945.lcssa = phi i32 [ %693, %.preheader1475 ], [ %705, %.lr.ph1608.preheader ]
  %.11902.lcssa = phi ptr [ %681, %.preheader1475 ], [ %scevgep1977, %.lr.ph1608.preheader ]
  %706 = icmp ugt i32 %.10945.lcssa, 3
  br i1 %706, label %.lr.ph1613.preheader, label %.loopexit1474

.lr.ph1613.preheader:                             ; preds = %.preheader1473
  %707 = and i32 %.10945.lcssa, -4
  %708 = add i32 %707, -4
  %709 = zext i32 %708 to i64
  %710 = add nuw nsw i64 %709, 4
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %.11902.lcssa, i8 48, i64 %710, i1 false), !tbaa !8
  %scevgep1979 = getelementptr i8, ptr %.11902.lcssa, i64 4
  %scevgep1980 = getelementptr i8, ptr %scevgep1979, i64 %709
  %711 = and i32 %.10945.lcssa, 3
  br label %.loopexit1474

.loopexit1474:                                    ; preds = %.lr.ph1613.preheader, %.preheader1473, %692
  %.12947 = phi i32 [ %693, %692 ], [ %.10945.lcssa, %.preheader1473 ], [ %711, %.lr.ph1613.preheader ]
  %.13904 = phi ptr [ %681, %692 ], [ %.11902.lcssa, %.preheader1473 ], [ %scevgep1980, %.lr.ph1613.preheader ]
  %.not11341616 = icmp eq i32 %.12947, 0
  br i1 %.not11341616, label %.loopexit1472, label %.lr.ph1621

.lr.ph1621:                                       ; preds = %.loopexit1474, %719
  %.149051619 = phi ptr [ %.15906, %719 ], [ %.13904, %.loopexit1474 ]
  %.139481618 = phi i32 [ %.14949, %719 ], [ %.12947, %.loopexit1474 ]
  %.39621617 = phi i32 [ %.5964, %719 ], [ %.1960, %.loopexit1474 ]
  br i1 %.not1127, label %717, label %712

712:                                              ; preds = %.lr.ph1621
  %713 = add i32 %.39621617, 1
  %714 = icmp eq i32 %713, 4
  br i1 %714, label %715, label %717

715:                                              ; preds = %712
  %716 = load i8, ptr @_ZL12stbsp__comma, align 1, !tbaa !5
  store i8 %716, ptr %.149051619, align 1, !tbaa !5
  br label %719

717:                                              ; preds = %712, %.lr.ph1621
  %.4963 = phi i32 [ %713, %712 ], [ %.39621617, %.lr.ph1621 ]
  store i8 48, ptr %.149051619, align 1, !tbaa !5
  %718 = add i32 %.139481618, -1
  br label %719

719:                                              ; preds = %717, %715
  %.5964 = phi i32 [ 0, %715 ], [ %.4963, %717 ]
  %.14949 = phi i32 [ %.139481618, %715 ], [ %718, %717 ]
  %.15906 = getelementptr inbounds i8, ptr %.149051619, i64 1
  %.not1134 = icmp eq i32 %.14949, 0
  br i1 %.not1134, label %.loopexit1472, label %.lr.ph1621, !llvm.loop !37

.loopexit1472:                                    ; preds = %719, %.loopexit1474, %689
  %.16907 = phi ptr [ %681, %689 ], [ %.13904, %.loopexit1474 ], [ %.15906, %719 ]
  %720 = ptrtoint ptr %.16907 to i64
  %721 = sub i64 %720, %22
  %722 = trunc i64 %721 to i32
  %723 = add nsw i32 %722, 50331648
  %.not1135 = icmp eq i32 %.6829, 0
  br i1 %.not1135, label %768, label %724

724:                                              ; preds = %.loopexit1472
  %725 = load i8, ptr @_ZL13stbsp__period, align 1, !tbaa !5
  %726 = getelementptr inbounds i8, ptr %.16907, i64 1
  store i8 %725, ptr %.16907, align 1, !tbaa !5
  br label %768

727:                                              ; preds = %.preheader1471.peel.next, %735, %.preheader1471.outer
  %.17908.lcssa = phi ptr [ %.17908.ph, %.preheader1471.outer ], [ %.17908.ph, %735 ], [ %739, %.preheader1471.peel.next ]
  %.7966 = phi i32 [ %.6965.ph, %.preheader1471.outer ], [ %736, %735 ], [ %.7966.ph, %.preheader1471.peel.next ]
  %728 = load ptr, ptr %13, align 8, !tbaa !15
  %729 = zext i32 %.15950.ph to i64
  %730 = getelementptr inbounds i8, ptr %728, i64 %729
  %731 = load i8, ptr %730, align 1, !tbaa !5
  %732 = getelementptr inbounds i8, ptr %.17908.lcssa, i64 1
  store i8 %731, ptr %.17908.lcssa, align 1, !tbaa !5
  %733 = add i32 %.15950.ph, 1
  %734 = load i32, ptr %12, align 4, !tbaa !8
  %.not1129 = icmp ult i32 %733, %734
  br i1 %.not1129, label %.preheader1471.outer, label %740, !llvm.loop !38

.preheader1471.outer:                             ; preds = %673, %727
  %.6965.ph = phi i32 [ %.7966, %727 ], [ %674, %673 ]
  %.15950.ph = phi i32 [ %733, %727 ], [ 0, %673 ]
  %.17908.ph = phi ptr [ %732, %727 ], [ %21, %673 ]
  br i1 %.not1127, label %727, label %735

735:                                              ; preds = %.preheader1471.outer
  %736 = add i32 %.6965.ph, 1
  %737 = icmp eq i32 %736, 4
  br i1 %737, label %.preheader1471.peel.next, label %727

.preheader1471.peel.next:                         ; preds = %735
  %738 = load i8, ptr @_ZL12stbsp__comma, align 1, !tbaa !5
  %739 = getelementptr inbounds i8, ptr %.17908.ph, i64 1
  store i8 %738, ptr %.17908.ph, align 1, !tbaa !5
  %.7966.ph = select i1 %.not1127, i32 0, i32 1
  br label %727

740:                                              ; preds = %727
  %741 = ptrtoint ptr %732 to i64
  %742 = sub i64 %741, %22
  %743 = trunc i64 %742 to i32
  %744 = add nsw i32 %743, 50331648
  %.not1130 = icmp eq i32 %.6829, 0
  br i1 %.not1130, label %748, label %745

745:                                              ; preds = %740
  %746 = load i8, ptr @_ZL13stbsp__period, align 1, !tbaa !5
  %747 = getelementptr inbounds i8, ptr %.17908.lcssa, i64 2
  store i8 %746, ptr %732, align 1, !tbaa !5
  %.pre2062 = load i32, ptr %12, align 4, !tbaa !8
  br label %748

748:                                              ; preds = %745, %740
  %749 = phi i32 [ %.pre2062, %745 ], [ %734, %740 ]
  %.19910 = phi ptr [ %747, %745 ], [ %732, %740 ]
  %750 = load i32, ptr %10, align 4, !tbaa !8
  %751 = sub i32 %750, %749
  %752 = icmp ugt i32 %751, %.6829
  br i1 %752, label %753, label %755

753:                                              ; preds = %748
  %754 = add nsw i32 %749, %.6829
  store i32 %754, ptr %10, align 4, !tbaa !8
  br label %755

755:                                              ; preds = %753, %748
  %756 = phi i32 [ %754, %753 ], [ %750, %748 ]
  %757 = icmp ult i32 %733, %756
  br i1 %757, label %.lr.ph1626.preheader, label %._crit_edge1627

.lr.ph1626.preheader:                             ; preds = %755
  %758 = zext i32 %733 to i64
  br label %.lr.ph1626

.lr.ph1626:                                       ; preds = %.lr.ph1626.preheader, %.lr.ph1626
  %indvars.iv1981 = phi i64 [ %758, %.lr.ph1626.preheader ], [ %indvars.iv.next1982, %.lr.ph1626 ]
  %.209111624 = phi ptr [ %.19910, %.lr.ph1626.preheader ], [ %762, %.lr.ph1626 ]
  %759 = load ptr, ptr %13, align 8, !tbaa !15
  %760 = getelementptr inbounds i8, ptr %759, i64 %indvars.iv1981
  %761 = load i8, ptr %760, align 1, !tbaa !5
  %762 = getelementptr inbounds i8, ptr %.209111624, i64 1
  store i8 %761, ptr %.209111624, align 1, !tbaa !5
  %indvars.iv.next1982 = add nuw nsw i64 %indvars.iv1981, 1
  %763 = load i32, ptr %10, align 4, !tbaa !8
  %764 = zext i32 %763 to i64
  %765 = icmp ult i64 %indvars.iv.next1982, %764
  br i1 %765, label %.lr.ph1626, label %._crit_edge1627.loopexit, !llvm.loop !39

._crit_edge1627.loopexit:                         ; preds = %.lr.ph1626
  %.pre2063 = load i32, ptr %12, align 4, !tbaa !8
  br label %._crit_edge1627

._crit_edge1627:                                  ; preds = %._crit_edge1627.loopexit, %755
  %766 = phi i32 [ %749, %755 ], [ %.pre2063, %._crit_edge1627.loopexit ]
  %.20911.lcssa = phi ptr [ %.19910, %755 ], [ %762, %._crit_edge1627.loopexit ]
  %.lcssa1503 = phi i32 [ %756, %755 ], [ %763, %._crit_edge1627.loopexit ]
  %.neg1131 = sub i32 %.6829, %.lcssa1503
  %767 = add i32 %.neg1131, %766
  br label %768

768:                                              ; preds = %._crit_edge1627, %724, %.loopexit1472, %._crit_edge1654
  %.9968 = phi i32 [ 50331649, %._crit_edge1654 ], [ %723, %724 ], [ %723, %.loopexit1472 ], [ %744, %._crit_edge1627 ]
  %.21912 = phi ptr [ %.8899.lcssa, %._crit_edge1654 ], [ %726, %724 ], [ %.16907, %.loopexit1472 ], [ %.20911.lcssa, %._crit_edge1627 ]
  %.1844 = phi i32 [ %667, %._crit_edge1654 ], [ %.6829, %724 ], [ 0, %.loopexit1472 ], [ %767, %._crit_edge1627 ]
  %769 = and i32 %.10858, 256
  %.not1140 = icmp eq i32 %769, 0
  br i1 %.not1140, label %790, label %770

770:                                              ; preds = %768
  %771 = and i32 %.10858, 1024
  %.not1141 = icmp eq i32 %771, 0
  %spec.store.select28 = zext i1 %.not1141 to i8
  store i8 %spec.store.select28, ptr %9, align 1, !tbaa !5
  store i8 32, ptr %25, align 1, !tbaa !5
  %.not1142 = icmp ult i32 %.10858, 16777216
  br i1 %.not1142, label %790, label %772

772:                                              ; preds = %770
  %773 = lshr i32 %.10858, 24
  %774 = and i32 %.10858, 2048
  %.not1143.not = icmp eq i32 %774, 0
  %775 = zext nneg i32 %773 to i64
  %.lobit = lshr exact i32 %771, 10
  %776 = sub nuw nsw i32 2, %.lobit
  %777 = zext nneg i32 %776 to i64
  %778 = getelementptr inbounds [8 x i8], ptr %9, i64 0, i64 %777
  %779 = select i1 %.not1141, i8 2, i8 1
  br i1 %.not1143.not, label %.thread1280, label %782

.thread1280:                                      ; preds = %772
  %780 = getelementptr inbounds [6 x i8], ptr @.str.4, i64 0, i64 %775
  %781 = load i8, ptr %780, align 1, !tbaa !5
  store i8 %781, ptr %778, align 1, !tbaa !5
  br label %789

782:                                              ; preds = %772
  %783 = getelementptr inbounds [6 x i8], ptr @.str.3, i64 0, i64 %775
  %784 = load i8, ptr %783, align 1, !tbaa !5
  store i8 %784, ptr %778, align 1, !tbaa !5
  %785 = and i32 %.10858, 6144
  %or.cond1224 = icmp eq i32 %785, 2048
  br i1 %or.cond1224, label %786, label %789

786:                                              ; preds = %782
  %narrow = add nuw nsw i8 %779, 1
  %787 = zext nneg i8 %narrow to i64
  %788 = getelementptr inbounds [8 x i8], ptr %9, i64 0, i64 %787
  store i8 105, ptr %788, align 1, !tbaa !5
  br label %789

789:                                              ; preds = %.thread1280, %786, %782
  %.0982 = phi i8 [ %narrow, %786 ], [ %779, %782 ], [ %779, %.thread1280 ]
  store i8 %.0982, ptr %9, align 1, !tbaa !5
  br label %790

.loopexit1468:                                    ; preds = %547, %532
  %.lcssa2408 = phi i32 [ %542, %532 ], [ %548, %547 ]
  store i32 %.lcssa2408, ptr %12, align 4, !tbaa !8
  br label %790

790:                                              ; preds = %.loopexit1468, %770, %789, %768
  %.10969 = phi i32 [ %.9968, %768 ], [ %.9968, %789 ], [ %.9968, %770 ], [ 50331649, %.loopexit1468 ]
  %.22913 = phi ptr [ %.21912, %768 ], [ %.21912, %789 ], [ %.21912, %770 ], [ %.3894.lcssa, %.loopexit1468 ]
  %.11859 = phi i32 [ %.10858, %768 ], [ %.10858, %789 ], [ %.10858, %770 ], [ %.6854, %.loopexit1468 ]
  %.2845 = phi i32 [ %.1844, %768 ], [ %.1844, %789 ], [ %.1844, %770 ], [ %524, %.loopexit1468 ]
  %791 = ptrtoint ptr %.22913 to i64
  %792 = sub i64 %791, %22
  %793 = trunc i64 %792 to i32
  store i32 %793, ptr %10, align 4, !tbaa !8
  br label %991

794:                                              ; preds = %202, %202
  %795 = icmp eq i8 %203, 66
  %_ZZ16stbsp_vsprintfcbE4hexu._ZZ16stbsp_vsprintfcbE3hex29 = select i1 %795, ptr @_ZZ16stbsp_vsprintfcbE4hexu, ptr @_ZZ16stbsp_vsprintfcbE3hex
  store i8 0, ptr %8, align 1, !tbaa !5
  %796 = and i32 %.3851, 8
  %.not1115 = icmp eq i32 %796, 0
  br i1 %.not1115, label %799, label %797

797:                                              ; preds = %794
  store i8 2, ptr %8, align 1, !tbaa !5
  store i8 48, ptr %16, align 1, !tbaa !5
  %.val1116 = load i8, ptr getelementptr inbounds (i8, ptr @_ZZ16stbsp_vsprintfcbE4hexu, i64 11), align 1
  %.val1117 = load i8, ptr getelementptr inbounds (i8, ptr @_ZZ16stbsp_vsprintfcbE3hex, i64 11), align 1
  %798 = select i1 %795, i8 %.val1116, i8 %.val1117
  store i8 %798, ptr %17, align 1, !tbaa !5
  br label %799

799:                                              ; preds = %797, %794
  store i32 384, ptr %10, align 4, !tbaa !8
  br label %812

800:                                              ; preds = %202
  store i8 0, ptr %8, align 1, !tbaa !5
  %801 = and i32 %.3851, 8
  %.not1114 = icmp eq i32 %801, 0
  br i1 %.not1114, label %803, label %802

802:                                              ; preds = %800
  store i8 1, ptr %8, align 1, !tbaa !5
  store i8 48, ptr %16, align 1, !tbaa !5
  br label %803

803:                                              ; preds = %802, %800
  store i32 816, ptr %10, align 4, !tbaa !8
  br label %812

804:                                              ; preds = %202
  %805 = and i32 %.3851, -49
  %806 = or disjoint i32 %805, 32
  br label %807

807:                                              ; preds = %804, %202, %202
  %.12860 = phi i32 [ %.3851, %202 ], [ %.3851, %202 ], [ %806, %804 ]
  %.8831 = phi i32 [ %.1824, %202 ], [ %.1824, %202 ], [ 16, %804 ]
  %808 = icmp eq i8 %203, 88
  %_ZZ16stbsp_vsprintfcbE4hexu._ZZ16stbsp_vsprintfcbE3hex30 = select i1 %808, ptr @_ZZ16stbsp_vsprintfcbE4hexu, ptr @_ZZ16stbsp_vsprintfcbE3hex
  store i32 1088, ptr %10, align 4, !tbaa !8
  store i8 0, ptr %8, align 1, !tbaa !5
  %809 = and i32 %.12860, 8
  %.not1112 = icmp eq i32 %809, 0
  br i1 %.not1112, label %812, label %810

810:                                              ; preds = %807
  store i8 2, ptr %8, align 1, !tbaa !5
  store i8 48, ptr %16, align 1, !tbaa !5
  %.val = load i8, ptr getelementptr inbounds (i8, ptr @_ZZ16stbsp_vsprintfcbE4hexu, i64 16), align 16
  %.val1113 = load i8, ptr getelementptr inbounds (i8, ptr @_ZZ16stbsp_vsprintfcbE3hex, i64 16), align 16
  %811 = select i1 %808, i8 %.val, i8 %.val1113
  store i8 %811, ptr %17, align 1, !tbaa !5
  br label %812

812:                                              ; preds = %807, %810, %803, %799
  %813 = phi i32 [ 4, %810 ], [ 4, %807 ], [ 3, %803 ], [ 1, %799 ]
  %.1934 = phi ptr [ %_ZZ16stbsp_vsprintfcbE4hexu._ZZ16stbsp_vsprintfcbE3hex30, %810 ], [ %_ZZ16stbsp_vsprintfcbE4hexu._ZZ16stbsp_vsprintfcbE3hex30, %807 ], [ @_ZZ16stbsp_vsprintfcbE4hexu, %803 ], [ %_ZZ16stbsp_vsprintfcbE4hexu._ZZ16stbsp_vsprintfcbE3hex29, %799 ]
  %.13861 = phi i32 [ %.12860, %810 ], [ %.12860, %807 ], [ %.3851, %803 ], [ %.3851, %799 ]
  %.9832 = phi i32 [ %.8831, %810 ], [ %.8831, %807 ], [ %.1824, %803 ], [ %.1824, %799 ]
  %814 = and i32 %.13861, 32
  %.not1118 = icmp eq i32 %814, 0
  %815 = load i32, ptr %4, align 8
  %816 = icmp ult i32 %815, 41
  br i1 %.not1118, label %829, label %817

817:                                              ; preds = %812
  br i1 %816, label %818, label %823

818:                                              ; preds = %817
  %819 = load ptr, ptr %15, align 8
  %820 = zext nneg i32 %815 to i64
  %821 = getelementptr i8, ptr %819, i64 %820
  %822 = add nuw nsw i32 %815, 8
  store i32 %822, ptr %4, align 8
  br label %826

823:                                              ; preds = %817
  %824 = load ptr, ptr %14, align 8
  %825 = getelementptr i8, ptr %824, i64 8
  store ptr %825, ptr %14, align 8
  br label %826

826:                                              ; preds = %823, %818
  %827 = phi ptr [ %821, %818 ], [ %824, %823 ]
  %828 = load i64, ptr %827, align 8, !tbaa !20
  br label %842

829:                                              ; preds = %812
  br i1 %816, label %830, label %835

830:                                              ; preds = %829
  %831 = load ptr, ptr %15, align 8
  %832 = zext nneg i32 %815 to i64
  %833 = getelementptr i8, ptr %831, i64 %832
  %834 = add nuw nsw i32 %815, 8
  store i32 %834, ptr %4, align 8
  br label %838

835:                                              ; preds = %829
  %836 = load ptr, ptr %14, align 8
  %837 = getelementptr i8, ptr %836, i64 8
  store ptr %837, ptr %14, align 8
  br label %838

838:                                              ; preds = %835, %830
  %839 = phi ptr [ %833, %830 ], [ %836, %835 ]
  %840 = load i32, ptr %839, align 4, !tbaa !8
  %841 = zext i32 %840 to i64
  br label %842

842:                                              ; preds = %838, %826
  %storemerge1119 = phi i64 [ %841, %838 ], [ %828, %826 ]
  store i64 %storemerge1119, ptr %11, align 8, !tbaa !20
  store i32 0, ptr %12, align 4, !tbaa !8
  store i8 0, ptr %9, align 1, !tbaa !5
  %843 = icmp eq i64 %storemerge1119, 0
  br i1 %843, label %844, label %847

844:                                              ; preds = %842
  store i8 0, ptr %8, align 1, !tbaa !5
  %845 = icmp eq i32 %.9832, 0
  br i1 %845, label %846, label %847

846:                                              ; preds = %844
  store i32 0, ptr %10, align 4, !tbaa !8
  br label %991

847:                                              ; preds = %844, %842
  %848 = and i32 %.13861, 64
  %.not1121 = icmp eq i32 %848, 0
  %notmask2280 = shl nsw i32 -1, %813
  %849 = xor i32 %notmask2280, -1
  %850 = zext nneg i32 %849 to i64
  %851 = and i64 %storemerge1119, %850
  %852 = getelementptr inbounds i8, ptr %.1934, i64 %851
  %853 = load i8, ptr %852, align 1, !tbaa !5
  store i8 %853, ptr %30, align 1, !tbaa !5
  %854 = load i32, ptr %10, align 4, !tbaa !8
  %855 = lshr i32 %854, 8
  %856 = load i64, ptr %11, align 8, !tbaa !20
  %857 = zext nneg i32 %855 to i64
  %858 = lshr i64 %856, %857
  store i64 %858, ptr %11, align 8, !tbaa !20
  %.not11202281 = icmp ne i64 %858, 0
  %859 = icmp sgt i32 %.9832, 1
  %or.cond18742282 = select i1 %.not11202281, i1 true, i1 %859
  br i1 %or.cond18742282, label %.lr.ph2285, label %._crit_edge2286

.lr.ph2285:                                       ; preds = %847, %873
  %860 = phi i64 [ %885, %873 ], [ %858, %847 ]
  %861 = phi i32 [ %881, %873 ], [ %854, %847 ]
  %862 = phi ptr [ %880, %873 ], [ %30, %847 ]
  %.239142283 = phi ptr [ %.24915, %873 ], [ %18, %847 ]
  br i1 %.not1121, label %873, label %863

863:                                              ; preds = %.lr.ph2285
  %864 = add i32 %861, 1
  store i32 %864, ptr %10, align 4, !tbaa !8
  %865 = lshr i32 %864, 4
  %866 = xor i32 %865, %864
  %867 = and i32 %866, 15
  %868 = icmp eq i32 %867, 0
  br i1 %868, label %869, label %873

869:                                              ; preds = %863
  %870 = and i32 %864, -16
  store i32 %870, ptr %10, align 4, !tbaa !8
  %871 = load i8, ptr @_ZL12stbsp__comma, align 1, !tbaa !5
  %872 = getelementptr inbounds i8, ptr %.239142283, i64 -2
  store i8 %871, ptr %872, align 1, !tbaa !5
  %.pre2057.pre = load i64, ptr %11, align 8, !tbaa !20
  %.pre2058.pre = load i32, ptr %10, align 4, !tbaa !8
  br label %873

873:                                              ; preds = %863, %869, %.lr.ph2285
  %.pre2058 = phi i32 [ %.pre2058.pre, %869 ], [ %864, %863 ], [ %861, %.lr.ph2285 ]
  %.pre2057 = phi i64 [ %.pre2057.pre, %869 ], [ %860, %863 ], [ %860, %.lr.ph2285 ]
  %.24915 = phi ptr [ %872, %869 ], [ %862, %863 ], [ %862, %.lr.ph2285 ]
  %874 = lshr i32 %.pre2058, 8
  %notmask = shl nsw i32 -1, %874
  %875 = xor i32 %notmask, -1
  %876 = zext nneg i32 %875 to i64
  %877 = and i64 %.pre2057, %876
  %878 = getelementptr inbounds i8, ptr %.1934, i64 %877
  %879 = load i8, ptr %878, align 1, !tbaa !5
  %880 = getelementptr inbounds i8, ptr %.24915, i64 -1
  store i8 %879, ptr %880, align 1, !tbaa !5
  %881 = load i32, ptr %10, align 4, !tbaa !8
  %882 = lshr i32 %881, 8
  %883 = load i64, ptr %11, align 8, !tbaa !20
  %884 = zext nneg i32 %882 to i64
  %885 = lshr i64 %883, %884
  store i64 %885, ptr %11, align 8, !tbaa !20
  %.not1120 = icmp ne i64 %885, 0
  %886 = ptrtoint ptr %880 to i64
  %887 = sub i64 %19, %886
  %888 = trunc i64 %887 to i32
  %889 = icmp sgt i32 %.9832, %888
  %or.cond1874 = select i1 %.not1120, i1 true, i1 %889
  br i1 %or.cond1874, label %.lr.ph2285, label %._crit_edge2286, !llvm.loop !40

._crit_edge2286:                                  ; preds = %873, %847
  %.lcssa2238 = phi ptr [ %30, %847 ], [ %880, %873 ]
  %.lcssa2237 = phi i32 [ %854, %847 ], [ %881, %873 ]
  %.lcssa2236 = phi i32 [ 1, %847 ], [ %888, %873 ]
  %890 = shl i32 %.lcssa2237, 20
  %891 = and i32 %890, 251658240
  %892 = add i32 %891, %.lcssa2236
  store i32 %.lcssa2236, ptr %10, align 4, !tbaa !8
  br label %991

893:                                              ; preds = %202, %202, %202
  %894 = and i32 %.3851, 32
  %.not1096 = icmp eq i32 %894, 0
  %895 = load i32, ptr %4, align 8
  %896 = icmp ult i32 %895, 41
  br i1 %.not1096, label %915, label %897

897:                                              ; preds = %893
  br i1 %896, label %898, label %903

898:                                              ; preds = %897
  %899 = load ptr, ptr %15, align 8
  %900 = zext nneg i32 %895 to i64
  %901 = getelementptr i8, ptr %899, i64 %900
  %902 = add nuw nsw i32 %895, 8
  store i32 %902, ptr %4, align 8
  br label %906

903:                                              ; preds = %897
  %904 = load ptr, ptr %14, align 8
  %905 = getelementptr i8, ptr %904, i64 8
  store ptr %905, ptr %14, align 8
  br label %906

906:                                              ; preds = %903, %898
  %907 = phi ptr [ %901, %898 ], [ %904, %903 ]
  %908 = load i64, ptr %907, align 8, !tbaa !20
  store i64 %908, ptr %11, align 8, !tbaa !20
  %909 = load i8, ptr %.12758, align 1, !tbaa !5
  %910 = icmp ne i8 %909, 117
  %911 = icmp slt i64 %908, 0
  %or.cond32 = select i1 %910, i1 %911, i1 false
  br i1 %or.cond32, label %912, label %935

912:                                              ; preds = %906
  %913 = sub nsw i64 0, %908
  store i64 %913, ptr %11, align 8, !tbaa !20
  %914 = or i32 %.3851, 128
  br label %935

915:                                              ; preds = %893
  br i1 %896, label %916, label %921

916:                                              ; preds = %915
  %917 = load ptr, ptr %15, align 8
  %918 = zext nneg i32 %895 to i64
  %919 = getelementptr i8, ptr %917, i64 %918
  %920 = add nuw nsw i32 %895, 8
  store i32 %920, ptr %4, align 8
  br label %924

921:                                              ; preds = %915
  %922 = load ptr, ptr %14, align 8
  %923 = getelementptr i8, ptr %922, i64 8
  store ptr %923, ptr %14, align 8
  br label %924

924:                                              ; preds = %921, %916
  %925 = phi ptr [ %919, %916 ], [ %922, %921 ]
  %926 = load i32, ptr %925, align 4, !tbaa !8
  %927 = zext i32 %926 to i64
  store i64 %927, ptr %11, align 8, !tbaa !20
  %928 = load i8, ptr %.12758, align 1, !tbaa !5
  %929 = icmp ne i8 %928, 117
  %930 = icmp slt i32 %926, 0
  %or.cond34 = select i1 %929, i1 %930, i1 false
  br i1 %or.cond34, label %931, label %935

931:                                              ; preds = %924
  %932 = sub nsw i32 0, %926
  %933 = zext nneg i32 %932 to i64
  store i64 %933, ptr %11, align 8, !tbaa !20
  %934 = or i32 %.3851, 128
  br label %935

935:                                              ; preds = %924, %931, %906, %912
  %.promoted1579 = phi i64 [ %913, %912 ], [ %908, %906 ], [ %933, %931 ], [ %927, %924 ]
  %.16864 = phi i32 [ %914, %912 ], [ %.3851, %906 ], [ %934, %931 ], [ %.3851, %924 ]
  %936 = and i32 %.16864, 256
  %.not1097 = icmp eq i32 %936, 0
  br i1 %.not1097, label %940, label %.thread2091

.thread2091:                                      ; preds = %935
  %937 = icmp ult i64 %.promoted1579, 1024
  %938 = icmp eq i32 %.1824, -1
  %spec.store.select35 = select i1 %938, i32 1, i32 %.1824
  %.10833 = select i1 %937, i32 0, i32 %spec.store.select35
  %939 = sitofp i64 %.promoted1579 to double
  br label %567

940:                                              ; preds = %935
  store i32 0, ptr %10, align 4, !tbaa !8
  %941 = and i32 %.16864, 64
  %942 = icmp eq i32 %941, 0
  %943 = load i8, ptr @_ZL12stbsp__comma, align 1
  br label %.loopexit1451

..loopexit1451_crit_edge.split:                   ; preds = %977
  store i32 %978, ptr %10, align 4, !tbaa !8
  br label %.loopexit1451.backedge

.loopexit1451:                                    ; preds = %.loopexit1451.backedge, %940
  %.lcssa15781586 = phi i32 [ 0, %940 ], [ %.lcssa15781586.be, %.loopexit1451.backedge ]
  %storemerge1580 = phi i64 [ %.promoted1579, %940 ], [ %storemerge, %.loopexit1451.backedge ]
  %.25916.idx = phi i64 [ 512, %940 ], [ %.25916.idx.be, %.loopexit1451.backedge ]
  %gep = getelementptr i8, ptr %invariant.gep, i64 %.25916.idx
  %944 = icmp ugt i64 %storemerge1580, 99999999
  br i1 %944, label %945, label %948

945:                                              ; preds = %.loopexit1451
  %946 = urem i64 %storemerge1580, 100000000
  %947 = udiv i64 %storemerge1580, 100000000
  br label %948

948:                                              ; preds = %.loopexit1451, %945
  %storemerge = phi i64 [ %947, %945 ], [ 0, %.loopexit1451 ]
  %.18953.in = phi i64 [ %946, %945 ], [ %storemerge1580, %.loopexit1451 ]
  %.18953 = trunc nuw i64 %.18953.in to i32
  br i1 %942, label %.preheader1452, label %.loopexit1453

.preheader1452:                                   ; preds = %948, %.preheader1452
  %.19954 = phi i32 [ %954, %.preheader1452 ], [ %.18953, %948 ]
  %.26917.idx = phi i64 [ %.26917.add, %.preheader1452 ], [ %.25916.idx, %948 ]
  %.26917.add = add nsw i64 %.26917.idx, -2
  %.ptr = getelementptr inbounds i8, ptr %6, i64 %.26917.add
  %949 = urem i32 %.19954, 100
  %950 = shl nuw nsw i32 %949, 1
  %951 = zext nneg i32 %950 to i64
  %952 = getelementptr inbounds [201 x i8], ptr getelementptr inbounds (i8, ptr @_ZL16stbsp__digitpair, i64 2), i64 0, i64 %951
  %953 = load i16, ptr %952, align 2, !tbaa !41
  store i16 %953, ptr %.ptr, align 2, !tbaa !41
  %954 = udiv i32 %.19954, 100
  %.not1098 = icmp ult i32 %.19954, 100
  br i1 %.not1098, label %._crit_edge, label %.preheader1452, !llvm.loop !43

.loopexit1453:                                    ; preds = %948
  %.not10991558 = icmp eq i64 %.18953.in, 0
  br i1 %.not10991558, label %._crit_edge, label %.lr.ph1562.split

.lr.ph1562.split:                                 ; preds = %.loopexit1453, %965
  %.28919.idx1561 = phi i64 [ %.29920.idx, %965 ], [ %.25916.idx, %.loopexit1453 ]
  %.219561560 = phi i32 [ %.22957, %965 ], [ %.18953, %.loopexit1453 ]
  %.09971559 = phi ptr [ %.1998, %965 ], [ %gep, %.loopexit1453 ]
  %955 = phi i32 [ %966, %965 ], [ %.lcssa15781586, %.loopexit1453 ]
  %956 = icmp eq i32 %955, 3
  br i1 %956, label %957, label %959

957:                                              ; preds = %.lr.ph1562.split
  %.28919.add1102 = add nsw i64 %.28919.idx1561, -1
  %.ptr1106 = getelementptr inbounds i8, ptr %6, i64 %.28919.add1102
  store i8 %943, ptr %.ptr1106, align 1, !tbaa !5
  %958 = getelementptr inbounds i8, ptr %.09971559, i64 -1
  br label %965

959:                                              ; preds = %.lr.ph1562.split
  %960 = add i32 %955, 1
  %961 = urem i32 %.219561560, 10
  %962 = trunc nuw nsw i32 %961 to i8
  %963 = or disjoint i8 %962, 48
  %.28919.add = add nsw i64 %.28919.idx1561, -1
  %.ptr1105 = getelementptr inbounds i8, ptr %6, i64 %.28919.add
  store i8 %963, ptr %.ptr1105, align 1, !tbaa !5
  %964 = udiv i32 %.219561560, 10
  br label %965

965:                                              ; preds = %959, %957
  %966 = phi i32 [ 0, %957 ], [ %960, %959 ]
  %.1998 = phi ptr [ %958, %957 ], [ %.09971559, %959 ]
  %.22957 = phi i32 [ %.219561560, %957 ], [ %964, %959 ]
  %.29920.idx = phi i64 [ %.28919.add1102, %957 ], [ %.28919.add, %959 ]
  %.not1099 = icmp eq i32 %.22957, 0
  br i1 %.not1099, label %._crit_edge.split, label %.lr.ph1562.split, !llvm.loop !44

._crit_edge.split:                                ; preds = %965
  store i32 %966, ptr %10, align 4, !tbaa !8
  br label %._crit_edge

._crit_edge:                                      ; preds = %.preheader1452, %._crit_edge.split, %.loopexit1453
  %.lcssa15781585 = phi i32 [ %.lcssa15781586, %.loopexit1453 ], [ %966, %._crit_edge.split ], [ %.lcssa15781586, %.preheader1452 ]
  %.28919.idx.lcssa1557 = phi i64 [ %.25916.idx, %.loopexit1453 ], [ %.29920.idx, %._crit_edge.split ], [ %.26917.add, %.preheader1452 ]
  %.0997.lcssa = phi ptr [ %gep, %.loopexit1453 ], [ %.1998, %._crit_edge.split ], [ %gep, %.preheader1452 ]
  %.0997.lcssa1971 = ptrtoint ptr %.0997.lcssa to i64
  %967 = icmp eq i64 %storemerge, 0
  br i1 %967, label %979, label %.preheader1450

.preheader1450:                                   ; preds = %._crit_edge
  %.31922.ptr1571 = getelementptr inbounds i8, ptr %6, i64 %.28919.idx.lcssa1557
  %.not11001572 = icmp eq ptr %.31922.ptr1571, %.0997.lcssa
  br i1 %.not11001572, label %.loopexit1451.backedge, label %.lr.ph1575

.lr.ph1575:                                       ; preds = %.preheader1450
  br i1 %942, label %.lr.ph1575.split.us.preheader, label %.lr.ph1575.split

.lr.ph1575.split.us.preheader:                    ; preds = %.lr.ph1575
  %scevgep1972 = getelementptr i8, ptr %scevgep, i64 %.0997.lcssa1971
  %968 = add i64 %.28919.idx.lcssa1557, %7
  %969 = sub i64 %968, %.0997.lcssa1971
  call void @llvm.memset.p0.i64(ptr align 1 %scevgep1972, i8 48, i64 %969, i1 false), !tbaa !5
  %970 = sub i64 %.0997.lcssa1971, %7
  br label %.loopexit1451.backedge

.loopexit1451.backedge:                           ; preds = %.lr.ph1575.split.us.preheader, %..loopexit1451_crit_edge.split, %.preheader1450
  %.lcssa15781586.be = phi i32 [ %.lcssa15781585, %.preheader1450 ], [ %978, %..loopexit1451_crit_edge.split ], [ %.lcssa15781585, %.lr.ph1575.split.us.preheader ]
  %.25916.idx.be = phi i64 [ %.28919.idx.lcssa1557, %.preheader1450 ], [ %.32923.idx, %..loopexit1451_crit_edge.split ], [ %970, %.lr.ph1575.split.us.preheader ]
  br label %.loopexit1451

.lr.ph1575.split:                                 ; preds = %.lr.ph1575, %977
  %.31922.idx1574 = phi i64 [ %.32923.idx, %977 ], [ %.28919.idx.lcssa1557, %.lr.ph1575 ]
  %.29991573 = phi ptr [ %.31000, %977 ], [ %.0997.lcssa, %.lr.ph1575 ]
  %971 = phi i32 [ %978, %977 ], [ %.lcssa15781585, %.lr.ph1575 ]
  %972 = icmp eq i32 %971, 3
  br i1 %972, label %973, label %975

973:                                              ; preds = %.lr.ph1575.split
  %.31922.add1104 = add nsw i64 %.31922.idx1574, -1
  %.ptr1110 = getelementptr inbounds i8, ptr %6, i64 %.31922.add1104
  store i8 %943, ptr %.ptr1110, align 1, !tbaa !5
  %974 = getelementptr inbounds i8, ptr %.29991573, i64 -1
  br label %977

975:                                              ; preds = %.lr.ph1575.split
  %976 = add i32 %971, 1
  %.31922.add = add nsw i64 %.31922.idx1574, -1
  %.ptr1109 = getelementptr inbounds i8, ptr %6, i64 %.31922.add
  store i8 48, ptr %.ptr1109, align 1, !tbaa !5
  br label %977

977:                                              ; preds = %975, %973
  %978 = phi i32 [ 0, %973 ], [ %976, %975 ]
  %.31000 = phi ptr [ %974, %973 ], [ %.29991573, %975 ]
  %.32923.idx = phi i64 [ %.31922.add1104, %973 ], [ %.31922.add, %975 ]
  %.31922.ptr = getelementptr inbounds i8, ptr %6, i64 %.32923.idx
  %.not1100 = icmp eq ptr %.31922.ptr, %.31000
  br i1 %.not1100, label %..loopexit1451_crit_edge.split, label %.lr.ph1575.split, !llvm.loop !45

979:                                              ; preds = %._crit_edge
  store i64 0, ptr %11, align 8, !tbaa !20
  %.28919.ptr.le.le = getelementptr inbounds i8, ptr %6, i64 %.28919.idx.lcssa1557
  %980 = load i8, ptr %.28919.ptr.le.le, align 1, !tbaa !5
  %981 = icmp eq i8 %980, 48
  %982 = icmp ne i64 %.28919.idx.lcssa1557, 512
  %or.cond39 = and i1 %982, %981
  %.28919.add1103 = zext i1 %or.cond39 to i64
  %spec.select1225 = add nsw i64 %.28919.idx.lcssa1557, %.28919.add1103
  %.33924.ptr1287 = getelementptr inbounds i8, ptr %6, i64 %spec.select1225
  store i8 0, ptr %9, align 1, !tbaa !5
  call void @_ZL16stbsp__lead_signjPc(i32 noundef %.16864, ptr noundef nonnull %8)
  %983 = trunc i64 %spec.select1225 to i32
  %984 = sub i32 512, %983
  store i32 %984, ptr %10, align 4, !tbaa !8
  %985 = icmp eq i32 %983, 512
  br i1 %985, label %986, label %988

986:                                              ; preds = %979
  %987 = getelementptr inbounds i8, ptr %.33924.ptr1287, i64 -1
  store i8 48, ptr %987, align 1, !tbaa !5
  store i32 1, ptr %10, align 4, !tbaa !8
  br label %988

988:                                              ; preds = %986, %979
  %989 = phi i32 [ 1, %986 ], [ %984, %979 ]
  %.34925 = phi ptr [ %987, %986 ], [ %.33924.ptr1287, %979 ]
  %990 = add i32 %989, 50331648
  %spec.store.select40 = call i32 @llvm.smax.i32(i32 %.1824, i32 0)
  br label %991

991:                                              ; preds = %477, %1375, %988, %._crit_edge2286, %846, %790, %603, %._crit_edge1679, %254, %split
  %.11970 = phi i32 [ 0, %1375 ], [ 0, %603 ], [ %.10969, %790 ], [ %990, %988 ], [ 0, %846 ], [ %892, %._crit_edge2286 ], [ 50331649, %._crit_edge1679 ], [ 0, %254 ], [ 0, %split ], [ 0, %477 ]
  %.35926 = phi ptr [ %27, %1375 ], [ %604, %603 ], [ %21, %790 ], [ %.34925, %988 ], [ %18, %846 ], [ %.lcssa2238, %._crit_edge2286 ], [ %21, %._crit_edge1679 ], [ %27, %254 ], [ %spec.store.select, %split ], [ %480, %477 ]
  %.17865 = phi i32 [ 0, %1375 ], [ %.10858, %603 ], [ %.11859, %790 ], [ %.16864, %988 ], [ %.13861, %846 ], [ %.13861, %._crit_edge2286 ], [ %spec.select1209, %._crit_edge1679 ], [ %.3851, %254 ], [ %.3851, %split ], [ %.6854, %477 ]
  %.3846 = phi i32 [ 0, %1375 ], [ 0, %603 ], [ %.2845, %790 ], [ 0, %988 ], [ 0, %846 ], [ 0, %._crit_edge2286 ], [ %spec.select12102089, %._crit_edge1679 ], [ 0, %254 ], [ 0, %split ], [ 0, %477 ]
  %.11834 = phi i32 [ 0, %1375 ], [ 0, %603 ], [ 0, %790 ], [ %spec.store.select40, %988 ], [ 0, %846 ], [ %.9832, %._crit_edge2286 ], [ 0, %._crit_edge1679 ], [ 0, %254 ], [ 0, %split ], [ 0, %477 ]
  %.2815 = phi i32 [ 0, %1375 ], [ %.1814, %603 ], [ %.1814, %790 ], [ %.1814, %988 ], [ %.1814, %846 ], [ %.1814, %._crit_edge2286 ], [ %.1814, %._crit_edge1679 ], [ %.1814, %254 ], [ %.1814, %split ], [ %.1814, %477 ]
  %992 = load i32, ptr %10, align 4, !tbaa !8
  %spec.select1228 = call i32 @llvm.smax.i32(i32 %.11834, i32 %992)
  %993 = load i8, ptr %8, align 1, !tbaa !5
  %994 = sext i8 %993 to i32
  %995 = load i8, ptr %9, align 1, !tbaa !5
  %996 = sext i8 %995 to i32
  %997 = add i32 %spec.select1228, %.3846
  %998 = add i32 %997, %994
  %999 = add i32 %998, %996
  %.3816 = call i32 @llvm.smax.i32(i32 %.2815, i32 %999)
  %1000 = sub i32 %.3816, %999
  %1001 = sub i32 %spec.select1228, %992
  %1002 = and i32 %.17865, 1
  %1003 = icmp eq i32 %1002, 0
  br i1 %1003, label %1004, label %1008

1004:                                             ; preds = %991
  %1005 = and i32 %.17865, 16
  %.not1159 = icmp eq i32 %1005, 0
  br i1 %.not1159, label %1008, label %1006

1006:                                             ; preds = %1004
  %1007 = call i32 @llvm.smax.i32(i32 %1000, i32 %1001)
  br label %1008

1008:                                             ; preds = %1004, %1006, %991
  %.18866 = phi i32 [ %.17865, %1006 ], [ %.17865, %991 ], [ 0, %1004 ]
  %.13836 = phi i32 [ %1007, %1006 ], [ %1001, %991 ], [ %1001, %1004 ]
  %.4817 = phi i32 [ 0, %1006 ], [ %1000, %991 ], [ %1000, %1004 ]
  %1009 = sub i32 0, %.13836
  %.not1160 = icmp eq i32 %.4817, %1009
  br i1 %.not1160, label %.loopexit1462, label %1010

1010:                                             ; preds = %1008
  %1011 = and i32 %.18866, 1
  %1012 = icmp eq i32 %1011, 0
  %1013 = icmp sgt i32 %.4817, 0
  %or.cond42 = and i1 %1012, %1013
  br i1 %or.cond42, label %.preheader1465, label %.loopexit1467

.preheader1465:                                   ; preds = %1010, %.thread1292
  %.5818 = phi i32 [ %1017, %.thread1292 ], [ %.4817, %1010 ]
  %.5765 = phi i32 [ %.8768, %.thread1292 ], [ %.1761, %1010 ]
  %.9700 = phi ptr [ %.15706, %.thread1292 ], [ %.2693, %1010 ]
  %.5 = phi ptr [ %.8, %.thread1292 ], [ %.1, %1010 ]
  %.9700.fr = freeze ptr %.9700
  %1014 = ptrtoint ptr %.9700.fr to i64
  %1015 = ptrtoint ptr %.5 to i64
  %.neg1162 = sub i64 %1015, %1014
  %.neg1163 = trunc i64 %.neg1162 to i32
  %1016 = add i32 %.neg1163, 512
  %spec.select1229 = call i32 @llvm.smin.i32(i32 %.5818, i32 %1016)
  %.1984 = select i1 %.not1091, i32 %.5818, i32 %spec.select1229
  %1017 = sub nsw i32 %.5818, %.1984
  %.not11641693 = icmp eq i32 %.1984, 0
  %1018 = and i64 %1014, 3
  %1019 = icmp eq i64 %1018, 0
  %or.cond12321694 = or i1 %.not11641693, %1019
  br i1 %or.cond12321694, label %.preheader1449, label %.lr.ph1698.preheader

.lr.ph1698.preheader:                             ; preds = %.preheader1465
  %1020 = trunc i64 %1014 to i2
  %1021 = xor i2 %1020, -1
  %1022 = zext i2 %1021 to i64
  %1023 = add i32 %.1984, -1
  %1024 = zext i32 %1023 to i64
  %umin2008 = call i64 @llvm.umin.i64(i64 %1022, i64 %1024)
  %1025 = add nuw nsw i64 %umin2008, 1
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %.9700.fr, i8 32, i64 %1025, i1 false), !tbaa !5
  %1026 = zext i2 %1021 to i32
  %scevgep2009 = getelementptr i8, ptr %.9700.fr, i64 1
  %scevgep2011 = getelementptr i8, ptr %scevgep2009, i64 %umin2008
  %1027 = call i32 @llvm.usub.sat.i32(i32 %1023, i32 %1026)
  br label %.preheader1449

.preheader1449:                                   ; preds = %.lr.ph1698.preheader, %.preheader1465
  %.2985.lcssa = phi i32 [ %.1984, %.preheader1465 ], [ %1027, %.lr.ph1698.preheader ]
  %.10701.lcssa = phi ptr [ %.9700.fr, %.preheader1465 ], [ %scevgep2011, %.lr.ph1698.preheader ]
  %1028 = icmp sgt i32 %.2985.lcssa, 3
  br i1 %1028, label %.lr.ph1703.preheader, label %.preheader1448

.lr.ph1703.preheader:                             ; preds = %.preheader1449
  %1029 = call i32 @llvm.usub.sat.i32(i32 %.2985.lcssa, i32 7)
  %1030 = add nuw i32 %1029, 3
  %1031 = and i32 %1030, -4
  %1032 = zext nneg i32 %1031 to i64
  %1033 = add nuw nsw i64 %1032, 4
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %.10701.lcssa, i8 32, i64 %1033, i1 false), !tbaa !8
  %scevgep2014 = getelementptr i8, ptr %.10701.lcssa, i64 4
  %scevgep2016 = getelementptr i8, ptr %scevgep2014, i64 %1032
  %1034 = and i32 %1030, -4
  %1035 = add nsw i32 %.2985.lcssa, -4
  %1036 = sub nsw i32 %1035, %1034
  br label %.preheader1448

.preheader1448:                                   ; preds = %.lr.ph1703.preheader, %.preheader1449
  %.3986.lcssa = phi i32 [ %.2985.lcssa, %.preheader1449 ], [ %1036, %.lr.ph1703.preheader ]
  %.11702.lcssa = phi ptr [ %.10701.lcssa, %.preheader1449 ], [ %scevgep2016, %.lr.ph1703.preheader ]
  %.not11651706 = icmp eq i32 %.3986.lcssa, 0
  br i1 %.not11651706, label %._crit_edge1710, label %.lr.ph1709.preheader

.lr.ph1709.preheader:                             ; preds = %.preheader1448
  %1037 = zext i32 %.3986.lcssa to i64
  call void @llvm.memset.p0.i64(ptr align 1 %.11702.lcssa, i8 32, i64 %1037, i1 false), !tbaa !5
  %1038 = add i32 %.3986.lcssa, -1
  %1039 = zext i32 %1038 to i64
  %scevgep2017 = getelementptr i8, ptr %.11702.lcssa, i64 1
  %scevgep2018 = getelementptr i8, ptr %scevgep2017, i64 %1039
  br label %._crit_edge1710

._crit_edge1710:                                  ; preds = %.lr.ph1709.preheader, %.preheader1448
  %.12703.lcssa = phi ptr [ %.11702.lcssa, %.preheader1448 ], [ %scevgep2018, %.lr.ph1709.preheader ]
  br i1 %.not1091, label %.thread1292, label %1040

1040:                                             ; preds = %._crit_edge1710
  %1041 = ptrtoint ptr %.12703.lcssa to i64
  %1042 = sub i64 %1041, %1015
  %1043 = trunc i64 %1042 to i32
  %1044 = icmp sgt i32 %1043, 510
  br i1 %1044, label %1045, label %.thread1292

1045:                                             ; preds = %1040
  %1046 = add nsw i32 %.5765, %1043
  %1047 = call noundef ptr %0(ptr noundef %.5, ptr noundef %1, i32 noundef %1043)
  %1048 = icmp eq ptr %1047, null
  br i1 %1048, label %.thread1420, label %.thread1292

.thread1292:                                      ; preds = %1045, %1040, %._crit_edge1710
  %.8768 = phi i32 [ %.5765, %._crit_edge1710 ], [ %.5765, %1040 ], [ %1046, %1045 ]
  %.15706 = phi ptr [ %.12703.lcssa, %._crit_edge1710 ], [ %.12703.lcssa, %1040 ], [ %1047, %1045 ]
  %.8 = phi ptr [ %.5, %._crit_edge1710 ], [ %.5, %1040 ], [ %1047, %1045 ]
  %.old41 = icmp sgt i32 %1017, 0
  br i1 %.old41, label %.preheader1465, label %.loopexit1467.loopexit

.loopexit1467.loopexit:                           ; preds = %.thread1292
  %.pre2064 = load i8, ptr %8, align 1, !tbaa !5
  br label %.loopexit1467

.loopexit1467:                                    ; preds = %.loopexit1467.loopexit, %1010
  %1049 = phi i8 [ %993, %1010 ], [ %.pre2064, %.loopexit1467.loopexit ]
  %.6819 = phi i32 [ %.4817, %1010 ], [ %1017, %.loopexit1467.loopexit ]
  %.9769 = phi i32 [ %.1761, %1010 ], [ %.8768, %.loopexit1467.loopexit ]
  %.16707 = phi ptr [ %.2693, %1010 ], [ %.15706, %.loopexit1467.loopexit ]
  %.9 = phi ptr [ %.1, %1010 ], [ %.8, %.loopexit1467.loopexit ]
  store ptr %16, ptr %13, align 8, !tbaa !15
  %.not11661719 = icmp eq i8 %1049, 0
  br i1 %.not11661719, label %._crit_edge1725, label %.lr.ph1724

.lr.ph1724:                                       ; preds = %.loopexit1467, %.thread1299
  %1050 = phi i8 [ %1089, %.thread1299 ], [ %1049, %.loopexit1467 ]
  %.101722 = phi ptr [ %.13, %.thread1299 ], [ %.9, %.loopexit1467 ]
  %.177081721 = phi ptr [ %.21712, %.thread1299 ], [ %.16707, %.loopexit1467 ]
  %.107701720 = phi i32 [ %.13773, %.thread1299 ], [ %.9769, %.loopexit1467 ]
  %1051 = sext i8 %1050 to i32
  %1052 = ptrtoint ptr %.177081721 to i64
  %1053 = ptrtoint ptr %.101722 to i64
  %.neg1175 = sub i64 %1053, %1052
  %.neg1176 = trunc i64 %.neg1175 to i32
  %1054 = add i32 %.neg1176, 512
  %spec.select1233 = call i32 @llvm.smin.i32(i32 %1054, i32 %1051)
  %.6989 = select i1 %.not1091, i32 %1051, i32 %spec.select1233
  %1055 = trunc i32 %.6989 to i8
  %1056 = sub i8 %1050, %1055
  store i8 %1056, ptr %8, align 1, !tbaa !5
  %.not11771712 = icmp eq i32 %.6989, 0
  br i1 %.not11771712, label %._crit_edge1717, label %.lr.ph1716.preheader

.lr.ph1716.preheader:                             ; preds = %.lr.ph1724
  %xtraiter2460 = and i32 %.6989, 3
  %lcmp.mod2461.not = icmp eq i32 %xtraiter2460, 0
  br i1 %lcmp.mod2461.not, label %.lr.ph1716.prol.loopexit, label %.lr.ph1716.prol

.lr.ph1716.prol:                                  ; preds = %.lr.ph1716.preheader, %.lr.ph1716.prol
  %.187091714.prol = phi ptr [ %1060, %.lr.ph1716.prol ], [ %.177081721, %.lr.ph1716.preheader ]
  %.79901713.prol = phi i32 [ %1061, %.lr.ph1716.prol ], [ %.6989, %.lr.ph1716.preheader ]
  %prol.iter2462 = phi i32 [ %prol.iter2462.next, %.lr.ph1716.prol ], [ 0, %.lr.ph1716.preheader ]
  %1057 = load ptr, ptr %13, align 8, !tbaa !15
  %1058 = getelementptr inbounds i8, ptr %1057, i64 1
  store ptr %1058, ptr %13, align 8, !tbaa !15
  %1059 = load i8, ptr %1057, align 1, !tbaa !5
  %1060 = getelementptr inbounds i8, ptr %.187091714.prol, i64 1
  store i8 %1059, ptr %.187091714.prol, align 1, !tbaa !5
  %1061 = add nsw i32 %.79901713.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.ph1716.prol.loopexit, label %.lr.ph1716.prol, !llvm.loop !46

.lr.ph1716.prol.loopexit:                         ; preds = %.lr.ph1716.prol, %.lr.ph1716.preheader
  %.lcssa2415.unr = phi ptr [ poison, %.lr.ph1716.preheader ], [ %1060, %.lr.ph1716.prol ]
  %.187091714.unr = phi ptr [ %.177081721, %.lr.ph1716.preheader ], [ %1060, %.lr.ph1716.prol ]
  %.79901713.unr = phi i32 [ %.6989, %.lr.ph1716.preheader ], [ %1061, %.lr.ph1716.prol ]
  %1062 = icmp ult i32 %.6989, 4
  br i1 %1062, label %._crit_edge1717, label %.lr.ph1716

.lr.ph1716:                                       ; preds = %.lr.ph1716.prol.loopexit, %.lr.ph1716
  %.187091714 = phi ptr [ %1078, %.lr.ph1716 ], [ %.187091714.unr, %.lr.ph1716.prol.loopexit ]
  %.79901713 = phi i32 [ %1079, %.lr.ph1716 ], [ %.79901713.unr, %.lr.ph1716.prol.loopexit ]
  %1063 = load ptr, ptr %13, align 8, !tbaa !15
  %1064 = getelementptr inbounds i8, ptr %1063, i64 1
  store ptr %1064, ptr %13, align 8, !tbaa !15
  %1065 = load i8, ptr %1063, align 1, !tbaa !5
  %1066 = getelementptr inbounds i8, ptr %.187091714, i64 1
  store i8 %1065, ptr %.187091714, align 1, !tbaa !5
  %1067 = load ptr, ptr %13, align 8, !tbaa !15
  %1068 = getelementptr inbounds i8, ptr %1067, i64 1
  store ptr %1068, ptr %13, align 8, !tbaa !15
  %1069 = load i8, ptr %1067, align 1, !tbaa !5
  %1070 = getelementptr inbounds i8, ptr %.187091714, i64 2
  store i8 %1069, ptr %1066, align 1, !tbaa !5
  %1071 = load ptr, ptr %13, align 8, !tbaa !15
  %1072 = getelementptr inbounds i8, ptr %1071, i64 1
  store ptr %1072, ptr %13, align 8, !tbaa !15
  %1073 = load i8, ptr %1071, align 1, !tbaa !5
  %1074 = getelementptr inbounds i8, ptr %.187091714, i64 3
  store i8 %1073, ptr %1070, align 1, !tbaa !5
  %1075 = load ptr, ptr %13, align 8, !tbaa !15
  %1076 = getelementptr inbounds i8, ptr %1075, i64 1
  store ptr %1076, ptr %13, align 8, !tbaa !15
  %1077 = load i8, ptr %1075, align 1, !tbaa !5
  %1078 = getelementptr inbounds i8, ptr %.187091714, i64 4
  store i8 %1077, ptr %1074, align 1, !tbaa !5
  %1079 = add nsw i32 %.79901713, -4
  %.not1177.3 = icmp eq i32 %1079, 0
  br i1 %.not1177.3, label %._crit_edge1717, label %.lr.ph1716, !llvm.loop !47

._crit_edge1717:                                  ; preds = %.lr.ph1716.prol.loopexit, %.lr.ph1716, %.lr.ph1724
  %.18709.lcssa = phi ptr [ %.177081721, %.lr.ph1724 ], [ %.lcssa2415.unr, %.lr.ph1716.prol.loopexit ], [ %1078, %.lr.ph1716 ]
  br i1 %.not1091, label %.thread1299, label %1080

1080:                                             ; preds = %._crit_edge1717
  %1081 = ptrtoint ptr %.18709.lcssa to i64
  %1082 = sub i64 %1081, %1053
  %1083 = trunc i64 %1082 to i32
  %1084 = icmp sgt i32 %1083, 510
  br i1 %1084, label %1085, label %.thread1299

1085:                                             ; preds = %1080
  %1086 = add nsw i32 %.107701720, %1083
  %1087 = call noundef ptr %0(ptr noundef %.101722, ptr noundef %1, i32 noundef %1083)
  %1088 = icmp eq ptr %1087, null
  br i1 %1088, label %.thread1420, label %.thread1299

.thread1299:                                      ; preds = %1085, %1080, %._crit_edge1717
  %.13773 = phi i32 [ %.107701720, %._crit_edge1717 ], [ %.107701720, %1080 ], [ %1086, %1085 ]
  %.21712 = phi ptr [ %.18709.lcssa, %._crit_edge1717 ], [ %.18709.lcssa, %1080 ], [ %1087, %1085 ]
  %.13 = phi ptr [ %.101722, %._crit_edge1717 ], [ %.101722, %1080 ], [ %1087, %1085 ]
  %1089 = load i8, ptr %8, align 1, !tbaa !5
  %.not1166 = icmp eq i8 %1089, 0
  br i1 %.not1166, label %._crit_edge1725, label %.lr.ph1724, !llvm.loop !48

._crit_edge1725:                                  ; preds = %.thread1299, %.loopexit1467
  %.10770.lcssa = phi i32 [ %.9769, %.loopexit1467 ], [ %.13773, %.thread1299 ]
  %.17708.lcssa = phi ptr [ %.16707, %.loopexit1467 ], [ %.21712, %.thread1299 ]
  %.10.lcssa = phi ptr [ %.9, %.loopexit1467 ], [ %.13, %.thread1299 ]
  %1090 = lshr i32 %.11970, 24
  %1091 = and i32 %.18866, 64
  %.not1167 = icmp eq i32 %1091, 0
  br i1 %.not1167, label %1098, label %1092

1092:                                             ; preds = %._crit_edge1725
  %1093 = and i32 %.11970, 16777215
  %1094 = add i32 %.13836, %1093
  %1095 = add nuw nsw i32 %1090, 1
  %1096 = urem i32 %1094, %1095
  %1097 = sub nsw i32 %1090, %1096
  br label %1098

1098:                                             ; preds = %._crit_edge1725, %1092
  %1099 = phi i32 [ %1097, %1092 ], [ 0, %._crit_edge1725 ]
  %1100 = icmp sgt i32 %.13836, 0
  br i1 %1100, label %.lr.ph1758, label %.loopexit1462.thread

.loopexit1462.thread:                             ; preds = %1098
  store ptr %16, ptr %13, align 8, !tbaa !15
  br label %._crit_edge1775

.lr.ph1758:                                       ; preds = %1098, %.thread1306
  %.141756 = phi ptr [ %.17, %.thread1306 ], [ %.10.lcssa, %1098 ]
  %.227131755 = phi ptr [ %.30721, %.thread1306 ], [ %.17708.lcssa, %1098 ]
  %.147741754 = phi i32 [ %.17777, %.thread1306 ], [ %.10770.lcssa, %1098 ]
  %.148371753 = phi i32 [ %1104, %.thread1306 ], [ %.13836, %1098 ]
  %.129711752 = phi i32 [ %.13972.lcssa, %.thread1306 ], [ %1099, %1098 ]
  %.227131755.fr = freeze ptr %.227131755
  %1101 = ptrtoint ptr %.227131755.fr to i64
  %1102 = ptrtoint ptr %.141756 to i64
  %.neg1169 = sub i64 %1102, %1101
  %.neg1170 = trunc i64 %.neg1169 to i32
  %1103 = add i32 %.neg1170, 512
  %spec.select1234 = call i32 @llvm.smin.i32(i32 %.148371753, i32 %1103)
  %.9992 = select i1 %.not1091, i32 %.148371753, i32 %spec.select1234
  %1104 = sub nsw i32 %.148371753, %.9992
  %.not11711729 = icmp eq i32 %.9992, 0
  br i1 %.not1167, label %.preheader1447, label %.loopexit.thread

.preheader1447:                                   ; preds = %.lr.ph1758
  %1105 = and i64 %1101, 3
  %1106 = icmp eq i64 %1105, 0
  %or.cond12371730 = or i1 %.not11711729, %1106
  br i1 %or.cond12371730, label %.preheader1446, label %.lr.ph1733.preheader

.lr.ph1733.preheader:                             ; preds = %.preheader1447
  %1107 = trunc i64 %1101 to i2
  %1108 = xor i2 %1107, -1
  %1109 = zext i2 %1108 to i64
  %1110 = add i32 %.9992, -1
  %1111 = zext i32 %1110 to i64
  %umin2019 = call i64 @llvm.umin.i64(i64 %1109, i64 %1111)
  %1112 = add nuw nsw i64 %umin2019, 1
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %.227131755.fr, i8 48, i64 %1112, i1 false), !tbaa !5
  %1113 = zext i2 %1108 to i32
  %scevgep2020 = getelementptr i8, ptr %.227131755.fr, i64 1
  %scevgep2022 = getelementptr i8, ptr %scevgep2020, i64 %umin2019
  %1114 = call i32 @llvm.usub.sat.i32(i32 %1110, i32 %1113)
  br label %.preheader1446

.preheader1446:                                   ; preds = %.lr.ph1733.preheader, %.preheader1447
  %.10993.lcssa = phi i32 [ %.9992, %.preheader1447 ], [ %1114, %.lr.ph1733.preheader ]
  %.23714.lcssa = phi ptr [ %.227131755.fr, %.preheader1447 ], [ %scevgep2022, %.lr.ph1733.preheader ]
  %1115 = icmp sgt i32 %.10993.lcssa, 3
  br i1 %1115, label %.lr.ph1738.preheader, label %.loopexit

.lr.ph1738.preheader:                             ; preds = %.preheader1446
  %1116 = call i32 @llvm.usub.sat.i32(i32 %.10993.lcssa, i32 7)
  %1117 = add nuw i32 %1116, 3
  %1118 = and i32 %1117, -4
  %1119 = zext nneg i32 %1118 to i64
  %1120 = add nuw nsw i64 %1119, 4
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %.23714.lcssa, i8 48, i64 %1120, i1 false), !tbaa !8
  %scevgep2025 = getelementptr i8, ptr %.23714.lcssa, i64 4
  %scevgep2027 = getelementptr i8, ptr %scevgep2025, i64 %1119
  %1121 = and i32 %1117, -4
  %1122 = add nsw i32 %.10993.lcssa, -4
  %1123 = sub nsw i32 %1122, %1121
  br label %.loopexit

.loopexit:                                        ; preds = %.lr.ph1738.preheader, %.preheader1446
  %.12995 = phi i32 [ %.10993.lcssa, %.preheader1446 ], [ %1123, %.lr.ph1738.preheader ]
  %.25716 = phi ptr [ %.23714.lcssa, %.preheader1446 ], [ %scevgep2027, %.lr.ph1738.preheader ]
  %.not11721741 = icmp eq i32 %.12995, 0
  br i1 %.not11721741, label %._crit_edge1747, label %.lr.ph1746

.loopexit.thread:                                 ; preds = %.lr.ph1758
  br i1 %.not11711729, label %._crit_edge1747, label %.lr.ph1746.split.preheader

.lr.ph1746:                                       ; preds = %.loopexit
  br i1 %.not1167, label %.lr.ph1746.split.us.preheader, label %.lr.ph1746.split.preheader

.lr.ph1746.split.preheader:                       ; preds = %.loopexit.thread, %.lr.ph1746
  %.267171744.ph = phi ptr [ %.227131755.fr, %.loopexit.thread ], [ %.25716, %.lr.ph1746 ]
  %.139961742.ph = phi i32 [ %.9992, %.loopexit.thread ], [ %.12995, %.lr.ph1746 ]
  %xtraiter2463 = and i32 %.139961742.ph, 1
  %lcmp.mod2464.not = icmp eq i32 %xtraiter2463, 0
  br i1 %lcmp.mod2464.not, label %.lr.ph1746.split.prol.loopexit, label %.lr.ph1746.split.prol

.lr.ph1746.split.prol:                            ; preds = %.lr.ph1746.split.preheader
  %1124 = add i32 %.129711752, 1
  %1125 = icmp eq i32 %.129711752, %1090
  %1126 = load i8, ptr @_ZL12stbsp__comma, align 1
  %spec.select1249.prol = select i1 %1125, i8 %1126, i8 48
  %spec.select1250.prol = select i1 %1125, i32 0, i32 %1124
  %.27718.prol = getelementptr inbounds i8, ptr %.267171744.ph, i64 1
  store i8 %spec.select1249.prol, ptr %.267171744.ph, align 1, !tbaa !5
  %1127 = add nsw i32 %.139961742.ph, -1
  br label %.lr.ph1746.split.prol.loopexit

.lr.ph1746.split.prol.loopexit:                   ; preds = %.lr.ph1746.split.prol, %.lr.ph1746.split.preheader
  %spec.select1250.lcssa.unr = phi i32 [ poison, %.lr.ph1746.split.preheader ], [ %spec.select1250.prol, %.lr.ph1746.split.prol ]
  %.27718.lcssa.unr = phi ptr [ poison, %.lr.ph1746.split.preheader ], [ %.27718.prol, %.lr.ph1746.split.prol ]
  %.267171744.unr = phi ptr [ %.267171744.ph, %.lr.ph1746.split.preheader ], [ %.27718.prol, %.lr.ph1746.split.prol ]
  %.139721743.unr = phi i32 [ %.129711752, %.lr.ph1746.split.preheader ], [ %spec.select1250.prol, %.lr.ph1746.split.prol ]
  %.139961742.unr = phi i32 [ %.139961742.ph, %.lr.ph1746.split.preheader ], [ %1127, %.lr.ph1746.split.prol ]
  %1128 = icmp eq i32 %.139961742.ph, 1
  br i1 %1128, label %._crit_edge1747, label %.lr.ph1746.split

.lr.ph1746.split.us.preheader:                    ; preds = %.lr.ph1746
  %1129 = zext i32 %.12995 to i64
  call void @llvm.memset.p0.i64(ptr align 1 %.25716, i8 48, i64 %1129, i1 false), !tbaa !5
  %1130 = add i32 %.12995, -1
  %1131 = zext i32 %1130 to i64
  %scevgep2028 = getelementptr i8, ptr %.25716, i64 1
  %scevgep2029 = getelementptr i8, ptr %scevgep2028, i64 %1131
  br label %._crit_edge1747

.lr.ph1746.split:                                 ; preds = %.lr.ph1746.split.prol.loopexit, %.lr.ph1746.split
  %.267171744 = phi ptr [ %.27718.1, %.lr.ph1746.split ], [ %.267171744.unr, %.lr.ph1746.split.prol.loopexit ]
  %.139721743 = phi i32 [ %spec.select1250.1, %.lr.ph1746.split ], [ %.139721743.unr, %.lr.ph1746.split.prol.loopexit ]
  %.139961742 = phi i32 [ %1138, %.lr.ph1746.split ], [ %.139961742.unr, %.lr.ph1746.split.prol.loopexit ]
  %1132 = add i32 %.139721743, 1
  %1133 = icmp eq i32 %.139721743, %1090
  %1134 = load i8, ptr @_ZL12stbsp__comma, align 1
  %spec.select1249 = select i1 %1133, i8 %1134, i8 48
  %spec.select1250 = select i1 %1133, i32 0, i32 %1132
  %.27718 = getelementptr inbounds i8, ptr %.267171744, i64 1
  store i8 %spec.select1249, ptr %.267171744, align 1, !tbaa !5
  %1135 = add i32 %spec.select1250, 1
  %1136 = icmp eq i32 %spec.select1250, %1090
  %1137 = load i8, ptr @_ZL12stbsp__comma, align 1
  %spec.select1249.1 = select i1 %1136, i8 %1137, i8 48
  %spec.select1250.1 = select i1 %1136, i32 0, i32 %1135
  %.27718.1 = getelementptr inbounds i8, ptr %.267171744, i64 2
  store i8 %spec.select1249.1, ptr %.27718, align 1, !tbaa !5
  %1138 = add nsw i32 %.139961742, -2
  %.not1172.1 = icmp eq i32 %1138, 0
  br i1 %.not1172.1, label %._crit_edge1747, label %.lr.ph1746.split, !llvm.loop !49

._crit_edge1747:                                  ; preds = %.lr.ph1746.split.prol.loopexit, %.lr.ph1746.split, %.loopexit.thread, %.lr.ph1746.split.us.preheader, %.loopexit
  %.13972.lcssa = phi i32 [ %.129711752, %.loopexit ], [ %.129711752, %.lr.ph1746.split.us.preheader ], [ %.129711752, %.loopexit.thread ], [ %spec.select1250.lcssa.unr, %.lr.ph1746.split.prol.loopexit ], [ %spec.select1250.1, %.lr.ph1746.split ]
  %.26717.lcssa = phi ptr [ %.25716, %.loopexit ], [ %scevgep2029, %.lr.ph1746.split.us.preheader ], [ %.227131755.fr, %.loopexit.thread ], [ %.27718.lcssa.unr, %.lr.ph1746.split.prol.loopexit ], [ %.27718.1, %.lr.ph1746.split ]
  br i1 %.not1091, label %.thread1306, label %1139

1139:                                             ; preds = %._crit_edge1747
  %1140 = ptrtoint ptr %.26717.lcssa to i64
  %1141 = sub i64 %1140, %1102
  %1142 = trunc i64 %1141 to i32
  %1143 = icmp sgt i32 %1142, 510
  br i1 %1143, label %1144, label %.thread1306

1144:                                             ; preds = %1139
  %1145 = add nsw i32 %.147741754, %1142
  %1146 = call noundef ptr %0(ptr noundef %.141756, ptr noundef %1, i32 noundef %1142)
  %1147 = icmp eq ptr %1146, null
  br i1 %1147, label %.thread1420, label %.thread1306

.thread1306:                                      ; preds = %1144, %1139, %._crit_edge1747
  %.17777 = phi i32 [ %.147741754, %._crit_edge1747 ], [ %.147741754, %1139 ], [ %1145, %1144 ]
  %.30721 = phi ptr [ %.26717.lcssa, %._crit_edge1747 ], [ %.26717.lcssa, %1139 ], [ %1146, %1144 ]
  %.17 = phi ptr [ %.141756, %._crit_edge1747 ], [ %.141756, %1139 ], [ %1146, %1144 ]
  %1148 = icmp sgt i32 %1104, 0
  br i1 %1148, label %.lr.ph1758, label %.loopexit1462.loopexit, !llvm.loop !50

.loopexit1462.loopexit:                           ; preds = %.thread1306
  %.pre2065 = load i8, ptr %8, align 1, !tbaa !5
  br label %.loopexit1462

.loopexit1462:                                    ; preds = %.loopexit1462.loopexit, %1008
  %1149 = phi i8 [ %993, %1008 ], [ %.pre2065, %.loopexit1462.loopexit ]
  %.8821 = phi i32 [ %.4817, %1008 ], [ %.6819, %.loopexit1462.loopexit ]
  %.19779 = phi i32 [ %.1761, %1008 ], [ %.17777, %.loopexit1462.loopexit ]
  %.32723 = phi ptr [ %.2693, %1008 ], [ %.30721, %.loopexit1462.loopexit ]
  %.19 = phi ptr [ %.1, %1008 ], [ %.17, %.loopexit1462.loopexit ]
  store ptr %16, ptr %13, align 8, !tbaa !15
  %.not11781769 = icmp eq i8 %1149, 0
  br i1 %.not11781769, label %._crit_edge1775, label %.lr.ph1774

.lr.ph1774:                                       ; preds = %.loopexit1462, %1189
  %1150 = phi i8 [ %1190, %1189 ], [ %1149, %.loopexit1462 ]
  %.201772 = phi ptr [ %.24, %1189 ], [ %.19, %.loopexit1462 ]
  %.337241771 = phi ptr [ %.38729, %1189 ], [ %.32723, %.loopexit1462 ]
  %.207801770 = phi i32 [ %.24784, %1189 ], [ %.19779, %.loopexit1462 ]
  %1151 = sext i8 %1150 to i32
  %1152 = ptrtoint ptr %.337241771 to i64
  %1153 = ptrtoint ptr %.201772 to i64
  %.neg1201 = sub i64 %1153, %1152
  %.neg1202 = trunc i64 %.neg1201 to i32
  %1154 = add i32 %.neg1202, 512
  %spec.select1238 = call i32 @llvm.smin.i32(i32 %1154, i32 %1151)
  %.1931 = select i1 %.not1091, i32 %1151, i32 %spec.select1238
  %1155 = trunc i32 %.1931 to i8
  %1156 = sub i8 %1150, %1155
  store i8 %1156, ptr %8, align 1, !tbaa !5
  %.not12031762 = icmp eq i32 %.1931, 0
  br i1 %.not12031762, label %._crit_edge1767, label %.lr.ph1766.preheader

.lr.ph1766.preheader:                             ; preds = %.lr.ph1774
  %xtraiter2466 = and i32 %.1931, 3
  %lcmp.mod2467.not = icmp eq i32 %xtraiter2466, 0
  br i1 %lcmp.mod2467.not, label %.lr.ph1766.prol.loopexit, label %.lr.ph1766.prol

.lr.ph1766.prol:                                  ; preds = %.lr.ph1766.preheader, %.lr.ph1766.prol
  %.347251764.prol = phi ptr [ %1160, %.lr.ph1766.prol ], [ %.337241771, %.lr.ph1766.preheader ]
  %.29321763.prol = phi i32 [ %1161, %.lr.ph1766.prol ], [ %.1931, %.lr.ph1766.preheader ]
  %prol.iter2468 = phi i32 [ %prol.iter2468.next, %.lr.ph1766.prol ], [ 0, %.lr.ph1766.preheader ]
  %1157 = load ptr, ptr %13, align 8, !tbaa !15
  %1158 = getelementptr inbounds i8, ptr %1157, i64 1
  store ptr %1158, ptr %13, align 8, !tbaa !15
  %1159 = load i8, ptr %1157, align 1, !tbaa !5
  %1160 = getelementptr inbounds i8, ptr %.347251764.prol, i64 1
  store i8 %1159, ptr %.347251764.prol, align 1, !tbaa !5
  %1161 = add nsw i32 %.29321763.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.ph1766.prol.loopexit, label %.lr.ph1766.prol, !llvm.loop !51

.lr.ph1766.prol.loopexit:                         ; preds = %.lr.ph1766.prol, %.lr.ph1766.preheader
  %.lcssa2418.unr = phi ptr [ poison, %.lr.ph1766.preheader ], [ %1160, %.lr.ph1766.prol ]
  %.347251764.unr = phi ptr [ %.337241771, %.lr.ph1766.preheader ], [ %1160, %.lr.ph1766.prol ]
  %.29321763.unr = phi i32 [ %.1931, %.lr.ph1766.preheader ], [ %1161, %.lr.ph1766.prol ]
  %1162 = icmp ult i32 %.1931, 4
  br i1 %1162, label %._crit_edge1767, label %.lr.ph1766

.lr.ph1766:                                       ; preds = %.lr.ph1766.prol.loopexit, %.lr.ph1766
  %.347251764 = phi ptr [ %1178, %.lr.ph1766 ], [ %.347251764.unr, %.lr.ph1766.prol.loopexit ]
  %.29321763 = phi i32 [ %1179, %.lr.ph1766 ], [ %.29321763.unr, %.lr.ph1766.prol.loopexit ]
  %1163 = load ptr, ptr %13, align 8, !tbaa !15
  %1164 = getelementptr inbounds i8, ptr %1163, i64 1
  store ptr %1164, ptr %13, align 8, !tbaa !15
  %1165 = load i8, ptr %1163, align 1, !tbaa !5
  %1166 = getelementptr inbounds i8, ptr %.347251764, i64 1
  store i8 %1165, ptr %.347251764, align 1, !tbaa !5
  %1167 = load ptr, ptr %13, align 8, !tbaa !15
  %1168 = getelementptr inbounds i8, ptr %1167, i64 1
  store ptr %1168, ptr %13, align 8, !tbaa !15
  %1169 = load i8, ptr %1167, align 1, !tbaa !5
  %1170 = getelementptr inbounds i8, ptr %.347251764, i64 2
  store i8 %1169, ptr %1166, align 1, !tbaa !5
  %1171 = load ptr, ptr %13, align 8, !tbaa !15
  %1172 = getelementptr inbounds i8, ptr %1171, i64 1
  store ptr %1172, ptr %13, align 8, !tbaa !15
  %1173 = load i8, ptr %1171, align 1, !tbaa !5
  %1174 = getelementptr inbounds i8, ptr %.347251764, i64 3
  store i8 %1173, ptr %1170, align 1, !tbaa !5
  %1175 = load ptr, ptr %13, align 8, !tbaa !15
  %1176 = getelementptr inbounds i8, ptr %1175, i64 1
  store ptr %1176, ptr %13, align 8, !tbaa !15
  %1177 = load i8, ptr %1175, align 1, !tbaa !5
  %1178 = getelementptr inbounds i8, ptr %.347251764, i64 4
  store i8 %1177, ptr %1174, align 1, !tbaa !5
  %1179 = add nsw i32 %.29321763, -4
  %.not1203.3 = icmp eq i32 %1179, 0
  br i1 %.not1203.3, label %._crit_edge1767, label %.lr.ph1766, !llvm.loop !52

._crit_edge1767:                                  ; preds = %.lr.ph1766.prol.loopexit, %.lr.ph1766, %.lr.ph1774
  %.34725.lcssa = phi ptr [ %.337241771, %.lr.ph1774 ], [ %.lcssa2418.unr, %.lr.ph1766.prol.loopexit ], [ %1178, %.lr.ph1766 ]
  br i1 %.not1091, label %1189, label %1180

1180:                                             ; preds = %._crit_edge1767
  %1181 = ptrtoint ptr %.34725.lcssa to i64
  %1182 = sub i64 %1181, %1153
  %1183 = trunc i64 %1182 to i32
  %1184 = icmp sgt i32 %1183, 510
  br i1 %1184, label %1185, label %1189

1185:                                             ; preds = %1180
  %1186 = add nsw i32 %.207801770, %1183
  %1187 = call noundef ptr %0(ptr noundef %.201772, ptr noundef %1, i32 noundef %1183)
  %1188 = icmp eq ptr %1187, null
  br i1 %1188, label %.thread1420, label %1189

1189:                                             ; preds = %1185, %1180, %._crit_edge1767
  %.24784 = phi i32 [ %.207801770, %._crit_edge1767 ], [ %.207801770, %1180 ], [ %1186, %1185 ]
  %.38729 = phi ptr [ %.34725.lcssa, %._crit_edge1767 ], [ %.34725.lcssa, %1180 ], [ %1187, %1185 ]
  %.24 = phi ptr [ %.201772, %._crit_edge1767 ], [ %.201772, %1180 ], [ %1187, %1185 ]
  %1190 = load i8, ptr %8, align 1, !tbaa !5
  %.not1178 = icmp eq i8 %1190, 0
  br i1 %.not1178, label %._crit_edge1775, label %.lr.ph1774, !llvm.loop !53

._crit_edge1775:                                  ; preds = %1189, %.loopexit1462.thread, %.loopexit1462
  %.88212118 = phi i32 [ %.8821, %.loopexit1462 ], [ %.6819, %.loopexit1462.thread ], [ %.8821, %1189 ]
  %.20780.lcssa = phi i32 [ %.19779, %.loopexit1462 ], [ %.10770.lcssa, %.loopexit1462.thread ], [ %.24784, %1189 ]
  %.33724.lcssa = phi ptr [ %.32723, %.loopexit1462 ], [ %.17708.lcssa, %.loopexit1462.thread ], [ %.38729, %1189 ]
  %.20.lcssa = phi ptr [ %.19, %.loopexit1462 ], [ %.10.lcssa, %.loopexit1462.thread ], [ %.24, %1189 ]
  %1191 = load i32, ptr %10, align 4, !tbaa !8
  %.not11791795 = icmp eq i32 %1191, 0
  br i1 %.not11791795, label %.preheader1458, label %.lr.ph1802

.preheader1458:                                   ; preds = %1257, %._crit_edge1775
  %.25785.lcssa = phi i32 [ %.20780.lcssa, %._crit_edge1775 ], [ %.29789, %1257 ]
  %.39730.lcssa = phi ptr [ %.33724.lcssa, %._crit_edge1775 ], [ %.45736, %1257 ]
  %.25.lcssa = phi ptr [ %.20.lcssa, %._crit_edge1775 ], [ %.29, %1257 ]
  %.not11801825 = icmp eq i32 %.3846, 0
  br i1 %.not11801825, label %._crit_edge1831, label %.lr.ph1830

.lr.ph1802:                                       ; preds = %._crit_edge1775, %1257
  %.251800 = phi ptr [ %.29, %1257 ], [ %.20.lcssa, %._crit_edge1775 ]
  %.397301799 = phi ptr [ %.45736, %1257 ], [ %.33724.lcssa, %._crit_edge1775 ]
  %.257851798 = phi i32 [ %.29789, %1257 ], [ %.20780.lcssa, %._crit_edge1775 ]
  %.369271797 = phi ptr [ %.38929.lcssa, %1257 ], [ %.35926, %._crit_edge1775 ]
  %.239581796 = phi i32 [ %1195, %1257 ], [ %1191, %._crit_edge1775 ]
  %1192 = ptrtoint ptr %.397301799 to i64
  %1193 = ptrtoint ptr %.251800 to i64
  %.neg1197 = sub i64 %1193, %1192
  %.neg1198 = trunc i64 %.neg1197 to i32
  %1194 = add i32 %.neg1198, 512
  %spec.select1239 = call i32 @llvm.smin.i32(i32 %.239581796, i32 %1194)
  %.1868 = select i1 %.not1091, i32 %.239581796, i32 %spec.select1239
  %1195 = sub i32 %.239581796, %.1868
  %1196 = icmp sgt i32 %.1868, 3
  br i1 %1196, label %.lr.ph1783.preheader, label %.preheader1445

.lr.ph1783.preheader:                             ; preds = %.lr.ph1802
  %.3692717972301 = ptrtoint ptr %.369271797 to i64
  %1197 = add nsw i32 %.1868, -4
  %1198 = lshr i32 %1197, 2
  %narrow2351 = add nuw nsw i32 %1198, 1
  %1199 = zext nneg i32 %narrow2351 to i64
  %min.iters.check2305 = icmp ult i32 %1197, 28
  %1200 = sub i64 %1192, %.3692717972301
  %diff.check2302 = icmp ult i64 %1200, 32
  %or.cond2353 = select i1 %min.iters.check2305, i1 true, i1 %diff.check2302
  br i1 %or.cond2353, label %.lr.ph1783.preheader2356, label %vector.ph2306

.lr.ph1783.preheader2356:                         ; preds = %middle.block2303, %.lr.ph1783.preheader
  %.407311781.ph = phi ptr [ %.397301799, %.lr.ph1783.preheader ], [ %ind.end2309, %middle.block2303 ]
  %.28691780.ph = phi i32 [ %.1868, %.lr.ph1783.preheader ], [ %ind.end2312, %middle.block2303 ]
  %.379281779.ph = phi ptr [ %.369271797, %.lr.ph1783.preheader ], [ %ind.end2314, %middle.block2303 ]
  br label %.lr.ph1783

vector.ph2306:                                    ; preds = %.lr.ph1783.preheader
  %n.vec2308 = and i64 %1199, 2147483640
  %1201 = shl nuw nsw i64 %n.vec2308, 2
  %ind.end2309 = getelementptr i8, ptr %.397301799, i64 %1201
  %.cast2311 = trunc nuw nsw i64 %n.vec2308 to i32
  %1202 = shl i32 %.cast2311, 2
  %ind.end2312 = sub i32 %.1868, %1202
  %1203 = shl nuw nsw i64 %n.vec2308, 2
  %ind.end2314 = getelementptr i8, ptr %.369271797, i64 %1203
  br label %vector.body2316

vector.body2316:                                  ; preds = %vector.body2316, %vector.ph2306
  %index2317 = phi i64 [ 0, %vector.ph2306 ], [ %index.next2327, %vector.body2316 ]
  %offset.idx = shl i64 %index2317, 2
  %next.gep2318 = getelementptr i8, ptr %.397301799, i64 %offset.idx
  %offset.idx2322 = shl i64 %index2317, 2
  %next.gep2323 = getelementptr i8, ptr %.369271797, i64 %offset.idx2322
  %1204 = getelementptr i8, ptr %next.gep2323, i64 16
  %wide.load2325 = load <4 x i32>, ptr %next.gep2323, align 4, !tbaa !8
  %wide.load2326 = load <4 x i32>, ptr %1204, align 4, !tbaa !8
  %1205 = getelementptr i8, ptr %next.gep2318, i64 16
  store <4 x i32> %wide.load2325, ptr %next.gep2318, align 4, !tbaa !8
  store <4 x i32> %wide.load2326, ptr %1205, align 4, !tbaa !8
  %index.next2327 = add nuw i64 %index2317, 8
  %1206 = icmp eq i64 %index.next2327, %n.vec2308
  br i1 %1206, label %middle.block2303, label %vector.body2316, !llvm.loop !54

middle.block2303:                                 ; preds = %vector.body2316
  %cmp.n2328 = icmp eq i64 %n.vec2308, %1199
  br i1 %cmp.n2328, label %.preheader1445, label %.lr.ph1783.preheader2356

.preheader1445:                                   ; preds = %.lr.ph1783, %middle.block2303, %.lr.ph1802
  %.37928.lcssa = phi ptr [ %.369271797, %.lr.ph1802 ], [ %ind.end2314, %middle.block2303 ], [ %1220, %.lr.ph1783 ]
  %.2869.lcssa = phi i32 [ %.1868, %.lr.ph1802 ], [ %ind.end2312, %middle.block2303 ], [ %1221, %.lr.ph1783 ]
  %.40731.lcssa = phi ptr [ %.397301799, %.lr.ph1802 ], [ %ind.end2309, %middle.block2303 ], [ %1219, %.lr.ph1783 ]
  %.not11991787 = icmp eq i32 %.2869.lcssa, 0
  br i1 %.not11991787, label %._crit_edge1792, label %.lr.ph1791.preheader

.lr.ph1791.preheader:                             ; preds = %.preheader1445
  %.37928.lcssa2291 = ptrtoint ptr %.37928.lcssa to i64
  %.40731.lcssa2290 = ptrtoint ptr %.40731.lcssa to i64
  %1207 = zext i32 %.2869.lcssa to i64
  %min.iters.check = icmp ult i32 %.2869.lcssa, 32
  %1208 = sub i64 %.40731.lcssa2290, %.37928.lcssa2291
  %diff.check = icmp ult i64 %1208, 32
  %or.cond2354 = select i1 %min.iters.check, i1 true, i1 %diff.check
  br i1 %or.cond2354, label %.lr.ph1791.preheader2355, label %vector.ph

.lr.ph1791.preheader2355:                         ; preds = %middle.block, %.lr.ph1791.preheader
  %.417321790.ph = phi ptr [ %.40731.lcssa, %.lr.ph1791.preheader ], [ %ind.end, %middle.block ]
  %.38701789.ph = phi i32 [ %.2869.lcssa, %.lr.ph1791.preheader ], [ %ind.end2292, %middle.block ]
  %.389291788.ph = phi ptr [ %.37928.lcssa, %.lr.ph1791.preheader ], [ %ind.end2294, %middle.block ]
  %1209 = add nsw i32 %.38701789.ph, -1
  %xtraiter2469 = and i32 %.38701789.ph, 7
  %lcmp.mod2470.not = icmp eq i32 %xtraiter2469, 0
  br i1 %lcmp.mod2470.not, label %.lr.ph1791.prol.loopexit, label %.lr.ph1791.prol

.lr.ph1791.prol:                                  ; preds = %.lr.ph1791.preheader2355, %.lr.ph1791.prol
  %.417321790.prol = phi ptr [ %1212, %.lr.ph1791.prol ], [ %.417321790.ph, %.lr.ph1791.preheader2355 ]
  %.38701789.prol = phi i32 [ %1213, %.lr.ph1791.prol ], [ %.38701789.ph, %.lr.ph1791.preheader2355 ]
  %.389291788.prol = phi ptr [ %1210, %.lr.ph1791.prol ], [ %.389291788.ph, %.lr.ph1791.preheader2355 ]
  %prol.iter2471 = phi i32 [ %prol.iter2471.next, %.lr.ph1791.prol ], [ 0, %.lr.ph1791.preheader2355 ]
  %1210 = getelementptr inbounds i8, ptr %.389291788.prol, i64 1
  %1211 = load i8, ptr %.389291788.prol, align 1, !tbaa !5
  %1212 = getelementptr inbounds i8, ptr %.417321790.prol, i64 1
  store i8 %1211, ptr %.417321790.prol, align 1, !tbaa !5
  %1213 = add nsw i32 %.38701789.prol, -1
  %prol.iter2471.next = add i32 %prol.iter2471, 1
  %prol.iter2471.cmp.not = icmp eq i32 %prol.iter2471.next, %xtraiter2469
  br i1 %prol.iter2471.cmp.not, label %.lr.ph1791.prol.loopexit, label %.lr.ph1791.prol, !llvm.loop !55

.lr.ph1791.prol.loopexit:                         ; preds = %.lr.ph1791.prol, %.lr.ph1791.preheader2355
  %.lcssa2424.unr = phi ptr [ poison, %.lr.ph1791.preheader2355 ], [ %1210, %.lr.ph1791.prol ]
  %.lcssa2423.unr = phi ptr [ poison, %.lr.ph1791.preheader2355 ], [ %1212, %.lr.ph1791.prol ]
  %.417321790.unr = phi ptr [ %.417321790.ph, %.lr.ph1791.preheader2355 ], [ %1212, %.lr.ph1791.prol ]
  %.38701789.unr = phi i32 [ %.38701789.ph, %.lr.ph1791.preheader2355 ], [ %1213, %.lr.ph1791.prol ]
  %.389291788.unr = phi ptr [ %.389291788.ph, %.lr.ph1791.preheader2355 ], [ %1210, %.lr.ph1791.prol ]
  %1214 = icmp ult i32 %1209, 7
  br i1 %1214, label %._crit_edge1792, label %.lr.ph1791

vector.ph:                                        ; preds = %.lr.ph1791.preheader
  %n.vec = and i64 %1207, 4294967264
  %ind.end = getelementptr i8, ptr %.40731.lcssa, i64 %n.vec
  %.cast = trunc nuw i64 %n.vec to i32
  %ind.end2292 = sub i32 %.2869.lcssa, %.cast
  %ind.end2294 = getelementptr i8, ptr %.37928.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 %.40731.lcssa, i64 %index
  %next.gep2297 = getelementptr i8, ptr %.37928.lcssa, i64 %index
  %1215 = getelementptr i8, ptr %next.gep2297, i64 16
  %wide.load = load <16 x i8>, ptr %next.gep2297, align 1, !tbaa !5
  %wide.load2299 = load <16 x i8>, ptr %1215, align 1, !tbaa !5
  %1216 = 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.load2299, ptr %1216, align 1, !tbaa !5
  %index.next = add nuw i64 %index, 32
  %1217 = icmp eq i64 %index.next, %n.vec
  br i1 %1217, label %middle.block, label %vector.body, !llvm.loop !56

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %1207
  br i1 %cmp.n, label %._crit_edge1792, label %.lr.ph1791.preheader2355

.lr.ph1783:                                       ; preds = %.lr.ph1783.preheader2356, %.lr.ph1783
  %.407311781 = phi ptr [ %1219, %.lr.ph1783 ], [ %.407311781.ph, %.lr.ph1783.preheader2356 ]
  %.28691780 = phi i32 [ %1221, %.lr.ph1783 ], [ %.28691780.ph, %.lr.ph1783.preheader2356 ]
  %.379281779 = phi ptr [ %1220, %.lr.ph1783 ], [ %.379281779.ph, %.lr.ph1783.preheader2356 ]
  %1218 = load i32, ptr %.379281779, align 4, !tbaa !8
  store i32 %1218, ptr %.407311781, align 4, !tbaa !8
  %1219 = getelementptr inbounds i8, ptr %.407311781, i64 4
  %1220 = getelementptr inbounds i8, ptr %.379281779, i64 4
  %1221 = add nsw i32 %.28691780, -4
  %1222 = icmp ugt i32 %.28691780, 7
  br i1 %1222, label %.lr.ph1783, label %.preheader1445, !llvm.loop !57

.lr.ph1791:                                       ; preds = %.lr.ph1791.prol.loopexit, %.lr.ph1791
  %.417321790 = phi ptr [ %1246, %.lr.ph1791 ], [ %.417321790.unr, %.lr.ph1791.prol.loopexit ]
  %.38701789 = phi i32 [ %1247, %.lr.ph1791 ], [ %.38701789.unr, %.lr.ph1791.prol.loopexit ]
  %.389291788 = phi ptr [ %1244, %.lr.ph1791 ], [ %.389291788.unr, %.lr.ph1791.prol.loopexit ]
  %1223 = getelementptr inbounds i8, ptr %.389291788, i64 1
  %1224 = load i8, ptr %.389291788, align 1, !tbaa !5
  %1225 = getelementptr inbounds i8, ptr %.417321790, i64 1
  store i8 %1224, ptr %.417321790, align 1, !tbaa !5
  %1226 = getelementptr inbounds i8, ptr %.389291788, i64 2
  %1227 = load i8, ptr %1223, align 1, !tbaa !5
  %1228 = getelementptr inbounds i8, ptr %.417321790, i64 2
  store i8 %1227, ptr %1225, align 1, !tbaa !5
  %1229 = getelementptr inbounds i8, ptr %.389291788, i64 3
  %1230 = load i8, ptr %1226, align 1, !tbaa !5
  %1231 = getelementptr inbounds i8, ptr %.417321790, i64 3
  store i8 %1230, ptr %1228, align 1, !tbaa !5
  %1232 = getelementptr inbounds i8, ptr %.389291788, i64 4
  %1233 = load i8, ptr %1229, align 1, !tbaa !5
  %1234 = getelementptr inbounds i8, ptr %.417321790, i64 4
  store i8 %1233, ptr %1231, align 1, !tbaa !5
  %1235 = getelementptr inbounds i8, ptr %.389291788, i64 5
  %1236 = load i8, ptr %1232, align 1, !tbaa !5
  %1237 = getelementptr inbounds i8, ptr %.417321790, i64 5
  store i8 %1236, ptr %1234, align 1, !tbaa !5
  %1238 = getelementptr inbounds i8, ptr %.389291788, i64 6
  %1239 = load i8, ptr %1235, align 1, !tbaa !5
  %1240 = getelementptr inbounds i8, ptr %.417321790, i64 6
  store i8 %1239, ptr %1237, align 1, !tbaa !5
  %1241 = getelementptr inbounds i8, ptr %.389291788, i64 7
  %1242 = load i8, ptr %1238, align 1, !tbaa !5
  %1243 = getelementptr inbounds i8, ptr %.417321790, i64 7
  store i8 %1242, ptr %1240, align 1, !tbaa !5
  %1244 = getelementptr inbounds i8, ptr %.389291788, i64 8
  %1245 = load i8, ptr %1241, align 1, !tbaa !5
  %1246 = getelementptr inbounds i8, ptr %.417321790, i64 8
  store i8 %1245, ptr %1243, align 1, !tbaa !5
  %1247 = add nsw i32 %.38701789, -8
  %.not1199.7 = icmp eq i32 %1247, 0
  br i1 %.not1199.7, label %._crit_edge1792, label %.lr.ph1791, !llvm.loop !58

._crit_edge1792:                                  ; preds = %.lr.ph1791.prol.loopexit, %.lr.ph1791, %middle.block, %.preheader1445
  %.38929.lcssa = phi ptr [ %.37928.lcssa, %.preheader1445 ], [ %ind.end2294, %middle.block ], [ %.lcssa2424.unr, %.lr.ph1791.prol.loopexit ], [ %1244, %.lr.ph1791 ]
  %.41732.lcssa = phi ptr [ %.40731.lcssa, %.preheader1445 ], [ %ind.end, %middle.block ], [ %.lcssa2423.unr, %.lr.ph1791.prol.loopexit ], [ %1246, %.lr.ph1791 ]
  br i1 %.not1091, label %1257, label %1248

1248:                                             ; preds = %._crit_edge1792
  %1249 = ptrtoint ptr %.41732.lcssa to i64
  %1250 = sub i64 %1249, %1193
  %1251 = trunc i64 %1250 to i32
  %1252 = icmp sgt i32 %1251, 510
  br i1 %1252, label %1253, label %1257

1253:                                             ; preds = %1248
  %1254 = add nsw i32 %.257851798, %1251
  %1255 = call noundef ptr %0(ptr noundef %.251800, ptr noundef %1, i32 noundef %1251)
  %1256 = icmp eq ptr %1255, null
  br i1 %1256, label %.thread1420, label %1257

1257:                                             ; preds = %1253, %1248, %._crit_edge1792
  %.29789 = phi i32 [ %.257851798, %._crit_edge1792 ], [ %.257851798, %1248 ], [ %1254, %1253 ]
  %.45736 = phi ptr [ %.41732.lcssa, %._crit_edge1792 ], [ %.41732.lcssa, %1248 ], [ %1255, %1253 ]
  %.29 = phi ptr [ %.251800, %._crit_edge1792 ], [ %.251800, %1248 ], [ %1255, %1253 ]
  %.not1179 = icmp eq i32 %1195, 0
  br i1 %.not1179, label %.preheader1458, label %.lr.ph1802, !llvm.loop !59

.lr.ph1830:                                       ; preds = %.preheader1458, %1293
  %.301829 = phi ptr [ %.34, %1293 ], [ %.25.lcssa, %.preheader1458 ]
  %.467371828 = phi ptr [ %.53, %1293 ], [ %.39730.lcssa, %.preheader1458 ]
  %.307901827 = phi i32 [ %.34794, %1293 ], [ %.25785.lcssa, %.preheader1458 ]
  %.48471826 = phi i32 [ %1261, %1293 ], [ %.3846, %.preheader1458 ]
  %.467371828.fr = freeze ptr %.467371828
  %1258 = ptrtoint ptr %.467371828.fr to i64
  %1259 = ptrtoint ptr %.301829 to i64
  %.neg1192 = sub i64 %1259, %1258
  %.neg1193 = trunc i64 %.neg1192 to i32
  %1260 = add i32 %.neg1193, 512
  %spec.select1240 = call i32 @llvm.smin.i32(i32 %.48471826, i32 %1260)
  %.1839 = select i1 %.not1091, i32 %.48471826, i32 %spec.select1240
  %1261 = sub nsw i32 %.48471826, %.1839
  %.not11941806 = icmp eq i32 %.1839, 0
  %1262 = and i64 %1258, 3
  %1263 = icmp eq i64 %1262, 0
  %or.cond12431807 = or i1 %.not11941806, %1263
  br i1 %or.cond12431807, label %.preheader1444, label %.lr.ph1811.preheader

.lr.ph1811.preheader:                             ; preds = %.lr.ph1830
  %1264 = trunc i64 %1258 to i2
  %1265 = xor i2 %1264, -1
  %1266 = zext i2 %1265 to i64
  %1267 = add i32 %.1839, -1
  %1268 = zext i32 %1267 to i64
  %umin2030 = call i64 @llvm.umin.i64(i64 %1266, i64 %1268)
  %1269 = add nuw nsw i64 %umin2030, 1
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %.467371828.fr, i8 48, i64 %1269, i1 false), !tbaa !5
  %1270 = zext i2 %1265 to i32
  %scevgep2031 = getelementptr i8, ptr %.467371828.fr, i64 1
  %scevgep2033 = getelementptr i8, ptr %scevgep2031, i64 %umin2030
  %1271 = call i32 @llvm.usub.sat.i32(i32 %1267, i32 %1270)
  br label %.preheader1444

.preheader1444:                                   ; preds = %.lr.ph1811.preheader, %.lr.ph1830
  %.2840.lcssa = phi i32 [ %.1839, %.lr.ph1830 ], [ %1271, %.lr.ph1811.preheader ]
  %.47738.lcssa = phi ptr [ %.467371828.fr, %.lr.ph1830 ], [ %scevgep2033, %.lr.ph1811.preheader ]
  %1272 = icmp sgt i32 %.2840.lcssa, 3
  br i1 %1272, label %.lr.ph1816.preheader, label %.preheader1443

.lr.ph1816.preheader:                             ; preds = %.preheader1444
  %1273 = call i32 @llvm.usub.sat.i32(i32 %.2840.lcssa, i32 7)
  %1274 = add nuw i32 %1273, 3
  %1275 = and i32 %1274, -4
  %1276 = zext nneg i32 %1275 to i64
  %1277 = add nuw nsw i64 %1276, 4
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %.47738.lcssa, i8 48, i64 %1277, i1 false), !tbaa !8
  %scevgep2036 = getelementptr i8, ptr %.47738.lcssa, i64 4
  %scevgep2038 = getelementptr i8, ptr %scevgep2036, i64 %1276
  %1278 = and i32 %1274, -4
  %1279 = add nsw i32 %.2840.lcssa, -4
  %1280 = sub nsw i32 %1279, %1278
  br label %.preheader1443

.preheader1443:                                   ; preds = %.lr.ph1816.preheader, %.preheader1444
  %.3841.lcssa = phi i32 [ %.2840.lcssa, %.preheader1444 ], [ %1280, %.lr.ph1816.preheader ]
  %.48739.lcssa = phi ptr [ %.47738.lcssa, %.preheader1444 ], [ %scevgep2038, %.lr.ph1816.preheader ]
  %.not11951819 = icmp eq i32 %.3841.lcssa, 0
  br i1 %.not11951819, label %._crit_edge1823, label %.lr.ph1822.preheader

.lr.ph1822.preheader:                             ; preds = %.preheader1443
  %1281 = zext i32 %.3841.lcssa to i64
  call void @llvm.memset.p0.i64(ptr align 1 %.48739.lcssa, i8 48, i64 %1281, i1 false), !tbaa !5
  %1282 = add i32 %.3841.lcssa, -1
  %1283 = zext i32 %1282 to i64
  %scevgep2039 = getelementptr i8, ptr %.48739.lcssa, i64 1
  %scevgep2040 = getelementptr i8, ptr %scevgep2039, i64 %1283
  br label %._crit_edge1823

._crit_edge1823:                                  ; preds = %.lr.ph1822.preheader, %.preheader1443
  %.49740.lcssa = phi ptr [ %.48739.lcssa, %.preheader1443 ], [ %scevgep2040, %.lr.ph1822.preheader ]
  br i1 %.not1091, label %1293, label %1284

1284:                                             ; preds = %._crit_edge1823
  %1285 = ptrtoint ptr %.49740.lcssa to i64
  %1286 = sub i64 %1285, %1259
  %1287 = trunc i64 %1286 to i32
  %1288 = icmp sgt i32 %1287, 510
  br i1 %1288, label %1289, label %1293

1289:                                             ; preds = %1284
  %1290 = add nsw i32 %.307901827, %1287
  %1291 = call noundef ptr %0(ptr noundef %.301829, ptr noundef %1, i32 noundef %1287)
  %1292 = icmp eq ptr %1291, null
  br i1 %1292, label %.thread1420, label %1293

1293:                                             ; preds = %1289, %1284, %._crit_edge1823
  %.34794 = phi i32 [ %.307901827, %._crit_edge1823 ], [ %.307901827, %1284 ], [ %1290, %1289 ]
  %.53 = phi ptr [ %.49740.lcssa, %._crit_edge1823 ], [ %.49740.lcssa, %1284 ], [ %1291, %1289 ]
  %.34 = phi ptr [ %.301829, %._crit_edge1823 ], [ %.301829, %1284 ], [ %1291, %1289 ]
  %.not1180 = icmp eq i32 %1261, 0
  br i1 %.not1180, label %._crit_edge1831, label %.lr.ph1830, !llvm.loop !60

._crit_edge1831:                                  ; preds = %1293, %.preheader1458
  %.30790.lcssa = phi i32 [ %.25785.lcssa, %.preheader1458 ], [ %.34794, %1293 ]
  %.46737.lcssa = phi ptr [ %.39730.lcssa, %.preheader1458 ], [ %.53, %1293 ]
  %.30.lcssa = phi ptr [ %.25.lcssa, %.preheader1458 ], [ %.34, %1293 ]
  store ptr %25, ptr %13, align 8, !tbaa !15
  %1294 = load i8, ptr %9, align 1, !tbaa !5
  %.not11811842 = icmp eq i8 %1294, 0
  br i1 %.not11811842, label %._crit_edge1848, label %.lr.ph1847

.lr.ph1847:                                       ; preds = %._crit_edge1831, %1334
  %1295 = phi i8 [ %1335, %1334 ], [ %1294, %._crit_edge1831 ]
  %.351845 = phi ptr [ %.39, %1334 ], [ %.30.lcssa, %._crit_edge1831 ]
  %.541844 = phi ptr [ %.59, %1334 ], [ %.46737.lcssa, %._crit_edge1831 ]
  %.357951843 = phi i32 [ %.39799, %1334 ], [ %.30790.lcssa, %._crit_edge1831 ]
  %1296 = sext i8 %1295 to i32
  %1297 = ptrtoint ptr %.541844 to i64
  %1298 = ptrtoint ptr %.351845 to i64
  %.neg1188 = sub i64 %1298, %1297
  %.neg1189 = trunc i64 %.neg1188 to i32
  %1299 = add i32 %.neg1189, 512
  %spec.select1244 = call i32 @llvm.smin.i32(i32 %1299, i32 %1296)
  %.1811 = select i1 %.not1091, i32 %1296, i32 %spec.select1244
  %1300 = trunc i32 %.1811 to i8
  %1301 = sub i8 %1295, %1300
  store i8 %1301, ptr %9, align 1, !tbaa !5
  %.not11901835 = icmp eq i32 %.1811, 0
  br i1 %.not11901835, label %._crit_edge1840, label %.lr.ph1839.preheader

.lr.ph1839.preheader:                             ; preds = %.lr.ph1847
  %xtraiter2472 = and i32 %.1811, 3
  %lcmp.mod2473.not = icmp eq i32 %xtraiter2472, 0
  br i1 %lcmp.mod2473.not, label %.lr.ph1839.prol.loopexit, label %.lr.ph1839.prol

.lr.ph1839.prol:                                  ; preds = %.lr.ph1839.preheader, %.lr.ph1839.prol
  %.551837.prol = phi ptr [ %1305, %.lr.ph1839.prol ], [ %.541844, %.lr.ph1839.preheader ]
  %.28121836.prol = phi i32 [ %1306, %.lr.ph1839.prol ], [ %.1811, %.lr.ph1839.preheader ]
  %prol.iter2474 = phi i32 [ %prol.iter2474.next, %.lr.ph1839.prol ], [ 0, %.lr.ph1839.preheader ]
  %1302 = load ptr, ptr %13, align 8, !tbaa !15
  %1303 = getelementptr inbounds i8, ptr %1302, i64 1
  store ptr %1303, ptr %13, align 8, !tbaa !15
  %1304 = load i8, ptr %1302, align 1, !tbaa !5
  %1305 = getelementptr inbounds i8, ptr %.551837.prol, i64 1
  store i8 %1304, ptr %.551837.prol, align 1, !tbaa !5
  %1306 = add nsw i32 %.28121836.prol, -1
  %prol.iter2474.next = add i32 %prol.iter2474, 1
  %prol.iter2474.cmp.not = icmp eq i32 %prol.iter2474.next, %xtraiter2472
  br i1 %prol.iter2474.cmp.not, label %.lr.ph1839.prol.loopexit, label %.lr.ph1839.prol, !llvm.loop !61

.lr.ph1839.prol.loopexit:                         ; preds = %.lr.ph1839.prol, %.lr.ph1839.preheader
  %.lcssa2427.unr = phi ptr [ poison, %.lr.ph1839.preheader ], [ %1305, %.lr.ph1839.prol ]
  %.551837.unr = phi ptr [ %.541844, %.lr.ph1839.preheader ], [ %1305, %.lr.ph1839.prol ]
  %.28121836.unr = phi i32 [ %.1811, %.lr.ph1839.preheader ], [ %1306, %.lr.ph1839.prol ]
  %1307 = icmp ult i32 %.1811, 4
  br i1 %1307, label %._crit_edge1840, label %.lr.ph1839

.lr.ph1839:                                       ; preds = %.lr.ph1839.prol.loopexit, %.lr.ph1839
  %.551837 = phi ptr [ %1323, %.lr.ph1839 ], [ %.551837.unr, %.lr.ph1839.prol.loopexit ]
  %.28121836 = phi i32 [ %1324, %.lr.ph1839 ], [ %.28121836.unr, %.lr.ph1839.prol.loopexit ]
  %1308 = load ptr, ptr %13, align 8, !tbaa !15
  %1309 = getelementptr inbounds i8, ptr %1308, i64 1
  store ptr %1309, ptr %13, align 8, !tbaa !15
  %1310 = load i8, ptr %1308, align 1, !tbaa !5
  %1311 = getelementptr inbounds i8, ptr %.551837, i64 1
  store i8 %1310, ptr %.551837, align 1, !tbaa !5
  %1312 = load ptr, ptr %13, align 8, !tbaa !15
  %1313 = getelementptr inbounds i8, ptr %1312, i64 1
  store ptr %1313, ptr %13, align 8, !tbaa !15
  %1314 = load i8, ptr %1312, align 1, !tbaa !5
  %1315 = getelementptr inbounds i8, ptr %.551837, i64 2
  store i8 %1314, ptr %1311, align 1, !tbaa !5
  %1316 = load ptr, ptr %13, align 8, !tbaa !15
  %1317 = getelementptr inbounds i8, ptr %1316, i64 1
  store ptr %1317, ptr %13, align 8, !tbaa !15
  %1318 = load i8, ptr %1316, align 1, !tbaa !5
  %1319 = getelementptr inbounds i8, ptr %.551837, i64 3
  store i8 %1318, ptr %1315, align 1, !tbaa !5
  %1320 = load ptr, ptr %13, align 8, !tbaa !15
  %1321 = getelementptr inbounds i8, ptr %1320, i64 1
  store ptr %1321, ptr %13, align 8, !tbaa !15
  %1322 = load i8, ptr %1320, align 1, !tbaa !5
  %1323 = getelementptr inbounds i8, ptr %.551837, i64 4
  store i8 %1322, ptr %1319, align 1, !tbaa !5
  %1324 = add nsw i32 %.28121836, -4
  %.not1190.3 = icmp eq i32 %1324, 0
  br i1 %.not1190.3, label %._crit_edge1840, label %.lr.ph1839, !llvm.loop !62

._crit_edge1840:                                  ; preds = %.lr.ph1839.prol.loopexit, %.lr.ph1839, %.lr.ph1847
  %.55.lcssa = phi ptr [ %.541844, %.lr.ph1847 ], [ %.lcssa2427.unr, %.lr.ph1839.prol.loopexit ], [ %1323, %.lr.ph1839 ]
  br i1 %.not1091, label %1334, label %1325

1325:                                             ; preds = %._crit_edge1840
  %1326 = ptrtoint ptr %.55.lcssa to i64
  %1327 = sub i64 %1326, %1298
  %1328 = trunc i64 %1327 to i32
  %1329 = icmp sgt i32 %1328, 510
  br i1 %1329, label %1330, label %1334

1330:                                             ; preds = %1325
  %1331 = add nsw i32 %.357951843, %1328
  %1332 = call noundef ptr %0(ptr noundef %.351845, ptr noundef %1, i32 noundef %1328)
  %1333 = icmp eq ptr %1332, null
  br i1 %1333, label %.thread1420, label %1334

1334:                                             ; preds = %1330, %1325, %._crit_edge1840
  %.39799 = phi i32 [ %.357951843, %._crit_edge1840 ], [ %.357951843, %1325 ], [ %1331, %1330 ]
  %.59 = phi ptr [ %.55.lcssa, %._crit_edge1840 ], [ %.55.lcssa, %1325 ], [ %1332, %1330 ]
  %.39 = phi ptr [ %.351845, %._crit_edge1840 ], [ %.351845, %1325 ], [ %1332, %1330 ]
  %1335 = load i8, ptr %9, align 1, !tbaa !5
  %.not1181 = icmp eq i8 %1335, 0
  br i1 %.not1181, label %._crit_edge1848, label %.lr.ph1847, !llvm.loop !63

._crit_edge1848:                                  ; preds = %1334, %._crit_edge1831
  %.35795.lcssa = phi i32 [ %.30790.lcssa, %._crit_edge1831 ], [ %.39799, %1334 ]
  %.54.lcssa = phi ptr [ %.46737.lcssa, %._crit_edge1831 ], [ %.59, %1334 ]
  %.35.lcssa = phi ptr [ %.30.lcssa, %._crit_edge1831 ], [ %.39, %1334 ]
  %1336 = and i32 %.18866, 1
  %1337 = icmp ne i32 %1336, 0
  %1338 = icmp sgt i32 %.88212118, 0
  %or.cond48 = select i1 %1337, i1 %1338, i1 false
  br i1 %or.cond48, label %.preheader1455, label %.backedge2370

1339:                                             ; preds = %1371, %._crit_edge1869, %1366
  %.44804.ph = phi i32 [ %.40800, %1366 ], [ %.40800, %._crit_edge1869 ], [ %1372, %1371 ]
  %.67.ph = phi ptr [ %.63.lcssa, %1366 ], [ %.63.lcssa, %._crit_edge1869 ], [ %1373, %1371 ]
  %.44.ph = phi ptr [ %.40, %1366 ], [ %.40, %._crit_edge1869 ], [ %1373, %1371 ]
  %.old47.not = icmp eq i32 %1343, 0
  br i1 %.old47.not, label %.backedge2370, label %.preheader1455

.preheader1455:                                   ; preds = %._crit_edge1848, %1339
  %.9822 = phi i32 [ %1343, %1339 ], [ %.88212118, %._crit_edge1848 ]
  %.40800 = phi i32 [ %.44804.ph, %1339 ], [ %.35795.lcssa, %._crit_edge1848 ]
  %.60 = phi ptr [ %.67.ph, %1339 ], [ %.54.lcssa, %._crit_edge1848 ]
  %.40 = phi ptr [ %.44.ph, %1339 ], [ %.35.lcssa, %._crit_edge1848 ]
  %.60.fr = freeze ptr %.60
  %1340 = ptrtoint ptr %.60.fr to i64
  %1341 = ptrtoint ptr %.40 to i64
  %.neg1183 = sub i64 %1341, %1340
  %.neg1184 = trunc i64 %.neg1183 to i32
  %1342 = add i32 %.neg1184, 512
  %spec.select1245 = call i32 @llvm.smin.i32(i32 %.9822, i32 %1342)
  %.1742 = select i1 %.not1091, i32 %.9822, i32 %spec.select1245
  %1343 = sub nsw i32 %.9822, %.1742
  %.not11851852 = icmp eq i32 %.1742, 0
  %1344 = and i64 %1340, 3
  %1345 = icmp eq i64 %1344, 0
  %or.cond12481853 = or i1 %.not11851852, %1345
  br i1 %or.cond12481853, label %.preheader1442, label %.lr.ph1857.preheader

.lr.ph1857.preheader:                             ; preds = %.preheader1455
  %1346 = trunc i64 %1340 to i2
  %1347 = xor i2 %1346, -1
  %1348 = zext i2 %1347 to i64
  %1349 = add i32 %.1742, -1
  %1350 = zext i32 %1349 to i64
  %umin2041 = call i64 @llvm.umin.i64(i64 %1348, i64 %1350)
  %1351 = add nuw nsw i64 %umin2041, 1
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %.60.fr, i8 32, i64 %1351, i1 false), !tbaa !5
  %1352 = zext i2 %1347 to i32
  %scevgep2042 = getelementptr i8, ptr %.60.fr, i64 1
  %scevgep2044 = getelementptr i8, ptr %scevgep2042, i64 %umin2041
  %1353 = call i32 @llvm.usub.sat.i32(i32 %1349, i32 %1352)
  br label %.preheader1442

.preheader1442:                                   ; preds = %.lr.ph1857.preheader, %.preheader1455
  %.2743.lcssa = phi i32 [ %.1742, %.preheader1455 ], [ %1353, %.lr.ph1857.preheader ]
  %.61.lcssa = phi ptr [ %.60.fr, %.preheader1455 ], [ %scevgep2044, %.lr.ph1857.preheader ]
  %1354 = icmp sgt i32 %.2743.lcssa, 3
  br i1 %1354, label %.lr.ph1862.preheader, label %.preheader

.lr.ph1862.preheader:                             ; preds = %.preheader1442
  %1355 = call i32 @llvm.usub.sat.i32(i32 %.2743.lcssa, i32 7)
  %1356 = add nuw i32 %1355, 3
  %1357 = and i32 %1356, -4
  %1358 = zext nneg i32 %1357 to i64
  %1359 = add nuw nsw i64 %1358, 4
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %.61.lcssa, i8 32, i64 %1359, i1 false), !tbaa !8
  %scevgep2047 = getelementptr i8, ptr %.61.lcssa, i64 4
  %scevgep2049 = getelementptr i8, ptr %scevgep2047, i64 %1358
  %1360 = and i32 %1356, -4
  %1361 = add nsw i32 %.2743.lcssa, -4
  %1362 = sub nsw i32 %1361, %1360
  br label %.preheader

.preheader:                                       ; preds = %.lr.ph1862.preheader, %.preheader1442
  %.3744.lcssa = phi i32 [ %.2743.lcssa, %.preheader1442 ], [ %1362, %.lr.ph1862.preheader ]
  %.62.lcssa = phi ptr [ %.61.lcssa, %.preheader1442 ], [ %scevgep2049, %.lr.ph1862.preheader ]
  %.not11861865 = icmp eq i32 %.3744.lcssa, 0
  br i1 %.not11861865, label %._crit_edge1869, label %.lr.ph1868.preheader

.lr.ph1868.preheader:                             ; preds = %.preheader
  %1363 = zext i32 %.3744.lcssa to i64
  call void @llvm.memset.p0.i64(ptr align 1 %.62.lcssa, i8 32, i64 %1363, i1 false), !tbaa !5
  %1364 = add i32 %.3744.lcssa, -1
  %1365 = zext i32 %1364 to i64
  %scevgep2050 = getelementptr i8, ptr %.62.lcssa, i64 1
  %scevgep2051 = getelementptr i8, ptr %scevgep2050, i64 %1365
  br label %._crit_edge1869

._crit_edge1869:                                  ; preds = %.lr.ph1868.preheader, %.preheader
  %.63.lcssa = phi ptr [ %.62.lcssa, %.preheader ], [ %scevgep2051, %.lr.ph1868.preheader ]
  br i1 %.not1091, label %1339, label %1366

1366:                                             ; preds = %._crit_edge1869
  %1367 = ptrtoint ptr %.63.lcssa to i64
  %1368 = sub i64 %1367, %1341
  %1369 = trunc i64 %1368 to i32
  %1370 = icmp sgt i32 %1369, 510
  br i1 %1370, label %1371, label %1339

1371:                                             ; preds = %1366
  %1372 = add nsw i32 %.40800, %1369
  %1373 = call noundef ptr %0(ptr noundef %.40, ptr noundef %1, i32 noundef %1369)
  %1374 = icmp eq ptr %1373, null
  br i1 %1374, label %.thread1420, label %1339, !llvm.loop !64

1375:                                             ; preds = %202
  store i8 %203, ptr %27, align 1, !tbaa !5
  store i32 1, ptr %10, align 4, !tbaa !8
  store i8 0, ptr %8, align 1, !tbaa !5
  store i8 0, ptr %9, align 1, !tbaa !5
  store i32 0, ptr %12, align 4, !tbaa !8
  br label %991

1376:                                             ; preds = %thread-pre-split
  br i1 %.not1091, label %1377, label %1378

1377:                                             ; preds = %1376
  store i8 0, ptr %.3694, align 1, !tbaa !5
  br label %.thread1420

1378:                                             ; preds = %1376
  %1379 = ptrtoint ptr %.3694 to i64
  %1380 = ptrtoint ptr %.1 to i64
  %1381 = sub i64 %1379, %1380
  %1382 = trunc i64 %1381 to i32
  %1383 = icmp sgt i32 %1382, 0
  br i1 %1383, label %1384, label %.thread1420

1384:                                             ; preds = %1378
  %1385 = add nsw i32 %.1761, %1382
  %1386 = call noundef ptr %0(ptr noundef %.1, ptr noundef %1, i32 noundef %1382)
  br label %.thread1420

.thread1420:                                      ; preds = %68, %1045, %1085, %1144, %1185, %1253, %1289, %1330, %1371, %1384, %1377, %1378
  %.49809 = phi i32 [ %.1761, %1377 ], [ %.1761, %1378 ], [ %1385, %1384 ], [ %1372, %1371 ], [ %1331, %1330 ], [ %1290, %1289 ], [ %1254, %1253 ], [ %1186, %1185 ], [ %1145, %1144 ], [ %1086, %1085 ], [ %1046, %1045 ], [ %69, %68 ]
  %.72 = phi ptr [ %.3694, %1377 ], [ %.3694, %1378 ], [ %1386, %1384 ], [ null, %1371 ], [ null, %1330 ], [ null, %1289 ], [ null, %1253 ], [ null, %1185 ], [ null, %1144 ], [ null, %1085 ], [ null, %1045 ], [ null, %68 ]
  %.49 = phi ptr [ %.1, %1377 ], [ %.1, %1378 ], [ %1386, %1384 ], [ null, %1371 ], [ null, %1330 ], [ null, %1289 ], [ null, %1253 ], [ null, %1185 ], [ null, %1144 ], [ null, %1085 ], [ null, %1045 ], [ null, %68 ]
  %1387 = ptrtoint ptr %.72 to i64
  %1388 = ptrtoint ptr %.49 to i64
  %1389 = sub i64 %1387, %1388
  %1390 = trunc i64 %1389 to i32
  %1391 = add nsw i32 %.49809, %1390
  ret i32 %1391
}

; 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, !11}
!46 = distinct !{!46, !23}
!47 = distinct !{!47, !11}
!48 = distinct !{!48, !11}
!49 = distinct !{!49, !11}
!50 = distinct !{!50, !11}
!51 = distinct !{!51, !23}
!52 = distinct !{!52, !11}
!53 = distinct !{!53, !11}
!54 = distinct !{!54, !11, !28, !29}
!55 = distinct !{!55, !23}
!56 = distinct !{!56, !11, !28, !29}
!57 = distinct !{!57, !11, !28}
!58 = distinct !{!58, !11, !28}
!59 = distinct !{!59, !11}
!60 = distinct !{!60, !11}
!61 = distinct !{!61, !23}
!62 = distinct !{!62, !11}
!63 = distinct !{!63, !11}
!64 = distinct !{!64, !11}


; Effective O3 passes: ADCEPass,BDCEPass,CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopIdiomRecognizePass,LoopInstSimplifyPass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass