; LLVM IR from opset/openset :: lib/cjson/cjson.ll (ZN5cjson11parseBranchEPS_RPcb)

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

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%class.cjson = type <{ ptr, i64, ptr, ptr, ptr, ptr, i32, [4 x i8], ptr, ptr, ptr, ptr, i8, [7 x i8] }>

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #1 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN5cjson7setTypeENS_7Types_eE(ptr noundef nonnull align 8 dereferenceable(89), i64 noundef) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32)) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN5cjson4pushEl(ptr noundef nonnull align 8 dereferenceable(89), i64 noundef) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN5cjson4pushEd(ptr noundef nonnull align 8 dereferenceable(89), double noundef) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN5cjson4pushERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(89), ptr noundef nonnull align 8 dereferenceable(32)) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN5cjson9pushArrayEv(ptr noundef nonnull align 8 dereferenceable(89)) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN5cjson10pushObjectEv(ptr noundef nonnull align 8 dereferenceable(89)) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN5cjson3setERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEl(ptr noundef nonnull align 8 dereferenceable(89), ptr noundef nonnull align 8 dereferenceable(32), i64 noundef) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN5cjson3setERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEd(ptr noundef nonnull align 8 dereferenceable(89), ptr noundef nonnull align 8 dereferenceable(32), double noundef) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN5cjson3setERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_(ptr noundef nonnull align 8 dereferenceable(89), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN5cjson3setERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(89), ptr noundef nonnull align 8 dereferenceable(32), i1 noundef zeroext) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN5cjson3setERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(89), ptr noundef nonnull align 8 dereferenceable(32)) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN5cjson8setArrayERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(89), ptr noundef nonnull align 8 dereferenceable(32)) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN5cjson9setObjectERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(89), ptr noundef nonnull align 8 dereferenceable(32)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
define dso_local noundef ptr @_ZN5cjson11parseBranchEPS_RPcb(ptr noundef %0, ptr noundef nonnull align 8 dereferenceable(8) %1, i1 noundef zeroext %2) #2 align 2 personality ptr @__gxx_personality_v0 {
  %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 i32, align 4
  %10 = alloca i8, align 1
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca i32, align 4
  %15 = alloca ptr, align 8
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca i8, align 1
  %19 = alloca %"class.std::__cxx11::basic_string", align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca i8, align 1
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  %23 = zext i1 %2 to i8
  store i8 %23, ptr %7, align 1, !tbaa !9
  %24 = load ptr, ptr %6, align 8, !tbaa !5
  %25 = load ptr, ptr %24, align 8, !tbaa !5
  %26 = load i8, ptr %25, align 1, !tbaa !11
  %27 = icmp ne i8 %26, 0
  br i1 %27, label %30, label %28

28:                                               ; preds = %3
  %29 = call noundef ptr @_ZN5cjson12makeDocumentEv()
  store ptr %29, ptr %4, align 8
  br label %598

30:                                               ; preds = %3
  call void @llvm.lifetime.start.p0(i64 1, ptr %8) #6
  store i8 0, ptr %8, align 1, !tbaa !9
  %31 = load i8, ptr %7, align 1, !tbaa !9, !range !12, !noundef !13
  %32 = trunc i8 %31 to i1
  br i1 %32, label %33, label %48

33:                                               ; preds = %30
  %34 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_Z8SkipJunkRPc(ptr noundef nonnull align 8 dereferenceable(8) %34)
  %35 = load ptr, ptr %6, align 8, !tbaa !5
  %36 = load ptr, ptr %35, align 8, !tbaa !5
  %37 = load i8, ptr %36, align 1, !tbaa !11
  %38 = sext i8 %37 to i32
  %39 = icmp eq i32 %38, 123
  br i1 %39, label %40, label %42

40:                                               ; preds = %33
  %41 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN5cjson7setTypeENS_7Types_eE(ptr noundef nonnull align 8 dereferenceable(89) %41, i64 noundef 2)
  br label %44

42:                                               ; preds = %33
  %43 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN5cjson7setTypeENS_7Types_eE(ptr noundef nonnull align 8 dereferenceable(89) %43, i64 noundef 3)
  br label %44

44:                                               ; preds = %42, %40
  %45 = load ptr, ptr %6, align 8, !tbaa !5
  %46 = load ptr, ptr %45, align 8, !tbaa !5
  %47 = getelementptr inbounds i8, ptr %46, i32 1
  store ptr %47, ptr %45, align 8, !tbaa !5
  store i8 1, ptr %8, align 1, !tbaa !9
  br label %48

48:                                               ; preds = %44, %30
  %49 = load ptr, ptr %5, align 8, !tbaa !5
  %50 = icmp eq ptr %49, null
  br i1 %50, label %51, label %81

51:                                               ; preds = %48
  %52 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_Z8SkipJunkRPc(ptr noundef nonnull align 8 dereferenceable(8) %52)
  %53 = load ptr, ptr %6, align 8, !tbaa !5
  %54 = load ptr, ptr %53, align 8, !tbaa !5
  %55 = load i8, ptr %54, align 1, !tbaa !11
  %56 = sext i8 %55 to i32
  %57 = icmp ne i32 %56, 91
  br i1 %57, label %58, label %66

58:                                               ; preds = %51
  %59 = load ptr, ptr %6, align 8, !tbaa !5
  %60 = load ptr, ptr %59, align 8, !tbaa !5
  %61 = load i8, ptr %60, align 1, !tbaa !11
  %62 = sext i8 %61 to i32
  %63 = icmp ne i32 %62, 123
  br i1 %63, label %64, label %66

64:                                               ; preds = %58
  %65 = call noundef ptr @_ZN5cjson12makeDocumentEv()
  store ptr %65, ptr %4, align 8
  store i32 1, ptr %9, align 4
  br label %596

66:                                               ; preds = %58, %51
  %67 = load ptr, ptr %6, align 8, !tbaa !5
  %68 = load ptr, ptr %67, align 8, !tbaa !5
  %69 = load i8, ptr %68, align 1, !tbaa !11
  %70 = sext i8 %69 to i32
  %71 = icmp eq i32 %70, 123
  br i1 %71, label %72, label %74

72:                                               ; preds = %66
  %73 = call noundef ptr @_ZN5cjson12makeDocumentEv()
  store ptr %73, ptr %5, align 8, !tbaa !5
  br label %77

74:                                               ; preds = %66
  %75 = call noundef ptr @_ZN5cjson12makeDocumentEv()
  store ptr %75, ptr %5, align 8, !tbaa !5
  %76 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN5cjson7setTypeENS_7Types_eE(ptr noundef nonnull align 8 dereferenceable(89) %76, i64 noundef 3)
  br label %77

77:                                               ; preds = %74, %72
  store i8 1, ptr %8, align 1, !tbaa !9
  %78 = load ptr, ptr %6, align 8, !tbaa !5
  %79 = load ptr, ptr %78, align 8, !tbaa !5
  %80 = getelementptr inbounds i8, ptr %79, i32 1
  store ptr %80, ptr %78, align 8, !tbaa !5
  br label %81

81:                                               ; preds = %77, %48
  br label %82

82:                                               ; preds = %593, %580, %81
  %83 = load ptr, ptr %6, align 8, !tbaa !5
  %84 = load ptr, ptr %83, align 8, !tbaa !5
  %85 = load i8, ptr %84, align 1, !tbaa !11
  %86 = icmp ne i8 %85, 0
  br i1 %86, label %87, label %93

87:                                               ; preds = %82
  %88 = load ptr, ptr %6, align 8, !tbaa !5
  %89 = load ptr, ptr %88, align 8, !tbaa !5
  %90 = load i8, ptr %89, align 1, !tbaa !11
  %91 = sext i8 %90 to i32
  %92 = icmp ne i32 %91, 26
  br label %93

93:                                               ; preds = %87, %82
  %94 = phi i1 [ false, %82 ], [ %92, %87 ]
  br i1 %94, label %95, label %594

95:                                               ; preds = %93
  %96 = load ptr, ptr %6, align 8, !tbaa !5
  %97 = load ptr, ptr %96, align 8, !tbaa !5
  %98 = load i8, ptr %97, align 1, !tbaa !11
  %99 = sext i8 %98 to i32
  %100 = icmp eq i32 %99, 125
  br i1 %100, label %107, label %101

101:                                              ; preds = %95
  %102 = load ptr, ptr %6, align 8, !tbaa !5
  %103 = load ptr, ptr %102, align 8, !tbaa !5
  %104 = load i8, ptr %103, align 1, !tbaa !11
  %105 = sext i8 %104 to i32
  %106 = icmp eq i32 %105, 93
  br i1 %106, label %107, label %112

107:                                              ; preds = %101, %95
  %108 = load ptr, ptr %6, align 8, !tbaa !5
  %109 = load ptr, ptr %108, align 8, !tbaa !5
  %110 = getelementptr inbounds i8, ptr %109, i32 1
  store ptr %110, ptr %108, align 8, !tbaa !5
  %111 = load ptr, ptr %5, align 8, !tbaa !5
  store ptr %111, ptr %4, align 8
  store i32 1, ptr %9, align 4
  br label %596

112:                                              ; preds = %101
  %113 = load ptr, ptr %6, align 8, !tbaa !5
  %114 = load ptr, ptr %113, align 8, !tbaa !5
  %115 = load i8, ptr %114, align 1, !tbaa !11
  %116 = sext i8 %115 to i32
  %117 = icmp eq i32 %116, 123
  br i1 %117, label %118, label %137

118:                                              ; preds = %112
  %119 = load ptr, ptr %6, align 8, !tbaa !5
  %120 = load ptr, ptr %119, align 8, !tbaa !5
  %121 = getelementptr inbounds i8, ptr %120, i32 1
  store ptr %121, ptr %119, align 8, !tbaa !5
  %122 = load ptr, ptr %5, align 8, !tbaa !5
  %123 = getelementptr inbounds %class.cjson, ptr %122, i32 0, i32 11
  %124 = load ptr, ptr %123, align 8, !tbaa !14
  %125 = icmp ne ptr %124, null
  br i1 %125, label %131, label %126

126:                                              ; preds = %118
  %127 = load i8, ptr %8, align 1, !tbaa !9, !range !12, !noundef !13
  %128 = trunc i8 %127 to i1
  br i1 %128, label %131, label %129

129:                                              ; preds = %126
  %130 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN5cjson7setTypeENS_7Types_eE(ptr noundef nonnull align 8 dereferenceable(89) %130, i64 noundef 2)
  store i8 1, ptr %8, align 1, !tbaa !9
  br label %136

131:                                              ; preds = %126, %118
  %132 = load ptr, ptr %5, align 8, !tbaa !5
  %133 = call noundef ptr @_ZN5cjson10pushObjectEv(ptr noundef nonnull align 8 dereferenceable(89) %132)
  %134 = load ptr, ptr %6, align 8, !tbaa !5
  %135 = call noundef ptr @_ZN5cjson11parseBranchEPS_RPcb(ptr noundef %133, ptr noundef nonnull align 8 dereferenceable(8) %134, i1 noundef zeroext false)
  br label %136

136:                                              ; preds = %131, %129
  br label %593

137:                                              ; preds = %112
  %138 = load ptr, ptr %6, align 8, !tbaa !5
  %139 = load ptr, ptr %138, align 8, !tbaa !5
  %140 = load i8, ptr %139, align 1, !tbaa !11
  %141 = sext i8 %140 to i32
  %142 = icmp eq i32 %141, 91
  br i1 %142, label %143, label %162

143:                                              ; preds = %137
  %144 = load ptr, ptr %6, align 8, !tbaa !5
  %145 = load ptr, ptr %144, align 8, !tbaa !5
  %146 = getelementptr inbounds i8, ptr %145, i32 1
  store ptr %146, ptr %144, align 8, !tbaa !5
  %147 = load ptr, ptr %5, align 8, !tbaa !5
  %148 = getelementptr inbounds %class.cjson, ptr %147, i32 0, i32 11
  %149 = load ptr, ptr %148, align 8, !tbaa !14
  %150 = icmp ne ptr %149, null
  br i1 %150, label %156, label %151

151:                                              ; preds = %143
  %152 = load i8, ptr %8, align 1, !tbaa !9, !range !12, !noundef !13
  %153 = trunc i8 %152 to i1
  br i1 %153, label %156, label %154

154:                                              ; preds = %151
  %155 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN5cjson7setTypeENS_7Types_eE(ptr noundef nonnull align 8 dereferenceable(89) %155, i64 noundef 3)
  store i8 1, ptr %8, align 1, !tbaa !9
  br label %161

156:                                              ; preds = %151, %143
  %157 = load ptr, ptr %5, align 8, !tbaa !5
  %158 = call noundef ptr @_ZN5cjson9pushArrayEv(ptr noundef nonnull align 8 dereferenceable(89) %157)
  %159 = load ptr, ptr %6, align 8, !tbaa !5
  %160 = call noundef ptr @_ZN5cjson11parseBranchEPS_RPcb(ptr noundef %158, ptr noundef nonnull align 8 dereferenceable(8) %159, i1 noundef zeroext false)
  br label %161

161:                                              ; preds = %156, %154
  br label %592

162:                                              ; preds = %137
  %163 = load ptr, ptr %6, align 8, !tbaa !5
  %164 = load ptr, ptr %163, align 8, !tbaa !5
  %165 = load i8, ptr %164, align 1, !tbaa !11
  %166 = sext i8 %165 to i32
  %167 = icmp eq i32 %166, 45
  br i1 %167, label %180, label %168

168:                                              ; preds = %162
  %169 = load ptr, ptr %6, align 8, !tbaa !5
  %170 = load ptr, ptr %169, align 8, !tbaa !5
  %171 = load i8, ptr %170, align 1, !tbaa !11
  %172 = sext i8 %171 to i32
  %173 = icmp sge i32 %172, 48
  br i1 %173, label %174, label %206

174:                                              ; preds = %168
  %175 = load ptr, ptr %6, align 8, !tbaa !5
  %176 = load ptr, ptr %175, align 8, !tbaa !5
  %177 = load i8, ptr %176, align 1, !tbaa !11
  %178 = sext i8 %177 to i32
  %179 = icmp sle i32 %178, 57
  br i1 %179, label %180, label %206

180:                                              ; preds = %174, %162
  call void @llvm.lifetime.start.p0(i64 1, ptr %10) #6
  store i8 0, ptr %10, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 32, ptr %11) #6
  %181 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_Z12ParseNumericB5cxx11RPcRb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %11, ptr noundef nonnull align 8 dereferenceable(8) %181, ptr noundef nonnull align 1 dereferenceable(1) %10)
  %182 = load i8, ptr %10, align 1, !tbaa !9, !range !12, !noundef !13
  %183 = trunc i8 %182 to i1
  br i1 %183, label %184, label %194

184:                                              ; preds = %180
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #6
  %185 = load ptr, ptr %5, align 8, !tbaa !5
  %186 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %11) #6
  %187 = call double @strtod(ptr noundef %186, ptr noundef %12) #6
  %188 = invoke noundef ptr @_ZN5cjson4pushEd(ptr noundef nonnull align 8 dereferenceable(89) %185, double noundef %187)
          to label %189 unwind label %190

189:                                              ; preds = %184
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #6
  br label %204

190:                                              ; preds = %184
  %191 = landingpad { ptr, i32 }
          cleanup
  %192 = extractvalue { ptr, i32 } %191, 0
  store ptr %192, ptr %13, align 8
  %193 = extractvalue { ptr, i32 } %191, 1
  store i32 %193, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #6
  br label %205

194:                                              ; preds = %180
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #6
  %195 = load ptr, ptr %5, align 8, !tbaa !5
  %196 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %11) #6
  %197 = call i64 @strtoll(ptr noundef %196, ptr noundef %15, i32 noundef 10) #6
  %198 = invoke noundef ptr @_ZN5cjson4pushEl(ptr noundef nonnull align 8 dereferenceable(89) %195, i64 noundef %197)
          to label %199 unwind label %200

199:                                              ; preds = %194
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #6
  br label %204

200:                                              ; preds = %194
  %201 = landingpad { ptr, i32 }
          cleanup
  %202 = extractvalue { ptr, i32 } %201, 0
  store ptr %202, ptr %13, align 8
  %203 = extractvalue { ptr, i32 } %201, 1
  store i32 %203, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #6
  br label %205

204:                                              ; preds = %199, %189
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %11) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #6
  br label %591

205:                                              ; preds = %200, %190
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %11) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #6
  br label %597

206:                                              ; preds = %174, %168
  %207 = load ptr, ptr %6, align 8, !tbaa !5
  %208 = load ptr, ptr %207, align 8, !tbaa !5
  %209 = load i8, ptr %208, align 1, !tbaa !11
  %210 = sext i8 %209 to i32
  %211 = icmp eq i32 %210, 34
  br i1 %211, label %212, label %586

212:                                              ; preds = %206
  %213 = load ptr, ptr %6, align 8, !tbaa !5
  %214 = load ptr, ptr %213, align 8, !tbaa !5
  %215 = getelementptr inbounds i8, ptr %214, i32 1
  store ptr %215, ptr %213, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %16) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #6
  br label %216

216:                                              ; preds = %287, %212
  %217 = load ptr, ptr %6, align 8, !tbaa !5
  %218 = load ptr, ptr %217, align 8, !tbaa !5
  %219 = load i8, ptr %218, align 1, !tbaa !11
  %220 = sext i8 %219 to i32
  %221 = icmp ne i32 %220, 0
  br i1 %221, label %222, label %291

222:                                              ; preds = %216
  %223 = load ptr, ptr %6, align 8, !tbaa !5
  %224 = load ptr, ptr %223, align 8, !tbaa !5
  %225 = load i8, ptr %224, align 1, !tbaa !11
  %226 = sext i8 %225 to i32
  %227 = icmp eq i32 %226, 34
  br i1 %227, label %228, label %229

228:                                              ; preds = %222
  br label %291

229:                                              ; preds = %222
  %230 = load ptr, ptr %6, align 8, !tbaa !5
  %231 = load ptr, ptr %230, align 8, !tbaa !5
  %232 = load i8, ptr %231, align 1, !tbaa !11
  %233 = sext i8 %232 to i32
  %234 = icmp eq i32 %233, 92
  br i1 %234, label %235, label %281

235:                                              ; preds = %229
  %236 = load ptr, ptr %6, align 8, !tbaa !5
  %237 = load ptr, ptr %236, align 8, !tbaa !5
  %238 = getelementptr inbounds i8, ptr %237, i32 1
  store ptr %238, ptr %236, align 8, !tbaa !5
  %239 = load ptr, ptr %6, align 8, !tbaa !5
  %240 = load ptr, ptr %239, align 8, !tbaa !5
  %241 = load i8, ptr %240, align 1, !tbaa !11
  %242 = sext i8 %241 to i32
  switch i32 %242, label %277 [
    i32 114, label %243
    i32 110, label %250
    i32 116, label %253
    i32 102, label %256
    i32 98, label %259
    i32 118, label %262
    i32 47, label %265
    i32 92, label %268
    i32 34, label %271
    i32 39, label %274
  ]

243:                                              ; preds = %235
  %244 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc(ptr noundef nonnull align 8 dereferenceable(32) %16, i8 noundef signext 13)
          to label %245 unwind label %246

245:                                              ; preds = %243
  br label %280

246:                                              ; preds = %281, %277, %274, %271, %268, %265, %262, %259, %256, %253, %250, %243
  %247 = landingpad { ptr, i32 }
          cleanup
  %248 = extractvalue { ptr, i32 } %247, 0
  store ptr %248, ptr %13, align 8
  %249 = extractvalue { ptr, i32 } %247, 1
  store i32 %249, ptr %14, align 4
  br label %585

250:                                              ; preds = %235
  %251 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc(ptr noundef nonnull align 8 dereferenceable(32) %16, i8 noundef signext 10)
          to label %252 unwind label %246

252:                                              ; preds = %250
  br label %280

253:                                              ; preds = %235
  %254 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc(ptr noundef nonnull align 8 dereferenceable(32) %16, i8 noundef signext 9)
          to label %255 unwind label %246

255:                                              ; preds = %253
  br label %280

256:                                              ; preds = %235
  %257 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc(ptr noundef nonnull align 8 dereferenceable(32) %16, i8 noundef signext 12)
          to label %258 unwind label %246

258:                                              ; preds = %256
  br label %280

259:                                              ; preds = %235
  %260 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc(ptr noundef nonnull align 8 dereferenceable(32) %16, i8 noundef signext 8)
          to label %261 unwind label %246

261:                                              ; preds = %259
  br label %280

262:                                              ; preds = %235
  %263 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc(ptr noundef nonnull align 8 dereferenceable(32) %16, i8 noundef signext 11)
          to label %264 unwind label %246

264:                                              ; preds = %262
  br label %280

265:                                              ; preds = %235
  %266 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc(ptr noundef nonnull align 8 dereferenceable(32) %16, i8 noundef signext 47)
          to label %267 unwind label %246

267:                                              ; preds = %265
  br label %280

268:                                              ; preds = %235
  %269 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc(ptr noundef nonnull align 8 dereferenceable(32) %16, i8 noundef signext 92)
          to label %270 unwind label %246

270:                                              ; preds = %268
  br label %280

271:                                              ; preds = %235
  %272 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc(ptr noundef nonnull align 8 dereferenceable(32) %16, i8 noundef signext 34)
          to label %273 unwind label %246

273:                                              ; preds = %271
  br label %280

274:                                              ; preds = %235
  %275 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc(ptr noundef nonnull align 8 dereferenceable(32) %16, i8 noundef signext 39)
          to label %276 unwind label %246

276:                                              ; preds = %274
  br label %280

277:                                              ; preds = %235
  %278 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc(ptr noundef nonnull align 8 dereferenceable(32) %16, i8 noundef signext 92)
          to label %279 unwind label %246

279:                                              ; preds = %277
  br label %280

280:                                              ; preds = %279, %276, %273, %270, %267, %264, %261, %258, %255, %252, %245
  br label %287

281:                                              ; preds = %229
  %282 = load ptr, ptr %6, align 8, !tbaa !5
  %283 = load ptr, ptr %282, align 8, !tbaa !5
  %284 = load i8, ptr %283, align 1, !tbaa !11
  %285 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc(ptr noundef nonnull align 8 dereferenceable(32) %16, i8 noundef signext %284)
          to label %286 unwind label %246

286:                                              ; preds = %281
  br label %287

287:                                              ; preds = %286, %280
  %288 = load ptr, ptr %6, align 8, !tbaa !5
  %289 = load ptr, ptr %288, align 8, !tbaa !5
  %290 = getelementptr inbounds i8, ptr %289, i32 1
  store ptr %290, ptr %288, align 8, !tbaa !5
  br label %216, !llvm.loop !18

291:                                              ; preds = %228, %216
  call void @llvm.lifetime.start.p0(i64 32, ptr %17) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull align 8 dereferenceable(32) %16)
          to label %292 unwind label %313

292:                                              ; preds = %291
  %293 = load ptr, ptr %6, align 8, !tbaa !5
  %294 = load ptr, ptr %293, align 8, !tbaa !5
  %295 = getelementptr inbounds i8, ptr %294, i32 1
  store ptr %295, ptr %293, align 8, !tbaa !5
  %296 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_Z8SkipJunkRPc(ptr noundef nonnull align 8 dereferenceable(8) %296)
          to label %297 unwind label %317

297:                                              ; preds = %292
  %298 = load ptr, ptr %6, align 8, !tbaa !5
  %299 = load ptr, ptr %298, align 8, !tbaa !5
  %300 = load i8, ptr %299, align 1, !tbaa !11
  %301 = sext i8 %300 to i32
  %302 = icmp eq i32 %301, 44
  br i1 %302, label %309, label %303

303:                                              ; preds = %297
  %304 = load ptr, ptr %6, align 8, !tbaa !5
  %305 = load ptr, ptr %304, align 8, !tbaa !5
  %306 = load i8, ptr %305, align 1, !tbaa !11
  %307 = sext i8 %306 to i32
  %308 = icmp eq i32 %307, 93
  br i1 %308, label %309, label %321

309:                                              ; preds = %303, %297
  %310 = load ptr, ptr %5, align 8, !tbaa !5
  %311 = invoke noundef ptr @_ZN5cjson4pushERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(89) %310, ptr noundef nonnull align 8 dereferenceable(32) %17)
          to label %312 unwind label %317

312:                                              ; preds = %309
  br label %579

313:                                              ; preds = %291
  %314 = landingpad { ptr, i32 }
          cleanup
  %315 = extractvalue { ptr, i32 } %314, 0
  store ptr %315, ptr %13, align 8
  %316 = extractvalue { ptr, i32 } %314, 1
  store i32 %316, ptr %14, align 4
  br label %584

317:                                              ; preds = %511, %445, %435, %431, %428, %425, %422, %419, %416, %413, %410, %407, %404, %401, %360, %354, %344, %338, %327, %309, %292
  %318 = landingpad { ptr, i32 }
          cleanup
  %319 = extractvalue { ptr, i32 } %318, 0
  store ptr %319, ptr %13, align 8
  %320 = extractvalue { ptr, i32 } %318, 1
  store i32 %320, ptr %14, align 4
  br label %583

321:                                              ; preds = %303
  %322 = load ptr, ptr %6, align 8, !tbaa !5
  %323 = load ptr, ptr %322, align 8, !tbaa !5
  %324 = load i8, ptr %323, align 1, !tbaa !11
  %325 = sext i8 %324 to i32
  %326 = icmp eq i32 %325, 58
  br i1 %326, label %327, label %578

327:                                              ; preds = %321
  %328 = load ptr, ptr %6, align 8, !tbaa !5
  %329 = load ptr, ptr %328, align 8, !tbaa !5
  %330 = getelementptr inbounds i8, ptr %329, i32 1
  store ptr %330, ptr %328, align 8, !tbaa !5
  %331 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_Z8SkipJunkRPc(ptr noundef nonnull align 8 dereferenceable(8) %331)
          to label %332 unwind label %317

332:                                              ; preds = %327
  %333 = load ptr, ptr %6, align 8, !tbaa !5
  %334 = load ptr, ptr %333, align 8, !tbaa !5
  %335 = load i8, ptr %334, align 1, !tbaa !11
  %336 = sext i8 %335 to i32
  %337 = icmp eq i32 %336, 123
  br i1 %337, label %338, label %348

338:                                              ; preds = %332
  %339 = load ptr, ptr %6, align 8, !tbaa !5
  %340 = load ptr, ptr %339, align 8, !tbaa !5
  %341 = getelementptr inbounds i8, ptr %340, i32 1
  store ptr %341, ptr %339, align 8, !tbaa !5
  %342 = load ptr, ptr %5, align 8, !tbaa !5
  %343 = invoke noundef ptr @_ZN5cjson9setObjectERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(89) %342, ptr noundef nonnull align 8 dereferenceable(32) %17)
          to label %344 unwind label %317

344:                                              ; preds = %338
  %345 = load ptr, ptr %6, align 8, !tbaa !5
  %346 = invoke noundef ptr @_ZN5cjson11parseBranchEPS_RPcb(ptr noundef %343, ptr noundef nonnull align 8 dereferenceable(8) %345, i1 noundef zeroext false)
          to label %347 unwind label %317

347:                                              ; preds = %344
  store i32 2, ptr %9, align 4
  br label %580, !llvm.loop !20

348:                                              ; preds = %332
  %349 = load ptr, ptr %6, align 8, !tbaa !5
  %350 = load ptr, ptr %349, align 8, !tbaa !5
  %351 = load i8, ptr %350, align 1, !tbaa !11
  %352 = sext i8 %351 to i32
  %353 = icmp eq i32 %352, 91
  br i1 %353, label %354, label %364

354:                                              ; preds = %348
  %355 = load ptr, ptr %6, align 8, !tbaa !5
  %356 = load ptr, ptr %355, align 8, !tbaa !5
  %357 = getelementptr inbounds i8, ptr %356, i32 1
  store ptr %357, ptr %355, align 8, !tbaa !5
  %358 = load ptr, ptr %5, align 8, !tbaa !5
  %359 = invoke noundef ptr @_ZN5cjson8setArrayERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(89) %358, ptr noundef nonnull align 8 dereferenceable(32) %17)
          to label %360 unwind label %317

360:                                              ; preds = %354
  %361 = load ptr, ptr %6, align 8, !tbaa !5
  %362 = invoke noundef ptr @_ZN5cjson11parseBranchEPS_RPcb(ptr noundef %359, ptr noundef nonnull align 8 dereferenceable(8) %361, i1 noundef zeroext false)
          to label %363 unwind label %317

363:                                              ; preds = %360
  store i32 2, ptr %9, align 4
  br label %580, !llvm.loop !20

364:                                              ; preds = %348
  %365 = load ptr, ptr %6, align 8, !tbaa !5
  %366 = load ptr, ptr %365, align 8, !tbaa !5
  %367 = load i8, ptr %366, align 1, !tbaa !11
  %368 = sext i8 %367 to i32
  %369 = icmp eq i32 %368, 34
  br i1 %369, label %370, label %449

370:                                              ; preds = %364
  %371 = load ptr, ptr %6, align 8, !tbaa !5
  %372 = load ptr, ptr %371, align 8, !tbaa !5
  %373 = getelementptr inbounds i8, ptr %372, i32 1
  store ptr %373, ptr %371, align 8, !tbaa !5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5clearEv(ptr noundef nonnull align 8 dereferenceable(32) %16) #6
  br label %374

374:                                              ; preds = %441, %370
  %375 = load ptr, ptr %6, align 8, !tbaa !5
  %376 = load ptr, ptr %375, align 8, !tbaa !5
  %377 = load i8, ptr %376, align 1, !tbaa !11
  %378 = sext i8 %377 to i32
  %379 = icmp ne i32 %378, 0
  br i1 %379, label %380, label %445

380:                                              ; preds = %374
  %381 = load ptr, ptr %6, align 8, !tbaa !5
  %382 = load ptr, ptr %381, align 8, !tbaa !5
  %383 = load i8, ptr %382, align 1, !tbaa !11
  %384 = sext i8 %383 to i32
  %385 = icmp eq i32 %384, 34
  br i1 %385, label %386, label %387

386:                                              ; preds = %380
  br label %445

387:                                              ; preds = %380
  %388 = load ptr, ptr %6, align 8, !tbaa !5
  %389 = load ptr, ptr %388, align 8, !tbaa !5
  %390 = load i8, ptr %389, align 1, !tbaa !11
  %391 = sext i8 %390 to i32
  %392 = icmp eq i32 %391, 92
  br i1 %392, label %393, label %435

393:                                              ; preds = %387
  %394 = load ptr, ptr %6, align 8, !tbaa !5
  %395 = load ptr, ptr %394, align 8, !tbaa !5
  %396 = getelementptr inbounds i8, ptr %395, i32 1
  store ptr %396, ptr %394, align 8, !tbaa !5
  %397 = load ptr, ptr %6, align 8, !tbaa !5
  %398 = load ptr, ptr %397, align 8, !tbaa !5
  %399 = load i8, ptr %398, align 1, !tbaa !11
  %400 = sext i8 %399 to i32
  switch i32 %400, label %431 [
    i32 114, label %401
    i32 110, label %404
    i32 116, label %407
    i32 102, label %410
    i32 98, label %413
    i32 118, label %416
    i32 47, label %419
    i32 92, label %422
    i32 34, label %425
    i32 39, label %428
  ]

401:                                              ; preds = %393
  %402 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc(ptr noundef nonnull align 8 dereferenceable(32) %16, i8 noundef signext 13)
          to label %403 unwind label %317

403:                                              ; preds = %401
  br label %434

404:                                              ; preds = %393
  %405 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc(ptr noundef nonnull align 8 dereferenceable(32) %16, i8 noundef signext 10)
          to label %406 unwind label %317

406:                                              ; preds = %404
  br label %434

407:                                              ; preds = %393
  %408 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc(ptr noundef nonnull align 8 dereferenceable(32) %16, i8 noundef signext 9)
          to label %409 unwind label %317

409:                                              ; preds = %407
  br label %434

410:                                              ; preds = %393
  %411 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc(ptr noundef nonnull align 8 dereferenceable(32) %16, i8 noundef signext 12)
          to label %412 unwind label %317

412:                                              ; preds = %410
  br label %434

413:                                              ; preds = %393
  %414 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc(ptr noundef nonnull align 8 dereferenceable(32) %16, i8 noundef signext 8)
          to label %415 unwind label %317

415:                                              ; preds = %413
  br label %434

416:                                              ; preds = %393
  %417 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc(ptr noundef nonnull align 8 dereferenceable(32) %16, i8 noundef signext 11)
          to label %418 unwind label %317

418:                                              ; preds = %416
  br label %434

419:                                              ; preds = %393
  %420 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc(ptr noundef nonnull align 8 dereferenceable(32) %16, i8 noundef signext 47)
          to label %421 unwind label %317

421:                                              ; preds = %419
  br label %434

422:                                              ; preds = %393
  %423 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc(ptr noundef nonnull align 8 dereferenceable(32) %16, i8 noundef signext 92)
          to label %424 unwind label %317

424:                                              ; preds = %422
  br label %434

425:                                              ; preds = %393
  %426 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc(ptr noundef nonnull align 8 dereferenceable(32) %16, i8 noundef signext 34)
          to label %427 unwind label %317

427:                                              ; preds = %425
  br label %434

428:                                              ; preds = %393
  %429 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc(ptr noundef nonnull align 8 dereferenceable(32) %16, i8 noundef signext 39)
          to label %430 unwind label %317

430:                                              ; preds = %428
  br label %434

431:                                              ; preds = %393
  %432 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc(ptr noundef nonnull align 8 dereferenceable(32) %16, i8 noundef signext 92)
          to label %433 unwind label %317

433:                                              ; preds = %431
  br label %434

434:                                              ; preds = %433, %430, %427, %424, %421, %418, %415, %412, %409, %406, %403
  br label %441

435:                                              ; preds = %387
  %436 = load ptr, ptr %6, align 8, !tbaa !5
  %437 = load ptr, ptr %436, align 8, !tbaa !5
  %438 = load i8, ptr %437, align 1, !tbaa !11
  %439 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc(ptr noundef nonnull align 8 dereferenceable(32) %16, i8 noundef signext %438)
          to label %440 unwind label %317

440:                                              ; preds = %435
  br label %441

441:                                              ; preds = %440, %434
  %442 = load ptr, ptr %6, align 8, !tbaa !5
  %443 = load ptr, ptr %442, align 8, !tbaa !5
  %444 = getelementptr inbounds i8, ptr %443, i32 1
  store ptr %444, ptr %442, align 8, !tbaa !5
  br label %374, !llvm.loop !21

445:                                              ; preds = %386, %374
  %446 = load ptr, ptr %5, align 8, !tbaa !5
  %447 = invoke noundef ptr @_ZN5cjson3setERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_(ptr noundef nonnull align 8 dereferenceable(89) %446, ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull align 8 dereferenceable(32) %16)
          to label %448 unwind label %317

448:                                              ; preds = %445
  br label %574

449:                                              ; preds = %364
  %450 = load ptr, ptr %6, align 8, !tbaa !5
  %451 = load ptr, ptr %450, align 8, !tbaa !5
  %452 = load i8, ptr %451, align 1, !tbaa !11
  %453 = sext i8 %452 to i32
  %454 = icmp eq i32 %453, 45
  br i1 %454, label %467, label %455

455:                                              ; preds = %449
  %456 = load ptr, ptr %6, align 8, !tbaa !5
  %457 = load ptr, ptr %456, align 8, !tbaa !5
  %458 = load i8, ptr %457, align 1, !tbaa !11
  %459 = sext i8 %458 to i32
  %460 = icmp sge i32 %459, 48
  br i1 %460, label %461, label %499

461:                                              ; preds = %455
  %462 = load ptr, ptr %6, align 8, !tbaa !5
  %463 = load ptr, ptr %462, align 8, !tbaa !5
  %464 = load i8, ptr %463, align 1, !tbaa !11
  %465 = sext i8 %464 to i32
  %466 = icmp sle i32 %465, 57
  br i1 %466, label %467, label %499

467:                                              ; preds = %461, %449
  call void @llvm.lifetime.start.p0(i64 1, ptr %18) #6
  store i8 0, ptr %18, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 32, ptr %19) #6
  %468 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_Z12ParseNumericB5cxx11RPcRb(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %19, ptr noundef nonnull align 8 dereferenceable(8) %468, ptr noundef nonnull align 1 dereferenceable(1) %18)
          to label %469 unwind label %478

469:                                              ; preds = %467
  %470 = load i8, ptr %18, align 1, !tbaa !9, !range !12, !noundef !13
  %471 = trunc i8 %470 to i1
  br i1 %471, label %472, label %486

472:                                              ; preds = %469
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #6
  %473 = load ptr, ptr %5, align 8, !tbaa !5
  %474 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %19) #6
  %475 = call double @strtod(ptr noundef %474, ptr noundef %20) #6
  %476 = invoke noundef ptr @_ZN5cjson3setERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEd(ptr noundef nonnull align 8 dereferenceable(89) %473, ptr noundef nonnull align 8 dereferenceable(32) %17, double noundef %475)
          to label %477 unwind label %482

477:                                              ; preds = %472
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #6
  br label %496

478:                                              ; preds = %467
  %479 = landingpad { ptr, i32 }
          cleanup
  %480 = extractvalue { ptr, i32 } %479, 0
  store ptr %480, ptr %13, align 8
  %481 = extractvalue { ptr, i32 } %479, 1
  store i32 %481, ptr %14, align 4
  br label %498

482:                                              ; preds = %472
  %483 = landingpad { ptr, i32 }
          cleanup
  %484 = extractvalue { ptr, i32 } %483, 0
  store ptr %484, ptr %13, align 8
  %485 = extractvalue { ptr, i32 } %483, 1
  store i32 %485, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #6
  br label %497

486:                                              ; preds = %469
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #6
  %487 = load ptr, ptr %5, align 8, !tbaa !5
  %488 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %19) #6
  %489 = call i64 @strtoll(ptr noundef %488, ptr noundef %21, i32 noundef 10) #6
  %490 = invoke noundef ptr @_ZN5cjson3setERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEl(ptr noundef nonnull align 8 dereferenceable(89) %487, ptr noundef nonnull align 8 dereferenceable(32) %17, i64 noundef %489)
          to label %491 unwind label %492

491:                                              ; preds = %486
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #6
  br label %496

492:                                              ; preds = %486
  %493 = landingpad { ptr, i32 }
          cleanup
  %494 = extractvalue { ptr, i32 } %493, 0
  store ptr %494, ptr %13, align 8
  %495 = extractvalue { ptr, i32 } %493, 1
  store i32 %495, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #6
  br label %497

496:                                              ; preds = %491, %477
  store i32 2, ptr %9, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #6
  br label %580

497:                                              ; preds = %492, %482
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #6
  br label %498

498:                                              ; preds = %497, %478
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #6
  br label %583

499:                                              ; preds = %461, %455
  %500 = load ptr, ptr %6, align 8, !tbaa !5
  %501 = load ptr, ptr %500, align 8, !tbaa !5
  %502 = load i8, ptr %501, align 1, !tbaa !11
  %503 = sext i8 %502 to i32
  %504 = icmp eq i32 %503, 78
  br i1 %504, label %511, label %505

505:                                              ; preds = %499
  %506 = load ptr, ptr %6, align 8, !tbaa !5
  %507 = load ptr, ptr %506, align 8, !tbaa !5
  %508 = load i8, ptr %507, align 1, !tbaa !11
  %509 = sext i8 %508 to i32
  %510 = icmp eq i32 %509, 110
  br i1 %510, label %511, label %518

511:                                              ; preds = %505, %499
  %512 = load ptr, ptr %5, align 8, !tbaa !5
  %513 = invoke noundef ptr @_ZN5cjson3setERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(89) %512, ptr noundef nonnull align 8 dereferenceable(32) %17)
          to label %514 unwind label %317

514:                                              ; preds = %511
  %515 = load ptr, ptr %6, align 8, !tbaa !5
  %516 = load ptr, ptr %515, align 8, !tbaa !5
  %517 = getelementptr inbounds i8, ptr %516, i64 4
  store ptr %517, ptr %515, align 8, !tbaa !5
  store i32 2, ptr %9, align 4
  br label %580, !llvm.loop !20

518:                                              ; preds = %505
  %519 = load ptr, ptr %6, align 8, !tbaa !5
  %520 = load ptr, ptr %519, align 8, !tbaa !5
  %521 = load i8, ptr %520, align 1, !tbaa !11
  %522 = sext i8 %521 to i32
  %523 = icmp eq i32 %522, 117
  br i1 %523, label %530, label %524

524:                                              ; preds = %518
  %525 = load ptr, ptr %6, align 8, !tbaa !5
  %526 = load ptr, ptr %525, align 8, !tbaa !5
  %527 = load i8, ptr %526, align 1, !tbaa !11
  %528 = sext i8 %527 to i32
  %529 = icmp eq i32 %528, 85
  br i1 %529, label %530, label %534

530:                                              ; preds = %524, %518
  %531 = load ptr, ptr %6, align 8, !tbaa !5
  %532 = load ptr, ptr %531, align 8, !tbaa !5
  %533 = getelementptr inbounds i8, ptr %532, i64 8
  store ptr %533, ptr %531, align 8, !tbaa !5
  br label %571

534:                                              ; preds = %524
  %535 = load ptr, ptr %6, align 8, !tbaa !5
  %536 = load ptr, ptr %535, align 8, !tbaa !5
  %537 = load i8, ptr %536, align 1, !tbaa !11
  %538 = sext i8 %537 to i32
  %539 = icmp eq i32 %538, 116
  br i1 %539, label %546, label %540

540:                                              ; preds = %534
  %541 = load ptr, ptr %6, align 8, !tbaa !5
  %542 = load ptr, ptr %541, align 8, !tbaa !5
  %543 = load i8, ptr %542, align 1, !tbaa !11
  %544 = sext i8 %543 to i32
  %545 = icmp eq i32 %544, 102
  br i1 %545, label %546, label %570

546:                                              ; preds = %540, %534
  call void @llvm.lifetime.start.p0(i64 1, ptr %22) #6
  store i8 0, ptr %22, align 1, !tbaa !9
  %547 = load ptr, ptr %6, align 8, !tbaa !5
  %548 = load ptr, ptr %547, align 8, !tbaa !5
  %549 = load i8, ptr %548, align 1, !tbaa !11
  %550 = sext i8 %549 to i32
  %551 = icmp eq i32 %550, 116
  br i1 %551, label %552, label %556

552:                                              ; preds = %546
  store i8 1, ptr %22, align 1, !tbaa !9
  %553 = load ptr, ptr %6, align 8, !tbaa !5
  %554 = load ptr, ptr %553, align 8, !tbaa !5
  %555 = getelementptr inbounds i8, ptr %554, i64 3
  store ptr %555, ptr %553, align 8, !tbaa !5
  br label %560

556:                                              ; preds = %546
  %557 = load ptr, ptr %6, align 8, !tbaa !5
  %558 = load ptr, ptr %557, align 8, !tbaa !5
  %559 = getelementptr inbounds i8, ptr %558, i64 4
  store ptr %559, ptr %557, align 8, !tbaa !5
  br label %560

560:                                              ; preds = %556, %552
  %561 = load ptr, ptr %5, align 8, !tbaa !5
  %562 = load i8, ptr %22, align 1, !tbaa !9, !range !12, !noundef !13
  %563 = trunc i8 %562 to i1
  %564 = invoke noundef ptr @_ZN5cjson3setERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(89) %561, ptr noundef nonnull align 8 dereferenceable(32) %17, i1 noundef zeroext %563)
          to label %565 unwind label %566

565:                                              ; preds = %560
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #6
  br label %570

566:                                              ; preds = %560
  %567 = landingpad { ptr, i32 }
          cleanup
  %568 = extractvalue { ptr, i32 } %567, 0
  store ptr %568, ptr %13, align 8
  %569 = extractvalue { ptr, i32 } %567, 1
  store i32 %569, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #6
  br label %583

570:                                              ; preds = %565, %540
  br label %571

571:                                              ; preds = %570, %530
  br label %572

572:                                              ; preds = %571
  br label %573

573:                                              ; preds = %572
  br label %574

574:                                              ; preds = %573, %448
  %575 = load ptr, ptr %6, align 8, !tbaa !5
  %576 = load ptr, ptr %575, align 8, !tbaa !5
  %577 = getelementptr inbounds i8, ptr %576, i32 1
  store ptr %577, ptr %575, align 8, !tbaa !5
  br label %578

578:                                              ; preds = %574, %321
  br label %579

579:                                              ; preds = %578, %312
  store i32 0, ptr %9, align 4
  br label %580

580:                                              ; preds = %579, %514, %496, %363, %347
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %17) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #6
  %581 = load i32, ptr %9, align 4
  switch i32 %581, label %605 [
    i32 0, label %582
    i32 2, label %82
  ]

582:                                              ; preds = %580
  br label %590

583:                                              ; preds = %566, %498, %317
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #6
  br label %584

584:                                              ; preds = %583, %313
  call void @llvm.lifetime.end.p0(i64 32, ptr %17) #6
  br label %585

585:                                              ; preds = %584, %246
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #6
  br label %597

586:                                              ; preds = %206
  %587 = load ptr, ptr %6, align 8, !tbaa !5
  %588 = load ptr, ptr %587, align 8, !tbaa !5
  %589 = getelementptr inbounds i8, ptr %588, i32 1
  store ptr %589, ptr %587, align 8, !tbaa !5
  br label %590

590:                                              ; preds = %586, %582
  br label %591

591:                                              ; preds = %590, %204
  br label %592

592:                                              ; preds = %591, %161
  br label %593

593:                                              ; preds = %592, %136
  br label %82, !llvm.loop !20

594:                                              ; preds = %93
  %595 = load ptr, ptr %5, align 8, !tbaa !5
  store ptr %595, ptr %4, align 8
  store i32 1, ptr %9, align 4
  br label %596

596:                                              ; preds = %594, %107, %64
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #6
  br label %598

597:                                              ; preds = %585, %205
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #6
  br label %600

598:                                              ; preds = %596, %28
  %599 = load ptr, ptr %4, align 8
  ret ptr %599

600:                                              ; preds = %597
  %601 = load ptr, ptr %13, align 8
  %602 = load i32, ptr %14, align 4
  %603 = insertvalue { ptr, i32 } poison, ptr %601, 0
  %604 = insertvalue { ptr, i32 } %603, i32 %602, 1
  resume { ptr, i32 } %604

605:                                              ; preds = %580
  unreachable
}

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN5cjson12makeDocumentEv() #2 align 2

; Function Attrs: nounwind
declare i64 @strtoll(ptr noundef, ptr noundef, i32 noundef) #3

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_Z8SkipJunkRPc(ptr noundef nonnull align 8 dereferenceable(8)) #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_Z12ParseNumericB5cxx11RPcRb(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 1 dereferenceable(1)) #5

; Function Attrs: nounwind
declare double @strtod(ptr noundef, ptr noundef) #3

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc(ptr noundef nonnull align 8 dereferenceable(32), i8 noundef signext) #2 align 2

; Function Attrs: mustprogress uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5clearEv(ptr noundef nonnull align 8 dereferenceable(32)) #1 align 2

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"bool", !7, i64 0}
!11 = !{!7, !7, i64 0}
!12 = !{i8 0, i8 2}
!13 = !{}
!14 = !{!15, !6, i64 80}
!15 = !{!"_ZTS5cjson", !6, i64 0, !16, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !17, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !10, i64 88}
!16 = !{!"_ZTSN5cjson7Types_eE", !7, i64 0}
!17 = !{!"int", !7, i64 0}
!18 = distinct !{!18, !19}
!19 = !{!"llvm.loop.mustprogress"}
!20 = distinct !{!20, !19}
!21 = distinct !{!21, !19}


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

%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #1 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN5cjson7setTypeENS_7Types_eE(ptr noundef nonnull align 8 dereferenceable(89), i64 noundef) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN5cjson4pushEl(ptr noundef nonnull align 8 dereferenceable(89), i64 noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN5cjson4pushEd(ptr noundef nonnull align 8 dereferenceable(89), double noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN5cjson4pushERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(89), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN5cjson9pushArrayEv(ptr noundef nonnull align 8 dereferenceable(89)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN5cjson10pushObjectEv(ptr noundef nonnull align 8 dereferenceable(89)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN5cjson3setERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEl(ptr noundef nonnull align 8 dereferenceable(89), ptr noundef nonnull align 8 dereferenceable(32), i64 noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN5cjson3setERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEd(ptr noundef nonnull align 8 dereferenceable(89), ptr noundef nonnull align 8 dereferenceable(32), double noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN5cjson3setERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_(ptr noundef nonnull align 8 dereferenceable(89), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN5cjson3setERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(89), ptr noundef nonnull align 8 dereferenceable(32), i1 noundef zeroext) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN5cjson3setERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(89), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN5cjson8setArrayERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(89), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN5cjson9setObjectERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(89), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
define dso_local noundef ptr @_ZN5cjson11parseBranchEPS_RPcb(ptr noundef %0, ptr noundef nonnull align 8 dereferenceable(8) %1, i1 noundef zeroext %2) local_unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca i8, align 1
  %5 = alloca %"class.std::__cxx11::basic_string", align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca %"class.std::__cxx11::basic_string", align 8
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca i8, align 1
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = load ptr, ptr %1, align 8, !tbaa !5
  %15 = load i8, ptr %14, align 1, !tbaa !9
  %.not = icmp eq i8 %15, 0
  br i1 %.not, label %16, label %18

16:                                               ; preds = %3
  %17 = tail call noundef ptr @_ZN5cjson12makeDocumentEv()
  br label %.critedge

18:                                               ; preds = %3
  br i1 %2, label %19, label %25

19:                                               ; preds = %18
  tail call void @_Z8SkipJunkRPc(ptr noundef nonnull align 8 dereferenceable(8) %1)
  %20 = load ptr, ptr %1, align 8, !tbaa !5
  %21 = load i8, ptr %20, align 1, !tbaa !9
  %22 = icmp eq i8 %21, 123
  %. = select i1 %22, i64 2, i64 3
  tail call void @_ZN5cjson7setTypeENS_7Types_eE(ptr noundef nonnull align 8 dereferenceable(89) %0, i64 noundef %.)
  %23 = load ptr, ptr %1, align 8, !tbaa !5
  %24 = getelementptr inbounds i8, ptr %23, i64 1
  store ptr %24, ptr %1, align 8, !tbaa !5
  br label %25

25:                                               ; preds = %19, %18
  %26 = icmp eq ptr %0, null
  br i1 %26, label %27, label %35

27:                                               ; preds = %25
  tail call void @_Z8SkipJunkRPc(ptr noundef nonnull align 8 dereferenceable(8) %1)
  %28 = load ptr, ptr %1, align 8, !tbaa !5
  %29 = load i8, ptr %28, align 1, !tbaa !9
  %30 = tail call noundef ptr @_ZN5cjson12makeDocumentEv()
  switch i8 %29, label %.critedge [
    i8 123, label %32
    i8 91, label %31
  ]

31:                                               ; preds = %27
  tail call void @_ZN5cjson7setTypeENS_7Types_eE(ptr noundef nonnull align 8 dereferenceable(89) %30, i64 noundef 3)
  br label %32

32:                                               ; preds = %27, %31
  %33 = load ptr, ptr %1, align 8, !tbaa !5
  %34 = getelementptr inbounds i8, ptr %33, i64 1
  store ptr %34, ptr %1, align 8, !tbaa !5
  br label %35

35:                                               ; preds = %32, %25
  %.1117 = phi ptr [ %30, %32 ], [ %0, %25 ]
  %.1111 = phi i1 [ true, %32 ], [ %2, %25 ]
  %36 = getelementptr inbounds i8, ptr %.1117, i64 80
  br label %.outer.outer

.outer.outer:                                     ; preds = %.outer.outer.backedge, %35
  %.2112.ph.ph = phi i1 [ %.1111, %35 ], [ true, %.outer.outer.backedge ]
  br label %.outer

.outer:                                           ; preds = %.outer.backedge, %.outer.outer
  br label %37

.critedge146:                                     ; preds = %.invoke253, %179, %173
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #6
  br label %37

37:                                               ; preds = %.outer, %.critedge146
  %38 = load ptr, ptr %1, align 8, !tbaa !5
  %39 = load i8, ptr %38, align 1, !tbaa !9
  switch i8 %39, label %56 [
    i8 0, label %.critedge
    i8 26, label %.critedge
    i8 125, label %40
    i8 93, label %40
    i8 123, label %42
    i8 91, label %49
    i8 45, label %58
  ]

40:                                               ; preds = %37, %37
  %41 = getelementptr inbounds i8, ptr %38, i64 1
  store ptr %41, ptr %1, align 8, !tbaa !5
  br label %.critedge

42:                                               ; preds = %37
  %43 = getelementptr inbounds i8, ptr %38, i64 1
  store ptr %43, ptr %1, align 8, !tbaa !5
  %44 = load ptr, ptr %36, align 8, !tbaa !10
  %.not143 = icmp eq ptr %44, null
  %.not143.not = xor i1 %.not143, true
  %brmerge = or i1 %.not143.not, %.2112.ph.ph
  br i1 %brmerge, label %46, label %45

45:                                               ; preds = %42
  call void @_ZN5cjson7setTypeENS_7Types_eE(ptr noundef nonnull align 8 dereferenceable(89) %.1117, i64 noundef 2)
  br label %.outer.outer.backedge

.outer.outer.backedge:                            ; preds = %45, %52
  br label %.outer.outer, !llvm.loop !15

46:                                               ; preds = %42
  %47 = call noundef ptr @_ZN5cjson10pushObjectEv(ptr noundef nonnull align 8 dereferenceable(89) %.1117)
  %48 = call noundef ptr @_ZN5cjson11parseBranchEPS_RPcb(ptr noundef %47, ptr noundef nonnull align 8 dereferenceable(8) %1, i1 noundef zeroext false)
  br label %.outer.backedge

49:                                               ; preds = %37
  %50 = getelementptr inbounds i8, ptr %38, i64 1
  store ptr %50, ptr %1, align 8, !tbaa !5
  %51 = load ptr, ptr %36, align 8, !tbaa !10
  %.not142 = icmp eq ptr %51, null
  %.not142.not = xor i1 %.not142, true
  %brmerge353 = or i1 %.not142.not, %.2112.ph.ph
  br i1 %brmerge353, label %53, label %52

52:                                               ; preds = %49
  call void @_ZN5cjson7setTypeENS_7Types_eE(ptr noundef nonnull align 8 dereferenceable(89) %.1117, i64 noundef 3)
  br label %.outer.outer.backedge

53:                                               ; preds = %49
  %54 = call noundef ptr @_ZN5cjson9pushArrayEv(ptr noundef nonnull align 8 dereferenceable(89) %.1117)
  %55 = call noundef ptr @_ZN5cjson11parseBranchEPS_RPcb(ptr noundef %54, ptr noundef nonnull align 8 dereferenceable(8) %1, i1 noundef zeroext false)
  br label %.outer.backedge

56:                                               ; preds = %37
  %57 = add i8 %39, -48
  %or.cond = icmp ult i8 %57, 10
  br i1 %or.cond, label %58, label %77

58:                                               ; preds = %56, %37
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %4) #6
  store i8 0, ptr %4, align 1, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #6
  call void @_Z12ParseNumericB5cxx11RPcRb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %5, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 1 dereferenceable(1) %4)
  %59 = load i8, ptr %4, align 1, !tbaa !17, !range !18, !noundef !19
  %60 = trunc nuw i8 %59 to i1
  br i1 %60, label %61, label %68

61:                                               ; preds = %58
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #6
  %62 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %5) #6
  %63 = call double @strtod(ptr noundef %62, ptr noundef nonnull %6) #6
  %64 = invoke noundef ptr @_ZN5cjson4pushEd(ptr noundef nonnull align 8 dereferenceable(89) %.1117, double noundef %63)
          to label %65 unwind label %66

65:                                               ; preds = %61
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #6
  br label %75

66:                                               ; preds = %61
  %67 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #6
  br label %76

68:                                               ; preds = %58
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #6
  %69 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %5) #6
  %70 = call i64 @strtoll(ptr noundef %69, ptr noundef nonnull %7, i32 noundef 10) #6
  %71 = invoke noundef ptr @_ZN5cjson4pushEl(ptr noundef nonnull align 8 dereferenceable(89) %.1117, i64 noundef %70)
          to label %72 unwind label %73

72:                                               ; preds = %68
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #6
  br label %75

73:                                               ; preds = %68
  %74 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #6
  br label %76

75:                                               ; preds = %72, %65
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #6
  br label %.outer.backedge

76:                                               ; preds = %73, %66
  %.pn139 = phi { ptr, i32 } [ %67, %66 ], [ %74, %73 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #6
  br label %193

77:                                               ; preds = %56
  %78 = icmp eq i8 %39, 34
  %79 = getelementptr inbounds i8, ptr %38, i64 1
  store ptr %79, ptr %1, align 8, !tbaa !5
  br i1 %78, label %80, label %.outer.backedge, !llvm.loop !15

80:                                               ; preds = %77
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #6
  %.pre = load ptr, ptr %1, align 8, !tbaa !5
  br label %81

81:                                               ; preds = %101, %80
  %82 = phi ptr [ %103, %101 ], [ %.pre, %80 ]
  %83 = load i8, ptr %82, align 1, !tbaa !9
  switch i8 %83, label %.invoke [
    i8 0, label %104
    i8 34, label %104
    i8 92, label %84
  ]

84:                                               ; preds = %81
  %85 = getelementptr inbounds i8, ptr %82, i64 1
  store ptr %85, ptr %1, align 8, !tbaa !5
  %86 = load i8, ptr %85, align 1, !tbaa !9
  switch i8 %86, label %98 [
    i8 114, label %87
    i8 110, label %.invoke
    i8 116, label %90
    i8 102, label %91
    i8 98, label %92
    i8 118, label %93
    i8 47, label %94
    i8 92, label %95
    i8 34, label %96
    i8 39, label %97
  ]

87:                                               ; preds = %84
  br label %.invoke

88:                                               ; preds = %.invoke
  %89 = landingpad { ptr, i32 }
          cleanup
  br label %192

90:                                               ; preds = %84
  br label %.invoke

91:                                               ; preds = %84
  br label %.invoke

92:                                               ; preds = %84
  br label %.invoke

93:                                               ; preds = %84
  br label %.invoke

94:                                               ; preds = %84
  br label %.invoke

95:                                               ; preds = %84
  br label %.invoke

96:                                               ; preds = %84
  br label %.invoke

97:                                               ; preds = %84
  br label %.invoke

98:                                               ; preds = %84
  br label %.invoke

.invoke:                                          ; preds = %81, %84, %87, %90, %91, %92, %93, %94, %95, %96, %97, %98
  %99 = phi i8 [ 92, %98 ], [ %86, %97 ], [ %86, %96 ], [ %86, %95 ], [ %86, %94 ], [ 11, %93 ], [ 8, %92 ], [ 12, %91 ], [ 9, %90 ], [ 13, %87 ], [ 10, %84 ], [ %83, %81 ]
  %100 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc(ptr noundef nonnull align 8 dereferenceable(32) %8, i8 noundef signext %99)
          to label %101 unwind label %88

101:                                              ; preds = %.invoke
  %102 = load ptr, ptr %1, align 8, !tbaa !5
  %103 = getelementptr inbounds i8, ptr %102, i64 1
  store ptr %103, ptr %1, align 8, !tbaa !5
  br label %81, !llvm.loop !20

104:                                              ; preds = %81, %81
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #6
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 8 dereferenceable(32) %8)
          to label %105 unwind label %112

105:                                              ; preds = %104
  %106 = load ptr, ptr %1, align 8, !tbaa !5
  %107 = getelementptr inbounds i8, ptr %106, i64 1
  store ptr %107, ptr %1, align 8, !tbaa !5
  call void @_Z8SkipJunkRPc(ptr noundef nonnull align 8 dereferenceable(8) %1)
  %108 = load ptr, ptr %1, align 8, !tbaa !5
  %109 = load i8, ptr %108, align 1, !tbaa !9
  switch i8 %109, label %.loopexit147 [
    i8 44, label %110
    i8 93, label %110
    i8 58, label %114
  ]

110:                                              ; preds = %105, %105
  %111 = invoke noundef ptr @_ZN5cjson4pushERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(89) %.1117, ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %.loopexit147 unwind label %.loopexit.split-lp.loopexit.split-lp

112:                                              ; preds = %104
  %113 = landingpad { ptr, i32 }
          cleanup
  br label %191

.loopexit:                                        ; preds = %.invoke252
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit:                      ; preds = %.invoke253, %177, %121, %118
  %lpad.loopexit148 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp:             ; preds = %149, %110
  %lpad.loopexit.split-lp149 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

114:                                              ; preds = %105
  %115 = getelementptr inbounds i8, ptr %108, i64 1
  store ptr %115, ptr %1, align 8, !tbaa !5
  call void @_Z8SkipJunkRPc(ptr noundef nonnull align 8 dereferenceable(8) %1)
  %116 = load ptr, ptr %1, align 8, !tbaa !5
  %117 = load i8, ptr %116, align 1, !tbaa !9
  switch i8 %117, label %151 [
    i8 123, label %118
    i8 91, label %121
    i8 34, label %126
    i8 45, label %153
  ]

118:                                              ; preds = %114
  %119 = getelementptr inbounds i8, ptr %116, i64 1
  store ptr %119, ptr %1, align 8, !tbaa !5
  %120 = invoke noundef ptr @_ZN5cjson9setObjectERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(89) %.1117, ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %.invoke253 unwind label %.loopexit.split-lp.loopexit

121:                                              ; preds = %114
  %122 = getelementptr inbounds i8, ptr %116, i64 1
  store ptr %122, ptr %1, align 8, !tbaa !5
  %123 = invoke noundef ptr @_ZN5cjson8setArrayERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(89) %.1117, ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %.invoke253 unwind label %.loopexit.split-lp.loopexit

.invoke253:                                       ; preds = %121, %118
  %124 = phi ptr [ %120, %118 ], [ %123, %121 ]
  %125 = invoke noundef ptr @_ZN5cjson11parseBranchEPS_RPcb(ptr noundef %124, ptr noundef nonnull align 8 dereferenceable(8) %1, i1 noundef zeroext false)
          to label %.critedge146 unwind label %.loopexit.split-lp.loopexit, !llvm.loop !15

126:                                              ; preds = %114
  %127 = getelementptr inbounds i8, ptr %116, i64 1
  store ptr %127, ptr %1, align 8, !tbaa !5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5clearEv(ptr noundef nonnull align 8 dereferenceable(32) %8) #6
  %.pre218 = load ptr, ptr %1, align 8, !tbaa !5
  br label %128

128:                                              ; preds = %146, %126
  %129 = phi ptr [ %148, %146 ], [ %.pre218, %126 ]
  %130 = load i8, ptr %129, align 1, !tbaa !9
  switch i8 %130, label %.invoke252 [
    i8 0, label %149
    i8 34, label %149
    i8 92, label %131
  ]

131:                                              ; preds = %128
  %132 = getelementptr inbounds i8, ptr %129, i64 1
  store ptr %132, ptr %1, align 8, !tbaa !5
  %133 = load i8, ptr %132, align 1, !tbaa !9
  switch i8 %133, label %145 [
    i8 114, label %.invoke252
    i8 110, label %136
    i8 116, label %137
    i8 102, label %138
    i8 98, label %139
    i8 118, label %140
    i8 47, label %141
    i8 92, label %142
    i8 34, label %143
    i8 39, label %144
  ]

.invoke252:                                       ; preds = %128, %131, %145, %144, %143, %142, %141, %140, %139, %138, %137, %136
  %134 = phi i8 [ 10, %136 ], [ 9, %137 ], [ 12, %138 ], [ 8, %139 ], [ 11, %140 ], [ %133, %141 ], [ %133, %142 ], [ %133, %143 ], [ %133, %144 ], [ 92, %145 ], [ 13, %131 ], [ %130, %128 ]
  %135 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc(ptr noundef nonnull align 8 dereferenceable(32) %8, i8 noundef signext %134)
          to label %146 unwind label %.loopexit

136:                                              ; preds = %131
  br label %.invoke252

137:                                              ; preds = %131
  br label %.invoke252

138:                                              ; preds = %131
  br label %.invoke252

139:                                              ; preds = %131
  br label %.invoke252

140:                                              ; preds = %131
  br label %.invoke252

141:                                              ; preds = %131
  br label %.invoke252

142:                                              ; preds = %131
  br label %.invoke252

143:                                              ; preds = %131
  br label %.invoke252

144:                                              ; preds = %131
  br label %.invoke252

145:                                              ; preds = %131
  br label %.invoke252

146:                                              ; preds = %.invoke252
  %147 = load ptr, ptr %1, align 8, !tbaa !5
  %148 = getelementptr inbounds i8, ptr %147, i64 1
  store ptr %148, ptr %1, align 8, !tbaa !5
  br label %128, !llvm.loop !21

149:                                              ; preds = %128, %128
  %150 = invoke noundef ptr @_ZN5cjson3setERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES7_(ptr noundef nonnull align 8 dereferenceable(89) %.1117, ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 8 dereferenceable(32) %8)
          to label %.loopexit151 unwind label %.loopexit.split-lp.loopexit.split-lp

151:                                              ; preds = %114
  %152 = add i8 %117, -48
  %or.cond144 = icmp ult i8 %152, 10
  br i1 %or.cond144, label %153, label %176

153:                                              ; preds = %151, %114
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %10) #6
  store i8 0, ptr %10, align 1, !tbaa !17
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #6
  invoke void @_Z12ParseNumericB5cxx11RPcRb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %11, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 1 dereferenceable(1) %10)
          to label %154 unwind label %162

154:                                              ; preds = %153
  %155 = load i8, ptr %10, align 1, !tbaa !17, !range !18, !noundef !19
  %156 = trunc nuw i8 %155 to i1
  br i1 %156, label %157, label %166

157:                                              ; preds = %154
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #6
  %158 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %11) #6
  %159 = call double @strtod(ptr noundef %158, ptr noundef nonnull %12) #6
  %160 = invoke noundef ptr @_ZN5cjson3setERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEd(ptr noundef nonnull align 8 dereferenceable(89) %.1117, ptr noundef nonnull align 8 dereferenceable(32) %9, double noundef %159)
          to label %161 unwind label %164

161:                                              ; preds = %157
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #6
  br label %173

162:                                              ; preds = %153
  %163 = landingpad { ptr, i32 }
          cleanup
  br label %175

164:                                              ; preds = %157
  %165 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #6
  br label %174

166:                                              ; preds = %154
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #6
  %167 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %11) #6
  %168 = call i64 @strtoll(ptr noundef %167, ptr noundef nonnull %13, i32 noundef 10) #6
  %169 = invoke noundef ptr @_ZN5cjson3setERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEl(ptr noundef nonnull align 8 dereferenceable(89) %.1117, ptr noundef nonnull align 8 dereferenceable(32) %9, i64 noundef %168)
          to label %170 unwind label %171

170:                                              ; preds = %166
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #6
  br label %173

171:                                              ; preds = %166
  %172 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #6
  br label %174

173:                                              ; preds = %170, %161
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #6
  br label %.critedge146

174:                                              ; preds = %171, %164
  %.pn = phi { ptr, i32 } [ %165, %164 ], [ %172, %171 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #6
  br label %175

175:                                              ; preds = %174, %162
  %.pn.pn = phi { ptr, i32 } [ %.pn, %174 ], [ %163, %162 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #6
  br label %.loopexit.split-lp

176:                                              ; preds = %151
  switch i8 %117, label %.loopexit151 [
    i8 78, label %177
    i8 110, label %177
    i8 117, label %182
    i8 85, label %182
    i8 116, label %184
    i8 102, label %184
  ]

177:                                              ; preds = %176, %176
  %178 = invoke noundef ptr @_ZN5cjson3setERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(89) %.1117, ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %179 unwind label %.loopexit.split-lp.loopexit

179:                                              ; preds = %177
  %180 = load ptr, ptr %1, align 8, !tbaa !5
  %181 = getelementptr inbounds i8, ptr %180, i64 4
  store ptr %181, ptr %1, align 8, !tbaa !5
  br label %.critedge146, !llvm.loop !15

182:                                              ; preds = %176, %176
  %183 = getelementptr inbounds i8, ptr %116, i64 8
  store ptr %183, ptr %1, align 8, !tbaa !5
  br label %.loopexit151

184:                                              ; preds = %176, %176
  %185 = icmp eq i8 %117, 116
  %storemerge.v = select i1 %185, i64 3, i64 4
  %storemerge = getelementptr inbounds i8, ptr %116, i64 %storemerge.v
  store ptr %storemerge, ptr %1, align 8, !tbaa !5
  %186 = invoke noundef ptr @_ZN5cjson3setERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr noundef nonnull align 8 dereferenceable(89) %.1117, ptr noundef nonnull align 8 dereferenceable(32) %9, i1 noundef zeroext %185)
          to label %.loopexit151 unwind label %187

187:                                              ; preds = %184
  %188 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit151:                                     ; preds = %176, %184, %182, %149
  %189 = load ptr, ptr %1, align 8, !tbaa !5
  %190 = getelementptr inbounds i8, ptr %189, i64 1
  store ptr %190, ptr %1, align 8, !tbaa !5
  br label %.loopexit147

.loopexit147:                                     ; preds = %105, %110, %.loopexit151
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #6
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #6
  br label %.outer.backedge

.outer.backedge:                                  ; preds = %77, %.loopexit147, %53, %75, %46
  br label %.outer, !llvm.loop !15

.loopexit.split-lp:                               ; preds = %.loopexit, %.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp.loopexit, %187, %175
  %.pn135 = phi { ptr, i32 } [ %.pn.pn, %175 ], [ %188, %187 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit148, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp149, %.loopexit.split-lp.loopexit.split-lp ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #6
  br label %191

191:                                              ; preds = %.loopexit.split-lp, %112
  %.pn135.pn = phi { ptr, i32 } [ %.pn135, %.loopexit.split-lp ], [ %113, %112 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #6
  br label %192

192:                                              ; preds = %191, %88
  %.pn135.pn.pn = phi { ptr, i32 } [ %.pn135.pn, %191 ], [ %89, %88 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #6
  br label %193

193:                                              ; preds = %192, %76
  %.pn139.pn = phi { ptr, i32 } [ %.pn139, %76 ], [ %.pn135.pn.pn, %192 ]
  resume { ptr, i32 } %.pn139.pn

.critedge:                                        ; preds = %37, %37, %27, %40, %16
  %.1115 = phi ptr [ %17, %16 ], [ %.1117, %40 ], [ %30, %27 ], [ %.1117, %37 ], [ %.1117, %37 ]
  ret ptr %.1115
}

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN5cjson12makeDocumentEv() local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nofree nounwind willreturn
declare i64 @strtoll(ptr noundef readonly, ptr nocapture noundef, i32 noundef) local_unnamed_addr #3

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_Z8SkipJunkRPc(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_Z12ParseNumericB5cxx11RPcRb(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #5

; Function Attrs: mustprogress nofree nounwind willreturn
declare double @strtod(ptr noundef readonly, ptr nocapture noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc(ptr noundef nonnull align 8 dereferenceable(32), i8 noundef signext) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5clearEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #1 align 2

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!7, !7, i64 0}
!10 = !{!11, !6, i64 80}
!11 = !{!"_ZTS5cjson", !6, i64 0, !12, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !13, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !14, i64 88}
!12 = !{!"_ZTSN5cjson7Types_eE", !7, i64 0}
!13 = !{!"int", !7, i64 0}
!14 = !{!"bool", !7, i64 0}
!15 = distinct !{!15, !16}
!16 = !{!"llvm.loop.mustprogress"}
!17 = !{!14, !14, i64 0}
!18 = !{i8 0, i8 2}
!19 = !{}
!20 = distinct !{!20, !16}
!21 = distinct !{!21, !16}


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