; LLVM IR from caryll/otfcc :: dep/extern (json)

; 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.json_state = type { i64, i32, i64, %struct.json_settings, i32, ptr, i32, i32 }
%struct.json_settings = type { i64, i32, ptr, ptr, ptr, i64 }
%struct._json_value = type { ptr, i32, %union.anon, %union.anon.2 }
%union.anon = type { %struct.anon }
%struct.anon = type { i32, ptr }
%union.anon.2 = type { ptr }
%struct.anon.0 = type { i32, ptr }
%struct._json_object_entry = type { ptr, i32, ptr }
%struct.anon.1 = type { i32, ptr }

@.str = external hidden unnamed_addr constant [36 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [14 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local ptr @json_parse_ex(ptr noundef %0, ptr noundef %1, i64 noundef %2, ptr noundef %3) #0 {
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca i64, align 8
  %9 = alloca ptr, align 8
  %10 = alloca [128 x i8], align 16
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca %struct.json_state, align 8
  %16 = alloca i64, align 8
  %17 = alloca i64, align 8
  %18 = alloca i64, align 8
  %19 = alloca i64, align 8
  %20 = alloca i32, align 4
  %21 = alloca i8, align 1
  %22 = alloca i8, align 1
  %23 = alloca i8, align 1
  %24 = alloca i8, align 1
  %25 = alloca ptr, align 8
  %26 = alloca i32, align 4
  %27 = alloca i8, align 1
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca ptr, align 8
  store ptr %0, ptr %6, align 8, !tbaa !5
  store ptr %1, ptr %7, align 8, !tbaa !5
  store i64 %2, ptr %8, align 8, !tbaa !9
  store ptr %3, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 128, ptr %10) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #6
  store ptr null, ptr %14, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 96, ptr %15) #6
  %31 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 0
  store i64 0, ptr %31, align 8, !tbaa !11
  %32 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 1
  store i32 0, ptr %32, align 8, !tbaa !15
  %33 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 2
  store i64 0, ptr %33, align 8, !tbaa !16
  %34 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 3
  %35 = getelementptr inbounds %struct.json_settings, ptr %34, i32 0, i32 0
  store i64 0, ptr %35, align 8, !tbaa !17
  %36 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 3
  %37 = getelementptr inbounds %struct.json_settings, ptr %36, i32 0, i32 2
  store ptr null, ptr %37, align 8, !tbaa !18
  %38 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 3
  %39 = getelementptr inbounds %struct.json_settings, ptr %38, i32 0, i32 3
  store ptr null, ptr %39, align 8, !tbaa !19
  %40 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 3
  %41 = getelementptr inbounds %struct.json_settings, ptr %40, i32 0, i32 1
  store i32 0, ptr %41, align 8, !tbaa !20
  %42 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 3
  %43 = getelementptr inbounds %struct.json_settings, ptr %42, i32 0, i32 4
  store ptr null, ptr %43, align 8, !tbaa !21
  %44 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 3
  %45 = getelementptr inbounds %struct.json_settings, ptr %44, i32 0, i32 5
  store i64 0, ptr %45, align 8, !tbaa !22
  %46 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 4
  store i32 0, ptr %46, align 8, !tbaa !23
  %47 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  store ptr null, ptr %47, align 8, !tbaa !24
  %48 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 7
  store i32 0, ptr %48, align 4, !tbaa !25
  %49 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 6
  store i32 0, ptr %49, align 8, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #6
  store i64 0, ptr %17, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #6
  store i64 0, ptr %18, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #6
  store i64 0, ptr %19, align 8, !tbaa !9
  %50 = load i64, ptr %8, align 8, !tbaa !9
  %51 = icmp uge i64 %50, 3
  br i1 %51, label %52, label %75

52:                                               ; preds = %4
  %53 = load ptr, ptr %7, align 8, !tbaa !5
  %54 = getelementptr inbounds i8, ptr %53, i64 0
  %55 = load i8, ptr %54, align 1, !tbaa !27
  %56 = zext i8 %55 to i32
  %57 = icmp eq i32 %56, 239
  br i1 %57, label %58, label %75

58:                                               ; preds = %52
  %59 = load ptr, ptr %7, align 8, !tbaa !5
  %60 = getelementptr inbounds i8, ptr %59, i64 1
  %61 = load i8, ptr %60, align 1, !tbaa !27
  %62 = zext i8 %61 to i32
  %63 = icmp eq i32 %62, 187
  br i1 %63, label %64, label %75

64:                                               ; preds = %58
  %65 = load ptr, ptr %7, align 8, !tbaa !5
  %66 = getelementptr inbounds i8, ptr %65, i64 2
  %67 = load i8, ptr %66, align 1, !tbaa !27
  %68 = zext i8 %67 to i32
  %69 = icmp eq i32 %68, 191
  br i1 %69, label %70, label %75

70:                                               ; preds = %64
  %71 = load ptr, ptr %7, align 8, !tbaa !5
  %72 = getelementptr inbounds i8, ptr %71, i64 3
  store ptr %72, ptr %7, align 8, !tbaa !5
  %73 = load i64, ptr %8, align 8, !tbaa !9
  %74 = sub i64 %73, 3
  store i64 %74, ptr %8, align 8, !tbaa !9
  br label %75

75:                                               ; preds = %70, %64, %58, %52, %4
  %76 = getelementptr inbounds [128 x i8], ptr %10, i64 0, i64 0
  store i8 0, ptr %76, align 16, !tbaa !27
  %77 = load ptr, ptr %7, align 8, !tbaa !5
  %78 = load i64, ptr %8, align 8, !tbaa !9
  %79 = getelementptr inbounds i8, ptr %77, i64 %78
  store ptr %79, ptr %11, align 8, !tbaa !5
  %80 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 3
  %81 = load ptr, ptr %6, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %80, ptr align 8 %81, i64 48, i1 false)
  %82 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 3
  %83 = getelementptr inbounds %struct.json_settings, ptr %82, i32 0, i32 2
  %84 = load ptr, ptr %83, align 8, !tbaa !18
  %85 = icmp ne ptr %84, null
  br i1 %85, label %89, label %86

86:                                               ; preds = %75
  %87 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 3
  %88 = getelementptr inbounds %struct.json_settings, ptr %87, i32 0, i32 2
  store ptr @default_alloc, ptr %88, align 8, !tbaa !18
  br label %89

89:                                               ; preds = %86, %75
  %90 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 3
  %91 = getelementptr inbounds %struct.json_settings, ptr %90, i32 0, i32 3
  %92 = load ptr, ptr %91, align 8, !tbaa !19
  %93 = icmp ne ptr %92, null
  br i1 %93, label %97, label %94

94:                                               ; preds = %89
  %95 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 3
  %96 = getelementptr inbounds %struct.json_settings, ptr %95, i32 0, i32 3
  store ptr @default_free, ptr %96, align 8, !tbaa !19
  br label %97

97:                                               ; preds = %94, %89
  %98 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 1
  call void @llvm.memset.p0.i64(ptr align 8 %98, i8 -1, i64 4, i1 false)
  %99 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 2
  call void @llvm.memset.p0.i64(ptr align 8 %99, i8 -1, i64 8, i1 false)
  %100 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 1
  %101 = load i32, ptr %100, align 8, !tbaa !15
  %102 = sub i32 %101, 8
  store i32 %102, ptr %100, align 8, !tbaa !15
  %103 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 2
  %104 = load i64, ptr %103, align 8, !tbaa !16
  %105 = sub i64 %104, 8
  store i64 %105, ptr %103, align 8, !tbaa !16
  %106 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 4
  store i32 1, ptr %106, align 8, !tbaa !23
  br label %107

107:                                              ; preds = %1526, %97
  %108 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 4
  %109 = load i32, ptr %108, align 8, !tbaa !23
  %110 = icmp sge i32 %109, 0
  br i1 %110, label %111, label %1530

111:                                              ; preds = %107
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %22) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %23) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %24) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #6
  store ptr null, ptr %25, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #6
  store i32 0, ptr %26, align 4, !tbaa !28
  store ptr null, ptr %13, align 8, !tbaa !5
  store ptr null, ptr %12, align 8, !tbaa !5
  store i64 8, ptr %16, align 8, !tbaa !9
  %112 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 6
  store i32 1, ptr %112, align 8, !tbaa !26
  %113 = load ptr, ptr %7, align 8, !tbaa !5
  %114 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  store ptr %113, ptr %114, align 8, !tbaa !24
  br label %115

115:                                              ; preds = %1517, %111
  call void @llvm.lifetime.start.p0(i64 1, ptr %27) #6
  %116 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %117 = load ptr, ptr %116, align 8, !tbaa !24
  %118 = load ptr, ptr %11, align 8, !tbaa !5
  %119 = icmp eq ptr %117, %118
  br i1 %119, label %120, label %121

120:                                              ; preds = %115
  br label %126

121:                                              ; preds = %115
  %122 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %123 = load ptr, ptr %122, align 8, !tbaa !24
  %124 = load i8, ptr %123, align 1, !tbaa !27
  %125 = sext i8 %124 to i32
  br label %126

126:                                              ; preds = %121, %120
  %127 = phi i32 [ 0, %120 ], [ %125, %121 ]
  %128 = trunc i32 %127 to i8
  store i8 %128, ptr %27, align 1, !tbaa !27
  %129 = load i64, ptr %16, align 8, !tbaa !9
  %130 = and i64 %129, 32
  %131 = icmp ne i64 %130, 0
  br i1 %131, label %132, label %655

132:                                              ; preds = %126
  %133 = load i8, ptr %27, align 1, !tbaa !27
  %134 = icmp ne i8 %133, 0
  br i1 %134, label %142, label %135

135:                                              ; preds = %132
  %136 = getelementptr inbounds [128 x i8], ptr %10, i64 0, i64 0
  %137 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 6
  %138 = load i32, ptr %137, align 8, !tbaa !26
  %139 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 7
  %140 = load i32, ptr %139, align 4, !tbaa !25
  %141 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %136, ptr noundef @.str, i32 noundef %138, i32 noundef %140) #6
  store i32 8, ptr %29, align 4
  br label %1514

142:                                              ; preds = %132
  %143 = load i32, ptr %26, align 4, !tbaa !28
  %144 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 1
  %145 = load i32, ptr %144, align 8, !tbaa !15
  %146 = icmp ugt i32 %143, %145
  br i1 %146, label %147, label %148

147:                                              ; preds = %142
  store i32 9, ptr %29, align 4
  br label %1514

148:                                              ; preds = %142
  %149 = load i64, ptr %16, align 8, !tbaa !9
  %150 = and i64 %149, 16
  %151 = icmp ne i64 %150, 0
  br i1 %151, label %152, label %553

152:                                              ; preds = %148
  %153 = load i64, ptr %16, align 8, !tbaa !9
  %154 = and i64 %153, -17
  store i64 %154, ptr %16, align 8, !tbaa !9
  %155 = load i8, ptr %27, align 1, !tbaa !27
  %156 = sext i8 %155 to i32
  switch i32 %156, label %536 [
    i32 98, label %157
    i32 102, label %172
    i32 110, label %187
    i32 114, label %202
    i32 116, label %217
    i32 117, label %232
  ]

157:                                              ; preds = %152
  br label %158

158:                                              ; preds = %157
  %159 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 4
  %160 = load i32, ptr %159, align 8, !tbaa !23
  %161 = icmp ne i32 %160, 0
  br i1 %161, label %167, label %162

162:                                              ; preds = %158
  %163 = load ptr, ptr %25, align 8, !tbaa !5
  %164 = load i32, ptr %26, align 4, !tbaa !28
  %165 = zext i32 %164 to i64
  %166 = getelementptr inbounds i8, ptr %163, i64 %165
  store i8 8, ptr %166, align 1, !tbaa !27
  br label %167

167:                                              ; preds = %162, %158
  %168 = load i32, ptr %26, align 4, !tbaa !28
  %169 = add i32 %168, 1
  store i32 %169, ptr %26, align 4, !tbaa !28
  br label %170

170:                                              ; preds = %167
  br label %171

171:                                              ; preds = %170
  br label %552

172:                                              ; preds = %152
  br label %173

173:                                              ; preds = %172
  %174 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 4
  %175 = load i32, ptr %174, align 8, !tbaa !23
  %176 = icmp ne i32 %175, 0
  br i1 %176, label %182, label %177

177:                                              ; preds = %173
  %178 = load ptr, ptr %25, align 8, !tbaa !5
  %179 = load i32, ptr %26, align 4, !tbaa !28
  %180 = zext i32 %179 to i64
  %181 = getelementptr inbounds i8, ptr %178, i64 %180
  store i8 12, ptr %181, align 1, !tbaa !27
  br label %182

182:                                              ; preds = %177, %173
  %183 = load i32, ptr %26, align 4, !tbaa !28
  %184 = add i32 %183, 1
  store i32 %184, ptr %26, align 4, !tbaa !28
  br label %185

185:                                              ; preds = %182
  br label %186

186:                                              ; preds = %185
  br label %552

187:                                              ; preds = %152
  br label %188

188:                                              ; preds = %187
  %189 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 4
  %190 = load i32, ptr %189, align 8, !tbaa !23
  %191 = icmp ne i32 %190, 0
  br i1 %191, label %197, label %192

192:                                              ; preds = %188
  %193 = load ptr, ptr %25, align 8, !tbaa !5
  %194 = load i32, ptr %26, align 4, !tbaa !28
  %195 = zext i32 %194 to i64
  %196 = getelementptr inbounds i8, ptr %193, i64 %195
  store i8 10, ptr %196, align 1, !tbaa !27
  br label %197

197:                                              ; preds = %192, %188
  %198 = load i32, ptr %26, align 4, !tbaa !28
  %199 = add i32 %198, 1
  store i32 %199, ptr %26, align 4, !tbaa !28
  br label %200

200:                                              ; preds = %197
  br label %201

201:                                              ; preds = %200
  br label %552

202:                                              ; preds = %152
  br label %203

203:                                              ; preds = %202
  %204 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 4
  %205 = load i32, ptr %204, align 8, !tbaa !23
  %206 = icmp ne i32 %205, 0
  br i1 %206, label %212, label %207

207:                                              ; preds = %203
  %208 = load ptr, ptr %25, align 8, !tbaa !5
  %209 = load i32, ptr %26, align 4, !tbaa !28
  %210 = zext i32 %209 to i64
  %211 = getelementptr inbounds i8, ptr %208, i64 %210
  store i8 13, ptr %211, align 1, !tbaa !27
  br label %212

212:                                              ; preds = %207, %203
  %213 = load i32, ptr %26, align 4, !tbaa !28
  %214 = add i32 %213, 1
  store i32 %214, ptr %26, align 4, !tbaa !28
  br label %215

215:                                              ; preds = %212
  br label %216

216:                                              ; preds = %215
  br label %552

217:                                              ; preds = %152
  br label %218

218:                                              ; preds = %217
  %219 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 4
  %220 = load i32, ptr %219, align 8, !tbaa !23
  %221 = icmp ne i32 %220, 0
  br i1 %221, label %227, label %222

222:                                              ; preds = %218
  %223 = load ptr, ptr %25, align 8, !tbaa !5
  %224 = load i32, ptr %26, align 4, !tbaa !28
  %225 = zext i32 %224 to i64
  %226 = getelementptr inbounds i8, ptr %223, i64 %225
  store i8 9, ptr %226, align 1, !tbaa !27
  br label %227

227:                                              ; preds = %222, %218
  %228 = load i32, ptr %26, align 4, !tbaa !28
  %229 = add i32 %228, 1
  store i32 %229, ptr %26, align 4, !tbaa !28
  br label %230

230:                                              ; preds = %227
  br label %231

231:                                              ; preds = %230
  br label %552

232:                                              ; preds = %152
  %233 = load ptr, ptr %11, align 8, !tbaa !5
  %234 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %235 = load ptr, ptr %234, align 8, !tbaa !24
  %236 = ptrtoint ptr %233 to i64
  %237 = ptrtoint ptr %235 to i64
  %238 = sub i64 %236, %237
  %239 = icmp slt i64 %238, 4
  br i1 %239, label %272, label %240

240:                                              ; preds = %232
  %241 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %242 = load ptr, ptr %241, align 8, !tbaa !24
  %243 = getelementptr inbounds i8, ptr %242, i32 1
  store ptr %243, ptr %241, align 8, !tbaa !24
  %244 = load i8, ptr %243, align 1, !tbaa !27
  %245 = call zeroext i8 @hex_value(i8 noundef signext %244)
  store i8 %245, ptr %21, align 1, !tbaa !27
  %246 = zext i8 %245 to i32
  %247 = icmp eq i32 %246, 255
  br i1 %247, label %272, label %248

248:                                              ; preds = %240
  %249 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %250 = load ptr, ptr %249, align 8, !tbaa !24
  %251 = getelementptr inbounds i8, ptr %250, i32 1
  store ptr %251, ptr %249, align 8, !tbaa !24
  %252 = load i8, ptr %251, align 1, !tbaa !27
  %253 = call zeroext i8 @hex_value(i8 noundef signext %252)
  store i8 %253, ptr %22, align 1, !tbaa !27
  %254 = zext i8 %253 to i32
  %255 = icmp eq i32 %254, 255
  br i1 %255, label %272, label %256

256:                                              ; preds = %248
  %257 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %258 = load ptr, ptr %257, align 8, !tbaa !24
  %259 = getelementptr inbounds i8, ptr %258, i32 1
  store ptr %259, ptr %257, align 8, !tbaa !24
  %260 = load i8, ptr %259, align 1, !tbaa !27
  %261 = call zeroext i8 @hex_value(i8 noundef signext %260)
  store i8 %261, ptr %23, align 1, !tbaa !27
  %262 = zext i8 %261 to i32
  %263 = icmp eq i32 %262, 255
  br i1 %263, label %272, label %264

264:                                              ; preds = %256
  %265 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %266 = load ptr, ptr %265, align 8, !tbaa !24
  %267 = getelementptr inbounds i8, ptr %266, i32 1
  store ptr %267, ptr %265, align 8, !tbaa !24
  %268 = load i8, ptr %267, align 1, !tbaa !27
  %269 = call zeroext i8 @hex_value(i8 noundef signext %268)
  store i8 %269, ptr %24, align 1, !tbaa !27
  %270 = zext i8 %269 to i32
  %271 = icmp eq i32 %270, 255
  br i1 %271, label %272, label %281

272:                                              ; preds = %264, %256, %248, %240, %232
  %273 = getelementptr inbounds [128 x i8], ptr %10, i64 0, i64 0
  %274 = load i8, ptr %27, align 1, !tbaa !27
  %275 = sext i8 %274 to i32
  %276 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 6
  %277 = load i32, ptr %276, align 8, !tbaa !26
  %278 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 7
  %279 = load i32, ptr %278, align 4, !tbaa !25
  %280 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %273, ptr noundef @.str.1, i32 noundef %275, i32 noundef %277, i32 noundef %279) #6
  store i32 8, ptr %29, align 4
  br label %1514

281:                                              ; preds = %264
  %282 = load i8, ptr %21, align 1, !tbaa !27
  %283 = zext i8 %282 to i32
  %284 = shl i32 %283, 4
  %285 = load i8, ptr %22, align 1, !tbaa !27
  %286 = zext i8 %285 to i32
  %287 = or i32 %284, %286
  %288 = trunc i32 %287 to i8
  store i8 %288, ptr %21, align 1, !tbaa !27
  %289 = load i8, ptr %23, align 1, !tbaa !27
  %290 = zext i8 %289 to i32
  %291 = shl i32 %290, 4
  %292 = load i8, ptr %24, align 1, !tbaa !27
  %293 = zext i8 %292 to i32
  %294 = or i32 %291, %293
  %295 = trunc i32 %294 to i8
  store i8 %295, ptr %22, align 1, !tbaa !27
  %296 = load i8, ptr %21, align 1, !tbaa !27
  %297 = zext i8 %296 to i32
  %298 = shl i32 %297, 8
  %299 = load i8, ptr %22, align 1, !tbaa !27
  %300 = zext i8 %299 to i32
  %301 = or i32 %298, %300
  store i32 %301, ptr %20, align 4, !tbaa !28
  %302 = load i32, ptr %20, align 4, !tbaa !28
  %303 = and i32 %302, 63488
  %304 = icmp eq i32 %303, 55296
  br i1 %304, label %305, label %399

305:                                              ; preds = %281
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #6
  %306 = load ptr, ptr %11, align 8, !tbaa !5
  %307 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %308 = load ptr, ptr %307, align 8, !tbaa !24
  %309 = ptrtoint ptr %306 to i64
  %310 = ptrtoint ptr %308 to i64
  %311 = sub i64 %309, %310
  %312 = icmp slt i64 %311, 6
  br i1 %312, label %359, label %313

313:                                              ; preds = %305
  %314 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %315 = load ptr, ptr %314, align 8, !tbaa !24
  %316 = getelementptr inbounds i8, ptr %315, i32 1
  store ptr %316, ptr %314, align 8, !tbaa !24
  %317 = load i8, ptr %316, align 1, !tbaa !27
  %318 = sext i8 %317 to i32
  %319 = icmp ne i32 %318, 92
  br i1 %319, label %359, label %320

320:                                              ; preds = %313
  %321 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %322 = load ptr, ptr %321, align 8, !tbaa !24
  %323 = getelementptr inbounds i8, ptr %322, i32 1
  store ptr %323, ptr %321, align 8, !tbaa !24
  %324 = load i8, ptr %323, align 1, !tbaa !27
  %325 = sext i8 %324 to i32
  %326 = icmp ne i32 %325, 117
  br i1 %326, label %359, label %327

327:                                              ; preds = %320
  %328 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %329 = load ptr, ptr %328, align 8, !tbaa !24
  %330 = getelementptr inbounds i8, ptr %329, i32 1
  store ptr %330, ptr %328, align 8, !tbaa !24
  %331 = load i8, ptr %330, align 1, !tbaa !27
  %332 = call zeroext i8 @hex_value(i8 noundef signext %331)
  store i8 %332, ptr %21, align 1, !tbaa !27
  %333 = zext i8 %332 to i32
  %334 = icmp eq i32 %333, 255
  br i1 %334, label %359, label %335

335:                                              ; preds = %327
  %336 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %337 = load ptr, ptr %336, align 8, !tbaa !24
  %338 = getelementptr inbounds i8, ptr %337, i32 1
  store ptr %338, ptr %336, align 8, !tbaa !24
  %339 = load i8, ptr %338, align 1, !tbaa !27
  %340 = call zeroext i8 @hex_value(i8 noundef signext %339)
  store i8 %340, ptr %22, align 1, !tbaa !27
  %341 = zext i8 %340 to i32
  %342 = icmp eq i32 %341, 255
  br i1 %342, label %359, label %343

343:                                              ; preds = %335
  %344 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %345 = load ptr, ptr %344, align 8, !tbaa !24
  %346 = getelementptr inbounds i8, ptr %345, i32 1
  store ptr %346, ptr %344, align 8, !tbaa !24
  %347 = load i8, ptr %346, align 1, !tbaa !27
  %348 = call zeroext i8 @hex_value(i8 noundef signext %347)
  store i8 %348, ptr %23, align 1, !tbaa !27
  %349 = zext i8 %348 to i32
  %350 = icmp eq i32 %349, 255
  br i1 %350, label %359, label %351

351:                                              ; preds = %343
  %352 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %353 = load ptr, ptr %352, align 8, !tbaa !24
  %354 = getelementptr inbounds i8, ptr %353, i32 1
  store ptr %354, ptr %352, align 8, !tbaa !24
  %355 = load i8, ptr %354, align 1, !tbaa !27
  %356 = call zeroext i8 @hex_value(i8 noundef signext %355)
  store i8 %356, ptr %24, align 1, !tbaa !27
  %357 = zext i8 %356 to i32
  %358 = icmp eq i32 %357, 255
  br i1 %358, label %359, label %368

359:                                              ; preds = %351, %343, %335, %327, %320, %313, %305
  %360 = getelementptr inbounds [128 x i8], ptr %10, i64 0, i64 0
  %361 = load i8, ptr %27, align 1, !tbaa !27
  %362 = sext i8 %361 to i32
  %363 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 6
  %364 = load i32, ptr %363, align 8, !tbaa !26
  %365 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 7
  %366 = load i32, ptr %365, align 4, !tbaa !25
  %367 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %360, ptr noundef @.str.1, i32 noundef %362, i32 noundef %364, i32 noundef %366) #6
  store i32 8, ptr %29, align 4
  br label %396

368:                                              ; preds = %351
  %369 = load i8, ptr %21, align 1, !tbaa !27
  %370 = zext i8 %369 to i32
  %371 = shl i32 %370, 4
  %372 = load i8, ptr %22, align 1, !tbaa !27
  %373 = zext i8 %372 to i32
  %374 = or i32 %371, %373
  %375 = trunc i32 %374 to i8
  store i8 %375, ptr %21, align 1, !tbaa !27
  %376 = load i8, ptr %23, align 1, !tbaa !27
  %377 = zext i8 %376 to i32
  %378 = shl i32 %377, 4
  %379 = load i8, ptr %24, align 1, !tbaa !27
  %380 = zext i8 %379 to i32
  %381 = or i32 %378, %380
  %382 = trunc i32 %381 to i8
  store i8 %382, ptr %22, align 1, !tbaa !27
  %383 = load i8, ptr %21, align 1, !tbaa !27
  %384 = zext i8 %383 to i32
  %385 = shl i32 %384, 8
  %386 = load i8, ptr %22, align 1, !tbaa !27
  %387 = zext i8 %386 to i32
  %388 = or i32 %385, %387
  store i32 %388, ptr %28, align 4, !tbaa !28
  %389 = load i32, ptr %20, align 4, !tbaa !28
  %390 = and i32 %389, 1023
  %391 = shl i32 %390, 10
  %392 = add i32 65536, %391
  %393 = load i32, ptr %28, align 4, !tbaa !28
  %394 = and i32 %393, 1023
  %395 = or i32 %392, %394
  store i32 %395, ptr %20, align 4, !tbaa !28
  store i32 0, ptr %29, align 4
  br label %396

396:                                              ; preds = %368, %359
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #6
  %397 = load i32, ptr %29, align 4
  switch i32 %397, label %1514 [
    i32 0, label %398
  ]

398:                                              ; preds = %396
  br label %399

399:                                              ; preds = %398, %281
  %400 = load i32, ptr %20, align 4, !tbaa !28
  %401 = icmp ule i32 %400, 127
  br i1 %401, label %402, label %419

402:                                              ; preds = %399
  br label %403

403:                                              ; preds = %402
  %404 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 4
  %405 = load i32, ptr %404, align 8, !tbaa !23
  %406 = icmp ne i32 %405, 0
  br i1 %406, label %414, label %407

407:                                              ; preds = %403
  %408 = load i32, ptr %20, align 4, !tbaa !28
  %409 = trunc i32 %408 to i8
  %410 = load ptr, ptr %25, align 8, !tbaa !5
  %411 = load i32, ptr %26, align 4, !tbaa !28
  %412 = zext i32 %411 to i64
  %413 = getelementptr inbounds i8, ptr %410, i64 %412
  store i8 %409, ptr %413, align 1, !tbaa !27
  br label %414

414:                                              ; preds = %407, %403
  %415 = load i32, ptr %26, align 4, !tbaa !28
  %416 = add i32 %415, 1
  store i32 %416, ptr %26, align 4, !tbaa !28
  br label %417

417:                                              ; preds = %414
  br label %418

418:                                              ; preds = %417
  br label %552

419:                                              ; preds = %399
  %420 = load i32, ptr %20, align 4, !tbaa !28
  %421 = icmp ule i32 %420, 2047
  br i1 %421, label %422, label %449

422:                                              ; preds = %419
  %423 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 4
  %424 = load i32, ptr %423, align 8, !tbaa !23
  %425 = icmp ne i32 %424, 0
  br i1 %425, label %426, label %429

426:                                              ; preds = %422
  %427 = load i32, ptr %26, align 4, !tbaa !28
  %428 = add i32 %427, 2
  store i32 %428, ptr %26, align 4, !tbaa !28
  br label %448

429:                                              ; preds = %422
  %430 = load i32, ptr %20, align 4, !tbaa !28
  %431 = lshr i32 %430, 6
  %432 = or i32 192, %431
  %433 = trunc i32 %432 to i8
  %434 = load ptr, ptr %25, align 8, !tbaa !5
  %435 = load i32, ptr %26, align 4, !tbaa !28
  %436 = add i32 %435, 1
  store i32 %436, ptr %26, align 4, !tbaa !28
  %437 = zext i32 %435 to i64
  %438 = getelementptr inbounds i8, ptr %434, i64 %437
  store i8 %433, ptr %438, align 1, !tbaa !27
  %439 = load i32, ptr %20, align 4, !tbaa !28
  %440 = and i32 %439, 63
  %441 = or i32 128, %440
  %442 = trunc i32 %441 to i8
  %443 = load ptr, ptr %25, align 8, !tbaa !5
  %444 = load i32, ptr %26, align 4, !tbaa !28
  %445 = add i32 %444, 1
  store i32 %445, ptr %26, align 4, !tbaa !28
  %446 = zext i32 %444 to i64
  %447 = getelementptr inbounds i8, ptr %443, i64 %446
  store i8 %442, ptr %447, align 1, !tbaa !27
  br label %448

448:                                              ; preds = %429, %426
  br label %552

449:                                              ; preds = %419
  %450 = load i32, ptr %20, align 4, !tbaa !28
  %451 = icmp ule i32 %450, 65535
  br i1 %451, label %452, label %489

452:                                              ; preds = %449
  %453 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 4
  %454 = load i32, ptr %453, align 8, !tbaa !23
  %455 = icmp ne i32 %454, 0
  br i1 %455, label %456, label %459

456:                                              ; preds = %452
  %457 = load i32, ptr %26, align 4, !tbaa !28
  %458 = add i32 %457, 3
  store i32 %458, ptr %26, align 4, !tbaa !28
  br label %488

459:                                              ; preds = %452
  %460 = load i32, ptr %20, align 4, !tbaa !28
  %461 = lshr i32 %460, 12
  %462 = or i32 224, %461
  %463 = trunc i32 %462 to i8
  %464 = load ptr, ptr %25, align 8, !tbaa !5
  %465 = load i32, ptr %26, align 4, !tbaa !28
  %466 = add i32 %465, 1
  store i32 %466, ptr %26, align 4, !tbaa !28
  %467 = zext i32 %465 to i64
  %468 = getelementptr inbounds i8, ptr %464, i64 %467
  store i8 %463, ptr %468, align 1, !tbaa !27
  %469 = load i32, ptr %20, align 4, !tbaa !28
  %470 = lshr i32 %469, 6
  %471 = and i32 %470, 63
  %472 = or i32 128, %471
  %473 = trunc i32 %472 to i8
  %474 = load ptr, ptr %25, align 8, !tbaa !5
  %475 = load i32, ptr %26, align 4, !tbaa !28
  %476 = add i32 %475, 1
  store i32 %476, ptr %26, align 4, !tbaa !28
  %477 = zext i32 %475 to i64
  %478 = getelementptr inbounds i8, ptr %474, i64 %477
  store i8 %473, ptr %478, align 1, !tbaa !27
  %479 = load i32, ptr %20, align 4, !tbaa !28
  %480 = and i32 %479, 63
  %481 = or i32 128, %480
  %482 = trunc i32 %481 to i8
  %483 = load ptr, ptr %25, align 8, !tbaa !5
  %484 = load i32, ptr %26, align 4, !tbaa !28
  %485 = add i32 %484, 1
  store i32 %485, ptr %26, align 4, !tbaa !28
  %486 = zext i32 %484 to i64
  %487 = getelementptr inbounds i8, ptr %483, i64 %486
  store i8 %482, ptr %487, align 1, !tbaa !27
  br label %488

488:                                              ; preds = %459, %456
  br label %552

489:                                              ; preds = %449
  %490 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 4
  %491 = load i32, ptr %490, align 8, !tbaa !23
  %492 = icmp ne i32 %491, 0
  br i1 %492, label %493, label %496

493:                                              ; preds = %489
  %494 = load i32, ptr %26, align 4, !tbaa !28
  %495 = add i32 %494, 4
  store i32 %495, ptr %26, align 4, !tbaa !28
  br label %535

496:                                              ; preds = %489
  %497 = load i32, ptr %20, align 4, !tbaa !28
  %498 = lshr i32 %497, 18
  %499 = or i32 240, %498
  %500 = trunc i32 %499 to i8
  %501 = load ptr, ptr %25, align 8, !tbaa !5
  %502 = load i32, ptr %26, align 4, !tbaa !28
  %503 = add i32 %502, 1
  store i32 %503, ptr %26, align 4, !tbaa !28
  %504 = zext i32 %502 to i64
  %505 = getelementptr inbounds i8, ptr %501, i64 %504
  store i8 %500, ptr %505, align 1, !tbaa !27
  %506 = load i32, ptr %20, align 4, !tbaa !28
  %507 = lshr i32 %506, 12
  %508 = and i32 %507, 63
  %509 = or i32 128, %508
  %510 = trunc i32 %509 to i8
  %511 = load ptr, ptr %25, align 8, !tbaa !5
  %512 = load i32, ptr %26, align 4, !tbaa !28
  %513 = add i32 %512, 1
  store i32 %513, ptr %26, align 4, !tbaa !28
  %514 = zext i32 %512 to i64
  %515 = getelementptr inbounds i8, ptr %511, i64 %514
  store i8 %510, ptr %515, align 1, !tbaa !27
  %516 = load i32, ptr %20, align 4, !tbaa !28
  %517 = lshr i32 %516, 6
  %518 = and i32 %517, 63
  %519 = or i32 128, %518
  %520 = trunc i32 %519 to i8
  %521 = load ptr, ptr %25, align 8, !tbaa !5
  %522 = load i32, ptr %26, align 4, !tbaa !28
  %523 = add i32 %522, 1
  store i32 %523, ptr %26, align 4, !tbaa !28
  %524 = zext i32 %522 to i64
  %525 = getelementptr inbounds i8, ptr %521, i64 %524
  store i8 %520, ptr %525, align 1, !tbaa !27
  %526 = load i32, ptr %20, align 4, !tbaa !28
  %527 = and i32 %526, 63
  %528 = or i32 128, %527
  %529 = trunc i32 %528 to i8
  %530 = load ptr, ptr %25, align 8, !tbaa !5
  %531 = load i32, ptr %26, align 4, !tbaa !28
  %532 = add i32 %531, 1
  store i32 %532, ptr %26, align 4, !tbaa !28
  %533 = zext i32 %531 to i64
  %534 = getelementptr inbounds i8, ptr %530, i64 %533
  store i8 %529, ptr %534, align 1, !tbaa !27
  br label %535

535:                                              ; preds = %496, %493
  br label %552

536:                                              ; preds = %152
  br label %537

537:                                              ; preds = %536
  %538 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 4
  %539 = load i32, ptr %538, align 8, !tbaa !23
  %540 = icmp ne i32 %539, 0
  br i1 %540, label %547, label %541

541:                                              ; preds = %537
  %542 = load i8, ptr %27, align 1, !tbaa !27
  %543 = load ptr, ptr %25, align 8, !tbaa !5
  %544 = load i32, ptr %26, align 4, !tbaa !28
  %545 = zext i32 %544 to i64
  %546 = getelementptr inbounds i8, ptr %543, i64 %545
  store i8 %542, ptr %546, align 1, !tbaa !27
  br label %547

547:                                              ; preds = %541, %537
  %548 = load i32, ptr %26, align 4, !tbaa !28
  %549 = add i32 %548, 1
  store i32 %549, ptr %26, align 4, !tbaa !28
  br label %550

550:                                              ; preds = %547
  br label %551

551:                                              ; preds = %550
  br label %552

552:                                              ; preds = %551, %535, %488, %448, %418, %231, %216, %201, %186, %171
  store i32 7, ptr %29, align 4
  br label %1514

553:                                              ; preds = %148
  %554 = load i8, ptr %27, align 1, !tbaa !27
  %555 = sext i8 %554 to i32
  %556 = icmp eq i32 %555, 92
  br i1 %556, label %557, label %560

557:                                              ; preds = %553
  %558 = load i64, ptr %16, align 8, !tbaa !9
  %559 = or i64 %558, 16
  store i64 %559, ptr %16, align 8, !tbaa !9
  store i32 7, ptr %29, align 4
  br label %1514

560:                                              ; preds = %553
  %561 = load i8, ptr %27, align 1, !tbaa !27
  %562 = sext i8 %561 to i32
  %563 = icmp eq i32 %562, 34
  br i1 %563, label %564, label %638

564:                                              ; preds = %560
  %565 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 4
  %566 = load i32, ptr %565, align 8, !tbaa !23
  %567 = icmp ne i32 %566, 0
  br i1 %567, label %573, label %568

568:                                              ; preds = %564
  %569 = load ptr, ptr %25, align 8, !tbaa !5
  %570 = load i32, ptr %26, align 4, !tbaa !28
  %571 = zext i32 %570 to i64
  %572 = getelementptr inbounds i8, ptr %569, i64 %571
  store i8 0, ptr %572, align 1, !tbaa !27
  br label %573

573:                                              ; preds = %568, %564
  %574 = load i64, ptr %16, align 8, !tbaa !9
  %575 = and i64 %574, -33
  store i64 %575, ptr %16, align 8, !tbaa !9
  store ptr null, ptr %25, align 8, !tbaa !5
  %576 = load ptr, ptr %12, align 8, !tbaa !5
  %577 = getelementptr inbounds %struct._json_value, ptr %576, i32 0, i32 1
  %578 = load i32, ptr %577, align 8, !tbaa !29
  switch i32 %578, label %636 [
    i32 5, label %579
    i32 1, label %586
  ]

579:                                              ; preds = %573
  %580 = load i32, ptr %26, align 4, !tbaa !28
  %581 = load ptr, ptr %12, align 8, !tbaa !5
  %582 = getelementptr inbounds %struct._json_value, ptr %581, i32 0, i32 2
  %583 = getelementptr inbounds %struct.anon, ptr %582, i32 0, i32 0
  store i32 %580, ptr %583, align 8, !tbaa !27
  %584 = load i64, ptr %16, align 8, !tbaa !9
  %585 = or i64 %584, 1
  store i64 %585, ptr %16, align 8, !tbaa !9
  br label %637

586:                                              ; preds = %573
  %587 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 4
  %588 = load i32, ptr %587, align 8, !tbaa !23
  %589 = icmp ne i32 %588, 0
  br i1 %589, label %590, label %599

590:                                              ; preds = %586
  %591 = load i32, ptr %26, align 4, !tbaa !28
  %592 = add i32 %591, 1
  %593 = load ptr, ptr %12, align 8, !tbaa !5
  %594 = getelementptr inbounds %struct._json_value, ptr %593, i32 0, i32 2
  %595 = getelementptr inbounds %struct.anon.0, ptr %594, i32 0, i32 1
  %596 = load ptr, ptr %595, align 8, !tbaa !27
  %597 = zext i32 %592 to i64
  %598 = getelementptr inbounds i8, ptr %596, i64 %597
  store ptr %598, ptr %595, align 8, !tbaa !27
  br label %633

599:                                              ; preds = %586
  %600 = load ptr, ptr %12, align 8, !tbaa !5
  %601 = getelementptr inbounds %struct._json_value, ptr %600, i32 0, i32 3
  %602 = load ptr, ptr %601, align 8, !tbaa !27
  %603 = load ptr, ptr %12, align 8, !tbaa !5
  %604 = getelementptr inbounds %struct._json_value, ptr %603, i32 0, i32 2
  %605 = getelementptr inbounds %struct.anon.0, ptr %604, i32 0, i32 1
  %606 = load ptr, ptr %605, align 8, !tbaa !27
  %607 = load ptr, ptr %12, align 8, !tbaa !5
  %608 = getelementptr inbounds %struct._json_value, ptr %607, i32 0, i32 2
  %609 = getelementptr inbounds %struct.anon.0, ptr %608, i32 0, i32 0
  %610 = load i32, ptr %609, align 8, !tbaa !27
  %611 = zext i32 %610 to i64
  %612 = getelementptr inbounds %struct._json_object_entry, ptr %606, i64 %611
  %613 = getelementptr inbounds %struct._json_object_entry, ptr %612, i32 0, i32 0
  store ptr %602, ptr %613, align 8, !tbaa !31
  %614 = load i32, ptr %26, align 4, !tbaa !28
  %615 = load ptr, ptr %12, align 8, !tbaa !5
  %616 = getelementptr inbounds %struct._json_value, ptr %615, i32 0, i32 2
  %617 = getelementptr inbounds %struct.anon.0, ptr %616, i32 0, i32 1
  %618 = load ptr, ptr %617, align 8, !tbaa !27
  %619 = load ptr, ptr %12, align 8, !tbaa !5
  %620 = getelementptr inbounds %struct._json_value, ptr %619, i32 0, i32 2
  %621 = getelementptr inbounds %struct.anon.0, ptr %620, i32 0, i32 0
  %622 = load i32, ptr %621, align 8, !tbaa !27
  %623 = zext i32 %622 to i64
  %624 = getelementptr inbounds %struct._json_object_entry, ptr %618, i64 %623
  %625 = getelementptr inbounds %struct._json_object_entry, ptr %624, i32 0, i32 1
  store i32 %614, ptr %625, align 8, !tbaa !33
  %626 = load i32, ptr %26, align 4, !tbaa !28
  %627 = add i32 %626, 1
  %628 = load ptr, ptr %12, align 8, !tbaa !5
  %629 = getelementptr inbounds %struct._json_value, ptr %628, i32 0, i32 3
  %630 = load ptr, ptr %629, align 8, !tbaa !27
  %631 = zext i32 %627 to i64
  %632 = getelementptr inbounds i8, ptr %630, i64 %631
  store ptr %632, ptr %629, align 8, !tbaa !27
  br label %633

633:                                              ; preds = %599, %590
  %634 = load i64, ptr %16, align 8, !tbaa !9
  %635 = or i64 %634, 72
  store i64 %635, ptr %16, align 8, !tbaa !9
  store i32 7, ptr %29, align 4
  br label %1514

636:                                              ; preds = %573
  br label %637

637:                                              ; preds = %636, %579
  br label %654

638:                                              ; preds = %560
  br label %639

639:                                              ; preds = %638
  %640 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 4
  %641 = load i32, ptr %640, align 8, !tbaa !23
  %642 = icmp ne i32 %641, 0
  br i1 %642, label %649, label %643

643:                                              ; preds = %639
  %644 = load i8, ptr %27, align 1, !tbaa !27
  %645 = load ptr, ptr %25, align 8, !tbaa !5
  %646 = load i32, ptr %26, align 4, !tbaa !28
  %647 = zext i32 %646 to i64
  %648 = getelementptr inbounds i8, ptr %645, i64 %647
  store i8 %644, ptr %648, align 1, !tbaa !27
  br label %649

649:                                              ; preds = %643, %639
  %650 = load i32, ptr %26, align 4, !tbaa !28
  %651 = add i32 %650, 1
  store i32 %651, ptr %26, align 4, !tbaa !28
  br label %652

652:                                              ; preds = %649
  br label %653

653:                                              ; preds = %652
  store i32 7, ptr %29, align 4
  br label %1514

654:                                              ; preds = %637
  br label %655

655:                                              ; preds = %654, %126
  %656 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 3
  %657 = getelementptr inbounds %struct.json_settings, ptr %656, i32 0, i32 1
  %658 = load i32, ptr %657, align 8, !tbaa !20
  %659 = and i32 %658, 1
  %660 = icmp ne i32 %659, 0
  br i1 %660, label %661, label %781

661:                                              ; preds = %655
  %662 = load i64, ptr %16, align 8, !tbaa !9
  %663 = and i64 %662, 24576
  %664 = icmp ne i64 %663, 0
  br i1 %664, label %665, label %726

665:                                              ; preds = %661
  %666 = load i64, ptr %16, align 8, !tbaa !9
  %667 = and i64 %666, 8192
  %668 = icmp ne i64 %667, 0
  br i1 %668, label %669, label %687

669:                                              ; preds = %665
  %670 = load i8, ptr %27, align 1, !tbaa !27
  %671 = sext i8 %670 to i32
  %672 = icmp eq i32 %671, 13
  br i1 %672, label %680, label %673

673:                                              ; preds = %669
  %674 = load i8, ptr %27, align 1, !tbaa !27
  %675 = sext i8 %674 to i32
  %676 = icmp eq i32 %675, 10
  br i1 %676, label %680, label %677

677:                                              ; preds = %673
  %678 = load i8, ptr %27, align 1, !tbaa !27
  %679 = icmp ne i8 %678, 0
  br i1 %679, label %686, label %680

680:                                              ; preds = %677, %673, %669
  %681 = load i64, ptr %16, align 8, !tbaa !9
  %682 = and i64 %681, -8193
  store i64 %682, ptr %16, align 8, !tbaa !9
  %683 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %684 = load ptr, ptr %683, align 8, !tbaa !24
  %685 = getelementptr inbounds i8, ptr %684, i32 -1
  store ptr %685, ptr %683, align 8, !tbaa !24
  br label %686

686:                                              ; preds = %680, %677
  store i32 7, ptr %29, align 4
  br label %1514

687:                                              ; preds = %665
  %688 = load i64, ptr %16, align 8, !tbaa !9
  %689 = and i64 %688, 16384
  %690 = icmp ne i64 %689, 0
  br i1 %690, label %691, label %725

691:                                              ; preds = %687
  %692 = load i8, ptr %27, align 1, !tbaa !27
  %693 = icmp ne i8 %692, 0
  br i1 %693, label %701, label %694

694:                                              ; preds = %691
  %695 = getelementptr inbounds [128 x i8], ptr %10, i64 0, i64 0
  %696 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 6
  %697 = load i32, ptr %696, align 8, !tbaa !26
  %698 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 7
  %699 = load i32, ptr %698, align 4, !tbaa !25
  %700 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %695, ptr noundef @.str.2, i32 noundef %697, i32 noundef %699) #6
  store i32 8, ptr %29, align 4
  br label %1514

701:                                              ; preds = %691
  %702 = load i8, ptr %27, align 1, !tbaa !27
  %703 = sext i8 %702 to i32
  %704 = icmp eq i32 %703, 42
  br i1 %704, label %705, label %724

705:                                              ; preds = %701
  %706 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %707 = load ptr, ptr %706, align 8, !tbaa !24
  %708 = load ptr, ptr %11, align 8, !tbaa !5
  %709 = getelementptr inbounds i8, ptr %708, i64 -1
  %710 = icmp ult ptr %707, %709
  br i1 %710, label %711, label %724

711:                                              ; preds = %705
  %712 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %713 = load ptr, ptr %712, align 8, !tbaa !24
  %714 = getelementptr inbounds i8, ptr %713, i64 1
  %715 = load i8, ptr %714, align 1, !tbaa !27
  %716 = sext i8 %715 to i32
  %717 = icmp eq i32 %716, 47
  br i1 %717, label %718, label %724

718:                                              ; preds = %711
  %719 = load i64, ptr %16, align 8, !tbaa !9
  %720 = and i64 %719, -16385
  store i64 %720, ptr %16, align 8, !tbaa !9
  %721 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %722 = load ptr, ptr %721, align 8, !tbaa !24
  %723 = getelementptr inbounds i8, ptr %722, i32 1
  store ptr %723, ptr %721, align 8, !tbaa !24
  br label %724

724:                                              ; preds = %718, %711, %705, %701
  store i32 7, ptr %29, align 4
  br label %1514

725:                                              ; preds = %687
  br label %780

726:                                              ; preds = %661
  %727 = load i8, ptr %27, align 1, !tbaa !27
  %728 = sext i8 %727 to i32
  %729 = icmp eq i32 %728, 47
  br i1 %729, label %730, label %779

730:                                              ; preds = %726
  %731 = load i64, ptr %16, align 8, !tbaa !9
  %732 = and i64 %731, 136
  %733 = icmp ne i64 %732, 0
  br i1 %733, label %746, label %734

734:                                              ; preds = %730
  %735 = load ptr, ptr %12, align 8, !tbaa !5
  %736 = getelementptr inbounds %struct._json_value, ptr %735, i32 0, i32 1
  %737 = load i32, ptr %736, align 8, !tbaa !29
  %738 = icmp ne i32 %737, 1
  br i1 %738, label %739, label %746

739:                                              ; preds = %734
  %740 = getelementptr inbounds [128 x i8], ptr %10, i64 0, i64 0
  %741 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 6
  %742 = load i32, ptr %741, align 8, !tbaa !26
  %743 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 7
  %744 = load i32, ptr %743, align 4, !tbaa !25
  %745 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %740, ptr noundef @.str.3, i32 noundef %742, i32 noundef %744) #6
  store i32 8, ptr %29, align 4
  br label %1514

746:                                              ; preds = %734, %730
  %747 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %748 = load ptr, ptr %747, align 8, !tbaa !24
  %749 = getelementptr inbounds i8, ptr %748, i32 1
  store ptr %749, ptr %747, align 8, !tbaa !24
  %750 = load ptr, ptr %11, align 8, !tbaa !5
  %751 = icmp eq ptr %749, %750
  br i1 %751, label %752, label %759

752:                                              ; preds = %746
  %753 = getelementptr inbounds [128 x i8], ptr %10, i64 0, i64 0
  %754 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 6
  %755 = load i32, ptr %754, align 8, !tbaa !26
  %756 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 7
  %757 = load i32, ptr %756, align 4, !tbaa !25
  %758 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %753, ptr noundef @.str.4, i32 noundef %755, i32 noundef %757) #6
  store i32 8, ptr %29, align 4
  br label %1514

759:                                              ; preds = %746
  %760 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %761 = load ptr, ptr %760, align 8, !tbaa !24
  %762 = load i8, ptr %761, align 1, !tbaa !27
  store i8 %762, ptr %27, align 1, !tbaa !27
  %763 = sext i8 %762 to i32
  switch i32 %763, label %770 [
    i32 47, label %764
    i32 42, label %767
  ]

764:                                              ; preds = %759
  %765 = load i64, ptr %16, align 8, !tbaa !9
  %766 = or i64 %765, 8192
  store i64 %766, ptr %16, align 8, !tbaa !9
  store i32 7, ptr %29, align 4
  br label %1514

767:                                              ; preds = %759
  %768 = load i64, ptr %16, align 8, !tbaa !9
  %769 = or i64 %768, 16384
  store i64 %769, ptr %16, align 8, !tbaa !9
  store i32 7, ptr %29, align 4
  br label %1514

770:                                              ; preds = %759
  %771 = getelementptr inbounds [128 x i8], ptr %10, i64 0, i64 0
  %772 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 6
  %773 = load i32, ptr %772, align 8, !tbaa !26
  %774 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 7
  %775 = load i32, ptr %774, align 4, !tbaa !25
  %776 = load i8, ptr %27, align 1, !tbaa !27
  %777 = sext i8 %776 to i32
  %778 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %771, ptr noundef @.str.5, i32 noundef %773, i32 noundef %775, i32 noundef %777) #6
  store i32 8, ptr %29, align 4
  br label %1514

779:                                              ; preds = %726
  br label %780

780:                                              ; preds = %779, %725
  br label %781

781:                                              ; preds = %780, %655
  %782 = load i64, ptr %16, align 8, !tbaa !9
  %783 = and i64 %782, 128
  %784 = icmp ne i64 %783, 0
  br i1 %784, label %785, label %807

785:                                              ; preds = %781
  %786 = load i8, ptr %27, align 1, !tbaa !27
  %787 = icmp ne i8 %786, 0
  br i1 %787, label %789, label %788

788:                                              ; preds = %785
  store i32 5, ptr %29, align 4
  br label %1514

789:                                              ; preds = %785
  %790 = load i8, ptr %27, align 1, !tbaa !27
  %791 = sext i8 %790 to i32
  switch i32 %791, label %798 [
    i32 10, label %792
    i32 32, label %797
    i32 9, label %797
    i32 13, label %797
  ]

792:                                              ; preds = %789
  %793 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 6
  %794 = load i32, ptr %793, align 8, !tbaa !26
  %795 = add i32 %794, 1
  store i32 %795, ptr %793, align 8, !tbaa !26
  %796 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 7
  store i32 0, ptr %796, align 4, !tbaa !25
  br label %797

797:                                              ; preds = %792, %789, %789, %789
  store i32 7, ptr %29, align 4
  br label %1514

798:                                              ; preds = %789
  %799 = getelementptr inbounds [128 x i8], ptr %10, i64 0, i64 0
  %800 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 6
  %801 = load i32, ptr %800, align 8, !tbaa !26
  %802 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 7
  %803 = load i32, ptr %802, align 4, !tbaa !25
  %804 = load i8, ptr %27, align 1, !tbaa !27
  %805 = sext i8 %804 to i32
  %806 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %799, ptr noundef @.str.6, i32 noundef %801, i32 noundef %803, i32 noundef %805) #6
  store i32 8, ptr %29, align 4
  br label %1514

807:                                              ; preds = %781
  %808 = load i64, ptr %16, align 8, !tbaa !9
  %809 = and i64 %808, 8
  %810 = icmp ne i64 %809, 0
  br i1 %810, label %811, label %1122

811:                                              ; preds = %807
  %812 = load i8, ptr %27, align 1, !tbaa !27
  %813 = sext i8 %812 to i32
  switch i32 %813, label %840 [
    i32 10, label %814
    i32 32, label %819
    i32 9, label %819
    i32 13, label %819
    i32 93, label %820
  ]

814:                                              ; preds = %811
  %815 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 6
  %816 = load i32, ptr %815, align 8, !tbaa !26
  %817 = add i32 %816, 1
  store i32 %817, ptr %815, align 8, !tbaa !26
  %818 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 7
  store i32 0, ptr %818, align 4, !tbaa !25
  br label %819

819:                                              ; preds = %814, %811, %811, %811
  store i32 7, ptr %29, align 4
  br label %1514

820:                                              ; preds = %811
  %821 = load ptr, ptr %12, align 8, !tbaa !5
  %822 = icmp ne ptr %821, null
  br i1 %822, label %823, label %832

823:                                              ; preds = %820
  %824 = load ptr, ptr %12, align 8, !tbaa !5
  %825 = getelementptr inbounds %struct._json_value, ptr %824, i32 0, i32 1
  %826 = load i32, ptr %825, align 8, !tbaa !29
  %827 = icmp eq i32 %826, 2
  br i1 %827, label %828, label %832

828:                                              ; preds = %823
  %829 = load i64, ptr %16, align 8, !tbaa !9
  %830 = and i64 %829, -13
  %831 = or i64 %830, 1
  store i64 %831, ptr %16, align 8, !tbaa !9
  br label %839

832:                                              ; preds = %823, %820
  %833 = getelementptr inbounds [128 x i8], ptr %10, i64 0, i64 0
  %834 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 6
  %835 = load i32, ptr %834, align 8, !tbaa !26
  %836 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 7
  %837 = load i32, ptr %836, align 4, !tbaa !25
  %838 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %833, ptr noundef @.str.7, i32 noundef %835, i32 noundef %837) #6
  store i32 8, ptr %29, align 4
  br label %1514

839:                                              ; preds = %828
  br label %1121

840:                                              ; preds = %811
  %841 = load i64, ptr %16, align 8, !tbaa !9
  %842 = and i64 %841, 4
  %843 = icmp ne i64 %842, 0
  br i1 %843, label %844, label %860

844:                                              ; preds = %840
  %845 = load i8, ptr %27, align 1, !tbaa !27
  %846 = sext i8 %845 to i32
  %847 = icmp eq i32 %846, 44
  br i1 %847, label %848, label %851

848:                                              ; preds = %844
  %849 = load i64, ptr %16, align 8, !tbaa !9
  %850 = and i64 %849, -5
  store i64 %850, ptr %16, align 8, !tbaa !9
  store i32 7, ptr %29, align 4
  br label %1514

851:                                              ; preds = %844
  %852 = getelementptr inbounds [128 x i8], ptr %10, i64 0, i64 0
  %853 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 6
  %854 = load i32, ptr %853, align 8, !tbaa !26
  %855 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 7
  %856 = load i32, ptr %855, align 4, !tbaa !25
  %857 = load i8, ptr %27, align 1, !tbaa !27
  %858 = sext i8 %857 to i32
  %859 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %852, ptr noundef @.str.8, i32 noundef %854, i32 noundef %856, i32 noundef %858) #6
  store i32 8, ptr %29, align 4
  br label %1514

860:                                              ; preds = %840
  %861 = load i64, ptr %16, align 8, !tbaa !9
  %862 = and i64 %861, 64
  %863 = icmp ne i64 %862, 0
  br i1 %863, label %864, label %880

864:                                              ; preds = %860
  %865 = load i8, ptr %27, align 1, !tbaa !27
  %866 = sext i8 %865 to i32
  %867 = icmp eq i32 %866, 58
  br i1 %867, label %868, label %871

868:                                              ; preds = %864
  %869 = load i64, ptr %16, align 8, !tbaa !9
  %870 = and i64 %869, -65
  store i64 %870, ptr %16, align 8, !tbaa !9
  store i32 7, ptr %29, align 4
  br label %1514

871:                                              ; preds = %864
  %872 = getelementptr inbounds [128 x i8], ptr %10, i64 0, i64 0
  %873 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 6
  %874 = load i32, ptr %873, align 8, !tbaa !26
  %875 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 7
  %876 = load i32, ptr %875, align 4, !tbaa !25
  %877 = load i8, ptr %27, align 1, !tbaa !27
  %878 = sext i8 %877 to i32
  %879 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %872, ptr noundef @.str.9, i32 noundef %874, i32 noundef %876, i32 noundef %878) #6
  store i32 8, ptr %29, align 4
  br label %1514

880:                                              ; preds = %860
  %881 = load i64, ptr %16, align 8, !tbaa !9
  %882 = and i64 %881, -9
  store i64 %882, ptr %16, align 8, !tbaa !9
  %883 = load i8, ptr %27, align 1, !tbaa !27
  %884 = sext i8 %883 to i32
  switch i32 %884, label %1028 [
    i32 123, label %885
    i32 91, label %890
    i32 34, label %897
    i32 116, label %908
    i32 102, label %947
    i32 110, label %991
  ]

885:                                              ; preds = %880
  %886 = call i32 @new_value(ptr noundef %15, ptr noundef %12, ptr noundef %13, ptr noundef %14, i32 noundef 1)
  %887 = icmp ne i32 %886, 0
  br i1 %887, label %889, label %888

888:                                              ; preds = %885
  store i32 32, ptr %29, align 4
  br label %1514

889:                                              ; preds = %885
  store i32 7, ptr %29, align 4
  br label %1514

890:                                              ; preds = %880
  %891 = call i32 @new_value(ptr noundef %15, ptr noundef %12, ptr noundef %13, ptr noundef %14, i32 noundef 2)
  %892 = icmp ne i32 %891, 0
  br i1 %892, label %894, label %893

893:                                              ; preds = %890
  store i32 32, ptr %29, align 4
  br label %1514

894:                                              ; preds = %890
  %895 = load i64, ptr %16, align 8, !tbaa !9
  %896 = or i64 %895, 8
  store i64 %896, ptr %16, align 8, !tbaa !9
  store i32 7, ptr %29, align 4
  br label %1514

897:                                              ; preds = %880
  %898 = call i32 @new_value(ptr noundef %15, ptr noundef %12, ptr noundef %13, ptr noundef %14, i32 noundef 5)
  %899 = icmp ne i32 %898, 0
  br i1 %899, label %901, label %900

900:                                              ; preds = %897
  store i32 32, ptr %29, align 4
  br label %1514

901:                                              ; preds = %897
  %902 = load i64, ptr %16, align 8, !tbaa !9
  %903 = or i64 %902, 32
  store i64 %903, ptr %16, align 8, !tbaa !9
  %904 = load ptr, ptr %12, align 8, !tbaa !5
  %905 = getelementptr inbounds %struct._json_value, ptr %904, i32 0, i32 2
  %906 = getelementptr inbounds %struct.anon, ptr %905, i32 0, i32 1
  %907 = load ptr, ptr %906, align 8, !tbaa !27
  store ptr %907, ptr %25, align 8, !tbaa !5
  store i32 0, ptr %26, align 4, !tbaa !28
  store i32 7, ptr %29, align 4
  br label %1514

908:                                              ; preds = %880
  %909 = load ptr, ptr %11, align 8, !tbaa !5
  %910 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %911 = load ptr, ptr %910, align 8, !tbaa !24
  %912 = ptrtoint ptr %909 to i64
  %913 = ptrtoint ptr %911 to i64
  %914 = sub i64 %912, %913
  %915 = icmp slt i64 %914, 3
  br i1 %915, label %937, label %916

916:                                              ; preds = %908
  %917 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %918 = load ptr, ptr %917, align 8, !tbaa !24
  %919 = getelementptr inbounds i8, ptr %918, i32 1
  store ptr %919, ptr %917, align 8, !tbaa !24
  %920 = load i8, ptr %919, align 1, !tbaa !27
  %921 = sext i8 %920 to i32
  %922 = icmp ne i32 %921, 114
  br i1 %922, label %937, label %923

923:                                              ; preds = %916
  %924 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %925 = load ptr, ptr %924, align 8, !tbaa !24
  %926 = getelementptr inbounds i8, ptr %925, i32 1
  store ptr %926, ptr %924, align 8, !tbaa !24
  %927 = load i8, ptr %926, align 1, !tbaa !27
  %928 = sext i8 %927 to i32
  %929 = icmp ne i32 %928, 117
  br i1 %929, label %937, label %930

930:                                              ; preds = %923
  %931 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %932 = load ptr, ptr %931, align 8, !tbaa !24
  %933 = getelementptr inbounds i8, ptr %932, i32 1
  store ptr %933, ptr %931, align 8, !tbaa !24
  %934 = load i8, ptr %933, align 1, !tbaa !27
  %935 = sext i8 %934 to i32
  %936 = icmp ne i32 %935, 101
  br i1 %936, label %937, label %938

937:                                              ; preds = %930, %923, %916, %908
  store i32 33, ptr %29, align 4
  br label %1514

938:                                              ; preds = %930
  %939 = call i32 @new_value(ptr noundef %15, ptr noundef %12, ptr noundef %13, ptr noundef %14, i32 noundef 6)
  %940 = icmp ne i32 %939, 0
  br i1 %940, label %942, label %941

941:                                              ; preds = %938
  store i32 32, ptr %29, align 4
  br label %1514

942:                                              ; preds = %938
  %943 = load ptr, ptr %12, align 8, !tbaa !5
  %944 = getelementptr inbounds %struct._json_value, ptr %943, i32 0, i32 2
  store i32 1, ptr %944, align 8, !tbaa !27
  %945 = load i64, ptr %16, align 8, !tbaa !9
  %946 = or i64 %945, 1
  store i64 %946, ptr %16, align 8, !tbaa !9
  br label %1120

947:                                              ; preds = %880
  %948 = load ptr, ptr %11, align 8, !tbaa !5
  %949 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %950 = load ptr, ptr %949, align 8, !tbaa !24
  %951 = ptrtoint ptr %948 to i64
  %952 = ptrtoint ptr %950 to i64
  %953 = sub i64 %951, %952
  %954 = icmp slt i64 %953, 4
  br i1 %954, label %983, label %955

955:                                              ; preds = %947
  %956 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %957 = load ptr, ptr %956, align 8, !tbaa !24
  %958 = getelementptr inbounds i8, ptr %957, i32 1
  store ptr %958, ptr %956, align 8, !tbaa !24
  %959 = load i8, ptr %958, align 1, !tbaa !27
  %960 = sext i8 %959 to i32
  %961 = icmp ne i32 %960, 97
  br i1 %961, label %983, label %962

962:                                              ; preds = %955
  %963 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %964 = load ptr, ptr %963, align 8, !tbaa !24
  %965 = getelementptr inbounds i8, ptr %964, i32 1
  store ptr %965, ptr %963, align 8, !tbaa !24
  %966 = load i8, ptr %965, align 1, !tbaa !27
  %967 = sext i8 %966 to i32
  %968 = icmp ne i32 %967, 108
  br i1 %968, label %983, label %969

969:                                              ; preds = %962
  %970 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %971 = load ptr, ptr %970, align 8, !tbaa !24
  %972 = getelementptr inbounds i8, ptr %971, i32 1
  store ptr %972, ptr %970, align 8, !tbaa !24
  %973 = load i8, ptr %972, align 1, !tbaa !27
  %974 = sext i8 %973 to i32
  %975 = icmp ne i32 %974, 115
  br i1 %975, label %983, label %976

976:                                              ; preds = %969
  %977 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %978 = load ptr, ptr %977, align 8, !tbaa !24
  %979 = getelementptr inbounds i8, ptr %978, i32 1
  store ptr %979, ptr %977, align 8, !tbaa !24
  %980 = load i8, ptr %979, align 1, !tbaa !27
  %981 = sext i8 %980 to i32
  %982 = icmp ne i32 %981, 101
  br i1 %982, label %983, label %984

983:                                              ; preds = %976, %969, %962, %955, %947
  store i32 33, ptr %29, align 4
  br label %1514

984:                                              ; preds = %976
  %985 = call i32 @new_value(ptr noundef %15, ptr noundef %12, ptr noundef %13, ptr noundef %14, i32 noundef 6)
  %986 = icmp ne i32 %985, 0
  br i1 %986, label %988, label %987

987:                                              ; preds = %984
  store i32 32, ptr %29, align 4
  br label %1514

988:                                              ; preds = %984
  %989 = load i64, ptr %16, align 8, !tbaa !9
  %990 = or i64 %989, 1
  store i64 %990, ptr %16, align 8, !tbaa !9
  br label %1120

991:                                              ; preds = %880
  %992 = load ptr, ptr %11, align 8, !tbaa !5
  %993 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %994 = load ptr, ptr %993, align 8, !tbaa !24
  %995 = ptrtoint ptr %992 to i64
  %996 = ptrtoint ptr %994 to i64
  %997 = sub i64 %995, %996
  %998 = icmp slt i64 %997, 3
  br i1 %998, label %1020, label %999

999:                                              ; preds = %991
  %1000 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %1001 = load ptr, ptr %1000, align 8, !tbaa !24
  %1002 = getelementptr inbounds i8, ptr %1001, i32 1
  store ptr %1002, ptr %1000, align 8, !tbaa !24
  %1003 = load i8, ptr %1002, align 1, !tbaa !27
  %1004 = sext i8 %1003 to i32
  %1005 = icmp ne i32 %1004, 117
  br i1 %1005, label %1020, label %1006

1006:                                             ; preds = %999
  %1007 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %1008 = load ptr, ptr %1007, align 8, !tbaa !24
  %1009 = getelementptr inbounds i8, ptr %1008, i32 1
  store ptr %1009, ptr %1007, align 8, !tbaa !24
  %1010 = load i8, ptr %1009, align 1, !tbaa !27
  %1011 = sext i8 %1010 to i32
  %1012 = icmp ne i32 %1011, 108
  br i1 %1012, label %1020, label %1013

1013:                                             ; preds = %1006
  %1014 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %1015 = load ptr, ptr %1014, align 8, !tbaa !24
  %1016 = getelementptr inbounds i8, ptr %1015, i32 1
  store ptr %1016, ptr %1014, align 8, !tbaa !24
  %1017 = load i8, ptr %1016, align 1, !tbaa !27
  %1018 = sext i8 %1017 to i32
  %1019 = icmp ne i32 %1018, 108
  br i1 %1019, label %1020, label %1021

1020:                                             ; preds = %1013, %1006, %999, %991
  store i32 33, ptr %29, align 4
  br label %1514

1021:                                             ; preds = %1013
  %1022 = call i32 @new_value(ptr noundef %15, ptr noundef %12, ptr noundef %13, ptr noundef %14, i32 noundef 7)
  %1023 = icmp ne i32 %1022, 0
  br i1 %1023, label %1025, label %1024

1024:                                             ; preds = %1021
  store i32 32, ptr %29, align 4
  br label %1514

1025:                                             ; preds = %1021
  %1026 = load i64, ptr %16, align 8, !tbaa !9
  %1027 = or i64 %1026, 1
  store i64 %1027, ptr %16, align 8, !tbaa !9
  br label %1120

1028:                                             ; preds = %880
  %1029 = call ptr @__ctype_b_loc() #7
  %1030 = load ptr, ptr %1029, align 8, !tbaa !5
  %1031 = load i8, ptr %27, align 1, !tbaa !27
  %1032 = sext i8 %1031 to i32
  %1033 = sext i32 %1032 to i64
  %1034 = getelementptr inbounds i16, ptr %1030, i64 %1033
  %1035 = load i16, ptr %1034, align 2, !tbaa !34
  %1036 = zext i16 %1035 to i32
  %1037 = and i32 %1036, 2048
  %1038 = icmp ne i32 %1037, 0
  br i1 %1038, label %1043, label %1039

1039:                                             ; preds = %1028
  %1040 = load i8, ptr %27, align 1, !tbaa !27
  %1041 = sext i8 %1040 to i32
  %1042 = icmp eq i32 %1041, 45
  br i1 %1042, label %1043, label %1111

1043:                                             ; preds = %1039, %1028
  %1044 = call i32 @new_value(ptr noundef %15, ptr noundef %12, ptr noundef %13, ptr noundef %14, i32 noundef 3)
  %1045 = icmp ne i32 %1044, 0
  br i1 %1045, label %1047, label %1046

1046:                                             ; preds = %1043
  store i32 32, ptr %29, align 4
  br label %1514

1047:                                             ; preds = %1043
  %1048 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 4
  %1049 = load i32, ptr %1048, align 8, !tbaa !23
  %1050 = icmp ne i32 %1049, 0
  br i1 %1050, label %1099, label %1051

1051:                                             ; preds = %1047
  br label %1052

1052:                                             ; preds = %1092, %1051
  %1053 = call ptr @__ctype_b_loc() #7
  %1054 = load ptr, ptr %1053, align 8, !tbaa !5
  %1055 = load i8, ptr %27, align 1, !tbaa !27
  %1056 = sext i8 %1055 to i32
  %1057 = sext i32 %1056 to i64
  %1058 = getelementptr inbounds i16, ptr %1054, i64 %1057
  %1059 = load i16, ptr %1058, align 2, !tbaa !34
  %1060 = zext i16 %1059 to i32
  %1061 = and i32 %1060, 2048
  %1062 = icmp ne i32 %1061, 0
  br i1 %1062, label %1083, label %1063

1063:                                             ; preds = %1052
  %1064 = load i8, ptr %27, align 1, !tbaa !27
  %1065 = sext i8 %1064 to i32
  %1066 = icmp eq i32 %1065, 43
  br i1 %1066, label %1083, label %1067

1067:                                             ; preds = %1063
  %1068 = load i8, ptr %27, align 1, !tbaa !27
  %1069 = sext i8 %1068 to i32
  %1070 = icmp eq i32 %1069, 45
  br i1 %1070, label %1083, label %1071

1071:                                             ; preds = %1067
  %1072 = load i8, ptr %27, align 1, !tbaa !27
  %1073 = sext i8 %1072 to i32
  %1074 = icmp eq i32 %1073, 101
  br i1 %1074, label %1083, label %1075

1075:                                             ; preds = %1071
  %1076 = load i8, ptr %27, align 1, !tbaa !27
  %1077 = sext i8 %1076 to i32
  %1078 = icmp eq i32 %1077, 69
  br i1 %1078, label %1083, label %1079

1079:                                             ; preds = %1075
  %1080 = load i8, ptr %27, align 1, !tbaa !27
  %1081 = sext i8 %1080 to i32
  %1082 = icmp eq i32 %1081, 46
  br label %1083

1083:                                             ; preds = %1079, %1075, %1071, %1067, %1063, %1052
  %1084 = phi i1 [ true, %1075 ], [ true, %1071 ], [ true, %1067 ], [ true, %1063 ], [ true, %1052 ], [ %1082, %1079 ]
  br i1 %1084, label %1085, label %1096

1085:                                             ; preds = %1083
  %1086 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %1087 = load ptr, ptr %1086, align 8, !tbaa !24
  %1088 = getelementptr inbounds i8, ptr %1087, i32 1
  store ptr %1088, ptr %1086, align 8, !tbaa !24
  %1089 = load ptr, ptr %11, align 8, !tbaa !5
  %1090 = icmp eq ptr %1088, %1089
  br i1 %1090, label %1091, label %1092

1091:                                             ; preds = %1085
  store i8 0, ptr %27, align 1, !tbaa !27
  br label %1096

1092:                                             ; preds = %1085
  %1093 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %1094 = load ptr, ptr %1093, align 8, !tbaa !24
  %1095 = load i8, ptr %1094, align 1, !tbaa !27
  store i8 %1095, ptr %27, align 1, !tbaa !27
  br label %1052, !llvm.loop !36

1096:                                             ; preds = %1091, %1083
  %1097 = load i64, ptr %16, align 8, !tbaa !9
  %1098 = or i64 %1097, 3
  store i64 %1098, ptr %16, align 8, !tbaa !9
  br label %1120

1099:                                             ; preds = %1047
  %1100 = load i64, ptr %16, align 8, !tbaa !9
  %1101 = and i64 %1100, -7937
  store i64 %1101, ptr %16, align 8, !tbaa !9
  store i64 0, ptr %17, align 8, !tbaa !9
  store i64 0, ptr %19, align 8, !tbaa !9
  store i64 0, ptr %18, align 8, !tbaa !9
  %1102 = load i8, ptr %27, align 1, !tbaa !27
  %1103 = sext i8 %1102 to i32
  %1104 = icmp ne i32 %1103, 45
  br i1 %1104, label %1105, label %1108

1105:                                             ; preds = %1099
  %1106 = load i64, ptr %16, align 8, !tbaa !9
  %1107 = or i64 %1106, 2
  store i64 %1107, ptr %16, align 8, !tbaa !9
  br label %1120

1108:                                             ; preds = %1099
  %1109 = load i64, ptr %16, align 8, !tbaa !9
  %1110 = or i64 %1109, 256
  store i64 %1110, ptr %16, align 8, !tbaa !9
  store i32 7, ptr %29, align 4
  br label %1514

1111:                                             ; preds = %1039
  %1112 = getelementptr inbounds [128 x i8], ptr %10, i64 0, i64 0
  %1113 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 6
  %1114 = load i32, ptr %1113, align 8, !tbaa !26
  %1115 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 7
  %1116 = load i32, ptr %1115, align 4, !tbaa !25
  %1117 = load i8, ptr %27, align 1, !tbaa !27
  %1118 = sext i8 %1117 to i32
  %1119 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %1112, ptr noundef @.str.10, i32 noundef %1114, i32 noundef %1116, i32 noundef %1118) #6
  store i32 8, ptr %29, align 4
  br label %1514

1120:                                             ; preds = %1105, %1096, %1025, %988, %942
  br label %1121

1121:                                             ; preds = %1120, %839
  br label %1424

1122:                                             ; preds = %807
  %1123 = load ptr, ptr %12, align 8, !tbaa !5
  %1124 = getelementptr inbounds %struct._json_value, ptr %1123, i32 0, i32 1
  %1125 = load i32, ptr %1124, align 8, !tbaa !29
  switch i32 %1125, label %1422 [
    i32 1, label %1126
    i32 3, label %1174
    i32 4, label %1174
  ]

1126:                                             ; preds = %1122
  %1127 = load i8, ptr %27, align 1, !tbaa !27
  %1128 = sext i8 %1127 to i32
  switch i32 %1128, label %1164 [
    i32 10, label %1129
    i32 32, label %1134
    i32 9, label %1134
    i32 13, label %1134
    i32 34, label %1135
    i32 125, label %1152
    i32 44, label %1156
  ]

1129:                                             ; preds = %1126
  %1130 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 6
  %1131 = load i32, ptr %1130, align 8, !tbaa !26
  %1132 = add i32 %1131, 1
  store i32 %1132, ptr %1130, align 8, !tbaa !26
  %1133 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 7
  store i32 0, ptr %1133, align 4, !tbaa !25
  br label %1134

1134:                                             ; preds = %1129, %1126, %1126, %1126
  store i32 7, ptr %29, align 4
  br label %1514

1135:                                             ; preds = %1126
  %1136 = load i64, ptr %16, align 8, !tbaa !9
  %1137 = and i64 %1136, 4
  %1138 = icmp ne i64 %1137, 0
  br i1 %1138, label %1139, label %1146

1139:                                             ; preds = %1135
  %1140 = getelementptr inbounds [128 x i8], ptr %10, i64 0, i64 0
  %1141 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 6
  %1142 = load i32, ptr %1141, align 8, !tbaa !26
  %1143 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 7
  %1144 = load i32, ptr %1143, align 4, !tbaa !25
  %1145 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %1140, ptr noundef @.str.11, i32 noundef %1142, i32 noundef %1144) #6
  store i32 8, ptr %29, align 4
  br label %1514

1146:                                             ; preds = %1135
  %1147 = load i64, ptr %16, align 8, !tbaa !9
  %1148 = or i64 %1147, 32
  store i64 %1148, ptr %16, align 8, !tbaa !9
  %1149 = load ptr, ptr %12, align 8, !tbaa !5
  %1150 = getelementptr inbounds %struct._json_value, ptr %1149, i32 0, i32 3
  %1151 = load ptr, ptr %1150, align 8, !tbaa !27
  store ptr %1151, ptr %25, align 8, !tbaa !5
  store i32 0, ptr %26, align 4, !tbaa !28
  br label %1173

1152:                                             ; preds = %1126
  %1153 = load i64, ptr %16, align 8, !tbaa !9
  %1154 = and i64 %1153, -5
  %1155 = or i64 %1154, 1
  store i64 %1155, ptr %16, align 8, !tbaa !9
  br label %1173

1156:                                             ; preds = %1126
  %1157 = load i64, ptr %16, align 8, !tbaa !9
  %1158 = and i64 %1157, 4
  %1159 = icmp ne i64 %1158, 0
  br i1 %1159, label %1160, label %1163

1160:                                             ; preds = %1156
  %1161 = load i64, ptr %16, align 8, !tbaa !9
  %1162 = and i64 %1161, -5
  store i64 %1162, ptr %16, align 8, !tbaa !9
  br label %1173

1163:                                             ; preds = %1156
  br label %1164

1164:                                             ; preds = %1163, %1126
  %1165 = getelementptr inbounds [128 x i8], ptr %10, i64 0, i64 0
  %1166 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 6
  %1167 = load i32, ptr %1166, align 8, !tbaa !26
  %1168 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 7
  %1169 = load i32, ptr %1168, align 4, !tbaa !25
  %1170 = load i8, ptr %27, align 1, !tbaa !27
  %1171 = sext i8 %1170 to i32
  %1172 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %1165, ptr noundef @.str.12, i32 noundef %1167, i32 noundef %1169, i32 noundef %1171) #6
  store i32 8, ptr %29, align 4
  br label %1514

1173:                                             ; preds = %1160, %1152, %1146
  br label %1423

1174:                                             ; preds = %1122, %1122
  %1175 = call ptr @__ctype_b_loc() #7
  %1176 = load ptr, ptr %1175, align 8, !tbaa !5
  %1177 = load i8, ptr %27, align 1, !tbaa !27
  %1178 = sext i8 %1177 to i32
  %1179 = sext i32 %1178 to i64
  %1180 = getelementptr inbounds i16, ptr %1176, i64 %1179
  %1181 = load i16, ptr %1180, align 2, !tbaa !34
  %1182 = zext i16 %1181 to i32
  %1183 = and i32 %1182, 2048
  %1184 = icmp ne i32 %1183, 0
  br i1 %1184, label %1185, label %1254

1185:                                             ; preds = %1174
  %1186 = load i64, ptr %17, align 8, !tbaa !9
  %1187 = add nsw i64 %1186, 1
  store i64 %1187, ptr %17, align 8, !tbaa !9
  %1188 = load ptr, ptr %12, align 8, !tbaa !5
  %1189 = getelementptr inbounds %struct._json_value, ptr %1188, i32 0, i32 1
  %1190 = load i32, ptr %1189, align 8, !tbaa !29
  %1191 = icmp eq i32 %1190, 3
  br i1 %1191, label %1196, label %1192

1192:                                             ; preds = %1185
  %1193 = load i64, ptr %16, align 8, !tbaa !9
  %1194 = and i64 %1193, 1024
  %1195 = icmp ne i64 %1194, 0
  br i1 %1195, label %1196, label %1246

1196:                                             ; preds = %1192, %1185
  %1197 = load i64, ptr %16, align 8, !tbaa !9
  %1198 = and i64 %1197, 1024
  %1199 = icmp ne i64 %1198, 0
  br i1 %1199, label %1224, label %1200

1200:                                             ; preds = %1196
  %1201 = load i64, ptr %16, align 8, !tbaa !9
  %1202 = and i64 %1201, 512
  %1203 = icmp ne i64 %1202, 0
  br i1 %1203, label %1204, label %1213

1204:                                             ; preds = %1200
  %1205 = getelementptr inbounds [128 x i8], ptr %10, i64 0, i64 0
  %1206 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 6
  %1207 = load i32, ptr %1206, align 8, !tbaa !26
  %1208 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 7
  %1209 = load i32, ptr %1208, align 4, !tbaa !25
  %1210 = load i8, ptr %27, align 1, !tbaa !27
  %1211 = sext i8 %1210 to i32
  %1212 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %1205, ptr noundef @.str.13, i32 noundef %1207, i32 noundef %1209, i32 noundef %1211) #6
  store i32 8, ptr %29, align 4
  br label %1514

1213:                                             ; preds = %1200
  %1214 = load i64, ptr %17, align 8, !tbaa !9
  %1215 = icmp eq i64 %1214, 1
  br i1 %1215, label %1216, label %1223

1216:                                             ; preds = %1213
  %1217 = load i8, ptr %27, align 1, !tbaa !27
  %1218 = sext i8 %1217 to i32
  %1219 = icmp eq i32 %1218, 48
  br i1 %1219, label %1220, label %1223

1220:                                             ; preds = %1216
  %1221 = load i64, ptr %16, align 8, !tbaa !9
  %1222 = or i64 %1221, 512
  store i64 %1222, ptr %16, align 8, !tbaa !9
  br label %1223

1223:                                             ; preds = %1220, %1216, %1213
  br label %1234

1224:                                             ; preds = %1196
  %1225 = load i64, ptr %16, align 8, !tbaa !9
  %1226 = or i64 %1225, 2048
  store i64 %1226, ptr %16, align 8, !tbaa !9
  %1227 = load i64, ptr %18, align 8, !tbaa !9
  %1228 = mul nsw i64 %1227, 10
  %1229 = load i8, ptr %27, align 1, !tbaa !27
  %1230 = sext i8 %1229 to i32
  %1231 = sub nsw i32 %1230, 48
  %1232 = sext i32 %1231 to i64
  %1233 = add nsw i64 %1228, %1232
  store i64 %1233, ptr %18, align 8, !tbaa !9
  store i32 7, ptr %29, align 4
  br label %1514

1234:                                             ; preds = %1223
  %1235 = load ptr, ptr %12, align 8, !tbaa !5
  %1236 = getelementptr inbounds %struct._json_value, ptr %1235, i32 0, i32 2
  %1237 = load i64, ptr %1236, align 8, !tbaa !27
  %1238 = mul nsw i64 %1237, 10
  %1239 = load i8, ptr %27, align 1, !tbaa !27
  %1240 = sext i8 %1239 to i32
  %1241 = sub nsw i32 %1240, 48
  %1242 = sext i32 %1241 to i64
  %1243 = add nsw i64 %1238, %1242
  %1244 = load ptr, ptr %12, align 8, !tbaa !5
  %1245 = getelementptr inbounds %struct._json_value, ptr %1244, i32 0, i32 2
  store i64 %1243, ptr %1245, align 8, !tbaa !27
  store i32 7, ptr %29, align 4
  br label %1514

1246:                                             ; preds = %1192
  %1247 = load i64, ptr %19, align 8, !tbaa !9
  %1248 = mul nsw i64 %1247, 10
  %1249 = load i8, ptr %27, align 1, !tbaa !27
  %1250 = sext i8 %1249 to i32
  %1251 = sub nsw i32 %1250, 48
  %1252 = sext i32 %1251 to i64
  %1253 = add nsw i64 %1248, %1252
  store i64 %1253, ptr %19, align 8, !tbaa !9
  store i32 7, ptr %29, align 4
  br label %1514

1254:                                             ; preds = %1174
  %1255 = load i8, ptr %27, align 1, !tbaa !27
  %1256 = sext i8 %1255 to i32
  %1257 = icmp eq i32 %1256, 43
  br i1 %1257, label %1262, label %1258

1258:                                             ; preds = %1254
  %1259 = load i8, ptr %27, align 1, !tbaa !27
  %1260 = sext i8 %1259 to i32
  %1261 = icmp eq i32 %1260, 45
  br i1 %1261, label %1262, label %1281

1262:                                             ; preds = %1258, %1254
  %1263 = load i64, ptr %16, align 8, !tbaa !9
  %1264 = and i64 %1263, 1024
  %1265 = icmp ne i64 %1264, 0
  br i1 %1265, label %1266, label %1280

1266:                                             ; preds = %1262
  %1267 = load i64, ptr %16, align 8, !tbaa !9
  %1268 = and i64 %1267, 2048
  %1269 = icmp ne i64 %1268, 0
  br i1 %1269, label %1280, label %1270

1270:                                             ; preds = %1266
  %1271 = load i64, ptr %16, align 8, !tbaa !9
  %1272 = or i64 %1271, 2048
  store i64 %1272, ptr %16, align 8, !tbaa !9
  %1273 = load i8, ptr %27, align 1, !tbaa !27
  %1274 = sext i8 %1273 to i32
  %1275 = icmp eq i32 %1274, 45
  br i1 %1275, label %1276, label %1279

1276:                                             ; preds = %1270
  %1277 = load i64, ptr %16, align 8, !tbaa !9
  %1278 = or i64 %1277, 4096
  store i64 %1278, ptr %16, align 8, !tbaa !9
  br label %1279

1279:                                             ; preds = %1276, %1270
  store i32 7, ptr %29, align 4
  br label %1514

1280:                                             ; preds = %1266, %1262
  br label %1310

1281:                                             ; preds = %1258
  %1282 = load i8, ptr %27, align 1, !tbaa !27
  %1283 = sext i8 %1282 to i32
  %1284 = icmp eq i32 %1283, 46
  br i1 %1284, label %1285, label %1309

1285:                                             ; preds = %1281
  %1286 = load ptr, ptr %12, align 8, !tbaa !5
  %1287 = getelementptr inbounds %struct._json_value, ptr %1286, i32 0, i32 1
  %1288 = load i32, ptr %1287, align 8, !tbaa !29
  %1289 = icmp eq i32 %1288, 3
  br i1 %1289, label %1290, label %1309

1290:                                             ; preds = %1285
  %1291 = load i64, ptr %17, align 8, !tbaa !9
  %1292 = icmp ne i64 %1291, 0
  br i1 %1292, label %1300, label %1293

1293:                                             ; preds = %1290
  %1294 = getelementptr inbounds [128 x i8], ptr %10, i64 0, i64 0
  %1295 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 6
  %1296 = load i32, ptr %1295, align 8, !tbaa !26
  %1297 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 7
  %1298 = load i32, ptr %1297, align 4, !tbaa !25
  %1299 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %1294, ptr noundef @.str.14, i32 noundef %1296, i32 noundef %1298) #6
  store i32 8, ptr %29, align 4
  br label %1514

1300:                                             ; preds = %1290
  %1301 = load ptr, ptr %12, align 8, !tbaa !5
  %1302 = getelementptr inbounds %struct._json_value, ptr %1301, i32 0, i32 1
  store i32 4, ptr %1302, align 8, !tbaa !29
  %1303 = load ptr, ptr %12, align 8, !tbaa !5
  %1304 = getelementptr inbounds %struct._json_value, ptr %1303, i32 0, i32 2
  %1305 = load i64, ptr %1304, align 8, !tbaa !27
  %1306 = sitofp i64 %1305 to double
  %1307 = load ptr, ptr %12, align 8, !tbaa !5
  %1308 = getelementptr inbounds %struct._json_value, ptr %1307, i32 0, i32 2
  store double %1306, ptr %1308, align 8, !tbaa !27
  store i64 0, ptr %17, align 8, !tbaa !9
  store i32 7, ptr %29, align 4
  br label %1514

1309:                                             ; preds = %1285, %1281
  br label %1310

1310:                                             ; preds = %1309, %1280
  %1311 = load i64, ptr %16, align 8, !tbaa !9
  %1312 = and i64 %1311, 1024
  %1313 = icmp ne i64 %1312, 0
  br i1 %1313, label %1368, label %1314

1314:                                             ; preds = %1310
  %1315 = load ptr, ptr %12, align 8, !tbaa !5
  %1316 = getelementptr inbounds %struct._json_value, ptr %1315, i32 0, i32 1
  %1317 = load i32, ptr %1316, align 8, !tbaa !29
  %1318 = icmp eq i32 %1317, 4
  br i1 %1318, label %1319, label %1340

1319:                                             ; preds = %1314
  %1320 = load i64, ptr %17, align 8, !tbaa !9
  %1321 = icmp ne i64 %1320, 0
  br i1 %1321, label %1329, label %1322

1322:                                             ; preds = %1319
  %1323 = getelementptr inbounds [128 x i8], ptr %10, i64 0, i64 0
  %1324 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 6
  %1325 = load i32, ptr %1324, align 8, !tbaa !26
  %1326 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 7
  %1327 = load i32, ptr %1326, align 4, !tbaa !25
  %1328 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %1323, ptr noundef @.str.15, i32 noundef %1325, i32 noundef %1327) #6
  store i32 8, ptr %29, align 4
  br label %1514

1329:                                             ; preds = %1319
  %1330 = load i64, ptr %19, align 8, !tbaa !9
  %1331 = sitofp i64 %1330 to double
  %1332 = load i64, ptr %17, align 8, !tbaa !9
  %1333 = sitofp i64 %1332 to double
  %1334 = call double @pow(double noundef 1.000000e+01, double noundef %1333) #6
  %1335 = fdiv double %1331, %1334
  %1336 = load ptr, ptr %12, align 8, !tbaa !5
  %1337 = getelementptr inbounds %struct._json_value, ptr %1336, i32 0, i32 2
  %1338 = load double, ptr %1337, align 8, !tbaa !27
  %1339 = fadd double %1338, %1335
  store double %1339, ptr %1337, align 8, !tbaa !27
  br label %1340

1340:                                             ; preds = %1329, %1314
  %1341 = load i8, ptr %27, align 1, !tbaa !27
  %1342 = sext i8 %1341 to i32
  %1343 = icmp eq i32 %1342, 101
  br i1 %1343, label %1348, label %1344

1344:                                             ; preds = %1340
  %1345 = load i8, ptr %27, align 1, !tbaa !27
  %1346 = sext i8 %1345 to i32
  %1347 = icmp eq i32 %1346, 69
  br i1 %1347, label %1348, label %1367

1348:                                             ; preds = %1344, %1340
  %1349 = load i64, ptr %16, align 8, !tbaa !9
  %1350 = or i64 %1349, 1024
  store i64 %1350, ptr %16, align 8, !tbaa !9
  %1351 = load ptr, ptr %12, align 8, !tbaa !5
  %1352 = getelementptr inbounds %struct._json_value, ptr %1351, i32 0, i32 1
  %1353 = load i32, ptr %1352, align 8, !tbaa !29
  %1354 = icmp eq i32 %1353, 3
  br i1 %1354, label %1355, label %1364

1355:                                             ; preds = %1348
  %1356 = load ptr, ptr %12, align 8, !tbaa !5
  %1357 = getelementptr inbounds %struct._json_value, ptr %1356, i32 0, i32 1
  store i32 4, ptr %1357, align 8, !tbaa !29
  %1358 = load ptr, ptr %12, align 8, !tbaa !5
  %1359 = getelementptr inbounds %struct._json_value, ptr %1358, i32 0, i32 2
  %1360 = load i64, ptr %1359, align 8, !tbaa !27
  %1361 = sitofp i64 %1360 to double
  %1362 = load ptr, ptr %12, align 8, !tbaa !5
  %1363 = getelementptr inbounds %struct._json_value, ptr %1362, i32 0, i32 2
  store double %1361, ptr %1363, align 8, !tbaa !27
  br label %1364

1364:                                             ; preds = %1355, %1348
  store i64 0, ptr %17, align 8, !tbaa !9
  %1365 = load i64, ptr %16, align 8, !tbaa !9
  %1366 = and i64 %1365, -513
  store i64 %1366, ptr %16, align 8, !tbaa !9
  store i32 7, ptr %29, align 4
  br label %1514

1367:                                             ; preds = %1344
  br label %1395

1368:                                             ; preds = %1310
  %1369 = load i64, ptr %17, align 8, !tbaa !9
  %1370 = icmp ne i64 %1369, 0
  br i1 %1370, label %1378, label %1371

1371:                                             ; preds = %1368
  %1372 = getelementptr inbounds [128 x i8], ptr %10, i64 0, i64 0
  %1373 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 6
  %1374 = load i32, ptr %1373, align 8, !tbaa !26
  %1375 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 7
  %1376 = load i32, ptr %1375, align 4, !tbaa !25
  %1377 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %1372, ptr noundef @.str.16, i32 noundef %1374, i32 noundef %1376) #6
  store i32 8, ptr %29, align 4
  br label %1514

1378:                                             ; preds = %1368
  %1379 = load i64, ptr %16, align 8, !tbaa !9
  %1380 = and i64 %1379, 4096
  %1381 = icmp ne i64 %1380, 0
  br i1 %1381, label %1382, label %1385

1382:                                             ; preds = %1378
  %1383 = load i64, ptr %18, align 8, !tbaa !9
  %1384 = sub nsw i64 0, %1383
  br label %1387

1385:                                             ; preds = %1378
  %1386 = load i64, ptr %18, align 8, !tbaa !9
  br label %1387

1387:                                             ; preds = %1385, %1382
  %1388 = phi i64 [ %1384, %1382 ], [ %1386, %1385 ]
  %1389 = sitofp i64 %1388 to double
  %1390 = call double @pow(double noundef 1.000000e+01, double noundef %1389) #6
  %1391 = load ptr, ptr %12, align 8, !tbaa !5
  %1392 = getelementptr inbounds %struct._json_value, ptr %1391, i32 0, i32 2
  %1393 = load double, ptr %1392, align 8, !tbaa !27
  %1394 = fmul double %1393, %1390
  store double %1394, ptr %1392, align 8, !tbaa !27
  br label %1395

1395:                                             ; preds = %1387, %1367
  %1396 = load i64, ptr %16, align 8, !tbaa !9
  %1397 = and i64 %1396, 256
  %1398 = icmp ne i64 %1397, 0
  br i1 %1398, label %1399, label %1419

1399:                                             ; preds = %1395
  %1400 = load ptr, ptr %12, align 8, !tbaa !5
  %1401 = getelementptr inbounds %struct._json_value, ptr %1400, i32 0, i32 1
  %1402 = load i32, ptr %1401, align 8, !tbaa !29
  %1403 = icmp eq i32 %1402, 3
  br i1 %1403, label %1404, label %1411

1404:                                             ; preds = %1399
  %1405 = load ptr, ptr %12, align 8, !tbaa !5
  %1406 = getelementptr inbounds %struct._json_value, ptr %1405, i32 0, i32 2
  %1407 = load i64, ptr %1406, align 8, !tbaa !27
  %1408 = sub nsw i64 0, %1407
  %1409 = load ptr, ptr %12, align 8, !tbaa !5
  %1410 = getelementptr inbounds %struct._json_value, ptr %1409, i32 0, i32 2
  store i64 %1408, ptr %1410, align 8, !tbaa !27
  br label %1418

1411:                                             ; preds = %1399
  %1412 = load ptr, ptr %12, align 8, !tbaa !5
  %1413 = getelementptr inbounds %struct._json_value, ptr %1412, i32 0, i32 2
  %1414 = load double, ptr %1413, align 8, !tbaa !27
  %1415 = fneg double %1414
  %1416 = load ptr, ptr %12, align 8, !tbaa !5
  %1417 = getelementptr inbounds %struct._json_value, ptr %1416, i32 0, i32 2
  store double %1415, ptr %1417, align 8, !tbaa !27
  br label %1418

1418:                                             ; preds = %1411, %1404
  br label %1419

1419:                                             ; preds = %1418, %1395
  %1420 = load i64, ptr %16, align 8, !tbaa !9
  %1421 = or i64 %1420, 3
  store i64 %1421, ptr %16, align 8, !tbaa !9
  br label %1423

1422:                                             ; preds = %1122
  br label %1423

1423:                                             ; preds = %1422, %1419, %1173
  br label %1424

1424:                                             ; preds = %1423, %1121
  %1425 = load i64, ptr %16, align 8, !tbaa !9
  %1426 = and i64 %1425, 2
  %1427 = icmp ne i64 %1426, 0
  br i1 %1427, label %1428, label %1434

1428:                                             ; preds = %1424
  %1429 = load i64, ptr %16, align 8, !tbaa !9
  %1430 = and i64 %1429, -3
  store i64 %1430, ptr %16, align 8, !tbaa !9
  %1431 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %1432 = load ptr, ptr %1431, align 8, !tbaa !24
  %1433 = getelementptr inbounds i8, ptr %1432, i32 -1
  store ptr %1433, ptr %1431, align 8, !tbaa !24
  br label %1434

1434:                                             ; preds = %1428, %1424
  %1435 = load i64, ptr %16, align 8, !tbaa !9
  %1436 = and i64 %1435, 1
  %1437 = icmp ne i64 %1436, 0
  br i1 %1437, label %1438, label %1513

1438:                                             ; preds = %1434
  %1439 = load i64, ptr %16, align 8, !tbaa !9
  %1440 = and i64 %1439, -2
  %1441 = or i64 %1440, 4
  store i64 %1441, ptr %16, align 8, !tbaa !9
  %1442 = load ptr, ptr %12, align 8, !tbaa !5
  %1443 = getelementptr inbounds %struct._json_value, ptr %1442, i32 0, i32 0
  %1444 = load ptr, ptr %1443, align 8, !tbaa !38
  %1445 = icmp ne ptr %1444, null
  br i1 %1445, label %1449, label %1446

1446:                                             ; preds = %1438
  %1447 = load i64, ptr %16, align 8, !tbaa !9
  %1448 = or i64 %1447, 128
  store i64 %1448, ptr %16, align 8, !tbaa !9
  store i32 7, ptr %29, align 4
  br label %1514

1449:                                             ; preds = %1438
  %1450 = load ptr, ptr %12, align 8, !tbaa !5
  %1451 = getelementptr inbounds %struct._json_value, ptr %1450, i32 0, i32 0
  %1452 = load ptr, ptr %1451, align 8, !tbaa !38
  %1453 = getelementptr inbounds %struct._json_value, ptr %1452, i32 0, i32 1
  %1454 = load i32, ptr %1453, align 8, !tbaa !29
  %1455 = icmp eq i32 %1454, 2
  br i1 %1455, label %1456, label %1459

1456:                                             ; preds = %1449
  %1457 = load i64, ptr %16, align 8, !tbaa !9
  %1458 = or i64 %1457, 8
  store i64 %1458, ptr %16, align 8, !tbaa !9
  br label %1459

1459:                                             ; preds = %1456, %1449
  %1460 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 4
  %1461 = load i32, ptr %1460, align 8, !tbaa !23
  %1462 = icmp ne i32 %1461, 0
  br i1 %1462, label %1497, label %1463

1463:                                             ; preds = %1459
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #6
  %1464 = load ptr, ptr %12, align 8, !tbaa !5
  %1465 = getelementptr inbounds %struct._json_value, ptr %1464, i32 0, i32 0
  %1466 = load ptr, ptr %1465, align 8, !tbaa !38
  store ptr %1466, ptr %30, align 8, !tbaa !5
  %1467 = load ptr, ptr %30, align 8, !tbaa !5
  %1468 = getelementptr inbounds %struct._json_value, ptr %1467, i32 0, i32 1
  %1469 = load i32, ptr %1468, align 8, !tbaa !29
  switch i32 %1469, label %1495 [
    i32 1, label %1470
    i32 2, label %1483
  ]

1470:                                             ; preds = %1463
  %1471 = load ptr, ptr %12, align 8, !tbaa !5
  %1472 = load ptr, ptr %30, align 8, !tbaa !5
  %1473 = getelementptr inbounds %struct._json_value, ptr %1472, i32 0, i32 2
  %1474 = getelementptr inbounds %struct.anon.0, ptr %1473, i32 0, i32 1
  %1475 = load ptr, ptr %1474, align 8, !tbaa !27
  %1476 = load ptr, ptr %30, align 8, !tbaa !5
  %1477 = getelementptr inbounds %struct._json_value, ptr %1476, i32 0, i32 2
  %1478 = getelementptr inbounds %struct.anon.0, ptr %1477, i32 0, i32 0
  %1479 = load i32, ptr %1478, align 8, !tbaa !27
  %1480 = zext i32 %1479 to i64
  %1481 = getelementptr inbounds %struct._json_object_entry, ptr %1475, i64 %1480
  %1482 = getelementptr inbounds %struct._json_object_entry, ptr %1481, i32 0, i32 2
  store ptr %1471, ptr %1482, align 8, !tbaa !39
  br label %1496

1483:                                             ; preds = %1463
  %1484 = load ptr, ptr %12, align 8, !tbaa !5
  %1485 = load ptr, ptr %30, align 8, !tbaa !5
  %1486 = getelementptr inbounds %struct._json_value, ptr %1485, i32 0, i32 2
  %1487 = getelementptr inbounds %struct.anon.1, ptr %1486, i32 0, i32 1
  %1488 = load ptr, ptr %1487, align 8, !tbaa !27
  %1489 = load ptr, ptr %30, align 8, !tbaa !5
  %1490 = getelementptr inbounds %struct._json_value, ptr %1489, i32 0, i32 2
  %1491 = getelementptr inbounds %struct.anon.1, ptr %1490, i32 0, i32 0
  %1492 = load i32, ptr %1491, align 8, !tbaa !27
  %1493 = zext i32 %1492 to i64
  %1494 = getelementptr inbounds ptr, ptr %1488, i64 %1493
  store ptr %1484, ptr %1494, align 8, !tbaa !5
  br label %1496

1495:                                             ; preds = %1463
  br label %1496

1496:                                             ; preds = %1495, %1483, %1470
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #6
  br label %1497

1497:                                             ; preds = %1496, %1459
  %1498 = load ptr, ptr %12, align 8, !tbaa !5
  %1499 = getelementptr inbounds %struct._json_value, ptr %1498, i32 0, i32 0
  %1500 = load ptr, ptr %1499, align 8, !tbaa !38
  %1501 = getelementptr inbounds %struct._json_value, ptr %1500, i32 0, i32 2
  %1502 = getelementptr inbounds %struct.anon.1, ptr %1501, i32 0, i32 0
  %1503 = load i32, ptr %1502, align 8, !tbaa !27
  %1504 = add i32 %1503, 1
  store i32 %1504, ptr %1502, align 8, !tbaa !27
  %1505 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 1
  %1506 = load i32, ptr %1505, align 8, !tbaa !15
  %1507 = icmp ugt i32 %1504, %1506
  br i1 %1507, label %1508, label %1509

1508:                                             ; preds = %1497
  store i32 9, ptr %29, align 4
  br label %1514

1509:                                             ; preds = %1497
  %1510 = load ptr, ptr %12, align 8, !tbaa !5
  %1511 = getelementptr inbounds %struct._json_value, ptr %1510, i32 0, i32 0
  %1512 = load ptr, ptr %1511, align 8, !tbaa !38
  store ptr %1512, ptr %12, align 8, !tbaa !5
  store i32 7, ptr %29, align 4
  br label %1514

1513:                                             ; preds = %1434
  store i32 0, ptr %29, align 4
  br label %1514

1514:                                             ; preds = %1513, %1509, %1508, %1446, %1371, %1364, %1322, %1300, %1293, %1279, %1246, %1234, %1224, %1204, %1164, %1139, %1134, %1111, %1108, %1046, %1024, %1020, %987, %983, %941, %937, %901, %900, %894, %893, %889, %888, %871, %868, %851, %848, %832, %819, %798, %797, %788, %770, %767, %764, %752, %739, %724, %694, %686, %653, %633, %557, %552, %396, %272, %147, %135
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #6
  %1515 = load i32, ptr %29, align 4
  switch i32 %1515, label %1523 [
    i32 0, label %1516
    i32 7, label %1517
    i32 5, label %1521
  ]

1516:                                             ; preds = %1514
  br label %1517

1517:                                             ; preds = %1516, %1514
  %1518 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %1519 = load ptr, ptr %1518, align 8, !tbaa !24
  %1520 = getelementptr inbounds i8, ptr %1519, i32 1
  store ptr %1520, ptr %1518, align 8, !tbaa !24
  br label %115

1521:                                             ; preds = %1514
  %1522 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %1522, ptr %14, align 8, !tbaa !5
  store i32 0, ptr %29, align 4
  br label %1523

1523:                                             ; preds = %1521, %1514
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #6
  %1524 = load i32, ptr %29, align 4
  switch i32 %1524, label %1594 [
    i32 0, label %1525
    i32 33, label %1532
    i32 32, label %1539
    i32 9, label %1542
    i32 8, label %1549
  ]

1525:                                             ; preds = %1523
  br label %1526

1526:                                             ; preds = %1525
  %1527 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 4
  %1528 = load i32, ptr %1527, align 8, !tbaa !23
  %1529 = add nsw i32 %1528, -1
  store i32 %1529, ptr %1527, align 8, !tbaa !23
  br label %107, !llvm.loop !40

1530:                                             ; preds = %107
  %1531 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %1531, ptr %5, align 8
  store i32 1, ptr %29, align 4
  br label %1594

1532:                                             ; preds = %1523
  %1533 = getelementptr inbounds [128 x i8], ptr %10, i64 0, i64 0
  %1534 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 6
  %1535 = load i32, ptr %1534, align 8, !tbaa !26
  %1536 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 7
  %1537 = load i32, ptr %1536, align 4, !tbaa !25
  %1538 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %1533, ptr noundef @.str.17, i32 noundef %1535, i32 noundef %1537) #6
  br label %1549

1539:                                             ; preds = %1523
  %1540 = getelementptr inbounds [128 x i8], ptr %10, i64 0, i64 0
  %1541 = call ptr @strcpy(ptr noundef %1540, ptr noundef @.str.18) #6
  br label %1549

1542:                                             ; preds = %1523
  %1543 = getelementptr inbounds [128 x i8], ptr %10, i64 0, i64 0
  %1544 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 6
  %1545 = load i32, ptr %1544, align 8, !tbaa !26
  %1546 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 7
  %1547 = load i32, ptr %1546, align 4, !tbaa !25
  %1548 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %1543, ptr noundef @.str.19, i32 noundef %1545, i32 noundef %1547) #6
  br label %1549

1549:                                             ; preds = %1542, %1539, %1532, %1523
  %1550 = load ptr, ptr %9, align 8, !tbaa !5
  %1551 = icmp ne ptr %1550, null
  br i1 %1551, label %1552, label %1564

1552:                                             ; preds = %1549
  %1553 = getelementptr inbounds [128 x i8], ptr %10, i64 0, i64 0
  %1554 = load i8, ptr %1553, align 16, !tbaa !27
  %1555 = icmp ne i8 %1554, 0
  br i1 %1555, label %1556, label %1560

1556:                                             ; preds = %1552
  %1557 = load ptr, ptr %9, align 8, !tbaa !5
  %1558 = getelementptr inbounds [128 x i8], ptr %10, i64 0, i64 0
  %1559 = call ptr @strcpy(ptr noundef %1557, ptr noundef %1558) #6
  br label %1563

1560:                                             ; preds = %1552
  %1561 = load ptr, ptr %9, align 8, !tbaa !5
  %1562 = call ptr @strcpy(ptr noundef %1561, ptr noundef @.str.20) #6
  br label %1563

1563:                                             ; preds = %1560, %1556
  br label %1564

1564:                                             ; preds = %1563, %1549
  %1565 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 4
  %1566 = load i32, ptr %1565, align 8, !tbaa !23
  %1567 = icmp ne i32 %1566, 0
  br i1 %1567, label %1568, label %1570

1568:                                             ; preds = %1564
  %1569 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %1569, ptr %14, align 8, !tbaa !5
  br label %1570

1570:                                             ; preds = %1568, %1564
  br label %1571

1571:                                             ; preds = %1574, %1570
  %1572 = load ptr, ptr %14, align 8, !tbaa !5
  %1573 = icmp ne ptr %1572, null
  br i1 %1573, label %1574, label %1586

1574:                                             ; preds = %1571
  %1575 = load ptr, ptr %14, align 8, !tbaa !5
  %1576 = getelementptr inbounds %struct._json_value, ptr %1575, i32 0, i32 3
  %1577 = load ptr, ptr %1576, align 8, !tbaa !27
  store ptr %1577, ptr %12, align 8, !tbaa !5
  %1578 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 3
  %1579 = getelementptr inbounds %struct.json_settings, ptr %1578, i32 0, i32 3
  %1580 = load ptr, ptr %1579, align 8, !tbaa !19
  %1581 = load ptr, ptr %14, align 8, !tbaa !5
  %1582 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 3
  %1583 = getelementptr inbounds %struct.json_settings, ptr %1582, i32 0, i32 4
  %1584 = load ptr, ptr %1583, align 8, !tbaa !21
  call void %1580(ptr noundef %1581, ptr noundef %1584)
  %1585 = load ptr, ptr %12, align 8, !tbaa !5
  store ptr %1585, ptr %14, align 8, !tbaa !5
  br label %1571, !llvm.loop !41

1586:                                             ; preds = %1571
  %1587 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 4
  %1588 = load i32, ptr %1587, align 8, !tbaa !23
  %1589 = icmp ne i32 %1588, 0
  br i1 %1589, label %1593, label %1590

1590:                                             ; preds = %1586
  %1591 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 3
  %1592 = load ptr, ptr %13, align 8, !tbaa !5
  call void @json_value_free_ex(ptr noundef %1591, ptr noundef %1592)
  br label %1593

1593:                                             ; preds = %1590, %1586
  store ptr null, ptr %5, align 8
  store i32 1, ptr %29, align 4
  br label %1594

1594:                                             ; preds = %1593, %1530, %1523
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #6
  call void @llvm.lifetime.end.p0(i64 96, ptr %15) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #6
  call void @llvm.lifetime.end.p0(i64 128, ptr %10) #6
  %1595 = load ptr, ptr %5, align 8
  ret ptr %1595
}

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2

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

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

; 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: nounwind
declare i32 @sprintf(ptr noundef, ptr noundef, ...) #4

; Function Attrs: nounwind uwtable
declare hidden zeroext i8 @hex_value(i8 noundef signext) #0

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

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

; Function Attrs: nounwind willreturn memory(none)
declare ptr @__ctype_b_loc() #5

; Function Attrs: nounwind
declare double @pow(double noundef, double noundef) #4

; Function Attrs: nounwind
declare ptr @strcpy(ptr noundef, ptr noundef) #4

; Function Attrs: nounwind uwtable
declare dso_local void @json_value_free_ex(ptr noundef, ptr noundef) #0

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #4 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nounwind willreturn memory(none) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nounwind }
attributes #7 = { nounwind willreturn memory(none) }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = !{!12, !10, i64 0}
!12 = !{!"", !10, i64 0, !13, i64 8, !10, i64 16, !14, i64 24, !13, i64 72, !6, i64 80, !13, i64 88, !13, i64 92}
!13 = !{!"int", !7, i64 0}
!14 = !{!"", !10, i64 0, !13, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !10, i64 40}
!15 = !{!12, !13, i64 8}
!16 = !{!12, !10, i64 16}
!17 = !{!12, !10, i64 24}
!18 = !{!12, !6, i64 40}
!19 = !{!12, !6, i64 48}
!20 = !{!12, !13, i64 32}
!21 = !{!12, !6, i64 56}
!22 = !{!12, !10, i64 64}
!23 = !{!12, !13, i64 72}
!24 = !{!12, !6, i64 80}
!25 = !{!12, !13, i64 92}
!26 = !{!12, !13, i64 88}
!27 = !{!7, !7, i64 0}
!28 = !{!13, !13, i64 0}
!29 = !{!30, !13, i64 8}
!30 = !{!"_json_value", !6, i64 0, !13, i64 8, !7, i64 16, !7, i64 32}
!31 = !{!32, !6, i64 0}
!32 = !{!"_json_object_entry", !6, i64 0, !13, i64 8, !6, i64 16}
!33 = !{!32, !13, i64 8}
!34 = !{!35, !35, i64 0}
!35 = !{!"short", !7, i64 0}
!36 = distinct !{!36, !37}
!37 = !{!"llvm.loop.mustprogress"}
!38 = !{!30, !6, i64 0}
!39 = !{!32, !6, i64 16}
!40 = distinct !{!40, !37}
!41 = distinct !{!41, !37}


; 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.json_state = type { i64, i32, i64, %struct.json_settings, i32, ptr, i32, i32 }
%struct.json_settings = type { i64, i32, ptr, ptr, ptr, i64 }
%struct._json_object_entry = type { ptr, i32, ptr }

@.str = external hidden unnamed_addr constant [36 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [14 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local ptr @json_parse_ex(ptr nocapture noundef readonly %0, ptr noundef %1, i64 noundef %2, ptr noundef %3) local_unnamed_addr #0 {
  %5 = alloca [128 x i8], align 16
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca %struct.json_state, align 8
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %5) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #7
  store ptr null, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %9) #7
  store i64 0, ptr %9, align 8, !tbaa !9
  %10 = getelementptr inbounds i8, ptr %9, i64 8
  %11 = getelementptr inbounds i8, ptr %9, i64 16
  %12 = getelementptr inbounds i8, ptr %9, i64 24
  %13 = getelementptr inbounds i8, ptr %9, i64 40
  %14 = getelementptr inbounds i8, ptr %9, i64 48
  %15 = getelementptr inbounds i8, ptr %9, i64 32
  %16 = getelementptr inbounds i8, ptr %9, i64 56
  %17 = getelementptr inbounds i8, ptr %9, i64 72
  %18 = getelementptr inbounds i8, ptr %9, i64 80
  %19 = getelementptr inbounds i8, ptr %9, i64 92
  %20 = getelementptr inbounds i8, ptr %9, i64 88
  %21 = icmp ugt i64 %2, 2
  %22 = getelementptr inbounds i8, ptr %9, i64 72
  store i32 0, ptr %22, align 8
  %23 = getelementptr inbounds i8, ptr %9, i64 88
  store i64 0, ptr %23, align 8
  br i1 %21, label %24, label %38

24:                                               ; preds = %4
  %25 = load i8, ptr %1, align 1, !tbaa !14
  %26 = icmp eq i8 %25, -17
  br i1 %26, label %27, label %38

27:                                               ; preds = %24
  %28 = getelementptr inbounds i8, ptr %1, i64 1
  %29 = load i8, ptr %28, align 1, !tbaa !14
  %30 = icmp eq i8 %29, -69
  br i1 %30, label %31, label %38

31:                                               ; preds = %27
  %32 = getelementptr inbounds i8, ptr %1, i64 2
  %33 = load i8, ptr %32, align 1, !tbaa !14
  %34 = icmp eq i8 %33, -65
  br i1 %34, label %35, label %38

35:                                               ; preds = %31
  %36 = getelementptr inbounds i8, ptr %1, i64 3
  %37 = add i64 %2, -3
  br label %38

38:                                               ; preds = %35, %31, %27, %24, %4
  %.0286 = phi i64 [ %37, %35 ], [ %2, %31 ], [ %2, %27 ], [ %2, %24 ], [ %2, %4 ]
  %.0259 = phi ptr [ %36, %35 ], [ %1, %31 ], [ %1, %27 ], [ %1, %24 ], [ %1, %4 ]
  store i8 0, ptr %5, align 16, !tbaa !14
  %39 = getelementptr inbounds i8, ptr %.0259, i64 %.0286
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %12, ptr noundef nonnull align 8 dereferenceable(48) %0, i64 48, i1 false)
  %40 = load ptr, ptr %13, align 8, !tbaa !15
  %.not = icmp eq ptr %40, null
  br i1 %.not, label %41, label %42

41:                                               ; preds = %38
  store ptr @default_alloc, ptr %13, align 8, !tbaa !15
  br label %42

42:                                               ; preds = %41, %38
  %43 = load ptr, ptr %14, align 8, !tbaa !16
  %.not314 = icmp eq ptr %43, null
  br i1 %.not314, label %44, label %45

44:                                               ; preds = %42
  store ptr @default_free, ptr %14, align 8, !tbaa !16
  br label %45

45:                                               ; preds = %44, %42
  store i32 -9, ptr %10, align 8, !tbaa !17
  store i64 -9, ptr %11, align 8, !tbaa !18
  %46 = ptrtoint ptr %39 to i64
  %47 = getelementptr inbounds i8, ptr %39, i64 -1
  store i32 1, ptr %17, align 8, !tbaa !19
  br label %48

48:                                               ; preds = %45, %740
  %.0270575 = phi i64 [ 0, %45 ], [ %.1271, %740 ]
  %.0274574 = phi i64 [ 0, %45 ], [ %.1275, %740 ]
  %.0278573 = phi i64 [ 0, %45 ], [ %.1279, %740 ]
  store ptr null, ptr %7, align 8, !tbaa !5
  store ptr null, ptr %6, align 8, !tbaa !5
  store i32 1, ptr %20, align 8, !tbaa !20
  br label %49

49:                                               ; preds = %737, %48
  %storemerge315 = phi ptr [ %.0259, %48 ], [ %739, %737 ]
  %.0282 = phi i64 [ 8, %48 ], [ %.9.ph, %737 ]
  %.1279 = phi i64 [ %.0278573, %48 ], [ %.3281.ph, %737 ]
  %.1275 = phi i64 [ %.0274574, %48 ], [ %.3277.ph, %737 ]
  %.1271 = phi i64 [ %.0270575, %48 ], [ %.3273.ph, %737 ]
  %.0264 = phi ptr [ null, %48 ], [ %.3267.ph, %737 ]
  %.0261 = phi i32 [ 0, %48 ], [ %.3.ph, %737 ]
  store ptr %storemerge315, ptr %18, align 8, !tbaa !21
  %50 = icmp eq ptr %storemerge315, %39
  br i1 %50, label %.thread, label %51

51:                                               ; preds = %49
  %52 = load i8, ptr %storemerge315, align 1, !tbaa !14
  %53 = and i64 %.0282, 32
  %.not316 = icmp eq i64 %53, 0
  br i1 %.not316, label %324, label %55

.thread:                                          ; preds = %49
  %54 = and i64 %.0282, 32
  %.not316396 = icmp eq i64 %54, 0
  br i1 %.not316396, label %324, label %.thread397

55:                                               ; preds = %51
  %.not317 = icmp eq i8 %52, 0
  br i1 %.not317, label %.thread397, label %59

.thread397:                                       ; preds = %.thread, %55
  %56 = load i32, ptr %20, align 8, !tbaa !20
  %57 = load i32, ptr %19, align 4, !tbaa !22
  %58 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %5, ptr noundef nonnull dereferenceable(1) @.str, i32 noundef %56, i32 noundef %57) #7
  br label %.thread457

59:                                               ; preds = %55
  %60 = load i32, ptr %10, align 8, !tbaa !17
  %61 = icmp ugt i32 %.0261, %60
  br i1 %61, label %750, label %62

62:                                               ; preds = %59
  %63 = and i64 %.0282, 16
  %.not318 = icmp eq i64 %63, 0
  br i1 %.not318, label %275, label %64

64:                                               ; preds = %62
  %65 = and i64 %.0282, -17
  switch i8 %52, label %268 [
    i8 98, label %66
    i8 102, label %73
    i8 110, label %80
    i8 114, label %87
    i8 116, label %94
    i8 117, label %101
  ]

66:                                               ; preds = %64
  %67 = load i32, ptr %17, align 8, !tbaa !19
  %.not385 = icmp eq i32 %67, 0
  br i1 %.not385, label %68, label %71

68:                                               ; preds = %66
  %69 = zext i32 %.0261 to i64
  %70 = getelementptr inbounds i8, ptr %.0264, i64 %69
  store i8 8, ptr %70, align 1, !tbaa !14
  br label %71

71:                                               ; preds = %68, %66
  %72 = add i32 %.0261, 1
  br label %737

73:                                               ; preds = %64
  %74 = load i32, ptr %17, align 8, !tbaa !19
  %.not384 = icmp eq i32 %74, 0
  br i1 %.not384, label %75, label %78

75:                                               ; preds = %73
  %76 = zext i32 %.0261 to i64
  %77 = getelementptr inbounds i8, ptr %.0264, i64 %76
  store i8 12, ptr %77, align 1, !tbaa !14
  br label %78

78:                                               ; preds = %75, %73
  %79 = add i32 %.0261, 1
  br label %737

80:                                               ; preds = %64
  %81 = load i32, ptr %17, align 8, !tbaa !19
  %.not383 = icmp eq i32 %81, 0
  br i1 %.not383, label %82, label %85

82:                                               ; preds = %80
  %83 = zext i32 %.0261 to i64
  %84 = getelementptr inbounds i8, ptr %.0264, i64 %83
  store i8 10, ptr %84, align 1, !tbaa !14
  br label %85

85:                                               ; preds = %82, %80
  %86 = add i32 %.0261, 1
  br label %737

87:                                               ; preds = %64
  %88 = load i32, ptr %17, align 8, !tbaa !19
  %.not382 = icmp eq i32 %88, 0
  br i1 %.not382, label %89, label %92

89:                                               ; preds = %87
  %90 = zext i32 %.0261 to i64
  %91 = getelementptr inbounds i8, ptr %.0264, i64 %90
  store i8 13, ptr %91, align 1, !tbaa !14
  br label %92

92:                                               ; preds = %89, %87
  %93 = add i32 %.0261, 1
  br label %737

94:                                               ; preds = %64
  %95 = load i32, ptr %17, align 8, !tbaa !19
  %.not381 = icmp eq i32 %95, 0
  br i1 %.not381, label %96, label %99

96:                                               ; preds = %94
  %97 = zext i32 %.0261 to i64
  %98 = getelementptr inbounds i8, ptr %.0264, i64 %97
  store i8 9, ptr %98, align 1, !tbaa !14
  br label %99

99:                                               ; preds = %96, %94
  %100 = add i32 %.0261, 1
  br label %737

101:                                              ; preds = %64
  %102 = ptrtoint ptr %storemerge315 to i64
  %103 = sub i64 %46, %102
  %104 = icmp slt i64 %103, 4
  br i1 %104, label %128, label %105

105:                                              ; preds = %101
  %106 = getelementptr inbounds i8, ptr %storemerge315, i64 1
  store ptr %106, ptr %18, align 8, !tbaa !21
  %107 = load i8, ptr %106, align 1, !tbaa !14
  %108 = call zeroext i8 @hex_value(i8 noundef signext %107)
  %109 = icmp eq i8 %108, -1
  br i1 %109, label %128, label %110

110:                                              ; preds = %105
  %111 = load ptr, ptr %18, align 8, !tbaa !21
  %112 = getelementptr inbounds i8, ptr %111, i64 1
  store ptr %112, ptr %18, align 8, !tbaa !21
  %113 = load i8, ptr %112, align 1, !tbaa !14
  %114 = call zeroext i8 @hex_value(i8 noundef signext %113)
  %115 = icmp eq i8 %114, -1
  br i1 %115, label %128, label %116

116:                                              ; preds = %110
  %117 = load ptr, ptr %18, align 8, !tbaa !21
  %118 = getelementptr inbounds i8, ptr %117, i64 1
  store ptr %118, ptr %18, align 8, !tbaa !21
  %119 = load i8, ptr %118, align 1, !tbaa !14
  %120 = call zeroext i8 @hex_value(i8 noundef signext %119)
  %121 = icmp eq i8 %120, -1
  br i1 %121, label %128, label %122

122:                                              ; preds = %116
  %123 = load ptr, ptr %18, align 8, !tbaa !21
  %124 = getelementptr inbounds i8, ptr %123, i64 1
  store ptr %124, ptr %18, align 8, !tbaa !21
  %125 = load i8, ptr %124, align 1, !tbaa !14
  %126 = call zeroext i8 @hex_value(i8 noundef signext %125)
  %127 = icmp eq i8 %126, -1
  br i1 %127, label %128, label %132

128:                                              ; preds = %122, %116, %110, %105, %101
  %129 = load i32, ptr %20, align 8, !tbaa !20
  %130 = load i32, ptr %19, align 4, !tbaa !22
  %131 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %5, ptr noundef nonnull dereferenceable(1) @.str.1, i32 noundef 117, i32 noundef %129, i32 noundef %130) #7
  br label %.thread457

132:                                              ; preds = %122
  %133 = shl i8 %108, 4
  %134 = or i8 %114, %133
  %135 = shl i8 %120, 4
  %136 = or i8 %126, %135
  %137 = zext i8 %134 to i32
  %138 = shl nuw nsw i32 %137, 8
  %139 = zext i8 %136 to i32
  %140 = or disjoint i32 %138, %139
  %141 = and i32 %137, 248
  %142 = icmp eq i32 %141, 216
  br i1 %142, label %143, label %181

143:                                              ; preds = %132
  %144 = load ptr, ptr %18, align 8, !tbaa !21
  %145 = ptrtoint ptr %144 to i64
  %146 = sub i64 %46, %145
  %147 = icmp slt i64 %146, 6
  br i1 %147, label %177, label %148

148:                                              ; preds = %143
  %149 = getelementptr inbounds i8, ptr %144, i64 1
  store ptr %149, ptr %18, align 8, !tbaa !21
  %150 = load i8, ptr %149, align 1, !tbaa !14
  %.not375 = icmp eq i8 %150, 92
  br i1 %.not375, label %151, label %177

151:                                              ; preds = %148
  %152 = getelementptr inbounds i8, ptr %144, i64 2
  store ptr %152, ptr %18, align 8, !tbaa !21
  %153 = load i8, ptr %152, align 1, !tbaa !14
  %.not376 = icmp eq i8 %153, 117
  br i1 %.not376, label %154, label %177

154:                                              ; preds = %151
  %155 = getelementptr inbounds i8, ptr %144, i64 3
  store ptr %155, ptr %18, align 8, !tbaa !21
  %156 = load i8, ptr %155, align 1, !tbaa !14
  %157 = call zeroext i8 @hex_value(i8 noundef signext %156)
  %158 = icmp eq i8 %157, -1
  br i1 %158, label %177, label %159

159:                                              ; preds = %154
  %160 = load ptr, ptr %18, align 8, !tbaa !21
  %161 = getelementptr inbounds i8, ptr %160, i64 1
  store ptr %161, ptr %18, align 8, !tbaa !21
  %162 = load i8, ptr %161, align 1, !tbaa !14
  %163 = call zeroext i8 @hex_value(i8 noundef signext %162)
  %164 = icmp eq i8 %163, -1
  br i1 %164, label %177, label %165

165:                                              ; preds = %159
  %166 = load ptr, ptr %18, align 8, !tbaa !21
  %167 = getelementptr inbounds i8, ptr %166, i64 1
  store ptr %167, ptr %18, align 8, !tbaa !21
  %168 = load i8, ptr %167, align 1, !tbaa !14
  %169 = call zeroext i8 @hex_value(i8 noundef signext %168)
  %170 = icmp eq i8 %169, -1
  br i1 %170, label %177, label %171

171:                                              ; preds = %165
  %172 = load ptr, ptr %18, align 8, !tbaa !21
  %173 = getelementptr inbounds i8, ptr %172, i64 1
  store ptr %173, ptr %18, align 8, !tbaa !21
  %174 = load i8, ptr %173, align 1, !tbaa !14
  %175 = call zeroext i8 @hex_value(i8 noundef signext %174)
  %176 = icmp eq i8 %175, -1
  br i1 %176, label %177, label %208

177:                                              ; preds = %143, %148, %151, %154, %159, %165, %171
  %178 = load i32, ptr %20, align 8, !tbaa !20
  %179 = load i32, ptr %19, align 4, !tbaa !22
  %180 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %5, ptr noundef nonnull dereferenceable(1) @.str.1, i32 noundef 117, i32 noundef %178, i32 noundef %179) #7
  br label %.thread457

181:                                              ; preds = %132
  %182 = icmp ult i32 %140, 128
  br i1 %182, label %183, label %190

183:                                              ; preds = %181
  %184 = load i32, ptr %17, align 8, !tbaa !19
  %.not380 = icmp eq i32 %184, 0
  br i1 %.not380, label %185, label %188

185:                                              ; preds = %183
  %186 = zext i32 %.0261 to i64
  %187 = getelementptr inbounds i8, ptr %.0264, i64 %186
  store i8 %136, ptr %187, align 1, !tbaa !14
  br label %188

188:                                              ; preds = %185, %183
  %189 = add i32 %.0261, 1
  br label %737

190:                                              ; preds = %181
  %191 = icmp ult i8 %134, 8
  %192 = load i32, ptr %17, align 8, !tbaa !19
  %.not379 = icmp eq i32 %192, 0
  br i1 %191, label %193, label %.thread409

193:                                              ; preds = %190
  br i1 %.not379, label %196, label %194

194:                                              ; preds = %193
  %195 = add i32 %.0261, 2
  br label %737

196:                                              ; preds = %193
  %197 = lshr i32 %140, 6
  %198 = trunc nuw i32 %197 to i8
  %199 = or disjoint i8 %198, -64
  %200 = add i32 %.0261, 1
  %201 = zext i32 %.0261 to i64
  %202 = getelementptr inbounds i8, ptr %.0264, i64 %201
  store i8 %199, ptr %202, align 1, !tbaa !14
  %203 = and i8 %136, 63
  %204 = or disjoint i8 %203, -128
  %205 = add i32 %.0261, 2
  %206 = zext i32 %200 to i64
  %207 = getelementptr inbounds i8, ptr %.0264, i64 %206
  store i8 %204, ptr %207, align 1, !tbaa !14
  br label %737

208:                                              ; preds = %171
  %209 = load i32, ptr %17, align 8, !tbaa !19
  %.not377 = icmp eq i32 %209, 0
  br i1 %.not377, label %232, label %230

.thread409:                                       ; preds = %190
  br i1 %.not379, label %212, label %210

210:                                              ; preds = %.thread409
  %211 = add i32 %.0261, 3
  br label %737

212:                                              ; preds = %.thread409
  %213 = lshr i8 %134, 4
  %214 = or disjoint i8 %213, -32
  %215 = add i32 %.0261, 1
  %216 = zext i32 %.0261 to i64
  %217 = getelementptr inbounds i8, ptr %.0264, i64 %216
  store i8 %214, ptr %217, align 1, !tbaa !14
  %218 = lshr i32 %140, 6
  %219 = trunc i32 %218 to i8
  %220 = and i8 %219, 63
  %221 = or disjoint i8 %220, -128
  %222 = add i32 %.0261, 2
  %223 = zext i32 %215 to i64
  %224 = getelementptr inbounds i8, ptr %.0264, i64 %223
  store i8 %221, ptr %224, align 1, !tbaa !14
  %225 = and i8 %136, 63
  %226 = or disjoint i8 %225, -128
  %227 = add i32 %.0261, 3
  %228 = zext i32 %222 to i64
  %229 = getelementptr inbounds i8, ptr %.0264, i64 %228
  store i8 %226, ptr %229, align 1, !tbaa !14
  br label %737

230:                                              ; preds = %208
  %231 = add i32 %.0261, 4
  br label %737

232:                                              ; preds = %208
  %233 = shl nuw nsw i32 %140, 10
  %234 = and i32 %233, 1047552
  %235 = add nuw nsw i32 %234, 65536
  %236 = zext i8 %163 to i32
  %237 = shl nuw nsw i32 %236, 8
  %.masked = and i32 %237, 768
  %238 = shl i8 %169, 4
  %239 = or i8 %175, %238
  %240 = zext i8 %239 to i32
  %241 = or disjoint i32 %.masked, %240
  %242 = or disjoint i32 %241, %233
  %243 = lshr i32 %235, 18
  %244 = trunc nuw nsw i32 %243 to i8
  %245 = or disjoint i8 %244, -16
  %246 = add i32 %.0261, 1
  %247 = zext i32 %.0261 to i64
  %248 = getelementptr inbounds i8, ptr %.0264, i64 %247
  store i8 %245, ptr %248, align 1, !tbaa !14
  %249 = lshr i32 %235, 12
  %250 = trunc i32 %249 to i8
  %251 = and i8 %250, 63
  %252 = or disjoint i8 %251, -128
  %253 = add i32 %.0261, 2
  %254 = zext i32 %246 to i64
  %255 = getelementptr inbounds i8, ptr %.0264, i64 %254
  store i8 %252, ptr %255, align 1, !tbaa !14
  %256 = lshr i32 %242, 6
  %257 = trunc i32 %256 to i8
  %258 = and i8 %257, 63
  %259 = or disjoint i8 %258, -128
  %260 = add i32 %.0261, 3
  %261 = zext i32 %253 to i64
  %262 = getelementptr inbounds i8, ptr %.0264, i64 %261
  store i8 %259, ptr %262, align 1, !tbaa !14
  %263 = and i8 %239, 63
  %264 = or disjoint i8 %263, -128
  %265 = add i32 %.0261, 4
  %266 = zext i32 %260 to i64
  %267 = getelementptr inbounds i8, ptr %.0264, i64 %266
  store i8 %264, ptr %267, align 1, !tbaa !14
  br label %737

268:                                              ; preds = %64
  %269 = load i32, ptr %17, align 8, !tbaa !19
  %.not386 = icmp eq i32 %269, 0
  br i1 %.not386, label %270, label %273

270:                                              ; preds = %268
  %271 = zext i32 %.0261 to i64
  %272 = getelementptr inbounds i8, ptr %.0264, i64 %271
  store i8 %52, ptr %272, align 1, !tbaa !14
  br label %273

273:                                              ; preds = %270, %268
  %274 = add i32 %.0261, 1
  br label %737

275:                                              ; preds = %62
  switch i8 %52, label %317 [
    i8 92, label %276
    i8 34, label %278
  ]

276:                                              ; preds = %275
  %277 = or disjoint i64 %.0282, 16
  br label %737

278:                                              ; preds = %275
  %279 = load i32, ptr %17, align 8, !tbaa !19
  %.not320 = icmp eq i32 %279, 0
  br i1 %.not320, label %280, label %283

280:                                              ; preds = %278
  %281 = zext i32 %.0261 to i64
  %282 = getelementptr inbounds i8, ptr %.0264, i64 %281
  store i8 0, ptr %282, align 1, !tbaa !14
  br label %283

283:                                              ; preds = %280, %278
  %284 = and i64 %.0282, -49
  %285 = load ptr, ptr %6, align 8, !tbaa !5
  %286 = getelementptr inbounds i8, ptr %285, i64 8
  %287 = load i32, ptr %286, align 8, !tbaa !23
  switch i32 %287, label %324 [
    i32 5, label %288
    i32 1, label %291
  ]

288:                                              ; preds = %283
  %289 = getelementptr inbounds i8, ptr %285, i64 16
  store i32 %.0261, ptr %289, align 8, !tbaa !14
  %290 = or i64 %284, 1
  br label %324

291:                                              ; preds = %283
  %292 = load i32, ptr %17, align 8, !tbaa !19
  %.not321 = icmp eq i32 %292, 0
  br i1 %.not321, label %295, label %293

293:                                              ; preds = %291
  %294 = getelementptr inbounds i8, ptr %285, i64 24
  br label %312

295:                                              ; preds = %291
  %296 = getelementptr inbounds i8, ptr %285, i64 32
  %297 = load ptr, ptr %296, align 8, !tbaa !14
  %298 = getelementptr inbounds i8, ptr %285, i64 16
  %299 = getelementptr inbounds i8, ptr %285, i64 24
  %300 = load ptr, ptr %299, align 8, !tbaa !14
  %301 = load i32, ptr %298, align 8, !tbaa !14
  %302 = zext i32 %301 to i64
  %303 = getelementptr inbounds %struct._json_object_entry, ptr %300, i64 %302
  store ptr %297, ptr %303, align 8, !tbaa !25
  %304 = load ptr, ptr %6, align 8, !tbaa !5
  %305 = getelementptr inbounds i8, ptr %304, i64 16
  %306 = getelementptr inbounds i8, ptr %304, i64 24
  %307 = load ptr, ptr %306, align 8, !tbaa !14
  %308 = load i32, ptr %305, align 8, !tbaa !14
  %309 = zext i32 %308 to i64
  %310 = getelementptr inbounds %struct._json_object_entry, ptr %307, i64 %309, i32 1
  store i32 %.0261, ptr %310, align 8, !tbaa !27
  %311 = getelementptr inbounds i8, ptr %304, i64 32
  br label %312

312:                                              ; preds = %295, %293
  %.sink753 = phi ptr [ %311, %295 ], [ %294, %293 ]
  %.sink = add i32 %.0261, 1
  %313 = load ptr, ptr %.sink753, align 8, !tbaa !14
  %314 = zext i32 %.sink to i64
  %315 = getelementptr inbounds i8, ptr %313, i64 %314
  store ptr %315, ptr %.sink753, align 8, !tbaa !14
  %316 = or i64 %284, 72
  br label %737

317:                                              ; preds = %275
  %318 = load i32, ptr %17, align 8, !tbaa !19
  %.not319 = icmp eq i32 %318, 0
  br i1 %.not319, label %319, label %322

319:                                              ; preds = %317
  %320 = zext i32 %.0261 to i64
  %321 = getelementptr inbounds i8, ptr %.0264, i64 %320
  store i8 %52, ptr %321, align 1, !tbaa !14
  br label %322

322:                                              ; preds = %319, %317
  %323 = add i32 %.0261, 1
  br label %737

324:                                              ; preds = %.thread, %283, %288, %51
  %325 = phi i8 [ 34, %283 ], [ 34, %288 ], [ %52, %51 ], [ 0, %.thread ]
  %.1283 = phi i64 [ %284, %283 ], [ %290, %288 ], [ %.0282, %51 ], [ %.0282, %.thread ]
  %.1265 = phi ptr [ null, %283 ], [ null, %288 ], [ %.0264, %51 ], [ %.0264, %.thread ]
  %326 = load i32, ptr %15, align 8, !tbaa !28
  %327 = and i32 %326, 1
  %.not322 = icmp eq i32 %327, 0
  br i1 %.not322, label %384, label %328

328:                                              ; preds = %324
  %329 = and i64 %.1283, 24576
  %.not323 = icmp eq i64 %329, 0
  br i1 %.not323, label %353, label %330

330:                                              ; preds = %328
  %331 = and i64 %.1283, 8192
  %.not326 = icmp eq i64 %331, 0
  br i1 %.not326, label %337, label %332

332:                                              ; preds = %330
  switch i8 %325, label %737 [
    i8 13, label %333
    i8 10, label %333
    i8 0, label %333
  ]

333:                                              ; preds = %332, %332, %332
  %334 = and i64 %.1283, -8193
  %335 = load ptr, ptr %18, align 8, !tbaa !21
  %336 = getelementptr inbounds i8, ptr %335, i64 -1
  store ptr %336, ptr %18, align 8, !tbaa !21
  br label %737

337:                                              ; preds = %330
  %338 = and i64 %.1283, 16384
  %.not327 = icmp eq i64 %338, 0
  br i1 %.not327, label %384, label %339

339:                                              ; preds = %337
  switch i8 %325, label %737 [
    i8 0, label %340
    i8 42, label %344
  ]

340:                                              ; preds = %339
  %341 = load i32, ptr %20, align 8, !tbaa !20
  %342 = load i32, ptr %19, align 4, !tbaa !22
  %343 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %5, ptr noundef nonnull dereferenceable(1) @.str.2, i32 noundef %341, i32 noundef %342) #7
  br label %.thread457

344:                                              ; preds = %339
  %345 = load ptr, ptr %18, align 8, !tbaa !21
  %346 = icmp ult ptr %345, %47
  br i1 %346, label %347, label %737

347:                                              ; preds = %344
  %348 = getelementptr inbounds i8, ptr %345, i64 1
  %349 = load i8, ptr %348, align 1, !tbaa !14
  %350 = icmp eq i8 %349, 47
  br i1 %350, label %351, label %737

351:                                              ; preds = %347
  %352 = and i64 %.1283, -24577
  store ptr %348, ptr %18, align 8, !tbaa !21
  br label %737

353:                                              ; preds = %328
  %354 = icmp eq i8 %325, 47
  br i1 %354, label %355, label %384

355:                                              ; preds = %353
  %356 = and i64 %.1283, 136
  %.not324 = icmp eq i64 %356, 0
  br i1 %.not324, label %357, label %365

357:                                              ; preds = %355
  %358 = load ptr, ptr %6, align 8, !tbaa !5
  %359 = getelementptr inbounds i8, ptr %358, i64 8
  %360 = load i32, ptr %359, align 8, !tbaa !23
  %.not325 = icmp eq i32 %360, 1
  br i1 %.not325, label %365, label %361

361:                                              ; preds = %357
  %362 = load i32, ptr %20, align 8, !tbaa !20
  %363 = load i32, ptr %19, align 4, !tbaa !22
  %364 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %5, ptr noundef nonnull dereferenceable(1) @.str.3, i32 noundef %362, i32 noundef %363) #7
  br label %.thread457

365:                                              ; preds = %357, %355
  %366 = load ptr, ptr %18, align 8, !tbaa !21
  %367 = getelementptr inbounds i8, ptr %366, i64 1
  store ptr %367, ptr %18, align 8, !tbaa !21
  %368 = icmp eq ptr %367, %39
  br i1 %368, label %369, label %373

369:                                              ; preds = %365
  %370 = load i32, ptr %20, align 8, !tbaa !20
  %371 = load i32, ptr %19, align 4, !tbaa !22
  %372 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %5, ptr noundef nonnull dereferenceable(1) @.str.4, i32 noundef %370, i32 noundef %371) #7
  br label %.thread457

373:                                              ; preds = %365
  %374 = load i8, ptr %367, align 1, !tbaa !14
  switch i8 %374, label %379 [
    i8 47, label %375
    i8 42, label %377
  ]

375:                                              ; preds = %373
  %376 = or disjoint i64 %.1283, 8192
  br label %737

377:                                              ; preds = %373
  %378 = or disjoint i64 %.1283, 16384
  br label %737

379:                                              ; preds = %373
  %380 = sext i8 %374 to i32
  %381 = load i32, ptr %20, align 8, !tbaa !20
  %382 = load i32, ptr %19, align 4, !tbaa !22
  %383 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %5, ptr noundef nonnull dereferenceable(1) @.str.5, i32 noundef %381, i32 noundef %382, i32 noundef %380) #7
  br label %.thread457

384:                                              ; preds = %337, %353, %324
  %385 = and i64 %.1283, 128
  %.not328 = icmp eq i64 %385, 0
  br i1 %.not328, label %395, label %386

386:                                              ; preds = %384
  switch i8 %325, label %390 [
    i8 0, label %740
    i8 10, label %387
    i8 32, label %737
    i8 9, label %737
    i8 13, label %737
  ]

387:                                              ; preds = %386
  %388 = load i32, ptr %20, align 8, !tbaa !20
  %389 = add i32 %388, 1
  store i32 %389, ptr %20, align 8, !tbaa !20
  store i32 0, ptr %19, align 4, !tbaa !22
  br label %737

390:                                              ; preds = %386
  %391 = sext i8 %325 to i32
  %392 = load i32, ptr %20, align 8, !tbaa !20
  %393 = load i32, ptr %19, align 4, !tbaa !22
  %394 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %5, ptr noundef nonnull dereferenceable(1) @.str.6, i32 noundef %392, i32 noundef %393, i32 noundef %391) #7
  br label %.thread457

395:                                              ; preds = %384
  %396 = and i64 %.1283, 8
  %.not329 = icmp eq i64 %396, 0
  br i1 %.not329, label %544, label %397

397:                                              ; preds = %395
  switch i8 %325, label %414 [
    i8 10, label %398
    i8 32, label %737
    i8 9, label %737
    i8 13, label %737
    i8 93, label %401
  ]

398:                                              ; preds = %397
  %399 = load i32, ptr %20, align 8, !tbaa !20
  %400 = add i32 %399, 1
  store i32 %400, ptr %20, align 8, !tbaa !20
  store i32 0, ptr %19, align 4, !tbaa !22
  br label %737

401:                                              ; preds = %397
  %402 = load ptr, ptr %6, align 8, !tbaa !5
  %.not344 = icmp eq ptr %402, null
  br i1 %.not344, label %410, label %403

403:                                              ; preds = %401
  %404 = getelementptr inbounds i8, ptr %402, i64 8
  %405 = load i32, ptr %404, align 8, !tbaa !23
  %406 = icmp eq i32 %405, 2
  br i1 %406, label %407, label %410

407:                                              ; preds = %403
  %408 = and i64 %.1283, -142
  %409 = or disjoint i64 %408, 1
  br label %693

410:                                              ; preds = %403, %401
  %411 = load i32, ptr %20, align 8, !tbaa !20
  %412 = load i32, ptr %19, align 4, !tbaa !22
  %413 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %5, ptr noundef nonnull dereferenceable(1) @.str.7, i32 noundef %411, i32 noundef %412) #7
  br label %.thread457

414:                                              ; preds = %397
  %415 = and i64 %.1283, 4
  %.not345 = icmp eq i64 %415, 0
  br i1 %.not345, label %425, label %416

416:                                              ; preds = %414
  %417 = icmp eq i8 %325, 44
  br i1 %417, label %418, label %420

418:                                              ; preds = %416
  %419 = and i64 %.1283, -133
  br label %737

420:                                              ; preds = %416
  %421 = sext i8 %325 to i32
  %422 = load i32, ptr %20, align 8, !tbaa !20
  %423 = load i32, ptr %19, align 4, !tbaa !22
  %424 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %5, ptr noundef nonnull dereferenceable(1) @.str.8, i32 noundef %422, i32 noundef %423, i32 noundef %421) #7
  br label %.thread457

425:                                              ; preds = %414
  %426 = and i64 %.1283, 64
  %.not346 = icmp eq i64 %426, 0
  br i1 %.not346, label %436, label %427

427:                                              ; preds = %425
  %428 = icmp eq i8 %325, 58
  br i1 %428, label %429, label %431

429:                                              ; preds = %427
  %430 = and i64 %.1283, -197
  br label %737

431:                                              ; preds = %427
  %432 = sext i8 %325 to i32
  %433 = load i32, ptr %20, align 8, !tbaa !20
  %434 = load i32, ptr %19, align 4, !tbaa !22
  %435 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %5, ptr noundef nonnull dereferenceable(1) @.str.9, i32 noundef %433, i32 noundef %434, i32 noundef %432) #7
  br label %.thread457

436:                                              ; preds = %425
  %437 = and i64 %.1283, -205
  switch i8 %325, label %508 [
    i8 123, label %438
    i8 91, label %440
    i8 34, label %442
    i8 116, label %449
    i8 102, label %469
    i8 110, label %490
  ]

438:                                              ; preds = %436
  %439 = call i32 @new_value(ptr noundef nonnull %9, ptr noundef nonnull %6, ptr noundef nonnull %7, ptr noundef nonnull %8, i32 noundef 1)
  %.not362 = icmp eq i32 %439, 0
  br i1 %.not362, label %select.unfold, label %737

440:                                              ; preds = %436
  %441 = call i32 @new_value(ptr noundef nonnull %9, ptr noundef nonnull %6, ptr noundef nonnull %7, ptr noundef nonnull %8, i32 noundef 2)
  %.not361 = icmp eq i32 %441, 0
  br i1 %.not361, label %select.unfold, label %737

442:                                              ; preds = %436
  %443 = call i32 @new_value(ptr noundef nonnull %9, ptr noundef nonnull %6, ptr noundef nonnull %7, ptr noundef nonnull %8, i32 noundef 5)
  %.not360 = icmp eq i32 %443, 0
  br i1 %.not360, label %select.unfold, label %444

444:                                              ; preds = %442
  %445 = or i64 %437, 32
  %446 = load ptr, ptr %6, align 8, !tbaa !5
  %447 = getelementptr inbounds i8, ptr %446, i64 24
  %448 = load ptr, ptr %447, align 8, !tbaa !14
  br label %737

449:                                              ; preds = %436
  %450 = load ptr, ptr %18, align 8, !tbaa !21
  %451 = ptrtoint ptr %450 to i64
  %452 = sub i64 %46, %451
  %453 = icmp slt i64 %452, 3
  br i1 %453, label %745, label %454

454:                                              ; preds = %449
  %455 = getelementptr inbounds i8, ptr %450, i64 1
  store ptr %455, ptr %18, align 8, !tbaa !21
  %456 = load i8, ptr %455, align 1, !tbaa !14
  %.not356 = icmp eq i8 %456, 114
  br i1 %.not356, label %457, label %745

457:                                              ; preds = %454
  %458 = getelementptr inbounds i8, ptr %450, i64 2
  store ptr %458, ptr %18, align 8, !tbaa !21
  %459 = load i8, ptr %458, align 1, !tbaa !14
  %.not357 = icmp eq i8 %459, 117
  br i1 %.not357, label %460, label %745

460:                                              ; preds = %457
  %461 = getelementptr inbounds i8, ptr %450, i64 3
  store ptr %461, ptr %18, align 8, !tbaa !21
  %462 = load i8, ptr %461, align 1, !tbaa !14
  %.not358 = icmp eq i8 %462, 101
  br i1 %.not358, label %463, label %745

463:                                              ; preds = %460
  %464 = call i32 @new_value(ptr noundef nonnull %9, ptr noundef nonnull %6, ptr noundef nonnull %7, ptr noundef nonnull %8, i32 noundef 6)
  %.not359 = icmp eq i32 %464, 0
  br i1 %.not359, label %select.unfold, label %465

465:                                              ; preds = %463
  %466 = load ptr, ptr %6, align 8, !tbaa !5
  %467 = getelementptr inbounds i8, ptr %466, i64 16
  store i32 1, ptr %467, align 8, !tbaa !14
  %468 = or i64 %437, 1
  br label %693

469:                                              ; preds = %436
  %470 = load ptr, ptr %18, align 8, !tbaa !21
  %471 = ptrtoint ptr %470 to i64
  %472 = sub i64 %46, %471
  %473 = icmp slt i64 %472, 4
  br i1 %473, label %745, label %474

474:                                              ; preds = %469
  %475 = getelementptr inbounds i8, ptr %470, i64 1
  store ptr %475, ptr %18, align 8, !tbaa !21
  %476 = load i8, ptr %475, align 1, !tbaa !14
  %.not351 = icmp eq i8 %476, 97
  br i1 %.not351, label %477, label %745

477:                                              ; preds = %474
  %478 = getelementptr inbounds i8, ptr %470, i64 2
  store ptr %478, ptr %18, align 8, !tbaa !21
  %479 = load i8, ptr %478, align 1, !tbaa !14
  %.not352 = icmp eq i8 %479, 108
  br i1 %.not352, label %480, label %745

480:                                              ; preds = %477
  %481 = getelementptr inbounds i8, ptr %470, i64 3
  store ptr %481, ptr %18, align 8, !tbaa !21
  %482 = load i8, ptr %481, align 1, !tbaa !14
  %.not353 = icmp eq i8 %482, 115
  br i1 %.not353, label %483, label %745

483:                                              ; preds = %480
  %484 = getelementptr inbounds i8, ptr %470, i64 4
  store ptr %484, ptr %18, align 8, !tbaa !21
  %485 = load i8, ptr %484, align 1, !tbaa !14
  %.not354 = icmp eq i8 %485, 101
  br i1 %.not354, label %486, label %745

486:                                              ; preds = %483
  %487 = call i32 @new_value(ptr noundef nonnull %9, ptr noundef nonnull %6, ptr noundef nonnull %7, ptr noundef nonnull %8, i32 noundef 6)
  %.not355 = icmp eq i32 %487, 0
  br i1 %.not355, label %select.unfold, label %488

488:                                              ; preds = %486
  %489 = or i64 %437, 1
  br label %693

490:                                              ; preds = %436
  %491 = load ptr, ptr %18, align 8, !tbaa !21
  %492 = ptrtoint ptr %491 to i64
  %493 = sub i64 %46, %492
  %494 = icmp slt i64 %493, 3
  br i1 %494, label %745, label %495

495:                                              ; preds = %490
  %496 = getelementptr inbounds i8, ptr %491, i64 1
  store ptr %496, ptr %18, align 8, !tbaa !21
  %497 = load i8, ptr %496, align 1, !tbaa !14
  %.not347 = icmp eq i8 %497, 117
  br i1 %.not347, label %498, label %745

498:                                              ; preds = %495
  %499 = getelementptr inbounds i8, ptr %491, i64 2
  store ptr %499, ptr %18, align 8, !tbaa !21
  %500 = load i8, ptr %499, align 1, !tbaa !14
  %.not348 = icmp eq i8 %500, 108
  br i1 %.not348, label %501, label %745

501:                                              ; preds = %498
  %502 = getelementptr inbounds i8, ptr %491, i64 3
  store ptr %502, ptr %18, align 8, !tbaa !21
  %503 = load i8, ptr %502, align 1, !tbaa !14
  %.not349 = icmp eq i8 %503, 108
  br i1 %.not349, label %504, label %745

504:                                              ; preds = %501
  %505 = call i32 @new_value(ptr noundef nonnull %9, ptr noundef nonnull %6, ptr noundef nonnull %7, ptr noundef nonnull %8, i32 noundef 7)
  %.not350 = icmp eq i32 %505, 0
  br i1 %.not350, label %select.unfold, label %506

506:                                              ; preds = %504
  %507 = or i64 %437, 1
  br label %693

508:                                              ; preds = %436
  %509 = tail call ptr @__ctype_b_loc() #8
  %510 = load ptr, ptr %509, align 8, !tbaa !5
  %511 = sext i8 %325 to i64
  %512 = getelementptr inbounds i16, ptr %510, i64 %511
  %513 = load i16, ptr %512, align 2, !tbaa !29
  %514 = and i16 %513, 2048
  %515 = icmp ne i16 %514, 0
  %516 = icmp eq i8 %325, 45
  %or.cond7 = select i1 %515, i1 true, i1 %516
  br i1 %or.cond7, label %517, label %539

517:                                              ; preds = %508
  %518 = call i32 @new_value(ptr noundef nonnull %9, ptr noundef nonnull %6, ptr noundef nonnull %7, ptr noundef nonnull %8, i32 noundef 3)
  %.not363 = icmp eq i32 %518, 0
  br i1 %.not363, label %select.unfold, label %519

519:                                              ; preds = %517
  %520 = load i32, ptr %17, align 8, !tbaa !19
  %.not364 = icmp eq i32 %520, 0
  br i1 %.not364, label %.preheader, label %533

.preheader:                                       ; preds = %519, %529
  %.0260 = phi i8 [ %530, %529 ], [ %325, %519 ]
  %521 = load ptr, ptr %509, align 8, !tbaa !5
  %522 = sext i8 %.0260 to i64
  %523 = getelementptr inbounds i16, ptr %521, i64 %522
  %524 = load i16, ptr %523, align 2, !tbaa !29
  %.fr474 = freeze i16 %524
  %525 = and i16 %.fr474, 2048
  %.not475 = icmp eq i16 %525, 0
  br i1 %.not475, label %switch.early.test, label %.critedge

switch.early.test:                                ; preds = %.preheader
  switch i8 %.0260, label %531 [
    i8 101, label %.critedge
    i8 69, label %.critedge
    i8 46, label %.critedge
    i8 45, label %.critedge
    i8 43, label %.critedge
  ]

.critedge:                                        ; preds = %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %switch.early.test, %.preheader
  %526 = load ptr, ptr %18, align 8, !tbaa !21
  %527 = getelementptr inbounds i8, ptr %526, i64 1
  store ptr %527, ptr %18, align 8, !tbaa !21
  %528 = icmp eq ptr %527, %39
  br i1 %528, label %531, label %529

529:                                              ; preds = %.critedge
  %530 = load i8, ptr %527, align 1, !tbaa !14
  br label %.preheader, !llvm.loop !31

531:                                              ; preds = %.critedge, %switch.early.test
  %532 = or i64 %437, 3
  br label %693

533:                                              ; preds = %519
  %534 = and i64 %.1283, -8141
  br i1 %516, label %537, label %535

535:                                              ; preds = %533
  %536 = or i64 %534, 2
  br label %693

537:                                              ; preds = %533
  %538 = or disjoint i64 %534, 256
  br label %737

539:                                              ; preds = %508
  %540 = sext i8 %325 to i32
  %541 = load i32, ptr %20, align 8, !tbaa !20
  %542 = load i32, ptr %19, align 4, !tbaa !22
  %543 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %5, ptr noundef nonnull dereferenceable(1) @.str.10, i32 noundef %541, i32 noundef %542, i32 noundef %540) #7
  br label %.thread457

544:                                              ; preds = %395
  %545 = load ptr, ptr %6, align 8, !tbaa !5
  %546 = getelementptr inbounds i8, ptr %545, i64 8
  %547 = load i32, ptr %546, align 8, !tbaa !23
  switch i32 %547, label %693 [
    i32 1, label %548
    i32 3, label %574
    i32 4, label %574
  ]

548:                                              ; preds = %544
  switch i8 %325, label %569 [
    i8 10, label %549
    i8 32, label %737
    i8 9, label %737
    i8 13, label %737
    i8 34, label %552
    i8 125, label %562
    i8 44, label %565
  ]

549:                                              ; preds = %548
  %550 = load i32, ptr %20, align 8, !tbaa !20
  %551 = add i32 %550, 1
  store i32 %551, ptr %20, align 8, !tbaa !20
  store i32 0, ptr %19, align 4, !tbaa !22
  br label %737

552:                                              ; preds = %548
  %553 = and i64 %.1283, 4
  %.not343 = icmp eq i64 %553, 0
  br i1 %.not343, label %558, label %554

554:                                              ; preds = %552
  %555 = load i32, ptr %20, align 8, !tbaa !20
  %556 = load i32, ptr %19, align 4, !tbaa !22
  %557 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %5, ptr noundef nonnull dereferenceable(1) @.str.11, i32 noundef %555, i32 noundef %556) #7
  br label %.thread457

558:                                              ; preds = %552
  %559 = or i64 %.1283, 32
  %560 = getelementptr inbounds i8, ptr %545, i64 32
  %561 = load ptr, ptr %560, align 8, !tbaa !14
  br label %693

562:                                              ; preds = %548
  %563 = and i64 %.1283, -142
  %564 = or disjoint i64 %563, 1
  br label %693

565:                                              ; preds = %548
  %566 = and i64 %.1283, 4
  %.not342 = icmp eq i64 %566, 0
  br i1 %.not342, label %569, label %567

567:                                              ; preds = %565
  %568 = and i64 %.1283, -141
  br label %693

569:                                              ; preds = %565, %548
  %570 = sext i8 %325 to i32
  %571 = load i32, ptr %20, align 8, !tbaa !20
  %572 = load i32, ptr %19, align 4, !tbaa !22
  %573 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %5, ptr noundef nonnull dereferenceable(1) @.str.12, i32 noundef %571, i32 noundef %572, i32 noundef %570) #7
  br label %.thread457

574:                                              ; preds = %544, %544
  %575 = tail call ptr @__ctype_b_loc() #8
  %576 = load ptr, ptr %575, align 8, !tbaa !5
  %577 = sext i8 %325 to i32
  %578 = sext i8 %325 to i64
  %579 = getelementptr inbounds i16, ptr %576, i64 %578
  %580 = load i16, ptr %579, align 2, !tbaa !29
  %581 = and i16 %580, 2048
  %.not330 = icmp eq i16 %581, 0
  br i1 %.not330, label %614, label %582

582:                                              ; preds = %574
  %583 = add nsw i64 %.1279, 1
  %584 = icmp ne i32 %547, 3
  %585 = and i64 %.1283, 1024
  %.not339 = icmp eq i64 %585, 0
  %or.cond = select i1 %584, i1 %.not339, i1 false
  br i1 %or.cond, label %609, label %586

586:                                              ; preds = %582
  br i1 %.not339, label %587, label %603

587:                                              ; preds = %586
  %588 = and i64 %.1283, 512
  %.not341 = icmp eq i64 %588, 0
  br i1 %.not341, label %593, label %589

589:                                              ; preds = %587
  %590 = load i32, ptr %20, align 8, !tbaa !20
  %591 = load i32, ptr %19, align 4, !tbaa !22
  %592 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %5, ptr noundef nonnull dereferenceable(1) @.str.13, i32 noundef %590, i32 noundef %591, i32 noundef %577) #7
  br label %.thread457

593:                                              ; preds = %587
  %594 = icmp eq i64 %.1279, 0
  %595 = icmp eq i8 %325, 48
  %or.cond22 = select i1 %594, i1 %595, i1 false
  %596 = or disjoint i64 %.1283, 512
  %spec.select = select i1 %or.cond22, i64 %596, i64 %.1283
  %597 = getelementptr inbounds i8, ptr %545, i64 16
  %598 = load i64, ptr %597, align 8, !tbaa !14
  %599 = mul nsw i64 %598, 10
  %600 = add nsw i32 %577, -48
  %601 = sext i32 %600 to i64
  %602 = add nsw i64 %599, %601
  store i64 %602, ptr %597, align 8, !tbaa !14
  br label %737

603:                                              ; preds = %586
  %604 = or i64 %.1283, 2048
  %605 = mul nsw i64 %.1275, 10
  %606 = add nsw i32 %577, -48
  %607 = sext i32 %606 to i64
  %608 = add nsw i64 %605, %607
  br label %737

609:                                              ; preds = %582
  %610 = mul nsw i64 %.1271, 10
  %611 = add nsw i32 %577, -48
  %612 = sext i32 %611 to i64
  %613 = add nsw i64 %610, %612
  br label %737

614:                                              ; preds = %574
  %615 = icmp eq i8 %325, 45
  switch i8 %325, label %630 [
    i8 45, label %616
    i8 43, label %616
    i8 46, label %619
  ]

616:                                              ; preds = %614, %614
  %617 = and i64 %.1283, 3072
  %or.cond393 = icmp eq i64 %617, 1024
  br i1 %or.cond393, label %618, label %630

618:                                              ; preds = %616
  %spec.select394.v = select i1 %615, i64 6144, i64 2048
  %spec.select394 = or i64 %spec.select394.v, %.1283
  br label %737

619:                                              ; preds = %614
  %620 = icmp eq i32 %547, 3
  br i1 %620, label %621, label %.thread412

621:                                              ; preds = %619
  %.not331 = icmp eq i64 %.1279, 0
  br i1 %.not331, label %622, label %626

622:                                              ; preds = %621
  %623 = load i32, ptr %20, align 8, !tbaa !20
  %624 = load i32, ptr %19, align 4, !tbaa !22
  %625 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %5, ptr noundef nonnull dereferenceable(1) @.str.14, i32 noundef %623, i32 noundef %624) #7
  br label %.thread457

626:                                              ; preds = %621
  store i32 4, ptr %546, align 8, !tbaa !23
  %627 = getelementptr inbounds i8, ptr %545, i64 16
  %628 = load i64, ptr %627, align 8, !tbaa !14
  %629 = sitofp i64 %628 to double
  store double %629, ptr %627, align 8, !tbaa !14
  br label %737

630:                                              ; preds = %614, %616
  %631 = and i64 %.1283, 1024
  %.not334 = icmp eq i64 %631, 0
  br i1 %.not334, label %633, label %662

.thread412:                                       ; preds = %619
  %632 = and i64 %.1283, 1024
  %.not334413 = icmp eq i64 %632, 0
  br i1 %.not334413, label %.thread414, label %662

633:                                              ; preds = %630
  %634 = icmp eq i32 %547, 4
  br i1 %634, label %.thread414, label %648

.thread414:                                       ; preds = %.thread412, %633
  %.not335 = icmp eq i64 %.1279, 0
  br i1 %.not335, label %635, label %639

635:                                              ; preds = %.thread414
  %636 = load i32, ptr %20, align 8, !tbaa !20
  %637 = load i32, ptr %19, align 4, !tbaa !22
  %638 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %5, ptr noundef nonnull dereferenceable(1) @.str.15, i32 noundef %636, i32 noundef %637) #7
  br label %.thread457

639:                                              ; preds = %.thread414
  %640 = sitofp i64 %.1271 to double
  %641 = sitofp i64 %.1279 to double
  %642 = call double @pow(double noundef 1.000000e+01, double noundef %641) #7
  %643 = fdiv double %640, %642
  %644 = load ptr, ptr %6, align 8, !tbaa !5
  %645 = getelementptr inbounds i8, ptr %644, i64 16
  %646 = load double, ptr %645, align 8, !tbaa !14
  %647 = fadd double %643, %646
  store double %647, ptr %645, align 8, !tbaa !14
  br label %648

648:                                              ; preds = %639, %633
  %649 = phi ptr [ %644, %639 ], [ %545, %633 ]
  %650 = and i8 %325, -33
  %or.cond28 = icmp eq i8 %650, 69
  br i1 %or.cond28, label %651, label %677

651:                                              ; preds = %648
  %652 = getelementptr inbounds i8, ptr %649, i64 8
  %653 = load i32, ptr %652, align 8, !tbaa !23
  %654 = icmp eq i32 %653, 3
  br i1 %654, label %655, label %659

655:                                              ; preds = %651
  store i32 4, ptr %652, align 8, !tbaa !23
  %656 = getelementptr inbounds i8, ptr %649, i64 16
  %657 = load i64, ptr %656, align 8, !tbaa !14
  %658 = sitofp i64 %657 to double
  store double %658, ptr %656, align 8, !tbaa !14
  br label %659

659:                                              ; preds = %655, %651
  %660 = and i64 %.1283, -1673
  %661 = or disjoint i64 %660, 1024
  br label %737

662:                                              ; preds = %.thread412, %630
  %.not336 = icmp eq i64 %.1279, 0
  br i1 %.not336, label %663, label %667

663:                                              ; preds = %662
  %664 = load i32, ptr %20, align 8, !tbaa !20
  %665 = load i32, ptr %19, align 4, !tbaa !22
  %666 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %5, ptr noundef nonnull dereferenceable(1) @.str.16, i32 noundef %664, i32 noundef %665) #7
  br label %.thread457

667:                                              ; preds = %662
  %668 = and i64 %.1283, 4096
  %.not337 = icmp eq i64 %668, 0
  %669 = sub nsw i64 0, %.1275
  %670 = select i1 %.not337, i64 %.1275, i64 %669
  %671 = sitofp i64 %670 to double
  %672 = call double @pow(double noundef 1.000000e+01, double noundef %671) #7
  %673 = load ptr, ptr %6, align 8, !tbaa !5
  %674 = getelementptr inbounds i8, ptr %673, i64 16
  %675 = load double, ptr %674, align 8, !tbaa !14
  %676 = fmul double %672, %675
  store double %676, ptr %674, align 8, !tbaa !14
  br label %677

677:                                              ; preds = %648, %667
  %678 = phi ptr [ %649, %648 ], [ %673, %667 ]
  %679 = and i64 %.1283, 256
  %.not338 = icmp eq i64 %679, 0
  br i1 %.not338, label %691, label %680

680:                                              ; preds = %677
  %681 = getelementptr inbounds i8, ptr %678, i64 8
  %682 = load i32, ptr %681, align 8, !tbaa !23
  %683 = icmp eq i32 %682, 3
  %684 = getelementptr inbounds i8, ptr %678, i64 16
  br i1 %683, label %685, label %688

685:                                              ; preds = %680
  %686 = load i64, ptr %684, align 8, !tbaa !14
  %687 = sub nsw i64 0, %686
  store i64 %687, ptr %684, align 8, !tbaa !14
  br label %691

688:                                              ; preds = %680
  %689 = load double, ptr %684, align 8, !tbaa !14
  %690 = fneg double %689
  store double %690, ptr %684, align 8, !tbaa !14
  br label %691

691:                                              ; preds = %685, %688, %677
  %692 = or i64 %.1283, 3
  br label %693

693:                                              ; preds = %691, %567, %562, %558, %544, %407, %535, %531, %506, %488, %465
  %.6 = phi i64 [ %536, %535 ], [ %532, %531 ], [ %507, %506 ], [ %489, %488 ], [ %468, %465 ], [ %409, %407 ], [ %.1283, %544 ], [ %692, %691 ], [ %568, %567 ], [ %564, %562 ], [ %559, %558 ]
  %.2280 = phi i64 [ 0, %535 ], [ %.1279, %531 ], [ %.1279, %506 ], [ %.1279, %488 ], [ %.1279, %465 ], [ %.1279, %407 ], [ %.1279, %544 ], [ %.1279, %691 ], [ %.1279, %567 ], [ %.1279, %562 ], [ %.1279, %558 ]
  %.2276 = phi i64 [ 0, %535 ], [ %.1275, %531 ], [ %.1275, %506 ], [ %.1275, %488 ], [ %.1275, %465 ], [ %.1275, %407 ], [ %.1275, %544 ], [ %.1275, %691 ], [ %.1275, %567 ], [ %.1275, %562 ], [ %.1275, %558 ]
  %.2272 = phi i64 [ 0, %535 ], [ %.1271, %531 ], [ %.1271, %506 ], [ %.1271, %488 ], [ %.1271, %465 ], [ %.1271, %407 ], [ %.1271, %544 ], [ %.1271, %691 ], [ %.1271, %567 ], [ %.1271, %562 ], [ %.1271, %558 ]
  %.2266 = phi ptr [ %.1265, %535 ], [ %.1265, %531 ], [ %.1265, %506 ], [ %.1265, %488 ], [ %.1265, %465 ], [ %.1265, %407 ], [ %.1265, %544 ], [ %.1265, %691 ], [ %.1265, %567 ], [ %.1265, %562 ], [ %561, %558 ]
  %.2263 = phi i32 [ %.0261, %535 ], [ %.0261, %531 ], [ %.0261, %506 ], [ %.0261, %488 ], [ %.0261, %465 ], [ %.0261, %407 ], [ %.0261, %544 ], [ %.0261, %691 ], [ %.0261, %567 ], [ %.0261, %562 ], [ 0, %558 ]
  %694 = and i64 %.6, 2
  %.not366 = icmp eq i64 %694, 0
  br i1 %.not366, label %699, label %695

695:                                              ; preds = %693
  %696 = and i64 %.6, -3
  %697 = load ptr, ptr %18, align 8, !tbaa !21
  %698 = getelementptr inbounds i8, ptr %697, i64 -1
  store ptr %698, ptr %18, align 8, !tbaa !21
  br label %699

699:                                              ; preds = %695, %693
  %.7 = phi i64 [ %696, %695 ], [ %.6, %693 ]
  %700 = and i64 %.7, 1
  %.not367 = icmp eq i64 %700, 0
  br i1 %.not367, label %737, label %701

701:                                              ; preds = %699
  %702 = and i64 %.7, -6
  %703 = load ptr, ptr %6, align 8, !tbaa !5
  %704 = load ptr, ptr %703, align 8, !tbaa !33
  %.not368 = icmp eq ptr %704, null
  br i1 %.not368, label %705, label %707

705:                                              ; preds = %701
  %706 = or i64 %702, 132
  br label %737

707:                                              ; preds = %701
  %708 = getelementptr inbounds i8, ptr %704, i64 8
  %709 = load i32, ptr %708, align 8, !tbaa !23
  %710 = icmp eq i32 %709, 2
  %spec.select395.v = select i1 %710, i64 12, i64 4
  %spec.select395 = or i64 %spec.select395.v, %702
  %711 = load i32, ptr %17, align 8, !tbaa !19
  %.not369 = icmp eq i32 %711, 0
  br i1 %.not369, label %712, label %727

712:                                              ; preds = %707
  switch i32 %709, label %727 [
    i32 1, label %713
    i32 2, label %720
  ]

713:                                              ; preds = %712
  %714 = getelementptr inbounds i8, ptr %704, i64 16
  %715 = getelementptr inbounds i8, ptr %704, i64 24
  %716 = load ptr, ptr %715, align 8, !tbaa !14
  %717 = load i32, ptr %714, align 8, !tbaa !14
  %718 = zext i32 %717 to i64
  %719 = getelementptr inbounds %struct._json_object_entry, ptr %716, i64 %718, i32 2
  br label %.sink.split

720:                                              ; preds = %712
  %721 = getelementptr inbounds i8, ptr %704, i64 16
  %722 = getelementptr inbounds i8, ptr %704, i64 24
  %723 = load ptr, ptr %722, align 8, !tbaa !14
  %724 = load i32, ptr %721, align 8, !tbaa !14
  %725 = zext i32 %724 to i64
  %726 = getelementptr inbounds ptr, ptr %723, i64 %725
  br label %.sink.split

.sink.split:                                      ; preds = %720, %713
  %.sink754 = phi ptr [ %719, %713 ], [ %726, %720 ]
  store ptr %703, ptr %.sink754, align 8, !tbaa !5
  br label %727

727:                                              ; preds = %.sink.split, %712, %707
  %728 = load ptr, ptr %6, align 8, !tbaa !5
  %729 = load ptr, ptr %728, align 8, !tbaa !33
  %730 = getelementptr inbounds i8, ptr %729, i64 16
  %731 = load i32, ptr %730, align 8, !tbaa !14
  %732 = add i32 %731, 1
  store i32 %732, ptr %730, align 8, !tbaa !14
  %733 = load i32, ptr %10, align 8, !tbaa !17
  %734 = icmp ugt i32 %732, %733
  br i1 %734, label %750, label %735

735:                                              ; preds = %727
  %736 = load ptr, ptr %728, align 8, !tbaa !33
  store ptr %736, ptr %6, align 8, !tbaa !5
  br label %737

737:                                              ; preds = %387, %386, %386, %386, %276, %418, %429, %735, %705, %537, %444, %603, %593, %609, %659, %618, %626, %377, %375, %312, %322, %230, %232, %210, %212, %194, %196, %273, %188, %99, %92, %85, %78, %71, %332, %333, %339, %351, %347, %344, %398, %397, %397, %397, %438, %440, %549, %548, %548, %548, %699
  %.9.ph = phi i64 [ %.7, %699 ], [ %.1283, %548 ], [ %.1283, %548 ], [ %.1283, %548 ], [ %.1283, %549 ], [ %.1283, %440 ], [ %437, %438 ], [ %.1283, %397 ], [ %.1283, %397 ], [ %.1283, %397 ], [ %.1283, %398 ], [ %.1283, %339 ], [ %.1283, %344 ], [ %.1283, %347 ], [ %352, %351 ], [ %334, %333 ], [ %.1283, %332 ], [ %65, %71 ], [ %65, %78 ], [ %65, %85 ], [ %65, %92 ], [ %65, %99 ], [ %65, %188 ], [ %65, %273 ], [ %65, %196 ], [ %65, %194 ], [ %65, %212 ], [ %65, %210 ], [ %65, %232 ], [ %65, %230 ], [ %.0282, %322 ], [ %316, %312 ], [ %376, %375 ], [ %378, %377 ], [ %.1283, %626 ], [ %spec.select394, %618 ], [ %661, %659 ], [ %.1283, %609 ], [ %spec.select, %593 ], [ %604, %603 ], [ %445, %444 ], [ %538, %537 ], [ %706, %705 ], [ %spec.select395, %735 ], [ %430, %429 ], [ %419, %418 ], [ %277, %276 ], [ %.1283, %386 ], [ %.1283, %386 ], [ %.1283, %386 ], [ %.1283, %387 ]
  %.3281.ph = phi i64 [ %.2280, %699 ], [ %.1279, %548 ], [ %.1279, %548 ], [ %.1279, %548 ], [ %.1279, %549 ], [ %.1279, %440 ], [ %.1279, %438 ], [ %.1279, %397 ], [ %.1279, %397 ], [ %.1279, %397 ], [ %.1279, %398 ], [ %.1279, %339 ], [ %.1279, %344 ], [ %.1279, %347 ], [ %.1279, %351 ], [ %.1279, %333 ], [ %.1279, %332 ], [ %.1279, %71 ], [ %.1279, %78 ], [ %.1279, %85 ], [ %.1279, %92 ], [ %.1279, %99 ], [ %.1279, %188 ], [ %.1279, %273 ], [ %.1279, %196 ], [ %.1279, %194 ], [ %.1279, %212 ], [ %.1279, %210 ], [ %.1279, %232 ], [ %.1279, %230 ], [ %.1279, %322 ], [ %.1279, %312 ], [ %.1279, %375 ], [ %.1279, %377 ], [ 0, %626 ], [ %.1279, %618 ], [ 0, %659 ], [ %583, %609 ], [ %583, %593 ], [ %583, %603 ], [ %.1279, %444 ], [ 0, %537 ], [ %.2280, %705 ], [ %.2280, %735 ], [ %.1279, %429 ], [ %.1279, %418 ], [ %.1279, %276 ], [ %.1279, %386 ], [ %.1279, %386 ], [ %.1279, %386 ], [ %.1279, %387 ]
  %.3277.ph = phi i64 [ %.2276, %699 ], [ %.1275, %548 ], [ %.1275, %548 ], [ %.1275, %548 ], [ %.1275, %549 ], [ %.1275, %440 ], [ %.1275, %438 ], [ %.1275, %397 ], [ %.1275, %397 ], [ %.1275, %397 ], [ %.1275, %398 ], [ %.1275, %339 ], [ %.1275, %344 ], [ %.1275, %347 ], [ %.1275, %351 ], [ %.1275, %333 ], [ %.1275, %332 ], [ %.1275, %71 ], [ %.1275, %78 ], [ %.1275, %85 ], [ %.1275, %92 ], [ %.1275, %99 ], [ %.1275, %188 ], [ %.1275, %273 ], [ %.1275, %196 ], [ %.1275, %194 ], [ %.1275, %212 ], [ %.1275, %210 ], [ %.1275, %232 ], [ %.1275, %230 ], [ %.1275, %322 ], [ %.1275, %312 ], [ %.1275, %375 ], [ %.1275, %377 ], [ %.1275, %626 ], [ %.1275, %618 ], [ %.1275, %659 ], [ %.1275, %609 ], [ %.1275, %593 ], [ %608, %603 ], [ %.1275, %444 ], [ 0, %537 ], [ %.2276, %705 ], [ %.2276, %735 ], [ %.1275, %429 ], [ %.1275, %418 ], [ %.1275, %276 ], [ %.1275, %386 ], [ %.1275, %386 ], [ %.1275, %386 ], [ %.1275, %387 ]
  %.3273.ph = phi i64 [ %.2272, %699 ], [ %.1271, %548 ], [ %.1271, %548 ], [ %.1271, %548 ], [ %.1271, %549 ], [ %.1271, %440 ], [ %.1271, %438 ], [ %.1271, %397 ], [ %.1271, %397 ], [ %.1271, %397 ], [ %.1271, %398 ], [ %.1271, %339 ], [ %.1271, %344 ], [ %.1271, %347 ], [ %.1271, %351 ], [ %.1271, %333 ], [ %.1271, %332 ], [ %.1271, %71 ], [ %.1271, %78 ], [ %.1271, %85 ], [ %.1271, %92 ], [ %.1271, %99 ], [ %.1271, %188 ], [ %.1271, %273 ], [ %.1271, %196 ], [ %.1271, %194 ], [ %.1271, %212 ], [ %.1271, %210 ], [ %.1271, %232 ], [ %.1271, %230 ], [ %.1271, %322 ], [ %.1271, %312 ], [ %.1271, %375 ], [ %.1271, %377 ], [ %.1271, %626 ], [ %.1271, %618 ], [ %.1271, %659 ], [ %613, %609 ], [ %.1271, %593 ], [ %.1271, %603 ], [ %.1271, %444 ], [ 0, %537 ], [ %.2272, %705 ], [ %.2272, %735 ], [ %.1271, %429 ], [ %.1271, %418 ], [ %.1271, %276 ], [ %.1271, %386 ], [ %.1271, %386 ], [ %.1271, %386 ], [ %.1271, %387 ]
  %.3267.ph = phi ptr [ %.2266, %699 ], [ %.1265, %548 ], [ %.1265, %548 ], [ %.1265, %548 ], [ %.1265, %549 ], [ %.1265, %440 ], [ %.1265, %438 ], [ %.1265, %397 ], [ %.1265, %397 ], [ %.1265, %397 ], [ %.1265, %398 ], [ %.1265, %339 ], [ %.1265, %344 ], [ %.1265, %347 ], [ %.1265, %351 ], [ %.1265, %333 ], [ %.1265, %332 ], [ %.0264, %71 ], [ %.0264, %78 ], [ %.0264, %85 ], [ %.0264, %92 ], [ %.0264, %99 ], [ %.0264, %188 ], [ %.0264, %273 ], [ %.0264, %196 ], [ %.0264, %194 ], [ %.0264, %212 ], [ %.0264, %210 ], [ %.0264, %232 ], [ %.0264, %230 ], [ %.0264, %322 ], [ null, %312 ], [ %.1265, %375 ], [ %.1265, %377 ], [ %.1265, %626 ], [ %.1265, %618 ], [ %.1265, %659 ], [ %.1265, %609 ], [ %.1265, %593 ], [ %.1265, %603 ], [ %448, %444 ], [ %.1265, %537 ], [ %.2266, %705 ], [ %.2266, %735 ], [ %.1265, %429 ], [ %.1265, %418 ], [ %.0264, %276 ], [ %.1265, %386 ], [ %.1265, %386 ], [ %.1265, %386 ], [ %.1265, %387 ]
  %.3.ph = phi i32 [ %.2263, %699 ], [ %.0261, %548 ], [ %.0261, %548 ], [ %.0261, %548 ], [ %.0261, %549 ], [ %.0261, %440 ], [ %.0261, %438 ], [ %.0261, %397 ], [ %.0261, %397 ], [ %.0261, %397 ], [ %.0261, %398 ], [ %.0261, %339 ], [ %.0261, %344 ], [ %.0261, %347 ], [ %.0261, %351 ], [ %.0261, %333 ], [ %.0261, %332 ], [ %72, %71 ], [ %79, %78 ], [ %86, %85 ], [ %93, %92 ], [ %100, %99 ], [ %189, %188 ], [ %274, %273 ], [ %205, %196 ], [ %195, %194 ], [ %227, %212 ], [ %211, %210 ], [ %265, %232 ], [ %231, %230 ], [ %323, %322 ], [ %.0261, %312 ], [ %.0261, %375 ], [ %.0261, %377 ], [ %.0261, %626 ], [ %.0261, %618 ], [ %.0261, %659 ], [ %.0261, %609 ], [ %.0261, %593 ], [ %.0261, %603 ], [ 0, %444 ], [ %.0261, %537 ], [ %.2263, %705 ], [ %.2263, %735 ], [ %.0261, %429 ], [ %.0261, %418 ], [ %.0261, %276 ], [ %.0261, %386 ], [ %.0261, %386 ], [ %.0261, %386 ], [ %.0261, %387 ]
  %738 = load ptr, ptr %18, align 8, !tbaa !21
  %739 = getelementptr inbounds i8, ptr %738, i64 1
  br label %49

740:                                              ; preds = %386
  %741 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %741, ptr %8, align 8, !tbaa !5
  %742 = load i32, ptr %17, align 8, !tbaa !19
  %743 = add nsw i32 %742, -1
  store i32 %743, ptr %17, align 8, !tbaa !19
  %744 = icmp sgt i32 %742, 0
  br i1 %744, label %48, label %.loopexit, !llvm.loop !34

745:                                              ; preds = %490, %495, %498, %501, %469, %474, %477, %480, %483, %449, %454, %457, %460
  %746 = load i32, ptr %20, align 8, !tbaa !20
  %747 = load i32, ptr %19, align 4, !tbaa !22
  %748 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %5, ptr noundef nonnull dereferenceable(1) @.str.17, i32 noundef %746, i32 noundef %747) #7
  br label %.thread457

select.unfold:                                    ; preds = %440, %438, %517, %504, %486, %463, %442
  %749 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %5, ptr noundef nonnull dereferenceable(1) @.str.18) #7
  br label %.thread457

750:                                              ; preds = %727, %59
  %751 = load i32, ptr %20, align 8, !tbaa !20
  %752 = load i32, ptr %19, align 4, !tbaa !22
  %753 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %5, ptr noundef nonnull dereferenceable(1) @.str.19, i32 noundef %751, i32 noundef %752) #7
  br label %.thread457

.thread457:                                       ; preds = %128, %177, %340, %390, %420, %431, %539, %410, %589, %663, %635, %622, %569, %554, %369, %379, %361, %.thread397, %750, %select.unfold, %745
  %.not387 = icmp eq ptr %3, null
  br i1 %.not387, label %756, label %.sink.split755

.sink.split755:                                   ; preds = %.thread457
  %754 = load i8, ptr %5, align 16, !tbaa !14
  %.not388 = icmp eq i8 %754, 0
  %.str.20. = select i1 %.not388, ptr @.str.20, ptr %5
  %755 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %3, ptr noundef nonnull dereferenceable(1) %.str.20.) #7
  br label %756

756:                                              ; preds = %.sink.split755, %.thread457
  %757 = load i32, ptr %17, align 8, !tbaa !19
  %.not389 = icmp eq i32 %757, 0
  br i1 %.not389, label %._crit_edge662, label %758

._crit_edge662:                                   ; preds = %756
  %.pr.pre = load ptr, ptr %8, align 8, !tbaa !5
  br label %760

758:                                              ; preds = %756
  %759 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %759, ptr %8, align 8, !tbaa !5
  br label %760

760:                                              ; preds = %._crit_edge662, %758
  %.pr = phi ptr [ %.pr.pre, %._crit_edge662 ], [ %759, %758 ]
  %.not390576 = icmp eq ptr %.pr, null
  br i1 %.not390576, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %760, %.lr.ph
  %761 = phi ptr [ %766, %.lr.ph ], [ %.pr, %760 ]
  %762 = getelementptr inbounds i8, ptr %761, i64 32
  %763 = load ptr, ptr %762, align 8, !tbaa !14
  store ptr %763, ptr %6, align 8, !tbaa !5
  %764 = load ptr, ptr %14, align 8, !tbaa !16
  %765 = load ptr, ptr %16, align 8, !tbaa !35
  call void %764(ptr noundef nonnull %761, ptr noundef %765) #7
  %766 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %766, ptr %8, align 8, !tbaa !5
  %.not390 = icmp eq ptr %766, null
  br i1 %.not390, label %._crit_edge.loopexit, label %.lr.ph, !llvm.loop !36

._crit_edge.loopexit:                             ; preds = %.lr.ph
  %.pre = load i32, ptr %17, align 8, !tbaa !19
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %760
  %767 = phi i32 [ %.pre, %._crit_edge.loopexit ], [ %757, %760 ]
  %.not391 = icmp eq i32 %767, 0
  br i1 %.not391, label %768, label %.loopexit

768:                                              ; preds = %._crit_edge
  %769 = load ptr, ptr %7, align 8, !tbaa !5
  call void @json_value_free_ex(ptr noundef nonnull %12, ptr noundef %769)
  br label %.loopexit

.loopexit:                                        ; preds = %740, %._crit_edge, %768
  %.0 = phi ptr [ null, %768 ], [ null, %._crit_edge ], [ %741, %740 ]
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #7
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %5) #7
  ret ptr %.0
}

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

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2

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

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

; Function Attrs: nofree nounwind
declare noundef i32 @sprintf(ptr noalias nocapture noundef writeonly, ptr nocapture noundef readonly, ...) local_unnamed_addr #3

; Function Attrs: nounwind uwtable
declare hidden zeroext i8 @hex_value(i8 noundef signext) local_unnamed_addr #0

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

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

; Function Attrs: mustprogress nofree nosync nounwind willreturn memory(none)
declare ptr @__ctype_b_loc() local_unnamed_addr #4

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @pow(double noundef, double noundef) local_unnamed_addr #5

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: readwrite)
declare ptr @strcpy(ptr noalias noundef returned writeonly, ptr noalias nocapture noundef readonly) local_unnamed_addr #6

; Function Attrs: nounwind uwtable
declare dso_local void @json_value_free_ex(ptr noundef, ptr noundef) local_unnamed_addr #0

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { nofree nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress nofree nosync nounwind willreturn memory(none) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { mustprogress nofree nounwind willreturn memory(write) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { mustprogress nofree nounwind willreturn memory(argmem: readwrite) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nounwind }
attributes #8 = { nounwind willreturn memory(none) }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !11, i64 0}
!10 = !{!"", !11, i64 0, !12, i64 8, !11, i64 16, !13, i64 24, !12, i64 72, !6, i64 80, !12, i64 88, !12, i64 92}
!11 = !{!"long", !7, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!"", !11, i64 0, !12, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !11, i64 40}
!14 = !{!7, !7, i64 0}
!15 = !{!10, !6, i64 40}
!16 = !{!10, !6, i64 48}
!17 = !{!10, !12, i64 8}
!18 = !{!10, !11, i64 16}
!19 = !{!10, !12, i64 72}
!20 = !{!10, !12, i64 88}
!21 = !{!10, !6, i64 80}
!22 = !{!10, !12, i64 92}
!23 = !{!24, !12, i64 8}
!24 = !{!"_json_value", !6, i64 0, !12, i64 8, !7, i64 16, !7, i64 32}
!25 = !{!26, !6, i64 0}
!26 = !{!"_json_object_entry", !6, i64 0, !12, i64 8, !6, i64 16}
!27 = !{!26, !12, i64 8}
!28 = !{!10, !12, i64 32}
!29 = !{!30, !30, i64 0}
!30 = !{!"short", !7, i64 0}
!31 = distinct !{!31, !32}
!32 = !{!"llvm.loop.mustprogress"}
!33 = !{!24, !6, i64 0}
!34 = distinct !{!34, !32}
!35 = !{!10, !6, i64 56}
!36 = distinct !{!36, !32}


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