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

; 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::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = type { %"struct.std::_Vector_base<cjson *, std::allocator<cjson *>>::_Vector_impl" }
%"struct.std::_Vector_base<cjson *, std::allocator<cjson *>>::_Vector_impl" = type { %"struct.std::_Vector_base<cjson *, std::allocator<cjson *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<cjson *, std::allocator<cjson *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"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.std::allocator.0" = type { i8 }
%"class.__gnu_cxx::__normal_iterator.18" = type { ptr }
%class.cjson = type <{ ptr, i64, ptr, ptr, ptr, ptr, i32, [4 x i8], ptr, ptr, ptr, ptr, i8, [7 x i8] }>

@.str = external hidden unnamed_addr constant [9 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [4 x i8], align 1

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

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 noundef zeroext i1 @_ZNK5cjson7hasNameEv(ptr noundef nonnull align 8 dereferenceable(89)) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK5cjson8getNodesEv(ptr dead_on_unwind noalias writable sret(%"class.std::vector.3") align 8, ptr noundef nonnull align 8 dereferenceable(89)) #2 align 2

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

; Function Attrs: nounwind willreturn memory(read)
declare i32 @strcmp(ptr noundef, ptr noundef) #3

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZNK5cjson16stringify_workerEPKS_R9HeapStackiS1_(ptr noundef nonnull align 8 dereferenceable(89) %0, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(56) %2, i32 noundef %3, ptr noundef %4) #2 align 2 personality ptr @__gxx_personality_v0 {
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca ptr, align 8
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::allocator.0", align 1
  %13 = alloca ptr, align 8
  %14 = alloca i32, align 4
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  %16 = alloca %"class.std::allocator.0", align 1
  %17 = alloca ptr, align 8
  %18 = alloca %"class.std::vector.3", align 8
  %19 = alloca %"class.__gnu_cxx::__normal_iterator.18", align 8
  %20 = alloca %"class.__gnu_cxx::__normal_iterator.18", align 8
  %21 = alloca %"class.__gnu_cxx::__normal_iterator.18", align 8
  %22 = alloca %"class.std::vector.3", align 8
  %23 = alloca %"class.__gnu_cxx::__normal_iterator.18", align 8
  %24 = alloca %"class.__gnu_cxx::__normal_iterator.18", align 8
  %25 = alloca %"class.__gnu_cxx::__normal_iterator.18", align 8
  store ptr %0, ptr %6, align 8, !tbaa !5
  store ptr %1, ptr %7, align 8, !tbaa !5
  store ptr %2, ptr %8, align 8, !tbaa !5
  store i32 %3, ptr %9, align 4, !tbaa !9
  store ptr %4, ptr %10, align 8, !tbaa !5
  %26 = load ptr, ptr %6, align 8
  call void @llvm.lifetime.start.p0(i64 32, ptr %11) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %12) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %12)
          to label %27 unwind label %32

27:                                               ; preds = %5
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %12) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %15) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %16) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %28 unwind label %36

28:                                               ; preds = %27
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #7
  %29 = load ptr, ptr %7, align 8, !tbaa !5
  %30 = getelementptr inbounds %class.cjson, ptr %29, i32 0, i32 1
  %31 = load i64, ptr %30, align 8, !tbaa !11
  switch i64 %31, label %444 [
    i64 1, label %40
    i64 4, label %70
    i64 5, label %107
    i64 6, label %154
    i64 7, label %227
    i64 3, label %260
    i64 2, label %352
    i64 0, label %445
  ]

32:                                               ; preds = %5
  %33 = landingpad { ptr, i32 }
          cleanup
  %34 = extractvalue { ptr, i32 } %33, 0
  store ptr %34, ptr %13, align 8
  %35 = extractvalue { ptr, i32 } %33, 1
  store i32 %35, ptr %14, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %12) #7
  br label %448

36:                                               ; preds = %27
  %37 = landingpad { ptr, i32 }
          cleanup
  %38 = extractvalue { ptr, i32 } %37, 0
  store ptr %38, ptr %13, align 8
  %39 = extractvalue { ptr, i32 } %37, 1
  store i32 %39, ptr %14, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #7
  br label %447

40:                                               ; preds = %28
  %41 = load i32, ptr %9, align 4, !tbaa !9
  %42 = icmp sge i32 %41, 0
  br i1 %42, label %43, label %51

43:                                               ; preds = %40
  %44 = load ptr, ptr %8, align 8, !tbaa !5
  %45 = load i32, ptr %9, align 4, !tbaa !9
  invoke void @_Z10emitIndentR9HeapStacki(ptr noundef nonnull align 8 dereferenceable(56) %44, i32 noundef %45)
          to label %46 unwind label %47

46:                                               ; preds = %43
  br label %51

47:                                               ; preds = %380, %376, %374, %371, %355, %288, %284, %282, %279, %263, %250, %243, %239, %237, %230, %224, %177, %170, %166, %164, %157, %139, %136, %123, %119, %117, %110, %93, %86, %82, %80, %73, %67, %60, %56, %54, %43
  %48 = landingpad { ptr, i32 }
          cleanup
  %49 = extractvalue { ptr, i32 } %48, 0
  store ptr %49, ptr %13, align 8
  %50 = extractvalue { ptr, i32 } %48, 1
  store i32 %50, ptr %14, align 4
  br label %446

51:                                               ; preds = %46, %40
  %52 = load ptr, ptr %7, align 8, !tbaa !5
  %53 = call noundef zeroext i1 @_ZNK5cjson7hasNameEv(ptr noundef nonnull align 8 dereferenceable(89) %52)
  br i1 %53, label %54, label %67

54:                                               ; preds = %51
  %55 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_Z8emitTextR9HeapStackc(ptr noundef nonnull align 8 dereferenceable(56) %55, i8 noundef signext 34)
          to label %56 unwind label %47

56:                                               ; preds = %54
  %57 = load ptr, ptr %8, align 8, !tbaa !5
  %58 = load ptr, ptr %7, align 8, !tbaa !5
  %59 = call noundef ptr @_ZNK5cjson8nameCstrEv(ptr noundef nonnull align 8 dereferenceable(89) %58)
  invoke void @_Z8emitTextR9HeapStackPKc(ptr noundef nonnull align 8 dereferenceable(56) %57, ptr noundef %59)
          to label %60 unwind label %47

60:                                               ; preds = %56
  %61 = load ptr, ptr %8, align 8, !tbaa !5
  %62 = load i32, ptr %9, align 4, !tbaa !9
  %63 = icmp sge i32 %62, 0
  %64 = zext i1 %63 to i64
  %65 = select i1 %63, ptr @.str.5, ptr @.str.6
  invoke void @_Z8emitTextR9HeapStackPKc(ptr noundef nonnull align 8 dereferenceable(56) %61, ptr noundef %65)
          to label %66 unwind label %47

66:                                               ; preds = %60
  br label %67

67:                                               ; preds = %66, %51
  %68 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_Z8emitTextR9HeapStackPKc(ptr noundef nonnull align 8 dereferenceable(56) %68, ptr noundef @.str.7)
          to label %69 unwind label %47

69:                                               ; preds = %67
  br label %445

70:                                               ; preds = %28
  %71 = load i32, ptr %9, align 4, !tbaa !9
  %72 = icmp sge i32 %71, 0
  br i1 %72, label %73, label %77

73:                                               ; preds = %70
  %74 = load ptr, ptr %8, align 8, !tbaa !5
  %75 = load i32, ptr %9, align 4, !tbaa !9
  invoke void @_Z10emitIndentR9HeapStacki(ptr noundef nonnull align 8 dereferenceable(56) %74, i32 noundef %75)
          to label %76 unwind label %47

76:                                               ; preds = %73
  br label %77

77:                                               ; preds = %76, %70
  %78 = load ptr, ptr %7, align 8, !tbaa !5
  %79 = call noundef zeroext i1 @_ZNK5cjson7hasNameEv(ptr noundef nonnull align 8 dereferenceable(89) %78)
  br i1 %79, label %80, label %93

80:                                               ; preds = %77
  %81 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_Z8emitTextR9HeapStackc(ptr noundef nonnull align 8 dereferenceable(56) %81, i8 noundef signext 34)
          to label %82 unwind label %47

82:                                               ; preds = %80
  %83 = load ptr, ptr %8, align 8, !tbaa !5
  %84 = load ptr, ptr %7, align 8, !tbaa !5
  %85 = call noundef ptr @_ZNK5cjson8nameCstrEv(ptr noundef nonnull align 8 dereferenceable(89) %84)
  invoke void @_Z8emitTextR9HeapStackPKc(ptr noundef nonnull align 8 dereferenceable(56) %83, ptr noundef %85)
          to label %86 unwind label %47

86:                                               ; preds = %82
  %87 = load ptr, ptr %8, align 8, !tbaa !5
  %88 = load i32, ptr %9, align 4, !tbaa !9
  %89 = icmp sge i32 %88, 0
  %90 = zext i1 %89 to i64
  %91 = select i1 %89, ptr @.str.5, ptr @.str.6
  invoke void @_Z8emitTextR9HeapStackPKc(ptr noundef nonnull align 8 dereferenceable(56) %87, ptr noundef %91)
          to label %92 unwind label %47

92:                                               ; preds = %86
  br label %93

93:                                               ; preds = %92, %77
  %94 = load ptr, ptr %7, align 8, !tbaa !5
  %95 = getelementptr inbounds %class.cjson, ptr %94, i32 0, i32 8
  %96 = load ptr, ptr %95, align 8, !tbaa !15
  %97 = load ptr, ptr %7, align 8, !tbaa !5
  %98 = getelementptr inbounds %class.cjson, ptr %97, i32 0, i32 3
  %99 = load ptr, ptr %98, align 8, !tbaa !16
  %100 = load i64, ptr %99, align 8, !tbaa !17
  %101 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %96, i64 noundef 128, ptr noundef @.str.8, i64 noundef %100) #7
  %102 = load ptr, ptr %8, align 8, !tbaa !5
  %103 = load ptr, ptr %7, align 8, !tbaa !5
  %104 = getelementptr inbounds %class.cjson, ptr %103, i32 0, i32 8
  %105 = load ptr, ptr %104, align 8, !tbaa !15
  invoke void @_Z8emitTextR9HeapStackPKc(ptr noundef nonnull align 8 dereferenceable(56) %102, ptr noundef %105)
          to label %106 unwind label %47

106:                                              ; preds = %93
  br label %445

107:                                              ; preds = %28
  %108 = load i32, ptr %9, align 4, !tbaa !9
  %109 = icmp sge i32 %108, 0
  br i1 %109, label %110, label %114

110:                                              ; preds = %107
  %111 = load ptr, ptr %8, align 8, !tbaa !5
  %112 = load i32, ptr %9, align 4, !tbaa !9
  invoke void @_Z10emitIndentR9HeapStacki(ptr noundef nonnull align 8 dereferenceable(56) %111, i32 noundef %112)
          to label %113 unwind label %47

113:                                              ; preds = %110
  br label %114

114:                                              ; preds = %113, %107
  %115 = load ptr, ptr %7, align 8, !tbaa !5
  %116 = call noundef zeroext i1 @_ZNK5cjson7hasNameEv(ptr noundef nonnull align 8 dereferenceable(89) %115)
  br i1 %116, label %117, label %130

117:                                              ; preds = %114
  %118 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_Z8emitTextR9HeapStackc(ptr noundef nonnull align 8 dereferenceable(56) %118, i8 noundef signext 34)
          to label %119 unwind label %47

119:                                              ; preds = %117
  %120 = load ptr, ptr %8, align 8, !tbaa !5
  %121 = load ptr, ptr %7, align 8, !tbaa !5
  %122 = call noundef ptr @_ZNK5cjson8nameCstrEv(ptr noundef nonnull align 8 dereferenceable(89) %121)
  invoke void @_Z8emitTextR9HeapStackPKc(ptr noundef nonnull align 8 dereferenceable(56) %120, ptr noundef %122)
          to label %123 unwind label %47

123:                                              ; preds = %119
  %124 = load ptr, ptr %8, align 8, !tbaa !5
  %125 = load i32, ptr %9, align 4, !tbaa !9
  %126 = icmp sge i32 %125, 0
  %127 = zext i1 %126 to i64
  %128 = select i1 %126, ptr @.str.5, ptr @.str.6
  invoke void @_Z8emitTextR9HeapStackPKc(ptr noundef nonnull align 8 dereferenceable(56) %124, ptr noundef %128)
          to label %129 unwind label %47

129:                                              ; preds = %123
  br label %130

130:                                              ; preds = %129, %114
  %131 = load ptr, ptr %7, align 8, !tbaa !5
  %132 = getelementptr inbounds %class.cjson, ptr %131, i32 0, i32 3
  %133 = load ptr, ptr %132, align 8, !tbaa !16
  %134 = load double, ptr %133, align 8, !tbaa !17
  %135 = fcmp oeq double %134, 0.000000e+00
  br i1 %135, label %136, label %139

136:                                              ; preds = %130
  %137 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_Z8emitTextR9HeapStackPKc(ptr noundef nonnull align 8 dereferenceable(56) %137, ptr noundef @.str.9)
          to label %138 unwind label %47

138:                                              ; preds = %136
  br label %153

139:                                              ; preds = %130
  %140 = load ptr, ptr %7, align 8, !tbaa !5
  %141 = getelementptr inbounds %class.cjson, ptr %140, i32 0, i32 8
  %142 = load ptr, ptr %141, align 8, !tbaa !15
  %143 = load ptr, ptr %7, align 8, !tbaa !5
  %144 = getelementptr inbounds %class.cjson, ptr %143, i32 0, i32 3
  %145 = load ptr, ptr %144, align 8, !tbaa !16
  %146 = load double, ptr %145, align 8, !tbaa !17
  %147 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %142, i64 noundef 128, ptr noundef @.str.10, double noundef %146) #7
  %148 = load ptr, ptr %8, align 8, !tbaa !5
  %149 = load ptr, ptr %7, align 8, !tbaa !5
  %150 = getelementptr inbounds %class.cjson, ptr %149, i32 0, i32 8
  %151 = load ptr, ptr %150, align 8, !tbaa !15
  invoke void @_Z8emitTextR9HeapStackPKc(ptr noundef nonnull align 8 dereferenceable(56) %148, ptr noundef %151)
          to label %152 unwind label %47

152:                                              ; preds = %139
  br label %153

153:                                              ; preds = %152, %138
  br label %445

154:                                              ; preds = %28
  %155 = load i32, ptr %9, align 4, !tbaa !9
  %156 = icmp sge i32 %155, 0
  br i1 %156, label %157, label %161

157:                                              ; preds = %154
  %158 = load ptr, ptr %8, align 8, !tbaa !5
  %159 = load i32, ptr %9, align 4, !tbaa !9
  invoke void @_Z10emitIndentR9HeapStacki(ptr noundef nonnull align 8 dereferenceable(56) %158, i32 noundef %159)
          to label %160 unwind label %47

160:                                              ; preds = %157
  br label %161

161:                                              ; preds = %160, %154
  %162 = load ptr, ptr %7, align 8, !tbaa !5
  %163 = call noundef zeroext i1 @_ZNK5cjson7hasNameEv(ptr noundef nonnull align 8 dereferenceable(89) %162)
  br i1 %163, label %164, label %177

164:                                              ; preds = %161
  %165 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_Z8emitTextR9HeapStackc(ptr noundef nonnull align 8 dereferenceable(56) %165, i8 noundef signext 34)
          to label %166 unwind label %47

166:                                              ; preds = %164
  %167 = load ptr, ptr %8, align 8, !tbaa !5
  %168 = load ptr, ptr %7, align 8, !tbaa !5
  %169 = call noundef ptr @_ZNK5cjson8nameCstrEv(ptr noundef nonnull align 8 dereferenceable(89) %168)
  invoke void @_Z8emitTextR9HeapStackPKc(ptr noundef nonnull align 8 dereferenceable(56) %167, ptr noundef %169)
          to label %170 unwind label %47

170:                                              ; preds = %166
  %171 = load ptr, ptr %8, align 8, !tbaa !5
  %172 = load i32, ptr %9, align 4, !tbaa !9
  %173 = icmp sge i32 %172, 0
  %174 = zext i1 %173 to i64
  %175 = select i1 %173, ptr @.str.5, ptr @.str.6
  invoke void @_Z8emitTextR9HeapStackPKc(ptr noundef nonnull align 8 dereferenceable(56) %171, ptr noundef %175)
          to label %176 unwind label %47

176:                                              ; preds = %170
  br label %177

177:                                              ; preds = %176, %161
  %178 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_Z8emitTextR9HeapStackc(ptr noundef nonnull align 8 dereferenceable(56) %178, i8 noundef signext 34)
          to label %179 unwind label %47

179:                                              ; preds = %177
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #7
  %180 = load ptr, ptr %7, align 8, !tbaa !5
  %181 = getelementptr inbounds %class.cjson, ptr %180, i32 0, i32 3
  %182 = load ptr, ptr %181, align 8, !tbaa !16
  store ptr %182, ptr %17, align 8, !tbaa !5
  br label %183

183:                                              ; preds = %221, %179
  %184 = load ptr, ptr %17, align 8, !tbaa !5
  %185 = load i8, ptr %184, align 1, !tbaa !17
  %186 = icmp ne i8 %185, 0
  br i1 %186, label %187, label %224

187:                                              ; preds = %183
  %188 = load ptr, ptr %17, align 8, !tbaa !5
  %189 = load i8, ptr %188, align 1, !tbaa !17
  %190 = sext i8 %189 to i32
  switch i32 %190, label %216 [
    i32 13, label %191
    i32 10, label %198
    i32 9, label %201
    i32 92, label %204
    i32 8, label %207
    i32 12, label %210
    i32 34, label %213
  ]

191:                                              ; preds = %187
  %192 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_Z8emitTextR9HeapStackPKc(ptr noundef nonnull align 8 dereferenceable(56) %192, ptr noundef @.str.11)
          to label %193 unwind label %194

193:                                              ; preds = %191
  br label %221

194:                                              ; preds = %216, %213, %210, %207, %204, %201, %198, %191
  %195 = landingpad { ptr, i32 }
          cleanup
  %196 = extractvalue { ptr, i32 } %195, 0
  store ptr %196, ptr %13, align 8
  %197 = extractvalue { ptr, i32 } %195, 1
  store i32 %197, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #7
  br label %446

198:                                              ; preds = %187
  %199 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_Z8emitTextR9HeapStackPKc(ptr noundef nonnull align 8 dereferenceable(56) %199, ptr noundef @.str.12)
          to label %200 unwind label %194

200:                                              ; preds = %198
  br label %221

201:                                              ; preds = %187
  %202 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_Z8emitTextR9HeapStackPKc(ptr noundef nonnull align 8 dereferenceable(56) %202, ptr noundef @.str.13)
          to label %203 unwind label %194

203:                                              ; preds = %201
  br label %221

204:                                              ; preds = %187
  %205 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_Z8emitTextR9HeapStackPKc(ptr noundef nonnull align 8 dereferenceable(56) %205, ptr noundef @.str.14)
          to label %206 unwind label %194

206:                                              ; preds = %204
  br label %221

207:                                              ; preds = %187
  %208 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_Z8emitTextR9HeapStackPKc(ptr noundef nonnull align 8 dereferenceable(56) %208, ptr noundef @.str.15)
          to label %209 unwind label %194

209:                                              ; preds = %207
  br label %221

210:                                              ; preds = %187
  %211 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_Z8emitTextR9HeapStackPKc(ptr noundef nonnull align 8 dereferenceable(56) %211, ptr noundef @.str.16)
          to label %212 unwind label %194

212:                                              ; preds = %210
  br label %221

213:                                              ; preds = %187
  %214 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_Z8emitTextR9HeapStackPKc(ptr noundef nonnull align 8 dereferenceable(56) %214, ptr noundef @.str.17)
          to label %215 unwind label %194

215:                                              ; preds = %213
  br label %221

216:                                              ; preds = %187
  %217 = load ptr, ptr %8, align 8, !tbaa !5
  %218 = load ptr, ptr %17, align 8, !tbaa !5
  %219 = load i8, ptr %218, align 1, !tbaa !17
  invoke void @_Z8emitTextR9HeapStackc(ptr noundef nonnull align 8 dereferenceable(56) %217, i8 noundef signext %219)
          to label %220 unwind label %194

220:                                              ; preds = %216
  br label %221

221:                                              ; preds = %220, %215, %212, %209, %206, %203, %200, %193
  %222 = load ptr, ptr %17, align 8, !tbaa !5
  %223 = getelementptr inbounds i8, ptr %222, i32 1
  store ptr %223, ptr %17, align 8, !tbaa !5
  br label %183, !llvm.loop !18

224:                                              ; preds = %183
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #7
  %225 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_Z8emitTextR9HeapStackc(ptr noundef nonnull align 8 dereferenceable(56) %225, i8 noundef signext 34)
          to label %226 unwind label %47

226:                                              ; preds = %224
  br label %445

227:                                              ; preds = %28
  %228 = load i32, ptr %9, align 4, !tbaa !9
  %229 = icmp sge i32 %228, 0
  br i1 %229, label %230, label %234

230:                                              ; preds = %227
  %231 = load ptr, ptr %8, align 8, !tbaa !5
  %232 = load i32, ptr %9, align 4, !tbaa !9
  invoke void @_Z10emitIndentR9HeapStacki(ptr noundef nonnull align 8 dereferenceable(56) %231, i32 noundef %232)
          to label %233 unwind label %47

233:                                              ; preds = %230
  br label %234

234:                                              ; preds = %233, %227
  %235 = load ptr, ptr %7, align 8, !tbaa !5
  %236 = call noundef zeroext i1 @_ZNK5cjson7hasNameEv(ptr noundef nonnull align 8 dereferenceable(89) %235)
  br i1 %236, label %237, label %250

237:                                              ; preds = %234
  %238 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_Z8emitTextR9HeapStackc(ptr noundef nonnull align 8 dereferenceable(56) %238, i8 noundef signext 34)
          to label %239 unwind label %47

239:                                              ; preds = %237
  %240 = load ptr, ptr %8, align 8, !tbaa !5
  %241 = load ptr, ptr %7, align 8, !tbaa !5
  %242 = call noundef ptr @_ZNK5cjson8nameCstrEv(ptr noundef nonnull align 8 dereferenceable(89) %241)
  invoke void @_Z8emitTextR9HeapStackPKc(ptr noundef nonnull align 8 dereferenceable(56) %240, ptr noundef %242)
          to label %243 unwind label %47

243:                                              ; preds = %239
  %244 = load ptr, ptr %8, align 8, !tbaa !5
  %245 = load i32, ptr %9, align 4, !tbaa !9
  %246 = icmp sge i32 %245, 0
  %247 = zext i1 %246 to i64
  %248 = select i1 %246, ptr @.str.5, ptr @.str.6
  invoke void @_Z8emitTextR9HeapStackPKc(ptr noundef nonnull align 8 dereferenceable(56) %244, ptr noundef %248)
          to label %249 unwind label %47

249:                                              ; preds = %243
  br label %250

250:                                              ; preds = %249, %234
  %251 = load ptr, ptr %8, align 8, !tbaa !5
  %252 = load ptr, ptr %7, align 8, !tbaa !5
  %253 = getelementptr inbounds %class.cjson, ptr %252, i32 0, i32 3
  %254 = load ptr, ptr %253, align 8, !tbaa !16
  %255 = load i8, ptr %254, align 8, !tbaa !17, !range !20, !noundef !21
  %256 = trunc i8 %255 to i1
  %257 = zext i1 %256 to i64
  %258 = select i1 %256, ptr @.str.18, ptr @.str.19
  invoke void @_Z8emitTextR9HeapStackPKc(ptr noundef nonnull align 8 dereferenceable(56) %251, ptr noundef %258)
          to label %259 unwind label %47

259:                                              ; preds = %250
  br label %445

260:                                              ; preds = %28
  %261 = load i32, ptr %9, align 4, !tbaa !9
  %262 = icmp sge i32 %261, 0
  br i1 %262, label %263, label %267

263:                                              ; preds = %260
  %264 = load ptr, ptr %8, align 8, !tbaa !5
  %265 = load i32, ptr %9, align 4, !tbaa !9
  invoke void @_Z10emitIndentR9HeapStacki(ptr noundef nonnull align 8 dereferenceable(56) %264, i32 noundef %265)
          to label %266 unwind label %47

266:                                              ; preds = %263
  br label %267

267:                                              ; preds = %266, %260
  %268 = load ptr, ptr %7, align 8, !tbaa !5
  %269 = load ptr, ptr %10, align 8, !tbaa !5
  %270 = icmp eq ptr %268, %269
  br i1 %270, label %279, label %271

271:                                              ; preds = %267
  %272 = load ptr, ptr %7, align 8, !tbaa !5
  %273 = call noundef zeroext i1 @_ZNK5cjson7hasNameEv(ptr noundef nonnull align 8 dereferenceable(89) %272)
  br i1 %273, label %274, label %279

274:                                              ; preds = %271
  %275 = load ptr, ptr %7, align 8, !tbaa !5
  %276 = call noundef ptr @_ZNK5cjson8nameCstrEv(ptr noundef nonnull align 8 dereferenceable(89) %275)
  %277 = call i32 @strcmp(ptr noundef %276, ptr noundef @.str) #8
  %278 = icmp eq i32 %277, 0
  br i1 %278, label %279, label %282

279:                                              ; preds = %274, %271, %267
  %280 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_Z8emitTextR9HeapStackc(ptr noundef nonnull align 8 dereferenceable(56) %280, i8 noundef signext 91)
          to label %281 unwind label %47

281:                                              ; preds = %279
  br label %295

282:                                              ; preds = %274
  %283 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_Z8emitTextR9HeapStackc(ptr noundef nonnull align 8 dereferenceable(56) %283, i8 noundef signext 34)
          to label %284 unwind label %47

284:                                              ; preds = %282
  %285 = load ptr, ptr %8, align 8, !tbaa !5
  %286 = load ptr, ptr %7, align 8, !tbaa !5
  %287 = call noundef ptr @_ZNK5cjson8nameCstrEv(ptr noundef nonnull align 8 dereferenceable(89) %286)
  invoke void @_Z8emitTextR9HeapStackPKc(ptr noundef nonnull align 8 dereferenceable(56) %285, ptr noundef %287)
          to label %288 unwind label %47

288:                                              ; preds = %284
  %289 = load ptr, ptr %8, align 8, !tbaa !5
  %290 = load i32, ptr %9, align 4, !tbaa !9
  %291 = icmp sge i32 %290, 0
  %292 = zext i1 %291 to i64
  %293 = select i1 %291, ptr @.str.20, ptr @.str.21
  invoke void @_Z8emitTextR9HeapStackPKc(ptr noundef nonnull align 8 dereferenceable(56) %289, ptr noundef %293)
          to label %294 unwind label %47

294:                                              ; preds = %288
  br label %295

295:                                              ; preds = %294, %281
  call void @llvm.lifetime.start.p0(i64 24, ptr %18) #7
  %296 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZNK5cjson8getNodesEv(ptr dead_on_unwind writable sret(%"class.std::vector.3") align 8 %18, ptr noundef nonnull align 8 dereferenceable(89) %296)
          to label %297 unwind label %305

297:                                              ; preds = %295
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #7
  %298 = call ptr @_ZNSt6vectorIP5cjsonSaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %18) #7
  %299 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.18", ptr %19, i32 0, i32 0
  store ptr %298, ptr %299, align 8
  br label %300

300:                                              ; preds = %334, %297
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #7
  %301 = call ptr @_ZNSt6vectorIP5cjsonSaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %18) #7
  %302 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.18", ptr %20, i32 0, i32 0
  store ptr %301, ptr %302, align 8
  %303 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPP5cjsonSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull align 8 dereferenceable(8) %20) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #7
  br i1 %303, label %309, label %304

304:                                              ; preds = %300
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #7
  br label %336

305:                                              ; preds = %295
  %306 = landingpad { ptr, i32 }
          cleanup
  %307 = extractvalue { ptr, i32 } %306, 0
  store ptr %307, ptr %13, align 8
  %308 = extractvalue { ptr, i32 } %306, 1
  store i32 %308, ptr %14, align 4
  br label %351

309:                                              ; preds = %300
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #7
  %310 = call ptr @_ZNSt6vectorIP5cjsonSaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %18) #7
  %311 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.18", ptr %21, i32 0, i32 0
  store ptr %310, ptr %311, align 8
  %312 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPP5cjsonSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull align 8 dereferenceable(8) %21) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #7
  br i1 %312, label %313, label %320

313:                                              ; preds = %309
  %314 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_Z8emitTextR9HeapStackc(ptr noundef nonnull align 8 dereferenceable(56) %314, i8 noundef signext 44)
          to label %315 unwind label %316

315:                                              ; preds = %313
  br label %320

316:                                              ; preds = %330, %313
  %317 = landingpad { ptr, i32 }
          cleanup
  %318 = extractvalue { ptr, i32 } %317, 0
  store ptr %318, ptr %13, align 8
  %319 = extractvalue { ptr, i32 } %317, 1
  store i32 %319, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #7
  br label %350

320:                                              ; preds = %315, %309
  %321 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPP5cjsonSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %19) #7
  %322 = load ptr, ptr %321, align 8, !tbaa !5
  %323 = load ptr, ptr %8, align 8, !tbaa !5
  %324 = load i32, ptr %9, align 4, !tbaa !9
  %325 = icmp sge i32 %324, 0
  br i1 %325, label %326, label %329

326:                                              ; preds = %320
  %327 = load i32, ptr %9, align 4, !tbaa !9
  %328 = add nsw i32 %327, 1
  br label %330

329:                                              ; preds = %320
  br label %330

330:                                              ; preds = %329, %326
  %331 = phi i32 [ %328, %326 ], [ -1, %329 ]
  %332 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZNK5cjson16stringify_workerEPKS_R9HeapStackiS1_(ptr noundef nonnull align 8 dereferenceable(89) %26, ptr noundef %322, ptr noundef nonnull align 8 dereferenceable(56) %323, i32 noundef %331, ptr noundef %332)
          to label %333 unwind label %316

333:                                              ; preds = %330
  br label %334

334:                                              ; preds = %333
  %335 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPP5cjsonSt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %19) #7
  br label %300, !llvm.loop !22

336:                                              ; preds = %304
  %337 = load i32, ptr %9, align 4, !tbaa !9
  %338 = icmp sge i32 %337, 0
  br i1 %338, label %339, label %347

339:                                              ; preds = %336
  %340 = load ptr, ptr %8, align 8, !tbaa !5
  %341 = load i32, ptr %9, align 4, !tbaa !9
  invoke void @_Z10emitIndentR9HeapStacki(ptr noundef nonnull align 8 dereferenceable(56) %340, i32 noundef %341)
          to label %342 unwind label %343

342:                                              ; preds = %339
  br label %347

343:                                              ; preds = %347, %339
  %344 = landingpad { ptr, i32 }
          cleanup
  %345 = extractvalue { ptr, i32 } %344, 0
  store ptr %345, ptr %13, align 8
  %346 = extractvalue { ptr, i32 } %344, 1
  store i32 %346, ptr %14, align 4
  br label %350

347:                                              ; preds = %342, %336
  %348 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_Z8emitTextR9HeapStackc(ptr noundef nonnull align 8 dereferenceable(56) %348, i8 noundef signext 93)
          to label %349 unwind label %343

349:                                              ; preds = %347
  call void @_ZNSt6vectorIP5cjsonSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %18) #7
  br label %445

350:                                              ; preds = %343, %316
  call void @_ZNSt6vectorIP5cjsonSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #7
  br label %351

351:                                              ; preds = %350, %305
  call void @llvm.lifetime.end.p0(i64 24, ptr %18) #7
  br label %446

352:                                              ; preds = %28
  %353 = load i32, ptr %9, align 4, !tbaa !9
  %354 = icmp sge i32 %353, 0
  br i1 %354, label %355, label %359

355:                                              ; preds = %352
  %356 = load ptr, ptr %8, align 8, !tbaa !5
  %357 = load i32, ptr %9, align 4, !tbaa !9
  invoke void @_Z10emitIndentR9HeapStacki(ptr noundef nonnull align 8 dereferenceable(56) %356, i32 noundef %357)
          to label %358 unwind label %47

358:                                              ; preds = %355
  br label %359

359:                                              ; preds = %358, %352
  %360 = load ptr, ptr %7, align 8, !tbaa !5
  %361 = load ptr, ptr %10, align 8, !tbaa !5
  %362 = icmp eq ptr %360, %361
  br i1 %362, label %371, label %363

363:                                              ; preds = %359
  %364 = load ptr, ptr %7, align 8, !tbaa !5
  %365 = call noundef zeroext i1 @_ZNK5cjson7hasNameEv(ptr noundef nonnull align 8 dereferenceable(89) %364)
  br i1 %365, label %366, label %371

366:                                              ; preds = %363
  %367 = load ptr, ptr %7, align 8, !tbaa !5
  %368 = call noundef ptr @_ZNK5cjson8nameCstrEv(ptr noundef nonnull align 8 dereferenceable(89) %367)
  %369 = call i32 @strcmp(ptr noundef %368, ptr noundef @.str) #8
  %370 = icmp eq i32 %369, 0
  br i1 %370, label %371, label %374

371:                                              ; preds = %366, %363, %359
  %372 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_Z8emitTextR9HeapStackc(ptr noundef nonnull align 8 dereferenceable(56) %372, i8 noundef signext 123)
          to label %373 unwind label %47

373:                                              ; preds = %371
  br label %387

374:                                              ; preds = %366
  %375 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_Z8emitTextR9HeapStackc(ptr noundef nonnull align 8 dereferenceable(56) %375, i8 noundef signext 34)
          to label %376 unwind label %47

376:                                              ; preds = %374
  %377 = load ptr, ptr %8, align 8, !tbaa !5
  %378 = load ptr, ptr %7, align 8, !tbaa !5
  %379 = call noundef ptr @_ZNK5cjson8nameCstrEv(ptr noundef nonnull align 8 dereferenceable(89) %378)
  invoke void @_Z8emitTextR9HeapStackPKc(ptr noundef nonnull align 8 dereferenceable(56) %377, ptr noundef %379)
          to label %380 unwind label %47

380:                                              ; preds = %376
  %381 = load ptr, ptr %8, align 8, !tbaa !5
  %382 = load i32, ptr %9, align 4, !tbaa !9
  %383 = icmp sge i32 %382, 0
  %384 = zext i1 %383 to i64
  %385 = select i1 %383, ptr @.str.22, ptr @.str.23
  invoke void @_Z8emitTextR9HeapStackPKc(ptr noundef nonnull align 8 dereferenceable(56) %381, ptr noundef %385)
          to label %386 unwind label %47

386:                                              ; preds = %380
  br label %387

387:                                              ; preds = %386, %373
  call void @llvm.lifetime.start.p0(i64 24, ptr %22) #7
  %388 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZNK5cjson8getNodesEv(ptr dead_on_unwind writable sret(%"class.std::vector.3") align 8 %22, ptr noundef nonnull align 8 dereferenceable(89) %388)
          to label %389 unwind label %397

389:                                              ; preds = %387
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #7
  %390 = call ptr @_ZNSt6vectorIP5cjsonSaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %22) #7
  %391 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.18", ptr %23, i32 0, i32 0
  store ptr %390, ptr %391, align 8
  br label %392

392:                                              ; preds = %426, %389
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #7
  %393 = call ptr @_ZNSt6vectorIP5cjsonSaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %22) #7
  %394 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.18", ptr %24, i32 0, i32 0
  store ptr %393, ptr %394, align 8
  %395 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPP5cjsonSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 8 dereferenceable(8) %24) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #7
  br i1 %395, label %401, label %396

396:                                              ; preds = %392
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #7
  br label %428

397:                                              ; preds = %387
  %398 = landingpad { ptr, i32 }
          cleanup
  %399 = extractvalue { ptr, i32 } %398, 0
  store ptr %399, ptr %13, align 8
  %400 = extractvalue { ptr, i32 } %398, 1
  store i32 %400, ptr %14, align 4
  br label %443

401:                                              ; preds = %392
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #7
  %402 = call ptr @_ZNSt6vectorIP5cjsonSaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %22) #7
  %403 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.18", ptr %25, i32 0, i32 0
  store ptr %402, ptr %403, align 8
  %404 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPP5cjsonSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 8 dereferenceable(8) %25) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #7
  br i1 %404, label %405, label %412

405:                                              ; preds = %401
  %406 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_Z8emitTextR9HeapStackc(ptr noundef nonnull align 8 dereferenceable(56) %406, i8 noundef signext 44)
          to label %407 unwind label %408

407:                                              ; preds = %405
  br label %412

408:                                              ; preds = %422, %405
  %409 = landingpad { ptr, i32 }
          cleanup
  %410 = extractvalue { ptr, i32 } %409, 0
  store ptr %410, ptr %13, align 8
  %411 = extractvalue { ptr, i32 } %409, 1
  store i32 %411, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #7
  br label %442

412:                                              ; preds = %407, %401
  %413 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPP5cjsonSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %23) #7
  %414 = load ptr, ptr %413, align 8, !tbaa !5
  %415 = load ptr, ptr %8, align 8, !tbaa !5
  %416 = load i32, ptr %9, align 4, !tbaa !9
  %417 = icmp sge i32 %416, 0
  br i1 %417, label %418, label %421

418:                                              ; preds = %412
  %419 = load i32, ptr %9, align 4, !tbaa !9
  %420 = add nsw i32 %419, 1
  br label %422

421:                                              ; preds = %412
  br label %422

422:                                              ; preds = %421, %418
  %423 = phi i32 [ %420, %418 ], [ -1, %421 ]
  %424 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZNK5cjson16stringify_workerEPKS_R9HeapStackiS1_(ptr noundef nonnull align 8 dereferenceable(89) %26, ptr noundef %414, ptr noundef nonnull align 8 dereferenceable(56) %415, i32 noundef %423, ptr noundef %424)
          to label %425 unwind label %408

425:                                              ; preds = %422
  br label %426

426:                                              ; preds = %425
  %427 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPP5cjsonSt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %23) #7
  br label %392, !llvm.loop !23

428:                                              ; preds = %396
  %429 = load i32, ptr %9, align 4, !tbaa !9
  %430 = icmp sge i32 %429, 0
  br i1 %430, label %431, label %439

431:                                              ; preds = %428
  %432 = load ptr, ptr %8, align 8, !tbaa !5
  %433 = load i32, ptr %9, align 4, !tbaa !9
  invoke void @_Z10emitIndentR9HeapStacki(ptr noundef nonnull align 8 dereferenceable(56) %432, i32 noundef %433)
          to label %434 unwind label %435

434:                                              ; preds = %431
  br label %439

435:                                              ; preds = %439, %431
  %436 = landingpad { ptr, i32 }
          cleanup
  %437 = extractvalue { ptr, i32 } %436, 0
  store ptr %437, ptr %13, align 8
  %438 = extractvalue { ptr, i32 } %436, 1
  store i32 %438, ptr %14, align 4
  br label %442

439:                                              ; preds = %434, %428
  %440 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_Z8emitTextR9HeapStackc(ptr noundef nonnull align 8 dereferenceable(56) %440, i8 noundef signext 125)
          to label %441 unwind label %435

441:                                              ; preds = %439
  call void @_ZNSt6vectorIP5cjsonSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %22) #7
  br label %445

442:                                              ; preds = %435, %408
  call void @_ZNSt6vectorIP5cjsonSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #7
  br label %443

443:                                              ; preds = %442, %397
  call void @llvm.lifetime.end.p0(i64 24, ptr %22) #7
  br label %446

444:                                              ; preds = %28
  br label %445

445:                                              ; preds = %444, %441, %349, %259, %226, %153, %106, %69, %28
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %15) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %11) #7
  ret void

446:                                              ; preds = %443, %351, %194, %47
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #7
  br label %447

447:                                              ; preds = %446, %36
  call void @llvm.lifetime.end.p0(i64 32, ptr %15) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #7
  br label %448

448:                                              ; preds = %447, %32
  call void @llvm.lifetime.end.p0(i64 32, ptr %11) #7
  br label %449

449:                                              ; preds = %448
  %450 = load ptr, ptr %13, align 8
  %451 = load i32, ptr %14, align 4
  %452 = insertvalue { ptr, i32 } poison, ptr %450, 0
  %453 = insertvalue { ptr, i32 } %452, i32 %451, 1
  resume { ptr, i32 } %453
}

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_Z10emitIndentR9HeapStacki(ptr noundef nonnull align 8 dereferenceable(56), i32 noundef) #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_Z8emitTextR9HeapStackc(ptr noundef nonnull align 8 dereferenceable(56), i8 noundef signext) #4

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPP5cjsonSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #6

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPP5cjsonSt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8)) #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 willreturn memory(read) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { 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 #5 = { 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 #6 = { 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 #7 = { nounwind }
attributes #8 = { nounwind willreturn memory(read) }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !13, i64 8}
!12 = !{!"_ZTS5cjson", !6, i64 0, !13, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !10, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !14, i64 88}
!13 = !{!"_ZTSN5cjson7Types_eE", !7, i64 0}
!14 = !{!"bool", !7, i64 0}
!15 = !{!12, !6, i64 56}
!16 = !{!12, !6, i64 24}
!17 = !{!7, !7, i64 0}
!18 = distinct !{!18, !19}
!19 = !{!"llvm.loop.mustprogress"}
!20 = !{i8 0, i8 2}
!21 = !{}
!22 = distinct !{!22, !19}
!23 = distinct !{!23, !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::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = type { %"struct.std::_Vector_base<cjson *, std::allocator<cjson *>>::_Vector_impl" }
%"struct.std::_Vector_base<cjson *, std::allocator<cjson *>>::_Vector_impl" = type { %"struct.std::_Vector_base<cjson *, std::allocator<cjson *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<cjson *, std::allocator<cjson *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"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.std::allocator.0" = type { i8 }
%"class.__gnu_cxx::__normal_iterator.18" = type { ptr }

@.str = external hidden unnamed_addr constant [9 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [4 x i8], align 1

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

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 noundef zeroext i1 @_ZNK5cjson7hasNameEv(ptr noundef nonnull align 8 dereferenceable(89)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK5cjson8getNodesEv(ptr dead_on_unwind noalias writable sret(%"class.std::vector.3") align 8, ptr noundef nonnull align 8 dereferenceable(89)) local_unnamed_addr #2 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZNK5cjson16stringify_workerEPKS_R9HeapStackiS1_(ptr noundef nonnull align 8 dereferenceable(89) %0, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(56) %2, i32 noundef %3, ptr noundef %4) local_unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %6 = alloca %"class.std::__cxx11::basic_string", align 8
  %7 = alloca %"class.std::allocator.0", align 1
  %8 = alloca %"class.std::__cxx11::basic_string", align 8
  %9 = alloca %"class.std::allocator.0", align 1
  %10 = alloca %"class.std::vector.3", align 8
  %11 = alloca %"class.__gnu_cxx::__normal_iterator.18", align 8
  %12 = alloca %"class.__gnu_cxx::__normal_iterator.18", align 8
  %13 = alloca %"class.__gnu_cxx::__normal_iterator.18", align 8
  %14 = alloca %"class.std::vector.3", align 8
  %15 = alloca %"class.__gnu_cxx::__normal_iterator.18", align 8
  %16 = alloca %"class.__gnu_cxx::__normal_iterator.18", align 8
  %17 = alloca %"class.__gnu_cxx::__normal_iterator.18", align 8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %7) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %7)
          to label %18 unwind label %22

18:                                               ; preds = %5
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %7) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %9) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull @.str.2, ptr noundef nonnull align 1 dereferenceable(1) %9)
          to label %19 unwind label %24

19:                                               ; preds = %18
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9) #7
  %20 = getelementptr inbounds i8, ptr %1, i64 8
  %21 = load i64, ptr %20, align 8, !tbaa !5
  switch i64 %21, label %213 [
    i64 1, label %26
    i64 4, label %38
    i64 5, label %55
    i64 6, label %75
    i64 7, label %104
    i64 3, label %121
    i64 2, label %167
  ]

22:                                               ; preds = %5
  %23 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %7) #7
  br label %216

24:                                               ; preds = %18
  %25 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %9) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %9) #7
  br label %215

26:                                               ; preds = %19
  %27 = icmp sgt i32 %3, -1
  br i1 %27, label %28, label %31

28:                                               ; preds = %26
  invoke void @_Z10emitIndentR9HeapStacki(ptr noundef nonnull align 8 dereferenceable(56) %2, i32 noundef %3)
          to label %31 unwind label %29

29:                                               ; preds = %.invoke152, %.invoke, %182, %180, %179, %178, %169, %136, %134, %133, %132, %123, %112, %110, %109, %106, %103, %85, %83, %81, %80, %77, %63, %61, %60, %57, %46, %44, %43, %40, %36, %34, %33, %28
  %30 = landingpad { ptr, i32 }
          cleanup
  br label %214

31:                                               ; preds = %28, %26
  %32 = call noundef zeroext i1 @_ZNK5cjson7hasNameEv(ptr noundef nonnull align 8 dereferenceable(89) %1)
  br i1 %32, label %33, label %.invoke

33:                                               ; preds = %31
  invoke void @_Z8emitTextR9HeapStackc(ptr noundef nonnull align 8 dereferenceable(56) %2, i8 noundef signext 34)
          to label %34 unwind label %29

34:                                               ; preds = %33
  %35 = call noundef ptr @_ZNK5cjson8nameCstrEv(ptr noundef nonnull align 8 dereferenceable(89) %1)
  invoke void @_Z8emitTextR9HeapStackPKc(ptr noundef nonnull align 8 dereferenceable(56) %2, ptr noundef %35)
          to label %36 unwind label %29

36:                                               ; preds = %34
  %37 = select i1 %27, ptr @.str.5, ptr @.str.6
  invoke void @_Z8emitTextR9HeapStackPKc(ptr noundef nonnull align 8 dereferenceable(56) %2, ptr noundef nonnull %37)
          to label %.invoke unwind label %29

38:                                               ; preds = %19
  %39 = icmp sgt i32 %3, -1
  br i1 %39, label %40, label %41

40:                                               ; preds = %38
  invoke void @_Z10emitIndentR9HeapStacki(ptr noundef nonnull align 8 dereferenceable(56) %2, i32 noundef %3)
          to label %41 unwind label %29

41:                                               ; preds = %40, %38
  %42 = call noundef zeroext i1 @_ZNK5cjson7hasNameEv(ptr noundef nonnull align 8 dereferenceable(89) %1)
  br i1 %42, label %43, label %48

43:                                               ; preds = %41
  invoke void @_Z8emitTextR9HeapStackc(ptr noundef nonnull align 8 dereferenceable(56) %2, i8 noundef signext 34)
          to label %44 unwind label %29

44:                                               ; preds = %43
  %45 = call noundef ptr @_ZNK5cjson8nameCstrEv(ptr noundef nonnull align 8 dereferenceable(89) %1)
  invoke void @_Z8emitTextR9HeapStackPKc(ptr noundef nonnull align 8 dereferenceable(56) %2, ptr noundef %45)
          to label %46 unwind label %29

46:                                               ; preds = %44
  %47 = select i1 %39, ptr @.str.5, ptr @.str.6
  invoke void @_Z8emitTextR9HeapStackPKc(ptr noundef nonnull align 8 dereferenceable(56) %2, ptr noundef nonnull %47)
          to label %48 unwind label %29

48:                                               ; preds = %46, %41
  %49 = getelementptr inbounds i8, ptr %1, i64 56
  %50 = load ptr, ptr %49, align 8, !tbaa !13
  %51 = getelementptr inbounds i8, ptr %1, i64 24
  %52 = load ptr, ptr %51, align 8, !tbaa !14
  %53 = load i64, ptr %52, align 8, !tbaa !15
  %54 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %50, i64 noundef 128, ptr noundef nonnull @.str.8, i64 noundef %53) #7
  br label %.invoke152

55:                                               ; preds = %19
  %56 = icmp sgt i32 %3, -1
  br i1 %56, label %57, label %58

57:                                               ; preds = %55
  invoke void @_Z10emitIndentR9HeapStacki(ptr noundef nonnull align 8 dereferenceable(56) %2, i32 noundef %3)
          to label %58 unwind label %29

58:                                               ; preds = %57, %55
  %59 = call noundef zeroext i1 @_ZNK5cjson7hasNameEv(ptr noundef nonnull align 8 dereferenceable(89) %1)
  br i1 %59, label %60, label %65

60:                                               ; preds = %58
  invoke void @_Z8emitTextR9HeapStackc(ptr noundef nonnull align 8 dereferenceable(56) %2, i8 noundef signext 34)
          to label %61 unwind label %29

61:                                               ; preds = %60
  %62 = call noundef ptr @_ZNK5cjson8nameCstrEv(ptr noundef nonnull align 8 dereferenceable(89) %1)
  invoke void @_Z8emitTextR9HeapStackPKc(ptr noundef nonnull align 8 dereferenceable(56) %2, ptr noundef %62)
          to label %63 unwind label %29

63:                                               ; preds = %61
  %64 = select i1 %56, ptr @.str.5, ptr @.str.6
  invoke void @_Z8emitTextR9HeapStackPKc(ptr noundef nonnull align 8 dereferenceable(56) %2, ptr noundef nonnull %64)
          to label %65 unwind label %29

65:                                               ; preds = %63, %58
  %66 = getelementptr inbounds i8, ptr %1, i64 24
  %67 = load ptr, ptr %66, align 8, !tbaa !14
  %68 = load double, ptr %67, align 8, !tbaa !15
  %69 = fcmp oeq double %68, 0.000000e+00
  br i1 %69, label %.invoke, label %70

70:                                               ; preds = %65
  %71 = getelementptr inbounds i8, ptr %1, i64 56
  %72 = load ptr, ptr %71, align 8, !tbaa !13
  %73 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %72, i64 noundef 128, ptr noundef nonnull @.str.10, double noundef %68) #7
  br label %.invoke152

.invoke152:                                       ; preds = %48, %70
  %.sink = phi ptr [ %49, %48 ], [ %71, %70 ]
  %74 = load ptr, ptr %.sink, align 8, !tbaa !13
  invoke void @_Z8emitTextR9HeapStackPKc(ptr noundef nonnull align 8 dereferenceable(56) %2, ptr noundef %74)
          to label %213 unwind label %29

75:                                               ; preds = %19
  %76 = icmp sgt i32 %3, -1
  br i1 %76, label %77, label %78

77:                                               ; preds = %75
  invoke void @_Z10emitIndentR9HeapStacki(ptr noundef nonnull align 8 dereferenceable(56) %2, i32 noundef %3)
          to label %78 unwind label %29

78:                                               ; preds = %77, %75
  %79 = call noundef zeroext i1 @_ZNK5cjson7hasNameEv(ptr noundef nonnull align 8 dereferenceable(89) %1)
  br i1 %79, label %80, label %85

80:                                               ; preds = %78
  invoke void @_Z8emitTextR9HeapStackc(ptr noundef nonnull align 8 dereferenceable(56) %2, i8 noundef signext 34)
          to label %81 unwind label %29

81:                                               ; preds = %80
  %82 = call noundef ptr @_ZNK5cjson8nameCstrEv(ptr noundef nonnull align 8 dereferenceable(89) %1)
  invoke void @_Z8emitTextR9HeapStackPKc(ptr noundef nonnull align 8 dereferenceable(56) %2, ptr noundef %82)
          to label %83 unwind label %29

83:                                               ; preds = %81
  %84 = select i1 %76, ptr @.str.5, ptr @.str.6
  invoke void @_Z8emitTextR9HeapStackPKc(ptr noundef nonnull align 8 dereferenceable(56) %2, ptr noundef nonnull %84)
          to label %85 unwind label %29

85:                                               ; preds = %83, %78
  invoke void @_Z8emitTextR9HeapStackc(ptr noundef nonnull align 8 dereferenceable(56) %2, i8 noundef signext 34)
          to label %86 unwind label %29

86:                                               ; preds = %85
  %87 = getelementptr inbounds i8, ptr %1, i64 24
  %88 = load ptr, ptr %87, align 8, !tbaa !14
  br label %89

89:                                               ; preds = %101, %86
  %.0 = phi ptr [ %88, %86 ], [ %102, %101 ]
  %90 = load i8, ptr %.0, align 1, !tbaa !15
  switch i8 %90, label %100 [
    i8 0, label %103
    i8 13, label %91
    i8 10, label %.invoke153
    i8 9, label %94
    i8 92, label %95
    i8 8, label %96
    i8 12, label %97
    i8 34, label %98
  ]

91:                                               ; preds = %89
  br label %.invoke153

92:                                               ; preds = %.invoke153, %100
  %93 = landingpad { ptr, i32 }
          cleanup
  br label %214

94:                                               ; preds = %89
  br label %.invoke153

95:                                               ; preds = %89
  br label %.invoke153

96:                                               ; preds = %89
  br label %.invoke153

97:                                               ; preds = %89
  br label %.invoke153

98:                                               ; preds = %89
  br label %.invoke153

.invoke153:                                       ; preds = %89, %91, %94, %95, %96, %97, %98
  %99 = phi ptr [ @.str.17, %98 ], [ @.str.16, %97 ], [ @.str.15, %96 ], [ @.str.14, %95 ], [ @.str.13, %94 ], [ @.str.11, %91 ], [ @.str.12, %89 ]
  invoke void @_Z8emitTextR9HeapStackPKc(ptr noundef nonnull align 8 dereferenceable(56) %2, ptr noundef nonnull %99)
          to label %101 unwind label %92

100:                                              ; preds = %89
  invoke void @_Z8emitTextR9HeapStackc(ptr noundef nonnull align 8 dereferenceable(56) %2, i8 noundef signext %90)
          to label %101 unwind label %92

101:                                              ; preds = %.invoke153, %100
  %102 = getelementptr inbounds i8, ptr %.0, i64 1
  br label %89, !llvm.loop !16

103:                                              ; preds = %89
  invoke void @_Z8emitTextR9HeapStackc(ptr noundef nonnull align 8 dereferenceable(56) %2, i8 noundef signext 34)
          to label %213 unwind label %29

104:                                              ; preds = %19
  %105 = icmp sgt i32 %3, -1
  br i1 %105, label %106, label %107

106:                                              ; preds = %104
  invoke void @_Z10emitIndentR9HeapStacki(ptr noundef nonnull align 8 dereferenceable(56) %2, i32 noundef %3)
          to label %107 unwind label %29

107:                                              ; preds = %106, %104
  %108 = call noundef zeroext i1 @_ZNK5cjson7hasNameEv(ptr noundef nonnull align 8 dereferenceable(89) %1)
  br i1 %108, label %109, label %114

109:                                              ; preds = %107
  invoke void @_Z8emitTextR9HeapStackc(ptr noundef nonnull align 8 dereferenceable(56) %2, i8 noundef signext 34)
          to label %110 unwind label %29

110:                                              ; preds = %109
  %111 = call noundef ptr @_ZNK5cjson8nameCstrEv(ptr noundef nonnull align 8 dereferenceable(89) %1)
  invoke void @_Z8emitTextR9HeapStackPKc(ptr noundef nonnull align 8 dereferenceable(56) %2, ptr noundef %111)
          to label %112 unwind label %29

112:                                              ; preds = %110
  %113 = select i1 %105, ptr @.str.5, ptr @.str.6
  invoke void @_Z8emitTextR9HeapStackPKc(ptr noundef nonnull align 8 dereferenceable(56) %2, ptr noundef nonnull %113)
          to label %114 unwind label %29

114:                                              ; preds = %112, %107
  %115 = getelementptr inbounds i8, ptr %1, i64 24
  %116 = load ptr, ptr %115, align 8, !tbaa !14
  %117 = load i8, ptr %116, align 8, !tbaa !15, !range !18, !noundef !19
  %118 = trunc nuw i8 %117 to i1
  %119 = select i1 %118, ptr @.str.18, ptr @.str.19
  br label %.invoke

.invoke:                                          ; preds = %65, %31, %36, %114
  %120 = phi ptr [ %119, %114 ], [ @.str.7, %36 ], [ @.str.7, %31 ], [ @.str.9, %65 ]
  invoke void @_Z8emitTextR9HeapStackPKc(ptr noundef nonnull align 8 dereferenceable(56) %2, ptr noundef nonnull %120)
          to label %213 unwind label %29

121:                                              ; preds = %19
  %122 = icmp sgt i32 %3, -1
  br i1 %122, label %123, label %124

123:                                              ; preds = %121
  invoke void @_Z10emitIndentR9HeapStacki(ptr noundef nonnull align 8 dereferenceable(56) %2, i32 noundef %3)
          to label %124 unwind label %29

124:                                              ; preds = %123, %121
  %125 = icmp eq ptr %1, %4
  br i1 %125, label %132, label %126

126:                                              ; preds = %124
  %127 = call noundef zeroext i1 @_ZNK5cjson7hasNameEv(ptr noundef nonnull align 8 dereferenceable(89) %1)
  br i1 %127, label %128, label %132

128:                                              ; preds = %126
  %129 = call noundef ptr @_ZNK5cjson8nameCstrEv(ptr noundef nonnull align 8 dereferenceable(89) %1)
  %130 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %129, ptr noundef nonnull dereferenceable(1) @.str) #8
  %131 = icmp eq i32 %130, 0
  br i1 %131, label %132, label %133

132:                                              ; preds = %128, %126, %124
  invoke void @_Z8emitTextR9HeapStackc(ptr noundef nonnull align 8 dereferenceable(56) %2, i8 noundef signext 91)
          to label %138 unwind label %29

133:                                              ; preds = %128
  invoke void @_Z8emitTextR9HeapStackc(ptr noundef nonnull align 8 dereferenceable(56) %2, i8 noundef signext 34)
          to label %134 unwind label %29

134:                                              ; preds = %133
  %135 = call noundef ptr @_ZNK5cjson8nameCstrEv(ptr noundef nonnull align 8 dereferenceable(89) %1)
  invoke void @_Z8emitTextR9HeapStackPKc(ptr noundef nonnull align 8 dereferenceable(56) %2, ptr noundef %135)
          to label %136 unwind label %29

136:                                              ; preds = %134
  %137 = select i1 %122, ptr @.str.20, ptr @.str.21
  invoke void @_Z8emitTextR9HeapStackPKc(ptr noundef nonnull align 8 dereferenceable(56) %2, ptr noundef nonnull %137)
          to label %138 unwind label %29

138:                                              ; preds = %136, %132
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %10) #7
  invoke void @_ZNK5cjson8getNodesEv(ptr dead_on_unwind nonnull writable sret(%"class.std::vector.3") align 8 %10, ptr noundef nonnull align 8 dereferenceable(89) %1)
          to label %139 unwind label %145

139:                                              ; preds = %138
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #7
  %140 = call ptr @_ZNSt6vectorIP5cjsonSaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %10) #7
  store ptr %140, ptr %11, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #7
  %141 = call ptr @_ZNSt6vectorIP5cjsonSaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %10) #7
  store ptr %141, ptr %12, align 8
  %142 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPP5cjsonSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %12) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #7
  br i1 %142, label %.lr.ph150, label %._crit_edge151

.lr.ph150:                                        ; preds = %139
  %143 = add nuw nsw i32 %3, 1
  %144 = select i1 %122, i32 %143, i32 -1
  br label %147

._crit_edge151:                                   ; preds = %156, %139
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #7
  br i1 %122, label %160, label %163

145:                                              ; preds = %138
  %146 = landingpad { ptr, i32 }
          cleanup
  br label %166

147:                                              ; preds = %.lr.ph150, %156
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #7
  %148 = call ptr @_ZNSt6vectorIP5cjsonSaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %10) #7
  store ptr %148, ptr %13, align 8
  %149 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPP5cjsonSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %13) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #7
  br i1 %149, label %150, label %153

150:                                              ; preds = %147
  invoke void @_Z8emitTextR9HeapStackc(ptr noundef nonnull align 8 dereferenceable(56) %2, i8 noundef signext 44)
          to label %153 unwind label %151

151:                                              ; preds = %153, %150
  %152 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #7
  br label %165

153:                                              ; preds = %150, %147
  %154 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPP5cjsonSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #7
  %155 = load ptr, ptr %154, align 8, !tbaa !20
  invoke void @_ZNK5cjson16stringify_workerEPKS_R9HeapStackiS1_(ptr noundef nonnull align 8 dereferenceable(89) %0, ptr noundef %155, ptr noundef nonnull align 8 dereferenceable(56) %2, i32 noundef %144, ptr noundef %4)
          to label %156 unwind label %151

156:                                              ; preds = %153
  %157 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPP5cjsonSt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #7
  %158 = call ptr @_ZNSt6vectorIP5cjsonSaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %10) #7
  store ptr %158, ptr %12, align 8
  %159 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPP5cjsonSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %12) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #7
  br i1 %159, label %147, label %._crit_edge151, !llvm.loop !21

160:                                              ; preds = %._crit_edge151
  invoke void @_Z10emitIndentR9HeapStacki(ptr noundef nonnull align 8 dereferenceable(56) %2, i32 noundef %3)
          to label %163 unwind label %161

161:                                              ; preds = %163, %160
  %162 = landingpad { ptr, i32 }
          cleanup
  br label %165

163:                                              ; preds = %160, %._crit_edge151
  invoke void @_Z8emitTextR9HeapStackc(ptr noundef nonnull align 8 dereferenceable(56) %2, i8 noundef signext 93)
          to label %164 unwind label %161

164:                                              ; preds = %163
  call void @_ZNSt6vectorIP5cjsonSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #7
  br label %213

165:                                              ; preds = %161, %151
  %.pn143 = phi { ptr, i32 } [ %152, %151 ], [ %162, %161 ]
  call void @_ZNSt6vectorIP5cjsonSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #7
  br label %166

166:                                              ; preds = %165, %145
  %.pn143.pn = phi { ptr, i32 } [ %.pn143, %165 ], [ %146, %145 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #7
  br label %214

167:                                              ; preds = %19
  %168 = icmp sgt i32 %3, -1
  br i1 %168, label %169, label %170

169:                                              ; preds = %167
  invoke void @_Z10emitIndentR9HeapStacki(ptr noundef nonnull align 8 dereferenceable(56) %2, i32 noundef %3)
          to label %170 unwind label %29

170:                                              ; preds = %169, %167
  %171 = icmp eq ptr %1, %4
  br i1 %171, label %178, label %172

172:                                              ; preds = %170
  %173 = call noundef zeroext i1 @_ZNK5cjson7hasNameEv(ptr noundef nonnull align 8 dereferenceable(89) %1)
  br i1 %173, label %174, label %178

174:                                              ; preds = %172
  %175 = call noundef ptr @_ZNK5cjson8nameCstrEv(ptr noundef nonnull align 8 dereferenceable(89) %1)
  %176 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %175, ptr noundef nonnull dereferenceable(1) @.str) #8
  %177 = icmp eq i32 %176, 0
  br i1 %177, label %178, label %179

178:                                              ; preds = %174, %172, %170
  invoke void @_Z8emitTextR9HeapStackc(ptr noundef nonnull align 8 dereferenceable(56) %2, i8 noundef signext 123)
          to label %184 unwind label %29

179:                                              ; preds = %174
  invoke void @_Z8emitTextR9HeapStackc(ptr noundef nonnull align 8 dereferenceable(56) %2, i8 noundef signext 34)
          to label %180 unwind label %29

180:                                              ; preds = %179
  %181 = call noundef ptr @_ZNK5cjson8nameCstrEv(ptr noundef nonnull align 8 dereferenceable(89) %1)
  invoke void @_Z8emitTextR9HeapStackPKc(ptr noundef nonnull align 8 dereferenceable(56) %2, ptr noundef %181)
          to label %182 unwind label %29

182:                                              ; preds = %180
  %183 = select i1 %168, ptr @.str.22, ptr @.str.23
  invoke void @_Z8emitTextR9HeapStackPKc(ptr noundef nonnull align 8 dereferenceable(56) %2, ptr noundef nonnull %183)
          to label %184 unwind label %29

184:                                              ; preds = %182, %178
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %14) #7
  invoke void @_ZNK5cjson8getNodesEv(ptr dead_on_unwind nonnull writable sret(%"class.std::vector.3") align 8 %14, ptr noundef nonnull align 8 dereferenceable(89) %1)
          to label %185 unwind label %191

185:                                              ; preds = %184
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #7
  %186 = call ptr @_ZNSt6vectorIP5cjsonSaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %14) #7
  store ptr %186, ptr %15, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #7
  %187 = call ptr @_ZNSt6vectorIP5cjsonSaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %14) #7
  store ptr %187, ptr %16, align 8
  %188 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPP5cjsonSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(8) %16) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #7
  br i1 %188, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %185
  %189 = add nuw nsw i32 %3, 1
  %190 = select i1 %168, i32 %189, i32 -1
  br label %193

._crit_edge:                                      ; preds = %202, %185
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #7
  br i1 %168, label %206, label %209

191:                                              ; preds = %184
  %192 = landingpad { ptr, i32 }
          cleanup
  br label %212

193:                                              ; preds = %.lr.ph, %202
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #7
  %194 = call ptr @_ZNSt6vectorIP5cjsonSaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %14) #7
  store ptr %194, ptr %17, align 8
  %195 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPP5cjsonSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(8) %17) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #7
  br i1 %195, label %196, label %199

196:                                              ; preds = %193
  invoke void @_Z8emitTextR9HeapStackc(ptr noundef nonnull align 8 dereferenceable(56) %2, i8 noundef signext 44)
          to label %199 unwind label %197

197:                                              ; preds = %199, %196
  %198 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #7
  br label %211

199:                                              ; preds = %196, %193
  %200 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPP5cjsonSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %15) #7
  %201 = load ptr, ptr %200, align 8, !tbaa !20
  invoke void @_ZNK5cjson16stringify_workerEPKS_R9HeapStackiS1_(ptr noundef nonnull align 8 dereferenceable(89) %0, ptr noundef %201, ptr noundef nonnull align 8 dereferenceable(56) %2, i32 noundef %190, ptr noundef %4)
          to label %202 unwind label %197

202:                                              ; preds = %199
  %203 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPP5cjsonSt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %15) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #7
  %204 = call ptr @_ZNSt6vectorIP5cjsonSaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %14) #7
  store ptr %204, ptr %16, align 8
  %205 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPP5cjsonSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(8) %16) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #7
  br i1 %205, label %193, label %._crit_edge, !llvm.loop !22

206:                                              ; preds = %._crit_edge
  invoke void @_Z10emitIndentR9HeapStacki(ptr noundef nonnull align 8 dereferenceable(56) %2, i32 noundef %3)
          to label %209 unwind label %207

207:                                              ; preds = %209, %206
  %208 = landingpad { ptr, i32 }
          cleanup
  br label %211

209:                                              ; preds = %206, %._crit_edge
  invoke void @_Z8emitTextR9HeapStackc(ptr noundef nonnull align 8 dereferenceable(56) %2, i8 noundef signext 125)
          to label %210 unwind label %207

210:                                              ; preds = %209
  call void @_ZNSt6vectorIP5cjsonSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #7
  br label %213

211:                                              ; preds = %207, %197
  %.pn = phi { ptr, i32 } [ %198, %197 ], [ %208, %207 ]
  call void @_ZNSt6vectorIP5cjsonSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #7
  br label %212

212:                                              ; preds = %211, %191
  %.pn.pn = phi { ptr, i32 } [ %.pn, %211 ], [ %192, %191 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #7
  br label %214

213:                                              ; preds = %.invoke152, %.invoke, %19, %103, %210, %164
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #7
  ret void

214:                                              ; preds = %212, %166, %92, %29
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %212 ], [ %30, %29 ], [ %.pn143.pn, %166 ], [ %93, %92 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #7
  br label %215

215:                                              ; preds = %214, %24
  %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn, %214 ], [ %25, %24 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #7
  br label %216

216:                                              ; preds = %215, %22
  %.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn, %215 ], [ %23, %22 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #7
  resume { ptr, i32 } %.pn.pn.pn.pn.pn
}

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_Z10emitIndentR9HeapStacki(ptr noundef nonnull align 8 dereferenceable(56), i32 noundef) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_Z8emitTextR9HeapStackc(ptr noundef nonnull align 8 dereferenceable(56), i8 noundef signext) local_unnamed_addr #4

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPP5cjsonSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #6

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPP5cjsonSt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8)) 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 memory(argmem: read) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { 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 #5 = { nofree nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { 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 #7 = { nounwind }
attributes #8 = { nounwind willreturn memory(read) }

!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, !10, i64 8}
!6 = !{!"_ZTS5cjson", !7, i64 0, !10, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !11, i64 48, !7, i64 56, !7, i64 64, !7, i64 72, !7, i64 80, !12, i64 88}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"_ZTSN5cjson7Types_eE", !8, i64 0}
!11 = !{!"int", !8, i64 0}
!12 = !{!"bool", !8, i64 0}
!13 = !{!6, !7, i64 56}
!14 = !{!6, !7, i64 24}
!15 = !{!8, !8, i64 0}
!16 = distinct !{!16, !17}
!17 = !{!"llvm.loop.mustprogress"}
!18 = !{i8 0, i8 2}
!19 = !{}
!20 = !{!7, !7, i64 0}
!21 = distinct !{!21, !17}
!22 = distinct !{!22, !17}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,SROAPass,SimplifyCFGPass