; LLVM IR from marcobambini/gravity :: src/shared (gravity_value)

; 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.gravity_value_t = type { ptr, %union.anon }
%union.anon = type { i64 }
%struct._json_value = type { ptr, i32, %union.anon.0, %union.anon.3 }
%union.anon.0 = type { %struct.anon }
%struct.anon = type { i32, ptr }
%union.anon.3 = type { ptr }
%struct.anon.1 = type { i32, ptr }
%struct._json_object_entry = type { ptr, i32, ptr }
%struct.gravity_function_t = type { ptr, %struct.gravity_gc_s, ptr, ptr, i16, i16, i16, i16, i32, %union.anon.4 }
%struct.gravity_gc_s = type { i8, i8, ptr, ptr, ptr, ptr }
%union.anon.4 = type { %struct.anon.5 }
%struct.anon.5 = type { %struct.gravity_value_r, %struct.gravity_value_r, %struct.gravity_value_r, i32, ptr, ptr, float, i8 }
%struct.gravity_value_r = type { i64, i64, ptr }
%struct.anon.6 = type { i16, [2 x ptr] }
%struct.anon.2 = type { i32, ptr }
%struct.gravity_class_s = type { ptr, %struct.gravity_gc_s, ptr, ptr, i8, i8, i8, i8, ptr, ptr, ptr, ptr, i32, ptr }
%struct.gravity_list_t = type { ptr, %struct.gravity_gc_s, %struct.gravity_value_r }

@gravity_class_null = external global ptr, align 8
@.str.7 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [7 x i8], align 1
@gravity_class_int = external global ptr, align 8
@gravity_class_float = external global ptr, align 8
@gravity_class_bool = external global ptr, align 8

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

declare ptr @gravity_calloc(ptr noundef, i64 noundef, i64 noundef) #1

declare ptr @string_dup(ptr noundef) #1

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

; Function Attrs: inlinehint nounwind uwtable
declare dso_local { ptr, i64 } @gravity_string_to_value(ptr noundef, ptr noundef, i32 noundef) #2

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

declare i32 @string_casencmp(ptr noundef, ptr noundef, i64 noundef) #1

; Function Attrs: nounwind willreturn memory(read)
declare i64 @strlen(ptr noundef) #4

; Function Attrs: nounwind uwtable
declare dso_local ptr @gravity_object_deserialize(ptr noundef, ptr noundef) #5

; Function Attrs: nounwind uwtable
declare dso_local ptr @gravity_closure_new(ptr noundef, ptr noundef) #5

; Function Attrs: nounwind uwtable
declare dso_local ptr @gravity_function_new(ptr noundef, ptr noundef, i16 noundef zeroext, i16 noundef zeroext, i16 noundef zeroext, ptr noundef) #5

; Function Attrs: nounwind uwtable
declare dso_local zeroext i16 @gravity_function_cpool_add(ptr noundef, ptr noundef, ptr, i64) #5

; Function Attrs: nounwind allocsize(1)
declare ptr @realloc(ptr noundef, i64 noundef) #6

; Function Attrs: nounwind uwtable
declare dso_local ptr @gravity_bytecode_deserialize(ptr noundef, i64 noundef, ptr noundef) #5

; Function Attrs: nounwind uwtable
define dso_local ptr @gravity_function_deserialize(ptr noundef %0, ptr noundef %1) #5 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca i8, align 1
  %8 = alloca i8, align 1
  %9 = alloca i8, align 1
  %10 = alloca i8, align 1
  %11 = alloca i8, align 1
  %12 = alloca i8, align 1
  %13 = alloca i8, align 1
  %14 = alloca i8, align 1
  %15 = alloca i8, align 1
  %16 = alloca i8, align 1
  %17 = alloca i8, align 1
  %18 = alloca i8, align 1
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca i64, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca ptr, align 8
  %30 = alloca %struct.gravity_value_t, align 8
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca ptr, align 8
  %34 = alloca %struct.gravity_value_t, align 8
  %35 = alloca %struct.gravity_value_t, align 8
  %36 = alloca %struct.gravity_value_t, align 8
  %37 = alloca %struct.gravity_value_t, align 8
  %38 = alloca %struct.gravity_value_t, align 8
  %39 = alloca %struct.gravity_value_t, align 8
  %40 = alloca %struct.gravity_value_t, align 8
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca ptr, align 8
  %44 = alloca %struct.gravity_value_t, align 8
  %45 = alloca %struct.gravity_value_t, align 8
  %46 = alloca %struct.gravity_value_t, align 8
  %47 = alloca %struct.gravity_value_t, align 8
  %48 = alloca ptr, align 8
  %49 = alloca %struct.gravity_value_t, align 8
  %50 = alloca i32, align 4
  %51 = alloca ptr, align 8
  %52 = alloca i32, align 4
  %53 = alloca ptr, align 8
  %54 = alloca %struct.gravity_value_t, align 8
  %55 = alloca %struct.gravity_value_t, align 8
  %56 = alloca %struct.gravity_value_t, align 8
  %57 = alloca %struct.gravity_value_t, align 8
  %58 = alloca %struct.gravity_value_t, align 8
  %59 = alloca %struct.gravity_value_t, align 8
  %60 = alloca %struct.gravity_value_t, align 8
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #7
  %61 = load ptr, ptr %4, align 8, !tbaa !5
  %62 = call ptr @gravity_function_new(ptr noundef %61, ptr noundef null, i16 noundef zeroext 0, i16 noundef zeroext 0, i16 noundef zeroext 0, ptr noundef null)
  store ptr %62, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %7) #7
  store i8 0, ptr %7, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %8) #7
  store i8 0, ptr %8, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %9) #7
  store i8 0, ptr %9, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %10) #7
  store i8 0, ptr %10, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %11) #7
  store i8 0, ptr %11, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %12) #7
  store i8 0, ptr %12, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %13) #7
  store i8 0, ptr %13, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %14) #7
  store i8 0, ptr %14, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %15) #7
  store i8 0, ptr %15, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %16) #7
  store i8 0, ptr %16, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %17) #7
  store i8 0, ptr %17, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %18) #7
  store i8 0, ptr %18, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #7
  %63 = load ptr, ptr %5, align 8, !tbaa !5
  %64 = getelementptr inbounds %struct._json_value, ptr %63, i32 0, i32 2
  %65 = getelementptr inbounds %struct.anon.1, ptr %64, i32 0, i32 0
  %66 = load i32, ptr %65, align 8, !tbaa !11
  store i32 %66, ptr %19, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #7
  store i32 1, ptr %20, align 4, !tbaa !12
  br label %67

67:                                               ; preds = %1376, %2
  %68 = load i32, ptr %20, align 4, !tbaa !12
  %69 = load i32, ptr %19, align 4, !tbaa !12
  %70 = icmp ult i32 %68, %69
  br i1 %70, label %72, label %71

71:                                               ; preds = %67
  store i32 2, ptr %21, align 4
  br label %1379

72:                                               ; preds = %67
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #7
  %73 = load ptr, ptr %5, align 8, !tbaa !5
  %74 = getelementptr inbounds %struct._json_value, ptr %73, i32 0, i32 2
  %75 = getelementptr inbounds %struct.anon.1, ptr %74, i32 0, i32 1
  %76 = load ptr, ptr %75, align 8, !tbaa !11
  %77 = load i32, ptr %20, align 4, !tbaa !12
  %78 = zext i32 %77 to i64
  %79 = getelementptr inbounds %struct._json_object_entry, ptr %76, i64 %78
  %80 = getelementptr inbounds %struct._json_object_entry, ptr %79, i32 0, i32 0
  %81 = load ptr, ptr %80, align 8, !tbaa !14
  store ptr %81, ptr %22, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #7
  %82 = load ptr, ptr %5, align 8, !tbaa !5
  %83 = getelementptr inbounds %struct._json_value, ptr %82, i32 0, i32 2
  %84 = getelementptr inbounds %struct.anon.1, ptr %83, i32 0, i32 1
  %85 = load ptr, ptr %84, align 8, !tbaa !11
  %86 = load i32, ptr %20, align 4, !tbaa !12
  %87 = zext i32 %86 to i64
  %88 = getelementptr inbounds %struct._json_object_entry, ptr %85, i64 %87
  %89 = getelementptr inbounds %struct._json_object_entry, ptr %88, i32 0, i32 2
  %90 = load ptr, ptr %89, align 8, !tbaa !16
  store ptr %90, ptr %23, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #7
  %91 = load ptr, ptr %22, align 8, !tbaa !5
  %92 = call i64 @strlen(ptr noundef %91) #8
  store i64 %92, ptr %24, align 8, !tbaa !17
  %93 = load ptr, ptr %22, align 8, !tbaa !5
  %94 = load i64, ptr %24, align 8, !tbaa !17
  %95 = call i32 @string_casencmp(ptr noundef %93, ptr noundef @.str.7, i64 noundef %94)
  %96 = icmp eq i32 %95, 0
  br i1 %96, label %97, label %123

97:                                               ; preds = %72
  %98 = load ptr, ptr %23, align 8, !tbaa !5
  %99 = getelementptr inbounds %struct._json_value, ptr %98, i32 0, i32 1
  %100 = load i32, ptr %99, align 8, !tbaa !19
  %101 = icmp ne i32 %100, 5
  br i1 %101, label %102, label %103

102:                                              ; preds = %97
  store i32 5, ptr %21, align 4
  br label %1373

103:                                              ; preds = %97
  %104 = load i8, ptr %7, align 1, !tbaa !9, !range !21, !noundef !22
  %105 = trunc i8 %104 to i1
  br i1 %105, label %106, label %107

106:                                              ; preds = %103
  store i32 5, ptr %21, align 4
  br label %1373

107:                                              ; preds = %103
  %108 = load ptr, ptr %23, align 8, !tbaa !5
  %109 = getelementptr inbounds %struct._json_value, ptr %108, i32 0, i32 2
  %110 = getelementptr inbounds %struct.anon, ptr %109, i32 0, i32 1
  %111 = load ptr, ptr %110, align 8, !tbaa !11
  %112 = call i32 @strncmp(ptr noundef %111, ptr noundef @.str.21, i64 noundef 5) #8
  %113 = icmp ne i32 %112, 0
  br i1 %113, label %114, label %122

114:                                              ; preds = %107
  %115 = load ptr, ptr %23, align 8, !tbaa !5
  %116 = getelementptr inbounds %struct._json_value, ptr %115, i32 0, i32 2
  %117 = getelementptr inbounds %struct.anon, ptr %116, i32 0, i32 1
  %118 = load ptr, ptr %117, align 8, !tbaa !11
  %119 = call ptr @string_dup(ptr noundef %118)
  %120 = load ptr, ptr %6, align 8, !tbaa !5
  %121 = getelementptr inbounds %struct.gravity_function_t, ptr %120, i32 0, i32 3
  store ptr %119, ptr %121, align 8, !tbaa !23
  br label %122

122:                                              ; preds = %114, %107
  store i8 1, ptr %7, align 1, !tbaa !9
  store i32 4, ptr %21, align 4
  br label %1373

123:                                              ; preds = %72
  %124 = load ptr, ptr %22, align 8, !tbaa !5
  %125 = load i64, ptr %24, align 8, !tbaa !17
  %126 = call i32 @string_casencmp(ptr noundef %124, ptr noundef @.str.30, i64 noundef %125)
  %127 = icmp eq i32 %126, 0
  br i1 %127, label %128, label %146

128:                                              ; preds = %123
  %129 = load ptr, ptr %23, align 8, !tbaa !5
  %130 = getelementptr inbounds %struct._json_value, ptr %129, i32 0, i32 1
  %131 = load i32, ptr %130, align 8, !tbaa !19
  %132 = icmp ne i32 %131, 3
  br i1 %132, label %133, label %134

133:                                              ; preds = %128
  store i32 5, ptr %21, align 4
  br label %1373

134:                                              ; preds = %128
  %135 = load i8, ptr %18, align 1, !tbaa !9, !range !21, !noundef !22
  %136 = trunc i8 %135 to i1
  br i1 %136, label %137, label %138

137:                                              ; preds = %134
  store i32 5, ptr %21, align 4
  br label %1373

138:                                              ; preds = %134
  %139 = load ptr, ptr %23, align 8, !tbaa !5
  %140 = getelementptr inbounds %struct._json_value, ptr %139, i32 0, i32 2
  %141 = load i64, ptr %140, align 8, !tbaa !11
  %142 = trunc i64 %141 to i16
  %143 = zext i16 %142 to i32
  %144 = load ptr, ptr %6, align 8, !tbaa !5
  %145 = getelementptr inbounds %struct.gravity_function_t, ptr %144, i32 0, i32 8
  store i32 %143, ptr %145, align 8, !tbaa !27
  store i8 1, ptr %18, align 1, !tbaa !9
  store i32 4, ptr %21, align 4
  br label %1373

146:                                              ; preds = %123
  %147 = load ptr, ptr %22, align 8, !tbaa !5
  %148 = load i64, ptr %24, align 8, !tbaa !17
  %149 = call i32 @string_casencmp(ptr noundef %147, ptr noundef @.str.40, i64 noundef %148)
  %150 = icmp eq i32 %149, 0
  br i1 %150, label %151, label %175

151:                                              ; preds = %146
  %152 = load ptr, ptr %23, align 8, !tbaa !5
  %153 = getelementptr inbounds %struct._json_value, ptr %152, i32 0, i32 1
  %154 = load i32, ptr %153, align 8, !tbaa !19
  %155 = icmp ne i32 %154, 3
  br i1 %155, label %156, label %157

156:                                              ; preds = %151
  store i32 5, ptr %21, align 4
  br label %1373

157:                                              ; preds = %151
  %158 = load ptr, ptr %6, align 8, !tbaa !5
  %159 = getelementptr inbounds %struct.gravity_function_t, ptr %158, i32 0, i32 8
  %160 = load i32, ptr %159, align 8, !tbaa !27
  %161 = icmp ne i32 %160, 3
  br i1 %161, label %162, label %163

162:                                              ; preds = %157
  store i32 5, ptr %21, align 4
  br label %1373

163:                                              ; preds = %157
  %164 = load i8, ptr %10, align 1, !tbaa !9, !range !21, !noundef !22
  %165 = trunc i8 %164 to i1
  br i1 %165, label %166, label %167

166:                                              ; preds = %163
  store i32 5, ptr %21, align 4
  br label %1373

167:                                              ; preds = %163
  %168 = load ptr, ptr %23, align 8, !tbaa !5
  %169 = getelementptr inbounds %struct._json_value, ptr %168, i32 0, i32 2
  %170 = load i64, ptr %169, align 8, !tbaa !11
  %171 = trunc i64 %170 to i16
  %172 = load ptr, ptr %6, align 8, !tbaa !5
  %173 = getelementptr inbounds %struct.gravity_function_t, ptr %172, i32 0, i32 9
  %174 = getelementptr inbounds %struct.anon.6, ptr %173, i32 0, i32 0
  store i16 %171, ptr %174, align 8, !tbaa !11
  store i8 1, ptr %10, align 1, !tbaa !9
  store i32 4, ptr %21, align 4
  br label %1373

175:                                              ; preds = %146
  %176 = load ptr, ptr %22, align 8, !tbaa !5
  %177 = call i32 @string_casencmp(ptr noundef %176, ptr noundef @.str.41, i64 noundef 4)
  %178 = icmp eq i32 %177, 0
  br i1 %178, label %179, label %205

179:                                              ; preds = %175
  %180 = load ptr, ptr %6, align 8, !tbaa !5
  %181 = getelementptr inbounds %struct.gravity_function_t, ptr %180, i32 0, i32 8
  %182 = load i32, ptr %181, align 8, !tbaa !27
  %183 = icmp ne i32 %182, 3
  br i1 %183, label %184, label %185

184:                                              ; preds = %179
  store i32 5, ptr %21, align 4
  br label %1373

185:                                              ; preds = %179
  %186 = load i8, ptr %8, align 1, !tbaa !9, !range !21, !noundef !22
  %187 = trunc i8 %186 to i1
  br i1 %187, label %188, label %189

188:                                              ; preds = %185
  store i32 5, ptr %21, align 4
  br label %1373

189:                                              ; preds = %185
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #7
  %190 = load ptr, ptr %4, align 8, !tbaa !5
  %191 = load ptr, ptr %23, align 8, !tbaa !5
  %192 = call ptr @gravity_function_deserialize(ptr noundef %190, ptr noundef %191)
  store ptr %192, ptr %25, align 8, !tbaa !5
  %193 = load ptr, ptr %25, align 8, !tbaa !5
  %194 = icmp ne ptr %193, null
  br i1 %194, label %196, label %195

195:                                              ; preds = %189
  store i32 5, ptr %21, align 4
  br label %204

196:                                              ; preds = %189
  %197 = load ptr, ptr %4, align 8, !tbaa !5
  %198 = load ptr, ptr %25, align 8, !tbaa !5
  %199 = call ptr @gravity_closure_new(ptr noundef %197, ptr noundef %198)
  %200 = load ptr, ptr %6, align 8, !tbaa !5
  %201 = getelementptr inbounds %struct.gravity_function_t, ptr %200, i32 0, i32 9
  %202 = getelementptr inbounds %struct.anon.6, ptr %201, i32 0, i32 1
  %203 = getelementptr inbounds [2 x ptr], ptr %202, i64 0, i64 0
  store ptr %199, ptr %203, align 8, !tbaa !11
  store i8 1, ptr %8, align 1, !tbaa !9
  store i32 4, ptr %21, align 4
  br label %204

204:                                              ; preds = %196, %195
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #7
  br label %1373

205:                                              ; preds = %175
  %206 = load ptr, ptr %22, align 8, !tbaa !5
  %207 = call i32 @string_casencmp(ptr noundef %206, ptr noundef @.str.42, i64 noundef 4)
  %208 = icmp eq i32 %207, 0
  br i1 %208, label %209, label %235

209:                                              ; preds = %205
  %210 = load ptr, ptr %6, align 8, !tbaa !5
  %211 = getelementptr inbounds %struct.gravity_function_t, ptr %210, i32 0, i32 8
  %212 = load i32, ptr %211, align 8, !tbaa !27
  %213 = icmp ne i32 %212, 3
  br i1 %213, label %214, label %215

214:                                              ; preds = %209
  store i32 5, ptr %21, align 4
  br label %1373

215:                                              ; preds = %209
  %216 = load i8, ptr %9, align 1, !tbaa !9, !range !21, !noundef !22
  %217 = trunc i8 %216 to i1
  br i1 %217, label %218, label %219

218:                                              ; preds = %215
  store i32 5, ptr %21, align 4
  br label %1373

219:                                              ; preds = %215
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #7
  %220 = load ptr, ptr %4, align 8, !tbaa !5
  %221 = load ptr, ptr %23, align 8, !tbaa !5
  %222 = call ptr @gravity_function_deserialize(ptr noundef %220, ptr noundef %221)
  store ptr %222, ptr %26, align 8, !tbaa !5
  %223 = load ptr, ptr %26, align 8, !tbaa !5
  %224 = icmp ne ptr %223, null
  br i1 %224, label %226, label %225

225:                                              ; preds = %219
  store i32 5, ptr %21, align 4
  br label %234

226:                                              ; preds = %219
  %227 = load ptr, ptr %4, align 8, !tbaa !5
  %228 = load ptr, ptr %26, align 8, !tbaa !5
  %229 = call ptr @gravity_closure_new(ptr noundef %227, ptr noundef %228)
  %230 = load ptr, ptr %6, align 8, !tbaa !5
  %231 = getelementptr inbounds %struct.gravity_function_t, ptr %230, i32 0, i32 9
  %232 = getelementptr inbounds %struct.anon.6, ptr %231, i32 0, i32 1
  %233 = getelementptr inbounds [2 x ptr], ptr %232, i64 0, i64 1
  store ptr %229, ptr %233, align 8, !tbaa !11
  store i8 1, ptr %9, align 1, !tbaa !9
  store i32 4, ptr %21, align 4
  br label %234

234:                                              ; preds = %226, %225
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  br label %1373

235:                                              ; preds = %205
  %236 = load ptr, ptr %22, align 8, !tbaa !5
  %237 = load i64, ptr %24, align 8, !tbaa !17
  %238 = call i32 @string_casencmp(ptr noundef %236, ptr noundef @.str.31, i64 noundef %237)
  %239 = icmp eq i32 %238, 0
  br i1 %239, label %240, label %257

240:                                              ; preds = %235
  %241 = load ptr, ptr %23, align 8, !tbaa !5
  %242 = getelementptr inbounds %struct._json_value, ptr %241, i32 0, i32 1
  %243 = load i32, ptr %242, align 8, !tbaa !19
  %244 = icmp ne i32 %243, 3
  br i1 %244, label %245, label %246

245:                                              ; preds = %240
  store i32 5, ptr %21, align 4
  br label %1373

246:                                              ; preds = %240
  %247 = load i8, ptr %13, align 1, !tbaa !9, !range !21, !noundef !22
  %248 = trunc i8 %247 to i1
  br i1 %248, label %249, label %250

249:                                              ; preds = %246
  store i32 5, ptr %21, align 4
  br label %1373

250:                                              ; preds = %246
  %251 = load ptr, ptr %23, align 8, !tbaa !5
  %252 = getelementptr inbounds %struct._json_value, ptr %251, i32 0, i32 2
  %253 = load i64, ptr %252, align 8, !tbaa !11
  %254 = trunc i64 %253 to i16
  %255 = load ptr, ptr %6, align 8, !tbaa !5
  %256 = getelementptr inbounds %struct.gravity_function_t, ptr %255, i32 0, i32 4
  store i16 %254, ptr %256, align 8, !tbaa !28
  store i8 1, ptr %13, align 1, !tbaa !9
  store i32 4, ptr %21, align 4
  br label %1373

257:                                              ; preds = %235
  %258 = load ptr, ptr %22, align 8, !tbaa !5
  %259 = load i64, ptr %24, align 8, !tbaa !17
  %260 = call i32 @string_casencmp(ptr noundef %258, ptr noundef @.str.33, i64 noundef %259)
  %261 = icmp eq i32 %260, 0
  br i1 %261, label %262, label %279

262:                                              ; preds = %257
  %263 = load ptr, ptr %23, align 8, !tbaa !5
  %264 = getelementptr inbounds %struct._json_value, ptr %263, i32 0, i32 1
  %265 = load i32, ptr %264, align 8, !tbaa !19
  %266 = icmp ne i32 %265, 3
  br i1 %266, label %267, label %268

267:                                              ; preds = %262
  store i32 5, ptr %21, align 4
  br label %1373

268:                                              ; preds = %262
  %269 = load i8, ptr %14, align 1, !tbaa !9, !range !21, !noundef !22
  %270 = trunc i8 %269 to i1
  br i1 %270, label %271, label %272

271:                                              ; preds = %268
  store i32 5, ptr %21, align 4
  br label %1373

272:                                              ; preds = %268
  %273 = load ptr, ptr %23, align 8, !tbaa !5
  %274 = getelementptr inbounds %struct._json_value, ptr %273, i32 0, i32 2
  %275 = load i64, ptr %274, align 8, !tbaa !11
  %276 = trunc i64 %275 to i16
  %277 = load ptr, ptr %6, align 8, !tbaa !5
  %278 = getelementptr inbounds %struct.gravity_function_t, ptr %277, i32 0, i32 5
  store i16 %276, ptr %278, align 2, !tbaa !29
  store i8 1, ptr %14, align 1, !tbaa !9
  store i32 4, ptr %21, align 4
  br label %1373

279:                                              ; preds = %257
  %280 = load ptr, ptr %22, align 8, !tbaa !5
  %281 = load i64, ptr %24, align 8, !tbaa !17
  %282 = call i32 @string_casencmp(ptr noundef %280, ptr noundef @.str.34, i64 noundef %281)
  %283 = icmp eq i32 %282, 0
  br i1 %283, label %284, label %301

284:                                              ; preds = %279
  %285 = load ptr, ptr %23, align 8, !tbaa !5
  %286 = getelementptr inbounds %struct._json_value, ptr %285, i32 0, i32 1
  %287 = load i32, ptr %286, align 8, !tbaa !19
  %288 = icmp ne i32 %287, 3
  br i1 %288, label %289, label %290

289:                                              ; preds = %284
  store i32 5, ptr %21, align 4
  br label %1373

290:                                              ; preds = %284
  %291 = load i8, ptr %15, align 1, !tbaa !9, !range !21, !noundef !22
  %292 = trunc i8 %291 to i1
  br i1 %292, label %293, label %294

293:                                              ; preds = %290
  store i32 5, ptr %21, align 4
  br label %1373

294:                                              ; preds = %290
  %295 = load ptr, ptr %23, align 8, !tbaa !5
  %296 = getelementptr inbounds %struct._json_value, ptr %295, i32 0, i32 2
  %297 = load i64, ptr %296, align 8, !tbaa !11
  %298 = trunc i64 %297 to i16
  %299 = load ptr, ptr %6, align 8, !tbaa !5
  %300 = getelementptr inbounds %struct.gravity_function_t, ptr %299, i32 0, i32 6
  store i16 %298, ptr %300, align 4, !tbaa !30
  store i8 1, ptr %15, align 1, !tbaa !9
  store i32 4, ptr %21, align 4
  br label %1373

301:                                              ; preds = %279
  %302 = load ptr, ptr %22, align 8, !tbaa !5
  %303 = load i64, ptr %24, align 8, !tbaa !17
  %304 = call i32 @string_casencmp(ptr noundef %302, ptr noundef @.str.35, i64 noundef %303)
  %305 = icmp eq i32 %304, 0
  br i1 %305, label %306, label %323

306:                                              ; preds = %301
  %307 = load ptr, ptr %23, align 8, !tbaa !5
  %308 = getelementptr inbounds %struct._json_value, ptr %307, i32 0, i32 1
  %309 = load i32, ptr %308, align 8, !tbaa !19
  %310 = icmp ne i32 %309, 3
  br i1 %310, label %311, label %312

311:                                              ; preds = %306
  store i32 5, ptr %21, align 4
  br label %1373

312:                                              ; preds = %306
  %313 = load i8, ptr %16, align 1, !tbaa !9, !range !21, !noundef !22
  %314 = trunc i8 %313 to i1
  br i1 %314, label %315, label %316

315:                                              ; preds = %312
  store i32 5, ptr %21, align 4
  br label %1373

316:                                              ; preds = %312
  %317 = load ptr, ptr %23, align 8, !tbaa !5
  %318 = getelementptr inbounds %struct._json_value, ptr %317, i32 0, i32 2
  %319 = load i64, ptr %318, align 8, !tbaa !11
  %320 = trunc i64 %319 to i16
  %321 = load ptr, ptr %6, align 8, !tbaa !5
  %322 = getelementptr inbounds %struct.gravity_function_t, ptr %321, i32 0, i32 7
  store i16 %320, ptr %322, align 2, !tbaa !31
  store i8 1, ptr %16, align 1, !tbaa !9
  store i32 4, ptr %21, align 4
  br label %1373

323:                                              ; preds = %301
  %324 = load ptr, ptr %22, align 8, !tbaa !5
  %325 = load i64, ptr %24, align 8, !tbaa !17
  %326 = call i32 @string_casencmp(ptr noundef %324, ptr noundef @.str.32, i64 noundef %325)
  %327 = icmp eq i32 %326, 0
  br i1 %327, label %328, label %347

328:                                              ; preds = %323
  %329 = load ptr, ptr %23, align 8, !tbaa !5
  %330 = getelementptr inbounds %struct._json_value, ptr %329, i32 0, i32 1
  %331 = load i32, ptr %330, align 8, !tbaa !19
  %332 = icmp ne i32 %331, 6
  br i1 %332, label %333, label %334

333:                                              ; preds = %328
  store i32 5, ptr %21, align 4
  br label %1373

334:                                              ; preds = %328
  %335 = load i8, ptr %17, align 1, !tbaa !9, !range !21, !noundef !22
  %336 = trunc i8 %335 to i1
  br i1 %336, label %337, label %338

337:                                              ; preds = %334
  store i32 5, ptr %21, align 4
  br label %1373

338:                                              ; preds = %334
  %339 = load ptr, ptr %23, align 8, !tbaa !5
  %340 = getelementptr inbounds %struct._json_value, ptr %339, i32 0, i32 2
  %341 = load i32, ptr %340, align 8, !tbaa !11
  %342 = icmp ne i32 %341, 0
  %343 = load ptr, ptr %6, align 8, !tbaa !5
  %344 = getelementptr inbounds %struct.gravity_function_t, ptr %343, i32 0, i32 9
  %345 = getelementptr inbounds %struct.anon.5, ptr %344, i32 0, i32 7
  %346 = zext i1 %342 to i8
  store i8 %346, ptr %345, align 4, !tbaa !11
  store i8 1, ptr %17, align 1, !tbaa !9
  store i32 4, ptr %21, align 4
  br label %1373

347:                                              ; preds = %323
  %348 = load ptr, ptr %22, align 8, !tbaa !5
  %349 = load i64, ptr %24, align 8, !tbaa !17
  %350 = call i32 @string_casencmp(ptr noundef %348, ptr noundef @.str.43, i64 noundef %349)
  %351 = icmp eq i32 %350, 0
  br i1 %351, label %352, label %406

352:                                              ; preds = %347
  %353 = load i8, ptr %11, align 1, !tbaa !9, !range !21, !noundef !22
  %354 = trunc i8 %353 to i1
  br i1 %354, label %355, label %356

355:                                              ; preds = %352
  store i32 5, ptr %21, align 4
  br label %1373

356:                                              ; preds = %352
  %357 = load ptr, ptr %23, align 8, !tbaa !5
  %358 = getelementptr inbounds %struct._json_value, ptr %357, i32 0, i32 1
  %359 = load i32, ptr %358, align 8, !tbaa !19
  %360 = icmp eq i32 %359, 7
  br i1 %360, label %361, label %376

361:                                              ; preds = %356
  %362 = load ptr, ptr %6, align 8, !tbaa !5
  %363 = getelementptr inbounds %struct.gravity_function_t, ptr %362, i32 0, i32 9
  %364 = getelementptr inbounds %struct.anon.5, ptr %363, i32 0, i32 3
  store i32 0, ptr %364, align 8, !tbaa !11
  %365 = load ptr, ptr %6, align 8, !tbaa !5
  %366 = getelementptr inbounds %struct.gravity_function_t, ptr %365, i32 0, i32 9
  %367 = getelementptr inbounds %struct.anon.5, ptr %366, i32 0, i32 3
  %368 = load i32, ptr %367, align 8, !tbaa !11
  %369 = add i32 %368, 1
  %370 = zext i32 %369 to i64
  %371 = mul i64 4, %370
  %372 = call ptr @gravity_calloc(ptr noundef null, i64 noundef 1, i64 noundef %371)
  %373 = load ptr, ptr %6, align 8, !tbaa !5
  %374 = getelementptr inbounds %struct.gravity_function_t, ptr %373, i32 0, i32 9
  %375 = getelementptr inbounds %struct.anon.5, ptr %374, i32 0, i32 4
  store ptr %372, ptr %375, align 8, !tbaa !11
  br label %405

376:                                              ; preds = %356
  %377 = load ptr, ptr %23, align 8, !tbaa !5
  %378 = getelementptr inbounds %struct._json_value, ptr %377, i32 0, i32 1
  %379 = load i32, ptr %378, align 8, !tbaa !19
  %380 = icmp ne i32 %379, 5
  br i1 %380, label %381, label %382

381:                                              ; preds = %376
  store i32 5, ptr %21, align 4
  br label %1373

382:                                              ; preds = %376
  %383 = load ptr, ptr %6, align 8, !tbaa !5
  %384 = getelementptr inbounds %struct.gravity_function_t, ptr %383, i32 0, i32 8
  %385 = load i32, ptr %384, align 8, !tbaa !27
  %386 = icmp ne i32 %385, 0
  br i1 %386, label %387, label %388

387:                                              ; preds = %382
  store i32 5, ptr %21, align 4
  br label %1373

388:                                              ; preds = %382
  %389 = load ptr, ptr %23, align 8, !tbaa !5
  %390 = getelementptr inbounds %struct._json_value, ptr %389, i32 0, i32 2
  %391 = getelementptr inbounds %struct.anon, ptr %390, i32 0, i32 1
  %392 = load ptr, ptr %391, align 8, !tbaa !11
  %393 = load ptr, ptr %23, align 8, !tbaa !5
  %394 = getelementptr inbounds %struct._json_value, ptr %393, i32 0, i32 2
  %395 = getelementptr inbounds %struct.anon, ptr %394, i32 0, i32 0
  %396 = load i32, ptr %395, align 8, !tbaa !11
  %397 = zext i32 %396 to i64
  %398 = load ptr, ptr %6, align 8, !tbaa !5
  %399 = getelementptr inbounds %struct.gravity_function_t, ptr %398, i32 0, i32 9
  %400 = getelementptr inbounds %struct.anon.5, ptr %399, i32 0, i32 3
  %401 = call ptr @gravity_bytecode_deserialize(ptr noundef %392, i64 noundef %397, ptr noundef %400)
  %402 = load ptr, ptr %6, align 8, !tbaa !5
  %403 = getelementptr inbounds %struct.gravity_function_t, ptr %402, i32 0, i32 9
  %404 = getelementptr inbounds %struct.anon.5, ptr %403, i32 0, i32 4
  store ptr %401, ptr %404, align 8, !tbaa !11
  br label %405

405:                                              ; preds = %388, %361
  store i8 1, ptr %11, align 1, !tbaa !9
  store i32 4, ptr %21, align 4
  br label %1373

406:                                              ; preds = %347
  %407 = load ptr, ptr %22, align 8, !tbaa !5
  %408 = load i64, ptr %24, align 8, !tbaa !17
  %409 = call i32 @string_casencmp(ptr noundef %407, ptr noundef @.str.44, i64 noundef %408)
  %410 = icmp eq i32 %409, 0
  br i1 %410, label %411, label %434

411:                                              ; preds = %406
  %412 = load ptr, ptr %23, align 8, !tbaa !5
  %413 = getelementptr inbounds %struct._json_value, ptr %412, i32 0, i32 1
  %414 = load i32, ptr %413, align 8, !tbaa !19
  %415 = icmp eq i32 %414, 5
  br i1 %415, label %416, label %433

416:                                              ; preds = %411
  %417 = load ptr, ptr %23, align 8, !tbaa !5
  %418 = getelementptr inbounds %struct._json_value, ptr %417, i32 0, i32 2
  %419 = getelementptr inbounds %struct.anon, ptr %418, i32 0, i32 1
  %420 = load ptr, ptr %419, align 8, !tbaa !11
  %421 = load ptr, ptr %23, align 8, !tbaa !5
  %422 = getelementptr inbounds %struct._json_value, ptr %421, i32 0, i32 2
  %423 = getelementptr inbounds %struct.anon, ptr %422, i32 0, i32 0
  %424 = load i32, ptr %423, align 8, !tbaa !11
  %425 = zext i32 %424 to i64
  %426 = load ptr, ptr %6, align 8, !tbaa !5
  %427 = getelementptr inbounds %struct.gravity_function_t, ptr %426, i32 0, i32 9
  %428 = getelementptr inbounds %struct.anon.5, ptr %427, i32 0, i32 3
  %429 = call ptr @gravity_bytecode_deserialize(ptr noundef %420, i64 noundef %425, ptr noundef %428)
  %430 = load ptr, ptr %6, align 8, !tbaa !5
  %431 = getelementptr inbounds %struct.gravity_function_t, ptr %430, i32 0, i32 9
  %432 = getelementptr inbounds %struct.anon.5, ptr %431, i32 0, i32 5
  store ptr %429, ptr %432, align 8, !tbaa !11
  br label %433

433:                                              ; preds = %416, %411
  br label %434

434:                                              ; preds = %433, %406
  %435 = load ptr, ptr %22, align 8, !tbaa !5
  %436 = load i64, ptr %24, align 8, !tbaa !17
  %437 = call i32 @string_casencmp(ptr noundef %435, ptr noundef @.str.39, i64 noundef %436)
  %438 = icmp eq i32 %437, 0
  br i1 %438, label %439, label %562

439:                                              ; preds = %434
  %440 = load ptr, ptr %23, align 8, !tbaa !5
  %441 = getelementptr inbounds %struct._json_value, ptr %440, i32 0, i32 1
  %442 = load i32, ptr %441, align 8, !tbaa !19
  %443 = icmp ne i32 %442, 2
  br i1 %443, label %444, label %445

444:                                              ; preds = %439
  store i32 5, ptr %21, align 4
  br label %1373

445:                                              ; preds = %439
  %446 = load ptr, ptr %6, align 8, !tbaa !5
  %447 = getelementptr inbounds %struct.gravity_function_t, ptr %446, i32 0, i32 8
  %448 = load i32, ptr %447, align 8, !tbaa !27
  %449 = icmp ne i32 %448, 0
  br i1 %449, label %450, label %451

450:                                              ; preds = %445
  store i32 5, ptr %21, align 4
  br label %1373

451:                                              ; preds = %445
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #7
  %452 = load ptr, ptr %23, align 8, !tbaa !5
  %453 = getelementptr inbounds %struct._json_value, ptr %452, i32 0, i32 2
  %454 = getelementptr inbounds %struct.anon.2, ptr %453, i32 0, i32 0
  %455 = load i32, ptr %454, align 8, !tbaa !11
  store i32 %455, ptr %27, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #7
  store i32 0, ptr %28, align 4, !tbaa !12
  br label %456

456:                                              ; preds = %553, %451
  %457 = load i32, ptr %28, align 4, !tbaa !12
  %458 = load i32, ptr %27, align 4, !tbaa !12
  %459 = icmp ult i32 %457, %458
  br i1 %459, label %461, label %460

460:                                              ; preds = %456
  store i32 6, ptr %21, align 4
  br label %556

461:                                              ; preds = %456
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #7
  %462 = load ptr, ptr %23, align 8, !tbaa !5
  %463 = getelementptr inbounds %struct._json_value, ptr %462, i32 0, i32 2
  %464 = getelementptr inbounds %struct.anon.2, ptr %463, i32 0, i32 1
  %465 = load ptr, ptr %464, align 8, !tbaa !11
  %466 = load i32, ptr %28, align 4, !tbaa !12
  %467 = zext i32 %466 to i64
  %468 = getelementptr inbounds ptr, ptr %465, i64 %467
  %469 = load ptr, ptr %468, align 8, !tbaa !5
  store ptr %469, ptr %29, align 8, !tbaa !5
  %470 = load ptr, ptr %29, align 8, !tbaa !5
  %471 = getelementptr inbounds %struct._json_value, ptr %470, i32 0, i32 1
  %472 = load i32, ptr %471, align 8, !tbaa !19
  %473 = icmp ne i32 %472, 5
  br i1 %473, label %474, label %475

474:                                              ; preds = %461
  store i32 5, ptr %21, align 4
  br label %550

475:                                              ; preds = %461
  %476 = load ptr, ptr %6, align 8, !tbaa !5
  %477 = getelementptr inbounds %struct.gravity_function_t, ptr %476, i32 0, i32 9
  %478 = getelementptr inbounds %struct.anon.5, ptr %477, i32 0, i32 2
  %479 = getelementptr inbounds %struct.gravity_value_r, ptr %478, i32 0, i32 0
  %480 = load i64, ptr %479, align 8, !tbaa !11
  %481 = load ptr, ptr %6, align 8, !tbaa !5
  %482 = getelementptr inbounds %struct.gravity_function_t, ptr %481, i32 0, i32 9
  %483 = getelementptr inbounds %struct.anon.5, ptr %482, i32 0, i32 2
  %484 = getelementptr inbounds %struct.gravity_value_r, ptr %483, i32 0, i32 1
  %485 = load i64, ptr %484, align 8, !tbaa !11
  %486 = icmp eq i64 %480, %485
  br i1 %486, label %487, label %524

487:                                              ; preds = %475
  %488 = load ptr, ptr %6, align 8, !tbaa !5
  %489 = getelementptr inbounds %struct.gravity_function_t, ptr %488, i32 0, i32 9
  %490 = getelementptr inbounds %struct.anon.5, ptr %489, i32 0, i32 2
  %491 = getelementptr inbounds %struct.gravity_value_r, ptr %490, i32 0, i32 1
  %492 = load i64, ptr %491, align 8, !tbaa !11
  %493 = icmp ne i64 %492, 0
  br i1 %493, label %494, label %501

494:                                              ; preds = %487
  %495 = load ptr, ptr %6, align 8, !tbaa !5
  %496 = getelementptr inbounds %struct.gravity_function_t, ptr %495, i32 0, i32 9
  %497 = getelementptr inbounds %struct.anon.5, ptr %496, i32 0, i32 2
  %498 = getelementptr inbounds %struct.gravity_value_r, ptr %497, i32 0, i32 1
  %499 = load i64, ptr %498, align 8, !tbaa !11
  %500 = shl i64 %499, 1
  br label %502

501:                                              ; preds = %487
  br label %502

502:                                              ; preds = %501, %494
  %503 = phi i64 [ %500, %494 ], [ 8, %501 ]
  %504 = load ptr, ptr %6, align 8, !tbaa !5
  %505 = getelementptr inbounds %struct.gravity_function_t, ptr %504, i32 0, i32 9
  %506 = getelementptr inbounds %struct.anon.5, ptr %505, i32 0, i32 2
  %507 = getelementptr inbounds %struct.gravity_value_r, ptr %506, i32 0, i32 1
  store i64 %503, ptr %507, align 8, !tbaa !11
  %508 = load ptr, ptr %6, align 8, !tbaa !5
  %509 = getelementptr inbounds %struct.gravity_function_t, ptr %508, i32 0, i32 9
  %510 = getelementptr inbounds %struct.anon.5, ptr %509, i32 0, i32 2
  %511 = getelementptr inbounds %struct.gravity_value_r, ptr %510, i32 0, i32 2
  %512 = load ptr, ptr %511, align 8, !tbaa !11
  %513 = load ptr, ptr %6, align 8, !tbaa !5
  %514 = getelementptr inbounds %struct.gravity_function_t, ptr %513, i32 0, i32 9
  %515 = getelementptr inbounds %struct.anon.5, ptr %514, i32 0, i32 2
  %516 = getelementptr inbounds %struct.gravity_value_r, ptr %515, i32 0, i32 1
  %517 = load i64, ptr %516, align 8, !tbaa !11
  %518 = mul i64 16, %517
  %519 = call ptr @realloc(ptr noundef %512, i64 noundef %518) #9
  %520 = load ptr, ptr %6, align 8, !tbaa !5
  %521 = getelementptr inbounds %struct.gravity_function_t, ptr %520, i32 0, i32 9
  %522 = getelementptr inbounds %struct.anon.5, ptr %521, i32 0, i32 2
  %523 = getelementptr inbounds %struct.gravity_value_r, ptr %522, i32 0, i32 2
  store ptr %519, ptr %523, align 8, !tbaa !11
  br label %524

524:                                              ; preds = %502, %475
  %525 = load ptr, ptr %6, align 8, !tbaa !5
  %526 = getelementptr inbounds %struct.gravity_function_t, ptr %525, i32 0, i32 9
  %527 = getelementptr inbounds %struct.anon.5, ptr %526, i32 0, i32 2
  %528 = getelementptr inbounds %struct.gravity_value_r, ptr %527, i32 0, i32 2
  %529 = load ptr, ptr %528, align 8, !tbaa !11
  %530 = load ptr, ptr %6, align 8, !tbaa !5
  %531 = getelementptr inbounds %struct.gravity_function_t, ptr %530, i32 0, i32 9
  %532 = getelementptr inbounds %struct.anon.5, ptr %531, i32 0, i32 2
  %533 = getelementptr inbounds %struct.gravity_value_r, ptr %532, i32 0, i32 0
  %534 = load i64, ptr %533, align 8, !tbaa !11
  %535 = add i64 %534, 1
  store i64 %535, ptr %533, align 8, !tbaa !11
  %536 = getelementptr inbounds %struct.gravity_value_t, ptr %529, i64 %534
  call void @llvm.lifetime.start.p0(i64 16, ptr %30) #7
  %537 = load ptr, ptr %29, align 8, !tbaa !5
  %538 = getelementptr inbounds %struct._json_value, ptr %537, i32 0, i32 2
  %539 = getelementptr inbounds %struct.anon, ptr %538, i32 0, i32 1
  %540 = load ptr, ptr %539, align 8, !tbaa !11
  %541 = load ptr, ptr %29, align 8, !tbaa !5
  %542 = getelementptr inbounds %struct._json_value, ptr %541, i32 0, i32 2
  %543 = getelementptr inbounds %struct.anon, ptr %542, i32 0, i32 0
  %544 = load i32, ptr %543, align 8, !tbaa !11
  %545 = call { ptr, i64 } @gravity_string_to_value(ptr noundef null, ptr noundef %540, i32 noundef %544)
  %546 = getelementptr inbounds { ptr, i64 }, ptr %30, i32 0, i32 0
  %547 = extractvalue { ptr, i64 } %545, 0
  store ptr %547, ptr %546, align 8
  %548 = getelementptr inbounds { ptr, i64 }, ptr %30, i32 0, i32 1
  %549 = extractvalue { ptr, i64 } %545, 1
  store i64 %549, ptr %548, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %536, ptr align 8 %30, i64 16, i1 false), !tbaa.struct !32
  call void @llvm.lifetime.end.p0(i64 16, ptr %30) #7
  store i32 0, ptr %21, align 4
  br label %550

550:                                              ; preds = %524, %474
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #7
  %551 = load i32, ptr %21, align 4
  switch i32 %551, label %556 [
    i32 0, label %552
  ]

552:                                              ; preds = %550
  br label %553

553:                                              ; preds = %552
  %554 = load i32, ptr %28, align 4, !tbaa !12
  %555 = add i32 %554, 1
  store i32 %555, ptr %28, align 4, !tbaa !12
  br label %456, !llvm.loop !33

556:                                              ; preds = %550, %460
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #7
  %557 = load i32, ptr %21, align 4
  switch i32 %557, label %559 [
    i32 6, label %558
  ]

558:                                              ; preds = %556
  store i32 0, ptr %21, align 4
  br label %559

559:                                              ; preds = %558, %556
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #7
  %560 = load i32, ptr %21, align 4
  switch i32 %560, label %1373 [
    i32 0, label %561
  ]

561:                                              ; preds = %559
  br label %562

562:                                              ; preds = %561, %434
  %563 = load ptr, ptr %22, align 8, !tbaa !5
  %564 = load i64, ptr %24, align 8, !tbaa !17
  %565 = call i32 @string_casencmp(ptr noundef %563, ptr noundef @.str.38, i64 noundef %564)
  %566 = icmp eq i32 %565, 0
  br i1 %566, label %567, label %1081

567:                                              ; preds = %562
  %568 = load ptr, ptr %23, align 8, !tbaa !5
  %569 = getelementptr inbounds %struct._json_value, ptr %568, i32 0, i32 1
  %570 = load i32, ptr %569, align 8, !tbaa !19
  %571 = icmp ne i32 %570, 2
  br i1 %571, label %572, label %573

572:                                              ; preds = %567
  store i32 5, ptr %21, align 4
  br label %1373

573:                                              ; preds = %567
  %574 = load ptr, ptr %6, align 8, !tbaa !5
  %575 = getelementptr inbounds %struct.gravity_function_t, ptr %574, i32 0, i32 8
  %576 = load i32, ptr %575, align 8, !tbaa !27
  %577 = icmp ne i32 %576, 0
  br i1 %577, label %578, label %579

578:                                              ; preds = %573
  store i32 5, ptr %21, align 4
  br label %1373

579:                                              ; preds = %573
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #7
  %580 = load ptr, ptr %23, align 8, !tbaa !5
  %581 = getelementptr inbounds %struct._json_value, ptr %580, i32 0, i32 2
  %582 = getelementptr inbounds %struct.anon.2, ptr %581, i32 0, i32 0
  %583 = load i32, ptr %582, align 8, !tbaa !11
  store i32 %583, ptr %31, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #7
  store i32 0, ptr %32, align 4, !tbaa !12
  br label %584

584:                                              ; preds = %1077, %579
  %585 = load i32, ptr %32, align 4, !tbaa !12
  %586 = load i32, ptr %31, align 4, !tbaa !12
  %587 = icmp ult i32 %585, %586
  br i1 %587, label %589, label %588

588:                                              ; preds = %584
  store i32 9, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #7
  br label %1080

589:                                              ; preds = %584
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #7
  %590 = load ptr, ptr %23, align 8, !tbaa !5
  %591 = getelementptr inbounds %struct._json_value, ptr %590, i32 0, i32 2
  %592 = getelementptr inbounds %struct.anon.2, ptr %591, i32 0, i32 1
  %593 = load ptr, ptr %592, align 8, !tbaa !11
  %594 = load i32, ptr %32, align 4, !tbaa !12
  %595 = zext i32 %594 to i64
  %596 = getelementptr inbounds ptr, ptr %593, i64 %595
  %597 = load ptr, ptr %596, align 8, !tbaa !5
  store ptr %597, ptr %33, align 8, !tbaa !5
  %598 = load ptr, ptr %33, align 8, !tbaa !5
  %599 = getelementptr inbounds %struct._json_value, ptr %598, i32 0, i32 1
  %600 = load i32, ptr %599, align 8, !tbaa !19
  switch i32 %600, label %1076 [
    i32 3, label %601
    i32 4, label %669
    i32 6, label %737
    i32 5, label %806
    i32 1, label %881
    i32 7, label %946
    i32 0, label %1011
    i32 2, label %1011
  ]

601:                                              ; preds = %589
  %602 = load ptr, ptr %6, align 8, !tbaa !5
  %603 = getelementptr inbounds %struct.gravity_function_t, ptr %602, i32 0, i32 9
  %604 = getelementptr inbounds %struct.anon.5, ptr %603, i32 0, i32 1
  %605 = getelementptr inbounds %struct.gravity_value_r, ptr %604, i32 0, i32 0
  %606 = load i64, ptr %605, align 8, !tbaa !11
  %607 = load ptr, ptr %6, align 8, !tbaa !5
  %608 = getelementptr inbounds %struct.gravity_function_t, ptr %607, i32 0, i32 9
  %609 = getelementptr inbounds %struct.anon.5, ptr %608, i32 0, i32 1
  %610 = getelementptr inbounds %struct.gravity_value_r, ptr %609, i32 0, i32 1
  %611 = load i64, ptr %610, align 8, !tbaa !11
  %612 = icmp eq i64 %606, %611
  br i1 %612, label %613, label %650

613:                                              ; preds = %601
  %614 = load ptr, ptr %6, align 8, !tbaa !5
  %615 = getelementptr inbounds %struct.gravity_function_t, ptr %614, i32 0, i32 9
  %616 = getelementptr inbounds %struct.anon.5, ptr %615, i32 0, i32 1
  %617 = getelementptr inbounds %struct.gravity_value_r, ptr %616, i32 0, i32 1
  %618 = load i64, ptr %617, align 8, !tbaa !11
  %619 = icmp ne i64 %618, 0
  br i1 %619, label %620, label %627

620:                                              ; preds = %613
  %621 = load ptr, ptr %6, align 8, !tbaa !5
  %622 = getelementptr inbounds %struct.gravity_function_t, ptr %621, i32 0, i32 9
  %623 = getelementptr inbounds %struct.anon.5, ptr %622, i32 0, i32 1
  %624 = getelementptr inbounds %struct.gravity_value_r, ptr %623, i32 0, i32 1
  %625 = load i64, ptr %624, align 8, !tbaa !11
  %626 = shl i64 %625, 1
  br label %628

627:                                              ; preds = %613
  br label %628

628:                                              ; preds = %627, %620
  %629 = phi i64 [ %626, %620 ], [ 8, %627 ]
  %630 = load ptr, ptr %6, align 8, !tbaa !5
  %631 = getelementptr inbounds %struct.gravity_function_t, ptr %630, i32 0, i32 9
  %632 = getelementptr inbounds %struct.anon.5, ptr %631, i32 0, i32 1
  %633 = getelementptr inbounds %struct.gravity_value_r, ptr %632, i32 0, i32 1
  store i64 %629, ptr %633, align 8, !tbaa !11
  %634 = load ptr, ptr %6, align 8, !tbaa !5
  %635 = getelementptr inbounds %struct.gravity_function_t, ptr %634, i32 0, i32 9
  %636 = getelementptr inbounds %struct.anon.5, ptr %635, i32 0, i32 1
  %637 = getelementptr inbounds %struct.gravity_value_r, ptr %636, i32 0, i32 2
  %638 = load ptr, ptr %637, align 8, !tbaa !11
  %639 = load ptr, ptr %6, align 8, !tbaa !5
  %640 = getelementptr inbounds %struct.gravity_function_t, ptr %639, i32 0, i32 9
  %641 = getelementptr inbounds %struct.anon.5, ptr %640, i32 0, i32 1
  %642 = getelementptr inbounds %struct.gravity_value_r, ptr %641, i32 0, i32 1
  %643 = load i64, ptr %642, align 8, !tbaa !11
  %644 = mul i64 16, %643
  %645 = call ptr @realloc(ptr noundef %638, i64 noundef %644) #9
  %646 = load ptr, ptr %6, align 8, !tbaa !5
  %647 = getelementptr inbounds %struct.gravity_function_t, ptr %646, i32 0, i32 9
  %648 = getelementptr inbounds %struct.anon.5, ptr %647, i32 0, i32 1
  %649 = getelementptr inbounds %struct.gravity_value_r, ptr %648, i32 0, i32 2
  store ptr %645, ptr %649, align 8, !tbaa !11
  br label %650

650:                                              ; preds = %628, %601
  %651 = load ptr, ptr %6, align 8, !tbaa !5
  %652 = getelementptr inbounds %struct.gravity_function_t, ptr %651, i32 0, i32 9
  %653 = getelementptr inbounds %struct.anon.5, ptr %652, i32 0, i32 1
  %654 = getelementptr inbounds %struct.gravity_value_r, ptr %653, i32 0, i32 2
  %655 = load ptr, ptr %654, align 8, !tbaa !11
  %656 = load ptr, ptr %6, align 8, !tbaa !5
  %657 = getelementptr inbounds %struct.gravity_function_t, ptr %656, i32 0, i32 9
  %658 = getelementptr inbounds %struct.anon.5, ptr %657, i32 0, i32 1
  %659 = getelementptr inbounds %struct.gravity_value_r, ptr %658, i32 0, i32 0
  %660 = load i64, ptr %659, align 8, !tbaa !11
  %661 = add i64 %660, 1
  store i64 %661, ptr %659, align 8, !tbaa !11
  %662 = getelementptr inbounds %struct.gravity_value_t, ptr %655, i64 %660
  %663 = getelementptr inbounds %struct.gravity_value_t, ptr %34, i32 0, i32 0
  %664 = load ptr, ptr @gravity_class_int, align 8, !tbaa !5
  store ptr %664, ptr %663, align 8, !tbaa !35
  %665 = getelementptr inbounds %struct.gravity_value_t, ptr %34, i32 0, i32 1
  %666 = load ptr, ptr %33, align 8, !tbaa !5
  %667 = getelementptr inbounds %struct._json_value, ptr %666, i32 0, i32 2
  %668 = load i64, ptr %667, align 8, !tbaa !11
  store i64 %668, ptr %665, align 8, !tbaa !11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %662, ptr align 8 %34, i64 16, i1 false), !tbaa.struct !32
  br label %1076

669:                                              ; preds = %589
  %670 = load ptr, ptr %6, align 8, !tbaa !5
  %671 = getelementptr inbounds %struct.gravity_function_t, ptr %670, i32 0, i32 9
  %672 = getelementptr inbounds %struct.anon.5, ptr %671, i32 0, i32 1
  %673 = getelementptr inbounds %struct.gravity_value_r, ptr %672, i32 0, i32 0
  %674 = load i64, ptr %673, align 8, !tbaa !11
  %675 = load ptr, ptr %6, align 8, !tbaa !5
  %676 = getelementptr inbounds %struct.gravity_function_t, ptr %675, i32 0, i32 9
  %677 = getelementptr inbounds %struct.anon.5, ptr %676, i32 0, i32 1
  %678 = getelementptr inbounds %struct.gravity_value_r, ptr %677, i32 0, i32 1
  %679 = load i64, ptr %678, align 8, !tbaa !11
  %680 = icmp eq i64 %674, %679
  br i1 %680, label %681, label %718

681:                                              ; preds = %669
  %682 = load ptr, ptr %6, align 8, !tbaa !5
  %683 = getelementptr inbounds %struct.gravity_function_t, ptr %682, i32 0, i32 9
  %684 = getelementptr inbounds %struct.anon.5, ptr %683, i32 0, i32 1
  %685 = getelementptr inbounds %struct.gravity_value_r, ptr %684, i32 0, i32 1
  %686 = load i64, ptr %685, align 8, !tbaa !11
  %687 = icmp ne i64 %686, 0
  br i1 %687, label %688, label %695

688:                                              ; preds = %681
  %689 = load ptr, ptr %6, align 8, !tbaa !5
  %690 = getelementptr inbounds %struct.gravity_function_t, ptr %689, i32 0, i32 9
  %691 = getelementptr inbounds %struct.anon.5, ptr %690, i32 0, i32 1
  %692 = getelementptr inbounds %struct.gravity_value_r, ptr %691, i32 0, i32 1
  %693 = load i64, ptr %692, align 8, !tbaa !11
  %694 = shl i64 %693, 1
  br label %696

695:                                              ; preds = %681
  br label %696

696:                                              ; preds = %695, %688
  %697 = phi i64 [ %694, %688 ], [ 8, %695 ]
  %698 = load ptr, ptr %6, align 8, !tbaa !5
  %699 = getelementptr inbounds %struct.gravity_function_t, ptr %698, i32 0, i32 9
  %700 = getelementptr inbounds %struct.anon.5, ptr %699, i32 0, i32 1
  %701 = getelementptr inbounds %struct.gravity_value_r, ptr %700, i32 0, i32 1
  store i64 %697, ptr %701, align 8, !tbaa !11
  %702 = load ptr, ptr %6, align 8, !tbaa !5
  %703 = getelementptr inbounds %struct.gravity_function_t, ptr %702, i32 0, i32 9
  %704 = getelementptr inbounds %struct.anon.5, ptr %703, i32 0, i32 1
  %705 = getelementptr inbounds %struct.gravity_value_r, ptr %704, i32 0, i32 2
  %706 = load ptr, ptr %705, align 8, !tbaa !11
  %707 = load ptr, ptr %6, align 8, !tbaa !5
  %708 = getelementptr inbounds %struct.gravity_function_t, ptr %707, i32 0, i32 9
  %709 = getelementptr inbounds %struct.anon.5, ptr %708, i32 0, i32 1
  %710 = getelementptr inbounds %struct.gravity_value_r, ptr %709, i32 0, i32 1
  %711 = load i64, ptr %710, align 8, !tbaa !11
  %712 = mul i64 16, %711
  %713 = call ptr @realloc(ptr noundef %706, i64 noundef %712) #9
  %714 = load ptr, ptr %6, align 8, !tbaa !5
  %715 = getelementptr inbounds %struct.gravity_function_t, ptr %714, i32 0, i32 9
  %716 = getelementptr inbounds %struct.anon.5, ptr %715, i32 0, i32 1
  %717 = getelementptr inbounds %struct.gravity_value_r, ptr %716, i32 0, i32 2
  store ptr %713, ptr %717, align 8, !tbaa !11
  br label %718

718:                                              ; preds = %696, %669
  %719 = load ptr, ptr %6, align 8, !tbaa !5
  %720 = getelementptr inbounds %struct.gravity_function_t, ptr %719, i32 0, i32 9
  %721 = getelementptr inbounds %struct.anon.5, ptr %720, i32 0, i32 1
  %722 = getelementptr inbounds %struct.gravity_value_r, ptr %721, i32 0, i32 2
  %723 = load ptr, ptr %722, align 8, !tbaa !11
  %724 = load ptr, ptr %6, align 8, !tbaa !5
  %725 = getelementptr inbounds %struct.gravity_function_t, ptr %724, i32 0, i32 9
  %726 = getelementptr inbounds %struct.anon.5, ptr %725, i32 0, i32 1
  %727 = getelementptr inbounds %struct.gravity_value_r, ptr %726, i32 0, i32 0
  %728 = load i64, ptr %727, align 8, !tbaa !11
  %729 = add i64 %728, 1
  store i64 %729, ptr %727, align 8, !tbaa !11
  %730 = getelementptr inbounds %struct.gravity_value_t, ptr %723, i64 %728
  %731 = getelementptr inbounds %struct.gravity_value_t, ptr %35, i32 0, i32 0
  %732 = load ptr, ptr @gravity_class_float, align 8, !tbaa !5
  store ptr %732, ptr %731, align 8, !tbaa !35
  %733 = getelementptr inbounds %struct.gravity_value_t, ptr %35, i32 0, i32 1
  %734 = load ptr, ptr %33, align 8, !tbaa !5
  %735 = getelementptr inbounds %struct._json_value, ptr %734, i32 0, i32 2
  %736 = load double, ptr %735, align 8, !tbaa !11
  store double %736, ptr %733, align 8, !tbaa !11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %730, ptr align 8 %35, i64 16, i1 false), !tbaa.struct !32
  br label %1076

737:                                              ; preds = %589
  %738 = load ptr, ptr %6, align 8, !tbaa !5
  %739 = getelementptr inbounds %struct.gravity_function_t, ptr %738, i32 0, i32 9
  %740 = getelementptr inbounds %struct.anon.5, ptr %739, i32 0, i32 1
  %741 = getelementptr inbounds %struct.gravity_value_r, ptr %740, i32 0, i32 0
  %742 = load i64, ptr %741, align 8, !tbaa !11
  %743 = load ptr, ptr %6, align 8, !tbaa !5
  %744 = getelementptr inbounds %struct.gravity_function_t, ptr %743, i32 0, i32 9
  %745 = getelementptr inbounds %struct.anon.5, ptr %744, i32 0, i32 1
  %746 = getelementptr inbounds %struct.gravity_value_r, ptr %745, i32 0, i32 1
  %747 = load i64, ptr %746, align 8, !tbaa !11
  %748 = icmp eq i64 %742, %747
  br i1 %748, label %749, label %786

749:                                              ; preds = %737
  %750 = load ptr, ptr %6, align 8, !tbaa !5
  %751 = getelementptr inbounds %struct.gravity_function_t, ptr %750, i32 0, i32 9
  %752 = getelementptr inbounds %struct.anon.5, ptr %751, i32 0, i32 1
  %753 = getelementptr inbounds %struct.gravity_value_r, ptr %752, i32 0, i32 1
  %754 = load i64, ptr %753, align 8, !tbaa !11
  %755 = icmp ne i64 %754, 0
  br i1 %755, label %756, label %763

756:                                              ; preds = %749
  %757 = load ptr, ptr %6, align 8, !tbaa !5
  %758 = getelementptr inbounds %struct.gravity_function_t, ptr %757, i32 0, i32 9
  %759 = getelementptr inbounds %struct.anon.5, ptr %758, i32 0, i32 1
  %760 = getelementptr inbounds %struct.gravity_value_r, ptr %759, i32 0, i32 1
  %761 = load i64, ptr %760, align 8, !tbaa !11
  %762 = shl i64 %761, 1
  br label %764

763:                                              ; preds = %749
  br label %764

764:                                              ; preds = %763, %756
  %765 = phi i64 [ %762, %756 ], [ 8, %763 ]
  %766 = load ptr, ptr %6, align 8, !tbaa !5
  %767 = getelementptr inbounds %struct.gravity_function_t, ptr %766, i32 0, i32 9
  %768 = getelementptr inbounds %struct.anon.5, ptr %767, i32 0, i32 1
  %769 = getelementptr inbounds %struct.gravity_value_r, ptr %768, i32 0, i32 1
  store i64 %765, ptr %769, align 8, !tbaa !11
  %770 = load ptr, ptr %6, align 8, !tbaa !5
  %771 = getelementptr inbounds %struct.gravity_function_t, ptr %770, i32 0, i32 9
  %772 = getelementptr inbounds %struct.anon.5, ptr %771, i32 0, i32 1
  %773 = getelementptr inbounds %struct.gravity_value_r, ptr %772, i32 0, i32 2
  %774 = load ptr, ptr %773, align 8, !tbaa !11
  %775 = load ptr, ptr %6, align 8, !tbaa !5
  %776 = getelementptr inbounds %struct.gravity_function_t, ptr %775, i32 0, i32 9
  %777 = getelementptr inbounds %struct.anon.5, ptr %776, i32 0, i32 1
  %778 = getelementptr inbounds %struct.gravity_value_r, ptr %777, i32 0, i32 1
  %779 = load i64, ptr %778, align 8, !tbaa !11
  %780 = mul i64 16, %779
  %781 = call ptr @realloc(ptr noundef %774, i64 noundef %780) #9
  %782 = load ptr, ptr %6, align 8, !tbaa !5
  %783 = getelementptr inbounds %struct.gravity_function_t, ptr %782, i32 0, i32 9
  %784 = getelementptr inbounds %struct.anon.5, ptr %783, i32 0, i32 1
  %785 = getelementptr inbounds %struct.gravity_value_r, ptr %784, i32 0, i32 2
  store ptr %781, ptr %785, align 8, !tbaa !11
  br label %786

786:                                              ; preds = %764, %737
  %787 = load ptr, ptr %6, align 8, !tbaa !5
  %788 = getelementptr inbounds %struct.gravity_function_t, ptr %787, i32 0, i32 9
  %789 = getelementptr inbounds %struct.anon.5, ptr %788, i32 0, i32 1
  %790 = getelementptr inbounds %struct.gravity_value_r, ptr %789, i32 0, i32 2
  %791 = load ptr, ptr %790, align 8, !tbaa !11
  %792 = load ptr, ptr %6, align 8, !tbaa !5
  %793 = getelementptr inbounds %struct.gravity_function_t, ptr %792, i32 0, i32 9
  %794 = getelementptr inbounds %struct.anon.5, ptr %793, i32 0, i32 1
  %795 = getelementptr inbounds %struct.gravity_value_r, ptr %794, i32 0, i32 0
  %796 = load i64, ptr %795, align 8, !tbaa !11
  %797 = add i64 %796, 1
  store i64 %797, ptr %795, align 8, !tbaa !11
  %798 = getelementptr inbounds %struct.gravity_value_t, ptr %791, i64 %796
  %799 = getelementptr inbounds %struct.gravity_value_t, ptr %36, i32 0, i32 0
  %800 = load ptr, ptr @gravity_class_bool, align 8, !tbaa !5
  store ptr %800, ptr %799, align 8, !tbaa !35
  %801 = getelementptr inbounds %struct.gravity_value_t, ptr %36, i32 0, i32 1
  %802 = load ptr, ptr %33, align 8, !tbaa !5
  %803 = getelementptr inbounds %struct._json_value, ptr %802, i32 0, i32 2
  %804 = load i32, ptr %803, align 8, !tbaa !11
  %805 = sext i32 %804 to i64
  store i64 %805, ptr %801, align 8, !tbaa !11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %798, ptr align 8 %36, i64 16, i1 false), !tbaa.struct !32
  br label %1076

806:                                              ; preds = %589
  %807 = load ptr, ptr %6, align 8, !tbaa !5
  %808 = getelementptr inbounds %struct.gravity_function_t, ptr %807, i32 0, i32 9
  %809 = getelementptr inbounds %struct.anon.5, ptr %808, i32 0, i32 1
  %810 = getelementptr inbounds %struct.gravity_value_r, ptr %809, i32 0, i32 0
  %811 = load i64, ptr %810, align 8, !tbaa !11
  %812 = load ptr, ptr %6, align 8, !tbaa !5
  %813 = getelementptr inbounds %struct.gravity_function_t, ptr %812, i32 0, i32 9
  %814 = getelementptr inbounds %struct.anon.5, ptr %813, i32 0, i32 1
  %815 = getelementptr inbounds %struct.gravity_value_r, ptr %814, i32 0, i32 1
  %816 = load i64, ptr %815, align 8, !tbaa !11
  %817 = icmp eq i64 %811, %816
  br i1 %817, label %818, label %855

818:                                              ; preds = %806
  %819 = load ptr, ptr %6, align 8, !tbaa !5
  %820 = getelementptr inbounds %struct.gravity_function_t, ptr %819, i32 0, i32 9
  %821 = getelementptr inbounds %struct.anon.5, ptr %820, i32 0, i32 1
  %822 = getelementptr inbounds %struct.gravity_value_r, ptr %821, i32 0, i32 1
  %823 = load i64, ptr %822, align 8, !tbaa !11
  %824 = icmp ne i64 %823, 0
  br i1 %824, label %825, label %832

825:                                              ; preds = %818
  %826 = load ptr, ptr %6, align 8, !tbaa !5
  %827 = getelementptr inbounds %struct.gravity_function_t, ptr %826, i32 0, i32 9
  %828 = getelementptr inbounds %struct.anon.5, ptr %827, i32 0, i32 1
  %829 = getelementptr inbounds %struct.gravity_value_r, ptr %828, i32 0, i32 1
  %830 = load i64, ptr %829, align 8, !tbaa !11
  %831 = shl i64 %830, 1
  br label %833

832:                                              ; preds = %818
  br label %833

833:                                              ; preds = %832, %825
  %834 = phi i64 [ %831, %825 ], [ 8, %832 ]
  %835 = load ptr, ptr %6, align 8, !tbaa !5
  %836 = getelementptr inbounds %struct.gravity_function_t, ptr %835, i32 0, i32 9
  %837 = getelementptr inbounds %struct.anon.5, ptr %836, i32 0, i32 1
  %838 = getelementptr inbounds %struct.gravity_value_r, ptr %837, i32 0, i32 1
  store i64 %834, ptr %838, align 8, !tbaa !11
  %839 = load ptr, ptr %6, align 8, !tbaa !5
  %840 = getelementptr inbounds %struct.gravity_function_t, ptr %839, i32 0, i32 9
  %841 = getelementptr inbounds %struct.anon.5, ptr %840, i32 0, i32 1
  %842 = getelementptr inbounds %struct.gravity_value_r, ptr %841, i32 0, i32 2
  %843 = load ptr, ptr %842, align 8, !tbaa !11
  %844 = load ptr, ptr %6, align 8, !tbaa !5
  %845 = getelementptr inbounds %struct.gravity_function_t, ptr %844, i32 0, i32 9
  %846 = getelementptr inbounds %struct.anon.5, ptr %845, i32 0, i32 1
  %847 = getelementptr inbounds %struct.gravity_value_r, ptr %846, i32 0, i32 1
  %848 = load i64, ptr %847, align 8, !tbaa !11
  %849 = mul i64 16, %848
  %850 = call ptr @realloc(ptr noundef %843, i64 noundef %849) #9
  %851 = load ptr, ptr %6, align 8, !tbaa !5
  %852 = getelementptr inbounds %struct.gravity_function_t, ptr %851, i32 0, i32 9
  %853 = getelementptr inbounds %struct.anon.5, ptr %852, i32 0, i32 1
  %854 = getelementptr inbounds %struct.gravity_value_r, ptr %853, i32 0, i32 2
  store ptr %850, ptr %854, align 8, !tbaa !11
  br label %855

855:                                              ; preds = %833, %806
  %856 = load ptr, ptr %6, align 8, !tbaa !5
  %857 = getelementptr inbounds %struct.gravity_function_t, ptr %856, i32 0, i32 9
  %858 = getelementptr inbounds %struct.anon.5, ptr %857, i32 0, i32 1
  %859 = getelementptr inbounds %struct.gravity_value_r, ptr %858, i32 0, i32 2
  %860 = load ptr, ptr %859, align 8, !tbaa !11
  %861 = load ptr, ptr %6, align 8, !tbaa !5
  %862 = getelementptr inbounds %struct.gravity_function_t, ptr %861, i32 0, i32 9
  %863 = getelementptr inbounds %struct.anon.5, ptr %862, i32 0, i32 1
  %864 = getelementptr inbounds %struct.gravity_value_r, ptr %863, i32 0, i32 0
  %865 = load i64, ptr %864, align 8, !tbaa !11
  %866 = add i64 %865, 1
  store i64 %866, ptr %864, align 8, !tbaa !11
  %867 = getelementptr inbounds %struct.gravity_value_t, ptr %860, i64 %865
  call void @llvm.lifetime.start.p0(i64 16, ptr %37) #7
  %868 = load ptr, ptr %33, align 8, !tbaa !5
  %869 = getelementptr inbounds %struct._json_value, ptr %868, i32 0, i32 2
  %870 = getelementptr inbounds %struct.anon, ptr %869, i32 0, i32 1
  %871 = load ptr, ptr %870, align 8, !tbaa !11
  %872 = load ptr, ptr %33, align 8, !tbaa !5
  %873 = getelementptr inbounds %struct._json_value, ptr %872, i32 0, i32 2
  %874 = getelementptr inbounds %struct.anon, ptr %873, i32 0, i32 0
  %875 = load i32, ptr %874, align 8, !tbaa !11
  %876 = call { ptr, i64 } @gravity_string_to_value(ptr noundef null, ptr noundef %871, i32 noundef %875)
  %877 = getelementptr inbounds { ptr, i64 }, ptr %37, i32 0, i32 0
  %878 = extractvalue { ptr, i64 } %876, 0
  store ptr %878, ptr %877, align 8
  %879 = getelementptr inbounds { ptr, i64 }, ptr %37, i32 0, i32 1
  %880 = extractvalue { ptr, i64 } %876, 1
  store i64 %880, ptr %879, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %867, ptr align 8 %37, i64 16, i1 false), !tbaa.struct !32
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #7
  br label %1076

881:                                              ; preds = %589
  %882 = load ptr, ptr %6, align 8, !tbaa !5
  %883 = getelementptr inbounds %struct.gravity_function_t, ptr %882, i32 0, i32 9
  %884 = getelementptr inbounds %struct.anon.5, ptr %883, i32 0, i32 1
  %885 = getelementptr inbounds %struct.gravity_value_r, ptr %884, i32 0, i32 0
  %886 = load i64, ptr %885, align 8, !tbaa !11
  %887 = load ptr, ptr %6, align 8, !tbaa !5
  %888 = getelementptr inbounds %struct.gravity_function_t, ptr %887, i32 0, i32 9
  %889 = getelementptr inbounds %struct.anon.5, ptr %888, i32 0, i32 1
  %890 = getelementptr inbounds %struct.gravity_value_r, ptr %889, i32 0, i32 1
  %891 = load i64, ptr %890, align 8, !tbaa !11
  %892 = icmp eq i64 %886, %891
  br i1 %892, label %893, label %930

893:                                              ; preds = %881
  %894 = load ptr, ptr %6, align 8, !tbaa !5
  %895 = getelementptr inbounds %struct.gravity_function_t, ptr %894, i32 0, i32 9
  %896 = getelementptr inbounds %struct.anon.5, ptr %895, i32 0, i32 1
  %897 = getelementptr inbounds %struct.gravity_value_r, ptr %896, i32 0, i32 1
  %898 = load i64, ptr %897, align 8, !tbaa !11
  %899 = icmp ne i64 %898, 0
  br i1 %899, label %900, label %907

900:                                              ; preds = %893
  %901 = load ptr, ptr %6, align 8, !tbaa !5
  %902 = getelementptr inbounds %struct.gravity_function_t, ptr %901, i32 0, i32 9
  %903 = getelementptr inbounds %struct.anon.5, ptr %902, i32 0, i32 1
  %904 = getelementptr inbounds %struct.gravity_value_r, ptr %903, i32 0, i32 1
  %905 = load i64, ptr %904, align 8, !tbaa !11
  %906 = shl i64 %905, 1
  br label %908

907:                                              ; preds = %893
  br label %908

908:                                              ; preds = %907, %900
  %909 = phi i64 [ %906, %900 ], [ 8, %907 ]
  %910 = load ptr, ptr %6, align 8, !tbaa !5
  %911 = getelementptr inbounds %struct.gravity_function_t, ptr %910, i32 0, i32 9
  %912 = getelementptr inbounds %struct.anon.5, ptr %911, i32 0, i32 1
  %913 = getelementptr inbounds %struct.gravity_value_r, ptr %912, i32 0, i32 1
  store i64 %909, ptr %913, align 8, !tbaa !11
  %914 = load ptr, ptr %6, align 8, !tbaa !5
  %915 = getelementptr inbounds %struct.gravity_function_t, ptr %914, i32 0, i32 9
  %916 = getelementptr inbounds %struct.anon.5, ptr %915, i32 0, i32 1
  %917 = getelementptr inbounds %struct.gravity_value_r, ptr %916, i32 0, i32 2
  %918 = load ptr, ptr %917, align 8, !tbaa !11
  %919 = load ptr, ptr %6, align 8, !tbaa !5
  %920 = getelementptr inbounds %struct.gravity_function_t, ptr %919, i32 0, i32 9
  %921 = getelementptr inbounds %struct.anon.5, ptr %920, i32 0, i32 1
  %922 = getelementptr inbounds %struct.gravity_value_r, ptr %921, i32 0, i32 1
  %923 = load i64, ptr %922, align 8, !tbaa !11
  %924 = mul i64 16, %923
  %925 = call ptr @realloc(ptr noundef %918, i64 noundef %924) #9
  %926 = load ptr, ptr %6, align 8, !tbaa !5
  %927 = getelementptr inbounds %struct.gravity_function_t, ptr %926, i32 0, i32 9
  %928 = getelementptr inbounds %struct.anon.5, ptr %927, i32 0, i32 1
  %929 = getelementptr inbounds %struct.gravity_value_r, ptr %928, i32 0, i32 2
  store ptr %925, ptr %929, align 8, !tbaa !11
  br label %930

930:                                              ; preds = %908, %881
  %931 = load ptr, ptr %6, align 8, !tbaa !5
  %932 = getelementptr inbounds %struct.gravity_function_t, ptr %931, i32 0, i32 9
  %933 = getelementptr inbounds %struct.anon.5, ptr %932, i32 0, i32 1
  %934 = getelementptr inbounds %struct.gravity_value_r, ptr %933, i32 0, i32 2
  %935 = load ptr, ptr %934, align 8, !tbaa !11
  %936 = load ptr, ptr %6, align 8, !tbaa !5
  %937 = getelementptr inbounds %struct.gravity_function_t, ptr %936, i32 0, i32 9
  %938 = getelementptr inbounds %struct.anon.5, ptr %937, i32 0, i32 1
  %939 = getelementptr inbounds %struct.gravity_value_r, ptr %938, i32 0, i32 0
  %940 = load i64, ptr %939, align 8, !tbaa !11
  %941 = add i64 %940, 1
  store i64 %941, ptr %939, align 8, !tbaa !11
  %942 = getelementptr inbounds %struct.gravity_value_t, ptr %935, i64 %940
  %943 = getelementptr inbounds %struct.gravity_value_t, ptr %38, i32 0, i32 0
  %944 = load ptr, ptr @gravity_class_null, align 8, !tbaa !5
  store ptr %944, ptr %943, align 8, !tbaa !35
  %945 = getelementptr inbounds %struct.gravity_value_t, ptr %38, i32 0, i32 1
  store i64 1, ptr %945, align 8, !tbaa !11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %942, ptr align 8 %38, i64 16, i1 false), !tbaa.struct !32
  br label %1076

946:                                              ; preds = %589
  %947 = load ptr, ptr %6, align 8, !tbaa !5
  %948 = getelementptr inbounds %struct.gravity_function_t, ptr %947, i32 0, i32 9
  %949 = getelementptr inbounds %struct.anon.5, ptr %948, i32 0, i32 1
  %950 = getelementptr inbounds %struct.gravity_value_r, ptr %949, i32 0, i32 0
  %951 = load i64, ptr %950, align 8, !tbaa !11
  %952 = load ptr, ptr %6, align 8, !tbaa !5
  %953 = getelementptr inbounds %struct.gravity_function_t, ptr %952, i32 0, i32 9
  %954 = getelementptr inbounds %struct.anon.5, ptr %953, i32 0, i32 1
  %955 = getelementptr inbounds %struct.gravity_value_r, ptr %954, i32 0, i32 1
  %956 = load i64, ptr %955, align 8, !tbaa !11
  %957 = icmp eq i64 %951, %956
  br i1 %957, label %958, label %995

958:                                              ; preds = %946
  %959 = load ptr, ptr %6, align 8, !tbaa !5
  %960 = getelementptr inbounds %struct.gravity_function_t, ptr %959, i32 0, i32 9
  %961 = getelementptr inbounds %struct.anon.5, ptr %960, i32 0, i32 1
  %962 = getelementptr inbounds %struct.gravity_value_r, ptr %961, i32 0, i32 1
  %963 = load i64, ptr %962, align 8, !tbaa !11
  %964 = icmp ne i64 %963, 0
  br i1 %964, label %965, label %972

965:                                              ; preds = %958
  %966 = load ptr, ptr %6, align 8, !tbaa !5
  %967 = getelementptr inbounds %struct.gravity_function_t, ptr %966, i32 0, i32 9
  %968 = getelementptr inbounds %struct.anon.5, ptr %967, i32 0, i32 1
  %969 = getelementptr inbounds %struct.gravity_value_r, ptr %968, i32 0, i32 1
  %970 = load i64, ptr %969, align 8, !tbaa !11
  %971 = shl i64 %970, 1
  br label %973

972:                                              ; preds = %958
  br label %973

973:                                              ; preds = %972, %965
  %974 = phi i64 [ %971, %965 ], [ 8, %972 ]
  %975 = load ptr, ptr %6, align 8, !tbaa !5
  %976 = getelementptr inbounds %struct.gravity_function_t, ptr %975, i32 0, i32 9
  %977 = getelementptr inbounds %struct.anon.5, ptr %976, i32 0, i32 1
  %978 = getelementptr inbounds %struct.gravity_value_r, ptr %977, i32 0, i32 1
  store i64 %974, ptr %978, align 8, !tbaa !11
  %979 = load ptr, ptr %6, align 8, !tbaa !5
  %980 = getelementptr inbounds %struct.gravity_function_t, ptr %979, i32 0, i32 9
  %981 = getelementptr inbounds %struct.anon.5, ptr %980, i32 0, i32 1
  %982 = getelementptr inbounds %struct.gravity_value_r, ptr %981, i32 0, i32 2
  %983 = load ptr, ptr %982, align 8, !tbaa !11
  %984 = load ptr, ptr %6, align 8, !tbaa !5
  %985 = getelementptr inbounds %struct.gravity_function_t, ptr %984, i32 0, i32 9
  %986 = getelementptr inbounds %struct.anon.5, ptr %985, i32 0, i32 1
  %987 = getelementptr inbounds %struct.gravity_value_r, ptr %986, i32 0, i32 1
  %988 = load i64, ptr %987, align 8, !tbaa !11
  %989 = mul i64 16, %988
  %990 = call ptr @realloc(ptr noundef %983, i64 noundef %989) #9
  %991 = load ptr, ptr %6, align 8, !tbaa !5
  %992 = getelementptr inbounds %struct.gravity_function_t, ptr %991, i32 0, i32 9
  %993 = getelementptr inbounds %struct.anon.5, ptr %992, i32 0, i32 1
  %994 = getelementptr inbounds %struct.gravity_value_r, ptr %993, i32 0, i32 2
  store ptr %990, ptr %994, align 8, !tbaa !11
  br label %995

995:                                              ; preds = %973, %946
  %996 = load ptr, ptr %6, align 8, !tbaa !5
  %997 = getelementptr inbounds %struct.gravity_function_t, ptr %996, i32 0, i32 9
  %998 = getelementptr inbounds %struct.anon.5, ptr %997, i32 0, i32 1
  %999 = getelementptr inbounds %struct.gravity_value_r, ptr %998, i32 0, i32 2
  %1000 = load ptr, ptr %999, align 8, !tbaa !11
  %1001 = load ptr, ptr %6, align 8, !tbaa !5
  %1002 = getelementptr inbounds %struct.gravity_function_t, ptr %1001, i32 0, i32 9
  %1003 = getelementptr inbounds %struct.anon.5, ptr %1002, i32 0, i32 1
  %1004 = getelementptr inbounds %struct.gravity_value_r, ptr %1003, i32 0, i32 0
  %1005 = load i64, ptr %1004, align 8, !tbaa !11
  %1006 = add i64 %1005, 1
  store i64 %1006, ptr %1004, align 8, !tbaa !11
  %1007 = getelementptr inbounds %struct.gravity_value_t, ptr %1000, i64 %1005
  %1008 = getelementptr inbounds %struct.gravity_value_t, ptr %39, i32 0, i32 0
  %1009 = load ptr, ptr @gravity_class_null, align 8, !tbaa !5
  store ptr %1009, ptr %1008, align 8, !tbaa !35
  %1010 = getelementptr inbounds %struct.gravity_value_t, ptr %39, i32 0, i32 1
  store i64 0, ptr %1010, align 8, !tbaa !11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1007, ptr align 8 %39, i64 16, i1 false), !tbaa.struct !32
  br label %1076

1011:                                             ; preds = %589, %589
  %1012 = load ptr, ptr %6, align 8, !tbaa !5
  %1013 = getelementptr inbounds %struct.gravity_function_t, ptr %1012, i32 0, i32 9
  %1014 = getelementptr inbounds %struct.anon.5, ptr %1013, i32 0, i32 1
  %1015 = getelementptr inbounds %struct.gravity_value_r, ptr %1014, i32 0, i32 0
  %1016 = load i64, ptr %1015, align 8, !tbaa !11
  %1017 = load ptr, ptr %6, align 8, !tbaa !5
  %1018 = getelementptr inbounds %struct.gravity_function_t, ptr %1017, i32 0, i32 9
  %1019 = getelementptr inbounds %struct.anon.5, ptr %1018, i32 0, i32 1
  %1020 = getelementptr inbounds %struct.gravity_value_r, ptr %1019, i32 0, i32 1
  %1021 = load i64, ptr %1020, align 8, !tbaa !11
  %1022 = icmp eq i64 %1016, %1021
  br i1 %1022, label %1023, label %1060

1023:                                             ; preds = %1011
  %1024 = load ptr, ptr %6, align 8, !tbaa !5
  %1025 = getelementptr inbounds %struct.gravity_function_t, ptr %1024, i32 0, i32 9
  %1026 = getelementptr inbounds %struct.anon.5, ptr %1025, i32 0, i32 1
  %1027 = getelementptr inbounds %struct.gravity_value_r, ptr %1026, i32 0, i32 1
  %1028 = load i64, ptr %1027, align 8, !tbaa !11
  %1029 = icmp ne i64 %1028, 0
  br i1 %1029, label %1030, label %1037

1030:                                             ; preds = %1023
  %1031 = load ptr, ptr %6, align 8, !tbaa !5
  %1032 = getelementptr inbounds %struct.gravity_function_t, ptr %1031, i32 0, i32 9
  %1033 = getelementptr inbounds %struct.anon.5, ptr %1032, i32 0, i32 1
  %1034 = getelementptr inbounds %struct.gravity_value_r, ptr %1033, i32 0, i32 1
  %1035 = load i64, ptr %1034, align 8, !tbaa !11
  %1036 = shl i64 %1035, 1
  br label %1038

1037:                                             ; preds = %1023
  br label %1038

1038:                                             ; preds = %1037, %1030
  %1039 = phi i64 [ %1036, %1030 ], [ 8, %1037 ]
  %1040 = load ptr, ptr %6, align 8, !tbaa !5
  %1041 = getelementptr inbounds %struct.gravity_function_t, ptr %1040, i32 0, i32 9
  %1042 = getelementptr inbounds %struct.anon.5, ptr %1041, i32 0, i32 1
  %1043 = getelementptr inbounds %struct.gravity_value_r, ptr %1042, i32 0, i32 1
  store i64 %1039, ptr %1043, align 8, !tbaa !11
  %1044 = load ptr, ptr %6, align 8, !tbaa !5
  %1045 = getelementptr inbounds %struct.gravity_function_t, ptr %1044, i32 0, i32 9
  %1046 = getelementptr inbounds %struct.anon.5, ptr %1045, i32 0, i32 1
  %1047 = getelementptr inbounds %struct.gravity_value_r, ptr %1046, i32 0, i32 2
  %1048 = load ptr, ptr %1047, align 8, !tbaa !11
  %1049 = load ptr, ptr %6, align 8, !tbaa !5
  %1050 = getelementptr inbounds %struct.gravity_function_t, ptr %1049, i32 0, i32 9
  %1051 = getelementptr inbounds %struct.anon.5, ptr %1050, i32 0, i32 1
  %1052 = getelementptr inbounds %struct.gravity_value_r, ptr %1051, i32 0, i32 1
  %1053 = load i64, ptr %1052, align 8, !tbaa !11
  %1054 = mul i64 16, %1053
  %1055 = call ptr @realloc(ptr noundef %1048, i64 noundef %1054) #9
  %1056 = load ptr, ptr %6, align 8, !tbaa !5
  %1057 = getelementptr inbounds %struct.gravity_function_t, ptr %1056, i32 0, i32 9
  %1058 = getelementptr inbounds %struct.anon.5, ptr %1057, i32 0, i32 1
  %1059 = getelementptr inbounds %struct.gravity_value_r, ptr %1058, i32 0, i32 2
  store ptr %1055, ptr %1059, align 8, !tbaa !11
  br label %1060

1060:                                             ; preds = %1038, %1011
  %1061 = load ptr, ptr %6, align 8, !tbaa !5
  %1062 = getelementptr inbounds %struct.gravity_function_t, ptr %1061, i32 0, i32 9
  %1063 = getelementptr inbounds %struct.anon.5, ptr %1062, i32 0, i32 1
  %1064 = getelementptr inbounds %struct.gravity_value_r, ptr %1063, i32 0, i32 2
  %1065 = load ptr, ptr %1064, align 8, !tbaa !11
  %1066 = load ptr, ptr %6, align 8, !tbaa !5
  %1067 = getelementptr inbounds %struct.gravity_function_t, ptr %1066, i32 0, i32 9
  %1068 = getelementptr inbounds %struct.anon.5, ptr %1067, i32 0, i32 1
  %1069 = getelementptr inbounds %struct.gravity_value_r, ptr %1068, i32 0, i32 0
  %1070 = load i64, ptr %1069, align 8, !tbaa !11
  %1071 = add i64 %1070, 1
  store i64 %1071, ptr %1069, align 8, !tbaa !11
  %1072 = getelementptr inbounds %struct.gravity_value_t, ptr %1065, i64 %1070
  %1073 = getelementptr inbounds %struct.gravity_value_t, ptr %40, i32 0, i32 0
  %1074 = load ptr, ptr @gravity_class_null, align 8, !tbaa !5
  store ptr %1074, ptr %1073, align 8, !tbaa !35
  %1075 = getelementptr inbounds %struct.gravity_value_t, ptr %40, i32 0, i32 1
  store i64 0, ptr %1075, align 8, !tbaa !11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1072, ptr align 8 %40, i64 16, i1 false), !tbaa.struct !32
  br label %1076

1076:                                             ; preds = %1060, %995, %930, %855, %786, %718, %650, %589
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #7
  br label %1077

1077:                                             ; preds = %1076
  %1078 = load i32, ptr %32, align 4, !tbaa !12
  %1079 = add i32 %1078, 1
  store i32 %1079, ptr %32, align 4, !tbaa !12
  br label %584, !llvm.loop !37

1080:                                             ; preds = %588
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #7
  br label %1081

1081:                                             ; preds = %1080, %562
  %1082 = load ptr, ptr %22, align 8, !tbaa !5
  %1083 = load i64, ptr %24, align 8, !tbaa !17
  %1084 = call i32 @string_casencmp(ptr noundef %1082, ptr noundef @.str.37, i64 noundef %1083)
  %1085 = icmp eq i32 %1084, 0
  br i1 %1085, label %1086, label %1372

1086:                                             ; preds = %1081
  %1087 = load ptr, ptr %23, align 8, !tbaa !5
  %1088 = getelementptr inbounds %struct._json_value, ptr %1087, i32 0, i32 1
  %1089 = load i32, ptr %1088, align 8, !tbaa !19
  %1090 = icmp ne i32 %1089, 2
  br i1 %1090, label %1091, label %1092

1091:                                             ; preds = %1086
  store i32 5, ptr %21, align 4
  br label %1373

1092:                                             ; preds = %1086
  %1093 = load ptr, ptr %6, align 8, !tbaa !5
  %1094 = getelementptr inbounds %struct.gravity_function_t, ptr %1093, i32 0, i32 8
  %1095 = load i32, ptr %1094, align 8, !tbaa !27
  %1096 = icmp ne i32 %1095, 0
  br i1 %1096, label %1097, label %1098

1097:                                             ; preds = %1092
  store i32 5, ptr %21, align 4
  br label %1373

1098:                                             ; preds = %1092
  %1099 = load i8, ptr %12, align 1, !tbaa !9, !range !21, !noundef !22
  %1100 = trunc i8 %1099 to i1
  br i1 %1100, label %1101, label %1102

1101:                                             ; preds = %1098
  store i32 5, ptr %21, align 4
  br label %1373

1102:                                             ; preds = %1098
  store i8 1, ptr %12, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #7
  %1103 = load ptr, ptr %23, align 8, !tbaa !5
  %1104 = getelementptr inbounds %struct._json_value, ptr %1103, i32 0, i32 2
  %1105 = getelementptr inbounds %struct.anon.2, ptr %1104, i32 0, i32 0
  %1106 = load i32, ptr %1105, align 8, !tbaa !11
  store i32 %1106, ptr %41, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #7
  store i32 0, ptr %42, align 4, !tbaa !12
  br label %1107

1107:                                             ; preds = %1363, %1102
  %1108 = load i32, ptr %42, align 4, !tbaa !12
  %1109 = load i32, ptr %41, align 4, !tbaa !12
  %1110 = icmp ult i32 %1108, %1109
  br i1 %1110, label %1112, label %1111

1111:                                             ; preds = %1107
  store i32 13, ptr %21, align 4
  br label %1366

1112:                                             ; preds = %1107
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #7
  %1113 = load ptr, ptr %23, align 8, !tbaa !5
  %1114 = getelementptr inbounds %struct._json_value, ptr %1113, i32 0, i32 2
  %1115 = getelementptr inbounds %struct.anon.2, ptr %1114, i32 0, i32 1
  %1116 = load ptr, ptr %1115, align 8, !tbaa !11
  %1117 = load i32, ptr %42, align 4, !tbaa !12
  %1118 = zext i32 %1117 to i64
  %1119 = getelementptr inbounds ptr, ptr %1116, i64 %1118
  %1120 = load ptr, ptr %1119, align 8, !tbaa !5
  store ptr %1120, ptr %43, align 8, !tbaa !5
  %1121 = load ptr, ptr %43, align 8, !tbaa !5
  %1122 = getelementptr inbounds %struct._json_value, ptr %1121, i32 0, i32 1
  %1123 = load i32, ptr %1122, align 8, !tbaa !19
  switch i32 %1123, label %1359 [
    i32 3, label %1124
    i32 4, label %1137
    i32 6, label %1150
    i32 5, label %1164
    i32 1, label %1185
    i32 2, label %1207
    i32 0, label %1349
    i32 7, label %1349
  ]

1124:                                             ; preds = %1112
  %1125 = load ptr, ptr %6, align 8, !tbaa !5
  %1126 = getelementptr inbounds %struct.gravity_value_t, ptr %44, i32 0, i32 0
  %1127 = load ptr, ptr @gravity_class_int, align 8, !tbaa !5
  store ptr %1127, ptr %1126, align 8, !tbaa !35
  %1128 = getelementptr inbounds %struct.gravity_value_t, ptr %44, i32 0, i32 1
  %1129 = load ptr, ptr %43, align 8, !tbaa !5
  %1130 = getelementptr inbounds %struct._json_value, ptr %1129, i32 0, i32 2
  %1131 = load i64, ptr %1130, align 8, !tbaa !11
  store i64 %1131, ptr %1128, align 8, !tbaa !11
  %1132 = getelementptr inbounds { ptr, i64 }, ptr %44, i32 0, i32 0
  %1133 = load ptr, ptr %1132, align 8
  %1134 = getelementptr inbounds { ptr, i64 }, ptr %44, i32 0, i32 1
  %1135 = load i64, ptr %1134, align 8
  %1136 = call zeroext i16 @gravity_function_cpool_add(ptr noundef null, ptr noundef %1125, ptr %1133, i64 %1135)
  br label %1359

1137:                                             ; preds = %1112
  %1138 = load ptr, ptr %6, align 8, !tbaa !5
  %1139 = getelementptr inbounds %struct.gravity_value_t, ptr %45, i32 0, i32 0
  %1140 = load ptr, ptr @gravity_class_float, align 8, !tbaa !5
  store ptr %1140, ptr %1139, align 8, !tbaa !35
  %1141 = getelementptr inbounds %struct.gravity_value_t, ptr %45, i32 0, i32 1
  %1142 = load ptr, ptr %43, align 8, !tbaa !5
  %1143 = getelementptr inbounds %struct._json_value, ptr %1142, i32 0, i32 2
  %1144 = load double, ptr %1143, align 8, !tbaa !11
  store double %1144, ptr %1141, align 8, !tbaa !11
  %1145 = getelementptr inbounds { ptr, i64 }, ptr %45, i32 0, i32 0
  %1146 = load ptr, ptr %1145, align 8
  %1147 = getelementptr inbounds { ptr, i64 }, ptr %45, i32 0, i32 1
  %1148 = load i64, ptr %1147, align 8
  %1149 = call zeroext i16 @gravity_function_cpool_add(ptr noundef null, ptr noundef %1138, ptr %1146, i64 %1148)
  br label %1359

1150:                                             ; preds = %1112
  %1151 = load ptr, ptr %6, align 8, !tbaa !5
  %1152 = getelementptr inbounds %struct.gravity_value_t, ptr %46, i32 0, i32 0
  %1153 = load ptr, ptr @gravity_class_bool, align 8, !tbaa !5
  store ptr %1153, ptr %1152, align 8, !tbaa !35
  %1154 = getelementptr inbounds %struct.gravity_value_t, ptr %46, i32 0, i32 1
  %1155 = load ptr, ptr %43, align 8, !tbaa !5
  %1156 = getelementptr inbounds %struct._json_value, ptr %1155, i32 0, i32 2
  %1157 = load i32, ptr %1156, align 8, !tbaa !11
  %1158 = sext i32 %1157 to i64
  store i64 %1158, ptr %1154, align 8, !tbaa !11
  %1159 = getelementptr inbounds { ptr, i64 }, ptr %46, i32 0, i32 0
  %1160 = load ptr, ptr %1159, align 8
  %1161 = getelementptr inbounds { ptr, i64 }, ptr %46, i32 0, i32 1
  %1162 = load i64, ptr %1161, align 8
  %1163 = call zeroext i16 @gravity_function_cpool_add(ptr noundef null, ptr noundef %1151, ptr %1160, i64 %1162)
  br label %1359

1164:                                             ; preds = %1112
  %1165 = load ptr, ptr %4, align 8, !tbaa !5
  %1166 = load ptr, ptr %6, align 8, !tbaa !5
  %1167 = load ptr, ptr %43, align 8, !tbaa !5
  %1168 = getelementptr inbounds %struct._json_value, ptr %1167, i32 0, i32 2
  %1169 = getelementptr inbounds %struct.anon, ptr %1168, i32 0, i32 1
  %1170 = load ptr, ptr %1169, align 8, !tbaa !11
  %1171 = load ptr, ptr %43, align 8, !tbaa !5
  %1172 = getelementptr inbounds %struct._json_value, ptr %1171, i32 0, i32 2
  %1173 = getelementptr inbounds %struct.anon, ptr %1172, i32 0, i32 0
  %1174 = load i32, ptr %1173, align 8, !tbaa !11
  %1175 = call { ptr, i64 } @gravity_string_to_value(ptr noundef null, ptr noundef %1170, i32 noundef %1174)
  %1176 = getelementptr inbounds { ptr, i64 }, ptr %47, i32 0, i32 0
  %1177 = extractvalue { ptr, i64 } %1175, 0
  store ptr %1177, ptr %1176, align 8
  %1178 = getelementptr inbounds { ptr, i64 }, ptr %47, i32 0, i32 1
  %1179 = extractvalue { ptr, i64 } %1175, 1
  store i64 %1179, ptr %1178, align 8
  %1180 = getelementptr inbounds { ptr, i64 }, ptr %47, i32 0, i32 0
  %1181 = load ptr, ptr %1180, align 8
  %1182 = getelementptr inbounds { ptr, i64 }, ptr %47, i32 0, i32 1
  %1183 = load i64, ptr %1182, align 8
  %1184 = call zeroext i16 @gravity_function_cpool_add(ptr noundef %1165, ptr noundef %1166, ptr %1181, i64 %1183)
  br label %1359

1185:                                             ; preds = %1112
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #7
  %1186 = load ptr, ptr %4, align 8, !tbaa !5
  %1187 = load ptr, ptr %43, align 8, !tbaa !5
  %1188 = call ptr @gravity_object_deserialize(ptr noundef %1186, ptr noundef %1187)
  store ptr %1188, ptr %48, align 8, !tbaa !5
  %1189 = load ptr, ptr %48, align 8, !tbaa !5
  %1190 = icmp ne ptr %1189, null
  br i1 %1190, label %1192, label %1191

1191:                                             ; preds = %1185
  store i32 5, ptr %21, align 4
  br label %1205

1192:                                             ; preds = %1185
  %1193 = load ptr, ptr %6, align 8, !tbaa !5
  %1194 = getelementptr inbounds %struct.gravity_value_t, ptr %49, i32 0, i32 0
  %1195 = load ptr, ptr %48, align 8, !tbaa !5
  %1196 = getelementptr inbounds %struct.gravity_class_s, ptr %1195, i32 0, i32 0
  %1197 = load ptr, ptr %1196, align 8, !tbaa !38
  store ptr %1197, ptr %1194, align 8, !tbaa !35
  %1198 = getelementptr inbounds %struct.gravity_value_t, ptr %49, i32 0, i32 1
  %1199 = load ptr, ptr %48, align 8, !tbaa !5
  store ptr %1199, ptr %1198, align 8, !tbaa !11
  %1200 = getelementptr inbounds { ptr, i64 }, ptr %49, i32 0, i32 0
  %1201 = load ptr, ptr %1200, align 8
  %1202 = getelementptr inbounds { ptr, i64 }, ptr %49, i32 0, i32 1
  %1203 = load i64, ptr %1202, align 8
  %1204 = call zeroext i16 @gravity_function_cpool_add(ptr noundef null, ptr noundef %1193, ptr %1201, i64 %1203)
  store i32 16, ptr %21, align 4
  br label %1205

1205:                                             ; preds = %1192, %1191
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #7
  %1206 = load i32, ptr %21, align 4
  switch i32 %1206, label %1360 [
    i32 16, label %1359
  ]

1207:                                             ; preds = %1112
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #7
  %1208 = load ptr, ptr %43, align 8, !tbaa !5
  %1209 = getelementptr inbounds %struct._json_value, ptr %1208, i32 0, i32 2
  %1210 = getelementptr inbounds %struct.anon.2, ptr %1209, i32 0, i32 0
  %1211 = load i32, ptr %1210, align 8, !tbaa !11
  store i32 %1211, ptr %50, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #7
  %1212 = load i32, ptr %50, align 4, !tbaa !12
  %1213 = call ptr @gravity_list_new(ptr noundef null, i32 noundef %1212)
  store ptr %1213, ptr %51, align 8, !tbaa !5
  %1214 = load ptr, ptr %51, align 8, !tbaa !5
  %1215 = icmp ne ptr %1214, null
  br i1 %1215, label %1217, label %1216

1216:                                             ; preds = %1207
  store i32 15, ptr %21, align 4
  br label %1347

1217:                                             ; preds = %1207
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #7
  store i32 0, ptr %52, align 4, !tbaa !12
  br label %1218

1218:                                             ; preds = %1328, %1217
  %1219 = load i32, ptr %52, align 4, !tbaa !12
  %1220 = load i32, ptr %50, align 4, !tbaa !12
  %1221 = icmp ult i32 %1219, %1220
  br i1 %1221, label %1223, label %1222

1222:                                             ; preds = %1218
  store i32 17, ptr %21, align 4
  br label %1331

1223:                                             ; preds = %1218
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #7
  %1224 = load ptr, ptr %43, align 8, !tbaa !5
  %1225 = getelementptr inbounds %struct._json_value, ptr %1224, i32 0, i32 2
  %1226 = getelementptr inbounds %struct.anon.2, ptr %1225, i32 0, i32 1
  %1227 = load ptr, ptr %1226, align 8, !tbaa !11
  %1228 = load i32, ptr %52, align 4, !tbaa !12
  %1229 = zext i32 %1228 to i64
  %1230 = getelementptr inbounds ptr, ptr %1227, i64 %1229
  %1231 = load ptr, ptr %1230, align 8, !tbaa !5
  store ptr %1231, ptr %53, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %54) #7
  %1232 = load ptr, ptr %53, align 8, !tbaa !5
  %1233 = getelementptr inbounds %struct._json_value, ptr %1232, i32 0, i32 1
  %1234 = load i32, ptr %1233, align 8, !tbaa !19
  switch i32 %1234, label %1272 [
    i32 3, label %1235
    i32 4, label %1242
    i32 6, label %1249
    i32 5, label %1257
  ]

1235:                                             ; preds = %1223
  %1236 = getelementptr inbounds %struct.gravity_value_t, ptr %55, i32 0, i32 0
  %1237 = load ptr, ptr @gravity_class_int, align 8, !tbaa !5
  store ptr %1237, ptr %1236, align 8, !tbaa !35
  %1238 = getelementptr inbounds %struct.gravity_value_t, ptr %55, i32 0, i32 1
  %1239 = load ptr, ptr %53, align 8, !tbaa !5
  %1240 = getelementptr inbounds %struct._json_value, ptr %1239, i32 0, i32 2
  %1241 = load i64, ptr %1240, align 8, !tbaa !11
  store i64 %1241, ptr %1238, align 8, !tbaa !11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %54, ptr align 8 %55, i64 16, i1 false), !tbaa.struct !32
  br label %1273

1242:                                             ; preds = %1223
  %1243 = getelementptr inbounds %struct.gravity_value_t, ptr %56, i32 0, i32 0
  %1244 = load ptr, ptr @gravity_class_float, align 8, !tbaa !5
  store ptr %1244, ptr %1243, align 8, !tbaa !35
  %1245 = getelementptr inbounds %struct.gravity_value_t, ptr %56, i32 0, i32 1
  %1246 = load ptr, ptr %53, align 8, !tbaa !5
  %1247 = getelementptr inbounds %struct._json_value, ptr %1246, i32 0, i32 2
  %1248 = load double, ptr %1247, align 8, !tbaa !11
  store double %1248, ptr %1245, align 8, !tbaa !11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %54, ptr align 8 %56, i64 16, i1 false), !tbaa.struct !32
  br label %1273

1249:                                             ; preds = %1223
  %1250 = getelementptr inbounds %struct.gravity_value_t, ptr %57, i32 0, i32 0
  %1251 = load ptr, ptr @gravity_class_bool, align 8, !tbaa !5
  store ptr %1251, ptr %1250, align 8, !tbaa !35
  %1252 = getelementptr inbounds %struct.gravity_value_t, ptr %57, i32 0, i32 1
  %1253 = load ptr, ptr %53, align 8, !tbaa !5
  %1254 = getelementptr inbounds %struct._json_value, ptr %1253, i32 0, i32 2
  %1255 = load i32, ptr %1254, align 8, !tbaa !11
  %1256 = sext i32 %1255 to i64
  store i64 %1256, ptr %1252, align 8, !tbaa !11
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %54, ptr align 8 %57, i64 16, i1 false), !tbaa.struct !32
  br label %1273

1257:                                             ; preds = %1223
  call void @llvm.lifetime.start.p0(i64 16, ptr %58) #7
  %1258 = load ptr, ptr %4, align 8, !tbaa !5
  %1259 = load ptr, ptr %53, align 8, !tbaa !5
  %1260 = getelementptr inbounds %struct._json_value, ptr %1259, i32 0, i32 2
  %1261 = getelementptr inbounds %struct.anon, ptr %1260, i32 0, i32 1
  %1262 = load ptr, ptr %1261, align 8, !tbaa !11
  %1263 = load ptr, ptr %53, align 8, !tbaa !5
  %1264 = getelementptr inbounds %struct._json_value, ptr %1263, i32 0, i32 2
  %1265 = getelementptr inbounds %struct.anon, ptr %1264, i32 0, i32 0
  %1266 = load i32, ptr %1265, align 8, !tbaa !11
  %1267 = call { ptr, i64 } @gravity_string_to_value(ptr noundef %1258, ptr noundef %1262, i32 noundef %1266)
  %1268 = getelementptr inbounds { ptr, i64 }, ptr %58, i32 0, i32 0
  %1269 = extractvalue { ptr, i64 } %1267, 0
  store ptr %1269, ptr %1268, align 8
  %1270 = getelementptr inbounds { ptr, i64 }, ptr %58, i32 0, i32 1
  %1271 = extractvalue { ptr, i64 } %1267, 1
  store i64 %1271, ptr %1270, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %54, ptr align 8 %58, i64 16, i1 false), !tbaa.struct !32
  call void @llvm.lifetime.end.p0(i64 16, ptr %58) #7
  br label %1273

1272:                                             ; preds = %1223
  store i32 5, ptr %21, align 4
  br label %1325

1273:                                             ; preds = %1257, %1249, %1242, %1235
  %1274 = load ptr, ptr %51, align 8, !tbaa !5
  %1275 = getelementptr inbounds %struct.gravity_list_t, ptr %1274, i32 0, i32 2
  %1276 = getelementptr inbounds %struct.gravity_value_r, ptr %1275, i32 0, i32 0
  %1277 = load i64, ptr %1276, align 8, !tbaa !40
  %1278 = load ptr, ptr %51, align 8, !tbaa !5
  %1279 = getelementptr inbounds %struct.gravity_list_t, ptr %1278, i32 0, i32 2
  %1280 = getelementptr inbounds %struct.gravity_value_r, ptr %1279, i32 0, i32 1
  %1281 = load i64, ptr %1280, align 8, !tbaa !43
  %1282 = icmp eq i64 %1277, %1281
  br i1 %1282, label %1283, label %1314

1283:                                             ; preds = %1273
  %1284 = load ptr, ptr %51, align 8, !tbaa !5
  %1285 = getelementptr inbounds %struct.gravity_list_t, ptr %1284, i32 0, i32 2
  %1286 = getelementptr inbounds %struct.gravity_value_r, ptr %1285, i32 0, i32 1
  %1287 = load i64, ptr %1286, align 8, !tbaa !43
  %1288 = icmp ne i64 %1287, 0
  br i1 %1288, label %1289, label %1295

1289:                                             ; preds = %1283
  %1290 = load ptr, ptr %51, align 8, !tbaa !5
  %1291 = getelementptr inbounds %struct.gravity_list_t, ptr %1290, i32 0, i32 2
  %1292 = getelementptr inbounds %struct.gravity_value_r, ptr %1291, i32 0, i32 1
  %1293 = load i64, ptr %1292, align 8, !tbaa !43
  %1294 = shl i64 %1293, 1
  br label %1296

1295:                                             ; preds = %1283
  br label %1296

1296:                                             ; preds = %1295, %1289
  %1297 = phi i64 [ %1294, %1289 ], [ 8, %1295 ]
  %1298 = load ptr, ptr %51, align 8, !tbaa !5
  %1299 = getelementptr inbounds %struct.gravity_list_t, ptr %1298, i32 0, i32 2
  %1300 = getelementptr inbounds %struct.gravity_value_r, ptr %1299, i32 0, i32 1
  store i64 %1297, ptr %1300, align 8, !tbaa !43
  %1301 = load ptr, ptr %51, align 8, !tbaa !5
  %1302 = getelementptr inbounds %struct.gravity_list_t, ptr %1301, i32 0, i32 2
  %1303 = getelementptr inbounds %struct.gravity_value_r, ptr %1302, i32 0, i32 2
  %1304 = load ptr, ptr %1303, align 8, !tbaa !44
  %1305 = load ptr, ptr %51, align 8, !tbaa !5
  %1306 = getelementptr inbounds %struct.gravity_list_t, ptr %1305, i32 0, i32 2
  %1307 = getelementptr inbounds %struct.gravity_value_r, ptr %1306, i32 0, i32 1
  %1308 = load i64, ptr %1307, align 8, !tbaa !43
  %1309 = mul i64 16, %1308
  %1310 = call ptr @realloc(ptr noundef %1304, i64 noundef %1309) #9
  %1311 = load ptr, ptr %51, align 8, !tbaa !5
  %1312 = getelementptr inbounds %struct.gravity_list_t, ptr %1311, i32 0, i32 2
  %1313 = getelementptr inbounds %struct.gravity_value_r, ptr %1312, i32 0, i32 2
  store ptr %1310, ptr %1313, align 8, !tbaa !44
  br label %1314

1314:                                             ; preds = %1296, %1273
  %1315 = load ptr, ptr %51, align 8, !tbaa !5
  %1316 = getelementptr inbounds %struct.gravity_list_t, ptr %1315, i32 0, i32 2
  %1317 = getelementptr inbounds %struct.gravity_value_r, ptr %1316, i32 0, i32 2
  %1318 = load ptr, ptr %1317, align 8, !tbaa !44
  %1319 = load ptr, ptr %51, align 8, !tbaa !5
  %1320 = getelementptr inbounds %struct.gravity_list_t, ptr %1319, i32 0, i32 2
  %1321 = getelementptr inbounds %struct.gravity_value_r, ptr %1320, i32 0, i32 0
  %1322 = load i64, ptr %1321, align 8, !tbaa !40
  %1323 = add i64 %1322, 1
  store i64 %1323, ptr %1321, align 8, !tbaa !40
  %1324 = getelementptr inbounds %struct.gravity_value_t, ptr %1318, i64 %1322
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1324, ptr align 8 %54, i64 16, i1 false), !tbaa.struct !32
  store i32 0, ptr %21, align 4
  br label %1325

1325:                                             ; preds = %1314, %1272
  call void @llvm.lifetime.end.p0(i64 16, ptr %54) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #7
  %1326 = load i32, ptr %21, align 4
  switch i32 %1326, label %1331 [
    i32 0, label %1327
  ]

1327:                                             ; preds = %1325
  br label %1328

1328:                                             ; preds = %1327
  %1329 = load i32, ptr %52, align 4, !tbaa !12
  %1330 = add i32 %1329, 1
  store i32 %1330, ptr %52, align 4, !tbaa !12
  br label %1218, !llvm.loop !45

1331:                                             ; preds = %1325, %1222
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #7
  %1332 = load i32, ptr %21, align 4
  switch i32 %1332, label %1347 [
    i32 17, label %1333
  ]

1333:                                             ; preds = %1331
  %1334 = load ptr, ptr %4, align 8, !tbaa !5
  %1335 = load ptr, ptr %6, align 8, !tbaa !5
  %1336 = getelementptr inbounds %struct.gravity_value_t, ptr %59, i32 0, i32 0
  %1337 = load ptr, ptr %51, align 8, !tbaa !5
  %1338 = getelementptr inbounds %struct.gravity_list_t, ptr %1337, i32 0, i32 0
  %1339 = load ptr, ptr %1338, align 8, !tbaa !46
  store ptr %1339, ptr %1336, align 8, !tbaa !35
  %1340 = getelementptr inbounds %struct.gravity_value_t, ptr %59, i32 0, i32 1
  %1341 = load ptr, ptr %51, align 8, !tbaa !5
  store ptr %1341, ptr %1340, align 8, !tbaa !11
  %1342 = getelementptr inbounds { ptr, i64 }, ptr %59, i32 0, i32 0
  %1343 = load ptr, ptr %1342, align 8
  %1344 = getelementptr inbounds { ptr, i64 }, ptr %59, i32 0, i32 1
  %1345 = load i64, ptr %1344, align 8
  %1346 = call zeroext i16 @gravity_function_cpool_add(ptr noundef %1334, ptr noundef %1335, ptr %1343, i64 %1345)
  store i32 16, ptr %21, align 4
  br label %1347

1347:                                             ; preds = %1333, %1331, %1216
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #7
  %1348 = load i32, ptr %21, align 4
  switch i32 %1348, label %1360 [
    i32 16, label %1359
  ]

1349:                                             ; preds = %1112, %1112
  %1350 = load ptr, ptr %6, align 8, !tbaa !5
  %1351 = getelementptr inbounds %struct.gravity_value_t, ptr %60, i32 0, i32 0
  %1352 = load ptr, ptr @gravity_class_null, align 8, !tbaa !5
  store ptr %1352, ptr %1351, align 8, !tbaa !35
  %1353 = getelementptr inbounds %struct.gravity_value_t, ptr %60, i32 0, i32 1
  store i64 0, ptr %1353, align 8, !tbaa !11
  %1354 = getelementptr inbounds { ptr, i64 }, ptr %60, i32 0, i32 0
  %1355 = load ptr, ptr %1354, align 8
  %1356 = getelementptr inbounds { ptr, i64 }, ptr %60, i32 0, i32 1
  %1357 = load i64, ptr %1356, align 8
  %1358 = call zeroext i16 @gravity_function_cpool_add(ptr noundef null, ptr noundef %1350, ptr %1355, i64 %1357)
  br label %1359

1359:                                             ; preds = %1349, %1347, %1205, %1164, %1150, %1137, %1124, %1112
  store i32 0, ptr %21, align 4
  br label %1360

1360:                                             ; preds = %1359, %1347, %1205
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #7
  %1361 = load i32, ptr %21, align 4
  switch i32 %1361, label %1366 [
    i32 0, label %1362
    i32 15, label %1363
  ]

1362:                                             ; preds = %1360
  br label %1363

1363:                                             ; preds = %1362, %1360
  %1364 = load i32, ptr %42, align 4, !tbaa !12
  %1365 = add i32 %1364, 1
  store i32 %1365, ptr %42, align 4, !tbaa !12
  br label %1107, !llvm.loop !47

1366:                                             ; preds = %1360, %1111
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #7
  %1367 = load i32, ptr %21, align 4
  switch i32 %1367, label %1369 [
    i32 13, label %1368
  ]

1368:                                             ; preds = %1366
  store i32 0, ptr %21, align 4
  br label %1369

1369:                                             ; preds = %1368, %1366
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #7
  %1370 = load i32, ptr %21, align 4
  switch i32 %1370, label %1373 [
    i32 0, label %1371
  ]

1371:                                             ; preds = %1369
  br label %1372

1372:                                             ; preds = %1371, %1081
  store i32 0, ptr %21, align 4
  br label %1373

1373:                                             ; preds = %1372, %1369, %1101, %1097, %1091, %578, %572, %559, %450, %444, %405, %387, %381, %355, %338, %337, %333, %316, %315, %311, %294, %293, %289, %272, %271, %267, %250, %249, %245, %234, %218, %214, %204, %188, %184, %167, %166, %162, %156, %138, %137, %133, %122, %106, %102
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #7
  %1374 = load i32, ptr %21, align 4
  switch i32 %1374, label %1379 [
    i32 0, label %1375
    i32 4, label %1376
  ]

1375:                                             ; preds = %1373
  br label %1376

1376:                                             ; preds = %1375, %1373
  %1377 = load i32, ptr %20, align 4, !tbaa !12
  %1378 = add i32 %1377, 1
  store i32 %1378, ptr %20, align 4, !tbaa !12
  br label %67, !llvm.loop !48

1379:                                             ; preds = %1373, %71
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #7
  %1380 = load i32, ptr %21, align 4
  switch i32 %1380, label %1384 [
    i32 2, label %1381
    i32 5, label %1383
  ]

1381:                                             ; preds = %1379
  %1382 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %1382, ptr %3, align 8
  store i32 1, ptr %21, align 4
  br label %1384

1383:                                             ; preds = %1379
  store ptr null, ptr %3, align 8
  store i32 1, ptr %21, align 4
  br label %1384

1384:                                             ; preds = %1383, %1381, %1379
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %9) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #7
  %1385 = load ptr, ptr %3, align 8
  ret ptr %1385
}

; Function Attrs: nounwind willreturn memory(read)
declare i32 @strncmp(ptr noundef, ptr noundef, i64 noundef) #4

; Function Attrs: nounwind uwtable
declare dso_local ptr @gravity_list_new(ptr noundef, i32 noundef) #5

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "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 = { inlinehint 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: readwrite) }
attributes #4 = { nounwind willreturn memory(read) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nounwind 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 #6 = { nounwind allocsize(1) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nounwind }
attributes #8 = { nounwind willreturn memory(read) }
attributes #9 = { nounwind allocsize(1) }

!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 = !{!"_Bool", !7, i64 0}
!11 = !{!7, !7, i64 0}
!12 = !{!13, !13, i64 0}
!13 = !{!"int", !7, i64 0}
!14 = !{!15, !6, i64 0}
!15 = !{!"_json_object_entry", !6, i64 0, !13, i64 8, !6, i64 16}
!16 = !{!15, !6, i64 16}
!17 = !{!18, !18, i64 0}
!18 = !{!"long", !7, i64 0}
!19 = !{!20, !13, i64 8}
!20 = !{!"_json_value", !6, i64 0, !13, i64 8, !7, i64 16, !7, i64 32}
!21 = !{i8 0, i8 2}
!22 = !{}
!23 = !{!24, !6, i64 56}
!24 = !{!"", !6, i64 0, !25, i64 8, !6, i64 48, !6, i64 56, !26, i64 64, !26, i64 66, !26, i64 68, !26, i64 70, !13, i64 72, !7, i64 80}
!25 = !{!"gravity_gc_s", !10, i64 0, !10, i64 1, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32}
!26 = !{!"short", !7, i64 0}
!27 = !{!24, !13, i64 72}
!28 = !{!24, !26, i64 64}
!29 = !{!24, !26, i64 66}
!30 = !{!24, !26, i64 68}
!31 = !{!24, !26, i64 70}
!32 = !{i64 0, i64 8, !5, i64 8, i64 8, !11}
!33 = distinct !{!33, !34}
!34 = !{!"llvm.loop.mustprogress"}
!35 = !{!36, !6, i64 0}
!36 = !{!"", !6, i64 0, !7, i64 8}
!37 = distinct !{!37, !34}
!38 = !{!39, !6, i64 0}
!39 = !{!"gravity_class_s", !6, i64 0, !25, i64 8, !6, i64 48, !6, i64 56, !10, i64 64, !10, i64 65, !10, i64 66, !10, i64 67, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !13, i64 104, !6, i64 112}
!40 = !{!41, !18, i64 48}
!41 = !{!"", !6, i64 0, !25, i64 8, !42, i64 48}
!42 = !{!"", !18, i64 0, !18, i64 8, !6, i64 16}
!43 = !{!41, !18, i64 56}
!44 = !{!41, !6, i64 64}
!45 = distinct !{!45, !34}
!46 = !{!41, !6, i64 0}
!47 = distinct !{!47, !34}
!48 = distinct !{!48, !34}


; 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_object_entry = type { ptr, i32, ptr }
%struct.gravity_value_t = type { ptr, %union.anon }
%union.anon = type { i64 }

@gravity_class_null = external local_unnamed_addr global ptr, align 8
@.str.7 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [7 x i8], align 1
@gravity_class_int = external local_unnamed_addr global ptr, align 8
@gravity_class_float = external local_unnamed_addr global ptr, align 8
@gravity_class_bool = external local_unnamed_addr global ptr, align 8

declare ptr @gravity_calloc(ptr noundef, i64 noundef, i64 noundef) local_unnamed_addr #0

declare ptr @string_dup(ptr noundef) local_unnamed_addr #0

; Function Attrs: inlinehint nounwind uwtable
declare dso_local { ptr, i64 } @gravity_string_to_value(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #1

declare i32 @string_casencmp(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #0

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i64 @strlen(ptr nocapture noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare dso_local ptr @gravity_object_deserialize(ptr noundef, ptr noundef) local_unnamed_addr #3

; Function Attrs: nounwind uwtable
declare dso_local ptr @gravity_closure_new(ptr noundef, ptr noundef) local_unnamed_addr #3

; Function Attrs: nounwind uwtable
declare dso_local ptr @gravity_function_new(ptr noundef, ptr noundef, i16 noundef zeroext, i16 noundef zeroext, i16 noundef zeroext, ptr noundef) local_unnamed_addr #3

; Function Attrs: nounwind uwtable
declare dso_local zeroext i16 @gravity_function_cpool_add(ptr noundef, ptr noundef, ptr, i64) local_unnamed_addr #3

; Function Attrs: mustprogress nounwind willreturn allockind("realloc") allocsize(1) memory(argmem: readwrite, inaccessiblemem: readwrite)
declare noalias noundef ptr @realloc(ptr allocptr nocapture noundef, i64 noundef) local_unnamed_addr #4

; Function Attrs: nounwind uwtable
declare dso_local ptr @gravity_bytecode_deserialize(ptr noundef, i64 noundef, ptr noundef) local_unnamed_addr #3

; Function Attrs: nounwind uwtable
define dso_local ptr @gravity_function_deserialize(ptr noundef %0, ptr nocapture noundef readonly %1) local_unnamed_addr #3 {
  %3 = tail call ptr @gravity_function_new(ptr noundef %0, ptr noundef null, i16 noundef zeroext 0, i16 noundef zeroext 0, i16 noundef zeroext 0, ptr noundef null)
  %4 = getelementptr inbounds i8, ptr %1, i64 16
  %5 = load i32, ptr %4, align 8, !tbaa !5
  %6 = icmp ugt i32 %5, 1
  br i1 %6, label %.lr.ph525, label %.thread484

.lr.ph525:                                        ; preds = %2
  %7 = getelementptr inbounds i8, ptr %1, i64 24
  %8 = getelementptr inbounds i8, ptr %3, i64 152
  %9 = getelementptr inbounds i8, ptr %3, i64 168
  %10 = getelementptr inbounds i8, ptr %3, i64 72
  %11 = getelementptr inbounds i8, ptr %3, i64 128
  %12 = getelementptr inbounds i8, ptr %3, i64 136
  %13 = getelementptr inbounds i8, ptr %3, i64 144
  %14 = getelementptr inbounds i8, ptr %3, i64 104
  %15 = getelementptr inbounds i8, ptr %3, i64 112
  %16 = getelementptr inbounds i8, ptr %3, i64 120
  %17 = getelementptr inbounds i8, ptr %3, i64 160
  %18 = getelementptr inbounds i8, ptr %3, i64 180
  %19 = getelementptr inbounds i8, ptr %3, i64 70
  %20 = getelementptr inbounds i8, ptr %3, i64 68
  %21 = getelementptr inbounds i8, ptr %3, i64 66
  %22 = getelementptr inbounds i8, ptr %3, i64 64
  %23 = getelementptr inbounds i8, ptr %3, i64 96
  %24 = getelementptr inbounds i8, ptr %3, i64 88
  %25 = getelementptr inbounds i8, ptr %3, i64 80
  %26 = getelementptr inbounds i8, ptr %3, i64 56
  %wide.trip.count595 = zext i32 %5 to i64
  br label %27

27:                                               ; preds = %.lr.ph525, %.thread458
  %indvars.iv593 = phi i64 [ 1, %.lr.ph525 ], [ %indvars.iv.next594, %.thread458 ]
  %.0323523 = phi i1 [ false, %.lr.ph525 ], [ %.1483, %.thread458 ]
  %.0324522 = phi i1 [ false, %.lr.ph525 ], [ %.2482, %.thread458 ]
  %.0326521 = phi i1 [ false, %.lr.ph525 ], [ %.2328481, %.thread458 ]
  %.0329520 = phi i1 [ false, %.lr.ph525 ], [ %.1330480, %.thread458 ]
  %.0331519 = phi i1 [ false, %.lr.ph525 ], [ %.1332479, %.thread458 ]
  %.0333518 = phi i1 [ false, %.lr.ph525 ], [ %.2335478, %.thread458 ]
  %.0336517 = phi i1 [ false, %.lr.ph525 ], [ %.1337477, %.thread458 ]
  %.0338516 = phi i1 [ false, %.lr.ph525 ], [ %.1339476, %.thread458 ]
  %.0340515 = phi i1 [ false, %.lr.ph525 ], [ %.1341475, %.thread458 ]
  %.0342514 = phi i1 [ false, %.lr.ph525 ], [ %.1343474, %.thread458 ]
  %.0344513 = phi i1 [ false, %.lr.ph525 ], [ %.1345473, %.thread458 ]
  %.0346512 = phi i1 [ false, %.lr.ph525 ], [ %.1347472, %.thread458 ]
  %28 = load ptr, ptr %7, align 8, !tbaa !5
  %29 = getelementptr inbounds %struct._json_object_entry, ptr %28, i64 %indvars.iv593
  %30 = load ptr, ptr %29, align 8, !tbaa !8
  %31 = getelementptr inbounds i8, ptr %29, i64 16
  %32 = load ptr, ptr %31, align 8, !tbaa !12
  %33 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %30) #5
  %34 = tail call i32 @string_casencmp(ptr noundef %30, ptr noundef nonnull @.str.7, i64 noundef %33) #6
  %35 = icmp eq i32 %34, 0
  br i1 %35, label %36, label %45

36:                                               ; preds = %27
  %37 = getelementptr inbounds i8, ptr %32, i64 8
  %38 = load i32, ptr %37, align 8, !tbaa !13
  %.not401 = icmp ne i32 %38, 5
  %brmerge = select i1 %.not401, i1 true, i1 %.0323523
  br i1 %brmerge, label %.thread484, label %39

39:                                               ; preds = %36
  %40 = getelementptr inbounds i8, ptr %32, i64 24
  %41 = load ptr, ptr %40, align 8, !tbaa !5
  %42 = tail call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %41, ptr noundef nonnull dereferenceable(1) @.str.21, i64 noundef 5) #5
  %.not402 = icmp eq i32 %42, 0
  br i1 %.not402, label %.thread458, label %43

43:                                               ; preds = %39
  %44 = tail call ptr @string_dup(ptr noundef %41) #6
  store ptr %44, ptr %26, align 8, !tbaa !15
  br label %.thread458

45:                                               ; preds = %27
  %46 = tail call i32 @string_casencmp(ptr noundef %30, ptr noundef nonnull @.str.30, i64 noundef %33) #6
  %47 = icmp eq i32 %46, 0
  br i1 %47, label %48, label %56

48:                                               ; preds = %45
  %49 = getelementptr inbounds i8, ptr %32, i64 8
  %50 = load i32, ptr %49, align 8, !tbaa !13
  %.not400 = icmp ne i32 %50, 3
  %brmerge490 = select i1 %.not400, i1 true, i1 %.0346512
  br i1 %brmerge490, label %.thread484, label %51

51:                                               ; preds = %48
  %52 = getelementptr inbounds i8, ptr %32, i64 16
  %53 = load i64, ptr %52, align 8, !tbaa !5
  %54 = trunc i64 %53 to i32
  %55 = and i32 %54, 65535
  store i32 %55, ptr %10, align 8, !tbaa !20
  br label %.thread458

56:                                               ; preds = %45
  %57 = tail call i32 @string_casencmp(ptr noundef %30, ptr noundef nonnull @.str.40, i64 noundef %33) #6
  %58 = icmp eq i32 %57, 0
  br i1 %58, label %59, label %68

59:                                               ; preds = %56
  %60 = getelementptr inbounds i8, ptr %32, i64 8
  %61 = load i32, ptr %60, align 8, !tbaa !13
  %.not398 = icmp eq i32 %61, 3
  br i1 %.not398, label %62, label %.thread484

62:                                               ; preds = %59
  %63 = load i32, ptr %10, align 8, !tbaa !20
  %.not399 = icmp ne i32 %63, 3
  %brmerge491 = select i1 %.not399, i1 true, i1 %.0329520
  br i1 %brmerge491, label %.thread484, label %64

64:                                               ; preds = %62
  %65 = getelementptr inbounds i8, ptr %32, i64 16
  %66 = load i64, ptr %65, align 8, !tbaa !5
  %67 = trunc i64 %66 to i16
  store i16 %67, ptr %25, align 8, !tbaa !5
  br label %.thread458

68:                                               ; preds = %56
  %69 = tail call i32 @string_casencmp(ptr noundef %30, ptr noundef nonnull @.str.41, i64 noundef 4) #6
  %70 = icmp eq i32 %69, 0
  br i1 %70, label %71, label %77

71:                                               ; preds = %68
  %72 = load i32, ptr %10, align 8, !tbaa !20
  %.not396 = icmp ne i32 %72, 3
  %brmerge492 = select i1 %.not396, i1 true, i1 %.0324522
  br i1 %brmerge492, label %.thread484, label %73

73:                                               ; preds = %71
  %74 = tail call ptr @gravity_function_deserialize(ptr noundef %0, ptr noundef %32)
  %.not397 = icmp eq ptr %74, null
  br i1 %.not397, label %.thread484, label %75

75:                                               ; preds = %73
  %76 = tail call ptr @gravity_closure_new(ptr noundef %0, ptr noundef nonnull %74)
  store ptr %76, ptr %24, align 8, !tbaa !5
  br label %.thread458

77:                                               ; preds = %68
  %78 = tail call i32 @string_casencmp(ptr noundef %30, ptr noundef nonnull @.str.42, i64 noundef 4) #6
  %79 = icmp eq i32 %78, 0
  br i1 %79, label %80, label %86

80:                                               ; preds = %77
  %81 = load i32, ptr %10, align 8, !tbaa !20
  %.not394 = icmp ne i32 %81, 3
  %brmerge493 = select i1 %.not394, i1 true, i1 %.0326521
  br i1 %brmerge493, label %.thread484, label %82

82:                                               ; preds = %80
  %83 = tail call ptr @gravity_function_deserialize(ptr noundef %0, ptr noundef %32)
  %.not395 = icmp eq ptr %83, null
  br i1 %.not395, label %.thread484, label %84

84:                                               ; preds = %82
  %85 = tail call ptr @gravity_closure_new(ptr noundef %0, ptr noundef nonnull %83)
  store ptr %85, ptr %23, align 8, !tbaa !5
  br label %.thread458

86:                                               ; preds = %77
  %87 = tail call i32 @string_casencmp(ptr noundef %30, ptr noundef nonnull @.str.31, i64 noundef %33) #6
  %88 = icmp eq i32 %87, 0
  br i1 %88, label %89, label %96

89:                                               ; preds = %86
  %90 = getelementptr inbounds i8, ptr %32, i64 8
  %91 = load i32, ptr %90, align 8, !tbaa !13
  %.not393 = icmp ne i32 %91, 3
  %brmerge494 = select i1 %.not393, i1 true, i1 %.0336517
  br i1 %brmerge494, label %.thread484, label %92

92:                                               ; preds = %89
  %93 = getelementptr inbounds i8, ptr %32, i64 16
  %94 = load i64, ptr %93, align 8, !tbaa !5
  %95 = trunc i64 %94 to i16
  store i16 %95, ptr %22, align 8, !tbaa !21
  br label %.thread458

96:                                               ; preds = %86
  %97 = tail call i32 @string_casencmp(ptr noundef %30, ptr noundef nonnull @.str.33, i64 noundef %33) #6
  %98 = icmp eq i32 %97, 0
  br i1 %98, label %99, label %106

99:                                               ; preds = %96
  %100 = getelementptr inbounds i8, ptr %32, i64 8
  %101 = load i32, ptr %100, align 8, !tbaa !13
  %.not392 = icmp ne i32 %101, 3
  %brmerge495 = select i1 %.not392, i1 true, i1 %.0338516
  br i1 %brmerge495, label %.thread484, label %102

102:                                              ; preds = %99
  %103 = getelementptr inbounds i8, ptr %32, i64 16
  %104 = load i64, ptr %103, align 8, !tbaa !5
  %105 = trunc i64 %104 to i16
  store i16 %105, ptr %21, align 2, !tbaa !22
  br label %.thread458

106:                                              ; preds = %96
  %107 = tail call i32 @string_casencmp(ptr noundef %30, ptr noundef nonnull @.str.34, i64 noundef %33) #6
  %108 = icmp eq i32 %107, 0
  br i1 %108, label %109, label %116

109:                                              ; preds = %106
  %110 = getelementptr inbounds i8, ptr %32, i64 8
  %111 = load i32, ptr %110, align 8, !tbaa !13
  %.not391 = icmp ne i32 %111, 3
  %brmerge496 = select i1 %.not391, i1 true, i1 %.0340515
  br i1 %brmerge496, label %.thread484, label %112

112:                                              ; preds = %109
  %113 = getelementptr inbounds i8, ptr %32, i64 16
  %114 = load i64, ptr %113, align 8, !tbaa !5
  %115 = trunc i64 %114 to i16
  store i16 %115, ptr %20, align 4, !tbaa !23
  br label %.thread458

116:                                              ; preds = %106
  %117 = tail call i32 @string_casencmp(ptr noundef %30, ptr noundef nonnull @.str.35, i64 noundef %33) #6
  %118 = icmp eq i32 %117, 0
  br i1 %118, label %119, label %126

119:                                              ; preds = %116
  %120 = getelementptr inbounds i8, ptr %32, i64 8
  %121 = load i32, ptr %120, align 8, !tbaa !13
  %.not390 = icmp ne i32 %121, 3
  %brmerge497 = select i1 %.not390, i1 true, i1 %.0342514
  br i1 %brmerge497, label %.thread484, label %122

122:                                              ; preds = %119
  %123 = getelementptr inbounds i8, ptr %32, i64 16
  %124 = load i64, ptr %123, align 8, !tbaa !5
  %125 = trunc i64 %124 to i16
  store i16 %125, ptr %19, align 2, !tbaa !24
  br label %.thread458

126:                                              ; preds = %116
  %127 = tail call i32 @string_casencmp(ptr noundef %30, ptr noundef nonnull @.str.32, i64 noundef %33) #6
  %128 = icmp eq i32 %127, 0
  br i1 %128, label %129, label %137

129:                                              ; preds = %126
  %130 = getelementptr inbounds i8, ptr %32, i64 8
  %131 = load i32, ptr %130, align 8, !tbaa !13
  %.not389 = icmp ne i32 %131, 6
  %brmerge498 = select i1 %.not389, i1 true, i1 %.0344513
  br i1 %brmerge498, label %.thread484, label %132

132:                                              ; preds = %129
  %133 = getelementptr inbounds i8, ptr %32, i64 16
  %134 = load i32, ptr %133, align 8, !tbaa !5
  %135 = icmp ne i32 %134, 0
  %136 = zext i1 %135 to i8
  store i8 %136, ptr %18, align 4, !tbaa !5
  br label %.thread458

137:                                              ; preds = %126
  %138 = tail call i32 @string_casencmp(ptr noundef %30, ptr noundef nonnull @.str.43, i64 noundef %33) #6
  %139 = icmp eq i32 %138, 0
  br i1 %139, label %140, label %155

140:                                              ; preds = %137
  br i1 %.0331519, label %.thread484, label %141

141:                                              ; preds = %140
  %142 = getelementptr inbounds i8, ptr %32, i64 8
  %143 = load i32, ptr %142, align 8, !tbaa !13
  switch i32 %143, label %.thread484 [
    i32 7, label %144
    i32 5, label %146
  ]

144:                                              ; preds = %141
  store i32 0, ptr %8, align 8, !tbaa !5
  %145 = tail call ptr @gravity_calloc(ptr noundef null, i64 noundef 1, i64 noundef 4) #6
  store ptr %145, ptr %17, align 8, !tbaa !5
  br label %.thread458

146:                                              ; preds = %141
  %147 = load i32, ptr %10, align 8, !tbaa !20
  %.not388 = icmp eq i32 %147, 0
  br i1 %.not388, label %148, label %.thread484

148:                                              ; preds = %146
  %149 = getelementptr inbounds i8, ptr %32, i64 16
  %150 = getelementptr inbounds i8, ptr %32, i64 24
  %151 = load ptr, ptr %150, align 8, !tbaa !5
  %152 = load i32, ptr %149, align 8, !tbaa !5
  %153 = zext i32 %152 to i64
  %154 = tail call ptr @gravity_bytecode_deserialize(ptr noundef %151, i64 noundef %153, ptr noundef nonnull %8)
  store ptr %154, ptr %17, align 8, !tbaa !5
  br label %.thread458

155:                                              ; preds = %137
  %156 = tail call i32 @string_casencmp(ptr noundef %30, ptr noundef nonnull @.str.44, i64 noundef %33) #6
  %157 = icmp eq i32 %156, 0
  br i1 %157, label %158, label %169

158:                                              ; preds = %155
  %159 = getelementptr inbounds i8, ptr %32, i64 8
  %160 = load i32, ptr %159, align 8, !tbaa !13
  %161 = icmp eq i32 %160, 5
  br i1 %161, label %162, label %169

162:                                              ; preds = %158
  %163 = getelementptr inbounds i8, ptr %32, i64 16
  %164 = getelementptr inbounds i8, ptr %32, i64 24
  %165 = load ptr, ptr %164, align 8, !tbaa !5
  %166 = load i32, ptr %163, align 8, !tbaa !5
  %167 = zext i32 %166 to i64
  %168 = tail call ptr @gravity_bytecode_deserialize(ptr noundef %165, i64 noundef %167, ptr noundef nonnull %8)
  store ptr %168, ptr %9, align 8, !tbaa !5
  br label %169

169:                                              ; preds = %158, %162, %155
  %170 = tail call i32 @string_casencmp(ptr noundef %30, ptr noundef nonnull @.str.39, i64 noundef %33) #6
  %171 = icmp eq i32 %170, 0
  br i1 %171, label %172, label %.thread415

172:                                              ; preds = %169
  %173 = getelementptr inbounds i8, ptr %32, i64 8
  %174 = load i32, ptr %173, align 8, !tbaa !13
  %.not = icmp eq i32 %174, 2
  br i1 %.not, label %175, label %.thread484

175:                                              ; preds = %172
  %176 = load i32, ptr %10, align 8, !tbaa !20
  %.not370 = icmp eq i32 %176, 0
  br i1 %.not370, label %177, label %.thread484

177:                                              ; preds = %175
  %178 = getelementptr inbounds i8, ptr %32, i64 16
  %179 = load i32, ptr %178, align 8, !tbaa !5
  %.not570 = icmp eq i32 %179, 0
  br i1 %.not570, label %.thread415, label %.lr.ph

.lr.ph:                                           ; preds = %177
  %180 = getelementptr inbounds i8, ptr %32, i64 24
  %wide.trip.count = zext i32 %179 to i64
  br label %181

181:                                              ; preds = %.lr.ph, %195
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %195 ]
  %182 = load ptr, ptr %180, align 8, !tbaa !5
  %183 = getelementptr inbounds ptr, ptr %182, i64 %indvars.iv
  %184 = load ptr, ptr %183, align 8, !tbaa !25
  %185 = getelementptr inbounds i8, ptr %184, i64 8
  %186 = load i32, ptr %185, align 8, !tbaa !13
  %.not371 = icmp eq i32 %186, 5
  br i1 %.not371, label %187, label %.thread484

187:                                              ; preds = %181
  %188 = load i64, ptr %11, align 8, !tbaa !5
  %189 = load i64, ptr %12, align 8, !tbaa !5
  %190 = icmp eq i64 %188, %189
  %.pre = load ptr, ptr %13, align 8, !tbaa !5
  br i1 %190, label %191, label %195

191:                                              ; preds = %187
  %.not372 = icmp eq i64 %188, 0
  %192 = shl i64 %188, 1
  %spec.select = select i1 %.not372, i64 8, i64 %192
  store i64 %spec.select, ptr %12, align 8, !tbaa !5
  %193 = shl i64 %spec.select, 4
  %194 = tail call ptr @realloc(ptr noundef %.pre, i64 noundef %193) #7
  store ptr %194, ptr %13, align 8, !tbaa !5
  %.pre597 = load i64, ptr %11, align 8, !tbaa !5
  br label %195

195:                                              ; preds = %187, %191
  %196 = phi i64 [ %188, %187 ], [ %.pre597, %191 ]
  %197 = phi ptr [ %.pre, %187 ], [ %194, %191 ]
  %198 = add i64 %196, 1
  store i64 %198, ptr %11, align 8, !tbaa !5
  %199 = getelementptr inbounds %struct.gravity_value_t, ptr %197, i64 %196
  %200 = getelementptr inbounds i8, ptr %184, i64 16
  %201 = getelementptr inbounds i8, ptr %184, i64 24
  %202 = load ptr, ptr %201, align 8, !tbaa !5
  %203 = load i32, ptr %200, align 8, !tbaa !5
  %204 = tail call { ptr, i64 } @gravity_string_to_value(ptr noundef null, ptr noundef %202, i32 noundef %203)
  %205 = extractvalue { ptr, i64 } %204, 0
  %206 = extractvalue { ptr, i64 } %204, 1
  store ptr %205, ptr %199, align 8, !tbaa !25
  %.sroa.493.0..sroa_idx = getelementptr inbounds i8, ptr %199, i64 8
  store i64 %206, ptr %.sroa.493.0..sroa_idx, align 8, !tbaa !5
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %.thread415, label %181, !llvm.loop !26

.thread415:                                       ; preds = %195, %177, %169
  %207 = tail call i32 @string_casencmp(ptr noundef %30, ptr noundef nonnull @.str.38, i64 noundef %33) #6
  %208 = icmp eq i32 %207, 0
  br i1 %208, label %209, label %.loopexit

209:                                              ; preds = %.thread415
  %210 = getelementptr inbounds i8, ptr %32, i64 8
  %211 = load i32, ptr %210, align 8, !tbaa !13
  %.not373 = icmp eq i32 %211, 2
  br i1 %.not373, label %212, label %.thread484

212:                                              ; preds = %209
  %213 = load i32, ptr %10, align 8, !tbaa !20
  %.not374 = icmp eq i32 %213, 0
  br i1 %.not374, label %214, label %.thread484

214:                                              ; preds = %212
  %215 = getelementptr inbounds i8, ptr %32, i64 16
  %216 = load i32, ptr %215, align 8, !tbaa !5
  %.not571 = icmp eq i32 %216, 0
  br i1 %.not571, label %.loopexit, label %.lr.ph505

.lr.ph505:                                        ; preds = %214
  %217 = getelementptr inbounds i8, ptr %32, i64 24
  %wide.trip.count581 = zext i32 %216 to i64
  br label %218

218:                                              ; preds = %.lr.ph505, %335
  %indvars.iv578 = phi i64 [ 0, %.lr.ph505 ], [ %indvars.iv.next579, %335 ]
  %219 = load ptr, ptr %217, align 8, !tbaa !5
  %220 = getelementptr inbounds ptr, ptr %219, i64 %indvars.iv578
  %221 = load ptr, ptr %220, align 8, !tbaa !25
  %222 = getelementptr inbounds i8, ptr %221, i64 8
  %223 = load i32, ptr %222, align 8, !tbaa !13
  switch i32 %223, label %335 [
    i32 3, label %224
    i32 4, label %240
    i32 6, label %256
    i32 5, label %273
    i32 1, label %293
    i32 7, label %307
    i32 0, label %321
    i32 2, label %321
  ]

224:                                              ; preds = %218
  %225 = load i64, ptr %14, align 8, !tbaa !5
  %226 = load i64, ptr %15, align 8, !tbaa !5
  %227 = icmp eq i64 %225, %226
  %.pre610 = load ptr, ptr %16, align 8, !tbaa !5
  br i1 %227, label %228, label %232

228:                                              ; preds = %224
  %.not386 = icmp eq i64 %225, 0
  %229 = shl i64 %225, 1
  %spec.select403 = select i1 %.not386, i64 8, i64 %229
  store i64 %spec.select403, ptr %15, align 8, !tbaa !5
  %230 = shl i64 %spec.select403, 4
  %231 = tail call ptr @realloc(ptr noundef %.pre610, i64 noundef %230) #7
  store ptr %231, ptr %16, align 8, !tbaa !5
  %.pre611 = load i64, ptr %14, align 8, !tbaa !5
  br label %232

232:                                              ; preds = %228, %224
  %233 = phi i64 [ %.pre611, %228 ], [ %225, %224 ]
  %234 = phi ptr [ %231, %228 ], [ %.pre610, %224 ]
  %235 = add i64 %233, 1
  store i64 %235, ptr %14, align 8, !tbaa !5
  %236 = getelementptr inbounds %struct.gravity_value_t, ptr %234, i64 %233
  %237 = load ptr, ptr @gravity_class_int, align 8, !tbaa !25
  %238 = getelementptr inbounds i8, ptr %221, i64 16
  %239 = load i64, ptr %238, align 8, !tbaa !5
  store ptr %237, ptr %236, align 8, !tbaa !25
  %.sroa.281.0..sroa_idx = getelementptr inbounds i8, ptr %236, i64 8
  store i64 %239, ptr %.sroa.281.0..sroa_idx, align 8, !tbaa !5
  br label %335

240:                                              ; preds = %218
  %241 = load i64, ptr %14, align 8, !tbaa !5
  %242 = load i64, ptr %15, align 8, !tbaa !5
  %243 = icmp eq i64 %241, %242
  %.pre608 = load ptr, ptr %16, align 8, !tbaa !5
  br i1 %243, label %244, label %248

244:                                              ; preds = %240
  %.not385 = icmp eq i64 %241, 0
  %245 = shl i64 %241, 1
  %spec.select404 = select i1 %.not385, i64 8, i64 %245
  store i64 %spec.select404, ptr %15, align 8, !tbaa !5
  %246 = shl i64 %spec.select404, 4
  %247 = tail call ptr @realloc(ptr noundef %.pre608, i64 noundef %246) #7
  store ptr %247, ptr %16, align 8, !tbaa !5
  %.pre609 = load i64, ptr %14, align 8, !tbaa !5
  br label %248

248:                                              ; preds = %244, %240
  %249 = phi i64 [ %.pre609, %244 ], [ %241, %240 ]
  %250 = phi ptr [ %247, %244 ], [ %.pre608, %240 ]
  %251 = add i64 %249, 1
  store i64 %251, ptr %14, align 8, !tbaa !5
  %252 = getelementptr inbounds %struct.gravity_value_t, ptr %250, i64 %249
  %253 = load ptr, ptr @gravity_class_float, align 8, !tbaa !25
  %254 = getelementptr inbounds i8, ptr %221, i64 16
  %255 = load double, ptr %254, align 8, !tbaa !5
  store ptr %253, ptr %252, align 8, !tbaa !25
  %.sroa.279.0..sroa_idx = getelementptr inbounds i8, ptr %252, i64 8
  store double %255, ptr %.sroa.279.0..sroa_idx, align 8, !tbaa !5
  br label %335

256:                                              ; preds = %218
  %257 = load i64, ptr %14, align 8, !tbaa !5
  %258 = load i64, ptr %15, align 8, !tbaa !5
  %259 = icmp eq i64 %257, %258
  %.pre606 = load ptr, ptr %16, align 8, !tbaa !5
  br i1 %259, label %260, label %264

260:                                              ; preds = %256
  %.not384 = icmp eq i64 %257, 0
  %261 = shl i64 %257, 1
  %spec.select405 = select i1 %.not384, i64 8, i64 %261
  store i64 %spec.select405, ptr %15, align 8, !tbaa !5
  %262 = shl i64 %spec.select405, 4
  %263 = tail call ptr @realloc(ptr noundef %.pre606, i64 noundef %262) #7
  store ptr %263, ptr %16, align 8, !tbaa !5
  %.pre607 = load i64, ptr %14, align 8, !tbaa !5
  br label %264

264:                                              ; preds = %260, %256
  %265 = phi i64 [ %.pre607, %260 ], [ %257, %256 ]
  %266 = phi ptr [ %263, %260 ], [ %.pre606, %256 ]
  %267 = add i64 %265, 1
  store i64 %267, ptr %14, align 8, !tbaa !5
  %268 = getelementptr inbounds %struct.gravity_value_t, ptr %266, i64 %265
  %269 = load ptr, ptr @gravity_class_bool, align 8, !tbaa !25
  %270 = getelementptr inbounds i8, ptr %221, i64 16
  %271 = load i32, ptr %270, align 8, !tbaa !5
  %272 = sext i32 %271 to i64
  store ptr %269, ptr %268, align 8, !tbaa !25
  %.sroa.277.0..sroa_idx = getelementptr inbounds i8, ptr %268, i64 8
  store i64 %272, ptr %.sroa.277.0..sroa_idx, align 8, !tbaa !5
  br label %335

273:                                              ; preds = %218
  %274 = load i64, ptr %14, align 8, !tbaa !5
  %275 = load i64, ptr %15, align 8, !tbaa !5
  %276 = icmp eq i64 %274, %275
  %.pre604 = load ptr, ptr %16, align 8, !tbaa !5
  br i1 %276, label %277, label %281

277:                                              ; preds = %273
  %.not383 = icmp eq i64 %274, 0
  %278 = shl i64 %274, 1
  %spec.select406 = select i1 %.not383, i64 8, i64 %278
  store i64 %spec.select406, ptr %15, align 8, !tbaa !5
  %279 = shl i64 %spec.select406, 4
  %280 = tail call ptr @realloc(ptr noundef %.pre604, i64 noundef %279) #7
  store ptr %280, ptr %16, align 8, !tbaa !5
  %.pre605 = load i64, ptr %14, align 8, !tbaa !5
  br label %281

281:                                              ; preds = %277, %273
  %282 = phi i64 [ %.pre605, %277 ], [ %274, %273 ]
  %283 = phi ptr [ %280, %277 ], [ %.pre604, %273 ]
  %284 = add i64 %282, 1
  store i64 %284, ptr %14, align 8, !tbaa !5
  %285 = getelementptr inbounds %struct.gravity_value_t, ptr %283, i64 %282
  %286 = getelementptr inbounds i8, ptr %221, i64 16
  %287 = getelementptr inbounds i8, ptr %221, i64 24
  %288 = load ptr, ptr %287, align 8, !tbaa !5
  %289 = load i32, ptr %286, align 8, !tbaa !5
  %290 = tail call { ptr, i64 } @gravity_string_to_value(ptr noundef null, ptr noundef %288, i32 noundef %289)
  %291 = extractvalue { ptr, i64 } %290, 0
  %292 = extractvalue { ptr, i64 } %290, 1
  store ptr %291, ptr %285, align 8, !tbaa !25
  %.sroa.475.0..sroa_idx = getelementptr inbounds i8, ptr %285, i64 8
  store i64 %292, ptr %.sroa.475.0..sroa_idx, align 8, !tbaa !5
  br label %335

293:                                              ; preds = %218
  %294 = load i64, ptr %14, align 8, !tbaa !5
  %295 = load i64, ptr %15, align 8, !tbaa !5
  %296 = icmp eq i64 %294, %295
  %.pre602 = load ptr, ptr %16, align 8, !tbaa !5
  br i1 %296, label %297, label %301

297:                                              ; preds = %293
  %.not382 = icmp eq i64 %294, 0
  %298 = shl i64 %294, 1
  %spec.select407 = select i1 %.not382, i64 8, i64 %298
  store i64 %spec.select407, ptr %15, align 8, !tbaa !5
  %299 = shl i64 %spec.select407, 4
  %300 = tail call ptr @realloc(ptr noundef %.pre602, i64 noundef %299) #7
  store ptr %300, ptr %16, align 8, !tbaa !5
  %.pre603 = load i64, ptr %14, align 8, !tbaa !5
  br label %301

301:                                              ; preds = %297, %293
  %302 = phi i64 [ %.pre603, %297 ], [ %294, %293 ]
  %303 = phi ptr [ %300, %297 ], [ %.pre602, %293 ]
  %304 = add i64 %302, 1
  store i64 %304, ptr %14, align 8, !tbaa !5
  %305 = getelementptr inbounds %struct.gravity_value_t, ptr %303, i64 %302
  %306 = load ptr, ptr @gravity_class_null, align 8, !tbaa !25
  store ptr %306, ptr %305, align 8, !tbaa !25
  %.sroa.273.0..sroa_idx = getelementptr inbounds i8, ptr %305, i64 8
  store i64 1, ptr %.sroa.273.0..sroa_idx, align 8, !tbaa !5
  br label %335

307:                                              ; preds = %218
  %308 = load i64, ptr %14, align 8, !tbaa !5
  %309 = load i64, ptr %15, align 8, !tbaa !5
  %310 = icmp eq i64 %308, %309
  %.pre600 = load ptr, ptr %16, align 8, !tbaa !5
  br i1 %310, label %311, label %315

311:                                              ; preds = %307
  %.not381 = icmp eq i64 %308, 0
  %312 = shl i64 %308, 1
  %spec.select408 = select i1 %.not381, i64 8, i64 %312
  store i64 %spec.select408, ptr %15, align 8, !tbaa !5
  %313 = shl i64 %spec.select408, 4
  %314 = tail call ptr @realloc(ptr noundef %.pre600, i64 noundef %313) #7
  store ptr %314, ptr %16, align 8, !tbaa !5
  %.pre601 = load i64, ptr %14, align 8, !tbaa !5
  br label %315

315:                                              ; preds = %311, %307
  %316 = phi i64 [ %.pre601, %311 ], [ %308, %307 ]
  %317 = phi ptr [ %314, %311 ], [ %.pre600, %307 ]
  %318 = add i64 %316, 1
  store i64 %318, ptr %14, align 8, !tbaa !5
  %319 = getelementptr inbounds %struct.gravity_value_t, ptr %317, i64 %316
  %320 = load ptr, ptr @gravity_class_null, align 8, !tbaa !25
  store ptr %320, ptr %319, align 8, !tbaa !25
  %.sroa.271.0..sroa_idx = getelementptr inbounds i8, ptr %319, i64 8
  store i64 0, ptr %.sroa.271.0..sroa_idx, align 8, !tbaa !5
  br label %335

321:                                              ; preds = %218, %218
  %322 = load i64, ptr %14, align 8, !tbaa !5
  %323 = load i64, ptr %15, align 8, !tbaa !5
  %324 = icmp eq i64 %322, %323
  %.pre598 = load ptr, ptr %16, align 8, !tbaa !5
  br i1 %324, label %325, label %329

325:                                              ; preds = %321
  %.not380 = icmp eq i64 %322, 0
  %326 = shl i64 %322, 1
  %spec.select409 = select i1 %.not380, i64 8, i64 %326
  store i64 %spec.select409, ptr %15, align 8, !tbaa !5
  %327 = shl i64 %spec.select409, 4
  %328 = tail call ptr @realloc(ptr noundef %.pre598, i64 noundef %327) #7
  store ptr %328, ptr %16, align 8, !tbaa !5
  %.pre599 = load i64, ptr %14, align 8, !tbaa !5
  br label %329

329:                                              ; preds = %325, %321
  %330 = phi i64 [ %.pre599, %325 ], [ %322, %321 ]
  %331 = phi ptr [ %328, %325 ], [ %.pre598, %321 ]
  %332 = add i64 %330, 1
  store i64 %332, ptr %14, align 8, !tbaa !5
  %333 = getelementptr inbounds %struct.gravity_value_t, ptr %331, i64 %330
  %334 = load ptr, ptr @gravity_class_null, align 8, !tbaa !25
  store ptr %334, ptr %333, align 8, !tbaa !25
  %.sroa.269.0..sroa_idx = getelementptr inbounds i8, ptr %333, i64 8
  store i64 0, ptr %.sroa.269.0..sroa_idx, align 8, !tbaa !5
  br label %335

335:                                              ; preds = %329, %315, %301, %281, %264, %248, %232, %218
  %indvars.iv.next579 = add nuw nsw i64 %indvars.iv578, 1
  %exitcond582.not = icmp eq i64 %indvars.iv.next579, %wide.trip.count581
  br i1 %exitcond582.not, label %.loopexit, label %218, !llvm.loop !28

.loopexit:                                        ; preds = %335, %214, %.thread415
  %336 = tail call i32 @string_casencmp(ptr noundef %30, ptr noundef nonnull @.str.37, i64 noundef %33) #6
  %337 = icmp eq i32 %336, 0
  br i1 %337, label %338, label %.thread458

338:                                              ; preds = %.loopexit
  %339 = getelementptr inbounds i8, ptr %32, i64 8
  %340 = load i32, ptr %339, align 8, !tbaa !13
  %.not375 = icmp eq i32 %340, 2
  br i1 %.not375, label %341, label %.thread484

341:                                              ; preds = %338
  %342 = load i32, ptr %10, align 8, !tbaa !20
  %.not376 = icmp ne i32 %342, 0
  %brmerge499 = select i1 %.not376, i1 true, i1 %.0333518
  br i1 %brmerge499, label %.thread484, label %343

343:                                              ; preds = %341
  %344 = getelementptr inbounds i8, ptr %32, i64 16
  %345 = load i32, ptr %344, align 8, !tbaa !5
  %.not572 = icmp eq i32 %345, 0
  br i1 %.not572, label %.thread458, label %.lr.ph510

.lr.ph510:                                        ; preds = %343
  %346 = getelementptr inbounds i8, ptr %32, i64 24
  %wide.trip.count591 = zext i32 %345 to i64
  br label %347

347:                                              ; preds = %.lr.ph510, %.thread431
  %indvars.iv588 = phi i64 [ 0, %.lr.ph510 ], [ %indvars.iv.next589, %.thread431 ]
  %348 = load ptr, ptr %346, align 8, !tbaa !5
  %349 = getelementptr inbounds ptr, ptr %348, i64 %indvars.iv588
  %350 = load ptr, ptr %349, align 8, !tbaa !25
  %351 = getelementptr inbounds i8, ptr %350, i64 8
  %352 = load i32, ptr %351, align 8, !tbaa !13
  switch i32 %352, label %.thread431 [
    i32 3, label %353
    i32 4, label %358
    i32 6, label %363
    i32 5, label %369
    i32 1, label %378
    i32 2, label %384
    i32 0, label %435
    i32 7, label %435
  ]

353:                                              ; preds = %347
  %354 = load ptr, ptr @gravity_class_int, align 8, !tbaa !25
  %355 = getelementptr inbounds i8, ptr %350, i64 16
  %356 = load i64, ptr %355, align 8, !tbaa !5
  %357 = tail call zeroext i16 @gravity_function_cpool_add(ptr noundef null, ptr noundef %3, ptr %354, i64 %356)
  br label %.thread431

358:                                              ; preds = %347
  %359 = load ptr, ptr @gravity_class_float, align 8, !tbaa !25
  %360 = getelementptr inbounds i8, ptr %350, i64 16
  %361 = load i64, ptr %360, align 8, !tbaa !5
  %362 = tail call zeroext i16 @gravity_function_cpool_add(ptr noundef null, ptr noundef %3, ptr %359, i64 %361)
  br label %.thread431

363:                                              ; preds = %347
  %364 = load ptr, ptr @gravity_class_bool, align 8, !tbaa !25
  %365 = getelementptr inbounds i8, ptr %350, i64 16
  %366 = load i32, ptr %365, align 8, !tbaa !5
  %367 = sext i32 %366 to i64
  %368 = tail call zeroext i16 @gravity_function_cpool_add(ptr noundef null, ptr noundef %3, ptr %364, i64 %367)
  br label %.thread431

369:                                              ; preds = %347
  %370 = getelementptr inbounds i8, ptr %350, i64 16
  %371 = getelementptr inbounds i8, ptr %350, i64 24
  %372 = load ptr, ptr %371, align 8, !tbaa !5
  %373 = load i32, ptr %370, align 8, !tbaa !5
  %374 = tail call { ptr, i64 } @gravity_string_to_value(ptr noundef null, ptr noundef %372, i32 noundef %373)
  %375 = extractvalue { ptr, i64 } %374, 0
  %376 = extractvalue { ptr, i64 } %374, 1
  %377 = tail call zeroext i16 @gravity_function_cpool_add(ptr noundef %0, ptr noundef %3, ptr %375, i64 %376)
  br label %.thread431

378:                                              ; preds = %347
  %379 = tail call ptr @gravity_object_deserialize(ptr noundef %0, ptr noundef nonnull %350)
  %.not379.not = icmp eq ptr %379, null
  br i1 %.not379.not, label %.thread484, label %380

380:                                              ; preds = %378
  %381 = load ptr, ptr %379, align 8, !tbaa !29
  %382 = ptrtoint ptr %379 to i64
  %383 = tail call zeroext i16 @gravity_function_cpool_add(ptr noundef null, ptr noundef %3, ptr %381, i64 %382)
  br label %.thread431

384:                                              ; preds = %347
  %385 = getelementptr inbounds i8, ptr %350, i64 16
  %386 = load i32, ptr %385, align 8, !tbaa !5
  %387 = tail call ptr @gravity_list_new(ptr noundef null, i32 noundef %386)
  %.not377 = icmp eq ptr %387, null
  br i1 %.not377, label %.thread431, label %.preheader

.preheader:                                       ; preds = %384
  %.not573 = icmp eq i32 %386, 0
  br i1 %.not573, label %._crit_edge, label %.lr.ph507

.lr.ph507:                                        ; preds = %.preheader
  %388 = getelementptr inbounds i8, ptr %350, i64 24
  %389 = getelementptr inbounds i8, ptr %387, i64 48
  %390 = getelementptr inbounds i8, ptr %387, i64 56
  %391 = getelementptr inbounds i8, ptr %387, i64 64
  %wide.trip.count586 = zext i32 %386 to i64
  br label %392

392:                                              ; preds = %.lr.ph507, %427
  %indvars.iv583 = phi i64 [ 0, %.lr.ph507 ], [ %indvars.iv.next584, %427 ]
  %393 = load ptr, ptr %388, align 8, !tbaa !5
  %394 = getelementptr inbounds ptr, ptr %393, i64 %indvars.iv583
  %395 = load ptr, ptr %394, align 8, !tbaa !25
  %396 = getelementptr inbounds i8, ptr %395, i64 8
  %397 = load i32, ptr %396, align 8, !tbaa !13
  switch i32 %397, label %.thread484 [
    i32 3, label %398
    i32 4, label %402
    i32 6, label %406
    i32 5, label %411
  ]

398:                                              ; preds = %392
  %399 = load ptr, ptr @gravity_class_int, align 8, !tbaa !25
  %400 = getelementptr inbounds i8, ptr %395, i64 16
  %401 = load i64, ptr %400, align 8, !tbaa !5
  br label %419

402:                                              ; preds = %392
  %403 = load ptr, ptr @gravity_class_float, align 8, !tbaa !25
  %404 = getelementptr inbounds i8, ptr %395, i64 16
  %405 = load i64, ptr %404, align 8, !tbaa !5
  br label %419

406:                                              ; preds = %392
  %407 = load ptr, ptr @gravity_class_bool, align 8, !tbaa !25
  %408 = getelementptr inbounds i8, ptr %395, i64 16
  %409 = load i32, ptr %408, align 8, !tbaa !5
  %410 = sext i32 %409 to i64
  br label %419

411:                                              ; preds = %392
  %412 = getelementptr inbounds i8, ptr %395, i64 16
  %413 = getelementptr inbounds i8, ptr %395, i64 24
  %414 = load ptr, ptr %413, align 8, !tbaa !5
  %415 = load i32, ptr %412, align 8, !tbaa !5
  %416 = tail call { ptr, i64 } @gravity_string_to_value(ptr noundef %0, ptr noundef %414, i32 noundef %415)
  %417 = extractvalue { ptr, i64 } %416, 0
  %418 = extractvalue { ptr, i64 } %416, 1
  br label %419

419:                                              ; preds = %411, %406, %402, %398
  %.sroa.7.0 = phi i64 [ %418, %411 ], [ %410, %406 ], [ %405, %402 ], [ %401, %398 ]
  %.sroa.019.0 = phi ptr [ %417, %411 ], [ %407, %406 ], [ %403, %402 ], [ %399, %398 ]
  %420 = load i64, ptr %389, align 8, !tbaa !31
  %421 = load i64, ptr %390, align 8, !tbaa !35
  %422 = icmp eq i64 %420, %421
  %.pre612 = load ptr, ptr %391, align 8, !tbaa !36
  br i1 %422, label %423, label %427

423:                                              ; preds = %419
  %.not378 = icmp eq i64 %420, 0
  %424 = shl i64 %420, 1
  %spec.select410 = select i1 %.not378, i64 8, i64 %424
  store i64 %spec.select410, ptr %390, align 8, !tbaa !35
  %425 = shl i64 %spec.select410, 4
  %426 = tail call ptr @realloc(ptr noundef %.pre612, i64 noundef %425) #7
  store ptr %426, ptr %391, align 8, !tbaa !36
  %.pre613 = load i64, ptr %389, align 8, !tbaa !31
  br label %427

427:                                              ; preds = %419, %423
  %428 = phi i64 [ %420, %419 ], [ %.pre613, %423 ]
  %429 = phi ptr [ %.pre612, %419 ], [ %426, %423 ]
  %430 = add i64 %428, 1
  store i64 %430, ptr %389, align 8, !tbaa !31
  %431 = getelementptr inbounds %struct.gravity_value_t, ptr %429, i64 %428
  store ptr %.sroa.019.0, ptr %431, align 8, !tbaa !25
  %.sroa.7.0..sroa_idx = getelementptr inbounds i8, ptr %431, i64 8
  store i64 %.sroa.7.0, ptr %.sroa.7.0..sroa_idx, align 8, !tbaa !5
  %indvars.iv.next584 = add nuw nsw i64 %indvars.iv583, 1
  %exitcond587.not = icmp eq i64 %indvars.iv.next584, %wide.trip.count586
  br i1 %exitcond587.not, label %._crit_edge, label %392, !llvm.loop !37

._crit_edge:                                      ; preds = %427, %.preheader
  %432 = load ptr, ptr %387, align 8, !tbaa !38
  %433 = ptrtoint ptr %387 to i64
  %434 = tail call zeroext i16 @gravity_function_cpool_add(ptr noundef %0, ptr noundef %3, ptr %432, i64 %433)
  br label %.thread431

435:                                              ; preds = %347, %347
  %436 = load ptr, ptr @gravity_class_null, align 8, !tbaa !25
  %437 = tail call zeroext i16 @gravity_function_cpool_add(ptr noundef null, ptr noundef %3, ptr %436, i64 0)
  br label %.thread431

.thread431:                                       ; preds = %347, %353, %358, %363, %369, %435, %380, %._crit_edge, %384
  %indvars.iv.next589 = add nuw nsw i64 %indvars.iv588, 1
  %exitcond592.not = icmp eq i64 %indvars.iv.next589, %wide.trip.count591
  br i1 %exitcond592.not, label %.thread458, label %347, !llvm.loop !39

.thread458:                                       ; preds = %.thread431, %343, %.loopexit, %144, %148, %84, %75, %39, %43, %132, %122, %112, %102, %92, %64, %51
  %.1483 = phi i1 [ %.0323523, %.loopexit ], [ %.0323523, %144 ], [ %.0323523, %148 ], [ %.0323523, %84 ], [ %.0323523, %75 ], [ true, %39 ], [ true, %43 ], [ %.0323523, %132 ], [ %.0323523, %122 ], [ %.0323523, %112 ], [ %.0323523, %102 ], [ %.0323523, %92 ], [ %.0323523, %64 ], [ %.0323523, %51 ], [ %.0323523, %343 ], [ %.0323523, %.thread431 ]
  %.2482 = phi i1 [ %.0324522, %.loopexit ], [ %.0324522, %144 ], [ %.0324522, %148 ], [ %.0324522, %84 ], [ true, %75 ], [ %.0324522, %39 ], [ %.0324522, %43 ], [ %.0324522, %132 ], [ %.0324522, %122 ], [ %.0324522, %112 ], [ %.0324522, %102 ], [ %.0324522, %92 ], [ %.0324522, %64 ], [ %.0324522, %51 ], [ %.0324522, %343 ], [ %.0324522, %.thread431 ]
  %.2328481 = phi i1 [ %.0326521, %.loopexit ], [ %.0326521, %144 ], [ %.0326521, %148 ], [ true, %84 ], [ %.0326521, %75 ], [ %.0326521, %39 ], [ %.0326521, %43 ], [ %.0326521, %132 ], [ %.0326521, %122 ], [ %.0326521, %112 ], [ %.0326521, %102 ], [ %.0326521, %92 ], [ %.0326521, %64 ], [ %.0326521, %51 ], [ %.0326521, %343 ], [ %.0326521, %.thread431 ]
  %.1330480 = phi i1 [ %.0329520, %.loopexit ], [ %.0329520, %144 ], [ %.0329520, %148 ], [ %.0329520, %84 ], [ %.0329520, %75 ], [ %.0329520, %39 ], [ %.0329520, %43 ], [ %.0329520, %132 ], [ %.0329520, %122 ], [ %.0329520, %112 ], [ %.0329520, %102 ], [ %.0329520, %92 ], [ true, %64 ], [ %.0329520, %51 ], [ %.0329520, %343 ], [ %.0329520, %.thread431 ]
  %.1332479 = phi i1 [ %.0331519, %.loopexit ], [ true, %144 ], [ true, %148 ], [ %.0331519, %84 ], [ %.0331519, %75 ], [ %.0331519, %39 ], [ %.0331519, %43 ], [ %.0331519, %132 ], [ %.0331519, %122 ], [ %.0331519, %112 ], [ %.0331519, %102 ], [ %.0331519, %92 ], [ %.0331519, %64 ], [ %.0331519, %51 ], [ %.0331519, %343 ], [ %.0331519, %.thread431 ]
  %.2335478 = phi i1 [ %.0333518, %.loopexit ], [ %.0333518, %144 ], [ %.0333518, %148 ], [ %.0333518, %84 ], [ %.0333518, %75 ], [ %.0333518, %39 ], [ %.0333518, %43 ], [ %.0333518, %132 ], [ %.0333518, %122 ], [ %.0333518, %112 ], [ %.0333518, %102 ], [ %.0333518, %92 ], [ %.0333518, %64 ], [ %.0333518, %51 ], [ true, %343 ], [ true, %.thread431 ]
  %.1337477 = phi i1 [ %.0336517, %.loopexit ], [ %.0336517, %144 ], [ %.0336517, %148 ], [ %.0336517, %84 ], [ %.0336517, %75 ], [ %.0336517, %39 ], [ %.0336517, %43 ], [ %.0336517, %132 ], [ %.0336517, %122 ], [ %.0336517, %112 ], [ %.0336517, %102 ], [ true, %92 ], [ %.0336517, %64 ], [ %.0336517, %51 ], [ %.0336517, %343 ], [ %.0336517, %.thread431 ]
  %.1339476 = phi i1 [ %.0338516, %.loopexit ], [ %.0338516, %144 ], [ %.0338516, %148 ], [ %.0338516, %84 ], [ %.0338516, %75 ], [ %.0338516, %39 ], [ %.0338516, %43 ], [ %.0338516, %132 ], [ %.0338516, %122 ], [ %.0338516, %112 ], [ true, %102 ], [ %.0338516, %92 ], [ %.0338516, %64 ], [ %.0338516, %51 ], [ %.0338516, %343 ], [ %.0338516, %.thread431 ]
  %.1341475 = phi i1 [ %.0340515, %.loopexit ], [ %.0340515, %144 ], [ %.0340515, %148 ], [ %.0340515, %84 ], [ %.0340515, %75 ], [ %.0340515, %39 ], [ %.0340515, %43 ], [ %.0340515, %132 ], [ %.0340515, %122 ], [ true, %112 ], [ %.0340515, %102 ], [ %.0340515, %92 ], [ %.0340515, %64 ], [ %.0340515, %51 ], [ %.0340515, %343 ], [ %.0340515, %.thread431 ]
  %.1343474 = phi i1 [ %.0342514, %.loopexit ], [ %.0342514, %144 ], [ %.0342514, %148 ], [ %.0342514, %84 ], [ %.0342514, %75 ], [ %.0342514, %39 ], [ %.0342514, %43 ], [ %.0342514, %132 ], [ true, %122 ], [ %.0342514, %112 ], [ %.0342514, %102 ], [ %.0342514, %92 ], [ %.0342514, %64 ], [ %.0342514, %51 ], [ %.0342514, %343 ], [ %.0342514, %.thread431 ]
  %.1345473 = phi i1 [ %.0344513, %.loopexit ], [ %.0344513, %144 ], [ %.0344513, %148 ], [ %.0344513, %84 ], [ %.0344513, %75 ], [ %.0344513, %39 ], [ %.0344513, %43 ], [ true, %132 ], [ %.0344513, %122 ], [ %.0344513, %112 ], [ %.0344513, %102 ], [ %.0344513, %92 ], [ %.0344513, %64 ], [ %.0344513, %51 ], [ %.0344513, %343 ], [ %.0344513, %.thread431 ]
  %.1347472 = phi i1 [ %.0346512, %.loopexit ], [ %.0346512, %144 ], [ %.0346512, %148 ], [ %.0346512, %84 ], [ %.0346512, %75 ], [ %.0346512, %39 ], [ %.0346512, %43 ], [ %.0346512, %132 ], [ %.0346512, %122 ], [ %.0346512, %112 ], [ %.0346512, %102 ], [ %.0346512, %92 ], [ %.0346512, %64 ], [ true, %51 ], [ %.0346512, %343 ], [ %.0346512, %.thread431 ]
  %indvars.iv.next594 = add nuw nsw i64 %indvars.iv593, 1
  %exitcond596.not = icmp eq i64 %indvars.iv.next594, %wide.trip.count595
  br i1 %exitcond596.not, label %.thread484, label %27, !llvm.loop !40

.thread484:                                       ; preds = %.thread458, %59, %73, %82, %140, %141, %146, %172, %175, %209, %212, %338, %36, %48, %62, %71, %80, %89, %99, %109, %119, %129, %341, %181, %378, %392, %2
  %438 = phi ptr [ %3, %2 ], [ null, %392 ], [ null, %378 ], [ null, %181 ], [ %3, %.thread458 ], [ null, %59 ], [ null, %73 ], [ null, %82 ], [ null, %140 ], [ null, %141 ], [ null, %146 ], [ null, %172 ], [ null, %175 ], [ null, %209 ], [ null, %212 ], [ null, %338 ], [ null, %36 ], [ null, %48 ], [ null, %62 ], [ null, %71 ], [ null, %80 ], [ null, %89 ], [ null, %99 ], [ null, %109 ], [ null, %119 ], [ null, %129 ], [ null, %341 ]
  ret ptr %438
}

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i32 @strncmp(ptr nocapture noundef, ptr nocapture noundef, i64 noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare dso_local ptr @gravity_list_new(ptr noundef, i32 noundef) local_unnamed_addr #3

attributes #0 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { inlinehint nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress nofree nounwind willreturn memory(argmem: read) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nounwind 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 #4 = { mustprogress nounwind willreturn allockind("realloc") allocsize(1) memory(argmem: readwrite, inaccessiblemem: readwrite) "alloc-family"="malloc" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nounwind willreturn memory(read) }
attributes #6 = { nounwind }
attributes #7 = { nounwind allocsize(1) }

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

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


; Effective O3 passes: AggressiveInstCombinePass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,SROAPass,SimplifyCFGPass,TailCallElimPass