; LLVM IR from marcobambini/gravity :: src/utils (gravity_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.14 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [14 x i8], align 1

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

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

; Function Attrs: nounwind
declare i32 @snprintf(ptr noundef, i64 noundef, ptr noundef, ...) #1

; Function Attrs: nounwind uwtable
define dso_local ptr @json_parse_ex(ptr noundef %0, ptr noundef %1, i64 noundef %2, ptr noundef %3) #2 {
  %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
  store ptr null, ptr %13, align 8, !tbaa !5
  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
  call void @llvm.memset.p0.i64(ptr align 8 %15, i8 0, i64 96, i1 false)
  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
  %31 = load i64, ptr %8, align 8, !tbaa !9
  %32 = icmp uge i64 %31, 3
  br i1 %32, label %33, label %56

33:                                               ; preds = %4
  %34 = load ptr, ptr %7, align 8, !tbaa !5
  %35 = getelementptr inbounds i8, ptr %34, i64 0
  %36 = load i8, ptr %35, align 1, !tbaa !11
  %37 = zext i8 %36 to i32
  %38 = icmp eq i32 %37, 239
  br i1 %38, label %39, label %56

39:                                               ; preds = %33
  %40 = load ptr, ptr %7, align 8, !tbaa !5
  %41 = getelementptr inbounds i8, ptr %40, i64 1
  %42 = load i8, ptr %41, align 1, !tbaa !11
  %43 = zext i8 %42 to i32
  %44 = icmp eq i32 %43, 187
  br i1 %44, label %45, label %56

45:                                               ; preds = %39
  %46 = load ptr, ptr %7, align 8, !tbaa !5
  %47 = getelementptr inbounds i8, ptr %46, i64 2
  %48 = load i8, ptr %47, align 1, !tbaa !11
  %49 = zext i8 %48 to i32
  %50 = icmp eq i32 %49, 191
  br i1 %50, label %51, label %56

51:                                               ; preds = %45
  %52 = load ptr, ptr %7, align 8, !tbaa !5
  %53 = getelementptr inbounds i8, ptr %52, i64 3
  store ptr %53, ptr %7, align 8, !tbaa !5
  %54 = load i64, ptr %8, align 8, !tbaa !9
  %55 = sub i64 %54, 3
  store i64 %55, ptr %8, align 8, !tbaa !9
  br label %56

56:                                               ; preds = %51, %45, %39, %33, %4
  %57 = getelementptr inbounds [128 x i8], ptr %10, i64 0, i64 0
  store i8 0, ptr %57, align 16, !tbaa !11
  %58 = load ptr, ptr %7, align 8, !tbaa !5
  %59 = load i64, ptr %8, align 8, !tbaa !9
  %60 = getelementptr inbounds i8, ptr %58, i64 %59
  store ptr %60, ptr %11, align 8, !tbaa !5
  %61 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 3
  %62 = load ptr, ptr %6, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %61, ptr align 8 %62, i64 48, i1 false)
  %63 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 3
  %64 = getelementptr inbounds %struct.json_settings, ptr %63, i32 0, i32 2
  %65 = load ptr, ptr %64, align 8, !tbaa !12
  %66 = icmp ne ptr %65, null
  br i1 %66, label %70, label %67

67:                                               ; preds = %56
  %68 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 3
  %69 = getelementptr inbounds %struct.json_settings, ptr %68, i32 0, i32 2
  store ptr @default_alloc, ptr %69, align 8, !tbaa !12
  br label %70

70:                                               ; preds = %67, %56
  %71 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 3
  %72 = getelementptr inbounds %struct.json_settings, ptr %71, i32 0, i32 3
  %73 = load ptr, ptr %72, align 8, !tbaa !16
  %74 = icmp ne ptr %73, null
  br i1 %74, label %78, label %75

75:                                               ; preds = %70
  %76 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 3
  %77 = getelementptr inbounds %struct.json_settings, ptr %76, i32 0, i32 3
  store ptr @default_free, ptr %77, align 8, !tbaa !16
  br label %78

78:                                               ; preds = %75, %70
  %79 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 1
  call void @llvm.memset.p0.i64(ptr align 8 %79, i8 -1, i64 4, i1 false)
  %80 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 2
  call void @llvm.memset.p0.i64(ptr align 8 %80, i8 -1, i64 8, i1 false)
  %81 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 1
  %82 = load i32, ptr %81, align 8, !tbaa !17
  %83 = sub i32 %82, 8
  store i32 %83, ptr %81, align 8, !tbaa !17
  %84 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 2
  %85 = load i64, ptr %84, align 8, !tbaa !18
  %86 = sub i64 %85, 8
  store i64 %86, ptr %84, align 8, !tbaa !18
  %87 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 4
  store i32 1, ptr %87, align 8, !tbaa !19
  br label %88

88:                                               ; preds = %1507, %78
  %89 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 4
  %90 = load i32, ptr %89, align 8, !tbaa !19
  %91 = icmp sge i32 %90, 0
  br i1 %91, label %92, label %1511

92:                                               ; preds = %88
  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 !20
  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
  %93 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 6
  store i32 1, ptr %93, align 8, !tbaa !21
  %94 = load ptr, ptr %7, align 8, !tbaa !5
  %95 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  store ptr %94, ptr %95, align 8, !tbaa !22
  br label %96

96:                                               ; preds = %1498, %92
  call void @llvm.lifetime.start.p0(i64 1, ptr %27) #6
  %97 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %98 = load ptr, ptr %97, align 8, !tbaa !22
  %99 = load ptr, ptr %11, align 8, !tbaa !5
  %100 = icmp eq ptr %98, %99
  br i1 %100, label %101, label %102

101:                                              ; preds = %96
  br label %107

102:                                              ; preds = %96
  %103 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %104 = load ptr, ptr %103, align 8, !tbaa !22
  %105 = load i8, ptr %104, align 1, !tbaa !11
  %106 = sext i8 %105 to i32
  br label %107

107:                                              ; preds = %102, %101
  %108 = phi i32 [ 0, %101 ], [ %106, %102 ]
  %109 = trunc i32 %108 to i8
  store i8 %109, ptr %27, align 1, !tbaa !11
  %110 = load i64, ptr %16, align 8, !tbaa !9
  %111 = and i64 %110, 32
  %112 = icmp ne i64 %111, 0
  br i1 %112, label %113, label %636

113:                                              ; preds = %107
  %114 = load i8, ptr %27, align 1, !tbaa !11
  %115 = icmp ne i8 %114, 0
  br i1 %115, label %123, label %116

116:                                              ; preds = %113
  %117 = getelementptr inbounds [128 x i8], ptr %10, i64 0, i64 0
  %118 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 6
  %119 = load i32, ptr %118, align 8, !tbaa !21
  %120 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 7
  %121 = load i32, ptr %120, align 4, !tbaa !23
  %122 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %117, i64 noundef 128, ptr noundef @.str.14, i32 noundef %119, i32 noundef %121) #6
  store i32 8, ptr %29, align 4
  br label %1495

123:                                              ; preds = %113
  %124 = load i32, ptr %26, align 4, !tbaa !20
  %125 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 1
  %126 = load i32, ptr %125, align 8, !tbaa !17
  %127 = icmp ugt i32 %124, %126
  br i1 %127, label %128, label %129

128:                                              ; preds = %123
  store i32 9, ptr %29, align 4
  br label %1495

129:                                              ; preds = %123
  %130 = load i64, ptr %16, align 8, !tbaa !9
  %131 = and i64 %130, 16
  %132 = icmp ne i64 %131, 0
  br i1 %132, label %133, label %534

133:                                              ; preds = %129
  %134 = load i64, ptr %16, align 8, !tbaa !9
  %135 = and i64 %134, -17
  store i64 %135, ptr %16, align 8, !tbaa !9
  %136 = load i8, ptr %27, align 1, !tbaa !11
  %137 = sext i8 %136 to i32
  switch i32 %137, label %517 [
    i32 98, label %138
    i32 102, label %153
    i32 110, label %168
    i32 114, label %183
    i32 116, label %198
    i32 117, label %213
  ]

138:                                              ; preds = %133
  br label %139

139:                                              ; preds = %138
  %140 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 4
  %141 = load i32, ptr %140, align 8, !tbaa !19
  %142 = icmp ne i32 %141, 0
  br i1 %142, label %148, label %143

143:                                              ; preds = %139
  %144 = load ptr, ptr %25, align 8, !tbaa !5
  %145 = load i32, ptr %26, align 4, !tbaa !20
  %146 = zext i32 %145 to i64
  %147 = getelementptr inbounds i8, ptr %144, i64 %146
  store i8 8, ptr %147, align 1, !tbaa !11
  br label %148

148:                                              ; preds = %143, %139
  %149 = load i32, ptr %26, align 4, !tbaa !20
  %150 = add i32 %149, 1
  store i32 %150, ptr %26, align 4, !tbaa !20
  br label %151

151:                                              ; preds = %148
  br label %152

152:                                              ; preds = %151
  br label %533

153:                                              ; preds = %133
  br label %154

154:                                              ; preds = %153
  %155 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 4
  %156 = load i32, ptr %155, align 8, !tbaa !19
  %157 = icmp ne i32 %156, 0
  br i1 %157, label %163, label %158

158:                                              ; preds = %154
  %159 = load ptr, ptr %25, align 8, !tbaa !5
  %160 = load i32, ptr %26, align 4, !tbaa !20
  %161 = zext i32 %160 to i64
  %162 = getelementptr inbounds i8, ptr %159, i64 %161
  store i8 12, ptr %162, align 1, !tbaa !11
  br label %163

163:                                              ; preds = %158, %154
  %164 = load i32, ptr %26, align 4, !tbaa !20
  %165 = add i32 %164, 1
  store i32 %165, ptr %26, align 4, !tbaa !20
  br label %166

166:                                              ; preds = %163
  br label %167

167:                                              ; preds = %166
  br label %533

168:                                              ; preds = %133
  br label %169

169:                                              ; preds = %168
  %170 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 4
  %171 = load i32, ptr %170, align 8, !tbaa !19
  %172 = icmp ne i32 %171, 0
  br i1 %172, label %178, label %173

173:                                              ; preds = %169
  %174 = load ptr, ptr %25, align 8, !tbaa !5
  %175 = load i32, ptr %26, align 4, !tbaa !20
  %176 = zext i32 %175 to i64
  %177 = getelementptr inbounds i8, ptr %174, i64 %176
  store i8 10, ptr %177, align 1, !tbaa !11
  br label %178

178:                                              ; preds = %173, %169
  %179 = load i32, ptr %26, align 4, !tbaa !20
  %180 = add i32 %179, 1
  store i32 %180, ptr %26, align 4, !tbaa !20
  br label %181

181:                                              ; preds = %178
  br label %182

182:                                              ; preds = %181
  br label %533

183:                                              ; preds = %133
  br label %184

184:                                              ; preds = %183
  %185 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 4
  %186 = load i32, ptr %185, align 8, !tbaa !19
  %187 = icmp ne i32 %186, 0
  br i1 %187, label %193, label %188

188:                                              ; preds = %184
  %189 = load ptr, ptr %25, align 8, !tbaa !5
  %190 = load i32, ptr %26, align 4, !tbaa !20
  %191 = zext i32 %190 to i64
  %192 = getelementptr inbounds i8, ptr %189, i64 %191
  store i8 13, ptr %192, align 1, !tbaa !11
  br label %193

193:                                              ; preds = %188, %184
  %194 = load i32, ptr %26, align 4, !tbaa !20
  %195 = add i32 %194, 1
  store i32 %195, ptr %26, align 4, !tbaa !20
  br label %196

196:                                              ; preds = %193
  br label %197

197:                                              ; preds = %196
  br label %533

198:                                              ; preds = %133
  br label %199

199:                                              ; preds = %198
  %200 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 4
  %201 = load i32, ptr %200, align 8, !tbaa !19
  %202 = icmp ne i32 %201, 0
  br i1 %202, label %208, label %203

203:                                              ; preds = %199
  %204 = load ptr, ptr %25, align 8, !tbaa !5
  %205 = load i32, ptr %26, align 4, !tbaa !20
  %206 = zext i32 %205 to i64
  %207 = getelementptr inbounds i8, ptr %204, i64 %206
  store i8 9, ptr %207, align 1, !tbaa !11
  br label %208

208:                                              ; preds = %203, %199
  %209 = load i32, ptr %26, align 4, !tbaa !20
  %210 = add i32 %209, 1
  store i32 %210, ptr %26, align 4, !tbaa !20
  br label %211

211:                                              ; preds = %208
  br label %212

212:                                              ; preds = %211
  br label %533

213:                                              ; preds = %133
  %214 = load ptr, ptr %11, align 8, !tbaa !5
  %215 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %216 = load ptr, ptr %215, align 8, !tbaa !22
  %217 = ptrtoint ptr %214 to i64
  %218 = ptrtoint ptr %216 to i64
  %219 = sub i64 %217, %218
  %220 = icmp slt i64 %219, 4
  br i1 %220, label %253, label %221

221:                                              ; preds = %213
  %222 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %223 = load ptr, ptr %222, align 8, !tbaa !22
  %224 = getelementptr inbounds i8, ptr %223, i32 1
  store ptr %224, ptr %222, align 8, !tbaa !22
  %225 = load i8, ptr %224, align 1, !tbaa !11
  %226 = call zeroext i8 @hex_value(i8 noundef signext %225)
  store i8 %226, ptr %21, align 1, !tbaa !11
  %227 = zext i8 %226 to i32
  %228 = icmp eq i32 %227, 255
  br i1 %228, label %253, label %229

229:                                              ; preds = %221
  %230 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %231 = load ptr, ptr %230, align 8, !tbaa !22
  %232 = getelementptr inbounds i8, ptr %231, i32 1
  store ptr %232, ptr %230, align 8, !tbaa !22
  %233 = load i8, ptr %232, align 1, !tbaa !11
  %234 = call zeroext i8 @hex_value(i8 noundef signext %233)
  store i8 %234, ptr %22, align 1, !tbaa !11
  %235 = zext i8 %234 to i32
  %236 = icmp eq i32 %235, 255
  br i1 %236, label %253, label %237

237:                                              ; preds = %229
  %238 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %239 = load ptr, ptr %238, align 8, !tbaa !22
  %240 = getelementptr inbounds i8, ptr %239, i32 1
  store ptr %240, ptr %238, align 8, !tbaa !22
  %241 = load i8, ptr %240, align 1, !tbaa !11
  %242 = call zeroext i8 @hex_value(i8 noundef signext %241)
  store i8 %242, ptr %23, align 1, !tbaa !11
  %243 = zext i8 %242 to i32
  %244 = icmp eq i32 %243, 255
  br i1 %244, label %253, label %245

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

253:                                              ; preds = %245, %237, %229, %221, %213
  %254 = getelementptr inbounds [128 x i8], ptr %10, i64 0, i64 0
  %255 = load i8, ptr %27, align 1, !tbaa !11
  %256 = sext i8 %255 to i32
  %257 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 6
  %258 = load i32, ptr %257, align 8, !tbaa !21
  %259 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 7
  %260 = load i32, ptr %259, align 4, !tbaa !23
  %261 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %254, i64 noundef 128, ptr noundef @.str.15, i32 noundef %256, i32 noundef %258, i32 noundef %260) #6
  store i32 8, ptr %29, align 4
  br label %1495

262:                                              ; preds = %245
  %263 = load i8, ptr %21, align 1, !tbaa !11
  %264 = zext i8 %263 to i32
  %265 = shl i32 %264, 4
  %266 = load i8, ptr %22, align 1, !tbaa !11
  %267 = zext i8 %266 to i32
  %268 = or i32 %265, %267
  %269 = trunc i32 %268 to i8
  store i8 %269, ptr %21, align 1, !tbaa !11
  %270 = load i8, ptr %23, align 1, !tbaa !11
  %271 = zext i8 %270 to i32
  %272 = shl i32 %271, 4
  %273 = load i8, ptr %24, align 1, !tbaa !11
  %274 = zext i8 %273 to i32
  %275 = or i32 %272, %274
  %276 = trunc i32 %275 to i8
  store i8 %276, ptr %22, align 1, !tbaa !11
  %277 = load i8, ptr %21, align 1, !tbaa !11
  %278 = zext i8 %277 to i32
  %279 = shl i32 %278, 8
  %280 = load i8, ptr %22, align 1, !tbaa !11
  %281 = zext i8 %280 to i32
  %282 = or i32 %279, %281
  store i32 %282, ptr %20, align 4, !tbaa !20
  %283 = load i32, ptr %20, align 4, !tbaa !20
  %284 = and i32 %283, 63488
  %285 = icmp eq i32 %284, 55296
  br i1 %285, label %286, label %380

286:                                              ; preds = %262
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #6
  %287 = load ptr, ptr %11, align 8, !tbaa !5
  %288 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %289 = load ptr, ptr %288, align 8, !tbaa !22
  %290 = ptrtoint ptr %287 to i64
  %291 = ptrtoint ptr %289 to i64
  %292 = sub i64 %290, %291
  %293 = icmp slt i64 %292, 6
  br i1 %293, label %340, label %294

294:                                              ; preds = %286
  %295 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %296 = load ptr, ptr %295, align 8, !tbaa !22
  %297 = getelementptr inbounds i8, ptr %296, i32 1
  store ptr %297, ptr %295, align 8, !tbaa !22
  %298 = load i8, ptr %297, align 1, !tbaa !11
  %299 = sext i8 %298 to i32
  %300 = icmp ne i32 %299, 92
  br i1 %300, label %340, label %301

301:                                              ; preds = %294
  %302 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %303 = load ptr, ptr %302, align 8, !tbaa !22
  %304 = getelementptr inbounds i8, ptr %303, i32 1
  store ptr %304, ptr %302, align 8, !tbaa !22
  %305 = load i8, ptr %304, align 1, !tbaa !11
  %306 = sext i8 %305 to i32
  %307 = icmp ne i32 %306, 117
  br i1 %307, label %340, label %308

308:                                              ; preds = %301
  %309 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %310 = load ptr, ptr %309, align 8, !tbaa !22
  %311 = getelementptr inbounds i8, ptr %310, i32 1
  store ptr %311, ptr %309, align 8, !tbaa !22
  %312 = load i8, ptr %311, align 1, !tbaa !11
  %313 = call zeroext i8 @hex_value(i8 noundef signext %312)
  store i8 %313, ptr %21, align 1, !tbaa !11
  %314 = zext i8 %313 to i32
  %315 = icmp eq i32 %314, 255
  br i1 %315, label %340, label %316

316:                                              ; preds = %308
  %317 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %318 = load ptr, ptr %317, align 8, !tbaa !22
  %319 = getelementptr inbounds i8, ptr %318, i32 1
  store ptr %319, ptr %317, align 8, !tbaa !22
  %320 = load i8, ptr %319, align 1, !tbaa !11
  %321 = call zeroext i8 @hex_value(i8 noundef signext %320)
  store i8 %321, ptr %22, align 1, !tbaa !11
  %322 = zext i8 %321 to i32
  %323 = icmp eq i32 %322, 255
  br i1 %323, label %340, label %324

324:                                              ; preds = %316
  %325 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %326 = load ptr, ptr %325, align 8, !tbaa !22
  %327 = getelementptr inbounds i8, ptr %326, i32 1
  store ptr %327, ptr %325, align 8, !tbaa !22
  %328 = load i8, ptr %327, align 1, !tbaa !11
  %329 = call zeroext i8 @hex_value(i8 noundef signext %328)
  store i8 %329, ptr %23, align 1, !tbaa !11
  %330 = zext i8 %329 to i32
  %331 = icmp eq i32 %330, 255
  br i1 %331, label %340, label %332

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

340:                                              ; preds = %332, %324, %316, %308, %301, %294, %286
  %341 = getelementptr inbounds [128 x i8], ptr %10, i64 0, i64 0
  %342 = load i8, ptr %27, align 1, !tbaa !11
  %343 = sext i8 %342 to i32
  %344 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 6
  %345 = load i32, ptr %344, align 8, !tbaa !21
  %346 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 7
  %347 = load i32, ptr %346, align 4, !tbaa !23
  %348 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %341, i64 noundef 128, ptr noundef @.str.15, i32 noundef %343, i32 noundef %345, i32 noundef %347) #6
  store i32 8, ptr %29, align 4
  br label %377

349:                                              ; preds = %332
  %350 = load i8, ptr %21, align 1, !tbaa !11
  %351 = zext i8 %350 to i32
  %352 = shl i32 %351, 4
  %353 = load i8, ptr %22, align 1, !tbaa !11
  %354 = zext i8 %353 to i32
  %355 = or i32 %352, %354
  %356 = trunc i32 %355 to i8
  store i8 %356, ptr %21, align 1, !tbaa !11
  %357 = load i8, ptr %23, align 1, !tbaa !11
  %358 = zext i8 %357 to i32
  %359 = shl i32 %358, 4
  %360 = load i8, ptr %24, align 1, !tbaa !11
  %361 = zext i8 %360 to i32
  %362 = or i32 %359, %361
  %363 = trunc i32 %362 to i8
  store i8 %363, ptr %22, align 1, !tbaa !11
  %364 = load i8, ptr %21, align 1, !tbaa !11
  %365 = zext i8 %364 to i32
  %366 = shl i32 %365, 8
  %367 = load i8, ptr %22, align 1, !tbaa !11
  %368 = zext i8 %367 to i32
  %369 = or i32 %366, %368
  store i32 %369, ptr %28, align 4, !tbaa !20
  %370 = load i32, ptr %20, align 4, !tbaa !20
  %371 = and i32 %370, 1023
  %372 = shl i32 %371, 10
  %373 = or i32 65536, %372
  %374 = load i32, ptr %28, align 4, !tbaa !20
  %375 = and i32 %374, 1023
  %376 = or i32 %373, %375
  store i32 %376, ptr %20, align 4, !tbaa !20
  store i32 0, ptr %29, align 4
  br label %377

377:                                              ; preds = %349, %340
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #6
  %378 = load i32, ptr %29, align 4
  switch i32 %378, label %1495 [
    i32 0, label %379
  ]

379:                                              ; preds = %377
  br label %380

380:                                              ; preds = %379, %262
  %381 = load i32, ptr %20, align 4, !tbaa !20
  %382 = icmp ule i32 %381, 127
  br i1 %382, label %383, label %400

383:                                              ; preds = %380
  br label %384

384:                                              ; preds = %383
  %385 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 4
  %386 = load i32, ptr %385, align 8, !tbaa !19
  %387 = icmp ne i32 %386, 0
  br i1 %387, label %395, label %388

388:                                              ; preds = %384
  %389 = load i32, ptr %20, align 4, !tbaa !20
  %390 = trunc i32 %389 to i8
  %391 = load ptr, ptr %25, align 8, !tbaa !5
  %392 = load i32, ptr %26, align 4, !tbaa !20
  %393 = zext i32 %392 to i64
  %394 = getelementptr inbounds i8, ptr %391, i64 %393
  store i8 %390, ptr %394, align 1, !tbaa !11
  br label %395

395:                                              ; preds = %388, %384
  %396 = load i32, ptr %26, align 4, !tbaa !20
  %397 = add i32 %396, 1
  store i32 %397, ptr %26, align 4, !tbaa !20
  br label %398

398:                                              ; preds = %395
  br label %399

399:                                              ; preds = %398
  br label %533

400:                                              ; preds = %380
  %401 = load i32, ptr %20, align 4, !tbaa !20
  %402 = icmp ule i32 %401, 2047
  br i1 %402, label %403, label %430

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

407:                                              ; preds = %403
  %408 = load i32, ptr %26, align 4, !tbaa !20
  %409 = add i32 %408, 2
  store i32 %409, ptr %26, align 4, !tbaa !20
  br label %429

410:                                              ; preds = %403
  %411 = load i32, ptr %20, align 4, !tbaa !20
  %412 = lshr i32 %411, 6
  %413 = or i32 192, %412
  %414 = trunc i32 %413 to i8
  %415 = load ptr, ptr %25, align 8, !tbaa !5
  %416 = load i32, ptr %26, align 4, !tbaa !20
  %417 = add i32 %416, 1
  store i32 %417, ptr %26, align 4, !tbaa !20
  %418 = zext i32 %416 to i64
  %419 = getelementptr inbounds i8, ptr %415, i64 %418
  store i8 %414, ptr %419, align 1, !tbaa !11
  %420 = load i32, ptr %20, align 4, !tbaa !20
  %421 = and i32 %420, 63
  %422 = or i32 128, %421
  %423 = trunc i32 %422 to i8
  %424 = load ptr, ptr %25, align 8, !tbaa !5
  %425 = load i32, ptr %26, align 4, !tbaa !20
  %426 = add i32 %425, 1
  store i32 %426, ptr %26, align 4, !tbaa !20
  %427 = zext i32 %425 to i64
  %428 = getelementptr inbounds i8, ptr %424, i64 %427
  store i8 %423, ptr %428, align 1, !tbaa !11
  br label %429

429:                                              ; preds = %410, %407
  br label %533

430:                                              ; preds = %400
  %431 = load i32, ptr %20, align 4, !tbaa !20
  %432 = icmp ule i32 %431, 65535
  br i1 %432, label %433, label %470

433:                                              ; preds = %430
  %434 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 4
  %435 = load i32, ptr %434, align 8, !tbaa !19
  %436 = icmp ne i32 %435, 0
  br i1 %436, label %437, label %440

437:                                              ; preds = %433
  %438 = load i32, ptr %26, align 4, !tbaa !20
  %439 = add i32 %438, 3
  store i32 %439, ptr %26, align 4, !tbaa !20
  br label %469

440:                                              ; preds = %433
  %441 = load i32, ptr %20, align 4, !tbaa !20
  %442 = lshr i32 %441, 12
  %443 = or i32 224, %442
  %444 = trunc i32 %443 to i8
  %445 = load ptr, ptr %25, align 8, !tbaa !5
  %446 = load i32, ptr %26, align 4, !tbaa !20
  %447 = add i32 %446, 1
  store i32 %447, ptr %26, align 4, !tbaa !20
  %448 = zext i32 %446 to i64
  %449 = getelementptr inbounds i8, ptr %445, i64 %448
  store i8 %444, ptr %449, align 1, !tbaa !11
  %450 = load i32, ptr %20, align 4, !tbaa !20
  %451 = lshr i32 %450, 6
  %452 = and i32 %451, 63
  %453 = or i32 128, %452
  %454 = trunc i32 %453 to i8
  %455 = load ptr, ptr %25, align 8, !tbaa !5
  %456 = load i32, ptr %26, align 4, !tbaa !20
  %457 = add i32 %456, 1
  store i32 %457, ptr %26, align 4, !tbaa !20
  %458 = zext i32 %456 to i64
  %459 = getelementptr inbounds i8, ptr %455, i64 %458
  store i8 %454, ptr %459, align 1, !tbaa !11
  %460 = load i32, ptr %20, align 4, !tbaa !20
  %461 = and i32 %460, 63
  %462 = or i32 128, %461
  %463 = trunc i32 %462 to i8
  %464 = load ptr, ptr %25, align 8, !tbaa !5
  %465 = load i32, ptr %26, align 4, !tbaa !20
  %466 = add i32 %465, 1
  store i32 %466, ptr %26, align 4, !tbaa !20
  %467 = zext i32 %465 to i64
  %468 = getelementptr inbounds i8, ptr %464, i64 %467
  store i8 %463, ptr %468, align 1, !tbaa !11
  br label %469

469:                                              ; preds = %440, %437
  br label %533

470:                                              ; preds = %430
  %471 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 4
  %472 = load i32, ptr %471, align 8, !tbaa !19
  %473 = icmp ne i32 %472, 0
  br i1 %473, label %474, label %477

474:                                              ; preds = %470
  %475 = load i32, ptr %26, align 4, !tbaa !20
  %476 = add i32 %475, 4
  store i32 %476, ptr %26, align 4, !tbaa !20
  br label %516

477:                                              ; preds = %470
  %478 = load i32, ptr %20, align 4, !tbaa !20
  %479 = lshr i32 %478, 18
  %480 = or i32 240, %479
  %481 = trunc i32 %480 to i8
  %482 = load ptr, ptr %25, align 8, !tbaa !5
  %483 = load i32, ptr %26, align 4, !tbaa !20
  %484 = add i32 %483, 1
  store i32 %484, ptr %26, align 4, !tbaa !20
  %485 = zext i32 %483 to i64
  %486 = getelementptr inbounds i8, ptr %482, i64 %485
  store i8 %481, ptr %486, align 1, !tbaa !11
  %487 = load i32, ptr %20, align 4, !tbaa !20
  %488 = lshr i32 %487, 12
  %489 = and i32 %488, 63
  %490 = or i32 128, %489
  %491 = trunc i32 %490 to i8
  %492 = load ptr, ptr %25, align 8, !tbaa !5
  %493 = load i32, ptr %26, align 4, !tbaa !20
  %494 = add i32 %493, 1
  store i32 %494, ptr %26, align 4, !tbaa !20
  %495 = zext i32 %493 to i64
  %496 = getelementptr inbounds i8, ptr %492, i64 %495
  store i8 %491, ptr %496, align 1, !tbaa !11
  %497 = load i32, ptr %20, align 4, !tbaa !20
  %498 = lshr i32 %497, 6
  %499 = and i32 %498, 63
  %500 = or i32 128, %499
  %501 = trunc i32 %500 to i8
  %502 = load ptr, ptr %25, align 8, !tbaa !5
  %503 = load i32, ptr %26, align 4, !tbaa !20
  %504 = add i32 %503, 1
  store i32 %504, ptr %26, align 4, !tbaa !20
  %505 = zext i32 %503 to i64
  %506 = getelementptr inbounds i8, ptr %502, i64 %505
  store i8 %501, ptr %506, align 1, !tbaa !11
  %507 = load i32, ptr %20, align 4, !tbaa !20
  %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 !20
  %513 = add i32 %512, 1
  store i32 %513, ptr %26, align 4, !tbaa !20
  %514 = zext i32 %512 to i64
  %515 = getelementptr inbounds i8, ptr %511, i64 %514
  store i8 %510, ptr %515, align 1, !tbaa !11
  br label %516

516:                                              ; preds = %477, %474
  br label %533

517:                                              ; preds = %133
  br label %518

518:                                              ; preds = %517
  %519 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 4
  %520 = load i32, ptr %519, align 8, !tbaa !19
  %521 = icmp ne i32 %520, 0
  br i1 %521, label %528, label %522

522:                                              ; preds = %518
  %523 = load i8, ptr %27, align 1, !tbaa !11
  %524 = load ptr, ptr %25, align 8, !tbaa !5
  %525 = load i32, ptr %26, align 4, !tbaa !20
  %526 = zext i32 %525 to i64
  %527 = getelementptr inbounds i8, ptr %524, i64 %526
  store i8 %523, ptr %527, align 1, !tbaa !11
  br label %528

528:                                              ; preds = %522, %518
  %529 = load i32, ptr %26, align 4, !tbaa !20
  %530 = add i32 %529, 1
  store i32 %530, ptr %26, align 4, !tbaa !20
  br label %531

531:                                              ; preds = %528
  br label %532

532:                                              ; preds = %531
  br label %533

533:                                              ; preds = %532, %516, %469, %429, %399, %212, %197, %182, %167, %152
  store i32 7, ptr %29, align 4
  br label %1495

534:                                              ; preds = %129
  %535 = load i8, ptr %27, align 1, !tbaa !11
  %536 = sext i8 %535 to i32
  %537 = icmp eq i32 %536, 92
  br i1 %537, label %538, label %541

538:                                              ; preds = %534
  %539 = load i64, ptr %16, align 8, !tbaa !9
  %540 = or i64 %539, 16
  store i64 %540, ptr %16, align 8, !tbaa !9
  store i32 7, ptr %29, align 4
  br label %1495

541:                                              ; preds = %534
  %542 = load i8, ptr %27, align 1, !tbaa !11
  %543 = sext i8 %542 to i32
  %544 = icmp eq i32 %543, 34
  br i1 %544, label %545, label %619

545:                                              ; preds = %541
  %546 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 4
  %547 = load i32, ptr %546, align 8, !tbaa !19
  %548 = icmp ne i32 %547, 0
  br i1 %548, label %554, label %549

549:                                              ; preds = %545
  %550 = load ptr, ptr %25, align 8, !tbaa !5
  %551 = load i32, ptr %26, align 4, !tbaa !20
  %552 = zext i32 %551 to i64
  %553 = getelementptr inbounds i8, ptr %550, i64 %552
  store i8 0, ptr %553, align 1, !tbaa !11
  br label %554

554:                                              ; preds = %549, %545
  %555 = load i64, ptr %16, align 8, !tbaa !9
  %556 = and i64 %555, -33
  store i64 %556, ptr %16, align 8, !tbaa !9
  store ptr null, ptr %25, align 8, !tbaa !5
  %557 = load ptr, ptr %12, align 8, !tbaa !5
  %558 = getelementptr inbounds %struct._json_value, ptr %557, i32 0, i32 1
  %559 = load i32, ptr %558, align 8, !tbaa !24
  switch i32 %559, label %617 [
    i32 5, label %560
    i32 1, label %567
  ]

560:                                              ; preds = %554
  %561 = load i32, ptr %26, align 4, !tbaa !20
  %562 = load ptr, ptr %12, align 8, !tbaa !5
  %563 = getelementptr inbounds %struct._json_value, ptr %562, i32 0, i32 2
  %564 = getelementptr inbounds %struct.anon, ptr %563, i32 0, i32 0
  store i32 %561, ptr %564, align 8, !tbaa !11
  %565 = load i64, ptr %16, align 8, !tbaa !9
  %566 = or i64 %565, 1
  store i64 %566, ptr %16, align 8, !tbaa !9
  br label %618

567:                                              ; preds = %554
  %568 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 4
  %569 = load i32, ptr %568, align 8, !tbaa !19
  %570 = icmp ne i32 %569, 0
  br i1 %570, label %571, label %580

571:                                              ; preds = %567
  %572 = load i32, ptr %26, align 4, !tbaa !20
  %573 = add i32 %572, 1
  %574 = load ptr, ptr %12, align 8, !tbaa !5
  %575 = getelementptr inbounds %struct._json_value, ptr %574, i32 0, i32 2
  %576 = getelementptr inbounds %struct.anon.0, ptr %575, i32 0, i32 1
  %577 = load ptr, ptr %576, align 8, !tbaa !11
  %578 = zext i32 %573 to i64
  %579 = getelementptr inbounds i8, ptr %577, i64 %578
  store ptr %579, ptr %576, align 8, !tbaa !11
  br label %614

580:                                              ; preds = %567
  %581 = load ptr, ptr %12, align 8, !tbaa !5
  %582 = getelementptr inbounds %struct._json_value, ptr %581, i32 0, i32 3
  %583 = load ptr, ptr %582, align 8, !tbaa !11
  %584 = load ptr, ptr %12, align 8, !tbaa !5
  %585 = getelementptr inbounds %struct._json_value, ptr %584, i32 0, i32 2
  %586 = getelementptr inbounds %struct.anon.0, ptr %585, i32 0, i32 1
  %587 = load ptr, ptr %586, align 8, !tbaa !11
  %588 = load ptr, ptr %12, align 8, !tbaa !5
  %589 = getelementptr inbounds %struct._json_value, ptr %588, i32 0, i32 2
  %590 = getelementptr inbounds %struct.anon.0, ptr %589, i32 0, i32 0
  %591 = load i32, ptr %590, align 8, !tbaa !11
  %592 = zext i32 %591 to i64
  %593 = getelementptr inbounds %struct._json_object_entry, ptr %587, i64 %592
  %594 = getelementptr inbounds %struct._json_object_entry, ptr %593, i32 0, i32 0
  store ptr %583, ptr %594, align 8, !tbaa !26
  %595 = load i32, ptr %26, align 4, !tbaa !20
  %596 = load ptr, ptr %12, align 8, !tbaa !5
  %597 = getelementptr inbounds %struct._json_value, ptr %596, i32 0, i32 2
  %598 = getelementptr inbounds %struct.anon.0, ptr %597, i32 0, i32 1
  %599 = load ptr, ptr %598, align 8, !tbaa !11
  %600 = load ptr, ptr %12, align 8, !tbaa !5
  %601 = getelementptr inbounds %struct._json_value, ptr %600, i32 0, i32 2
  %602 = getelementptr inbounds %struct.anon.0, ptr %601, i32 0, i32 0
  %603 = load i32, ptr %602, align 8, !tbaa !11
  %604 = zext i32 %603 to i64
  %605 = getelementptr inbounds %struct._json_object_entry, ptr %599, i64 %604
  %606 = getelementptr inbounds %struct._json_object_entry, ptr %605, i32 0, i32 1
  store i32 %595, ptr %606, align 8, !tbaa !28
  %607 = load i32, ptr %26, align 4, !tbaa !20
  %608 = add i32 %607, 1
  %609 = load ptr, ptr %12, align 8, !tbaa !5
  %610 = getelementptr inbounds %struct._json_value, ptr %609, i32 0, i32 3
  %611 = load ptr, ptr %610, align 8, !tbaa !11
  %612 = zext i32 %608 to i64
  %613 = getelementptr inbounds i8, ptr %611, i64 %612
  store ptr %613, ptr %610, align 8, !tbaa !11
  br label %614

614:                                              ; preds = %580, %571
  %615 = load i64, ptr %16, align 8, !tbaa !9
  %616 = or i64 %615, 72
  store i64 %616, ptr %16, align 8, !tbaa !9
  store i32 7, ptr %29, align 4
  br label %1495

617:                                              ; preds = %554
  br label %618

618:                                              ; preds = %617, %560
  br label %635

619:                                              ; preds = %541
  br label %620

620:                                              ; preds = %619
  %621 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 4
  %622 = load i32, ptr %621, align 8, !tbaa !19
  %623 = icmp ne i32 %622, 0
  br i1 %623, label %630, label %624

624:                                              ; preds = %620
  %625 = load i8, ptr %27, align 1, !tbaa !11
  %626 = load ptr, ptr %25, align 8, !tbaa !5
  %627 = load i32, ptr %26, align 4, !tbaa !20
  %628 = zext i32 %627 to i64
  %629 = getelementptr inbounds i8, ptr %626, i64 %628
  store i8 %625, ptr %629, align 1, !tbaa !11
  br label %630

630:                                              ; preds = %624, %620
  %631 = load i32, ptr %26, align 4, !tbaa !20
  %632 = add i32 %631, 1
  store i32 %632, ptr %26, align 4, !tbaa !20
  br label %633

633:                                              ; preds = %630
  br label %634

634:                                              ; preds = %633
  store i32 7, ptr %29, align 4
  br label %1495

635:                                              ; preds = %618
  br label %636

636:                                              ; preds = %635, %107
  %637 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 3
  %638 = getelementptr inbounds %struct.json_settings, ptr %637, i32 0, i32 1
  %639 = load i32, ptr %638, align 8, !tbaa !29
  %640 = and i32 %639, 1
  %641 = icmp ne i32 %640, 0
  br i1 %641, label %642, label %762

642:                                              ; preds = %636
  %643 = load i64, ptr %16, align 8, !tbaa !9
  %644 = and i64 %643, 24576
  %645 = icmp ne i64 %644, 0
  br i1 %645, label %646, label %707

646:                                              ; preds = %642
  %647 = load i64, ptr %16, align 8, !tbaa !9
  %648 = and i64 %647, 8192
  %649 = icmp ne i64 %648, 0
  br i1 %649, label %650, label %668

650:                                              ; preds = %646
  %651 = load i8, ptr %27, align 1, !tbaa !11
  %652 = sext i8 %651 to i32
  %653 = icmp eq i32 %652, 13
  br i1 %653, label %661, label %654

654:                                              ; preds = %650
  %655 = load i8, ptr %27, align 1, !tbaa !11
  %656 = sext i8 %655 to i32
  %657 = icmp eq i32 %656, 10
  br i1 %657, label %661, label %658

658:                                              ; preds = %654
  %659 = load i8, ptr %27, align 1, !tbaa !11
  %660 = icmp ne i8 %659, 0
  br i1 %660, label %667, label %661

661:                                              ; preds = %658, %654, %650
  %662 = load i64, ptr %16, align 8, !tbaa !9
  %663 = and i64 %662, -8193
  store i64 %663, ptr %16, align 8, !tbaa !9
  %664 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %665 = load ptr, ptr %664, align 8, !tbaa !22
  %666 = getelementptr inbounds i8, ptr %665, i32 -1
  store ptr %666, ptr %664, align 8, !tbaa !22
  br label %667

667:                                              ; preds = %661, %658
  store i32 7, ptr %29, align 4
  br label %1495

668:                                              ; preds = %646
  %669 = load i64, ptr %16, align 8, !tbaa !9
  %670 = and i64 %669, 16384
  %671 = icmp ne i64 %670, 0
  br i1 %671, label %672, label %706

672:                                              ; preds = %668
  %673 = load i8, ptr %27, align 1, !tbaa !11
  %674 = icmp ne i8 %673, 0
  br i1 %674, label %682, label %675

675:                                              ; preds = %672
  %676 = getelementptr inbounds [128 x i8], ptr %10, i64 0, i64 0
  %677 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 6
  %678 = load i32, ptr %677, align 8, !tbaa !21
  %679 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 7
  %680 = load i32, ptr %679, align 4, !tbaa !23
  %681 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %676, i64 noundef 128, ptr noundef @.str.16, i32 noundef %678, i32 noundef %680) #6
  store i32 8, ptr %29, align 4
  br label %1495

682:                                              ; preds = %672
  %683 = load i8, ptr %27, align 1, !tbaa !11
  %684 = sext i8 %683 to i32
  %685 = icmp eq i32 %684, 42
  br i1 %685, label %686, label %705

686:                                              ; preds = %682
  %687 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %688 = load ptr, ptr %687, align 8, !tbaa !22
  %689 = load ptr, ptr %11, align 8, !tbaa !5
  %690 = getelementptr inbounds i8, ptr %689, i64 -1
  %691 = icmp ult ptr %688, %690
  br i1 %691, label %692, label %705

692:                                              ; preds = %686
  %693 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %694 = load ptr, ptr %693, align 8, !tbaa !22
  %695 = getelementptr inbounds i8, ptr %694, i64 1
  %696 = load i8, ptr %695, align 1, !tbaa !11
  %697 = sext i8 %696 to i32
  %698 = icmp eq i32 %697, 47
  br i1 %698, label %699, label %705

699:                                              ; preds = %692
  %700 = load i64, ptr %16, align 8, !tbaa !9
  %701 = and i64 %700, -16385
  store i64 %701, ptr %16, align 8, !tbaa !9
  %702 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %703 = load ptr, ptr %702, align 8, !tbaa !22
  %704 = getelementptr inbounds i8, ptr %703, i32 1
  store ptr %704, ptr %702, align 8, !tbaa !22
  br label %705

705:                                              ; preds = %699, %692, %686, %682
  store i32 7, ptr %29, align 4
  br label %1495

706:                                              ; preds = %668
  br label %761

707:                                              ; preds = %642
  %708 = load i8, ptr %27, align 1, !tbaa !11
  %709 = sext i8 %708 to i32
  %710 = icmp eq i32 %709, 47
  br i1 %710, label %711, label %760

711:                                              ; preds = %707
  %712 = load i64, ptr %16, align 8, !tbaa !9
  %713 = and i64 %712, 136
  %714 = icmp ne i64 %713, 0
  br i1 %714, label %727, label %715

715:                                              ; preds = %711
  %716 = load ptr, ptr %12, align 8, !tbaa !5
  %717 = getelementptr inbounds %struct._json_value, ptr %716, i32 0, i32 1
  %718 = load i32, ptr %717, align 8, !tbaa !24
  %719 = icmp ne i32 %718, 1
  br i1 %719, label %720, label %727

720:                                              ; preds = %715
  %721 = getelementptr inbounds [128 x i8], ptr %10, i64 0, i64 0
  %722 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 6
  %723 = load i32, ptr %722, align 8, !tbaa !21
  %724 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 7
  %725 = load i32, ptr %724, align 4, !tbaa !23
  %726 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %721, i64 noundef 128, ptr noundef @.str.17, i32 noundef %723, i32 noundef %725) #6
  store i32 8, ptr %29, align 4
  br label %1495

727:                                              ; preds = %715, %711
  %728 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %729 = load ptr, ptr %728, align 8, !tbaa !22
  %730 = getelementptr inbounds i8, ptr %729, i32 1
  store ptr %730, ptr %728, align 8, !tbaa !22
  %731 = load ptr, ptr %11, align 8, !tbaa !5
  %732 = icmp eq ptr %730, %731
  br i1 %732, label %733, label %740

733:                                              ; preds = %727
  %734 = getelementptr inbounds [128 x i8], ptr %10, i64 0, i64 0
  %735 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 6
  %736 = load i32, ptr %735, align 8, !tbaa !21
  %737 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 7
  %738 = load i32, ptr %737, align 4, !tbaa !23
  %739 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %734, i64 noundef 128, ptr noundef @.str.18, i32 noundef %736, i32 noundef %738) #6
  store i32 8, ptr %29, align 4
  br label %1495

740:                                              ; preds = %727
  %741 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %742 = load ptr, ptr %741, align 8, !tbaa !22
  %743 = load i8, ptr %742, align 1, !tbaa !11
  store i8 %743, ptr %27, align 1, !tbaa !11
  %744 = sext i8 %743 to i32
  switch i32 %744, label %751 [
    i32 47, label %745
    i32 42, label %748
  ]

745:                                              ; preds = %740
  %746 = load i64, ptr %16, align 8, !tbaa !9
  %747 = or i64 %746, 8192
  store i64 %747, ptr %16, align 8, !tbaa !9
  store i32 7, ptr %29, align 4
  br label %1495

748:                                              ; preds = %740
  %749 = load i64, ptr %16, align 8, !tbaa !9
  %750 = or i64 %749, 16384
  store i64 %750, ptr %16, align 8, !tbaa !9
  store i32 7, ptr %29, align 4
  br label %1495

751:                                              ; preds = %740
  %752 = getelementptr inbounds [128 x i8], ptr %10, i64 0, i64 0
  %753 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 6
  %754 = load i32, ptr %753, align 8, !tbaa !21
  %755 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 7
  %756 = load i32, ptr %755, align 4, !tbaa !23
  %757 = load i8, ptr %27, align 1, !tbaa !11
  %758 = sext i8 %757 to i32
  %759 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %752, i64 noundef 128, ptr noundef @.str.19, i32 noundef %754, i32 noundef %756, i32 noundef %758) #6
  store i32 8, ptr %29, align 4
  br label %1495

760:                                              ; preds = %707
  br label %761

761:                                              ; preds = %760, %706
  br label %762

762:                                              ; preds = %761, %636
  %763 = load i64, ptr %16, align 8, !tbaa !9
  %764 = and i64 %763, 128
  %765 = icmp ne i64 %764, 0
  br i1 %765, label %766, label %788

766:                                              ; preds = %762
  %767 = load i8, ptr %27, align 1, !tbaa !11
  %768 = icmp ne i8 %767, 0
  br i1 %768, label %770, label %769

769:                                              ; preds = %766
  store i32 5, ptr %29, align 4
  br label %1495

770:                                              ; preds = %766
  %771 = load i8, ptr %27, align 1, !tbaa !11
  %772 = sext i8 %771 to i32
  switch i32 %772, label %779 [
    i32 10, label %773
    i32 32, label %778
    i32 9, label %778
    i32 13, label %778
  ]

773:                                              ; preds = %770
  %774 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 6
  %775 = load i32, ptr %774, align 8, !tbaa !21
  %776 = add i32 %775, 1
  store i32 %776, ptr %774, align 8, !tbaa !21
  %777 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 7
  store i32 0, ptr %777, align 4, !tbaa !23
  br label %778

778:                                              ; preds = %773, %770, %770, %770
  store i32 7, ptr %29, align 4
  br label %1495

779:                                              ; preds = %770
  %780 = getelementptr inbounds [128 x i8], ptr %10, i64 0, i64 0
  %781 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 6
  %782 = load i32, ptr %781, align 8, !tbaa !21
  %783 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 7
  %784 = load i32, ptr %783, align 4, !tbaa !23
  %785 = load i8, ptr %27, align 1, !tbaa !11
  %786 = sext i8 %785 to i32
  %787 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %780, i64 noundef 128, ptr noundef @.str.20, i32 noundef %782, i32 noundef %784, i32 noundef %786) #6
  store i32 8, ptr %29, align 4
  br label %1495

788:                                              ; preds = %762
  %789 = load i64, ptr %16, align 8, !tbaa !9
  %790 = and i64 %789, 8
  %791 = icmp ne i64 %790, 0
  br i1 %791, label %792, label %1103

792:                                              ; preds = %788
  %793 = load i8, ptr %27, align 1, !tbaa !11
  %794 = sext i8 %793 to i32
  switch i32 %794, label %821 [
    i32 10, label %795
    i32 32, label %800
    i32 9, label %800
    i32 13, label %800
    i32 93, label %801
  ]

795:                                              ; preds = %792
  %796 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 6
  %797 = load i32, ptr %796, align 8, !tbaa !21
  %798 = add i32 %797, 1
  store i32 %798, ptr %796, align 8, !tbaa !21
  %799 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 7
  store i32 0, ptr %799, align 4, !tbaa !23
  br label %800

800:                                              ; preds = %795, %792, %792, %792
  store i32 7, ptr %29, align 4
  br label %1495

801:                                              ; preds = %792
  %802 = load ptr, ptr %12, align 8, !tbaa !5
  %803 = icmp ne ptr %802, null
  br i1 %803, label %804, label %813

804:                                              ; preds = %801
  %805 = load ptr, ptr %12, align 8, !tbaa !5
  %806 = getelementptr inbounds %struct._json_value, ptr %805, i32 0, i32 1
  %807 = load i32, ptr %806, align 8, !tbaa !24
  %808 = icmp eq i32 %807, 2
  br i1 %808, label %809, label %813

809:                                              ; preds = %804
  %810 = load i64, ptr %16, align 8, !tbaa !9
  %811 = and i64 %810, -13
  %812 = or i64 %811, 1
  store i64 %812, ptr %16, align 8, !tbaa !9
  br label %820

813:                                              ; preds = %804, %801
  %814 = getelementptr inbounds [128 x i8], ptr %10, i64 0, i64 0
  %815 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 6
  %816 = load i32, ptr %815, align 8, !tbaa !21
  %817 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 7
  %818 = load i32, ptr %817, align 4, !tbaa !23
  %819 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %814, i64 noundef 128, ptr noundef @.str.21, i32 noundef %816, i32 noundef %818) #6
  store i32 8, ptr %29, align 4
  br label %1495

820:                                              ; preds = %809
  br label %1102

821:                                              ; preds = %792
  %822 = load i64, ptr %16, align 8, !tbaa !9
  %823 = and i64 %822, 4
  %824 = icmp ne i64 %823, 0
  br i1 %824, label %825, label %841

825:                                              ; preds = %821
  %826 = load i8, ptr %27, align 1, !tbaa !11
  %827 = sext i8 %826 to i32
  %828 = icmp eq i32 %827, 44
  br i1 %828, label %829, label %832

829:                                              ; preds = %825
  %830 = load i64, ptr %16, align 8, !tbaa !9
  %831 = and i64 %830, -5
  store i64 %831, ptr %16, align 8, !tbaa !9
  store i32 7, ptr %29, align 4
  br label %1495

832:                                              ; preds = %825
  %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 !21
  %836 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 7
  %837 = load i32, ptr %836, align 4, !tbaa !23
  %838 = load i8, ptr %27, align 1, !tbaa !11
  %839 = sext i8 %838 to i32
  %840 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %833, i64 noundef 128, ptr noundef @.str.22, i32 noundef %835, i32 noundef %837, i32 noundef %839) #6
  store i32 8, ptr %29, align 4
  br label %1495

841:                                              ; preds = %821
  %842 = load i64, ptr %16, align 8, !tbaa !9
  %843 = and i64 %842, 64
  %844 = icmp ne i64 %843, 0
  br i1 %844, label %845, label %861

845:                                              ; preds = %841
  %846 = load i8, ptr %27, align 1, !tbaa !11
  %847 = sext i8 %846 to i32
  %848 = icmp eq i32 %847, 58
  br i1 %848, label %849, label %852

849:                                              ; preds = %845
  %850 = load i64, ptr %16, align 8, !tbaa !9
  %851 = and i64 %850, -65
  store i64 %851, ptr %16, align 8, !tbaa !9
  store i32 7, ptr %29, align 4
  br label %1495

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

861:                                              ; preds = %841
  %862 = load i64, ptr %16, align 8, !tbaa !9
  %863 = and i64 %862, -9
  store i64 %863, ptr %16, align 8, !tbaa !9
  %864 = load i8, ptr %27, align 1, !tbaa !11
  %865 = sext i8 %864 to i32
  switch i32 %865, label %1009 [
    i32 123, label %866
    i32 91, label %871
    i32 34, label %878
    i32 116, label %889
    i32 102, label %928
    i32 110, label %972
  ]

866:                                              ; preds = %861
  %867 = call i32 @new_value(ptr noundef %15, ptr noundef %12, ptr noundef %13, ptr noundef %14, i32 noundef 1)
  %868 = icmp ne i32 %867, 0
  br i1 %868, label %870, label %869

869:                                              ; preds = %866
  store i32 32, ptr %29, align 4
  br label %1495

870:                                              ; preds = %866
  store i32 7, ptr %29, align 4
  br label %1495

871:                                              ; preds = %861
  %872 = call i32 @new_value(ptr noundef %15, ptr noundef %12, ptr noundef %13, ptr noundef %14, i32 noundef 2)
  %873 = icmp ne i32 %872, 0
  br i1 %873, label %875, label %874

874:                                              ; preds = %871
  store i32 32, ptr %29, align 4
  br label %1495

875:                                              ; preds = %871
  %876 = load i64, ptr %16, align 8, !tbaa !9
  %877 = or i64 %876, 8
  store i64 %877, ptr %16, align 8, !tbaa !9
  store i32 7, ptr %29, align 4
  br label %1495

878:                                              ; preds = %861
  %879 = call i32 @new_value(ptr noundef %15, ptr noundef %12, ptr noundef %13, ptr noundef %14, i32 noundef 5)
  %880 = icmp ne i32 %879, 0
  br i1 %880, label %882, label %881

881:                                              ; preds = %878
  store i32 32, ptr %29, align 4
  br label %1495

882:                                              ; preds = %878
  %883 = load i64, ptr %16, align 8, !tbaa !9
  %884 = or i64 %883, 32
  store i64 %884, ptr %16, align 8, !tbaa !9
  %885 = load ptr, ptr %12, align 8, !tbaa !5
  %886 = getelementptr inbounds %struct._json_value, ptr %885, i32 0, i32 2
  %887 = getelementptr inbounds %struct.anon, ptr %886, i32 0, i32 1
  %888 = load ptr, ptr %887, align 8, !tbaa !11
  store ptr %888, ptr %25, align 8, !tbaa !5
  store i32 0, ptr %26, align 4, !tbaa !20
  store i32 7, ptr %29, align 4
  br label %1495

889:                                              ; preds = %861
  %890 = load ptr, ptr %11, align 8, !tbaa !5
  %891 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %892 = load ptr, ptr %891, align 8, !tbaa !22
  %893 = ptrtoint ptr %890 to i64
  %894 = ptrtoint ptr %892 to i64
  %895 = sub i64 %893, %894
  %896 = icmp slt i64 %895, 3
  br i1 %896, label %918, label %897

897:                                              ; preds = %889
  %898 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %899 = load ptr, ptr %898, align 8, !tbaa !22
  %900 = getelementptr inbounds i8, ptr %899, i32 1
  store ptr %900, ptr %898, align 8, !tbaa !22
  %901 = load i8, ptr %900, align 1, !tbaa !11
  %902 = sext i8 %901 to i32
  %903 = icmp ne i32 %902, 114
  br i1 %903, label %918, label %904

904:                                              ; preds = %897
  %905 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %906 = load ptr, ptr %905, align 8, !tbaa !22
  %907 = getelementptr inbounds i8, ptr %906, i32 1
  store ptr %907, ptr %905, align 8, !tbaa !22
  %908 = load i8, ptr %907, align 1, !tbaa !11
  %909 = sext i8 %908 to i32
  %910 = icmp ne i32 %909, 117
  br i1 %910, label %918, label %911

911:                                              ; preds = %904
  %912 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %913 = load ptr, ptr %912, align 8, !tbaa !22
  %914 = getelementptr inbounds i8, ptr %913, i32 1
  store ptr %914, ptr %912, align 8, !tbaa !22
  %915 = load i8, ptr %914, align 1, !tbaa !11
  %916 = sext i8 %915 to i32
  %917 = icmp ne i32 %916, 101
  br i1 %917, label %918, label %919

918:                                              ; preds = %911, %904, %897, %889
  store i32 33, ptr %29, align 4
  br label %1495

919:                                              ; preds = %911
  %920 = call i32 @new_value(ptr noundef %15, ptr noundef %12, ptr noundef %13, ptr noundef %14, i32 noundef 6)
  %921 = icmp ne i32 %920, 0
  br i1 %921, label %923, label %922

922:                                              ; preds = %919
  store i32 32, ptr %29, align 4
  br label %1495

923:                                              ; preds = %919
  %924 = load ptr, ptr %12, align 8, !tbaa !5
  %925 = getelementptr inbounds %struct._json_value, ptr %924, i32 0, i32 2
  store i32 1, ptr %925, align 8, !tbaa !11
  %926 = load i64, ptr %16, align 8, !tbaa !9
  %927 = or i64 %926, 1
  store i64 %927, ptr %16, align 8, !tbaa !9
  br label %1101

928:                                              ; preds = %861
  %929 = load ptr, ptr %11, align 8, !tbaa !5
  %930 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %931 = load ptr, ptr %930, align 8, !tbaa !22
  %932 = ptrtoint ptr %929 to i64
  %933 = ptrtoint ptr %931 to i64
  %934 = sub i64 %932, %933
  %935 = icmp slt i64 %934, 4
  br i1 %935, label %964, label %936

936:                                              ; preds = %928
  %937 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %938 = load ptr, ptr %937, align 8, !tbaa !22
  %939 = getelementptr inbounds i8, ptr %938, i32 1
  store ptr %939, ptr %937, align 8, !tbaa !22
  %940 = load i8, ptr %939, align 1, !tbaa !11
  %941 = sext i8 %940 to i32
  %942 = icmp ne i32 %941, 97
  br i1 %942, label %964, label %943

943:                                              ; preds = %936
  %944 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %945 = load ptr, ptr %944, align 8, !tbaa !22
  %946 = getelementptr inbounds i8, ptr %945, i32 1
  store ptr %946, ptr %944, align 8, !tbaa !22
  %947 = load i8, ptr %946, align 1, !tbaa !11
  %948 = sext i8 %947 to i32
  %949 = icmp ne i32 %948, 108
  br i1 %949, label %964, label %950

950:                                              ; preds = %943
  %951 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %952 = load ptr, ptr %951, align 8, !tbaa !22
  %953 = getelementptr inbounds i8, ptr %952, i32 1
  store ptr %953, ptr %951, align 8, !tbaa !22
  %954 = load i8, ptr %953, align 1, !tbaa !11
  %955 = sext i8 %954 to i32
  %956 = icmp ne i32 %955, 115
  br i1 %956, label %964, label %957

957:                                              ; preds = %950
  %958 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %959 = load ptr, ptr %958, align 8, !tbaa !22
  %960 = getelementptr inbounds i8, ptr %959, i32 1
  store ptr %960, ptr %958, align 8, !tbaa !22
  %961 = load i8, ptr %960, align 1, !tbaa !11
  %962 = sext i8 %961 to i32
  %963 = icmp ne i32 %962, 101
  br i1 %963, label %964, label %965

964:                                              ; preds = %957, %950, %943, %936, %928
  store i32 33, ptr %29, align 4
  br label %1495

965:                                              ; preds = %957
  %966 = call i32 @new_value(ptr noundef %15, ptr noundef %12, ptr noundef %13, ptr noundef %14, i32 noundef 6)
  %967 = icmp ne i32 %966, 0
  br i1 %967, label %969, label %968

968:                                              ; preds = %965
  store i32 32, ptr %29, align 4
  br label %1495

969:                                              ; preds = %965
  %970 = load i64, ptr %16, align 8, !tbaa !9
  %971 = or i64 %970, 1
  store i64 %971, ptr %16, align 8, !tbaa !9
  br label %1101

972:                                              ; preds = %861
  %973 = load ptr, ptr %11, align 8, !tbaa !5
  %974 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %975 = load ptr, ptr %974, align 8, !tbaa !22
  %976 = ptrtoint ptr %973 to i64
  %977 = ptrtoint ptr %975 to i64
  %978 = sub i64 %976, %977
  %979 = icmp slt i64 %978, 3
  br i1 %979, label %1001, label %980

980:                                              ; preds = %972
  %981 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %982 = load ptr, ptr %981, align 8, !tbaa !22
  %983 = getelementptr inbounds i8, ptr %982, i32 1
  store ptr %983, ptr %981, align 8, !tbaa !22
  %984 = load i8, ptr %983, align 1, !tbaa !11
  %985 = sext i8 %984 to i32
  %986 = icmp ne i32 %985, 117
  br i1 %986, label %1001, label %987

987:                                              ; preds = %980
  %988 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %989 = load ptr, ptr %988, align 8, !tbaa !22
  %990 = getelementptr inbounds i8, ptr %989, i32 1
  store ptr %990, ptr %988, align 8, !tbaa !22
  %991 = load i8, ptr %990, align 1, !tbaa !11
  %992 = sext i8 %991 to i32
  %993 = icmp ne i32 %992, 108
  br i1 %993, label %1001, label %994

994:                                              ; preds = %987
  %995 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %996 = load ptr, ptr %995, align 8, !tbaa !22
  %997 = getelementptr inbounds i8, ptr %996, i32 1
  store ptr %997, ptr %995, align 8, !tbaa !22
  %998 = load i8, ptr %997, align 1, !tbaa !11
  %999 = sext i8 %998 to i32
  %1000 = icmp ne i32 %999, 108
  br i1 %1000, label %1001, label %1002

1001:                                             ; preds = %994, %987, %980, %972
  store i32 33, ptr %29, align 4
  br label %1495

1002:                                             ; preds = %994
  %1003 = call i32 @new_value(ptr noundef %15, ptr noundef %12, ptr noundef %13, ptr noundef %14, i32 noundef 7)
  %1004 = icmp ne i32 %1003, 0
  br i1 %1004, label %1006, label %1005

1005:                                             ; preds = %1002
  store i32 32, ptr %29, align 4
  br label %1495

1006:                                             ; preds = %1002
  %1007 = load i64, ptr %16, align 8, !tbaa !9
  %1008 = or i64 %1007, 1
  store i64 %1008, ptr %16, align 8, !tbaa !9
  br label %1101

1009:                                             ; preds = %861
  %1010 = call ptr @__ctype_b_loc() #7
  %1011 = load ptr, ptr %1010, align 8, !tbaa !5
  %1012 = load i8, ptr %27, align 1, !tbaa !11
  %1013 = sext i8 %1012 to i32
  %1014 = sext i32 %1013 to i64
  %1015 = getelementptr inbounds i16, ptr %1011, i64 %1014
  %1016 = load i16, ptr %1015, align 2, !tbaa !30
  %1017 = zext i16 %1016 to i32
  %1018 = and i32 %1017, 2048
  %1019 = icmp ne i32 %1018, 0
  br i1 %1019, label %1024, label %1020

1020:                                             ; preds = %1009
  %1021 = load i8, ptr %27, align 1, !tbaa !11
  %1022 = sext i8 %1021 to i32
  %1023 = icmp eq i32 %1022, 45
  br i1 %1023, label %1024, label %1092

1024:                                             ; preds = %1020, %1009
  %1025 = call i32 @new_value(ptr noundef %15, ptr noundef %12, ptr noundef %13, ptr noundef %14, i32 noundef 3)
  %1026 = icmp ne i32 %1025, 0
  br i1 %1026, label %1028, label %1027

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

1028:                                             ; preds = %1024
  %1029 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 4
  %1030 = load i32, ptr %1029, align 8, !tbaa !19
  %1031 = icmp ne i32 %1030, 0
  br i1 %1031, label %1080, label %1032

1032:                                             ; preds = %1028
  br label %1033

1033:                                             ; preds = %1073, %1032
  %1034 = call ptr @__ctype_b_loc() #7
  %1035 = load ptr, ptr %1034, align 8, !tbaa !5
  %1036 = load i8, ptr %27, align 1, !tbaa !11
  %1037 = sext i8 %1036 to i32
  %1038 = sext i32 %1037 to i64
  %1039 = getelementptr inbounds i16, ptr %1035, i64 %1038
  %1040 = load i16, ptr %1039, align 2, !tbaa !30
  %1041 = zext i16 %1040 to i32
  %1042 = and i32 %1041, 2048
  %1043 = icmp ne i32 %1042, 0
  br i1 %1043, label %1064, label %1044

1044:                                             ; preds = %1033
  %1045 = load i8, ptr %27, align 1, !tbaa !11
  %1046 = sext i8 %1045 to i32
  %1047 = icmp eq i32 %1046, 43
  br i1 %1047, label %1064, label %1048

1048:                                             ; preds = %1044
  %1049 = load i8, ptr %27, align 1, !tbaa !11
  %1050 = sext i8 %1049 to i32
  %1051 = icmp eq i32 %1050, 45
  br i1 %1051, label %1064, label %1052

1052:                                             ; preds = %1048
  %1053 = load i8, ptr %27, align 1, !tbaa !11
  %1054 = sext i8 %1053 to i32
  %1055 = icmp eq i32 %1054, 101
  br i1 %1055, label %1064, label %1056

1056:                                             ; preds = %1052
  %1057 = load i8, ptr %27, align 1, !tbaa !11
  %1058 = sext i8 %1057 to i32
  %1059 = icmp eq i32 %1058, 69
  br i1 %1059, label %1064, label %1060

1060:                                             ; preds = %1056
  %1061 = load i8, ptr %27, align 1, !tbaa !11
  %1062 = sext i8 %1061 to i32
  %1063 = icmp eq i32 %1062, 46
  br label %1064

1064:                                             ; preds = %1060, %1056, %1052, %1048, %1044, %1033
  %1065 = phi i1 [ true, %1056 ], [ true, %1052 ], [ true, %1048 ], [ true, %1044 ], [ true, %1033 ], [ %1063, %1060 ]
  br i1 %1065, label %1066, label %1077

1066:                                             ; preds = %1064
  %1067 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %1068 = load ptr, ptr %1067, align 8, !tbaa !22
  %1069 = getelementptr inbounds i8, ptr %1068, i32 1
  store ptr %1069, ptr %1067, align 8, !tbaa !22
  %1070 = load ptr, ptr %11, align 8, !tbaa !5
  %1071 = icmp eq ptr %1069, %1070
  br i1 %1071, label %1072, label %1073

1072:                                             ; preds = %1066
  store i8 0, ptr %27, align 1, !tbaa !11
  br label %1077

1073:                                             ; preds = %1066
  %1074 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %1075 = load ptr, ptr %1074, align 8, !tbaa !22
  %1076 = load i8, ptr %1075, align 1, !tbaa !11
  store i8 %1076, ptr %27, align 1, !tbaa !11
  br label %1033, !llvm.loop !32

1077:                                             ; preds = %1072, %1064
  %1078 = load i64, ptr %16, align 8, !tbaa !9
  %1079 = or i64 %1078, 3
  store i64 %1079, ptr %16, align 8, !tbaa !9
  br label %1101

1080:                                             ; preds = %1028
  %1081 = load i64, ptr %16, align 8, !tbaa !9
  %1082 = and i64 %1081, -7937
  store i64 %1082, 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
  %1083 = load i8, ptr %27, align 1, !tbaa !11
  %1084 = sext i8 %1083 to i32
  %1085 = icmp ne i32 %1084, 45
  br i1 %1085, label %1086, label %1089

1086:                                             ; preds = %1080
  %1087 = load i64, ptr %16, align 8, !tbaa !9
  %1088 = or i64 %1087, 2
  store i64 %1088, ptr %16, align 8, !tbaa !9
  br label %1101

1089:                                             ; preds = %1080
  %1090 = load i64, ptr %16, align 8, !tbaa !9
  %1091 = or i64 %1090, 256
  store i64 %1091, ptr %16, align 8, !tbaa !9
  store i32 7, ptr %29, align 4
  br label %1495

1092:                                             ; preds = %1020
  %1093 = getelementptr inbounds [128 x i8], ptr %10, i64 0, i64 0
  %1094 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 6
  %1095 = load i32, ptr %1094, align 8, !tbaa !21
  %1096 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 7
  %1097 = load i32, ptr %1096, align 4, !tbaa !23
  %1098 = load i8, ptr %27, align 1, !tbaa !11
  %1099 = sext i8 %1098 to i32
  %1100 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %1093, i64 noundef 128, ptr noundef @.str.24, i32 noundef %1095, i32 noundef %1097, i32 noundef %1099) #6
  store i32 8, ptr %29, align 4
  br label %1495

1101:                                             ; preds = %1086, %1077, %1006, %969, %923
  br label %1102

1102:                                             ; preds = %1101, %820
  br label %1405

1103:                                             ; preds = %788
  %1104 = load ptr, ptr %12, align 8, !tbaa !5
  %1105 = getelementptr inbounds %struct._json_value, ptr %1104, i32 0, i32 1
  %1106 = load i32, ptr %1105, align 8, !tbaa !24
  switch i32 %1106, label %1403 [
    i32 1, label %1107
    i32 3, label %1155
    i32 4, label %1155
  ]

1107:                                             ; preds = %1103
  %1108 = load i8, ptr %27, align 1, !tbaa !11
  %1109 = sext i8 %1108 to i32
  switch i32 %1109, label %1145 [
    i32 10, label %1110
    i32 32, label %1115
    i32 9, label %1115
    i32 13, label %1115
    i32 34, label %1116
    i32 125, label %1133
    i32 44, label %1137
  ]

1110:                                             ; preds = %1107
  %1111 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 6
  %1112 = load i32, ptr %1111, align 8, !tbaa !21
  %1113 = add i32 %1112, 1
  store i32 %1113, ptr %1111, align 8, !tbaa !21
  %1114 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 7
  store i32 0, ptr %1114, align 4, !tbaa !23
  br label %1115

1115:                                             ; preds = %1110, %1107, %1107, %1107
  store i32 7, ptr %29, align 4
  br label %1495

1116:                                             ; preds = %1107
  %1117 = load i64, ptr %16, align 8, !tbaa !9
  %1118 = and i64 %1117, 4
  %1119 = icmp ne i64 %1118, 0
  br i1 %1119, label %1120, label %1127

1120:                                             ; preds = %1116
  %1121 = getelementptr inbounds [128 x i8], ptr %10, i64 0, i64 0
  %1122 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 6
  %1123 = load i32, ptr %1122, align 8, !tbaa !21
  %1124 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 7
  %1125 = load i32, ptr %1124, align 4, !tbaa !23
  %1126 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %1121, i64 noundef 128, ptr noundef @.str.25, i32 noundef %1123, i32 noundef %1125) #6
  store i32 8, ptr %29, align 4
  br label %1495

1127:                                             ; preds = %1116
  %1128 = load i64, ptr %16, align 8, !tbaa !9
  %1129 = or i64 %1128, 32
  store i64 %1129, ptr %16, align 8, !tbaa !9
  %1130 = load ptr, ptr %12, align 8, !tbaa !5
  %1131 = getelementptr inbounds %struct._json_value, ptr %1130, i32 0, i32 3
  %1132 = load ptr, ptr %1131, align 8, !tbaa !11
  store ptr %1132, ptr %25, align 8, !tbaa !5
  store i32 0, ptr %26, align 4, !tbaa !20
  br label %1154

1133:                                             ; preds = %1107
  %1134 = load i64, ptr %16, align 8, !tbaa !9
  %1135 = and i64 %1134, -5
  %1136 = or i64 %1135, 1
  store i64 %1136, ptr %16, align 8, !tbaa !9
  br label %1154

1137:                                             ; preds = %1107
  %1138 = load i64, ptr %16, align 8, !tbaa !9
  %1139 = and i64 %1138, 4
  %1140 = icmp ne i64 %1139, 0
  br i1 %1140, label %1141, label %1144

1141:                                             ; preds = %1137
  %1142 = load i64, ptr %16, align 8, !tbaa !9
  %1143 = and i64 %1142, -5
  store i64 %1143, ptr %16, align 8, !tbaa !9
  br label %1154

1144:                                             ; preds = %1137
  br label %1145

1145:                                             ; preds = %1144, %1107
  %1146 = getelementptr inbounds [128 x i8], ptr %10, i64 0, i64 0
  %1147 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 6
  %1148 = load i32, ptr %1147, align 8, !tbaa !21
  %1149 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 7
  %1150 = load i32, ptr %1149, align 4, !tbaa !23
  %1151 = load i8, ptr %27, align 1, !tbaa !11
  %1152 = sext i8 %1151 to i32
  %1153 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %1146, i64 noundef 128, ptr noundef @.str.26, i32 noundef %1148, i32 noundef %1150, i32 noundef %1152) #6
  store i32 8, ptr %29, align 4
  br label %1495

1154:                                             ; preds = %1141, %1133, %1127
  br label %1404

1155:                                             ; preds = %1103, %1103
  %1156 = call ptr @__ctype_b_loc() #7
  %1157 = load ptr, ptr %1156, align 8, !tbaa !5
  %1158 = load i8, ptr %27, align 1, !tbaa !11
  %1159 = sext i8 %1158 to i32
  %1160 = sext i32 %1159 to i64
  %1161 = getelementptr inbounds i16, ptr %1157, i64 %1160
  %1162 = load i16, ptr %1161, align 2, !tbaa !30
  %1163 = zext i16 %1162 to i32
  %1164 = and i32 %1163, 2048
  %1165 = icmp ne i32 %1164, 0
  br i1 %1165, label %1166, label %1235

1166:                                             ; preds = %1155
  %1167 = load i64, ptr %17, align 8, !tbaa !9
  %1168 = add nsw i64 %1167, 1
  store i64 %1168, ptr %17, align 8, !tbaa !9
  %1169 = load ptr, ptr %12, align 8, !tbaa !5
  %1170 = getelementptr inbounds %struct._json_value, ptr %1169, i32 0, i32 1
  %1171 = load i32, ptr %1170, align 8, !tbaa !24
  %1172 = icmp eq i32 %1171, 3
  br i1 %1172, label %1177, label %1173

1173:                                             ; preds = %1166
  %1174 = load i64, ptr %16, align 8, !tbaa !9
  %1175 = and i64 %1174, 1024
  %1176 = icmp ne i64 %1175, 0
  br i1 %1176, label %1177, label %1227

1177:                                             ; preds = %1173, %1166
  %1178 = load i64, ptr %16, align 8, !tbaa !9
  %1179 = and i64 %1178, 1024
  %1180 = icmp ne i64 %1179, 0
  br i1 %1180, label %1205, label %1181

1181:                                             ; preds = %1177
  %1182 = load i64, ptr %16, align 8, !tbaa !9
  %1183 = and i64 %1182, 512
  %1184 = icmp ne i64 %1183, 0
  br i1 %1184, label %1185, label %1194

1185:                                             ; preds = %1181
  %1186 = getelementptr inbounds [128 x i8], ptr %10, i64 0, i64 0
  %1187 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 6
  %1188 = load i32, ptr %1187, align 8, !tbaa !21
  %1189 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 7
  %1190 = load i32, ptr %1189, align 4, !tbaa !23
  %1191 = load i8, ptr %27, align 1, !tbaa !11
  %1192 = sext i8 %1191 to i32
  %1193 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %1186, i64 noundef 128, ptr noundef @.str.27, i32 noundef %1188, i32 noundef %1190, i32 noundef %1192) #6
  store i32 8, ptr %29, align 4
  br label %1495

1194:                                             ; preds = %1181
  %1195 = load i64, ptr %17, align 8, !tbaa !9
  %1196 = icmp eq i64 %1195, 1
  br i1 %1196, label %1197, label %1204

1197:                                             ; preds = %1194
  %1198 = load i8, ptr %27, align 1, !tbaa !11
  %1199 = sext i8 %1198 to i32
  %1200 = icmp eq i32 %1199, 48
  br i1 %1200, label %1201, label %1204

1201:                                             ; preds = %1197
  %1202 = load i64, ptr %16, align 8, !tbaa !9
  %1203 = or i64 %1202, 512
  store i64 %1203, ptr %16, align 8, !tbaa !9
  br label %1204

1204:                                             ; preds = %1201, %1197, %1194
  br label %1215

1205:                                             ; preds = %1177
  %1206 = load i64, ptr %16, align 8, !tbaa !9
  %1207 = or i64 %1206, 2048
  store i64 %1207, ptr %16, align 8, !tbaa !9
  %1208 = load i64, ptr %18, align 8, !tbaa !9
  %1209 = mul nsw i64 %1208, 10
  %1210 = load i8, ptr %27, align 1, !tbaa !11
  %1211 = sext i8 %1210 to i32
  %1212 = sub nsw i32 %1211, 48
  %1213 = sext i32 %1212 to i64
  %1214 = add nsw i64 %1209, %1213
  store i64 %1214, ptr %18, align 8, !tbaa !9
  store i32 7, ptr %29, align 4
  br label %1495

1215:                                             ; preds = %1204
  %1216 = load ptr, ptr %12, align 8, !tbaa !5
  %1217 = getelementptr inbounds %struct._json_value, ptr %1216, i32 0, i32 2
  %1218 = load i64, ptr %1217, align 8, !tbaa !11
  %1219 = mul nsw i64 %1218, 10
  %1220 = load i8, ptr %27, align 1, !tbaa !11
  %1221 = sext i8 %1220 to i32
  %1222 = sub nsw i32 %1221, 48
  %1223 = sext i32 %1222 to i64
  %1224 = add nsw i64 %1219, %1223
  %1225 = load ptr, ptr %12, align 8, !tbaa !5
  %1226 = getelementptr inbounds %struct._json_value, ptr %1225, i32 0, i32 2
  store i64 %1224, ptr %1226, align 8, !tbaa !11
  store i32 7, ptr %29, align 4
  br label %1495

1227:                                             ; preds = %1173
  %1228 = load i64, ptr %19, align 8, !tbaa !9
  %1229 = mul nsw i64 %1228, 10
  %1230 = load i8, ptr %27, align 1, !tbaa !11
  %1231 = sext i8 %1230 to i32
  %1232 = sub nsw i32 %1231, 48
  %1233 = sext i32 %1232 to i64
  %1234 = add nsw i64 %1229, %1233
  store i64 %1234, ptr %19, align 8, !tbaa !9
  store i32 7, ptr %29, align 4
  br label %1495

1235:                                             ; preds = %1155
  %1236 = load i8, ptr %27, align 1, !tbaa !11
  %1237 = sext i8 %1236 to i32
  %1238 = icmp eq i32 %1237, 43
  br i1 %1238, label %1243, label %1239

1239:                                             ; preds = %1235
  %1240 = load i8, ptr %27, align 1, !tbaa !11
  %1241 = sext i8 %1240 to i32
  %1242 = icmp eq i32 %1241, 45
  br i1 %1242, label %1243, label %1262

1243:                                             ; preds = %1239, %1235
  %1244 = load i64, ptr %16, align 8, !tbaa !9
  %1245 = and i64 %1244, 1024
  %1246 = icmp ne i64 %1245, 0
  br i1 %1246, label %1247, label %1261

1247:                                             ; preds = %1243
  %1248 = load i64, ptr %16, align 8, !tbaa !9
  %1249 = and i64 %1248, 2048
  %1250 = icmp ne i64 %1249, 0
  br i1 %1250, label %1261, label %1251

1251:                                             ; preds = %1247
  %1252 = load i64, ptr %16, align 8, !tbaa !9
  %1253 = or i64 %1252, 2048
  store i64 %1253, ptr %16, align 8, !tbaa !9
  %1254 = load i8, ptr %27, align 1, !tbaa !11
  %1255 = sext i8 %1254 to i32
  %1256 = icmp eq i32 %1255, 45
  br i1 %1256, label %1257, label %1260

1257:                                             ; preds = %1251
  %1258 = load i64, ptr %16, align 8, !tbaa !9
  %1259 = or i64 %1258, 4096
  store i64 %1259, ptr %16, align 8, !tbaa !9
  br label %1260

1260:                                             ; preds = %1257, %1251
  store i32 7, ptr %29, align 4
  br label %1495

1261:                                             ; preds = %1247, %1243
  br label %1291

1262:                                             ; preds = %1239
  %1263 = load i8, ptr %27, align 1, !tbaa !11
  %1264 = sext i8 %1263 to i32
  %1265 = icmp eq i32 %1264, 46
  br i1 %1265, label %1266, label %1290

1266:                                             ; preds = %1262
  %1267 = load ptr, ptr %12, align 8, !tbaa !5
  %1268 = getelementptr inbounds %struct._json_value, ptr %1267, i32 0, i32 1
  %1269 = load i32, ptr %1268, align 8, !tbaa !24
  %1270 = icmp eq i32 %1269, 3
  br i1 %1270, label %1271, label %1290

1271:                                             ; preds = %1266
  %1272 = load i64, ptr %17, align 8, !tbaa !9
  %1273 = icmp ne i64 %1272, 0
  br i1 %1273, label %1281, label %1274

1274:                                             ; preds = %1271
  %1275 = getelementptr inbounds [128 x i8], ptr %10, i64 0, i64 0
  %1276 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 6
  %1277 = load i32, ptr %1276, align 8, !tbaa !21
  %1278 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 7
  %1279 = load i32, ptr %1278, align 4, !tbaa !23
  %1280 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %1275, i64 noundef 128, ptr noundef @.str.28, i32 noundef %1277, i32 noundef %1279) #6
  store i32 8, ptr %29, align 4
  br label %1495

1281:                                             ; preds = %1271
  %1282 = load ptr, ptr %12, align 8, !tbaa !5
  %1283 = getelementptr inbounds %struct._json_value, ptr %1282, i32 0, i32 1
  store i32 4, ptr %1283, align 8, !tbaa !24
  %1284 = load ptr, ptr %12, align 8, !tbaa !5
  %1285 = getelementptr inbounds %struct._json_value, ptr %1284, i32 0, i32 2
  %1286 = load i64, ptr %1285, align 8, !tbaa !11
  %1287 = sitofp i64 %1286 to double
  %1288 = load ptr, ptr %12, align 8, !tbaa !5
  %1289 = getelementptr inbounds %struct._json_value, ptr %1288, i32 0, i32 2
  store double %1287, ptr %1289, align 8, !tbaa !11
  store i64 0, ptr %17, align 8, !tbaa !9
  store i32 7, ptr %29, align 4
  br label %1495

1290:                                             ; preds = %1266, %1262
  br label %1291

1291:                                             ; preds = %1290, %1261
  %1292 = load i64, ptr %16, align 8, !tbaa !9
  %1293 = and i64 %1292, 1024
  %1294 = icmp ne i64 %1293, 0
  br i1 %1294, label %1349, label %1295

1295:                                             ; preds = %1291
  %1296 = load ptr, ptr %12, align 8, !tbaa !5
  %1297 = getelementptr inbounds %struct._json_value, ptr %1296, i32 0, i32 1
  %1298 = load i32, ptr %1297, align 8, !tbaa !24
  %1299 = icmp eq i32 %1298, 4
  br i1 %1299, label %1300, label %1321

1300:                                             ; preds = %1295
  %1301 = load i64, ptr %17, align 8, !tbaa !9
  %1302 = icmp ne i64 %1301, 0
  br i1 %1302, label %1310, label %1303

1303:                                             ; preds = %1300
  %1304 = getelementptr inbounds [128 x i8], ptr %10, i64 0, i64 0
  %1305 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 6
  %1306 = load i32, ptr %1305, align 8, !tbaa !21
  %1307 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 7
  %1308 = load i32, ptr %1307, align 4, !tbaa !23
  %1309 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %1304, i64 noundef 128, ptr noundef @.str.29, i32 noundef %1306, i32 noundef %1308) #6
  store i32 8, ptr %29, align 4
  br label %1495

1310:                                             ; preds = %1300
  %1311 = load i64, ptr %19, align 8, !tbaa !9
  %1312 = sitofp i64 %1311 to double
  %1313 = load i64, ptr %17, align 8, !tbaa !9
  %1314 = sitofp i64 %1313 to double
  %1315 = call double @pow(double noundef 1.000000e+01, double noundef %1314) #6
  %1316 = fdiv double %1312, %1315
  %1317 = load ptr, ptr %12, align 8, !tbaa !5
  %1318 = getelementptr inbounds %struct._json_value, ptr %1317, i32 0, i32 2
  %1319 = load double, ptr %1318, align 8, !tbaa !11
  %1320 = fadd double %1319, %1316
  store double %1320, ptr %1318, align 8, !tbaa !11
  br label %1321

1321:                                             ; preds = %1310, %1295
  %1322 = load i8, ptr %27, align 1, !tbaa !11
  %1323 = sext i8 %1322 to i32
  %1324 = icmp eq i32 %1323, 101
  br i1 %1324, label %1329, label %1325

1325:                                             ; preds = %1321
  %1326 = load i8, ptr %27, align 1, !tbaa !11
  %1327 = sext i8 %1326 to i32
  %1328 = icmp eq i32 %1327, 69
  br i1 %1328, label %1329, label %1348

1329:                                             ; preds = %1325, %1321
  %1330 = load i64, ptr %16, align 8, !tbaa !9
  %1331 = or i64 %1330, 1024
  store i64 %1331, ptr %16, align 8, !tbaa !9
  %1332 = load ptr, ptr %12, align 8, !tbaa !5
  %1333 = getelementptr inbounds %struct._json_value, ptr %1332, i32 0, i32 1
  %1334 = load i32, ptr %1333, align 8, !tbaa !24
  %1335 = icmp eq i32 %1334, 3
  br i1 %1335, label %1336, label %1345

1336:                                             ; preds = %1329
  %1337 = load ptr, ptr %12, align 8, !tbaa !5
  %1338 = getelementptr inbounds %struct._json_value, ptr %1337, i32 0, i32 1
  store i32 4, ptr %1338, align 8, !tbaa !24
  %1339 = load ptr, ptr %12, align 8, !tbaa !5
  %1340 = getelementptr inbounds %struct._json_value, ptr %1339, i32 0, i32 2
  %1341 = load i64, ptr %1340, align 8, !tbaa !11
  %1342 = sitofp i64 %1341 to double
  %1343 = load ptr, ptr %12, align 8, !tbaa !5
  %1344 = getelementptr inbounds %struct._json_value, ptr %1343, i32 0, i32 2
  store double %1342, ptr %1344, align 8, !tbaa !11
  br label %1345

1345:                                             ; preds = %1336, %1329
  store i64 0, ptr %17, align 8, !tbaa !9
  %1346 = load i64, ptr %16, align 8, !tbaa !9
  %1347 = and i64 %1346, -513
  store i64 %1347, ptr %16, align 8, !tbaa !9
  store i32 7, ptr %29, align 4
  br label %1495

1348:                                             ; preds = %1325
  br label %1376

1349:                                             ; preds = %1291
  %1350 = load i64, ptr %17, align 8, !tbaa !9
  %1351 = icmp ne i64 %1350, 0
  br i1 %1351, label %1359, label %1352

1352:                                             ; preds = %1349
  %1353 = getelementptr inbounds [128 x i8], ptr %10, i64 0, i64 0
  %1354 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 6
  %1355 = load i32, ptr %1354, align 8, !tbaa !21
  %1356 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 7
  %1357 = load i32, ptr %1356, align 4, !tbaa !23
  %1358 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %1353, i64 noundef 128, ptr noundef @.str.30, i32 noundef %1355, i32 noundef %1357) #6
  store i32 8, ptr %29, align 4
  br label %1495

1359:                                             ; preds = %1349
  %1360 = load i64, ptr %16, align 8, !tbaa !9
  %1361 = and i64 %1360, 4096
  %1362 = icmp ne i64 %1361, 0
  br i1 %1362, label %1363, label %1366

1363:                                             ; preds = %1359
  %1364 = load i64, ptr %18, align 8, !tbaa !9
  %1365 = sub nsw i64 0, %1364
  br label %1368

1366:                                             ; preds = %1359
  %1367 = load i64, ptr %18, align 8, !tbaa !9
  br label %1368

1368:                                             ; preds = %1366, %1363
  %1369 = phi i64 [ %1365, %1363 ], [ %1367, %1366 ]
  %1370 = sitofp i64 %1369 to double
  %1371 = call double @pow(double noundef 1.000000e+01, double noundef %1370) #6
  %1372 = load ptr, ptr %12, align 8, !tbaa !5
  %1373 = getelementptr inbounds %struct._json_value, ptr %1372, i32 0, i32 2
  %1374 = load double, ptr %1373, align 8, !tbaa !11
  %1375 = fmul double %1374, %1371
  store double %1375, ptr %1373, align 8, !tbaa !11
  br label %1376

1376:                                             ; preds = %1368, %1348
  %1377 = load i64, ptr %16, align 8, !tbaa !9
  %1378 = and i64 %1377, 256
  %1379 = icmp ne i64 %1378, 0
  br i1 %1379, label %1380, label %1400

1380:                                             ; preds = %1376
  %1381 = load ptr, ptr %12, align 8, !tbaa !5
  %1382 = getelementptr inbounds %struct._json_value, ptr %1381, i32 0, i32 1
  %1383 = load i32, ptr %1382, align 8, !tbaa !24
  %1384 = icmp eq i32 %1383, 3
  br i1 %1384, label %1385, label %1392

1385:                                             ; preds = %1380
  %1386 = load ptr, ptr %12, align 8, !tbaa !5
  %1387 = getelementptr inbounds %struct._json_value, ptr %1386, i32 0, i32 2
  %1388 = load i64, ptr %1387, align 8, !tbaa !11
  %1389 = sub nsw i64 0, %1388
  %1390 = load ptr, ptr %12, align 8, !tbaa !5
  %1391 = getelementptr inbounds %struct._json_value, ptr %1390, i32 0, i32 2
  store i64 %1389, ptr %1391, align 8, !tbaa !11
  br label %1399

1392:                                             ; preds = %1380
  %1393 = load ptr, ptr %12, align 8, !tbaa !5
  %1394 = getelementptr inbounds %struct._json_value, ptr %1393, i32 0, i32 2
  %1395 = load double, ptr %1394, align 8, !tbaa !11
  %1396 = fneg double %1395
  %1397 = load ptr, ptr %12, align 8, !tbaa !5
  %1398 = getelementptr inbounds %struct._json_value, ptr %1397, i32 0, i32 2
  store double %1396, ptr %1398, align 8, !tbaa !11
  br label %1399

1399:                                             ; preds = %1392, %1385
  br label %1400

1400:                                             ; preds = %1399, %1376
  %1401 = load i64, ptr %16, align 8, !tbaa !9
  %1402 = or i64 %1401, 3
  store i64 %1402, ptr %16, align 8, !tbaa !9
  br label %1404

1403:                                             ; preds = %1103
  br label %1404

1404:                                             ; preds = %1403, %1400, %1154
  br label %1405

1405:                                             ; preds = %1404, %1102
  %1406 = load i64, ptr %16, align 8, !tbaa !9
  %1407 = and i64 %1406, 2
  %1408 = icmp ne i64 %1407, 0
  br i1 %1408, label %1409, label %1415

1409:                                             ; preds = %1405
  %1410 = load i64, ptr %16, align 8, !tbaa !9
  %1411 = and i64 %1410, -3
  store i64 %1411, ptr %16, align 8, !tbaa !9
  %1412 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %1413 = load ptr, ptr %1412, align 8, !tbaa !22
  %1414 = getelementptr inbounds i8, ptr %1413, i32 -1
  store ptr %1414, ptr %1412, align 8, !tbaa !22
  br label %1415

1415:                                             ; preds = %1409, %1405
  %1416 = load i64, ptr %16, align 8, !tbaa !9
  %1417 = and i64 %1416, 1
  %1418 = icmp ne i64 %1417, 0
  br i1 %1418, label %1419, label %1494

1419:                                             ; preds = %1415
  %1420 = load i64, ptr %16, align 8, !tbaa !9
  %1421 = and i64 %1420, -2
  %1422 = or i64 %1421, 4
  store i64 %1422, ptr %16, align 8, !tbaa !9
  %1423 = load ptr, ptr %12, align 8, !tbaa !5
  %1424 = getelementptr inbounds %struct._json_value, ptr %1423, i32 0, i32 0
  %1425 = load ptr, ptr %1424, align 8, !tbaa !34
  %1426 = icmp ne ptr %1425, null
  br i1 %1426, label %1430, label %1427

1427:                                             ; preds = %1419
  %1428 = load i64, ptr %16, align 8, !tbaa !9
  %1429 = or i64 %1428, 128
  store i64 %1429, ptr %16, align 8, !tbaa !9
  store i32 7, ptr %29, align 4
  br label %1495

1430:                                             ; preds = %1419
  %1431 = load ptr, ptr %12, align 8, !tbaa !5
  %1432 = getelementptr inbounds %struct._json_value, ptr %1431, i32 0, i32 0
  %1433 = load ptr, ptr %1432, align 8, !tbaa !34
  %1434 = getelementptr inbounds %struct._json_value, ptr %1433, i32 0, i32 1
  %1435 = load i32, ptr %1434, align 8, !tbaa !24
  %1436 = icmp eq i32 %1435, 2
  br i1 %1436, label %1437, label %1440

1437:                                             ; preds = %1430
  %1438 = load i64, ptr %16, align 8, !tbaa !9
  %1439 = or i64 %1438, 8
  store i64 %1439, ptr %16, align 8, !tbaa !9
  br label %1440

1440:                                             ; preds = %1437, %1430
  %1441 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 4
  %1442 = load i32, ptr %1441, align 8, !tbaa !19
  %1443 = icmp ne i32 %1442, 0
  br i1 %1443, label %1478, label %1444

1444:                                             ; preds = %1440
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #6
  %1445 = load ptr, ptr %12, align 8, !tbaa !5
  %1446 = getelementptr inbounds %struct._json_value, ptr %1445, i32 0, i32 0
  %1447 = load ptr, ptr %1446, align 8, !tbaa !34
  store ptr %1447, ptr %30, align 8, !tbaa !5
  %1448 = load ptr, ptr %30, align 8, !tbaa !5
  %1449 = getelementptr inbounds %struct._json_value, ptr %1448, i32 0, i32 1
  %1450 = load i32, ptr %1449, align 8, !tbaa !24
  switch i32 %1450, label %1476 [
    i32 1, label %1451
    i32 2, label %1464
  ]

1451:                                             ; preds = %1444
  %1452 = load ptr, ptr %12, align 8, !tbaa !5
  %1453 = load ptr, ptr %30, align 8, !tbaa !5
  %1454 = getelementptr inbounds %struct._json_value, ptr %1453, i32 0, i32 2
  %1455 = getelementptr inbounds %struct.anon.0, ptr %1454, i32 0, i32 1
  %1456 = load ptr, ptr %1455, align 8, !tbaa !11
  %1457 = load ptr, ptr %30, align 8, !tbaa !5
  %1458 = getelementptr inbounds %struct._json_value, ptr %1457, i32 0, i32 2
  %1459 = getelementptr inbounds %struct.anon.0, ptr %1458, i32 0, i32 0
  %1460 = load i32, ptr %1459, align 8, !tbaa !11
  %1461 = zext i32 %1460 to i64
  %1462 = getelementptr inbounds %struct._json_object_entry, ptr %1456, i64 %1461
  %1463 = getelementptr inbounds %struct._json_object_entry, ptr %1462, i32 0, i32 2
  store ptr %1452, ptr %1463, align 8, !tbaa !35
  br label %1477

1464:                                             ; preds = %1444
  %1465 = load ptr, ptr %12, align 8, !tbaa !5
  %1466 = load ptr, ptr %30, align 8, !tbaa !5
  %1467 = getelementptr inbounds %struct._json_value, ptr %1466, i32 0, i32 2
  %1468 = getelementptr inbounds %struct.anon.1, ptr %1467, i32 0, i32 1
  %1469 = load ptr, ptr %1468, align 8, !tbaa !11
  %1470 = load ptr, ptr %30, align 8, !tbaa !5
  %1471 = getelementptr inbounds %struct._json_value, ptr %1470, i32 0, i32 2
  %1472 = getelementptr inbounds %struct.anon.1, ptr %1471, i32 0, i32 0
  %1473 = load i32, ptr %1472, align 8, !tbaa !11
  %1474 = zext i32 %1473 to i64
  %1475 = getelementptr inbounds ptr, ptr %1469, i64 %1474
  store ptr %1465, ptr %1475, align 8, !tbaa !5
  br label %1477

1476:                                             ; preds = %1444
  br label %1477

1477:                                             ; preds = %1476, %1464, %1451
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #6
  br label %1478

1478:                                             ; preds = %1477, %1440
  %1479 = load ptr, ptr %12, align 8, !tbaa !5
  %1480 = getelementptr inbounds %struct._json_value, ptr %1479, i32 0, i32 0
  %1481 = load ptr, ptr %1480, align 8, !tbaa !34
  %1482 = getelementptr inbounds %struct._json_value, ptr %1481, i32 0, i32 2
  %1483 = getelementptr inbounds %struct.anon.1, ptr %1482, i32 0, i32 0
  %1484 = load i32, ptr %1483, align 8, !tbaa !11
  %1485 = add i32 %1484, 1
  store i32 %1485, ptr %1483, align 8, !tbaa !11
  %1486 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 1
  %1487 = load i32, ptr %1486, align 8, !tbaa !17
  %1488 = icmp ugt i32 %1485, %1487
  br i1 %1488, label %1489, label %1490

1489:                                             ; preds = %1478
  store i32 9, ptr %29, align 4
  br label %1495

1490:                                             ; preds = %1478
  %1491 = load ptr, ptr %12, align 8, !tbaa !5
  %1492 = getelementptr inbounds %struct._json_value, ptr %1491, i32 0, i32 0
  %1493 = load ptr, ptr %1492, align 8, !tbaa !34
  store ptr %1493, ptr %12, align 8, !tbaa !5
  store i32 7, ptr %29, align 4
  br label %1495

1494:                                             ; preds = %1415
  store i32 0, ptr %29, align 4
  br label %1495

1495:                                             ; preds = %1494, %1490, %1489, %1427, %1352, %1345, %1303, %1281, %1274, %1260, %1227, %1215, %1205, %1185, %1145, %1120, %1115, %1092, %1089, %1027, %1005, %1001, %968, %964, %922, %918, %882, %881, %875, %874, %870, %869, %852, %849, %832, %829, %813, %800, %779, %778, %769, %751, %748, %745, %733, %720, %705, %675, %667, %634, %614, %538, %533, %377, %253, %128, %116
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #6
  %1496 = load i32, ptr %29, align 4
  switch i32 %1496, label %1504 [
    i32 0, label %1497
    i32 7, label %1498
    i32 5, label %1502
  ]

1497:                                             ; preds = %1495
  br label %1498

1498:                                             ; preds = %1497, %1495
  %1499 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 5
  %1500 = load ptr, ptr %1499, align 8, !tbaa !22
  %1501 = getelementptr inbounds i8, ptr %1500, i32 1
  store ptr %1501, ptr %1499, align 8, !tbaa !22
  br label %96

1502:                                             ; preds = %1495
  %1503 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %1503, ptr %14, align 8, !tbaa !5
  store i32 0, ptr %29, align 4
  br label %1504

1504:                                             ; preds = %1502, %1495
  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
  %1505 = load i32, ptr %29, align 4
  switch i32 %1505, label %1575 [
    i32 0, label %1506
    i32 33, label %1513
    i32 32, label %1520
    i32 9, label %1523
    i32 8, label %1530
  ]

1506:                                             ; preds = %1504
  br label %1507

1507:                                             ; preds = %1506
  %1508 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 4
  %1509 = load i32, ptr %1508, align 8, !tbaa !19
  %1510 = add nsw i32 %1509, -1
  store i32 %1510, ptr %1508, align 8, !tbaa !19
  br label %88, !llvm.loop !36

1511:                                             ; preds = %88
  %1512 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %1512, ptr %5, align 8
  store i32 1, ptr %29, align 4
  br label %1575

1513:                                             ; preds = %1504
  %1514 = getelementptr inbounds [128 x i8], ptr %10, i64 0, i64 0
  %1515 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 6
  %1516 = load i32, ptr %1515, align 8, !tbaa !21
  %1517 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 7
  %1518 = load i32, ptr %1517, align 4, !tbaa !23
  %1519 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %1514, i64 noundef 128, ptr noundef @.str.31, i32 noundef %1516, i32 noundef %1518) #6
  br label %1530

1520:                                             ; preds = %1504
  %1521 = getelementptr inbounds [128 x i8], ptr %10, i64 0, i64 0
  %1522 = call ptr @strcpy(ptr noundef %1521, ptr noundef @.str.32) #6
  br label %1530

1523:                                             ; preds = %1504
  %1524 = getelementptr inbounds [128 x i8], ptr %10, i64 0, i64 0
  %1525 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 6
  %1526 = load i32, ptr %1525, align 8, !tbaa !21
  %1527 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 7
  %1528 = load i32, ptr %1527, align 4, !tbaa !23
  %1529 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %1524, i64 noundef 128, ptr noundef @.str.33, i32 noundef %1526, i32 noundef %1528) #6
  br label %1530

1530:                                             ; preds = %1523, %1520, %1513, %1504
  %1531 = load ptr, ptr %9, align 8, !tbaa !5
  %1532 = icmp ne ptr %1531, null
  br i1 %1532, label %1533, label %1545

1533:                                             ; preds = %1530
  %1534 = getelementptr inbounds [128 x i8], ptr %10, i64 0, i64 0
  %1535 = load i8, ptr %1534, align 16, !tbaa !11
  %1536 = icmp ne i8 %1535, 0
  br i1 %1536, label %1537, label %1541

1537:                                             ; preds = %1533
  %1538 = load ptr, ptr %9, align 8, !tbaa !5
  %1539 = getelementptr inbounds [128 x i8], ptr %10, i64 0, i64 0
  %1540 = call ptr @strcpy(ptr noundef %1538, ptr noundef %1539) #6
  br label %1544

1541:                                             ; preds = %1533
  %1542 = load ptr, ptr %9, align 8, !tbaa !5
  %1543 = call ptr @strcpy(ptr noundef %1542, ptr noundef @.str.34) #6
  br label %1544

1544:                                             ; preds = %1541, %1537
  br label %1545

1545:                                             ; preds = %1544, %1530
  %1546 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 4
  %1547 = load i32, ptr %1546, align 8, !tbaa !19
  %1548 = icmp ne i32 %1547, 0
  br i1 %1548, label %1549, label %1551

1549:                                             ; preds = %1545
  %1550 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %1550, ptr %14, align 8, !tbaa !5
  br label %1551

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

1552:                                             ; preds = %1555, %1551
  %1553 = load ptr, ptr %14, align 8, !tbaa !5
  %1554 = icmp ne ptr %1553, null
  br i1 %1554, label %1555, label %1567

1555:                                             ; preds = %1552
  %1556 = load ptr, ptr %14, align 8, !tbaa !5
  %1557 = getelementptr inbounds %struct._json_value, ptr %1556, i32 0, i32 3
  %1558 = load ptr, ptr %1557, align 8, !tbaa !11
  store ptr %1558, ptr %12, align 8, !tbaa !5
  %1559 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 3
  %1560 = getelementptr inbounds %struct.json_settings, ptr %1559, i32 0, i32 3
  %1561 = load ptr, ptr %1560, align 8, !tbaa !16
  %1562 = load ptr, ptr %14, align 8, !tbaa !5
  %1563 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 3
  %1564 = getelementptr inbounds %struct.json_settings, ptr %1563, i32 0, i32 4
  %1565 = load ptr, ptr %1564, align 8, !tbaa !37
  call void %1561(ptr noundef %1562, ptr noundef %1565)
  %1566 = load ptr, ptr %12, align 8, !tbaa !5
  store ptr %1566, ptr %14, align 8, !tbaa !5
  br label %1552, !llvm.loop !38

1567:                                             ; preds = %1552
  %1568 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 4
  %1569 = load i32, ptr %1568, align 8, !tbaa !19
  %1570 = icmp ne i32 %1569, 0
  br i1 %1570, label %1574, label %1571

1571:                                             ; preds = %1567
  %1572 = getelementptr inbounds %struct.json_state, ptr %15, i32 0, i32 3
  %1573 = load ptr, ptr %13, align 8, !tbaa !5
  call void @json_value_free_ex(ptr noundef %1572, ptr noundef %1573)
  br label %1574

1574:                                             ; preds = %1571, %1567
  store ptr null, ptr %5, align 8
  store i32 1, ptr %29, align 4
  br label %1575

1575:                                             ; preds = %1574, %1511, %1504
  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
  %1576 = load ptr, ptr %5, align 8
  ret ptr %1576
}

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #3

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

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

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

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

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

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

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

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

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #4 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
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 = !{!7, !7, i64 0}
!12 = !{!13, !6, i64 40}
!13 = !{!"", !10, i64 0, !14, i64 8, !10, i64 16, !15, i64 24, !14, i64 72, !6, i64 80, !14, i64 88, !14, i64 92}
!14 = !{!"int", !7, i64 0}
!15 = !{!"", !10, i64 0, !14, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !10, i64 40}
!16 = !{!13, !6, i64 48}
!17 = !{!13, !14, i64 8}
!18 = !{!13, !10, i64 16}
!19 = !{!13, !14, i64 72}
!20 = !{!14, !14, i64 0}
!21 = !{!13, !14, i64 88}
!22 = !{!13, !6, i64 80}
!23 = !{!13, !14, i64 92}
!24 = !{!25, !14, i64 8}
!25 = !{!"_json_value", !6, i64 0, !14, i64 8, !7, i64 16, !7, i64 32}
!26 = !{!27, !6, i64 0}
!27 = !{!"_json_object_entry", !6, i64 0, !14, i64 8, !6, i64 16}
!28 = !{!27, !14, i64 8}
!29 = !{!13, !14, i64 32}
!30 = !{!31, !31, i64 0}
!31 = !{!"short", !7, i64 0}
!32 = distinct !{!32, !33}
!33 = !{!"llvm.loop.mustprogress"}
!34 = !{!25, !6, i64 0}
!35 = !{!27, !6, i64 16}
!36 = distinct !{!36, !33}
!37 = !{!13, !6, i64 56}
!38 = distinct !{!38, !33}


; 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.14 = external hidden unnamed_addr constant [36 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [14 x i8], align 1

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

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

; Function Attrs: nofree nounwind
declare noundef i32 @snprintf(ptr noalias nocapture noundef writeonly, i64 noundef, ptr nocapture noundef readonly, ...) local_unnamed_addr #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 #2 {
  %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) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #8
  store ptr null, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %9) #8
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(96) %9, i8 0, i64 96, i1 false)
  %10 = icmp ugt i64 %2, 2
  br i1 %10, label %11, label %25

11:                                               ; preds = %4
  %12 = load i8, ptr %1, align 1, !tbaa !9
  %13 = icmp eq i8 %12, -17
  br i1 %13, label %14, label %25

14:                                               ; preds = %11
  %15 = getelementptr inbounds i8, ptr %1, i64 1
  %16 = load i8, ptr %15, align 1, !tbaa !9
  %17 = icmp eq i8 %16, -69
  br i1 %17, label %18, label %25

18:                                               ; preds = %14
  %19 = getelementptr inbounds i8, ptr %1, i64 2
  %20 = load i8, ptr %19, align 1, !tbaa !9
  %21 = icmp eq i8 %20, -65
  br i1 %21, label %22, label %25

22:                                               ; preds = %18
  %23 = getelementptr inbounds i8, ptr %1, i64 3
  %24 = add i64 %2, -3
  br label %25

25:                                               ; preds = %22, %18, %14, %11, %4
  %.0286 = phi i64 [ %24, %22 ], [ %2, %18 ], [ %2, %14 ], [ %2, %11 ], [ %2, %4 ]
  %.0259 = phi ptr [ %23, %22 ], [ %1, %18 ], [ %1, %14 ], [ %1, %11 ], [ %1, %4 ]
  store i8 0, ptr %5, align 16, !tbaa !9
  %26 = getelementptr inbounds i8, ptr %.0259, i64 %.0286
  %27 = getelementptr inbounds i8, ptr %9, i64 24
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %27, ptr noundef nonnull align 8 dereferenceable(48) %0, i64 48, i1 false)
  %28 = getelementptr inbounds i8, ptr %9, i64 40
  %29 = load ptr, ptr %28, align 8, !tbaa !10
  %.not = icmp eq ptr %29, null
  br i1 %.not, label %30, label %31

30:                                               ; preds = %25
  store ptr @default_alloc, ptr %28, align 8, !tbaa !10
  br label %31

31:                                               ; preds = %30, %25
  %32 = getelementptr inbounds i8, ptr %9, i64 48
  %33 = load ptr, ptr %32, align 8, !tbaa !15
  %.not314 = icmp eq ptr %33, null
  br i1 %.not314, label %34, label %35

34:                                               ; preds = %31
  store ptr @default_free, ptr %32, align 8, !tbaa !15
  br label %35

35:                                               ; preds = %34, %31
  %36 = getelementptr inbounds i8, ptr %9, i64 8
  %37 = getelementptr inbounds i8, ptr %9, i64 16
  store i32 -9, ptr %36, align 8, !tbaa !16
  store i64 -9, ptr %37, align 8, !tbaa !17
  %38 = getelementptr inbounds i8, ptr %9, i64 72
  %39 = getelementptr inbounds i8, ptr %9, i64 88
  %40 = getelementptr inbounds i8, ptr %9, i64 80
  %41 = ptrtoint ptr %26 to i64
  %42 = getelementptr inbounds i8, ptr %9, i64 32
  %43 = getelementptr inbounds i8, ptr %26, i64 -1
  %44 = getelementptr inbounds i8, ptr %9, i64 92
  store i32 1, ptr %38, align 8, !tbaa !18
  br label %45

45:                                               ; preds = %35, %732
  %.0270596 = phi i64 [ 0, %35 ], [ %.1271, %732 ]
  %.0274595 = phi i64 [ 0, %35 ], [ %.1275, %732 ]
  %.0278594 = phi i64 [ 0, %35 ], [ %.1279, %732 ]
  store ptr null, ptr %7, align 8, !tbaa !5
  store ptr null, ptr %6, align 8, !tbaa !5
  store i32 1, ptr %39, align 8, !tbaa !19
  br label %46

46:                                               ; preds = %729, %45
  %storemerge315 = phi ptr [ %.0259, %45 ], [ %731, %729 ]
  %.0282 = phi i64 [ 8, %45 ], [ %.9.ph, %729 ]
  %.1279 = phi i64 [ %.0278594, %45 ], [ %.3281.ph, %729 ]
  %.1275 = phi i64 [ %.0274595, %45 ], [ %.3277.ph, %729 ]
  %.1271 = phi i64 [ %.0270596, %45 ], [ %.3273.ph, %729 ]
  %.0264 = phi ptr [ null, %45 ], [ %.3267.ph, %729 ]
  %.0261 = phi i32 [ 0, %45 ], [ %.3.ph, %729 ]
  store ptr %storemerge315, ptr %40, align 8, !tbaa !20
  %47 = icmp eq ptr %storemerge315, %26
  br i1 %47, label %.thread, label %48

48:                                               ; preds = %46
  %49 = load i8, ptr %storemerge315, align 1, !tbaa !9
  %50 = and i64 %.0282, 32
  %.not316 = icmp eq i64 %50, 0
  br i1 %.not316, label %316, label %52

.thread:                                          ; preds = %46
  %51 = and i64 %.0282, 32
  %.not316396 = icmp eq i64 %51, 0
  br i1 %.not316396, label %316, label %.thread397

52:                                               ; preds = %48
  %.not317 = icmp eq i8 %49, 0
  br i1 %.not317, label %.thread397, label %56

.thread397:                                       ; preds = %.thread, %52
  %53 = load i32, ptr %39, align 8, !tbaa !19
  %54 = load i32, ptr %44, align 4, !tbaa !21
  %55 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %5, i64 noundef 128, ptr noundef nonnull @.str.14, i32 noundef %53, i32 noundef %54) #8
  br label %.thread457

56:                                               ; preds = %52
  %57 = load i32, ptr %36, align 8, !tbaa !16
  %58 = icmp ugt i32 %.0261, %57
  br i1 %58, label %742, label %59

59:                                               ; preds = %56
  %60 = and i64 %.0282, 16
  %.not318 = icmp eq i64 %60, 0
  br i1 %.not318, label %267, label %61

61:                                               ; preds = %59
  %62 = and i64 %.0282, -17
  switch i8 %49, label %260 [
    i8 98, label %63
    i8 102, label %70
    i8 110, label %77
    i8 114, label %84
    i8 116, label %91
    i8 117, label %98
  ]

63:                                               ; preds = %61
  %64 = load i32, ptr %38, align 8, !tbaa !18
  %.not385 = icmp eq i32 %64, 0
  br i1 %.not385, label %65, label %68

65:                                               ; preds = %63
  %66 = zext i32 %.0261 to i64
  %67 = getelementptr inbounds i8, ptr %.0264, i64 %66
  store i8 8, ptr %67, align 1, !tbaa !9
  br label %68

68:                                               ; preds = %65, %63
  %69 = add i32 %.0261, 1
  br label %729

70:                                               ; preds = %61
  %71 = load i32, ptr %38, align 8, !tbaa !18
  %.not384 = icmp eq i32 %71, 0
  br i1 %.not384, label %72, label %75

72:                                               ; preds = %70
  %73 = zext i32 %.0261 to i64
  %74 = getelementptr inbounds i8, ptr %.0264, i64 %73
  store i8 12, ptr %74, align 1, !tbaa !9
  br label %75

75:                                               ; preds = %72, %70
  %76 = add i32 %.0261, 1
  br label %729

77:                                               ; preds = %61
  %78 = load i32, ptr %38, align 8, !tbaa !18
  %.not383 = icmp eq i32 %78, 0
  br i1 %.not383, label %79, label %82

79:                                               ; preds = %77
  %80 = zext i32 %.0261 to i64
  %81 = getelementptr inbounds i8, ptr %.0264, i64 %80
  store i8 10, ptr %81, align 1, !tbaa !9
  br label %82

82:                                               ; preds = %79, %77
  %83 = add i32 %.0261, 1
  br label %729

84:                                               ; preds = %61
  %85 = load i32, ptr %38, align 8, !tbaa !18
  %.not382 = icmp eq i32 %85, 0
  br i1 %.not382, label %86, label %89

86:                                               ; preds = %84
  %87 = zext i32 %.0261 to i64
  %88 = getelementptr inbounds i8, ptr %.0264, i64 %87
  store i8 13, ptr %88, align 1, !tbaa !9
  br label %89

89:                                               ; preds = %86, %84
  %90 = add i32 %.0261, 1
  br label %729

91:                                               ; preds = %61
  %92 = load i32, ptr %38, align 8, !tbaa !18
  %.not381 = icmp eq i32 %92, 0
  br i1 %.not381, label %93, label %96

93:                                               ; preds = %91
  %94 = zext i32 %.0261 to i64
  %95 = getelementptr inbounds i8, ptr %.0264, i64 %94
  store i8 9, ptr %95, align 1, !tbaa !9
  br label %96

96:                                               ; preds = %93, %91
  %97 = add i32 %.0261, 1
  br label %729

98:                                               ; preds = %61
  %99 = ptrtoint ptr %storemerge315 to i64
  %100 = sub i64 %41, %99
  %101 = icmp slt i64 %100, 4
  br i1 %101, label %125, label %102

102:                                              ; preds = %98
  %103 = getelementptr inbounds i8, ptr %storemerge315, i64 1
  store ptr %103, ptr %40, align 8, !tbaa !20
  %104 = load i8, ptr %103, align 1, !tbaa !9
  %105 = call zeroext i8 @hex_value(i8 noundef signext %104)
  %106 = icmp eq i8 %105, -1
  br i1 %106, label %125, label %107

107:                                              ; preds = %102
  %108 = load ptr, ptr %40, align 8, !tbaa !20
  %109 = getelementptr inbounds i8, ptr %108, i64 1
  store ptr %109, ptr %40, align 8, !tbaa !20
  %110 = load i8, ptr %109, align 1, !tbaa !9
  %111 = call zeroext i8 @hex_value(i8 noundef signext %110)
  %112 = icmp eq i8 %111, -1
  br i1 %112, label %125, label %113

113:                                              ; preds = %107
  %114 = load ptr, ptr %40, align 8, !tbaa !20
  %115 = getelementptr inbounds i8, ptr %114, i64 1
  store ptr %115, ptr %40, align 8, !tbaa !20
  %116 = load i8, ptr %115, align 1, !tbaa !9
  %117 = call zeroext i8 @hex_value(i8 noundef signext %116)
  %118 = icmp eq i8 %117, -1
  br i1 %118, label %125, label %119

119:                                              ; preds = %113
  %120 = load ptr, ptr %40, align 8, !tbaa !20
  %121 = getelementptr inbounds i8, ptr %120, i64 1
  store ptr %121, ptr %40, align 8, !tbaa !20
  %122 = load i8, ptr %121, align 1, !tbaa !9
  %123 = call zeroext i8 @hex_value(i8 noundef signext %122)
  %124 = icmp eq i8 %123, -1
  br i1 %124, label %125, label %129

125:                                              ; preds = %119, %113, %107, %102, %98
  %126 = load i32, ptr %39, align 8, !tbaa !19
  %127 = load i32, ptr %44, align 4, !tbaa !21
  %128 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %5, i64 noundef 128, ptr noundef nonnull @.str.15, i32 noundef 117, i32 noundef %126, i32 noundef %127) #8
  br label %.thread457

129:                                              ; preds = %119
  %130 = shl i8 %105, 4
  %131 = or i8 %111, %130
  %132 = shl i8 %117, 4
  %133 = or i8 %123, %132
  %134 = zext i8 %131 to i32
  %135 = shl nuw nsw i32 %134, 8
  %136 = zext i8 %133 to i32
  %137 = or disjoint i32 %135, %136
  %138 = and i32 %134, 248
  %139 = icmp eq i32 %138, 216
  br i1 %139, label %140, label %178

140:                                              ; preds = %129
  %141 = load ptr, ptr %40, align 8, !tbaa !20
  %142 = ptrtoint ptr %141 to i64
  %143 = sub i64 %41, %142
  %144 = icmp slt i64 %143, 6
  br i1 %144, label %174, label %145

145:                                              ; preds = %140
  %146 = getelementptr inbounds i8, ptr %141, i64 1
  store ptr %146, ptr %40, align 8, !tbaa !20
  %147 = load i8, ptr %146, align 1, !tbaa !9
  %.not375 = icmp eq i8 %147, 92
  br i1 %.not375, label %148, label %174

148:                                              ; preds = %145
  %149 = getelementptr inbounds i8, ptr %141, i64 2
  store ptr %149, ptr %40, align 8, !tbaa !20
  %150 = load i8, ptr %149, align 1, !tbaa !9
  %.not376 = icmp eq i8 %150, 117
  br i1 %.not376, label %151, label %174

151:                                              ; preds = %148
  %152 = getelementptr inbounds i8, ptr %141, i64 3
  store ptr %152, ptr %40, align 8, !tbaa !20
  %153 = load i8, ptr %152, align 1, !tbaa !9
  %154 = call zeroext i8 @hex_value(i8 noundef signext %153)
  %155 = icmp eq i8 %154, -1
  br i1 %155, label %174, label %156

156:                                              ; preds = %151
  %157 = load ptr, ptr %40, align 8, !tbaa !20
  %158 = getelementptr inbounds i8, ptr %157, i64 1
  store ptr %158, ptr %40, align 8, !tbaa !20
  %159 = load i8, ptr %158, align 1, !tbaa !9
  %160 = call zeroext i8 @hex_value(i8 noundef signext %159)
  %161 = icmp eq i8 %160, -1
  br i1 %161, label %174, label %162

162:                                              ; preds = %156
  %163 = load ptr, ptr %40, align 8, !tbaa !20
  %164 = getelementptr inbounds i8, ptr %163, i64 1
  store ptr %164, ptr %40, align 8, !tbaa !20
  %165 = load i8, ptr %164, align 1, !tbaa !9
  %166 = call zeroext i8 @hex_value(i8 noundef signext %165)
  %167 = icmp eq i8 %166, -1
  br i1 %167, label %174, label %168

168:                                              ; preds = %162
  %169 = load ptr, ptr %40, align 8, !tbaa !20
  %170 = getelementptr inbounds i8, ptr %169, i64 1
  store ptr %170, ptr %40, align 8, !tbaa !20
  %171 = load i8, ptr %170, align 1, !tbaa !9
  %172 = call zeroext i8 @hex_value(i8 noundef signext %171)
  %173 = icmp eq i8 %172, -1
  br i1 %173, label %174, label %205

174:                                              ; preds = %140, %145, %148, %151, %156, %162, %168
  %175 = load i32, ptr %39, align 8, !tbaa !19
  %176 = load i32, ptr %44, align 4, !tbaa !21
  %177 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %5, i64 noundef 128, ptr noundef nonnull @.str.15, i32 noundef 117, i32 noundef %175, i32 noundef %176) #8
  br label %.thread457

178:                                              ; preds = %129
  %179 = icmp ult i32 %137, 128
  br i1 %179, label %180, label %187

180:                                              ; preds = %178
  %181 = load i32, ptr %38, align 8, !tbaa !18
  %.not380 = icmp eq i32 %181, 0
  br i1 %.not380, label %182, label %185

182:                                              ; preds = %180
  %183 = zext i32 %.0261 to i64
  %184 = getelementptr inbounds i8, ptr %.0264, i64 %183
  store i8 %133, ptr %184, align 1, !tbaa !9
  br label %185

185:                                              ; preds = %182, %180
  %186 = add i32 %.0261, 1
  br label %729

187:                                              ; preds = %178
  %188 = icmp ult i8 %131, 8
  %189 = load i32, ptr %38, align 8, !tbaa !18
  %.not379 = icmp eq i32 %189, 0
  br i1 %188, label %190, label %.thread409

190:                                              ; preds = %187
  br i1 %.not379, label %193, label %191

191:                                              ; preds = %190
  %192 = add i32 %.0261, 2
  br label %729

193:                                              ; preds = %190
  %194 = lshr i32 %137, 6
  %195 = trunc nuw i32 %194 to i8
  %196 = or disjoint i8 %195, -64
  %197 = add i32 %.0261, 1
  %198 = zext i32 %.0261 to i64
  %199 = getelementptr inbounds i8, ptr %.0264, i64 %198
  store i8 %196, ptr %199, align 1, !tbaa !9
  %200 = and i8 %133, 63
  %201 = or disjoint i8 %200, -128
  %202 = add i32 %.0261, 2
  %203 = zext i32 %197 to i64
  %204 = getelementptr inbounds i8, ptr %.0264, i64 %203
  store i8 %201, ptr %204, align 1, !tbaa !9
  br label %729

205:                                              ; preds = %168
  %206 = load i32, ptr %38, align 8, !tbaa !18
  %.not377 = icmp eq i32 %206, 0
  br i1 %.not377, label %229, label %227

.thread409:                                       ; preds = %187
  br i1 %.not379, label %209, label %207

207:                                              ; preds = %.thread409
  %208 = add i32 %.0261, 3
  br label %729

209:                                              ; preds = %.thread409
  %210 = lshr i8 %131, 4
  %211 = or disjoint i8 %210, -32
  %212 = add i32 %.0261, 1
  %213 = zext i32 %.0261 to i64
  %214 = getelementptr inbounds i8, ptr %.0264, i64 %213
  store i8 %211, ptr %214, align 1, !tbaa !9
  %215 = lshr i32 %137, 6
  %216 = trunc i32 %215 to i8
  %217 = and i8 %216, 63
  %218 = or disjoint i8 %217, -128
  %219 = add i32 %.0261, 2
  %220 = zext i32 %212 to i64
  %221 = getelementptr inbounds i8, ptr %.0264, i64 %220
  store i8 %218, ptr %221, align 1, !tbaa !9
  %222 = and i8 %133, 63
  %223 = or disjoint i8 %222, -128
  %224 = add i32 %.0261, 3
  %225 = zext i32 %219 to i64
  %226 = getelementptr inbounds i8, ptr %.0264, i64 %225
  store i8 %223, ptr %226, align 1, !tbaa !9
  br label %729

227:                                              ; preds = %205
  %228 = add i32 %.0261, 4
  br label %729

229:                                              ; preds = %205
  %230 = shl nuw nsw i32 %137, 10
  %231 = zext i8 %160 to i32
  %232 = shl nuw nsw i32 %231, 8
  %.masked = and i32 %232, 768
  %233 = shl i8 %166, 4
  %234 = or i8 %172, %233
  %235 = zext i8 %234 to i32
  %236 = or disjoint i32 %.masked, %235
  %237 = or disjoint i32 %236, %230
  %238 = and i8 %111, 3
  %239 = or disjoint i8 %238, -16
  %240 = add i32 %.0261, 1
  %241 = zext i32 %.0261 to i64
  %242 = getelementptr inbounds i8, ptr %.0264, i64 %241
  store i8 %239, ptr %242, align 1, !tbaa !9
  %243 = lshr i8 %133, 2
  %244 = or i8 %243, -112
  %245 = add i32 %.0261, 2
  %246 = zext i32 %240 to i64
  %247 = getelementptr inbounds i8, ptr %.0264, i64 %246
  store i8 %244, ptr %247, align 1, !tbaa !9
  %248 = lshr i32 %237, 6
  %249 = trunc i32 %248 to i8
  %250 = and i8 %249, 63
  %251 = or disjoint i8 %250, -128
  %252 = add i32 %.0261, 3
  %253 = zext i32 %245 to i64
  %254 = getelementptr inbounds i8, ptr %.0264, i64 %253
  store i8 %251, ptr %254, align 1, !tbaa !9
  %255 = and i8 %234, 63
  %256 = or disjoint i8 %255, -128
  %257 = add i32 %.0261, 4
  %258 = zext i32 %252 to i64
  %259 = getelementptr inbounds i8, ptr %.0264, i64 %258
  store i8 %256, ptr %259, align 1, !tbaa !9
  br label %729

260:                                              ; preds = %61
  %261 = load i32, ptr %38, align 8, !tbaa !18
  %.not386 = icmp eq i32 %261, 0
  br i1 %.not386, label %262, label %265

262:                                              ; preds = %260
  %263 = zext i32 %.0261 to i64
  %264 = getelementptr inbounds i8, ptr %.0264, i64 %263
  store i8 %49, ptr %264, align 1, !tbaa !9
  br label %265

265:                                              ; preds = %262, %260
  %266 = add i32 %.0261, 1
  br label %729

267:                                              ; preds = %59
  switch i8 %49, label %309 [
    i8 92, label %268
    i8 34, label %270
  ]

268:                                              ; preds = %267
  %269 = or disjoint i64 %.0282, 16
  br label %729

270:                                              ; preds = %267
  %271 = load i32, ptr %38, align 8, !tbaa !18
  %.not320 = icmp eq i32 %271, 0
  br i1 %.not320, label %272, label %275

272:                                              ; preds = %270
  %273 = zext i32 %.0261 to i64
  %274 = getelementptr inbounds i8, ptr %.0264, i64 %273
  store i8 0, ptr %274, align 1, !tbaa !9
  br label %275

275:                                              ; preds = %272, %270
  %276 = and i64 %.0282, -49
  %277 = load ptr, ptr %6, align 8, !tbaa !5
  %278 = getelementptr inbounds i8, ptr %277, i64 8
  %279 = load i32, ptr %278, align 8, !tbaa !22
  switch i32 %279, label %316 [
    i32 5, label %280
    i32 1, label %283
  ]

280:                                              ; preds = %275
  %281 = getelementptr inbounds i8, ptr %277, i64 16
  store i32 %.0261, ptr %281, align 8, !tbaa !9
  %282 = or i64 %276, 1
  br label %316

283:                                              ; preds = %275
  %284 = load i32, ptr %38, align 8, !tbaa !18
  %.not321 = icmp eq i32 %284, 0
  br i1 %.not321, label %287, label %285

285:                                              ; preds = %283
  %286 = getelementptr inbounds i8, ptr %277, i64 24
  br label %304

287:                                              ; preds = %283
  %288 = getelementptr inbounds i8, ptr %277, i64 32
  %289 = load ptr, ptr %288, align 8, !tbaa !9
  %290 = getelementptr inbounds i8, ptr %277, i64 16
  %291 = getelementptr inbounds i8, ptr %277, i64 24
  %292 = load ptr, ptr %291, align 8, !tbaa !9
  %293 = load i32, ptr %290, align 8, !tbaa !9
  %294 = zext i32 %293 to i64
  %295 = getelementptr inbounds %struct._json_object_entry, ptr %292, i64 %294
  store ptr %289, ptr %295, align 8, !tbaa !24
  %296 = load ptr, ptr %6, align 8, !tbaa !5
  %297 = getelementptr inbounds i8, ptr %296, i64 16
  %298 = getelementptr inbounds i8, ptr %296, i64 24
  %299 = load ptr, ptr %298, align 8, !tbaa !9
  %300 = load i32, ptr %297, align 8, !tbaa !9
  %301 = zext i32 %300 to i64
  %302 = getelementptr inbounds %struct._json_object_entry, ptr %299, i64 %301, i32 1
  store i32 %.0261, ptr %302, align 8, !tbaa !26
  %303 = getelementptr inbounds i8, ptr %296, i64 32
  br label %304

304:                                              ; preds = %287, %285
  %.sink774 = phi ptr [ %303, %287 ], [ %286, %285 ]
  %.sink = add i32 %.0261, 1
  %305 = load ptr, ptr %.sink774, align 8, !tbaa !9
  %306 = zext i32 %.sink to i64
  %307 = getelementptr inbounds i8, ptr %305, i64 %306
  store ptr %307, ptr %.sink774, align 8, !tbaa !9
  %308 = or i64 %276, 72
  br label %729

309:                                              ; preds = %267
  %310 = load i32, ptr %38, align 8, !tbaa !18
  %.not319 = icmp eq i32 %310, 0
  br i1 %.not319, label %311, label %314

311:                                              ; preds = %309
  %312 = zext i32 %.0261 to i64
  %313 = getelementptr inbounds i8, ptr %.0264, i64 %312
  store i8 %49, ptr %313, align 1, !tbaa !9
  br label %314

314:                                              ; preds = %311, %309
  %315 = add i32 %.0261, 1
  br label %729

316:                                              ; preds = %.thread, %275, %280, %48
  %317 = phi i8 [ 34, %275 ], [ 34, %280 ], [ %49, %48 ], [ 0, %.thread ]
  %.1283 = phi i64 [ %276, %275 ], [ %282, %280 ], [ %.0282, %48 ], [ %.0282, %.thread ]
  %.1265 = phi ptr [ null, %275 ], [ null, %280 ], [ %.0264, %48 ], [ %.0264, %.thread ]
  %318 = load i32, ptr %42, align 8, !tbaa !27
  %319 = and i32 %318, 1
  %.not322 = icmp eq i32 %319, 0
  br i1 %.not322, label %376, label %320

320:                                              ; preds = %316
  %321 = and i64 %.1283, 24576
  %.not323 = icmp eq i64 %321, 0
  br i1 %.not323, label %345, label %322

322:                                              ; preds = %320
  %323 = and i64 %.1283, 8192
  %.not326 = icmp eq i64 %323, 0
  br i1 %.not326, label %329, label %324

324:                                              ; preds = %322
  switch i8 %317, label %729 [
    i8 13, label %325
    i8 10, label %325
    i8 0, label %325
  ]

325:                                              ; preds = %324, %324, %324
  %326 = and i64 %.1283, -8193
  %327 = load ptr, ptr %40, align 8, !tbaa !20
  %328 = getelementptr inbounds i8, ptr %327, i64 -1
  store ptr %328, ptr %40, align 8, !tbaa !20
  br label %729

329:                                              ; preds = %322
  %330 = and i64 %.1283, 16384
  %.not327 = icmp eq i64 %330, 0
  br i1 %.not327, label %376, label %331

331:                                              ; preds = %329
  switch i8 %317, label %729 [
    i8 0, label %332
    i8 42, label %336
  ]

332:                                              ; preds = %331
  %333 = load i32, ptr %39, align 8, !tbaa !19
  %334 = load i32, ptr %44, align 4, !tbaa !21
  %335 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %5, i64 noundef 128, ptr noundef nonnull @.str.16, i32 noundef %333, i32 noundef %334) #8
  br label %.thread457

336:                                              ; preds = %331
  %337 = load ptr, ptr %40, align 8, !tbaa !20
  %338 = icmp ult ptr %337, %43
  br i1 %338, label %339, label %729

339:                                              ; preds = %336
  %340 = getelementptr inbounds i8, ptr %337, i64 1
  %341 = load i8, ptr %340, align 1, !tbaa !9
  %342 = icmp eq i8 %341, 47
  br i1 %342, label %343, label %729

343:                                              ; preds = %339
  %344 = and i64 %.1283, -24577
  store ptr %340, ptr %40, align 8, !tbaa !20
  br label %729

345:                                              ; preds = %320
  %346 = icmp eq i8 %317, 47
  br i1 %346, label %347, label %376

347:                                              ; preds = %345
  %348 = and i64 %.1283, 136
  %.not324 = icmp eq i64 %348, 0
  br i1 %.not324, label %349, label %357

349:                                              ; preds = %347
  %350 = load ptr, ptr %6, align 8, !tbaa !5
  %351 = getelementptr inbounds i8, ptr %350, i64 8
  %352 = load i32, ptr %351, align 8, !tbaa !22
  %.not325 = icmp eq i32 %352, 1
  br i1 %.not325, label %357, label %353

353:                                              ; preds = %349
  %354 = load i32, ptr %39, align 8, !tbaa !19
  %355 = load i32, ptr %44, align 4, !tbaa !21
  %356 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %5, i64 noundef 128, ptr noundef nonnull @.str.17, i32 noundef %354, i32 noundef %355) #8
  br label %.thread457

357:                                              ; preds = %349, %347
  %358 = load ptr, ptr %40, align 8, !tbaa !20
  %359 = getelementptr inbounds i8, ptr %358, i64 1
  store ptr %359, ptr %40, align 8, !tbaa !20
  %360 = icmp eq ptr %359, %26
  br i1 %360, label %361, label %365

361:                                              ; preds = %357
  %362 = load i32, ptr %39, align 8, !tbaa !19
  %363 = load i32, ptr %44, align 4, !tbaa !21
  %364 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %5, i64 noundef 128, ptr noundef nonnull @.str.18, i32 noundef %362, i32 noundef %363) #8
  br label %.thread457

365:                                              ; preds = %357
  %366 = load i8, ptr %359, align 1, !tbaa !9
  switch i8 %366, label %371 [
    i8 47, label %367
    i8 42, label %369
  ]

367:                                              ; preds = %365
  %368 = or disjoint i64 %.1283, 8192
  br label %729

369:                                              ; preds = %365
  %370 = or disjoint i64 %.1283, 16384
  br label %729

371:                                              ; preds = %365
  %372 = sext i8 %366 to i32
  %373 = load i32, ptr %39, align 8, !tbaa !19
  %374 = load i32, ptr %44, align 4, !tbaa !21
  %375 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %5, i64 noundef 128, ptr noundef nonnull @.str.19, i32 noundef %373, i32 noundef %374, i32 noundef %372) #8
  br label %.thread457

376:                                              ; preds = %329, %345, %316
  %377 = and i64 %.1283, 128
  %.not328 = icmp eq i64 %377, 0
  br i1 %.not328, label %387, label %378

378:                                              ; preds = %376
  switch i8 %317, label %382 [
    i8 0, label %732
    i8 10, label %379
    i8 32, label %729
    i8 9, label %729
    i8 13, label %729
  ]

379:                                              ; preds = %378
  %380 = load i32, ptr %39, align 8, !tbaa !19
  %381 = add i32 %380, 1
  store i32 %381, ptr %39, align 8, !tbaa !19
  store i32 0, ptr %44, align 4, !tbaa !21
  br label %729

382:                                              ; preds = %378
  %383 = sext i8 %317 to i32
  %384 = load i32, ptr %39, align 8, !tbaa !19
  %385 = load i32, ptr %44, align 4, !tbaa !21
  %386 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %5, i64 noundef 128, ptr noundef nonnull @.str.20, i32 noundef %384, i32 noundef %385, i32 noundef %383) #8
  br label %.thread457

387:                                              ; preds = %376
  %388 = and i64 %.1283, 8
  %.not329 = icmp eq i64 %388, 0
  br i1 %.not329, label %536, label %389

389:                                              ; preds = %387
  switch i8 %317, label %406 [
    i8 10, label %390
    i8 32, label %729
    i8 9, label %729
    i8 13, label %729
    i8 93, label %393
  ]

390:                                              ; preds = %389
  %391 = load i32, ptr %39, align 8, !tbaa !19
  %392 = add i32 %391, 1
  store i32 %392, ptr %39, align 8, !tbaa !19
  store i32 0, ptr %44, align 4, !tbaa !21
  br label %729

393:                                              ; preds = %389
  %394 = load ptr, ptr %6, align 8, !tbaa !5
  %.not344 = icmp eq ptr %394, null
  br i1 %.not344, label %402, label %395

395:                                              ; preds = %393
  %396 = getelementptr inbounds i8, ptr %394, i64 8
  %397 = load i32, ptr %396, align 8, !tbaa !22
  %398 = icmp eq i32 %397, 2
  br i1 %398, label %399, label %402

399:                                              ; preds = %395
  %400 = and i64 %.1283, -142
  %401 = or disjoint i64 %400, 1
  br label %685

402:                                              ; preds = %395, %393
  %403 = load i32, ptr %39, align 8, !tbaa !19
  %404 = load i32, ptr %44, align 4, !tbaa !21
  %405 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %5, i64 noundef 128, ptr noundef nonnull @.str.21, i32 noundef %403, i32 noundef %404) #8
  br label %.thread457

406:                                              ; preds = %389
  %407 = and i64 %.1283, 4
  %.not345 = icmp eq i64 %407, 0
  br i1 %.not345, label %417, label %408

408:                                              ; preds = %406
  %409 = icmp eq i8 %317, 44
  br i1 %409, label %410, label %412

410:                                              ; preds = %408
  %411 = and i64 %.1283, -133
  br label %729

412:                                              ; preds = %408
  %413 = sext i8 %317 to i32
  %414 = load i32, ptr %39, align 8, !tbaa !19
  %415 = load i32, ptr %44, align 4, !tbaa !21
  %416 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %5, i64 noundef 128, ptr noundef nonnull @.str.22, i32 noundef %414, i32 noundef %415, i32 noundef %413) #8
  br label %.thread457

417:                                              ; preds = %406
  %418 = and i64 %.1283, 64
  %.not346 = icmp eq i64 %418, 0
  br i1 %.not346, label %428, label %419

419:                                              ; preds = %417
  %420 = icmp eq i8 %317, 58
  br i1 %420, label %421, label %423

421:                                              ; preds = %419
  %422 = and i64 %.1283, -197
  br label %729

423:                                              ; preds = %419
  %424 = sext i8 %317 to i32
  %425 = load i32, ptr %39, align 8, !tbaa !19
  %426 = load i32, ptr %44, align 4, !tbaa !21
  %427 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %5, i64 noundef 128, ptr noundef nonnull @.str.23, i32 noundef %425, i32 noundef %426, i32 noundef %424) #8
  br label %.thread457

428:                                              ; preds = %417
  %429 = and i64 %.1283, -205
  switch i8 %317, label %500 [
    i8 123, label %430
    i8 91, label %432
    i8 34, label %434
    i8 116, label %441
    i8 102, label %461
    i8 110, label %482
  ]

430:                                              ; preds = %428
  %431 = 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 %431, 0
  br i1 %.not362, label %select.unfold, label %729

432:                                              ; preds = %428
  %433 = 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 %433, 0
  br i1 %.not361, label %select.unfold, label %729

434:                                              ; preds = %428
  %435 = 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 %435, 0
  br i1 %.not360, label %select.unfold, label %436

436:                                              ; preds = %434
  %437 = or i64 %429, 32
  %438 = load ptr, ptr %6, align 8, !tbaa !5
  %439 = getelementptr inbounds i8, ptr %438, i64 24
  %440 = load ptr, ptr %439, align 8, !tbaa !9
  br label %729

441:                                              ; preds = %428
  %442 = load ptr, ptr %40, align 8, !tbaa !20
  %443 = ptrtoint ptr %442 to i64
  %444 = sub i64 %41, %443
  %445 = icmp slt i64 %444, 3
  br i1 %445, label %737, label %446

446:                                              ; preds = %441
  %447 = getelementptr inbounds i8, ptr %442, i64 1
  store ptr %447, ptr %40, align 8, !tbaa !20
  %448 = load i8, ptr %447, align 1, !tbaa !9
  %.not356 = icmp eq i8 %448, 114
  br i1 %.not356, label %449, label %737

449:                                              ; preds = %446
  %450 = getelementptr inbounds i8, ptr %442, i64 2
  store ptr %450, ptr %40, align 8, !tbaa !20
  %451 = load i8, ptr %450, align 1, !tbaa !9
  %.not357 = icmp eq i8 %451, 117
  br i1 %.not357, label %452, label %737

452:                                              ; preds = %449
  %453 = getelementptr inbounds i8, ptr %442, i64 3
  store ptr %453, ptr %40, align 8, !tbaa !20
  %454 = load i8, ptr %453, align 1, !tbaa !9
  %.not358 = icmp eq i8 %454, 101
  br i1 %.not358, label %455, label %737

455:                                              ; preds = %452
  %456 = 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 %456, 0
  br i1 %.not359, label %select.unfold, label %457

457:                                              ; preds = %455
  %458 = load ptr, ptr %6, align 8, !tbaa !5
  %459 = getelementptr inbounds i8, ptr %458, i64 16
  store i32 1, ptr %459, align 8, !tbaa !9
  %460 = or i64 %429, 1
  br label %685

461:                                              ; preds = %428
  %462 = load ptr, ptr %40, align 8, !tbaa !20
  %463 = ptrtoint ptr %462 to i64
  %464 = sub i64 %41, %463
  %465 = icmp slt i64 %464, 4
  br i1 %465, label %737, label %466

466:                                              ; preds = %461
  %467 = getelementptr inbounds i8, ptr %462, i64 1
  store ptr %467, ptr %40, align 8, !tbaa !20
  %468 = load i8, ptr %467, align 1, !tbaa !9
  %.not351 = icmp eq i8 %468, 97
  br i1 %.not351, label %469, label %737

469:                                              ; preds = %466
  %470 = getelementptr inbounds i8, ptr %462, i64 2
  store ptr %470, ptr %40, align 8, !tbaa !20
  %471 = load i8, ptr %470, align 1, !tbaa !9
  %.not352 = icmp eq i8 %471, 108
  br i1 %.not352, label %472, label %737

472:                                              ; preds = %469
  %473 = getelementptr inbounds i8, ptr %462, i64 3
  store ptr %473, ptr %40, align 8, !tbaa !20
  %474 = load i8, ptr %473, align 1, !tbaa !9
  %.not353 = icmp eq i8 %474, 115
  br i1 %.not353, label %475, label %737

475:                                              ; preds = %472
  %476 = getelementptr inbounds i8, ptr %462, i64 4
  store ptr %476, ptr %40, align 8, !tbaa !20
  %477 = load i8, ptr %476, align 1, !tbaa !9
  %.not354 = icmp eq i8 %477, 101
  br i1 %.not354, label %478, label %737

478:                                              ; preds = %475
  %479 = 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 %479, 0
  br i1 %.not355, label %select.unfold, label %480

480:                                              ; preds = %478
  %481 = or i64 %429, 1
  br label %685

482:                                              ; preds = %428
  %483 = load ptr, ptr %40, align 8, !tbaa !20
  %484 = ptrtoint ptr %483 to i64
  %485 = sub i64 %41, %484
  %486 = icmp slt i64 %485, 3
  br i1 %486, label %737, label %487

487:                                              ; preds = %482
  %488 = getelementptr inbounds i8, ptr %483, i64 1
  store ptr %488, ptr %40, align 8, !tbaa !20
  %489 = load i8, ptr %488, align 1, !tbaa !9
  %.not347 = icmp eq i8 %489, 117
  br i1 %.not347, label %490, label %737

490:                                              ; preds = %487
  %491 = getelementptr inbounds i8, ptr %483, i64 2
  store ptr %491, ptr %40, align 8, !tbaa !20
  %492 = load i8, ptr %491, align 1, !tbaa !9
  %.not348 = icmp eq i8 %492, 108
  br i1 %.not348, label %493, label %737

493:                                              ; preds = %490
  %494 = getelementptr inbounds i8, ptr %483, i64 3
  store ptr %494, ptr %40, align 8, !tbaa !20
  %495 = load i8, ptr %494, align 1, !tbaa !9
  %.not349 = icmp eq i8 %495, 108
  br i1 %.not349, label %496, label %737

496:                                              ; preds = %493
  %497 = 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 %497, 0
  br i1 %.not350, label %select.unfold, label %498

498:                                              ; preds = %496
  %499 = or i64 %429, 1
  br label %685

500:                                              ; preds = %428
  %501 = tail call ptr @__ctype_b_loc() #9
  %502 = load ptr, ptr %501, align 8, !tbaa !5
  %503 = sext i8 %317 to i64
  %504 = getelementptr inbounds i16, ptr %502, i64 %503
  %505 = load i16, ptr %504, align 2, !tbaa !28
  %506 = and i16 %505, 2048
  %507 = icmp ne i16 %506, 0
  %508 = icmp eq i8 %317, 45
  %or.cond7 = select i1 %507, i1 true, i1 %508
  br i1 %or.cond7, label %509, label %531

509:                                              ; preds = %500
  %510 = 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 %510, 0
  br i1 %.not363, label %select.unfold, label %511

511:                                              ; preds = %509
  %512 = load i32, ptr %38, align 8, !tbaa !18
  %.not364 = icmp eq i32 %512, 0
  br i1 %.not364, label %.preheader, label %525

.preheader:                                       ; preds = %511, %521
  %.0260 = phi i8 [ %522, %521 ], [ %317, %511 ]
  %513 = load ptr, ptr %501, align 8, !tbaa !5
  %514 = sext i8 %.0260 to i64
  %515 = getelementptr inbounds i16, ptr %513, i64 %514
  %516 = load i16, ptr %515, align 2, !tbaa !28
  %.fr474 = freeze i16 %516
  %517 = and i16 %.fr474, 2048
  %.not475 = icmp eq i16 %517, 0
  br i1 %.not475, label %switch.early.test, label %.critedge

switch.early.test:                                ; preds = %.preheader
  switch i8 %.0260, label %523 [
    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
  %518 = load ptr, ptr %40, align 8, !tbaa !20
  %519 = getelementptr inbounds i8, ptr %518, i64 1
  store ptr %519, ptr %40, align 8, !tbaa !20
  %520 = icmp eq ptr %519, %26
  br i1 %520, label %523, label %521

521:                                              ; preds = %.critedge
  %522 = load i8, ptr %519, align 1, !tbaa !9
  br label %.preheader, !llvm.loop !30

523:                                              ; preds = %.critedge, %switch.early.test
  %524 = or i64 %429, 3
  br label %685

525:                                              ; preds = %511
  %526 = and i64 %.1283, -8141
  br i1 %508, label %529, label %527

527:                                              ; preds = %525
  %528 = or i64 %526, 2
  br label %685

529:                                              ; preds = %525
  %530 = or disjoint i64 %526, 256
  br label %729

531:                                              ; preds = %500
  %532 = sext i8 %317 to i32
  %533 = load i32, ptr %39, align 8, !tbaa !19
  %534 = load i32, ptr %44, align 4, !tbaa !21
  %535 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %5, i64 noundef 128, ptr noundef nonnull @.str.24, i32 noundef %533, i32 noundef %534, i32 noundef %532) #8
  br label %.thread457

536:                                              ; preds = %387
  %537 = load ptr, ptr %6, align 8, !tbaa !5
  %538 = getelementptr inbounds i8, ptr %537, i64 8
  %539 = load i32, ptr %538, align 8, !tbaa !22
  switch i32 %539, label %685 [
    i32 1, label %540
    i32 3, label %566
    i32 4, label %566
  ]

540:                                              ; preds = %536
  switch i8 %317, label %561 [
    i8 10, label %541
    i8 32, label %729
    i8 9, label %729
    i8 13, label %729
    i8 34, label %544
    i8 125, label %554
    i8 44, label %557
  ]

541:                                              ; preds = %540
  %542 = load i32, ptr %39, align 8, !tbaa !19
  %543 = add i32 %542, 1
  store i32 %543, ptr %39, align 8, !tbaa !19
  store i32 0, ptr %44, align 4, !tbaa !21
  br label %729

544:                                              ; preds = %540
  %545 = and i64 %.1283, 4
  %.not343 = icmp eq i64 %545, 0
  br i1 %.not343, label %550, label %546

546:                                              ; preds = %544
  %547 = load i32, ptr %39, align 8, !tbaa !19
  %548 = load i32, ptr %44, align 4, !tbaa !21
  %549 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %5, i64 noundef 128, ptr noundef nonnull @.str.25, i32 noundef %547, i32 noundef %548) #8
  br label %.thread457

550:                                              ; preds = %544
  %551 = or i64 %.1283, 32
  %552 = getelementptr inbounds i8, ptr %537, i64 32
  %553 = load ptr, ptr %552, align 8, !tbaa !9
  br label %685

554:                                              ; preds = %540
  %555 = and i64 %.1283, -142
  %556 = or disjoint i64 %555, 1
  br label %685

557:                                              ; preds = %540
  %558 = and i64 %.1283, 4
  %.not342 = icmp eq i64 %558, 0
  br i1 %.not342, label %561, label %559

559:                                              ; preds = %557
  %560 = and i64 %.1283, -141
  br label %685

561:                                              ; preds = %557, %540
  %562 = sext i8 %317 to i32
  %563 = load i32, ptr %39, align 8, !tbaa !19
  %564 = load i32, ptr %44, align 4, !tbaa !21
  %565 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %5, i64 noundef 128, ptr noundef nonnull @.str.26, i32 noundef %563, i32 noundef %564, i32 noundef %562) #8
  br label %.thread457

566:                                              ; preds = %536, %536
  %567 = tail call ptr @__ctype_b_loc() #9
  %568 = load ptr, ptr %567, align 8, !tbaa !5
  %569 = sext i8 %317 to i32
  %570 = sext i8 %317 to i64
  %571 = getelementptr inbounds i16, ptr %568, i64 %570
  %572 = load i16, ptr %571, align 2, !tbaa !28
  %573 = and i16 %572, 2048
  %.not330 = icmp eq i16 %573, 0
  br i1 %.not330, label %606, label %574

574:                                              ; preds = %566
  %575 = add nsw i64 %.1279, 1
  %576 = icmp ne i32 %539, 3
  %577 = and i64 %.1283, 1024
  %.not339 = icmp eq i64 %577, 0
  %or.cond = select i1 %576, i1 %.not339, i1 false
  br i1 %or.cond, label %601, label %578

578:                                              ; preds = %574
  br i1 %.not339, label %579, label %595

579:                                              ; preds = %578
  %580 = and i64 %.1283, 512
  %.not341 = icmp eq i64 %580, 0
  br i1 %.not341, label %585, label %581

581:                                              ; preds = %579
  %582 = load i32, ptr %39, align 8, !tbaa !19
  %583 = load i32, ptr %44, align 4, !tbaa !21
  %584 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %5, i64 noundef 128, ptr noundef nonnull @.str.27, i32 noundef %582, i32 noundef %583, i32 noundef %569) #8
  br label %.thread457

585:                                              ; preds = %579
  %586 = icmp eq i64 %.1279, 0
  %587 = icmp eq i8 %317, 48
  %or.cond22 = select i1 %586, i1 %587, i1 false
  %588 = or disjoint i64 %.1283, 512
  %spec.select = select i1 %or.cond22, i64 %588, i64 %.1283
  %589 = getelementptr inbounds i8, ptr %537, i64 16
  %590 = load i64, ptr %589, align 8, !tbaa !9
  %591 = mul nsw i64 %590, 10
  %592 = add nsw i32 %569, -48
  %593 = sext i32 %592 to i64
  %594 = add nsw i64 %591, %593
  store i64 %594, ptr %589, align 8, !tbaa !9
  br label %729

595:                                              ; preds = %578
  %596 = or i64 %.1283, 2048
  %597 = mul nsw i64 %.1275, 10
  %598 = add nsw i32 %569, -48
  %599 = sext i32 %598 to i64
  %600 = add nsw i64 %597, %599
  br label %729

601:                                              ; preds = %574
  %602 = mul nsw i64 %.1271, 10
  %603 = add nsw i32 %569, -48
  %604 = sext i32 %603 to i64
  %605 = add nsw i64 %602, %604
  br label %729

606:                                              ; preds = %566
  %607 = icmp eq i8 %317, 45
  switch i8 %317, label %622 [
    i8 45, label %608
    i8 43, label %608
    i8 46, label %611
  ]

608:                                              ; preds = %606, %606
  %609 = and i64 %.1283, 3072
  %or.cond393 = icmp eq i64 %609, 1024
  br i1 %or.cond393, label %610, label %622

610:                                              ; preds = %608
  %spec.select394.v = select i1 %607, i64 6144, i64 2048
  %spec.select394 = or i64 %spec.select394.v, %.1283
  br label %729

611:                                              ; preds = %606
  %612 = icmp eq i32 %539, 3
  br i1 %612, label %613, label %.thread412

613:                                              ; preds = %611
  %.not331 = icmp eq i64 %.1279, 0
  br i1 %.not331, label %614, label %618

614:                                              ; preds = %613
  %615 = load i32, ptr %39, align 8, !tbaa !19
  %616 = load i32, ptr %44, align 4, !tbaa !21
  %617 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %5, i64 noundef 128, ptr noundef nonnull @.str.28, i32 noundef %615, i32 noundef %616) #8
  br label %.thread457

618:                                              ; preds = %613
  store i32 4, ptr %538, align 8, !tbaa !22
  %619 = getelementptr inbounds i8, ptr %537, i64 16
  %620 = load i64, ptr %619, align 8, !tbaa !9
  %621 = sitofp i64 %620 to double
  store double %621, ptr %619, align 8, !tbaa !9
  br label %729

622:                                              ; preds = %606, %608
  %623 = and i64 %.1283, 1024
  %.not334 = icmp eq i64 %623, 0
  br i1 %.not334, label %625, label %654

.thread412:                                       ; preds = %611
  %624 = and i64 %.1283, 1024
  %.not334413 = icmp eq i64 %624, 0
  br i1 %.not334413, label %.thread414, label %654

625:                                              ; preds = %622
  %626 = icmp eq i32 %539, 4
  br i1 %626, label %.thread414, label %640

.thread414:                                       ; preds = %.thread412, %625
  %.not335 = icmp eq i64 %.1279, 0
  br i1 %.not335, label %627, label %631

627:                                              ; preds = %.thread414
  %628 = load i32, ptr %39, align 8, !tbaa !19
  %629 = load i32, ptr %44, align 4, !tbaa !21
  %630 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %5, i64 noundef 128, ptr noundef nonnull @.str.29, i32 noundef %628, i32 noundef %629) #8
  br label %.thread457

631:                                              ; preds = %.thread414
  %632 = sitofp i64 %.1271 to double
  %633 = sitofp i64 %.1279 to double
  %634 = call double @pow(double noundef 1.000000e+01, double noundef %633) #8
  %635 = fdiv double %632, %634
  %636 = load ptr, ptr %6, align 8, !tbaa !5
  %637 = getelementptr inbounds i8, ptr %636, i64 16
  %638 = load double, ptr %637, align 8, !tbaa !9
  %639 = fadd double %635, %638
  store double %639, ptr %637, align 8, !tbaa !9
  br label %640

640:                                              ; preds = %631, %625
  %641 = phi ptr [ %636, %631 ], [ %537, %625 ]
  %642 = and i8 %317, -33
  %or.cond28 = icmp eq i8 %642, 69
  br i1 %or.cond28, label %643, label %669

643:                                              ; preds = %640
  %644 = getelementptr inbounds i8, ptr %641, i64 8
  %645 = load i32, ptr %644, align 8, !tbaa !22
  %646 = icmp eq i32 %645, 3
  br i1 %646, label %647, label %651

647:                                              ; preds = %643
  store i32 4, ptr %644, align 8, !tbaa !22
  %648 = getelementptr inbounds i8, ptr %641, i64 16
  %649 = load i64, ptr %648, align 8, !tbaa !9
  %650 = sitofp i64 %649 to double
  store double %650, ptr %648, align 8, !tbaa !9
  br label %651

651:                                              ; preds = %647, %643
  %652 = and i64 %.1283, -1673
  %653 = or disjoint i64 %652, 1024
  br label %729

654:                                              ; preds = %.thread412, %622
  %.not336 = icmp eq i64 %.1279, 0
  br i1 %.not336, label %655, label %659

655:                                              ; preds = %654
  %656 = load i32, ptr %39, align 8, !tbaa !19
  %657 = load i32, ptr %44, align 4, !tbaa !21
  %658 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %5, i64 noundef 128, ptr noundef nonnull @.str.30, i32 noundef %656, i32 noundef %657) #8
  br label %.thread457

659:                                              ; preds = %654
  %660 = and i64 %.1283, 4096
  %.not337 = icmp eq i64 %660, 0
  %661 = sub nsw i64 0, %.1275
  %662 = select i1 %.not337, i64 %.1275, i64 %661
  %663 = sitofp i64 %662 to double
  %664 = call double @pow(double noundef 1.000000e+01, double noundef %663) #8
  %665 = load ptr, ptr %6, align 8, !tbaa !5
  %666 = getelementptr inbounds i8, ptr %665, i64 16
  %667 = load double, ptr %666, align 8, !tbaa !9
  %668 = fmul double %664, %667
  store double %668, ptr %666, align 8, !tbaa !9
  br label %669

669:                                              ; preds = %640, %659
  %670 = phi ptr [ %641, %640 ], [ %665, %659 ]
  %671 = and i64 %.1283, 256
  %.not338 = icmp eq i64 %671, 0
  br i1 %.not338, label %683, label %672

672:                                              ; preds = %669
  %673 = getelementptr inbounds i8, ptr %670, i64 8
  %674 = load i32, ptr %673, align 8, !tbaa !22
  %675 = icmp eq i32 %674, 3
  %676 = getelementptr inbounds i8, ptr %670, i64 16
  br i1 %675, label %677, label %680

677:                                              ; preds = %672
  %678 = load i64, ptr %676, align 8, !tbaa !9
  %679 = sub nsw i64 0, %678
  store i64 %679, ptr %676, align 8, !tbaa !9
  br label %683

680:                                              ; preds = %672
  %681 = load double, ptr %676, align 8, !tbaa !9
  %682 = fneg double %681
  store double %682, ptr %676, align 8, !tbaa !9
  br label %683

683:                                              ; preds = %677, %680, %669
  %684 = or i64 %.1283, 3
  br label %685

685:                                              ; preds = %683, %559, %554, %550, %536, %399, %527, %523, %498, %480, %457
  %.6 = phi i64 [ %528, %527 ], [ %524, %523 ], [ %499, %498 ], [ %481, %480 ], [ %460, %457 ], [ %401, %399 ], [ %.1283, %536 ], [ %684, %683 ], [ %560, %559 ], [ %556, %554 ], [ %551, %550 ]
  %.2280 = phi i64 [ 0, %527 ], [ %.1279, %523 ], [ %.1279, %498 ], [ %.1279, %480 ], [ %.1279, %457 ], [ %.1279, %399 ], [ %.1279, %536 ], [ %.1279, %683 ], [ %.1279, %559 ], [ %.1279, %554 ], [ %.1279, %550 ]
  %.2276 = phi i64 [ 0, %527 ], [ %.1275, %523 ], [ %.1275, %498 ], [ %.1275, %480 ], [ %.1275, %457 ], [ %.1275, %399 ], [ %.1275, %536 ], [ %.1275, %683 ], [ %.1275, %559 ], [ %.1275, %554 ], [ %.1275, %550 ]
  %.2272 = phi i64 [ 0, %527 ], [ %.1271, %523 ], [ %.1271, %498 ], [ %.1271, %480 ], [ %.1271, %457 ], [ %.1271, %399 ], [ %.1271, %536 ], [ %.1271, %683 ], [ %.1271, %559 ], [ %.1271, %554 ], [ %.1271, %550 ]
  %.2266 = phi ptr [ %.1265, %527 ], [ %.1265, %523 ], [ %.1265, %498 ], [ %.1265, %480 ], [ %.1265, %457 ], [ %.1265, %399 ], [ %.1265, %536 ], [ %.1265, %683 ], [ %.1265, %559 ], [ %.1265, %554 ], [ %553, %550 ]
  %.2263 = phi i32 [ %.0261, %527 ], [ %.0261, %523 ], [ %.0261, %498 ], [ %.0261, %480 ], [ %.0261, %457 ], [ %.0261, %399 ], [ %.0261, %536 ], [ %.0261, %683 ], [ %.0261, %559 ], [ %.0261, %554 ], [ 0, %550 ]
  %686 = and i64 %.6, 2
  %.not366 = icmp eq i64 %686, 0
  br i1 %.not366, label %691, label %687

687:                                              ; preds = %685
  %688 = and i64 %.6, -3
  %689 = load ptr, ptr %40, align 8, !tbaa !20
  %690 = getelementptr inbounds i8, ptr %689, i64 -1
  store ptr %690, ptr %40, align 8, !tbaa !20
  br label %691

691:                                              ; preds = %687, %685
  %.7 = phi i64 [ %688, %687 ], [ %.6, %685 ]
  %692 = and i64 %.7, 1
  %.not367 = icmp eq i64 %692, 0
  br i1 %.not367, label %729, label %693

693:                                              ; preds = %691
  %694 = and i64 %.7, -6
  %695 = load ptr, ptr %6, align 8, !tbaa !5
  %696 = load ptr, ptr %695, align 8, !tbaa !32
  %.not368 = icmp eq ptr %696, null
  br i1 %.not368, label %697, label %699

697:                                              ; preds = %693
  %698 = or i64 %694, 132
  br label %729

699:                                              ; preds = %693
  %700 = getelementptr inbounds i8, ptr %696, i64 8
  %701 = load i32, ptr %700, align 8, !tbaa !22
  %702 = icmp eq i32 %701, 2
  %spec.select395.v = select i1 %702, i64 12, i64 4
  %spec.select395 = or i64 %spec.select395.v, %694
  %703 = load i32, ptr %38, align 8, !tbaa !18
  %.not369 = icmp eq i32 %703, 0
  br i1 %.not369, label %704, label %719

704:                                              ; preds = %699
  switch i32 %701, label %719 [
    i32 1, label %705
    i32 2, label %712
  ]

705:                                              ; preds = %704
  %706 = getelementptr inbounds i8, ptr %696, i64 16
  %707 = getelementptr inbounds i8, ptr %696, i64 24
  %708 = load ptr, ptr %707, align 8, !tbaa !9
  %709 = load i32, ptr %706, align 8, !tbaa !9
  %710 = zext i32 %709 to i64
  %711 = getelementptr inbounds %struct._json_object_entry, ptr %708, i64 %710, i32 2
  br label %.sink.split

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

.sink.split:                                      ; preds = %712, %705
  %.sink775 = phi ptr [ %711, %705 ], [ %718, %712 ]
  store ptr %695, ptr %.sink775, align 8, !tbaa !5
  br label %719

719:                                              ; preds = %.sink.split, %704, %699
  %720 = load ptr, ptr %6, align 8, !tbaa !5
  %721 = load ptr, ptr %720, align 8, !tbaa !32
  %722 = getelementptr inbounds i8, ptr %721, i64 16
  %723 = load i32, ptr %722, align 8, !tbaa !9
  %724 = add i32 %723, 1
  store i32 %724, ptr %722, align 8, !tbaa !9
  %725 = load i32, ptr %36, align 8, !tbaa !16
  %726 = icmp ugt i32 %724, %725
  br i1 %726, label %742, label %727

727:                                              ; preds = %719
  %728 = load ptr, ptr %720, align 8, !tbaa !32
  store ptr %728, ptr %6, align 8, !tbaa !5
  br label %729

729:                                              ; preds = %379, %378, %378, %378, %268, %410, %421, %727, %697, %529, %436, %595, %585, %601, %651, %610, %618, %369, %367, %304, %314, %227, %229, %207, %209, %191, %193, %265, %185, %96, %89, %82, %75, %68, %324, %325, %331, %343, %339, %336, %390, %389, %389, %389, %430, %432, %541, %540, %540, %540, %691
  %.9.ph = phi i64 [ %.7, %691 ], [ %.1283, %540 ], [ %.1283, %540 ], [ %.1283, %540 ], [ %.1283, %541 ], [ %.1283, %432 ], [ %429, %430 ], [ %.1283, %389 ], [ %.1283, %389 ], [ %.1283, %389 ], [ %.1283, %390 ], [ %.1283, %331 ], [ %.1283, %336 ], [ %.1283, %339 ], [ %344, %343 ], [ %326, %325 ], [ %.1283, %324 ], [ %62, %68 ], [ %62, %75 ], [ %62, %82 ], [ %62, %89 ], [ %62, %96 ], [ %62, %185 ], [ %62, %265 ], [ %62, %193 ], [ %62, %191 ], [ %62, %209 ], [ %62, %207 ], [ %62, %229 ], [ %62, %227 ], [ %.0282, %314 ], [ %308, %304 ], [ %368, %367 ], [ %370, %369 ], [ %.1283, %618 ], [ %spec.select394, %610 ], [ %653, %651 ], [ %.1283, %601 ], [ %spec.select, %585 ], [ %596, %595 ], [ %437, %436 ], [ %530, %529 ], [ %698, %697 ], [ %spec.select395, %727 ], [ %422, %421 ], [ %411, %410 ], [ %269, %268 ], [ %.1283, %378 ], [ %.1283, %378 ], [ %.1283, %378 ], [ %.1283, %379 ]
  %.3281.ph = phi i64 [ %.2280, %691 ], [ %.1279, %540 ], [ %.1279, %540 ], [ %.1279, %540 ], [ %.1279, %541 ], [ %.1279, %432 ], [ %.1279, %430 ], [ %.1279, %389 ], [ %.1279, %389 ], [ %.1279, %389 ], [ %.1279, %390 ], [ %.1279, %331 ], [ %.1279, %336 ], [ %.1279, %339 ], [ %.1279, %343 ], [ %.1279, %325 ], [ %.1279, %324 ], [ %.1279, %68 ], [ %.1279, %75 ], [ %.1279, %82 ], [ %.1279, %89 ], [ %.1279, %96 ], [ %.1279, %185 ], [ %.1279, %265 ], [ %.1279, %193 ], [ %.1279, %191 ], [ %.1279, %209 ], [ %.1279, %207 ], [ %.1279, %229 ], [ %.1279, %227 ], [ %.1279, %314 ], [ %.1279, %304 ], [ %.1279, %367 ], [ %.1279, %369 ], [ 0, %618 ], [ %.1279, %610 ], [ 0, %651 ], [ %575, %601 ], [ %575, %585 ], [ %575, %595 ], [ %.1279, %436 ], [ 0, %529 ], [ %.2280, %697 ], [ %.2280, %727 ], [ %.1279, %421 ], [ %.1279, %410 ], [ %.1279, %268 ], [ %.1279, %378 ], [ %.1279, %378 ], [ %.1279, %378 ], [ %.1279, %379 ]
  %.3277.ph = phi i64 [ %.2276, %691 ], [ %.1275, %540 ], [ %.1275, %540 ], [ %.1275, %540 ], [ %.1275, %541 ], [ %.1275, %432 ], [ %.1275, %430 ], [ %.1275, %389 ], [ %.1275, %389 ], [ %.1275, %389 ], [ %.1275, %390 ], [ %.1275, %331 ], [ %.1275, %336 ], [ %.1275, %339 ], [ %.1275, %343 ], [ %.1275, %325 ], [ %.1275, %324 ], [ %.1275, %68 ], [ %.1275, %75 ], [ %.1275, %82 ], [ %.1275, %89 ], [ %.1275, %96 ], [ %.1275, %185 ], [ %.1275, %265 ], [ %.1275, %193 ], [ %.1275, %191 ], [ %.1275, %209 ], [ %.1275, %207 ], [ %.1275, %229 ], [ %.1275, %227 ], [ %.1275, %314 ], [ %.1275, %304 ], [ %.1275, %367 ], [ %.1275, %369 ], [ %.1275, %618 ], [ %.1275, %610 ], [ %.1275, %651 ], [ %.1275, %601 ], [ %.1275, %585 ], [ %600, %595 ], [ %.1275, %436 ], [ 0, %529 ], [ %.2276, %697 ], [ %.2276, %727 ], [ %.1275, %421 ], [ %.1275, %410 ], [ %.1275, %268 ], [ %.1275, %378 ], [ %.1275, %378 ], [ %.1275, %378 ], [ %.1275, %379 ]
  %.3273.ph = phi i64 [ %.2272, %691 ], [ %.1271, %540 ], [ %.1271, %540 ], [ %.1271, %540 ], [ %.1271, %541 ], [ %.1271, %432 ], [ %.1271, %430 ], [ %.1271, %389 ], [ %.1271, %389 ], [ %.1271, %389 ], [ %.1271, %390 ], [ %.1271, %331 ], [ %.1271, %336 ], [ %.1271, %339 ], [ %.1271, %343 ], [ %.1271, %325 ], [ %.1271, %324 ], [ %.1271, %68 ], [ %.1271, %75 ], [ %.1271, %82 ], [ %.1271, %89 ], [ %.1271, %96 ], [ %.1271, %185 ], [ %.1271, %265 ], [ %.1271, %193 ], [ %.1271, %191 ], [ %.1271, %209 ], [ %.1271, %207 ], [ %.1271, %229 ], [ %.1271, %227 ], [ %.1271, %314 ], [ %.1271, %304 ], [ %.1271, %367 ], [ %.1271, %369 ], [ %.1271, %618 ], [ %.1271, %610 ], [ %.1271, %651 ], [ %605, %601 ], [ %.1271, %585 ], [ %.1271, %595 ], [ %.1271, %436 ], [ 0, %529 ], [ %.2272, %697 ], [ %.2272, %727 ], [ %.1271, %421 ], [ %.1271, %410 ], [ %.1271, %268 ], [ %.1271, %378 ], [ %.1271, %378 ], [ %.1271, %378 ], [ %.1271, %379 ]
  %.3267.ph = phi ptr [ %.2266, %691 ], [ %.1265, %540 ], [ %.1265, %540 ], [ %.1265, %540 ], [ %.1265, %541 ], [ %.1265, %432 ], [ %.1265, %430 ], [ %.1265, %389 ], [ %.1265, %389 ], [ %.1265, %389 ], [ %.1265, %390 ], [ %.1265, %331 ], [ %.1265, %336 ], [ %.1265, %339 ], [ %.1265, %343 ], [ %.1265, %325 ], [ %.1265, %324 ], [ %.0264, %68 ], [ %.0264, %75 ], [ %.0264, %82 ], [ %.0264, %89 ], [ %.0264, %96 ], [ %.0264, %185 ], [ %.0264, %265 ], [ %.0264, %193 ], [ %.0264, %191 ], [ %.0264, %209 ], [ %.0264, %207 ], [ %.0264, %229 ], [ %.0264, %227 ], [ %.0264, %314 ], [ null, %304 ], [ %.1265, %367 ], [ %.1265, %369 ], [ %.1265, %618 ], [ %.1265, %610 ], [ %.1265, %651 ], [ %.1265, %601 ], [ %.1265, %585 ], [ %.1265, %595 ], [ %440, %436 ], [ %.1265, %529 ], [ %.2266, %697 ], [ %.2266, %727 ], [ %.1265, %421 ], [ %.1265, %410 ], [ %.0264, %268 ], [ %.1265, %378 ], [ %.1265, %378 ], [ %.1265, %378 ], [ %.1265, %379 ]
  %.3.ph = phi i32 [ %.2263, %691 ], [ %.0261, %540 ], [ %.0261, %540 ], [ %.0261, %540 ], [ %.0261, %541 ], [ %.0261, %432 ], [ %.0261, %430 ], [ %.0261, %389 ], [ %.0261, %389 ], [ %.0261, %389 ], [ %.0261, %390 ], [ %.0261, %331 ], [ %.0261, %336 ], [ %.0261, %339 ], [ %.0261, %343 ], [ %.0261, %325 ], [ %.0261, %324 ], [ %69, %68 ], [ %76, %75 ], [ %83, %82 ], [ %90, %89 ], [ %97, %96 ], [ %186, %185 ], [ %266, %265 ], [ %202, %193 ], [ %192, %191 ], [ %224, %209 ], [ %208, %207 ], [ %257, %229 ], [ %228, %227 ], [ %315, %314 ], [ %.0261, %304 ], [ %.0261, %367 ], [ %.0261, %369 ], [ %.0261, %618 ], [ %.0261, %610 ], [ %.0261, %651 ], [ %.0261, %601 ], [ %.0261, %585 ], [ %.0261, %595 ], [ 0, %436 ], [ %.0261, %529 ], [ %.2263, %697 ], [ %.2263, %727 ], [ %.0261, %421 ], [ %.0261, %410 ], [ %.0261, %268 ], [ %.0261, %378 ], [ %.0261, %378 ], [ %.0261, %378 ], [ %.0261, %379 ]
  %730 = load ptr, ptr %40, align 8, !tbaa !20
  %731 = getelementptr inbounds i8, ptr %730, i64 1
  br label %46

732:                                              ; preds = %378
  %733 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %733, ptr %8, align 8, !tbaa !5
  %734 = load i32, ptr %38, align 8, !tbaa !18
  %735 = add nsw i32 %734, -1
  store i32 %735, ptr %38, align 8, !tbaa !18
  %736 = icmp sgt i32 %734, 0
  br i1 %736, label %45, label %.loopexit, !llvm.loop !33

737:                                              ; preds = %482, %487, %490, %493, %461, %466, %469, %472, %475, %441, %446, %449, %452
  %738 = load i32, ptr %39, align 8, !tbaa !19
  %739 = load i32, ptr %44, align 4, !tbaa !21
  %740 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %5, i64 noundef 128, ptr noundef nonnull @.str.31, i32 noundef %738, i32 noundef %739) #8
  br label %.thread457

select.unfold:                                    ; preds = %432, %430, %509, %496, %478, %455, %434
  %741 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %5, ptr noundef nonnull dereferenceable(1) @.str.32) #8
  br label %.thread457

742:                                              ; preds = %719, %56
  %743 = load i32, ptr %39, align 8, !tbaa !19
  %744 = load i32, ptr %44, align 4, !tbaa !21
  %745 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %5, i64 noundef 128, ptr noundef nonnull @.str.33, i32 noundef %743, i32 noundef %744) #8
  br label %.thread457

.thread457:                                       ; preds = %125, %174, %332, %382, %412, %423, %531, %402, %581, %655, %627, %614, %561, %546, %361, %371, %353, %.thread397, %742, %select.unfold, %737
  %.not387 = icmp eq ptr %3, null
  br i1 %.not387, label %748, label %.sink.split776

.sink.split776:                                   ; preds = %.thread457
  %746 = load i8, ptr %5, align 16, !tbaa !9
  %.not388 = icmp eq i8 %746, 0
  %.str.34. = select i1 %.not388, ptr @.str.34, ptr %5
  %747 = call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %3, ptr noundef nonnull dereferenceable(1) %.str.34.) #8
  br label %748

748:                                              ; preds = %.sink.split776, %.thread457
  %749 = load i32, ptr %38, align 8, !tbaa !18
  %.not389 = icmp eq i32 %749, 0
  br i1 %.not389, label %._crit_edge683, label %750

._crit_edge683:                                   ; preds = %748
  %.pr.pre = load ptr, ptr %8, align 8, !tbaa !5
  br label %752

750:                                              ; preds = %748
  %751 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %751, ptr %8, align 8, !tbaa !5
  br label %752

752:                                              ; preds = %._crit_edge683, %750
  %.pr = phi ptr [ %.pr.pre, %._crit_edge683 ], [ %751, %750 ]
  %.not390597 = icmp eq ptr %.pr, null
  br i1 %.not390597, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %752
  %753 = getelementptr inbounds i8, ptr %9, i64 56
  br label %754

754:                                              ; preds = %.lr.ph, %754
  %755 = phi ptr [ %.pr, %.lr.ph ], [ %760, %754 ]
  %756 = getelementptr inbounds i8, ptr %755, i64 32
  %757 = load ptr, ptr %756, align 8, !tbaa !9
  store ptr %757, ptr %6, align 8, !tbaa !5
  %758 = load ptr, ptr %32, align 8, !tbaa !15
  %759 = load ptr, ptr %753, align 8, !tbaa !34
  call void %758(ptr noundef nonnull %755, ptr noundef %759) #8
  %760 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %760, ptr %8, align 8, !tbaa !5
  %.not390 = icmp eq ptr %760, null
  br i1 %.not390, label %._crit_edge.loopexit, label %754, !llvm.loop !35

._crit_edge.loopexit:                             ; preds = %754
  %.pre = load i32, ptr %38, align 8, !tbaa !18
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %752
  %761 = phi i32 [ %.pre, %._crit_edge.loopexit ], [ %749, %752 ]
  %.not391 = icmp eq i32 %761, 0
  br i1 %.not391, label %762, label %.loopexit

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

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

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #3

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

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

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

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

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

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

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

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

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #4 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #5 = { 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 #6 = { 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 #7 = { 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 #8 = { nounwind }
attributes #9 = { 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 = !{!7, !7, i64 0}
!10 = !{!11, !6, i64 40}
!11 = !{!"", !12, i64 0, !13, i64 8, !12, i64 16, !14, i64 24, !13, i64 72, !6, i64 80, !13, i64 88, !13, i64 92}
!12 = !{!"long", !7, i64 0}
!13 = !{!"int", !7, i64 0}
!14 = !{!"", !12, i64 0, !13, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !12, i64 40}
!15 = !{!11, !6, i64 48}
!16 = !{!11, !13, i64 8}
!17 = !{!11, !12, i64 16}
!18 = !{!11, !13, i64 72}
!19 = !{!11, !13, i64 88}
!20 = !{!11, !6, i64 80}
!21 = !{!11, !13, i64 92}
!22 = !{!23, !13, i64 8}
!23 = !{!"_json_value", !6, i64 0, !13, i64 8, !7, i64 16, !7, i64 32}
!24 = !{!25, !6, i64 0}
!25 = !{!"_json_object_entry", !6, i64 0, !13, i64 8, !6, i64 16}
!26 = !{!25, !13, i64 8}
!27 = !{!11, !13, i64 32}
!28 = !{!29, !29, i64 0}
!29 = !{!"short", !7, i64 0}
!30 = distinct !{!30, !31}
!31 = !{!"llvm.loop.mustprogress"}
!32 = !{!23, !6, i64 0}
!33 = distinct !{!33, !31}
!34 = !{!11, !6, i64 56}
!35 = distinct !{!35, !31}


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